Delete maint-5-2 folder accidentally created in the tag

git-svn-id: https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.6@1146268 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/maint-5-2/.gitignore b/maint-5-2/.gitignore
deleted file mode 100644
index 8dbfb97..0000000
--- a/maint-5-2/.gitignore
+++ /dev/null
@@ -1,10 +0,0 @@
-.DS_Store
-.classpath
-.project
-.settings/
-*.ipr
-*.iml
-*.iws
-target
-test-output
-temp-testng*.xml
\ No newline at end of file
diff --git a/maint-5-2/LICENSE.txt b/maint-5-2/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/NOTICE.txt b/maint-5-2/NOTICE.txt
deleted file mode 100644
index 4e5d2f5..0000000
--- a/maint-5-2/NOTICE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-Please refer to the NOTICE.txt for each sub-module to
-identify further dependencies.
diff --git a/maint-5-2/build.xml b/maint-5-2/build.xml
deleted file mode 100644
index b79188d..0000000
--- a/maint-5-2/build.xml
+++ /dev/null
@@ -1,208 +0,0 @@
-<?xml version="1.0"?>
-<!-- 
-   Copyright 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project default="assemble" xmlns:mvn="urn:maven-artifact-ant">
-
-    <!-- Requires Ant 1.7.0 to execute! -->
-
-    <property name="target.dir" value="target"/>
-    <!-- Binary and source distributions, in .zip and .tar.gz formats, go here. -->
-    <property name="dists.dir" value="${target.dir}/dist"/>
-    <!-- Directory that contains the image for the binary distro. -->
-    <property name="binimage.dir" value="${target.dir}/bin-image"/>
-
-    <property name="group" value="org.apache.tapestry"/>
-
-
-    <!-- Read the Maven POM ... -->
-    <xmlproperty file="pom.xml" prefix="pom" keeproot="false"/>
-
-    <!-- ... to obtain the version number. -->
-    <property name="version" value="${pom.version}"/>
-
-    <property name="licenses" value="LICENSE*,*.txt"/>
-    <property name="sources" value="${licenses},pom.xml,src/**"/>
-
-    <property name="bin.zip" value="${dists.dir}/tapestry-bin-${version}.zip"/>
-    <property name="src.zip" value="${dists.dir}/tapestry-src-${version}.zip"/>
-
-    <macrodef name="copyto">
-        <attribute name="dir"/>
-        <attribute name="filesetid"/>
-
-        <sequential>
-            <mkdir dir="@{dir}"/>
-            <copy todir="@{dir}" flatten="true">
-                <fileset refid="@{filesetid}"/>
-            </copy>
-        </sequential>
-    </macrodef>
-
-    <macrodef name="copy-licenses">
-        <attribute name="module"/>
-
-        <sequential>
-            <copy todir="${binimage.dir}" flatten="true">
-                <fileset dir="@{module}" includes="${licenses}"/>
-                <globmapper from="*" to="@{module}-*"/>
-            </copy>
-        </sequential>
-
-
-    </macrodef>
-
-
-    <target name="-maven-setup" unless="maven-ant-tasks.classpath">
-        <path id="maven-ant-tasks.classpath" path="support/maven-ant-tasks-2.0.8.jar"/>
-
-        <typedef resource="org/apache/maven/artifact/ant/antlib.xml" uri="urn:maven-artifact-ant"
-                 classpathref="maven-ant-tasks.classpath"/>
-
-        <echo>Maven Ant Tasks loaded.</echo>
-    </target>
-
-    <target name="populate-image" depends="-maven-setup">
-      <echo>Processing dependencies</echo>
-
-      <mvn:dependencies filesetid="bin.dependency.fileset" sourcesfilesetid="bin.dependency.sources.fileset">
-	<dependency groupid="${group}" artifactid="tapestry-jmx" version="${pom.version}"/>
-	<dependency groupid="${group}" artifactid="tapestry-beanvalidator" version="${pom.version}"/>
-	<dependency groupid="${group}" artifactid="tapestry-upload" version="${pom.version}"/>
-	<dependency groupid="${group}" artifactid="tapestry-hibernate" version="${pom.version}"/>
-	<dependency groupid="${group}" artifactid="tapestry-spring" version="${pom.version}"/>
-	<dependency groupid="${group}" artifactid="tapestry-test" version="${pom.version}"/>
-      </mvn:dependencies>
-
-      <copyto dir="${binimage.dir}/lib" filesetid="bin.dependency.fileset"/>
-      <copyto dir="${binimage.dir}/lib-src" filesetid="bin.dependency.sources.fileset"/>
-      
-      <!-- Now delete the excess. -->
-
-      <delete>
-	<fileset dir="${binimage.dir}">
-	  <exclude name="**/commons-codec-*"/>
-	  <exclude name="**/commons-fileupload-*"/>
-	  <exclude name="**/commons-io-*"/>
-	  <exclude name="**/log4j-*"/>
-	  <exclude name="**/slf4j-*"/>
-	  <exclude name="**/tapestry-*"/>
-	  <exclude name="**/tapestry5-*"/>
-	  <exclude name="**/javassist-*"/>
-	  <exclude name="**/antlr*"/>
-	</fileset>
-      </delete>
-
-
-      <copy-licenses module="tapestry-ioc"/>
-      <copy-licenses module="tapestry-core"/>
-      <copy-licenses module="tapestry-hibernate"/>
-      <copy-licenses module="tapestry-hibernate-core"/>
-      <copy-licenses module="tapestry-spring"/>
-      <copy-licenses module="tapestry-upload"/>
-      <copy-licenses module="tapestry-test"/>
-      <copy-licenses module="tapestry-func"/>
-      <copy-licenses module="tapestry-jmx"/>
-      <copy-licenses module="tapestry-beanvalidator"/>
-      <copy-licenses module="tapestry-json"/>
-
-    </target>
-
-    <target name="assemble-bin" depends="populate-image">
-        <mkdir dir="${dists.dir}"/>
-
-        <parallel>
-            <zip destfile="${bin.zip}">
-                <fileset dir="${binimage.dir}"/>
-            </zip>
-            <tar destfile="${dists.dir}/tapestry-bin-${version}.tar.gz" compression="gzip">
-                <fileset dir="${binimage.dir}"/>
-            </tar>
-
-            <tar destfile="${dists.dir}/tapestry-bin-${version}.tar.bz2" compression="bzip2">
-                <fileset dir="${binimage.dir}"/>
-            </tar>
-
-        </parallel>
-
-    </target>
-
-    <target name="-announce">
-        <echo>*** Building distribution for project version ${version} ***</echo>
-    </target>
-
-    <target name="assemble-src">
-
-        <zip destfile="${src.zip}">
-            <fileset dir="." includes="${licenses}"/>
-
-            <zipfileset prefix="tapestry-annotations" dir="tapestry-annotations" includes="${sources}"/>
-            <zipfileset prefix="tapestry-core" dir="tapestry-core" includes="${sources}"/>
-            <zipfileset prefix="tapestry-hibernate" dir="tapestry-hibernate" includes="${sources}"/>
-            <zipfileset prefix="tapestry-hibernate-core" dir="tapestry-hibernate-core" includes="${sources}"/>
-            <zipfileset prefix="tapestry-ioc" dir="tapestry-ioc" includes="${sources}"/>
-            <zipfileset prefix="tapestry-spring" dir="tapestry-spring" includes="${sources}"/>
-            <zipfileset prefix="tapestry-test" dir="tapestry-test" includes="${sources}"/>
-            <zipfileset prefix="tapestry-upload" dir="tapestry-upload" includes="${sources}"/>
-
-            <zipfileset prefix="tapestry-project" dir="." includes="${sources}"/>
-            <zipfileset prefix="quickstart" dir="quickstart" includes="${sources}"/>
-            <zipfileset prefix="tapestry-component-report" dir="tapestry-component-report" includes="${sources}"/>
-            <zipfileset prefix="tapestry-tutorial1" dir="tapestry-tutorial1" includes="${sources}"/>
-
-            <zipfileset prefix="tapestry-beanvalidator" dir="tapestry-beanvalidator" includes="${sources}"/>
-            <zipfileset prefix="tapestry-jmx" dir="tapestry-jmx" includes="${sources}"/>
-            <zipfileset prefix="tapestry-func" dir="tapestry-func" includes="${sources}"/>
-            <zipfileset prefix="tapestry-json" dir="tapestry-json" includes="${sources}"/>
-        </zip>
-
-        <tar destfile="${dists.dir}/tapestry-src-${version}.tar.gz" compression="gzip" longfile="gnu">
-            <zipfileset src="${src.zip}"/>
-        </tar>
-
-        <tar destfile="${dists.dir}/tapestry-src-${version}.tar.bz2" compression="bzip2" longfile="gnu">
-            <zipfileset src="${src.zip}"/>
-        </tar>
-
-        <echo>Generating MD5 Checksums</echo>
-
-        <checksum fileext=".md5">
-            <fileset dir="${dists.dir}" includes="*.bz2,*.gz,*.zip"/>
-        </checksum>
-    </target>
-
-    <target name="assemble" description="Build distribution files." depends="-announce,assemble-bin,assemble-src">
-
-        <echo>*** Please sign the distributions using GPG before uploading the files. ***
-
-
-            Signing Mojo: for i in target/dist/*.zip target/dist/*.gz target/dist/*.bz2; do echo $i; gpg --armor
-            --detach-sig $i; done
-
-            Upload Mojo: scp target/dist/* hlship@people.apache.org:public_html/tapestry-releases
-
-        </echo>
-
-
-    </target>
-
-    <target name="clean" description="Remove distribution directory.">
-        <delete dir="${dists.dir}" quiet="true"/>
-        <delete dir="${binimage.dir}" quiet="true"/>
-    </target>
-
-
-</project>
diff --git a/maint-5-2/pom.xml b/maint-5-2/pom.xml
deleted file mode 100644
index 35aec2a..0000000
--- a/maint-5-2/pom.xml
+++ /dev/null
@@ -1,432 +0,0 @@
-<?xml version="1.0"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.tapestry</groupId>
-  <artifactId>tapestry-project</artifactId>
-  <packaging>pom</packaging>
-  <version>5.2.6</version>
-  <name>Tapestry 5 Project</name>
-  <description>Master project for the modules of Tapestry 5.</description>
-  <inceptionYear>2006</inceptionYear>
-  <url>http://tapestry.apache.org/tapestry5.1/</url>
-  <parent>
-    <groupId>org.apache</groupId>
-    <artifactId>apache</artifactId>
-    <version>6</version>
-  </parent>
-  <issueManagement>
-    <system>Jira</system>
-    <url>https://issues.apache.org/jira/browse/TAP5</url>
-  </issueManagement>
-  <licenses>
-    <license>
-      <name>Apache Software License 2.0</name>
-      <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-  <organization>
-    <name>Apache Software Foundation</name>
-    <url>http://www.apache.org</url>
-  </organization>
-  <scm>
-    <connection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.6</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.6</developerConnection>
-    <url>http://svn.apache.org/viewvc/tapestry/tapestry5/tags/releases/5.2.6</url>
-  </scm>
-  <developers>
-    <developer>
-      <id>hls</id>
-      <name>Howard M. Lewis Ship</name>
-      <email>hlship@apache.org</email>
-      <url>http://howardlewisship.com</url>
-      <roles>
-        <role>Menace</role>
-      </roles>
-      <timezone>PDT</timezone>
-    </developer>
-    <developer>
-      <id>gredler</id>
-      <name>Daniel Gredler</name>
-      <email>gredler@apache.org</email>
-      <url>http://daniel.gredler.net/</url>
-      <roles>
-        <role>Newbie</role>
-      </roles>
-      <timezone>EDT</timezone>
-    </developer>
-    <developer>
-      <id>dadams</id>
-      <name>Dan Adams</name>
-      <email>dadams@apache.org</email>
-      <roles>
-        <role>Engineer</role>
-      </roles>
-      <timezone>EST</timezone>
-      <organization>Interactive Factory</organization>
-      <organizationUrl>http://ifactory.com</organizationUrl>
-    </developer>
-    <developer>
-      <id>kmenard</id>
-      <name>Kevin Menard</name>
-      <email>kmenard@servprise.com</email>
-      <organization>Servprise International, Inc.</organization>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>-5</timezone>
-    </developer>
-    <developer>
-      <id>tedst</id>
-      <name>Ted Steen</name>
-      <email>ted.steen@gmail.com</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-    <developer>
-      <id>drobiazko</id>
-      <name>Igor Drobiazko</name>
-      <email>drobiazko@apache.org</email>
-      <url>http://tapestry5.de/</url>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-    <developer>
-      <id>robertdzeigler</id>
-      <name>Robert Zeigler</name>
-      <email>robertdzeigler@apache.org</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>-6</timezone>
-    </developer>
-    <developer>
-      <id>thiagohp</id>
-      <name>Thiago H. de Paula Figueiredo</name>
-      <email>thiagohp@apache.org</email>
-      <url>http://www.arsmachina.com.br/thiago</url>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>-3</timezone>
-    </developer>
-    <developer>
-      <id>uli</id>
-      <name>Ulrich Stärk</name>
-      <email>uli@apache.org</email>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-    <developer>
-      <id>andyhot</id>
-      <name>Andreas Andreou</name>
-      <email>andyhot@apache.org</email>
-      <url>http://blog.andyhot.gr</url>
-      <roles>
-        <role>PMC</role>
-        <role>Developer</role>
-      </roles>
-      <timezone>+2</timezone>
-    </developer>
-    <developer>
-      <id>ccordenier</id>
-      <name>Christophe Cordenier</name>
-      <email>ccordenier@apache.org</email>
-      <url>http://spreadthesource.com</url>
-      <roles>
-        <role>Developer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-  </developers>
-  <ciManagement>
-    <system>hudson</system>
-    <url>http://hudson.apache.org/hudson/view/Tapestry/</url>
-    <notifiers>
-        <notifier>
-	    <type>mail</type>
-	    <address>dev@tapestry.apache.org</address>
-        </notifier>
-    </notifiers>
-  </ciManagement>
-  <mailingLists>
-    <mailingList>
-      <name>Tapestry User List</name>
-      <subscribe>users-subscribe@tapestry.apache.org</subscribe>
-      <unsubscribe>users-unsubscribe@tapestry.apache.org</unsubscribe>
-      <archive>http://markmail.org/search/list:org.apache.tapestry.users</archive>
-    </mailingList>
-    <mailingList>
-      <name>Tapestry Developer List</name>
-      <subscribe>dev-subscribe@tapestry.apache.org</subscribe>
-      <unsubscribe>dev-unsubscribe@tapestry.apache.org</unsubscribe>
-      <archive>http://markmail.org/search/list:org.apache.tapestry.dev</archive>
-    </mailingList>
-    <mailingList>
-      <name>Tapestry Commits List</name>
-      <subscribe>commits-subscribe@tapestry.apache.org</subscribe>
-      <unsubscribe>commits-unsubscribe@tapestry.apache.org</unsubscribe>
-      <archive>http://markmail.org/search/list:org.apache.tapestry.commits</archive>
-    </mailingList>
-  </mailingLists>
-  <modules>
-    <module>tapestry-json</module>
-    <module>tapestry-func</module>
-    <module>tapestry-test</module>
-    <module>tapestry-ioc</module>
-    <module>tapestry-annotations</module>
-    <module>tapestry-core</module>
-    <module>tapestry-beanvalidator</module>
-    <module>tapestry-jmx</module>
-    <!-- Integrations -->
-    <module>tapestry-spring</module>
-    <module>tapestry-hibernate-core</module>
-    <module>tapestry-hibernate</module>
-    <module>tapestry-upload</module>
-    <!-- Now we're getting into the archetypes. -->
-    <module>quickstart</module>
-    <!-- And the Maven plugin. -->
-    <module>tapestry-component-report</module>
-    <!-- Tutorials -->
-    <module>tapestry-tutorial1</module>
-  </modules>
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>javax.servlet</groupId>
-        <artifactId>servlet-api</artifactId>
-        <version>2.4</version>
-        <scope>provided</scope>
-      </dependency>
-      <dependency>
-        <groupId>org.easymock</groupId>
-        <artifactId>easymock</artifactId>
-        <version>3.0</version>
-        <scope>test</scope>
-      </dependency>
-      <!-- Now, artifacts created by Tapestry sub-projects. -->
-      <dependency>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-ioc</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-core</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-hibernate-core</artifactId>
-        <version>${project.version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-test</artifactId>
-        <version>${project.version}</version>
-        <scope>test</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <artifactId>maven-war-plugin</artifactId>
-          <version>2.1.1</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-plugin-plugin</artifactId>
-          <version>2.3</version>
-        </plugin>
-        <plugin>
-          <artifactId>maven-site-plugin</artifactId>
-          <version>2.0-beta-5</version>
-        </plugin>
-        <!-- We configure this either way, but it's only active when the "deploy" profile is active. -->
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-gpg-plugin</artifactId>
-          <version>1.3</version>
-          <executions>
-            <execution>
-              <id>sign-artifacts</id>
-              <phase>verify</phase>
-              <goals>
-                <goal>sign</goal>
-              </goals>
-            </execution>
-          </executions>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-assembly-plugin</artifactId>
-          <configuration>
-            <descriptorRefs>
-              <descriptorRef>bin</descriptorRef>
-              <descriptorRef>src</descriptorRef>
-            </descriptorRefs>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-source-plugin</artifactId>
-          <executions>
-            <execution>
-              <goals>
-                <goal>jar</goal>
-              </goals>
-            </execution>
-          </executions>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <configuration>
-            <source>1.5</source>
-            <target>1.5</target>
-            <optimize>true</optimize>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-surefire-plugin</artifactId>
-          <version>2.4.3</version>
-          <configuration>
-            <suiteXmlFiles>
-              <suiteXmlFile>src/test/conf/testng.xml</suiteXmlFile>
-            </suiteXmlFiles>
-            <argLine>-Xmx500m -XX:MaxPermSize=256m</argLine>
-            <redirectTestOutputToFile>false</redirectTestOutputToFile>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-jar-plugin</artifactId>
-          <configuration>
-            <archive>
-              <compress>true</compress>
-              <index>true</index>
-            </archive>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-deploy-plugin</artifactId>
-          <configuration>
-            <!-- Will be true for profile "deploy" -->
-            <updateReleaseInfo>${update-release-info}</updateReleaseInfo>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-resources-plugin</artifactId>
-          <configuration>
-            <encoding>UTF-8</encoding>
-          </configuration>
-        </plugin>
-        <plugin>
-          <artifactId>maven-release-plugin</artifactId>
-          <version>2.1</version>
-          <configuration>
-            <tagBase>https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/</tagBase>
-            <mavenExecutorId>forked-path</mavenExecutorId>
-          </configuration>
-        </plugin>
-        <plugin>
-	    <groupId>org.codehaus.mojo</groupId>
-	    <artifactId>clirr-maven-plugin</artifactId>
-	    <version>2.2.1</version>
-	</plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-  <profiles>
-    <profile>
-      <!-- Used only when cuttting a full release.  Configures the deploy plugin to mark
-          each artifact as a release (especially important for the archetype). Signs each
-          file deployed (it actually signs way too many files and we have to clean up a bit
-          once deployed). -->
-      <id>deploy</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-gpg-plugin</artifactId>
-          </plugin>
-        </plugins>
-      </build>
-      <properties>
-        <update-release-info>true</update-release-info>
-        <!--  Don't re-run tests as part of the deploy build. -->
-        <maven.test.skip>true</maven.test.skip>
-      </properties>
-    </profile>
-    <!--  Only enable Javadoc as part of the output site when the javadoc profile is active. -->
-    <profile>
-      <id>javadoc</id>
-      <reporting>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <!--  Version 2.3 is broken: See http://jira.codehaus.org/browse/MJAVADOC-145 -->
-            <version>2.2</version>
-            <configuration>
-              <linksource>true</linksource>
-              <links>
-                <link>http://java.sun.com/j2se/1.5.0/docs/api/</link>
-                <link>http://java.sun.com/j2ee/1.4/docs/api/</link>
-                <link>http://jakarta.apache.org/commons/logging/apidocs/</link>
-              </links>
-              <stylesheetfile>${basedir}/src/site/resources/css/jdstyle.css</stylesheetfile>
-              <aggregate>true</aggregate>
-            </configuration>
-          </plugin>
-        </plugins>
-      </reporting>
-    </profile>
-  </profiles>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>license</report>
-              <report>scm</report>
-              <report>project-team</report>
-              <report>mailing-list</report>
-              <report>cim</report>
-              <report>issue-tracking</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-    </plugins>
-  </reporting>
-  <!-- 
-      Check out http://maven.apache.org/developers/committer-settings.html
-      to review the settings you need to have in your ~/.m2/settings.xml
-    -->
-  <distributionManagement>
-    <site>
-      <id>tapestry</id>
-      <url>scpexe://people.apache.org/www/tapestry.apache.org/tapestry5.2-dev/</url>
-    </site>
-  </distributionManagement>
-  <properties>
-    <!-- Version 2.1 lists everything as 100% covered, weird. -->
-    <cobertura-plugin-version>2.2</cobertura-plugin-version>
-    <update-release-info>false</update-release-info>
-    <testng-version>5.12.1</testng-version>
-  </properties>
-</project>
diff --git a/maint-5-2/quickstart/LICENSE-2.0.txt b/maint-5-2/quickstart/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/quickstart/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/quickstart/NOTICE.txt b/maint-5-2/quickstart/NOTICE.txt
deleted file mode 100644
index 7196130..0000000
--- a/maint-5-2/quickstart/NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/maint-5-2/quickstart/pom.xml b/maint-5-2/quickstart/pom.xml
deleted file mode 100644
index 455c53b..0000000
--- a/maint-5-2/quickstart/pom.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>quickstart</artifactId>
-    <packaging>maven-plugin</packaging>
-    <dependencies>
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>${testng-version}</version>
-        </dependency>
-    </dependencies>
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-    <name>Tapestry 5 Quickstart Archetype</name>
-    <inceptionYear>2007</inceptionYear>
-    <url>http://tapestry.apache.org/tapestry5/${project.artifactId}/</url>
-    <description>Archetype for creating a basic Tapestry 5 application.</description>
-
-    <build>
-        <resources>
-            <resource>
-                <filtering>false</filtering>
-                <directory>${basedir}/src/main/resources</directory>
-                <excludes>
-                    <exclude>archetype-catalog.xml</exclude>
-                    <exclude>**/.*</exclude>
-                </excludes>
-            </resource>
-        </resources>
-
-        <extensions>
-            <extension>
-                <groupId>org.apache.maven.archetype</groupId>
-                <artifactId>archetype-packaging</artifactId>
-            </extension>
-        </extensions>
-    </build>
-
-</project>
diff --git a/maint-5-2/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml b/maint-5-2/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
deleted file mode 100644
index e425815..0000000
--- a/maint-5-2/quickstart/src/main/resources/META-INF/maven/archetype-metadata.xml
+++ /dev/null
@@ -1,65 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archetype-descriptor name="Tapestry 5 Quickstart Project">
-    <fileSets>
-        <fileSet filtered="true" packaged="true">
-            <directory>src/main/java</directory>
-            <includes>
-                <include>**/*.java</include>
-            </includes>
-        </fileSet>
-
-        <!-- Currently just a placeholder. -->
-        <fileSet filtered="true" packaged="false">
-            <directory>src/test/java</directory>
-        </fileSet>
-
-        <fileSet filtered="true">
-            <directory>src/main/webapp</directory>
-            <excludes>
-                <exclude>*.ico</exclude>
-                <exclude>**/*.jpg</exclude>
-                <exclude>**/*.gif</exclude>
-            </excludes>
-        </fileSet>
-
-        <!-- Don't want to filter binary files. -->
-
-        <fileSet filtered="false">
-            <directory>src/main/webapp</directory>
-            <includes>
-                <include>*.ico</include>
-                <include>**/*.jpg</include>
-                <include>**/*.gif</include>
-            </includes>
-        </fileSet>
-
-        <!-- This needs to stay at the root. -->
-        <fileSet filtered="true" packaged="false">
-            <directory>src/main/resources</directory>
-            <includes>
-                <include>log4j.properties</include>
-            </includes>
-        </fileSet>
-
-        <!-- The rest should be packaged. -->
-        <fileSet filtered="true" packaged="true">
-            <directory>src/main/resources</directory>
-            <excludes>
-                <exclude>log4j.properties</exclude>
-            </excludes>
-        </fileSet>
-
-        <fileSet filtered="true" packaged="false">
-            <directory>src/test/resources</directory>
-        </fileSet>
-
-        <fileSet filtered="true" packaged="false">
-            <directory>src/test/conf</directory>
-        </fileSet>
-
-        <fileSet filtered="true" packaged="false">
-            <directory>src/site</directory>
-        </fileSet>
-
-    </fileSets>
-</archetype-descriptor>
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-catalog.xml b/maint-5-2/quickstart/src/main/resources/archetype-catalog.xml
deleted file mode 100644
index 582c788..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-catalog.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<archetype-catalog>
-    <archetypes>
-        <archetype>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>quickstart</artifactId>
-            <version>@project.version@</version>
-            <repository>http://repository.apache.org/snapshots</repository>
-            <description>Tapestry 5 Quickstart Project</description>
-        </archetype>
-    </archetypes>
-</archetype-catalog>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/pom.xml b/maint-5-2/quickstart/src/main/resources/archetype-resources/pom.xml
deleted file mode 100644
index 5ecf309..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/pom.xml
+++ /dev/null
@@ -1,117 +0,0 @@
-<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://maven.apache.org/POM/4.0.0">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>${groupId}</groupId>
-    <artifactId>${artifactId}</artifactId>
-    <version>${version}</version>
-    <packaging>war</packaging>
-    <name>${artifactId} Tapestry 5 Application</name>
-    #set( $D = '$' )
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-core</artifactId>
-            <version>${D}{tapestry-release-version}</version>
-        </dependency>
-        <!-- A dependency on either JUnit or TestNG is required, or the surefire plugin (which runs the tests)
-will fail, preventing Maven from packaging the WAR. Tapestry includes a large number
-of testing facilities designed for use with TestNG (http://testng.org/), so it's recommended. -->
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>5.12.1</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>2.5.2</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-test</artifactId>
-            <version>${D}{tapestry-release-version}</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- Provided by the servlet container, but sometimes referenced in the application
-       code. -->
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-            <version>2.5</version>
-            <scope>provided</scope>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <finalName>${artifactId}</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                    <optimize>true</optimize>
-                </configuration>
-            </plugin>
-
-            <!-- Run the application using "mvn jetty:run" -->
-            <plugin>
-                <groupId>org.mortbay.jetty</groupId>
-                <artifactId>maven-jetty-plugin</artifactId>
-                <version>6.1.16</version>
-                <configuration>
-                    <!-- Log to the console. -->
-                    <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
-                        <!-- This doesn't do anything for Jetty, but is a workaround for a Maven bug
-                             that prevents the requestLog from being set. -->
-                        <append>true</append>
-                    </requestLog>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-
-    <reporting>
-
-        <!-- Adds a report detailing the components, mixins and base classes defined by this module. -->
-        <plugins>
-            <plugin>
-                <groupId>org.apache.tapestry</groupId>
-                <artifactId>tapestry-component-report</artifactId>
-                <version>${D}{tapestry-release-version}</version>
-                <configuration>
-                    <rootPackage>${package}</rootPackage>
-                </configuration>
-            </plugin>
-        </plugins>
-    </reporting>
-
-    <repositories>
-
-        <!-- This repository is only needed when the tapestry-release-version is a snapshot release. -->
-        <repository>
-            <id>apache-snapshots</id>
-            <url>http://repository.apache.org/snapshots/</url>
-        </repository>
-    </repositories>
-
-    <pluginRepositories>
-
-        <!-- As above, this can be commented out when access to the snapshot version
-of a Tapestry Maven plugin is not required.   -->
-        <pluginRepository>
-            <id>apache-snapshots</id>
-            <url>http://repository.apache.org/snapshots/</url>
-        </pluginRepository>
-
-    </pluginRepositories>
-
-    <properties>
-        <tapestry-release-version>5.2.6</tapestry-release-version>
-    </properties>
-</project>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/components/Layout.java b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/components/Layout.java
deleted file mode 100644
index eb89442..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/components/Layout.java
+++ /dev/null
@@ -1,44 +0,0 @@
-package ${package}.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.ioc.annotations.*;
-import org.apache.tapestry5.BindingConstants;
-
-/**
- * Layout component for pages of application ${artifactId}.
- */
-@IncludeStylesheet("context:layout/layout.css")
-public class Layout
-{
-    /** The page title, for the <title> element and the <h1> element. */
-    @Property
-    @Parameter(required = true, defaultPrefix = BindingConstants.LITERAL)
-    private String title;
-
-    @Property
-    private String pageName;
-
-    @Property
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String sidebarTitle;
-
-    @Property
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private Block sidebar;
-
-    @Inject
-    private ComponentResources resources;
-
-    public String getClassForPageName()
-    {
-      return resources.getPageName().equalsIgnoreCase(pageName)
-             ? "current_page_item"
-             : null;
-    }
-
-    public String[] getPageNames()
-    {
-      return new String[] { "Index", "About", "Contact" };
-    }
-}
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/About.java b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/About.java
deleted file mode 100644
index 3dce2c0..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/About.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package ${package}.pages;
-
-public class About
-{
-
-}
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/Contact.java b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/Contact.java
deleted file mode 100644
index a445b3e..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/Contact.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package ${package}.pages;
-
-public class Contact
-{
-
-}
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/Index.java b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/Index.java
deleted file mode 100644
index 894865a..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/pages/Index.java
+++ /dev/null
@@ -1,14 +0,0 @@
-package ${package}.pages;
-
-import java.util.Date;
-
-/**
- * Start page of application ${artifactId}.
- */
-public class Index
-{
-	public Date getCurrentTime() 
-	{ 
-		return new Date(); 
-	}
-}
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
deleted file mode 100644
index 55eb64d..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/java/services/AppModule.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package ${package}.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-import org.slf4j.Logger;
-
-/**
- * This module is automatically included as part of the Tapestry IoC Registry, it's a good place to
- * configure and extend Tapestry, or to place your own service definitions.
- */
-public class AppModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        // binder.bind(MyServiceInterface.class, MyServiceImpl.class);
-        
-        // Make bind() calls on the binder object to define most IoC services.
-        // Use service builder methods (example below) when the implementation
-        // is provided inline, or requires more initialization than simply
-        // invoking the constructor.
-    }
-    
-    
-    public static void contributeApplicationDefaults(
-            MappedConfiguration<String, String> configuration)
-    {
-        // Contributions to ApplicationDefaults will override any contributions to
-        // FactoryDefaults (with the same key). Here we're restricting the supported
-        // locales to just "en" (English). As you add localised message catalogs and other assets,
-        // you can extend this list of locales (it's a comma separated series of locale names;
-        // the first locale name is the default when there's no reasonable match).
-        
-        configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
-
-        // The factory default is true but during the early stages of an application
-        // overriding to false is a good idea. In addition, this is often overridden
-        // on the command line as -Dtapestry.production-mode=false
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-
-        // The application version number is incorprated into URLs for some
-        // assets. Web browsers will cache assets because of the far future expires
-        // header. If existing assets are changed, the version number should also
-        // change, to force the browser to download new versions.
-        configuration.add(SymbolConstants.APPLICATION_VERSION, "${version}");
-    }
-    
-
-    /**
-     * This is a service definition, the service will be named "TimingFilter". The interface,
-     * RequestFilter, is used within the RequestHandler service pipeline, which is built from the
-     * RequestHandler service configuration. Tapestry IoC is responsible for passing in an
-     * appropriate Logger instance. Requests for static resources are handled at a higher level, so
-     * this filter will only be invoked for Tapestry related requests.
-     * 
-     * <p>
-     * Service builder methods are useful when the implementation is inline as an inner class
-     * (as here) or require some other kind of special initialization. In most cases,
-     * use the static bind() method instead. 
-     * 
-     * <p>
-     * If this method was named "build", then the service id would be taken from the 
-     * service interface and would be "RequestFilter".  Since Tapestry already defines
-     * a service named "RequestFilter" we use an explicit service id that we can reference
-     * inside the contribution method.
-     */    
-    public RequestFilter buildTimingFilter(final Logger log)
-    {
-        return new RequestFilter()
-        {
-            public boolean service(Request request, Response response, RequestHandler handler)
-                    throws IOException
-            {
-                long startTime = System.currentTimeMillis();
-
-                try
-                {
-                    // The responsibility of a filter is to invoke the corresponding method
-                    // in the handler. When you chain multiple filters together, each filter
-                    // received a handler that is a bridge to the next filter.
-                    
-                    return handler.service(request, response);
-                }
-                finally
-                {
-                    long elapsed = System.currentTimeMillis() - startTime;
-
-                    log.info(String.format("Request time: %d ms", elapsed));
-                }
-            }
-        };
-    }
-
-    /**
-     * This is a contribution to the RequestHandler service configuration. This is how we extend
-     * Tapestry using the timing filter. A common use for this kind of filter is transaction
-     * management or security. The @Local annotation selects the desired service by type, but only
-     * from the same module.  Without @Local, there would be an error due to the other service(s)
-     * that implement RequestFilter (defined in other modules).
-     */
-    public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration,
-            @Local
-            RequestFilter filter)
-    {
-        // Each contribution to an ordered configuration has a name, When necessary, you may
-        // set constraints to precisely control the invocation order of the contributed filter
-        // within the pipeline.
-        
-        configuration.add("Timing", filter);
-    }
-}
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/components/Layout.tml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/components/Layout.tml
deleted file mode 100755
index 6569619..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/components/Layout.tml
+++ /dev/null
@@ -1,83 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

-<!--

-

-Design by Free CSS Templates

-http://www.freecsstemplates.org

-Released for free under a Creative Commons Attribution 2.5 License

-

-Title      : Concrete

-Version    : 1.0

-Released   : 20080825

-Description: A Web 2.0 design with fluid width suitable for blogs and small websites.

--->

-        #set( $D = '$' )

-<html xmlns="http://www.w3.org/1999/xhtml"

-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"

-      xmlns:p="tapestry:parameter">

-    <head>

-        <meta http-equiv="content-type" content="text/html; charset=utf-8"/>

-        <title>${D}{title}</title>

-    </head>

-    <body>

-        <!-- start header -->

-        <div id="header">

-            <div id="logo">

-                <h1>

-                    <t:pagelink page="index">${groupId}:${artifactId}</t:pagelink>

-                </h1>

-            </div>

-            <div id="menu">

-                <ul>

-                    <li t:type="loop" source="pageNames" value="pageName" class="prop:classForPageName">

-                        <t:pagelink page="prop:pageName">${D}{pageName}</t:pagelink>

-                    </li>

-                </ul>

-            </div>

-        </div>

-        <!-- end header -->

-        <!-- start page -->

-        <div id="page">

-            <!-- start sidebar -->

-            <div id="sidebar">

-                <ul>

-                    <li id="search" style="background: none;">

-                    </li>

-                    <li t:type="if" test="sidebar">

-                        <h2>${D}{sidebarTitle}</h2>

-                        <div class="sidebar-content">

-                            <t:delegate to="sidebar"/>

-                        </div>

-                    </li>

-                </ul>

-            </div>

-            <!-- end sidebar -->

-            <!-- start content -->

-            <div id="content">

-                <div class="post">

-                    <div class="title">

-                        <h2>${D}{title}</h2>

-                    </div>

-                    <div class="entry">

-                        <t:body/>

-                    </div>

-                </div>

-            </div>

-            <!-- end content -->

-            <br style="clear: both;"/>

-        </div>

-        <!-- end page -->

-        <!-- start footer -->

-        <div id="footer">

-            <p class="legal">

-                &copy;2009 ${groupId}. All Rights Reserved.

-                &nbsp;&nbsp;&bull;&nbsp;&nbsp;

-                Design by

-                <a href="http://www.freecsstemplates.org/">Free CSS Templates</a>

-                &nbsp;&nbsp;&bull;&nbsp;&nbsp;

-                Icons by

-                <a href="http://famfamfam.com/">FAMFAMFAM</a>.

-            </p>

-        </div>

-        <!-- end footer -->

-    </body>

-</html>

diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/log4j.properties b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/log4j.properties
deleted file mode 100644
index ad67b52..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,44 +0,0 @@
-# Default to info level output; this is very handy if you eventually use Hibernate as well.
-log4j.rootCategory=info, A1
-
-# A1 is set to be a ConsoleAppender.
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{2} %m%n
-
-# Service category names are the name of the defining module class
-# and then the service id.
-log4j.category.${package}.services.AppModule.TimingFilter=info
-
-# Outputs a list of pages, components and mixins at startup.
-log4j.category.org.apache.tapestry5.services.TapestryModule.ComponentClassResolver=info
-
-# Outputs startup statistics; elapsed time to setup and initialize the registry, and a list of
-# available services.
-log4j.category.org.apache.tapestry5.TapestryFilter=info
-
-
-# Turning on debug mode for a page's or component's transformer logger
-# will show all of the code changes that occur when the
-# class is loaded.
-
-# log4j.category.tapestry.transformer.${package}.pages.Index=debug
-
-# Turning on debug mode for a component's events logger will show all the events triggered on the
-# component, and which component methods are invoked as a result.
-
-# log4j.category.tapestry.events.${package}.pages.Index=debug
-
-# Turning on trace mode for a page's render logger provides extended information about every step
-# in rendering (this is not generally helpful).  Turning on debug mode will add a one-line
-# summary that includes the elapsed render time, which can be useful in tracking down
-# performance issues.
-
-# log4j.category.tapestry.render.${package}.pages.Index=debug
-
-# Turn on some verbose debugging about everything in the application. This is nice initially,
-# while getting everything set up.  You'll probably want to remove this once you are 
-# up and running, replacing it with more selective debugging output.
-log4j.category.${package}=debug
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/About.tml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/About.tml
deleted file mode 100644
index c2d4541..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/About.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="layout" title="About ${artifactId}"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-      xmlns:p="tapestry:parameter">
-
-    <p>About ${artifactId} application ...</p>
-
-</html>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Contact.tml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Contact.tml
deleted file mode 100644
index d987ed9..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Contact.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="layout" title="Contact ${groupId}"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-      xmlns:p="tapestry:parameter">
-
-    <p>Contact ${groupId} ...</p>
-
-</html>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Index.properties b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Index.properties
deleted file mode 100644
index 5ea64cd..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Index.properties
+++ /dev/null
@@ -1 +0,0 @@
-greeting=Welcome to Tapestry 5!  We hope that this project template will get you going in style.
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Index.tml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Index.tml
deleted file mode 100644
index 22db13b..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/resources/pages/Index.tml
+++ /dev/null
@@ -1,24 +0,0 @@
-<html t:type="layout" title="${artifactId} Index"
-      t:sidebarTitle="Current Time"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-      xmlns:p="tapestry:parameter">
-    #set( $D = '$' )
-    <!-- Most of the page content, including <head>, <body>, etc. tags, comes from Layout.tml -->
-
-    <p>${D}{message:greeting}</p>
-
-    <p:sidebar>
-
-        <p>
-            Just to prove this is live:
-        </p>
-
-        <p>The current time is: ${D}{currentTime}.</p>
-
-
-        <p>
-            [<t:pagelink page="Index">refresh</t:pagelink>]
-        </p>
-    </p:sidebar>
-
-</html>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/app.properties b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/app.properties
deleted file mode 100644
index 1c29931..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/app.properties
+++ /dev/null
@@ -1,4 +0,0 @@
-# This is where global application properties go.
-# You can also have individual message catalogs for each page and each
-# component that override these defaults.
-# The name of this file is based on the <filter-name> element in web.
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 561df9a..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>${artifactId} Tapestry 5 Application</display-name>
-    <context-param>
-        <!-- The only significant configuration for Tapestry 5, this informs Tapestry
-of where to look for pages, components and mixins. -->
-        <param-name>tapestry.app-package</param-name>
-        <param-value>${package}</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
-      
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/favicon.ico b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/favicon.ico
deleted file mode 100644
index ffd53d6..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img01.jpg b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img01.jpg
deleted file mode 100755
index b17fcc1..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img01.jpg
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img02.jpg b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img02.jpg
deleted file mode 100755
index 9e932d1..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img02.jpg
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img03.jpg b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img03.jpg
deleted file mode 100755
index e5ab627..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img03.jpg
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img04.jpg b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img04.jpg
deleted file mode 100755
index 869a3e3..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img04.jpg
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img05.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img05.gif
deleted file mode 100755
index 4118548..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img05.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img06.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img06.gif
deleted file mode 100755
index a77dc3f..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img06.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img07.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img07.gif
deleted file mode 100755
index f157607..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img07.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img08.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img08.gif
deleted file mode 100755
index 95e6227..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img08.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img09.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img09.gif
deleted file mode 100755
index d4fe2f1..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img09.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img10.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img10.gif
deleted file mode 100755
index d7f8530..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img10.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img11.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img11.gif
deleted file mode 100755
index f4aa4ea..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img11.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img12.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img12.gif
deleted file mode 100755
index 6fea9b1..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img12.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img13.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img13.gif
deleted file mode 100755
index a31e049..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img13.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img14.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img14.gif
deleted file mode 100755
index 8363ce6..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img14.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img15.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img15.gif
deleted file mode 100755
index a382b57..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img15.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img16.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img16.gif
deleted file mode 100755
index 0abf273..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img16.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img17.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img17.gif
deleted file mode 100755
index 81c42e1..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img17.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img18.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img18.gif
deleted file mode 100755
index 752a683..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img18.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img19.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img19.gif
deleted file mode 100755
index da86ca8..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img19.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img20.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img20.gif
deleted file mode 100755
index 4cf147c..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/img20.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/spacer.gif b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/spacer.gif
deleted file mode 100755
index 5bfd67a..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/images/spacer.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/layout.css b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/layout.css
deleted file mode 100755
index a60e725..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/layout.css
+++ /dev/null
@@ -1,369 +0,0 @@
-/*

-Design by Free CSS Templates

-http://www.freecsstemplates.org

-Released for free under a Creative Commons Attribution 2.5 License

-*/

-

-body {

-    margin: 0;

-    padding: 0;

-    background: #FFFFFF url( images/img01.jpg ) repeat-x;

-    text-align: justify;

-    font: 15px Arial, Helvetica, sans-serif;

-    color: #626262;

-}

-

-form {

-    margin: 0;

-    padding: 0;

-}

-

-input {

-    padding: 5px;

-    background: #FEFEFE url( images/img13.gif ) repeat-x;

-    border: 1px solid #626262;

-    font: normal 1em Arial, Helvetica, sans-serif;

-}

-

-h1, h1 a, h2, h2 a, h3, h3 a {

-    margin: 0;

-    text-decoration: none;

-    font-family: Tahoma, Georgia, "Times New Roman", Times, serif;

-    font-weight: normal;

-    color: #444444;

-}

-

-h1 {

-    letter-spacing: -1px;

-    font-size: 2.2em;

-    font-family: Verdana, Arial, Helvetica, sans-serif;

-}

-

-h2 {

-    letter-spacing: -1px;

-    font-size: 2em;

-}

-

-h3 {

-    font-size: 1em;

-}

-

-p, ol, ul {

-    margin-bottom: 2em;

-    line-height: 200%;

-}

-

-blockquote {

-    margin: 0 0 0 1.5em;

-    padding-left: 1em;

-    border-left: 5px solid #DDDDDD;

-}

-

-a {

-    color: #1692B8;

-}

-

-a:hover {

-    text-decoration: none;

-}

-

-/* Header */

-

-#header {

-    height: 42px;

-}

-

-#logo h1, #logo p {

-    float: left;

-    text-transform: lowercase;

-}

-

-#logo h1 {

-    padding: 0px 0 0 40px;

-}

-

-#logo p {

-    margin: 0;

-    padding: 14px 0 0 4px;

-    line-height: normal;

-    font-family: Verdana, Arial, Helvetica, sans-serif;

-    font-size: 14px;

-}

-

-#logo a {

-    text-decoration: none;

-    color: #D0C7A6;

-}

-

-#menu {

-    float: right;

-}

-

-#menu ul {

-    margin: 0;

-    padding: 0;

-    list-style: none;

-}

-

-#menu li {

-    display: block;

-    float: left;

-    height: 42px;

-}

-

-#menu a {

-    display: block;

-    padding: 8px 20px 0px 20px;

-    text-decoration: none;

-    text-align: center;

-    text-transform: lowercase;

-    font-family: Verdana, Arial, Helvetica, sans-serif;

-    font-weight: normal;

-    font-size: 14px;

-    color: #CEC5A4;

-}

-

-#menu .last {

-    margin-right: 20px;

-}

-

-#menu a:hover {

-    color: #FFFFFF;

-}

-

-#menu .current_page_item A {

-    text-decoration: underline;

-}

-

-#menu .current_page_item a {

-}

-

-/* Page */

-

-#page {

-    padding: 40px 40px 0 40px;

-}

-

-/* Content */

-

-#content {

-    margin-right: 340px;

-}

-

-.post {

-    margin-bottom: 10px;

-}

-

-.post .title {

-    border-bottom: 1px #999999 dashed;

-    font-family: Tahoma, Georgia, "Times New Roman", Times, serif;

-}

-

-.post .title h2 {

-    padding: 30px 30px 0 0px;

-    text-transform: lowercase;

-    font-weight: normal;

-    font-size: 2.2em;

-}

-

-.post .title p {

-    margin: 0;

-    padding: 0 0 10px 0px;

-    line-height: normal;

-    color: #BABABA;

-}

-

-.post .title p a {

-    color: #BABABA;

-}

-

-.post .entry {

-    padding: 20px 0px 20px 0px;

-}

-

-.post .links {

-    margin: 0;

-    padding: 0 30px 30px 0px;

-}

-

-.post .links a {

-    display: block;

-    float: left;

-    margin-right: 10px;

-    margin-bottom: 5px;

-    text-align: center;

-    text-decoration: none;

-    font-weight: bold;

-    color: #FFFFFF;

-}

-

-.post .links a:hover {

-}

-

-.post .links .more {

-    width: 128px;

-    height: 30px;

-    background: url( images/img03.jpg ) no-repeat left center;

-}

-

-.post .links .comments {

-    width: 152px;

-    height: 30px;

-    background: url( images/img04.jpg ) no-repeat left center;

-}

-

-/* Sidebar */

-

-#sidebar {

-    float: right;

-    width: 300px;

-    margin-top: 30px;

-}

-

-#sidebar ul {

-    margin: 0;

-    padding: 0;

-    list-style: none;

-}

-

-#sidebar li {

-    margin-bottom: 10px;

-    background: url( images/img10.gif ) no-repeat left bottom;

-}

-

-#sidebar li ul {

-    padding: 0 30px 40px 30px;

-}

-

-#sidebar li li {

-    margin: 0;

-    padding-left: 20px;

-}

-

-#sidebar h2 {

-    padding: 30px 30px 5px 10px;

-    background: url( images/img09.gif ) no-repeat;

-    text-transform: lowercase;

-    font-weight: normal;

-    font-size: 1.6em;

-    color: #302D26;

-}

-

-#sidebar DIV.sidebar-content {

-    width: 265px;

-    margin-left: 10px;

-    padding-bottom: 1px;

-}

-

-/* Search */

-

-#search {

-    padding: 20px 30px 40px 30px;

-}

-

-#search input {

-    padding: 0;

-    width: 70px;

-    height: 29px;

-    background: #DFDFDF url( images/img14.gif ) repeat-x;

-    font-weight: bold;

-}

-

-#search #s {

-    padding: 5px;

-    width: 150px;

-    height: auto;

-    background: #FEFEFE url( images/img13.gif ) repeat-x;

-    border: 1px solid #626262;

-    font: normal 1em Arial, Helvetica, sans-serif;

-}

-

-#search br {

-    display: none;

-}

-

-/* Categories */

-

-#sidebar #categories li {

-    background: url( images/img12.gif ) no-repeat left center;

-}

-

-/* Calendar */

-

-#calendar_wrap {

-    padding: 0 30px 40px 30px;

-}

-

-#calendar table {

-    width: 100%;

-    text-align: center;

-}

-

-#calendar thead {

-    background: #F1F1F1;

-}

-

-#calendar tbody td {

-    border: 1px solid #F1F1F1;

-}

-

-#calendar #prev {

-    text-align: left;

-}

-

-#calendar #next {

-    text-align: right;

-}

-

-#calendar tfoot a {

-    text-decoration: none;

-    font-weight: bold;

-}

-

-#calendar #today {

-    background: #FFF3A7;

-    border: 1px solid #EB1400;

-    font-weight: bold;

-    color: #EB1400

-}

-

-/* Footer */

-

-#footer {

-    padding: 70px 0 50px 0;

-    background: #757575 url( images/img08.gif ) repeat-x;

-}

-

-#footer p {

-    margin-bottom: 1em;

-    text-align: center;

-    line-height: normal;

-    font-size: .9em;

-    color: #BABABA;

-}

-

-#footer a {

-    padding: 0 20px;

-    text-decoration: none;

-    color: #DDDDDD;

-}

-

-#footer a:hover {

-    color: #FFFFFF;

-}

-

-#footer .rss {

-    background: url( images/img18.gif ) no-repeat left center;

-}

-

-#footer .xhtml {

-    background: url( images/img19.gif ) no-repeat left center;

-}

-

-#footer .css {

-    background: url( images/img20.gif ) no-repeat left center;

-}

-

-#footer .legal a {

-    padding: 0;

-}

diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/license.txt b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/license.txt
deleted file mode 100755
index 7f9442e..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/main/webapp/layout/license.txt
+++ /dev/null
@@ -1,243 +0,0 @@
-Creative Commons </>

-

-Creative Commons Legal Code

-

-*Attribution 2.5*

-

-CREATIVE COMMONS CORPORATION IS NOT A LAW FIRM AND DOES NOT PROVIDE

-LEGAL SERVICES. DISTRIBUTION OF THIS LICENSE DOES NOT CREATE AN

-ATTORNEY-CLIENT RELATIONSHIP. CREATIVE COMMONS PROVIDES THIS INFORMATION

-ON AN "AS-IS" BASIS. CREATIVE COMMONS MAKES NO WARRANTIES REGARDING THE

-INFORMATION PROVIDED, AND DISCLAIMS LIABILITY FOR DAMAGES RESULTING FROM

-ITS USE.

-

-/License/

-

-THE WORK (AS DEFINED BELOW) IS PROVIDED UNDER THE TERMS OF THIS CREATIVE

-COMMONS PUBLIC LICENSE ("CCPL" OR "LICENSE"). THE WORK IS PROTECTED BY

-COPYRIGHT AND/OR OTHER APPLICABLE LAW. ANY USE OF THE WORK OTHER THAN AS

-AUTHORIZED UNDER THIS LICENSE OR COPYRIGHT LAW IS PROHIBITED.

-

-BY EXERCISING ANY RIGHTS TO THE WORK PROVIDED HERE, YOU ACCEPT AND AGREE

-TO BE BOUND BY THE TERMS OF THIS LICENSE. THE LICENSOR GRANTS YOU THE

-RIGHTS CONTAINED HERE IN CONSIDERATION OF YOUR ACCEPTANCE OF SUCH TERMS

-AND CONDITIONS.

-

-*1. Definitions*

-

-   1. *"Collective Work"* means a work, such as a periodical issue,

-      anthology or encyclopedia, in which the Work in its entirety in

-      unmodified form, along with a number of other contributions,

-      constituting separate and independent works in themselves, are

-      assembled into a collective whole. A work that constitutes a

-      Collective Work will not be considered a Derivative Work (as

-      defined below) for the purposes of this License.

-   2. *"Derivative Work"* means a work based upon the Work or upon the

-      Work and other pre-existing works, such as a translation, musical

-      arrangement, dramatization, fictionalization, motion picture

-      version, sound recording, art reproduction, abridgment,

-      condensation, or any other form in which the Work may be recast,

-      transformed, or adapted, except that a work that constitutes a

-      Collective Work will not be considered a Derivative Work for the

-      purpose of this License. For the avoidance of doubt, where the

-      Work is a musical composition or sound recording, the

-      synchronization of the Work in timed-relation with a moving image

-      ("synching") will be considered a Derivative Work for the purpose

-      of this License.

-   3. *"Licensor"* means the individual or entity that offers the Work

-      under the terms of this License.

-   4. *"Original Author"* means the individual or entity who created the

-      Work.

-   5. *"Work"* means the copyrightable work of authorship offered under

-      the terms of this License.

-   6. *"You"* means an individual or entity exercising rights under this

-      License who has not previously violated the terms of this License

-      with respect to the Work, or who has received express permission

-      from the Licensor to exercise rights under this License despite a

-      previous violation.

-

-*2. Fair Use Rights.* Nothing in this license is intended to reduce,

-limit, or restrict any rights arising from fair use, first sale or other

-limitations on the exclusive rights of the copyright owner under

-copyright law or other applicable laws.

-

-*3. License Grant.* Subject to the terms and conditions of this License,

-Licensor hereby grants You a worldwide, royalty-free, non-exclusive,

-perpetual (for the duration of the applicable copyright) license to

-exercise the rights in the Work as stated below:

-

-   1. to reproduce the Work, to incorporate the Work into one or more

-      Collective Works, and to reproduce the Work as incorporated in the

-      Collective Works;

-   2. to create and reproduce Derivative Works;

-   3. to distribute copies or phonorecords of, display publicly, perform

-      publicly, and perform publicly by means of a digital audio

-      transmission the Work including as incorporated in Collective Works;

-   4. to distribute copies or phonorecords of, display publicly, perform

-      publicly, and perform publicly by means of a digital audio

-      transmission Derivative Works.

-   5.

-

-      For the avoidance of doubt, where the work is a musical composition:

-

-         1. *Performance Royalties Under Blanket Licenses*. Licensor

-            waives the exclusive right to collect, whether individually

-            or via a performance rights society (e.g. ASCAP, BMI,

-            SESAC), royalties for the public performance or public

-            digital performance (e.g. webcast) of the Work.

-         2. *Mechanical Rights and Statutory Royalties*. Licensor waives

-            the exclusive right to collect, whether individually or via

-            a music rights agency or designated agent (e.g. Harry Fox

-            Agency), royalties for any phonorecord You create from the

-            Work ("cover version") and distribute, subject to the

-            compulsory license created by 17 USC Section 115 of the US

-            Copyright Act (or the equivalent in other jurisdictions).

-   6. *Webcasting Rights and Statutory Royalties*. For the avoidance of

-      doubt, where the Work is a sound recording, Licensor waives the

-      exclusive right to collect, whether individually or via a

-      performance-rights society (e.g. SoundExchange), royalties for the

-      public digital performance (e.g. webcast) of the Work, subject to

-      the compulsory license created by 17 USC Section 114 of the US

-      Copyright Act (or the equivalent in other jurisdictions).

-

-The above rights may be exercised in all media and formats whether now

-known or hereafter devised. The above rights include the right to make

-such modifications as are technically necessary to exercise the rights

-in other media and formats. All rights not expressly granted by Licensor

-are hereby reserved.

-

-*4. Restrictions.*The license granted in Section 3 above is expressly

-made subject to and limited by the following restrictions:

-

-   1. You may distribute, publicly display, publicly perform, or

-      publicly digitally perform the Work only under the terms of this

-      License, and You must include a copy of, or the Uniform Resource

-      Identifier for, this License with every copy or phonorecord of the

-      Work You distribute, publicly display, publicly perform, or

-      publicly digitally perform. You may not offer or impose any terms

-      on the Work that alter or restrict the terms of this License or

-      the recipients' exercise of the rights granted hereunder. You may

-      not sublicense the Work. You must keep intact all notices that

-      refer to this License and to the disclaimer of warranties. You may

-      not distribute, publicly display, publicly perform, or publicly

-      digitally perform the Work with any technological measures that

-      control access or use of the Work in a manner inconsistent with

-      the terms of this License Agreement. The above applies to the Work

-      as incorporated in a Collective Work, but this does not require

-      the Collective Work apart from the Work itself to be made subject

-      to the terms of this License. If You create a Collective Work,

-      upon notice from any Licensor You must, to the extent practicable,

-      remove from the Collective Work any credit as required by clause

-      4(b), as requested. If You create a Derivative Work, upon notice

-      from any Licensor You must, to the extent practicable, remove from

-      the Derivative Work any credit as required by clause 4(b), as

-      requested.

-   2. If you distribute, publicly display, publicly perform, or publicly

-      digitally perform the Work or any Derivative Works or Collective

-      Works, You must keep intact all copyright notices for the Work and

-      provide, reasonable to the medium or means You are utilizing: (i)

-      the name of the Original Author (or pseudonym, if applicable) if

-      supplied, and/or (ii) if the Original Author and/or Licensor

-      designate another party or parties (e.g. a sponsor institute,

-      publishing entity, journal) for attribution in Licensor's

-      copyright notice, terms of service or by other reasonable means,

-      the name of such party or parties; the title of the Work if

-      supplied; to the extent reasonably practicable, the Uniform

-      Resource Identifier, if any, that Licensor specifies to be

-      associated with the Work, unless such URI does not refer to the

-      copyright notice or licensing information for the Work; and in the

-      case of a Derivative Work, a credit identifying the use of the

-      Work in the Derivative Work (e.g., "French translation of the Work

-      by Original Author," or "Screenplay based on original Work by

-      Original Author"). Such credit may be implemented in any

-      reasonable manner; provided, however, that in the case of a

-      Derivative Work or Collective Work, at a minimum such credit will

-      appear where any other comparable authorship credit appears and in

-      a manner at least as prominent as such other comparable authorship

-      credit.

-

-*5. Representations, Warranties and Disclaimer*

-

-UNLESS OTHERWISE MUTUALLY AGREED TO BY THE PARTIES IN WRITING, LICENSOR

-OFFERS THE WORK AS-IS AND MAKES NO REPRESENTATIONS OR WARRANTIES OF ANY

-KIND CONCERNING THE WORK, EXPRESS, IMPLIED, STATUTORY OR OTHERWISE,

-INCLUDING, WITHOUT LIMITATION, WARRANTIES OF TITLE, MERCHANTIBILITY,

-FITNESS FOR A PARTICULAR PURPOSE, NONINFRINGEMENT, OR THE ABSENCE OF

-LATENT OR OTHER DEFECTS, ACCURACY, OR THE PRESENCE OF ABSENCE OF ERRORS,

-WHETHER OR NOT DISCOVERABLE. SOME JURISDICTIONS DO NOT ALLOW THE

-EXCLUSION OF IMPLIED WARRANTIES, SO SUCH EXCLUSION MAY NOT APPLY TO YOU.

-

-*6. Limitation on Liability.* EXCEPT TO THE EXTENT REQUIRED BY

-APPLICABLE LAW, IN NO EVENT WILL LICENSOR BE LIABLE TO YOU ON ANY LEGAL

-THEORY FOR ANY SPECIAL, INCIDENTAL, CONSEQUENTIAL, PUNITIVE OR EXEMPLARY

-DAMAGES ARISING OUT OF THIS LICENSE OR THE USE OF THE WORK, EVEN IF

-LICENSOR HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.

-

-*7. Termination*

-

-   1. This License and the rights granted hereunder will terminate

-      automatically upon any breach by You of the terms of this License.

-      Individuals or entities who have received Derivative Works or

-      Collective Works from You under this License, however, will not

-      have their licenses terminated provided such individuals or

-      entities remain in full compliance with those licenses. Sections

-      1, 2, 5, 6, 7, and 8 will survive any termination of this License.

-   2. Subject to the above terms and conditions, the license granted

-      here is perpetual (for the duration of the applicable copyright in

-      the Work). Notwithstanding the above, Licensor reserves the right

-      to release the Work under different license terms or to stop

-      distributing the Work at any time; provided, however that any such

-      election will not serve to withdraw this License (or any other

-      license that has been, or is required to be, granted under the

-      terms of this License), and this License will continue in full

-      force and effect unless terminated as stated above.

-

-*8. Miscellaneous*

-

-   1. Each time You distribute or publicly digitally perform the Work or

-      a Collective Work, the Licensor offers to the recipient a license

-      to the Work on the same terms and conditions as the license

-      granted to You under this License.

-   2. Each time You distribute or publicly digitally perform a

-      Derivative Work, Licensor offers to the recipient a license to the

-      original Work on the same terms and conditions as the license

-      granted to You under this License.

-   3. If any provision of this License is invalid or unenforceable under

-      applicable law, it shall not affect the validity or enforceability

-      of the remainder of the terms of this License, and without further

-      action by the parties to this agreement, such provision shall be

-      reformed to the minimum extent necessary to make such provision

-      valid and enforceable.

-   4. No term or provision of this License shall be deemed waived and no

-      breach consented to unless such waiver or consent shall be in

-      writing and signed by the party to be charged with such waiver or

-      consent.

-   5. This License constitutes the entire agreement between the parties

-      with respect to the Work licensed here. There are no

-      understandings, agreements or representations with respect to the

-      Work not specified here. Licensor shall not be bound by any

-      additional provisions that may appear in any communication from

-      You. This License may not be modified without the mutual written

-      agreement of the Licensor and You.

-

-Creative Commons is not a party to this License, and makes no warranty

-whatsoever in connection with the Work. Creative Commons will not be

-liable to You or any party on any legal theory for any damages

-whatsoever, including without limitation any general, special,

-incidental or consequential damages arising in connection to this

-license. Notwithstanding the foregoing two (2) sentences, if Creative

-Commons has expressly identified itself as the Licensor hereunder, it

-shall have all rights and obligations of Licensor.

-

-Except for the limited purpose of indicating to the public that the Work

-is licensed under the CCPL, neither party will use the trademark

-"Creative Commons" or any related trademark or logo of Creative Commons

-without the prior written consent of Creative Commons. Any permitted use

-will be in compliance with Creative Commons' then-current trademark

-usage guidelines, as may be published on its website or otherwise made

-available upon request from time to time.

-

-Creative Commons may be contacted at http://creativecommons.org/

-<http://creativecommons.org>.

-

-« Back to Commons Deed <./>

diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/site/apt/index.apt b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/site/apt/index.apt
deleted file mode 100644
index 65a7a3c..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/site/apt/index.apt
+++ /dev/null
@@ -1,9 +0,0 @@
- ----
- Module ${groupId}:${artifactId}
- ----
-
-${groupId}:${artifactId} Documentation
-
-  This is where you can start to document your module.
-
-  Create new files in the Maven APT format, and update the site.xml file to point to them.
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/site/site.xml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/site/site.xml
deleted file mode 100644
index e90b5be..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/site/site.xml
+++ /dev/null
@@ -1,17 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Generated site for ${artifactId}">
-
-    <publishDate format="dd MMM yyyy"/>
-
-    <version/>
-
-    <body>
-
-        <menu name="${artifactId} Project">
-            <item name="About" href="index.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/conf/testng.xml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/conf/testng.xml
deleted file mode 100644
index 4030b6e..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/conf/testng.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="${artifactId} Application Test Suite" annotations="1.5">
-    <test name="Unit Tests">
-        <packages>
-            <package name="${package}"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/conf/webdefault.xml b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/conf/webdefault.xml
deleted file mode 100644
index c587ac7..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,278 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/java/PLACEHOLDER b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/java/PLACEHOLDER
deleted file mode 100644
index 62c163c..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/java/PLACEHOLDER
+++ /dev/null
@@ -1 +0,0 @@
-This placeholder exists to ensure the directory is created. It may be deleted when real files are placed under src/test/java.
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/resources/PLACEHOLDER b/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/resources/PLACEHOLDER
deleted file mode 100644
index 05ace36..0000000
--- a/maint-5-2/quickstart/src/main/resources/archetype-resources/src/test/resources/PLACEHOLDER
+++ /dev/null
@@ -1 +0,0 @@
-This placeholder exists to ensure the directory is created. It may be deleted when real files are placed under src/test/resources.
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/site/apt/index.apt b/maint-5-2/quickstart/src/site/apt/index.apt
deleted file mode 100644
index 7dfce95..0000000
--- a/maint-5-2/quickstart/src/site/apt/index.apt
+++ /dev/null
@@ -1,154 +0,0 @@
- ----
- Quickstart Archetype
- ----
- 
-Quickstart Archetype
-
-  An
-  {{{http://maven.apache.org/plugins/maven-archetype-plugin/index.html}archetype}} is the Maven term for a project template.  Using a Maven archetype, you
-  can create an empty shell of your project in just seconds.
-  
-  What you end up with is a basic Maven project, ready to build and deploy.
-  
-  First, you must decide on your group id, artifact id, and version number. For example, let's choose <<org.example>> for our group id,
-  <<myapp>> for the artifactId, and <<1.0-SNAPSHOT>> for the version number.  We also need a root package name, which we'll create by combining the group id
-  and the artifact id.
-  
-  From the command line, you execute the following command:
-
-  <<<mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org>>>
-
-  Maven uses the archetypeCatalog to get a list of available archetypes; in this case, you'll find options for all stable Tapestry versions as well as for the latest snapshot.
-  It will then ask you to enter the groupId, artifactId, version, and package.
-
-+---+
-$ mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org
-[INFO] Scanning for projects...
-[INFO] Searching repository for plugin with prefix: 'archetype'.
-[INFO] ------------------------------------------------------------------------
-[INFO] Building Maven Default Project
-[INFO]    task-segment: [archetype:generate] (aggregator-style)
-[INFO] ------------------------------------------------------------------------
-[INFO] Preparing archetype:generate
-[INFO] No goals needed for project - skipping
-[INFO] Setting property: classpath.resource.loader.class => 'org.codehaus.plexus.velocity.ContextClassLoaderResourceLoader'.
-[INFO] Setting property: velocimacro.messages.on => 'false'.
-[INFO] Setting property: resource.loader => 'classpath'.
-[INFO] Setting property: resource.manager.logwhenfound => 'false'.
-[INFO] [archetype:generate]
-[INFO] Generating project in Interactive mode
-[INFO] No archetype defined. Using maven-archetype-quickstart (org.apache.maven.archetypes:maven-archetype-quickstart:1.0)
-Choose archetype:
-1: http://tapestry.apache.org -> quickstart (Tapestry 5.2.0-SNAPSHOT Quickstart Project)
-2: http://tapestry.apache.org -> quickstart (Tapestry 5.1.0.5 Quickstart Project)
-3: http://tapestry.apache.org -> quickstart (Tapestry 5.0.19 Quickstart Project)
-4: http://tapestry.apache.org -> tapestry-archetype (Tapestry 4.1.6 Archetype)
-Choose a number:  (1/2/3/4): 1
-[INFO] snapshot org.apache.tapestry:quickstart:5.2.0-SNAPSHOT: checking for updates from quickstart-repo
-Define value for groupId: : org.example
-Define value for artifactId: : myapp
-Define value for version:  1.0-SNAPSHOT: :
-Define value for package:  org.example: : org.example.myapp
-Confirm properties configuration:
-groupId: org.example
-artifactId: myapp
-version: 1.0-SNAPSHOT
-package: org.example.myapp
- Y: :
-[INFO] ------------------------------------------------------------------------
-[INFO] BUILD SUCCESSFUL
-[INFO] ------------------------------------------------------------------------
-[INFO] Total time: 16 seconds
-[INFO] Finished at: Sat Jan 31 14:29:27 PST 2009
-[INFO] Final Memory: 7M/14M
-[INFO] ------------------------------------------------------------------------
-$
-+---+
-
-  <This first time you try this, you'll probably see a huge amount of messages about Maven downloading all sorts of plugins and JARs, in addition to what's above.>
-
-  Maven has combined your information to form a new directory containing your application.  It has created a Maven pom.xml, a web.xml, a log4j.properties file,
-  and a starting page (Index.tml and Index.java) with each file in its correct location. It also creates a starter Tapestry IoC module for the application (AppModule.java).  
-  
-  You can run the application directly, using the Jetty servlet container:
-  
-+---+
-$ cd myapp
-~/work/myapp
-$ mvn jetty:run
-[INFO] Scanning for projects...
-[INFO] Searching repository for plugin with prefix: 'jetty'.
-[INFO] ------------------------------------------------------------------------
-[INFO] Building myapp Tapestry 5 Application
-[INFO]    task-segment: [jetty:run]
-[INFO] ------------------------------------------------------------------------
-[INFO] Preparing jetty:run
-[INFO] [resources:resources]
-[WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent!
-[INFO] Copying 3 resources
-[INFO] [compiler:compile]
-[INFO] Compiling 3 source files to /private/tmp/myapp/target/classes
-[INFO] [resources:testResources]
-[WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform dependent!
-[INFO] Copying 1 resource
-[INFO] [compiler:testCompile]
-[INFO] Nothing to compile - all classes are up to date
-[INFO] [jetty:run]
-[INFO] Configuring Jetty for project: myapp Tapestry 5 Application
-[INFO] Webapp source directory = /private/tmp/myapp/src/main/webapp
-[INFO] web.xml file = /private/tmp/myapp/src/main/webapp/WEB-INF/web.xml
-[INFO] Classes = /private/tmp/myapp/target/classes
-2009-01-31 14:31:49.225::INFO:  Logging to STDERR via org.mortbay.log.StdErrLog
-[INFO] Context path = /myapp
-[INFO] Tmp directory =  determined at runtime
-[INFO] Web defaults = org/mortbay/jetty/webapp/webdefault.xml
-[INFO] Web overrides =  none
-[INFO] Webapp directory = /private/tmp/myapp/src/main/webapp
-[INFO] Starting jetty 6.1.9 ...
-2009-01-31 14:31:49.312::INFO:  jetty-6.1.9
-2009-01-31 14:31:49.502::INFO:  No Transaction manager found - if your webapp requires one, please configure one.
-[INFO] ioc.RegistryBuilder Adding module definition for class org.apache.tapestry5.ioc.services.TapestryIOCModule
-[INFO] ioc.RegistryBuilder Adding module definition for class org.apache.tapestry5.services.TapestryModule
-[INFO] ioc.RegistryBuilder Adding module definition for class org.apache.tapestry5.internal.services.InternalModule
-[INFO] ioc.RegistryBuilder Adding module definition for class org.example.myapp.services.AppModule
-[INFO] TapestryModule.ComponentClassResolver Available pages:
-              (blank): org.example.myapp.pages.Index
-      ExceptionReport: org.apache.tapestry5.corelib.pages.ExceptionReport
-                Index: org.example.myapp.pages.Index
-PropertyDisplayBlocks: org.apache.tapestry5.corelib.pages.PropertyDisplayBlocks
-   PropertyEditBlocks: org.apache.tapestry5.corelib.pages.PropertyEditBlocks
-        ServiceStatus: org.apache.tapestry5.corelib.pages.ServiceStatus
-
-[INFO] TapestryModule.ComponentClassResolver Available components:
-      ActionLink: org.apache.tapestry5.corelib.components.ActionLink
-      AddRowLink: org.apache.tapestry5.corelib.components.AddRowLink
-    AjaxFormLoop: org.apache.tapestry5.corelib.components.AjaxFormLoop
-             Any: org.apache.tapestry5.corelib.components.Any
-.
-.
-.
-                    ValidateBindingFactory: DEFINED
-             ValidationConstraintGenerator: DEFINED
-                  ValidationMessagesSource: DEFINED
-                        ValueEncoderSource: DEFINED
-
-82.89% unrealized services (126/152)
-
-2009-01-31 14:31:50.937::INFO:  Started SelectChannelConnector@0.0.0.0:8080
-[INFO] Started Jetty Server
-+---+
-
-  <Again, the first time you do this, you'll see a large number of download messages.>
-  
-  You can now see your running application as {{{http://localhost:8080/myapp}http://localhost:8080/myapp}}
-  
-  You can hit Control-C to stop Jetty.
-  
-About Snapshots
-
-  By referencing the application catalog in http://tapestry.apache.org and choosing the first (SNAPSHOT) option,
-  you are directing Maven to download a snapshot version of the quickstart archetype; your application
-  will then be dependent on snapshot versions of the JARs. These are rebuilt every night, so you may see
-  Maven redownload the Tapestry JARs more often than you'd like. You can edit the generated pom.xml file
-  to switch to a more stable version of Tapestry 5, such as the most recent stable release, 5.1.0.5.
-  
\ No newline at end of file
diff --git a/maint-5-2/quickstart/src/site/resources/images/asf_logo_wide.gif b/maint-5-2/quickstart/src/site/resources/images/asf_logo_wide.gif
deleted file mode 100644
index b240328..0000000
--- a/maint-5-2/quickstart/src/site/resources/images/asf_logo_wide.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/quickstart/src/site/site.xml b/maint-5-2/quickstart/src/site/site.xml
deleted file mode 100644
index 26a3f17..0000000
--- a/maint-5-2/quickstart/src/site/site.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Quickstart Archetype">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Usage">
-            <item name="Introduction" href="index.html"/>
-        </menu>
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/quickstart/src/test/conf/testng.xml b/maint-5-2/quickstart/src/test/conf/testng.xml
deleted file mode 100644
index 433cedc..0000000
--- a/maint-5-2/quickstart/src/test/conf/testng.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!--
-   Copyright 2009 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapestry Quickstart" annotations="1.5" verbose="2">
-    <!-- This avoids a build error (ideally we'd like to disable the surefire plugin in this project) -->
-    <test name="Placeholder (no tests)"/>
-</suite>
diff --git a/maint-5-2/src/architecture.graffle b/maint-5-2/src/architecture.graffle
deleted file mode 100644
index 4a63bf2..0000000
--- a/maint-5-2/src/architecture.graffle
+++ /dev/null
@@ -1,690 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActiveLayerIndex</key>
-	<integer>0</integer>
-	<key>AutoAdjust</key>
-	<true/>
-	<key>CanvasColor</key>
-	<dict>
-		<key>w</key>
-		<string>1</string>
-	</dict>
-	<key>CanvasOrigin</key>
-	<string>{0, 0}</string>
-	<key>CanvasScale</key>
-	<real>1</real>
-	<key>ColumnAlign</key>
-	<integer>1</integer>
-	<key>ColumnSpacing</key>
-	<real>36</real>
-	<key>CreationDate</key>
-	<string>2007-03-03 18:28:45 -0800</string>
-	<key>Creator</key>
-	<string>Howard Lewis Ship</string>
-	<key>DisplayScale</key>
-	<string>1 in = 1 in</string>
-	<key>GraphDocumentVersion</key>
-	<integer>5</integer>
-	<key>GraphicsList</key>
-	<array>
-		<dict>
-			<key>Bounds</key>
-			<string>{{278, 231.4}, {252, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>20</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Templates}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 231.4}, {258, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>19</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Parameter Bindings}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 161.8}, {514, 65}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>18</integer>
-			<key>Shape</key>
-			<string>SemiCircle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0.501961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf2 User Application}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{278, 290}, {252, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>12</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Asset Distribution}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{278, 348.6}, {252, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>11</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 State Management}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 290}, {258, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>10</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Request Dispatch}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{278, 407.2}, {252, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>8</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Localization}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 348.6}, {258, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>7</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Page Caching}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 407.2}, {258, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>6</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Class Transformation}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 465.8}, {514, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>5</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>0.8</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Tapestry Inversion of Control Container}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 583}, {514, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>4</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Java 1.5 Runtime}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{16, 524.4}, {514, 54}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>3</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs48 \cf0 Servlet Container}</string>
-			</dict>
-		</dict>
-	</array>
-	<key>GridInfo</key>
-	<dict/>
-	<key>GuidesLocked</key>
-	<string>NO</string>
-	<key>GuidesVisible</key>
-	<string>YES</string>
-	<key>HPages</key>
-	<integer>1</integer>
-	<key>ImageCounter</key>
-	<integer>1</integer>
-	<key>IsPalette</key>
-	<string>NO</string>
-	<key>KeepToScale</key>
-	<false/>
-	<key>Layers</key>
-	<array>
-		<dict>
-			<key>Lock</key>
-			<string>NO</string>
-			<key>Name</key>
-			<string>Layer 1</string>
-			<key>Print</key>
-			<string>YES</string>
-			<key>View</key>
-			<string>YES</string>
-		</dict>
-	</array>
-	<key>LayoutInfo</key>
-	<dict/>
-	<key>LinksVisible</key>
-	<string>NO</string>
-	<key>MagnetsVisible</key>
-	<string>NO</string>
-	<key>MasterSheet</key>
-	<string>Master 1</string>
-	<key>MasterSheets</key>
-	<array>
-		<dict>
-			<key>ActiveLayerIndex</key>
-			<integer>0</integer>
-			<key>AutoAdjust</key>
-			<true/>
-			<key>CanvasColor</key>
-			<dict>
-				<key>w</key>
-				<string>1</string>
-			</dict>
-			<key>CanvasOrigin</key>
-			<string>{0, 0}</string>
-			<key>CanvasScale</key>
-			<real>1</real>
-			<key>ColumnAlign</key>
-			<integer>1</integer>
-			<key>ColumnSpacing</key>
-			<real>36</real>
-			<key>DisplayScale</key>
-			<string>1 in = 1 in</string>
-			<key>GraphicsList</key>
-			<array/>
-			<key>GridInfo</key>
-			<dict/>
-			<key>HPages</key>
-			<integer>1</integer>
-			<key>IsPalette</key>
-			<string>NO</string>
-			<key>KeepToScale</key>
-			<false/>
-			<key>Layers</key>
-			<array>
-				<dict>
-					<key>Lock</key>
-					<string>NO</string>
-					<key>Name</key>
-					<string>Layer 1</string>
-					<key>Print</key>
-					<string>YES</string>
-					<key>View</key>
-					<string>YES</string>
-				</dict>
-			</array>
-			<key>LayoutInfo</key>
-			<dict/>
-			<key>Orientation</key>
-			<integer>2</integer>
-			<key>OutlineStyle</key>
-			<string>Basic</string>
-			<key>RowAlign</key>
-			<integer>1</integer>
-			<key>RowSpacing</key>
-			<real>36</real>
-			<key>SheetTitle</key>
-			<string>Master 1</string>
-			<key>UniqueID</key>
-			<integer>1</integer>
-			<key>VPages</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>ModificationDate</key>
-	<string>2007-03-03 18:46:34 -0800</string>
-	<key>Modifier</key>
-	<string>Howard Lewis Ship</string>
-	<key>NotesVisible</key>
-	<string>NO</string>
-	<key>Orientation</key>
-	<integer>2</integer>
-	<key>OriginVisible</key>
-	<string>NO</string>
-	<key>OutlineStyle</key>
-	<string>Basic</string>
-	<key>PageBreaks</key>
-	<string>YES</string>
-	<key>PrintInfo</key>
-	<dict>
-		<key>NSBottomMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSLeftMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSPaperSize</key>
-		<array>
-			<string>size</string>
-			<string>{612, 792}</string>
-		</array>
-		<key>NSRightMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSTopMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-	</dict>
-	<key>ReadOnly</key>
-	<string>NO</string>
-	<key>RowAlign</key>
-	<integer>1</integer>
-	<key>RowSpacing</key>
-	<real>36</real>
-	<key>SheetTitle</key>
-	<string>Canvas 1</string>
-	<key>SmartAlignmentGuidesActive</key>
-	<string>YES</string>
-	<key>SmartDistanceGuidesActive</key>
-	<string>YES</string>
-	<key>UniqueID</key>
-	<integer>1</integer>
-	<key>UseEntirePage</key>
-	<true/>
-	<key>VPages</key>
-	<integer>1</integer>
-	<key>WindowInfo</key>
-	<dict>
-		<key>CurrentSheet</key>
-		<string>0</string>
-		<key>DrawerOpen</key>
-		<false/>
-		<key>DrawerTab</key>
-		<string>Outline</string>
-		<key>DrawerWidth</key>
-		<real>209</real>
-		<key>FitInWindow</key>
-		<false/>
-		<key>Frame</key>
-		<string>{{482, 183}, {970, 957}}</string>
-		<key>ShowRuler</key>
-		<true/>
-		<key>ShowStatusBar</key>
-		<true/>
-		<key>VisibleRegion</key>
-		<string>{{-180, -21}, {939, 797}}</string>
-		<key>Zoom</key>
-		<string>1</string>
-	</dict>
-</dict>
-</plist>
diff --git a/maint-5-2/src/pagestructure.graffle b/maint-5-2/src/pagestructure.graffle
deleted file mode 100644
index 65d3c48..0000000
--- a/maint-5-2/src/pagestructure.graffle
+++ /dev/null
@@ -1,1696 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActiveLayerIndex</key>
-	<integer>0</integer>
-	<key>AutoAdjust</key>
-	<true/>
-	<key>CanvasColor</key>
-	<dict>
-		<key>w</key>
-		<string>1</string>
-	</dict>
-	<key>CanvasOrigin</key>
-	<string>{0, 0}</string>
-	<key>CanvasScale</key>
-	<real>1</real>
-	<key>ColumnAlign</key>
-	<integer>1</integer>
-	<key>ColumnSpacing</key>
-	<real>36</real>
-	<key>CreationDate</key>
-	<string>2007-03-03 18:50:58 -0800</string>
-	<key>Creator</key>
-	<string>Howard Lewis Ship</string>
-	<key>DisplayScale</key>
-	<string>1 in = 1 in</string>
-	<key>GraphDocumentVersion</key>
-	<integer>5</integer>
-	<key>GraphicsList</key>
-	<array>
-		<dict>
-			<key>Bounds</key>
-			<string>{{373.618, 141}, {109.657, 20}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>Flow</key>
-			<string>Resize</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>8</real>
-			</dict>
-			<key>ID</key>
-			<integer>59</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs16 \cf0 org.example.myapp.\
-pages.Start}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{188.327, 301.652}, {83.9941, 22}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>ID</key>
-			<integer>58</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>57</integer>
-				<key>Position</key>
-				<real>0.4177631139755249</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs18 \cf0 container resources}</string>
-			</dict>
-			<key>Wrap</key>
-			<string>YES</string>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>7</integer>
-			</dict>
-			<key>ID</key>
-			<integer>57</integer>
-			<key>Points</key>
-			<array>
-				<string>{230.324, 337.874}</string>
-				<string>{230.324, 277.5}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{188.327, 408.47}, {83.9941, 22}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>ID</key>
-			<integer>56</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>55</integer>
-				<key>Position</key>
-				<real>0.36486351490020752</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs18 \cf0 container resources}</string>
-			</dict>
-			<key>Wrap</key>
-			<string>YES</string>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-			</dict>
-			<key>ID</key>
-			<integer>55</integer>
-			<key>Points</key>
-			<array>
-				<string>{230.324, 445.088}</string>
-				<string>{230.324, 374.874}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{142.268, 307.582}, {49, 13}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>ID</key>
-			<integer>54</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>53</integer>
-				<key>Position</key>
-				<real>0.37852653861045837</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs18 \cf0 container}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>8</integer>
-			</dict>
-			<key>ID</key>
-			<integer>53</integer>
-			<key>Points</key>
-			<array>
-				<string>{202.857, 338.097}</string>
-				<string>{107.517, 274.655}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{142.191, 410.466}, {49, 13}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>ID</key>
-			<integer>52</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>51</integer>
-				<key>Position</key>
-				<real>0.39187759160995483</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs18 \cf0 container}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>32</integer>
-			</dict>
-			<key>ID</key>
-			<integer>51</integer>
-			<key>Points</key>
-			<array>
-				<string>{205.353, 445.293}</string>
-				<string>{106.695, 373.009}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{63.9902, 386.147}, {40, 13}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>ID</key>
-			<integer>49</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>48</integer>
-				<key>Position</key>
-				<real>0.2531268298625946</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs18 \cf0 _pager}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>40</integer>
-			</dict>
-			<key>ID</key>
-			<integer>48</integer>
-			<key>Points</key>
-			<array>
-				<string>{83.9902, 374.874}</string>
-				<string>{83.9902, 445.088}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>32</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{380.721, 404.623}, {58.985, 24}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>10</real>
-			</dict>
-			<key>ID</key>
-			<integer>45</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>44</integer>
-				<key>Position</key>
-				<real>0.42455002665519714</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs20 \cf0 containing element}</string>
-			</dict>
-			<key>Wrap</key>
-			<string>YES</string>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{183.824, 445.588}, {93, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>42</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>1</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Component Resources}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{319.118, 445.588}, {109.657, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>11</real>
-			</dict>
-			<key>ID</key>
-			<integer>41</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.701961</string>
-						<key>g</key>
-						<string>0.701961</string>
-						<key>r</key>
-						<string>0.701961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs22 \cf1 CPE: grid.pager}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{35.2157, 445.588}, {97.549, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>40</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.25098</string>
-						<key>r</key>
-						<string>0.501961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs28 \cf1 GridPager}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{407.721, 236.765}, {89.4608, 20}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>Flow</key>
-			<string>Resize</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>8</real>
-			</dict>
-			<key>ID</key>
-			<integer>39</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs16 \cf0 Component Page Element}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{380.721, 302.271}, {58.985, 24}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>10</real>
-			</dict>
-			<key>ID</key>
-			<integer>37</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>36</integer>
-				<key>Position</key>
-				<real>0.42455002665519714</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs20 \cf0 containing element}</string>
-			</dict>
-			<key>Wrap</key>
-			<string>YES</string>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{183.824, 338.374}, {93, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>34</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>1</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Component Resources}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{349, 338.374}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Font</key>
-				<string>Futura-Medium</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>33</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.701961</string>
-						<key>g</key>
-						<string>0.701961</string>
-						<key>r</key>
-						<string>0.701961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 CPE: grid}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{56.9902, 338.374}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>32</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.25098</string>
-						<key>r</key>
-						<string>0.501961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs28 \cf1 Grid}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{361.003, 182.654}, {83.9941, 12}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>10</real>
-			</dict>
-			<key>ID</key>
-			<integer>30</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>28</integer>
-				<key>Position</key>
-				<real>0.5</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs20 \cf0 containing page}</string>
-			</dict>
-			<key>Wrap</key>
-			<string>YES</string>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{301.304, 200.16}, {67, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>27</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>26</integer>
-				<key>Position</key>
-				<real>0.41252449154853821</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs20 \cf0 root element}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{56.9902, 241}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>8</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.25098</string>
-						<key>r</key>
-						<string>0.501961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs28 \cf1 Start}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{183.824, 241}, {93, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>7</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>1</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Component Resources}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{349, 241}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>6</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.701961</string>
-						<key>g</key>
-						<string>0.701961</string>
-						<key>r</key>
-						<string>0.701961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs28 \cf1 CPE}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{308, 141}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>5</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.701961</string>
-						<key>g</key>
-						<string>0.701961</string>
-						<key>r</key>
-						<string>0.701961</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Futura-Medium;}
-{\colortbl;\red255\green255\blue255;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs28 \cf2 Page}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-			<key>ID</key>
-			<integer>47</integer>
-			<key>Points</key>
-			<array>
-				<string>{133.265, 463.588}</string>
-				<string>{183.324, 463.588}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>40</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>33</integer>
-			</dict>
-			<key>ID</key>
-			<integer>44</integer>
-			<key>Points</key>
-			<array>
-				<string>{393.179, 445.243}</string>
-				<string>{407.721, 431.373}</string>
-				<string>{407.721, 383.824}</string>
-				<string>{396.808, 374.38}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>41</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>41</integer>
-			</dict>
-			<key>ID</key>
-			<integer>43</integer>
-			<key>Points</key>
-			<array>
-				<string>{277.324, 463.588}</string>
-				<string>{318.618, 463.588}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>0</string>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-			</dict>
-			<key>ID</key>
-			<integer>38</integer>
-			<key>Points</key>
-			<array>
-				<string>{111.49, 356.374}</string>
-				<string>{183.324, 356.374}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>32</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-			<key>ID</key>
-			<integer>36</integer>
-			<key>Points</key>
-			<array>
-				<string>{399.887, 341.238}</string>
-				<string>{407.721, 336.275}</string>
-				<string>{407.721, 290.196}</string>
-				<string>{394.659, 277.351}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>33</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>33</integer>
-			</dict>
-			<key>ID</key>
-			<integer>35</integer>
-			<key>Points</key>
-			<array>
-				<string>{277.324, 356.374}</string>
-				<string>{348.5, 356.374}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>0</string>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>ID</key>
-			<integer>28</integer>
-			<key>Points</key>
-			<array>
-				<string>{392.23, 240.625}</string>
-				<string>{403, 228.431}</string>
-				<string>{403, 178.922}</string>
-				<string>{361.274, 158.823}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-			<key>ID</key>
-			<integer>26</integer>
-			<key>Points</key>
-			<array>
-				<string>{334.804, 177}</string>
-				<string>{334.804, 217.647}</string>
-				<string>{357.715, 240.646}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>7</integer>
-			</dict>
-			<key>ID</key>
-			<integer>25</integer>
-			<key>Points</key>
-			<array>
-				<string>{111.49, 259}</string>
-				<string>{183.324, 259}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>8</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-			<key>ID</key>
-			<integer>24</integer>
-			<key>Points</key>
-			<array>
-				<string>{277.324, 259}</string>
-				<string>{348.5, 259}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>0</string>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>7</integer>
-			</dict>
-		</dict>
-	</array>
-	<key>GridInfo</key>
-	<dict/>
-	<key>GuidesLocked</key>
-	<string>NO</string>
-	<key>GuidesVisible</key>
-	<string>YES</string>
-	<key>HPages</key>
-	<integer>1</integer>
-	<key>ImageCounter</key>
-	<integer>1</integer>
-	<key>IsPalette</key>
-	<string>NO</string>
-	<key>KeepToScale</key>
-	<false/>
-	<key>Layers</key>
-	<array>
-		<dict>
-			<key>Lock</key>
-			<string>NO</string>
-			<key>Name</key>
-			<string>Layer 1</string>
-			<key>Print</key>
-			<string>YES</string>
-			<key>View</key>
-			<string>YES</string>
-		</dict>
-	</array>
-	<key>LayoutInfo</key>
-	<dict/>
-	<key>LinksVisible</key>
-	<string>NO</string>
-	<key>MagnetsVisible</key>
-	<string>NO</string>
-	<key>MasterSheet</key>
-	<string>Master 1</string>
-	<key>MasterSheets</key>
-	<array>
-		<dict>
-			<key>ActiveLayerIndex</key>
-			<integer>0</integer>
-			<key>AutoAdjust</key>
-			<true/>
-			<key>CanvasColor</key>
-			<dict>
-				<key>w</key>
-				<string>1</string>
-			</dict>
-			<key>CanvasOrigin</key>
-			<string>{0, 0}</string>
-			<key>CanvasScale</key>
-			<real>1</real>
-			<key>ColumnAlign</key>
-			<integer>1</integer>
-			<key>ColumnSpacing</key>
-			<real>36</real>
-			<key>DisplayScale</key>
-			<string>1 in = 1 in</string>
-			<key>GraphicsList</key>
-			<array/>
-			<key>GridInfo</key>
-			<dict/>
-			<key>HPages</key>
-			<integer>1</integer>
-			<key>IsPalette</key>
-			<string>NO</string>
-			<key>KeepToScale</key>
-			<false/>
-			<key>Layers</key>
-			<array>
-				<dict>
-					<key>Lock</key>
-					<string>NO</string>
-					<key>Name</key>
-					<string>Layer 1</string>
-					<key>Print</key>
-					<string>YES</string>
-					<key>View</key>
-					<string>YES</string>
-				</dict>
-			</array>
-			<key>LayoutInfo</key>
-			<dict/>
-			<key>Orientation</key>
-			<integer>2</integer>
-			<key>OutlineStyle</key>
-			<string>Basic</string>
-			<key>RowAlign</key>
-			<integer>1</integer>
-			<key>RowSpacing</key>
-			<real>36</real>
-			<key>SheetTitle</key>
-			<string>Master 1</string>
-			<key>UniqueID</key>
-			<integer>1</integer>
-			<key>VPages</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>ModificationDate</key>
-	<string>2007-03-04 18:47:00 -0800</string>
-	<key>Modifier</key>
-	<string>Howard Lewis Ship</string>
-	<key>NotesVisible</key>
-	<string>NO</string>
-	<key>Orientation</key>
-	<integer>2</integer>
-	<key>OriginVisible</key>
-	<string>NO</string>
-	<key>OutlineStyle</key>
-	<string>Basic</string>
-	<key>PageBreaks</key>
-	<string>YES</string>
-	<key>PrintInfo</key>
-	<dict>
-		<key>NSBottomMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSLeftMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSPaperSize</key>
-		<array>
-			<string>size</string>
-			<string>{612, 792}</string>
-		</array>
-		<key>NSRightMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSTopMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-	</dict>
-	<key>ReadOnly</key>
-	<string>NO</string>
-	<key>RowAlign</key>
-	<integer>1</integer>
-	<key>RowSpacing</key>
-	<real>36</real>
-	<key>SheetTitle</key>
-	<string>Canvas 1</string>
-	<key>SmartAlignmentGuidesActive</key>
-	<string>YES</string>
-	<key>SmartDistanceGuidesActive</key>
-	<string>YES</string>
-	<key>UniqueID</key>
-	<integer>1</integer>
-	<key>UseEntirePage</key>
-	<true/>
-	<key>VPages</key>
-	<integer>1</integer>
-	<key>WindowInfo</key>
-	<dict>
-		<key>CurrentSheet</key>
-		<string>0</string>
-		<key>DrawerOpen</key>
-		<false/>
-		<key>DrawerTab</key>
-		<string>Outline</string>
-		<key>DrawerWidth</key>
-		<real>209</real>
-		<key>FitInWindow</key>
-		<false/>
-		<key>Frame</key>
-		<string>{{368, 84}, {1197, 1494}}</string>
-		<key>ShowRuler</key>
-		<false/>
-		<key>ShowStatusBar</key>
-		<true/>
-		<key>VisibleRegion</key>
-		<string>{{0, 0}, {579.412, 676.471}}</string>
-		<key>Zoom</key>
-		<string>2.04</string>
-	</dict>
-</dict>
-</plist>
diff --git a/maint-5-2/src/site/apt/glassfish.apt b/maint-5-2/src/site/apt/glassfish.apt
deleted file mode 100644
index 370c0fb..0000000
--- a/maint-5-2/src/site/apt/glassfish.apt
+++ /dev/null
@@ -1,40 +0,0 @@
- ----
- Deployment Notes: Glassfish
- ----
-
-Deployment Notes: Glassfish 2.1
-
-  Deploying Tapestry applications into Glassfish has one snag: a conflict in the
-  {{{http://en.wikipedia.org/wiki/StAX}StAX parser}} (used to parse component templates).
-  Tapestry must use the
-  {{{http://woodstox.codehaus.org/}Woodstox StAX parser}}, and Glassfish provides an alternate parser.
-
-  Fortunately, you can override Glassfish, and force it to use Woodstox as its default StAX parser.
-
-  First, copy and Woodstox and its dependencies into the Glassfish domain's <<<lib/ext>>> directory; these
-   files are:
-
-   * woodstox-core-asl-4.0.3.jar
-
-   * stax-api-1.0.1.jar
-
-   * stax2-api-3.0.1.jar
-
-   []
-
-  It is no longer necessary to include these files in a Tapestry WAR, though it doesn't cause problems
-  if they are left in.
-
-
-  Second, use Glassfish's console to configure some system properties:
-
-*---+---+
-|  javax.xml.stream.XMLEventFactory |       com.ctc.wstx.stax.WstxEventFactory
-*---+---+
-|  javax.xml.stream.XMLInputFactory |      com.ctc.wstx.stax.WstxInputFactory
-*---+---+
-|  javax.xml.stream.XMLOutputFactory |    com.ctc.wstx.stax.WstxOutputFactory
-*---+---+
-
-  You will be prompted to restart Glassfish.  Tapestry applications will now deploy properly.
-
diff --git a/maint-5-2/src/site/apt/index.apt b/maint-5-2/src/site/apt/index.apt
deleted file mode 100644
index e74c01b..0000000
--- a/maint-5-2/src/site/apt/index.apt
+++ /dev/null
@@ -1,262 +0,0 @@
- ----
- Apache Tapestry 5
- ----
- 
-What is Apache Tapestry?
-
- Apache Tapestry is an open-source framework for creating dynamic, robust, highly scalable web applications in Java. 
- Tapestry complements and builds upon the standard Java Servlet API, and so it works in any servlet container or application server.
-
- Tapestry divides a web application into a set of pages, each constructed from components. This provides a consistent structure, 
- allowing the Tapestry framework to assume responsibility for key concerns such as URL construction and dispatch, persistent state 
- storage on the client or on the server, user input validation, localization/internationalization, and exception reporting. 
- Developing Tapestry applications involves creating HTML templates using plain HTML, and combining the templates with small amounts of 
- Java code. In Tapestry, you create your application in terms of objects, and the methods and properties of those 
- objects -- and specifically not in terms of URLs and query parameters. 
- Tapestry brings true object oriented development to Java web applications.
-
- Tapestry is specifically designed to make creating new components very easy, 
- as this is a routine approach when building applications. 
- 
- Tapestry is architected to scale from tiny, single-page applications all the way up to
- massive applications consisting of hundreds of individual pages, developed by
- large, diverse teams. Tapestry has significant Ajax features baked right in. On the server-side, Tapestry easily integrates with any kind of backend, including JEE, 
- Spring and Hibernate.
- 
- It's more than what you <can> do with Tapestry ... it's also <how> you do it!  Tapestry is a vastly productive environment.
- Java developers love it because they can make <Java code> changes and see them immediately ... no redeploy, no restart! And it's blazingly fast to boot
- (even when files change). Designers
- love it because Tapestry templates are so close to ordinary HTML, without all the cruft and confusion seen in JavaServer Pages. Managers love it because
- it makes it easy for large teams to work together, and because they know important features (including localization) are baked right in. Once you work
- in Tapestry there's no going back!
-
- Tapestry is released under the Apache Software License 2.0.
-
-New And Of Note
-
-  * New {{{apidocs/org/apache/tapestry5/annotations/QueryParameterMapped.html}QueryParameterMapped}} annotation to
-    automatically map fields of a page to query parameters.
-  
-  * Service <implementation> classes may now be {{{tapestry-ioc/reload.html}live reloaded}}, much like page and component classes. 
-
-  * New {{{apidocs/org/apache/tapestry5/annotations/QueryParameter.html}QueryParameter}} annotation for parameters to event handler methods.
-
-  * Submit components can now be used to cancel a form (bypassing client-side validation).
-
-  * Tapestry no longer uses a StAX parser to parse templates (it uses a standard SAX parser), meaning fewer dependencies and
-    better compatibility with Google App Engine.
-
-  * A {{{guide/testing.html}guide to integration testing}} is now available.
-  
-  * The {{{guide/persist.html}@SessionAttribute}} annotation can be used on component fields to
-    read and update HttpSession attributes.
-  
-  * The {{{tapestry-beanvalidator}JSR-303 Bean Validation Integration Library}} is now available.
-
-  []
-  
-Roadmap
-
-  The goal is to produce new releases on a regular schedule, every 4 - 6 months.
-
-  High priorities for 5.2 include Spring Web Flow integration, and support for developing Tapestry applications as Portlets.
-
-Third Party Libraries, Tutorials and Resources
-
-  A number of Third Party Libraries, Tutorials and Resources are listed on
-  the {{{http://tapestry.apache.org/}Tapestry Home Page}}.
-
-Adaptive API
-
-  A key feature of Tapestry 5 is <adaptive API>.
-
-  In traditional Java frameworks, including Tapestry 4, user code is expected to
-  conform to the framework.  You create classes that extend from framework-provided
-  base classes, or implement framework-provided interfaces.
-
-  This works well until you upgrade to the next release of the framework: with
-  the new features of the upgrade, you will more often than not experience breaks
-  in backwards compatibility. Interfaces or base classes will have changed and your
-  existing code will need to be changed to match.
-
-  In Tapestry 5, the framework <adapts to your code>.  You have control over the
-  names of the methods, the parameters they take, and the value that is returned. This
-  is driven by annotations, which tell Tapestry under what circumstances your
-  methods are to be invoked.
-
-  For example, you may have a login form and have a method that gets invoked
-  when the form is submitted:
-
-+----+
-public class Login
-{
-  @Persist
-  @Property
-  private String userId;
-
-  @Property
-  private String password;
-
-  @Component
-  private Form form;
-
-  @Inject
-  private LoginAuthenticator authenticator;
-
-  void onValidateFromForm()
-  {
-    if (! authenticator.isValidLogin(userId, password))
-    {
-      form.recordError("Invalid user name or password.");
-    }
-  }
-
-  Object onSuccessFromForm()
-  {
-    return PostLogin.class;
-  }
-
-}
-+----+
-
-  This short snippet demonstrates a bit about how Tapestry operates.  Services
-  within the application are injected with the @Inject annotation. The method names, onValidateFromForm()
-  and onSuccessFromForm(),
-  inform Tapestry about when the method is to be invoked.  The two events <validate> and <success> occur
-  when a form is submitted; "validate" is triggered to perform cross-field validations, and "success" is
-  only triggered when there are no validation errors. The onSuccess() method's
-  return value directs Tapestry on what to do next: jump to another page within the application
-  (here identified as the class for the page, but many other options exist).  When there are exceptions,
-  the page will be redisplayed to the user.
-
-  This also represents a distinct change from Tapestry 4. In earlier versions of Tapestry,
-  the Form component's listener parameter would be bound to the method to invoke, by name.  Further,
-  the listener method had to be public.
-  This new approach not only supports multiple listeners, but provides an improved separation of
-  view concerns (inside the page's template) and logic concerns, inside the Java class.
-
-  In many cases, additional information about the event is available, and can be passed
-  into the method by adding parameters to the method. Again, Tapestry will adapt
-  to your parameters.
-
-  Tapestry also saves you effort:  the @Property annotation marks a field as readable and writable;
-  Tapestry will provide the accessor methods automatically. This kind of meta-programming is common in Tapestry,
-  and easy to implement yourself.
-
-  Finally, Tapestry 5 explicitly separates actions (requests that change things) and rendering (requests that
-  render pages into markup) into two separate requests.  Performing an action, such as clicking a link or submitting a form,
-  results in a <client side redirect> to the new page. This is often called "redirect after post". This helps ensure
-  that URLs in the browser are book-markable ... but also requires that a bit more information be stored in the session
-  between requests (using the @Persist annotation).
-    
-About Snapshots and Releases
-
-  Tapestry is built using {{{http://maven.apache.org/}Maven}}, which makes it really easy to download the source and build it yourself, either the whole
-  project, or just one single module.
-  
-  Better yet, you can pull down Tapestry modules from the central Maven repository.
-  
-  The use of Maven has let us move with great speed, providing preview releases and <snapshots>.
-  
-  Snapshots are <intermediate versions> of releases. As I'm writing this, the most recent preview release is 5.2.0 and the current snapshots are
-  for 5.2.0-SNAPSHOT.  Maven keys off the -SNAPSHOT suffix and handles the dependency specially. It knows that snapshot releases can change frequently,
-  so it will keep checking (at least once a day, maybe more often) to see if there's an updated version of the snapshot.
-  
-  A nightly build process on Tapestry's continuous integration server creates new snapshots <every night>.
-  
-  Snapshots don't go in the central Maven repository (that's reserved for full releases). Instead, they go into the Apache snapshots repository
-  at {{{http://http://repository.apache.org/snapshots}http://repository.apache.org/snapshots}}.
-  
-  To access this repository, you may add <<<-DremoteRepositories=http://repository.apache.org/snapshots>>> to the command line when
-  running Maven.
-  
-  Your best bet is to use the {{{quickstart/}quickstart Maven archetype}} to create your initial Tapestry project; it generates a full project
-  directory, including a POM that links to the Tapestry snapshots repository.
-  
-  <<Documentation on this site usually refers to the latest snapshot ... that is, it is usually ahead of the last official release. In some cases,
-  it is written as if the snapshot release is stable; if documentation refers to version 5.2.x and that doesn't work, try 5.2..x-SNAPSHOT.>>
-    
-Principle 1 -- Static Structure, Dynamic Behavior
-
-  Tapestry is designed to be extremely scalable in several dimensions:
-  
-  * Tapestry applications may contain large numbers of pages and many custom components.
-  
-  * Tapestry applications may contain very complex functionality.
-  
-  * Tapestry applications may be created by large, diverse teams.
-  
-  * Tapestry applications can service large numbers of concurrent users.
-  
- One core architecture decision in Tapestry exists to service many of the above goals
- (and others that are harder to describe).  <<Static Structure, Dynamic Behavior>>
-
- In Tapestry, the structure of any particular page is <static>. This is necessary for
- several reasons, most importantly because Tapestry pages are <pooled>.  Creating a Tapestry page
- is an involved process, because the page object is simply the root of a large tree of other
- objects including user provided components, many kinds of structural objects, template objects,
- and others. Creating a new page instance for each request is simply not <scalable>.
- 
- Instead, Tapestry <pools> pages.  Once created, a page instance will be stored in a pool for
- that particular type of page, and reused
- in later requests. An incoming request, the result of a user clicking a link or submitting a form,
- will be processed by <some> server within a cluster, and will use <some> page instance within the
- page pool. Because page instances are static and uniform across instances and servers, 
- Tapestry can use any available page instance, or create a new one as needed.
- 
- Tapestry does not need to store page instances inside the HttpSession. At most, it stores a smattering
- of <persistent field values> from the page, but not the entire page instance. This lean
- use of the HttpSession is key to Tapestry's very high scalability, especially in a clustered
- configuration.
- 
- Tapestry also includes built-in mechanisms to store a limited amount of state, such as a persistent
- object id, directly into the URL used to access a page.
- 
- In some Tapestry-like frameworks, such as JavaServer Faces and Wicket, the page structure is more dynamic, at 
- the cost of storing much, much more data in the HttpSession.
- 
- This static structure is not so limiting as you might think. With different kinds of conditional
- and looping components, and the ability to "jump out of the flow" and render components in an arbitrary order, 
- you will not find Tapestry to be rigid ... anything but!
-  
-Public vs. Internal
-
-  An issue plaguing previous versions of Tapestry 4 (and earlier) was the lack of a clear delineator
-  between private, internal APIs and public, external APIs.  The fact that your code would extend
-  from base objects but that many of the methods on those base objects were "off limits"
-  further confused the issue. This has been identified as a key factor in the
-  "steep learning curve of Tapestry" meme.
-  
-  With the clean slate of Tapestry 5, we are being much more ruthless about internal vs. external.
-  
-  First of all, anything inside the org.apache.tapestry5.internal package
-  is <<internal>>.  It is part of the implementation of Tapestry.  It is the man behind the curtain.
-  You should not ever need to directly use this code.  It is a <<bad idea>> to do so, because
-  internal code may <<change from one release to the next>> without concern for backwards
-  compatibility.
-  
-Backwards Compatibility
-
-  Tapestry has been plagued by backwards compatibility problems with every major release. Tapestry 5
-  does not even attempt to be backwards compatible to Tapestry 4. Instead, it lays the ground work for
-  true backwards compatibility going forwards.
-  
-  Tapestry 5's API is based almost entirely on naming conventions and <annotations>.  You components are just
-  ordinary Java classes; you will annotate fields to allow Tapestry to maintain their state or to allow Tapestry 
-  to inject resources, and you will name (or annotate) methods to tell Tapestry under what circumstances
-  a method should be invoked.
-  
-  Tapestry will adapt to your classes. It will call your methods, passing in values via method parameters. 
-  Instead of the rigidness of a fixed interface to implement, Tapestry will simply adapt to your classes, using
-  the hints provided by annotations and simple naming conventions.
-  
-  Because of this, Tapestry will be able to change internally to a great degree without it affecting any
-  of the application code <you> write. This should finally crack the backwards compatibility nut, allowing you to have
-  great assurance that you can upgrade to future releases of Tapestry without breaking your existing applications.
-
-  This is already evident in Tapestry 5.1, where many new features and improvements have occurred, but is still
-  100% backwards compatible to Tapestry 5.0, as long as you've avoided the temptation to make use of
-  internal APIs.
-  
-  Tapestry 5.2 is continuing in this vein with improved performance and new features without sacrificing
-  backwards compatibility at all.
diff --git a/maint-5-2/src/site/apt/jboss.apt b/maint-5-2/src/site/apt/jboss.apt
deleted file mode 100644
index 654e7e4..0000000
--- a/maint-5-2/src/site/apt/jboss.apt
+++ /dev/null
@@ -1,8 +0,0 @@
- ----
- Deployment Notes: JBoss
- ----
- 
-Deployment Notes: JBoss
-
-  JBoss's default servlet container is {{{tomcat.html}Tomcat}}, so deployment notes for Tomcat apply to JBoss as well.
-         
\ No newline at end of file
diff --git a/maint-5-2/src/site/apt/jetty.apt b/maint-5-2/src/site/apt/jetty.apt
deleted file mode 100644
index 0b93c92..0000000
--- a/maint-5-2/src/site/apt/jetty.apt
+++ /dev/null
@@ -1,33 +0,0 @@
- ----
- Deployment Notes: Jetty
- ----
- 
-Deployment Notes: Jetty
-
-  {{{http://jetty.mortbay.com}Jetty}} is the easiest servlet container to deploy Tapestry into, it just plain works.
-  
-  The easiest way to develop Tapestry applications is to run Jetty <embedded> inside your IDE. If you use Eclipse,
-  then {{{http://jettylauncher.sourceforge.net/}the Jetty Launcher plugin}} is invaluable.  The
-  {{{tutorial1/}Tapestry 5 Tutorial}}  discusses installing and using Jetty Launcher.
-
-  Jetty Launcher  only works  with Jetty <<4 or 5>> and <<not>> Jetty 6.
-
-  A newer and better maintained and supported Eclipse plugin,
-  {{{http://code.google.com/p/run-jetty-run/}Run Jetty Run}} is now available. It allows Jetty to be used without
-  a separate Jetty install.
-
-* Logging
-
-  Tapestry, in its default configuration, expects Log4J version 1.2.12 or better
-  (it makes use of the 
-  {{{http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html#isTraceEnabled()}isTraceEnabled()}} and
-  {{{http://logging.apache.org/log4j/1.2/apidocs/org/apache/log4j/Logger.html#trace(java.lang.Object)}trace()}} methods,
-  introduced in version 1.2.12.
-  
-  You may have to replace the version of Log4J in your Jetty's ext directory with a newer version.
-
-  If you enable debugging output for your page and are using an older version of Log4J, you will see output
-  in the console an incredible amount of trace output concerning every aspect of rendering the page; this is because
-  with Log4J 1.2.11 and earlier, the trace output level is merged into the debug output level.
-
-  
diff --git a/maint-5-2/src/site/apt/screencast.apt b/maint-5-2/src/site/apt/screencast.apt
deleted file mode 100644
index d86907c..0000000
--- a/maint-5-2/src/site/apt/screencast.apt
+++ /dev/null
@@ -1,47 +0,0 @@
- ----
- Tapestry Screencasts
- ----
- 
-  Screencasts are a great way to learn about a new tool or framework without having to download
-  a single thing to your computer.
- 
-  Howard Lewis Ship has started creating a series of screencasts about Tapestry 5.
-  
-  <<These screencasts reflect the rapid evolution of the framework. Many things have changed and simplfied over the last few weeks and months. Watch these
-  in the manner intended ... as a preview of the flavor of Tapestry 5, not a reference for how to do things.>> 
-  
-Screencast #1
-
-  Howard demonstrates how to set up a new Tapestry 5 project inside Eclipse (using the 
-  Maven plugin). He also demonstrates 
-  {{{guide/reload.html}live class reloading}}.
-  
-  {{{http://howardlewisship.com/screencasts/tap5-classreload-oct2006/tap5-classreload-oct2006.html}Tapestry 5 Technology Preview -- 17 Oct 2006}} 5:04
-  
-  
-Screencast #2
-
-  Howard demonstrates the Loop, If and ActionLink components, touches on the
-  exception page, as well as transient and persistent page data.
-  
-  {{{http://howardlewisship.com/screencasts/actionlink-oct2006/actionlink-oct2006.html}Tapestry 5 Technology Preview #2 -- 20 Oct 2006}} 9:08
-  
-Screencast #3
-
-  Howard shows how to use Maven and the {{{tapestry-simple/index.html}tapestry-simple}} archetype to create a new Tapestry 5 project.
-  
-  {{{screencast_3.html}Tapestry 5 Screencast #3 -- 29 Jan 2007}} 4:52
-  
-Screencast #4
-
-  Howard demonstrates the BeanEditForm component to build a simple UI for collecting some registration data from the user.
-  
-  {{{screencast_4.html}Tapestry 5 Screencast #4 -- 15 Feb 2007}} 12:22  
-  
-Screencast #5
-
-  Howard shows off the powerful Grid component, used to view and navigate large data sets.
-  
-  {{{screencast_5.html}Tapestry 5 Screencast #5 -- 28 Feb 2007}} 10:46
-  
-  
diff --git a/maint-5-2/src/site/apt/struts.apt b/maint-5-2/src/site/apt/struts.apt
deleted file mode 100644
index 23628a0..0000000
--- a/maint-5-2/src/site/apt/struts.apt
+++ /dev/null
@@ -1,190 +0,0 @@
- ----
- Tapestry for Struts Programmers
- ----
- 
-Introduction
-	
-  There's no getting around it ... Struts is the 800lb gorilla of Java web application frameworks.
-  It was on the scene early, it got wide coverage and wide adoptions, and vast numbers of
-  applications have been written in it.
-  
-  Struts is an <action based> framework, and exists as a kind of thin wrapper on top of the
-  base Servlet API.  This is good as far as it goes, but Tapestry has always existed
-  as an example of why that view of the world is limited.
-    
-  Tapestry, especially Tapestry 5, represents a somewhat radical approach compared to
-  Struts. You will find it to be quite compelling ... but it also requires adjusting your
-  mindset to a completely different way of looking at building web applications.
-  
-Struts: Actions and Views
-
-  Tapestry and Struts approach the division of concerns represented by the Model-View-Controller
-  design pattern from very different angles.
-  
-  Struts maps incoming URLs to <actions>; these actions are objects that extends from the 
-  Action base class.
-  
-  What does an action do?  It reads query parameters in the request either directly,
-  or via an associated ActionForm object. It probably talks to your backend to read information
-  from a database, or write information out to it. It probably stores some information
-  in the request, information that will be needed by the <view> when it renders.
-  Finally, it returns the name of the view.
-  
-  The framework picks it up from there; it uses that view name to select
-  a template, usually a JavaServer page, 
-  and gets the template to render a response to the user.
-  
-  How does Struts find all this?  Lots of XML configuration; endless details for each
-  and every "page" to define the controller class, the map view names to JSPs, to link
-  views and actions to ActionForm classes.
-
-The Problem of Statelessness
-
-  Where does Struts (and similar frameworks) get things wrong?  The first issue is with
-  the management of <state>.
-  
-  Remember "<Beginning Object Oriented Programming 101>"?  Objects are generally defined
-  as a software construct that encapsulates behavior <and state>.
-  
-  Struts actions do not have internal state.  They can't -- they're singletons, one instance
-  shared by however many threads are operating within the servlet container.  Any internal state,
-  which is to say, any <instance variables>, would be immediately overwritten by some
-  other thread servicing a request for some other user.
-  
-  Struts approaches this problem by externalizing state: into the HttpServletRequest (for
-  state needed just by the view), or into
-  the HttpSession (for state that must persist from one request to the next). 
-  
-  Basically, what we have here is a crippled form of object oriented programming:
-  objects that have a single behavior, and have no internal state.
-  
-  As we'll see, Tapestry addresses both of these issues: in Tapestry, components
-  can have internal state, and they may have not just one, but many different behaviors.
-  
-Views: An Artifical Barrier
-
-  Action frameworks create a separation between the behavior logic, the code inside 
-  a Struts Action, and the view logic, which it typically a JavaServer Page.
-  
-  The <artificial barrier> is the lack of linkage between the template and the controller
-  (the Struts Action).  The only line of communication is the data in the HttpServletRequest
-  and HttpSession.
-  
-  There's a purpose to this design: it's all about the choice for the view. Because the
-  action may select one of several views, it's necessary to loosely couple the action
-  and the view.  The HttpServletRequest, and the named attributes stored in the request,
-  is the form of this loose coupling.
-  
-  This puts an onus on the action to stuff into the HttpServletRequest any and all data
-  that might be needed by the view as it renders a response. After all, there's no other
-  alternative, is there?
-  
-  Additionally, there's the issue of getting the action and the view, or views, to agree
-  on the name and type of every bit of state stored inside the HttpServletRequest or
-  HttpSession. Small changes to the controller, such as storing a different piece of data,
-  or using a different name, can have a ripple effect inside the view.
-  
-  This makes sense, doesn't it? After all, the result of an action (such as clicking a link
-  or submitting a form) may be some kind of success, or some kind of error. Or perhaps
-  you decide on the flavor of output based on the kind of client: HTML for the desktop or WML
-  for a phone.
-  
-  Perhaps in theory, but certainly not <in practice>. Errors are rarely presented as a whole
-  new view; they are usually presented as additional content within the same view. As to the
-  myth of a single application that vends out different markups for different clients ... 
-  that is just a myth. It's not just about output, but about every aspect of application development.
-  It's more than just what content shows up where ... it's about the very functionality offered
-  and the use cases supported, which are very different from one device to another. Pull back the covers
-  on any single application that supports such diverse clients and you'll find multiple applications, one
-  per device type, squeezed together as a not-so-coherent package.
-  
-Components: Its Not Just About Output
-
-  What happens when you have common <fixtures> to your application?  By fixtures,
-  we mean, bits of the view that are used in many places throughout the application.
-  This includes large chunks of functionality, such as a menu system used on every page,
-  down to tiny bits of functionality, like some kind of "widget" to format a date for output.
-  
-  JSPs provide two approaches for this kind of behavior: you can use JSP includes, to reuse
-  JSPs snippets across many larger JSPs.  Alternately, you can define and use JSP tags, which provide
-  a way to generate output using code, and provides mechanism for passing information from the 
-  HttpServletRequest into the JSP tag implementation.
-  Alas, in the real world, the vast majority of actions do have just a <single> view, named
-  "success" by convention. After all, even when an error occurs, you don't want to lose
-  all context ... if a user enters incorrect information into a form, then you want
-  to redisplay the form with the error messages. The view has to <adapt> to the state
-  determined by the request.
-  
-  But what happens when the "fixture" has its own behavior? It's own state?
-  
-  For example, maybe a fixture is a login form
-  that's displayed on every page until the user logs in.  The form may have a URL that
-  points to a login Action ... but how do you return to the same view after logging in?
-  A similar case may be a component that displays tabular data and supports paging. Such
-  a component will have links for navigation and sorting. How do the actions for those links
-  return the user to the same view after changing the set of displayed items?  
-  What if there's more than one such component in a single view?
-  
-  You end up writing more and more configuration and boilerplate code. 
-  You must define more and more JSP attributes
-  or other tricks in order to tell the appropriate action how to get the correct view after
-  performing the actions.
-  
-  You've run into the limitation of not having true web components on your side.
-  
-  With Tapestry, individual components can have their own interactions, blended seamlessly into the page, even
-  when the same component is used across multiple pages. Tapestry is able to keep everything organized
-  because it has its own view of the application, the component object model.
-  
-Tapestry: The Full Cycle Solution
-
-  What Tapestry offers is <structure>.  A well defined, fixed structure of pages and components within
-  pages. This structure is used in every aspect of Tapestry, including state management, output rendering,
-  and request dispatching.
-  
-  You don't have to worry about URLs. Incoming requests for Tapestry encode the
-  name of the page and the id of the component within the page, along with other information,
-  into the URL for you. Your code never has to pick apart a URL, you create
-  {{{guide/event.html}event handler methods}} to know when the user has clicked a link
-  or submitted a form, or done something more interesting using Ajax.  Tapestry has the structure it needs
-  to build all necessary information into the URL, and unpack that information in a later request.
-  
-  Tapestry is truly object oriented: you don't have to be concerned with singletons and multithreading; your 
-  pages and components have instance variables like any other plain Java object. Tapestry lets your write
-  your application using true object oriented techniques.
-
-  In terms of state management: Tapestry takes care of 
-  {{{guide/persist.html}persisting field values into the session}}. You don't have to figure out mnemonic,
-  unique names for session attributes, or write code to pull data out of the session or push it back in.
-  Tapestry is able to do this for you.
-
-  Further, in Tapestry pages and components are identical. They are <consistent>. Pages have templates, so
-  do components. Pages have transient and persistent fields. So do components. Pages have event handler methods,
-  so do components.  
-  
-  Tapestry doesn't have the idea of multiple views for a single page. However, processing within one page can easily "hand off" to
-  another <page>, in Java code, to provide the response to an action by the user.
-  
-Making the Transition
-
-  Don't expect there to be a magic tool to convert an existing application to Tapestry 5. The worlds
-  between Struts and other action oriented frameworks, and Tapestry, are just too far.  
-  
-  With Tapestry, you can start to think of your application in the same terms as your users ... as a collection
-  of pages that are connected together.  
-  
-  You don't create URLs and map them to singleton classes; you put a <component> in your page, and
-  add an {{{guide/event.html}event handling method}} to your class to be invoked when that component is triggered. Many components?
-  No problem, just add more event handler methods.
-  
-Leave Behind the Pain
-
-  Tired of constantly rebuilding and redeploying your application every time you make a change? Tapestry features
-  {{{guide/reload.html}live class reloading}}. Every time you make a change to your code or your templates, Tapestry picks up the
-  changes immediately ... no waiting!  Just think about how fast and easy building an application is without the expected
-  constraints; scripting language speed with all the power of Java.
-  
-  
-  
-  
-  
diff --git a/maint-5-2/src/site/apt/tomcat.apt b/maint-5-2/src/site/apt/tomcat.apt
deleted file mode 100644
index 5199ce4..0000000
--- a/maint-5-2/src/site/apt/tomcat.apt
+++ /dev/null
@@ -1,18 +0,0 @@
- ----
- Deployment Notes: Tomcat
- ----
- 
-Deployment Notes: Tomcat
-
-  Deploying Tapestry applications into {{{http://tomcat.apache.org/}Tomcat}} is (no longer) any different than deployment using
-  {{{jetty. html}Jetty}} (previously, Tomcat deployment required more effort).
-
-  Tapestry 5 has been tested with Tomcat 5.5.20.
-  
-* index.html
-
-  If your application has an index.html file, Tomcat appears to use that file, rather than triggering the Tapestry filter to render the application Start page
-  for a base URL (just the context path).
-  
-  By contrast, {{{jetty.html}Jetty}} favors the filter over the index.html file. 
-  
\ No newline at end of file
diff --git a/maint-5-2/src/site/apt/upgrade.apt b/maint-5-2/src/site/apt/upgrade.apt
deleted file mode 100644
index fdc23a5..0000000
--- a/maint-5-2/src/site/apt/upgrade.apt
+++ /dev/null
@@ -1,168 +0,0 @@
- ----
- Upgrade Notes
- ----
-
-Upgrade Notes
-
-  This is a quick guide to changes <since> Tapestry 5.1.0.5.  This is meant to provide information
-  on any additions or changes that developers will face after upgrading to Tapestry 5.2.
-  
-  It is always advised to perform a full and complete build after upgrading.
-
-  You should also check the {{{release-notes.html}project-wide release notes}} for information
-  about bugs fixes and other improvements.
-
-Release 5.2.0
-
-* Service Id Injection
-
-  In prior releases of Tapestry, a constructor parameter of type String was assumed to be the service id.
-  In the many cases where these was not the case (such as using the @Value or @Symbol annotation), the parameter
-  needed to be annotated with the @Inject annotation.
-  
-  Starting in 5.2, this feature is no longer present (this is a <non-backwards compatible change>, but one that
-  affects virtually nobody).  A parameter of type String will be subject to normal
-  injection; you will likely want to use @Value or @Symbol with it, or you will see an error that "No service
-  implements java.lang.String.".
-
-* TranslatorSource
-
-  The configuration type for TranslatorSource has changed in an <<incompatible>> way: from
-  an unordered collection to a mapped collection; this is to support overrides. This will break
-  existing module classes that contribute to the TranslatorSource service configuration.
-
-* Assets
-
-  There have been some changes to how assets operate in Tapestry 5.2.
-  
-  Virtual folders, used to define root packages for component libraries, may no longer
-  contain slashes. Virtual folders are the pathPrefix property of the LibraryMapping objects
-  that are contributed to the ComponentClassResolver service.
-  
-  Each LibraryMapping  is now automatically converted into a matching contribution to   
-  the ClasspathAssetAliasManager service. Previously a library author was encouraged
-  to make contributions to both services. The path prefix of a LibraryMapping is also
-  now prohibited from containing the slash character.
-
-  It is now quite necessary to configure the application version number: all assets are exposed via
-  a URL that incorporates the application version number; in previous releases, each library could
-  configure its own version number. By implication, changing library versions and nothing else will now
-  require a change to the application version number.
-
-* ClassTransformation API changes
-
-  The
-  {{{apidocs/org/apache/tapestry5/services/ClassTransformation.html}ClassTransformation}} 
-  API, used to implement component meta-programming,
-  has been rewritten with an eye to making class transformations easier to implement while
-  removing the dependency on the Javassist library. This is of note only to <advanced> users who have implemented
-  {{{apidocs/org/apache/tapestry5/services/ComponentClassTransformWorker.html}ComponentClassTransformWorker}}s, which operate on
-  the ClassTransformation API. 
-    
-  Much of the existing API has been deprecated and <some> deprecated
-  methods are now non-functional. The deprecated methods will be removed in Tapestry 5.3.
-  
-  This represents a shift in how the API operates; previously much of the logic in ComponentClassTransformWorkers
-  was built in terms of Javassist: adding new bytecode to existing methods. The new API switches away from this, and
-  now works in terms of adding new fields, initializing those fields using callbacks, providing callbacks for access
-  to fields, and adding advice to methods.
-
-* Template Parser back to SAX
-
-  Tapestry no longer uses a StAX parser to parse component templates, it has reverted to using a normal SAX parser. This change
-  reduces the number of dependencies for Tapestry, and is a stepping stone towards compatibility with
-  Google App Engine.
-
-Release 5.1.0.4
-
-  Tapestry's alpha URL rewriting support (available from 5.1.0.1) has undergone some API changes:
-
-    * The core url rewriting service to which rules are contributed has changed from URLRewriterService to 
-      URLRewriter, with a corresponding change to the service id.  Modules contributing to this service will need to
-      update the corresponding contribution method names.
-
-    * The signature of the "process" method of the URLRewriterRule interface now requires an additional parameter
-      of type org.apache.tapestry5.urlrewriter.URLRewriteContext.
-
-    * URLRewriteRule implementations must now also implement the "applicability" method which determines whether
-      rules should be applied to incoming requests, outgoing urls (links), or both.
-
-    []
-
-* {{{https://issues.apache.org/jira/browse/TAP5-622}TAP5-622}}
-
-    The client-side ids for labels and error icons have slightly different names; the ':' seperator (i.e. "textfield:label")
-    has been changed to a '-' (i.e., "textfield-label"). This should only affect users who have significantly
-    overridden client-side validation.
-
-    The same approach has been taken with the many client-side elements used by the Palette and DateField components.
-
-Release 5.1.0.1
-
-  Tapestry's client-side JavaScript relating to input field validation has changed somewhat
-  to account for
-  {{{https://issues.apache.org/jira/browse/TAP5-211}TAP5-211}}. This will only affect users
-  who have created their own client-side validations.
-
-  The handling of the
-  {{{apidocs/org/apache/tapestry5/annotations/Secure.html}Secure}} annotation is now only enabled
-  in production mode (by default).
-
-Release 5.1.0.0
-
-* Primary Key Encoder
-
-  <<This is the change between releases that is most likely to affect your upgrade.>>
-
-  The {{{apidocs/org/apache/tapestry5/PrimaryKeyEncoder.html}PrimaryKeyEncoder}}
-  interface has been deprecated and will be removed in a later release.
-  See   {{{https://issues.apache.org/jira/browse/TAP5-165}TAP5-165}} for the rationale.
-
-  You may see type coercion errors on pages where you have specified the encoder parameter of
-  the Grid, Loop or AjaxFormLoop components as a PrimaryKeyEncoder.
-  These errors indicate that Tapestry was unable to automatically convert your PrimaryKeyEncoder instance into
-  a {{{apidocs/org/apache/tapestry5/ValueEncoder.html}ValueEncoder}}. Generally, the only change is to invoke the new constructor for
-  {{{apdiocs/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.html}DefaultPrimaryKeyEncoder}}, to identify
-  the type of key used.
-
-  If you don't use DefaultPrimaryKeyEncoder, you will see compile errors about the new method, getKeyType().
-  You will have to change your code to implement that new method.
-  
-* Performance Improvements
-
-  As part of the changes related to
-  {{{https://issues.apache.org/jira/browse/TAP5-417}TAP5-417: Tapestry 5.0 Performance Improvements}},
-  you should be aware that Tapestry will now optimize the render phase state machine.
-  This is only relevant to advanced users who have written a ComponentClassTransformWorker
-  that adds logic to a render phase: it is necessary to
-  {{{apidocs/org/apache/tapestry5/model/MutableComponentModel.html#addRenderPhase(Class)}inform
-  Tapestry that the render phase should be invoked}}.
-
-* Tapestry/Spring
-
-  There have been some significant changes to the {{{tapestry-spring/}tapestry-spring}} module, to
-  support injection of Tapestry services into Spring beans. You may find you need to add some new configuration
-  to revert to the Tapestry 5.0 behavior.
-
-* Session Persisted Objects
-                      
-  Tapestry is now more aggressive about automatically re-storing any session persisted object
-  back into the session at the end of the request (this used to only apply to application state objects).  See the 
-  {{{guide/persist.html}persistent page data}} notes for more details.
-
-* Module Classes
-
-  Many questionable practices in Tapestry module classes that used to produce warnings
-  have been changed to fail early (that is, throw exceptions). The rationale is that the warnings
-  are almost always ignored,
-  resulting in more difficult to diagnose runtime errors. 
-
-  Extra public methods on module classes (methods that do not define services, contribute to services,
-  or decorate or advise services) are now errors.
-
-
-
-
-
-
-
diff --git a/maint-5-2/src/site/apt/upgrade4.apt b/maint-5-2/src/site/apt/upgrade4.apt
deleted file mode 100644
index d2a0b76..0000000
--- a/maint-5-2/src/site/apt/upgrade4.apt
+++ /dev/null
@@ -1,18 +0,0 @@
-  ----
-  Upgrading from Tapestry 4 to Tapestry 5
-  ----
-  
-Upgrading from Tapestry 4 to Tapestry 5
-  
- There is no simple, direct upgrade path from Tapestry 4 to Tapestry 5.
-
- Tapestry 5 represents a completely new code base. Although it maintains the <spirit> of
- Tapestry 4, it is also a quantum leap ahead of Tapestry 4.
-
- A lot of the familiar aspects of Tapestry are completely different between the two releases.
- In other cases, core concepts remain, but the details, names, and implementations
- have changed.
-
- As part of {{{https://issues.apache.org/jira/browse/TAPESTRY-2421}TAPESTRY-2421}}, we've done
- some judicous renaming so that Tapestry 4 and Tapestry 5 applications can run inside the same WAR.
- 
\ No newline at end of file
diff --git a/maint-5-2/src/site/apt/upgrade5.0.apt b/maint-5-2/src/site/apt/upgrade5.0.apt
deleted file mode 100644
index d4c1b93..0000000
--- a/maint-5-2/src/site/apt/upgrade5.0.apt
+++ /dev/null
@@ -1,233 +0,0 @@
- ----
- Upgrade Notes
- ----
-
-Upgrade Notes
-
-  This is a quick guide to changes between snapshot releases of Tapestry 5.0.  This is meant to provide information
-  on any additions or changes that developers will face after upgrading to the latest version of Tapestry.
-
-  It is always advised to perform a full and complete build after upgrading.
-
-  You should also check the {{{release-notes-5.0.html}project-wide release notes}} for information
-  about bugs fixes and other improvements.
-
-Release 5.0.19
-
-  As part of the changes related to
-  {{{https://issues.apache.org/jira/browse/TAP5-417}TAP5-417: Tapestry 5.0 Performance Improvements}},
-  you should be aware that Tapestry will now optimize the render phase state machine.
-  This is only relevant to advanced users who have written a ComponentClassTransformWorker
-  that adds logic to a render phase: it is necessary to
-  {{{apidocs/org/apache/tapestry5/model/MutableComponentModel.html#addRenderPhase(Class)}inform
-  Tapestry that the render phase should be invoked}}.
-
-Release 5.0.16
-
-  The client-side class Tapestry.Zone has been renamed to Tapestry.ZoneManager.
-
-Release 5.0.15
-
-  Method <<<getElementName()>>> of the
-  {{{apidocs/org/apache/tapestry5/RadioContainer.html}RadioContainer}} interface was renamed
-  to <<<getControlName()>>>, to bring it into alignment with the analagous method
-  of the
-   {{{apidocs/org/apache/tapestry5/Field.html}Field}} interface..  This should not affect any user code.
-
-* {{{https://issues.apache.org/jira/browse/TAPESTRY-2656}TAPESTRY-2656}}
-
-  A method of the interface {{{apidocs/org/apache/tapestry5/grid/GridSortModel.html}GridSortModel}} was renamed
-  to correct a misspelling.
-
-* {{{https://issues.apache.org/jira/browse/TAPESTRY-2567}TAPESTRY-2567}}
-
-  The methods findFields() and findFieldsWithAnnotation() of
-  {{{apidocs/org/apache/tapestry5/services/ClassTransformation.html}ClassTransformation}}
-  have been changed to return all fields (regardless of whether they have been claimed).  The
-  method findAllFieldsWithAnnotation() has been removed.
-
-* tapestry.js
-
-  Some significant overhauling of Tapestry's client-side validation support has
-  occurred. If you have created your own validations, or have overriden
-  how Tapestry decorates fields and presents error messages, you will need
-  to make some changes to your code.
-
-* {{{https://issues.apache.org/jira/browse/TAPESTRY-2352}TAPESTRY-2352}}
-
-  Several API changes related to
-  {{{apidocs/org/apache/tapestry5/Translator.html}Translator}} have occured, to support
-  client-side validation of user input.
-
-Release 5.0.14
-
-  The signature of the
-  {{{apidocs/org/apache/tapestry5/services/BeanModelSource.html}BeanModelSource}}.create()
-  method has changed; the last parameter is now Messages, not ComponentResources.
-
-  The Grid, PropertyDisplay, PropertyEditor and BeanEditor components have had their override
-  parameter changed from ComponentResources to
-  the new {{{apidocs/org/apache/tapestry5/PropertyOverrides.html}PropertyOverrides}} interface.
-  No changes should be necessary, as Tapestry can coerce ComponentResources to PropertyOverrides.
-
-  Attempting to instantiate a component class will now result in a runtime exception (this is a common
-  beginner's mistake; pages and components should be injected, not instantiated).
-
-  Properties files in message catalogs are now automatically read using the UTF-8 charset.  Unlike traditional
-  Java ResourceBundles, it is <not> necessary to use Java's <<<native2ascii>>> tool.
-
-* {{{https://issues.apache.org/jira/browse/TAPESTRY-2543}TAPESTRY-2543}}
-
-  TAPESTRY-2543 simplifies Tapestry's approach to localization, as it pertains to
-  output and request character encodings. Previously, each page could be configured with a different character
-  encoding, which causes a number of problems related to Ajax and file upload requests.  A single
-  application-wide character encoding is now used, by default UTF-8.
-
-Release 5.0.13
-
-  As part of {{{https://issues.apache.org/jira/browse/TAPESTRY-2311}TAPESTRY-2311}}, there have been
-  subtle changes to how event handler and render phase methods are invoked, when the methods are
-  overrides of base class methods.
-
-Release 5.0.12
-
-* ClassFabUtils
-
-  Several methods of {{{apidocs/org/apache/tapestry5/ioc/services/ClassFabUtils.html}ClassFabUtils}}
-  have been removed.  The new method {{{castReference()}}} is an improved replacement for the removed
-  methods. These methods were largely used when decorating services, and the new
-  {{{apidocs/org/apache/tapestry5/ioc/services/AspectDecorator.html}AspectDecorator}} is even easier.
-
-* JavaScript Changes
-
-  Tapestry now organizes JavaScript a bit differently; all JavaScript is at the bottom of the page, just
-  before the \</body\> tag.  This applies to both externally loaded scripts, and to per-page dynamically
-  generated JavaScript.
-
-  This can cause some pages to break, those that included inline \<script\> blocks in their templates.
-  You should inject the
-  {{{apidocs/org/apache/tapestry5/RenderSupport.html}RenderSupport}} environmental and use it
-  to include JavaScript properly.
-
-* ReorderProperties annotation
-
-  A new annotation,
-  {{{apidocs/org/apache/tapestry5/beaneditor/ReorderProperties.html}ReorderProperties}}
-  (which is placed on a type) has replaced the OrderAfter and OrderBefore annotations
-  (which were placed on accessor methods).
-
-* {{{https://issues.apache.org/jira/browse/TAPESTRY-2421}TAPESTRY-2421}}
-
-  The root package for all Tapestry code was changed from
-  org.apache.tapestry to org.apache.tapestry<<5>>.  This will make it reasonable to deploy Tapestry 3 or Tapestry 4
-  applications side-by-side with a Tapestry 5 application.
-
-  In addition, a number of classes were refactored.
-
-  PageRenderSupport has been renamed to just
-  {{{apidocs/org/apache/tapestry5/RenderSupport.html}RenderSupport}}.
-
-  TapestryConstants has been removed, split into a number of new classes (by type), such as
-  {{{apidocs/org/apache/tapestry5/SymbolConstants.html}SymbolConstants}}.
-
-  Likewise, TapestryUtils has been split into
-  {{{apidocs/org/apache/tapestry5/MarkupUtils.html}MarkupUtils}} and
-  {{{apidocs/org/apache/tapestry5/VersionUtils.html}VersionUtils}}.
-
-  []
-
-* TapestryModule
-
-  Many of the internal services of Tapestry have been split off into their own module,
-  {{{apidocs/org/apache/tapestry5/internal/services/InternalModule.html}InternalModule}}.
-  This should not affect any user code.
-
-* Form component
-
-  The default {{{apidocs/org/apache/tapestry5/ValidationTracker.html}ValidationTracker}}
-  built into the Form component now has a persistence strategy of "flash". This means that
-  if you navigate away from a page with validation errors and return, you will lose the errors.
-  To support this style of navigation, you will need to bind the Form's tracker parameter
-  to a field that has the correct persistency (most likely, "session", the previous persistence
-  strategy).
-
-* Resource.openStream()
-
-  The methods <<<exists()>>> and <<<openStream()>>> were added to the
-  {{{apidocs/org/apache/tapestry5/ioc/Resource.html}Resource}} interface. The semantics
-  of some of the other methods were slightly alterred.
-
-* Loop element parameter
-
-  The Loop component's elementName parameter was renamed to simply element (to be consistent
-  with element parameters added to the Any and FormInjector components).
-
-Release 5.0.11
-
-* Field.getElementName()
-
-  The method <<<getElementName()>>> on interface {{{apidocs/org/apache/tapestry5/Field.html}Field}}
-  was renamed to <<<getControlName()>>>.  This brings the property in alignment with W3C documentation
-  and terminology, and helps differentiate from the element name (i.e., the tag name used to represent
-  the element in a component template).
-
-  This affects a number of existing components that implement the interface.
-
-  Method <<<allocateElementName()>>> on interface {{{apidocs/org/apache/tapestry5/services/FormSupport.html}FormSupport}}
-  was likewise renamed to <<<allocateControlName()>>>.
-
-* Zone
-
-  The show and hide parameters of the {{{ref/org/apache/tapestry5/corelib/components/Zone.html}Zone}}
-  component now have a default binding prefix of "literal".
-
-  In addition, the client-side Tapestry.ZoneEffect object was renamed to Tapestry.ElementEffect to reflect
-  that it can be used with elements that are not explicitly Zones.
-
-* Validator.invokeIfBlank()
-
-  The method <<<invokeIfBlank()>>> on interface {{{apidocs/org/apache/tapestry5/Validator.html}Validator}}
-  was renamed to <<<isRequired()>>>.
-
-* MetaDataLocator
-
-  The <<findMeta()>> method on interface {{{apidocs/org/apache/tapestry5/services/MetaDataLocator.html}MetaDataLocator}}
-  has changed significantly; it now expands symbols and performs type coercion.
-
-* Grid Interfaces
-
-  The {{{apidocs/org/apache/tapestry5/grid/GridModel.html}GridModel}} interface and
-  the <<<prepare()>>> method of
-  {{{apidocs/org/apache/tapestry5/grid/GridDataSource.html}GridDataSource}} have changed to accommodate
-  the ability to sort using multiple columns.
-
-* PropertyModel
-
-  The <<<getWidth()>>> method was removed from the
-  {{{apidocs/org/apache/tapestry5/beaneditor/PropertyModel.java}PropertyModel}} interface; the logic
-  for deducing the desired field size from the @Width annotation has been moved into AbstractTextField.
-
-* Grid, BeanEditForm, BeanEditor, BeanDisplay
-
-  The data type for boolean values has changed from "checkbox" (reflecting how it is rendered in an edit form) to "boolean"
-  (reflecting what it is). In addition, all numeric types are given the data type "number".
-  This will only affect your application if you provided an overriding contribution
-  to the {{{apidocs/org/apache/tapestry5/services/BeanBlockSource.html}BeanBlockSource}} service.
-
-* ExceptionInfo
-
-  The return type for <<<getStackTrace()>>> on
-  {{{apidocs/org/apache/tapestry5/services/ExceptionInfo.html}ExceptionInfo}}
-  changed from List\<String\> to List\<StackTraceElement\>.
-
-* ApplicationGlobals and RequestGlobals
-
-  The <store> methods on these two interfaces were renamed to be more explicit. These are not methods typically
-  invoked from user code.
-
-* BeanModel
-
-  The <<<remove()>>> method of {{{apidocs/org/apache/tapestry5/beaneditor/BeanModel.html}BeanModel}} was renamed
-  to <<<exclude()>>>, and a new method, <<<include()>>> was added. The <<remove>> parameter of BeanEditForm,
-  BeanEditor, BeanDisplay and Grid were all renamed to <<exclude>> as well (and a new <<include>> parameter was added
-  to each).
\ No newline at end of file
diff --git a/maint-5-2/src/site/apt/websphere.apt b/maint-5-2/src/site/apt/websphere.apt
deleted file mode 100644
index 4a429c3..0000000
--- a/maint-5-2/src/site/apt/websphere.apt
+++ /dev/null
@@ -1,24 +0,0 @@
- ----
- Deployment Notes: WebSphere
- ----
-
-Deployment Notes: WebSphere
-
-  WebSphere <<6.1>> can work with Tapestry ... if configured correctly.  WebSphere doesn't quite
-  conform to the Servlet API specification.
-
-  This can be addressed by installing fixpack 9:
-
-  * {{{http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK31377}http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK31377}}
-
-  * {{{http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK33090}http://www-1.ibm.com/support/docview.wss?rs=180&uid=swg1PK33090}}
-
-  []
-
-  In addition, you must configure the setting <<<com.ibm.ws.webcontainer.invokeFiltersCompatibility>>> to <<<true>>>.  With
-  all of that in place (plus some additional code inside Tapestry that patches around WebSphere's odd behavior), you
-  should be ready to deploy with WebSphere.
-
-* Logging
-
-  TODO: Discuss logging configuration for WebSphere.
\ No newline at end of file
diff --git a/maint-5-2/src/site/images/component-render-states.graffle b/maint-5-2/src/site/images/component-render-states.graffle
deleted file mode 100644
index 02083d0..0000000
--- a/maint-5-2/src/site/images/component-render-states.graffle
+++ /dev/null
@@ -1,2721 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActiveLayerIndex</key>
-	<integer>0</integer>
-	<key>AutoAdjust</key>
-	<true/>
-	<key>CanvasColor</key>
-	<dict>
-		<key>w</key>
-		<string>1</string>
-	</dict>
-	<key>CanvasOrigin</key>
-	<string>{0, 0}</string>
-	<key>CanvasScale</key>
-	<real>1</real>
-	<key>ColumnAlign</key>
-	<integer>1</integer>
-	<key>ColumnSpacing</key>
-	<real>36</real>
-	<key>CreationDate</key>
-	<string>2006-12-19 16:46:40 -0800</string>
-	<key>Creator</key>
-	<string>Howard Lewis Ship</string>
-	<key>DisplayScale</key>
-	<string>1 in = 1 in</string>
-	<key>GraphDocumentVersion</key>
-	<integer>5</integer>
-	<key>GraphicsList</key>
-	<array>
-		<dict>
-			<key>Bounds</key>
-			<string>{{514.496, 485.521}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>76</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>27</integer>
-				<key>Position</key>
-				<real>0.44419869780540466</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{280.166, 648.779}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>61</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>37</integer>
-				<key>Position</key>
-				<real>0.048526979982852936</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{521.666, 890.223}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>57</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>32</integer>
-				<key>Position</key>
-				<real>0.50833463668823242</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{416.262, 828.757}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>56</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>41</integer>
-				<key>Position</key>
-				<real>0.024163046851754189</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{486.944, 176.879}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>55</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-				<key>Position</key>
-				<real>0.038560941815376282</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{344.76, 760.704}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>74</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>73</integer>
-				<key>Position</key>
-				<real>0.037935700267553329</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{470.294, 803.739}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>53</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>31</integer>
-				<key>Position</key>
-				<real>0.34824743866920471</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{399.272, 695.173}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>52</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-				<key>Position</key>
-				<real>0.22049112617969513</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{374.611, 645.65}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>51</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>29</integer>
-				<key>Position</key>
-				<real>0.45005011558532715</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{406.172, 500.59}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>49</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>38</integer>
-				<key>Position</key>
-				<real>0.17215704917907715</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{355.24, 573.112}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>48</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>39</integer>
-				<key>Position</key>
-				<real>0.14579181373119354</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{243.006, 351.06}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>46</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>36</integer>
-				<key>Position</key>
-				<real>0.11131267249584198</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{366.154, 349.45}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>45</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>25</integer>
-				<key>Position</key>
-				<real>0.48894369602203369</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{354.693, 261.686}, {31, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>72</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>71</integer>
-				<key>Position</key>
-				<real>0.33751571178436279</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{493.307, 260.272}, {36, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>68</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>67</integer>
-				<key>Position</key>
-				<real>0.056039527058601379</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 false}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{414.858, 187.48}, {35, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>YES</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>70</integer>
-			<key>Line</key>
-			<dict>
-				<key>ID</key>
-				<integer>69</integer>
-				<key>Position</key>
-				<real>0.41089463233947754</real>
-				<key>RotationType</key>
-				<integer>0</integer>
-			</dict>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 true }</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>66</integer>
-			</dict>
-			<key>ID</key>
-			<integer>73</integer>
-			<key>Points</key>
-			<array>
-				<string>{394.959, 775.836}</string>
-				<string>{176, 695.173}</string>
-				<string>{198, 249}</string>
-				<string>{379.306, 241.526}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>12</integer>
-				<key>Info</key>
-				<integer>1</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>8</integer>
-			</dict>
-			<key>ID</key>
-			<integer>39</integer>
-			<key>Points</key>
-			<array>
-				<string>{379.084, 598.325}</string>
-				<string>{365.685, 539.16}</string>
-				<string>{407.965, 488.708}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>9</integer>
-				<key>Info</key>
-				<integer>2</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>9</integer>
-			</dict>
-			<key>ID</key>
-			<integer>38</integer>
-			<key>Points</key>
-			<array>
-				<string>{424.209, 488.825}</string>
-				<string>{423.997, 597.825}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>8</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-			<key>ID</key>
-			<integer>37</integer>
-			<key>Points</key>
-			<array>
-				<string>{298.208, 671.825}</string>
-				<string>{297.959, 568.325}</string>
-				<string>{297.959, 444.325}</string>
-				<string>{323.021, 340.811}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>11</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>11</integer>
-				<key>Info</key>
-				<integer>1</integer>
-			</dict>
-			<key>ID</key>
-			<integer>36</integer>
-			<key>Points</key>
-			<array>
-				<string>{294.969, 340.637}</string>
-				<string>{239.077, 385.325}</string>
-				<string>{239.077, 530.325}</string>
-				<string>{239.98, 672.325}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>12</integer>
-			</dict>
-			<key>ID</key>
-			<integer>67</integer>
-			<key>Points</key>
-			<array>
-				<string>{479.795, 253.125}</string>
-				<string>{604, 329}</string>
-				<string>{625.997, 582}</string>
-				<string>{485.209, 756.836}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>66</integer>
-				<key>Info</key>
-				<integer>3</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>13</integer>
-				<key>Info</key>
-				<integer>4</integer>
-			</dict>
-			<key>ID</key>
-			<integer>34</integer>
-			<key>Points</key>
-			<array>
-				<string>{483.224, 166.21}</string>
-				<string>{626.438, 299.939}</string>
-				<string>{648, 614}</string>
-				<string>{611.203, 841.292}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{488.217, 915.347}, {98, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>1</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>14</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf1 End}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{447.901, 840.502}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>13</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{-0.281146, -0.13158}</string>
-				<string>{0.25, -0.5}</string>
-				<string>{-0.00563669, 0.368422}</string>
-				<string>{0.433564, -0.5}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 CleanupRender}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{394.959, 756.836}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>12</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{-0.5, 0}</string>
-				<string>{0, 0.5}</string>
-				<string>{0, -0.5}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 AfterRender}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{207.959, 672.325}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>11</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{-0.322601, -0.5}</string>
-				<string>{-5.96046e-08, -0.5}</string>
-				<string>{-5.96046e-08, 0.5}</string>
-				<string>{0.292358, -0.5}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 AfterRenderTemplate}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{445.497, 529.727}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>10</integer>
-			<key>Shape</key>
-			<string>Parallelogram</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 Render Body}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{333.959, 598.325}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>9</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{-0.00127089, -0.281658}</string>
-				<string>{-0.25, -0.499999}</string>
-				<string>{-0.00127089, 0.481501}</string>
-				<string>{0.170474, -0.386921}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 AfterRenderBody}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{333.959, 450.325}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>8</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 BeforeRenderBody}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{333.959, 373.29}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>7</integer>
-			<key>Shape</key>
-			<string>Parallelogram</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.4</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 Render Template}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{235.205, 302.325}, {180.5, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>6</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{0.0241081, -0.224772}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 BeforeRenderTemplate}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{379.705, 220.345}, {105, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>66</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{0, 0}</string>
-				<string>{-0.5, 0}</string>
-				<string>{0.453242, 0.362622}</string>
-				<string>{0.25, 0.25}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 BeginRender}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{379.705, 137.939}, {105, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>4</integer>
-			<key>Magnets</key>
-			<array>
-				<string>{0.411739, 0.0526314}</string>
-				<string>{0.00221539, 0.368421}</string>
-				<string>{0, -0.5}</string>
-				<string>{-0.445207, 0.0526316}</string>
-			</array>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.8</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf0 SetupRender}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{382.2, 67.5615}, {98, 38}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>1</string>
-				</dict>
-				<key>Font</key>
-				<string>TrebuchetMS-Bold</string>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>3</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-					<key>MiddleFraction</key>
-					<real>0.0</real>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>CornerRadius</key>
-					<real>5</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 TrebuchetMS-Bold;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\b\fs24 \cf1 Start}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-			<key>ID</key>
-			<integer>41</integer>
-			<key>Points</key>
-			<array>
-				<string>{458.994, 843.755}</string>
-				<string>{153, 728}</string>
-				<string>{146, 242}</string>
-				<string>{379.562, 160.984}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>2</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>Pattern</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>13</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>14</integer>
-			</dict>
-			<key>ID</key>
-			<integer>32</integer>
-			<key>Points</key>
-			<array>
-				<string>{537.141, 879.002}</string>
-				<string>{537.19, 914.847}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>13</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>13</integer>
-			</dict>
-			<key>ID</key>
-			<integer>31</integer>
-			<key>Points</key>
-			<array>
-				<string>{485.209, 794.836}</string>
-				<string>{486.889, 840.502}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>12</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>12</integer>
-				<key>Info</key>
-				<integer>3</integer>
-			</dict>
-			<key>ID</key>
-			<integer>30</integer>
-			<key>Points</key>
-			<array>
-				<string>{388.868, 690.479}</string>
-				<string>{463, 726}</string>
-				<string>{485.209, 756.836}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>11</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>11</integer>
-			</dict>
-			<key>ID</key>
-			<integer>29</integer>
-			<key>Points</key>
-			<array>
-				<string>{422.135, 636.55}</string>
-				<string>{350.98, 672.325}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>9</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>9</integer>
-			</dict>
-			<key>ID</key>
-			<integer>28</integer>
-			<key>Points</key>
-			<array>
-				<string>{504.428, 567.989}</string>
-				<string>{461.524, 598.038}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>10</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>10</integer>
-			</dict>
-			<key>ID</key>
-			<integer>27</integer>
-			<key>Points</key>
-			<array>
-				<string>{499.152, 486.713}</string>
-				<string>{531.959, 494.325}</string>
-				<string>{534.389, 529.228}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>8</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>8</integer>
-			</dict>
-			<key>ID</key>
-			<integer>26</integer>
-			<key>Points</key>
-			<array>
-				<string>{424.209, 411.79}</string>
-				<string>{424.209, 449.825}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>7</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>7</integer>
-			</dict>
-			<key>ID</key>
-			<integer>25</integer>
-			<key>Points</key>
-			<array>
-				<string>{362.89, 340.647}</string>
-				<string>{401.267, 372.968}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>6</integer>
-			</dict>
-			<key>ID</key>
-			<integer>71</integer>
-			<key>Points</key>
-			<array>
-				<string>{393.365, 258.464}</string>
-				<string>{357.74, 276}</string>
-				<string>{338.051, 301.927}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>66</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>66</integer>
-			</dict>
-			<key>ID</key>
-			<integer>69</integer>
-			<key>Points</key>
-			<array>
-				<string>{432.419, 176.439}</string>
-				<string>{432.27, 220.345}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-			<key>ID</key>
-			<integer>22</integer>
-			<key>Points</key>
-			<array>
-				<string>{431.478, 106.061}</string>
-				<string>{432.205, 137.939}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>HopLines</key>
-					<true/>
-					<key>HopType</key>
-					<integer>1</integer>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>3</integer>
-			</dict>
-		</dict>
-	</array>
-	<key>GridInfo</key>
-	<dict/>
-	<key>GuidesLocked</key>
-	<string>NO</string>
-	<key>GuidesVisible</key>
-	<string>YES</string>
-	<key>HPages</key>
-	<integer>2</integer>
-	<key>ImageCounter</key>
-	<integer>1</integer>
-	<key>IsPalette</key>
-	<string>NO</string>
-	<key>KeepToScale</key>
-	<false/>
-	<key>Layers</key>
-	<array>
-		<dict>
-			<key>Lock</key>
-			<string>NO</string>
-			<key>Name</key>
-			<string>Layer 1</string>
-			<key>Print</key>
-			<string>YES</string>
-			<key>View</key>
-			<string>YES</string>
-		</dict>
-	</array>
-	<key>LayoutInfo</key>
-	<dict/>
-	<key>LinksVisible</key>
-	<string>NO</string>
-	<key>MagnetsVisible</key>
-	<string>NO</string>
-	<key>MasterSheet</key>
-	<string>Master 1</string>
-	<key>MasterSheets</key>
-	<array>
-		<dict>
-			<key>ActiveLayerIndex</key>
-			<integer>0</integer>
-			<key>AutoAdjust</key>
-			<true/>
-			<key>CanvasColor</key>
-			<dict>
-				<key>w</key>
-				<string>1</string>
-			</dict>
-			<key>CanvasOrigin</key>
-			<string>{0, 0}</string>
-			<key>CanvasScale</key>
-			<real>1</real>
-			<key>ColumnAlign</key>
-			<integer>1</integer>
-			<key>ColumnSpacing</key>
-			<real>36</real>
-			<key>DisplayScale</key>
-			<string>1 in = 1 in</string>
-			<key>GraphicsList</key>
-			<array/>
-			<key>GridInfo</key>
-			<dict/>
-			<key>HPages</key>
-			<integer>1</integer>
-			<key>IsPalette</key>
-			<string>NO</string>
-			<key>KeepToScale</key>
-			<false/>
-			<key>Layers</key>
-			<array>
-				<dict>
-					<key>Lock</key>
-					<string>NO</string>
-					<key>Name</key>
-					<string>Layer 1</string>
-					<key>Print</key>
-					<string>YES</string>
-					<key>View</key>
-					<string>YES</string>
-				</dict>
-			</array>
-			<key>LayoutInfo</key>
-			<dict/>
-			<key>Orientation</key>
-			<integer>2</integer>
-			<key>OutlineStyle</key>
-			<string>Basic</string>
-			<key>RowAlign</key>
-			<integer>1</integer>
-			<key>RowSpacing</key>
-			<real>36</real>
-			<key>SheetTitle</key>
-			<string>Master 1</string>
-			<key>UniqueID</key>
-			<integer>1</integer>
-			<key>VPages</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>ModificationDate</key>
-	<string>2007-03-06 10:15:03 -0800</string>
-	<key>Modifier</key>
-	<string>Howard Lewis Ship</string>
-	<key>NotesVisible</key>
-	<string>NO</string>
-	<key>Orientation</key>
-	<integer>2</integer>
-	<key>OriginVisible</key>
-	<string>NO</string>
-	<key>OutlineStyle</key>
-	<string>Basic</string>
-	<key>PageBreaks</key>
-	<string>YES</string>
-	<key>PrintInfo</key>
-	<dict>
-		<key>NSBottomMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSLeftMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSPaperSize</key>
-		<array>
-			<string>size</string>
-			<string>{612, 792}</string>
-		</array>
-		<key>NSRightMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSTopMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-	</dict>
-	<key>ReadOnly</key>
-	<string>NO</string>
-	<key>RowAlign</key>
-	<integer>1</integer>
-	<key>RowSpacing</key>
-	<real>36</real>
-	<key>SheetTitle</key>
-	<string>Canvas 1</string>
-	<key>SmartAlignmentGuidesActive</key>
-	<string>YES</string>
-	<key>SmartDistanceGuidesActive</key>
-	<string>YES</string>
-	<key>UniqueID</key>
-	<integer>1</integer>
-	<key>UseEntirePage</key>
-	<true/>
-	<key>VPages</key>
-	<integer>2</integer>
-	<key>WindowInfo</key>
-	<dict>
-		<key>CurrentSheet</key>
-		<string>0</string>
-		<key>DrawerOpen</key>
-		<false/>
-		<key>DrawerTab</key>
-		<string>Outline</string>
-		<key>DrawerWidth</key>
-		<real>324</real>
-		<key>FitInWindow</key>
-		<false/>
-		<key>Frame</key>
-		<string>{{627, 109}, {1534, 1465}}</string>
-		<key>ShowRuler</key>
-		<false/>
-		<key>ShowStatusBar</key>
-		<true/>
-		<key>VisibleRegion</key>
-		<string>{{-180, 0}, {1519, 1351}}</string>
-		<key>Zoom</key>
-		<string>1</string>
-	</dict>
-</dict>
-</plist>
diff --git a/maint-5-2/src/site/resources/cookbook/error1.png b/maint-5-2/src/site/resources/cookbook/error1.png
deleted file mode 100644
index 7416925..0000000
--- a/maint-5-2/src/site/resources/cookbook/error1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/cookbook/error2.png b/maint-5-2/src/site/resources/cookbook/error2.png
deleted file mode 100644
index 4188e3a..0000000
--- a/maint-5-2/src/site/resources/cookbook/error2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/cookbook/error3.png b/maint-5-2/src/site/resources/cookbook/error3.png
deleted file mode 100644
index 9e3168f..0000000
--- a/maint-5-2/src/site/resources/cookbook/error3.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/css/jdstyle.css b/maint-5-2/src/site/resources/css/jdstyle.css
deleted file mode 100644
index 819d52f..0000000
--- a/maint-5-2/src/site/resources/css/jdstyle.css
+++ /dev/null
@@ -1,117 +0,0 @@
-/* Javadoc style sheet */
-
-/* Define colors, fonts and other style attributes here to override the defaults  */
-
-/* Page background color */
-body { 	font-family: Arial;
-	background-color: white;
-	font-size: 10pt;
- }
-td { 	font-family: Arial;
-	font-size: 10pt;
- }
-/* Table colors */
-.TableHeadingColor     { background: #F4F4F4 }
-.TableSubHeadingColor  { background: #F4F4F4 }
-.TableRowColor         { background: #FFFFFF }
-
-/* Font used in left-hand frame lists */
-.FrameTitleFont   { font-size: normal; font-family: Arial }
-.FrameHeadingFont { font-size: normal; font-family: Arial }
-.FrameItemFont    { font-size: normal; font-family: Arial }
-
-/* Example of smaller, sans-serif font in frames */
-/* .FrameItemFont  { font-size: 10pt; font-family: Helvetica, Arial, sans-serif } */
-
-/* Navigation bar fonts and colors */
-.NavBarCell1    { background-color:#F4F4F4;}
-.NavBarCell1Rev { background-color:silver;}
-
-.NavBarFont1    { font-family: Arial, Helvetica, sans-serif; color:#000000;}
-.NavBarFont1Rev { font-family: Arial, Helvetica, sans-serif; color:#FFFFFF;}
-
-.NavBarCell2    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
-.NavBarCell3    { font-family: Arial, Helvetica, sans-serif; background-color:#FFFFFF;}
-
-A {
-    color: #003399;
-}
-
-A:active {
-    color: #003399;
-}
-
-A:visited {
-    color: #888888;
-}
-
-P, OL, UL, LI, DL, DT, DD, BLOCKQUOTE {
-    color: #000000;
-}
-
-TD, TH, SPAN {
-    color: #000000;
-}
-
-BLOCKQUOTE {
-    margin-right: 0px;
-}
-
-
-/*H1, H2, H3, H4, H5, H6    {
-    color: #000000;
-    font-weight:500;
-    margin-top:10px;
-    padding-top:15px;
-}
-
-H1 { font-size: 150%; }
-H2 { font-size: 140%; }
-H3 { font-size: 110%; font-weight: bold; }
-H4 { font-size: 110%; font-weight: bold;}
-H5 { font-size: 100%; font-style: italic; }
-H6 { font-size: 100%; font-style: italic; }*/
-
-TT {
-font-size: 90%;
-    font-family: "Courier New", Courier, monospace;
-    color: #000000;
-}
-
-PRE {
-font-size: 90%;
-    padding: 5px;
-    border-style: solid;
-    border-width: 1px;
-    border-color: #CCCCCC;
-    background-color: #F4F4F4;
-}
-
-UL, OL, LI {
-    list-style: disc;
-}
-
-HR  {
-    width: 100%;
-    height: 1px;
-    background-color: #CCCCCC;
-    border-width: 0px;
-    padding: 0px;
-    color: #CCCCCC;
-}
-
-.variablelist { 
-    padding-top: 10; 
-    padding-bottom:10; 
-    margin:0;
-}
-
-.itemizedlist, UL { 
-    padding-top: 0; 
-    padding-bottom:0; 
-    margin:0; 
-}
-
-.term { 
-    font-weight:bold;
-}
diff --git a/maint-5-2/src/site/resources/images/component-render-states.png b/maint-5-2/src/site/resources/images/component-render-states.png
deleted file mode 100644
index c778905..0000000
--- a/maint-5-2/src/site/resources/images/component-render-states.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/projectlayout.png b/maint-5-2/src/site/resources/images/projectlayout.png
deleted file mode 100644
index dd64974..0000000
--- a/maint-5-2/src/site/resources/images/projectlayout.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/servicestatus.png b/maint-5-2/src/site/resources/images/servicestatus.png
deleted file mode 100644
index 7b2281e..0000000
--- a/maint-5-2/src/site/resources/images/servicestatus.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/tapestry_request_processing_800.png b/maint-5-2/src/site/resources/images/tapestry_request_processing_800.png
deleted file mode 100644
index 8e5d130..0000000
--- a/maint-5-2/src/site/resources/images/tapestry_request_processing_800.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/validation_errors.png b/maint-5-2/src/site/resources/images/validation_errors.png
deleted file mode 100644
index 525ab56..0000000
--- a/maint-5-2/src/site/resources/images/validation_errors.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/validation_initial.png b/maint-5-2/src/site/resources/images/validation_initial.png
deleted file mode 100644
index 2da714d..0000000
--- a/maint-5-2/src/site/resources/images/validation_initial.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/validation_minlength.png b/maint-5-2/src/site/resources/images/validation_minlength.png
deleted file mode 100644
index aa21c07..0000000
--- a/maint-5-2/src/site/resources/images/validation_minlength.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/images/validation_password.png b/maint-5-2/src/site/resources/images/validation_password.png
deleted file mode 100644
index 56415e6..0000000
--- a/maint-5-2/src/site/resources/images/validation_password.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/src/site/resources/screencast_3.html b/maint-5-2/src/site/resources/screencast_3.html
deleted file mode 100644
index f6aed03..0000000
--- a/maint-5-2/src/site/resources/screencast_3.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-
-
-
-
-
-
-
-
-<html>
-    <head>
-        <title>Apache Tapestry - Tapestry Screencasts</title>
-        <style type="text/css" media="all">
-            @import url("./css/maven-base.css");
-            @import url("./css/maven-theme.css");
-            @import url("./css/site.css");
-        </style>
-        <link rel="stylesheet" href="./css/print.css" type="text/css" media="print"/>
-        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-    </head>
-    <body class="composite">
-        <div id="banner">
-            <a href="../" id="bannerLeft">
-
-                <img src="images/tapestry_banner.gif" alt=""/>
-
-            </a>
-            <a href="http://www.apache.org" id="bannerRight">
-
-                <img src="images/asf_logo_wide.gif" alt=""/>
-
-            </a>
-            <div class="clear">
-                <hr/>
-            </div>
-        </div>
-        <div id="breadcrumbs">
-
-
-
-
-
-
-
-            <div class="xleft"> Last Published: 29 Jan 2007 </div>
-            <div class="xright">
-                <a href="../">Tapestry</a> | <a href="http://www.apache.org/">Apache</a>
-            </div>
-            <div class="clear">
-                <hr/>
-            </div>
-        </div>
-        <div id="leftColumn">
-            <div id="navcolumn">
-
-
-
-
-
-
-
-                <h5>Tapestry 5 Project</h5>
-                <ul>
-
-                    <li class="none">
-                        <strong>Screencasts</strong>
-                    </li>
-
-                    <li class="none">
-                        <a href="struts.html">Tapestry for Struts Developers</a>
-                    </li>
-                </ul>
-                <h5>Tapestry 5 Modules</h5>
-                <ul>
-
-                    <li class="none">
-                        <a href="tapestry-core/">tapestry-core</a>
-                    </li>
-
-                    <li class="none">
-                        <a href="tapestry-ioc">tapestry-ioc</a>
-                    </li>
-                </ul>
-                <h5>Tapestry 5 Archetypes</h5>
-                <ul>
-
-                    <li class="none">
-                        <a href="tapestry-simple/">tapestry-simple</a>
-                    </li>
-                </ul>
-                <h5>Developer Info</h5>
-                <ul>
-
-                    <li class="none">
-                        <a href="tap5devwiki.html">DevWiki</a>
-                    </li>
-
-                    <li class="none">
-                        <a href="dev/env.html">Environment</a>
-                    </li>
-                </ul>
-                <h5>Project Documentation</h5>
-                <ul>
-
-
-
-
-
-
-
-
-
-
-
-                    <li class="collapsed">
-                        <a href="project-info.html">Project Information</a>
-                    </li>
-                </ul>
-                <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
-                    <img alt="Built by Maven" src="./images/logos/maven-feather.png"/>
-                </a>
-
-
-
-
-
-
-
-            </div>
-        </div>
-        <div id="bodyColumn">
-            <div id="contentBox">
-
-                <h2> Screencast #3 </h2>
-
-
-                <OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
-                    CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab" HEIGHT="616" WIDTH="816">
-
-
-
-                    <PARAM NAME="src"
-                        VALUE="http://howardlewisship.com/screencasts/tapestry5_screencast3.mov"/>
-
-                    <PARAM NAME="AutoPlay" VALUE="true"/>
-
-                    <PARAM NAME="Controller" VALUE="true"/>
-
-
-
-                    <EMBED SRC="http://howardlewisship.com/screencasts/tapestry5_screencast3.mov"
-                        HEIGHT="616" WIDTH="816" TYPE="video/quicktime"
-                        PLUGINSPAGE="http://www.apple.com/quicktime/download/" AUTOPLAY="true"
-                        CONTROLLER="true"/>
-
-
-
-                </OBJECT>
-
-            </div>
-        </div>
-        <div class="clear">
-            <hr/>
-        </div>
-        <div id="footer">
-            <div class="xright">&#169; 2006-2007 Apache Software Foundation </div>
-            <div class="clear">
-                <hr/>
-            </div>
-        </div>
-    </body>
-</html>
diff --git a/maint-5-2/src/site/resources/screencast_4.html b/maint-5-2/src/site/resources/screencast_4.html
deleted file mode 100644
index 5b936ae..0000000
--- a/maint-5-2/src/site/resources/screencast_4.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-
-
-
-
-
-
-
-
-<html>
-    <head>
-        <title>Apache Tapestry - Tapestry Screencasts</title>
-        <style type="text/css" media="all">
-            @import url("./css/maven-base.css");
-            @import url("./css/maven-theme.css");
-            @import url("./css/site.css");
-        </style>
-        <link rel="stylesheet" href="./css/print.css" type="text/css" media="print"/>
-        <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-    </head>
-    <body class="composite">
-        <div id="banner">
-            <a href="../" id="bannerLeft">
-                
-                <img src="images/tapestry_banner.gif" alt=""/>
-                
-            </a>
-            <a href="http://www.apache.org" id="bannerRight">
-                
-                <img src="images/asf_logo_wide.gif" alt=""/>
-                
-            </a>
-            <div class="clear">
-                <hr/>
-            </div>
-        </div>
-        <div id="breadcrumbs">
-            
-            
-            
-            
-            
-            
-            
-            <div class="xleft"> Last Published: 15 Feb 2007 </div>
-            <div class="xright">
-                <a href="../">Tapestry</a> | <a href="http://www.apache.org/">Apache</a>
-            </div>
-            <div class="clear">
-                <hr/>
-            </div>
-        </div>
-        <div id="leftColumn">
-            <div id="navcolumn">
-                
-                
-                
-                
-                
-                
-                
-                <h5>Tapestry 5 Project</h5>
-                <ul>
-                    
-                    <li class="none">
-                        <strong>Screencasts</strong>
-                    </li>
-                    
-                    <li class="none">
-                        <a href="struts.html">Tapestry for Struts Developers</a>
-                    </li>
-                </ul>
-                <h5>Tapestry 5 Modules</h5>
-                <ul>
-                    
-                    <li class="none">
-                        <a href="tapestry-core/">tapestry-core</a>
-                    </li>
-                    
-                    <li class="none">
-                        <a href="tapestry-ioc">tapestry-ioc</a>
-                    </li>
-                </ul>
-                <h5>Tapestry 5 Archetypes</h5>
-                <ul>
-                    
-                    <li class="none">
-                        <a href="tapestry-simple/">tapestry-simple</a>
-                    </li>
-                </ul>
-                <h5>Developer Info</h5>
-                <ul>
-                    
-                    <li class="none">
-                        <a href="tap5devwiki.html">DevWiki</a>
-                    </li>
-                    
-                    <li class="none">
-                        <a href="dev/env.html">Environment</a>
-                    </li>
-                </ul>
-                <h5>Project Documentation</h5>
-                <ul>
-                    
-                    
-                    
-                    
-                    
-                    
-                    
-                    
-                    
-                    
-                    
-                    <li class="collapsed">
-                        <a href="project-info.html">Project Information</a>
-                    </li>
-                </ul>
-                <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
-                    <img alt="Built by Maven" src="./images/logos/maven-feather.png"/>
-                </a>
-                
-                
-                
-                
-                
-                
-                
-            </div>
-        </div>
-        <div id="bodyColumn">
-            <div id="contentBox">
-                
-                <h2> Screencast #4 </h2>
-                
-                
-                <OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
-                    CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab" HEIGHT="616" WIDTH="816">
-                    
-                    
-                    
-                    <PARAM NAME="src"
-                        VALUE="http://howardlewisship.com/screencasts/tapestry5_screencast4.mov"/>
-                    
-                    <PARAM NAME="AutoPlay" VALUE="true"/>
-                    
-                    <PARAM NAME="Controller" VALUE="true"/>
-                    
-                    
-                    
-                    <EMBED SRC="http://howardlewisship.com/screencasts/tapestry5_screencast4.mov"
-                        HEIGHT="616" WIDTH="816" TYPE="video/quicktime"
-                        PLUGINSPAGE="http://www.apple.com/quicktime/download/" AUTOPLAY="true"
-                        CONTROLLER="true"/>
-                    
-                    
-                    
-                </OBJECT>
-                
-            </div>
-        </div>
-        <div class="clear">
-            <hr/>
-        </div>
-        <div id="footer">
-            <div class="xright">&#169; 2006-2007 Apache Software Foundation </div>
-            <div class="clear">
-                <hr/>
-            </div>
-        </div>
-    </body>
-</html>
diff --git a/maint-5-2/src/site/resources/screencast_5.html b/maint-5-2/src/site/resources/screencast_5.html
deleted file mode 100644
index 86c8ca9..0000000
--- a/maint-5-2/src/site/resources/screencast_5.html
+++ /dev/null
@@ -1,174 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-
-
-
-
-
-
-
-
-
-
-<html>
-  <head>
-    <title>Apache Tapestry - Tapestry Screencasts</title>
-    <style type="text/css" media="all">
-      @import url("./css/maven-base.css");
-      @import url("./css/maven-theme.css");
-      @import url("./css/site.css");
-    </style>
-    <link rel="stylesheet" href="./css/print.css" type="text/css" media="print"/>
-    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
-  </head>
-  <body class="composite">
-    <div id="banner">
-      <a href="../" id="bannerLeft">
-        
-        <img src="images/tapestry_banner.gif" alt=""/>
-        
-      </a>
-      <a href="http://www.apache.org" id="bannerRight">
-        
-        <img src="images/asf_logo_wide.gif" alt=""/>
-        
-      </a>
-      <div class="clear">
-        <hr/>
-      </div>
-    </div>
-    <div id="breadcrumbs">
-      
-      
-      
-      
-      
-      
-      
-      <div class="xleft"> Last Published: 28 Feb 2007 </div>
-      <div class="xright">
-        <a href="../">Tapestry</a> | <a href="http://www.apache.org/">Apache</a>
-      </div>
-      <div class="clear">
-        <hr/>
-      </div>
-    </div>
-    <div id="leftColumn">
-      <div id="navcolumn">
-        
-        
-        
-        
-        
-        
-        
-        <h5>Tapestry 5 Project</h5>
-        <ul>
-          
-          <li class="none">
-            <strong>Screencasts</strong>
-          </li>
-          
-          <li class="none">
-            <a href="struts.html">Tapestry for Struts Developers</a>
-          </li>
-        </ul>
-        <h5>Tapestry 5 Modules</h5>
-        <ul>
-          
-          <li class="none">
-            <a href="tapestry-core/">tapestry-core</a>
-          </li>
-          
-          <li class="none">
-            <a href="tapestry-ioc">tapestry-ioc</a>
-          </li>
-        </ul>
-        <h5>Tapestry 5 Archetypes</h5>
-        <ul>
-          
-          <li class="none">
-            <a href="tapestry-simple/">tapestry-simple</a>
-          </li>
-        </ul>
-        <h5>Developer Info</h5>
-        <ul>
-          
-          <li class="none">
-            <a href="tap5devwiki.html">DevWiki</a>
-          </li>
-          
-          <li class="none">
-            <a href="dev/env.html">Environment</a>
-          </li>
-        </ul>
-        <h5>Project Documentation</h5>
-        <ul>
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          
-          <li class="collapsed">
-            <a href="project-info.html">Project Information</a>
-          </li>
-        </ul>
-        <a href="http://maven.apache.org/" title="Built by Maven" id="poweredBy">
-          <img alt="Built by Maven" src="./images/logos/maven-feather.png"/>
-        </a>
-        
-        
-        
-        
-        
-        
-        
-      </div>
-    </div>
-    <div id="bodyColumn">
-      <div id="contentBox">
-        
-        <h2> Screencast #5 </h2>
-        
-        
-        <OBJECT CLASSID="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
-          CODEBASE="http://www.apple.com/qtactivex/qtplugin.cab" HEIGHT="616" WIDTH="816">
-          
-          
-          
-          <PARAM NAME="src"
-            VALUE="http://howardlewisship.com/screencasts/tapestry5_screencast5.mov"/>
-          
-          <PARAM NAME="AutoPlay" VALUE="true"/>
-          
-          <PARAM NAME="Controller" VALUE="true"/>
-          
-          
-          
-          <EMBED SRC="http://howardlewisship.com/screencasts/tapestry5_screencast5.mov"
-            HEIGHT="616" WIDTH="816" TYPE="video/quicktime"
-            PLUGINSPAGE="http://www.apple.com/quicktime/download/" AUTOPLAY="true"
-            CONTROLLER="true"/>
-          
-          
-          
-        </OBJECT>
-        
-      </div>
-    </div>
-    <div class="clear">
-      <hr/>
-    </div>
-    <div id="footer">
-      <div class="xright">&#169; 2006-2007 Apache Software Foundation </div>
-      <div class="clear">
-        <hr/>
-      </div>
-    </div>
-  </body>
-</html>
diff --git a/maint-5-2/src/site/site.xml b/maint-5-2/src/site/site.xml
deleted file mode 100644
index dbbb7d0..0000000
--- a/maint-5-2/src/site/site.xml
+++ /dev/null
@@ -1,102 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Apache Tapestry">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu name="Tapestry 5 Project">
-            <item name="Screencasts" href="screencast.html"/>
-            <item name="Tapestry for Struts Developers" href="struts.html"/>
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-            <item name="Release Notes" href="release-notes.html"/>
-            <item name="Component Reference" href="tapestry-core/ref/"/>
-            <item name="JavaDocs" href="apidocs/"/>
-            <item name="Nightly Docs" href="http://tapestry.apache.org/tapestry5.2-dev/"/>
-            <item name="Issues" href="https://issues.apache.org/jira/browse/TAP5"/>
-            <item name="Refcard" href="http://refcardz.dzone.com/refcardz/apache-tapestry-50?oid=hom7545"/>
-            <item name="Howard's Blog" href="http://tapestryjava.blogspot.com/"/>
-        </menu>
-
-        <menu name="Upgrade Notes">
-            <item name="From Tapestry 5.1" href="upgrade.html"/>
-            <item name="From Tapestry 4" href="upgrade4.html"/>
-            <item name="Upgrade Notes (5.0)" href="upgrade5.0.html"/>
-            <item name="Release Notes (5.0)" href="release-notes-5.0.html"/>
-            <item name="Release Notes (5.1)" href="release-notes-5.1.html"/>
-        </menu>
-
-        <menu name="Tapestry 5 Modules">
-            <item name="tapestry5-annotations" href="tapestry5-annotations/"/>
-            <item name="tapestry-beanvalidator" href="tapestry-beanvalidator/"/>
-            <item name="tapestry-core" href="tapestry-core/"/>
-            <item name="tapestry-func" href="tapestry-func/"/>
-            <item name="tapestry-hibernate" href="tapestry-hibernate/"/>
-            <item name="tapestry-hibernate-core" href="tapestry-hibernate-core/"/>
-            <item name="tapestry-ioc" href="tapestry-ioc/"/>
-            <item name="tapestry-jmx" href="tapestry-jmx/"/>
-            <item name="tapestry-json" href="tapestry-json/"/>
-            <item name="tapestry-spring" href="tapestry-spring/"/>
-            <item name="tapestry-test" href="tapestry-test/"/>
-            <item name="tapestry-upload" href="tapestry-upload/"/>
-        </menu>
-
-        <menu name="Tapestry Tutorials">
-            <item name="Tutorial #1" href="tutorial1/"/>
-        </menu>
-
-        <menu name="Tapestry 5 Maven Support">
-            <item name="quickstart" href="quickstart/"/>
-            <item name="tapestry-component-report" href="tapestry-component-report/"/>
-        </menu>
-
-
-        <menu name="Deployment Notes">
-            <item name="Glassfish" href="glassfish.html"/>
-            <item name="JBoss" href="jboss.html"/>
-            <item name="Jetty" href="jetty.html"/>
-            <item name="Tomcat" href="tomcat.html"/>
-            <item name="WebSphere" href="websphere.html"/>
-        </menu>
-
-        <menu name="Resources">
-            <item name="Wiki" href="http://wiki.apache.org/tapestry/FrontPage"/>
-            <item name="Wiki HowTos" href="http://wiki.apache.org/tapestry/Tapestry5HowTos"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/src/site/xdoc/release-notes-5.0.xml b/maint-5-2/src/site/xdoc/release-notes-5.0.xml
deleted file mode 100644
index e123d21..0000000
--- a/maint-5-2/src/site/xdoc/release-notes-5.0.xml
+++ /dev/null
@@ -1,2783 +0,0 @@
-<document>
-    <!--
-       Copyright 2007, 2008 The Apache Software Foundation
-
-       Licensed under the Apache License, Version 2.0 (the "License");
-       you may not use this file except in compliance with the License.
-       You may obtain a copy of the License at
-
-           http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing, software
-       distributed under the License is distributed on an "AS IS" BASIS,
-       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-       See the License for the specific language governing permissions and
-       limitations under the License.
-    -->
-
-    <properties>
-        <title>Tapestry 5.0 Project Release Notes</title>
-    </properties>
-    <body>
-
-        <p>This document contains release notes for Tapestry 5.0. The current release is Tapestry 5.2,
-            which has its own <a href="release-notes.html">release notes</a>.
-        </p>
-
-
-        <h1>Release Notes - Tapestry 5 - Version 5.0.18</h1>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-399'>TAP5-399</a>] - Modified application state
-                objects are not persisted back to the session at the end of the request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-401'>TAP5-401</a>] - When rendering HTML content
-                (not XML) Tapestry should always render open and close tags for most elements, even if the content is
-                empty
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry 5 - Version 5.0.17</h1>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-354'>TAP5-354</a>] - BeanEditForm guide references
-                parameter &quot;remove&quot; which is now called &quot;exclude&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-356'>TAP5-356</a>] - Link to the Node JavaDoc from
-                the &quot;New And Of Note&quot; section of the project page is broken
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-357'>TAP5-357</a>] - Tapestry documentation should
-                clearly/boldly identify the release number
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-362'>TAP5-362</a>] - Linking to an index page can
-                result in an empty href attribute on a PageLink, which is treated by the browser as staying on the same
-                page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-370'>TAP5-370</a>] - Error from DocumentLinker
-                about missing &lt;html&gt; tag, even for XML document w/o JavaScript
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-373'>TAP5-373</a>] - When JavaScript libraries are
-                moved to the &quot;top&quot; of the document, they should be added to the &lt;head&gt;, not the &lt;body&gt;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-377'>TAP5-377</a>] - Broken links inside on project
-                site to pipeline description and to JIRA
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-378'>TAP5-378</a>] - Missing i18n files for
-                Brazilian Portuguese
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-365'>TAP5-365</a>] - Localization support for
-                Japanese
-            </li>
-            <li>[<a href="https://issues.apache.org/jira/browse/TAP5-380">TAP5-380</a>] - Add localiztion support for
-                Greek
-            </li>
-
-        </ul>
-
-        <h2>Task
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-379'>TAP5-379</a>] - Add the Ars Machina Project to
-                the list of Tapestry 5-related packages
-            </li>
-        </ul>
-
-
-        <h1>
-            Release Notes - Tapestry 5 - Version 5.0.16
-        </h1>
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-1'>TAP5-1</a>] - Clicking on a link that updates a
-                zone before the page has fully loaded will result in a full page update and, often, a server-side
-                exception
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-4'>TAP5-4</a>] - Document the need to version
-                classpath assets to prevent unwanted client browser caching
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-10'>TAP5-10</a>] - An onActivate() event handler on
-                a page can cause PageTester to fail with a NullPointerException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-22'>TAP5-22</a>] - Better client side reporting of
-                problems with Zones and triggers is needed
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-23'>TAP5-23</a>] - TextStreamResponse needs a
-                charset
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-25'>TAP5-25</a>] - Client-side validation is
-                triggered onblur even when switching to a different form in the same page, or to a non-form element such
-                as a link
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-28'>TAP5-28</a>] - Image shows through
-                autocomplete-menu
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-32'>TAP5-32</a>] - It is not possible to include a
-                null or blank field as part of an event or page activation context
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-34'>TAP5-34</a>] - When using a Grid inside a Form,
-                sorting the Grid may cause updates (when the form is submitted) to be applied to the wrong objects
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-47'>TAP5-47</a>] - Cookie is not a secure cookie
-                even though all connection are HTTPS connections
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-50'>TAP5-50</a>] - Tabbing out of a form, including
-                clicking a link, causes distracting client-side validations of the field just exitted
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-105'>TAP5-105</a>] - Defining a component in the
-                class that does not appear in the template should be an exception (not a logged, and ignored, warning)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-119'>TAP5-119</a>] - Tapestry should not use the
-                page/component Logger for internal logging of class transformation and event dispatch logic
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-127'>TAP5-127</a>] - Incorrect encoding on Danish
-                messages files leads to UnknownFormatConversionException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-128'>TAP5-128</a>] - Render phase short circuiting
-                fails to abort the event when mixins are present on the component, resulting in an IllegalStateException
-                when trying to store a subsequent result value
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-131'>TAP5-131</a>] - BeanEditForm guide example
-                about creating the FieldTranslator is inaccurate and out of date
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-132'>TAP5-132</a>] -
-                ComponentSource#getPage(String) does not handle a blank page name correctly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-135'>TAP5-135</a>] - Attempting to set a default
-                sort constraint on the Grid will cause an NullPointerException inside Grid.getSortConstraints()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-136'>TAP5-136</a>] - Although hibernate
-                dependencies are not longer provided the documentation still says they are
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-157'>TAP5-157</a>] - Add a LinkSubmit component,
-                for submitting a Form via a clickable link
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-224'>TAP5-224</a>] - DateField shows day
-                abbreviation labels in wrong order for some non-english locales
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-225'>TAP5-225</a>] - DateField shows empty
-                selection after first date select
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-227'>TAP5-227</a>] - Hibernate dependencies are
-                incomplete
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-229'>TAP5-229</a>] - Upgrade Prototype to version
-                1.6.0.3 to address positioning problems in IE6/7 that cause spurious client-side exceptions
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-230'>TAP5-230</a>] - Defining a service that
-                implements the HibernateConfigurer service causes injection exceptions (due to the ambiguity)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-233'>TAP5-233</a>] - Ajax requests that fail give
-                no indication on the client side; instead, an error should be presented to the user as some form of
-                popup
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-235'>TAP5-235</a>] - The Tapestry Exception Report
-                page should set a response status of SC_INTERNAL_SERVER_ERROR
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-238'>TAP5-238</a>] - Component reference for Grid's
-                empty parameter is misleading; provide a good example
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-240'>TAP5-240</a>] -
-                Tapestry.Initializer.validate() references non-existent variable
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-241'>TAP5-241</a>] - Doc out of date: Hibernate
-                version
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-249'>TAP5-249</a>] - Links from
-                tapestry5-annotations page to tapestry-ioc and tapestry-core are broken
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-253'>TAP5-253</a>] - Unable to effectively override
-                default validation messages globally
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-256'>TAP5-256</a>] - Page Pool Limit exhausted when
-                exception occurs (during PageAttached lifecycle) on a link
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-257'>TAP5-257</a>] - NPE in RequestFilter if
-                ApplicationStateManager is used
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-258'>TAP5-258</a>] - RequestPageCache should
-                canonicalize page name
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-261'>TAP5-261</a>] - Palette option reordering
-                broken in IE
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-263'>TAP5-263</a>] - Tapestry should produce
-                XML-style output (not SGML) even for the text/html content type, for best compatibility with browsers
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-268'>TAP5-268</a>] - UTF8 characters are not
-                supported in the autocomplete mixin
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-272'>TAP5-272</a>] - File uploads that exceed the
-                upload limit throw an uncatchable exception; Tapestry should notify the page about the exception
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-276'>TAP5-276</a>] - Add documentation about the
-                use of @Inject to mark the correct constructor of a bean (i.e., when using BeanEditForm)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-279'>TAP5-279</a>] - Client-side validation is
-                always enabled for injected AjaxFormLoop fields
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-281'>TAP5-281</a>] - Form should detect when it is
-                nested inside another Form and identify that as an error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-283'>TAP5-283</a>] - FormFragments are not ignored
-                if the form has client validation disabled
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-284'>TAP5-284</a>] - A component parameter default
-                method that returns a primtive(instead of an object instance) results in an runtime exception
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-287'>TAP5-287</a>] - Typo in default.css setting
-                autoloader icon height
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-290'>TAP5-290</a>] - Namespace error when
-                partial-updating a zone with a block
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-302'>TAP5-302</a>] - URL encoded strings that
-                contain symbols such as %2f (encoded &quot;/&quot;) are decoded incorrectly in some environments
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-304'>TAP5-304</a>] - Tapestry outputs a warning
-                when a component defined in the Java code (via @Component) does not have a corresponding element in the
-                template; this should be escalated to an exception
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-305'>TAP5-305</a>] - The JVM System Properties
-                Symbol Source should always be ordered first (ahead of ApplicationDefaults, etc.)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-308'>TAP5-308</a>] - Injecting dependencies into
-                contributeTypeCoercer method causes circular dependency error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-314'>TAP5-314</a>] - issue tracking link on
-                tapestry5 page should refer to https://issues.apache.org/jira/browse/TAP5
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-323'>TAP5-323</a>] - Fields marked with @Persist
-                should not allow default values
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-325'>TAP5-325</a>] - Pop up error bubbles are
-                broken in Safari
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-326'>TAP5-326</a>] - Class
-                org.apache.tapestry5.internal.structure.BlockImpl should implement toString()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-328'>TAP5-328</a>] - Exception when checking
-                BeanEditor Field required in ValidationDecorator
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-332'>TAP5-332</a>] - Service interfaces should
-                identify the service name and the type of service configuration (if applicable)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-333'>TAP5-333</a>] - Tapestry 5 renders an XHTML
-                label element incorrectly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-337'>TAP5-337</a>] - Rapidly refreshing a page,
-                even the same page, can cause a deadlock related to class loading
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-342'>TAP5-342</a>] - Form with a zone is getting an
-                action of &quot;#&quot; on submit from IE 6
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-343'>TAP5-343</a>] - The Grid component generates
-                non-unique HTML DOM ids for sort columns
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-359'>TAP5-359</a>] - Use of the email validator
-                with client-side validation displays a pop-up error message about client-side validator &quot;email&quot;
-                being missing
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-12'>TAP5-12</a>] - Need better docs for
-                AjaxFormLoop; component should link to AddRowLink and RemoveRowLink, and need some examples
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-49'>TAP5-49</a>] - Grid.defaultModel() should be a
-                protected method so that subclasses can override the default BeanModel logic
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-87'>TAP5-87</a>] - PasswordField should not update
-                its value parameter when the submitted value is blank
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-184'>TAP5-184</a>] - Improve error reporting when a
-                javascript asset is intended to be included on page which has no &lt;html&gt; element
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-187'>TAP5-187</a>] - Ajax event handler methods
-                that return a page instance, page class or page name should cause the client to redirect to that page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-188'>TAP5-188</a>] - Document the need to use
-                @Inject with @Value or @Symbol when the parameter/field type is String (to avoid injecting the service
-                id)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-190'>TAP5-190</a>] - Grid component's source
-                parameter should autoconnect to the matching container property
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-197'>TAP5-197</a>] - Improved error message when
-                using a form control component outside of a Form component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-200'>TAP5-200</a>] - The Submit component doesn't
-                need validation decoration
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-205'>TAP5-205</a>] - Add an empty parameter to the
-                Loop component, to display a message when there are no items to loop over
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-206'>TAP5-206</a>] - Document that you should not
-                instantiate an @Persist field in its declaration
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-228'>TAP5-228</a>] - When you have multiple forms
-                on the same page that share (some of) the same properties, it is not possible to differentiate
-                validation constraints and messages in the message catalog
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-254'>TAP5-254</a>] - Translation for Spanish
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-282'>TAP5-282</a>] - Add support for Brazilian
-                Portuguese (pt_BR) locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-285'>TAP5-285</a>] - Components such as ActionLink
-                and EventLink should require that there be *some* event handler for their triggered events
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-297'>TAP5-297</a>] - Provide access to the
-                Autocompleter javascript instance
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-301'>TAP5-301</a>] - When using the @Property
-                annotation, Tapestry should throw an exception rather than overwrite an existing method
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-313'>TAP5-313</a>] - Provide configuration to move
-                links to JavaScript libraries to the top of the page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-318'>TAP5-318</a>] - Tapestry should identify where
-                in the template undefined components (with id, but no type or matching embedded component) are located
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-339'>TAP5-339</a>] - Make FileItemFactory a service
-                so it can be overridden
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-344'>TAP5-344</a>] - Quickstart archetype should
-                include an empty app.properties message catalog in the WEB-INF folder
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-41'>TAP5-41</a>] - Create a guide to creating and
-                packaging component libraries
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-231'>TAP5-231</a>] - Unify injection; allow @Inject
-                annotation on fields of service implementations
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-275'>TAP5-275</a>] - Add set() method to TestBase
-                to allow private fields of objects to be set via reflection
-            </li>
-        </ul>
-
-        <h2>Task
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-164'>TAP5-164</a>] - Remove link to TapIDEA project
-                from Tapestry home page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-322'>TAP5-322</a>] - Update links to JumpStart
-                because its site has moved
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.15</h1>
-        <h2>Sub-task
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2423'>TAPESTRY-2423</a>] - Add Short Translator
-            </li>
-        </ul>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1796'>TAPESTRY-1796</a>] - Not all
-                writeCookieValue functions honor the tapestry.default-cookie-max-age symbol
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1856'>TAPESTRY-1856</a>] - Add localization
-                support to DateField
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2243'>TAPESTRY-2243</a>] - Component report
-                crashes when project have too many dependencies
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2324'>TAPESTRY-2324</a>] - Wrong Submit
-                'selected' event fired when using a Form with a Zone parameter
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2352'>TAPESTRY-2352</a>] - Client side
-                validation does not enforce the format of input (i.e., that numeric fields contain numbers)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2357'>TAPESTRY-2357</a>] - Unlike Tapestry 4,
-                Tapestry 5 does not automatically position the cursor into a form
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2438'>TAPESTRY-2438</a>] - ValidationException
-                thrown from onValidateForm() should be recorded for the Form, but instead is treated as an unexpected
-                error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2453'>TAPESTRY-2453</a>] - Form enctype is not
-                updated when an Upload component is injected via FormInjector / AjaxFormLoop
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2460'>TAPESTRY-2460</a>] - Nested BeanEditors
-                (where the block parameter for a property to one BeanEditor contains another BeanEditor) results in a
-                StackOverflowException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2517'>TAPESTRY-2517</a>] - A failed service
-                injection into a component field is visible in the browser as a spurious error about field _$resources
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2532'>TAPESTRY-2532</a>] - Javadoc of inPlace
-                field in Grid class is incomplete
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2536'>TAPESTRY-2536</a>] - Add explicit message
-                on module loading failure
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2546'>TAPESTRY-2546</a>] - Any component always
-                outputs the same id attribute, rather than a unique id attribute for each render
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2558'>TAPESTRY-2558</a>] - The injection page
-                of the user guide references commons-logging Log, not SLF4 Logger
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2559'>TAPESTRY-2559</a>] - The &quot;configuration&quot;
-                page of the Tapestry user guide (conf.apt) has an error, comes out blank
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2561'>TAPESTRY-2561</a>] - Rapidly refreshing a
-                page, even the same page, can cause a deadlock related to class loading
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2563'>TAPESTRY-2563</a>] - Tapestry should
-                reject form submissions that aren't via POST or don't contain t:formdata, as likely hack attempts
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2566'>TAPESTRY-2566</a>] - Errors in code
-                examples of &quot;Securing your application with HTTPS&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2567'>TAPESTRY-2567</a>] - Tapestry doesn't
-                identify conflicting annotations on component fields
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2578'>TAPESTRY-2578</a>] - BeanDisplay
-                formatting is off for fields with empty values
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2585'>TAPESTRY-2585</a>] - Email validator
-                requires Void constraint type, should be null
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2591'>TAPESTRY-2591</a>] - Email Validator
-                Throws MissingFormatArgumentException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2595'>TAPESTRY-2595</a>] - Application State
-                Objects are not persisted back to the session at the end of the request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2601'>TAPESTRY-2601</a>] -
-                ComponentResources.createActionLink() is incorrectly named, should be createEventLink()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2602'>TAPESTRY-2602</a>] - Error bubbles are in
-                some cases placed incorrectly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2606'>TAPESTRY-2606</a>] - File system warning
-                for certain component event request, on windows only
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2617'>TAPESTRY-2617</a>] - DateField component
-                should localize the month names and day name abbreviations shown in the client web browser
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2619'>TAPESTRY-2619</a>] - Event Handler adds a
-                new JSONObject to my JSONObject return
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2626'>TAPESTRY-2626</a>] - Dependencies on
-                Selenium are incomplete
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2629'>TAPESTRY-2629</a>] - Link to
-                tapestry5-annotations page is broken, links to old page (out of date since May 2008)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2636'>TAPESTRY-2636</a>] -
-                NoSuchElementException on submit when using a Grid with a non-default model inside a Form
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2641'>TAPESTRY-2641</a>] - FormSupport.defer()
-                javadoc says defered actions will be executed after validation, but it's executed before
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2655'>TAPESTRY-2655</a>] - Services defined
-                with the bind() method may conflict with services from service builder methods without error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2656'>TAPESTRY-2656</a>] -
-                GridSortModel.getSortContraints() - method name misspelled, should be getSortConstraints()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2658'>TAPESTRY-2658</a>] -
-                HibernateGridDataSource.getAvailableRows should also call applyAdditionalConstraints() to prevent
-                java.lang.IndexOutOfBoundsException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2664'>TAPESTRY-2664</a>] -
-                RenderSupport.addScript(String) does not add the core JavaScript dependencies
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2668'>TAPESTRY-2668</a>] - Setting volatile to
-                true on Grid component in form results in NullPointerException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2669'>TAPESTRY-2669</a>] - Tapestry source
-                distribution's version of tapestry-test is actually the code for tapestry-spring
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2137'>TAPESTRY-2137</a>] - The common idiom of
-                connecting a component's id to a container property should be easier: an attribute of the @Parameter
-                annotation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2223'>TAPESTRY-2223</a>] - Don't require a
-                hibernate.cfg.xml
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2236'>TAPESTRY-2236</a>] - Strip trailing
-                punctuation (_ and $) from member names, as is done with leading punctuation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2277'>TAPESTRY-2277</a>] - Removing Label body
-                should be parameterizable
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2286'>TAPESTRY-2286</a>] - Support JSONArray as
-                a valid return type from AJAX event handlers
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2287'>TAPESTRY-2287</a>] - Include
-                tapestry-test in release download
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2363'>TAPESTRY-2363</a>] - Overload method
-                ComponentSource.getPage to accept a page class as parameter
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2458'>TAPESTRY-2458</a>] - Refactor
-                DefaultHibernateConfigurer as an IOC service for easier overriding
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2461'>TAPESTRY-2461</a>] - Add translations for
-                Finnish locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2474'>TAPESTRY-2474</a>] - Define and use a
-                standard set of SL4J Markers for logging, to make it easier to filter output
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2486'>TAPESTRY-2486</a>] - Refactor the
-                non-trivial BindingFactory implementations into services
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2489'>TAPESTRY-2489</a>] - The ServiceStatus
-                page should not reveal so much information in production mode, out of security concerns
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2554'>TAPESTRY-2554</a>] - When decorating a
-                service using a decorate method, the underlying service (or interceptor) should be available as a
-                parameter of the service type, not just java.lang.Object
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2576'>TAPESTRY-2576</a>] - The text field for a
-                DateField component should be optional
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2577'>TAPESTRY-2577</a>] - Add support for
-                Russian locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2584'>TAPESTRY-2584</a>] -
-                AspectInterceptorBuilder should allow for multiple advice per method
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2586'>TAPESTRY-2586</a>] - Some abstract base
-                class methods should be overridable
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2588'>TAPESTRY-2588</a>] - Add translations for
-                Danish locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2589'>TAPESTRY-2589</a>] - Add translations for
-                Swedish locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2592'>TAPESTRY-2592</a>] - BeanEditor should
-                provide a &quot;BeanEditContext&quot; into the environment. (or PropertyEditContext should include the
-                bean class).
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2596'>TAPESTRY-2596</a>] - Add translations for
-                French locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2597'>TAPESTRY-2597</a>] - Upgrade
-                tapestry-hibernate to Hibernate 3.3.0.SP1
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2603'>TAPESTRY-2603</a>] - Improve
-                @InjectContainer Javadoc
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2610'>TAPESTRY-2610</a>] - Allow access to
-                component's informal parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2611'>TAPESTRY-2611</a>] - Add loom-t5 link to
-                Tapestry 5 home page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2615'>TAPESTRY-2615</a>] - IOC autobuild
-                conflict between org.hibernate.Session and the FullTextSession from the hibernate serach module
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2623'>TAPESTRY-2623</a>] - Remove excessive
-                Tapestry.debug() messages on zone response
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2624'>TAPESTRY-2624</a>] - Remove unecessary
-                comments from tapestry.js
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2627'>TAPESTRY-2627</a>] - The else parameter
-                of If should have a default binding prefix of literal
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2630'>TAPESTRY-2630</a>] -
-                EntityPersistentFieldStrategy converts entity PKs to strings and back unnecessarily
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2639'>TAPESTRY-2639</a>] - tapestry.js does not
-                use Protoype's Class.create() properly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2643'>TAPESTRY-2643</a>] - RenderSupport should
-                have options for including a JavaScript library or Stylesheet as a String URL, not just as an Asset
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2646'>TAPESTRY-2646</a>] - There should be a
-                global configuration that controls the default for Form's clientValidation and autofocus parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2654'>TAPESTRY-2654</a>] - The Zone component
-                should expose its body (as a Block) to make it easier to re-render the Zone's body as an Ajax partial
-                page render
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2662'>TAPESTRY-2662</a>] - Upgrade Hibernate
-                dependency to 3.3.1
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2670'>TAPESTRY-2670</a>] - Major fixes needed
-                for German (DE) localization
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2671'>TAPESTRY-2671</a>] - TapestryFilter
-                should display name of application, version of Tapestry at startup
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1310'>TAPESTRY-1310</a>] - Provide access to
-                the current row index and current column index in Grid
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1867'>TAPESTRY-1867</a>] - Support a special
-                marker interface @Local to select just services defined within the same module
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1923'>TAPESTRY-1923</a>] -
-                ComponentClassResolver can/should provide access to all known page names
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2300'>TAPESTRY-2300</a>] - The RadioGroup
-                component always generates its control name from its component id; a new parameter should give some
-                override control over this
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2509'>TAPESTRY-2509</a>] - Add type coercions
-                from String to Renderable, Block
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2541'>TAPESTRY-2541</a>] - Tapestry DOM needs
-                basic methods to manipulate the DOM post-render
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2571'>TAPESTRY-2571</a>] - Add configuration to
-                turn off the automatic creation of ValueEncoders for Hibernate entities
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2594'>TAPESTRY-2594</a>] - Add translations for
-                Croatian (hr) locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2638'>TAPESTRY-2638</a>] - The name of the
-                event triggered by a Submit component should be configurable, to allow for multiple components that
-                trigger the same event handler method
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2644'>TAPESTRY-2644</a>] - Add a
-                ComponentResources.createPageLink(...) method that uses page class instead of page name
-            </li>
-        </ul>
-
-        <h2>Wish
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1964'>TAPESTRY-1964</a>] - Constant not used
-                from app-name in TapestryModule
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.14</h1>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1588'>TAPESTRY-1588</a>] - Validation error
-                images are included in the markup for fields without errors, even when the form has client validation
-                disabled
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1997'>TAPESTRY-1997</a>] - PersistentLocale is
-                lower-casing locales
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2181'>TAPESTRY-2181</a>] - The Component
-                Parameters Report should indicate if a component supports informal parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2384'>TAPESTRY-2384</a>] - OutOfMemoryError
-                exception if a regular file with no extension exists in a known component package
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2386'>TAPESTRY-2386</a>] - BeanDisplay
-                component should generate more semantic output using &lt;DL&gt;, &lt;DT&gt;, &lt;DD&gt; instead of
-                nested &lt;DIV&gt;s
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2390'>TAPESTRY-2390</a>] - Components or mixins
-                requiring external javascript files and rendered via AJAX do not work
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2408'>TAPESTRY-2408</a>] - FormInjector doesn't
-                work properly if the content contains multiple form elements
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2429'>TAPESTRY-2429</a>] - Script text added by
-                RenderSupport.addScript() should be added raw (with XML elements not encoded as entities)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2433'>TAPESTRY-2433</a>] - UTF8 characters are
-                not supported in the autocomplete mixin
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2447'>TAPESTRY-2447</a>] - Clicking on a pop-up
-                error bubble hides the bubble, then immediately fades it back in
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2448'>TAPESTRY-2448</a>] - When a bean class
-                inherits properties from a base class, field annotations of the base class properties are not visible
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2449'>TAPESTRY-2449</a>] - Groovy can inject a
-                base class into component classes that Tapestry rejects
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2450'>TAPESTRY-2450</a>] - Unlike reflective
-                access (via PropertyAdapter), PropertyConduit does not make field annotations visible
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2454'>TAPESTRY-2454</a>] - tapestry-hibernate
-                transaction management doesn't work as expected when commiting more than once on the same request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2459'>TAPESTRY-2459</a>] - Submit components
-                fires its event after &quot;validateform&quot; event, should be before (this is a change from prior
-                releases)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2460'>TAPESTRY-2460</a>] - Nested BeanEditors
-                (where the block parameter for a property to one BeanEditor contains another BeanEditor) results in a
-                StackOverflowException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2468'>TAPESTRY-2468</a>] - A deadlock related
-                to class loading (and creation) can occur
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2471'>TAPESTRY-2471</a>] - Parameter fields
-                that are updated during component event processing (such as a form submit) may not clear their values at
-                the end of the request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2473'>TAPESTRY-2473</a>] - Application locks
-                up, with all threads waiting for read lock inside ConcurrentBarrier
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2476'>TAPESTRY-2476</a>] - Unhelpful exception
-                messages when a null value is bound to a required parameter
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2478'>TAPESTRY-2478</a>] - Non-private fields
-                in Tapestry component classes should fail early, instead get confusing
-                javassist.bytecode.DuplicateMemberException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2481'>TAPESTRY-2481</a>] - ClassTransformation
-                acts as if all type-level annotations are inherited; it should filter out non-inherited annotations
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2483'>TAPESTRY-2483</a>] - The '%' symbol
-                passed to RenderSupport.addScript() is treated as a formatting directive, causing errors
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2484'>TAPESTRY-2484</a>] - Some built-in
-                Tapestry components are final and should be extensible
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2490'>TAPESTRY-2490</a>] - Palette component
-                forces an unwanted form submit under FireFox 3
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2498'>TAPESTRY-2498</a>] - Add JDK 1.6
-                compatibility via Javassist 3.8.0.GA
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2500'>TAPESTRY-2500</a>] - Using
-                @PageActivationContext on an int field results in a java.lang.Verify error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2501'>TAPESTRY-2501</a>] - Form input not
-                correctly decoded in case of non-english charsets
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2502'>TAPESTRY-2502</a>] - When the
-                GridDataSource reports more available rows than actual rows (due to race conditions with updates), the
-                Grid will fail because of IndexOutOfRange exceptions
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2504'>TAPESTRY-2504</a>] - Unspecified ajax
-                stream response encoding
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2507'>TAPESTRY-2507</a>] - Stylesheet (.css)
-                files included by components are not added if the component is added to the page via an ajax update
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2508'>TAPESTRY-2508</a>] -
-                HibernateGridDataSource calls Query.setFetchSize() not Query.setMaxResults()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2522'>TAPESTRY-2522</a>] - RequestPathOptimizer
-                will corrupt query parameters in the optimized URL if the parameters container slashes
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2528'>TAPESTRY-2528</a>] - It should not be
-                possible for component classes to be directly instantiated
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2538'>TAPESTRY-2538</a>] - The default binding
-                prefix for TextField.translate should be &quot;translate&quot; but is &quot;prop&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2543'>TAPESTRY-2543</a>] - Simplify Tapestry to
-                use UTF-8 (or another, configurable character set) across the entire application
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2404'>TAPESTRY-2404</a>] -
-                PropertyConduitSource could build a shared method to &quot;navigate&quot; to the final property
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2410'>TAPESTRY-2410</a>] - Service decorator
-                method not invoked for @Match with &quot;*&quot; in middle
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2443'>TAPESTRY-2443</a>] - Support de_DE
-                (German) localization
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2452'>TAPESTRY-2452</a>] - Introduce a new
-                symbol for the path to the application message catalog
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2461'>TAPESTRY-2461</a>] - Validation and Error
-                messages for Finnish locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2467'>TAPESTRY-2467</a>] - Method to remove or
-                replace DOM nodes from the document
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2469'>TAPESTRY-2469</a>] - Update Selenium
-                dependency to the current version, 1.0-beta-1
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2479'>TAPESTRY-2479</a>] - Upgrade to SLF4J
-                version 1.5.2 (supports older versions of Log4J better)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2480'>TAPESTRY-2480</a>] - Migrate Tapestry
-                &quot;what's new?&quot; and upgrade information up to the project level
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2519'>TAPESTRY-2519</a>] - Make
-                ClassNameLocatorImpl resolve resources from URLs that use a client-defined protocol
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2525'>TAPESTRY-2525</a>] - Properties files in
-                a message catalog should be read using UTF-8 encoding, rather than default encoding
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2531'>TAPESTRY-2531</a>] - Upgrade EasyMock
-                dependency to latest version, 2.4
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2534'>TAPESTRY-2534</a>] - An event context
-                should be passed through the Ajax request when AjaxFormLoop adds a new row
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1810'>TAPESTRY-1810</a>] - ServiceBinder.bind()
-                with an interface should check to see if there's an Impl class and bind to that.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2143'>TAPESTRY-2143</a>] - Framework should
-                include an email validator
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2217'>TAPESTRY-2217</a>] - Add ability to
-                render a page as a Document
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2235'>TAPESTRY-2235</a>] - Annotation for
-                managing a property as the page activation context
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2475'>TAPESTRY-2475</a>] - Add an
-                implementation of GridDataSource that can be used to optimize Hibernate queries
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2540'>TAPESTRY-2540</a>] - Tapestry should
-                place the Registry into the ServletContext using a well-known attribute name, for use by non-Tapestry
-                code
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2542'>TAPESTRY-2542</a>] - Add new method
-                hasBody() to ComponentResources, to reveal if component has a body or not
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2550'>TAPESTRY-2550</a>] - Allow Tapestry to
-                bind a service interface to a ServiceBuilder callback to create the service
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2552'>TAPESTRY-2552</a>] - Provide easier
-                overrides for Grid, BeanEditor property display &amp; edit blocks
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.13</h1>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2096'>TAPESTRY-2096</a>] - Confusing exception
-                when autobuilding a class fails due to class visibility
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2311'>TAPESTRY-2311</a>] - &quot;Parents before
-                Child&quot; concept for Component Rendering does not allow different rendering in subclasses
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2341'>TAPESTRY-2341</a>] - AJAX Zone updating
-                doesn't work correctly in IE
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2349'>TAPESTRY-2349</a>] - FormFragment should
-                be tied to the 'click' event of the associated checkbox
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2360'>TAPESTRY-2360</a>] - Forms in zones in
-                loops have wrong zone id after update
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2418'>TAPESTRY-2418</a>] - Form onsubmit event
-                handler for Zone component handling is ignored if any fields on the form have validation configured.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2422'>TAPESTRY-2422</a>] - The Exception report
-                will itself throw an exception if the exception being reported contains a write-only property
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2436'>TAPESTRY-2436</a>] - New FormInjectorDemo
-                using AjaxFormLoop fails if a row is added and then removed without a form submission in between
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2100'>TAPESTRY-2100</a>] - Validation and Error
-                messages for Portuguese locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2281'>TAPESTRY-2281</a>] - Update tutorial1 to
-                correctly indicate how and why to replace Jetty 5 log4j.jar
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2347'>TAPESTRY-2347</a>] - Add a &quot;resources&quot;
-                section to T5 home page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2393'>TAPESTRY-2393</a>] - The FormFragment
-                component should isolate its action stream (t:formdata hidden field) such that the entire client-side
-                element may be removed
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2428'>TAPESTRY-2428</a>] - tapestry-hibernate
-                should include as a dependency a default version of Hibernate with docs for how to override
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2439'>TAPESTRY-2439</a>] - The PropertyAdapter
-                interface should include a property to identify the containing class
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2440'>TAPESTRY-2440</a>] - The quickstart
-                archetype should enable debug logging (by default) for the new application
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2441'>TAPESTRY-2441</a>] - Upgrade to
-                Scriptaculous 1.8.1
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2442'>TAPESTRY-2442</a>] - When Tapestry is
-                operating inside FireFox with Firebug enabled, it should use the Firebug logging API
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.12</h1>
-
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1921'>TAPESTRY-1921</a>] - Add documentation
-                for Environmental annotation, environmental services
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2037'>TAPESTRY-2037</a>] - NullPointerException
-                caused by many rapid page refreshes
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2247'>TAPESTRY-2247</a>] - Transactions should
-                roll back, not commit, at the end of each request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2258'>TAPESTRY-2258</a>] - Error while
-                autobuilding BeanEditForm's bean
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2259'>TAPESTRY-2259</a>] - Registry startup
-                exceptions are not reported correctly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2260'>TAPESTRY-2260</a>] - Null relationships
-                cause an NPE inside Hibernate when being value encoded by RadioGroup
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2261'>TAPESTRY-2261</a>] - TriggerFragment
-                mixin should work with Radio as well as Checkbox components
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2262'>TAPESTRY-2262</a>] - TriggerFragment
-                mixin will run the &quot;show&quot; animation even when the fragment is already visible
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2265'>TAPESTRY-2265</a>] - Grid component
-                documentation could be simplified
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2267'>TAPESTRY-2267</a>] - Services that are
-                dependencies of other EagerLoad services may not be eagerly loaded
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2268'>TAPESTRY-2268</a>] - Docs: tapestry-core
-                -&gt; user guide -&gt; Request Processing broken &quot;Pipelines&quot; link
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2271'>TAPESTRY-2271</a>] - Expose the Grid's
-                rowsPerPage and row properties to Java code (instead of using @Property)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2276'>TAPESTRY-2276</a>] - Required validation
-                fails when used with select and blankOption=&quot;ALWAYS&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2284'>TAPESTRY-2284</a>] - Exceptions may be
-                incorrectly reported due to exception invoking initCause() when an exception already has a cause
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2293'>TAPESTRY-2293</a>] - BeanDisplay
-                formatting is off for fields with null values
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2305'>TAPESTRY-2305</a>] - When Tapestry throws
-                an exception due to an unrecognized embedded component id, it fails to list the available component ids
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2306'>TAPESTRY-2306</a>] - Mismatch between
-                client-side and server-side &quot;required&quot; validator
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2320'>TAPESTRY-2320</a>] - Problems with
-                validation popups on Internet Explorer
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2322'>TAPESTRY-2322</a>] - FormInjector doesn't
-                work properly if the content contains multiple elements
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2323'>TAPESTRY-2323</a>] - Select component
-                does not generate client-side validation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2333'>TAPESTRY-2333</a>] - RequestPathOptimizer
-                generates invalid URLs when a trailing slash is added to the request path
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2336'>TAPESTRY-2336</a>] - default.css
-                div.t-autocomplete-menu ul style shouldn't have width, height &amp; margin-left
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2338'>TAPESTRY-2338</a>] - Cached values for
-                methods annotated with @Cached do not reset at end of Ajax request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2339'>TAPESTRY-2339</a>] - The automatic
-                ValueEncoder for Hibernate entities will sometimes encode an entity as null (rather than its primary
-                key)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2340'>TAPESTRY-2340</a>] - Documentation about
-                informal parameters should reference the @SupportsInformalParameters annotation specifically
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2343'>TAPESTRY-2343</a>] - The FormInjector
-                should copy its class attribute to the new element (on the client side)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2346'>TAPESTRY-2346</a>] - Update the
-                tapestry-core adaptive API example to match the current set of events triggered by the Form component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2368'>TAPESTRY-2368</a>] - The value for the
-                Tapestry version number symbol is not initialized correctly and is always &quot;UNKNOWN&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2370'>TAPESTRY-2370</a>] - When injecting a
-                component into a field and the type is not a match the exception report is not sufficiently helpful
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2371'>TAPESTRY-2371</a>] - The QuickStart
-                Archetype should lock down the version of Jetty used (to 6.0, now that 7.0 snapshots are starting to
-                turn up)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2372'>TAPESTRY-2372</a>] - The Tapestry
-                tutorial should disable production mode (so that the full exception report can be seen)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2381'>TAPESTRY-2381</a>] - Linking a radio
-                button as a FormFragment trigger does not work in Internet Explorer
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2397'>TAPESTRY-2397</a>] - Mixins inside
-                components should have an id that extends from from the containing component, but is still unique and
-                URL safe
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2398'>TAPESTRY-2398</a>] -
-                ClassTransformation.addInjectedField() adds fields as protected which can cause exceptions due to
-                visibility
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2399'>TAPESTRY-2399</a>] - When an class loader
-                exeption occurs while loading a base class, a new exception (int the subclass) overwrites the more
-                useful exception from the base class
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2400'>TAPESTRY-2400</a>] - Advising a method
-                where the parameter type or return type is the class containing the advised method may throw a
-                java.lang.VerifyError
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2401'>TAPESTRY-2401</a>] -
-                NullPointerExceptions inside component bindings need to do a better job of explaining what was null
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2407'>TAPESTRY-2407</a>] - Update master POMs
-                to point to the moved OpenQA repositories (from which Selenium is obtained)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2409'>TAPESTRY-2409</a>] - Service method
-                advice fails when a parameter or return value type is an array
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2415'>TAPESTRY-2415</a>] - StreamResponse does
-                not work on WebLogic - response not flushed, and secondary exception raised
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2416'>TAPESTRY-2416</a>] - When the
-                HibernateValueEncoder is unable to convert a primary key into an entity, it should log an error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2424'>TAPESTRY-2424</a>] - Validation
-                occasionally triggers Stack Overflow Javascript Error in IE
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1924'>TAPESTRY-1924</a>] - Allow for templates
-                coming from stream
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2159'>TAPESTRY-2159</a>] - YSlow
-                Recommendation: Version bundled javascript and use far-future expires header
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2253'>TAPESTRY-2253</a>] - A brain dead
-                implementation of toString() on a custom data object can cause the Required validator to throw a
-                NullPointerExcepton
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2263'>TAPESTRY-2263</a>] - Add a reset() method
-                to the Grid component to reset paging and sorting to initial defaults
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2280'>TAPESTRY-2280</a>] - Add a zone parameter
-                to the BeanEditForm component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2285'>TAPESTRY-2285</a>] - Tutorial #1 talks
-                about &quot;setup()&quot; method instead of &quot;initialize()&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2294'>TAPESTRY-2294</a>] - The various link
-                components should only generate an id attribute if the id parameter is bound
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2297'>TAPESTRY-2297</a>] - Element should
-                expose namespace URL in which the element is defined
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2308'>TAPESTRY-2308</a>] - Don't create
-                HttpSession when persisted property is null
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2315'>TAPESTRY-2315</a>] -
-                InjectContainerWorker should use this or other local variable name than &quot;container&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2327'>TAPESTRY-2327</a>] - The Any and
-                FormInjector components should have an element parameter, for overriding the element name
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2334'>TAPESTRY-2334</a>] - Optimize JavaScript
-                generation for FormInjector
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2342'>TAPESTRY-2342</a>] - The InjectPageWorker
-                should use the ComponentSource service, rather than the RequestPageCache
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2354'>TAPESTRY-2354</a>] - Use &quot;flash&quot;
-                persistence on Form's ValidationTracker
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2364'>TAPESTRY-2364</a>] - YSlow
-                Recommendation: Write Scripts at bottom of page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2388'>TAPESTRY-2388</a>] - The Any component
-                should implement the ClientElement interface, and allocate a unique client id as necesssary
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2231'>TAPESTRY-2231</a>] - Make Tapestry
-                release number visible as a symbol (&quot;tapestry.version&quot;)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2256'>TAPESTRY-2256</a>] - Provide an
-                annotation to support automatic committing of the transaction after a component or service method
-                invocation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2319'>TAPESTRY-2319</a>] - Add support for
-                client-side form-level validation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2359'>TAPESTRY-2359</a>] - Grid component
-                should be able to update itself in place using an implicit Zone
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2365'>TAPESTRY-2365</a>] - It should be
-                possible to create decorators without directly writing Javassist code
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2378'>TAPESTRY-2378</a>] - Add a listener
-                interface for MarkupWriter, to allow code to be notified when elements are started and ended
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2379'>TAPESTRY-2379</a>] - FormInjector and
-                FormFragment should use the (new) MarkupWriterListener interface to place the hidden field(s) in an
-                appropriate location
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2380'>TAPESTRY-2380</a>] - Add AjaxFormLoop
-                component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2389'>TAPESTRY-2389</a>] - Add support to
-                ClassTransformation to allow ComponentClassTransformWorkers to provide advice to methods
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2405'>TAPESTRY-2405</a>] - Add @Log annotation
-                for component methods, that will log (at debug level) entry, exit and fail conditions
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2421'>TAPESTRY-2421</a>] - Allow
-                Tapestry4/Tapestry5 to be deployed in the same WAR
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2425'>TAPESTRY-2425</a>] - Tapestry annotations
-                such as @Validate, @DataType, etc. should be applicable to fields as well as accessor methods
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.11</h1>
-
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1475'>TAPESTRY-1475</a>] - Tapestry is missing
-                an API for clearing out persistent properties of a particular page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1605'>TAPESTRY-1605</a>] - The request encoding
-                (for component action requests) occurs too late; after query parameters of the request have been
-                accessed, which prevents the proper request encoding from being used
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1780'>TAPESTRY-1780</a>] - T5 Form component
-                NPE if no FORM_DATA found
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2103'>TAPESTRY-2103</a>] - When referencing a
-                method as part of a property expression, the method name must be case exact whereas the rest of the
-                property expression is case insensitive
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2108'>TAPESTRY-2108</a>] - Tapestry.onDOMLoaded
-                not working in konqueror
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2117'>TAPESTRY-2117</a>] - Circular @SubModule
-                will crash the IOC container with OutOfMemoryException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2141'>TAPESTRY-2141</a>] -
-                NullPointerExceptions under JDK 1.5 due to underlying ThreadLocal bug
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2145'>TAPESTRY-2145</a>] - Documentation
-                (including javadoc), refers to &quot;ZoneEffects&quot; instead of &quot;ZoneEffect&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2147'>TAPESTRY-2147</a>] - Typo in Tapestry
-                developer &quot;bible&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2149'>TAPESTRY-2149</a>] - Tapestry should
-                allow the pages and components to be referenced by their &quot;unstripped&quot; names as well
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2150'>TAPESTRY-2150</a>] - Tapestry should
-                recognize pages that are &quot;nested&quot; beneath other pages
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2151'>TAPESTRY-2151</a>] - Date format used by
-                DateField shows the year as two digits, not four
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2172'>TAPESTRY-2172</a>] - DateField component
-                shows up misplaced in major browsers
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2177'>TAPESTRY-2177</a>] - Conversion of
-                context parameters to server-side objects uses the TypeCoercer rather than the correct ValueEncoder
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2184'>TAPESTRY-2184</a>] - Null pointer
-                exception when creating an action link during a component event request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2188'>TAPESTRY-2188</a>] - GridModel and
-                GridDataSource should be changed to support multiple sort columns
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2190'>TAPESTRY-2190</a>] -
-                JSONObjectEventResultProcessor sends the wrong content type value
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2192'>TAPESTRY-2192</a>] -
-                DateField.xdoc:65:11: The element type &quot;p&quot; must be terminated by the matching end-tag &quot;&lt;/p&gt;&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2206'>TAPESTRY-2206</a>] - Tapestry should have
-                a different data type for numbers than for strings
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2208'>TAPESTRY-2208</a>] - The data type &quot;checkbox&quot;
-                should be renamed to &quot;boolean&quot; to reflect what it is, rather than how it is rendered
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2209'>TAPESTRY-2209</a>] - JSONObject response
-                contains additional {}
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2212'>TAPESTRY-2212</a>] - Index.tml generated
-                by Quickstart Archetype is broken due to recent Index page change.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2219'>TAPESTRY-2219</a>] - Enum label
-                overrides, as outlined in the Tapestry Tutorial, no longer work
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2220'>TAPESTRY-2220</a>] - In some cases,
-                component event requests are incorrectly interpretted as render requests (with a page activation
-                context)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2221'>TAPESTRY-2221</a>] - Exception message
-                when a context value is null or blank is confusing
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2226'>TAPESTRY-2226</a>] - Requests for the
-                root index page that include a page activation context fail with a 404 error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2229'>TAPESTRY-2229</a>] - BeanEditForm is
-                including properties that are read only, causing errors when the form is submitted
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2238'>TAPESTRY-2238</a>] - Returning a Block
-                from an Ajax form submission fails with IllegalStateException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2240'>TAPESTRY-2240</a>] - Groovy classes can
-                no longer be used as component classes because of the public metaClass field
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2245'>TAPESTRY-2245</a>] - GridDataSource
-                getAvailableRows() method called inefficiently
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1336'>TAPESTRY-1336</a>] - Refactor
-                ApplicationGlobals's store methods
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1612'>TAPESTRY-1612</a>] - Allow access to the
-                PageTester registry
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1835'>TAPESTRY-1835</a>] - Need an API to see
-                if a field is required or optional
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1890'>TAPESTRY-1890</a>] - Allow Tapestry
-                applications to NOT autoload modules from library
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1930'>TAPESTRY-1930</a>] - Render missing
-                parameter names in different font and/or text style.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1932'>TAPESTRY-1932</a>] - Extend PropertyModel
-                to allow access to annotations associated with the property
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1954'>TAPESTRY-1954</a>] - Move the
-                ClassNameLocator service to the tapestry-ioc module
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1955'>TAPESTRY-1955</a>] - Hibernate
-                SessionFactory close on webapp destroy
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1978'>TAPESTRY-1978</a>] - When supplying an
-                empty parameter binding, indicate problem parameter in error message.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1983'>TAPESTRY-1983</a>] - Add parameter to
-                Grid component that will add additional columns to the BeanModel
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1999'>TAPESTRY-1999</a>] - Allow the context
-                for an event to be specified as a List as well as an Object array
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2078'>TAPESTRY-2078</a>] - More understandable
-                error messages needed when incorrect classes found in component/page packages
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2087'>TAPESTRY-2087</a>] - Add &quot;else&quot;
-                parameter to Unless component.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2164'>TAPESTRY-2164</a>] - The Tapestry binary
-                distribution should include appropriate third party dependencies
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2173'>TAPESTRY-2173</a>] - When Tapestry must
-                instantiate an Application State Object without an explicit ApplicationStateCreator, it should autobuild
-                the object rather than just use the default constructor
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2180'>TAPESTRY-2180</a>] - Add release notes
-                about API changes
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2182'>TAPESTRY-2182</a>] -
-                NullPointerExceptions, due to reading nested properties that do not suppress null values, do not
-                indicate problematic expression for AbstractPropertyOutput derivatives
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2200'>TAPESTRY-2200</a>] - Need a mechanism via
-                which display and/or edit BeanBlocks may be overridden
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2204'>TAPESTRY-2204</a>] - Upgrade
-                tapestry-test to use Selenium 0.9.2
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2205'>TAPESTRY-2205</a>] - Upgrade to Javassist
-                3.7
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2218'>TAPESTRY-2218</a>] - Grid component
-                should render informal parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2222'>TAPESTRY-2222</a>] - The exception report
-                should highlight the lines related to the application in the stack trace
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2227'>TAPESTRY-2227</a>] - Typo in User Guide -&gt;
-                Persistent Data -&gt; Persistence Strategy
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2237'>TAPESTRY-2237</a>] - Grid should make its
-                &quot;currentPage&quot; value available to containing components
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1653'>TAPESTRY-1653</a>] - Provide automatic
-                ValueEncoders for Hibernate entities
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1778'>TAPESTRY-1778</a>] - Allow extending the
-                PageTester with extra modules for better integration with tapestry-spring
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1919'>TAPESTRY-1919</a>] - Let Tapestry control
-                HTTP/HTTPS in links via page configuration
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2169'>TAPESTRY-2169</a>] - Create an
-                ExceptionAnalysisDisplay component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2170'>TAPESTRY-2170</a>] - Add annotation to
-                inject a component defined in the template
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2197'>TAPESTRY-2197</a>] - Support for &quot;index&quot;
-                pages in packages
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2202'>TAPESTRY-2202</a>] - When the
-                BeanEditForm or BeanEditor components must create the bean to be editted, it should be autobuilt
-                (supporting injection) rather than just instantiated via the default constructor
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2214'>TAPESTRY-2214</a>] - Select component
-                should provide control over a blank option for optional selects
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2216'>TAPESTRY-2216</a>] - Add a @Property
-                annotation for fields to create a getter and setter method
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2241'>TAPESTRY-2241</a>] - Add new parameter
-                &quot;include&quot; to BeanEditor, Grid, etc. to limit properties to a provided list, and rename
-                existing &quot;remove&quot; parameter to &quot;exclude&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2244'>TAPESTRY-2244</a>] - Add @Cached
-                annotation for caching method values
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2246'>TAPESTRY-2246</a>] - Add @Persist
-                strategy for Hibernate entities
-            </li>
-        </ul>
-
-        <h2>Task
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1933'>TAPESTRY-1933</a>] - Setup infrastructure
-                for integration tests in tapestry-hibernate
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2162'>TAPESTRY-2162</a>] - Update roadmap on
-                site
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.10</h1>
-
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1518'>TAPESTRY-1518</a>] - Add support for JDK
-                1.5 Generics when defining pages and accessing bean properties
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1594'>TAPESTRY-1594</a>] - tapestry-upload
-                processes requests with multipart content even if Tapestry doesn't recognize the page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1727'>TAPESTRY-1727</a>] - Exception report
-                page doesn't display object arrays very nicely
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1850'>TAPESTRY-1850</a>] - Hibernate Sessions
-                are not being closed at the end of the request
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1853'>TAPESTRY-1853</a>] - Create a guide to
-                using the Grid component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1901'>TAPESTRY-1901</a>] - Grid component calls
-                prepare() and getRowValue() with incorrect values after items are removed
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1969'>TAPESTRY-1969</a>] - Error messages in
-                Errors component are misaligned in Internet Explorer 7
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2027'>TAPESTRY-2027</a>] -
-                AbstractIntegrationTestSuite does not allow custom selenium browser selection
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2048'>TAPESTRY-2048</a>] - Tapestry default.css
-                includes a bad rule for the autocomplete mixin's styles
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2052'>TAPESTRY-2052</a>] - Disabled fields
-                still perfom client side validation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2054'>TAPESTRY-2054</a>] - page activation
-                context with spaces are incorrectly decoded when using forms
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2061'>TAPESTRY-2061</a>] -
-                tapestry-component-report reports only components with parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2080'>TAPESTRY-2080</a>] -
-                PageRenderRequestFilter's service() method should throw IOException as PageRenderRequestHandler does
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2083'>TAPESTRY-2083</a>] - Using @Inject with a
-                primitive field fails with a &quot;cannot find constructor&quot; transformation error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2085'>TAPESTRY-2085</a>] - When a user submit a
-                form with a TextField and the value is missing or blank, the value null is passed through the component
-                to the model property
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2088'>TAPESTRY-2088</a>] -
-                ClassNotFoundException when passing an int[] parameter to a component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2089'>TAPESTRY-2089</a>] - File upload does not
-                ever invoke FileCleaner.exitWhenFinished()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2094'>TAPESTRY-2094</a>] - Exception when
-                creating service MultipartDecoder prevents the use of the Upload component
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2095'>TAPESTRY-2095</a>] - Incorrect
-                optimization for requests that contain a colon but do not contain a slash
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2099'>TAPESTRY-2099</a>] - Contribution to
-                PartialMarkupRenderer should be named &quot;Heartbeat&quot; not &quot;Heatbeat&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2112'>TAPESTRY-2112</a>] - Tapestry should use
-                ValueEncoders, not simple type coercion, to convert between event context values, URL strings, and event
-                method handler parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2118'>TAPESTRY-2118</a>] -
-                ComponentReport.extractSubpackage throws ArrayOutOfBoundException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2128'>TAPESTRY-2128</a>] - If-Modified-Since
-                always returns not modified for js and css in jar files
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1416'>TAPESTRY-1416</a>] - Add support for
-                programatically adding new columns to a Grid
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1642'>TAPESTRY-1642</a>] - When the Label
-                component has a body, it should render that rather than using the field's label
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1887'>TAPESTRY-1887</a>] - Extend the
-                AbstractLink class to provide access to the clientId and disabled flag, as well as to the URL
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2036'>TAPESTRY-2036</a>] - Add a parameter to
-                the Output component to add control over whether output is filtered or unfiltered
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2040'>TAPESTRY-2040</a>] - Allow subclasses of
-                the Autocomplete mixin greater control over the JSON and markup rendered to the client
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2081'>TAPESTRY-2081</a>] - It should be
-                possible to override a Grid column header as easily as overriding a Grid cell
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2097'>TAPESTRY-2097</a>] - Render exceptions
-                should identify the components that are actively rendering
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2101'>TAPESTRY-2101</a>] - DateField icon
-                should be configurable
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2134'>TAPESTRY-2134</a>] - Add a link to
-                InterLDAP project
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2142'>TAPESTRY-2142</a>] - Document the Layout
-                component pattern
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2144'>TAPESTRY-2144</a>] - Upgrade to Prototype
-                1.6.0.2
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1843'>TAPESTRY-1843</a>] - Tapestry should have
-                a &quot;production mode&quot; (vs. development mode)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2002'>TAPESTRY-2002</a>] - Add annotations to
-                easily set content type and response encoding
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2009'>TAPESTRY-2009</a>] - Add examples to
-                component reference
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2076'>TAPESTRY-2076</a>] - Component report
-                should break out as one class per page and include examples
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2084'>TAPESTRY-2084</a>] - Add control over
-                whether whitespace is stripped from templates by default
-            </li>
-        </ul>
-
-        <h2>Task
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1851'>TAPESTRY-1851</a>] - Extend scripts and
-                Ant build.xml to make rolling out a release easier
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2069'>TAPESTRY-2069</a>] - Replace LGPL
-                JavaScript calendar with a properly licensed one
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.9</h1>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2074'>TAPESTRY-2074</a>] - Tapestry fails with
-                URISyntaxException when the project folder contains spaces
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1647'>TAPESTRY-1647</a>] - Need to be able to
-                render elements before and after form labels
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1724'>TAPESTRY-1724</a>] - Add ability for
-                pages to be notified about errors within themselves so that they can override the default error handling
-                behavior
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.8</h1>
-
-        <em>Release not made public due to TAPESTRY-2074</em>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1315'>TAPESTRY-1315</a>] - Context expression
-                without period results in StringIndexOutOfBoundsException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1377'>TAPESTRY-1377</a>] - NullPointerException
-                invoking methods on the Request service
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1546'>TAPESTRY-1546</a>] - Add
-                inheritInformalParameters flag to the @Component annotation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1595'>TAPESTRY-1595</a>] - Add support for
-                ignoring paths that belong to other servlets in the web application
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1598'>TAPESTRY-1598</a>] - Tapestry should not
-                require explicit value encoders (via the encoder parameter) where it can automatically coerce the value
-                between string and the appropriate server-side type
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1600'>TAPESTRY-1600</a>] - Cannot render XML
-                from page templates: XML declaration and namespaces are removed
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1636'>TAPESTRY-1636</a>] - Template reloading
-                in Tomcat doesn't work
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1713'>TAPESTRY-1713</a>] - Tapestry doesn't run
-                correctly on Websphere 6.1 due to an incorrect implementation of HttpServletRequest.getServletPath()
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1823'>TAPESTRY-1823</a>] - It is not possible
-                to create a reasonable implementation of RequestExceptionHandler without importing internal interfaces
-                and services
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1840'>TAPESTRY-1840</a>] - Tapestry 5 does not
-                compile with Java 6
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1849'>TAPESTRY-1849</a>] - There are two
-                virtually identical PersistentLocaleImpl classes, one unused (probably an incomplete refactoring)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1880'>TAPESTRY-1880</a>] - DateField component
-                should support editting of time as well as date
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1926'>TAPESTRY-1926</a>] - DateField disabling
-                does not work
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1941'>TAPESTRY-1941</a>] - ValidationTracker
-                retaining field values inconsistently
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1948'>TAPESTRY-1948</a>] - Null pointer
-                exception when performing a partial page render
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1957'>TAPESTRY-1957</a>] - EnumValueEncoder
-                missing null check when converting to client value
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1984'>TAPESTRY-1984</a>] - Error occurs with a
-                multipart (file upload) request if the request encoding is null
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1988'>TAPESTRY-1988</a>] - Page activation
-                paremeter with escaped ( %2f ) slash ( &quot; / &quot; ) character not passed correctly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2005'>TAPESTRY-2005</a>] - Using component
-                classes as component parameters fails (Could not find a coercion)
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2007'>TAPESTRY-2007</a>] - PNG images related
-                to validation render poorly in IE
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2013'>TAPESTRY-2013</a>] - BeanEditor does not
-                support informal parameters
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2017'>TAPESTRY-2017</a>] - AssetDispatcher
-                doesn't stream asset when the 'If-Modified-Since' header can't be converted to a date
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2019'>TAPESTRY-2019</a>] - Autocompleter mixin
-                now fails with a NullPointerException
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2028'>TAPESTRY-2028</a>] - Mimimize whitespace
-                in the output markup
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2033'>TAPESTRY-2033</a>] - Optimized requests
-                paths are broken for root paths within contexts
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2044'>TAPESTRY-2044</a>] - Component action
-                requests are not capable of handling the case where the active page and the page containing the
-                component are different
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1478'>TAPESTRY-1478</a>] - Validation messages
-                for zh_CN locale
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1502'>TAPESTRY-1502</a>] - Generated URLs
-                should be relative to request base URL
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1599'>TAPESTRY-1599</a>] - Make it possible to
-                differentiate between preparing for a Form render vs. preparing for a Form submission
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1639'>TAPESTRY-1639</a>] - Components that
-                generate hyperlinks (ActionLink, PageLink, EventLink) should have a getLink() method to retrieve the
-                link as generated
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1671'>TAPESTRY-1671</a>] - Need a way to
-                redirect to external URLs
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1739'>TAPESTRY-1739</a>] - Add byte, short and
-                float Translators
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1802'>TAPESTRY-1802</a>] - Add documentation
-                for the intended project layout
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1818'>TAPESTRY-1818</a>] - Template parser
-                should handle CDATA blocks
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1830'>TAPESTRY-1830</a>] - Add ability to store
-                temporary data without having to define new properties
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1940'>TAPESTRY-1940</a>] - Italian translation
-                of messages for Error component, and validation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1991'>TAPESTRY-1991</a>] - It should be easier
-                to access an Application State Object without forcing its creation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2008'>TAPESTRY-2008</a>] - Validation popup
-                bubbles are somewhat distracting, should be simplified
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2012'>TAPESTRY-2012</a>] - Add BeanEditor
-                support for data types &quot;password&quot; and &quot;longtext&quot;
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2014'>TAPESTRY-2014</a>] - ComponentResources
-                should expose the page's lifecycle to interested listeners
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2021'>TAPESTRY-2021</a>] - It should be
-                possible to turn off the generation of CSS classes for table headers and table cells inside a Grid
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2049'>TAPESTRY-2049</a>] - Avoid reflection
-                when instantiating component instances
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2056'>TAPESTRY-2056</a>] - Add configurable
-                null handling for text fields
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2057'>TAPESTRY-2057</a>] - Add EventLink
-                component that can create a link that triggers an arbitrarily named event in its container
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1526'>TAPESTRY-1526</a>] - Strip the folder
-                name used to identify libraries from logical page names, just as the subfolder is stripped
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1847'>TAPESTRY-1847</a>] - Grid component
-                should output additional CSS classes into TDs to identify first and last column, first and last row
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2006'>TAPESTRY-2006</a>] - Replace naive page
-                pool mechanism with a more realistic one that can handle larger sites
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-2042'>TAPESTRY-2042</a>] - Make it possible to
-                merge action requests with rendering, as with Tapestry 4
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.7</h1>
-
-        <h2>Bug
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1541'>TAPESTRY-1541</a>] - Can't find page with
-                same name as parent folder
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1608'>TAPESTRY-1608</a>] - Some documentation
-                pages link to the out-of-date PDF tutorial, rather than the current HTML tutorial
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1627'>TAPESTRY-1627</a>] - Start page redirect
-                requests can return an empty response.
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1723'>TAPESTRY-1723</a>] - tapestry-upload does
-                not use character encoding
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1745'>TAPESTRY-1745</a>] - Palette javascript
-                errors in Internet Explorer
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1748'>TAPESTRY-1748</a>] - Field validators
-                continue to generate client-side JavaScript even though the Form is configured to not do client-side
-                validation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1816'>TAPESTRY-1816</a>] - Some tapestry-ioc
-                tests fail on IBM JDK due to subtle differences in JDK implementations
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1834'>TAPESTRY-1834</a>] - Fields not rewritten
-                when modifying existing methods
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1838'>TAPESTRY-1838</a>] - Palette javascript
-                Error when an item contains a quote
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1863'>TAPESTRY-1863</a>] - Tapestry should
-                verify that marker annotations have retention type runtime
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1864'>TAPESTRY-1864</a>] - Code sample in
-                documentation on how to add a new property editor incorrect
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1871'>TAPESTRY-1871</a>] - Null date displayed
-                in a Grid raises error
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1879'>TAPESTRY-1879</a>] - PageLink does not
-                have an anchor parameter
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1882'>TAPESTRY-1882</a>] - Formatted messages
-                are not localized properly
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1922'>TAPESTRY-1922</a>] - EJB3 Beans can not
-                be referenced as properties inside JBoss 4.0
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1925'>TAPESTRY-1925</a>] - Obscure exception
-                when a Collection (not a List) is used as a GridDataSource
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1934'>TAPESTRY-1934</a>] - Tapestry should
-                enforce that component classes only extend from other (transformed) component classes, or
-                java.lang.Object
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1936'>TAPESTRY-1936</a>] - Non-null return
-                value from form action event causes exception
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1937'>TAPESTRY-1937</a>] - If a single module
-                contains more than one integration test (subclass of AbstractIntegrationTestSuite), then the second one
-                fails
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1943'>TAPESTRY-1943</a>] - Site menu is the
-                same on all pages
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1947'>TAPESTRY-1947</a>] - Mangled URLs that
-                should result in standard 404 error pages are instead resulting in a Tapestry exception report
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1949'>TAPESTRY-1949</a>] - Component action
-                requests where the action context contains a period are not parsed correctly leading to request failures
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1951'>TAPESTRY-1951</a>] - &quot;No
-                ClassLoaders found for&quot; exception
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1952'>TAPESTRY-1952</a>] - The &quot;match any
-                event&quot; feature for the OnEvent handler is not useful and should be removed
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1966'>TAPESTRY-1966</a>] -
-                Non-private/non-static fields in a page should be an exception, not a warning
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1975'>TAPESTRY-1975</a>] - Template parser is
-                insufficiently picky about component ids
-            </li>
-        </ul>
-
-        <h2>Improvement
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1360'>TAPESTRY-1360</a>] - Add a @Width
-                annotation to set the width of input fields generated by BeanEditForm
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1576'>TAPESTRY-1576</a>] - Getting access to
-                the created configuration
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1862'>TAPESTRY-1862</a>] - Change Tapestry to
-                be compatible with Eclipse/Maven Plugin 0.0.11
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1897'>TAPESTRY-1897</a>] - Upgrade to Javassist
-                3.6 for improved JDK 1.6 support
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1900'>TAPESTRY-1900</a>] - Allow multiple
-                markers annotations per service
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1903'>TAPESTRY-1903</a>] - Upgrade to Prototype
-                1.6 / Scriptaculous 1.8
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1917'>TAPESTRY-1917</a>] - Tapestry should list
-                available pages, components and mixins at startup, and when classes change
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1918'>TAPESTRY-1918</a>] - Tapestry's reload
-                logic should be able to see additions, not just deletions and changes
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1935'>TAPESTRY-1935</a>] - Create an annotation
-                to add a CSS stylesheet to the rendered page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1942'>TAPESTRY-1942</a>] - Client side
-                validation should be triggered when the user moves out of a field
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1973'>TAPESTRY-1973</a>] - Tapestry 5 Tutorial
-                Improvements
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1990'>TAPESTRY-1990</a>] - More flexibility for
-                specifying timeouts and other time periods in minutes, seconds, etc. rather than milliseconds
-            </li>
-        </ul>
-
-        <h2>New Feature
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1476'>TAPESTRY-1476</a>] - Component events for
-                input translation and validation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1509'>TAPESTRY-1509</a>] - Create an annotation
-                to add a static JavaScript library to the rendered page
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1829'>TAPESTRY-1829</a>] - Allow @Marker
-                annotation on module classes, to automatically mark all services of that module with the annotation
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1860'>TAPESTRY-1860</a>] - Extend ObjectLocator
-                to create a proxied, autobuilt service
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1891'>TAPESTRY-1891</a>] - Tapestry IoC Service
-                Proxies should be serializable
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1931'>TAPESTRY-1931</a>] - Add an annotation to
-                allow explicit setting of property types
-            </li>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1994'>TAPESTRY-1994</a>] - Allow easy override
-                of the default Tapestry stylesheet
-            </li>
-        </ul>
-
-        <h2>Task
-        </h2>
-        <ul>
-            <li>[<a href='https://issues.apache.org/jira/browse/TAPESTRY-1914'>TAPESTRY-1914</a>] - Nightly build broken
-                inside quickstart module
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.6</h1>
-
-
-        <h2>Bug</h2>
-        <ul>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1328'>TAPESTRY-1328</a>] - Support for form
-                elements inside a Grid
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1345'>TAPESTRY-1345</a>] - Exception generated
-                when a page does not have a template is
-                confusing: &quot;No root element has been defined.&quot;
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1389'>TAPESTRY-1389</a>] - Coercion to numeric
-                types does not check for null
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1417'>TAPESTRY-1417</a>] - CSS classes on text
-                input fields are discarded when field is
-                in error
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1471'>TAPESTRY-1471</a>] - Controlling the
-                order of properties within a BeanModel is
-                too complex and needs an improved API
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1506'>TAPESTRY-1506</a>] - Add support for
-                anchors when generating links
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1597'>TAPESTRY-1597</a>] - When a List is
-                converted to a SelectModel, the keys are
-                converted unnecessarily to strings
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1604'>TAPESTRY-1604</a>] - Attributes of
-                elements do not have entity values quoted
-                (including the &amp;quot; character itself) resulting in invalid
-                markup
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1606'>TAPESTRY-1606</a>] - Anchor-Links in
-                &quot;Component Index&quot; web page for T5
-                doesn't work with FireFox
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1625'>TAPESTRY-1625</a>] - T5 Form Component
-                Generates Script Tag With Deprecated
-                Language Attribute
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1626'>TAPESTRY-1626</a>] - T5 Form Component
-                Generates contactForm:errors Div With
-                Invalid Empty List
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1629'>TAPESTRY-1629</a>] - Licenses are not
-                distributed correctly
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1631'>TAPESTRY-1631</a>] - tapestry-spring
-                initializes lazy-init beans too soon
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1648'>TAPESTRY-1648</a>] - Coercing from null
-                to BigDecimal causes an NPE
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1667'>TAPESTRY-1667</a>] - Parameters bound to
-                expansions may be cached when they
-                should not be
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1702'>TAPESTRY-1702</a>] - Missing coercion
-                from primitive arrays to List
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1709'>TAPESTRY-1709</a>] - Radio component
-                throws an exception when used with
-                RadioGroup and Label
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1730'>TAPESTRY-1730</a>] - Order of event
-                handler method invocation should be greatest
-                number of parameters to fewest
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1731'>TAPESTRY-1731</a>] - @Inject @Symbol does
-                not work inside a component
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1735'>TAPESTRY-1735</a>] - PageLink doesn't
-                have a disabled parameter
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1746'>TAPESTRY-1746</a>] - Input validation
-                documentation includes an invalid template
-                that results in a parser error
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1752'>TAPESTRY-1752</a>] - Expansions used in
-                bound parameters are never re-evaluated
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1769'>TAPESTRY-1769</a>] - Bug when component
-                name i same as component package
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1785'>TAPESTRY-1785</a>] - Move non-component
-                classes out of corelib.components
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1789'>TAPESTRY-1789</a>] - Exception messages
-                listing pages, components, etc, should
-                strip out the &quot;core/&quot; prefix
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1790'>TAPESTRY-1790</a>] - Component Report
-                generates bad links to apidocs when the
-                apidocs are generated at the project level
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1809'>TAPESTRY-1809</a>] - archetype.xml
-                doesn't account for change to .tml
-                (/WEB-INF/Start.html should be /Start.tml)
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1815'>TAPESTRY-1815</a>] - The InjectComponent
-                annotation is misnamed, should be
-                InjectContainer
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1824'>TAPESTRY-1824</a>] - Code example on
-                Alias page of tapestry-core guide is wrong,
-                has extra &quot;new&quot;
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1825'>TAPESTRY-1825</a>] - Full Tapestry
-                releases should have the artifacts deployed
-                with the updateReleaseInfo flag set
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1831'>TAPESTRY-1831</a>] - Builtin services
-                (TypeCoercer, ClassFactory, etc.) are not
-                marked with the @Builtin annotation
-            </li>
-        </ul>
-
-        <h2>Improvement</h2>
-        <ul>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1372'>TAPESTRY-1372</a>] - Allow contributions
-                to the Hibernate Configuration
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1469'>TAPESTRY-1469</a>] - Templates should
-                support an outer t:container element for
-                when a template consists of non-tree structured content
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1579'>TAPESTRY-1579</a>] - Allow multiple
-                BeanEditor components within a form
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1603'>TAPESTRY-1603</a>] - BeanEditForm submit
-                button cannot be uniquely identified for
-                CSS purposes
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1607'>TAPESTRY-1607</a>] - Tapestry modules
-                should have a link to Tapestry's JIRA
-                instance
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1615'>TAPESTRY-1615</a>] - ClassTransformation
-                needs ability to rename a method and
-                extend the beginning of a method
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1619'>TAPESTRY-1619</a>] - Add coercion from
-                type [C ( simple char ) to type
-                java.lang.Character
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1633'>TAPESTRY-1633</a>] -
-                PropertyDisplayContext should expose the id/propertyName of
-                the currently rendering property
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1697'>TAPESTRY-1697</a>] - There is no link to
-                the bug database on the Tapestry project
-                site
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1737'>TAPESTRY-1737</a>] - When a property name
-                in a property expression is not valid,
-                the exception message should list the available property names
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1738'>TAPESTRY-1738</a>] - Render debugging
-                output is incredibly verbose, and should
-                only be output at the TRACE (i.e. more vebose than DEBUG)
-                logging level
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1750'>TAPESTRY-1750</a>] - Separate out
-                Tapestry annotations for use in other tiers
-                (without dragging in all of Tapestry)
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1777'>TAPESTRY-1777</a>] - Allow HTML 4
-                doctypes to be used in component templates
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1781'>TAPESTRY-1781</a>] - Tapestry templates
-                should use the extension .tml (Tapestry
-                Markup Language) since they may contain other than (X)HTML
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1800'>TAPESTRY-1800</a>] - Having two different
-                Inject annotations with virtually
-                identical behavior is confusing, they should be consolidated
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1808'>TAPESTRY-1808</a>] - Automatic coercion
-                from String to File would be handy
-            </li>
-        </ul>
-
-        <h2>New Feature</h2>
-        <ul>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1358'>TAPESTRY-1358</a>] - Create BeanDisplay
-                component to display the content of a
-                single bean
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1634'>TAPESTRY-1634</a>] - Create a DateField
-                component that uses client-side
-                JavaScript
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1676'>TAPESTRY-1676</a>] - Add component for
-                editing a single bean property
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1722'>TAPESTRY-1722</a>] - Startup service for
-                Tapestry IoC to perform initialization
-                when the Registry starts up
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1741'>TAPESTRY-1741</a>] - TestBase/MockTester
-                should give each Mock a name based on
-                the type of mock, which assists with debugging
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1742'>TAPESTRY-1742</a>] - Support removal and
-                reordering of BeanModel properties
-                inside Grid and BeanEditForm components
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1786'>TAPESTRY-1786</a>] - Add JVM system
-                property for adding modules to the IoC
-                container
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1798'>TAPESTRY-1798</a>] - Injection via Marker
-                Annotations
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1841'>TAPESTRY-1841</a>] - Extend
-                PageRenderSupport to have equivalent support for CSS
-                stylesheets
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1845'>TAPESTRY-1845</a>] - Need a simple way to
-                access a component's messages for use
-                in testing
-            </li>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1848'>TAPESTRY-1848</a>] - Make status of
-                Tapestry IoC services available
-                programattically and via a simple user interface
-            </li>
-        </ul>
-
-        <h2>Task</h2>
-        <ul>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1367'>TAPESTRY-1367</a>] - Documentation error
-                on Application State page:
-                ApplicationStateConfiguration should be
-                ApplicationStateContribution
-            </li>
-        </ul>
-
-        <h2>Wish</h2>
-        <ul>
-            <li>
-                [<a href='https://issues.apache.org/jira/browse/TAPESTRY-1704'>TAPESTRY-1704</a>] - Convert logging
-                strategy from commons-logging to Simple
-                Logging Facade for Java (SLF4J)
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.5</h1>
-
-
-        <h2>Bug</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1294">TAPESTRY-1294</a>] - Tapestry does not
-                set an output encoding which prevents
-                Unicode content from being output correctly
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1423">TAPESTRY-1423</a>] - Tapestry IoC fails
-                to get the correct class from
-                javassist.CtClass when the instance is already a proxy
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1425">TAPESTRY-1425</a>] - Eager Loaded service
-                (builder) cannot use object injection
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1434">TAPESTRY-1434</a>] - Service builder
-                methods do not allow services to be defined
-                in terms of non-interface class, even though ServiceBinder does
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1443">TAPESTRY-1443</a>] -
-                org.apache.tapestry5.annotations.Service annotation is
-                ignored
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1447">TAPESTRY-1447</a>] - Headers are not set
-                appropiately to allow the browser to
-                cache javascript resources.
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1451">TAPESTRY-1451</a>] - T5 website: Broken
-                Link to script.aculo.us
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1464">TAPESTRY-1464</a>] - Cannot Subclass
-                TapestryFilter to add custom init() and
-                destroy() logic
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1465">TAPESTRY-1465</a>] - BeanEditForm and
-                Grid are not extensible in terms of
-                supported property types to be editted or viewed
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1480">TAPESTRY-1480</a>] - Implement Radio
-                component
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1481">TAPESTRY-1481</a>] - ActionLink and
-                PageLink render an id attribute, but don't
-                provide a clientId property, making it impossible to reference
-                them in JavaScript
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1491">TAPESTRY-1491</a>] - No way to get the
-                logical page name for a page instance
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1494">TAPESTRY-1494</a>] - Artifact snapshots
-                are being deployed to the
-                tapestry-repository, not the tapestry-snapshot-repository
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1497">TAPESTRY-1497</a>] - EagerLoad is too
-                early for a normal Tapestry application
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1498">TAPESTRY-1498</a>] - nbsp in template
-                causes exception in SAX Parser.
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1504">TAPESTRY-1504</a>] - When a Map is
-                converted to a SelectModel, the keys are
-                converted unnecessarily to strings
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1511">TAPESTRY-1511</a>] - VerifyError when
-                using inner classes inside components
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1528">TAPESTRY-1528</a>] - No way to cleanup
-                the thread without access to the Registry
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1537">TAPESTRY-1537</a>] - Release notes for
-                5.0.4 claim that TAPESTRY-1294 is fixed,
-                which it isn't
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1559">TAPESTRY-1559</a>] - application package
-                initializer removed while merging svn
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1562">TAPESTRY-1562</a>] - Spurious warnings
-                about missing component ids due to
-                case-sensitive checking of template ids vs. declared components
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1571">TAPESTRY-1571</a>] -
-                CheckForUpdatesFilter can cause deadlock
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1583">TAPESTRY-1583</a>] - The &quot;block:&quot;
-                binding prefix may only reference
-                blocks that appear before the reference in the template, an
-                error occurs if the block is defined later in the template
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1585">TAPESTRY-1585</a>] - tapestry-upload has
-                an incorrect manifest entry for the
-                module class
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1590">TAPESTRY-1590</a>] - Page templates in
-                WEB-INF located based on logical page name
-                (which may not match the class name)
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1593">TAPESTRY-1593</a>] - Various typos in
-                docs/comments
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1596">TAPESTRY-1596</a>] - Contributing a
-                service to the Alias service configuration
-                fails if the service uses a non-standard scope, such as
-                perthread
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1614">TAPESTRY-1614</a>] - No &quot;expires&quot;
-                header should be set in asset
-                download requests, as that can confuse the browser, preventing
-                changes versions of assets from being downloaded
-            </li>
-        </ul>
-
-        <h2>Improvement</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1359">TAPESTRY-1359</a>] - The BeanEditForm
-                component should attempt to create its
-                object parameter if it is null
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1409">TAPESTRY-1409</a>] - Extend
-                StreamResponse to support setting headers in the
-                Response prior to streaming the contents from the InputStream
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1439">TAPESTRY-1439</a>] - Convert Tutorial
-                from Pages/PDF to new module using APT
-                format
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1457">TAPESTRY-1457</a>] - No way for PageLink
-                to distinguish between an explicitly
-                empty page activate context and normal delegation to the target
-                page's passivate event
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1479">TAPESTRY-1479</a>] - It would be nice to
-                have a pipeline between the Dispatchers
-                and the RequestHandlers (for component action requests and for
-                page render requests)
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1493">TAPESTRY-1493</a>] - Grid component
-                should display sort icon next to all sortable
-                fields
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1505">TAPESTRY-1505</a>] - The quickstart
-                archetype should include an empty bind()
-                method
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1523">TAPESTRY-1523</a>] - Split mock-control
-                managing logic in TestBase so that it can
-                be used in a JUnit test suite
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1572">TAPESTRY-1572</a>] -
-                AbstractIntegrationTestSuite should mark setup() and
-                cleanup() as alwaysRun
-            </li>
-        </ul>
-
-        <h2>New Feature</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1354">TAPESTRY-1354</a>] - Implement a file
-                upload component
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1356">TAPESTRY-1356</a>] - Implement
-                client-side field persistence
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1369">TAPESTRY-1369</a>] - There should be a
-                global application-level message catalog
-                for messages common to all pages &amp; components
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1370">TAPESTRY-1370</a>] - Add a component
-                event result processor for Class instances
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1373">TAPESTRY-1373</a>] - Recreate T4's
-                Palette component for T5
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1446">TAPESTRY-1446</a>] - @Symbol annotation
-                for injecting a specific symbol
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1463">TAPESTRY-1463</a>] - Way to inherit
-                binding from containing component
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1466">TAPESTRY-1466</a>] - Support expansions
-                inside ordinary attributes
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1492">TAPESTRY-1492</a>] - The Session
-                interface needs methods for getting and setting
-                the session timeout
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1503">TAPESTRY-1503</a>] - BeanEditForm should
-                default its object parameter to
-                container property that matches its id
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1610">TAPESTRY-1610</a>] - Implement regular
-                expression based input validation (client
-                and server)
-            </li>
-        </ul>
-
-        <h2>Task</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1485">TAPESTRY-1485</a>] - Remove the Any
-                component --- not necessary because of
-                expansions in attributes
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1501">TAPESTRY-1501</a>] - Remove Img
-                component, not needed because expansions are
-                allowed in attributes
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1566">TAPESTRY-1566</a>] - Hibernate
-                configuration documentation is out of date /
-                broken
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1570">TAPESTRY-1570</a>] - wrong link to
-                RequestGlobals in the guide
-            </li>
-        </ul>
-
-        <h2>Wish</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1472">TAPESTRY-1472</a>] - The module and
-                filter are coded against Spring's
-                WebApplicationContext, but doesn't use any APIs not present in
-                ApplicationContext
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.4</h1>
-
-
-        <h2>Bug</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1263">TAPESTRY-1263</a>] - Can't use HTML
-                entities in templates
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1264">TAPESTRY-1264</a>] - Can't specify
-                DOCTYPE in template
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1317">TAPESTRY-1317</a>] - Service contributors
-                are not case insensitive with respect
-                to the service id.
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1333">TAPESTRY-1333</a>] - Cannot bundle
-                component classes &amp; templates in
-                WEB-INF/classes when deploying to Tomcat (&amp; JBoss)
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1337">TAPESTRY-1337</a>] - PageTester can't
-                handle pages with context assets
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1338">TAPESTRY-1338</a>] -
-                ApplicationStateObjects not properly instantiated when using
-                PageTester
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1357">TAPESTRY-1357</a>] - Quickstart archetype
-                still uses out-of-date @Id and
-                @Contribute annotations
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1363">TAPESTRY-1363</a>] - Some of the Java
-                comments in the generated AppModule class
-                are out of date
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1371">TAPESTRY-1371</a>] - The Submit component
-                should have a defer parameter, but just
-                has a _defer private instance variable.
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1387">TAPESTRY-1387</a>] - @Inject should
-                expose annotations on the field to the
-                ObjectProvider
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1411">TAPESTRY-1411</a>] - PageLink component
-                does not render informal parameters
-            </li>
-        </ul>
-
-        <h2>Improvement</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1365">TAPESTRY-1365</a>] - RandomDataSource
-                should allow any type of value for the
-                oneOf() method, not just String
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1424">TAPESTRY-1424</a>] - @OnEvent annotation
-                should be simplified to specify at most
-                one event and at most one component id
-            </li>
-        </ul>
-
-        <h2>New Feature</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1330">TAPESTRY-1330</a>] - The @Scope annotaton
-                should be allowed on service
-                implementation classes (in addition to service builder methods
-                inside a module class)
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1331">TAPESTRY-1331</a>] - Need an @InjectValue
-                annotation for cases where a value to
-                insert contains a colon
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1353">TAPESTRY-1353</a>] - Include copies of
-                common DTDs in the JAR such that the
-                template parser does not need to access the network to parse
-                templates with specific doctypes
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1368">TAPESTRY-1368</a>] - The
-                @ApplicationState annotation should be capable of
-                enhancing a boolean field to indicate whether the state object
-                already exists
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1382">TAPESTRY-1382</a>] - Strip out
-                duplication of names in the class name -> page
-                name / component type conversion
-            </li>
-        </ul>
-
-
-        <h1>Release Notes - Tapestry - Version 5.0.3</h1>
-
-        <h2>Bug</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1270">TAPESTRY-1270</a>] - The StringTranslator
-                should return null when an empty text
-                field is submitted with a form, not the empty string
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1275">TAPESTRY-1275</a>] - Recursive Components
-                cause heap space overflow
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1282">TAPESTRY-1282</a>] - Assets should be
-                streamed with an appropriate content type,
-                even when the container is unable to provide the content type
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1291">TAPESTRY-1291</a>] - Race condition in
-                IoC service creation can create runtime
-                failures
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1297">TAPESTRY-1297</a>] - incorrect context
-                generated for URLs with final slash
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1300">TAPESTRY-1300</a>] - Unit tests require
-                english locale to run succesfully
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1303">TAPESTRY-1303</a>] - Update licences and
-                notice files for external dependencies
-                (javassist, etc.)
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1314">TAPESTRY-1314</a>] - ExceptionAnalyzer
-                throws NPE when an exception message is
-                null
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1316">TAPESTRY-1316</a>] - Address class loader
-                issues inside JBoss
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1321">TAPESTRY-1321</a>] - JBoss deployment
-                error
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1322">TAPESTRY-1322</a>] - Spurious errors in
-                log concerning page "favicon"
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1329">TAPESTRY-1329</a>] - The favicon.ico file
-                is not generated into the project by
-                the quickstart archetype
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1343">TAPESTRY-1343</a>] - Under Tomcat, a root
-                path URL such as http://.../context
-                (without a trailing slash) causes a
-                StringIndexOutOfBoundsException inside PageRenderDispatcher
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1344">TAPESTRY-1344</a>] - Render phase methods
-                should be allowed to return a
-                Renderable object
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1346">TAPESTRY-1346</a>] - tapestry-hibernate
-                module depends on missing
-                ComponentClassLocator service
-            </li>
-        </ul>
-
-        <h2>Improvement</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1025">TAPESTRY-1025</a>] - Add support for
-                eager loading of services
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1295">TAPESTRY-1295</a>] - Event handling
-                methods that have too many parameters for the
-                event context should be silently skipped
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1298">TAPESTRY-1298</a>] - ExceptionReport can
-                be too verbose and repetative
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1308">TAPESTRY-1308</a>] - Exceptions while
-                building services are poorly reported
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1320">TAPESTRY-1320</a>] - Render phase
-                BeginRender should respond to a "false" result
-                by switching to phase AfterRender (rather than phase
-                CleanupRender).
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1323">TAPESTRY-1323</a>] - Support caseless
-                mapped service configurations
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1335">TAPESTRY-1335</a>] - The
-                "infrastructure:" object provider prefix is too long and
-                the name is confusing, rename to "alias:"
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1339">TAPESTRY-1339</a>] - Rework Tapestry IoC
-                to remove the concept of module ids and
-                qualified service ids
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1342">TAPESTRY-1342</a>] - When an exception is
-                reported concerning a particular
-                method, the string identifying the method should include the
-                file name and line number (if available)
-            </li>
-        </ul>
-
-        <h2>New Feature</h2>
-        <ul>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1276">TAPESTRY-1276</a>] - If component should
-                include an optional negate parameter
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1284">TAPESTRY-1284</a>] - Tapestry Spring
-                integration module
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1292">TAPESTRY-1292</a>] - Allow lists to be
-                used as select models
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1302">TAPESTRY-1302</a>] - JavaScript support
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1311">TAPESTRY-1311</a>] - Identify type of
-                component via tag element name in templates
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1319">TAPESTRY-1319</a>] -
-                tapestry.InfrastructureOverrides is not yet implemented
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1325">TAPESTRY-1325</a>] - Add an "asset:"
-                object provider, to simplfy injecting assets
-                into services
-            </li>
-            <li>
-                [<a href="https://issues.apache.org/jira/browse/TAPESTRY-1341">TAPESTRY-1341</a>] - Allow service
-                builders named "build" and determine service
-                id from the result type
-            </li>
-        </ul>
-
-    </body>
-</document>
diff --git a/maint-5-2/src/site/xdoc/release-notes-5.1.xml b/maint-5-2/src/site/xdoc/release-notes-5.1.xml
deleted file mode 100644
index 315c6bd..0000000
--- a/maint-5-2/src/site/xdoc/release-notes-5.1.xml
+++ /dev/null
@@ -1,908 +0,0 @@
-<document>

-    <!--

-       Copyright 2007, 2008 The Apache Software Foundation

-

-       Licensed under the Apache License, Version 2.0 (the "License");

-       you may not use this file except in compliance with the License.

-       You may obtain a copy of the License at

-

-           http://www.apache.org/licenses/LICENSE-2.0

-

-       Unless required by applicable law or agreed to in writing, software

-       distributed under the License is distributed on an "AS IS" BASIS,

-       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-       See the License for the specific language governing permissions and

-       limitations under the License.

-    -->

-

-    <properties>

-        <title>Tapestry Project Release Notes</title>

-    </properties>

-    <body>

-

-        <p>This document contains release notes for Tapestry 5, release 5.1.

-            There are also <a href="release-notes-5.0.html">release notes for Tapestry 5.0</a>.

-        </p>

-

-

-        <h1>Release Notes - Tapestry 5 - Version 5.1.0.5</h1>

-

-        <h2>Bug

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-604'>TAP5-604</a>] -

-                ValidationMessages_da.properties contains invalid format strings

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-664'>TAP5-664</a>] - Incorrect &quot;legacy&quot;

-                URI specified in the templates documentation

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-665'>TAP5-665</a>] - IE 6 on a tapestry SSL page

-                complains about non-secure items (caused by blackbird js-logging component)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-666'>TAP5-666</a>] - Property expression can not

-                pass a boolean constant into a method

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-668'>TAP5-668</a>] - BeanModel documentation should

-                be more clear that a property must exist when using add(String).

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-670'>TAP5-670</a>] - ParallelExecutorTest can't be

-                compiled due to cast errors

-            </li>

-        </ul>

-

-        <h2>Improvement

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-214'>TAP5-214</a>] - Document use of asset: and

-                context: to reference assets directly from a template file

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-506'>TAP5-506</a>] - Italian localization for

-                DateField component

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-531'>TAP5-531</a>] - Add cookbook documentation to

-                show how to use the delegate component for switch-like behaviour

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-579'>TAP5-579</a>] - Finnish internationalization

-                is missing some of the keys in 5.1

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-651'>TAP5-651</a>] - If component documentation:

-                identify the use of the p: namespace

-            </li>

-        </ul>

-

-        <h2>New Feature

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-223'>TAP5-223</a>] - Allow properties files (on

-                classpath or in the context) to be used as SymbolProviders

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-580'>TAP5-580</a>] - Add get() method to TestBase

-                to allow read access to private fields of objects via reflection

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-601'>TAP5-601</a>] - Add German translation for

-                client-side JavaScript messages

-            </li>

-        </ul>

-

-

-        <h1>Release Notes - Tapestry 5 - Version 5.1.0.4</h1>

-

-        <h2>Bug

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-130'>TAP5-130</a>] - Tapestry component report

-                fails if the project's path name contains spaces

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-353'>TAP5-353</a>] - Description of volatile

-                parameter for the Grid component is misleading, should be clear that application is responsible for the

-                tracking the row

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-500'>TAP5-500</a>] - Small typo in javadoc comments

-                for Cookies service.

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-501'>TAP5-501</a>] - In the Component interface

-                javadoc the sentence &quot;This interface is likely to change without notice.&quot; should be deleted or

-                the interface be moved to an internal package

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-524'>TAP5-524</a>] - Published parameters exposed

-                from embedded components not included in Component Reference

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-571'>TAP5-571</a>] - Misplaced &lt;t:parameter&gt;

-                results in an inscrutable exception

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-613'>TAP5-613</a>] - Returning a Link to a secure

-                page from an ajax event handler method causes the redirect to be invalid if the event is sent from an

-                insecure page

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-622'>TAP5-622</a>] - Client ids should not contain

-                the ':' character, as that can confuse WebKit-based browsers

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-631'>TAP5-631</a>] - Contributed

-                ApplicationInitializer not always executed when using tapestry-spring

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-640'>TAP5-640</a>] - DOM manipulation during

-                rendering can NPE

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-641'>TAP5-641</a>] - Inherited parameters that are

-                themselves inherited will appear null

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-644'>TAP5-644</a>] - When using PageTester, an

-                exception in the page is hidden by an exception rendering the exception report page (pt. 2)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-646'>TAP5-646</a>] - When Tapestry is combining

-                JavaScript files, it should check for a JS file that ends with an unterminated comment, and add the

-                comment terminator

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-647'>TAP5-647</a>] - Quickstart archetype should

-                not include the tapestry-test dependency, as the Jetty embedded inside Selenium gets in the way of

-                RunJettyRun inside Eclipse

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-648'>TAP5-648</a>] - Tapestry should be more

-                careful about where, inside the &lt;head&gt;, it adds new elements

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-649'>TAP5-649</a>] - Forms containing loop

-                components which contain no form elements still encode into t:formdata hidden field

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-652'>TAP5-652</a>] - Script tag is missing required

-                attribute type

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-653'>TAP5-653</a>] - Appending a context to an URL

-                of the Index page results in too many slashes

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-659'>TAP5-659</a>] - In some servlet containers,

-                access to virtual assets can result in a GZIP-related exception

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-660'>TAP5-660</a>] - Type coercion from String to

-                DateFormat will always coerce using the server's default locale, rather than the current per-thread

-                locale

-            </li>

-        </ul>

-

-        <h2>Improvement

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-274'>TAP5-274</a>] - Application State Object is a

-                misleading term; rename @ApplicationState to @SessionState

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-612'>TAP5-612</a>] - URLRewriting should

-                distinguish between incoming and outgoing requests

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-629'>TAP5-629</a>] - Ensure blackbird console

-                appears on top of other page elements

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-654'>TAP5-654</a>] - Improve component classes

-                documentation to be clearer about relationship between @Component and t:id

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-655'>TAP5-655</a>] - Quickstart archetype should

-                set the application version number to match the module version number

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-657'>TAP5-657</a>] - The FieldFocusPriority enum

-                should include an additional value, OVERRIDE, to indicate a manually focused field (with highest

-                priority)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-661'>TAP5-661</a>] - A number of minor

-                documentation typos

-            </li>

-        </ul>

-

-        <h2>New Feature

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-624'>TAP5-624</a>] - Support for javascript

-                callbacks on zone update

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-642'>TAP5-642</a>] - Document how to configure

-                Glassfish 2.1 to deploy Tapestry applications

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-662'>TAP5-662</a>] - Component documentation should

-                identify the events that may be triggered by a component

-            </li>

-        </ul>

-

-

-        <h1>Release Notes - Tapestry 5 - Version 5.1.0.3</h1>

-

-        <h2>Bug

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-469'>TAP5-469</a>] - ResponseCompressionAnalyzer:

-                application/json responses should be uncompressable by default

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-596'>TAP5-596</a>] - Misleading description of

-                allowNull parameter of Parameter annotation in javadoc

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-602'>TAP5-602</a>] - Contributing to TypeCoercer

-                with service fails even with @InjectService

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-603'>TAP5-603</a>] - BeanEditForm ordering

-                behaviour inconsistent with documentation

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-608'>TAP5-608</a>] - Quickstart archetype is broken

-                for 5.1.0.2: missing META-INF/maven/archetype.xml

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-610'>TAP5-610</a>] - URLs are not being fully

-                optimized, &quot;/index&quot; is not being stripped off when it should

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-615'>TAP5-615</a>] - Tapestry template parse should

-                ignore the case of any Tapestry-specific elements (such as t:body, t:content, etc.)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-616'>TAP5-616</a>] - Hidden component does not

-                properly decode submitted data

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-621'>TAP5-621</a>] - When using PageTester, an

-                exception in the page is hidden by an exception rendering the exception report page

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-625'>TAP5-625</a>] - The quickstart archetype

-                should not put the Apache copyright into the web.xml (or other files)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-626'>TAP5-626</a>] - The copyright message in

-                Layout.tml is &quot;groupid&quot; not the expanded groupId value

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-630'>TAP5-630</a>] - Blackbird error console class

-                names are too generic and can easily conflict

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-636'>TAP5-636</a>] - Using Element.forceAttribute()

-                with a null value can cause a later NPE during rendering under some circumstances

-            </li>

-        </ul>

-

-        <h2>Improvement

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-432'>TAP5-432</a>] - Allow setting the id of a

-                FormFragment component

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-483'>TAP5-483</a>] - Maven warning in build:

-                [WARNING] Using platform encoding (MacRoman actually) to copy filtered resources, i.e. build is platform

-                dependent!

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-614'>TAP5-614</a>] - Spacer image should have a

-                blank alt attribute to meet w3c accessability standards

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-634'>TAP5-634</a>] - Google App Engine Support:

-                ability to disable code that creates new threads

-            </li>

-        </ul>

-

-        <h2>New Feature

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-548'>TAP5-548</a>] - Textual messages inside

-                tapestry.js should be split out into a seperate .js file that is localizable

-            </li>

-        </ul>

-

-        <h2>Task

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-617'>TAP5-617</a>] - Move cobertura from

-                2.2-SNAPSHOT to 2.2

-            </li>

-        </ul>

-

-        <h2>Wish

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-619'>TAP5-619</a>] - Add parameter to

-                PropertyEditor to allow custom BeanBlockSource to be used in place of the default one

-            </li>

-        </ul>

-

-

-        <h1>Release Notes - Tapestry 5 - Version 5.1.0.2</h1>

-

-        <h2>Bug

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-39'>TAP5-39</a>] - Add JSON support for literals

-                (often, inline function definitions) that are used to configure some client-side objects (even if they

-                aren't truly JSON)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-573'>TAP5-573</a>] - NullPointerException during

-                AJAX form submit

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-578'>TAP5-578</a>] - If a component class is

-                abstract, trying to instantiate it (by including it in a template) yields an inscrutable

-                InstantiationError

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-590'>TAP5-590</a>] - A JavaScript error for

-                non-required fields will force Ajax form submits to be handled as a full-page request instead

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-593'>TAP5-593</a>] - Calling

-                ApplicationStateManager.exists() will throw an exception when the session has been invalidated

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-598'>TAP5-598</a>] - Hard-coded messages inside

-                tapestry.js are not localized

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-600'>TAP5-600</a>] - The new Blackbird console

-                makes Safari JavaScript completely non-functional

-            </li>

-        </ul>

-

-        <h2>Improvement

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-265'>TAP5-265</a>] - Add a Hidden component, used

-                to synchronize a value between the server and the client

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-398'>TAP5-398</a>] - Tapestry should check that the

-                service scope is consistent with the service (throwing an exception if the scope requires a service

-                interface and the service doesn't provide one)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-566'>TAP5-566</a>] - TextField documentation should

-                explain why the required value parameter is not bound in the example

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-581'>TAP5-581</a>] - Quickstart archetype should

-                include testng.xml and webdefault.xml

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-584'>TAP5-584</a>] - Omit generator meta (from head

-                element) when root element is not html

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-586'>TAP5-586</a>] - The JavaScript waitForPage()

-                handler does not need to be added when rendering a partial Ajax response

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-589'>TAP5-589</a>] - Add a method to DOM Element

-                class to allow the collection of Attributes to be obtained

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-591'>TAP5-591</a>] - FAQ: Creating a page render

-                Link from a service

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-605'>TAP5-605</a>] - There should be a simple way

-                to override automatic JavaScript libraries and Stylesheets

-            </li>

-        </ul>

-

-        <h2>New Feature

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-288'>TAP5-288</a>] - Replace JavaScript client-side

-                logging with Blackbird

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-549'>TAP5-549</a>] - JavaScript libraries should be

-                combined into a single request

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-557'>TAP5-557</a>] - Provide support for URL

-                rewriting

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-562'>TAP5-562</a>] - tapestry-hibernate should

-                provide a built-in status page to show basic Hibernate statistics inlcuding cache hits, etc.

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-594'>TAP5-594</a>] - Add simple

-                PageRenderLinkSource service to allow services to create Links to pages

-            </li>

-        </ul>

-

-        <h2>Task

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-510'>TAP5-510</a>] - Improve code coverage of JSON

-                unit tests

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-575'>TAP5-575</a>] - Add svn:eol-style=native to

-                source files

-            </li>

-        </ul>

-

-        <h1>Release Notes - Tapestry 5 - Version 5.1.0.1</h1>

-

-        <h2>Bug

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-211'>TAP5-211</a>] - Client-side validation of

-                numeric user input does not take into account the user's locale which causes spurious client- and

-                server-side exceptions when users enter numbers &quot;naturally&quot;

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-374'>TAP5-374</a>] - Persistent (@Persist) fields

-                not set correctly between requests if they are initialised from pageAttached() method

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-512'>TAP5-512</a>] - Documentation on how to secure

-                pages contains errors in the sample code

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-520'>TAP5-520</a>] - Using regular expressions with

-                the @Validate annotation causes odd parse errors if the regexp includes common characters (including

-                commas)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-530'>TAP5-530</a>] - Documentation should identify

-                how to boot-strap the quickstart archetype from the Tapestry360 Maven repository (not snapshot

-                repository)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-535'>TAP5-535</a>] - PageTester should use

-                overrides of FactoryDefaults, not contributions to ApplicationDefaults

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-537'>TAP5-537</a>] - PersistentLocale.setLocale()

-                allows the application to set a locale that isn't supported, and the subsequent URL may not be

-                interpreted correctly

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-552'>TAP5-552</a>] - Common compressed image files

-                should be configured to not re-compress when sent to client: GIF, PNG

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-555'>TAP5-555</a>] -

-                Tapestry.ScriptManager.contains throws error if &lt;script&gt; tag in &lt;head&gt; has no href

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-559'>TAP5-559</a>] - Informal parameters have

-                started to overwrite previously rendered attributes

-            </li>

-        </ul>

-

-        <h2>Improvement

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-84'>TAP5-84</a>] - Change proxy generation to use

-                volatile fields rather than synchronized blocks

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-108'>TAP5-108</a>] - A component event handler for

-                Ajax requests should have a mechanism to update mutiple zones on the client

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-345'>TAP5-345</a>] - AjaxFormLoop should be able to

-                deduce a default ValueEncoder from the type of its value parameter

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-367'>TAP5-367</a>] - The Grid component's &quot;There

-                is no data to display.&quot; message should come from a message catalog, to support global overrides and

-                localization

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-418'>TAP5-418</a>] - Control over creation of page

-                render and component event requests should be encapsulated into an overridable service

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-502'>TAP5-502</a>] - Improve the description of

-                parameter passing and binding in the documentation

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-525'>TAP5-525</a>] - The Component Report should

-                indicate in which Tapestry version a parameter or a component was introduced

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-527'>TAP5-527</a>] - Input validation documentation

-                is missing clear list of available validators and their correct notation to use.

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-536'>TAP5-536</a>] - Move ClientBehaviorSupport to

-                the public services package

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-540'>TAP5-540</a>] - Allow exact parsing of numeric

-                client input by creating a BigDecimal Translator and enabling parseBigDecimal in DecimalFormat

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-543'>TAP5-543</a>] - ProgressiveDisplay component

-                should support a context parameter and fire an event to inform the container what data is to be

-                displayed

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-544'>TAP5-544</a>] - Improve JavaScript handling to

-                prevent the user from clicking Ajax-oriented links and forms before the page is &quot;ready&quot;

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-545'>TAP5-545</a>] - Upgrade to Scriptaculous 1.8.2

-                (released Nov 2008)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-547'>TAP5-547</a>] - In the exception report page,

-                JVM system property org.apache.catalina.jsp_classpath should be displayed as a list, like other .path

-                value

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-550'>TAP5-550</a>] - Reduce eden space memory

-                footprint by avoiding Lists and Maps within Elements

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-564'>TAP5-564</a>] - Add StringPropertySelectModel

-            </li>

-        </ul>

-

-        <h2>New Feature

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-43'>TAP5-43</a>] - Add configuration to turn off

-                @Secure when in development

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-74'>TAP5-74</a>] - Provide a way that a component

-                sub-class can merge its template with that of its container

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-92'>TAP5-92</a>] - Add new element, t:remove, that

-                removes a portion of a template

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-236'>TAP5-236</a>] - Implement a progressive

-                enhancement component that loads its content via Ajax

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-485'>TAP5-485</a>] - Tracking issue for changes

-                required by com.formos.tapestry:tapestry-template

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-542'>TAP5-542</a>] - Add ParallelExecutor service

-                to allow operations to be performed asynchronously in a thread pool

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-560'>TAP5-560</a>] - Add a service responsible for

-                encoding client data (as gzipp'ed base 64) and decoding that data

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-563'>TAP5-563</a>] - Ability to limit the

-                template's effective content to just a small section (similar to Tapestry 4's $content$ marker)

-            </li>

-        </ul>

-

-

-        <h1>Release Notes - Tapestry 5 - Version 5.1.0.0</h1>

-

-        <h2>Bug

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-217'>TAP5-217</a>] - Warnings related to service

-                configuration validations should be escalated to exceptions

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-292'>TAP5-292</a>] - Field injection does not

-                support injecting configurations or other service resources, only dependencies

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-298'>TAP5-298</a>] - JS error in Palette for

-                disabled options

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-330'>TAP5-330</a>] - Property expressions do not

-                recognize methods inherted from java.lang.Object such as toString()

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-334'>TAP5-334</a>] - Component fields should allow

-                @InjectService annotation, as well as @Inject

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-341'>TAP5-341</a>] - When a contribute method

-                requests the wrong configuration interface (say, Configuration instead of OrderedConfiguration) the

-                error message is confusing: &quot;No service implements the Configuration interface&quot;

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-349'>TAP5-349</a>] - Tapestry silently allows a

-                MarkupWriter to set a series of root elements, ignoring all but the last. A document should only have a

-                single root element and this situation should be an immediate exception.

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-355'>TAP5-355</a>] - TapestrySpring does not

-                support injection of Spring FactoryBeans

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-357'>TAP5-357</a>] - Tapestry documentation should

-                clearly/boldly identify the release number

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-359'>TAP5-359</a>] - Use of the email validator

-                with client-side validation displays a pop-up error message about client-side validator &quot;email&quot;

-                being missing

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-370'>TAP5-370</a>] - Error from DocumentLinker

-                about missing &lt;html&gt; tag, even for XML document w/o JavaScript

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-373'>TAP5-373</a>] - When JavaScript libraries are

-                moved to the &quot;top&quot; of the document, they should be added to the &lt;head&gt;, not the &lt;body&gt;

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-377'>TAP5-377</a>] - Broken links inside on project

-                site to pipeline description and to JIRA

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-378'>TAP5-378</a>] - Missing i18n files for

-                Brazilian Portuguese

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-385'>TAP5-385</a>] - Tapestry 5 often renders empty

-                elements incorrectly

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-391'>TAP5-391</a>] - Link from Form page to

-                checkbox page (on website) is incorrect

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-399'>TAP5-399</a>] - Modified application state

-                objects are not persisted back to the session at the end of the request

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-402'>TAP5-402</a>] - BeanDisplay properties that

-                render nothing cause layout errors (they should render a &amp;nbsp;)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-403'>TAP5-403</a>] - OneShotLock tests fail under

-                JDK 1.6 because of JVM differences

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-405'>TAP5-405</a>] - Documentation should reference

-                Index instead of Start page

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-407'>TAP5-407</a>] - DocumentLinker should not use

-                the deprecated practice of HTML commenting out the &lt;script&gt; block

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-408'>TAP5-408</a>] - Objects that persist in the

-                session should automatically re-store themselves into the session at the end of the request

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-413'>TAP5-413</a>] - Invalidating the session may

-                cause an exception at the end of the request if there is a &quot;dirty&quot; ASO

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-416'>TAP5-416</a>] - Javascript error with IE and

-                Window Prototype

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-419'>TAP5-419</a>] - Logging of component class

-                transformations has typo in prefix

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-425'>TAP5-425</a>] - When attempting to reference a

-                property whose name is a single letter, Tapestry fails with a wierd exception

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-428'>TAP5-428</a>] - It should be possible to use

-                tapestry-spring in an environment where the Spring ApplicationContext is created externally (as was the

-                case in Tapestry 5.0)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-431'>TAP5-431</a>] - When using an externally

-                configuration Spring ApplicationContext, beans of the context should be registered as services (as was

-                the case in Tapestry 5.0)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-441'>TAP5-441</a>] - Tapestry should be using

-                ServletContext.getMimeType() to map from file extensions to MIME types

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-443'>TAP5-443</a>] - Clicking an action link when

-                using tapestry-upload always throws an exception

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-444'>TAP5-444</a>] - ToStringService uses @Override

-                annotation improperly

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-449'>TAP5-449</a>] - @CleanupRender Render phase

-                methods not always invoked

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-454'>TAP5-454</a>] - All classpath assets should

-                automatically have a version number (the application version number) in the URL

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-457'>TAP5-457</a>] - Illegal prefix for XML

-                namespace

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-464'>TAP5-464</a>] - The Invokable interface should

-                be moved to a public package (it is currently internal, even though some public interfaces reference it)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-467'>TAP5-467</a>] -

-                ResponseCompressionAnalyzerImpl should trim spaces before comparing accepted-encoding to &quot;gzip&quot;

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-468'>TAP5-468</a>] - ResponseCompressionAnalyzer

-                should disregard the charset when comparing configured exluded mime types

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-470'>TAP5-470</a>] - The exception report should

-                only split system properties whose name ends in &quot;.path&quot;

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-471'>TAP5-471</a>] - MetaDataLocator throws an

-                exception if meta-data not found and no symbol provides a value; this should be documented

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-478'>TAP5-478</a>] - If you use Grid's add and

-                include parameters, the new column added with add must be also be mentioned in include

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-484'>TAP5-484</a>] - Quickstart should include a

-                test scope dependency on EasyMock

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-488'>TAP5-488</a>] - Typo in error message when

-                contributing to unknown service

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-489'>TAP5-489</a>] - The comment inside

-                AssetBinding concerning invariant is out of date, in that all Assets now use complete URLs

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-490'>TAP5-490</a>] - Link from Ajax guide page to

-                component reference is broken

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-505'>TAP5-505</a>] - JettyRunner is not able to

-                start on Windows machine if the web application path is absolute

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-507'>TAP5-507</a>] - Comments between the DOCTYPE

-                and the root element now cause render errors

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-528'>TAP5-528</a>] - The new quickstart layout

-                should be simplified to remove &quot;lorem ipson&quot; text

-            </li>

-        </ul>

-

-        <h2>Improvement

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-24'>TAP5-24</a>] - Document changing the

-                (persisted) locale

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-60'>TAP5-60</a>] - Provide an alternate approach to

-                decorating services based on aspects

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-79'>TAP5-79</a>] - Improve Tapestry's property

-                expression language to include OGNL-like features

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-100'>TAP5-100</a>] - When rendering a partial

-                markup response, Tapestry should quote attributes with single quotes (so that each quote doesn't have to

-                be escaped in the JSON)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-165'>TAP5-165</a>] - Components which use

-                PrimaryKeyEncoder should be changed to use ValueEncoder, and PrimaryKeyEncoder should be deprecated

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-181'>TAP5-181</a>] - Highlight duplicated IDs.

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-194'>TAP5-194</a>] - Handler method of Submit

-                component should accept a context

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-209'>TAP5-209</a>] - quickstart archetype should

-                provide a sample page .properties file

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-216'>TAP5-216</a>] - Many methods of the Page

-                interface could be moved to PageResources (which should be renamed to ComponentPageElementResources)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-346'>TAP5-346</a>] - Maven resource filtering

-                pre-expands some Tapestry expansions: docs should warn of this

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-364'>TAP5-364</a>] - BeanEditForm should include

-                the same autofocus parameter that Form has

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-365'>TAP5-365</a>] - Localization support for

-                Japanese

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-371'>TAP5-371</a>] - Service contribution methods

-                should be able to include a parameter of type Logger (the service's logger), so as to give contributions

-                the option to log with the service

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-380'>TAP5-380</a>] - Add localization support for

-                Greek

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-382'>TAP5-382</a>] - PersistenceConstants should

-                have all persistence field strategies

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-383'>TAP5-383</a>] - Expose a LinkCreationHub

-                service to allow for listeners that wish to observe (and modify) new Link instances

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-386'>TAP5-386</a>] - Tapestry IoC documentation

-                improvements

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-390'>TAP5-390</a>] - Improve component reports by

-                providing links to javadocs of tapestry classes

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-392'>TAP5-392</a>] - tapestry-hibernate should be

-                split into two parts: tapestry-hibernate-core and tapestry-hibernate, with tapestry-hibernate-core being

-                usable outside of a Tapestry web application

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-393'>TAP5-393</a>] - Tapestry IOC should log the

-                names of any loaded module classes and clearly indicate module classes that could not be loaded

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-406'>TAP5-406</a>] - Remove IDEA and Eclipse

-                control files from the source tree

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-417'>TAP5-417</a>] - Tapestry Performance

-                Improvements

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-422'>TAP5-422</a>] - Tapestry should encode the

-                user's locale into the URL rather than as an HTTP cookie

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-429'>TAP5-429</a>] - Tapestry should throw an

-                exception when a contribute method of a module class does not match a known service

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-435'>TAP5-435</a>] - AjaxFormLoop does not include

-                a parameter for specifying the animation on adding a new element

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-442'>TAP5-442</a>] - Add a context: binding prefix

-                to make it super-easy to reference context assets from templates

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-445'>TAP5-445</a>] - Add ability to turn off GZIP

-                compression easily, for both static assets and dynamic page renders

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-447'>TAP5-447</a>] - ExceptionDisplay should render

-                uninteresting stack frames but include a client-side control to toggle their visibility

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-448'>TAP5-448</a>] - Assets should no longer

-                attempt to generate relative URIs

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-451'>TAP5-451</a>] - Upgrade Selenium dependencies

-                to new beta (which supports FireFox 3)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-458'>TAP5-458</a>] - Tapestry quickstart should

-                include a basic, but visually pleasing, Layout component

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-459'>TAP5-459</a>] - Quickstart should include

-                provided scope dependency on the servlet API

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-462'>TAP5-462</a>] - FAQ: The Hibernate startup

-                question now has a really easy answer

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-465'>TAP5-465</a>] - Add a LazyAdvisor service that

-                can allow method invocations on services to be lazily evaluated

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-479'>TAP5-479</a>] - Quickstart archetype should

-                include a basic site.xml and index.apt

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-481'>TAP5-481</a>] - Quickstart archetype should

-                include a test scope dependency on tapestry-test

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-482'>TAP5-482</a>] - Maven repository location

-                http://archiva.openqa.org/repository/releases has a unwanted trailing slash in the master pom.xml

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-487'>TAP5-487</a>] - Easier way to expose

-                parameters of an embedded component in a containing component

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-496'>TAP5-496</a>] - Change If and Unless to render

-                thier template element if provided (i.e., when using t:type) as well as informal parameters

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-498'>TAP5-498</a>] - Upgrade Javassist dependency

-                to latest version, 3.9.0.GA

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-499'>TAP5-499</a>] - Cleanup and simplfy PageTester

-                to remove ComponentInvocation, InvocationTarget, etc.

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-503'>TAP5-503</a>] - Make Live Class and Template

-                Reloading feature work in OSGi

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-516'>TAP5-516</a>] - When rendering a PageLink, it

-                should not be necessary to load the target page instance just to see if there's a page activation

-                context

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-522'>TAP5-522</a>] - Reduce memory footprint by

-                sharing binding descriptions

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-523'>TAP5-523</a>] - Submit component should be

-                able to render an input field of type image

-            </li>

-        </ul>

-

-        <h2>New Feature

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-66'>TAP5-66</a>] - Use namespaces in templates to

-                reference components in libraries

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-70'>TAP5-70</a>] - Tapestry should automatically

-                compress content sent to the client, if the client supports it

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-90'>TAP5-90</a>] - Context assets should be

-                versioned and provided with a far future expires header, just like classpath assets

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-95'>TAP5-95</a>] - Optimize page construction for

-                repeated construction of the same page

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-106'>TAP5-106</a>] - When filtering out stack

-                frames in ExceptionAnalyzer, frames for sun.reflect could easily be omitted

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-112'>TAP5-112</a>] - Define new namespace, p:, for

-                block parameters

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-139'>TAP5-139</a>] - @Autobuild annotation for

-                parameters, implicitly invokes ObjectLocator.autobuild()

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-140'>TAP5-140</a>] - The services used to handle

-                live reloading should be made public

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-215'>TAP5-215</a>] - Configuration interface should

-                support contributing a class (which is autobuilt) in addition to an instance

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-291'>TAP5-291</a>] - Now that field injection is

-                supported, we need an annotation for methods to invoke after the component is fully constructed

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-295'>TAP5-295</a>] - Option to startup Hibernate

-                early, rather than lazily on first request

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-316'>TAP5-316</a>] - Add service overriding

-                capabilities to tapestry-ioc, similar to what tapestry-core has (the Alias service)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-427'>TAP5-427</a>] - Allow injection of Tapestry

-                services into Spring beans

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-430'>TAP5-430</a>] - Annotation for services to

-                indicate that the service should not be decorated

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-434'>TAP5-434</a>] - Add documentation about using

-                PersistentLocale service to effect a change in locale

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-436'>TAP5-436</a>] - Tapestry should verify that

-                all public methods of a module class are meaningful to Tapestry (build, decorate, contribute or bind),

-                other methods should cause an exception to be thrown as a likely typo in the name

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-437'>TAP5-437</a>] - The OrderedConfiguration and

-                MappedConfiguration interfaces should allow for override() methods (similar to add())

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-439'>TAP5-439</a>] - Add annotation, @ServiceId,

-                that can be placed on a builder method or service class to identify the service id to use

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-446'>TAP5-446</a>] - Tapestry should output a &lt;meta&gt;

-                tag to identify Tapestry as the generator (with an option to turn this off for applications that don't

-                want to advertise their technology)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-472'>TAP5-472</a>] - Make it possible and easy to

-                use a content delivery network

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-476'>TAP5-476</a>] - Have a common handler/filter

-                pipeline for both component event and page render requests, to make it easier to add filters that apply

-                to both types of requests

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-491'>TAP5-491</a>] - Quickstart archetype build

-                should generate an archetype-catalog.xml into Tapestry360's maven-repository or

-                maven-snapshot-repository, to faciliate the use of the mvn archetype:generate goal

-            </li>

-        </ul>

-

-        <h2>Task

-        </h2>

-        <ul>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-372'>TAP5-372</a>] - Merge changes from 5.0.16 --&gt;

-                5.0.17 into trunk (5.1)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-379'>TAP5-379</a>] - Add the Ars Machina Project to

-                the list of Tapestry 5-related packages

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-381'>TAP5-381</a>] - Documentation talks about a

-                &quot;tapestry.charset&quot; when there's no such configuration documented

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-480'>TAP5-480</a>] - Upgrade Surefire Plugin and

-                TestNG dependencies to latest version (2.4.3 and 5.8, respectively)

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-493'>TAP5-493</a>] - Translate

-                StructureStrings#original-child-component

-            </li>

-            <li>[<a href='https://issues.apache.org/jira/browse/TAP5-494'>TAP5-494</a>] - Downgrade maven-site-plugin

-                from 2.0-beta-6 to 2.0-beta-5 because we prefer a site that actually works

-            </li>

-        </ul>

-

-

-    </body>

-</document>

diff --git a/maint-5-2/src/site/xdoc/release-notes.xml b/maint-5-2/src/site/xdoc/release-notes.xml
deleted file mode 100644
index ebdfc64..0000000
--- a/maint-5-2/src/site/xdoc/release-notes.xml
+++ /dev/null
@@ -1,514 +0,0 @@
-<document>
-    <!--
-       Copyright 2007, 2008 The Apache Software Foundation
-
-       Licensed under the Apache License, Version 2.0 (the "License");
-       you may not use this file except in compliance with the License.
-       You may obtain a copy of the License at
-
-           http://www.apache.org/licenses/LICENSE-2.0
-
-       Unless required by applicable law or agreed to in writing, software
-       distributed under the License is distributed on an "AS IS" BASIS,
-       WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-       See the License for the specific language governing permissions and
-       limitations under the License.
-    -->
-
-    <properties>
-        <title>Tapestry Project Release Notes</title>
-    </properties>
-    <body>
-
-        <p>This document contains release notes for current release of Tapestry, release 5.2.
-            There are also <a href="release-notes-5.0.html">release notes for Tapestry 5.0</a>
-	    and <a href="release-notes-5.1.html">for Tapestry 5.1</a>.
-        </p>
-
-
-        <h1>Release Notes - Tapestry 5 - Version 5.2.0</h1>
-
-<h2>        Bug
-</h2>
-<ul>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-266'>TAP5-266</a>] -         In a conflict between a render phase annotation and the naming convention, the explicit annotation should win
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-707'>TAP5-707</a>] -         Yellow highlight remains on updated zone if zone is re-updated too quickly
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-711'>TAP5-711</a>] -         Submit component: using image parameter prevents selected event from being fired
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-714'>TAP5-714</a>] -         Incorrect encoding of single quotes for Ajax requests
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-715'>TAP5-715</a>] -         TypeCoercer.explain incorrectly reports the plan to coerce from primitive types to wrapper types
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-719'>TAP5-719</a>] -         Component LinkSubmit doesn't work
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-728'>TAP5-728</a>] -         When using the @Validate annotation, spaces around the commas that separate contraints cause runtime exceptions
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-734'>TAP5-734</a>] -         Tapestry tutorial documentation refers to old archtype command
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-747'>TAP5-747</a>] -         Property expressions that include method invocations that in turn reference properties result in spurious error about &quot;root&quot;
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-748'>TAP5-748</a>] -         NPE when defining a component using just t:id and no type or @Component annotation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-749'>TAP5-749</a>] -         The FormFragment and LinkSubmit components create a hidden field whose id ends with &quot;:hidden&quot;
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-750'>TAP5-750</a>] -         Tapestry should not attempt to GZip flash movies (.swf files)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-755'>TAP5-755</a>] -         URL rewriting documentation contains an example that won't compile due to lack of a return value
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-759'>TAP5-759</a>] -         The documentation of DefaultNullFieldStrategy#replaceFromClient() is wrong about what gets returned
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-765'>TAP5-765</a>] -         Included JavaScript libraries are not properly uniqued within an Ajax partial update response
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-767'>TAP5-767</a>] -         PropertyConduitSourceImpl should use english locale (instead of default locale) when evaluating decimals
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-769'>TAP5-769</a>] -         JavaScript aggregation can be inefficient across multiple pages with different JS requirements
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-774'>TAP5-774</a>] -         Initialization JavaScript needs help when order counts
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-779'>TAP5-779</a>] -         CLONE -Linksubmit doesn't work inside a form with Zone parameter set
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-786'>TAP5-786</a>] -         Exception messages in the pageload packages should be localized
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-787'>TAP5-787</a>] -         AbstractIntegrationTest's &quot;assertTextPresent&quot; only checks the first value
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-788'>TAP5-788</a>] -         ParallelExecutor service throws RejectedExecutionException if more then THREAD_POOL_MAX_SIZE jobs are submitted
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-796'>TAP5-796</a>] -         Form component generates invalid xHtml: there should not be the &quot;name&quot; attribute
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-812'>TAP5-812</a>] -         The input validation documentation incorrectly shows validation occuring in the success event handler method
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-813'>TAP5-813</a>] -         the component rendering page of the user guide is not generated by maven
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-815'>TAP5-815</a>] -         Asset dispatcher allows any file inside the webapp visible and downloadable
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-823'>TAP5-823</a>] -         Message about incompatible return type of a render phase method is misleading
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-824'>TAP5-824</a>] -         Javasisst 3.9.0.GA not available from central repository
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-830'>TAP5-830</a>] -         SpringModuleDef unnecessarily hard-codes that the type of object stored in the context as a ConfigurableWebApplicationContext when any object implementing ApplicationContext is sufficient
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-834'>TAP5-834</a>] -         BaseOptimizedSessionPersistedObject does not work correctly with Tomcat &amp; Jetty
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-837'>TAP5-837</a>] -         prototype1.6.0 not support for ie8
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-839'>TAP5-839</a>] -         Tapestry should ignore (public) synthetic methods in module classes
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-856'>TAP5-856</a>] -         MetaDataLocatorImpl.findMeta(String, String, Class) doesn't check contributed defaults - breaks SECURE_PAGE contributions
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-868'>TAP5-868</a>] -         It is not possible to attach a validation event listener to a Palette (or other &lt;select&gt; field)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-871'>TAP5-871</a>] -         Generation of Component Reference failed on Windows
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-881'>TAP5-881</a>] -         Tapestry's customized Blackbird implementation sends a dubious cookie value over every request
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-894'>TAP5-894</a>] -         Fix PartialMarkupDocumentLinkerTest.stylesheet_link() 
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-896'>TAP5-896</a>] -         Contribute 'properties' file extension to the configuration of ResourceDigestGenerator
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-898'>TAP5-898</a>] -         BeanModel methods reorder, include and exclude should return BeanModel&lt;T&gt; (not BeanModel&lt;?&gt;)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-908'>TAP5-908</a>] -         Blackbird console should not add cookies to requests
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-913'>TAP5-913</a>] -         Stack size too large exception, related to PropertyExpressionLexer
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-919'>TAP5-919</a>] -         Calling MarkupWriter.element() with an even number of arguments throws ArrayIndexOutOfBounds exception, not a useful exception about omitting a attribute name or value
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-923'>TAP5-923</a>] -         Injeting Tapestry Services to Spring Beans is completely undocumented
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-936'>TAP5-936</a>] -         Tapestry wiki link links to nothing for locales other then en
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-937'>TAP5-937</a>] -         LinkImpl does not handle parameters properly when passed into the constructor
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-940'>TAP5-940</a>] -         Zone should fire a heart beat event
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-943'>TAP5-943</a>] -         Documentation for event handler methods should go into detail about returns true or false
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-944'>TAP5-944</a>] -         When a ValueEncoder is unable to convert an id to a entity, it should wrap the underlying type coercion exception to describe the input and expected output type
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-945'>TAP5-945</a>] -         Unnecessary and severe lock contention in PerthreadManagerImpl
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-947'>TAP5-947</a>] -         Default name &quot;submit&quot; for submit component breaks javascript function submit()
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-959'>TAP5-959</a>] -         Ajax event handler methods that return a page instance, page class or page name should cause the client to redirect to that page, but doesn't work in IE7 or 8 if the URL has a query param
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-961'>TAP5-961</a>] -         When a URL rewriting rule changes the path for a rendered link (component event or page render), any query parameters associated with the original link are lost
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-962'>TAP5-962</a>] -         Errors component includes an @Environmental for FormSupport, but doesn't use it
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-964'>TAP5-964</a>] -         Exception report failed to render due to NPE inside session-persisted objects' toString()
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-974'>TAP5-974</a>] -         PageCallback should be marked with the @ImmutableSessionPersistedObject annotation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-987'>TAP5-987</a>] -         In some cases you can invoke Form.recordError() and the Form will still fire a success (not a failure) event
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1001'>TAP5-1001</a>] -         Garbled exception message when a component is defined in a namespace that is not properly defined as a Tapestry library namespace
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1018'>TAP5-1018</a>] -         Request to Application Root path ignores ComponentRequestFilter's
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1019'>TAP5-1019</a>] -         French translations for number format error message
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1020'>TAP5-1020</a>] -         Fix typo in tapestry-hibernate/src/site/apt/userguide.apt: HibernateTransactionAdviser should be HibernateTransactionAdvisor
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1030'>TAP5-1030</a>] -         Injecting a Logger into a non-service object, created as part of constructing a service configuration, should work but doesn't
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1031'>TAP5-1031</a>] -         NPE from Any component when invoking getClientId() before the component renders
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1034'>TAP5-1034</a>] -         Using URLRewriteRules will fail for component event links if the page has an activation context
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1042'>TAP5-1042</a>] -         URLRewriting causes confusion about the incoming Request path, leading to incorrect optimized relative URLs
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1043'>TAP5-1043</a>] -         PropertyDisplayBlocks causes NullPointerException when property of type Calendar is null
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1047'>TAP5-1047</a>] -         @IncludeJavaScriptLibrary and @IncludeStylesheet may incorrectly calculate resources in component sub-classes
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1052'>TAP5-1052</a>] -         Component classes page of the guide should be much more specific that only component classes go in pages, components, etc.
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1054'>TAP5-1054</a>] -         Not able to pass an empty string as appName to PageTester
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1057'>TAP5-1057</a>] -         XSS vulnerability in calendar component
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1060'>TAP5-1060</a>] -         In IE8, forms that should submit using Ajax are triggering full page requests due to a client-side JavaScript error
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1067'>TAP5-1067</a>] -         Created component constructor may use too many parameters
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1068'>TAP5-1068</a>] -         RenderSupport.addScriptLink(String) deprecated and removed without replacement
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1069'>TAP5-1069</a>] -         Tapestry POM should reference only the Apache Nexus repository, not the tapestry.formos.com repository
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1074'>TAP5-1074</a>] -         The @QueryParameter annotation uses TypeCoercer to convert from request parameter strings to method parameter values, it should use the ValueEncoder
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1075'>TAP5-1075</a>] -         When a template contains a reference to an unknown component, the new UnknownValueException is reported but the Location is no longer reported, making it much harder to determine where the error occurred
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1076'>TAP5-1076</a>] -         When a service implementation is reloadable, it will not eager load
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1080'>TAP5-1080</a>] -         Page activation context lost when redirecting from HTTP to HTTPS due to the @Secure annotation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1086'>TAP5-1086</a>] -         Localized root path request results in a 404 error if Index page is not available
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1088'>TAP5-1088</a>] -         Bean editor model for &lt;class name&gt; already contains a property model for property &lt;property name&gt; when combining model parameter with add parameter of BeanEditor or BeanEditForm
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1090'>TAP5-1090</a>] -         Deleting a live-reloaded class can result in a non-descriptive &quot;Parameter url was null.&quot; exception
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1096'>TAP5-1096</a>] -         If a Zone's id parameter is bound, then the clientId property should return that value, even before the Zone renders
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1100'>TAP5-1100</a>] -         On ajax request, template body doesn't render if page is new in pagepool or if server restarted
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1105'>TAP5-1105</a>] -         BeanModelSource should recognize public field as properties, but doesn't
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1106'>TAP5-1106</a>] -         Tapestry.ajaxFailureHandler has an incorrect signature for an Ajax.Request onException callback
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1109'>TAP5-1109</a>] -         Updating multiple zones within a Form creates anomalous empty text fields
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1110'>TAP5-1110</a>] -         Tapestry holds onto the verbose descriptions of component class transformations, causing a memory leak
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1116'>TAP5-1116</a>] -         Live lock when using compressed and virtual assets due to ByteArrayOutputStream being synchronized
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1120'>TAP5-1120</a>] -         It is not possible to override the default Translator contributions to the TranslatorSource service
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1124'>TAP5-1124</a>] -         FormEventManager.setSubmittingElement(element) creates input element with type=&quot;input&quot;
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1128'>TAP5-1128</a>] -         A space is added to a HTML start comment sequence making it impossible to add IE conditional comments 
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1130'>TAP5-1130</a>] -         LinkSubmit component doesn't work when form contains Select component with default id
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1136'>TAP5-1136</a>] -         java.lang.UnsupportedOperationException from UpdateListenerHub when a weak reference is reclaimed
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1137'>TAP5-1137</a>] -         Dynamically adding JavaScript libraries to a page via a partial page update does not seem to work consistently in Safari and Chrome
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1138'>TAP5-1138</a>] -         ClassTransformation deprecated a bunch of methods, then refers to replacements that don't exist
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1141'>TAP5-1141</a>] -         Type coercion from arbitrary object to Boolean will NPE when the object's toString() returns null (should coerce to false)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1145'>TAP5-1145</a>] -         Writing only text (or raw text) into a Document via MarkupWriter results in [empty Document], not the actual text
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1147'>TAP5-1147</a>] -         Ajax updates under IE leak lots of memory
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1154'>TAP5-1154</a>] -         ValidationDecorator.insideField not called for Select component
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1156'>TAP5-1156</a>] -         Provide a ValueEncoder for a Hibernate entity automatically only if a mapped class exists
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1158'>TAP5-1158</a>] -         Captured HTML from failed Selenium assertions do not get stored in the correct place on Windows
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1161'>TAP5-1161</a>] -         Tapestry 5.1 seems incompatible with Spring 3
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1166'>TAP5-1166</a>] -         ClassPropertyAdapterImpl should skip static  fields
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1182'>TAP5-1182</a>] -         javax.management preventsTapestry apps from being deployed on GAE
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1185'>TAP5-1185</a>] -         Upgrade to latest Javassist version to avoid LocalVariableTable exceptions (especially on Google App Engine)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1198'>TAP5-1198</a>] -         A user defined activate event handler appears to execute *before* the event handler supplied by @PageActivationContext, making defensive coding impossible
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1203'>TAP5-1203</a>] -         Use of @Contribute annotation does not work properly with marker annotations
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1207'>TAP5-1207</a>] -         A form control component (such as TextField) whose id is &quot;id&quot; can confuse client-side logic for the Form DOM object
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1209'>TAP5-1209</a>] -         Marker annotations used with services that have contributions should be applicable to methods (as well as fields and parameters) for compatibility with @Contribute
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1210'>TAP5-1210</a>] -         MultiZone update from EventLink with Form fails in Internet Explorer
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1211'>TAP5-1211</a>] -         LinkSubmit broken in IE 7 mode
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1216'>TAP5-1216</a>] -         ValueEncoderSource does not define a @UsesMappedConfiguration annotation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1223'>TAP5-1223</a>] -         The name &quot;JavaScript&quot; should have a capital &quot;S&quot; but is inconsistent in some class and interface names
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1224'>TAP5-1224</a>] -         When contributing to a service using a &quot;contribute&quot; method, the service id from the method name now matches case-sensitively to the service id (it should be case insensitive)
-</li>
-</ul>
-    
-<h2>        Improvement
-</h2>
-<ul>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-69'>TAP5-69</a>] -         Add annotation, @Contribute, to allow service contributor methods to be arbitrary named
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-88'>TAP5-88</a>] -         Add support for Bulgarian locale
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-179'>TAP5-179</a>] -         The TriggerFragment mixin would be more useful if it could invert its logic, i.e., make a a fragment visible when a checkbox was turned off
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-247'>TAP5-247</a>] -         Move all Tapestry 5 configuration keys to a constant class
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-335'>TAP5-335</a>] -         Provide access to annotations of service implementation class
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-424'>TAP5-424</a>] -         Allow component libraries to contribute extra resources to the global application catalog
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-632'>TAP5-632</a>] -         Property names (in property expressions) should be able to read or update public variables
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-674'>TAP5-674</a>] -         Make it easy to implement a page callback mechanism
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-678'>TAP5-678</a>] -         Allow blackbird to be disabled in production mode
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-685'>TAP5-685</a>] -         Allow services defined by module tapestry-ioc to be advised and decorated
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-713'>TAP5-713</a>] -         Change template parser to not use StAX, as it is not (yet) compatible with Google App Engine
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-760'>TAP5-760</a>] -         The Form event &quot;validateForm&quot; is awkwardly named and should be replaced with the simpler name &quot;validate&quot;
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-762'>TAP5-762</a>] -         Upgrade Selenium dependencies to version 1.0.1
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-764'>TAP5-764</a>] -         Hidden should support ClientElement and support informal parameters.
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-777'>TAP5-777</a>] -         Tapestry should ensure that mixins are applied in a deterministic order.
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-783'>TAP5-783</a>] -         tapestry should mark via annotation which annotations are component-specific vs. more general
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-789'>TAP5-789</a>] -         Provide bean and display blocks for java.util.Calendar
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-790'>TAP5-790</a>] -         Provide ApplicationStatePersistenceStrategy for Hibernate entities 
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-803'>TAP5-803</a>] -         ProgressiveDisplay should include a read-only body property of type Block, just like Zone
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-807'>TAP5-807</a>] -         PageRenderLinkSource should add additional methods for creating a Link when you have the page's activation context as an EventContext
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-810'>TAP5-810</a>] -         Improve documentation of @Persist annotation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-811'>TAP5-811</a>] -         Layout component documentation is not very clear about directory structure
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-814'>TAP5-814</a>] -         include a diagram showing how incoming requests pass through the different pipelines, filters and dispatchers
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-826'>TAP5-826</a>] -         The ActionLink documentation is missing the option to use object arrays as context inside templates
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-859'>TAP5-859</a>] -         In a stack trace, any lines associated with line #1 of a class are likely to be synthetic methods and should be classified as &quot;uninteresting&quot;
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-863'>TAP5-863</a>] -         Tapestry.ajaxRequest is insufficient when doing extra, such as adding query parameters
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-884'>TAP5-884</a>] -         Introduce a symbol for tapestry.js
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-887'>TAP5-887</a>] -         Easier way to initialize a JSONObject with keys and values
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-889'>TAP5-889</a>] -         Provide fluent API for order constraints of contributions
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-904'>TAP5-904</a>] -         Make use of Selenium.showContextualBanner() when running integration tests
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-905'>TAP5-905</a>] -         Tapestry should support the full range of Unicode characters acceptible by Java as property names
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-912'>TAP5-912</a>] -         Validation of properties of type java.util.Collection should fail when the collection is empty
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-914'>TAP5-914</a>] -         When autobuilding a Java bean (such as a Session State Object), the code should use the OperationTracker 
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-915'>TAP5-915</a>] -         It should be possible to override a components message catalog
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-917'>TAP5-917</a>] -         Don't set Expires header when tapestry.production-mode is false
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-927'>TAP5-927</a>] -         Cannot use Scala for Tapestry IOC Modules
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-948'>TAP5-948</a>] -         Built-in mechanism to identify self-referential links and/or event/render requests
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-958'>TAP5-958</a>] -         Upgrade Tapestry's built-in copy of prototype.js to version 1.6.1
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-963'>TAP5-963</a>] -         Allow access to static resources (css, js, jpg, jpeg, png, gif) inside the app package
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-965'>TAP5-965</a>] -         Upgrade EasyMock dependency to release 2.5.2
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-967'>TAP5-967</a>] -         ObjectLocator.autobuild would be more useful with an override that allowed a message about the object to be described
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-971'>TAP5-971</a>] -         FormFragment component should include a parameter to control whether non-visible content is included in the form submission
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-978'>TAP5-978</a>] -         Provide remote management of the page pool settings
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-979'>TAP5-979</a>] -         Form component should be more careful with the validation tracker to ensure that a session is not created unless needed
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-993'>TAP5-993</a>] -         Reorganize ComponentClassTransformWorkers to start moving away from Javassist
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-994'>TAP5-994</a>] -         Field autofocus should be done via Tapestry.init instead of using $ function
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1000'>TAP5-1000</a>] -         When Autobuilding a class, the constructor to be used should be identified in the trace output
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1014'>TAP5-1014</a>] -         Message about missing or wrong retention policy of a marker annotation is misleading
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1015'>TAP5-1015</a>] -         Provide a new return type for event handler methods that would trigger the rendering of a particular page without a redirect
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1023'>TAP5-1023</a>] -         (5.2.0-SPNAPSHOT Maven dependencies) tapestry-hibernate-5.2.0 jar generated with tapestry-hibernate-5.2.0-yyyyMMdd.hhmmss-?.jar &gt; tapestry-hibernate-5.2.0-SNAPSHOT.jar whereas all other jar are using -5.2.0-SNAPSHOT
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1024'>TAP5-1024</a>] -         Submit component should allow return values from event handler methods triggered by its event
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1033'>TAP5-1033</a>] -         Upgrade selenium dependencies to 1.0.3
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1036'>TAP5-1036</a>] -         It would be nice if there was a way for committers to run individual integration tests again
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1037'>TAP5-1037</a>] -         Rewrite URLRewriter integration tests to use new SeleniumTestCase instead of deprecated AbstractIntegrationTestSuite
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1038'>TAP5-1038</a>] -         Rewrite live reload integration tests to use new SeleniumTestCase instead of deprecated AbstractIntegrationTestSuite
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1046'>TAP5-1046</a>] -         Change Tapestry client-side JavaScript to make the tapx/Confirm component easier to implement
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1050'>TAP5-1050</a>] -         Add API to prevent a particular service implementation from being live reloaded
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1055'>TAP5-1055</a>] -         Provide hook to post-process properties files before rolling them into component Messages
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1061'>TAP5-1061</a>] -         When a Zone component sends an Ajax request for a client-side update, it should pass an extra query parameter identifying the zone's client-side id
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1077'>TAP5-1077</a>] -         Merge symbol values into property values from a bean definition
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1085'>TAP5-1085</a>] -         The ExceptionReporter should be configured to mark more of the Tapestry generated classes (used for method &amp; field access and method advice) as hidden by default
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1091'>TAP5-1091</a>] -         CLONE -Handler method of LinkSubmit component should accept a context
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1094'>TAP5-1094</a>] -         Create a binding prefix, &quot;symbol:&quot;, that is used to access IoC symbols
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1112'>TAP5-1112</a>] -         Handle array types in property expressions
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1126'>TAP5-1126</a>] -         Add a new validator, &quot;none&quot;, used when overriding the @Validate annotation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1127'>TAP5-1127</a>] -         Documentation for the Submit and LinkSubmit components should identify that you should cancel defer when inside a Loop
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1129'>TAP5-1129</a>] -         LinkSubmit should render minimally (and as &lt;span&gt; tag) and then fill in the details on the client
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1132'>TAP5-1132</a>] -         HibernateGridDataSource should assign the result of Projections.rowCount() to java.lang.Number when determining the number of rows for the configured entity type
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1135'>TAP5-1135</a>] -         Provide a convinient method to build and start the registry
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1150'>TAP5-1150</a>] -         Refactor out a new base class between org.testng.Assert and org.apache.tapestry5.ioc.test.TestBase for non-mock related tests
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1152'>TAP5-1152</a>] -         TypeCoercer should include a method exposing the coercion it would use for a given source and target type
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1153'>TAP5-1153</a>] -         When in development mode, Tapestry should pretty-print JSON content
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1155'>TAP5-1155</a>] -         JavaScript initialization inside the partial page render Ajax response should be unquoted
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1157'>TAP5-1157</a>] -         Client-side exceptions during Tapestry.init() should be caught and reported with the console
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1165'>TAP5-1165</a>] -         Make better use of the OperationTracker to identify what's going on during a request (and especially, during page construction)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1170'>TAP5-1170</a>] -         Remove automatic injection of service id into parameters of type String
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1174'>TAP5-1174</a>] -         Provide a ComponentEventResultProcessor that sends an error response to the client
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1197'>TAP5-1197</a>] -         Eliminate page pooling using shared page instances that separate their structure from the mutable state
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1225'>TAP5-1225</a>] -         Use recent Groovy/GMaven version and fix GMaven configuration in tapestry-core POM
-</li>
-</ul>
-    
-<h2>        New Feature
-</h2>
-<ul>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-52'>TAP5-52</a>] -         Add Error component that presents validation errors of a single field
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-56'>TAP5-56</a>] -         Tapestry should have support for IE conditional stylesheets
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-86'>TAP5-86</a>] -         Add support for &quot;cancel&quot; submit buttons (which bypass client-side validation)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-103'>TAP5-103</a>] -         provide access to component parameters from within mixins
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-138'>TAP5-138</a>] -         Add Zone parameter to Select component
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-152'>TAP5-152</a>] -         Add @Translate annotation to define name of translator to be used with a bean property (rather than lookup by property type)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-156'>TAP5-156</a>] -         Add a @QueryParameter annotation for parameters to event handler method
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-226'>TAP5-226</a>] -         Add annotation @SessionAttribute to map a field to a specific session attribute
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-680'>TAP5-680</a>] -         Tapestry should provide a mixin for ensuring that the client id of a ClientElement is rendered
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-692'>TAP5-692</a>] -         T5 should pick up validators to be applied to a field from the containing component's .properties file.
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-801'>TAP5-801</a>] -         Add Trigger component to trigger a component event during rendering
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-895'>TAP5-895</a>] -         Tracking issue for Tapestry/JSR-303 integration
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-951'>TAP5-951</a>] -         Create more flexible API for testing with Selenium that allows for multiple test cases to share a single instance of Selenium/SeleniumServer/Jetty
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-966'>TAP5-966</a>] -         TapestryFilter should be able add additional modules to the Registry to accomidate different testing (or other) execution configurations
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1013'>TAP5-1013</a>] -         Live class reloading for service implementations
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1028'>TAP5-1028</a>] -         Validator Macros: Combine multiple common validators into a single term
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1035'>TAP5-1035</a>] -         In places where an invalid key is used to accessed a named value, Tapestry should report the possible names better (using HTML lists, rather than a long comma-separated string)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1056'>TAP5-1056</a>] -         The application global message catalog should be injectable into services
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1064'>TAP5-1064</a>] -         Extend PropertyAccess to understand Scala style properties (which use a different naming convention than JavaBeans)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1065'>TAP5-1065</a>] -         Non-visual mixin to generate events as it begins/ends rendering (useful for generating matching JavaScript)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1079'>TAP5-1079</a>] -         Live class reloading should extend to proxied objects (such as from ObjectLocator.proxy()
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1084'>TAP5-1084</a>] -         Zones that initially render inside a Form should support updates within the Form
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1095'>TAP5-1095</a>] -         LocalizationSetter service should expose the supported locales as a list of Locale and as a SelectModel
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1097'>TAP5-1097</a>] -         New annotation: @HeartbeatDeferred to mark component methods that should execute at the end of the current Heartbeat
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1098'>TAP5-1098</a>] -         Provide new SelectModelFactory service that can automatically build a standard SelectModel from objects and property names
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1099'>TAP5-1099</a>] -         Introduce public service responsible for handling page activation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1121'>TAP5-1121</a>] -         Provide an annotation to support automatic discarding of the persistent fields after a component or page method invocation
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1159'>TAP5-1159</a>] -         Easy way to customize search locations for page and component templates
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1190'>TAP5-1190</a>] -         New page-level events to &quot;decorate&quot; component event and page render links
-</li>
-</ul>
-                    
-<h2>        Task
-</h2>
-<ul>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-11'>TAP5-11</a>] -         CookiesImplTest does specify a domain cookie with a domain not prefixed with a . (dot)
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-556'>TAP5-556</a>] -         Fix TranslatorSourceImplTest
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-756'>TAP5-756</a>] -         Add ioko-tapestry-commons to the related projects list
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-819'>TAP5-819</a>] -         remove ide-specific files from all sub-modules and add them to svn:ignore
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-969'>TAP5-969</a>] -         Method AbstractField.createDefaultParameterBinding() should be deprecated
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-976'>TAP5-976</a>] -         Upgrade Spring dependencies to version 3.0.0.RELEASE
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1081'>TAP5-1081</a>] -         Remove formos references from 5.2.0 archetype
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1087'>TAP5-1087</a>] -         Upgrade TestNG dependencies to version 5.12.1
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1134'>TAP5-1134</a>] -         Upgrade Hibernate dependencies to 3.5.2
-</li>
-<li>[<a href='https://issues.apache.org/jira/browse/TAP5-1195'>TAP5-1195</a>] -         Rename annotations @QueryParameter and @QueryParameterMapped (both introduced in 5.2.0) to more mnemonic names
-</li>
-</ul>
-
-    </body>
-</document>
diff --git a/maint-5-2/src/tapestry-favicon.graffle b/maint-5-2/src/tapestry-favicon.graffle
deleted file mode 100644
index c3ac42a..0000000
--- a/maint-5-2/src/tapestry-favicon.graffle
+++ /dev/null
@@ -1,311 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActiveLayerIndex</key>
-	<integer>0</integer>
-	<key>AutoAdjust</key>
-	<true/>
-	<key>CanvasColor</key>
-	<dict>
-		<key>w</key>
-		<string>1</string>
-	</dict>
-	<key>CanvasOrigin</key>
-	<string>{0, 0}</string>
-	<key>CanvasScale</key>
-	<real>1</real>
-	<key>ColumnAlign</key>
-	<integer>1</integer>
-	<key>ColumnSpacing</key>
-	<real>36</real>
-	<key>CreationDate</key>
-	<string>2007-03-07 10:15:08 -0800</string>
-	<key>Creator</key>
-	<string>Howard Lewis Ship</string>
-	<key>DisplayScale</key>
-	<string>1 in = 1 in</string>
-	<key>GraphDocumentVersion</key>
-	<integer>5</integer>
-	<key>GraphicsList</key>
-	<array>
-		<dict>
-			<key>Bounds</key>
-			<string>{{108.9, 126}, {161.1, 244}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>Flow</key>
-			<string>Resize</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>NSKern</key>
-				<real>0.0</real>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>3</integer>
-			<key>Shape</key>
-			<string>Rectangle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-					<key>GradientColor</key>
-					<dict>
-						<key>w</key>
-						<string>0.666667</string>
-					</dict>
-				</dict>
-				<key>shadow</key>
-				<dict>
-					<key>Beneath</key>
-					<string>YES</string>
-					<key>Fuzziness</key>
-					<real>13.994791030883789</real>
-					<key>ShadowVector</key>
-					<string>{9, 4}</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Align</key>
-				<integer>0</integer>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fnil\fcharset77 Zapfino;}
-{\colortbl;\red255\green255\blue255;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\pardirnatural
-
-\f0\fs144 \cf2 \shad\shadx61\shady-62\shadr62\shado220 \shadc0 T}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{108.9, 144}, {146, 146}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>2</integer>
-			<key>Shape</key>
-			<string>Circle</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>FillType</key>
-					<integer>3</integer>
-					<key>GradientCenter</key>
-					<string>{-0.133333, -0.190476}</string>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>1</string>
-						<key>g</key>
-						<string>0</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-		</dict>
-	</array>
-	<key>GridInfo</key>
-	<dict/>
-	<key>GuidesLocked</key>
-	<string>NO</string>
-	<key>GuidesVisible</key>
-	<string>YES</string>
-	<key>HPages</key>
-	<integer>1</integer>
-	<key>ImageCounter</key>
-	<integer>1</integer>
-	<key>IsPalette</key>
-	<string>NO</string>
-	<key>KeepToScale</key>
-	<false/>
-	<key>Layers</key>
-	<array>
-		<dict>
-			<key>Lock</key>
-			<string>NO</string>
-			<key>Name</key>
-			<string>Layer 1</string>
-			<key>Print</key>
-			<string>YES</string>
-			<key>View</key>
-			<string>YES</string>
-		</dict>
-	</array>
-	<key>LayoutInfo</key>
-	<dict/>
-	<key>LinksVisible</key>
-	<string>NO</string>
-	<key>MagnetsVisible</key>
-	<string>NO</string>
-	<key>MasterSheet</key>
-	<string>Master 1</string>
-	<key>MasterSheets</key>
-	<array>
-		<dict>
-			<key>ActiveLayerIndex</key>
-			<integer>0</integer>
-			<key>AutoAdjust</key>
-			<true/>
-			<key>CanvasColor</key>
-			<dict>
-				<key>w</key>
-				<string>1</string>
-			</dict>
-			<key>CanvasOrigin</key>
-			<string>{0, 0}</string>
-			<key>CanvasScale</key>
-			<real>1</real>
-			<key>ColumnAlign</key>
-			<integer>1</integer>
-			<key>ColumnSpacing</key>
-			<real>36</real>
-			<key>DisplayScale</key>
-			<string>1 in = 1 in</string>
-			<key>GraphicsList</key>
-			<array/>
-			<key>GridInfo</key>
-			<dict/>
-			<key>HPages</key>
-			<integer>1</integer>
-			<key>IsPalette</key>
-			<string>NO</string>
-			<key>KeepToScale</key>
-			<false/>
-			<key>Layers</key>
-			<array>
-				<dict>
-					<key>Lock</key>
-					<string>NO</string>
-					<key>Name</key>
-					<string>Layer 1</string>
-					<key>Print</key>
-					<string>YES</string>
-					<key>View</key>
-					<string>YES</string>
-				</dict>
-			</array>
-			<key>LayoutInfo</key>
-			<dict/>
-			<key>Orientation</key>
-			<integer>2</integer>
-			<key>OutlineStyle</key>
-			<string>Basic</string>
-			<key>RowAlign</key>
-			<integer>1</integer>
-			<key>RowSpacing</key>
-			<real>36</real>
-			<key>SheetTitle</key>
-			<string>Master 1</string>
-			<key>UniqueID</key>
-			<integer>1</integer>
-			<key>VPages</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>ModificationDate</key>
-	<string>2007-03-12 15:33:34 -0700</string>
-	<key>Modifier</key>
-	<string>Howard Lewis Ship</string>
-	<key>NotesVisible</key>
-	<string>NO</string>
-	<key>Orientation</key>
-	<integer>2</integer>
-	<key>OriginVisible</key>
-	<string>NO</string>
-	<key>OutlineStyle</key>
-	<string>Basic</string>
-	<key>PageBreaks</key>
-	<string>YES</string>
-	<key>PrintInfo</key>
-	<dict>
-		<key>NSBottomMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSLeftMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSPaperSize</key>
-		<array>
-			<string>size</string>
-			<string>{612, 792}</string>
-		</array>
-		<key>NSRightMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSTopMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-	</dict>
-	<key>ReadOnly</key>
-	<string>NO</string>
-	<key>RowAlign</key>
-	<integer>1</integer>
-	<key>RowSpacing</key>
-	<real>36</real>
-	<key>SheetTitle</key>
-	<string>Canvas 1</string>
-	<key>SmartAlignmentGuidesActive</key>
-	<string>YES</string>
-	<key>SmartDistanceGuidesActive</key>
-	<string>YES</string>
-	<key>UniqueID</key>
-	<integer>1</integer>
-	<key>UseEntirePage</key>
-	<true/>
-	<key>VPages</key>
-	<integer>1</integer>
-	<key>WindowInfo</key>
-	<dict>
-		<key>CurrentSheet</key>
-		<string>0</string>
-		<key>DrawerOpen</key>
-		<true/>
-		<key>DrawerTab</key>
-		<string>Outline</string>
-		<key>DrawerWidth</key>
-		<real>209</real>
-		<key>FitInWindow</key>
-		<false/>
-		<key>Frame</key>
-		<string>{{641, 469}, {594, 870}}</string>
-		<key>ShowRuler</key>
-		<false/>
-		<key>ShowStatusBar</key>
-		<true/>
-		<key>VisibleRegion</key>
-		<string>{{0, 0}, {579, 756}}</string>
-		<key>Zoom</key>
-		<string>1</string>
-	</dict>
-</dict>
-</plist>
diff --git a/maint-5-2/support/copyright-java.txt b/maint-5-2/support/copyright-java.txt
deleted file mode 100644
index a755112..0000000
--- a/maint-5-2/support/copyright-java.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-// Copyright {YEAR} {ORG}
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
diff --git a/maint-5-2/support/copyright-properties.txt b/maint-5-2/support/copyright-properties.txt
deleted file mode 100644
index 0006f5a..0000000
--- a/maint-5-2/support/copyright-properties.txt
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright {YEAR} {ORG}
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
diff --git a/maint-5-2/support/copyright-xml.txt b/maint-5-2/support/copyright-xml.txt
deleted file mode 100644
index 61b1009..0000000
--- a/maint-5-2/support/copyright-xml.txt
+++ /dev/null
@@ -1,16 +0,0 @@
-<!-- 
-   Copyright {YEAR} {ORG}
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
diff --git a/maint-5-2/support/heavy-load.jmx b/maint-5-2/support/heavy-load.jmx
deleted file mode 100644
index 8901ca5..0000000
--- a/maint-5-2/support/heavy-load.jmx
+++ /dev/null
@@ -1,178 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<jmeterTestPlan version="1.2" properties="2.1">
-  <hashTree>
-    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Test Plan" enabled="true">
-      <stringProp name="TestPlan.comments"></stringProp>
-      <boolProp name="TestPlan.functional_mode">false</boolProp>
-      <boolProp name="TestPlan.serialize_threadgroups">false</boolProp>
-      <elementProp name="TestPlan.user_defined_variables" elementType="Arguments" guiclass="ArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
-        <collectionProp name="Arguments.arguments"/>
-      </elementProp>
-      <stringProp name="TestPlan.user_define_classpath"></stringProp>
-    </TestPlan>
-    <hashTree>
-      <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread Group" enabled="true">
-        <elementProp name="ThreadGroup.main_controller" elementType="LoopController" guiclass="LoopControlPanel" testclass="LoopController" testname="Loop Controller" enabled="true">
-          <boolProp name="LoopController.continue_forever">false</boolProp>
-          <stringProp name="LoopController.loops">5</stringProp>
-        </elementProp>
-        <stringProp name="ThreadGroup.num_threads">20</stringProp>
-        <stringProp name="ThreadGroup.ramp_time">0</stringProp>
-        <longProp name="ThreadGroup.start_time">1220812823000</longProp>
-        <longProp name="ThreadGroup.end_time">1220812823000</longProp>
-        <boolProp name="ThreadGroup.scheduler">false</boolProp>
-        <stringProp name="ThreadGroup.on_sample_error">continue</stringProp>
-        <stringProp name="ThreadGroup.duration"></stringProp>
-        <stringProp name="ThreadGroup.delay"></stringProp>
-      </ThreadGroup>
-      <hashTree>
-        <ConfigTestElement guiclass="HttpDefaultsGui" testclass="ConfigTestElement" testname="HTTP Request Defaults" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain">localhost</stringProp>
-          <stringProp name="HTTPSampler.port">8080</stringProp>
-          <stringProp name="HTTPSampler.protocol">http</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
-          <stringProp name="HTTPSampler.path">/</stringProp>
-          <boolProp name="HTTPSampler.image_parser">true</boolProp>
-        </ConfigTestElement>
-        <hashTree/>
-        <CookieManager guiclass="CookiePanel" testclass="CookieManager" testname="HTTP Cookie Manager" enabled="true">
-          <collectionProp name="CookieManager.cookies"/>
-          <boolProp name="CookieManager.clearEachIteration">true</boolProp>
-          <stringProp name="CookieManager.policy">rfc2109</stringProp>
-        </CookieManager>
-        <hashTree/>
-        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="HTTP Request" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain">localhost</stringProp>
-          <stringProp name="HTTPSampler.port">8080</stringProp>
-          <stringProp name="HTTPSampler.protocol">http</stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
-          <stringProp name="HTTPSampler.path">/</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-          <stringProp name="HTTPSampler.mimetype"></stringProp>
-          <boolProp name="HTTPSampler.image_parser">true</boolProp>
-          <stringProp name="HTTPSampler.monitor">false</stringProp>
-          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
-        </HTTPSampler>
-        <hashTree/>
-        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="HTTP Request" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"></stringProp>
-          <stringProp name="HTTPSampler.port"></stringProp>
-          <stringProp name="HTTPSampler.protocol"></stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
-          <stringProp name="HTTPSampler.path">/ValidBeanEditorDemo</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-          <stringProp name="HTTPSampler.mimetype"></stringProp>
-          <stringProp name="HTTPSampler.monitor">false</stringProp>
-          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
-        </HTTPSampler>
-        <hashTree/>
-        <HTTPSampler guiclass="HttpTestSampleGui" testclass="HTTPSampler" testname="HTTP Request" enabled="true">
-          <elementProp name="HTTPsampler.Arguments" elementType="Arguments" guiclass="HTTPArgumentsPanel" testclass="Arguments" testname="User Defined Variables" enabled="true">
-            <collectionProp name="Arguments.arguments"/>
-          </elementProp>
-          <stringProp name="HTTPSampler.domain"></stringProp>
-          <stringProp name="HTTPSampler.port"></stringProp>
-          <stringProp name="HTTPSampler.protocol"></stringProp>
-          <stringProp name="HTTPSampler.contentEncoding"></stringProp>
-          <stringProp name="HTTPSampler.path">/griddemo</stringProp>
-          <stringProp name="HTTPSampler.method">GET</stringProp>
-          <boolProp name="HTTPSampler.follow_redirects">false</boolProp>
-          <boolProp name="HTTPSampler.auto_redirects">true</boolProp>
-          <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
-          <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
-          <stringProp name="HTTPSampler.FILE_NAME"></stringProp>
-          <stringProp name="HTTPSampler.FILE_FIELD"></stringProp>
-          <stringProp name="HTTPSampler.mimetype"></stringProp>
-          <stringProp name="HTTPSampler.monitor">false</stringProp>
-          <stringProp name="HTTPSampler.embedded_url_re"></stringProp>
-        </HTTPSampler>
-        <hashTree/>
-        <ResultCollector guiclass="GraphVisualizer" testclass="ResultCollector" testname="Graph Results" enabled="true">
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-          <objProp>
-            <name>saveConfig</name>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>true</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-              <bytes>true</bytes>
-            </value>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-        </ResultCollector>
-        <hashTree/>
-        <ResultCollector guiclass="StatVisualizer" testclass="ResultCollector" testname="Aggregate Report" enabled="true">
-          <boolProp name="ResultCollector.error_logging">false</boolProp>
-          <objProp>
-            <name>saveConfig</name>
-            <value class="SampleSaveConfiguration">
-              <time>true</time>
-              <latency>true</latency>
-              <timestamp>true</timestamp>
-              <success>true</success>
-              <label>true</label>
-              <code>true</code>
-              <message>true</message>
-              <threadName>true</threadName>
-              <dataType>true</dataType>
-              <encoding>false</encoding>
-              <assertions>true</assertions>
-              <subresults>true</subresults>
-              <responseData>false</responseData>
-              <samplerData>false</samplerData>
-              <xml>true</xml>
-              <fieldNames>false</fieldNames>
-              <responseHeaders>false</responseHeaders>
-              <requestHeaders>false</requestHeaders>
-              <responseDataOnError>false</responseDataOnError>
-              <saveAssertionResultsFailureMessage>false</saveAssertionResultsFailureMessage>
-              <assertionsResultsToSave>0</assertionsResultsToSave>
-              <bytes>true</bytes>
-            </value>
-          </objProp>
-          <stringProp name="filename"></stringProp>
-        </ResultCollector>
-        <hashTree/>
-      </hashTree>
-    </hashTree>
-  </hashTree>
-</jmeterTestPlan>
diff --git a/maint-5-2/support/idea-settings.jar b/maint-5-2/support/idea-settings.jar
deleted file mode 100644
index 10c7c28..0000000
--- a/maint-5-2/support/idea-settings.jar
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/support/maven-ant-tasks-2.0.8.jar b/maint-5-2/support/maven-ant-tasks-2.0.8.jar
deleted file mode 100644
index 8d0abaa..0000000
--- a/maint-5-2/support/maven-ant-tasks-2.0.8.jar
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/support/new-project b/maint-5-2/support/new-project
deleted file mode 100755
index 2e44fa5..0000000
--- a/maint-5-2/support/new-project
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/usr/bin/ruby
-
-require 'optparse'
-
-$group = nil
-$artifact = nil
-$package = nil
-$archetypeVersion = nil
-$version = "1.0.0-SNAPSHOT"
-$offline = false
-
-$opts = OptionParser.new do |opts|
-  
-  opts.banner = "Usage: new-project.rb [options]"
-  
-  opts.on("-g", "--group GROUP", "The group id for the new project") do |value|
-    $group = value
-  end
-
-  opts.on("-a", "--artifact ARTIFACT", "The artifact for the new project") do |value|
-    $artifact = value
-  end
-  
-  opts.on("-p", "--package PACKAGE", "The root package for source code in the new project") do |value|
-    $package = value
-  end
-  
-  opts.on("-v", "--version VERSION", "The version number of the new project") do |value|
-    $version = value
-  end
-  
-  opts.on("-o", "--offline", "Execute Maven in offline mode") { $offline = true }
-  
-  opts.on("-V", "--archetype-version VERSION", "Version of the Tapestry quickstart archetype") do |value|
-    $archetypeVersion = value
-  end
-  
-  opts.on("-h", "--help", "Help for this command") do
-    puts opts
-    exit
-  end
-end
-
-def fail(message)
-  puts "Error: #{message}"
-  puts $opts
-  exit
-end
-
-
-begin
-  $opts.parse!
-rescue OptionParser::InvalidOption
-  fail $!
-end
-
-fail "Unexpected command line argument" if ARGV.length > 0
-fail "Must specify group" unless $group
-fail "Must specify artifact" unless $artifact
-
-$package = $package || "#$group.#$artifact"
-
-command = ["mvn"]
-
-command << "-o" if $offline
-
-command << [
-  "archetype:create",
-  "-DarchetypeGroupId=org.apache.tapestry",
-  "-DarchetypeArtifactId=quickstart",
-  "-DgroupId=#$group",
-  "-DartifactId=#$artifact",
-  "-DartifactVersion=#$version",
-  "-DpackageName=#$package"]
-
-if $archetypeVersion
-  command << "-DarchetypeVersion=#$archetypeVersion"
-end
-
-command = command.join ' '
-
-exec command
-
-
diff --git a/maint-5-2/support/prepsvn b/maint-5-2/support/prepsvn
deleted file mode 100755
index e1858b3..0000000
--- a/maint-5-2/support/prepsvn
+++ /dev/null
@@ -1,172 +0,0 @@
-#!/usr/bin/ruby
-
-# Used to prepare a directory for commit to Subversion. This is necessary for certain file types on Mac OS X because what appear to be files in the Finder
-# are actually directories (Mac uses the term "bundle" for this concept). It is useless to put the .svn folder inside such a directory, because it will
-# tend to be deleted whenever the "file" is saved.  
-#
-# Instead, we want to compress the directory to a single archive file; the bundle will be marked as svn:ignore.
-#
-# We use tar with Bzip2 compression, which is resource intensive to create, but compresses much better than GZip or PKZip.
-#
-# The trick is that we only want to create the archive version when necessary; when the archive does not exist, or when any file
-# in the bundle is newer than the archive.
-
-require 'optparse'
-
-# Set via command line options
-
-$extensions = %w{pages key oo3 graffle}
-$recursive = true
-$dry_run = false
-
-# Queue of folders to search (for bundles)
-
-$queue = []
-
-def matching_extension(name)
-  dotx = name.rindex('.')
-  
-  return false unless dotx
-  
-  ext = name[dotx + 1 .. -1]
-  
-  return $extensions.include?(ext)
-end
-
-
-# Iterate over the directory, identify bundles that may need to be compressed and (if recursive) subdirectories
-# to search.
-#
-# path: string path for a directory
-def search_directory(dirpath)
-  
-  Dir.foreach(dirpath) do |name|
-    
-    # Skip hidden files and directories
-    next if name[0..0] == "."
-    
-    path = File.join(dirpath, name)
-        
-    next unless File.directory?(path)
-                  
-    if matching_extension(name)
-      update_archive path
-      next
-    end
-    
-    if $recursive
-      $queue << path
-    end
-    
-  end
-  
-end
-
-
-def needs_update(bundle_path, archive_path)
-  
-  return true unless File.exists?(archive_path)
-  
-  archive_mtime = File.mtime(archive_path)
-  
-  # The archive exists ... can we find a file inside the bundle thats newer?
-  # This won't catch deletions, but that's ok.  Bundles tend to get completly
-  # overwritten when any tiny thing changes.
-  
-  dirqueue = [bundle_path]
-
-  until dirqueue.empty?
-    
-    dirpath = dirqueue.pop
-    
-    Dir.foreach(dirpath) do |name|
-      
-      path = File.join(dirpath, name)
-      
-      if File.directory?(path)
-        dirqueue << path unless [".", ".."].include?(name)
-        next
-      end
-      
-      # Is this file newer?
-      
-      if File.mtime(path) > archive_mtime
-        return true
-      end
-      
-    end
-    
-  end
-  
-  return false
-end
-
-def update_archive(path)
-  archive = path + ".tar.bz2"
-  
-  return unless needs_update(path, archive)
-
-  if $dry_run
-    puts "Would create #{archive}"
-    return
-  end
-
-  puts "Creating #{archive}"
-    
-  dir = File.dirname(path)
-  bundle = File.basename(path)
-    
-  # Could probably fork and do it in a subshell
-  system "tar --create --file=#{archive} --bzip2 --directory=#{dir} #{bundle}"
-
-end
-
-$opts = OptionParser.new do |opts|
-  
-  opts.banner = "Usage: prepsvn [options]"
-
-  opts.on("-d", "--dir DIR", "Add directory to search (if no directory specify, current directory is searched)") do |value|
-    $queue << value
-  end
-
-  opts.on("-e", "--extension EXTENSION", "Add another extension to match when searching for bundles to archive") do |value|
-    $extensions << value
-  end
-  
-  opts.on("-N", "--non-recursive", "Do not search non-bundle sub directories for files to archive") do
-    $recursive = false
-  end
-  
-  opts.on("-D", "--dry-run", "Identify what archives would be created") do
-    $dry_run = true
-  end
-  
-  opts.on("-h", "--help", "Help for this command") do
-    puts opts
-    exit
-  end
-end
-
-def fail(message)
-    puts "Error: #{message}"
-    puts $opts
-end
-
-begin
-    $opts.parse!
-rescue OptionParser::InvalidOption
-    fail $!
-end
-
-# If no --dir specified, use the current directory.
-
-if $queue.empty?
-  $queue << Dir.getwd
-end
-
-until $queue.empty? 
-  search_directory $queue.pop
-end
-
-
-
diff --git a/maint-5-2/support/sign-and-upload b/maint-5-2/support/sign-and-upload
deleted file mode 100755
index 7c5cc35..0000000
--- a/maint-5-2/support/sign-and-upload
+++ /dev/null
@@ -1,13 +0,0 @@
-#!/usr/bin/ruby
-
-DIST_DIR="target/dist"
-
-Dir.glob("#{DIST_DIR}/*.{zip,gz,bz2}") do |filename|
-  puts filename
-  # ... and you have to provide your passphrase again and again!
-  system "gpg --armor --output #{filename}.asc --detach-sig #{filename}"
-end
-
-puts "Uploading distributions ..."
-
-system 'scp #{DIST_DIR}/* hlship@people.apache.org:public_html/tapestry-releases'
\ No newline at end of file
diff --git a/maint-5-2/support/tapestry-core.launch b/maint-5-2/support/tapestry-core.launch
deleted file mode 100644
index 4d923c7..0000000
--- a/maint-5-2/support/tapestry-core.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.testng.eclipse.launchconfig">
-<booleanAttribute key="com.mountainminds.eclemma.core.INPLACE_INSTRUMENTATION" value="false"/>
-<listAttribute key="com.mountainminds.eclemma.core.INSTRUMENTATION_PATHS">
-<listEntry value="/tapestry5/bin"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.testng.remote.RemoteTestNG"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="tapestry5"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx600m"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:tapestry5/tapestry-core}"/>
-<mapAttribute key="org.testng.eclipse.ALL_CLASS_METHODS"/>
-<listAttribute key="org.testng.eclipse.CLASS_TEST_LIST"/>
-<stringAttribute key="org.testng.eclipse.COMPLIANCE_LEVEL" value="JDK"/>
-<listAttribute key="org.testng.eclipse.GROUP_LIST"/>
-<listAttribute key="org.testng.eclipse.GROUP_LIST_CLASS"/>
-<stringAttribute key="org.testng.eclipse.LOG_LEVEL" value="10"/>
-<listAttribute key="org.testng.eclipse.SUITE_TEST_LIST">
-<listEntry value="tapestry-core/src/test/conf/testng.xml"/>
-</listAttribute>
-<intAttribute key="org.testng.eclipse.TYPE" value="3"/>
-</launchConfiguration>
diff --git a/maint-5-2/support/tapestry-indent-eclipse.xml b/maint-5-2/support/tapestry-indent-eclipse.xml
deleted file mode 100644
index e863a6b..0000000
--- a/maint-5-2/support/tapestry-indent-eclipse.xml
+++ /dev/null
@@ -1,269 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<profiles version="11">
-<profile kind="CodeFormatterProfile" name="Tapestry" version="11">
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-<setting id="org.eclipse.jdt.core.compiler.source" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.compiler.compliance" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
-<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="100"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.5"/>
-<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_member" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-</profile>
-</profiles>
diff --git a/maint-5-2/support/tapestry-ioc.launch b/maint-5-2/support/tapestry-ioc.launch
deleted file mode 100644
index 8579e15..0000000
--- a/maint-5-2/support/tapestry-ioc.launch
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.testng.eclipse.launchconfig">
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.testng.remote.RemoteTestNG"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="tapestry5"/>
-<mapAttribute key="org.testng.eclipse.ALL_CLASS_METHODS"/>
-<listAttribute key="org.testng.eclipse.CLASS_TEST_LIST"/>
-<stringAttribute key="org.testng.eclipse.COMPLIANCE_LEVEL" value="JDK"/>
-<listAttribute key="org.testng.eclipse.GROUP_LIST"/>
-<listAttribute key="org.testng.eclipse.GROUP_LIST_CLASS"/>
-<stringAttribute key="org.testng.eclipse.LOG_LEVEL" value="2"/>
-<listAttribute key="org.testng.eclipse.SUITE_TEST_LIST">
-<listEntry value="tapestry-ioc/src/test/conf/testng.xml"/>
-</listAttribute>
-<intAttribute key="org.testng.eclipse.TYPE" value="3"/>
-</launchConfiguration>
diff --git a/maint-5-2/support/tapestry-spring.launch b/maint-5-2/support/tapestry-spring.launch
deleted file mode 100644
index 5956176..0000000
--- a/maint-5-2/support/tapestry-spring.launch
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<launchConfiguration type="org.testng.eclipse.launchconfig">
-<booleanAttribute key="com.mountainminds.eclemma.core.INPLACE_INSTRUMENTATION" value="false"/>
-<listAttribute key="com.mountainminds.eclemma.core.INSTRUMENTATION_PATHS">
-<listEntry value="/tapestry5/bin"/>
-</listAttribute>
-<booleanAttribute key="org.eclipse.debug.core.appendEnvironmentVariables" value="true"/>
-<listAttribute key="org.eclipse.debug.ui.favoriteGroups">
-<listEntry value="org.eclipse.debug.ui.launchGroup.run"/>
-<listEntry value="org.eclipse.debug.ui.launchGroup.debug"/>
-</listAttribute>
-<stringAttribute key="org.eclipse.jdt.launching.MAIN_TYPE" value="org.testng.remote.RemoteTestNG"/>
-<stringAttribute key="org.eclipse.jdt.launching.PROJECT_ATTR" value="tapestry5"/>
-<stringAttribute key="org.eclipse.jdt.launching.VM_ARGUMENTS" value="-Xmx600m"/>
-<stringAttribute key="org.eclipse.jdt.launching.WORKING_DIRECTORY" value="${workspace_loc:tapestry5/tapestry-spring}"/>
-<mapAttribute key="org.testng.eclipse.ALL_CLASS_METHODS"/>
-<listAttribute key="org.testng.eclipse.CLASS_TEST_LIST"/>
-<stringAttribute key="org.testng.eclipse.COMPLIANCE_LEVEL" value="JDK"/>
-<listAttribute key="org.testng.eclipse.GROUP_LIST"/>
-<listAttribute key="org.testng.eclipse.GROUP_LIST_CLASS"/>
-<stringAttribute key="org.testng.eclipse.LOG_LEVEL" value="10"/>
-<listAttribute key="org.testng.eclipse.SUITE_TEST_LIST">
-<listEntry value="tapestry-spring/src/test/conf/testng.xml"/>
-</listAttribute>
-<intAttribute key="org.testng.eclipse.TYPE" value="3"/>
-</launchConfiguration>
diff --git a/maint-5-2/support/update-copyrights b/maint-5-2/support/update-copyrights
deleted file mode 100755
index e1181ef..0000000
--- a/maint-5-2/support/update-copyrights
+++ /dev/null
@@ -1,298 +0,0 @@
-#!/usr/bin/ruby -w
-
-# Executable Ruby script to walk one or more directories worth of
-# source files and add or update the copyright comment block on each file.
-#
-# File types are identified by extension, different file types
-# vary in the format of the copyright comment block and its exact position.
-#
-# The template for each block will contain the string {YEAR}.  This is replaced
-# by the current year.  However, if a current comment block exists,
-# then the file is not touched (ASF rules is that the copyright year should
-# only be updated when an actual change occurs to the file).
-#
-# The {ORG} placeholder in the template is replaced with the organization,
-# which defaults to "The Apache Software Foundation", but can be overridden with the
-# -o command line argument.
-
-require 'find'
-
-# Directory containing this script, used to locate templates (which are stored
-# relative to the script itself.
-
-SCRIPT_DIR = File.split(__FILE__)[0]
-YEAR = Time.now.year.to_s
-
-$ORG = "The Apache Software Foundation"
-
-def read_template(file)
-  result = []
- 
-  File.open(SCRIPT_DIR + "/" + file) do |file|
-    file.each { |line| result << line }
-  end
- 
-  return result
-end
-
-# Writes out the content (array of strings) to the file.
-# Actually, writes to a temporary file, then deletes the original
-# file and renames the new file to it.
-
-def write_file(path, content)
-  puts "Writing #{path} ..."
- 
-  temp = path + "~"
- 
-  File.open(temp, "w") do |file|
-    content.each { |line| file << line }
-  end
- 
-  File.delete(path)
-  File.rename(temp, path)
-end
-
-# Scans the content (which should be the complete file)
-# for the copyright year.  Returns the year, which
-# may be as single year ("2004") or a sequence of
-# years ("2004, 2005, 2007"). Returns YEAR if
-# no copyright year was found in the content.
-
-def scan_for_year(content, comment_prefix)
- 
-  content.each do |line|
-    
-    if ! line.strip.empty? then
-      
-      return YEAR if line[0, comment_prefix.length] != comment_prefix
-      
-      if line =~ /copyright ((\d+)(\s*,\s*\d+)*)/i
-        then
-        return $1
-      end
-      
-    end
-    
-  end
- 
-  # Degenerate case -- a file that contains just comments?  Shouldn't happen
-  # but just in case.
- 
-  return YEAR
- 
-end
-
-# Synthesizes a copyright comment block by locating the {YEAR} token
-# and substituting the year paremeter, and the {ORG} token with $ORG
-
-def synthesize_copyright(template, year)
-  template.collect { |line| line.sub(/\{YEAR\}/, year).sub(/\{ORG\}/, $ORG) }
-end
-
-class Filter
-
-  def initialize(comment, template_file)
-    @comment = comment
-    @template = read_template(template_file)
-  end
-
- def update(path)
-    
-    content = nil
-    dirty = false
-    
-    File.open(path) { |file|  content = file.readlines }
-    
-    year = scan_for_year(content, @comment)
-    
-    copyright_comment = synthesize_copyright(@template, year)
-    
-    0.upto(@template.length() - 1) do |line|
-      dirty ||= content[line] != copyright_comment[line]
-    end
-    
-    # TODO: What if the new comment is *shorter* than the old comment?
-    # Need to find and trim those line.
-    
-    return false if !dirty    
-    
-    # Strip out all leading blank lines and comments
-    
-    while ! content.empty?
-      line = content[0]
-      
-      if line.strip.empty? || line[0, @comment.length] == @comment
-        content.delete_at(0)
-      else
-        break
-      end
-    end
-    
-    # content[0] should now be the package statement (or, if in the default package,
-    # an import, class, interface, etc.
-    
-    content.insert(0, *copyright_comment)
-    
-    # Write the new content to the file
-    
-    write_file(path, content)
-    
-    return true
-  end
-end
-
-# Filter for Java files.  The copyright comment is placed
-# before the first statement or directive (typically, before the package
-# directive)
-
-class JavaFilter < Filter
- 
-  def initialize
-    super("//", "copyright-java.txt")
-  end
- 
-end
-
-class PropertiesFilter < Filter
-
-  def initialize
-    super("#", "copyright-properties.txt")
-  end
-end
-
-# Filter used for any XML file.  The copyright is placed after the <?xml ...?> line, and before
-# anything else.
-
-class XMLFilter
- 
-  def initialize
-    @template = read_template("copyright-xml.txt")
-  end
- 
-  # Returns true if the line looks like an XML "<!DOCTYPE ..",
-  # or element "<foo ..."  This will not match an XML comment
-  # or the "<?xml ..." declaration.
- 
-  def document_start?(line)
-    return line == nil || line.match(/^\s*<(!DOCTYPE|\w+)/) != nil
-  end
- 
-  def scan_for_year(content)
-    
-    content.each do |line|
-      if line =~ /Copyright ((\d+)(\s*,\s*\d+)*)/
-        return $1
-      elsif document_start?(line)
-        return YEAR
-      end
-    end
-    
-    return YEAR
-  end
- 
-  def update(path)
-    
-    content = nil
-    dirty = false
-    
-    File.open(path) { |file|  content = file.readlines }
-    
-    year = scan_for_year(content)
-    
-    copyright_comment = synthesize_copyright(@template, year)
-    
-    # Ignore the first line, it is expected to be the <?xml
-    # directive.
-    
-    0.upto(@template.length() - 1) do |line|
-      dirty ||= content[line + 1] != copyright_comment[line]
-    end
-    
-    # TODO: What if the new comment is *shorter* than the old comment?
-    # Need to find and trim those line.
-    
-    return false if !dirty    
-    
-    until document_start?(content[1])
-      content.delete_at(1)
-    end
-    
-    content.insert(1, *copyright_comment)
-    
-    write_file(path, content)
-    
-    return true
-  end
-end
-
-# Maps a particular file path pattern to a particular filter.  Tracks the files
-# that have matched the pattern.
-
-class FilterPattern
- 
-  def initialize(pattern, filter)
-    @pattern = pattern
-    @filter = filter    
-    @files = []
-  end
- 
-  def match?(path)
-    if path.match(@pattern) != nil
-      @files << path
-      return true      
-    end
-    
-    return false    
-  end
- 
-  def update
-    count = 0
-    @files.each do |file|
-      count += 1 if @filter.update(file)
-    end
-    
-    return count
-  end
-end
-
-$filter_patterns = []
-
-def register_filter(pattern, filter)
-  $filter_patterns << FilterPattern.new(pattern, filter)
-end
-
-def match?(path)
-  $filter_patterns.each do |fp|
-    return true if fp.match?(path)    
-  end
- 
-  return false
-end
-
-
-register_filter(/\.(java|aj)$/, JavaFilter.new)
-register_filter(/(\/cli\.xconf|(\.(xml|xsl|jwc|application|library|page|script)))$/, XMLFilter.new)
-register_filter(/\.properties$/, PropertiesFilter.new)
-
-$matches = 0
-$update_count = 0
-
-if (ARGV[0] == "-o")
-  ARGV.shift  
-  $ORG = ARGV.shift
-  puts "Using organization '#$ORG'"
-end
-
-Find.find(*ARGV) do |f|
- 
-  if f =~ /(CVS|SVN|target)$/
-    Find.prune
-  else
-    $matches += 1 if match?(f)
-  end
-end
-
-$filter_patterns.each { |fp| $update_count += fp.update }
-
-puts "Updated #$update_count files (of #$matches files found)."
-
diff --git a/maint-5-2/support/update-eclipse b/maint-5-2/support/update-eclipse
deleted file mode 100755
index e9c2988..0000000
--- a/maint-5-2/support/update-eclipse
+++ /dev/null
@@ -1,186 +0,0 @@
-#!/usr/bin/ruby
-
-# This script is used to update the Eclipse .classpath file for the master project; it is used when
-# a module is added or removed, or when a src folder is added or removed from a module.
-#
-# It assumes the layout of each module conforms to the normal Maven structure.
-#
-# This script must be executed from the root project directory (the directory containing the master pom.xml, and containing
-# the directories for the modules).
-
-# TODO: Generated IDEA control files as well
-
-require 'optparse'
-
-# Rub gems:  Think of it as Maven for Ruby but not brain-damaged. See http://www.rubygems.org/read/book/1
-
-require 'rubygems'
-
-# This script requires the Ruby gem hpricot ("gem install hpricot"). It was built with version 0.6.
-# http://code.whytheluckystiff.net/hpricot
-
-require 'hpricot'
-
-CLASSPATH_HEADER = [
-  %Q{<?xml version="1.0" encoding="UTF-8"?>},
-  %Q{<classpath>}
-].freeze
-
-CLASSPATH_TRAILER = [
-  %Q{  <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/>},
-  %Q{  <classpathentry kind="con" path="org.maven.ide.eclipse.MAVEN2_CLASSPATH_CONTAINER/noworkspace"/>},
-  %Q{  <classpathentry kind="output" path="bin"/>},
-  %Q{</classpath>}
-].freeze
-
-# These may be overridden based on command line options
-
-$project_only = false
-$dryrun = false
-
-$opts = OptionParser.new do |opts|
-    opts.banner = "Usage: update-eclipse [options]"
-  
-    opts.on("-d", "--dry-run", "Show the generated POM but don't write anything") do
-        $dryrun = true
-    end
-    
-    opts.on("-p", "--project-only", "Update only the project control files, not the individual modules") do
-      $project_only = true
-    end
-    
-    opts.on("-h", "--help", "Help for this command") do
-        puts opts
-        exit
-    end
-    
-end
-
-def fail(message)
-    puts "Error: #{message}"
-    puts $opts
-end
-
-begin
-    $opts.parse!
-rescue OptionParser::InvalidOption
-    fail $!
-end
-
-def exist(mod_name, folder)
-  path = "#{mod_name}/#{folder}"
-
-  if File.directory?(path) 
-    yield path
-  end
-end
-
-def add_source_folder(mod_name, folder, output_dir)
-  exist(mod_name, folder) do |path|
-    $project_classpath << %Q{  <classpathentry kind="src" output="#{output_dir}" path="#{path}"/>}
-    $module_classpath <<  %Q{  <classpathentry kind="src" output="#{output_dir}"  path="#{folder}"/>}
-  end
-end
-
-def add_class_folder(mod_name, folder)
-  exist(mod_name, folder) do |path|
-    $project_classpath <<    %Q{  <classpathentry kind="lib" path="#{path}"/>}
-    $module_classpath << %Q{  <classpathentry kind="lib" path="#{folder}"/> }
-  end
-end
-
-def process_module(mod_name)
-  
-  # quickstart, being an archetype, is the odd man out
-  
-  return if mod_name == "quickstart"
-  
-  $module_classpath = []
-  
-  add_source_folder(mod_name, "src/main/java", "bin");
-  add_source_folder(mod_name, "src/test/java", "bin-test")
-  
-  add_class_folder(mod_name, "src/main/resources") 
-  add_class_folder(mod_name, "src/test/resources") 
-  
-  write_control_files(mod_name, mod_name, $module_classpath) unless $project_only
-  
-end
-
-def write_control_files(folder,  project_name, classpath)
-  
-  lines = CLASSPATH_HEADER.dup.concat(classpath).concat(CLASSPATH_TRAILER)
-  
-  write_lines("#{folder}/.classpath", lines)
-  
-  lines = [ 
-"<projectDescription>",
-"  <name>#{project_name}</name>",
-"  <comment></comment>",
-"  <projects>",
-"  </projects>",
-"  <buildSpec>",
-"    <buildCommand>",
-"      <name>org.eclipse.jdt.core.javabuilder</name>",
-"      <arguments>",
-"      </arguments>",
-"    </buildCommand>",
-"    <buildCommand>",
-"      <name>org.maven.ide.eclipse.maven2Builder</name>",
-"      <arguments>",
-"      </arguments>",
-"     </buildCommand>",
-"  </buildSpec>",
-"  <natures>",
-"    <nature>org.eclipse.jdt.core.javanature</nature>",
-"    <nature>org.maven.ide.eclipse.maven2Nature</nature>",
-"  </natures>",
-"</projectDescription>"
-]
-  
-  write_lines("#{folder}/.project", lines)
-  
-end
-
-def write_lines(file, lines)
-  if $dryrun
-    puts "Generated #{file}:\n"
-    lines.each { |s| puts s }
-    puts
-    return
-  end
-  
-  puts "Writing #{file} ..."
-  
-  File.open(file, "w") do |file|
-   lines.each do |line| 
-      file.print line 
-      file.print "\n"
-    end
-  end
-  
-end
-
-$master_pom = open("pom.xml") do |f|
-    Hpricot.XML(f)
-end
-
-
-# We're going to build up the project classpath a line at a time.  This part is always the same:
-
-$project_classpath = []
-
-$modules = []
-
-($master_pom/"project/modules/module").each { |elem| $modules << elem.inner_html }
-
-# Add entries for each module
-
-$modules.sort.each { |mod_name| process_module(mod_name) }
-
-# Write out the updated .classpath
-
-write_control_files(".", "datatech",  $project_classpath)
-
-puts "Updated .classpath across project."
-
diff --git a/maint-5-2/support/update-versions b/maint-5-2/support/update-versions
deleted file mode 100755
index b7f5b6b..0000000
--- a/maint-5-2/support/update-versions
+++ /dev/null
@@ -1,64 +0,0 @@
-#!/usr/bin/ruby
-
-# This script is used to roll the version numbers of all modules up.
-# The version number is always determined from the master POM's version number.
-# However, when changing version number of the master POM, every module must have
-# it's <parent>/<version> element updated.  That's what this script is for.
-
-# Rub gems:  Think of it as Maven for Ruby but not brain-damaged. See http://www.rubygems.org/read/book/1
-
-require 'rubygems'
-
-# This script requires the Ruby gem hpricot ("gem install hpricot"). It was built with version 0.6.
-# http://code.whytheluckystiff.net/hpricot
-
-require 'hpricot'
-
-# This script doesn't bother with optparse, it's just a single command line option: the new version number.
-# Use with care!
-
-$version = ARGV[0]
-
-def read_pom(file)
-  open(file) do |f|
-    Hpricot.XML(f)
-  end
-end
-
-def write(file, pom)
-  puts "Updating #{file} ..."
-  
-  File.open(file, "w") do |stream|
-    stream << pom
-  end  
-end
-
-def edit_pom(file)
-  pom = read_pom(file)
-  yield pom
-  write(file, pom)
-end
-
-def process_module(mod_name)
-
-  edit_pom("#{mod_name}/pom.xml") do |pom|
-    pom.at("/project/parent/version").inner_html = $version
-  end
-end
-
-puts "Updating to version #{$version} ..."
-
-edit_pom("pom.xml") do |pom|
-  
-  modules = []
-
-  (pom/"project/modules/module").each { |elem| modules << elem.inner_html }
-
-  modules.sort.each { |mod_name| process_module(mod_name) }
-
-  pom.at("/project/version").inner_html = $version
-end
-
-edit_pom("quickstart/src/main/resources/archetype-resources/pom.xml") do |pom|
-  pom.at("/project/properties/tapestry-release-version").inner_html = $version
-end
diff --git a/maint-5-2/tapestry-annotations/LICENSE-2.0.txt b/maint-5-2/tapestry-annotations/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/tapestry-annotations/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/tapestry-annotations/NOTICE.txt b/maint-5-2/tapestry-annotations/NOTICE.txt
deleted file mode 100644
index 4e5d2f5..0000000
--- a/maint-5-2/tapestry-annotations/NOTICE.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-Please refer to the NOTICE.txt for each sub-module to
-identify further dependencies.
diff --git a/maint-5-2/tapestry-annotations/pom.xml b/maint-5-2/tapestry-annotations/pom.xml
deleted file mode 100644
index 74604a3..0000000
--- a/maint-5-2/tapestry-annotations/pom.xml
+++ /dev/null
@@ -1,67 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <!-- We've been lucky on T4/T5 name mismatches elsewhere, but T4 has a tapestry-annotation artifact. -->
-    <artifactId>tapestry5-annotations</artifactId>
-    <packaging>jar</packaging>
-    <!-- This should change to tapestry-project -->
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-    <name>Tapestry Annotations</name>
-    <description>
-        Annotations used with Tapestry applications.
-    </description>
-    <inceptionYear>2007</inceptionYear>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>${testng-version}</version>
-            <scope>test</scope>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-        </plugins>
-    </build>
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>clirr-maven-plugin</artifactId>
-                <configuration>
-                    <comparisonVersion>5.1.0.5</comparisonVersion>
-                    <excludes>
-                        <exclude>**/internal/**</exclude>
-                        <exclude>**/test/**</exclude>
-                    </excludes>
-                </configuration>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/DataType.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/DataType.java
deleted file mode 100644
index 22c171d..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/DataType.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-import java.lang.annotation.*;
-
-/**
- * Used to explicitly set the data type used to select an editor (or display) block.  Normally, the data type is
- * determined from the type of the property (for example, property type java.lang.String would map to data type "text").
- * This annotation may be attached to a getter or setter method, or the matching field.
- */
-@Target({ ElementType.FIELD, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith({BEAN,COMPONENT,MIXIN,PAGE})
-public @interface DataType
-{
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/NonVisual.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/NonVisual.java
deleted file mode 100644
index 442b452..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/NonVisual.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation for properties which are non-visual, and so should not appear (by default) inside a {@link
- * BeanModel}. The annotation may be placed on either the getter or the setter method or on the field.
- */
-@Target({ ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.BEAN)
-public @interface NonVisual
-{
-
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/RelativePosition.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/RelativePosition.java
deleted file mode 100644
index 71664f3..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/RelativePosition.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-/**
- * Controls the position of newly added {@link PropertyModel}s inside a {@link BeanModel}.
- */
-public enum RelativePosition
-{
-    /**
-     * The new {@link PropertyModel} goes before the existing model.
-     */
-    BEFORE,
-
-    /**
-     * The new {@link PropertyModel} goes after the existing model.
-     */
-    AFTER
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/ReorderProperties.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/ReorderProperties.java
deleted file mode 100644
index c99e886..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/ReorderProperties.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
-
-import java.lang.annotation.*;
-
-
-/**
- * An annotation that may be placed on a JavaBean to re-order the properties.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.BEAN)
-public @interface ReorderProperties
-{
-    /**
-     * A comma-separated list of property names.  Properties will be re-ordered as specified, with any unmentioned
-     * property names ordered to the end of the list.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Translate.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Translate.java
deleted file mode 100644
index a5c7b2e..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Translate.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.BEAN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to attach the name of a Translator used to convert the associated property between server-side and
- * client-side representations.
- * <p/>
- * May be placed on any getter or setter method, or on the matching field.
- * 
- * @see Validate
- * @since 5.2.0
- */
-@Target(
-{ ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ BEAN, COMPONENT, MIXIN, PAGE })
-public @interface Translate
-{
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Validate.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Validate.java
deleted file mode 100644
index d5c12e7..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Validate.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.BEAN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to attach validation constraints directly to a property (either the getter or the setter method). The annotation
- * value is a comma separated list of <em>validation constraints</em>, each one identifying a validator type (such as
- * "required", "minlength") and optionally, a constraint value. Most validators need a constraint value, which is
- * separated from the type by an equals size (i.e., "maxlength=30"). In addition, the value may include
- * validator macros.
- * <p/>
- * May be placed on any getter or setter method, or on the matching field.
- * 
- * @see Translate
- */
-@Target(
-{ ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ BEAN, COMPONENT, MIXIN, PAGE })
-public @interface Validate
-{
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Width.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Width.java
deleted file mode 100644
index 5b1faed..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/beaneditor/Width.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-import java.lang.annotation.*;
-
-
-/**
- * Defines the desired width of the field used to edit the property.  Note that width (generally equivalent to the size
- * attribute of an HTML &lt;input&gt; element) is only used for presentation; validation must be used to actually
- * enforce a maximum input length.
- * <p/>
- * <p/>
- * May be placed on an getter or setter method, or on the matching field.
- */
-@Target({ ElementType.FIELD, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith({BEAN,COMPONENT,MIXIN,PAGE})
-public @interface Width
-{
-    /**
-     * The width used to display the field for the property (values less than one indicate unspecified).
-     */
-    int value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/AnnotationUseContext.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/AnnotationUseContext.java
deleted file mode 100644
index 40865ad..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/AnnotationUseContext.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-/**
- * Constants for documenting the context wherein the tapestry-provided annotations may be used, in conjunction with
- * {@link org.apache.tapestry5.ioc.annotations.UseWith}.
- *
- * @since 5.2.0.0
- */
-public enum AnnotationUseContext
-{
-    /**
-     * Annotation may be used on/in component classes
-     */
-    COMPONENT,
-
-    /**
-     * Annotation may be used on/in mixins
-     */
-    MIXIN,
-
-    /**
-     * Annotation may be used on modules
-     */
-    MODULE,
-
-    /**
-     * Annotation may be used on/in page classes
-     */
-    PAGE,
-
-    /**
-     * Annotation may be used on/in services
-     */
-    SERVICE,
-
-    /**
-     * Annotation may be used for service decorators
-     */
-    SERVICE_DECORATOR,
-
-    /**
-     * Annotation may be used on/in arbitrary java beans.
-     */
-    BEAN
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Autobuild.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Autobuild.java
deleted file mode 100644
index cc5bdd7..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Autobuild.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-
-/**
- * Directs that the value to be built should be an autobuild instance of the type with injections performed, via {@link
- * org.apache.tapestry5.ioc.ObjectLocator#autobuild(Class)}. This should only be placed on a field or parameter of an
- * instantiable type (not an interface).
- */
-@Target({ElementType.PARAMETER, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface Autobuild
-{
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Inject.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Inject.java
deleted file mode 100644
index f09e1a1..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Inject.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.*;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * This annotation serves is something of the Swiss Army knife for operations related to injection of dependencies into
- * an arbitrary method of Java Bean.
- * <p/>
- * <p>
- * It marks parameters that should be injected in the IoC container, and it marks fields that should be injected inside
- * Tapestry components.
- * <p/>
- * In terms of the IoC container; normally, resources take precedence over annotations when injecting. The Inject
- * annotation overrides this default, forcing the resolution of the parameters value via the master
- * {@link org.apache.tapestry5.ioc.ObjectProvider}, even when the parameter's type matches a type that is normally a
- * resource.
- * <p/>
- * For service implementations, module classes, and other objects constructed via
- * {@link org.apache.tapestry5.ioc.ObjectLocator#autobuild(Class)}, this annotation indicates that an injection is
- * desired on the field, as with fields of a Tapestry component.
- * <p/>
- * In terms of the IoC container, the Inject annotation is only used on parameters to service builder methods (and
- * contributor and decorator methods) and on module class constructors. constructors. However, inside Tapestry
- * components (<em>and only inside components</em>), it may be applied to fields. On fields that require injection, the
- * Inject annotation is <em>required</em>.
- * <p/>
- * Finally, on a constructor, this is used to indicate <em>which</em> constructor should be used when more than one is
- * available.
- * 
- * @see org.apache.tapestry5.ioc.ObjectProvider
- */
-@Target(
-{ PARAMETER, FIELD, CONSTRUCTOR })
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE, SERVICE })
-public @interface Inject
-{
-
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/InjectResource.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/InjectResource.java
deleted file mode 100644
index 82b7b86..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/InjectResource.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-
-/**
- * Annotation used with field injection when the desired injection value is a resource (such as a service id, service
- * configuration, or logger) and not an object obtained from the {@link org.apache.tapestry5.ioc.services.MasterObjectProvider}.
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface InjectResource
-{
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/InjectService.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/InjectService.java
deleted file mode 100644
index 38eaa03..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/InjectService.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-
-/**
- * Annotation used with parameters of service builder methods to identify the service to be injected into the service
- * builder method via the parameter. In many cases the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation is
- * more flexible or appropriate.
- * <p/>
- * This annotation may also be used with fields of service implementation classes, modules, or other objects constructed
- * via {@link org.apache.tapestry5.ioc.ObjectLocator#autobuild(Class)}.
- */
-@Target({PARAMETER, FIELD})
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface InjectService
-{
-
-    /**
-     * The id of the service to inject; either a fully qualified id, or the unqualified id of a service within the same
-     * module.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/IntermediateType.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/IntermediateType.java
deleted file mode 100644
index 86eeec2..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/IntermediateType.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-
-/**
- * Used to guide Tapestry when coercing from a raw type to a field or parameter type, by forcing Tapestry to coerce to
- * the intermediate type.  This was introduced to allow coercion from string to a time period (in milliseconds) via
- * {@link org.apache.tapestry5.ioc.util.TimeInterval}.
- *
- * @see org.apache.tapestry5.ioc.annotations.Value
- * @see org.apache.tapestry5.ioc.annotations.Symbol
- */
-@Target({ ElementType.PARAMETER, ElementType.FIELD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface IntermediateType
-{
-    /**
-     * The intermediate to coerce through.
-     */
-    Class value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Local.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Local.java
deleted file mode 100644
index 52ea95c..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Local.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-/**
- * A special marker annotation which limits the search for possible services to just the <em>same</em> module containing
- * the service being injected. Other marker annotations may also be applied. It is allowed on methods to
- * support the @Contribute annotation (used as a preferred alternative to the older naming convention for
- * identifying contribute methods and targetted services).
- */
-@Target(
-{ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface Local
-{
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/PostInjection.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/PostInjection.java
deleted file mode 100644
index 7f01f51..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/PostInjection.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-
-/**
- * Annotation for methods that should be invoked after injection. This occurs last: after constructor injection and
- * after field injection. It should be placed on a <strong>public method</strong>. Any return value from the method is
- * ignored. The order of invocation for classes with multiple marked methods (including methods inherited from
- * super-classes) is not, at this time, defined.
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface PostInjection
-{
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Primary.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Primary.java
deleted file mode 100644
index 62a8d87..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Primary.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation used to denote a service that is the primary instance of some common interface. This is often used
- * when a service is a {@linkplain org.apache.tapestry5.ioc.services.ChainBuilder chain of command} or
- * {@linkplain org.apache.tapestry5.ioc.services.StrategyBuilder strategy-based} and, therefore, many services will
- * implement the
- * same interface.
- */
-@Target(
-{ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface Primary
-{
-
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Symbol.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Symbol.java
deleted file mode 100644
index 68caaec..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Symbol.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * Used to inject a symbol value, via a symbol name. This is used much like {@link
- * org.apache.tapestry5.ioc.annotations.Value} annotation, except that symbols are not expanded ... the entire value is
- * a symbol name. This allows the annotation to reference a public constant variable.
- */
-@Target(
-        { PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE,SERVICE})
-public @interface Symbol
-{
-    /**
-     * The name of the symbol to inject.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/UseWith.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/UseWith.java
deleted file mode 100644
index c72c08b..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/UseWith.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-import static java.lang.annotation.RetentionPolicy.SOURCE;
-
-/**
- * Annotation documenting the context(s) in which tapestry-provided annotations may be used.
- * This annotation is solely for documentation purposes, is expressly not used at runtime
- * @since 5.2.0.0
- */
-@Target(ElementType.ANNOTATION_TYPE)
-@Retention(SOURCE)
-@Documented
-public @interface UseWith
-{
-    AnnotationUseContext[] value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Value.java b/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Value.java
deleted file mode 100644
index 2fcee2d..0000000
--- a/maint-5-2/tapestry-annotations/src/main/java/org/apache/tapestry5/ioc/annotations/Value.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * Used in conjunction with {@link org.apache.tapestry5.ioc.annotations.Inject} to inject a literal value, rather than a
- * service. Symbols in the value are expanded and the resulting string is coerced to the desired type. For IoC, this
- * annotation is only applied to parameters (on service builder methods, and on service constructors); for components,
- * it may also be applied to field.
- *
- * @see org.apache.tapestry5.ioc.services.SymbolSource
- * @see org.apache.tapestry5.ioc.services.TypeCoercer
- */
-@Target(
-        { PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE,SERVICE})
-public @interface Value
-{
-    /**
-     * The value to be coerced and injected.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-annotations/src/site/apt/index.apt b/maint-5-2/tapestry-annotations/src/site/apt/index.apt
deleted file mode 100644
index 9b80217..0000000
--- a/maint-5-2/tapestry-annotations/src/site/apt/index.apt
+++ /dev/null
@@ -1,23 +0,0 @@
- ----
- Tapestry Annotations
- ----
- 
-Tapestry Annotations
-
- The majority of Tapestry annotations (defined in the {{{../tapestry-core}tapestry-core}} and {{{../tapestry-ioc}tapestry-ioc}} modules)
- are very specific to Tapestry components or Tapestry IoC services.
- 
- A small number of annotations are intended for data holding classes that are not Tapestry components; these annotations
- allow high-level components such as Grid and BeanEditForm to
- create powerful user interfaces with out any additional coding.
- 
- By separating out those annotations from the rest of Tapestry, it is reasonable to includes such annotations inside your 
- data tier classes <without> having to bring all of Tapestry into your classpath.  This is very useful in multi-tier applications
- where data objects may originate in an application tier (such as a JEE application server) and travel to the presentation tier (a Tapestry application).
-
-Upgrade Notes
-
-* Release 5.0.12
-
- The artifact id for this module has changed to tapestry<<5>>-annotations.  This is necessary to
- support Tapestry 4 and Tapestry 5 applications co-existing within a single WAR.
diff --git a/maint-5-2/tapestry-annotations/src/site/site.xml b/maint-5-2/tapestry-annotations/src/site/site.xml
deleted file mode 100644
index cb8a4db..0000000
--- a/maint-5-2/tapestry-annotations/src/site/site.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2006 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Annotations">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-annotations/src/test/conf/testng.xml b/maint-5-2/tapestry-annotations/src/test/conf/testng.xml
deleted file mode 100644
index e7dc420..0000000
--- a/maint-5-2/tapestry-annotations/src/test/conf/testng.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!--
-   Copyright 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapestry Annotations" annotations="1.5" verbose="2">
-    <!-- This avoids a build error when performing a non-clean build.  Just another Maven fuckup to be worked around. -->
-    <test name="Placeholder (no tests)"/>
-</suite>
diff --git a/maint-5-2/tapestry-beanvalidator/pom.xml b/maint-5-2/tapestry-beanvalidator/pom.xml
deleted file mode 100644
index 20ad640..0000000
--- a/maint-5-2/tapestry-beanvalidator/pom.xml
+++ /dev/null
@@ -1,157 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.apache.tapestry</groupId>
-	<artifactId>tapestry-beanvalidator</artifactId>
-    <name>Tapestry/JSR-303 Integration Library</name>
-    <description>
-        Provides support for bean validation
-    </description>
-
-	<parent>
-		<groupId>org.apache.tapestry</groupId>
-		<artifactId>tapestry-project</artifactId>
-		<version>5.2.6</version>
-	</parent>
-
-	<url />
-	<dependencies>
-        <!-- For some reason, Maven 2.2.1 keeps reverting to the 1.5.6 version. -->
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-        
-		<dependency>
-			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-core</artifactId>
-			<type>jar</type>
-		</dependency>
-		<dependency>
-			<groupId>javax.servlet</groupId>
-			<artifactId>servlet-api</artifactId>
-			<type>jar</type>
-			<scope>provided</scope>
-		</dependency>
-		<dependency>
-			<groupId>javax.validation</groupId>
-			<artifactId>validation-api</artifactId>
-			<version>1.0.0.GA</version>
-			<type>jar</type>
-		</dependency>
-		<dependency>
-			<groupId>org.hibernate</groupId>
-			<artifactId>hibernate-validator</artifactId>
-			<version>4.0.0.GA</version>
-			<type>jar</type>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-test</artifactId>
-			<type>jar</type>
-		</dependency>
-		<dependency>
-			<groupId>org.easymock</groupId>
-			<artifactId>easymock</artifactId>
-			<type>jar</type>
-		</dependency>
-		<dependency>
-			<groupId>org.easymock</groupId>
-			<artifactId>easymockclassextension</artifactId>
-			<version>2.2.2</version>
-			<type>jar</type>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>log4j</groupId>
-			<artifactId>log4j</artifactId>
-			<version>1.2.14</version>
-			<type>jar</type>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-	
-	<build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Tapestry-Module-Classes>
-                                org.apache.tapestry5.beanvalidator.BeanValidatorModule
-                            </Tapestry-Module-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-
-        </plugins>
-    </build>
-	
-	<repositories>
-		<repository>
-			<id>jboss</id>
-			<url>http://repository.jboss.com/maven2</url>
-			<releases>
-				<enabled>true</enabled>
-			</releases>
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-		</repository>
-	</repositories>
-	
-	<reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorConfigurer.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorConfigurer.java
deleted file mode 100644
index 505ba70..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorConfigurer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator;
-
-import javax.validation.Configuration;
-
-/**
- * Defines the interface for a chain-of-command that updates JSR-303 configuration in some way before the {@link
- * javax.validation.ValidatorFactory} is created.
- * 
- * @since 5.2.0.0
- */
-public interface BeanValidatorConfigurer 
-{
-	/**
-	 * Passed the configuration so as to make changes.
-	 */
-	void configure(Configuration<?> configuration);
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorGroupSource.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorGroupSource.java
deleted file mode 100644
index 91f6f41..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorGroupSource.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-/**
- * Provides list of groups targeted for validation.
- *
- * @since 5.2.0.0
- */
-@UsesConfiguration(Class.class)
-public interface BeanValidatorGroupSource {
-	
-	/**
-	 * Returns groups targeted for validation.
-	 */
-	Class<?>[] get();
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
deleted file mode 100644
index 776cd19..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator;
-
-import javax.validation.MessageInterpolator;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Null;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-import javax.validation.groups.Default;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.internal.beanvalidator.BeanFieldValidatorDefaultSource;
-import org.apache.tapestry5.internal.beanvalidator.BeanValidationGroupSourceImpl;
-import org.apache.tapestry5.internal.beanvalidator.BeanValidatorSourceImpl;
-import org.apache.tapestry5.internal.beanvalidator.ClientConstraintDescriptorImpl;
-import org.apache.tapestry5.internal.beanvalidator.MessageInterpolatorImpl;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.MarkupRenderer;
-import org.apache.tapestry5.services.MarkupRendererFilter;
-
-/**
- * Module for JSR-303 services.
- * 
- * @since 5.2.0.0
- */
-public class BeanValidatorModule 
-{
-	public static void bind(final ServiceBinder binder) 
-	{
-		binder.bind(FieldValidatorDefaultSource.class, BeanFieldValidatorDefaultSource.class)
-					.withId("BeanFieldValidatorDefaultSource");
-		binder.bind(BeanValidatorGroupSource.class, BeanValidationGroupSourceImpl.class);
-		binder.bind(BeanValidatorSource.class, BeanValidatorSourceImpl.class);
-		binder.bind(ClientConstraintDescriptorSource.class, ClientConstraintDescriptorImpl.class);
-	}
-
-	public static void contributeServiceOverride(
-			MappedConfiguration<Class, Object> configuration,
-			@Local FieldValidatorDefaultSource source) 
-	{
-		configuration.add(FieldValidatorDefaultSource.class, source);
-	}
-	
-	public static Validator buildBeanValidator(ValidatorFactory validatorFactory, PropertyShadowBuilder propertyShadowBuilder) 
-	{
-		return propertyShadowBuilder.build(validatorFactory, "validator", Validator.class);
-	}
-	
-	
-	public static ValidatorFactory buildValidatorFactory( BeanValidatorSource beanValidatorSource, PropertyShadowBuilder propertyShadowBuilder) 
-	{
-		return propertyShadowBuilder.build(beanValidatorSource, "validatorFactory", ValidatorFactory.class);
-	}
-
-	public static void contributeBeanValidatorGroupSource(
-			final Configuration<Class> configuration) 
-	{
-		configuration.add(Default.class);
-	}
-	
-	public static void contributeBeanValidatorSource(
-			final OrderedConfiguration<BeanValidatorConfigurer> configuration, final ThreadLocale threadLocale) 
-	{
-		configuration.add("LocaleAwareMessageInterpolator", new BeanValidatorConfigurer() 
-		{
-			public void configure(javax.validation.Configuration<?> configuration) 
-			{
-				MessageInterpolator defaultInterpolator = configuration.getDefaultMessageInterpolator();
-				
-				configuration.messageInterpolator(new MessageInterpolatorImpl(defaultInterpolator, threadLocale));
-			}
-		});
-	}
-	
-	public static void contributeClientConstraintDescriptorSource(
-			final Configuration<ClientConstraintDescriptor> configuration) 
-	{
-		configuration.add(new ClientConstraintDescriptor(Max.class, "maxnumber", "value"));
-		configuration.add(new ClientConstraintDescriptor(Min.class, "minnumber", "value"));
-		configuration.add(new ClientConstraintDescriptor(NotNull.class, "notnull"));
-		configuration.add(new ClientConstraintDescriptor(Null.class, "isnull"));
-		configuration.add(new ClientConstraintDescriptor(Pattern.class, "pattern", "regexp"));
-		configuration.add(new ClientConstraintDescriptor(Size.class, "size", "min", "max"));
-	}
-	
-	public void contributeMarkupRenderer(
-			OrderedConfiguration<MarkupRendererFilter> configuration, 
-			
-			final AssetSource assetSource,
-			
-			final ThreadLocale threadLocale,
-			
-			final Environment environment)
-	{
-        MarkupRendererFilter injectBeanValidatorScript = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                RenderSupport renderSupport = environment.peek(RenderSupport.class);
-                
-                Asset validators = assetSource.getAsset(null, "org/apache/tapestry5/beanvalidator/tapestry-beanvalidator.js",
-                        threadLocale.getLocale());
-
-                renderSupport.addScriptLink(validators);
-
-                renderer.renderMarkup(writer);
-            }
-        };
-        
-        
-        configuration.add("BeanValidatorScript", injectBeanValidatorScript, "after:*");
-	}
-
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorSource.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorSource.java
deleted file mode 100644
index d65bf0a..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorSource.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator;
-
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-/**
- * Creates {@link javax.validation.ValidatorFactory}.
- * 
- * @since 5.2.0.0
- */
-@UsesOrderedConfiguration(BeanValidatorConfigurer.class)
-public interface BeanValidatorSource 
-{
-
-	/**
-	 * Creates a new Validator.
-	 */
-	Validator create();
-
-	/**
-	 * Returns the ValidatorFactory from which Validators are created.
-	 */
-	ValidatorFactory getValidatorFactory();
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/ClientConstraintDescriptor.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/ClientConstraintDescriptor.java
deleted file mode 100644
index 34110bf..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/ClientConstraintDescriptor.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
-
-import java.util.Set;
-
-import org.apache.tapestry5.json.JSONObject;
-
-/**
- * Describes a single client-side constraint.
- *
- */
-public final class ClientConstraintDescriptor
-{
-   private final Class annotationClass;
-   private final String validatorName;
-   private final Set<String> attributes;
-
-   /**
-    * Creates a {@link ClientConstraintDescriptor}.
-    * 
-    * @param annotationClass Type of the constraint annotation
-    * @param validatorName Name of the client-side validator
-    * @param attributes Attribute names of the constraint annotation to be passed (along with their values) to the JavaScript validator 
-    * function as an {@link JSONObject}.
-    */
-   public ClientConstraintDescriptor(final Class annotationClass,
-         final String validatorName, final String... attributes) 
-   {
-     this.annotationClass = annotationClass;
-     this.validatorName = validatorName;
-     this.attributes = newSet(attributes);
-   }
-   
-   /**
-    * Returns the annotation describing the constraint declaration.
-    */
-   public Class getAnnotationClass() 
-   {
-     return this.annotationClass;
-   }
-
-   /**
-    * Returns the name of the client-side validator.
-    */
-   public String getValidatorName() 
-   {
-     return this.validatorName;
-   }
-
-   /**
-    * Attribute names of the constraint annotation to be passed (along with their values) to the JavaScript validator 
-    * function as an {@link JSONObject}. 
-    */
-   public Set<String> getAttributes() 
-   {
-     return this.attributes;
-   }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/ClientConstraintDescriptorSource.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/ClientConstraintDescriptorSource.java
deleted file mode 100644
index 1bc522a..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/ClientConstraintDescriptorSource.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-/**
- * Source for {@link ClientConstraintDescriptor}.
- *
- */
-@UsesConfiguration(ClientConstraintDescriptor.class)
-public interface ClientConstraintDescriptorSource 
-{
-	/**
-	 * Return a {@link ClientConstraintDescriptor} for a constraint annotation or null.
-	 * 
-	 * @param annotationClass type of the constraint annotation
-	 */
-	ClientConstraintDescriptor getConstraintDescriptor(Class annotationClass);
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java
deleted file mode 100644
index 43eedfd..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidator.java
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.beanvalidator;
-
-import static java.lang.String.format;
-
-import java.lang.annotation.Annotation;
-import java.util.Iterator;
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.MessageInterpolator;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-import javax.validation.MessageInterpolator.Context;
-import javax.validation.metadata.BeanDescriptor;
-import javax.validation.metadata.ConstraintDescriptor;
-import javax.validation.metadata.PropertyDescriptor;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.beanvalidator.BeanValidatorGroupSource;
-import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptor;
-import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptorSource;
-import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-
-
-public class BeanFieldValidator implements FieldValidator
-{
-	private final Field field;
-	private final ValidatorFactory validatorFactory;
-	private final BeanValidatorGroupSource beanValidationGroupSource;
-	private final ClientConstraintDescriptorSource clientValidatorSource;
-	private final FormSupport formSupport;
-	private final Environment environment;
-	
-	public BeanFieldValidator(Field field,
-			ValidatorFactory validatorFactory,
-			BeanValidatorGroupSource beanValidationGroupSource,
-			ClientConstraintDescriptorSource clientValidatorSource,
-			FormSupport formSupport,
-			Environment environment) 
-	{
-		this.field = field;
-		this.validatorFactory = validatorFactory;
-		this.beanValidationGroupSource = beanValidationGroupSource;
-		this.clientValidatorSource = clientValidatorSource;
-		this.formSupport = formSupport;
-		this.environment = environment;
-	}
-	
-	public boolean isRequired() 
-	{
-		return false;
-	}
-
-	public void render(final MarkupWriter writer) 
-	{
-		final BeanValidationContext beanValidationContext = environment.peek(BeanValidationContext.class);
-
-		if (beanValidationContext == null) 
-		{
-			return;
-		}
-		
-		final Validator validator = validatorFactory.getValidator();
-		
-		BeanDescriptor beanDescriptor = validator.getConstraintsForClass(beanValidationContext.getBeanType());
-		
-		String currentProperty = beanValidationContext.getCurrentProperty();
-		
-		if(currentProperty == null) return;
-		
-		PropertyDescriptor propertyDescriptor = beanDescriptor.getConstraintsForProperty(currentProperty);
-		
-		if(propertyDescriptor == null) return;
-		
-		for (final ConstraintDescriptor<?> descriptor :propertyDescriptor.getConstraintDescriptors()) 
-		{
-			Class<? extends Annotation> annotationType = descriptor.getAnnotation().annotationType();
-			
-			ClientConstraintDescriptor clientConstraintDescriptor = clientValidatorSource.getConstraintDescriptor(annotationType);
-			
-			if(clientConstraintDescriptor != null)
-			{	
-				String message = format("%s %s", field.getLabel(), interpolateMessage(descriptor));
-				
-				JSONObject specs = new JSONObject();
-				
-                for (String attribute : clientConstraintDescriptor.getAttributes()) 
-                {
-                    Object object = descriptor.getAttributes().get(attribute);
-                    
-                    if (object == null) 
-                    {
-                      throw new RuntimeException("Expected attribute is null");
-                    }
-                    specs.put(attribute, object);
-                }
-                
-				formSupport.addValidation(field, clientConstraintDescriptor.getValidatorName(), message, specs);
-			}
-		}
-	}
-
-	@SuppressWarnings("unchecked")
-	public void validate(final Object value) throws ValidationException 
-	{
-
-		final BeanValidationContext beanValidationContext = environment.peek(BeanValidationContext.class);
-
-		if (beanValidationContext == null) 
-		{
-			return;
-		}
-		
-		final Validator validator = validatorFactory.getValidator();
-		
-		String currentProperty = beanValidationContext.getCurrentProperty();
-		
-		if(currentProperty == null) return;
-		
-		BeanDescriptor beanDescriptor = validator.getConstraintsForClass(beanValidationContext.getBeanType());
-		
-		PropertyDescriptor propertyDescriptor = beanDescriptor.getConstraintsForProperty(currentProperty);
-		
-		if(propertyDescriptor == null) return;
-		
-		final Set<ConstraintViolation<Object>> violations = validator.validateValue(
-						(Class<Object>) beanValidationContext.getBeanType(), currentProperty, 
-						value, beanValidationGroupSource.get());
-		
-		if (violations.isEmpty()) 
-		{
-			return;
-		}
-		
-		final StringBuilder builder = new StringBuilder();
-		
-		for (Iterator iterator = violations.iterator(); iterator.hasNext();) 
-		{
-			ConstraintViolation<?> violation = (ConstraintViolation<Object>) iterator.next();
-			
-			builder.append(format("%s %s", field.getLabel(), violation.getMessage()));
-			
-			if(iterator.hasNext())
-				builder.append(", ");
-	
-		}
-		
-		throw new ValidationException(builder.toString());
-
-	}
-	
-	private String interpolateMessage(final ConstraintDescriptor<?> descriptor)
-	{
-		String messageTemplate = (String) descriptor.getAttributes().get("message");
-		
-		MessageInterpolator messageInterpolator = validatorFactory.getMessageInterpolator();
-		
-		return messageInterpolator.interpolate(messageTemplate, new Context() 
-		{
-
-            public ConstraintDescriptor<?> getConstraintDescriptor() 
-            {
-              return descriptor;
-            }
-
-            public Object getValidatedValue() 
-            {
-              return null;
-            }
-        });
-	}
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java
deleted file mode 100644
index 4f7d263..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanFieldValidatorDefaultSource.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.beanvalidator;
-
-import java.util.Arrays;
-import java.util.Locale;
-
-import javax.validation.ValidatorFactory;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.beanvalidator.BeanValidatorGroupSource;
-import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptorSource;
-import org.apache.tapestry5.internal.services.CompositeFieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.Core;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.FormSupport;
-
-public class BeanFieldValidatorDefaultSource implements FieldValidatorDefaultSource 
-{
-	private final FieldValidatorDefaultSource fieldValidatorDefaultSource;
-	private final ValidatorFactory validatorFactory;
-	private final BeanValidatorGroupSource beanValidationGroupSource;
-	private final ClientConstraintDescriptorSource clientValidatorSource;
-	private final FormSupport formSupport;
-	private final Environment environment;
-
-	public BeanFieldValidatorDefaultSource(
-			@Core FieldValidatorDefaultSource fieldValidatorDefaultSource,
-			final ValidatorFactory validatorFactory,
-			final BeanValidatorGroupSource beanValidationGroupSource,
-			final ClientConstraintDescriptorSource clientValidatorSource,
-			final FormSupport formSupport,
-			final Environment environment) 
-	{
-		this.fieldValidatorDefaultSource = fieldValidatorDefaultSource;
-		this.validatorFactory = validatorFactory;
-		this.beanValidationGroupSource = beanValidationGroupSource;
-		this.clientValidatorSource = clientValidatorSource;
-		this.formSupport = formSupport;
-		this.environment = environment;
-	}
-
-	public FieldValidator createDefaultValidator(final Field field,
-			final String overrideId, final Messages overrideMessages,
-			final Locale locale, final Class propertyType,
-			final AnnotationProvider propertyAnnotations) 
-	{
-		
-		FieldValidator validator = fieldValidatorDefaultSource.createDefaultValidator(
-				field, overrideId, overrideMessages, locale, propertyType, propertyAnnotations);
-
-		
-		FieldValidator beanValidator 
-			= new BeanFieldValidator(field, validatorFactory, beanValidationGroupSource, 
-					clientValidatorSource, formSupport, environment);
-		
-		return new CompositeFieldValidator(Arrays.asList(validator, beanValidator));
-	}
-
-	public FieldValidator createDefaultValidator(
-			final ComponentResources resources, final String parameterName) 
-	{
-		final Class propertyType = resources.getBoundType(parameterName);
-		
-		if (propertyType == null)
-			return null;
-
-		final Field field = (Field) resources.getComponent();
-
-		return createDefaultValidator(field, resources.getId(), resources
-				.getContainerMessages(), resources.getLocale(), propertyType,
-				resources.getAnnotationProvider(parameterName));
-	}
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanValidationGroupSourceImpl.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanValidationGroupSourceImpl.java
deleted file mode 100644
index 0e7584c..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanValidationGroupSourceImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.beanvalidator;
-
-import java.util.Collection;
-
-import org.apache.tapestry5.beanvalidator.BeanValidatorGroupSource;
-
-
-public class BeanValidationGroupSourceImpl implements BeanValidatorGroupSource {
-	
-	private final Class<?>[] groups;
-
-	public BeanValidationGroupSourceImpl(Collection<Class> groups) 
-	{	
-		this.groups = groups.toArray(new Class<?>[]{});
-	}
-
-	public Class<?>[] get() 
-	{
-		return groups;
-	}
-
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanValidatorSourceImpl.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanValidatorSourceImpl.java
deleted file mode 100644
index 7cfe034..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/BeanValidatorSourceImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.beanvalidator;
-
-import java.util.List;
-
-import javax.validation.Configuration;
-import javax.validation.Validation;
-import javax.validation.Validator;
-import javax.validation.ValidatorFactory;
-
-import org.apache.tapestry5.beanvalidator.BeanValidatorConfigurer;
-import org.apache.tapestry5.beanvalidator.BeanValidatorSource;
-
-public class BeanValidatorSourceImpl implements BeanValidatorSource 
-{
-	private final ValidatorFactory validatorFactory;
-
-	public BeanValidatorSourceImpl(final List<BeanValidatorConfigurer> contribution) 
-	{
-		final Configuration<?> configuration = Validation.byDefaultProvider().configure();
-
-		for (final BeanValidatorConfigurer configurer : contribution) 
-		{
-			configurer.configure(configuration);
-		}
-
-		this.validatorFactory = configuration.buildValidatorFactory();
-	}
-
-	public Validator create() 
-	{
-		return this.validatorFactory.getValidator();
-	}
-
-	public ValidatorFactory getValidatorFactory() 
-	{
-		return this.validatorFactory;
-	}
-
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java
deleted file mode 100644
index 4455ace..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/ClientConstraintDescriptorImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.beanvalidator;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.util.Collection;
-
-import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptorSource;
-import org.apache.tapestry5.beanvalidator.ClientConstraintDescriptor;
-
-public class ClientConstraintDescriptorImpl implements ClientConstraintDescriptorSource 
-{
-
-   private Collection<ClientConstraintDescriptor> descriptors = newList();
-
-   public ClientConstraintDescriptorImpl(
-         final Collection<ClientConstraintDescriptor> configuration) 
-   {
-     super();
-     this.descriptors = configuration;
-   }
-
-   public ClientConstraintDescriptor getConstraintDescriptor(final Class annotationClass) 
-   {
-     for (final ClientConstraintDescriptor desc : this.descriptors) 
-     {
-         if (desc.getAnnotationClass().equals(annotationClass)) 
-         {
-           return desc;
-         }
-     }
-     return null;
-   }
-
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/MessageInterpolatorImpl.java b/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/MessageInterpolatorImpl.java
deleted file mode 100644
index 54c7021..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/internal/beanvalidator/MessageInterpolatorImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.beanvalidator;
-
-import java.util.Locale;
-
-import javax.validation.MessageInterpolator;
-
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-/**
- * The default message interpolation algorithm uses {@link Locale#getDefault()}. This behavior is not appropriate for Tapestry applications, 
- * thus we need a {@link Locale} aware message interpolator.
- */
-public class MessageInterpolatorImpl implements MessageInterpolator 
-{
-	private final MessageInterpolator delegate;
-	private final ThreadLocale threadLocale;
-	
-	public MessageInterpolatorImpl(MessageInterpolator delegate, ThreadLocale threadLocale) 
-	{
-		this.delegate = delegate;
-		this.threadLocale = threadLocale;
-	}
-
-	/**
-	 * @see javax.validation.MessageInterpolator#interpolate(java.lang.String, javax.validation.MessageInterpolator.Context)
-	 */
-	public String interpolate(String messageTemplate, Context context) 
-	{
-		return interpolate(messageTemplate, context, threadLocale.getLocale());
-	}
-
-	/**
-	 * @see javax.validation.MessageInterpolator#interpolate(java.lang.String, javax.validation.MessageInterpolator.Context, java.util.Locale)
-	 */
-	public String interpolate(String messageTemplate, Context context, Locale locale) 
-	{
-		return this.delegate.interpolate(messageTemplate, context, locale);
-	}
-
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/main/resources/org/apache/tapestry5/beanvalidator/tapestry-beanvalidator.js b/maint-5-2/tapestry-beanvalidator/src/main/resources/org/apache/tapestry5/beanvalidator/tapestry-beanvalidator.js
deleted file mode 100644
index 07a5bd5..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/main/resources/org/apache/tapestry5/beanvalidator/tapestry-beanvalidator.js
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.Validator.notnull = function(field, message, spec)
-{
-	Tapestry.Validator.required(field, message);
-};
-
-Tapestry.Validator.isnull = function(field, message, spec)
-{
-    field.addValidator(function(value)
-    {
-    	if (value != null) 
-    		throw message;
-     });
-};
-
-Tapestry.Validator.maxnumber = function(field, message, spec)
-{
-	Tapestry.Validator.max(field, message, spec.value);
-};
-
-Tapestry.Validator.minnumber = function(field, message, spec)
-{
-	Tapestry.Validator.min(field, message, spec.value);
-};
-
-Tapestry.Validator.size = function(field, message, spec)
-{
-    field.addValidator(function(value)
-    {
-    	if (Object.isString(value))
-    	{
-        	if (value.length < spec.min) throw message;
-        	if (value.length > spec.max) throw message;
-
-    	}
-    	else if (Object.isArray(value))
-    	{	
-    		if(this.tagName == "SELECT")
-    		{
-    			var selectedOptions = Element.childElements(this).size();
-    			if (selectedOptions < spec.min) throw message;
-    			if (selectedOptions > spec.max) throw message;
-    		}
-    	}
-     });
-};
-
-Tapestry.Validator.pattern = function(field, message, spec)
-{
-	Tapestry.Validator.regexp(field, message, spec.regexp);
-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/site/apt/conf.apt b/maint-5-2/tapestry-beanvalidator/src/site/apt/conf.apt
deleted file mode 100644
index 2b4c50b..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/site/apt/conf.apt
+++ /dev/null
@@ -1,45 +0,0 @@
-  ----
-  Configuration
-  ----
-
-Configuring Bean Validator
-
-  The Tapestry Bean Validator Library is responsible for configuring and bootstrapping the <<javax.validation.Validator>> for you.
-  In order to use this library you have to choose an implementation of the JSR-303 specification like {{{https://www.hibernate.org/412.html}Hibernate Validator 4.x}}. 
-  This library is not specific to any implementation of JSR-303 and will work with any implementation of your choice. 
-
-* Bootstraping the Bean Validator
-
-  The service {{{../apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorSource.html}BeanValidatorSource}} is responsible for 
-  bootstrapping the <<javax.validation.Validator>>. You can contribute a {{{../apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorConfigurer.html}BeanValidatorConfigurer}}
-  to the configuration of this service in order to participate on the configuration of <<javax.validation.Validator>>.
-
-+----+
-public static void contributeBeanValidatorSource(OrderedConfiguration<BeanValidatorConfigurer> configuration) 
-{
-   configuration.add("MyConfigurer", new BeanValidatorConfigurer() 
-   {
-      public void configure(javax.validation.Configuration<?> configuration) 
-      {
-         configuration.ignoreXmlConfiguration();
-      }
-   });
-}
-+----+
-
-* Validation groups
-
-  In JSR-303 validation groups are used you to define a subset of the constraints validated at a given time. If no validation group is specified 
-  the default group <<javax.validation.groups.Default>> is taken. Per default Tapestry passes only this group to <<javax.validation.Validator>>. 
-  You can tell Tapstry pass more groups by contributing group classes into the configuration of the service {{{../apidocs/org/apache/tapestry5/beanvalidator/BeanValidatorGroupSource.html}BeanValidatorGroupSource}}.  
-
-+----+
-public static void contributeBeanValidatorGroupSource(Configuration<Class> configuration) 
-{
-   configuration.add(MyGroup.class);
-}
-+----+
-
-* Limitations
-
-  This library does not provide clientside validation yet.
diff --git a/maint-5-2/tapestry-beanvalidator/src/site/apt/index.apt b/maint-5-2/tapestry-beanvalidator/src/site/apt/index.apt
deleted file mode 100644
index 32b8904..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/site/apt/index.apt
+++ /dev/null
@@ -1,12 +0,0 @@
- ----
- About Tapestry/JSR-303 Integration
- ----
-
-Tapestry/JSR-303 Integration
-
-  Tapestry provides a powerful validation mechanism which is described {{{../guide/validation.html}here}}. Among other things this
-  mechanism allows you to annotate your domain model classes with the annotation {{{../apidocs/org/apache/tapestry5/beaneditor/Validate.html}@Validate}}. 
-  This annotation is problematic if your domain model is used in non-Tapestry applications as well as in Tapestry applications. Your non-Tapestry application
-  becomes dependent on {{{../tapestry5-annotations/}tapestry5-annotations}}. To make your domain model independent from Tapestry you can use the {{{http://jcp.org/en/jsr/detail?id=303}JSR-303}}. 
-  This library provides integration between Tapestry and JSR-303.
-
diff --git a/maint-5-2/tapestry-beanvalidator/src/site/apt/userguide.apt b/maint-5-2/tapestry-beanvalidator/src/site/apt/userguide.apt
deleted file mode 100644
index c71418d..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/site/apt/userguide.apt
+++ /dev/null
@@ -1,73 +0,0 @@
- ----
- User Guide
- ----
-
-Validating Input Fields
-
-  After you included this library into your web app, you may use the JSR-303 annotations to validate the user's input. 
-  The JSR-303 annotations may even be combined with Tapestry's built-in annotation @Validate.
-
-+----+
-public class Login
-{
-   @NotNull
-   @Property @Persist
-   private String userName;
-
-   @NotNull 
-   @Validate("minlength=10")
-   @Property @Persist
-   private String password;
-
-   void onSuccess()
-   {
-      // Login the user here
-   }
-}
-+----+
-
-  Next you have to pass the object to validate into the Form's parameter <<validate>>. In the following example the Form's fields are bound to 
-  the properties of the page <<Login>>. That's why we pass <<this>>, thus the page instance, into the parameter <<validate>>. 
-  Since the parameter <<validate>> defaults to the container of the Form component, we can also remove <<validate="this">> in this example.
-
-+----+
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-   <body>
-      <t:form validate="this">
-
-         <t:errors/>
-
-         <p>
-            <t:textfield t:id="userName"/>
-         </p>
-         
-         <p>
-            <t:textfield t:id="password"/>
-         </p>
-         
-         <p>
-            <input type="submit" value="Login"/>
-         </p>
-      <t:form>
-   </body>
-</html>
-+----+
-
-Validating Beans with BeanEditForm
-
-  If you use the <<BeanEditForm>> it is even easier to validate your beans. The only thing you have to do is to annotate your beans with JSR-303 annotations. 
-  If you move from Tapestry's built-in validation mechanism to JSR-303 Bean Validation, you don't have to change your template at all.
-
-+----+
-public class User
-{
-   @NotNull
-   private String userName;
-
-   @NotNull 
-   @Validate("minlength=10")
-   private String password;
-
-   ...
-}
-+----+
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/site/site.xml b/maint-5-2/tapestry-beanvalidator/src/site/site.xml
deleted file mode 100644
index 4ec17a9..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/site/site.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2009 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry/JSR-303 Integration Library">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="About" href="index.html"/>
-            <item name="Configuration" href="conf.html"/>
-            <item name="User guide" href="userguide.html"/>
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/conf/testng.xml b/maint-5-2/tapestry-beanvalidator/src/test/conf/testng.xml
deleted file mode 100644
index 234ffec..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/conf/testng.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!-- 
-   Copyright 2009 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapestry Bean Validator" parallel="false" thread-count="10" annotations="1.5" verbose="2">
-    <parameter name="tapestry.integration-webapp" value="src/test/webapp"/>
-
-    <test name="Tapestry Bean Validatior Integration Tests">
-        <packages>
-            <package name="org.apache.tapestry5.beanvalidator.integration"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/conf/webdefault.xml b/maint-5-2/tapestry-beanvalidator/src/test/conf/webdefault.xml
deleted file mode 100644
index 34083c9..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java
deleted file mode 100644
index 9943e4b..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/apache/tapestry5/beanvalidator/integration/TapestryBeanValidationIntegrationTests.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.beanvalidator.integration;
-
-import org.apache.tapestry5.test.AbstractIntegrationTestSuite;
-import org.testng.annotations.Test;
-
-@Test(sequential = true, groups = "integration")
-public class TapestryBeanValidationIntegrationTests extends AbstractIntegrationTestSuite
-{
-    public TapestryBeanValidationIntegrationTests()
-    {
-        super("src/test/webapp");
-    }
-
-    @Test
-    public void form_validation() throws Exception
-    {
-    	start("Form Validation Demo");
-    	
-    	//Test JSR-303 validator
-    	
-    	clickAndWait(SUBMIT);
-
-        assertTextPresent("Login Name may not be null");
-        assertTextPresent("Secret Password may not be null");
-        assertTextPresent("Programming Languages size must be between 2 and 3");
-        assertTextPresent("Favorite Colors may not be null");
-        assertTextPresent("Birth Day may not be null");
-        
-
-        type("secretPassword", "igor");
-        
-    	addSelection("programmingLanguages-avail", "label=Java");
-    	addSelection("programmingLanguages-avail", "label=Ruby");
-    	click("programmingLanguages-select");
-    	
-    	select("favoriteColors", "label=Green");
-    	
-    	type("birthDay", "01.01.5000");
-    	
-    	clickAndWait(SUBMIT);
-
-    	assertTextPresent("Login Name may not be null");
-    	assertFalse(isTextPresent("Secret Password may not be null"));
-    	assertFalse(isTextPresent("Programming Languages size must be between 2 and 3"));
-    	assertFalse(isTextPresent("Favorite Colors may not be null"));
-    	assertTextPresent("Birth Day must be in the past");
-        
-        //Test Tapestry validator
-        
-        type("loginName", "igor");
-        type("birthDay", "6.04.1978");
-    	
-    	clickAndWait(SUBMIT);
-    	
-    	assertTextPresent("You must provide at least 5 characters for Login Name.");
-    	assertFalse(isTextPresent("Birth Day must be in the past"));
-        
-        type("loginName", "igor123");
-    	
-    	clickAndWait(SUBMIT);
-    	
-    	assertFalse(isTextPresent("You must provide at least 5 characters for Login Name."));
-    }
-
-    @Test
-    public void beaneditform_validation() throws Exception
-    {
-    	start("BeanEditForm Validation Demo");
-    	
-    	clickAndWait(SUBMIT);
-    	
-        assertTextPresent("User Name may not be null", "Password may not be null");
-        
-        type("userName", "igor");
-    	
-    	clickAndWait(SUBMIT);
-    	
-        assertTextPresent("User Name size must be between 7 and 10", "User Name must match \"[0-9]+\"");
-    }
-    
-    @Test
-    public void inject_validator() throws Exception
-    {
-    	start("Inject Validator Demo");
-    	
-    	clickAndWait(SUBMIT);
-
-    	assertTextPresent("User Name may not be null");
-    }
-    
-    @Test
-    public void client_validaton() throws Exception
-    {
-    	start("Client Validation Demo");
-    	
-    	//@NotNull
-    	click(SUBMIT);
-
-    	assertBubbleMessage("notNullValue", "Not Null Value may not be null");
-    	
-    	type("notNullValue", "igor");
-    	
-    	//@Min
-    	type("minValue", "3");
-    	
-    	click(SUBMIT);
-    	
-    	assertBubbleMessage("minValue", "Min Value must be greater than or equal to 6");
-    	
-    	//@Max
-    	type("minValue", "6");
-    	type("maxValue", "123");
-    	
-    	click(SUBMIT);
-    	
-    	assertBubbleMessage("maxValue", "Max Value must be less than or equal to 100");
-    	
-    	//@Null
-    	type("maxValue", "100");
-    	type("nullValue", "igor");
-    	
-    	type("stringSizeValue", "a");
-    	
-    	click(SUBMIT);
-    	
-    	assertBubbleMessage("stringSizeValue", "String Size Value size must be between 3 and 6");
-    	
-    	click(SUBMIT);
-    	
-    	type("stringSizeValue", "ab");
-    	
-    	addSelection("languages-avail", "label=Java");
-    	click("languages-select");
-    	
-    	click(SUBMIT);
-    	
-    	assertBubbleMessage("languages", "Languages size must be between 2 and 3");
-    	
-    	click(SUBMIT);
-
-    	assertBubbleMessage("nullValue", "Null Value must be null");
-    }
-    
-
-    
-    @Test
-    public void form_client_validation() throws Exception
-    {
-    	start("Form Client Validation Demo");
-    	
-    	click(SUBMIT);
-
-    	assertBubbleMessage("loginName", "Login Name may not be null");
-    	assertBubbleMessage("secretPassword", "Secret Password may not be null");
-    	assertBubbleMessage("programmingLanguages", "Programming Languages may not be null");
-    	assertBubbleMessage("favoriteColors", "Favorite Colors may not be null");
-    	assertBubbleMessage("birthDay", "Birth Day may not be null");
-    	
-    	type("loginName", "123");
-    	click(SUBMIT);
-    	
-    	assertBubbleMessage("loginName", "Login Name must match \"[a-zA-Z]+\"");
-    	
-    	type("loginName", "abc");
-    	click(SUBMIT);
-    	
-    	assertBubbleMessage("loginName", "You must provide at least 5 characters for Login Name.");
-    }
-    
-    protected final void assertBubbleMessage(String fieldId, String expected)
-    {
-        String popupId = fieldId + ":errorpopup";
-
-        waitForElementToAppear(popupId);
-
-        assertText(String.format("//div[@id='%s']/span", popupId), expected);
-    }
-    
-    protected final void waitForElementToAppear(String elementId)
-    {
-        String condition = String.format("window.$(\"%s\")", elementId);
-
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/TestEntity.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/TestEntity.java
deleted file mode 100644
index 2078a30..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/TestEntity.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.entities;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import javax.validation.constraints.Max;
-import javax.validation.constraints.Min;
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Null;
-import javax.validation.constraints.Size;
-
-public class TestEntity 
-{
-	@NotNull
-	private String notNullValue;
-	
-	@Null
-	private String nullValue;
-	
-	@Max(100)
-	private int maxValue;
-	
-	@Min(6)
-	private int minValue;
-	
-	@Size(min=3, max=6)
-	private String stringSizeValue;
-	
-	@Size(min=2, max=3)
-	private Collection<String> collectionSizeValue = new ArrayList<String>();
-
-	public String getNotNullValue() 
-	{
-		return notNullValue;
-	}
-
-	public void setNotNullValue(String notNullValue) 
-	{
-		this.notNullValue = notNullValue;
-	}
-
-	public String getNullValue() 
-	{
-		return nullValue;
-	}
-
-	public void setNullValue(String nullValue) 
-	{
-		this.nullValue = nullValue;
-	}
-
-	public int getMaxValue() {
-		return maxValue;
-	}
-
-	public void setMaxValue(int maxValue)
-	{
-		this.maxValue = maxValue;
-	}
-
-	public int getMinValue() 
-	{
-		return minValue;
-	}
-
-	public void setMinValue(int minValue) 
-	{
-		this.minValue = minValue;
-	}
-
-	
-	public String getStringSizeValue() 
-	{
-		return stringSizeValue;
-	}
-
-	public void setStringSizeValue(String stringSizeValue) 
-	{
-		this.stringSizeValue = stringSizeValue;
-	}
-	
-	public Collection<String> getCollectionSizeValue() 
-	{
-		return collectionSizeValue;
-	}
-
-	public void setCollectionSizeValue(Collection<String> collectionSizeValue) 
-	{
-		this.collectionSizeValue = collectionSizeValue;
-	}
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/User.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/User.java
deleted file mode 100644
index c8c6239..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/entities/User.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.entities;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-
-public class User
-{
-	@NotNull
-	@Size(min=7, max=10)
-	@Pattern(regexp = "[0-9]+")
-	private String userName;
-	
-	@NotNull
-	private String password;
-	
-	public String getUserName() 
-	{
-		return userName;
-	}
-	
-	public void setUserName(String userName) 
-	{
-		this.userName = userName;
-	}
-	
-	public String getPassword() 
-	{
-		return password;
-	}
-	
-	public void setPassword(String password)
-	{
-		this.password = password;
-	}
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/BeanEditFormValidationDemo.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/BeanEditFormValidationDemo.java
deleted file mode 100644
index 1754c7a..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/BeanEditFormValidationDemo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.example.testapp.entities.User;
-
-public class BeanEditFormValidationDemo 
-{
-	@Property
-	@Persist
-	private User user;
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ClientValidationDemo.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ClientValidationDemo.java
deleted file mode 100644
index aad5b3a..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/ClientValidationDemo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.example.testapp.entities.TestEntity;
-
-public class ClientValidationDemo 
-{
-	@Property
-	@Persist
-	private TestEntity testEntity;
-	
-	public StringValueEncoder getStringValueEncoder()
-	{
-		return new StringValueEncoder();
-	}
-	
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/FormClientValidationDemo.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/FormClientValidationDemo.java
deleted file mode 100644
index c157c5f..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/FormClientValidationDemo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-import java.util.Collection;
-import java.util.Date;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Pattern;
-import javax.validation.constraints.Size;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.example.testapp.services.Foo;
-
-public class FormClientValidationDemo
-{
-	@NotNull(groups=Foo.class)
-	@Pattern(regexp="[a-zA-Z]+")
-	@Validate("minlength=5")
-	@Property
-	@Persist
-	private String userName;
-	
-	@NotNull
-	@Property
-	@Persist
-	private String password;
-	
-	@NotNull
-	@Size(min=2, max=3)
-	@Property
-	@Persist
-	private Collection<String> languages;
-	
-	@NotNull
-	@Property
-	@Persist
-	private String color; 
-	
-	@NotNull
-	@Property
-	@Persist
-	private Date date; 
-	
-	public StringValueEncoder getStringValueEncoder()
-	{
-		return new StringValueEncoder();
-	}
-
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/FormValidationDemo.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/FormValidationDemo.java
deleted file mode 100644
index fb1bb32..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/FormValidationDemo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-import java.util.Collection;
-import java.util.Date;
-
-import javax.validation.constraints.NotNull;
-import javax.validation.constraints.Past;
-import javax.validation.constraints.Size;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.example.testapp.services.Foo;
-
-public class FormValidationDemo 
-{
-	@NotNull(groups=Foo.class)
-	@Validate("minlength=5")
-	@Property
-	@Persist
-	private String userName;
-	
-	@NotNull
-	@Property
-	@Persist
-	private String password;
-	
-	@NotNull
-	@Size(min=2, max=3)
-	@Property
-	@Persist
-	private Collection<String> languages;
-	
-	@NotNull
-	@Property
-	@Persist
-	private String color; 
-	
-	@NotNull
-	@Past
-	@Property
-	@Persist
-	private Date date; 
-	
-	public StringValueEncoder getStringValueEncoder()
-	{
-		return new StringValueEncoder();
-	}
-	
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/Index.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/Index.java
deleted file mode 100644
index b8fb10d..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/Index.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-/**
- * Start page of the test app.
- *
- */
-public class Index 
-{
-
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/InjectValidatorDemo.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/InjectValidatorDemo.java
deleted file mode 100644
index 78d9d77..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/pages/InjectValidatorDemo.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-import java.util.Set;
-
-import javax.validation.ConstraintViolation;
-import javax.validation.Validator;
-import javax.validation.constraints.NotNull;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.testapp.services.Bar;
-
-public class InjectValidatorDemo 
-{
-	@NotNull(groups=Bar.class)
-	@Validate("minlength=5")
-	@Property
-	@Persist
-	private String userName;
-	
-	@Inject
-	private Validator validator;
-	
-	@InjectComponent
-	private Form form;
-	
-	void onValidateForm()
-	{
-		Set<ConstraintViolation<InjectValidatorDemo>> violations = validator.validate(this, Bar.class);
-		
-		for (ConstraintViolation<InjectValidatorDemo> next : violations) 
-		{
-			form.recordError("User Name "+next.getMessage());
-		}
-	}
-	
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java
deleted file mode 100644
index 446d217..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/AppModule.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.beanvalidator.BeanValidatorConfigurer;
-import org.apache.tapestry5.beanvalidator.BeanValidatorModule;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.annotations.SubModule;
-
-@SubModule(BeanValidatorModule.class)
-public class AppModule
-{
-
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-    }
-    
-	public static void contributeBeanValidatorSource(
-			final OrderedConfiguration<BeanValidatorConfigurer> configuration) 
-	{
-		configuration.add("Test", new BeanValidatorConfigurer() 
-		{
-			
-			public void configure(javax.validation.Configuration<?> configuration) 
-			{
-				configuration.ignoreXmlConfiguration();
-			}
-		});
-	}
-
-
-	public static void contributeBeanValidatorGroupSource(
-			final Configuration<Class> configuration) 
-	{
-		configuration.add(Foo.class);
-	}
-
-}
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/Bar.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/Bar.java
deleted file mode 100644
index 9fe1eea..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/Bar.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.services;
-
-public interface Bar 
-{
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/Foo.java b/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/Foo.java
deleted file mode 100644
index 62b7b86..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/java/org/example/testapp/services/Foo.java
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.services;
-
-public interface Foo 
-{
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/resources/ValidationMessages_en.properties b/maint-5-2/tapestry-beanvalidator/src/test/resources/ValidationMessages_en.properties
deleted file mode 100644
index 10539ea..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/resources/ValidationMessages_en.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-javax.validation.constraints.AssertFalse.message=must be false
-javax.validation.constraints.AssertTrue.message=must be true
-javax.validation.constraints.DecimalMax.message=must be less than or equal to {value}
-javax.validation.constraints.DecimalMin.message=must be greater than or equal to {value}
-javax.validation.constraints.Digits.message=numeric value out of bounds (<{integer} digits>.<{fraction} digits> expected)
-javax.validation.constraints.Future.message=must be in the future
-javax.validation.constraints.Max.message=must be less than or equal to {value}
-javax.validation.constraints.Min.message=must be greater than or equal to {value}
-javax.validation.constraints.NotNull.message=may not be null
-javax.validation.constraints.Null.message=must be null
-javax.validation.constraints.Past.message=must be in the past
-javax.validation.constraints.Pattern.message=must match "{regexp}"
-javax.validation.constraints.Size.message=size must be between {min} and {max}
-org.hibernate.validator.constraints.Email.message="{value}" is not a valid email address
-org.hibernate.validator.constraints.Length.message=length must be between {min} and {max}
-org.hibernate.validator.constraints.NotEmpty.message=may not be empty
-org.hibernate.validator.constraints.Range.message={value} must be between {min} and {max}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/BeanEditFormValidationDemo.tml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/BeanEditFormValidationDemo.tml
deleted file mode 100644
index 95ffd0e..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/BeanEditFormValidationDemo.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <body>
-        <t:beaneditform object="user" clientValidation="false"/>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/ClientValidationDemo.tml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/ClientValidationDemo.tml
deleted file mode 100644
index 2b7ccef..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/ClientValidationDemo.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-    <body>
-        <t:beaneditform object="testEntity" clientValidation="true" add="collectionSizeValue">
-        	<p:collectionSizeValue>
-        		<t:label for="languages"/>
-        		<t:palette t:id="languages" model="literal:Java,C,Ruby,Python,Perl" selected="testEntity.collectionSizeValue" encoder="stringValueEncoder"/>
-        	</p:collectionSizeValue>
-        </t:beaneditform>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/FormClientValidationDemo.tml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/FormClientValidationDemo.tml
deleted file mode 100644
index 344246c..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/FormClientValidationDemo.tml
+++ /dev/null
@@ -1,28 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <body>
-        <t:form>
-        	<t:errors/>
-        	
-        	<br/>
-        	
-        	<t:textfield t:id="loginName" value="userName"/>
-        	
-        	<br/>
-        	
-        	<t:textfield t:id="secretPassword" value="password"/>
-        	
-        	<br/>
-        	<t:palette t:id="programmingLanguages" model="literal:Java,C,Ruby,Python,Perl" selected="languages" encoder="stringValueEncoder"/>       
-        		
-        	<br/>
-        	<t:select t:id="favoriteColors" model="literal:Red,Green,Blue" value="color"/>   
-        	     	
-        	<br/>
-        	<t:datefield t:id="birthDay" value="date" format="dd.MM.yyyy"/>
-
-        	<br/>
-        	<input type="submit" value="Go"/>
-        	
-        </t:form>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/FormValidationDemo.tml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/FormValidationDemo.tml
deleted file mode 100644
index cac660a..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/FormValidationDemo.tml
+++ /dev/null
@@ -1,28 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <body>
-        <t:form clientValidation="false">
-        	<t:errors/>
-        	
-        	<br/>
-        	
-        	<t:textfield t:id="loginName" value="userName"/>
-        	
-        	<br/>
-        	
-        	<t:textfield t:id="secretPassword" value="password"/>
-        	
-        	<br/>
-        	<t:palette t:id="programmingLanguages" model="literal:Java,C,Ruby,Python,Perl" selected="languages" encoder="stringValueEncoder"/>
-        	
-        	<br/>
-        	<t:select t:id="favoriteColors" model="literal:Red,Green,Blue" value="color"/>
-        	
-        	<br/>
-        	<t:datefield t:id="birthDay" value="date" format="dd.MM.yyyy"/>
-
-        	<br/>
-        	<input type="submit" value="Go"/>
-        	
-        </t:form>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/Index.tml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/Index.tml
deleted file mode 100644
index 559d216..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/Index.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <head>
-        <title>Start Page</title>
-    </head>
-    <body>
-        <h2>Test application for tapestry-jsr 303 integration tests</h2>
-
-        <ul>
-            <li>
-                <t:pagelink page="FormValidationDemo">Form Validation Demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="FormClientValidationDemo">Form Client Validation Demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="BeanEditFormValidationDemo">BeanEditForm Validation Demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="InjectValidatorDemo">Inject Validator Demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="ClientValidationDemo">Client Validation Demo</t:pagelink>
-            </li>
-        </ul>
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/InjectValidatorDemo.tml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/InjectValidatorDemo.tml
deleted file mode 100644
index aedab46..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/InjectValidatorDemo.tml
+++ /dev/null
@@ -1,16 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <body>
-        <t:form clientValidation="false">
-        	<t:errors/>
-        	
-        	<br/>
-        	
-        	<t:textfield t:id="userName" value="userName"/>
-        	
-        	<br/>
-        	
-        	<input type="submit" value="Login"/>
-        	
-        </t:form>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-beanvalidator/src/test/webapp/WEB-INF/web.xml b/maint-5-2/tapestry-beanvalidator/src/test/webapp/WEB-INF/web.xml
deleted file mode 100644
index bd9eed4..0000000
--- a/maint-5-2/tapestry-beanvalidator/src/test/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Tapestry-JSR 303 Integration Test Application</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.example.testapp</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-component-report/LICENSE.txt b/maint-5-2/tapestry-component-report/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/tapestry-component-report/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/tapestry-component-report/NOTICE.txt b/maint-5-2/tapestry-component-report/NOTICE.txt
deleted file mode 100644
index 7196130..0000000
--- a/maint-5-2/tapestry-component-report/NOTICE.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
\ No newline at end of file
diff --git a/maint-5-2/tapestry-component-report/pom.xml b/maint-5-2/tapestry-component-report/pom.xml
deleted file mode 100644
index b3de527..0000000
--- a/maint-5-2/tapestry-component-report/pom.xml
+++ /dev/null
@@ -1,142 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-component-report</artifactId>
-    <packaging>maven-plugin</packaging>
-    <name>Tapestry Component Parameters Report</name>
-    <description>
-        Generates component parameter documentation for Tapestry components,
-        mixins (and base classes)
-    </description>
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-
-    <inceptionYear>2007</inceptionYear>
-
-    <build>
-        <plugins>
-            <plugin>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                    <optimize>true</optimize>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <dependencies>
-
-        <!-- Copied from the maven javadoc plugin, for what's its worth. -->
-
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-project</artifactId>
-            <version>2.0.9</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-api</artifactId>
-            <version>2.0.9</version>
-        </dependency>
-        <dependency>
-            <groupId>org.codehaus.plexus</groupId>
-            <artifactId>plexus-utils</artifactId>
-            <version>1.5.6</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.maven</groupId>
-            <artifactId>maven-plugin-descriptor</artifactId>
-            <version>2.0.9</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.maven.reporting</groupId>
-            <artifactId>maven-reporting-impl</artifactId>
-            <version>2.0.4.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.maven.doxia</groupId>
-            <artifactId>doxia-site-renderer</artifactId>
-            <version>1.0-alpha-11</version>
-        </dependency>
-
-        <dependency>
-            <groupId>commons-lang</groupId>
-            <artifactId>commons-lang</artifactId>
-            <version>2.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-ioc</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>xom</groupId>
-            <artifactId>xom</artifactId>
-            <version>1.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>${testng-version}</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-    <reporting>
-        <plugins>
-            <plugin>
-                <artifactId>maven-plugin-plugin</artifactId>
-                <version>2.3</version>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-
-    <profiles>
-        <profile>
-            <id>default-tools.jar</id>
-            <activation>
-                <property>
-                    <name>java.vendor</name>
-                    <value>Sun Microsystems Inc.</value>
-                </property>
-            </activation>
-            <dependencies>
-                <dependency>
-                    <groupId>com.sun</groupId>
-                    <artifactId>tools</artifactId>
-                    <version>1.5.0</version>
-                    <scope>system</scope>
-                    <systemPath>${java.home}/../lib/tools.jar</systemPath>
-                </dependency>
-            </dependencies>
-        </profile>
-    </profiles>
-
-    <!-- Temporary: until we figure out what needs org.apache.maven.plugins:maven-plugins:pom:2-SNAPSHOT -->
-    <pluginRepositories>
-        <pluginRepository>
-            <id>apache-snapshots</id>
-            <url>http://people.apache.org/repo/m2-snapshot-repository/</url>
-        </pluginRepository>
-    </pluginRepositories>
-</project>
diff --git a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ClassDescription.java b/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ClassDescription.java
deleted file mode 100644
index 5763963..0000000
--- a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ClassDescription.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry.mojo;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Map;
-
-public class ClassDescription
-{
-    private final String superClassName;
-
-    private final String className;
-
-    private final String description;
-
-    private final boolean supportsInformalParameters;
-
-    private final Map<String, ParameterDescription> parameters = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, String> publishedParameters = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, String> events = CollectionFactory.newCaseInsensitiveMap();
-
-    private final String since;
-
-    public ClassDescription(String className, String superClassName, String description,
-                            boolean supportsInformalParameters, String since)
-    {
-        this.className = className;
-        this.superClassName = superClassName;
-        this.description = description;
-        this.supportsInformalParameters = supportsInformalParameters;
-        this.since = since;
-    }
-
-    public String getClassName()
-    {
-        return className;
-    }
-
-    public String getDescription()
-    {
-        return description;
-    }
-
-    public Map<String, ParameterDescription> getParameters()
-    {
-        return parameters;
-    }
-
-    public String getSuperClassName()
-    {
-        return superClassName;
-    }
-
-    public boolean isSupportsInformalParameters()
-    {
-        return supportsInformalParameters;
-    }
-
-    public String getSince()
-    {
-        return since;
-    }
-
-    /**
-     * Case insensitive map, keyed on parameter name, value is class name of component from which the parameter is
-     * published.
-     */
-    public Map<String, String> getPublishedParameters()
-    {
-        return publishedParameters;
-    }
-
-    /**
-     * Case insentive map, keyes on event name, value is optional description (often blank).
-     */
-    public Map<String, String> getEvents()
-    {
-        return events;
-    }
-}
diff --git a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ComponentReport.java b/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ComponentReport.java
deleted file mode 100644
index b4be095..0000000
--- a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ComponentReport.java
+++ /dev/null
@@ -1,1062 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry.mojo;
-
-import nu.xom.*;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.SystemUtils;
-import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.repository.ArtifactRepository;
-import org.apache.maven.doxia.sink.Sink;
-import org.apache.maven.doxia.siterenderer.Renderer;
-import org.apache.maven.model.Resource;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.reporting.AbstractMavenReport;
-import org.apache.maven.reporting.MavenReportException;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.codehaus.plexus.util.cli.CommandLineException;
-import org.codehaus.plexus.util.cli.CommandLineUtils;
-import org.codehaus.plexus.util.cli.Commandline;
-import org.codehaus.plexus.util.cli.DefaultConsumer;
-
-import java.io.*;
-import java.util.*;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * The component report generates documentation about components and parameters within the current project.
- *
- * @goal component-report
- * @requiresDependencyResolution compile
- * @execute phase="generate-sources"
- */
-@SuppressWarnings({ "unchecked" })
-public class ComponentReport extends AbstractMavenReport
-{
-    /**
-     * Subdirectory containing the component reference pages and index.
-     */
-    private static final String REFERENCE_DIR = "ref";
-
-    private final static String[] PARAMETER_HEADERS = { "Name", "Type", "Flags", "Default", "Default Prefix",
-            "Since", "Description" };
-
-    private static final Pattern TAPESTRY5_PATTERN = Pattern.compile("(org\\.apache\\.tapestry5[#_\\w\\.]*)");
-
-    private static final char QUOTE = '"';
-
-    /**
-     * Identifies the application root package.
-     *
-     * @parameter
-     * @required
-     */
-    private String rootPackage;
-
-    /**
-     * The Maven Project Object
-     *
-     * @parameter expression="${project}"
-     * @required
-     * @readonly
-     */
-    private MavenProject project;
-
-    /**
-     * Generates the site report
-     *
-     * @component
-     */
-    private Renderer siteRenderer;
-
-    /**
-     * Location of the generated site.
-     *
-     * @parameter default-value="${project.reporting.outputDirectory}"
-     * @required
-     */
-    private String outputDirectory;
-
-    /**
-     * @parameter expression="${project.build.directory}/generated-site/xdoc"
-     * @required
-     */
-    private File generatedDocsDirectory;
-
-    /**
-     * @parameter expression="${project.build.directory}/generated-site/resources"
-     * @required
-     */
-    private File generatedResourcesDirectory;
-
-    /**
-     * Working directory for temporary files.
-     *
-     * @parameter default-value="target"
-     * @required
-     */
-    private String workDirectory;
-
-    /**
-     * Relative path from the generated report to the API documentation (Javadoc). Defaults to "apidocs" but will often
-     * be changed to "../apidocs" when documentation is created at the project level.
-     *
-     * @parameter default-value="apidocs"
-     * @required
-     */
-    private String apidocs;
-
-    /**
-     * Where to find tapestry javadocs. This is used for generating documentation links for each parameter type.
-     * <p/>
-     * By default, this is set to "http://tapestry.apache.org/tapestry5/apidocs". A relative path can also be supplied
-     * (a sensible value would be 'apidocs') and is resolved from the documentation root.
-     *
-     * @parameter default-value="http://tapestry.apache.org/tapestry5/apidocs"
-     */
-    private String tapestryJavadoc;
-
-    @Override
-    protected String getOutputDirectory()
-    {
-        return outputDirectory;
-    }
-
-    @Override
-    protected MavenProject getProject()
-    {
-        return project;
-    }
-
-    @Override
-    protected Renderer getSiteRenderer()
-    {
-        return siteRenderer;
-    }
-
-    public String getDescription(Locale locale)
-    {
-        return "Tapestry component parameter reference documentation";
-    }
-
-    public String getName(Locale locale)
-    {
-        return "Component Reference";
-    }
-
-
-    public String getOutputName()
-    {
-        return REFERENCE_DIR + "/index";
-    }
-
-
-    private final static Set<String> SUPPORTED_SUBPACKAGES = CollectionFactory.newSet("base", "components", "mixins",
-                                                                                      "pages");
-
-    /**
-     * Generates the report; this consist of the index page
-     *
-     * @param locale
-     * @throws MavenReportException
-     */
-    @Override
-    protected void executeReport(Locale locale) throws MavenReportException
-    {
-        Map<String, ClassDescription> descriptions = runJavadoc();
-
-        getLog().info("Generating reference pages ...");
-
-        try
-        {
-            File refDir = new File(generatedDocsDirectory, REFERENCE_DIR);
-
-            refDir.mkdirs();
-
-
-            List<File> docSearchPath = createDocSearchPath();
-
-            Sink sink = getSink();
-
-            sink.head();
-            sink.title();
-            sink.text("Component Reference");
-            sink.title_();
-            sink.head_();
-
-            sink.section1();
-            sink.sectionTitle1();
-            sink.text("Component Reference");
-            sink.sectionTitle1_();
-            sink.list();
-
-            String currentSubpackage = null;
-
-            for (String className : InternalUtils.sortedKeys(descriptions))
-            {
-                String subpackage = extractSubpackage(className);
-
-                if (!SUPPORTED_SUBPACKAGES.contains(subpackage)) continue;
-
-                if (!subpackage.equals(currentSubpackage))
-                {
-                    if (currentSubpackage != null)
-                    {
-                        sink.list_();
-                        sink.section2_();
-                    }
-
-                    sink.section2();
-                    sink.sectionTitle2();
-                    sink.text(StringUtils.capitalize(subpackage));
-                    sink.sectionTitle2_();
-
-
-                    sink.list();
-
-                    currentSubpackage = subpackage;
-                }
-
-
-                sink.listItem();
-
-                sink.link(toHtml(toPath(className)));
-
-                sink.text(className);
-                sink.link_();
-
-                writeClassDescription(descriptions, refDir, docSearchPath, className);
-
-
-                sink.listItem_();
-            }
-
-            if (currentSubpackage != null)
-            {
-                sink.list_();
-                sink.section2_();
-            }
-        }
-        catch (Exception ex)
-        {
-            throw new MavenReportException(ex.getMessage(), ex);
-        }
-    }
-
-    private String toPath(String className)
-    {
-        return className.replace('.', '/');
-    }
-
-    private String toHtml(String filename)
-    {
-        int pos = filename.lastIndexOf("#");
-        if (pos < 0)
-            return filename + ".html";
-        else
-        {
-            return filename.substring(0, pos) + ".html" + filename.substring(pos);
-        }
-    }
-
-    private String extractSimpleName(String className)
-    {
-        int dotx = className.lastIndexOf(".");
-
-        return className.substring(dotx + 1);
-    }
-
-    private String extractSubpackage(String className)
-    {
-        int dotx = className.indexOf(".", rootPackage.length() + 1);
-
-        // For classes directly in the root package.
-
-        if (dotx < 1) return "";
-
-        return className.substring(rootPackage.length() + 1, dotx);
-    }
-
-    protected List<File> createDocSearchPath()
-    {
-        List<File> result = CollectionFactory.newList();
-
-        for (String sourceRoot : (List<String>) project.getCompileSourceRoots())
-        {
-            result.add(new File(sourceRoot));
-        }
-
-
-        for (Resource r : (List<Resource>) project.getResources())
-        {
-            String dir = r.getDirectory();
-
-            result.add(new File(dir));
-        }
-
-        return result;
-    }
-
-    private void writeClassDescription(Map<String, ClassDescription> descriptions, File refDir,
-                                       List<File> docSearchPath, String className) throws Exception
-    {
-
-        int dotx = className.lastIndexOf('.');
-        String packageName = className.substring(0, dotx);
-        File outputDir = new File(refDir, toPath(packageName));
-        outputDir.mkdirs();
-
-        File outputFile = new File(refDir, toPath(className) + ".xml");
-
-
-        Element root = new Element("document");
-
-        ClassDescription cd = descriptions.get(className);
-
-        Map<String, ParameterDescription> parameters = CollectionFactory.newMap(cd.getParameters());
-        List<String> parents = CollectionFactory.newList();
-
-        String current = cd.getSuperClassName();
-
-        Map<String, String> events = CollectionFactory.newCaseInsensitiveMap(cd.getEvents());
-
-        while (true)
-        {
-            ClassDescription superDescription = descriptions.get(current);
-
-            if (superDescription == null) break;
-
-            parents.add(current);
-            parameters.putAll(superDescription.getParameters());
-            events.putAll(superDescription.getEvents());
-
-            current = superDescription.getSuperClassName();
-        }
-
-        // Now, mix in the published parameters.
-
-        for (Map.Entry<String, String> entry : cd.getPublishedParameters().entrySet())
-        {
-            String name = entry.getKey();
-            String embeddedClassName = entry.getValue();
-
-            // TODO: Don't handle the case where the @Component.type attribute was used!
-
-            ParameterDescription pd = locatePublishedParameterDescription(name, embeddedClassName, descriptions);
-
-            parameters.put(name, pd);
-        }
-
-
-        Collections.reverse(parents);
-
-        // XOM is pretty verbose; it really needs a builder/fluent interface.
-
-        Element properties = addChild(root, "properties");
-        addChild(properties, "title", String.format("Component Reference: %s", className));
-
-        Element body = new Element("body");
-        root.appendChild(body);
-
-        Element section = addSection(body, className);
-
-
-        StringBuilder javadocURL = new StringBuilder(200);
-
-        int depth = packageName.split("\\.").length;
-
-
-        for (int i = 0; i < depth; i++)
-        {
-            javadocURL.append("../");
-        }
-
-        String pathToRefRoot = javadocURL.toString();
-
-        javadocURL.append("../");
-
-        String javadocHref = tapestryJavadoc.contains("://") ?
-                             tapestryJavadoc : javadocURL.toString() + tapestryJavadoc;
-
-        javadocURL.append(apidocs).append("/").append(toHtml(toPath(className)));
-
-        addChildWithJavadocs(section, "p", cd.getDescription(), javadocHref);
-
-        addLink(addChild(section, "p"), javadocURL.toString(), "[JavaDoc]");
-
-        if (!parents.isEmpty())
-        {
-            section = addSection(body, "Component Inheritance");
-            Element container = section;
-
-            for (String name : parents)
-            {
-
-                Element ul = addChild(container, "ul");
-
-                Element li = addChild(ul, "li");
-
-                addLink(li, toHtml(name), name);
-
-                container = li;
-            }
-
-            addChild(addChild(container, "ul"), "li", className);
-        }
-
-        if (!"".equals(cd.getSince()))
-        {
-            section = addSection(body, "Available since");
-
-            addChild(section, "p", cd.getSince());
-        }
-
-
-        if (!parameters.isEmpty())
-        {
-            section = addSection(body, "Component Parameters");
-
-            Element table = new Element("table");
-
-            section.appendChild(table);
-
-            Element headerRow = new Element("tr");
-            table.appendChild(headerRow);
-
-            for (String header : PARAMETER_HEADERS)
-                addChild(headerRow, "th", header);
-
-            List<String> flags = CollectionFactory.newList();
-
-            for (String name : InternalUtils.sortedKeys(parameters))
-            {
-                ParameterDescription pd = parameters.get(name);
-
-                flags.clear();
-
-                if (pd.getRequired()) flags.add("Required");
-
-                if (!pd.getCache()) flags.add("NOT Cached");
-
-                if (!pd.getAllowNull()) flags.add("NOT Allow Null");
-
-                Element row = new Element("tr");
-                table.appendChild(row);
-
-                addChild(row, "td", pd.getName());
-                addChildWithJavadocs(row, "td", pd.getType(), javadocHref);
-                addChild(row, "td", InternalUtils.join(flags));
-                addChild(row, "td", pd.getDefaultValue());
-                addChild(row, "td", pd.getDefaultPrefix());
-                addChild(row, "td", pd.getSince());
-                addChildWithJavadocs(row, "td", pd.getDescription(), javadocHref);
-            }
-        }
-
-        if (cd.isSupportsInformalParameters())
-            addChild(section, "p", "Informal parameters: supported");
-
-
-        if (!events.isEmpty())
-        {
-            section = addSection(body, "Component Events");
-
-            Element ul = addChild(section, "ul");
-
-            for (String name : InternalUtils.sortedKeys(events))
-            {
-                String value = events.get(name);
-
-                String text = value.length() > 0 ? name + ": " + value : name;
-
-                addChild(ul, "li", text);
-            }
-        }
-
-        addExternalDocumentation(body, docSearchPath, className);
-
-        addChild(body, "hr");
-
-        addLink(addChild(body, "p"), pathToRefRoot + "index.html", "Back to index");
-
-        Document document = new Document(root);
-
-
-        getLog().info(String.format("Writing %s", outputFile));
-
-        FileOutputStream fos = new FileOutputStream(outputFile);
-
-        BufferedOutputStream bos = new BufferedOutputStream(fos);
-
-        PrintWriter writer = new PrintWriter(bos);
-
-        writer.print(document.toXML());
-
-        writer.close();
-    }
-
-    private ParameterDescription locatePublishedParameterDescription(String name, String componentClassName,
-                                                                     Map<String, ClassDescription> descriptions)
-    {
-        String current = componentClassName;
-
-        while (current != null)
-        {
-            ClassDescription cd = descriptions.get(componentClassName);
-
-            if (cd == null) break;
-
-            String indirectClassName = cd.getPublishedParameters().get(name);
-
-            if (indirectClassName != null)
-            {
-                current = indirectClassName;
-                continue;
-            }
-
-            ParameterDescription pd = cd.getParameters().get(name);
-
-            if (pd != null) return pd;
-
-            current = cd.getSuperClassName();
-        }
-
-        throw new IllegalArgumentException(
-                String.format("Published parameter '%s' (from embedded component class %s) does not exist.",
-                              name, componentClassName));
-    }
-
-    private void addExternalDocumentation(Element body, List<File> docSearchPath, String className)
-            throws ParsingException, IOException
-    {
-        String classNamePath = toPath(className);
-
-        String pathExtension = classNamePath + ".xdoc";
-
-        for (File path : docSearchPath)
-        {
-            File file = new File(path, pathExtension);
-
-            getLog().debug(String.format("Checking for %s", file));
-
-            if (!file.exists()) continue;
-
-            getLog().info(String.format("Reading extra documentation from %s", file));
-
-            Builder builder = new Builder();
-
-            Document doc = builder.build(file);
-
-            // Transfer the nodes inside document/body into our body
-
-            Element incomingBody = doc.getRootElement().getFirstChildElement("body");
-
-            for (int i = 0; i < incomingBody.getChildCount(); i++)
-            {
-                Node incoming = incomingBody.getChild(i).copy();
-
-                body.appendChild(incoming);
-            }
-
-            Nodes nodes = doc.query("//img/@src");
-
-            int lastslashx = classNamePath.lastIndexOf('/');
-            String packagePath = classNamePath.substring(0, lastslashx);
-
-            File generatedRefRoot = new File(generatedResourcesDirectory, REFERENCE_DIR);
-            File generatedPackageRoot = new File(generatedRefRoot, packagePath);
-
-            for (int i = 0; i < nodes.size(); i++)
-            {
-                Node src = nodes.get(i);
-
-                String srcPath = src.getValue();
-
-                File imgFile = new File(path, packagePath + "/" + srcPath);
-                File imgTargetFile = new File(generatedPackageRoot, srcPath);
-
-                copy(imgFile, imgTargetFile);
-            }
-
-
-            return;
-        }
-    }
-
-    private void copy(File sourceFile, File targetFile) throws IOException
-    {
-        getLog().info(String.format("Copying image file %s to %s", sourceFile, targetFile));
-
-        targetFile.getParentFile().mkdirs();
-
-        byte[] buffer = new byte[20000];
-
-        InputStream in = new BufferedInputStream(new FileInputStream(sourceFile));
-        OutputStream out = new BufferedOutputStream(new FileOutputStream(targetFile));
-
-        while (true)
-        {
-            int length = in.read(buffer);
-
-            if (length < 0) break;
-
-            out.write(buffer, 0, length);
-        }
-
-        in.close();
-        out.close();
-    }
-
-
-    protected Map<String, ClassDescription> runJavadoc() throws MavenReportException
-    {
-        getLog().info("Running JavaDoc to collect component parameter data ...");
-
-        Commandline command = new Commandline();
-
-        try
-        {
-            command.setExecutable(pathToJavadoc());
-        }
-        catch (IOException ex)
-        {
-            throw new MavenReportException("Unable to locate javadoc command: " + ex.getMessage(), ex);
-        }
-
-        String parametersPath = workDirectory + File.separator + "component-parameters.xml";
-
-        String[] arguments = { "-private", "-o", parametersPath,
-
-                "-subpackages", rootPackage,
-
-                "-doclet", ParametersDoclet.class.getName(),
-
-                "-docletpath", docletPath(),
-
-                "-sourcepath", sourcePath(),
-
-                "-classpath", classPath() };
-
-        String argumentsFile = writeArgumentsFile(arguments);
-
-        command.addArguments(new String[] { "@" + argumentsFile });
-
-        executeCommand(command);
-
-        return readXML(parametersPath);
-    }
-
-    private String writeArgumentsFile(String[] arguments) throws MavenReportException
-    {
-        String fileName = workDirectory + "/component-report-javadoc-arguments.txt";
-
-        try
-        {
-            PrintWriter pw = new PrintWriter(fileName);
-
-            for (String arg : arguments)
-            {
-                pw.println(arg);
-            }
-
-            pw.close();
-        }
-        catch (IOException ex)
-        {
-            throw new MavenReportException(ex.getMessage());
-        }
-
-        return fileName;
-    }
-
-    @SuppressWarnings("unchecked")
-    private String sourcePath()
-    {
-        List<String> roots = project.getCompileSourceRoots();
-
-        return toArgumentPath(roots);
-    }
-
-    /**
-     * Needed to help locate this plugin's local JAR file for the -doclet argument.
-     *
-     * @parameter default-value="${localRepository}"
-     * @read-only
-     */
-    private ArtifactRepository localRepository;
-
-    /**
-     * Needed to help locate this plugin's local JAR file for the -doclet argument.
-     *
-     * @parameter default-value="${plugin.groupId}"
-     * @read-only
-     */
-    private String pluginGroupId;
-
-    /**
-     * Needed to help locate this plugin's local JAR file for the -doclet argument.
-     *
-     * @parameter default-value="${plugin.artifactId}"
-     * @read-only
-     */
-    private String pluginArtifactId;
-
-    /**
-     * Needed to help locate this plugin's local JAR file for the -doclet argument.
-     *
-     * @parameter default-value="${plugin.version}"
-     * @read-only
-     */
-    private String pluginVersion;
-
-    @SuppressWarnings("unchecked")
-    private String docletPath() throws MavenReportException
-    {
-        File file = new File(localRepository.getBasedir());
-
-        for (String term : pluginGroupId.split("\\."))
-            file = new File(file, term);
-
-        file = new File(file, pluginArtifactId);
-        file = new File(file, pluginVersion);
-
-        file = new File(file, String.format("%s-%s.jar", pluginArtifactId, pluginVersion));
-
-        return toArgumentPath(Arrays.asList(file.getAbsolutePath()));
-    }
-
-    @SuppressWarnings("unchecked")
-    private String classPath() throws MavenReportException
-    {
-        List<Artifact> artifacts = project.getCompileArtifacts();
-
-        return artifactsToArgumentPath(artifacts);
-    }
-
-    private String artifactsToArgumentPath(List<Artifact> artifacts) throws MavenReportException
-    {
-        List<String> paths = CollectionFactory.newList();
-
-        for (Artifact artifact : artifacts)
-        {
-            if (artifact.getScope().equals("test")) continue;
-
-            File file = artifact.getFile();
-
-            if (file == null) throw new MavenReportException(
-                    "Unable to execute Javadoc: compile dependencies are not fully resolved.");
-
-            paths.add(file.getAbsolutePath());
-        }
-
-        return toArgumentPath(paths);
-    }
-
-    private void executeCommand(Commandline command) throws MavenReportException
-    {
-        getLog().debug(command.toString());
-
-        CommandLineUtils.StringStreamConsumer err = new CommandLineUtils.StringStreamConsumer();
-
-        try
-        {
-            int exitCode = CommandLineUtils.executeCommandLine(command, new DefaultConsumer(), err);
-
-            if (exitCode != 0)
-            {
-                String message = String.format("Javadoc exit code: %d - %s\nCommand line was: %s", exitCode,
-                                               err.getOutput(), command);
-
-                throw new MavenReportException(message);
-            }
-        }
-        catch (CommandLineException ex)
-        {
-            throw new MavenReportException("Unable to execute javadoc command: " + ex.getMessage(), ex);
-        }
-
-        // ----------------------------------------------------------------------
-        // Handle Javadoc warnings
-        // ----------------------------------------------------------------------
-
-        if (StringUtils.isNotEmpty(err.getOutput()))
-        {
-            getLog().info("Javadoc Warnings");
-
-            StringTokenizer token = new StringTokenizer(err.getOutput(), "\n");
-            while (token.hasMoreTokens())
-            {
-                String current = token.nextToken().trim();
-
-                getLog().warn(current);
-            }
-        }
-    }
-
-    private String pathToJavadoc() throws IOException, MavenReportException
-    {
-        String executableName = SystemUtils.IS_OS_WINDOWS ? "javadoc.exe" : "javadoc";
-
-        File executable = initialGuessAtJavadocFile(executableName);
-
-        if (!executable.exists() || !executable.isFile())
-            throw new MavenReportException(String.format("Path %s does not exist or is not a file.", executable));
-
-        return executable.getAbsolutePath();
-    }
-
-    private File initialGuessAtJavadocFile(String executableName)
-    {
-        if (SystemUtils.IS_OS_MAC_OSX)
-            return new File(SystemUtils.getJavaHome() + File.separator + "bin", executableName);
-
-        return new File(SystemUtils.getJavaHome() + File.separator + ".." + File.separator + "bin", executableName);
-    }
-
-    private String toArgumentPath(List<String> paths)
-    {
-        StringBuilder builder = new StringBuilder(5000).append(QUOTE);
-
-        String sep = "";
-
-        for (String path : paths)
-        {
-            builder.append(sep);
-            builder.append(StringEscapeUtils.escapeJava(path));
-
-            sep = SystemUtils.PATH_SEPARATOR;
-        }
-
-        return builder.append(QUOTE).toString();
-    }
-
-    public Map<String, ClassDescription> readXML(String path) throws MavenReportException
-    {
-        try
-        {
-            Builder builder = new Builder(false);
-
-            File input = new File(path);
-
-            Document doc = builder.build(input);
-
-            return buildMapFromDocument(doc);
-        }
-        catch (Exception ex)
-        {
-            throw new MavenReportException(String.format("Failure reading from %s: %s", path, ex
-                    .getMessage()), ex);
-        }
-    }
-
-    private Map<String, ClassDescription> buildMapFromDocument(Document doc)
-    {
-        Map<String, ClassDescription> result = CollectionFactory.newMap();
-
-        Elements elements = doc.getRootElement().getChildElements("class");
-
-        for (int i = 0; i < elements.size(); i++)
-        {
-            Element element = elements.get(i);
-
-            String description = element.getFirstChildElement("description").getValue();
-
-            String className = element.getAttributeValue("name");
-            String superClassName = element.getAttributeValue("super-class");
-            String supportsInformalParameters = element.getAttributeValue("supports-informal-parameters");
-            String since = element.getAttributeValue("since");
-
-            ClassDescription cd = new ClassDescription(className, superClassName, description,
-                                                       Boolean.valueOf(supportsInformalParameters), since);
-
-            result.put(className, cd);
-
-            readParameters(cd, element);
-            readPublishedParameters(cd, element);
-            readEvents(cd, element);
-        }
-
-        return result;
-    }
-
-    private void readEvents(ClassDescription cd, Element classElement)
-    {
-        Elements elements = classElement.getChildElements("event");
-
-        for (int i = 0; i < elements.size(); i++)
-        {
-            Element node = elements.get(i);
-
-            String name = node.getAttributeValue("name");
-            String description = node.getValue();
-
-            cd.getEvents().put(name, description);
-        }
-    }
-
-    private void readParameters(ClassDescription cd, Element classElement)
-    {
-        Elements elements = classElement.getChildElements("parameter");
-
-        for (int i = 0; i < elements.size(); i++)
-        {
-            Element node = elements.get(i);
-
-            String name = node.getAttributeValue("name");
-            String type = node.getAttributeValue("type");
-
-            int dotx = type.lastIndexOf('.');
-            if (dotx > 0 && type.substring(0, dotx).equals("java.lang")) type = type.substring(dotx + 1);
-
-            String defaultValue = node.getAttributeValue("default");
-            boolean required = Boolean.parseBoolean(node.getAttributeValue("required"));
-            boolean cache = Boolean.parseBoolean(node.getAttributeValue("cache"));
-            boolean allowNull = Boolean.parseBoolean(node.getAttributeValue("allowNull"));
-            String defaultPrefix = node.getAttributeValue("default-prefix");
-            String description = node.getValue();
-            String since = node.getAttributeValue("since");
-
-            ParameterDescription pd = new ParameterDescription(name, type, defaultValue, defaultPrefix, required,
-                                                               allowNull, cache, description, since);
-
-            cd.getParameters().put(name, pd);
-        }
-    }
-
-    private void readPublishedParameters(ClassDescription cd, Element classElement)
-    {
-        Elements elements = classElement.getChildElements("published-parameter");
-
-        for (int i = 0; i < elements.size(); i++)
-        {
-            Element element = elements.get(i);
-
-            Attribute name = element.getAttribute("name");
-            Attribute embeddedTypeName = element.getAttribute("component-class");
-
-            cd.getPublishedParameters().put(name.getValue(), embeddedTypeName.getValue());
-        }
-
-    }
-
-    private Element addSection(Element container, String name)
-    {
-        Element section = new Element("section");
-        container.appendChild(section);
-
-        section.addAttribute(new Attribute("name", name));
-
-        return section;
-    }
-
-    private Element addLink(Element container, String URL, String text)
-    {
-        Element link = addChild(container, "a", text);
-
-        link.addAttribute(new Attribute("href", URL));
-
-        return link;
-    }
-
-    private Element addChild(Element container, String elementName)
-    {
-        Element child = new Element(elementName);
-        container.appendChild(child);
-
-        return child;
-    }
-
-    private Element addChild(Element container, String elementName, String text)
-    {
-        Element child = new Element(elementName);
-        container.appendChild(child);
-
-        child.appendChild(text);
-
-        return child;
-    }
-
-    private Element addChildWithJavadocs(Element container, String elementName, String text, String javadocHref)
-    {
-        final String[] parts = splitWithGroup(TAPESTRY5_PATTERN, text);
-        if (parts.length <= 1)
-        {
-            return addChild(container, elementName, text);
-        }
-
-        final Element element = addChild(container, elementName);
-
-        for (int i = 0; i < parts.length; i++)
-        {
-            String part = parts[i];
-            element.appendChild(part);
-            i++;
-            if (i < parts.length)
-            {
-                part = parts[i];
-                if (part.endsWith("."))
-                {
-                    part = part.substring(0, part.length() - 1);
-                    addLink(element, javadocHref + "/" + toHtml(toPath(part)), extractSimpleName(part));
-                    element.appendChild(".");
-                }
-                else
-                {
-                    addLink(element, javadocHref + "/" + toHtml(toPath(part)), extractSimpleName(part));
-                }
-            }
-        }
-        return element;
-    }
-
-    /**
-     * Splits a {@link CharSequence} using the given pattern while including after each part the matched group.<p/>
-     * Mostly copied from {@link Pattern#split(CharSequence)}.
-     */
-    private String[] splitWithGroup(Pattern pattern, CharSequence input)
-    {
-        int index = 0;
-        List<String> matchList = CollectionFactory.newList();
-        Matcher m = pattern.matcher(input);
-
-        // Add segments before each match found
-        while (m.find())
-        {
-            String match = input.subSequence(index, m.start()).toString();
-            String group = input.subSequence(m.start(), m.end()).toString();
-            matchList.add(match);
-            matchList.add(group);
-            index = m.end();
-        }
-
-        // If no match was found, return this
-        if (index == 0)
-            return new String[] { input.toString() };
-
-        // Add remaining segment
-        matchList.add(input.subSequence(index, input.length()).toString());
-
-        // Construct result
-        int resultSize = matchList.size();
-        while (resultSize > 0 && matchList.get(resultSize - 1).equals(""))
-            resultSize--;
-        String[] result = new String[resultSize];
-        return matchList.subList(0, resultSize).toArray(result);
-    }
-}
diff --git a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParameterDescription.java b/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParameterDescription.java
deleted file mode 100644
index 0f173a1..0000000
--- a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParameterDescription.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry.mojo;
-
-public class ParameterDescription
-{
-    private final String name;
-
-    private final String type;
-
-    private final String defaultValue;
-
-    private final String defaultPrefix;
-
-    private final boolean required;
-
-    private final boolean allowNull;
-
-    private final boolean cache;
-
-    private final String description;
-    
-    private final String since;
-
-    public ParameterDescription(String name, String type, String defaultValue,
-                                String defaultPrefix, boolean required, boolean allowNull, boolean cache,
-                                String description, String since)
-    {
-        this.name = name;
-        this.type = type;
-        this.defaultValue = defaultValue;
-        this.defaultPrefix = defaultPrefix;
-        this.required = required;
-        this.allowNull = allowNull;
-        this.cache = cache;
-        this.description = description;
-        this.since = since;
-    }
-
-    public boolean getCache()
-    {
-        return cache;
-    }
-
-    public String getDefaultPrefix()
-    {
-        return defaultPrefix;
-    }
-
-    public String getDefaultValue()
-    {
-        return defaultValue;
-    }
-
-    public String getDescription()
-    {
-        return description;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public boolean getRequired()
-    {
-        return required;
-    }
-
-    public String getType()
-    {
-        return type;
-    }
-
-    public boolean getAllowNull()
-    {
-        return allowNull;
-    }
-
-	public String getSince() 
-	{
-		return since;
-	}
-}
diff --git a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java b/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java
deleted file mode 100644
index d4eab4c..0000000
--- a/maint-5-2/tapestry-component-report/src/main/java/org/apache/tapestry/mojo/ParametersDoclet.java
+++ /dev/null
@@ -1,330 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry.mojo;
-
-import com.sun.javadoc.*;
-import com.sun.javadoc.AnnotationDesc.ElementValuePair;
-
-import java.io.File;
-import java.io.PrintWriter;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-/**
- * Generates an XML file that identifies all the classes that contain parameters, and all the parameters within each
- * component class. This XML is later converted into part of the Maven generated HTML site.
- * <p/>
- * To keep the -doclet parameter passed to javadoc simple, this class should not have any outside dependencies.
- */
-public class ParametersDoclet extends Doclet
-{
-    static String OUTPUT_PATH_OPTION = "-o";
-
-    static String outputPath;
-
-    static class Worker
-    {
-        private PrintWriter out;
-
-        private final Pattern stripper = Pattern.compile("(<.*?>|&.*?;)", Pattern.DOTALL);
-
-        public void run(String outputPath, RootDoc root) throws Exception
-        {
-            File output = new File(outputPath);
-
-            out = new PrintWriter(output);
-
-            println("<component-parameters>");
-
-            for (ClassDoc cd : root.classes())
-                emitClass(cd);
-
-            println("</component-parameters>");
-
-            out.close();
-        }
-
-        private void emitClass(ClassDoc classDoc)
-        {
-            if (!classDoc.isPublic()) return;
-
-            // Components must be root classes, not nested classes.
-            if (classDoc.containingClass() != null) return;
-
-            // Check for a no-args public constructor
-
-            boolean found = false;
-
-            for (ConstructorDoc cons : classDoc.constructors())
-            {
-                if (cons.isPublic() && cons.parameters().length == 0)
-                {
-                    found = true;
-                    break;
-                }
-            }
-
-            if (!found) return;
-
-            Map<String, String> annotationValues = findAnnotation(classDoc, "SupportsInformalParameters");
-
-            println("<class name='%s' super-class='%s'  supports-informal-parameters='%s' since='%s'>",
-                    classDoc.qualifiedTypeName(),
-                    classDoc.superclass().qualifiedTypeName(), annotationValues != null, getSinceTagValue(classDoc));
-            print("<description>");
-            printDescription(classDoc);
-            println("</description>", classDoc.commentText());
-
-            for (FieldDoc fd : classDoc.fields())
-            {
-                if (fd.isStatic()) continue;
-
-                if (!fd.isPrivate()) continue;
-
-                Map<String, String> parameterAnnotationsValues = findAnnotation(fd, "Parameter");
-
-                if (parameterAnnotationsValues != null)
-                {
-                    emitParameter(fd, parameterAnnotationsValues);
-
-                    continue;
-                }
-
-                Map<String, String> componentAnnotationValues = findAnnotation(fd, "Component");
-
-                if (componentAnnotationValues != null)
-                {
-                    emitPublishedParameters(fd, componentAnnotationValues);
-
-                    continue;
-                }
-
-            }
-
-            emitEvents(classDoc);
-
-
-            println("</class>");
-        }
-
-        private void emitEvents(ClassDoc classDoc)
-        {
-            for (AnnotationDesc annotation : classDoc.annotations())
-            {
-                if (!annotation.annotationType().qualifiedTypeName().equals(
-                        "org.apache.tapestry5.annotations.Events"))
-                {
-                    continue;
-                }
-
-                // Events has only a single attribute: value(), so we know its the first element
-                // in the array.
-
-                ElementValuePair pair = annotation.elementValues()[0];
-
-                AnnotationValue annotationValue = pair.value();
-                AnnotationValue[] values = (AnnotationValue[]) annotationValue.value();
-
-
-                for (AnnotationValue eventValue : values)
-                {
-                    String event = (String) eventValue.value();
-                    int ws = event.indexOf(' ');
-
-                    String name = ws < 0 ? event : event.substring(0, ws);
-                    String description = ws < 0 ? "" : event.substring(ws + 1).trim();
-
-                    print("<event name='%s'>%s</event>", name, description);
-                }
-                break;
-            }
-        }
-
-        private void emitPublishedParameters(FieldDoc fd, Map<String, String> componentAnnotationValues)
-        {
-            String names = get(componentAnnotationValues, "publishParameters", "");
-
-            if (names == null || names.equals("")) return;
-
-            String embeddedTypeName = fd.type().qualifiedTypeName();
-
-            for (String name : names.split("\\s*,\\s*"))
-            {
-                print("<published-parameter name='%s' component-class='%s'/>",
-                      name,
-                      embeddedTypeName);
-            }
-        }
-
-        private void emitParameter(FieldDoc fd, Map<String, String> parameterAnnotationValues)
-        {
-            String name = parameterAnnotationValues.get("name");
-            if (name == null) name = fd.name().replaceAll("^[$_]*", "");
-
-            print("<parameter name='%s' type='%s' default='%s' required='%s' cache='%s' " +
-                    "default-prefix='%s' since='%s'>",
-                  name, fd.type().qualifiedTypeName(), get(parameterAnnotationValues, "value", ""),
-                  get(parameterAnnotationValues, "required", "false"), get(parameterAnnotationValues, "cache", "true"),
-                  get(parameterAnnotationValues, "defaultPrefix", "prop"), getSinceTagValue(fd));
-
-            // Body of a parameter is the comment text.
-
-            printDescription(fd);
-
-            println("\n</parameter>");
-        }
-
-        private String getSinceTagValue(Doc doc)
-        {
-            Tag[] sinceTags = doc.tags("since");
-
-            return 0 < sinceTags.length ? sinceTags[0].text() : "";
-        }
-
-        private String get(Map<String, String> map, String key, String defaultValue)
-        {
-            if (map.containsKey(key)) return map.get(key);
-
-            return defaultValue;
-        }
-
-        private Map<String, String> findAnnotation(ProgramElementDoc doc, String name)
-        {
-            for (AnnotationDesc annotation : doc.annotations())
-            {
-                if (annotation.annotationType().qualifiedTypeName().equals(
-                        "org.apache.tapestry5.annotations." + name))
-                {
-                    Map<String, String> result = new HashMap<String, String>();
-
-                    for (ElementValuePair pair : annotation.elementValues())
-                        result.put(pair.element().name(), pair.value().value().toString());
-
-                    return result;
-                }
-            }
-
-            return null;
-        }
-
-        private void print(String format, Object... arguments)
-        {
-            String line = String.format(format, arguments);
-
-            out.print(line);
-        }
-
-        private void println(String format, Object... arguments)
-        {
-            print(format, arguments);
-
-            out.println();
-        }
-
-        private void printDescription(Doc holder)
-        {
-            StringBuilder builder = new StringBuilder();
-
-            for (Tag tag : holder.inlineTags())
-            {
-                if (tag.name().equals("Text"))
-                {
-                    builder.append(tag.text());
-                    continue;
-                }
-
-                if (tag.name().equals("@link"))
-                {
-                    SeeTag seeTag = (SeeTag) tag;
-
-                    String label = seeTag.label();
-                    if (label != null && !label.equals(""))
-                    {
-                        builder.append(label);
-                        continue;
-                    }
-
-                    if (seeTag.referencedClassName() != null) builder.append(seeTag.referencedClassName());
-
-                    if (seeTag.referencedMemberName() != null)
-                    {
-                        builder.append("#");
-                        builder.append(seeTag.referencedMemberName());
-                    }
-                }
-            }
-
-            String text = builder.toString();
-
-            // Fix it up a little.
-
-            // Remove any simple open or close tags found in the text, as well as any XML entities.
-
-            String stripped = stripper.matcher(text).replaceAll("");
-
-            out.print(stripped);
-        }
-    }
-
-    /**
-     * Yes we are interested in annotations, etc.
-     */
-    public static LanguageVersion languageVersion()
-    {
-        return LanguageVersion.JAVA_1_5;
-    }
-
-    public static int optionLength(String option)
-    {
-        if (option.equals(OUTPUT_PATH_OPTION)) return 2;
-
-        return 0;
-    }
-
-    public static boolean validOptions(String options[][], DocErrorReporter reporter)
-    {
-        for (String[] group : options)
-        {
-            if (group[0].equals(OUTPUT_PATH_OPTION)) outputPath = group[1];
-
-            // Do we need to check for other unexpected options?
-            // TODO: Check for duplicate -o?
-        }
-
-        if (outputPath == null) reporter.printError(String.format("Usage: javadoc %s path", OUTPUT_PATH_OPTION));
-
-        return true;
-    }
-
-    public static boolean start(RootDoc root)
-    {
-        // Enough of this static method bullshit. What the fuck were they thinking?
-
-        try
-        {
-            new Worker().run(outputPath, root);
-        }
-        catch (Exception ex)
-        {
-            root.printError(ex.getMessage());
-
-            return false;
-        }
-
-        return true;
-    }
-
-}
diff --git a/maint-5-2/tapestry-component-report/src/site/apt/index.apt b/maint-5-2/tapestry-component-report/src/site/apt/index.apt
deleted file mode 100644
index 5fe500a..0000000
--- a/maint-5-2/tapestry-component-report/src/site/apt/index.apt
+++ /dev/null
@@ -1,81 +0,0 @@
- ----
- Tapestry Component Parameters Report
- ----
- 
-Tapestry Component Parameters Report
-
-  This report generates a comprehensive listing of all the components in your module (either a component library or
-  a Tapestry application). For each component, the inheritance, description and complete set of parameters (including inherited parameters)
-  are displayed.
-
-  The documentation is generated from a mix of JavaDoc and annotations on the classes themselves, and from
-  external documentation you may provide.
-
-
-* Providing External Documentation
-
-  The external documentation is optional, and takes the form of a file, stored in the same package
-  as the component class, with the extension ".xdoc".
-
-  External documentation is in the {{{http://maven.apache.org/doxia/references/xdoc-format.html}Maven XDoc Format}},
-  which can be thought of as a somewhat rigid, stripped down version of XHTML.
-
-  The component report will extract the content of the \<body\> element and add it to the documention it
-  automatically generates.  It will also copy any images (the <<<src>>> attribute of any \<img\> element)
-  to the corresponding output folder.
-
-  The documentation is generated into a directory structure that mimics the package structure; thus links
-  to component documentation for components in the same package is just a link to another file (with a .html extension)
-  in the same folder.
-
-  Example:
-
-----
-<document>
-    <body>
-        <section name="Related Components">
-            <ul>
-                <li><a href="Foo.html">Foo</a></ul>
-                <li><a href="Bar.html">Bar</a></ul>
-            </ul>
-         </section>
-
-         <section name="Examples">
-
-            <p>The Baz component can be used to generate a gloop style of interface:</p>
-
-            <p><img src="baz_ref.png"/></p>
-
-            . . .
-----  
-
-
-  External documentation files (the .xdoc files and any related image files)
-  can be either on the Java main path (i.e., src/main/java) or on the resources path
-  (src/main/resources).  At this time, you should place them under src/main/java such that
-  the files are not packaged in your library JAR or application WAR.
-  
-* Generating the Report
-
-  Just add the following to the reporting/plugins section of your POM:
-  
-+---+
-<plugin>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-component-report</artifactId>
-    <version>5.0.x</version>
-    <configuration>
-        <rootPackage>org.example.myapp</rootPackage>
-    </configuration>                
-</plugin>
-+---+
-
-  Be sure the update the \<version\> element with the current version of the Maven plugin, and update the
-  \<rootPackage\> element with the value for your application (this will match the value you configure inside
-  your
-  {{{../tapestry-core/conf.html}web.xml}}).
-  
-* Limitations
-  
-  Doesn't have any way to generate parameters for base classes from another library; the tools assume that the components
-  are entirely self-contained within the current model.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-component-report/src/site/site.xml b/maint-5-2/tapestry-component-report/src/site/site.xml
deleted file mode 100644
index 6c12b88..0000000
--- a/maint-5-2/tapestry-component-report/src/site/site.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Core">
-    <bannerLeft>
-        <name>Tapestry</name>
-        <href>http://tapestry.apache.org/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Tapestry Component Report">
-            <item name="Usage" href="index.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-component-report/src/test/conf/testng.xml b/maint-5-2/tapestry-component-report/src/test/conf/testng.xml
deleted file mode 100644
index 754ffa0..0000000
--- a/maint-5-2/tapestry-component-report/src/test/conf/testng.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!--
-   Copyright 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapestry Component Report" annotations="1.5" verbose="10">
-    <test name="Internals">
-        <packages>
-            <package name="org.apache.tapestry.mojo"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-component-report/src/test/java/org/apache/tapestry/mojo/ComponentReportTest.java b/maint-5-2/tapestry-component-report/src/test/java/org/apache/tapestry/mojo/ComponentReportTest.java
deleted file mode 100644
index 5b91684..0000000
--- a/maint-5-2/tapestry-component-report/src/test/java/org/apache/tapestry/mojo/ComponentReportTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry.mojo;
-
-import org.apache.maven.doxia.module.xhtml.XhtmlSink;
-import org.apache.maven.doxia.module.xhtml.decoration.render.RenderingContext;
-import org.apache.maven.model.Model;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.project.MavenProject;
-import org.apache.maven.reporting.MavenReportException;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import org.codehaus.plexus.util.FileUtils;
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Tests {@link ComponentReport}.
- */
-public class ComponentReportTest extends Assert
-{
-    @Test(dataProvider = "docData")
-    public void doc_generation(final Map<String, ClassDescription> javadocResults, String createdFile,
-                               String tapestryDoc, String[] expectedSummaryParts, String[] expectedFileParts)
-            throws MojoExecutionException, IOException, MavenReportException
-    {
-        String tempDir = System.getProperty("java.io.tmpdir");
-        final File tempFolder = new File(tempDir, "t5_tests");
-        tempFolder.mkdir();
-
-        ComponentReport report = new ComponentReport()
-        {
-            @Override
-            protected String getOutputDirectory()
-            {
-                return tempFolder.toString();
-            }
-
-            @Override
-            protected MavenProject getProject()
-            {
-                return new MavenProject(new Model());
-            }
-
-            @Override
-            protected Map<String, ClassDescription> runJavadoc() throws MavenReportException
-            {
-                return javadocResults;
-            }
-
-            @Override
-            protected List<File> createDocSearchPath()
-            {
-                return newList();
-            }
-        };
-
-        try
-        {
-            initializeMojo(report, ComponentReport.class,
-                           "rootPackage", "org.apache.tapestry5.corelib",
-                           "apidocs", "apidocs",
-                           "tapestryJavadoc", tapestryDoc,
-                           "generatedDocsDirectory", tempFolder
-            );
-        }
-        catch (NoSuchFieldException e)
-        {
-            fail("Cannot initialize mojo");
-        }
-        catch (IllegalAccessException e)
-        {
-            fail("Cannot initialize mojo");
-        }
-
-        // generate report twice - helps uncover mojos that change their state during runs
-        // which is bad practice since properties aren't reinitialized on subsequent mojo invocations
-        generate(report, tempFolder);
-        StringWriter writer = generate(report, tempFolder);
-
-        String summaryOutput = writer.toString();
-        for (String summaryPart : expectedSummaryParts)
-        {
-            assertTrue(summaryOutput.contains(summaryPart));
-        }
-
-        File formReport = new File(tempFolder, createdFile);
-        String formOutput = FileUtils.fileRead(formReport);
-
-        for (String filePart : expectedFileParts)
-        {
-            assertTrue(formOutput.contains(filePart), "Output:\n" + formOutput + "\nshould contain:\n" + filePart);
-        }
-
-        FileUtils.forceDeleteOnExit(tempFolder);
-    }
-
-    private StringWriter generate(ComponentReport report, File tempFolder)
-            throws MavenReportException
-    {
-        StringWriter writer = new StringWriter();
-
-        RenderingContext context = new RenderingContext(tempFolder, "test.html");
-        XhtmlSink sink = new XhtmlSink(writer, context, newMap());
-
-        report.generate(new DoxiaXhtmlSinkDecorator(sink), Locale.US);
-
-        return writer;
-    }
-
-    private void initializeMojo(Object mojo, Class clazz, Object... propertyValues)
-            throws NoSuchFieldException, IllegalAccessException
-    {
-        for (int i = 0; i < propertyValues.length; i++)
-        {
-            String property = (String) propertyValues[i++];
-            Object value = propertyValues[i];
-
-            Field field = clazz.getDeclaredField(property);
-            field.setAccessible(true);
-
-            field.set(mojo, value);
-        }
-    }
-
-    @DataProvider
-    private Object[][] docData()
-    {
-        return new Object[][] {
-                {
-                        javadocDescriptionForForm(),
-                        "ref/org/apache/tapestry5/corelib/components/Form.xml",
-                        "http://tapestry.apache.org/tapestry5/apidocs",
-                        new String[] { "org.apache.tapestry5.corelib.components.Form" },
-                        new String[] {
-                                "<title>Component Reference: org.apache.tapestry5.corelib.components.Form</title>",
-                                "<a href=\"http://tapestry.apache.org/tapestry5/apidocs/org/apache/tapestry5/EventConstants.html#PREPARE\">" }
-                },
-                {
-                        javadocDescriptionForForm(),
-                        "ref/org/apache/tapestry5/corelib/components/Form.xml",
-                        "../apidocs",
-                        new String[] { "org.apache.tapestry5.corelib.components.Form" },
-                        new String[] {
-                                "<title>Component Reference: org.apache.tapestry5.corelib.components.Form</title>",
-                                "<a href=\"../../../../../../../apidocs/org/apache/tapestry5/EventConstants.html#PREPARE\">" }
-                },
-
-        };
-    }
-
-    private Map<String, ClassDescription> javadocDescriptionForForm()
-    {
-        Map<String, ClassDescription> results = newMap();
-        ClassDescription classDesc = new ClassDescription(
-                "org.apache.tapestry5.corelib.components.Form",
-                "java.lang.Object",
-                "When it renders, it fires a org.apache.tapestry5.EventConstants#PREPARE_FOR_RENDER\n" +
-                        " notification, followed by a org.apache.tapestry5.EventConstants#PREPARE",
-                false,
-                "5.1.0.0"
-        );
-
-        ParameterDescription paramDesc = new ParameterDescription(
-                "validationId", "String", "", "prop", false, false, true,
-                "Prefix value used when searching for validation messages and constraints. " +
-                        "The default is the Form component's\n" +
-                        " id. This is overriden by org.apache.tapestry5.corelib.components.BeanEditForm.",
-                        "5.1.0.0"
-        );
-        classDesc.getParameters().put(paramDesc.getName(), paramDesc);
-
-        results.put(classDesc.getClassName(), classDesc);
-
-        return results;
-    }
-}
diff --git a/maint-5-2/tapestry-component-report/src/test/java/org/apache/tapestry/mojo/DoxiaXhtmlSinkDecorator.java b/maint-5-2/tapestry-component-report/src/test/java/org/apache/tapestry/mojo/DoxiaXhtmlSinkDecorator.java
deleted file mode 100644
index 157325a..0000000
--- a/maint-5-2/tapestry-component-report/src/test/java/org/apache/tapestry/mojo/DoxiaXhtmlSinkDecorator.java
+++ /dev/null
@@ -1,408 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry.mojo;
-
-import org.codehaus.doxia.sink.Sink;
-import org.apache.maven.doxia.module.xhtml.XhtmlSink;
-
-/**
- * Decorates an {@link XhtmlSink} so that it can be used in place of a
- * {@link Sink}.<p/>
- * Since {@link Sink} is currently deprecated, this decoratar may not be
- * needed in the future - this will happen when the signature of
- * org.apache.maven.reporting.MavenReport#generate(org.codehaus.doxia.sink.Sink, java.util.Locale)
- * (from the org.apache.maven.reporting:maven-reporting-impl artifact) changes to
- * org.apache.maven.reporting.MavenReport#generate(org.apache.maven.doxia.Sink, java.util.Locale) 
- */
-public class DoxiaXhtmlSinkDecorator implements Sink {
-    private XhtmlSink _xhtmlSink;
-
-    public DoxiaXhtmlSinkDecorator(XhtmlSink xhtmlSink) {
-        _xhtmlSink = xhtmlSink;
-    }
-
-    public void head() {
-        _xhtmlSink.head();
-    }
-
-    public void head_() {
-        _xhtmlSink.head_();
-    }
-
-    public void title() {
-        _xhtmlSink.title();
-    }
-
-    public void title_() {
-        _xhtmlSink.title_();
-    }
-
-    public void author_() {
-        _xhtmlSink.author_();
-    }
-
-    public void date_() {
-        _xhtmlSink.date_();
-    }
-
-    public void body() {
-        _xhtmlSink.body();
-    }
-
-    public void body_() {
-        _xhtmlSink.body_();
-    }
-
-    public void section1() {
-        _xhtmlSink.section1();
-    }
-
-    public void section2() {
-        _xhtmlSink.section2();
-    }
-
-    public void section3() {
-        _xhtmlSink.section3();
-    }
-
-    public void section4() {
-        _xhtmlSink.section4();
-    }
-
-    public void section5() {
-        _xhtmlSink.section5();
-    }
-
-    public void section1_() {
-        _xhtmlSink.section1_();
-    }
-
-    public void section2_() {
-        _xhtmlSink.section2_();
-    }
-
-    public void section3_() {
-        _xhtmlSink.section3_();
-    }
-
-    public void section4_() {
-        _xhtmlSink.section4_();
-    }
-
-    public void section5_() {
-        _xhtmlSink.section5_();
-    }
-
-    public void sectionTitle1() {
-        _xhtmlSink.sectionTitle1();
-    }
-
-    public void sectionTitle1_() {
-        _xhtmlSink.sectionTitle1_();
-    }
-
-    public void sectionTitle2() {
-        _xhtmlSink.sectionTitle2();
-    }
-
-    public void sectionTitle2_() {
-        _xhtmlSink.sectionTitle2_();
-    }
-
-    public void sectionTitle3() {
-        _xhtmlSink.sectionTitle3();
-    }
-
-    public void sectionTitle3_() {
-        _xhtmlSink.sectionTitle3_();
-    }
-
-    public void sectionTitle4() {
-        _xhtmlSink.sectionTitle4();
-    }
-
-    public void sectionTitle4_() {
-        _xhtmlSink.sectionTitle4_();
-    }
-
-    public void sectionTitle5() {
-        _xhtmlSink.sectionTitle5();
-    }
-
-    public void sectionTitle5_() {
-        _xhtmlSink.sectionTitle5_();
-    }
-
-    public void list() {
-        _xhtmlSink.list();
-    }
-
-    public void list_() {
-        _xhtmlSink.list_();
-    }
-
-    public void listItem() {
-        _xhtmlSink.listItem();
-    }
-
-    public void listItem_() {
-        _xhtmlSink.listItem_();
-    }
-
-    public void numberedList(int i) {
-        _xhtmlSink.numberedList(i);
-    }
-
-    public void numberedList_() {
-        _xhtmlSink.numberedList_();
-    }
-
-    public void numberedListItem() {
-        _xhtmlSink.numberedListItem();
-    }
-
-    public void numberedListItem_() {
-        _xhtmlSink.numberedListItem_();
-    }
-
-    public void definitionList() {
-        _xhtmlSink.definitionList();
-    }
-
-    public void definitionList_() {
-        _xhtmlSink.definitionList_();
-    }
-
-    public void definedTerm() {
-        _xhtmlSink.definedTerm();
-    }
-
-    public void definedTerm_() {
-        _xhtmlSink.definedTerm_();
-    }
-
-    public void definition() {
-        _xhtmlSink.definition();
-    }
-
-    public void definition_() {
-        _xhtmlSink.definition_();
-    }
-
-    public void paragraph() {
-        _xhtmlSink.paragraph();
-    }
-
-    public void paragraph_() {
-        _xhtmlSink.paragraph_();
-    }
-
-    public void verbatim(boolean b) {
-        _xhtmlSink.verbatim(b);
-    }
-
-    public void verbatim_() {
-        _xhtmlSink.verbatim_();
-    }
-
-    public void horizontalRule() {
-        _xhtmlSink.horizontalRule();
-    }
-
-    public void table() {
-        _xhtmlSink.table();
-    }
-
-    public void table_() {
-        _xhtmlSink.table_();
-    }
-
-    public void tableRows(int[] ints, boolean b) {
-        _xhtmlSink.tableRows(ints, b);
-    }
-
-    public void tableRows_() {
-        _xhtmlSink.tableRows_();
-    }
-
-    public void tableRow() {
-        _xhtmlSink.tableRow();
-    }
-
-    public void tableRow_() {
-        _xhtmlSink.tableRow_();
-    }
-
-    public void tableCell() {
-        _xhtmlSink.tableCell();
-    }
-
-    public void tableHeaderCell() {
-        _xhtmlSink.tableHeaderCell();
-    }
-
-    public void tableCell(boolean b) {
-        _xhtmlSink.tableCell(b);
-    }
-
-    public void tableCell(String s) {
-        _xhtmlSink.tableCell(s);
-    }
-
-    public void tableHeaderCell(String s) {
-        _xhtmlSink.tableHeaderCell(s);
-    }
-
-    public void tableCell(boolean b, String s) {
-        _xhtmlSink.tableCell(b, s);
-    }
-
-    public void tableCell_() {
-        _xhtmlSink.tableCell_();
-    }
-
-    public void tableHeaderCell_() {
-        _xhtmlSink.tableHeaderCell_();
-    }
-
-    public void tableCell_(boolean b) {
-        _xhtmlSink.tableCell_(b);
-    }
-
-    public void tableCaption() {
-        _xhtmlSink.tableCaption();
-    }
-
-    public void tableCaption_() {
-        _xhtmlSink.tableCaption_();
-    }
-
-    public void figure() {
-        _xhtmlSink.figure();
-    }
-
-    public void figure_() {
-        _xhtmlSink.figure_();
-    }
-
-    public void figureCaption() {
-        _xhtmlSink.figureCaption();
-    }
-
-    public void figureCaption_() {
-        _xhtmlSink.figureCaption_();
-    }
-
-    public void figureGraphics(String s) {
-        _xhtmlSink.figureGraphics(s);
-    }
-
-    public void anchor(String s) {
-        _xhtmlSink.anchor(s);
-    }
-
-    public void anchor_() {
-        _xhtmlSink.anchor_();
-    }
-
-    public void link(String s) {
-        _xhtmlSink.link(s);
-    }
-
-    public void link(String s, String s1) {
-        _xhtmlSink.link(s, s1);
-    }
-
-    public void link_() {
-        _xhtmlSink.rawText("</a>");
-        //_xhtmlSink.link_();
-    }
-
-    public void italic() {
-        _xhtmlSink.italic();
-    }
-
-    public void italic_() {
-        _xhtmlSink.italic_();
-    }
-
-    public void bold() {
-        _xhtmlSink.bold();
-    }
-
-    public void bold_() {
-        _xhtmlSink.bold_();
-    }
-
-    public void monospaced() {
-        _xhtmlSink.monospaced();
-    }
-
-    public void monospaced_() {
-        _xhtmlSink.monospaced_();
-    }
-
-    public void lineBreak() {
-        _xhtmlSink.lineBreak();
-    }
-
-    public void nonBreakingSpace() {
-        _xhtmlSink.nonBreakingSpace();
-    }
-
-    public void text(String s) {
-        _xhtmlSink.text(s);
-    }
-
-    public void rawText(String s) {
-        _xhtmlSink.rawText(s);
-    }
-
-    public void flush() {
-        _xhtmlSink.flush();
-    }
-
-    public void close() {
-        _xhtmlSink.close();
-    }
-
-    public void definitionListItem() {
-        _xhtmlSink.definitionListItem();
-    }
-
-    public void definitionListItem_() {
-        _xhtmlSink.definitionListItem_();
-    }
-
-    public void author() {
-        _xhtmlSink.author();
-    }
-
-    public void date() {
-        _xhtmlSink.date();
-    }
-
-    public void sectionTitle() {
-        _xhtmlSink.sectionTitle();
-    }
-
-    public void sectionTitle_() {
-        _xhtmlSink.sectionTitle_();
-    }
-
-    public void pageBreak() {
-        _xhtmlSink.pageBreak();
-    }
-}
diff --git a/maint-5-2/tapestry-core/LICENSE.txt b/maint-5-2/tapestry-core/LICENSE.txt
deleted file mode 100644
index 75248b8..0000000
--- a/maint-5-2/tapestry-core/LICENSE.txt
+++ /dev/null
@@ -1,437 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
--------------------------------------------------------------------------------
-
-This module, tapestry-core, includes a number of resources with seperate copyrights and licenses.
-
--------------------------------------------------------------------------------
-
-JAVASSIST
-
-Javassist is not bundled with tapestry-core, but tapestry-core is not functional without Javassist.
-Javassist is distributed under a dual license: Mozilla Public License or LGPL (Lesser Gnu Public License). Tapestry
-invokes the MPL for compatibility with the Apache Software License.
-
-MOZILLA PUBLIC LICENSE
-Version 1.1
-
-1. Definitions.
-
-      1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
-
-      1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications.
-
-      1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
-
-      1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
-
-      1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.
-
-      1.5. ''Executable'' means Covered Code in any form other than Source Code.
-
-      1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
-
-      1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
-
-      1.8. ''License'' means this document.
-
-      1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-
-      1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
-            A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
-
-            B. Any new file that contains any part of the Original Code or previous Modifications.
-             
-      1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
-
-      1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation,  method, process, and apparatus claims, in any patent Licensable by grantor.
-
-      1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
-
-      1.12. "You'' (or "Your")  means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-
-2. Source Code License.
-
-      2.1. The Initial Developer Grant.
-      The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
-            (a)  under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
-
-            (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
-            (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
-
-            (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code;  or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
-             
-      2.2. Contributor Grant.
-      Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
-
-            (a)  under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
-
-            (b) under Patent Claims infringed by the making, using, or selling of  Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of  Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-
-            (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
-
-            (d)    Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2)  separate from the Contributor Version;  3)  for infringements caused by: i) third party modifications of Contributor Version or ii)  the combination of Modifications made by that Contributor with other software  (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
-
-
-3. Distribution Obligations.
-
-      3.1. Application of License.
-      The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
-
-      3.2. Availability of Source Code.
-      Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
-
-      3.3. Description of Modifications.
-      You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
-
-      3.4. Intellectual Property Matters
-            (a) Third Party Claims.
-            If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
-
-            (b) Contributor APIs.
-            If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
-             
-                (c)    Representations.
-            Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
-
-
-      3.5. Required Notices.
-      You must duplicate the notice in Exhibit A in each file of the Source Code.  If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice.  If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A.  You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code.  You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-
-      3.6. Distribution of Executable Versions.
-      You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-
-      3.7. Larger Works.
-      You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
-      If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
-
-5. Application of this License.
-
-      This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
-      6.1. New Versions.
-      Netscape Communications Corporation (''Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
-
-      6.2. Effect of New Versions.
-      Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.
-
-      6.3. Derivative Works.
-      If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
-      COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
-      8.1.  This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-
-      8.2.  If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant")  alleging that:
-
-      (a)  such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i)  agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant.  If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
-
-      (b)  any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
-
-      8.3.  If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
-
-      8.4.  In the event of termination under Sections 8.1 or 8.2 above,  all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
-      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
-      The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
-
-11. MISCELLANEOUS.
-
-      This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
-      As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
-      Initial Developer may designate portions of the Covered Code as ÒMultiple-Licensed?.  ÒMultiple-Licensed? means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the MPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
-
-
-EXHIBIT A -Mozilla Public License.
-
-      The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
-      http://www.mozilla.org/MPL/
-
-      Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
-      ANY KIND, either express or implied. See the License for the specific language governing rights and
-      limitations under the License.
-
-      The Original Code is Javassist.
-
-      The Initial Developer of the Original Code is Shigeru Chiba. Portions created by the Initial Developer are
-        Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
-
-      Contributor(s): ______________________________________.
-
-      Alternatively, the contents of this file may be used under the terms of the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the LGPL, and not to allow others to use your version of this file under the terms of the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the LGPL. If you do not delete the provisions above, a recipient may use your version of this file under the terms of either the MPL or the LGPL.
-
-
--------------------------------------------------------------------------------
-
-PROTOTYPE
-
-Copyright (c) 2005-2007 Sam Stephenson
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-SOFTWARE.
-
--------------------------------------------------------------------------------
-
-SCRIPTACULOUS
-
-Copyright (c) 2005, 2006 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)
-
-Permission is hereby granted, free of charge, to any person obtaining
-a copy of this software and associated documentation files (the
-"Software"), to deal in the Software without restriction, including
-without limitation the rights to use, copy, modify, merge, publish,
-distribute, sublicense, and/or sell copies of the Software, and to
-permit persons to whom the Software is furnished to do so, subject to
-the following conditions:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
-EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
-MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
-NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
-LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
-OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
-WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
--------------------------------------------------------------------------------
-
-WEBFX DATEPICKER
-
-Distributed under the terms of the Apache Software License 2.0.
-  
-  
diff --git a/maint-5-2/tapestry-core/NOTICE.txt b/maint-5-2/tapestry-core/NOTICE.txt
deleted file mode 100644
index 9d46479..0000000
--- a/maint-5-2/tapestry-core/NOTICE.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product makes use of the Javassist library, distributed under the terms of the Mozilla Public License.
-http://www.jboss.com/products/javassist
-
-This product includes the script.aculo.us JavaScript library, distributed under the terms of an MIT-style license.
-http://script.aculo.us
-
-This product includes the prototype JavaScript library, distributed under the terms of an MIT-style license.
-http://prototypejs.org/
-
-This product includes modified versions of Java classes from the JSON library, which is freely available.
-http://json.org/
-
-This product includes the WebFX DatePicker, a JavaScript library released under the Apache Software License 2.0
-http://webfx.eae.net/dhtml/datepicker/datepicker.html
-
-This product includes images from the Silk icon set, distributed under the terms of the Creative Commons Attribution 2.5 License.
-http://www.famfamfam.com/lab/icons/silk/
-
-This product uses a modified version of the Blackbird client-side console library, distributed under the terms of the
-MIT License.
-http://www.gscottolson.com/blackbirdjs/
-
-
-
diff --git a/maint-5-2/tapestry-core/pom.xml b/maint-5-2/tapestry-core/pom.xml
deleted file mode 100644
index ba9da1c..0000000
--- a/maint-5-2/tapestry-core/pom.xml
+++ /dev/null
@@ -1,210 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.tapestry</groupId>
-  <artifactId>tapestry-core</artifactId>
-  <packaging>jar</packaging>
-  <parent>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-project</artifactId>
-    <version>5.2.6</version>
-  </parent>
-  <name>Tapestry Core Library</name>
-  <description>
-        Central module for Tapestry, containing interfaces to the Java
-        Servlet API and all core services and components.
-    </description>
-  <inceptionYear>2006</inceptionYear>
-
-  <properties>
-    <!-- Groovy-Eclipse 2.0.2 uses Groovy 1.7.3, which isn't far off -->
-    <groovy-version>1.7.4</groovy-version>
-    <gmaven-version>1.2</gmaven-version>
-    <!-- Some parts of GMaven vary for each major Groovy version -->
-    <gmaven-provider>1.7</gmaven-provider>
-  </properties>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-ioc</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-json</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-test</artifactId>
-      <!-- This would be test, but we provide a few base classes that depend on TestNG, which is provided 
-        by tapestry-test. -->
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-codec</groupId>
-      <artifactId>commons-codec</artifactId>
-      <version>1.3</version>
-    </dependency>
-    <dependency>
-      <groupId>org.easymock</groupId>
-      <artifactId>easymock</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>servlet-api</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr-runtime</artifactId>
-      <version>3.1.1</version>
-      <exclusions>
-        <exclusion>
-          <groupId>org.antlr</groupId>
-          <artifactId>stringtemplate</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.codehaus.groovy</groupId>
-      <artifactId>groovy-all</artifactId>
-      <version>${groovy-version}</version>
-      <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <testResources>
-      <testResource>
-        <directory>src/test/groovy</directory>
-      </testResource>
-      <testResource>
-        <directory>src/test/resources</directory>
-      </testResource>
-    </testResources>
-    <plugins>
-      <plugin>
-        <groupId>org.codehaus.gmaven</groupId>
-        <artifactId>gmaven-plugin</artifactId>
-        <version>${gmaven-version}</version>
-        <configuration>
-          <providerSelection>${gmaven-provider}</providerSelection>
-        </configuration>
-        <executions>
-          <execution>
-            <goals>
-              <!-- generateStubs and compile omitted as no Groovy code in main code base -->
-              <!-- generateTestStubs omitted as it confused TestNG and/or Surefire -->
-              <goal>testCompile</goal>
-            </goals>
-          </execution>
-        </executions>
-        <dependencies>
-          <dependency>
-            <groupId>org.codehaus.groovy</groupId>
-            <artifactId>groovy-all</artifactId>
-            <version>${groovy-version}</version>
-          </dependency>
-        </dependencies>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-eclipse-plugin</artifactId>
-        <version>2.8</version>
-        <configuration>
-          <downloadSources>true</downloadSources>
-          <additionalProjectnatures>
-            <projectnature>
-              org.eclipse.jdt.groovy.core.groovyNature
-             </projectnature>
-          </additionalProjectnatures>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr3-maven-plugin</artifactId>
-        <version>3.1.1.2</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>antlr</goal>
-            </goals>
-            <configuration>
-              <!-- This is a hack so that the parser grammar can locate the tokens file generated by 
-                the lexer grammar. -->
-              <libDirectory>target/generated-sources/antlr/org/apache/tapestry5/internal/antlr
-                            </libDirectory>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-      </plugin>
-      <!-- This gets the plugin to clean up the cobertura.ser file left in the root directory. -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>${cobertura-plugin-version}</version>
-        <executions>
-          <execution>
-            <id>clean</id>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>summary</report>
-              <report>dependencies</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>${cobertura-plugin-version}</version>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-component-report</artifactId>
-        <version>${project.version}</version>
-        <configuration>
-          <rootPackage>org.apache.tapestry5.corelib</rootPackage>
-          <apidocs>../apidocs</apidocs>
-          <tapestryJavadoc>../apidocs</tapestryJavadoc>
-        </configuration>
-      </plugin>
-
-      <!-- Disabled - seems to have a problem working with generated classes (like org/apache/tapestry5/internal/antlr/*) -->
-      <!--plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>clirr-maven-plugin</artifactId> <configuration> 
-        <comparisonVersion>5.1.0.5</comparisonVersion> <excludes> <exclude>**/internal/**</exclude> <exclude>**/test/**</exclude> 
-        </excludes> </configuration> </plugin -->
-
-    </plugins>
-  </reporting>
-</project>
diff --git a/maint-5-2/tapestry-core/src/images/deselect.psd b/maint-5-2/tapestry-core/src/images/deselect.psd
deleted file mode 100644
index 0e99228..0000000
--- a/maint-5-2/tapestry-core/src/images/deselect.psd
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/images/move_down.psd b/maint-5-2/tapestry-core/src/images/move_down.psd
deleted file mode 100644
index f6324a3..0000000
--- a/maint-5-2/tapestry-core/src/images/move_down.psd
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/images/move_up.psd b/maint-5-2/tapestry-core/src/images/move_up.psd
deleted file mode 100644
index 473c2f1..0000000
--- a/maint-5-2/tapestry-core/src/images/move_up.psd
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/images/select.psd b/maint-5-2/tapestry-core/src/images/select.psd
deleted file mode 100644
index c903c51..0000000
--- a/maint-5-2/tapestry-core/src/images/select.psd
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionLexer.g b/maint-5-2/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionLexer.g
deleted file mode 100644
index dc95346..0000000
--- a/maint-5-2/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionLexer.g
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-lexer grammar PropertyExpressionLexer;
-
-
-options
-{
-  superClass='org.apache.tapestry5.internal.antlr.BaseLexer';
-}
-
-@header
-{
-package org.apache.tapestry5.internal.antlr;
-}
-
-	
-// Integer constant
-fragment INTEGER
-	:	{this.getClass(); /* Fix java.lang.VerifyError: Stack size too large */};	
-	
-// Read a property or invoke a method.
-fragment DEREF 
-	:	{this.getClass(); /* Fix java.lang.VerifyError: Stack size too large */};	
-	
-// Range operator, ".." between two integers.	
-fragment RANGEOP
-	:	{this.getClass(); /* Fix java.lang.VerifyError: Stack size too large */};	
-	
-// Decimal number	
-fragment DECIMAL
-	:	{this.getClass(); /* Fix java.lang.VerifyError: Stack size too large */};	
-			
-fragment LETTER 
-	:	('a'..'z'|'A'..'Z');
-fragment DIGIT 
-	:	'0'..'9';	
-fragment SIGN
-	:	('+'|'-');
-LPAREN 	:	'(';
-RPAREN 	:	')';
-LBRACKET:	'[';
-RBRACKET:	']';
-COMMA	:	',';
-BANG    :	'!';
-
-fragment QUOTE
-	:	'\'';
-
-// Clumsy but effective approach to case-insensitive identifiers.
-
-fragment A
-	:	('a' | 'A');
-fragment E
-	:	('e' | 'E');
-fragment F
-	:	('f' | 'F');	
-fragment H
-	:	('h' | 'H');
-fragment I
-	:	('i' | 'I');
-fragment L 
-	: 	('l' | 'L');
-fragment N 
-	:	('n'|'N');
-fragment R
-	:	('r' | 'R');
-fragment S
-	:	('s' | 'S');
-fragment T 
-	:	('t' | 'T');
-fragment U 
-	:	('u' | 'U');
-
-// Identifiers are case insensitive
-
-NULL 	:	N U L L;
-TRUE	:	T R U E;
-FALSE	:	F A L S E;
-THIS	:	T H I S;
-
-IDENTIFIER 
-    :   JAVA_ID_START (JAVA_ID_PART)*
-    ;
-
-fragment
-JAVA_ID_START
-    :  '\u0024'
-    |  '\u0041'..'\u005a'
-    |  '\u005f'
-    |  '\u0061'..'\u007a'
-    |  '\u00c0'..'\u00d6'
-    |  '\u00d8'..'\u00f6'
-    |  '\u00f8'..'\u00ff'
-    |  '\u0100'..'\u1fff'
-    |  '\u3040'..'\u318f'
-    |  '\u3300'..'\u337f'
-    |  '\u3400'..'\u3d2d'
-    |  '\u4e00'..'\u9fff'
-    |  '\uf900'..'\ufaff'
-    ;
-
-fragment
-JAVA_ID_PART
-    :  JAVA_ID_START
-    |  '\u0030'..'\u0039'
-    ;
-
-
-// The Safe Dereference operator understands not to de-reference through
-// a null.
-
-SAFEDEREF 
-	: 	'?.';
-
-WS 	:	(' '|'\t'|'\n'|'\r')+ { skip(); };
-
-
-// Literal strings are always inside single quotes.
-STRING
-	:	QUOTE (options {greedy=false;} : .)* QUOTE { setText(getText().substring(1, getText().length()-1)); };
-
-
-// Special rule that uses parsing tricks to identify numbers and ranges; it's all about
-// the dot ('.').
-// Recognizes:
-// '.' as DEREF
-// '..' as RANGEOP
-// INTEGER (sign? digit+)
-// DECIMAL (sign? digits* . digits+)
-// Has to watch out for embedded rangeop (i.e. "1..10" is not "1." and ".10").
-
-NUMBER_OR_RANGEOP
-	:	SIGN? DIGIT+
-		(
-			{ input.LA(2) != '.' }? => '.' DIGIT* {   $type = DECIMAL; stripLeadingPlus(); }
-			| {  $type = INTEGER;  stripLeadingPlus(); }
-		)
-		
-	|	SIGN '.' DIGIT+ {  $type = DECIMAL;  stripLeadingPlus(); }
-	
-	|	'.'
-		( 
-			DIGIT+ { $type = DECIMAL; stripLeadingPlus();}
-			| '.' {$type = RANGEOP; }
-			| {$type = DEREF; }
-		)
-	;	
-
diff --git a/maint-5-2/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g b/maint-5-2/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g
deleted file mode 100644
index 1a9cacb..0000000
--- a/maint-5-2/tapestry-core/src/main/antlr/org/apache/tapestry5/internal/antlr/PropertyExpressionParser.g
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-parser grammar PropertyExpressionParser;
-
-
-options
-{
-  superClass='org.apache.tapestry5.internal.antlr.BaseParser';
-  output=AST;		
-  ASTLabelType=CommonTree;
-  tokenVocab=PropertyExpressionLexer;
-  backtrack=true;
-}
-
-tokens
-{	
-	// Parser token representing a method invocation
-    	INVOKE;
-    	// A List (top level, or as method parameter)
-    	LIST;
-    	// Not operation (invert a boolean)
-    	NOT;
-}
-
-@header
-{
-package org.apache.tapestry5.internal.antlr;
-}
-
-	
-start 	:	expression^ EOF!;
-		
-expression
-	:	keyword
-	|	rangeOp
-	|	constant
-	|	propertyChain
-	|	list
-	|	notOp
-	;
-	
-keyword	:	NULL | TRUE | FALSE | THIS;
-
-constant:	INTEGER| DECIMAL | STRING;	
-	
-propertyChain
-	:	term DEREF propertyChain -> ^(DEREF term propertyChain)
-	|	term SAFEDEREF propertyChain -> ^(SAFEDEREF term propertyChain)
-	|	term
-	;	
-	
-term	:	IDENTIFIER
-	|	methodInvocation
-	;
-	
-methodInvocation
-	:	id=IDENTIFIER LPAREN RPAREN -> ^(INVOKE $id)
-	|	id=IDENTIFIER LPAREN expressionList RPAREN -> ^(INVOKE $id expressionList)
-	;	
-	
-expressionList
-	:	expression (COMMA! expression)*
-	;	
-	
-rangeOp
-	:	from=rangeopArg  RANGEOP to=rangeopArg -> ^(RANGEOP $from $to)
-	;	
-	
-rangeopArg 
-	:	INTEGER
-	|	propertyChain
-	;	
-	
-list	:	LBRACKET RBRACKET -> ^(LIST)
-	|	LBRACKET expressionList RBRACKET -> ^(LIST expressionList)
-	;	
-	
-	
-notOp 	:	BANG expression -> ^(NOT expression)
-	;
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/AbstractOptionModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/AbstractOptionModel.java
deleted file mode 100644
index c8c467a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/AbstractOptionModel.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.Map;
-
-/**
- * Base class for implementing {@link OptionModel}.  Subclasses must implement {@link
- * org.apache.tapestry5.OptionModel#getLabel()} and {@link org.apache.tapestry5.OptionModel#getValue()} }.
- */
-public abstract class AbstractOptionModel implements OptionModel
-{
-    /**
-     * Returns false.
-     */
-    public boolean isDisabled()
-    {
-        return false;
-    }
-
-    /**
-     * Returns null.
-     */
-    public Map<String, String> getAttributes()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
deleted file mode 100644
index 9a69ae4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Asset.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * An Asset is any kind of resource that can be exposed to the client web browser. Although quite often an Asset is a
- * resource in a web application's context folder, within Tapestry, Assets may also be resources on the classpath (i.e.,
- * packaged inside JARs).
- * <p/>
- * An Asset's toString() will return the URL for the resource (the same value as {@link #toClientURL()}).
- * <p/>
- * Release 5.1.0.0 introduced {@link org.apache.tapestry5.Asset2}, which extends this interface with an additional
- * method.
- */
-public interface Asset
-{
-    /**
-     * Returns a URL that can be passed, unchanged, to the client in order for it to access the resource. The same value
-     * is returned from <code>toString()</code>.
-     * <p/>
-     * Tapestry's built-in asset types (context and classpath) always incorporate a version number as part of the path,
-     * and alternate implementations are encouraged to do so as well. In addition, Tapestry ensures that context and
-     * classpath assets have a far-future expires header (to ensure aggresive caching by the client).
-     * <p/>
-     */
-    String toClientURL();
-
-    /**
-     * Returns the underlying Resource for the Asset.
-     */
-    Resource getResource();
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Asset2.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Asset2.java
deleted file mode 100644
index 11ece1b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Asset2.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Extension to {@link org.apache.tapestry5.Asset} that adds a method to determine if the asset is invariant or not.
- * {@link org.apache.tapestry5.services.AssetFactory} instances should ideally return Asset2 objects, not Asset. This is
- * only of primary interest to the {@link org.apache.tapestry5.internal.bindings.AssetBindingFactory}, as it determines
- * the invariance of the binding from the asset (and assumes variant unless the asset object implements this
- * interface).
- *
- * @since 5.1.0.0
- */
-public interface Asset2 extends Asset
-{
-    /**
-     * Returns true if the Asset is invariant (meaning that it returns the same value from {@link Asset#toClientURL()}
-     * at all times}. Assets that are used as binding values will be cached more aggresively by Tapestry as they are
-     * invariant.
-     *
-     * @return true if invariant
-     * @see org.apache.tapestry5.services.AssetPathConverter#isInvariant()
-     * @see Binding#isInvariant()
-     */
-    boolean isInvariant();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseOptimizedApplicationStateObject.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseOptimizedApplicationStateObject.java
deleted file mode 100644
index 2d5d74f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseOptimizedApplicationStateObject.java
+++ /dev/null
@@ -1,29 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Base class for creating optimized application state objects.  Works as a {@link
- * javax.servlet.http.HttpSessionBindingListener} to determine when the object is no longer dirty.
- *
- * @deprecated since 5.1.0.0; use {@link org.apache.tapestry5.BaseOptimizedSessionPersistedObject} instead
- */
-public abstract class BaseOptimizedApplicationStateObject extends BaseOptimizedSessionPersistedObject
-{
-    public final boolean isApplicationStateObjectDirty()
-    {
-        return isSessionPersistedObjectDirty();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseOptimizedSessionPersistedObject.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseOptimizedSessionPersistedObject.java
deleted file mode 100644
index 7d8c2a7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseOptimizedSessionPersistedObject.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import javax.servlet.http.HttpSessionBindingEvent;
-import javax.servlet.http.HttpSessionBindingListener;
-
-/**
- * Base implementation of
- * {@link org.apache.tapestry5.OptimizedSessionPersistedObject}. Subclasses
- * should invoke {@link #markDirty()} when internal state of the object changes.
- * <p>
- * Note that (due to TAP5-834), the object will receive a spurious
- * <code>valueUnbound()</code> notification when dirty. Tapestry sets dirty
- * session attributes to null, then to the persisted object, to force a
- * <code>valueBound()</code> notification, and that unfortunately also sends the
- * <code>valueUnbound()</code>.
- * 
- * @since 5.1.1.0
- */
-public abstract class BaseOptimizedSessionPersistedObject implements
-        OptimizedSessionPersistedObject, HttpSessionBindingListener
-{
-    private transient boolean dirty;
-
-    public final boolean isSessionPersistedObjectDirty()
-    {
-        return dirty;
-    }
-
-    /**
-     * Invoked by the servlet container when the value is stored (or re-stored)
-     * as an attribute of the session. This
-     * clears the dirty flag. Subclasses may override this method, but should
-     * invoke this implementation.
-     */
-    public void valueBound(HttpSessionBindingEvent event)
-    {
-        dirty = false;
-    }
-
-    /**
-     * Does nothing.
-     */
-    public void valueUnbound(HttpSessionBindingEvent event)
-    {
-    }
-
-    /**
-     * Invoked by the subclass whenever the internal state of the object
-     * changes. Typically, this is invoked from
-     * mutator methods.
-     */
-    protected final void markDirty()
-    {
-        dirty = true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseValidationDecorator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseValidationDecorator.java
deleted file mode 100644
index 9912b9b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BaseValidationDecorator.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.dom.Element;
-
-/**
- * Base implementation of {@link ValidationDecorator} that does nothing. Subclasses may override specific methods,
- * knowing that all other methods do nothing at all.
- */
-public class BaseValidationDecorator implements ValidationDecorator
-{
-
-    public void beforeLabel(Field field)
-    {
-    }
-
-    public void afterLabel(Field field)
-    {
-    }
-
-    public void afterField(Field field)
-    {
-    }
-
-    public void beforeField(Field field)
-    {
-    }
-
-    public void insideField(Field field)
-    {
-    }
-
-    public void insideLabel(Field field, Element labelElement)
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java
deleted file mode 100644
index 31e3818..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Binding.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-/**
- * A binding is a connection between a component and its container (another component), that allows the embedded
- * component to gain access to <em>resources</em> defined by the container. Resources can represent any kind of value
- * that can be obtained from the parent component, but is often a JavaBean property that can be read and updated.
- * Different implementations of Binding as used to access different kinds of resources of the container.
- * <p/>
- * A binding ultimately must provide access to the underlying annotations. In most cases, there are no annotations, but
- * bindings that ultimate invoke methods or read and update fields must provide access to those annotations.
- */
-public interface Binding extends AnnotationProvider
-{
-    /**
-     * Reads the current value of the property (or other resource). When reading properties of objects that are
-     * primitive types, this will return an instance of the wrapper type. In some cases, a binding is read only and this
-     * method will throw a runtime exception.
-     */
-    Object get();
-
-    /**
-     * Updates the current value. Most types of bindings are read-only, and this method will throw a runtime exception.
-     * It is the caller's responsibility to ensure that the value passed in is of the appropriate type.
-     *
-     * @param value
-     */
-    void set(Object value);
-
-    /**
-     * Returns true if the value of the binding does not ever change. Components will often cache such values
-     * aggressively.
-     */
-    boolean isInvariant();
-
-    /**
-     * Returns the type of the binding, either the type of resource exposed by the binding, or the type of the property
-     * bound.
-     */
-    Class getBindingType();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java
deleted file mode 100644
index 7009741..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java
+++ /dev/null
@@ -1,102 +0,0 @@
-//  Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Constants for the built-in binding prefixes.  These are often used with the {@link
- * org.apache.tapestry5.annotations.Parameter#defaultPrefix()} annotation attribute.
- */
-public class BindingConstants
-{
-    /**
-     * Binding expression prefix used for literal strings.
-     */
-    public static final String LITERAL = "literal";
-    /**
-     * Binding expression prefix used to bind to a property of the component. When {@link
-     * org.apache.tapestry5.annotations.Parameter#defaultPrefix()} is not specified, the default is PROP.
-     */
-    public static final String PROP = "prop";
-
-    /**
-     * A way of selecting a named {@link org.apache.tapestry5.NullFieldStrategy} contributed to {@link
-     * org.apache.tapestry5.services.NullFieldStrategySource}.
-     */
-    public static final String NULLFIELDSTRATEGY = "nullfieldstrategy";
-
-    /**
-     * A reference to a component within the container's template, by local component id.
-     */
-    public static final String COMPONENT = "component";
-
-    /**
-     * A reference to a localized message from the component's message catalog (including message keys inherited from
-     * the application global message catalog).
-     */
-    public static final String MESSAGE = "message";
-
-    /**
-     * References (and configures) one ore more named {@link org.apache.tapestry5.Validator}s contributed to the {@link
-     * org.apache.tapestry5.services.FieldValidatorSource} service.
-     *
-     * @see org.apache.tapestry5.services.FieldValidatorSource
-     */
-    public static final String VALIDATE = "validate";
-
-    /**
-     * References a named {@link org.apache.tapestry5.Translator} contributed to the {@link
-     * org.apache.tapestry5.services.TranslatorSource} service. The binding is of type {@link
-     * org.apache.tapestry5.FieldTranslator}.
-     */
-    public static final String TRANSLATE = "translate";
-
-    /**
-     * References a named block within the template.
-     */
-    public static final String BLOCK = "block";
-
-    /**
-     * References a localized asset.  The asset will be relative to the component's class file, unless a prefix
-     * (typically, "context:") is used on the expression.    Typically, this is used for classpath assets relative to
-     * the component class, and {@link #CONTEXT} is used for context assets.
-     *
-     * @see org.apache.tapestry5.Asset
-     * @see org.apache.tapestry5.services.AssetSource
-     */
-    public static final String ASSET = "asset";
-
-    /**
-     * Allows for temporary storage of information during the render only (may not currently be used during form
-     * submission processing).  This is often used to store the current object iterated over by a {@link
-     * org.apache.tapestry5.corelib.components.Loop} component.
-     */
-    public static final String VAR = "var";
-
-    /**
-     * Binding factory for context assets specifically. The expression is the path from the root of the web
-     * application.
-     *
-     * @since 5.1.0.0
-     */
-    public static final String CONTEXT = "context";
-    
-
-    /**
-     * References a value of a symbol.
-     * 
-     * @since 5.2.0
-     */
-    public static final String SYMBOL = "symbol";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Block.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Block.java
deleted file mode 100644
index 27db96f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Block.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * A block is a collection of static text and elements, and components, derived from a component template. In the
- * template, a block is demarcated using the &lt;t:block&gt; or &lt;t:parameter&gt; elements. The interface defines no
- * methods, but the provided implementations of Block are capable of rendering their contents on demand.
- * <p/>
- * Tapestry includes coecions from String to {@link org.apache.tapestry5.Renderable} and {@link
- * org.apache.tapestry5.Renderable} to Block. This means that components that take Block parameters may be bound to
- * literal strings, to arbitrary numbers (or other objects, with the expectation that they will be converted to
- * strings), or to renderable objects such as components.
- */
-public interface Block
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java
deleted file mode 100644
index 4fabd7c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/BlockNotFoundException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Exception thrown when a {@link Block} is requested but not found.
- */
-public class BlockNotFoundException extends RuntimeException implements Locatable
-{
-    private static final long serialVersionUID = 81221040659940576L;
-
-    private final Location location;
-
-    public BlockNotFoundException(String message, Location location)
-    {
-        super(message);
-
-        this.location = location;
-    }
-
-    public Location getLocation()
-    {
-        return location;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/CSSClassConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/CSSClassConstants.java
deleted file mode 100644
index 0cf35f4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/CSSClassConstants.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.tapestry5;
-
-/**
- * Constants used when rendering a CSS class attribute.
- */
-public class CSSClassConstants
-{
-    /**
-     * CSS class name that causes a rendered element to be invisible on the client side.
-     */
-    public static final String INVISIBLE = "t-invisible";
-    /**
-     * All purpose CSS class name for anything related to Tapestry errors.
-     */
-    public static final String ERROR = "t-error";
-    /**
-     * CSS class name for individual validation errors.
-     * 
-     * @since 5.2.0
-     */
-    public static final String ERROR_SINGLE = "t-error-single";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ClientBodyElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ClientBodyElement.java
deleted file mode 100644
index 4612edc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ClientBodyElement.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 [ORG]
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-
-/**
- * Extends {@link ClientElement} with the concept of a body, a Block that can be rendered to provide the content
- * within. The primary implementation of this is the {@link Zone} component, which exposes its client id and body for
- * use with {@link MultiZoneUpdate}.
- * 
- * @since 5.2.3
- * @see MultiZoneUpdate#add(ClientBodyElement)
- */
-public interface ClientBodyElement extends ClientElement
-{
-    Block getBody();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ClientElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ClientElement.java
deleted file mode 100644
index 2680661..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ClientElement.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Interface for any kind of object (typically, a component) that can provide a {@linkplain #getClientId() client-side
- * id}, typically used in the generation of client-side (JavaScript) logic. For components, the client id will be null
- * or inaccurate until after the component has rendered itself. Inside of any kind of loop, the clientId property is
- * only accurate just after the component has rendered, and before it renders again.
- * <p/>
- * Some components must be configured to provide a client id. In many cases, the client id matches the component's
- * {@linkplain ComponentResourcesCommon#getId() component id}, typically passed through
- * {@link JavaScriptSupport#allocateClientId(String)} to ensure uniqueness.
- */
-public interface ClientElement
-{
-    /**
-     * Returns a unique id for the element. This value will be unique for any given rendering of a page. This value is
-     * intended for use as the id attribute of the client-side element, and will be used with any DHTML/Ajax related
-     * JavaScript.
-     */
-    String getClientId();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentAction.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentAction.java
deleted file mode 100644
index 3899be0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentAction.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.io.Serializable;
-
-/**
- * An action that is associated with a component. This is used in several areas of Tapestry and is primarily an attempt
- * to externalize state for a component so that it can be recorded outside the object.
- * <p/>
- * ComponentActions should be immutable. They are often created during one request and associated with a particular
- * component instance. They are then used in a later request (with an equivalent component instance).
- * <p/>
- * ComponentActions are serializable (they are often serialized into Base64 strings for storage on the client).
- */
-public interface ComponentAction<T> extends Serializable
-{
-    /**
-     * Passed a component instance, the action should operate upon the instance.
-     */
-    void execute(T component);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentEventCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentEventCallback.java
deleted file mode 100644
index 85f5850..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentEventCallback.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Callback interface for a {@linkplain org.apache.tapestry5.runtime.Event render phase event) or
- * 
- * @link org.apache.tapestry5.runtime.ComponentEvent}, notified when a non-null value is returned from some event
- *       handler method.
- */
-public interface ComponentEventCallback<T>
-{
-    /**
-     * Invoked to handle a non-null event handler method result. The handler should determine whether the value is
-     * acceptable, and throw an exception if not. Any thrown exception will be wrapped to identify the component and
-     * method from which the value was returned.
-     * <p/>
-     * Boolean values are <em>not</em> passed to the callback. Booleans are used to indicate that the event has been
-     * handled (true, meaning the event is handled and aborted) or that a further search for handlers should continue
-     * (false, meaning the event was not handled, is not aborted, and the search up the component hierarchy for event
-     * handler methods should continue). If a component event method returns true, then
-     * {@link org.apache.tapestry5.runtime.Event#isAborted()} will return true.
-     * 
-     * @param result
-     *            the result value returned from the event handler method
-     * @return true if the event is aborted, false if the event may continue
-     */
-    boolean handleResult(T result);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java
deleted file mode 100644
index 14fbb17..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResources.java
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-
-/**
- * Provides a component instance with the resources provided by the framework. In many circumstances, the resources
- * object can be considered the component itself; in others, it is the {@linkplain #getComponent() component property},
- * an instance of a class provided by the application developer (though transformed in many ways while being loaded)
- * that is the true component. In reality, it is the combination of the resources object with the user class instance
- * that forms the components; neither is useful without the other.
- */
-public interface ComponentResources extends ComponentResourcesCommon
-{
-    /**
-     * Returns the base resource for the component, which will represent the class's location within the classpath (this
-     * is used to resolve relative assets).
-     */
-    Resource getBaseResource();
-
-    /**
-     * Returns the component model object that defines the behavior of the component.
-     */
-    ComponentModel getComponentModel();
-
-    /**
-     * Returns the component this object provides resources for.
-     */
-    Component getComponent();
-
-    /**
-     * Returns the component which contains this component, or null for the root component. For mixins, this returns the
-     * componet to which the mixin is attached.
-     */
-    Component getContainer();
-
-    /**
-     * Returns the {@link ComponentResources} for the container, or null if the this is the root component (that has no
-     * container). As a special case, for a mixin, this returns the core component's resources.
-     */
-    ComponentResources getContainerResources();
-
-    /**
-     * Returns the {@link Messages} from the container, or null if this is the root component (with no container). As a
-     * special case, for a mixin, this return the core component's messages.
-     */
-    Messages getContainerMessages();
-
-    /**
-     * Returns the page that contains this component. Technically, the page itself is an internal object in Tapestry and
-     * this returns the root component of the actual page, but from an application developer point of view, this is the
-     * page.
-     */
-    Component getPage();
-
-    /**
-     * Returns an embedded component, given the component's id.
-     * 
-     * @param embeddedId
-     *            selects the embedded component (case is ignored)
-     * @throws IllegalArgumentException
-     *             if this component does not contain a component with the given id
-     */
-
-    Component getEmbeddedComponent(String embeddedId);
-
-    /**
-     * Returns true if the named parameter is bound, false if not.
-     */
-    boolean isBound(String parameterName);
-
-    /**
-     * Obtains an annotation provided by a parameter.
-     * 
-     * @param parameterName
-     *            name of parameter to search for the annotation
-     * @param annotationType
-     *            the type of annotation
-     * @return the annotation if found or null otherwise
-     */
-    <T extends Annotation> T getParameterAnnotation(String parameterName, Class<T> annotationType);
-
-    /**
-     * Indentifies all parameters that are not formal parameters and writes each as a attribute/value pair into the
-     * current element of the markup writer.
-     * 
-     * @param writer
-     *            to which {@link MarkupWriter#attributes(Object[]) attributes} will be written
-     */
-    void renderInformalParameters(MarkupWriter writer);
-
-    /**
-     * Returns the message catalog for this component.
-     */
-    Messages getMessages();
-
-    /**
-     * Returns the actual type of the bound parameter, or null if the parameter is not bound. This is primarily used
-     * with property bindings, and is used to determine the actual type of the property, rather than the type of
-     * parameter (remember that type coercion automatically occurs, which can mask significant differences between the
-     * parameter type and the bound property type).
-     * 
-     * @param parameterName
-     *            used to select the parameter (case is ignored)
-     * @return the type of the bound parameter, or null if the parameter is not bound
-     * @see Binding#getBindingType()
-     */
-    Class getBoundType(String parameterName);
-
-    /**
-     * Returns an annotation provider, used to obtain annotations related to the parameter.
-     * 
-     * @param parameterName
-     *            used to select the parameter (case is ignored)
-     * @return the annotation provider, or null if the parameter is not bound
-     */
-    AnnotationProvider getAnnotationProvider(String parameterName);
-
-    /**
-     * Used to access an informal parameter that's a Block.
-     * 
-     * @param parameterName
-     *            the name of the informal parameter (case is ignored)
-     * @return the informal Block parameter, or null if not bound
-     */
-    Block getBlockParameter(String parameterName);
-
-    /**
-     * Returns a previously stored render variable.
-     * 
-     * @param name
-     *            of the variable (case will be ignored)
-     * @return the variable's value
-     * @throws IllegalArgumentException
-     *             if the name doesn't correspond to a stored value
-     */
-    Object getRenderVariable(String name);
-
-    /**
-     * Stores a render variable, accessible with the provided name.
-     * 
-     * @param name
-     *            of value to store
-     * @param value
-     *            value to store (may not be null)
-     * @throws IllegalStateException
-     *             if the component is not currently rendering
-     */
-    void storeRenderVariable(String name, Object value);
-
-    /**
-     * Adds a listener object that will be notified about page lifecycle events.
-     */
-    void addPageLifecycleListener(PageLifecycleListener listener);
-
-    /**
-     * Removes a previously added listener.
-     * 
-     * @since 5.2.0
-     */
-    void removePageLifecycleListener(PageLifecycleListener listener);
-
-    /**
-     * Discards all persistent field changes for the page containing the component. Changes are eliminated from
-     * persistent storage (such as the {@link org.apache.tapestry5.services.Session}) which will take effect in the
-     * <em>next</em> request (the attached page instance is not affected).
-     */
-    void discardPersistentFieldChanges();
-
-    /**
-     * Returns the name of element that represents the component in its template, or null if not known.
-     * 
-     * @return the element name or null
-     */
-    String getElementName();
-
-    /**
-     * Returns a list of the names of any informal parameters bound to this component.
-     * 
-     * @return the name sorted alphabetically
-     * @see org.apache.tapestry5.annotations.SupportsInformalParameters
-     */
-    List<String> getInformalParameterNames();
-
-/**
-     * Reads an informal parameter and {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer coercers) the bound
-     * value to the indicated type.
-     *
-     * @param name name of informal parameter
-     * @param type output value type
-     * @return instance of type
-     */
-    <T> T getInformalParameter(String name, Class<T> type);
-
-    /**
-     * Returns true if these resources represent a mixin to another component. The component is the
-     * {@linkplain #getContainerResources() container} of this resources.
-     * 
-     * @since 5.2.0
-     */
-    boolean isMixin();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java
deleted file mode 100644
index f0454d1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ComponentResourcesCommon.java
+++ /dev/null
@@ -1,234 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.Locatable;
-import org.slf4j.Logger;
-
-import java.util.Locale;
-
-/**
- * Operations shared by the public {@link org.apache.tapestry5.ComponentResources} interface and {@link
- * org.apache.tapestry5.internal.structure.ComponentPageElement} interface (on the internal side).
- */
-@SuppressWarnings({ "JavaDoc" })
-public interface ComponentResourcesCommon extends Locatable
-{
-    /**
-     * Returns the simple (or local) id of the component. The id will be unique within the component's immediate
-     * container. For a page's root component, the value null is returned.
-     */
-    String getId();
-
-    /**
-     * Return a string consisting the concatinated ids of all containing components, separated by periods. In addition,
-     * nested ids are always all lower case. I.e., "foo.bar.baz". Returns null for the root component of a page.
-     */
-    String getNestedId();
-
-
-    /**
-     * Returns a string consisting of the logical name of the containing page, and the {@link #getNestedId() nested id}
-     * of this component, separated by a colon. I.e., "MyPage:foo.bar.baz". For a page, returns just the page's name.
-     * <p/>
-     * This value is often used to obtain an equivalent component instance in a later request.
-     *
-     * @see org.apache.tapestry5.services.ComponentSource#getComponent(String)
-     */
-    String getCompleteId();
-
-    /**
-     * A convienience for invoking {@link #triggerContextEvent(String, EventContext , ComponentEventCallback)}. Wraps
-     * the context values into an {@link org.apache.tapestry5.EventContext}.
-     *
-     * @param eventType     event type (as determined from the request, or otherwise by design)
-     * @param contextValues Values that may be provided to the event handler method as method parameters, or null if no
-     *                      context values are available
-     * @param callback      the handler to be informed of the result, or null if the event is a notification that does
-     *                      not support return values from event handler methods (the value true is allowed even if the
-     *                      handler is null).
-     * @return true if any event handler was invoked (even if no event handler method returns a non-null value)
-     * @throws org.apache.tapestry5.runtime.ComponentEventException
-     *          if an event handler method throws a checked or unchecked exception
-     * @see org.apache.tapestry5.internal.transform.OnEventWorker
-     * @see org.apache.tapestry5.annotations.OnEvent
-     */
-    boolean triggerEvent(String eventType, Object[] contextValues, ComponentEventCallback callback);
-
-    /**
-     * Triggers a component event. A search for an event handling method will occur, first in the component, then its
-     * container, and so on. When a matching event handler method is located, it is invoked. If the method returns a
-     * value, the value is passed to the callback (if callback is null, then it is an error for a method to return a
-     * non-null value).
-     * <p/>
-     * Resolution of event type to event handler methods is case insensitive.
-     *
-     * @param eventType event type (as determined from the request, or otherwise by design)
-     * @param context   the context (as extracted from the request, or provided by the triggering component); these
-     *                  values may be provided to event handler methods via their parameters (may not be null)
-     * @param callback  the handler to be informed of the result, or null if the event is a notification that does not
-     *                  support return values from event handler methods (the value true is allowed even if the handler
-     *                  is null).
-     * @return true if any event handler was invoked (even if no event handler method returns a non-null value)
-     * @throws org.apache.tapestry5.runtime.ComponentEventException
-     *          if an event handler method throws a checked or unchecked exception
-     * @see org.apache.tapestry5.internal.transform.OnEventWorker
-     * @see org.apache.tapestry5.annotations.OnEvent
-     */
-    boolean triggerContextEvent(String eventType, EventContext context, ComponentEventCallback callback);
-
-    /**
-     * Returns true if the component is currently rendering, false otherwise. This is most often used to determine if
-     * parameter values should be cached.
-     */
-    boolean isRendering();
-
-    /**
-     * Returns the log instance associated with the component (which is based on the component or mixin's class name).
-     *
-     * @see org.apache.tapestry5.model.ComponentModel#getLogger()
-     */
-    Logger getLogger();
-
-    /**
-     * Returns the locale for the page containing this component.
-     */
-    Locale getLocale();
-
-    /**
-     * Returns the name of element that represents the component in its template, or the provided default element name
-     * if the element was a component type (in the Tapestry namespace).
-     *
-     * @param defaultElementName element name to return if the element name is not known (may be null)
-     * @return the element name
-     */
-    String getElementName(String defaultElementName);
-
-    /**
-     * Returns a block from the component's template, referenced by its id.
-     *
-     * @param blockId the id of the block (case insensitive)
-     * @return the identified Block
-     * @throws BlockNotFoundException if no block with the given id exists
-     * @see #findBlock(String)
-     */
-    Block getBlock(String blockId);
-
-    /**
-     * As with {@link #getBlock(String)}, but returns null if the block is not found.
-     *
-     * @param blockId the id of the block (case insensitive)
-     * @return the block, or null
-     */
-    Block findBlock(String blockId);
-
-    /**
-     * Returns the <em>logical</em> name of the page containing this component. This is the short name (it often appears
-     * in URLs)
-     *
-     * @return the logical name of the page which contains this component
-     */
-    String getPageName();
-
-
-    /**
-     * Returns true if the element has a body and false otherwise.  Only components may have a body; pages and mixins
-     * will return false.
-     */
-    boolean hasBody();
-
-    /**
-     * Returns the body of this component as a (possibly empty) block.  When invoked on a mixin, returns the containing
-     * component's body.
-     */
-    Block getBody();
-
-    /**
-     * Creates a component event request link as a callback for this component. The event type and context (as well as
-     * the page name and nested component id) will be encoded into a URL. A request for the URL will {@linkplain
-     * #triggerEvent(String, Object[], org.apache.tapestry5.ComponentEventCallback)}  trigger} the named event on the
-     * component.
-     *
-     * @param eventType the type of event to be triggered.  Event types should be Java identifiers (contain only
-     *                  letters, numbers and the underscore).
-     * @param context   additional objects to be encoded into the path portion of the link; each is converted to a
-     *                  string and URI encoded
-     * @return link object for the callback
-     */
-    Link createEventLink(String eventType, Object... context);
-
-    /**
-     * Creates a component event request link as a callback for this component. The event type and context (as well as
-     * the page name and nested component id) will be encoded into a URL. A request for the URL will {@linkplain
-     * #triggerEvent(String, Object[], org.apache.tapestry5.ComponentEventCallback)}  trigger} the named event on the
-     * component.
-     *
-     * @param eventType the type of event to be triggered.  Event types should be Java identifiers (contain only
-     *                  letters, numbers and the underscore).
-     * @param forForm   if true, the link will be used as the eventType for an HTML form submission, which may affect
-     *                  what information is encoded into the link
-     * @param context   additional objects to be encoded into the path portion of the link; each is converted to a
-     *                  string and URI encoded
-     * @return link object for the callback
-     * @deprecated Use {@link #createEventLink(String, Object[])} instead
-     */
-    Link createActionLink(String eventType, boolean forForm, Object... context);
-
-    /**
-     * Creates a component event request link as a callback for this component. The event type and context (as well as
-     * the page name and nested component id) will be encoded into a URL. A request for the URL will {@linkplain
-     * #triggerEvent(String, Object[], org.apache.tapestry5.ComponentEventCallback)}  trigger} the named event on the
-     * component. This is only used for form submission events, as extra data may be encoded in the form as hidden
-     * fields.
-     *
-     * @param eventType the type of event to be triggered.  Event types should be Java identifiers (contain only
-     *                  letters, numbers and the underscore).
-     * @param context   additional objects to be encoded into the path portion of the link; each is converted to a
-     *                  string and URI encoded
-     * @return link object for the callback
-     */
-    Link createFormEventLink(String eventType, Object... context);
-
-    /**
-     * Creates a page render request link to render a specific page.
-     *
-     * @param pageName the logical name of the page to link to
-     * @param override if true, the context is used even if empty (normally, the target page is allowed to passivate,
-     *                 providing a context, when the provided context is empty)
-     * @param context  the activation context for the page. If omitted, the activation context is obtained from the
-     *                 target page
-     * @return link for a render request to the targetted page
-     * @deprecated Use {@link org.apache.tapestry5.services.PageRenderLinkSource#createPageRenderLink(String)} or {@link
-     *             org.apache.tapestry5.services.PageRenderLinkSource#createPageRenderLinkWithContext(String, Object[])}
-     *             instead
-     */
-    Link createPageLink(String pageName, boolean override, Object... context);
-
-    /**
-     * Creates a page render request link to render a specific page. Using a page class, rather than a page name, is
-     * more refactoring safe (in the even the page is renamed or moved).
-     *
-     * @param pageClass identifies the page to link to
-     * @param override  if true, the context is used even if empty (normally, the target page is allowed to passivate,
-     *                  providing a context, when the provided context is empty)
-     * @param context   the activation context for the page. If omitted, the activation context is obtained from the
-     *                  target page
-     * @return link for a render request to the targetted page
-     * @deprecated Use {@link org.apache.tapestry5.services.PageRenderLinkSource#createPageRenderLink(Class)} or {@link
-     *             org.apache.tapestry5.services.PageRenderLinkSource#createPageRenderLinkWithContext(Class, Object[])}
-     *             instead
-     */
-    Link createPageLink(Class pageClass, boolean override, Object... context);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
deleted file mode 100644
index 7805d86..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ContentType.java
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.List;
-import java.util.Map;
-import java.util.StringTokenizer;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Represents an HTTP content type. Allows to set various elements like the mime type, the character set, and other
- * parameters. This is similar to a number of other implementations of the same concept in JAF, etc. We have created
- * this simple implementation to avoid including the whole libraries.
- */
-public final class ContentType
-{
-    private String baseType = "";
-
-    private String subType = "";
-
-    private final Map<String, String> parameters = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Creates a new empty content type.
-     */
-    public ContentType()
-    {
-    }
-
-    /**
-     * Creates a new content type from the argument. The format of the argument has to be basetype/subtype(;key=value)*
-     *
-     * @param contentType the content type that needs to be represented
-     */
-    public ContentType(String contentType)
-    {
-        parse(contentType);
-    }
-
-    /**
-     * Creates a new content type with the given MIME type and charset
-     */
-    public ContentType(String contentType, String charset)
-    {
-        this(contentType);
-
-        setParameter(InternalConstants.CHARSET_CONTENT_TYPE_PARAMETER, charset);
-    }
-
-
-    /**
-     * Returns true only if the other object is another instance of ContentType, and has the ssame baseType, subType and
-     * set of parameters.
-     */
-    @Override
-    public boolean equals(Object o)
-    {
-        if (o == null) return false;
-
-        if (o.getClass() != this.getClass()) return false;
-
-        ContentType ct = (ContentType) o;
-
-        return baseType.equals(ct.baseType) && subType.equals(ct.subType) && parameters.equals(ct.parameters);
-    }
-
-    /**
-     * @return the base type of the content type
-     */
-    public String getBaseType()
-    {
-        return baseType;
-    }
-
-    /**
-     * @param baseType
-     */
-    public void setBaseType(String baseType)
-    {
-        assert baseType != null;
-        this.baseType = baseType;
-    }
-
-    /**
-     * @return the sub-type of the content type
-     */
-    public String getSubType()
-    {
-        return subType;
-    }
-
-    /**
-     * @param subType
-     */
-    public void setSubType(String subType)
-    {
-        assert subType != null;
-        this.subType = subType;
-    }
-
-    /**
-     * @return the MIME type of the content type
-     */
-    public String getMimeType()
-    {
-        return baseType + "/" + subType;
-    }
-
-    /**
-     * @return the list of names of parameters in this content type, in alphabetical order.
-     */
-    public List<String> getParameterNames()
-    {
-        return InternalUtils.sortedKeys(parameters);
-    }
-
-    /**
-     * @return the character set (the  "charset" parameter) or null.
-     */
-    public String getCharset()
-    {
-        return getParameter(InternalConstants.CHARSET_CONTENT_TYPE_PARAMETER);
-    }
-
-    /**
-     * @param key the name of the content type parameter
-     * @return the value of the content type parameter
-     */
-    public String getParameter(String key)
-    {
-        assert key != null;
-        return parameters.get(key);
-    }
-
-    /**
-     * @param key   the name of the content type parameter
-     * @param value the value of the content type parameter
-     */
-    public void setParameter(String key, String value)
-    {
-        assert key != null;
-        assert value != null;
-        parameters.put(key, value);
-    }
-
-    /**
-     * Parses the argument and configures the content type accordingly. The format of the argument has to be
-     * type/subtype(;key=value)*
-     *
-     * @param contentType the content type that needs to be represented
-     */
-    public void parse(String contentType)
-    {
-        baseType = "";
-        subType = "";
-        parameters.clear();
-
-        StringTokenizer tokens = new StringTokenizer(contentType, ";");
-        if (!tokens.hasMoreTokens()) return;
-
-        String mimeType = tokens.nextToken();
-        StringTokenizer mimeTokens = new StringTokenizer(mimeType, "/");
-        setBaseType(mimeTokens.hasMoreTokens() ? mimeTokens.nextToken() : "");
-        setSubType(mimeTokens.hasMoreTokens() ? mimeTokens.nextToken() : "");
-
-        while (tokens.hasMoreTokens())
-        {
-            String parameter = tokens.nextToken();
-
-            StringTokenizer parameterTokens = new StringTokenizer(parameter, "=");
-            String key = parameterTokens.hasMoreTokens() ? parameterTokens.nextToken() : "";
-            String value = parameterTokens.hasMoreTokens() ? parameterTokens.nextToken() : "";
-            setParameter(key, value);
-        }
-    }
-
-    /**
-     * @return the string representation of this content type
-     */
-    public String unparse()
-    {
-        StringBuilder buffer = new StringBuilder(getMimeType());
-
-        for (String parameterName : getParameterNames())
-        {
-            buffer.append(";");
-            buffer.append(parameterName);
-            buffer.append("=");
-            buffer.append(parameters.get(parameterName));
-        }
-
-        return buffer.toString();
-    }
-
-    /**
-     * @return the string representation of this content type. Same as unparse().
-     */
-    @Override
-    public String toString()
-    {
-        return unparse();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/EventConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/EventConstants.java
deleted file mode 100644
index 4363fc0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/EventConstants.java
+++ /dev/null
@@ -1,224 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-
-/**
- * Constant values for common event names fired by Tapestry components.
- */
-public class EventConstants
-{
-    /**
-     * Default client event name, "action", used in most situations.
-     */
-    public static final String ACTION = "action";
-
-    /**
-     * Event triggered when a page is activated (for rendering). The component event handler will be
-     * passed the context
-     * provided by the passivate event.
-     */
-    public static final String ACTIVATE = "activate";
-
-    /**
-     * Event triggered when a link for a page is generated. The event handler for the page may
-     * provide an object, or an
-     * array of objects, as the context for the page. These values will become part of the page's
-     * context, and will be
-     * provided back when the page is activated.
-     */
-    public static final String PASSIVATE = "passivate";
-
-    /**
-     * Invoked before {@link #PREPARE} when rendering out the form.
-     * 
-     * @see org.apache.tapestry5.corelib.components.Form
-     */
-    public static final String PREPARE_FOR_RENDER = "prepareForRender";
-
-    /**
-     * Invoked before {@link #PREPARE} when the form is submitted.
-     * 
-     * @see org.apache.tapestry5.corelib.components.Form
-     */
-    public static final String PREPARE_FOR_SUBMIT = "prepareForSubmit";
-
-    /**
-     * Invoked to let the containing component(s) prepare for the form rendering or the form
-     * submission.
-     * 
-     * @see org.apache.tapestry5.corelib.components.Form
-     */
-    public static final String PREPARE = "prepare";
-
-    /**
-     * Event type for a notification after the form has submitted. This event notification occurs on
-     * any form submit,
-     * without respect to "success" or "failure".
-     * 
-     * @see org.apache.tapestry5.corelib.components.Form
-     */
-    public static final String SUBMIT = "submit";
-
-    /**
-     * Event type for a notification to perform validation of submitted data. This allows a listener
-     * to perform
-     * cross-field validation. This occurs before the {@link #SUCCESS} or {@link #FAILURE} notification.
-     * 
-     * @see org.apache.tapestry5.corelib.components.Form
-     * @deprecated As of 5.2, this event should no longer be used; the Form component now fires a {@link #VALIDATE}
-     *             event. For compatibility, validateForm will be supported, but may be removed in a future release.
-     */
-    public static final String VALIDATE_FORM = "validateForm";
-
-    /**
-     * Event type associated with clicking the cancel button inside a {@link BeanEditForm}.
-     * 
-     * @since 5.2.0
-     */
-    public static final String CANCELED = "canceled";
-
-    /**
-     * Event type for a notification after the form has submitted, when there are no errors in the
-     * validation tracker.
-     * This occurs before the {@link #SUBMIT} event.
-     * 
-     * @see org.apache.tapestry5.corelib.components.Form
-     */
-    public static final String SUCCESS = "success";
-
-    /**
-     * Event type for a notification after the form has been submitted, when there are errors in the
-     * validation tracker.
-     * This occurs before the {@link #SUBMIT} event.
-     */
-    public static final String FAILURE = "failure";
-
-    /**
-     * Event type triggered by the {@link org.apache.tapestry5.corelib.components.Submit} component
-     * when it is the cause
-     * of the form submission.
-     */
-    public static final String SELECTED = "selected";
-
-    /**
-     * Event triggered by some form-related components to parse a value provided by the client. This
-     * takes the place of a {@link org.apache.tapestry5.Translator}.
-     */
-    public static final String PARSE_CLIENT = "parseClient";
-
-    /**
-     * Event triggered by some form-related components to convert a server-side value to a
-     * client-side string, as an
-     * alternative to a {@link org.apache.tapestry5.Translator}.
-     */
-    public static final String TO_CLIENT = "toClient";
-
-    /**
-     * Event triggered by form-related components to validate user input. In addition, the Form component
-     * fires a validate event just before it fires {@link #SUCCESS} or {@link #FAILURE} as a chance
-     * to perform cross-form validations.
-     */
-    public static final String VALIDATE = "validate";
-
-    /**
-     * Event triggered by {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} to inform the
-     * container about the
-     * row removed on the client side. The event context is the object that was removed.
-     */
-    public static final String REMOVE_ROW = "removeRow";
-
-    /**
-     * Event triggered by {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} to inform the
-     * container that a
-     * new row has been requested. The return value from the event handler must be the newly created
-     * object, which must
-     * also be visible in the {@link org.apache.tapestry5.PrimaryKeyEncoder encoder parameter}.
-     */
-    public static final String ADD_ROW = "addRow";
-
-    /**
-     * Event triggered by the {@link org.apache.tapestry5.corelib.components.Loop} component to
-     * inform its container of
-     * all the values that were supplied from the client during a form submission. The event handler
-     * method should have
-     * a single parameter, of type Object[] or type List, to receive the values.
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String SYNCHRONIZE_VALUES = "synchronizeValues";
-
-    /**
-     * Event triggered by {@link org.apache.tapestry5.corelib.components.ProgressiveDisplay} component to inform its
-     * container of what context (if any) is available. The event handler may return a renderable
-     * object or null. If
-     * null is returned, the component renders its own body as the partial markup response.
-     * 
-     * @since 5.1.0.1
-     */
-    public static final String PROGRESSIVE_DISPLAY = "progressiveDisplay";
-
-    /**
-     * Event triggered by an {@link org.apache.tapestry5.corelib.mixins.Autocomplete} mixin to
-     * request completions of
-     * the current input. The context is the partial string provided by the client.
-     * 
-     * @SINCE 5.1.0.4
-     */
-    public static final String PROVIDE_COMPLETIONS = "provideCompletions";
-
-    /**
-     * Event triggered by {@link org.apache.tapestry5.corelib.components.Select} component to inform
-     * its
-     * container that Select's value has changed.
-     * 
-     * @since 5.2.0
-     */
-    public static final String VALUE_CHANGED = "valueChanged";
-
-    /**
-     * Event triggered during page render link generation. The first context parameter is the {@link Link} object, the
-     * second is the {@link PageRenderRequestParameters} from which the Link
-     * was created. The event is triggered on the actively rendering page.
-     * 
-     * @since 5.2.0
-     */
-    public static final String DECORATE_PAGE_RENDER_LINK = "decoratePageRenderLink";
-
-    /**
-     * Event triggered during component event link generation. The first context parameter is the {@link Link} object,
-     * the second is the {@link ComponentEventRequestParameters} from which the Link
-     * was created. The event is triggered on the actively rendering page, not necessarily the page
-     * containing the component.
-     * 
-     * @since 5.2.0
-     */
-    public static final String DECORATE_COMPONENT_EVENT_LINK = "decorateComponentEventLink";
-
-    /**
-     * Name of a event triggered by the form component on the {@linkplain ComponentSource#getActivePage() active page}
-     * to allow it to pre-allocate the names of any query parameters that might be used by the page for its own purposes
-     * and should not be allocated to components. An {@link IdAllocator} is passed as the event context.
-     * 
-     * @since 5.2.0
-     */
-    public static final String PREALLOCATE_FORM_CONTROL_NAMES = "preallocateFormControlNames";
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java
deleted file mode 100644
index c6aa4e9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/EventContext.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * A collection of parameters that may eventually be passed to an event handler method. Includes the
- * ability to coerce
- * or encode parameters as needed.
- * 
- * @see org.apache.tapestry5.ioc.services.TypeCoercer
- * @see org.apache.tapestry5.ValueEncoder
- */
-public interface EventContext
-{
-    /**
-     * Returns the number of parameter values that can be extracted.
-     */
-    int getCount();
-
-    /**
-     * Extracts a parameter value and coerces or decodes it to the desired type.
-     * 
-     * @param desiredType
-     *            the type of value required
-     * @param index
-     *            identifies which parameter value to extract
-     * @return the value extracted and converted or coerced
-     * @throws RuntimeException
-     *             if the value can't be converted or the index is out of range
-     */
-    <T> T get(Class<T> desiredType, int index);
-
-    /**
-     * Extracts the value of each context value as a string.
-     * 
-     * @return context values
-     * @since 5.2.0
-     */
-    String[] toStrings();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Field.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Field.java
deleted file mode 100644
index 7ee38b7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Field.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Defines a field within a form.  Fields have a <a href="http://www.w3.org/TR/html4/interact/forms.html#control-name">control
- * name</a> that is used when rendering and, later, when the form is submitted, to identify the query parameter.
- * <p/>
- * Timing is important, as components may render multiple times, due to looping and other factors. Generally, a
- * component's {@link #getControlName()} will only be accurate after it has rendered.  In some cases, when generating
- * JavaScript for example, it is necessary to {@linkplain org.apache.tapestry5.services.Heartbeat#defer(Runnable) wait
- * until the end of the current Heartbeat} to ensure that all components have had thier chance to render.
- */
-public interface Field extends ClientElement
-{
-    /**
-     * Returns the value used as the name attribute of the rendered element. This value will be unique within an
-     * enclosing form, even if the same component renders multiple times.
-     *
-     * @see org.apache.tapestry5.services.FormSupport#allocateControlName(String)
-     */
-    String getControlName();
-
-    /**
-     * Returns a user presentable (localized) label for the field, which may be used inside &lt;label&gt; elements on
-     * the client, and inside client or server-side validation error messages.
-     *
-     * @return the label
-     * @see org.apache.tapestry5.corelib.components.Label
-     */
-    String getLabel();
-
-    /**
-     * Returns true if the field is disabled; A disabled field will render a disabled attribute so that it is
-     * non-responsive on the client (at least, until its disabled status is changed on the client using JavaScript). A
-     * disabled field will ignore any value passed up in a form submit request. Care must be taken if the disabled
-     * status of a field can change between the time the field is rendered and the time the enclosing form is
-     * submitted.
-     */
-    boolean isDisabled();
-
-    /**
-     * Returns true if this field required (as per {@link org.apache.tapestry5.FieldValidator#isRequired()}).
-     *
-     * @return true if a non-blank value is required for the field
-     */
-    boolean isRequired();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldFocusPriority.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldFocusPriority.java
deleted file mode 100644
index da2afbe..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldFocusPriority.java
+++ /dev/null
@@ -1,46 +0,0 @@
-//  Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Used to determine which field on a page should receive focus, based on its status.
- *
- * @see org.apache.tapestry5.RenderSupport#autofocus(FieldFocusPriority, String)
- */
-public enum FieldFocusPriority
-{
-    /**
-     * An optional field, the lowest priority.
-     */
-    OPTIONAL,
-
-    /**
-     * A field whose input is required, which takes higher priority than optional.
-     */
-    REQUIRED,
-
-    /**
-     * A field that contains a validation error, the highest priority.
-     */
-    IN_ERROR,
-
-    /**
-     * Used to allow field focus to be manually overridden; this would be selected in user code and is higher priority
-     * than {@link #IN_ERROR}.
-     *
-     * @since 5.1.0.4
-     */
-    OVERRIDE;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldTranslator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldTranslator.java
deleted file mode 100644
index 2499266..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldTranslator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * A wrapper around {@link org.apache.tapestry5.Translator} that combines the translator for a specific {@link
- * org.apache.tapestry5.Field} and (sometimes) an override of the default validation message (used when an input value
- * can't be parsed).
- */
-public interface FieldTranslator<T>
-{
-    /**
-     * Returns the type of the server-side value.
-     *
-     * @return a type
-     */
-    Class<T> getType();
-
-    /**
-     * Invoked after the client-submitted value has been {@link Translator translated} to check that the value conforms
-     * to expectations (often, in terms of minimum or maximum value). If and only if the value is approved by all
-     * Validators is the value applied by the field.
-     *
-     * @throws ValidationException if the value violates the constraint
-     */
-    T parse(String input) throws ValidationException;
-
-    /**
-     * Converts a server-side value to a client-side string. This allows for formatting of the value in a way
-     * appropriate to the end user.
-     *
-     * @param value the server side value (which will not be null)
-     * @return client-side value to present to the user
-     * @see Translator#toClient(Object)
-     */
-    String toClient(T value);
-
-    /**
-     * Invokes {@link Translator#render(Field, String, MarkupWriter,org.apache.tapestry5.services.FormSupport)}. This is
-     * called at a point "inside" the tag, so that additional attributes may be added.  In many cases, the underlying
-     * {@link org.apache.tapestry5.Validator} may write client-side JavaScript to enforce the constraint as well.
-     *
-     * @param writer markup writer to direct output to.
-     * @see org.apache.tapestry5.MarkupWriter#attributes(Object[])
-     */
-    void render(MarkupWriter writer);
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldValidationSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldValidationSupport.java
deleted file mode 100644
index ad99d45..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldValidationSupport.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Services to help with field {@linkplain org.apache.tapestry5.Validator validation} and {@linkplain
- * org.apache.tapestry5.Translator translation}. This service encapsulates the logic that mixes normal
- * configured/declared validation/translation with events triggered on the component.
- */
-public interface FieldValidationSupport
-{
-    /**
-     * A wrapper around {@link org.apache.tapestry5.Translator#toClient(Object)} that first fires a "toclient" event on
-     * the component to see if it can perform the conversion. If the value is null, then no event is fired and the
-     * translator is <em>not</em> invoked, the return value is simply null.
-     *
-     * @param value              to be converted to a client-side string, which may be null
-     * @param componentResources used to fire events on the component
-     * @param translator         used if the component does not provide a non-null value
-     * @param nullFieldStrategy  used to convert a null server side value to an appropriate client side value
-     * @return the translated value  or null if the value is null
-     * @see org.apache.tapestry5.Translator#toClient(Object)
-     */
-    String toClient(Object value, ComponentResources componentResources, FieldTranslator<Object> translator,
-                    NullFieldStrategy nullFieldStrategy);
-
-    /**
-     * A wrapper around {@link Translator#parseClient(Field, String, String)}. First a "parseclient" event is fired; the
-     * translator is only invoked if that returns null (typically because there is no event handler method for the
-     * event).
-     *
-     * @param clientValue        the value provided by the client (not null)
-     * @param componentResources used to trigger events
-     * @param translator         translator that will do the work if the component event returns null
-     * @param nullFieldStrategy  used to convert null/blank values from client into non-null server side values
-     * @return the input parsed to an object
-     * @throws org.apache.tapestry5.ValidationException
-     *          if the value can't be parsed
-     * @see Translator#parseClient(Field, String, String)
-     */
-    Object parseClient(String clientValue, ComponentResources componentResources, FieldTranslator<Object> translator,
-                       NullFieldStrategy nullFieldStrategy)
-            throws ValidationException;
-
-    /**
-     * Performs validation on a parsed value from the client.  Normal validations occur first, then a "validate" event
-     * is triggered on the component.
-     *
-     * @param value              parsed value from the client, possibly null
-     * @param componentResources used to trigger events
-     * @param validator          performs normal validations
-     * @throws ValidationException if the value is not valid
-     * @see org.apache.tapestry5.Validator#validate(Field, Object, org.apache.tapestry5.ioc.MessageFormatter, Object)
-     */
-    void validate(Object value, ComponentResources componentResources, FieldValidator validator)
-            throws ValidationException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldValidator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldValidator.java
deleted file mode 100644
index 0f49b95..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FieldValidator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Responsible for validation of a single field.
- *
- * @param <T>
- * @see Validator
- * @see org.apache.tapestry5.services.FieldValidatorDefaultSource
- */
-public interface FieldValidator<T>
-{
-    /**
-     * Invoked after the client-submitted value has been {@link Translator translated} to check that the value conforms
-     * to expectations (often, in terms of minimum or maximum value). If and only if the value is approved by all
-     * Validators is the value applied by the field.
-     *
-     * @param value the translated value supplied by the user
-     * @throws ValidationException if the value violates the constraint
-     */
-    void validate(T value) throws ValidationException;
-
-    /**
-     * Invokes {@link Validator#render(Field, Object, org.apache.tapestry5.ioc.MessageFormatter, MarkupWriter,
-     * org.apache.tapestry5.services.FormSupport)}. This is called at a point "inside" the tag, so that additional
-     * attributes may be added.  In many cases, the underlying {@link org.apache.tapestry5.Validator} may write
-     * client-side JavaScript to enforce the constraint as well.
-     *
-     * @param writer markup writer to direct output to.
-     * @see org.apache.tapestry5.MarkupWriter#attributes(Object[])
-     */
-    void render(MarkupWriter writer);
-
-    /**
-     * Returns true if any underlying {@link org.apache.tapestry5.Validator} returns true from {@link
-     * org.apache.tapestry5.Validator#isRequired()}.
-     *
-     * @return true if the field is required   (a non-blank value is expected)
-     */
-    boolean isRequired();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FormValidationControl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FormValidationControl.java
deleted file mode 100644
index 415dbc1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/FormValidationControl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Allows control over validation concerns of a Form component.
- */
-public interface FormValidationControl
-{
-    /**
-     * A convienience for invoking {@link org.apache.tapestry5.ValidationTracker#recordError(String)}.
-     */
-    void recordError(String errorMessage);
-
-    /**
-     * A convienience for invoking {@link org.apache.tapestry5.ValidationTracker#recordError(Field, String)}.
-     */
-    void recordError(Field field, String errorMessage);
-
-    /**
-     * Returns true if the form's {@link ValidationTracker} contains any {@link org.apache.tapestry5.ValidationTracker#getHasErrors()
-     * errors}.
-     */
-    boolean getHasErrors();
-
-    /**
-     * Returns true if the form's {@link org.apache.tapestry5.ValidationTracker} does not contain any {@link
-     * org.apache.tapestry5.ValidationTracker#getHasErrors() errors}.
-     */
-    boolean isValid();
-
-    /**
-     * Invokes {@link org.apache.tapestry5.ValidationTracker#clear()}.
-     */
-    void clearErrors();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Link.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Link.java
deleted file mode 100644
index 3399487..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Link.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.List;
-
-import org.apache.commons.codec.net.URLCodec;
-import org.apache.tapestry5.services.BaseURLSource;
-import org.apache.tapestry5.services.ContextPathEncoder;
-import org.apache.tapestry5.services.Request;
-
-/**
- * A link is the Tapestry representation of a URL or URI that triggers dynamic behavior. This link is in three parts: a
- * path portion, an optional anchor, and a set of query parameters. A request for a link will ultimately be recognized
- * by a {@link org.apache.tapestry5.services.Dispatcher}.
- * <p/>
- * Query parameter values are kept separate from the path portion to support encoding those values into hidden form
- * fields (where appropriate).
- */
-public interface Link
-{
-    /**
-     * Returns the names of any additional query parameters for the URI. Query parameters store less regular or less
-     * often used values that can not be expressed in the path. They also are used to store, or link to, persistent
-     * state.
-     * 
-     * @return list of query parameter names, is alphabetical order
-     */
-    List<String> getParameterNames();
-
-    /**
-     * Returns the value of a specifically named query parameter, or <tt>null</tt> if no such query parameter is stored
-     * in the link.
-     * 
-     * @return the string value of the named parameter
-     */
-    String getParameterValue(String name);
-
-    /**
-     * Adds a parameter value. The value will be added, as is, to the URL. In many cases, the value should be URL
-     * encoded via {@link URLCodec}.
-     * 
-     * @param parameterName
-     *            the name of the parameter to store
-     * @param value
-     *            the value to store
-     * @throws IllegalArgumentException
-     *             if the link already has a parameter with the given name
-     */
-    void addParameter(String parameterName, String value);
-
-    /**
-     * Adds a parameter value as a value object; the value object is converted to a string via
-     * {@link ContextPathEncoder#encodeValue(Object)} and the result is added via {@link #addParameter(String, String)}.
-     * The Link object is returned for further configuration.
-     * 
-     * @since 5.2.2
-     */
-    Link addParameterValue(String parameterName, Object value);
-
-    /**
-     * Removes a parameter value, which is occasionally useful when transforming a parameter into a portion of
-     * the path.
-     * 
-     * @since 5.2.0
-     */
-    void removeParameter(String parameterName);
-
-    /**
-     * Returns the completely unadorned base path. Other methods (such as {@link #toURI()}), may append
-     * an anchor or query parameters.
-     * 
-     * @since 5.2.0
-     */
-    String getBasePath();
-
-    /**
-     * Creates a copy of this link that has the same parameters, anchor, and other attributes, but a different
-     * {@linkplain #getBasePath() base path}.
-     * 
-     * @since 5.2.0
-     */
-    Link copyWithBasePath(String basePath);
-
-    /**
-     * Returns the URI portion of the link. When the link is created for a form, this will not include query parameters.
-     * This is the same value returned from toString().
-     * 
-     * @return the URI, ready to be added as an element attribute
-     */
-    String toURI();
-
-    /**
-     * Returns the link as a redirect URI. The URI includes any query parameters.
-     */
-    String toRedirectURI();
-
-    /**
-     * Returns the link anchor. If this link does not have an anchor, this method returns <tt>null</tt>.
-     * 
-     * @return the link anchor
-     */
-    String getAnchor();
-
-    /**
-     * Sets the link anchor. Null and empty anchors will be ignored when building the link URI.
-     * 
-     * @param anchor
-     *            the link anchor
-     */
-    void setAnchor(String anchor);
-
-    /**
-     * Returns the absolute URL, which includes the scheme, hostname and possibly port (as per
-     * {@link BaseURLSource#getBaseURL(boolean)}).
-     * By default, the scheme is chosen to match the current {@linkplain Request#isSecure() requests security}.
-     * <p>
-     * Note: the semantics of this method changed between Tapestry 5.1 and 5.2. Most code should use toString() or
-     * {@link #toURI()} (which are equivalent) instead.
-     * 
-     * @return the complete, qualified URL, including query parameters.
-     */
-    String toAbsoluteURI();
-
-    /**
-     * Returns either the secure or insecure URL, with complete scheme, hostname and possibly port (as per
-     * {@link BaseURLSource#getBaseURL(boolean)}).
-     * 
-     * @since 5.2.2
-     * @return the complete, qualified URL, including query parameters.
-     */
-    String toAbsoluteURI(boolean secure);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupConstants.java
deleted file mode 100644
index 7bf6431..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupConstants.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Constants used when rendering page markup.
- *
- * @since 5.1.0.1
- */
-public class MarkupConstants
-{
-
-    /**
-     * Handler for the onclick event (for links) or other events (such as forms) to ensure the page is loaded before
-     * allowing the click event to occur. Refrences a client-side JavaScript function that displays a standard "wait for
-     * page to load" modal dialog.
-     */
-    public static final String WAIT_FOR_PAGE = "javascript:return Tapestry.waitForPage(event);";
-
-    /**
-     * Name of attribute for intercepting the user clicking a link.
-     *
-     * @see #WAIT_FOR_PAGE
-     */
-    public static final String ONCLICK = "onclick";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java
deleted file mode 100644
index 126180d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupUtils.java
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Utility methods related to generating markup.
- */
-public class MarkupUtils
-{
-    static final char APOS = '\'';
-    static final char QUOTE = '"';
-    static final char SLASH = '\\';
-
-    /**
-     * Quotes the provided value as a JavaScript string literal. The input value is surrounded by single quotes and any
-     * interior backslash, single or double quotes are escaped (a preceding backslash is added).
-     *
-     * @param text
-     * @return quoted text
-     */
-    public static String quote(String text)
-    {
-        StringBuilder result = new StringBuilder(text.length() * 2);
-
-        result.append(APOS);
-
-        for (char ch : text.toCharArray())
-        {
-            switch (ch)
-            {
-                case APOS:
-                case QUOTE:
-                case SLASH:
-
-                    result.append(SLASH);
-
-                default:
-                    result.append(ch);
-                    break;
-            }
-        }
-
-        result.append(APOS);
-
-        return result.toString();
-    }
-
-    /**
-     * Joins together several strings, sorting them alphabetically and separating them with spaces. This is often used
-     * when setting the CSS class attribute of an element.
-     */
-    public static String join(String... values)
-    {
-        List<String> list = CollectionFactory.newList(values);
-
-        return sortAndJoin(list);
-    }
-
-    /**
-     * Joins together several strings, sorting them alphabetically and separating them with spaces. This is often used
-     * when setting the CSS class attribute of an element.
-     */
-    public static String join(List<String> values)
-    {
-        List<String> copy = CollectionFactory.newList(values);
-
-        return sortAndJoin(copy);
-    }
-
-    static String sortAndJoin(List<String> list)
-    {
-        Collections.sort(list);
-
-        StringBuilder builder = new StringBuilder(10 * list.size());
-
-        String sep = "";
-
-        for (String name : list)
-        {
-            builder.append(sep);
-            builder.append(name);
-
-            sep = " ";
-        }
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriter.java
deleted file mode 100644
index 18169e6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriter.java
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.MarkupModel;
-import org.apache.tapestry5.dom.Raw;
-
-import java.io.PrintWriter;
-
-/**
- * An interface used by objects, such as Tapestry components, that need to render themselves as some form of XML markup.
- * A markup writer maintains the idea of a current element. Attributes are added to the current element, and new text
- * and elements are placed inside the current element. In this way, the markup writer maintains a facade that XML markup
- * is generated as a stream, even though the implementation builds a kind of DOM tree. The DOM tree can be also be
- * manipulated. This solves a number of problems from Tapestry 4 (and earlier) where random access to the DOM was
- * desired and had to be simulated through complex buffering.
- */
-public interface MarkupWriter
-{
-    /**
-     * Begins a new element as a child of the current element. The new element becomes the current element. The new
-     * Element is returned and can be directly manipulated (possibly at a later date). Optionally, attributes for the
-     * new element can be specified directly.
-     * <p/>
-     *
-     * @param name       the name of the element to create
-     * @param attributes an even number of values, alternating names and values
-     * @return the new DOM Element node
-     * @see #attributes(Object[])
-     */
-    Element element(String name, Object... attributes);
-
-    /**
-     * Ends the current element. The new current element will be the parent element. Returns the new current element
-     * (which may be null when ending the root element for the document).
-     */
-
-    Element end();
-
-    /**
-     * Writes the text as a child of the current element.
-     */
-
-    void write(String text);
-
-    /**
-     * Writes a formatted string.
-     */
-    void writef(String format, Object... args);
-
-    /**
-     * Writes <em>raw</em> text, text with existing markup that should be passed through the client without change. This
-     * can be useful when the markup is read from an external source (a file or a database) and is simply to be
-     * included.
-     *
-     * @param text
-     * @see Raw
-     */
-    void writeRaw(String text);
-
-    /**
-     * Adds an XML comment. The text should be just the comment content, the comment delimiters will be provided.
-     * Note that, as of Tapestry 5.2., no extra whitespace is added (previous releases added a space around the text).
-     */
-    void comment(String text);
-
-
-    /**
-     * Adds parsed character content. This will be enclosed in a CDATA block if supported.  When not supported, this is
-     * the same as {@link #write(String)}.
-     *
-     * @param content pre-parsed content
-     */
-    void cdata(String content);
-
-    /**
-     * Adds a series of attributes and values. Null values are quietly skipped. If a name already has a value, then the
-     * new value is <em>ignored</em>.
-     */
-    void attributes(Object... namesAndValues);
-
-    /**
-     * Converts the collected markup into an markup stream (according to rules provided by the {@link Document}'s {@link
-     * MarkupModel}). The markup stream is sent to the writer.
-     */
-    void toMarkup(PrintWriter writer);
-
-    /**
-     * Returns the Document into which this writer creates elements or other nodes.
-     */
-    Document getDocument();
-
-    /**
-     * Returns the currently active element.
-     */
-    Element getElement();
-
-    /**
-     * Defines a namespace for the currently active element. The namespace URI will be mapped to the provided namespace
-     * prefix within the Element.
-     *
-     * @param namespace       the namespace URI
-     * @param namespacePrefix the prefix for elements and attributes associated with the namespace    (may be the empty
-     *                        string for the default namespace)
-     * @return the currently active element
-     */
-    Element defineNamespace(String namespace, String namespacePrefix);
-
-    /**
-     * Starts an element within the given namespace. The correct namespace prefix will be identified and used. Must be
-     * balanced by a call to {@link #end()}.
-     *
-     * @param namespace   URI containing the element
-     * @param elementName name of the element within the namespace
-     * @return the new Element
-     */
-    Element elementNS(String namespace, String elementName);
-
-    /**
-     * Creates an attribute within the namespace for the current element.
-     *
-     * @param namespace      URI containing the element
-     * @param attributeName  name of the attribute within the namespace
-     * @param attributeValue the value for the attribute
-     * @return the currently active element
-     */
-    Element attributeNS(String namespace, String attributeName, String attributeValue);
-
-    /**
-     * Adds a markup writer listener that will be notified as elements are started and ended.
-     */
-    void addListener(MarkupWriterListener listener);
-
-    /**
-     * Removes a previously added listener.
-     */
-    void removeListener(MarkupWriterListener listener);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriterAdapter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriterAdapter.java
deleted file mode 100644
index 95e972c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriterAdapter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.dom.Element;
-
-/**
- * Default, empty implementation of {@link org.apache.tapestry5.MarkupWriterListener}.
- */
-public class MarkupWriterAdapter implements MarkupWriterListener
-{
-    public void elementDidStart(Element element)
-    {
-    }
-
-    public void elementDidEnd(Element element)
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriterListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriterListener.java
deleted file mode 100644
index 7984ec2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MarkupWriterListener.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.dom.Element;
-
-
-/**
- * An interface that allows objects to be alerted when after an element is started, and after an element is ended.
- */
-public interface MarkupWriterListener
-{
-    /**
-     * Invoked just after an element and its initial set of attributes has been written.
-     *
-     * @param element element just created and populated with attributes
-     * @see org.apache.tapestry5.MarkupWriter#element(String, Object[])
-     * @see org.apache.tapestry5.MarkupWriter#elementNS(String, String)
-     */
-    void elementDidStart(Element element);
-
-    /**
-     * Invoked just after an element has ended.
-     *
-     * @param element just ended
-     * @see org.apache.tapestry5.MarkupWriter#end()
-     */
-    void elementDidEnd(Element element);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
deleted file mode 100644
index ac44287..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/MetaDataConstants.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Meta-data keys that are applied to components and pages.  In addition, in many cases a {@linkplain
- * org.apache.tapestry5.SymbolConstants symbol constant key} is also a meta data key (where the symbol value is the
- * ultimate default).
- *
- * @see org.apache.tapestry5.services.MetaDataLocator
- * @see org.apache.tapestry5.MetaDataConstants
- */
-public class MetaDataConstants
-{
-    /**
-     * Meta data key applied to pages that sets the response content type. A factory default provides the value
-     * "text/html" when not overridden.
-     */
-    public static final String RESPONSE_CONTENT_TYPE = "tapestry.response-content-type";
-
-    /**
-     * Meta data key applied to pages that may only be accessed via secure methods (HTTPS).
-     */
-    public static final String SECURE_PAGE = "tapestry.secure-page";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/NullFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/NullFieldStrategy.java
deleted file mode 100644
index 547a5f0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/NullFieldStrategy.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Defines a strategy, used by {@link Field} components such as {@link org.apache.tapestry5.corelib.components.TextField},
- * to handle the case where either the server-side value to be sent (as a string) to the client, or the client-side
- * string passed back up to the server, is null or blank.
- *
- * @see org.apache.tapestry5.services.NullFieldStrategySource
- */
-public interface NullFieldStrategy
-{
-    /**
-     * Provides a replacement value for null, when converting the server-side object to a client-side string. The
-     * replacement value, if non-null, will be passed to {@link org.apache.tapestry5.Translator#toClient(Object)}.
-     */
-    Object replaceToClient();
-
-    /**
-     * Provides a replacement value for a null or blank string passed from the client to the server as part of a form
-     * submission. This replacement value will be passed to {@link Translator#parseClient(Field, String, String)}  as if
-     * it were the value supplied by the user.
-     *
-     * @return replacement value (this must not be null)
-     */
-    String replaceFromClient();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java
deleted file mode 100644
index 5df2b4a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedApplicationStateObject.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * <em>Optional</em> interface that may be implemented by an Application State Object.
- *
- * @see org.apache.tapestry5.annotations.ApplicationState
- * @see org.apache.tapestry5.services.ApplicationStateManager
- * @deprecated since 5.1.0.0; use {@link org.apache.tapestry5.OptimizedSessionPersistedObject} instead
- */
-public interface OptimizedApplicationStateObject
-{
-    /**
-     * Determines if the application state object has changed its state since being read from the session.
-     *
-     * @return true if the ASO has changed and needs resaving, false otherwise
-     */
-    boolean isApplicationStateObjectDirty();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedSessionPersistedObject.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedSessionPersistedObject.java
deleted file mode 100644
index 7914c1b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptimizedSessionPersistedObject.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * An optional interface implemented by objects that are persisted in the {@link org.apache.tapestry5.services.Session}.
- * At the end of each request, any objects read from the session are re-stored into the session, to ensure that
- * in-memory changes are flushed to other servers in a cluster. Objects that implement this interface are expected to
- * track when they are dirty (have pending changes), so that the save back into the session can be avoided when not
- * necessary.
- *
- * @see org.apache.tapestry5.annotations.ImmutableSessionPersistedObject
- * @see org.apache.tapestry5.services.SessionPersistedObjectAnalyzer
- * @since 5.1.1.0
- */
-public interface OptimizedSessionPersistedObject
-{
-    /**
-     * Returns true if the object has in-memory changes.  It is the object's responsibility to set its internal flag to
-     * false, typically by implementing {@link javax.servlet.http.HttpSessionBindingListener}.
-     *
-     * @return
-     */
-    boolean isSessionPersistedObjectDirty();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptionGroupModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptionGroupModel.java
deleted file mode 100644
index bff79b7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptionGroupModel.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Defines a group of related options. Options may be enabled or disabled as a group. Corresponds to the [X]HTML element
- * &lt;optgroup&gt;.
- */
-public interface OptionGroupModel
-{
-    /**
-     * Localized, user-presentable label for the group.
-     */
-    String getLabel();
-
-    /**
-     * If true, the group (and all options within it) will be disabled. Note that some browsers do not honor the
-     * disabled attribute property.
-     *
-     * @return true if a disabled attribute should be rendered.
-     */
-    boolean isDisabled();
-
-    /**
-     * Additional attributes to render with the &lt;optgroup&gt;. This is often used to render the CSS class attribute.
-     * May return null.
-     */
-    Map<String, String> getAttributes();
-
-    /**
-     * The list of options within the group.
-     */
-    List<OptionModel> getOptions();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptionModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptionModel.java
deleted file mode 100644
index 5c885e3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/OptionModel.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.Map;
-
-/**
- * A single option within a {@link OptionGroupModel}. Corresponds closely to the [X]HTML &lt;option&gt; element.
- */
-public interface OptionModel
-{
-    /**
-     * The localized, user-presentable label for the option.
-     */
-    String getLabel();
-
-    /**
-     * If true, then a disabled attribute will be rendered with the &lt;option&gt;.
-     */
-    boolean isDisabled();
-
-    /**
-     * Additional attributes to render within the &lt;option&gt;. May return null.
-     */
-    Map<String, String> getAttributes();
-
-    /**
-     * The server-side value represented by this option. This is used to determine which option will be selected. It is
-     * also used, via {@link ValueEncoder#toClient(Object)}, to generate the client-side value attribute.
-     */
-    Object getValue();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PageCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PageCallback.java
deleted file mode 100644
index 081ed9b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PageCallback.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.io.Serializable;
-
-import org.apache.tapestry5.annotations.ImmutableSessionPersistedObject;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.PageRenderLinkSource;
-
-/**
- * A way of capturing the name of a page and the page activation context so that, at a future date,
- * the page can be invoked with that data. This kind of callback is very useful when creating more
- * complicated workflows, where access to a page is "interrupted" with some operation before
- * returning (via a callback) to the original flow.
- * <p>
- * Since the callback is serializable, it can be stored in the session.
- * 
- * @since 5.2.0
- */
-@ImmutableSessionPersistedObject
-public class PageCallback implements Serializable
-{
-    private static final long serialVersionUID = -8067619978636824702L;
-
-    private String pageName;
-
-    private String[] activationContext;
-
-    public PageCallback(String pageName, String[] activationContext)
-    {
-        assert InternalUtils.isNonBlank(pageName);
-        this.pageName = pageName;
-        assert activationContext != null;
-        this.activationContext = activationContext;
-    }
-
-    public PageCallback(String pageName, EventContext activationContext)
-    {
-        this(pageName, activationContext.toStrings());
-    }
-
-    public PageCallback(String pageName)
-    {
-        this(pageName, InternalConstants.EMPTY_STRING_ARRAY);
-    }
-
-    public String getPageName()
-    {
-        return pageName;
-    }
-
-    @Override
-    public String toString()
-    {
-        if (hasActivationContext())
-            return String.format("PageCallback[%s %s]", pageName, activationContextDescription());
-
-        return String.format("PageCallback[%s]", pageName);
-    }
-
-    /** Does the activation context have any values? Used, typically, inside an override of {@link #toString()}. */
-    protected final boolean hasActivationContext()
-    {
-        return activationContext.length > 0;
-    }
-
-    /**
-     * Returns the activation context as a string of value separated by slashes. Typically used inside
-     * an override of {@link #toString()}.
-     */
-    protected final String activationContextDescription()
-    {
-        StringBuilder builder = new StringBuilder();
-
-        String sep = "";
-
-        for (String c : activationContext)
-        {
-            builder.append(sep);
-            builder.append(c);
-
-            sep = "/";
-        }
-
-        return builder.toString();
-    }
-
-    /**
-     * Converts the callback (the page name and activation context) to a link; such a link may be
-     * returned from a event handler method to cause Tapestry to redirect to the page. Most of the
-     * details
-     * are encapsulated inside the {@link PageRenderLinkSource} service.
-     * 
-     * @param linkSource
-     *            used to generate the link
-     * @return link corresponding to this callback
-     */
-    public Link toLink(PageRenderLinkSource linkSource)
-    {
-        return linkSource.createPageRenderLinkWithContext(pageName, (Object[]) activationContext);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PersistenceConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PersistenceConstants.java
deleted file mode 100644
index 8fc71d9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PersistenceConstants.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Constants for persistent field strategies.
- * 
- * @see org.apache.tapestry5.annotations.Persist#value()
- */
-public class PersistenceConstants
-{
-    /**
-     * The field's value is stored in the {@link org.apache.tapestry5.services.Session}.
-     */
-    public static final String SESSION = "session";
-
-    /**
-     * The field's value is stored on the client, as a query parameter or hidden form field.
-     */
-    public static final String CLIENT = "client";
-
-    /**
-     * A that stores data in the session, but only until the next request. This is often
-     * used for confirmation messages presented to the user.
-     */
-    public static final String FLASH = "flash";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java
deleted file mode 100644
index 39facaf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PrimaryKeyEncoder.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Used by {@link org.apache.tapestry5.corelib.components.Loop}, {@link org.apache.tapestry5.corelib.components.AjaxFormLoop}
- * and similar components to extract out an identifier, here termed a "primary key", that can be stored on the client
- * and later used to recover the same, or equivalent, server side object.
- * <p/>
- * The {@link org.apache.tapestry5.util.DefaultPrimaryKeyEncoder} implementation is used in most circumstances.
- *
- * @param <K> the type of the primary key, used to identify the value (which must be serializable)
- * @param <V> the type of value identified by the key
- * @see org.apache.tapestry5.ValueEncoder
- * @deprecated This interface overlaps with {@link org.apache.tapestry5.ValueEncoder} and has been deprecated in release
- *             5.1. The interface itself will be removed in a later release of Tapestry. The components that used this
- *             interface ({@link org.apache.tapestry5.corelib.components.AjaxFormLoop}, {@link
- *             org.apache.tapestry5.corelib.components.Grid}, {@link org.apache.tapestry5.corelib.components.GridRows}
- *             and {@link org.apache.tapestry5.corelib.components.Loop}) have been changed to expect ValueEncoder
- *             instead, and an automatic coercion from PrimaryKeyEncoder to ValueEncoder has been provided.
- */
-public interface PrimaryKeyEncoder<K extends Serializable, V>
-{
-    /**
-     * Given a particular value, this method extracts and returns the primary key that identifies the value. The key
-     * will later be converted back into a value using {@link #toValue(Serializable)}.
-     *
-     * @param value whose primary key is needed
-     * @return the key for the value
-     */
-    K toKey(V value);
-
-    /**
-     * Invoked as part of a form submission to alert the encoder that a series of keys may be converted back to values.
-     * This is advisory only, and the keys passed to {@link #toValue(Serializable)} may not include all keys in the
-     * list, or may include keys not in the list. In general, though, the keys passed in will match the actual keys to
-     * be converted, giving the encoder a chance to efficiently fetch the necessary value objects as a group.
-     */
-    void prepareForKeys(List<K> keys);
-
-    /**
-     * For a particular primary key, previously obtained via {@link #toKey(Object)}, this method returns the same or
-     * equivalent object.
-     *
-     * @param key used to identify the object
-     * @return the value object for the key
-     */
-    V toValue(K key);
-
-    /**
-     * Returns the type of key. This is primarily used when Tapestry must convert an existing PrimaryKeyConverter into a
-     * {@link org.apache.tapestry5.ValueEncoder}.
-     *
-     * @return key type or null if not known
-     * @since 5.1.0.0
-     */
-    Class<K> getKeyType();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PropertyConduit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PropertyConduit.java
deleted file mode 100644
index 3dbb0c0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PropertyConduit.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-/**
- * Used to read or update the value associated with a property. A PropertyConduit provides access to the annotations on
- * the underlying getter and/or setter methods.
- */
-public interface PropertyConduit extends AnnotationProvider
-{
-    /**
-     * Reads the property from the instance.
-     *
-     * @param instance object containing the property
-     * @return the current value of the property
-     */
-    Object get(Object instance);
-
-    /**
-     * Changes the current value of the property.
-     *
-     * @param instance object containing the property
-     * @param value    to change the property to
-     */
-    void set(Object instance, Object value);
-
-    /**
-     * Returns the type of the property read or updated by the conduit.
-     */
-    Class getPropertyType();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java
deleted file mode 100644
index e4893c3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/PropertyOverrides.java
+++ /dev/null
@@ -1,41 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.Messages;
-
-/**
- * Provides access to blocks and messages used when overriding property labels, and property display or edit blocks.
- * Generally, this is a wrapper around {@link org.apache.tapestry5.ComponentResources}. An explicit implementation of
- * this could be used to, for example, search for override blocks in multiple places.
- *
- * @see org.apache.tapestry5.corelib.components.PropertyDisplay
- * @see org.apache.tapestry5.corelib.components.PropertyEditor
- */
-public interface PropertyOverrides
-{
-    /**
-     * Returns the override messages (normally, the messages catalog for the component's container).
-     */
-    Messages getOverrideMessages();
-
-    /**
-     * Searches for an override block with the given name.
-     *
-     * @param name the name of the block (typically, an informal parameter to a component)
-     * @return the block if found, or null if not found
-     */
-    Block getOverrideBlock(String name);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/QueryParameterConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/QueryParameterConstants.java
deleted file mode 100644
index 8e61eef..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/QueryParameterConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.corelib.components.Zone;
-
-/**
- * Defines constants for common query parameters passed in requests from the client.
- * 
- * @see RequestParameter
- */
-public class QueryParameterConstants
-{
-    /**
-     * The client-side id of the element being updated in an Ajax request. This is very useful when writing
-     * new content that may update the same zone dynamically, even when the {@link Zone} has allocated a dynamic
-     * client-side id during initial render.
-     */
-    public static final String ZONE_ID = "t:zoneid";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/RadioContainer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/RadioContainer.java
deleted file mode 100644
index 0b37fa7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/RadioContainer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.corelib.components.Radio;
-
-/**
- * A container of {@link Radio} components, used to identify the element name used when rendering the individual radio
- * buttons (all buttons in a group share the same element name) and to
- */
-public interface RadioContainer
-{
-    /**
-     * Returns the value used as the name attribute of the rendered element. This value will be unique within an
-     * enclosing form, even if the same component renders multiple times.
-     *
-     * @see org.apache.tapestry5.Field#getControlName()
-     */
-    String getControlName();
-
-    /**
-     * If true, then all buttons within the container should also be disabled.
-     */
-    boolean isDisabled();
-
-    /**
-     * Converts an object to a client-side string representation of that value.
-     *
-     * @param value to convert (may be null)
-     * @return string representation of the value
-     * @see ValueEncoder#toClient(Object)
-     */
-    String toClient(Object value);
-
-    /**
-     * Returns true if the value is the current selected value.
-     */
-    boolean isSelected(Object value);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java
deleted file mode 100644
index 9b3b9d8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/RenderSupport.java
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Provides support to all components that render. This is primarily about generating unique client-side ids (very
- * important for JavaScript generation) as well as accumulating JavaScript to be sent to the client. PageRenderSupport
- * also allows for the incremental addition of stylesheets.
- * <p/>
- * When rendering, a &lt;script&gt; block will be added to the bottom of the page (just before the &lt;/body&gt; tag).
- * The scripting statements added to this block will be executed, on the client, only once the page has fully loaded.
- * <p>
- * The methods in this interface are largely being replaced with a new environmental interface,
- * {@link JavaScriptSupport}.
- * <p>
- * RenderSupport is normally accessed within a component by using the {@link Environmental} annotation on a component
- * field. In addition, RenderSupport may also be accessed as a service (the service
- * {@linkplain EnvironmentalShadowBuilder internally delegates to the current environmental instance}), which is useful
- * for service-layer objects.
- * 
- * @deprecated RenderSupport has been replaced by {@link JavaScriptSupport} and may be removed in Tapestry 5.3.
- */
-public interface RenderSupport
-{
-    /**
-     * Allocates a unique id based on the component's id. In some cases, the return value will not precisely match the
-     * input value (an underscore and a unique index value may be appended).
-     * 
-     * @param id
-     *            the component id from which a unique id will be generated
-     * @return a unique id for this rendering of the page
-     * @see org.apache.tapestry5.ioc.util.IdAllocator
-     * @see JavaScriptSupport#allocateClientId(ComponentResources)
-     * @deprecated Use {@link JavaScriptSupport#allocateClientId(String)} instead
-     */
-    String allocateClientId(String id);
-
-    /**
-     * As with {@link #allocateClientId(String)} but uses the id of the component extracted from the resources.
-     * 
-     * @param resources
-     *            of the component which requires an id
-     * @return a unique id for this rendering of the page
-     * @deprecated Use {@link JavaScriptSupport#allocateClientId(ComponentResources)} instead
-     */
-    String allocateClientId(ComponentResources resources);
-
-    /**
-     * Adds one or more new script assets to the page. Assets are added uniquely, and appear as &lt;script&gt; elements
-     * just inside the &lt;body&gt; element of the rendered page. Duplicate requests to add the same script are quietly
-     * ignored.
-     * 
-     * @param scriptAssets
-     *            asset to the script to add
-     * @deprecated Use {@link JavaScriptSupport#importJavaScriptLibrary(Asset)} instead
-     */
-    void addScriptLink(Asset... scriptAssets);
-
-    /**
-     * Adds some number of script links as strings representations of URLs. The scripts are passed down to the client
-     * as-is. Typically, this is used to reference a script stored outside the web application entirely.
-     * 
-     * @param scriptURLs
-     *            URL strings of scripts
-     * @deprecated Use {@link JavaScriptSupport#importJavaScriptLibrary(String)} instead
-     * @throws RuntimeException
-     *             <strong>always</strong> as of 5.2.0
-     */
-    void addScriptLink(String... scriptURLs);
-
-    /**
-     * Used to add scripts that are stored on the classpath. Each element has {@linkplain SymbolSource symbols
-     * expanded}, then is {@linkplain AssetSource converted to an asset} and added as a script link.
-     * 
-     * @param classpaths
-     *            array of paths. Symbols in the paths are expanded, then the paths are each converted into an
-     *            asset.
-     * @deprecated Use {@link JavaScriptSupport#importJavaScriptLibrary(Asset)} instead
-     */
-    void addClasspathScriptLink(String... classpaths);
-
-    /**
-     * Adds a link to a CSS stylesheet. As with JavaScript libraries, each stylesheet is added at most once. Stylesheets
-     * added this way will be ordered before any other content, in the &lt;head&gt; element of the document. The
-     * &lt;head&gt; element will be created, if necessary.
-     * 
-     * @param stylesheet
-     *            the asset referencing the stylesheet
-     * @param media
-     *            the media value for the stylesheet, or null to not specify a specific media type
-     */
-
-    void addStylesheetLink(Asset stylesheet, String media);
-
-    /**
-     * Adds a stylesheet as a URL. See notes in {@link #addScriptLink(String[])}.
-     * 
-     * @param stylesheetURL
-     *            URL string of stylesheet
-     * @param media
-     *            media value for the stylesheet, or null to not specify a specific media type
-     */
-    void addStylesheetLink(String stylesheetURL, String media);
-
-    /**
-     * Adds a script statement to the page's script block. A newline will be added after the script statement.
-     * 
-     * @param script
-     *            text to be added to the script block
-     * @deprecated Use {@link JavaScriptSupport#addScript(String, Object...)} instead
-     */
-    void addScript(String script);
-
-    /**
-     * Adds a script statement to the page's script block. The parameters are passed to
-     * {@link String#format(String, Object[])} before being added to the script block. A newline will be added after the
-     * formatted statement.
-     * 
-     * @param format
-     *            base string format, to be passed through String.format
-     * @param arguments
-     *            additional arguments formatted to form the final script
-     * @deprecated Use {@link JavaScriptSupport#addScript(String, Object...)} instead
-     */
-    void addScript(String format, Object... arguments);
-
-    /**
-     * Add an initialization call. This method is deprecated and, although it still works, it now generates
-     * very verbose, inefficient client-side JavaScript.
-     * 
-     * @param functionName
-     *            the name of the function (on the client-side Tapestry.Initializer object) to invoke.
-     * @param parameterList
-     *            list of parameters for the method invocation.
-     * @see #addScript(String, Object[])
-     * @deprecated Use {@link JavaScriptSupport#addInitializerCall(String, JSONObject)} instead (which may require
-     *             changes to your JavaScript initializer function)
-     */
-    void addInit(String functionName, JSONArray parameterList);
-
-    /**
-     * Alternate version of {@link #addInit(String, org.apache.tapestry5.json.JSONArray)} where just a single object is
-     * passed.
-     * 
-     * @param functionName
-     *            the name of the function (on the client-side Tapestry object) to invoke.
-     * @param parameter
-     *            the object to pass to the function
-     * @deprecated Use {@link JavaScriptSupport#addInitializerCall(String, JSONObject)} instead
-     */
-    void addInit(String functionName, JSONObject parameter);
-
-    /**
-     * Alternate version of {@link #addInit(String, org.apache.tapestry5.json.JSONArray)} where one or more strings are
-     * passed. A single string is added to the initialization call as itself; otherwise, the parameters are combined to
-     * form a {@link JSONArray}. This method is deprecated and, although it still works, it now generates
-     * very verbose, inefficient client-side JavaScript.
-     * 
-     * @param functionName
-     *            the name of the function (on the client-side Tapestry object) to invoke.
-     * @param parameters
-     * @deprecated Use {@link JavaScriptSupport#addInitializerCall(String, JSONObject)} instead (which may require
-     *             changes to your JavaScript initializer function), or (for a single parameter)
-     *             {@link JavaScriptSupport#addInitializerCall(String, String)}
-     */
-    void addInit(String functionName, String... parameters);
-
-    /**
-     * Invoked to set focus on a rendered field. Takes into account priority, meaning that a field with errors will take
-     * precedence over a merely required field, and over a field that is optional. The value
-     * {@link org.apache.tapestry5.FieldFocusPriority#OVERRIDE} can be used to force a particular field to receive
-     * focus.
-     * 
-     * @param priority
-     *            focus is set only if the provided priority is greater than the current priority
-     * @param fieldId
-     *            id of client-side element to take focus
-     */
-    void autofocus(FieldFocusPriority priority, String fieldId);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Renderable.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Renderable.java
deleted file mode 100644
index cd15f6a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Renderable.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Base interface for objects that can render markup output using a {@link org.apache.tapestry5.MarkupWriter}.
- */
-public interface Renderable
-{
-    void render(MarkupWriter writer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SelectModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SelectModel.java
deleted file mode 100644
index ec96edf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SelectModel.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.List;
-
-/**
- * Defines the possible options and option groups for a &lt;select&gt; [X]HTML element.
- * <p/>
- * Primarily used by the {@link org.apache.tapestry5.corelib.components.Select} component, but potentially used by
- * anything similar, that needs to present a list of options to the user. Generally paired with a {@link
- * org.apache.tapestry5.ValueEncoder} to create client-side representations of server-side values.
- *
- * @see org.apache.tapestry5.corelib.components.Palette
- */
-public interface SelectModel
-{
-    /**
-     * The list of groups, each containing some number of individual options.
-     *
-     * @return the groups, or null
-     */
-    List<OptionGroupModel> getOptionGroups();
-
-    /**
-     * The list of ungrouped options, which appear after any grouped options. Generally, a model will either provide
-     * option groups or ungrouped options, but not both.
-     *
-     * @return the ungrouped options, or null
-     */
-    List<OptionModel> getOptions();
-
-    /**
-     * Allows access to all the {@link OptionGroupModel}s and {@link OptionModel}s within the SelectModel.
-     */
-    void visit(SelectModelVisitor visitor);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SelectModelVisitor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SelectModelVisitor.java
deleted file mode 100644
index efcb60d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SelectModelVisitor.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Callback interface that allows for visiting the option groups and option models of a select model in correct render
- * order.
- */
-public interface SelectModelVisitor
-{
-    /**
-     * Invoked once for each {@link OptionGroupModel}, just before invoking {@link #option(OptionModel)} for each
-     * embedded option within the group.
-     */
-    void beginOptionGroup(OptionGroupModel groupModel);
-
-    /**
-     * Invoked for each option within a group, and at the end, for each ungrouped option.
-     *
-     * @param optionModel
-     */
-    void option(OptionModel optionModel);
-
-    /**
-     * Invoked after all options within the group have been visited.
-     */
-    void endOptionGroup(OptionGroupModel groupModel);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/StreamResponse.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/StreamResponse.java
deleted file mode 100644
index 9b0ec89..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/StreamResponse.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.services.Response;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * An alternate response from a component event handler method used to directly provide a stream of data to be sent to
- * the client, rather than indicating what page to send a render redirect request to.
- */
-public interface StreamResponse
-{
-    /**
-     * Returns the content type to be reported to the client.
-     */
-    String getContentType();
-
-    /**
-     * Returns the stream of bytes to be sent to the client. The stream will be closed when the end of the stream is
-     * reached. The provided stream will be wrapped in a {@link BufferedInputStream} for efficiency.
-     */
-    InputStream getStream() throws IOException;
-
-
-    /**
-     * Prepares the response before it is sent to the client. This is the place to set any response headers (e.g.
-     * content-disposition).
-     *
-     * @param response Response that will be sent.
-     */
-    void prepareResponse(Response response);
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
deleted file mode 100644
index 9a33556..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
+++ /dev/null
@@ -1,328 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.internal.services.AssetDispatcher;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.assets.AssetPathConstructor;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-
-/**
- * Defines the names of symbols used to configure Tapestry.
- * 
- * @see org.apache.tapestry5.ioc.services.SymbolSource
- */
-public class SymbolConstants
-{
-    /**
-     * Indicates whether Tapestry is running in production mode or developer mode. The primary difference is how
-     * exceptions are reported.
-     */
-    public static final String PRODUCTION_MODE = "tapestry.production-mode";
-
-    /**
-     * A version of {@link #PRODUCTION_MODE} as a symbol reference. This can be used as the default value
-     * of other symbols, to indicate that their default matches whatever PRODUCTION_MODE is set to, which is quite
-     * common.
-     * 
-     * @since 5.2.0
-     */
-    public static final String PRODUCTION_MODE_VALUE = String.format("${%s}", PRODUCTION_MODE);
-
-    /**
-     * Symbol which may be set to "true" to force the use of absolute URIs (not relative URIs) exclusively.
-     * 
-     * @deprecated To be removed after Tapestry 5.2. URLs are now always absolute, since Tapestry 5.2.1.
-     */
-    public static final String FORCE_ABSOLUTE_URIS = "tapestry.force-absolute-uris";
-
-    /**
-     * If set to "true", then action requests will render a page markup response immediately, rather than sending a
-     * redirect to render the response. "Action request" is an outdated term for "component event request" (i.e., most
-     * links and all form submissions).
-     */
-    public static final String SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS = "tapestry.suppress-redirect-from-action-requests";
-
-    /**
-     * The list of locales supported by the application; locales identified in the incoming request are "narrowed" to
-     * one of these values. The first locale name in the list is the default locale used when no proper match can be
-     * found.
-     */
-    public static final String SUPPORTED_LOCALES = "tapestry.supported-locales";
-
-    /**
-     * Controls whether whitespace is compressed by default in templates, or left as is. The factory default is to
-     * compress whitespace. This can be overridden using the xml:space attribute inside template elements.
-     */
-    public static final String COMPRESS_WHITESPACE = "tapestry.compress-whitespace";
-
-    /**
-     * Time interval defining how often Tapestry will check for updates to local files (including classes). This number
-     * can be raised in a production environment. The default is "1 s" (one second), which is appropriate for
-     * development.
-     */
-    public static final String FILE_CHECK_INTERVAL = "tapestry.file-check-interval";
-
-    /**
-     * Time interval that sets how long Tapestry will wait to obtain the exclusive lock needed to check local files. The
-     * default is "50 ms".
-     */
-    public static final String FILE_CHECK_UPDATE_TIMEOUT = "tapestry.file-check-update-timeout";
-
-    /**
-     * The version number of the core Tapestry framework, or UNKNOWN if the version number is not available (which
-     * should only occur when developing Tapestry).
-     */
-    public static final String TAPESTRY_VERSION = "tapestry.version";
-
-    /**
-     * The location of the application-wide component messages catalog, relative to the web application context. This
-     * will normally be <code>WEB-INF/app.properties</code>.
-     */
-    public static final String APPLICATION_CATALOG = "tapestry.app-catalog";
-
-    /**
-     * The charset used when rendering page markup; the charset is also used as the request encoding when handling
-     * incoming requests. The default is "UTF-8".
-     */
-    public static final String CHARSET = "tapestry.charset";
-
-    /**
-     * Used as the default for the Form's autofocus and clientValidation parameters. If overridden to "false", then
-     * Forms will not (unless explicitly specified) use client validation or autofocus, which in turn, means that most
-     * pages with Forms will not make use of the Tapestry JavaScript stack.
-     */
-    public static final String FORM_CLIENT_LOGIC_ENABLED = "tapestry.form-client-logic-enabled";
-
-    /**
-     * Name of page used to report exceptions; the page must implement
-     * {@link org.apache.tapestry5.services.ExceptionReporter}.
-     * This is used by the default exception report handler service.
-     */
-    public static final String EXCEPTION_REPORT_PAGE = "tapestry.exception-report-page";
-
-    /**
-     * If true, then links for external JavaScript libraries are placed at the top of the document (just inside the
-     * &lt;body&gt; element). If false, the default, then the libraries are placed at the bottom of the document.
-     * Per-page initialization always goes at the bottom.
-     * 
-     * @deprecated since 5.1.0.1; scripts are now always at the top (see TAP5-544)
-     */
-    public static final String SCRIPTS_AT_TOP = "tapestry.script-at-top";
-
-    /**
-     * Identifies the default persistence strategy for all pages that do not provide an override (using this value as
-     * {@link org.apache.tapestry5.annotations.Meta key}).
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String PERSISTENCE_STRATEGY = "tapestry.persistence-strategy";
-
-    /**
-     * Minimum output stream size, in bytes, before output is compressed using GZIP. Shorter streams are not compressed.
-     * Tapestry buffers this amount and switches to a GZIP output stream as needed. The default is "100".
-     * 
-     * @see #GZIP_COMPRESSION_ENABLED
-     * @since 5.1.0.0
-     */
-    public static final String MIN_GZIP_SIZE = "tapestry.min-gzip-size";
-
-    /**
-     * Version number integrated into URLs for assets. This should be changed for each release, otherwise
-     * out-of-date files may be used from the client's local cache (due to far-future expired headers). The default
-     * value is semi-random and different for each execution, which will adversely affect client caching, but is
-     * reasonable
-     * for development.
-     * 
-     * @since 5.1.0.0
-     * @see AssetDispatcher
-     * @see AssetPathConstructor
-     */
-    public static final String APPLICATION_VERSION = "tapestry.application-version";
-
-    /**
-     * Used to omit the normal Tapestry framework generator meta tag. The meta tag is rendered by default, but clients
-     * who do not wish to advertise their use of Tapestry may set this symbol to "true".
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String OMIT_GENERATOR_META = "tapestry.omit-generator-meta";
-
-    /**
-     * If "true" (the default) then GZip compression is enabled for dynamic requests and for static assets. If you are
-     * using a server that handles GZip compression for you, or you don't want to ue the extra processing power
-     * necessary to GZIP requests, then override this to "false".
-     * 
-     * @see #MIN_GZIP_SIZE
-     * @since 5.1.0.0
-     */
-    public static final String GZIP_COMPRESSION_ENABLED = "tapestry.gzip-compression-enabled";
-
-    /**
-     * If "true" (which itself defaults to production mode), then the {@link org.apache.tapestry5.annotations.Secure}
-     * annotation will be honored. If "false" (i.e., development mode), then the annotation and related HTTP/HTTPS
-     * logic is ignored.
-     * 
-     * @since 5.1.0.1
-     */
-    public static final String SECURE_ENABLED = "tapestry.secure-enabled";
-
-    /**
-     * If "true" (the default), then the {@link org.apache.tapestry5.services.PersistentLocale} will be encoded into the
-     * {@link org.apache.tapestry5.Link} path by the {@link org.apache.tapestry5.services.ComponentEventLinkEncoder}
-     * service. If overridden to "false" this does not occur, but you should provide a
-     * {@link org.apache.tapestry5.services.LinkCreationListener} (registered with the
-     * {@link org.apache.tapestry5.services.LinkCreationHub}) in order to add the locale as a query parameter (or
-     * provide some alternate means of persisting the locale between requests).
-     * 
-     * @since 5.1.0.1
-     */
-    public static final String ENCODE_LOCALE_INTO_PATH = "tapestry.encode-locale-into-path";
-
-    /**
-     * If "true" then JavaScript files in a {@link JavaScriptStack} will be combined into a single virtual JavaScript
-     * file. Defaults to "true" in production mode.
-     * 
-     * @since 5.1.0.2
-     */
-    public static final String COMBINE_SCRIPTS = "tapestry.combine-scripts";
-
-    /**
-     * If "true" then Blackbird JavaScript console is enabled.
-     * 
-     * @since 5.2.0
-     */
-    public static final String BLACKBIRD_ENABLED = "tapestry.blackbird-enabled";
-
-    /**
-     * The default time interval that cookies created by Tapestry will be kept in the client web browser. The default is
-     * "7 d" (that is, seven days).
-     * 
-     * @since 5.2.0
-     */
-    public static final String COOKIE_MAX_AGE = "tapestry.default-cookie-max-age";
-
-    /**
-     * The logical name of the start page, the page that is rendered for the root URL.
-     * 
-     * @since 5.2.0
-     */
-    public static final String START_PAGE_NAME = "tapestry.start-page-name";
-
-    /**
-     * The default stylesheet automatically injected into every rendered HTML page.
-     * 
-     * @since 5.2.0
-     */
-    public static final String DEFAULT_STYLESHEET = "tapestry.default-stylesheet";
-
-    /**
-     * The number of pages in the page pool (for a given page name / locale combination) before which Tapestry will
-     * start to wait for existing pages to be made available.
-     * Under this limit of pages, Tapestry will simply create a new page instance if no existing instance is readily
-     * available.
-     * Once the soft limit is reached, Tapestry will wait a short period of time (the soft wait interval) to see if an
-     * existing page
-     * instance is made available. It will then create a new page instance (unless the hard limit has been reached).
-     * The default is 5 page instances. Remember that page pooling is done separately for each page (and localization of
-     * the page).
-     * 
-     * @since 5.2.0
-     */
-    public static final String PAGE_POOL_SOFT_LIMIT = "tapestry.page-pool.soft-limit";
-
-    /**
-     * The absolute maximum number of page instances (for a particular page name / locale combination) that Tapestry
-     * will create at any time.
-     * If this number is reached, then requests will fail because a page instance is not available ... this can happen
-     * as part of a denial of service attack.
-     * For this value to have any meaning, it should be lower than the number of threads that the servlet container is
-     * configured to use when processing requests.
-     * The default is 20 page instances.
-     * 
-     * @deprecated The hard limit will be removed in a later release of Tapestry, as the maximum number of instance
-     *             is easily controlled by limiting the number of request handling threads in the servlet container.
-     * @since 5.2.0
-     */
-    public static final String PAGE_POOL_HARD_LIMIT = "tapestry.page-pool.hard-limit";
-
-    /**
-     * The time interval that Tapestry will wait for a page instance to become available before deciding whether to
-     * create an entirely new page instance.
-     * The default is "10 ms".
-     * 
-     * @since 5.2.0
-     */
-    public static final String PAGE_POOL_SOFT_WAIT = "tapestry.page-pool.soft-wait";
-
-    /**
-     * The time interval that an instantiated page instance may be cached before being removed. As pages are returned to
-     * the pool, they are time stamped.
-     * Periodically (as per the file check interval), the pool is scanned for page instances that have not been used
-     * recently; those that are outside the
-     * active window are discarded. This is used to free up unnecessary page instances after a request surge. The
-     * default is "10 m" (10 minutes).
-     * 
-     * @since 5.2.0
-     */
-    public static final String PAGE_POOL_ACTIVE_WINDOW = "tapestry.page-pool.active-window";
-
-    /**
-     * The Asset path to the embedded copy of script.aculo.us packaged with Tapestry.
-     * 
-     * @since 5.2.0
-     */
-    public static final String SCRIPTACULOUS = "tapestry.scriptaculous";
-
-    /**
-     * The Asset path to the embedded datepicker.
-     * 
-     * @since 5.2.0
-     */
-    public static final String DATEPICKER = "tapestry.datepicker";
-
-    /**
-     * The Asset path to the embedded copy of blackbird packaged with Tapestry.
-     * 
-     * @since 5.2.0
-     */
-    public static final String BLACKBIRD = "tapestry.blackbird";
-
-    /**
-     * The Asset path of the default javascript (tapestry.js) automatically injected into every rendered HTML page.
-     * 
-     * @since 5.2.0
-     */
-    public static final String DEFAULT_JAVASCRIPT = "tapestry.default-javascript";
-
-    /**
-     * If "true", then JSON page initialization content is compressed; if "false"
-     * then extra white space is added (pretty printing). Defaults to "true" in production mode.
-     * 
-     * @since 5.2.0
-     */
-    public static final String COMPACT_JSON = "tapestry.compact-json";
-
-    /**
-     * If "true", then Tapestry 5.1 (and earlier) style page pooling will be used. The default is "false", to
-     * allow full use of page singleton. Enabling page pooling is only necessary if an application (or library)
-     * has created {@linkplain ComponentClassTransformWorker class transformations} that introduce new, mutable
-     * fields into component classes. That's a very rare thing (most created fields contain immutable data).
-     * 
-     * @deprecated To be removed, along with the remnants of page pooling, in Tapestry 5.3.
-     * @since 5.2.0
-     */
-    public static final String PAGE_POOL_ENABLED = "tapestry.page-pool-enabled";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryConstants.java
deleted file mode 100644
index 38e5994..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryConstants.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.internal.structure.PageResetListener;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-
-/**
- * Constants needed by end-user classes.
- * 
- * @since 5.2.0
- */
-public class TapestryConstants
-{
-
-    /**
-     * The extension used for Tapestry component template files, <em>T</em>apestry <em>M</em>arkup <em>L</em>anguage.
-     * Template files are well-formed XML files.
-     */
-    public static final String TEMPLATE_EXTENSION = "tml";
-
-    /**
-     * Name of query parameter that is placed on "loopback" links (page render links for the same
-     * page). This mostly includes the redirects sent after a component event request. Page render
-     * requests
-     * that do <em>not</em> have the LOOPBACK query parameter will trigger a {@linkplain PageResetListener reset
-     * notification} after the initialization event; the
-     * LOOPBACK
-     * prevents this reset notification.
-     * 
-     * @since 5.2.0
-     * @see ComponentEventLinkEncoder#createPageRenderLink(org.apache.tapestry5.services.PageRenderRequestParameters)
-     * @see ComponentEventLinkEncoder#decodePageRenderRequest(org.apache.tapestry5.services.Request)
-     * @see PageResetListener
-     */
-    public static final String PAGE_LOOPBACK_PARAMETER_NAME = "t:lb";
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryFilter.java
deleted file mode 100644
index 8fdfbc1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryFilter.java
+++ /dev/null
@@ -1,190 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.internal.ServletContextSymbolProvider;
-import org.apache.tapestry5.internal.TapestryAppInitializer;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.services.HttpServletRequestHandler;
-import org.apache.tapestry5.services.ServletApplicationInitializer;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * The TapestryFilter is responsible for intercepting all requests into the web application. It
- * identifies the requests
- * that are relevant to Tapestry, and lets the servlet container handle the rest. It is also
- * responsible for
- * initializing Tapestry.
- * <p/>
- * The application is primarily configured via context-level init parameters.
- * <p/>
- * <dl>
- * <dt>tapestry.app-package</dt>
- * <dd>The application package (used to search for pages, components, etc.)</dd>
- * </dl>
- * <p>
- * In addition, a JVM system property affects configuration: <code>tapestry.execution-mode</code>
- * (with default value "production"). This property is a comma-separated list of execution modes.
- * For each mode, an additional init parameter is checked for:
- * <code>tapestry.<em>mode</em>-modules</code>; this is a comma-separated list of module class names
- * to load. In this way, more precise control over the available modules can be obtained which is
- * often needed during testing.
- */
-public class TapestryFilter implements Filter
-{
-    private final Logger logger = LoggerFactory.getLogger(TapestryFilter.class);
-
-    private FilterConfig config;
-
-    private Registry registry;
-
-    private HttpServletRequestHandler handler;
-
-    /**
-     * Key under which that Tapestry IoC {@link org.apache.tapestry5.ioc.Registry} is stored in the
-     * ServletContext. This
-     * allows other code, beyond Tapestry, to obtain the Registry and, from it, any Tapestry
-     * services. Such code should
-     * be careful about invoking {@link org.apache.tapestry5.ioc.Registry#cleanupThread()}
-     * appropriately.
-     */
-    public static final String REGISTRY_CONTEXT_NAME = "org.apache.tapestry5.application-registry";
-
-    /**
-     * Initializes the filter using the {@link TapestryAppInitializer}. The application name is the
-     * capitalization of
-     * the filter name (as specified in web.xml).
-     */
-    public final void init(FilterConfig filterConfig) throws ServletException
-    {
-        config = filterConfig;
-
-        ServletContext context = config.getServletContext();
-
-        String filterName = config.getFilterName();
-
-        SymbolProvider provider = new ServletContextSymbolProvider(context);
-
-        String executionMode = System.getProperty("tapestry.execution-mode", "production");
-
-        TapestryAppInitializer appInitializer = new TapestryAppInitializer(logger, provider,
-                filterName, "servlet", executionMode);
-
-        appInitializer.addModules(provideExtraModuleDefs(context));
-
-        registry = appInitializer.createRegistry();
-
-        context.setAttribute(REGISTRY_CONTEXT_NAME, registry);
-
-        ServletApplicationInitializer ai = registry.getService("ServletApplicationInitializer",
-                ServletApplicationInitializer.class);
-
-        ai.initializeApplication(filterConfig.getServletContext());
-
-        registry.performRegistryStartup();
-
-        handler = registry.getService("HttpServletRequestHandler", HttpServletRequestHandler.class);
-
-        init(registry);
-
-        appInitializer.announceStartup();
-    }
-
-    protected final FilterConfig getFilterConfig()
-    {
-        return config;
-    }
-
-    /**
-     * Invoked from {@link #init(FilterConfig)} after the Registry has been created, to allow any
-     * additional
-     * initialization to occur. This implementation does nothing, and my be overriden in subclasses.
-     * 
-     * @param registry
-     *            from which services may be extracted
-     * @throws ServletException
-     */
-    protected void init(Registry registry) throws ServletException
-    {
-
-    }
-
-    /**
-     * Overridden in subclasses to provide additional module definitions beyond those normally
-     * located. This
-     * implementation returns an empty array.
-     */
-    protected ModuleDef[] provideExtraModuleDefs(ServletContext context)
-    {
-        return new ModuleDef[0];
-    }
-
-    public final void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
-            throws IOException, ServletException
-    {
-        try
-        {
-            boolean handled = handler.service((HttpServletRequest) request,
-                    (HttpServletResponse) response);
-
-            if (!handled)
-                chain.doFilter(request, response);
-        }
-        finally
-        {
-            registry.cleanupThread();
-        }
-    }
-
-    /**
-     * Shuts down and discards the registry. Invokes
-     * {@link #destroy(org.apache.tapestry5.ioc.Registry)} to allow
-     * subclasses to peform any shutdown logic, then shuts down the registry, and removes it from
-     * the ServletContext.
-     */
-    public final void destroy()
-    {
-        destroy(registry);
-
-        registry.shutdown();
-
-        config.getServletContext().removeAttribute(REGISTRY_CONTEXT_NAME);
-
-        registry = null;
-        config = null;
-        handler = null;
-    }
-
-    /**
-     * Invoked from {@link #destroy()} to allow subclasses to add additional shutdown logic to the
-     * filter. The Registry
-     * will be shutdown after this call. This implementation does nothing, and may be overridden in
-     * subclasses.
-     * 
-     * @param registry
-     */
-    protected void destroy(Registry registry)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java
deleted file mode 100644
index 9c4b177..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TapestryMarkers.java
+++ /dev/null
@@ -1,65 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.slf4j.Marker;
-import org.slf4j.MarkerFactory;
-
-import java.util.Arrays;
-
-/**
- * A set of markers used internally by Tapestry when logging in code related to paqes and components. Most logging
- * toolkits, including Log4J, do not incorporate markers, but  <a href="http://logback.qos.ch/">LOGBack</a> does.
- */
-public class TapestryMarkers
-{
-    /**
-     * A root marker for all things Tapestry related. The remaining markers are children of the TAPESTRY marker.
-     */
-    public static final Marker TAPESTRY = MarkerFactory.getMarker("TAPESTRY");
-
-    /**
-     * Logs the final version of the class transformation. This is useful when debugging {@link
-     * org.apache.tapestry5.services.ComponentClassTransformWorker}s, as it shows exactly what transformation operations
-     * occured, at the Java code level.
-     */
-    public static final Marker CLASS_TRANSFORMATION = MarkerFactory.getMarker("CLASS_TRANSFORMATION");
-
-    /**
-     * Marker for a debug log that occurs just before invocation of a event handler method.
-     */
-    public static final Marker EVENT_HANDLER_METHOD = MarkerFactory.getMarker("EVENT_HANDLER_METHOD");
-
-    /**
-     * Marker for logging related to component event dispatch.
-     */
-    public static final Marker EVENT_DISPATCH = MarkerFactory.getMarker("EVENT_DISPATCH");
-
-    /**
-     * Marker for logging, at trace level verbose details about each individual {@link
-     * org.apache.tapestry5.runtime.RenderCommand} involved in rendering the page, as well as a final (debug level)
-     * summary of command count and elapsed time.
-     */
-
-    public static final Marker RENDER_COMMANDS = MarkerFactory.getMarker("RENDER_COMMANDS");
-
-    static
-    {
-        for (Marker child : Arrays.asList(CLASS_TRANSFORMATION, EVENT_HANDLER_METHOD, EVENT_DISPATCH, RENDER_COMMANDS))
-        {
-            TAPESTRY.add(child);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TrackableComponentEventCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TrackableComponentEventCallback.java
deleted file mode 100644
index 42bc7d0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/TrackableComponentEventCallback.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.Traditional;
-
-/**
- * Extends {@link ComponentEventCallback} with a way to determine if the underlying event has been aborted
- * due to a some event returning an acceptable, non-null value. The standard implementation of this
- * is a wrapper around either the {@linkplain Traditional traditional} or {@linkplain Ajax} versions
- * of the {@link ComponentEventResultProcessor} service, i.e., they allow for a navigational result.
- * <p>
- * Instances of this are made available via the {@link Environmental} annotation.
- * 
- * @since 5.2.0
- */
-public interface TrackableComponentEventCallback<T> extends ComponentEventCallback<T>
-{
-    /**
-     * Returns true if a return value from an event handler method was processed.
-     */
-    boolean isAborted();
-
-    /**
-     * If processing a return value threw an IOException, invoking this method will rethrow it.
-     */
-    void rethrow() throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Translator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Translator.java
deleted file mode 100644
index baea003..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Translator.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Translates between client-side and server-side values. Client-side values are always strings.
- *
- * @param <T>
- * @see org.apache.tapestry5.services.TranslatorSource
- * @see org.apache.tapestry5.FieldValidationSupport
- * @see org.apache.tapestry5.FieldTranslator
- */
-public interface Translator<T>
-{
-    /**
-     * Returns a unique name for the translator. This is used to identify the translator by name, but is also used when
-     * locating override messages for the translator.
-     *
-     * @return unique name for the translator
-     */
-    String getName();
-
-    /**
-     * Converts a server-side value to a client-side string. This allows for formatting of the value in a way
-     * appropriate to the end user. The output client value should be parsable by {@link #parseClient(Field, String,
-     * String)}.
-     *
-     * @param value the server side value (which will not be null)
-     * @return client-side value to present to the user
-     */
-    String toClient(T value);
-
-    /**
-     * Returns the type of  the server-side value.
-     *
-     * @return a type
-     */
-    Class<T> getType();
-
-    /**
-     * Returns the message key, within the validation messages, normally used by this validator. This is used to provide
-     * the formatted message to {@link #parseClient(Field, String, String)} or {@link #render(Field, String,
-     * MarkupWriter, org.apache.tapestry5.services.FormSupport)}.
-     *
-     * @return a message key
-     * @see org.apache.tapestry5.services.ValidationMessagesSource
-     */
-    String getMessageKey();
-
-    /**
-     * Converts a submitted request value into an appropriate server side value.
-     *
-     * @param field       for which a value is being parsed
-     * @param clientValue to convert to a server value; this will not be null, but may be blank
-     * @param message     formatted validation message, either from validation messages, or from an override
-     * @return equivalent server-side value (possibly null)
-     * @throws ValidationException if the value can not be parsed
-     */
-    T parseClient(Field field, String clientValue, String message) throws ValidationException;
-
-    /**
-     * Hook used by components to allow the validator to contribute additional attributes or (more often) client-side
-     * JavaScript (via the {@link org.apache.tapestry5.services.FormSupport#addValidation(Field, String, String,
-     * Object)}).
-     *
-     * @param field       the field which is currently being rendered
-     * @param message     formatted validation message, either from validation messages, or from an override
-     * @param writer      markup writer, allowing additional attributes to be written into the active element
-     * @param formSupport used to add JavaScript
-     */
-    void render(Field field, String message, MarkupWriter writer,
-                FormSupport formSupport);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationDecorator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationDecorator.java
deleted file mode 100644
index e68824d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationDecorator.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.dom.Element;
-
-/**
- * An object responsible for performing decorations around fields and field labels. The decorator is notified at
- * intervals by the fields and labels.
- * <p/>
- * In most western languages (written left to right) the label will render before the field, so the properties of the
- * Field may not be set yet (or may reflect a previous looping's rendering). It may be necessary to {@linkplain
- * org.apache.tapestry5.services.Heartbeat#defer(Runnable)} defer any rendering} until after the Label and the Field have
- * both had their change to initialize and render.
- */
-public interface ValidationDecorator
-{
-    /**
-     * Invoked by a {@link org.apache.tapestry5.corelib.components.Label} before rendering itself.
-     *
-     * @param field for this label
-     */
-    void beforeLabel(Field field);
-
-    /**
-     * Invoked after the label has rendered its tag, but before it has rendered content inside the tag, to allow the
-     * decorator to write additional attributes.
-     *
-     * @param field        the field corresponding to the label
-     * @param labelElement the element for this label
-     */
-    void insideLabel(Field field, Element labelElement);
-
-
-    /**
-     * Invoked by {@link org.apache.tapestry5.corelib.components.Label} after rendering itself.
-     *
-     * @param field
-     */
-    void afterLabel(Field field);
-
-    /**
-     * Renders immediately before the field itself. The field will typically render a single element, though a complex
-     * field may render multiple elements or even some JavaScript.
-     *
-     * @param field
-     */
-    void beforeField(Field field);
-
-    /**
-     * Invoked at a point where the decorator may write additional attributes into the field. Generally speaking, you
-     * will want to {@linkplain ComponentResources#renderInformalParameters(MarkupWriter) render informal parameters}
-     * <strong>before</strong> invoking this method.
-     *
-     * @param field
-     */
-    void insideField(Field field);
-
-    /**
-     * Invoked after the field has completed rendering itself.
-     */
-    void afterField(Field field);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationException.java
deleted file mode 100644
index 2cea335..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationException.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * An exception associated with parsing client input, or validating the input against a constraint.
- */
-public class ValidationException extends Exception
-{
-    private static final long serialVersionUID = -6195763584437441540L;
-
-    public ValidationException(String message)
-    {
-        super(message);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTracker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTracker.java
deleted file mode 100644
index 6cdf0da..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTracker.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.corelib.components.Loop;
-
-import java.util.List;
-
-/**
- * Tracks information related to user input validations. This information is: <ul> <li>The input values provided by the
- * user. <li>Any validation exceptions associated with input fields. </ul>
- * <p/>
- * The tracker must differentiate between components (which will implement the {@link Field} interfaces) and fields. It
- * is a one to many relationship, because each field may be called upon to render itself multiple times within a
- * request, because of {@link Loop} or other similar components.
- * <p/>
- * Internally, the tracker indexes its information in terms of the {@linkplain Field#getControlName() control name} for
- * each rendering of the component (the mechanics of Tapestry ensures that this is unique within the form).
- * <p/>
- * Validation trackers must be serializable, as they will almost always be stored into the HttpSession.
- * <p/>
- * Trackers are used by only a single form within a single page; they are not threadsafe.
- */
-public interface ValidationTracker
-{
-    /**
-     * Called by a field to record the exact input from the user, prior to any validation. If the form is redisplayed
-     * (to present errors), the input value will be sent back to the user for correction.
-     *
-     * @param field the field recording the input
-     * @param input the value obtained from the forms submission
-     */
-    void recordInput(Field field, String input);
-
-    /**
-     * Returns a previously recorded input value.
-     */
-    String getInput(Field field);
-
-    /**
-     * Records an error message for a field. The error message is primarily derived from a {@link ValidationException}
-     * thrown by a {@link Validator} or {@link Translator}.
-     *
-     * @param field
-     * @param errorMessage
-     */
-    void recordError(Field field, String errorMessage);
-
-    /**
-     * Records an error message that is not associated with any specific field. This often reflects some amount of
-     * cross-form validation.
-     *
-     * @param errorMessage
-     */
-    void recordError(String errorMessage);
-
-    /**
-     * For a given field, determines if the field is "in error", meaning that an error message has been previously
-     * recorded for the field.
-     *
-     * @param field
-     * @return true if an error message is present
-     */
-    boolean inError(Field field);
-
-    /**
-     * Returns a previously recorded error message.
-     */
-    String getError(Field field);
-
-    /**
-     * Returns true if any field contains an error.
-     */
-    boolean getHasErrors();
-
-    /**
-     * Returns a list of all error messages. The messages are stored in the order that they were added to the tracker,
-     * except that unassociated errors (unassociated with any field) are listed first.
-     */
-    List<String> getErrors();
-
-    /**
-     * Clears all information stored by the tracker.
-     */
-    void clear();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java
deleted file mode 100644
index 73142f6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerImpl.java
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.io.Serializable;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Standard implementation of {@link ValidationTracker}. Works pretty hard to ensure a minimum
- * amount of data is stored
- * in the HttpSession.
- */
-public final class ValidationTrackerImpl extends BaseOptimizedSessionPersistedObject implements ValidationTracker, Serializable
-{
-    private static final long serialVersionUID = -8029192726659275677L;
-
-    private static class FieldTracker implements Serializable
-    {
-        private static final long serialVersionUID = -3653306147088451811L;
-
-        private final String fieldName;
-
-        private String input;
-
-        private String errorMessage;
-
-        FieldTracker(String fieldName)
-        {
-            this.fieldName = fieldName;
-        }
-    }
-
-    private List<String> extraErrors;
-
-    private List<FieldTracker> fieldTrackers;
-
-    // Rebuilt on-demand
-
-    private transient Map<String, FieldTracker> fieldToTracker;
-
-    private void refreshFieldToTracker()
-    {
-        if (fieldToTracker != null)
-            return;
-
-        if (fieldTrackers == null)
-            return;
-
-        fieldToTracker = CollectionFactory.newMap();
-
-        for (FieldTracker ft : fieldTrackers)
-            fieldToTracker.put(ft.fieldName, ft);
-    }
-
-    private FieldTracker get(Field field)
-    {
-        String key = field.getControlName();
-
-        refreshFieldToTracker();
-
-        FieldTracker result = InternalUtils.get(fieldToTracker, key);
-
-        if (result == null)
-            result = new FieldTracker(key);
-
-        return result;
-    }
-
-    private void store(FieldTracker fieldTracker)
-    {
-        markDirty();
-
-        if (fieldTrackers == null)
-            fieldTrackers = CollectionFactory.newList();
-
-        refreshFieldToTracker();
-
-        String key = fieldTracker.fieldName;
-
-        if (!fieldToTracker.containsKey(key))
-        {
-            fieldTrackers.add(fieldTracker);
-            fieldToTracker.put(key, fieldTracker);
-        }
-    }
-
-    public void clear()
-    {
-        markDirty();
-
-        extraErrors = null;
-        fieldTrackers = null;
-        fieldToTracker = null;
-    }
-
-    public String getError(Field field)
-    {
-        return get(field).errorMessage;
-    }
-
-    public List<String> getErrors()
-    {
-        List<String> result = CollectionFactory.newList();
-
-        if (extraErrors != null)
-            result.addAll(extraErrors);
-
-        if (fieldTrackers != null)
-        {
-            for (FieldTracker ft : fieldTrackers)
-            {
-                String errorMessage = ft.errorMessage;
-
-                if (errorMessage != null)
-                    result.add(errorMessage);
-            }
-        }
-
-        return result;
-    }
-
-    public boolean getHasErrors()
-    {
-        return !getErrors().isEmpty();
-    }
-
-    public String getInput(Field field)
-    {
-        return get(field).input;
-    }
-
-    public boolean inError(Field field)
-    {
-        return InternalUtils.isNonBlank(get(field).errorMessage);
-    }
-
-    public void recordError(Field field, String errorMessage)
-    {
-        FieldTracker ft = get(field);
-
-        ft.errorMessage = errorMessage;
-
-        store(ft);
-    }
-
-    public void recordError(String errorMessage)
-    {
-        markDirty();
-
-        if (extraErrors == null)
-            extraErrors = CollectionFactory.newList();
-
-        extraErrors.add(errorMessage);
-    }
-
-    public void recordInput(Field field, String input)
-    {
-        FieldTracker ft = get(field);
-
-        ft.input = input;
-
-        store(ft);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerWrapper.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerWrapper.java
deleted file mode 100644
index e00b8fa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValidationTrackerWrapper.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.util.List;
-
-/**
- * Wrapper around a {@link ValidationTracker} that delegates all methods to the wrapped instance.
- * Subclasses will often override specific methods.
- * 
- * @since 5.2.0
- */
-public class ValidationTrackerWrapper implements ValidationTracker
-{
-    private final ValidationTracker delegate;
-
-    public ValidationTrackerWrapper(ValidationTracker delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    public void clear()
-    {
-        delegate.clear();
-    }
-
-    public String getError(Field field)
-    {
-        return delegate.getError(field);
-    }
-
-    public List<String> getErrors()
-    {
-        return delegate.getErrors();
-    }
-
-    public boolean getHasErrors()
-    {
-        return delegate.getHasErrors();
-    }
-
-    public String getInput(Field field)
-    {
-        return delegate.getInput(field);
-    }
-
-    public boolean inError(Field field)
-    {
-        return delegate.inError(field);
-    }
-
-    public void recordError(Field field, String errorMessage)
-    {
-        delegate.recordError(field, errorMessage);
-    }
-
-    public void recordError(String errorMessage)
-    {
-        delegate.recordError(errorMessage);
-    }
-
-    public void recordInput(Field field, String input)
-    {
-        delegate.recordInput(field, input);
-    }
-
-    /** Returns the instance to which methods are delegated. */
-    protected ValidationTracker getDelegate()
-    {
-        return delegate;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java
deleted file mode 100644
index e52ad80..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/Validator.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Used by a {@link Field} to enforce a <strong>constraint</strong> related to a form submission. Validators themselves
- * are stateless singletons.
- * <p/>
- * Validators are usually encapsulated inside a {@link FieldValidator}.
- *
- * @see FieldValidationSupport
- * @see org.apache.tapestry5.services.FieldValidatorDefaultSource
- */
-public interface Validator<C, T>
-{
-    /**
-     * Returns the type of constraint value used with this validator. Constraint values are used to parameterize a
-     * validator, for example a "maxLength" validator will have a constraint value of type int (the maximum length
-     * allowed). For constraints that do not have a constraint value, this method returns null.
-     */
-    Class<C> getConstraintType();
-
-    /**
-     * Returns the value type associated with this validator. {@link #validate(Field, Object, MessageFormatter, Object)}
-     * will only be invoked when the value is assignable to the validator's value type.
-     */
-    Class<T> getValueType();
-
-    /**
-     * Returns the message key, within the validation messages, normally used by this validator. This is used to provide
-     * the {@link MessageFormatter} passed to {@link #validate(Field, Object, MessageFormatter, Object)} (unless
-     * overridden).
-     *
-     * @return a message key
-     * @see org.apache.tapestry5.services.ValidationMessagesSource
-     */
-    String getMessageKey();
-
-    /**
-     * Invoked after the client-submitted value has been {@link org.apache.tapestry5.Translator translated} to check
-     * that the value conforms to expectations (often, in terms of minimum or maximum value). If and only if the value
-     * is approved by all Validators is the value applied by the field.
-     *
-     * @param field           the field for which a client submitted value is being validated
-     * @param constraintValue the value used to constrain
-     * @param formatter       Validation messages, in the appropriate locale
-     * @param value           the translated value supplied by the user
-     * @throws ValidationException if the value violates the constraint
-     */
-    void validate(Field field, C constraintValue, MessageFormatter formatter, T value) throws ValidationException;
-
-    /**
-     * Returns true if the validator should be invoked for null or blank (empty string) values. This is generally false,
-     * but is true for validators that enforce that a non-blank value is required.  This is the basis of the {@link
-     * org.apache.tapestry5.Field#isRequired()} property.
-     */
-    boolean isRequired();
-
-    /**
-     * Hook used by components to allow the validator to contribute additional attributes or (more often) client-side
-     * JavaScript (via the {@link FormSupport#addValidation(Field, String, String, Object)}).
-     *
-     * @param field           the field which is currently being rendered
-     * @param constraintValue the value used to constrain input
-     * @param formatter       validation message, in the appropriate locale
-     * @param writer          markup writer, allowing additional attributes to be written into the active element
-     * @param formSupport     used to add JavaScript
-     */
-    void render(Field field, C constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                FormSupport formSupport);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java
deleted file mode 100644
index 702dc6c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ValueEncoder.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-/**
- * Used to convert server side values to client-side strings.  This is used when generating a {@link
- * org.apache.tapestry5.EventContext} as part of a URL, or when components (such as {@link
- * org.apache.tapestry5.corelib.components.Select}) generated other client-side strings.
- * <p/>
- * Often a custom implementation is needed for entity type objects, where the {@link #toClient(Object)} method extracts
- * a primary key, and the {@link #toValue(String)} re-acquires the corresponding entity object.
- *
- * @see SelectModel
- * @see org.apache.tapestry5.services.ValueEncoderSource
- * @see PrimaryKeyEncoder
- */
-public interface ValueEncoder<V>
-{
-    /**
-     * Converts a value into a client-side representation. The value should be parseable by {@link #toValue(String)}. In
-     * some cases, what is returned is an identifier used to locate the true object, rather than a string representation
-     * of the value itself.
-     *
-     * @param value to be encoded
-     * @return a string representation of the value, or the value's identity
-     */
-    String toClient(V value);
-
-    /**
-     * Converts a client-side representation, provided by {@link #toClient(Object)}, back into a server-side value.
-     *
-     * @param clientValue string representation of the value's identity
-     * @return the corresponding entity, or null if not found
-     */
-    V toValue(String clientValue);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/VersionUtils.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/VersionUtils.java
deleted file mode 100644
index a299d06..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/VersionUtils.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Properties;
-
-/**
- * Utility methods related to managing framework version numbers.
- */
-public class VersionUtils
-{
-
-    /**
-     * Reads a version number from a properties file on the classpath.  These files are generally created by Maven.  For
-     * example, tapestry-core's properties file is <code>META-INF/maven/org.apache.tapestry/tapestry-core/pom.properties</code>.
-     * The Maven generated properties files include the artifact id and group id as well as the version.
-     * <p/>
-     * The resource is located using the Thread's context class loader.
-     *
-     * @param resourcePath the complete path to the resource, including a leading slash.
-     * @return the version number read from the properties file, or "UNKNOWN" if the version number is not present or
-     *         the file can not be opened
-     */
-    public static String readVersionNumber(String resourcePath)
-    {
-        String result = "UNKNOWN";
-
-        InputStream stream = Thread.currentThread().getContextClassLoader().getResourceAsStream(
-                resourcePath);
-
-
-        if (stream != null)
-        {
-            Properties properties = new Properties();
-
-
-            try
-            {
-                stream = new BufferedInputStream(stream);
-
-                properties.load(stream);
-            }
-            catch (IOException ex)
-            {
-                // Just ignore it.
-            }
-
-            String version = properties.getProperty("version");
-
-            // Since the file, if it exists, is created by Maven and will have the key, I can't see
-            // how version would EVER be null, unless there's a problem reading the properties.
-
-            if (version != null) result = version;
-        }
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java
deleted file mode 100644
index a19e139..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ajax/MultiZoneUpdate.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ajax;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ClientBodyElement;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A mapping from <em>client-side zone ids</em> to objects that can render the content for that zone on the client. An
- * event handler method may instantiate an instance and chain together a series of calls to {@link #add(String, Object)}
- * , and return the final result.
- * <p/>
- * Remember that client-side element ids may not match server-side component ids, especially once Ajax is added to the
- * mix. Because of this, it is highly recommended that the client-side logic gather the actual component ids and include
- * those in the Ajax request, to ensure that the server generates updates that the client can process. Better yet, use
- * the Zone's id parameter to lock down the zone's id to a known, predictable value.
- * 
- * @since 5.1.0.1
- */
-public class MultiZoneUpdate
-{
-    private final MultiZoneUpdate parent;
-
-    private final String zoneId;
-
-    private final Object renderer;
-
-    public MultiZoneUpdate(String zoneId, Object renderer)
-    {
-        this(zoneId, renderer, null);
-    }
-
-    /** Alternate constructor that takes a ClientBodyElement (typically, a {@link Zone}). */
-    public MultiZoneUpdate(ClientBodyElement zone)
-    {
-        this(zone.getClientId(), zone.getBody());
-    }
-
-    private MultiZoneUpdate(String zoneId, Object renderer, MultiZoneUpdate parent)
-    {
-        assert renderer != null;
-        assert InternalUtils.isNonBlank(zoneId);
-
-        this.zoneId = zoneId;
-        this.renderer = renderer;
-        this.parent = parent;
-    }
-
-    /**
-     * Adds the zone (represented by the {@link ClientBodyElement}) to the update.
-     * 
-     * @since 5.2.3
-     */
-    public MultiZoneUpdate add(ClientBodyElement zone)
-    {
-        assert zone != null;
-
-        return add(zone.getClientId(), zone.getBody());
-    }
-
-    /**
-     * Returns a <strong>new</strong> MultiZoneUpdate reflecting the mapping from the indicated zone to an object that
-     * will render the content for that zone.
-     * 
-     * @param zoneId
-     *            client id of zone to update
-     * @param renderer
-     *            object that can provide the content for the zone
-     * @return new MultiZoneUpdate
-     */
-    public MultiZoneUpdate add(String zoneId, Object renderer)
-    {
-        return new MultiZoneUpdate(zoneId, renderer, this);
-    }
-
-    /**
-     * Returns a mapping from client zone id to renderer object for that zone.
-     * 
-     * @return string to renderer map
-     */
-    public Map<String, Object> getZoneToRenderMap()
-    {
-        Map<String, Object> result = CollectionFactory.newMap();
-
-        MultiZoneUpdate cursor = this;
-
-        while (cursor != null)
-        {
-            result.put(cursor.zoneId, cursor.renderer);
-
-            cursor = cursor.parent;
-        }
-
-        return result;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("MultiZoneUpdate[%s]", getZoneToRenderMap());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ajax/package.html b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ajax/package.html
deleted file mode 100644
index 6f3a39a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/ajax/package.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<body>
-Extra utility classes used to support Ajax interactions between the client and the browser.
-</body>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ActivationRequestParameter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ActivationRequestParameter.java
deleted file mode 100644
index daf3725..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ActivationRequestParameter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.services.ValueEncoderSource;
-
-/**
- * Marks a field of a page (not a component) as persistent within the URL, as with a page activation context. The field
- * is mapped
- * to a query parameter. When component event or page render links are generated for the page,
- * additional values will be added to the {@link Link} (via the {@link EventConstants#DECORATE_COMPONENT_EVENT_LINK} or
- * {@link EventConstants#DECORATE_PAGE_RENDER_LINK} events).
- * <p>
- * The field may be of any type; a {@link ValueEncoder} (from the {@link ValueEncoderSource}) will be used to convert
- * between client-side and server-side representations. Null values are not added as query parameters (just non-null).
- * <p>
- * When a page is activated, the mapped fields will receive their values before an {@linkplain EventConstants#ACTIVATE
- * activate} event handler method is invoked.
- * <p>
- * This annotation is an alternative to {@link Persist}.
- * <p>
- * Fields annotated with ActivationRequestParameter are <em>not</em> considered persistent (its a process parallel to the one
- * related to the {@link Persist} annotation). Invoking {@link ComponentResources#discardPersistentFieldChanges()} will
- * <em>not</em> affect annotated fields, only assigning them back to null will.
- * 
- * @see RequestParameter
- */
-@Target(
-{ ElementType.FIELD })
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ PAGE })
-public @interface ActivationRequestParameter
-{
-    /** The name of the query parameter, which defaults to the name of the field. */
-    String value() default "";
-
-    // TODO: Attributes to limit it to just render links, or just component event links?
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRender.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRender.java
deleted file mode 100644
index fbc7831..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRender.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for methods associated with the AfterRender phase. This corresponds closely to {@link
- * org.apache.tapestry5.annotations.BeginRender}, but occurs after the template and body of the component have been
- * rendered. Often, this is used to render a close tag. Return void or true (the default) to advance to the {@link
- * org.apache.tapestry5.annotations.CleanupRender} phase. Return false to return to the {@link
- * org.apache.tapestry5.annotations.BeginRender} phase.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface AfterRender
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRenderBody.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRenderBody.java
deleted file mode 100644
index a4bcdac..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRenderBody.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Corresponds to {@link BeforeRenderBody}, allowing additional markup after rendering the body of a component, but
- * before rendering the rest of the component's template. Return true (the default) to progress to the {@link
- * AfterRenderTemplate} or {@link AfterRender} phase (depending on whether the component does or does not have a
- * template). Return false to return to the {@link BeforeRenderBody} phase.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface AfterRenderBody
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRenderTemplate.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRenderTemplate.java
deleted file mode 100644
index e78e539..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/AfterRenderTemplate.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Corresponds to {@link BeforeRenderTemplate}, allowing additional markup after rendering the component's template.
- * Returning true (the default), will progress to the {@link AfterRender} phase. Return false to return to the {@link
- * BeforeRenderTemplate} phase.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface AfterRenderTemplate
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java
deleted file mode 100644
index 33fba14..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ApplicationState.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * Marker annotation for a field that is an <em>application state object</em> as controlled by the {@link
- * org.apache.tapestry5.services.ApplicationStateManager}.  <em>Application</em> is something of a misnomer, as it
- * implies that the object is stored as global, application-wide state (i.e., in the {@link
- * javax.servlet.ServletContext}). In fact, the built-in strategies for ASO management are <em>very</em> user specific,
- * ultimately storing data in the {@link org.apache.tapestry5.services.Session}. Because of the confusion this naming
- * causes, this annotation has been deprecated, and the new {@link org.apache.tapestry5.annotations.SessionState}
- * annotation should be used instead.
- * <p/>
- * An ASO field may have a companion field, of type boolean, used to see if the ASO has been created yet. If another
- * field exists with the same name, suffixed with "Exists" (i.e., "aso" for the ASO field, and "asoExists" for the
- * companion field) and the type of that field is boolean, then access to the field will determine whether the ASO has
- * already been created. This is necessary because even a null check ("aso != null") may force the ASO to be created.
- * Instead, check the companion boolean field ("asoExists").
- *
- * @deprecated Use {@link org.apache.tapestry5.annotations.SessionState} instead
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT, MIXIN, PAGE})
-public @interface ApplicationState
-{
-    /**
-     * If true (the default), then referencing an field marked with the annotation will create the SSO.  If false, then
-     * accessing the field will not create the SSO, it will only allow access to it if it already exists.
-     */
-    boolean create() default true;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeforeRenderBody.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeforeRenderBody.java
deleted file mode 100644
index 11aa8eb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeforeRenderBody.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marks methods to be invoked when the component rendering state machine hits the point in the component's template
- * where the body element occurs. Such methods may optionally take a {@link org.apache.tapestry5.MarkupWriter}
- * parameter, and may return void or boolean.
- * <p/>
- * Returning true (or void) will queue up the component's body for rendering.
- * <p/>
- * Returning false will skip the component's body, but continue rendering the template. The {@link
- * org.apache.tapestry5.annotations.AfterRenderBody} phase will still execute after the template finishes rendering.
- * <p/>
- * This phase is skipped for components which do not have a body.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface BeforeRenderBody
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeforeRenderTemplate.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeforeRenderTemplate.java
deleted file mode 100644
index 3d4275d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeforeRenderTemplate.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Associated with components that have a template, this phase is invoked to allow the component to decorate its
- * template with additional markup. Returning true will cause the component's template to render (possibly including
- * additional components, or this component's body), and eventually reach the {@link AfterRenderTemplate} phase. Return
- * false to skip the template and body, and jump directly to the {@link AfterRenderTemplate} phase.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface BeforeRenderTemplate
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeginRender.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeginRender.java
deleted file mode 100644
index 3449a79..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BeginRender.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for methods that should be executed at the start of rendering the component. This usually includes
- * rendering of the component's start tag.
- * <p/>
- * Such methods may optionally take a {@link org.apache.tapestry5.MarkupWriter} parameter, and may return void or
- * boolean. Returning true or void will allow the component to advance into the render template / render body phase. If
- * a body is present, the {@link org.apache.tapestry5.annotations.BeforeRenderBody} phase will execute. If a component
- * has a template, the {@link BeforeRenderTemplate} phase will execute (and the render body will only occur if the
- * template directs so).
- * <p/>
- * Either way, the {@link org.apache.tapestry5.annotations.AfterRender} phase will execute after the template and/or
- * body have rendered. A component with a body but without a template will still see the {@link
- * org.apache.tapestry5.annotations.BeforeRenderBody} phase execute.
- * <p/>
- * Returning false will skip rendering of the template and/or body, and jump directly to the {@link AfterRender} phase.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface BeginRender
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BindParameter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BindParameter.java
deleted file mode 100644
index 4f6445b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/BindParameter.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2009 , 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Target;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-
-import org.apache.tapestry5.internal.transform.BindParameterWorker;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Designates a field in a mixin which is bound to the parameter of the containing
- * component corresponding to the value of the annotation. If no value is specified,
- * the bound parameter name is assumed to match the field name of the mixin.
- * For example, a mixin intended to work with form fields would define a field named
- * "value", marked by this annotation. The user-variable bound to the component's value
- * parameter would ultimately be bound in a chain:
- * uservariable <=> mixin.value <=> component.value.
- * Changes to any one value in the chain will be propagated accordingly.
- * 
- * @since 5.2.0
- * @see BindParameterWorker
- */
-@Target(ElementType.FIELD)
-@Retention(RetentionPolicy.RUNTIME)
-@UseWith(MIXIN)
-public @interface BindParameter
-{
-
-    /**
-     * @return the name of the mixin bound-parameter, exactly as for the Parameter annotation.
-     */
-    String name() default "";
-
-    /**
-     * @return the name(s) of the parent parameter to bind. Defaults to the name of the mixin field.
-     *         If more than one
-     *         name is specified, the first name matching a declared parameter of the core component
-     *         will be used.
-     */
-    String[] value() default
-    { "" };
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Cached.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Cached.java
deleted file mode 100644
index 047a06e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Cached.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.*;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Indicates that a method should only be evaluated once and the result cached. All further calls to the method will
- * return the cached result. Note that this annotation is inheritence-safe; if a subclass calls a superclass method that
- * has \@Cached then the value the subclass method gets is the cached value.
- * <p/>
- * The watch parameter can be passed a binding expression which will be evaluated each time the method is called. The
- * method will then only be executed the first time it is called and after that only when the value of the binding
- * changes. This can be used, for instance, to have the method only evaluated once per iteration of a loop by setting
- * watch to the value or index of the loop.
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface Cached
-{
-    /**
-     * The optional binding to watch (default binding prefix is "prop").
-     */
-    String watch() default "";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/CleanupRender.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/CleanupRender.java
deleted file mode 100644
index 5299b58..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/CleanupRender.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for component methods associated with the terminal phase for the component rendering state machine.
- * Methods may optionally take a {@link org.apache.tapestry5.MarkupWriter} annotation. Generally, methods marked with
- * this annotation are used to perform post-render cleanup. In addition, a method may return false to return to the
- * {@link org.apache.tapestry5.annotations.SetupRender} phase. Returning void or true (the default), is the normal
- * course.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface CleanupRender
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Component.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Component.java
deleted file mode 100644
index 34ef6dd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Component.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to define an <em>embedded component</em> within another component.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,PAGE})
-public @interface Component
-{
-
-    /**
-     * The id of the component. When left blank (the default), the component id is determined from the field name.
-     */
-    String id() default "";
-
-    /**
-     * The component type. When this is left unspecified, then the annotated field's type is used directly as the
-     * component type.
-     */
-    String type() default "";
-
-    /**
-     * Parameter bindings for the component. Each value in the array is of the form "name=value". The value is a binding
-     * expression, with a default binding prefix of "prop:".
-     */
-    String[] parameters() default { };
-
-    /**
-     * If true, then the component will inherit all informal parameters from its parent component. The default is
-     * false.
-     */
-    boolean inheritInformalParameters() default false;
-
-    /**
-     * A comma-separated list of parameters of the component that should be published as parameters of the containing
-     * component.   Binding the parameter of the outer component will bind the inner component's parameter, as with the
-     * "inhert:" binding prefix.
-     *
-     * @since 5.1.0.0
-     */
-    String publishParameters() default "";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ContentType.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ContentType.java
deleted file mode 100644
index 179fa22..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ContentType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.*;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * An annotation on a page component used to identify the content type the page returns. An alternative to the {@link
- * org.apache.tapestry5.annotations.Meta} annotation with the {@link org.apache.tapestry5.MetaDataConstants#RESPONSE_CONTENT_TYPE}
- * key.
- */
-@Target({ElementType.TYPE})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(PAGE)
-public @interface ContentType
-{
-    /**
-     * The content type for the page.  Typically, something like "text/html".
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/DiscardAfter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/DiscardAfter.java
deleted file mode 100644
index b231798..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/DiscardAfter.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marks a method of a page or a component to discard all persistent field changes. The changes are
- * eliminated from persistent storage after the marked method is invoked. Any exception (runtime or checked) 
- * thrown by annotated method will cause persistent fields to keep their values.
- * 
- * @see org.apache.tapestry5.ComponentResources#discardPersistentFieldChanges()
- * @since 5.2.0
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface DiscardAfter
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Environmental.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Environmental.java
deleted file mode 100644
index 621259f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Environmental.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Defines a field of a component class that is replaced at runtime with a read-only value obtained from the
- * {@link org.apache.tapestry5.services.Environment} service.
- * <p>
- * Most commonly, the field will be of type {@link JavaScriptSupport}, {@link org.apache.tapestry5.services.Heartbeat}
- * or {@link org.apache.tapestry5.services.FormSupport}, though many other options are possible.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface Environmental
-{
-    /**
-     * The value determines if the environmental service to be injected is required or not. In most cases, it is, so the
-     * default is true.
-     */
-    boolean value() default true;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Events.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Events.java
deleted file mode 100644
index 84ef0c6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Events.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.*;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Annotation applied to components to document what events a component may trigger. This is primarily used when
- * generating component reference documentation. It is expressly <em>not</em> checked or used at runtime.
- *
- * @since 5.1.0.4
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.SOURCE)
-@Documented
-@UseWith({COMPONENT, MIXIN})
-public @interface Events
-{
-    /**
-     * A number of strings that define the events; each string is an event name optionally followed by whitespace and
-     * documentation about when the event is triggered.
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/HeartbeatDeferred.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/HeartbeatDeferred.java
deleted file mode 100644
index 9bbbf05..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/HeartbeatDeferred.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.internal.transform.HeartbeatDeferredWorker;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.services.Heartbeat;
-
-/**
- * Marks a component method as deferred until the end of the {@link Heartbeat}. This
- * is only allowed on void methods that do not throw exceptions. The invocation is captured
- * and will execute at the end of the current Heartbeat.
- * <p>
- * This annotation should be used with care, since deferring the invocation can change its semantics. For example, the
- * value stored in instance variables may change between the time the method is invoked and the time it eventually
- * executes. Likewise, runtime exceptions thrown by the method can not be caught by the invoking method.
- * <p>
- * Annotated methods must return void, and not declare any checked exceptions.
- * 
- * @since 5.2.0
- * @see HeartbeatDeferredWorker
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface HeartbeatDeferred
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Id.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Id.java
deleted file mode 100644
index e124cfc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Id.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Optional annotation, used with {@link Inject}, which exists to provide the id of an object when it can not be
- * determined by other means (such as from the field name). Currently, this is used when injecting a {@link Block}.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE,SERVICE})
-public @interface Id
-{
-    /**
-     * The id.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ImmutableSessionPersistedObject.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ImmutableSessionPersistedObject.java
deleted file mode 100644
index e636689..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/ImmutableSessionPersistedObject.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.*;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.BEAN;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation that can be placed on a session-persisted object to indicate that the object is immutable, and
- * therefore does not require end-of-request restoring into the session.
- *
- * @see org.apache.tapestry5.OptimizedSessionPersistedObject
- * @since 5.1.1.0
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@Inherited
-@UseWith(BEAN)
-public @interface ImmutableSessionPersistedObject
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Import.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Import.java
deleted file mode 100644
index c5d552e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Import.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Annotations to control the importing of JavaScript stacks and libraries as well as stylesheets. This annotation may
- * be placed on a class, in which case importing will occur as part of the {@link SetupRender} render phase.
- * Alternately, the annotation maybe placed on any method (though typically it will be placed on a render phase
- * method) and the import operations will be associated of that method.
- * <p>
- * Assets are localized during the {@link Component#containingPageDidLoad()} lifecycle method.
- * 
- * @see JavaScriptSupport
- * @since 5.2.0
- */
-@Target(
-{ ElementType.TYPE, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface Import
-{
-    /**
-     * JavaScript Stacks to import. Stacks are imported before individual libraries. Note that
-     * stacks themselves may have {@linkplain JavaScriptStack#getStacks() dependencies on other
-     * stacks}.
-     * 
-     * @see JavaScriptStack
-     * @see JavaScriptSupport#importStack(String)
-     */
-    String[] stack() default
-    {};
-
-    /**
-     * JavaScript libraries to import. Each value is an asset path; symbols in each path are expanded. The library may
-     * be localized.
-     * 
-     * @see JavaScriptSupport#importJavaScriptLibrary(org.apache.tapestry5.Asset)
-     */
-    String[] library() default
-    {};
-
-    /**
-     * Stylesheets to import. Each value is an asset path; symbols in each path are expanded. The stylesheet may be
-     * localized. The stylesheet is imported with no options.
-     * 
-     * @see JavaScriptSupport#importStylesheet(org.apache.tapestry5.Asset,
-     *      org.apache.tapestry5.services.javascript.StylesheetOptions)
-     */
-    String[] stylesheet() default
-    {};
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java
deleted file mode 100644
index 5904812..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeJavaScriptLibrary.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.*;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Allows for the inclusion of one or more JavaScript libraries. The libraries are assets, usually (but not always)
- * stored on the classpath with the component.
- * 
- * @see org.apache.tapestry5.annotations.IncludeStylesheet
- * @see org.apache.tapestry5.annotations.Path
- * @deprecated Use {@link Import} instead
- */
-@Target(
-{ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface IncludeJavaScriptLibrary
-{
-    /**
-     * The paths to the JavaScript library assets. Symbols in the paths are expanded. The library may be localized.
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java
deleted file mode 100644
index 4d8dffb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/IncludeStylesheet.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to automatically include a CSS stylesheet when rendering the page. The value is an asset reference; relative
- * paths are relative to the Java class, or a "context:" prefix can be used to reference resources in the web
- * application.
- * <p/>
- * This saves the work of injecting the asset into a field and injecting the PageRenderSupport environmental service,
- * and invoking the method.
- * <p/>
- * Does not support setting a media type; if that is required. use JavascriptSupport.importStylesheet() directly.
- * 
- * @see org.apache.tapestry5.annotations.Path
- * @see org.apache.tapestry5.annotations.IncludeJavaScriptLibrary
- * @deprecated Use {@link Import} instead
- */
-@Target(
-{ ElementType.TYPE })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface IncludeStylesheet
-{
-    /**
-     * One or more paths to be injected. Symbols in the path will be expanded. The stylesheets may be localized.
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectComponent.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectComponent.java
deleted file mode 100644
index acf9566..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectComponent.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Allows components defined in the template to be injected as read-only properties.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,PAGE})
-public @interface InjectComponent
-{
-    /**
-     * The name of the component to inject. Defaults to the name of the annotated field.
-     */
-    String value() default "";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectContainer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectContainer.java
deleted file mode 100644
index d9ab311..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectContainer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to inject the component which contains this component. For mixins, this injects the component to which the mixin
- * is attached.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN})
-public @interface InjectContainer
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectPage.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectPage.java
deleted file mode 100644
index 50df51e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/InjectPage.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Allows a a page (really, the root component of the page) to be injected into another component as a read-only field.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface InjectPage
-{
-    /**
-     * The name of the page to inject, which is used when the field type is not sufficient to identify the page (for
-     * example, when the field type is an interface implemented by the page). A non-blank value here overrides the
-     * lookup by class name (from the field type).
-     */
-    String value() default "";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Log.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Log.java
deleted file mode 100644
index 8f8765e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Log.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.*;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for component methods to enable debug-level logging. Annotated methods will log method entry (with
- * parameters), method exit (with return value, for non-void methods) and any thrown exceptions.
- *
- * @see org.apache.tapestry5.internal.transform.LogWorker
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface Log
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Meta.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Meta.java
deleted file mode 100644
index 6c62351..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Meta.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.model.ComponentModel;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Allows for the specification of per-component meta-data. Meta data can later be accessed via {@link
- * ComponentModel#getMeta(String)}. Meta data keys are case insensitive. Meta data defined by a subclass overrides meta
- * data for the super class (where the keys conflict).
- *
- * @see org.apache.tapestry5.MetaDataConstants
- */
-@Target(TYPE)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface Meta
-{
-    /**
-     * The meta data as a list of "name=value" elements.
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Mixin.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Mixin.java
deleted file mode 100644
index a572444..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Mixin.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Defines an <em>implementation</em> mixin for a component.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT})
-public @interface Mixin
-{
-
-    /**
-     * Defines the type of mixin, using a logical mixin name. This value takes precedence over the type of field (to
-     * which the annotation is attached). In such cases, it is presumed that the field's type is an interface
-     * implemented by the actual mixin. The default value (the empty string) directs Tapestry to use the field type as
-     * the mixin class to instantiate and attach to the component.
-     */
-    String value() default "";
-
-    /**
-     * Defines an ordering constraint for when the mixin should be applied in relation to other mixins.
-     * The string is analagous exactly to the strings used to define ordered contributions.
-     * Eg: @Mixin(order={"before:mixina","after:mixinb"}). The ids are mixin names and are case insensitive.
-     * @since 5.2.0.0
-     */
-    String[] order() default {};
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/MixinAfter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/MixinAfter.java
deleted file mode 100644
index 5b02614..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/MixinAfter.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * A marker annotation applied to a mixin to indicate that the mixin's render state behavior is deferred until after the
- * the behavior of the component to which the mixin is attached. Normally, mixins occur before the component. This
- * divides each phase in the render state machine into three virtual phases: before the component, the component itself,
- * and after the component.
- */
-@Target(TYPE)
-@Documented
-@Retention(RUNTIME)
-@Inherited
-@UseWith(MIXIN)
-public @interface MixinAfter
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/MixinClasses.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/MixinClasses.java
deleted file mode 100644
index 20db41d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/MixinClasses.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to attach one or more instance mixins to an embedded component. Each mixin is specified as a specific class.
- * This annotation is only recognized when used in conjuction with the {@link Component} annotation.
- *
- * @see Mixins
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith(COMPONENT)
-public @interface MixinClasses
-{
-    Class[] value();
-
-    /**
-     * Specifies the ordering constraints for each mixin specified by value. Order may be a 0-length array signifying
-     * no ordering for any mixin specified by value.  Otherwise, it must be the same length as value.
-     * Each String can specify multiple constraints, separated by ; (before:mixina;after:mixinb).
-     * Alternatively, the entry may be null or the empty string to specify no ordering constraints for that particular
-     * mixin.
-     * @since 5.2.0.0
-     */
-    String[] order() default {};
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Mixins.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Mixins.java
deleted file mode 100644
index ea228a2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Mixins.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used to attach one ore more instance mixin to an embedded component. Each mixin is specified in terms of a logical
- * mixin type name. This annotation is only recognized when used in conjuction with the {@link Component} annotation.
- *
- * @see MixinClasses
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith(COMPONENT)
-public @interface Mixins
-{
-
-    /**
-     * One or more mixin type names and optional constraints, from which actual mixin class names can be resolved.
-     * For specifying constraints, do:
-     * mixinname::constraint1;constraint2
-     * For instance:
-     * mixina::before:mixinb;after:mixinc;after:mixind
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/OnEvent.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/OnEvent.java
deleted file mode 100644
index 300862d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/OnEvent.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Marks a method as a handler for a client side event. The handler method will be invoked when a component triggers an
- * event. Filters on the type of event and on the originating component ensure that only the appropriate methods are
- * invoked.
- * <p/>
- * Client events include a <em>context</em> of one or more values. These context values are included in the action URI.
- * The values are optionally supplied to the handler method as parameters. Automatic {@linkplain
- * org.apache.tapestry5.ValueEncoder conversion} from string to the type of the actual parameter occur.
- * <p/>
- * Handlers may return a value. Returning a non-null value will abort the handling of the event, and will usually
- * control the response sent to the client web browser. The details are somewhat specific to the type of event and the
- * component involved.
- * <p/>
- * If a handler is not found within the originating component (or no handler aborts the event handling), then handlers
- * within the containing component will be searched. This continues up the page hierarchy. In some cases, having no
- * handlers (or no aborting handlers) is considered acceptible; in others, it is an error. Again, this is defined by the
- * type of originating component, and the type of event.
- * <p/>
- * <strong>If you fail to provide filters on either component or event type, then your method will be invoked for all
- * component events, possibly including events that bubble up from embedded sub-components. </strong>
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface OnEvent
-{
-
-    /**
-     * The event type to match. The handler will only be invoked if the client event type matches the value. The default
-     * value is "action".  Matching is case-insensitive.
-     *
-     * @see org.apache.tapestry5.EventConstants
-     */
-    String value() default EventConstants.ACTION;
-
-    /**
-     * The local id of the component from which the event originates. If not specified, then the default is to match any
-     * component. If an event from a component is not handled in the component's container, it is re-triggered inside
-     * the component's grand-container and will appear to originate from the container. Thus events that escape a
-     * component will appear to originate in the component's container, and so forth.
-     * <p/>
-     * Matching by component id is case insensitive.
-     */
-    String component() default "";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageActivationContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageActivationContext.java
deleted file mode 100644
index 19938de..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageActivationContext.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Annotation for a field for which the page activation context handlers (onActivate and onPassivate) should be created.
- * In order to use this annotation you must contribute a {@link org.apache.tapestry5.ValueEncoder} for the class of the
- * annotated property.
- * <p/>
- * You should not use this annotation within a class that already has an onActivate() or onPassivate() method; doing so
- * will result in a runtime exception.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith(PAGE)
-public @interface PageActivationContext
-{
-    /**
-     * Whether to create an activate event handler.
-     */
-    boolean activate() default true;
-
-    /**
-     * Whether to create a passivate event handler
-     */
-    boolean passivate() default true;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageAttached.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageAttached.java
deleted file mode 100644
index 6db7d65..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageAttached.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Method annotation used for methods that should be invoked when the page is first attached to a request. This is
- * useful for initializations that should occur on each request that involves the page. Often, such initializations will
- * be balanced by cleanups when the page is detached.
- * <p/>
- * PageAttached methods should take no parameters and return void. They must either have this annotation, or be named
- * "pageAttached".
- * <p/>
- * To be clear: methods with this annotation (or name) are still invoked even in Tapestry 5.2, which does away with
- * the page pool.
- *
- * @see PageDetached
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface PageAttached
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageDetached.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageDetached.java
deleted file mode 100644
index 3d46a19..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageDetached.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Method annotation used for methods that should be invoked when the page is detached at the end of a request, before
- * it is returned to the page pool for later reuse.
- * <p/>
- * PageDetached methods should take no parameters and return void. They must either have this annotation, or be named
- * "pageDetached".
- * <p/>
- * To be clear: methods with this annotation (or name) are still invoked even in Tapestry 5.2, which does away with the
- * page pool.
- * 
- * @see PageAttached
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface PageDetached
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageLoaded.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageLoaded.java
deleted file mode 100644
index ccbecd1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageLoaded.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use tis file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Method annotation used for methods that should be invoked once the page is fully loaded. This is useful for one-time
- * component initializations that can't be done at instance initialization time, such as references to embedded
- * components or blocks.
- * <p/>
- * PageLoaded methods should take no parameters and return void. They must either have this annotation, or be named
- * "pageLoaded".
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface PageLoaded
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageReset.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageReset.java
deleted file mode 100644
index d8121ee..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/PageReset.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.internal.transform.PageResetAnnotationWorker;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for a method that should be invoked when a page is reset. A page reset occurs
- * when a page is linked to from another page. This is an opportunity to re-initialize aspects of a
- * page when the user returns to a page after visiting other pages. A common example is to
- * reset the active page of a {@link Grid} component.
- * <p>
- * Methods marked with this annotation are invoked <em>after</em> the page is sent the
- * <code>activate</code> event. This is to allow the page to reset itself as appropriate for
- * whatever persistent state was encoded in its page activation context.
- * 
- * @since 5.2.0
- * @see PageResetAnnotationWorker
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface PageReset
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java
deleted file mode 100644
index 6e769df..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Parameter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * Annotation placed on a field to indicate that it is, in fact, a component parameter. Parameters may be optional or
- * required. Required parameters must be bound.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN})
-public @interface Parameter
-{
-
-    /**
-     * The name of the parameter. If not specified, the name of the parameter is derived from the name of the field
-     * (after stripping off leading and trailing punctuation).
-     */
-    String name() default "";
-
-    /**
-     * If true, the parameter is required and and must be bound. If false (the default), then the parameter is
-     * optional.
-     */
-    boolean required() default false;
-
-    /**
-     * If false, and the parameter <em>is</em> bound, then the value for the parameter must not be null. The default is
-     * true, to allow nulls. This is different than required, in that the parameter may be bound, but bound to a null
-     * value.
-     */
-    boolean allowNull() default true;
-
-    /**
-     * If true (the default), then the value for the parameter is cached while the component is, itself, rendering.
-     * Values from invariant bindings (such as literal strings) are always cached, regardless of this setting. Set this
-     * attribute to false to force the parameter to be {@linkplain org.apache.tapestry5.Binding#get() re-read} every
-     * time the field is accessed, even while the component is rendering.
-     */
-    boolean cache() default true;
-
-    /**
-     * The default value for the parameter if not bound (and not the empty string). This is a binding expression,
-     * typically the name of a property of the component to bind.
-     */
-    String value() default "";
-
-    /**
-     * The default binding prefix for the parameter, if no specific binding prefix is provided with the binding. There
-     * is <em>rarely</em> a reason to override this. Typically, non-standard default binding prefixes are paired with
-     * specific {@link org.apache.tapestry5.services.BindingFactory} implementations, and used with parameters whose
-     * name reflects the binding prefix.
-     *
-     * @see org.apache.tapestry5.BindingConstants
-     */
-    String defaultPrefix() default BindingConstants.PROP;
-
-    /**
-     * Used to mark a parameter as requiring earlier initialization than other parameters. This is used when default
-     * bindings for secondary parameters rely on a principal parameter, which itself may have a default value. This
-     * ensures that the binding for the principal parameter(s) are initialized, possibly involving a defaulter method,
-     * before the secondary parameters are initialized (as they may need to know if the principal parameter is bound,
-     * and what type of value it is bound to). This is rarely used, and it is highly unlikely a single component would
-     * have more than a single principal parameter.
-     */
-    boolean principal() default false;
-
-    /**
-     * Used to create a default binding, connecting the parameter to a property of the container whose property name
-     * matches the id of the component. This is frequently used for form element components.  This default binding is
-     * only used if there is no matching container property.
-     *
-     * @see org.apache.tapestry5.services.ComponentDefaultProvider#defaultBinding(String,
-     *      org.apache.tapestry5.ComponentResources)
-     */
-    boolean autoconnect() default false;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Path.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Path.java
deleted file mode 100644
index 8acb24c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Path.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used in conjunction with the {@link Inject} annotation to inject an {@link Asset} based on a path.
- */
-@Target(
-        { FIELD, PARAMETER })
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE,SERVICE})
-public @interface Path
-{
-    /**
-     * The path to the resource; if prefixed (say with "classpath:") then its a complete path within the identified
-     * namespace; otherwise it's a relative path from the class containing the annotation. Symbols will be expanded.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Persist.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Persist.java
deleted file mode 100644
index 15abc7b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Persist.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.services.Session;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Identifies a field as persistent, meaning its value persists from one request to the next. Different strategies exist
- * for how this is accomplished, the most common being the default, "session", which stores the field's value in the
- * {@link Session}.
- * <p/>
- * In most cases, the value will be omitted and will default to the empty string. This forces a search for the correct
- * strategy. Starting with the component (or mixin) itself, a check is made for the {@link Meta meta data property}
- * <code>tapestry.persistence-strategy</code>. If a value is found, it is used, otherwise the search continues up the
- * inheritance hierarchy, towards the page. If not found, then the "session" strategy is used.
- * <p/>
- * In this way, the session persistence strategy for a component and all of its sub-components can be controlled by the
- * containing component.
- *
- * @see org.apache.tapestry5.services.MetaDataLocator
- * @see org.apache.tapestry5.PersistenceConstants
- * @see ActivationRequestParameter
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface Persist
-{
-
-    /**
-     * The strategy used to persist the value. The default value, the empty string, allows persistence to be decided by
-     * the containing component and component hierarchy.
-     */
-    String value() default "";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Property.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Property.java
deleted file mode 100644
index 73ef8fd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Property.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Annotation for fields for which accessor methods (getters and setters) should be created.  This can help when
- * defining the kind of placeholder properties often used in components, though the disadvantage is that you can't
- * access the fields in a unit test, and you may get compiler warnings about unused private variables.
- * <p/>
- * The annotation <em>will not</em> overwrite an existing getter or setter method; if you put a Property annotation on a
- * field that already has a getter or a setter you will see a runtime exception.
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface Property
-{
-    /**
-     * Whether to create a readable property (i.e., generate a getter method).
-     */
-    boolean read() default true;
-
-    /**
-     * Whether to create a writeable property (i.e., generate a setter method).
-     */
-    boolean write() default true;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/RequestParameter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/RequestParameter.java
deleted file mode 100644
index b3e1b0a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/RequestParameter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.COMPONENT;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.MIXIN;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.PAGE;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-import org.apache.tapestry5.internal.transform.OnEventWorker;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Annotation that may be placed on parameters of event handler methods.
- * Annotated parameters will be {@linkplain Request#getParameter(String) extracted from the request},
- * then {@linkplain TypeCoercer coerced} to the type of the parameter. Such parameters are separate
- * from ordinary context parameters (extracted from the Request path). Typically, this is used when
- * client-side JavaScript adds a query parameter to a request to communicate some information from the client
- * side to the server side.
- * <p>
- * Individual fields may also be directly mapped to query parameters using the {@link ActivationRequestParameter} annotation.
- * 
- * @since 5.2.0
- * @see OnEventWorker
- */
-@Target(
-{ PARAMETER })
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface RequestParameter
-{
-    /** The name of the query parameter to extract from the request. */
-    String value();
-
-    /**
-     * If false (the default), then an exception is thrown when the query parameter is read, if it is blank (null or an
-     * empty string). If true, then blank values are allowed.
-     */
-    boolean allowBlank() default false;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Retain.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Retain.java
deleted file mode 100644
index ad4a757..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Retain.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation placed on fields whose value should be retained past the end of the request. This is most often
- * associated with fields that are <em>lazily loaded</em>. By marking such fields with the Retain annotation, the fields
- * will <em>not</em> be discarded at the end of the request.
- * <p/>
- * This is quite different from {@link Persist}, because the value that's allowed to be retained is not stored
- * persistently; it is simply not cleared out. A subsequent request, even from the same user, may be processed by a
- * different instance of the page where the value is still null.
- * <p/>
- * This annotation should only be used with lazily-evaluated objects that contain no client-specific information.
- * 
- * @deprecated This rarely used annotation is likely to cause threading issues starting in Tapestry 5.2 (which no longer
- *             pools pages
- *             but uses shared instances with externalized mutable state)
- */
-@Target(FIELD)
-@Retention(RUNTIME)
-@Documented
-@UseWith(
-{ COMPONENT, MIXIN, PAGE })
-public @interface Retain
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Secure.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Secure.java
deleted file mode 100644
index 24b9b35..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Secure.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * A marker annotation that indicates that the page in question may only be accessed via HTTPS.
- * <p>
- * Normally, this annotation is ignored in development mode and only used in production mode. This can be changed
- * via the {@link SymbolConstants#SECURE_ENABLED} configuration symbol. 
- *
- * @see org.apache.tapestry5.MetaDataConstants#SECURE_PAGE
- */
-@Target(TYPE)
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.PAGE)
-public @interface Secure
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Service.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Service.java
deleted file mode 100644
index f6de21c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/Service.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Used in conjunction with the {@link Inject} annotation to identify a service <em>by name</em> and not by type. This
- * is most useful when there are multiple services with the same service interface and a particular one needs to be
- * selected.
- */
-@Target(
-        { FIELD, PARAMETER })
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE,SERVICE})
-public @interface Service
-{
-    /**
-     * The name of the service. Symbols will be expanded and case is not relevant.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SessionAttribute.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SessionAttribute.java
deleted file mode 100644
index c81bb74..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SessionAttribute.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.services.Session;
-
-/**
- * Used to map a property of a page or component to value stored in session.
- * 
- * @since 5.2.0
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface SessionAttribute
-{
-    
-    /**
-     * Name of a the {@link Session} attribute to which the field will be mapped; if not specified,
-     * defaults to the name of the field.
-     */
-    String value() default "";
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SessionState.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SessionState.java
deleted file mode 100644
index a176301..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SessionState.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for a field that is a <em>session state object</em> (SSO) as controlled by the {@link
- * org.apache.tapestry5.services.ApplicationStateManager}. An SSO stored as global session object (i.e., in the {@link
- * javax.servlet.ServletContext}); every page or component. In fact, the built-in strategies for ASO management are
- * <em>very</em> user specific, ultimately storing data in the {@link org.apache.tapestry5.services.Session}.
- * <p/>
- * An SSO field may have a companion field, of type boolean, used to see if the SSO has been created yet. If another
- * field exists with the same name, suffixed with "Exists" (i.e., "sso" for the SSO field, and "ssoExists" for the
- * companion field) and the type of that field is boolean, then access to the field will determine whether the SSO has
- * already been created. This is necessary because even a null check ("sso != null") may force the SSO to be created.
- * Instead, check the companion boolean field ("asoExists").
- * <p/>
- * Note: Tapestry 5.0 called these objects "Application State Objects"; thus many of the underlying services have a
- * confusing name (ApplicationStateManager, which really should be SessionStateManager ... but can't be renamed for
- * backwards compatibility reasons).
- *
- * @since 5.1.0.4
- */
-@Target(FIELD)
-@Documented
-@Retention(RUNTIME)
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface SessionState
-{
-    /**
-     * If true (the default), then referencing an field marked with the annotation will create the SSO.  If false, then
-     * accessing the field will not create the SSO, it will only allow access to it if it already exists.
-     */
-    boolean create() default true;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SetupRender.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SetupRender.java
deleted file mode 100644
index b5b1782..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SetupRender.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-/**
- * Marker annotation for methods that should be executed during the SetupRender phase. Such methods may optionally take
- * a {@link org.apache.tapestry5.MarkupWriter} parameter, and may return void or boolean. Returning true or void will
- * advance to the {@link org.apache.tapestry5.annotations.BeginRender} phase. Return false to skip the BeginRender phase
- * and procede directly to the {@link org.apache.tapestry5.annotations.CleanupRender} phase.
- */
-@Target(ElementType.METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT,MIXIN,PAGE})
-public @interface SetupRender
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SupportsInformalParameters.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SupportsInformalParameters.java
deleted file mode 100644
index ffa704b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/annotations/SupportsInformalParameters.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.annotations;
-
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.ioc.annotations.UseWith;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * Used to identify a component that can support informal parameters. By default, components do not support informal
- * parameters.
- *
- * @see ComponentModel#getSupportsInformalParameters()
- */
-@Target(TYPE)
-@Retention(RUNTIME)
-@Documented
-@Inherited
-@UseWith({COMPONENT,MIXIN})
-public @interface SupportsInformalParameters
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java
deleted file mode 100644
index 00d8080..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/beaneditor/BeanModel.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.PropertyConduit;
-
-import java.util.List;
-
-/**
- * Provides the information necessary to build a user interface to view, create or edit an instance of a particular
- * type.
- * <p/>
- * BeanModels are not thread-safe, they are also not serializable.
- * <p/>
- * Here, and in {@link org.apache.tapestry5.beaneditor.PropertyModel}, the term "propertyName" is used for simplicitly.
- * However, a full {@linkplain org.apache.tapestry5.services.PropertyConduitSource#create(Class, String) property
- * expression} may be utilized when {@linkplain #add(String) adding new properties to an existing BeanModel}.
- *
- * @see org.apache.tapestry5.services.BeanModelSource
- */
-public interface BeanModel<T>
-{
-    /**
-     * Returns the type of bean for which this model was initially created.
-     */
-    Class<T> getBeanType();
-
-
-    /**
-     * Creates a new bean instance.  This is based on {@link org.apache.tapestry5.ioc.ObjectLocator#autobuild(Class)},
-     * so a public constructor will be used, and dependencies injected.
-     *
-     * @return new instance of the bean
-     */
-    T newInstance();
-
-    /**
-     * Returns a list of the editable properties of the bean, in <em>presentation</em> order.
-     */
-    List<String> getPropertyNames();
-
-    /**
-     * Returns the named model.
-     *
-     * @param propertyName name of property to retrieve model for (case is ignored)
-     * @return the model for the property
-     * @throws RuntimeException if the bean editor model does not have a property model for the provided name
-     */
-    PropertyModel get(String propertyName);
-
-    /**
-     * Returns the identified model.  Property ids are a stripped version of the property name. Case is ignored.
-     *
-     * @param propertyId matched caselessly against {@link org.apache.tapestry5.beaneditor.PropertyModel#getId()}
-     * @throws RuntimeException if the bean editor model does not have a property model with the indicated id
-     */
-    PropertyModel getById(String propertyId);
-
-    /**
-     * Adds a new property to the model, returning its mutable model for further refinement. The property is added to
-     * the <em>end</em> of the list of properties. The property must be real (but may have been excluded if there was no
-     * {@linkplain org.apache.tapestry5.beaneditor.DataType datatype} associated with the property). To add a synthetic
-     * property, use {@link #add(String, org.apache.tapestry5.PropertyConduit)}
-     *
-     * @param propertyName name of property to add
-     * @return the new property model (for further configuration)
-     * @throws RuntimeException if the property already exists
-     */
-    PropertyModel add(String propertyName);
-
-    /**
-     * Adds a new property to the model (as with {@link #add(String)}), ordered before or after an existing property.
-     *
-     * @param position             controls whether the new property is ordered before or after the existing property
-     * @param existingPropertyName the name of an existing property (this must exist)
-     * @param propertyName         the new property to add
-     * @return the new property model (for further configuration)
-     * @throws RuntimeException if the existing property does not exist, or if the new property already does exist
-     */
-    PropertyModel add(RelativePosition position, String existingPropertyName, String propertyName);
-
-    /**
-     * Adds a new property to the model, ordered before or after an existing property.
-     *
-     * @param position             controls whether the new property is ordered before or after the existing property
-     * @param existingPropertyName the name of an existing property (this must exist)
-     * @param propertyName         the new property to add
-     * @param conduit              conduit used to read or update the property; this may be null for a synthetic or
-     *                             placeholder property
-     * @return the new property model (for further configuration)
-     * @throws RuntimeException if the existing property does not exist, or if the new property already does exist
-     */
-    PropertyModel add(RelativePosition position, String existingPropertyName, String propertyName,
-                      PropertyConduit conduit);
-
-    /**
-     * Adds a new, synthetic property to the model, returning its mutable model for further refinement.
-     *
-     * @param propertyName name of property to add
-     * @param conduit      the conduit used to read or update the property; this may be null for a synthetic or
-     *                     placeholder property
-     * @return the model for the property
-     * @throws RuntimeException if the property already exists
-     */
-    PropertyModel add(String propertyName, PropertyConduit conduit);
-
-    /**
-     * Removes the named properties from the model, if present. It is not considered an error to remove a property that
-     * does not exist.
-     *
-     * @param propertyNames the names of properties to be removed (case insensitive)
-     * @return the model for further modifications
-     */
-    BeanModel<T> exclude(String... propertyNames);
-
-    /**
-     * Re-orders the properties of the model into the specified order. Existing properties that are not indicated are
-     * retained, but ordered to the end of the list.
-     *
-     * @param propertyNames property names in order they should be displayed (case insensitive)
-     * @return the model for further modifications
-     */
-    BeanModel<T> reorder(String... propertyNames);
-
-    /**
-     * Re-orders the properties of the model into the specified order. Existing properties that are not indicated are
-     * <<removed>>.
-     *
-     * @param propertyNames the names of properties to be retained
-     * @return the model for further modifications
-     */
-    BeanModel<T> include(String... propertyNames);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java
deleted file mode 100644
index 6095fb9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/beaneditor/PropertyModel.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.beaneditor;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-/**
- * Part of a {@link org.apache.tapestry5.beaneditor.BeanModel} that defines the attributes of a single property of a
- * bean.
- * <p/>
- * <p/>
- * A PropertyModel is also an {@link AnnotationProvider}, as long as the {@link org.apache.tapestry5.PropertyConduit} is
- * non-null.  When there is no property conduit, then {@link org.apache.tapestry5.ioc.AnnotationProvider#getAnnotation(Class)}
- * will return null.
- */
-public interface PropertyModel extends AnnotationProvider
-{
-    /**
-     * Returns the name of the property (which may, in fact, be a property expression).
-     */
-    String getPropertyName();
-
-    /**
-     * Returns the id used to access other resources (this is based on the property name, but with any excess
-     * punctuation stripped out).
-     */
-    String getId();
-
-    /**
-     * Returns a user-presentable label for the property.
-     */
-    String getLabel();
-
-    /**
-     * Returns the type of the property.
-     */
-    Class getPropertyType();
-
-    /**
-     * Returns a logical name for the type of UI needed to view or edit the property. This is initially determined from
-     * the property type.
-     */
-    String getDataType();
-
-    /**
-     * Changes the data type for the property.
-     *
-     * @param dataType
-     * @return the property model, for further changes
-     */
-    PropertyModel dataType(String dataType);
-
-    /**
-     * Returns an object used to read or update the property. For virtual properties (properties that do not actually
-     * exist on the bean), the conduit may be null.
-     */
-    PropertyConduit getConduit();
-
-    /**
-     * Changes the label for the property to the provided value.
-     *
-     * @param label new label for property
-     * @return the property model, for further changes
-     */
-    PropertyModel label(String label);
-
-    /**
-     * Returns the containing model, often used for "fluent" construction of the model.
-     */
-    BeanModel model();
-
-    /**
-     * Returns true if the property can be used for sorting. By default, this is true only if the property type
-     * implements Comparable.
-     */
-    boolean isSortable();
-
-    /**
-     * Updates sortable and returns the model for further changes.
-     *
-     * @return the property model, for further changes
-     */
-    PropertyModel sortable(boolean sortable);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
deleted file mode 100644
index 54ca74a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/ClientValidation.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib;
-
-/**
- * Controls if and how client-side form input validation occurs. For compatibility with Tapestry 5.1,
- * a coercion from "true" to {@link #BLUR} and from "false" to {@link #NONE} are added (though these
- * may be removed some time after Tapestry 5.2).
- * 
- * @since 5.2.2
- */
-public enum ClientValidation
-{
-    /**
-     * Fields validate as the user tabs out of them ("onblur" client side event), as well as when the form submits. This
-     * is the default behavior.
-     */
-    BLUR,
-
-    /**
-     * Fields only validate when the form submits (validation errors will prevent the form from actually submitting).
-     */
-    SUBMIT,
-
-    /**
-     * Client-side validation is disabled.
-     */
-    NONE;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/LoopFormState.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/LoopFormState.java
deleted file mode 100644
index b31b1d9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/LoopFormState.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib;
-
-/**
- * Identifies how a {@link org.apache.tapestry5.corelib.LoopFormState} component stores state into the {@link
- * org.apache.tapestry5.services.FormSupport} object.
- *
- * @since 5.1.0.4
- */
-public enum LoopFormState
-{
-    /**
-     * No state of any kind is stored, as if the Loop was not contained within a {@link
-     * org.apache.tapestry5.corelib.components.Form}.
-     */
-    NONE,
-
-    /**
-     * Only enough state to iterate over the source values is stored. When the Form is submitted, the Loop will
-     * re-acquire its source and iterate over it. This is equivalent to "volatile" mode in Tapestry 5.0. This can be
-     * subject to race conditions when the values within the source change between render and submit.
-     */
-    ITERATION,
-
-    /**
-     * Stores a sequence of values (obtained via a {@link org.apache.tapestry5.ValueEncoder}) into the Form state. The
-     * source parameter is <em>not</em> re-acquired when the Form is submitted.
-     */
-    VALUES
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/SubmitMode.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/SubmitMode.java
deleted file mode 100644
index 2269a55..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/SubmitMode.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.corelib.components.LinkSubmit;
-import org.apache.tapestry5.corelib.components.Submit;
-
-/**
- * Defines the client and server-side behavior of a {@link Submit} or {@link LinkSubmit} component.
- * 
- * @since 5.2.0
- */
-public enum SubmitMode
-{
-    /** Submit the form normally, with full validation on the client and server side. */
-    NORMAL,
-
-    /**
-     * Cancel the form; bypass client-side form validation. Validation still occurs
-     * on the server, though generally the data is discarded by the event listener
-     * (listening to the Submit component's {@link EventConstants#SELECTED} event).
-     */
-    CANCEL;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractComponentEventLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractComponentEventLink.java
deleted file mode 100644
index 1752cc5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractComponentEventLink.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MarkupConstants;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Base class for link-generating components that are based on a component event request. Such events have an event
- * context and may also update a {@link org.apache.tapestry5.corelib.components.Zone}.
- */
-public abstract class AbstractComponentEventLink extends AbstractLink
-{
-    /**
-     * The context for the link (optional parameter). This list of values will be converted into strings and included in
-     * the URI. The strings will be coerced back to whatever their values are and made available to event handler
-     * methods.
-     */
-    @Parameter
-    private Object[] context;
-
-    /**
-     * Binding the zone parameter turns the link into a an Ajax control that causes the related zone to be updated.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String zone;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    @Inject
-    private Request request;
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (isDisabled()) return;
-
-        Link link = createLink(context);
-
-        writeLink(writer, link);
-
-        if (zone != null)
-        {
-            if (!request.isXHR())
-                writer.getElement().forceAttributes(MarkupConstants.ONCLICK, MarkupConstants.WAIT_FOR_PAGE);
-
-            clientBehaviorSupport.linkZone(getClientId(), zone, link);
-        }
-    }
-
-    /**
-     * Invoked to create the Link that will become the href attribute of the output.
-     *
-     * @param eventContext the context as an object array, possibly null
-     */
-    protected abstract Link createLink(Object[] eventContext);
-
-    void afterRender(MarkupWriter writer)
-    {
-        if (isDisabled()) return;
-
-        writer.end(); // <a>
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractConditional.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractConditional.java
deleted file mode 100644
index 615b6ce..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractConditional.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Base class for {@link org.apache.tapestry5.corelib.components.If} and {@link org.apache.tapestry5.corelib.components.Unless}.
- * Will render its body or the block from its else parameter.  If it renders anything and it has an element name, then
- * it renders the element and its informal parameters.
- */
-@SupportsInformalParameters
-public abstract class AbstractConditional
-{
-    @Inject
-    private ComponentResources resources;
-
-    /**
-     * Performs the test via the parameters; return true to render the body of the component, false to render the else
-     * block (or nothing).
-     *
-     * @return true to render body
-     */
-    protected abstract boolean test();
-
-    /**
-     * An alternate {@link org.apache.tapestry5.Block} to render if {@link #test()} is false. The default, null, means
-     * render nothing in that situation.
-     */
-    @Parameter(name = "else", defaultPrefix = BindingConstants.LITERAL)
-    private Block elseBlock;
-
-    private boolean renderTag;
-
-    /**
-     * Returns null if the {@link #test()} is true, which allows normal rendering (of the body). If the test parameter
-     * is false, returns the else parameter (this may also be null).
-     */
-    Object beginRender(MarkupWriter writer)
-    {
-        Block toRender = test() ? resources.getBody() : elseBlock;
-
-        String elementName = resources.getElementName();
-
-        renderTag = toRender != null && elementName != null;
-
-        if (renderTag)
-        {
-            writer.element(elementName);
-            resources.renderInformalParameters(writer);
-        }
-
-        return toRender;
-    }
-
-    /**
-     * If {@link #test()} is true, then the body is rendered, otherwise not. The component does not have a template or
-     * do any other rendering besides its body.
-     */
-    boolean beforeRenderBody()
-    {
-        return false;
-    }
-
-    void afterRenderBody(MarkupWriter writer)
-    {
-        if (renderTag)
-            writer.end();
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
deleted file mode 100644
index 0dd2016..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractField.java
+++ /dev/null
@@ -1,281 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.corelib.internal.InternalMessages;
-import org.apache.tapestry5.corelib.mixins.DiscardBody;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.corelib.mixins.RenderInformals;
-import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-import java.io.Serializable;
-
-/**
- * Provides initialization of the clientId and elementName properties. In addition, adds the {@link RenderInformals},
- * {@link RenderDisabled} and {@link DiscardBody} mixins.
- */
-@SupportsInformalParameters
-public abstract class AbstractField implements Field
-{
-    /**
-     * The user presentable label for the field. If not provided, a reasonable label is generated from the component's
-     * id, first by looking for a message key named "id-label" (substituting the component's actual id), then by
-     * converting the actual id to a presentable string (for example, "userId" to "User Id").
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String label;
-
-    /**
-     * If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
-     * disabled field ignores any value in the request when the form is submitted.
-     */
-    @Parameter("false")
-    private boolean disabled;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private DiscardBody discardBody;
-
-    @Environmental
-    private ValidationDecorator decorator;
-    
-    @Inject
-    private Environment environment;
-
-
-    static class Setup implements ComponentAction<AbstractField>, Serializable
-    {
-        private static final long serialVersionUID = 2690270808212097020L;
-
-        private final String controlName;
-
-        public Setup(String controlName)
-        {
-            this.controlName = controlName;
-        }
-
-        public void execute(AbstractField component)
-        {
-            component.setupControlName(controlName);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("AbstractField.Setup[%s]", controlName);
-        }
-    }
-
-    static class ProcessSubmission implements ComponentAction<AbstractField>, Serializable
-    {
-        private static final long serialVersionUID = -4346426414137434418L;
-
-        public void execute(AbstractField component)
-        {
-            component.processSubmission();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "AbstractField.ProcessSubmission";
-        }
-    }
-
-    /**
-     * Used a shared instance for all types of fields, for efficiency.
-     */
-    private static final ProcessSubmission PROCESS_SUBMISSION_ACTION = new ProcessSubmission();
-
-    /**
-     * The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
-     * times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
-     * {@link #getClientId() clientId property}.
-     */
-    @Parameter(value = "prop:componentResources.id", defaultPrefix = BindingConstants.LITERAL)
-    private String clientId;
-
-    private String assignedClientId;
-
-    private String controlName;
-
-    @Environmental(false)
-    private FormSupport formSupport;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    final String defaultLabel()
-    {
-        return defaultProvider.defaultLabel(resources);
-    }
-
-    public final String getLabel()
-    {
-        return label;
-    }
-
-    @SetupRender
-    final void setup()
-    {
-        // By default, use the component id as the (base) client id. If the clientid
-        // parameter is bound, then that is the value to use.
-
-        String id = clientId;
-
-        // Often, these controlName and clientId will end up as the same value. There are many
-        // exceptions, including a form that renders inside a loop, or a form inside a component
-        // that is used multiple times.
-
-        if (formSupport == null) throw new RuntimeException(InternalMessages.formFieldOutsideForm(getLabel()));
-
-        assignedClientId = jsSupport.allocateClientId(id);
-        String controlName = formSupport.allocateControlName(id);
-
-        formSupport.storeAndExecute(this, new Setup(controlName));
-        formSupport.store(this, PROCESS_SUBMISSION_ACTION);
-    }
-
-    public final String getClientId()
-    {
-        return assignedClientId;
-    }
-
-    public final String getControlName()
-    {
-        return controlName;
-    }
-
-    public final boolean isDisabled()
-    {
-        return disabled;
-    }
-
-    /**
-     * Invoked from within a ComponentCommand callback, to restore the component's elementName.
-     */
-    private void setupControlName(String controlName)
-    {
-        this.controlName = controlName;
-    }
-
-    private void processSubmission()
-    {
-        if (!disabled) processSubmission(controlName);
-    }
-
-    /**
-     * Used by subclasses to create a default binding to a property of the container matching the component id.
-     *
-     * @return a binding to the property, or null if the container does not have a corresponding property
-     * @deprecated Use {@link ComponentDefaultProvider#defaultBinding(String, ComponentResources)} instead
-     */
-    protected final Binding createDefaultParameterBinding(String parameterName)
-    {
-        return defaultProvider.defaultBinding(parameterName, resources);
-    }
-
-    /**
-     * Method implemented by subclasses to actually do the work of processing the submission of the form. The element's
-     * elementName property will already have been set. This method is only invoked if the field is <strong>not {@link
-     * #isDisabled() disabled}</strong>.
-     *
-     * @param elementName the name of the element (used to find the correct parameter in the request)
-     */
-    protected abstract void processSubmission(String elementName);
-
-    /**
-     * Allows the validation decorator to write markup before the field itself writes markup.
-     */
-    @BeginRender
-    final void beforeDecorator()
-    {
-        decorator.beforeField(this);
-    }
-
-    /**
-     * Allows the validation decorator to write markup after the field has written all of its markup.
-     */
-    @AfterRender
-    final void afterDecorator()
-    {
-        decorator.afterField(this);
-    }
-
-    /**
-     * Invoked from subclasses after they have written their tag and (where appropriate) their informal parameters
-     * <em>and</em> have allowed their {@link Validator} to write markup as well.
-     */
-    protected final void decorateInsideField()
-    {
-        decorator.insideField(this);
-    }
-
-    protected final void setDecorator(ValidationDecorator decorator)
-    {
-        this.decorator = decorator;
-    }
-
-    protected final void setFormSupport(FormSupport formSupport)
-    {
-        this.formSupport = formSupport;
-    }
-
-    /**
-     * Returns false; most components do not support declarative validation.
-     */
-    public boolean isRequired()
-    {
-        return false;
-    }
-    
-    protected void putPropertyNameIntoBeanValidationContext(String parameterName)
-    {
-        String propertyName = ((InternalComponentResources)resources).getPropertyName(parameterName);
-        
-        BeanValidationContext beanValidationContext = environment.peek(BeanValidationContext.class);
-        
-        if(beanValidationContext == null) return;
-
-        //If field is inside BeanEditForm, then property is already set
-        if(beanValidationContext.getCurrentProperty()==null)
-        {
-        	beanValidationContext.setCurrentProperty(propertyName);
-        }
-    }
-    
-    protected void removePropertyNameFromBeanValidationContext()
-    {   
-    	BeanValidationContext beanValidationContext = environment.peek(BeanValidationContext.class);
-    	
-    	if(beanValidationContext == null) return;
-    	
-    	beanValidationContext.setCurrentProperty(null);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractLink.java
deleted file mode 100644
index d8cdfd0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractLink.java
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Provides base utilities for classes that generate clickable links.
- */
-@SupportsInformalParameters
-public abstract class AbstractLink implements ClientElement
-{
-    /**
-     * An anchor value to append to the generated URL (the hash separator will be added automatically).
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String anchor;
-
-    /**
-     * If true, then then no link element is rendered (and no informal parameters as well). The body is, however, still
-     * rendered.
-     */
-    @Parameter("false")
-    private boolean disabled;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private JavaScriptSupport jsSupport;
-
-    private Link link;
-
-    private Element element;
-
-    private String clientId;
-
-    private String buildHref(Link link)
-    {
-        String href = link.toURI();
-
-        if (anchor == null)
-            return href;
-
-        return href + "#" + anchor;
-    }
-
-    @SetupRender
-    void resetElementAndClientId()
-    {
-        element = null;
-        clientId = null;
-    }
-
-    /**
-     * Writes an &lt;a&gt; element with the provided link as the href attribute. A call to
-     * {@link org.apache.tapestry5.MarkupWriter#end()} is <em>not</em> provided. Automatically appends an anchor if
-     * the component's anchor parameter is non-null. Informal parameters are rendered as well.
-     * 
-     * @param writer
-     *            to write markup to
-     * @param link
-     *            the link that will form the href
-     * @param namesAndValues
-     *            additional attributes to write
-     */
-    protected final void writeLink(MarkupWriter writer, Link link, Object... namesAndValues)
-    {
-        element = writer.element("a", "href", buildHref(link));
-
-        writer.attributes(namesAndValues);
-
-        resources.renderInformalParameters(writer);
-
-        this.link = link;
-    }
-
-    /**
-     * Returns the most recently rendered {@link org.apache.tapestry5.Link} for this component. Subclasses calculate
-     * their link value as they render, and the value is valid until the end of the request, or the next time the same
-     * component renders itself (if inside a loop).
-     * 
-     * @return the most recent link, or null
-     */
-    public Link getLink()
-    {
-        return link;
-    }
-
-    /**
-     * Returns the unique client id for this element. This is valid only after the component has rendered (its start
-     * tag). A client id is generated the first time this method is invoked, after the link renders its start tag.
-     */
-    public final String getClientId()
-    {
-        if (clientId == null)
-        {
-            if (element == null)
-                throw new IllegalStateException(String.format(
-                        "Client id for %s is not available as it did not render yet (or was disabled).",
-                        resources.getCompleteId()));
-
-            clientId = jsSupport.allocateClientId(resources);
-
-            element.forceAttributes("id", clientId);
-        }
-
-        return clientId;
-    }
-
-    /**
-     * Returns true if the component is disabled (as per its disabled parameter). Disabled link components should not
-     * render a tag, but should still render their body.
-     */
-    public boolean isDisabled()
-    {
-        return disabled;
-    }
-
-    /**
-     * Used for testing.
-     */
-    final void inject(String anchor, ComponentResources resources)
-    {
-        this.anchor = anchor;
-        this.resources = resources;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
deleted file mode 100644
index 944b228..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutput.java
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.services.Core;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.PropertyOutputContext;
-
-/**
- * Base class for components that output a property value using a {@link PropertyModel}. There's a relationship between
- * such a component and its container, as the container may provide messages in its message catalog needed by the {@link
- * Block}s that render the values. In addition, the component may be passed Block parameters that are output overrides
- * for specified properties.
- * <p/>
- * Subclasses will implement a <code>beginRender()</code> method that invokes {@link #renderPropertyValue(MarkupWriter,
- * String)}.
- *
- * @see BeanBlockSource
- */
-public abstract class AbstractPropertyOutput
-{
-    /**
-     * Model for property displayed by the cell.
-     */
-    @Parameter(required = true, allowNull = false)
-    private PropertyModel model;
-
-    /**
-     * Used to search for block parameter overrides (this is normally the enclosing Grid component's resources).
-     */
-    @Parameter(required = true, allowNull = false)
-    private PropertyOverrides overrides;
-
-    /**
-     * Identifies the object being rendered. The component will extract a property from the object and render its value
-     * (or delegate to a {@link org.apache.tapestry5.Block} that will do so).
-     */
-    @Parameter(required = true)
-    private Object object;
-
-    /**
-     * Source for property display blocks. This defaults to the default implementation of {@link
-     * org.apache.tapestry5.services.BeanBlockSource}.
-     */
-    @Parameter(required = true, allowNull = false)
-    private BeanBlockSource beanBlockSource;
-
-    @Inject
-    @Core
-    private BeanBlockSource defaultBeanBlockSource;
-
-    @Inject
-    private Environment environment;
-
-    private boolean mustPopEnvironment;
-
-    BeanBlockSource defaultBeanBlockSource()
-    {
-        return defaultBeanBlockSource;
-    }
-
-    protected PropertyModel getPropertyModel()
-    {
-        return model;
-    }
-
-    /**
-     * Invoked from subclasses to do the rendering. The subclass controls the naming convention for locating an
-     * overriding Block parameter (it is the name of the property possibly suffixed with a value).
-     */
-    protected Object renderPropertyValue(MarkupWriter writer, String overrideBlockId)
-    {
-        Block override = overrides.getOverrideBlock(overrideBlockId);
-
-        if (override != null) return override;
-
-        String datatype = model.getDataType();
-
-        if (beanBlockSource.hasDisplayBlock(datatype))
-        {
-            PropertyOutputContext context = new PropertyOutputContext()
-            {
-                public Messages getMessages()
-                {
-                    return overrides.getOverrideMessages();
-                }
-
-                public Object getPropertyValue()
-                {
-                    return readPropertyForObject();
-                }
-
-                public String getPropertyId()
-                {
-                    return model.getId();
-                }
-
-                public String getPropertyName()
-                {
-                    return model.getPropertyName();
-                }
-            };
-
-            environment.push(PropertyOutputContext.class, context);
-            mustPopEnvironment = true;
-
-            return beanBlockSource.getDisplayBlock(datatype);
-        }
-
-        Object value = readPropertyForObject();
-
-        String text = value == null ? "" : value.toString();
-
-        if (InternalUtils.isNonBlank(text))
-        {
-            writer.write(text);
-        }
-
-        // Don't render anything else
-
-        return false;
-    }
-
-    Object readPropertyForObject()
-    {
-        PropertyConduit conduit = model.getConduit();
-
-        try
-        {
-            return conduit == null ? null : conduit.get(object);
-        }
-        catch (NullPointerException ex)
-        {
-            throw new NullPointerException(BaseMessages.nullValueInPath(model.getPropertyName()));
-        }
-    }
-
-    /**
-     * Returns false; there's no template and this prevents the body from rendering.
-     */
-    boolean beforeRenderTemplate()
-    {
-        return false;
-    }
-
-    void afterRender()
-    {
-        if (mustPopEnvironment)
-        {
-            environment.pop(PropertyOutputContext.class);
-            mustPopEnvironment = false;
-        }
-    }
-
-    // Used for testing.
-    void inject(final PropertyModel model, final Object object)
-    {
-        this.model = model;
-        this.object = object;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
deleted file mode 100644
index 2845062..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/AbstractTextField.java
+++ /dev/null
@@ -1,257 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.Width;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Request;
-
-import java.lang.annotation.Annotation;
-import java.util.Locale;
-
-/**
- * Abstract class for a variety of components that render some variation of a text field. Most of the hooks for user
- * input validation are in this class.
- * <p/>
- * In particular, all subclasses support the "toclient" and "parseclient" events.  These two events allow the normal
- * {@link Translator} (specified by the translate parameter, but often automatically derived by Tapestry) to be
- * augmented.
- * <p/>
- * If the component container (i.e., the page) provides an event handler method for the "toclient" event, and that
- * handler returns a non-null string, that will be the string value sent to the client. The context passed to the event
- * handler method is t he current value of the value parameter.
- * <p/>
- * Likewise, on a form submit, the "parseclient" event handler method will be passed the string provided by the client,
- * and may provide a non-null value as the parsed value.  Returning null allows the normal translator to operate.  The
- * event handler may also throw {@link org.apache.tapestry5.ValidationException}.
- */
-@Events({ EventConstants.TO_CLIENT, EventConstants.VALIDATE, EventConstants.PARSE_CLIENT })
-public abstract class AbstractTextField extends AbstractField
-{
-    /**
-     * The value to be read and updated. This is not necessarily a string, a translator may be provided to convert
-     * between client side and server side representations. If not bound, a default binding is made to a property of the
-     * container matching the component's id. If no such property exists, then you will see a runtime exception due to
-     * the unbound value parameter.
-     */
-    @Parameter(required = true, principal = true)
-    private Object value;
-
-    /**
-     * The object which will perform translation between server-side and client-side representations. If not specified,
-     * a value will usually be generated based on the type of the value parameter.
-     */
-    @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.TRANSLATE)
-    private FieldTranslator<Object> translate;
-
-    /**
-     * The object that will perform input validation (which occurs after translation). The validate binding prefix is
-     * generally used to provide this object in a declarative fashion.
-     */
-    @Parameter(defaultPrefix = BindingConstants.VALIDATE)
-    @SuppressWarnings("unchecked")
-    private FieldValidator<Object> validate;
-
-    /**
-     * Provider of annotations used for some defaults.  Annotation are usually provided in terms of the value parameter
-     * (i.e., from the getter and/or setter bound to the value parameter).
-     *
-     * @see org.apache.tapestry5.beaneditor.Width
-     */
-    @Parameter
-    private AnnotationProvider annotationProvider;
-
-    /**
-     * Defines how nulls on the server side, or sent from the client side, are treated. The selected strategy may
-     * replace the nulls with some other value. The default strategy leaves nulls alone.  Another built-in strategy,
-     * zero, replaces nulls with the value 0.
-     */
-    @Parameter(defaultPrefix = BindingConstants.NULLFIELDSTRATEGY, value = "default")
-    private NullFieldStrategy nulls;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Locale locale;
-
-    @Inject
-    private Request request;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderDisabled renderDisabled;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    /**
-     * Computes a default value for the "translate" parameter using {@link org.apache.tapestry5.services.ComponentDefaultProvider#defaultTranslator(String,
-     * org.apache.tapestry5.ComponentResources)}.
-     */
-    final Binding defaultTranslate()
-    {
-        return defaultProvider.defaultTranslatorBinding("value", resources);
-    }
-
-    final AnnotationProvider defaultAnnotationProvider()
-    {
-        return new AnnotationProvider()
-        {
-            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-            {
-                return resources.getParameterAnnotation("value", annotationClass);
-            }
-        };
-    }
-
-    /**
-     * Computes a default value for the "validate" parameter using {@link org.apache.tapestry5.services.FieldValidatorDefaultSource}.
-     */
-    final Binding defaultValidate()
-    {
-        return defaultProvider.defaultValidatorBinding("value", resources);
-    }
-
-    /**
-     * The default value is a property of the container whose name matches the component's id. May return null if the
-     * container does not have a matching property.
-     *
-     * @deprecated Likely to be removed in the future, use {@link org.apache.tapestry5.annotations.Parameter#autoconnect()}
-     *             instead
-     */
-    final Binding defaultValue()
-    {
-        return createDefaultParameterBinding("value");
-    }
-
-    @SuppressWarnings({ "unchecked" })
-    @BeginRender
-    void begin(MarkupWriter writer)
-    {
-        String value = tracker.getInput(this);
-
-        // If this is a response to a form submission, and the user provided a value.
-        // then send that exact value back at them.
-
-        if (value == null)
-        {
-            // Otherwise, get the value from the parameter ...
-            // Then let the translator and or various triggered events get it into
-            // a format ready to be sent to the client.
-
-            value = fieldValidationSupport.toClient(this.value, resources, translate, nulls);
-        }
-
-        writeFieldTag(writer, value);
-        
-        putPropertyNameIntoBeanValidationContext("value");
-
-        translate.render(writer);
-        validate.render(writer);
-        
-        removePropertyNameFromBeanValidationContext();
-
-        resources.renderInformalParameters(writer);
-
-        decorateInsideField();
-    }
-
-    /**
-     * Invoked from {@link #begin(MarkupWriter)} to write out the element and attributes (typically, &lt;input&gt;). The
-     * {@linkplain AbstractField#getControlName() controlName} and {@linkplain AbstractField#getClientId() clientId}
-     * properties will already have been set or updated.
-     * <p/>
-     * Generally, the subclass will invoke {@link MarkupWriter#element(String, Object[])}, and will be responsible for
-     * including an {@link AfterRender} phase method to invoke {@link MarkupWriter#end()}.
-     *
-     * @param writer markup write to send output to
-     * @param value  the value (either obtained and translated from the value parameter, or obtained from the tracker)
-     */
-    protected abstract void writeFieldTag(MarkupWriter writer, String value);
-
-    @SuppressWarnings({ "unchecked" })
-    @Override
-    protected void processSubmission(String elementName)
-    {
-        String rawValue = request.getParameter(elementName);
-
-        tracker.recordInput(this, rawValue);
-
-        try
-        {
-            Object translated = fieldValidationSupport.parseClient(rawValue, resources, translate, nulls);
-            
-            putPropertyNameIntoBeanValidationContext("value");
-
-            fieldValidationSupport.validate(translated, resources, validate);
-
-            // If the value provided is blank and we're ignoring blank input (i.e. PasswordField),
-            // then don't update the value parameter.
-
-            if (!(ignoreBlankInput() && InternalUtils.isBlank(rawValue)))
-                value = translated;
-        }
-        catch (ValidationException ex)
-        {
-            tracker.recordError(this, ex.getMessage());
-        }
-        
-        removePropertyNameFromBeanValidationContext();
-    }
-    
-
-    /**
-     * Should blank input be ignored (after validation)?  This will be true for {@link
-     * org.apache.tapestry5.corelib.components.PasswordField}.
-     */
-    protected boolean ignoreBlankInput()
-    {
-        return false;
-    }
-
-    @Override
-    public boolean isRequired()
-    {
-        return validate.isRequired();
-    }
-
-    /**
-     * Looks for a {@link org.apache.tapestry5.beaneditor.Width} annotation and, if present, returns its value as a
-     * string.
-     *
-     * @return the indicated width, or null if the annotation is not present
-     */
-    protected final String getWidth()
-    {
-        Width width = annotationProvider.getAnnotation(Width.class);
-
-        if (width == null) return null;
-
-        return Integer.toString(width.value());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/BaseMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/BaseMessages.java
deleted file mode 100644
index 43654c6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/base/BaseMessages.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-public final class BaseMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(BaseMessages.class);
-
-    public static String nullValueInPath(final String path)
-    {
-        return MESSAGES.format("null-value-in-path", path);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ActionLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ActionLink.java
deleted file mode 100644
index b9fab09..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ActionLink.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.corelib.base.AbstractComponentEventLink;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Component that triggers an action on the server with a subsequent full page refresh.
- */
-@Events(EventConstants.ACTION)
-public class ActionLink extends AbstractComponentEventLink
-{
-    @Inject
-    private ComponentResources resources;
-
-    @Override
-    protected Link createLink(Object[] contextArray)
-    {
-        return resources.createEventLink(EventConstants.ACTION, contextArray);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ActionLink.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ActionLink.xdoc
deleted file mode 100644
index dd29fae..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ActionLink.xdoc
+++ /dev/null
@@ -1,145 +0,0 @@
-<document>
-    <body>
-
-        <section name="Examples">
-
-            <p>
-                In this example, we are showing part of a page to view and Account object, with an option to
-                delete the Account.
-            </p>
-
-
-            <subsection name="Account.java">
-                <source><![CDATA[
-public class Account
-{
-    public long id;
-
-    public String userName;
-    
-}]]></source>
-            </subsection>
-
-            <subsection name="ViewAccount.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>View Account #${account.id}</h1>
-
-        <t:beandisplay object="account"/>
-
-        <p>
-          [<t:actionlink t:id="delete" context="account.id">delete</t:actionlink>
-        </p>
-    </body>
-</html>
-]]></source>
-
-                <p>
-                    We store the account's id as
-                    <em>event context</em>
-                    inside the URL. The account's id will
-                    be part of the URL and will be accessible when the event request is later triggered.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="ViewAccount.java">
-                <source><![CDATA[
-public class ViewAccount
-{
-    @Persist
-    private Account account;
-
-    @InjectPage
-    private AccountsSummary accountsSummaryPage;
-
-    @Inject
-    private AccountDAO accountDAO;
-
-    public Account getAccount() { return account; }
-
-    Object onActionFromDelete(long accountId)
-    {
-        accountDAO.delete(accountId);
-
-        accountsSummaryPage.setMessage(String.format("Account #%d has been deleted.", accountId));
-
-        return accountsSummaryPage;
-    }
-}
-]]></source>
-
-                <p>
-                    The ActionLink component triggers an "action" event, which is matched by the
-                    onActionFromDelete() method. A real application might have other action links on the page, for (say)
-                    creating new accounts or other operations, thus we use the component's id ("delete")
-                    to ensure that the method is only invoked under the expected circumstances.
-                </p>
-
-                <p>
-                    Notice how the context (from when the link was rendered) now becomes parameters
-                    to the event handler method.
-                </p>
-
-                <p>
-                    The AccountDAO (data access object) service is responsible for the work, we
-                    then set a message on another page (the field for this message should be persistent) and return
-                    the page. Tapestry will send a redirect request to the client to display the page.
-                </p>
-
-
-            </subsection>
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                Rarely, you might need to pass more information in the context. For example, perhaps
-                account id is not enought to uniquely identify the Account object in question - hypothetically,
-                you may need to include a company id as well as the account id. You can
-                build an object array to contain both values:
-            </p>
-            <p>You can do this in a template using the following syntax:</p>
-            <source><![CDATA[
-<t:actionlink t:id="delete" context="[account.companyId, account.id]">delete ${company.name} / ${account.id}</t:actionlink>
-
-            ]]>        </source>
-            
-            <source><![CDATA[
-    Object onActionFromDelete(long companyId, long accountId)
-    {
-        accountDAO.delete(companyId, accountId);
-
-        accountsSummaryPage.setMessage(String.format("Account #%d has been deleted.", accountId));
-
-        return accountsSummaryPage;
-    }]]></source>            
-            
-			<p>
-			Alternatively, you can provide a getter which returns an object array.
-			</p>
-            <source><![CDATA[
-    public Object[] getAccountContext()
-    {
-        return new Object[] { account.companyId, account.id };
-    }]]></source>
-
-            <p>
-                In the template, this would be referenced as:
-            </p>
-            <source><![CDATA[
-        <p>
-          [<t:actionlink t:id="delete" context="accountContext">delete</t:actionlink>
-        </p>]]></source>
-
-            <p>
-  This pattern was more common in early versions of Tapestry; the older versions of the property
-  expression language did not have the ability to create an array on the fly.
-</p>
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AddRowLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AddRowLink.java
deleted file mode 100644
index 445fcbb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AddRowLink.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.internal.AjaxFormLoopContext;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Used inside an {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} component to spur the addition of a new
- * row. Triggers a server-side {@linkplain org.apache.tapestry5.EventConstants#ADD_ROW addRow} event on the
- * AjaxFormLoop, which must return the newly added object, which will be rendered in the body of the AjaxFormLoop and
- * sent to the client web browser.
- */
-@SupportsInformalParameters
-public class AddRowLink
-{
-    @Environmental
-    private AjaxFormLoopContext context;
-
-    @Inject
-    private JavaScriptSupport jsSupport;
-
-    @Inject
-    private ComponentResources resources;
-
-    void beginRender(MarkupWriter writer)
-    {
-        String id = jsSupport.allocateClientId(resources);
-
-        writer.element("a", "id", id, "href", "#");
-        resources.renderInformalParameters(writer);
-
-        context.addAddRowTrigger(id);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
deleted file mode 100644
index 550cb4c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.java
+++ /dev/null
@@ -1,451 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.util.Collections;
-import java.util.Iterator;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Log;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.internal.AjaxFormLoopContext;
-import org.apache.tapestry5.internal.services.PageRenderQueue;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * A special form of the {@link org.apache.tapestry5.corelib.components.Loop} component that adds Ajax support to
- * handle adding new rows and removing existing rows dynamically. Expects that the values being iterated over are
- * entities that can be identified via a {@link org.apache.tapestry5.ValueEncoder}.
- * <p/>
- * Works with {@link org.apache.tapestry5.corelib.components.AddRowLink} and
- * {@link org.apache.tapestry5.corelib.components.RemoveRowLink} components.
- * <p/>
- * The addRow event will receive the context specified by the context parameter.
- * <p/>
- * The removeRow event will receive the client-side value for the row being iterated.
- * 
- * @see EventConstants#ADD_ROW
- * @see EventConstants#REMOVE_ROW
- */
-@Events(
-{ EventConstants.ADD_ROW, EventConstants.REMOVE_ROW })
-public class AjaxFormLoop
-{
-    /**
-     * The element to render for each iteration of the loop. The default comes from the template, or "div" if the
-     * template did not specify an element.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    @Property(write = false)
-    private String element;
-
-    /**
-     * The objects to iterate over (passed to the internal Loop component).
-     */
-    @Parameter(required = true, autoconnect = true)
-    private Iterable source;
-
-    /**
-     * The current value from the source.
-     */
-    @Parameter(required = true)
-    private Object value;
-
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make added content
-     * visible. This is used with the {@link FormInjector} component, when adding a new row to the loop. Leaving as
-     * null uses the default function, "highlight".
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String show;
-
-    /**
-     * The context for the form loop (optional parameter). This list of values will be converted into strings and
-     * included in the URI. The strings will be coerced back to whatever their values are and made available to event
-     * handler methods.
-     */
-    @Parameter
-    private Object[] context;
-
-    /**
-     * A block to render after the loop as the body of the {@link org.apache.tapestry5.corelib.components.FormInjector}.
-     * This typically contains a {@link org.apache.tapestry5.corelib.components.AddRowLink}.
-     */
-    @Parameter(value = "block:defaultAddRow", defaultPrefix = BindingConstants.LITERAL)
-    @Property(write = false)
-    private Block addRow;
-
-    /**
-     * The block that contains the form injector (it is rendered last, as the "tail" of the AjaxFormLoop). This, in
-     * turn, references the addRow block (from a parameter, or a default).
-     */
-    @Inject
-    private Block tail;
-
-    /**
-     * Required parameter used to convert server-side objects (provided from the source) into client-side ids and back.
-     * A default encoder may be calculated from the type of property bound to the value parameter.
-     */
-    @Parameter(required = true, allowNull = false)
-    private ValueEncoder<Object> encoder;
-
-    @InjectComponent
-    private ClientElement rowInjector;
-
-    @InjectComponent
-    private FormFragment fragment;
-
-    @Inject
-    private Block ajaxResponse;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Environmental
-    private Heartbeat heartbeat;
-
-    @Inject
-    private Environment environment;
-
-    @Inject
-    private JavaScriptSupport jsSupport;
-
-    private JSONArray addRowTriggers;
-
-    private Iterator iterator;
-
-    @Inject
-    private TypeCoercer typeCoercer;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private PageRenderQueue pageRenderQueue;
-
-    private boolean renderingInjector;
-
-    ValueEncoder defaultEncoder()
-    {
-        return defaultProvider.defaultValueEncoder("value", resources);
-    }
-
-    private final AjaxFormLoopContext formLoopContext = new AjaxFormLoopContext()
-    {
-        public void addAddRowTrigger(String clientId)
-        {
-            assert InternalUtils.isNonBlank(clientId);
-            addRowTriggers.put(clientId);
-        }
-
-        private String currentFragmentId()
-        {
-            ClientElement element = renderingInjector ? rowInjector : fragment;
-
-            return element.getClientId();
-        }
-
-        public void addRemoveRowTrigger(String clientId)
-        {
-            Link link = resources.createEventLink("triggerRemoveRow", toClientValue());
-
-            String asURI = link.toURI();
-
-            JSONObject spec = new JSONObject();
-            spec.put("link", clientId);
-            spec.put("fragment", currentFragmentId());
-            spec.put("url", asURI);
-
-            jsSupport.addInitializerCall("formLoopRemoveLink", spec);
-        }
-    };
-
-    String defaultElement()
-    {
-        return resources.getElementName("div");
-    }
-
-    /**
-     * Action for synchronizing the current element of the loop by recording its client value.
-     */
-    static class SyncValue implements ComponentAction<AjaxFormLoop>
-    {
-        private final String clientValue;
-
-        public SyncValue(String clientValue)
-        {
-            this.clientValue = clientValue;
-        }
-
-        public void execute(AjaxFormLoop component)
-        {
-            component.syncValue(clientValue);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("AjaxFormLoop.SyncValue[%s]", clientValue);
-        }
-    }
-
-    private static final ComponentAction<AjaxFormLoop> BEGIN_HEARTBEAT = new ComponentAction<AjaxFormLoop>()
-    {
-        public void execute(AjaxFormLoop component)
-        {
-            component.beginHeartbeat();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "AjaxFormLoop.BeginHeartbeat";
-        }
-    };
-
-    @Property(write = false)
-    private final Renderable beginHeartbeat = new Renderable()
-    {
-        public void render(MarkupWriter writer)
-        {
-            formSupport.storeAndExecute(AjaxFormLoop.this, BEGIN_HEARTBEAT);
-        }
-    };
-
-    private static final ComponentAction<AjaxFormLoop> END_HEARTBEAT = new ComponentAction<AjaxFormLoop>()
-    {
-        public void execute(AjaxFormLoop component)
-        {
-            component.endHeartbeat();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "AjaxFormLoop.EndHeartbeat";
-        }
-    };
-
-    @Property(write = false)
-    private final Renderable endHeartbeat = new Renderable()
-    {
-        public void render(MarkupWriter writer)
-        {
-            formSupport.storeAndExecute(AjaxFormLoop.this, END_HEARTBEAT);
-        }
-    };
-
-    @Property(write = false)
-    private final Renderable beforeBody = new Renderable()
-    {
-        public void render(MarkupWriter writer)
-        {
-            beginHeartbeat();
-            syncCurrentValue();
-        }
-    };
-
-    @Property(write = false)
-    private final Renderable afterBody = new Renderable()
-    {
-        public void render(MarkupWriter writer)
-        {
-            endHeartbeat();
-        }
-    };
-
-    @SuppressWarnings(
-    { "unchecked" })
-    @Log
-    private void syncValue(String clientValue)
-    {
-        Object value = encoder.toValue(clientValue);
-
-        if (value == null)
-            throw new RuntimeException(String.format(
-                    "Unable to convert client value '%s' back into a server-side object.", clientValue));
-
-        this.value = value;
-    }
-
-    @Property(write = false)
-    private final Renderable syncValue = new Renderable()
-    {
-        public void render(MarkupWriter writer)
-        {
-            syncCurrentValue();
-        }
-    };
-
-    private void syncCurrentValue()
-    {
-        String id = toClientValue();
-
-        // Add the command that restores value from the value clientValue,
-        // when the form is submitted.
-
-        formSupport.store(this, new SyncValue(id));
-    }
-
-    /**
-     * Uses the {@link org.apache.tapestry5.ValueEncoder} to convert the current server-side value to a client-side
-     * value.
-     */
-    @SuppressWarnings(
-    { "unchecked" })
-    private String toClientValue()
-    {
-        return encoder.toClient(value);
-    }
-
-    void setupRender()
-    {
-        addRowTriggers = new JSONArray();
-
-        pushContext();
-
-        iterator = source == null ? Collections.EMPTY_LIST.iterator() : source.iterator();
-
-        renderingInjector = false;
-    }
-
-    private void pushContext()
-    {
-        environment.push(AjaxFormLoopContext.class, formLoopContext);
-    }
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        if (!iterator.hasNext())
-            return false;
-
-        value = iterator.next();
-
-        return true; // Render body, etc.
-    }
-
-    Object afterRender(MarkupWriter writer)
-    {
-        // When out of source items to render, switch over to the addRow block (either the default,
-        // or from the addRow parameter) before proceeding to cleanup render.
-
-        if (!iterator.hasNext())
-        {
-            renderingInjector = true;
-            return tail;
-        }
-
-        // There's more to come, loop back to begin render.
-
-        return false;
-    }
-
-    void cleanupRender()
-    {
-        popContext();
-
-        JSONObject spec = new JSONObject();
-
-        spec.put("rowInjector", rowInjector.getClientId());
-        spec.put("addRowTriggers", addRowTriggers);
-
-        jsSupport.addInitializerCall("ajaxFormLoop", spec);
-    }
-
-    private void popContext()
-    {
-        environment.pop(AjaxFormLoopContext.class);
-    }
-
-    /**
-     * When the action event arrives from the FormInjector, we fire our own event, "addRow" to tell the container to add
-     * a new row, and to return that new entity for rendering.
-     */
-    @Log
-    Object onActionFromRowInjector(EventContext context)
-    {
-        ComponentEventCallback callback = new ComponentEventCallback()
-        {
-            public boolean handleResult(Object result)
-            {
-                value = result;
-
-                return true;
-            }
-        };
-
-        resources.triggerContextEvent(EventConstants.ADD_ROW, context, callback);
-
-        if (value == null)
-            throw new IllegalArgumentException(String.format(
-                    "Event handler for event 'addRow' from %s should have returned a non-null value.",
-                    resources.getCompleteId()));
-
-        renderingInjector = true;
-
-        pageRenderQueue.addPartialMarkupRendererFilter(new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                pushContext();
-
-                renderer.renderMarkup(writer, reply);
-
-                popContext();
-            }
-        });
-
-        return ajaxResponse;
-    }
-
-    @Log
-    Object onTriggerRemoveRow(String rowId)
-    {
-        Object value = encoder.toValue(rowId);
-
-        resources.triggerEvent(EventConstants.REMOVE_ROW, new Object[]
-        { value }, null);
-
-        return new JSONObject();
-    }
-
-    private void beginHeartbeat()
-    {
-        heartbeat.begin();
-    }
-
-    private void endHeartbeat()
-    {
-        heartbeat.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.xdoc
deleted file mode 100644
index b204034..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/AjaxFormLoop.xdoc
+++ /dev/null
@@ -1,301 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-
-            <ul>
-                <li>
-                    <a href="AddRowLink.html">AddRowLink</a>
-                </li>
-                <li>
-                    <a href="RemoveRowLink.html">RemoveRowLink</a>
-                </li>
-                <li>
-                    <a href="Loop.html">Loop</a>
-                </li>
-                <li>
-                    <a href="FormInjector.html">FormInjector</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Examples">
-
-            <p>
-                AjaxFormLoop renders an extensible, editable list of entities. It is intended for use with Master/Detail
-                relationships
-                (such as between an Order and a LineItem, in an e-commerce application). It allows new detail objects
-                to be added on the server side, with corresponding new user interface added to the client side.
-                Likewise,
-                existing server-side objects can be removed, and the corresponding user interface also removed.
-            </p>
-
-            <p>
-                AjaxFormLoop is dependent on the ability to extract an identifier (a primary key) from objects when
-                rendering, and
-                then retrieve the full object in a later request, such as when the form is submitted. This aligns well
-                with
-                an Object Relational Mapping layer such as Hibernate.
-            </p>
-
-
-            <p>
-                This example has an address book of Persons, each of which has multiple Phones. It is, in fact,
-                implemented in terms of Hibernate, using the tapestry-hibernate module.
-            </p>
-
-            <img src="ajaxformloop.png"/>
-
-
-            <subsection name="Person.java">
-                <source><![CDATA[package org.example.addressbook.entities;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.beaneditor.Width;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import javax.persistence.*;
-import java.util.List;
-
-@Entity
-public class Person
-{
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @NonVisual
-    private long id;
-
-    . . .
-
-    @OneToMany(mappedBy = "person", cascade = CascadeType.ALL)
-    private List<Phone> phones = new ArrayList<Phone>();
-
-    . . .
-
-    public List<Phone> getPhones()
-    {
-        return phones;
-    }
-
-    public void setPhones(List<Phone> phones)
-    {
-        this.phones = phones;
-    }
-}
-]]></source>
-            </subsection>
-
-            <subsection name="PhoneType.java">
-                <source><![CDATA[package org.example.addressbook.entities;
-
-public enum PhoneType
-{
-    HOME, OFFICE, MOBILE, FAX, PAGER
-}
-]]></source>
-            </subsection>
-
-            <subsection name="Phone.java">
-                <source><![CDATA[package org.example.addressbook.entities;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.beaneditor.Width;
-
-import javax.persistence.*;
-
-@Entity
-public class Phone
-{
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @NonVisual
-    private long id;
-
-    @ManyToOne(optional = false)
-    private Person person;
-
-    private PhoneType type;
-
-    @Column(nullable = true, length = 20)
-    @Width(20)
-    @Validate("required,maxlength=20")
-    private String number;
-
-    public long getId()
-    {
-        return id;
-    }
-
-    public void setId(long id)
-    {
-        this.id = id;
-    }
-
-    public Person getPerson()
-    {
-        return person;
-    }
-
-    public void setPerson(Person person)
-    {
-        this.person = person;
-    }
-
-    public PhoneType getType()
-    {
-        return type;
-    }
-
-    public void setType(PhoneType type)
-    {
-        this.type = type;
-    }
-
-    public String getNumber()
-    {
-        return number;
-    }
-
-    public void setNumber(String number)
-    {
-        this.number = number;
-    }
-}
-]]></source>
-                <p>Notice that the number field is nullable but required. This is because, when creating a new Phone
-                    instance, we have no number to fill in.
-                    However, a number is expected, and the user interface enforces that.
-                </p>
-            </subsection>
-
-            <subsection name="Edit.tml">
-                <source><![CDATA[<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <body>
-    <h1>Edit ${person.firstName} ${person.lastName}</h1>
-
-    <t:form t:id="form">
-
-      <t:errors/>
-
-      <div class="t-beaneditor">
-
-        <t:beaneditor t:id="person"/>
-
-        <h2>Phones</h2>
-
-        <div t:type="ajaxformloop" t:id="phones" source="person.phones" value="phone">
-          <t:select t:id="type" value="phone.type"/>
-          <t:textfield t:id="number" value="phone.number"/>
-
-          |
-
-          <t:removerowlink>remove</t:removerowlink>
-
-
-        </div>
-
-        <p>
-          <input type="submit" value="Update"/>
-        </p>
-      </div>
-    </t:form>
-
-  </body>
-</html>]]></source>
-
-                <p>
-                    Here we're editing the direct properties of the Person object and adding a section below to allow
-                    the phones for the person to be edited. The AjaxFormLoop looks much like a Loop component here,
-                    except we must provide a PrimaryKeyEncoder object.
-                </p>
-
-                <p>
-                    Each row provides a RemoveRowLink component that will remove that row (from the server side, then on
-                    the client side).
-                </p>
-
-                <p>
-                    The AjaxFormLoop provides a default row for adding additional data rows.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="Edit.java">
-                <source><![CDATA[package org.example.addressbook.pages;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.annotations.PageActivationContext;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.addressbook.entities.Person;
-import org.example.addressbook.entities.Phone;
-import org.hibernate.Session;
-
-import java.util.List;
-
-public class Edit
-{
-  @PageActivationContext
-  @Property
-  private Person person;
-
-  @Property
-  private Phone phone;
-
-  @Inject
-  private Session session;
-
-  @CommitAfter
-  public Object onSuccess()
-  {
-    return Index.class;
-  }
-
-  @CommitAfter
-  Object onAddRowFromPhones()
-  {
-    Phone phone = new Phone();
-
-    person.getPhones().add(phone);
-    phone.setPerson(person);
-
-    return phone;
-  }
-
-  @CommitAfter
-  void onRemoveRowFromPhones(Phone phone)
-  {
-    session.delete(phone);
-  }
-}
-]]></source>
-            </subsection>
-
-            <p>
-                The onAddRowFromPhones() event handler method's job is to add a new Phone instance and
-                connect it to the Person. The @CommitAfter annotation ensures that changes are saved
-                to the database (including generating a primary key for the new Phone instance).
-            </p>
-
-            <p>
-                The flip side is onRemoveRowFromPhones(), which is the event handler when removing a row.
-                The event handler method is passed the Phone object to remove. Again, it is necessary
-                to commit the Hibernate transaction.
-            </p>
-
-            <p>
-            AjaxFormLoop has to determine how to store an id for each editable row (remember that the client
-            side can only really store strings, not full Java objects); in some cases you will
-            have to bind the encoder parameter to a ValueEncoder object that is specific for your data type.
-            However, this is not necessary for any Hibernate entities, as Tapestry automatically provides
-            th ValueEncoder.
-            </p>
-
-        </section>
-
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Any.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Any.java
deleted file mode 100644
index 3fdfcc2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Any.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Renders an arbitrary element including informal parameters.
- */
-@SupportsInformalParameters
-public class Any implements ClientElement
-{
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String element;
-
-    /**
-     * The desired client id, which defaults to the components id.
-     */
-    @Parameter(value = "prop:componentResources.id", defaultPrefix = BindingConstants.LITERAL)
-    private String clientId;
-
-    private Element anyElement;
-
-    private String uniqueId;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private JavaScriptSupport javascriptSupport;
-
-    String defaultElement()
-    {
-        return resources.getElementName("div");
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        anyElement = writer.element(element);
-
-        uniqueId = null;
-
-        resources.renderInformalParameters(writer);
-    }
-
-    /**
-     * Returns the client id. This has side effects: this first time this is called (after the Any component renders
-     * its start tag), a unique id is allocated (based on, and typically the same as, the clientId parameter, which
-     * defaults to the component's id). The rendered element is updated, with its id attribute set to the unique client
-     * id, which is then returned.
-     * 
-     * @return unique client id for this component
-     */
-    public String getClientId()
-    {
-        if (anyElement == null)
-            throw new IllegalStateException(String.format(
-                    "Unable to provide client id for component %s as it has not yet rendered.", resources
-                            .getCompleteId()));
-
-        if (uniqueId == null)
-        {
-            uniqueId = javascriptSupport.allocateClientId(clientId);
-            anyElement.forceAttributes("id", uniqueId);
-        }
-
-        return uniqueId;
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end(); // the element
-    }
-
-    void inject(JavaScriptSupport javascriptSupport, ComponentResources resources, String element, String clientId)
-    {
-        this.javascriptSupport = javascriptSupport;
-        this.resources = resources;
-        this.element = element;
-        this.clientId = clientId;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
deleted file mode 100644
index d366efa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.java
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
-
-/**
- * Used to display the properties of a bean, using an underlying {@link BeanModel}. The output definition list: a
- * &lt;dl&gt; element containing a series of &lt;dt&gt;/&lt;dd&gt; pairs. The property label is used as the &lt;dt&gt;
- * and the property value (formatted as per the datatype) is the &lt;dd&gt;. Only properties that have a known data type
- * are displayed.
- * <p/>
- * The property id is used as the class attribute of the &lt;dt&gt; and &lt;dd&gt; element, allowing CSS customization
- * per property. This does not occur when lean is bound to true.
- * <p/>
- * The outer &lt;dl&gt; element has the CSS class "t-beandisplay".
- * 
- * @see org.apache.tapestry5.beaneditor.DataType
- * @see BeanModel
- */
-@SupportsInformalParameters
-public class BeanDisplay
-{
-
-    /**
-     * The object to be rendered; if not explicitly bound, a default binding to a property whose name matches this
-     * component's id will be used.
-     */
-    @Parameter(required = true, allowNull = false, autoconnect = true)
-    @Property(write = false)
-    private Object object;
-
-    /**
-     * If true, then the CSS class attribute on the &lt;dt&gt; and &lt;dd&gt; elements will be ommitted.
-     */
-    @Parameter(value = "false")
-    private boolean lean;
-
-    /**
-     * The model that identifies the parameters to be edited, their order, and every other aspect. If not specified, a
-     * default bean model will be created from the type of the object bound to the object parameter. The add, include,
-     * exclude and reorder
-     * parameters are <em>only</em> applied to a default model, not an explicitly provided one.
-     */
-    @Parameter
-    @Property(write = false)
-    private BeanModel model;
-    /**
-     * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
-     * when a default model is created automatically).
-     * Only these properties will be retained, and the properties will also be reordered. The names are
-     * case-insensitive.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String include;
-
-    /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * (only used
-     * when a default model is created automatically).
-     * The names are case-insensitive.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String exclude;
-
-    /**
-     * A comma-separated list of property names indicating the order in which the properties should be presented. The
-     * names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
-     * orde. Only used
-     * when a default model is created automatically.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String reorder;
-
-    /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * (only used
-     * when a default model is created automatically).
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String add;
-
-    /**
-     * Where to search for local overrides of property display blocks as block parameters. Further, the container of the
-     * overrides is used as the source for overridden validation messages. This is normally the component itself, but
-     * when the component is used within a BeanEditForm, it will be the BeanEditForm's block parameter that will be
-     * searched.
-     */
-    @Parameter(value = "componentResources")
-    @Property(write = false)
-    private ComponentResources overrides;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private BeanModelSource modelSource;
-
-    @Property
-    private String propertyName;
-
-    void setupRender()
-    {
-        if (model == null)
-        {
-            model = modelSource.createDisplayModel(object.getClass(), overrides.getContainerMessages());
-
-            BeanModelUtils.modify(model, add, include, exclude, reorder);
-        }
-    }
-
-    /**
-     * Returns the property model for the current property.
-     */
-    public PropertyModel getPropertyModel()
-    {
-        return model.get(propertyName);
-    }
-
-    public String getPropertyClass()
-    {
-        return lean ? null : getPropertyModel().getId();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.xdoc
deleted file mode 100644
index 14bb4eb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanDisplay.xdoc
+++ /dev/null
@@ -1,187 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-
-            <ul>
-                <li>
-                    <a href="BeanEditForm.html">BeanEditForm</a>
-                </li>
-                <li>
-                    <a href="Grid.html">Grid</a>
-                </li>
-            </ul>
-
-        </section>
-
-        <section name="Examples">
-
-            <p>
-                Here, we'll display a User object, consisting
-                of a first name, last name and age. We'll also customize the output of the last name property, to
-                display the name in all upper-case. The result:
-            </p>
-
-            <p>
-                <img src="beandisplay_ref.png"/>
-            </p>
-
-            <subsection name="User.java">
-                <source><![CDATA[
-public class User
-{
-    @NonVisual
-    private long id;
-    
-    private String firstName;
-
-    private String lastName;
-
-    private int age;
-
-    public long getId() { return id; }
-
-    public void setId(long id) { this.id = id; }
-
-    public String getFirstName() { return firstName; }
-
-    public void setFirstName(String firstName) { this.firstName = firstName; }
-
-    public String getLastName() { return lastName; }
-
-    public void setLastName(String lastName) { this.lastName = lastName; }
-
-    public int getAge() { return age; }
-
-    public void setAge(int age) { this.age = age; }
-}]]></source>
-
-                <p>The @NonVisual annotation prevents the id property from being displayed.</p>
-
-            </subsection>
-
-            <subsection name="ViewUser.java">
-                <source><![CDATA[
-public class ViewUser
-{
-    @Persist
-    private User user;
-
-    public User getUser()
-    {
-        return user;
-    }
-
-    public void setUser(User user)
-    {
-        this.user = user;
-    }
-}]]></source>
-
-                <p>
-                    Presumably, some other page is obtaining the User instance and invoking the setUser() method.
-                </p>
-
-            </subsection>
-
-
-            <subsection name="ViewUser.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
-    <body>
-        <h1>View User</h1>
-
-        <t:beandisplay object="user">
-            <p:lastName>
-                ${bean.lastname.toUpperCase()}
-            </p:lastName>
-        </t:beandisplay>
-    </body>
-</html>
-]]></source>
-
-                <p>
-                    The
-                    <code><![CDATA[<p:lastName>]]></code>
-                    element is an
-                    <em>override</em>
-                    for the property. The name is
-                    matched against a property of the bean.
-                </p>
-
-                <p>
-                    Here we are leveraging the ability to invoke methods as part of a property expression.
-                    We are also highlighting Tapestry's case insensitivity ("lastname" vs. "lastName").
-                </p>
-
-            </subsection>
-        </section>
-
-        <section name="CSS Customization">
-
-            <p>
-                The content is rendered as a &lt;dl&gt; (definition list) element, containing &lt;dt&gt; (term) and
-                &lt;dd&gt; (definition) elements.
-            </p>
-
-            <p>
-                The &lt;dt&gt; will have the CSS class "t-beandisplay".
-            </p>
-
-            <p>
-                The &lt;dt&gt; and &lt;dd&gt; elements will have the property id as the CSS class name (i.e.,
-                "firstName", "lastName", etc.). This allows individual properties of the bean to have specific CSS rules
-                applied.
-            </p>
-
-            <p>
-                The ":" after the property label is supplied via CSS.
-            </p>
-
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                You can re-order the properties using the reorder parameter:
-            </p>
-
-            <source><![CDATA[<t:beandisplay object="user" reorder="lastname,firstname"/>]]></source>
-
-            <p>
-                You can accomplish the same thing by changing the order of the
-                getter methods in the bean class. The default order for properties is not alphabetical,
-                it is the order of the getter methods.
-            </p>
-
-
-            <p>
-                You can also remove properties with the exclude parameter, which is equivalent to the
-                @NonVisual annotation.
-            </p>
-
-            <p>
-                You might find
-                <code><![CDATA[<t:beandisplay object="this"/>]]></code>
-                useful on occasion. It will display all the properties of the current page.
-            </p>
-
-            <p>
-                As with the
-                <a href="BeanEditForm.html">BeanEditForm</a>
-                component,
-                you may override the labels displayed for the fields using
-                the page's message catalog.
-            </p>
-
-            <p>
-                Please refer to the
-                <a href="PageLink.html">PageLink</a>
-                component documentation for an alternate way to manage the user field.
-            </p>
-
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
deleted file mode 100644
index ade2f8c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.java
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
-import org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-/**
- * A component that creates an entire form editing the properties of a particular bean. Inspired by <a
- * href="http://www.trailsframework.org/">Trails</a> and <a href="http://beanform.sourceforge.net/">BeanForm</a> (both
- * for Tapestry 4). Generates a simple UI for editing the properties of a JavaBean, with the flavor of UI for each
- * property (text field, checkbox, drop down list) determined from the property type (or by other means, such as an
- * annotation), and the order and validation for the properties determined from annotations on the property's getter and
- * setter methods.
- * <p/>
- * You may add block parameters to the component; when the name matches (case insensitive) the name of a property, then
- * the corresponding Block is renderered, rather than any of the built in property editor blocks. This allows you to
- * override specific properties with your own customized UI, for cases where the default UI is insufficient, or no
- * built-in editor type is appropriate.
- * <p/>
- * BeanEditForm contains a {@link org.apache.tapestry5.corelib.components.Form} component and will trigger all the
- * events of a Form.
- * 
- * @see org.apache.tapestry5.beaneditor.BeanModel
- * @see org.apache.tapestry5.services.BeanModelSource
- * @see org.apache.tapestry5.corelib.components.PropertyEditor
- * @see org.apache.tapestry5.beaneditor.DataType
- */
-@SupportsInformalParameters
-@Events(EventConstants.PREPARE)
-public class BeanEditForm implements ClientElement, FormValidationControl
-{
-
-    /**
-     * The text label for the submit button of the form, by default "Create/Update".
-     */
-    @Parameter(value = "message:submit-label", defaultPrefix = BindingConstants.LITERAL)
-    @Property
-    private String submitLabel;
-
-    /**
-     * The object to be edited. This will be read when the component renders and updated when the form for the component
-     * is submitted. Typically, the container will listen for a "prepare" event, in order to ensure that a non-null
-     * value is ready to be read or updated. Often, the BeanEditForm can create the object as needed (assuming a public,
-     * no arguments constructor). The object property defaults to a property with the same name as the component id.
-     */
-    @Parameter(required = true, autoconnect = true)
-    @Property
-    private Object object;
-
-    /**
-     * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
-     * when a default model is created automatically).
-     * Only these properties will be retained, and the properties will also be reordered. The names are
-     * case-insensitive.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String include;
-
-    /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * (only used
-     * when a default model is created automatically).
-     * The names are case-insensitive.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String exclude;
-
-    /**
-     * A comma-separated list of property names indicating the order in which the properties should be presented. The
-     * names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
-     * orde. Only used
-     * when a default model is created automatically.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String reorder;
-
-    /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * (only used
-     * when a default model is created automatically).
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String add;
-
-    @Component(parameters = "validationId=componentResources.id", publishParameters = "clientValidation,autofocus,zone")
-    private Form form;
-
-    /**
-     * If set to true, then the form will include an additional button after the submit button labeled "Cancel".
-     * The cancel button will submit the form, bypassing client-side validation. The BeanEditForm will fire a
-     * {@link EventConstants#CANCELED} event (before the form's {@link EventConstants#VALIDATE} event).
-     * 
-     * @since 5.2.0
-     */
-    @Property
-    @Parameter
-    private boolean cancel;
-
-    /**
-     * The model that identifies the parameters to be edited, their order, and every other aspect. If not specified, a
-     * default bean model will be created from the type of the object bound to the object parameter. The add, include,
-     * exclude and reorder parameters are <em>only</em> applied to a default model, not an explicitly provided one.
-     */
-    @SuppressWarnings("unused")
-    @Parameter
-    @Property
-    private BeanModel model;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private BeanModelSource beanModelSource;
-
-    @SuppressWarnings("unchecked")
-    @Environmental
-    private TrackableComponentEventCallback eventCallback;
-
-    void onPrepareFromForm()
-    {
-        resources.triggerEvent(EventConstants.PREPARE, null, null);
-
-        if (model == null)
-        {
-            Class beanType = resources.getBoundType("object");
-
-            model = beanModelSource.createEditModel(beanType, resources.getContainerMessages());
-
-            BeanModelUtils.modify(model, add, include, exclude, reorder);
-        }
-    }
-
-    /**
-     * Returns the client id of the embedded form.
-     */
-    public String getClientId()
-    {
-        return form.getClientId();
-    }
-
-    public void clearErrors()
-    {
-        form.clearErrors();
-    }
-
-    public boolean getHasErrors()
-    {
-        return form.getHasErrors();
-    }
-
-    public boolean isValid()
-    {
-        return form.isValid();
-    }
-
-    public void recordError(Field field, String errorMessage)
-    {
-        form.recordError(field, errorMessage);
-    }
-
-    public void recordError(String errorMessage)
-    {
-        form.recordError(errorMessage);
-    }
-
-    boolean onSelectedFromCancel() throws IOException
-    {
-        resources.triggerEvent(EventConstants.CANCELED, null, eventCallback);
-
-        // Prevent further event handlers.
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.xdoc
deleted file mode 100644
index 0bf9198..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditForm.xdoc
+++ /dev/null
@@ -1,321 +0,0 @@
-<document>
-    <body>
-
-        <p>
-            The BeanEditForm component is a convienent wrapper around three components:
-            <a href="Form.html">Form</a>,
-            <a href="Errors.html">Errors</a>
-            and
-            <a href="BeanEditor.html">BeanEditor</a>.
-        </p>
-
-
-        <section name="Related Components">
-
-            <ul>
-                <li>
-                    <a href="BeanDisplay.html">BeanDisplay</a>
-                </li>
-                <li>
-                    <a href="Grid.html">Grid</a>
-                </li>
-            </ul>
-
-        </section>
-
-        <section name="Simple Example">
-
-            <p>
-                Using the bean editor, we can easily create a simple form for collecting information
-                from the user. In this example, we'll collect a little bit of data about a User:
-            </p>
-
-            <p>
-                <img src="beaneditform_ref_simple.png"/>
-            </p>
-
-            <p>
-                The bean to edit will be a property of the containing page.
-            </p>
-
-            <subsection name="User.java">
-                <source><![CDATA[
-import org.apache.tapestry5.beaneditor.NonVisual;
-
-public class User
-{
-    private long id;
-
-    private String firstName;
-
-    private String lastName;
-
-    private int age;
-
-    public long getId() { return id; }
-
-    @NonVisual
-    public void setId(long id) { this.id = id; }
-
-    public String getFirstName() { return firstName; }
-
-    public void setFirstName(String firstName) { this.firstName = firstName; }
-
-    public String getLastName() { return lastName; }
-
-    public void setLastName(String lastName) { this.lastName = lastName; }
-
-    public int getAge() { return age; }
-
-    public void setAge(int age) { this.age = age; }
-}]]></source>
-
-                <p>The @NonVisual annotation prevents the id from being displayed.</p>
-
-            </subsection>
-
-
-            <subsection name="CreateUser.tml">
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
-    <body>
-        <h1>Create New User</h1>
-
-        <t:beaneditform t:id="user" submitlabel="message:create-user"/>
-    </body>
-</html>
-]]></source>
-
-                <p>
-                    Nominally, we should have to bind the object parameter of the BeanEditForm component. However, as
-                    a convenience, Tapestry has defaulted the object parameter
-                    based on the component id. This works because the CreateUser class
-                    includes a property named "user", which matches the BeanEditForm component's id.
-
-                </p>
-
-                <p>
-                    When the object to be edited is not a direct property of the page,
-                    it will be necessary to bind the object parameter explicitly. For example,
-                    <code>object="registration.address"</code>
-                    to create or edit the address
-                    property of the page's registration property. Component ids may not contain periods,
-                    so there's no way to specify this without the object parameter. A best practice is to still
-                    explicitly set the component's id, thus:
-                    <code><![CDATA[<t:beaneditform t:id="address" object="registration.address"/>]]></code>
-                </p>
-
-
-            </subsection>
-
-            <subsection name="CreateUser.properties">
-
-                <source><![CDATA[
-create-user=Create New User
-firstname-label=Given Name
-lastname-label=Family Name]]></source>
-
-                <p>
-                    We are using the page's message catalog to supply a messages. Externalizing such messages
-                    make them easier to work with, especially for an application that may be localized.
-                </p>
-
-                <p>
-                    The
-                    <code>create-user</code>
-                    key is explicitly referenced (<code>submitlabel="message:create-user"</code>).
-                    This becomes the label on the submit button for the generated form.
-                </p>
-
-                <p>
-                    The two label keys will be picked up and used as the labels for the corresponding properties
-                    (in both the rendered &lt;label&gt; elements, and in any error messages).
-                </p>
-
-                <p>
-                    In many cases, common entries can be moved up to an application-wide message catalog. In that case,
-                    the page's own message catalog becomes a local override.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="CreateUser.java">
-                <source><![CDATA[
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class CreateUser
-{
-    @Persist
-    private User user;
-
-    @Inject
-    private UserDAO userDAO;
-
-    public User getUser()
-    {
-      return user;
-    }
-
-    public void setUser(User user)
-    {
-      this.user = user;
-    }
-
-    Object onSuccess()
-    {
-        userDAO.add(user);
-
-        return UserAdmin.class;
-    }
-}]]></source>
-
-
-                <p>
-                    Notice that we don't instantiate the User object ourselves; instead we let the BeanEditForm
-                    component
-                    do that for us. It's capable of doing so because the User class has a default public no arguments
-                    constructor.
-                </p>
-
-                <p>
-                    The onSuccess() method is invoked when the form is submitted with no validation errors (although
-                    client validation is enabled by default, server-side validation is
-                    <em>always</em>
-                    enforced).
-                    The UserDAO service is used to add the new user.
-                </p>
-
-                <p>
-                    Returning a class from an event handler method (<code>UserAdmin.class</code>) will
-                    activate the indicated page as the response page. As always, a redirect to to the response page is
-                    sent to the client.
-                </p>
-
-            </subsection>
-
-        </section>
-
-        <section name="Validations and Overrides">
-
-            <p>
-                By placing some annotations on the properties of the User class, we can enable client-side
-                validations. In addition, we can override the default editor components for a property
-                to add some additional instructions.
-            </p>
-
-            <subsection name="User.java (partial)">
-
-                <source><![CDATA[
-    @Validate("required")
-    public String getFirstName() { return firstName; }
-
-    public void setFirstName(String firstName) { this.firstName = firstName; }
-
-    @Validate("required")
-    public String getLastName() { return lastName; }
-
-    public void setLastName(String lastName) { this.lastName = lastName; }
-
-    @Validate("min=18,max=99")
-    public int getAge() { return age; }
-
-    public void setAge(int age) { this.age = age; }]]>    </source>
-
-                <p>
-                    The new @Validate annotations added to the first name and last name properties indicates that a
-                    non-blank
-                    value must be provided. For the age property we are setting minimum and maximum values as well.
-                </p>
-
-                <p>
-                    Validation for each field occurs when the form is submitted, and when the user tabs out of a field.
-                    If you submit
-                    immediately, Tapestry will display popup bubbles for each field identifying the error:
-                </p>
-
-                <p>
-                    <img src="beaneditform_ref_validation1.png"/>
-                </p>
-
-                <p>
-                    In addition, fields with errors are marked with a red X, the font for the first turns red, and the
-                    label
-                    for the field turns red. We're providing a lot of feedback to the user.
-                    After a moment, all the bubbles except for the current field fade. Bubbles fade in and out as you
-                    tab from field to field.
-                </p>
-
-                <p>
-                    <img src="beaneditform_ref_validation2.png"/>
-                </p>
-
-
-            </subsection>
-
-
-            <subsection name="CreateUser.tml (partial)">
-
-                <p>
-                    We can customize how individual properties are editted. Here we'll
-                    add a small reminder next to the age property:
-                </p>
-
-                <p>
-                    <img src="beaneditform_ref_customized.png"/>
-                </p>
-
-                <source><![CDATA[
-        <t:beaneditform t:id="user" submitlabel="message:create-user">
-            <p:age>
-                <t:label for="age"/>
-                <t:textfield t:id="age" value="user.age"/>
-                <em>
-                    Users must be between 18 and 99.
-                </em>
-            </p:age>
-        </t:beaneditform>]]></source>
-
-                <p>
-                    The
-                    <code><![CDATA[<p:age>]]></code>
-                    element
-                    is an
-                    <em>override</em>
-                    for the property. The name is
-                    matched against a property of the bean. We need to provide a
-                    <a href="Label.html">Label</a>
-                    component, and an appropriate
-                    editor component.
-                </p>
-
-            </subsection>
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                You can re-order the properties using the reorder parameter:
-            </p>
-
-            <source><![CDATA[<t:beaneditform t:id="user" reorder="lastname,firstname"/>]]></source>
-
-            <p>
-                You can accomplish the same thing by changing the order of the
-                getter methods in the bean class. The default order for properties is not alphabetical,
-                it is the order of the getter methods.
-            </p>
-
-            <p>
-                You can also remove properties with the exclude parameter, which is equivalent to the
-                @NonVisual annotation.
-            </p>
-
-
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
deleted file mode 100644
index 1607b03..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.java
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.corelib.internal.InternalMessages;
-import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.internal.BeanValidationContextImpl;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BeanEditContext;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-
-import java.lang.annotation.Annotation;
-
-/**
- * A component that generates a user interface for editing the properties of a bean. This is the central component of
- * the {@link BeanEditForm}, and utilizes a {@link PropertyEditor} for much of its functionality. This component places
- * a {@link BeanEditContext} into the environment.
- */
-@SupportsInformalParameters
-public class BeanEditor
-{
-    public static class Prepare implements ComponentAction<BeanEditor>
-    {
-        private static final long serialVersionUID = 6273600092955522585L;
-
-        public void execute(BeanEditor component)
-        {
-            component.doPrepare();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "BeanEditor.Prepare";
-        }
-    }
-
-    static class CleanupEnvironment implements ComponentAction<BeanEditor>
-    {
-        private static final long serialVersionUID = 6867226962459227016L;
-
-        public void execute(BeanEditor component)
-        {
-            component.cleanupEnvironment();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "BeanEditor.CleanupEnvironment";
-        }
-    }
-
-    private static final ComponentAction<BeanEditor> CLEANUP_ENVIRONMENT = new CleanupEnvironment();
-
-    /**
-     * The object to be edited by the BeanEditor. This will be read when the component renders and updated when the form
-     * for the component is submitted. Typically, the container will listen for a "prepare" event, in order to ensure
-     * that a non-null value is ready to be read or updated.
-     */
-    @Parameter(autoconnect = true)
-    private Object object;
-
-    /**
-     * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel} (only used
-     * when a default model is created automatically).
-     * Only these properties will be retained, and the properties will also be reordered. The names are
-     * case-insensitive.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String include;
-
-    /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * (only used
-     * when a default model is created automatically).
-     * The names are case-insensitive.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String exclude;
-
-    /**
-     * A comma-separated list of property names indicating the order in which the properties should be presented. The
-     * names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
-     * orde. Only used
-     * when a default model is created automatically.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String reorder;
-
-    /**
-     * A comma-separated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * (only used
-     * when a default model is created automatically).
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String add;
-
-    /**
-     * The model that identifies the parameters to be edited, their order, and every other aspect. If not specified, a
-     * default bean model will be created from the type of the object bound to the object parameter. The add, include,
-     * exclude and reorder
-     * parameters are <em>only</em> applied to a default model, not an explicitly provided one.
-     */
-    @Parameter
-    @Property(write = false)
-    private BeanModel model;
-
-    /**
-     * Where to search for local overrides of property editing blocks as block parameters. Further, the container of the
-     * overrides is used as the source for overridden validation messages. This is normally the BeanEditor component
-     * itself, but when the component is used within a BeanEditForm, it will be the BeanEditForm's resources that will
-     * be searched.
-     */
-    @Parameter(value = "this", allowNull = false)
-    @Property(write = false)
-    private PropertyOverrides overrides;
-
-    @Inject
-    private BeanModelSource modelSource;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Environment environment;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    // Value that change with each change to the current property:
-
-    @Property
-    private String propertyName;
-
-    /**
-     * To support nested BeanEditors, we need to cache the object value inside {@link #doPrepare()}. See TAPESTRY-2460.
-     */
-    private Object cachedObject;
-
-    // Needed for testing as well
-
-    public Object getObject()
-    {
-        return cachedObject;
-    }
-
-    void setupRender()
-    {
-        formSupport.storeAndExecute(this, new Prepare());
-    }
-
-    void cleanupRender()
-    {
-        formSupport.storeAndExecute(this, CLEANUP_ENVIRONMENT);
-    }
-
-    /**
-     * Used to initialize the model if necessary, to instantiate the object being edited if necessary, and to push the
-     * BeanEditContext into the environment.
-     */
-    void doPrepare()
-    {
-        if (model == null)
-        {
-            Class type = resources.getBoundType("object");
-            model = modelSource.createEditModel(type, overrides.getOverrideMessages());
-
-            BeanModelUtils.modify(model, add, include, exclude, reorder);
-        }
-
-        // The only problem here is that if the bound property is backed by a persistent field, it
-        // is assigned (and stored to the session, and propagated around the cluster) first,
-        // before values are assigned.
-
-        if (object == null)
-        {
-            try
-            {
-                object = model.newInstance();
-            }
-            catch (Exception ex)
-            {
-                String message = InternalMessages.failureInstantiatingObject(model.getBeanType(), resources
-                        .getCompleteId(), ex);
-                throw new TapestryException(message, resources.getLocation(), ex);
-            }
-
-            // If 'object' parameter is bound to a null-value BeanValidationContext is empty.
-            // This prevents JSR-303 javascript validators to be rendered properly .
-            refreshBeanValidationContext();
-        }
-
-        BeanEditContext context = new BeanEditContext()
-        {
-            public Class<?> getBeanClass()
-            {
-                return model.getBeanType();
-            }
-
-            public <T extends Annotation> T getAnnotation(Class<T> type)
-            {
-                return getBeanClass().getAnnotation(type);
-            }
-        };
-
-        cachedObject = object;
-
-        environment.push(BeanEditContext.class, context);
-    }
-
-    void cleanupEnvironment()
-    {
-        environment.pop(BeanEditContext.class);
-    }
-
-    private void refreshBeanValidationContext()
-    {
-        if (environment.peek(BeanValidationContext.class) != null)
-        {
-            environment.pop(BeanValidationContext.class);
-
-            environment.push(BeanValidationContext.class, new BeanValidationContextImpl(object));
-        }
-    }
-
-    // For testing
-    void inject(ComponentResources resources, PropertyOverrides overrides, BeanModelSource source,
-            Environment environment)
-    {
-        this.resources = resources;
-        this.overrides = overrides;
-        this.environment = environment;
-        modelSource = source;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.xdoc
deleted file mode 100644
index 522580c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/BeanEditor.xdoc
+++ /dev/null
@@ -1,11 +0,0 @@
-<document>
-    <body>
-        <p>See the
-            <a href="BeanEditForm.html">BeanEditForm</a>
-            documentation for examples of how to use and customize this component. A further
-            example is available in the documentation for the
-            <a href="FormFragment.html">FormFragment</a>
-            component.
-        </p>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java
deleted file mode 100644
index 11be271..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.corelib.base.AbstractField;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Request;
-
-/**
- * A Checkbox component is simply a &lt;input type="checkbox"&gt;.
- */
-public class Checkbox extends AbstractField
-{
-    /**
-     * The value to be read or updated. If not bound, the Checkbox will attempt to edit a property of its container
-     * whose name matches the component's id.
-     */
-    @Parameter(required = true, autoconnect = true)
-    private boolean value;
-
-    @Inject
-    private Request request;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderDisabled renderDisabled;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    @BeginRender
-    void begin(MarkupWriter writer)
-    {
-        String asSubmitted = tracker.getInput(this);
-
-        boolean checked = asSubmitted != null ? Boolean.parseBoolean(asSubmitted) : value;
-
-        writer.element("input", "type", "checkbox",
-
-                       "name", getControlName(),
-
-                       "id", getClientId(),
-
-                       "checked", checked ? "checked" : null);
-
-        resources.renderInformalParameters(writer);
-
-        decorateInsideField();
-    }
-
-    @AfterRender
-    void after(MarkupWriter writer)
-    {
-        writer.end(); // input
-    }
-
-    @Override
-    protected void processSubmission(String elementName)
-    {
-        String postedValue = request.getParameter(elementName);
-
-        // record as "true" or "false"
-
-        tracker.recordInput(this, Boolean.toString(postedValue != null));
-
-        value = postedValue != null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.xdoc
deleted file mode 100644
index f0fd3b1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Checkbox.xdoc
+++ /dev/null
@@ -1,89 +0,0 @@
-<document>
-    <body>
-        <section name="Examples">
-
-
-            <p>
-                In this example, a Checkbox will be used alone to manipulate a property of the page.
-            </p>
-
-            <subsection name="ViewAccounts.tml">
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>View Accounts</h1>
-
-        <t:form>
-            <t:checkbox t:id="showall" onclick="this.form.submit();"/> <t:label for="showall"/>
-        </t:form>
-
-        <t:grid t:id="accounts"/>
-
-    </body>
-</html>
-]]></source>
-
-                <p>
-                    The Grid component will do most of the work in terms of displaying the account data.
-                </p>
-
-                <p>
-                    Normally, we should bind the value parameter explicitly; here the component's id, "showAll",
-                    matches against a property of the page and the value parameter is automatically bound
-                    as a convenience.
-                </p>
-
-                <p>
-                    A small amount of JavaScript is provided in-line to submit the form when the checkbox is clicked.
-                </p>
-
-                <p>
-                    All Tapestry form control element components must be enclosed by a Form component.
-                </p>
-
-                <p>
-                    The Label component is responsible for rendering a &lt;label&gt; element connected to the checkbox.
-                    This
-                    is good for accessibility, it also provides a larger "target" to click on.
-                    The label's text will be "Show All", derived from the property name. Using a Label component is
-                    optional
-                    but recommended.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="ViewAccounts.java">
-
-                <source><![CDATA[
-public class ViewAccount
-{
-    @Property
-    @Persist
-    private boolean showAll;
-
-    @Inject
-    private AccountDAO accountDAO;
-
-
-    public List<Account> getAccounts()
-    {
-        return showAll ? accountDAO.getAllAccounts() : accountDAO.getActiveAccounts();
-    }
-}]]></source>
-
-                <p>
-                    The component updates the showAll field, and that's used to determine which
-                    set of accounts should be provided to the Grid component. As always in Tapestry, you
-                    must be careful to mark fields persistent if they need to hold their value between
-                    the action request (the form submission) and the render request.
-                </p>
-
-
-            </subsection>
-
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
deleted file mode 100644
index 60ea3f5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.java
+++ /dev/null
@@ -1,312 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.text.DateFormat;
-import java.text.ParseException;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Import;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.corelib.base.AbstractField;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * A component used to collect a provided date from the user using a client-side JavaScript calendar. Non-JavaScript
- * clients can simply type into a text field.
- * <p/>
- * One wierd aspect here is that, because client-side JavaScript formatting and parsing is so limited, we (currently)
- * use Ajax to send the user's input to the server for parsing (before raising the popup) and formatting (after closing
- * the popup). Weird and inefficient, but easier than writing client-side JavaScript for that purpose.
- * <p/>
- * Tapestry's DateField component is a wrapper around <a
- * href="http://webfx.eae.net/dhtml/datepicker/datepicker.html">WebFX DatePicker</a>.
- */
-// TODO: More testing; see https://issues.apache.org/jira/browse/TAPESTRY-1844
-@Import(stack = "core-datefield")
-@Events(EventConstants.VALIDATE)
-public class DateField extends AbstractField
-{
-    /**
-     * The value parameter of a DateField must be a {@link java.util.Date}.
-     */
-    @Parameter(required = true, principal = true, autoconnect = true)
-    private Date value;
-
-    /**
-     * The format used to format <em>and parse</em> dates. This is typically specified as a string which is coerced to a
-     * DateFormat. You should be aware that using a date format with a two digit year is problematic: Java (not
-     * Tapestry) may get confused about the century.
-     */
-    @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private DateFormat format;
-
-    /**
-     * If true, then the text field will be hidden, and only the icon for the date picker will be visible. The default
-     * is false.
-     */
-    @Parameter
-    private boolean hideTextField;
-
-    /**
-     * The object that will perform input validation (which occurs after translation). The translate binding prefix is
-     * generally used to provide this object in a declarative fashion.
-     */
-    @Parameter(defaultPrefix = BindingConstants.VALIDATE)
-    @SuppressWarnings("unchecked")
-    private FieldValidator<Object> validate;
-
-    @Parameter(defaultPrefix = BindingConstants.ASSET, value = "datefield.gif")
-    private Asset icon;
-
-    /**
-     * Used to override the component's message catalog.
-     * 
-     * @since 5.2.0.0
-     */
-    @Parameter("componentResources.messages")
-    private Messages messages;
-
-    @Environmental
-    private JavaScriptSupport support;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Request request;
-
-    @Inject
-    private Locale locale;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
-    private static final String RESULT = "result";
-
-    private static final String ERROR = "error";
-    private static final String INPUT_PARAMETER = "input";
-
-    DateFormat defaultFormat()
-    {
-        DateFormat shortDateFormat = DateFormat.getDateInstance(DateFormat.SHORT, locale);
-
-        if (shortDateFormat instanceof SimpleDateFormat)
-        {
-            SimpleDateFormat simpleDateFormat = (SimpleDateFormat) shortDateFormat;
-
-            String pattern = simpleDateFormat.toPattern();
-
-            String revised = pattern.replaceAll("([^y])yy$", "$1yyyy");
-
-            return new SimpleDateFormat(revised);
-        }
-
-        return shortDateFormat;
-    }
-
-    /**
-     * Computes a default value for the "validate" parameter using {@link ComponentDefaultProvider}.
-     */
-    final Binding defaultValidate()
-    {
-        return defaultProvider.defaultValidatorBinding("value", resources);
-    }
-
-    /**
-     * Ajax event handler, used when initiating the popup. The client sends the input value form the field to the server
-     * to parse it according to the server-side format. The response contains a "result" key of the formatted date in a
-     * format acceptable to the JavaScript Date() constructor. Alternately, an "error" key indicates the the input was
-     * not formatted correct.
-     */
-    JSONObject onParse(@RequestParameter(INPUT_PARAMETER)
-    String input)
-    {
-        JSONObject response = new JSONObject();
-
-        try
-        {
-            Date date = format.parse(input);
-
-            response.put(RESULT, date.getTime());
-        }
-        catch (ParseException ex)
-        {
-            response.put(ERROR, ex.getMessage());
-        }
-
-        return response;
-    }
-
-    /**
-     * Ajax event handler, used after the client-side popup completes. The client sends the date, formatted as
-     * milliseconds since the epoch, to the server, which reformats it according to the server side format and returns
-     * the result.
-     */
-    JSONObject onFormat(@RequestParameter(INPUT_PARAMETER)
-    String input)
-    {
-        JSONObject response = new JSONObject();
-
-        try
-        {
-            long millis = Long.parseLong(input);
-
-            Date date = new Date(millis);
-
-            response.put(RESULT, format.format(date));
-        }
-        catch (NumberFormatException ex)
-        {
-            response.put(ERROR, ex.getMessage());
-        }
-
-        return response;
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        String value = tracker.getInput(this);
-
-        if (value == null)
-            value = formatCurrentValue();
-
-        String clientId = getClientId();
-        String triggerId = clientId + "-trigger";
-
-        writer.element("input",
-
-        "type", hideTextField ? "hidden" : "text",
-
-        "name", getControlName(),
-
-        "id", clientId,
-
-        "value", value);
-
-        writeDisabled(writer);
-
-        putPropertyNameIntoBeanValidationContext("value");
-
-        validate.render(writer);
-
-        removePropertyNameFromBeanValidationContext();
-
-        resources.renderInformalParameters(writer);
-
-        decorateInsideField();
-
-        writer.end();
-
-        // Now the trigger icon.
-
-        writer.element("img",
-
-        "id", triggerId,
-
-        "class", "t-calendar-trigger",
-
-        "src", icon.toClientURL(),
-
-        "alt", "[Show]");
-        writer.end(); // img
-
-        JSONObject spec = new JSONObject();
-
-        spec.put("field", clientId);
-        spec.put("parseURL", resources.createEventLink("parse").toURI());
-        spec.put("formatURL", resources.createEventLink("format").toURI());
-
-        support.addInitializerCall("dateField", spec);
-    }
-
-    private void writeDisabled(MarkupWriter writer)
-    {
-        if (isDisabled())
-            writer.attributes("disabled", "disabled");
-    }
-
-    private String formatCurrentValue()
-    {
-        if (value == null)
-            return "";
-
-        return format.format(value);
-    }
-
-    @Override
-    protected void processSubmission(String elementName)
-    {
-        String value = request.getParameter(elementName);
-
-        tracker.recordInput(this, value);
-
-        Date parsedValue = null;
-
-        try
-        {
-            if (InternalUtils.isNonBlank(value))
-                parsedValue = format.parse(value);
-        }
-        catch (ParseException ex)
-        {
-            tracker.recordError(this, messages.format("date-value-not-parseable", value));
-            return;
-        }
-
-        putPropertyNameIntoBeanValidationContext("value");
-        try
-        {
-            fieldValidationSupport.validate(parsedValue, resources, validate);
-
-            this.value = parsedValue;
-        }
-        catch (ValidationException ex)
-        {
-            tracker.recordError(this, ex.getMessage());
-        }
-
-        removePropertyNameFromBeanValidationContext();
-    }
-
-    void injectResources(ComponentResources resources)
-    {
-        this.resources = resources;
-    }
-
-    @Override
-    public boolean isRequired()
-    {
-        return validate.isRequired();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.xdoc
deleted file mode 100644
index 1fee855..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/DateField.xdoc
+++ /dev/null
@@ -1,74 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="TextField.html">TextField</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Examples">
-            <p>
-                The DateField component is very easy to use, all the JavaScript is generated for you. Then end result
-                looks like:
-            </p>
-
-            <p>
-                <em>Note: these screenshots are out of date, and reflect an earlier version of Tapestry and a different
-                    third-party JavaScript calendar than is currently available.
-                </em>
-            </p>
-
-            <p>
-                <img src="datefield_ref1.png"/>
-            </p>
-
-            <p>
-                Clicking the icon raises the popup calendar:
-            </p>
-
-            <p>
-                <img src="datefield_ref2.png"/>
-            </p>
-
-            <subsection name="DateFieldDemo.tml">
-                <source><![CDATA[<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <t:form>
-            <div class="t-beaneditor">
-                <div class="t-beaneditrow">
-                    <t:label for="date"/>
-                    <t:datefield t:id="date"/>
-                </div>
-                <div class="t-beaneditrow">
-                    <input type="submit" value="Update"/>
-                </div>
-            </div>
-        </t:form>
-    </body>
-</html>]]></source>
-            </subsection>
-
-            <p>
-                The use of the extra &lt;div&gt; elements is to trigger the CSS styles that are
-                usually used as part of a<a href="BeanEditForm.html">BeanEditForm</a>. Just the
-                <code><![CDATA[<t:datefield>]]></code>
-                element is all that's really necessary.
-            </p>
-        </section>
-
-        <section name="Notes">
-
-            <p>The DateField component is based on the open source
-                <a href="http://webfx.eae.net/dhtml/datepicker/usage.html">WebFX DatePicker</a>
-                widget.
-            </p>
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Delegate.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Delegate.java
deleted file mode 100644
index 97c2009..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Delegate.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.annotations.Parameter;
-
-/**
- * A component that does not do any rendering of its own, but will delegate to some other object that can do rendering.
- * This other object may be a component or a {@link Block} (among other things).
- */
-public class Delegate
-{
-    /**
-     * The object which will be rendered in place of the Delegate component. This is typically a specific component
-     * instance, or a {@link Block}.
-     */
-    @Parameter(required = true)
-    private Object to;
-
-    Object beginRender()
-    {
-        return to;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Delegate.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Delegate.xdoc
deleted file mode 100644
index ed43aa7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Delegate.xdoc
+++ /dev/null
@@ -1,108 +0,0 @@
-<document>
-    <body>
-
-        <section name="Examples">
-
-            <p>
-                The Delegate component allows us to be very flexible in how and what gets rendered, and
-                in what order. In some cases, the object to be rendered may come from an entirely
-                different page.
-            </p>
-
-            <p>
-                This example is simpler, and could easily be accomplished using an If component. We'll create
-                a page that can be used for viewing or editting an object.
-            </p>
-
-            <subsection name="ViewAccount.tml">
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>View Account</h1>
-
-        <t:delegate to="activeBlock"/>
-
-        <t:block id="view">
-            <t:beandisplay object="account"/>
-
-            <p><t:actionlink t:id="edit">Edit this account</t:actionlink></p>
-        </t:block>
-
-        <t:block id="edit">
-            <t:beaneditform t:id="account"/>
-        </t:block>
-    </body>
-</html>]]></source>
-
-                <p>
-                    So we end up with a display of the Account's properties, and a link to activate edit mode.
-                    In edit mode, we use the other block and show a BeanEditForm.
-                </p>
-
-            </subsection>
-
-            <subsection name="ViewAccount.java">
-                <source><![CDATA[
-public class ViewAccount
-{
-    @Persist
-    private Account account;
-
-    @Persist
-    private boolean editMode;
-
-    @Inject
-    private Block edit, view;
-
-    @Inject
-    private AccountDAO accountDAO;
-
-    public Account getAccount()
-    {
-        return account;
-    }
-
-    public void setAccount(Account account)
-    {
-        account = account;
-        editMode = false;
-    }
-
-    void onSuccess()
-    {
-         accountDAO.update(_account);
-
-        editMode = false;
-    }
-
-    void onActionFromEdit()
-    {
-        editMode = true;
-    }
-
-    public Object getActiveBlock()
-    {
-        return editMode ? edit : view;
-    }
-}]]></source>
-
-                <p>
-                    The use of the @Inject annotation on a field of type Block is used to access a
-                    <code><![CDATA[<t:block>]]></code>
-                    element from the template. The field name,
-                    stripped of leading underscores, is matched against the block's id.
-                </p>
-
-                <p>
-                    The rest is concerned with handling the form submission, turning on edit mode,
-                    and determining which block will be the one to render.
-                </p>
-
-
-            </subsection>
-
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Error.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Error.java
deleted file mode 100644
index 715aa7c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Error.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.CSSClassConstants;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.HeartbeatDeferred;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.internal.InternalMessages;
-import org.apache.tapestry5.dom.Element;
-
-/**
- * Presents validation errors of a single field. Must be enclosed by a
- * {@link org.apache.tapestry5.corelib.components.Form} component.
- * 
- * @since 5.2.0
- */
-public class Error
-{
-    /**
-     * The for parameter is used to identify the {@link Field} to present errors of.
-     */
-    @Parameter(name = "for", required = true, allowNull = false, defaultPrefix = BindingConstants.COMPONENT)
-    private Field field;
-
-    /**
-     * The CSS class for the div element rendered by the component. The default value is "t-error-single".
-     */
-    @Parameter(name = "class")
-    private String className = CSSClassConstants.ERROR_SINGLE;
-
-    @Environmental(false)
-    private ValidationTracker tracker;
-
-    void beginRender(final MarkupWriter writer)
-    {
-        if (tracker == null)
-            throw new RuntimeException(InternalMessages.encloseErrorsInForm());
-
-        Element element = writer.element("div");
-
-        updateElement(element);
-
-        writer.end();
-    }
-
-    @HeartbeatDeferred
-    private void updateElement(final Element element)
-    {
-        final String error = tracker.getError(field);
-
-        if (error == null)
-        {
-            element.remove();
-        }
-        else
-        {
-            element.forceAttributes("class", className);
-            element.text(error);
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java
deleted file mode 100644
index bb55824..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.CSSClassConstants;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.internal.InternalMessages;
-import org.apache.tapestry5.services.FormSupport;
-
-import java.util.List;
-
-/**
- * Standard validation error presenter. Must be enclosed by a
- * {@link org.apache.tapestry5.corelib.components.Form} component. If errors are present, renders a
- * div element around a banner message and around an unnumbered list of
- * error messages. Renders nothing if the {@link org.apache.tapestry5.ValidationTracker} shows no
- * errors.
- */
-public class Errors
-{
-    /**
-     * The banner message displayed above the errors. The default value is "You must correct the
-     * following errors before
-     * you may continue.".
-     */
-    @Parameter("message:default-banner")
-    private String banner;
-
-    /**
-     * The CSS class for the div element rendered by the component. The default value is "t-error".
-     */
-    @Parameter(name = "class")
-    private String className = CSSClassConstants.ERROR;
-
-    // Allow null so we can generate a better error message if missing
-    @Environmental(false)
-    private ValidationTracker tracker;
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (tracker == null)
-            throw new RuntimeException(InternalMessages.encloseErrorsInForm());
-
-        if (!tracker.getHasErrors())
-            return;
-
-        writer.element("div", "class", className);
-
-        // Inner div for the banner text
-        writer.element("div");
-        writer.write(banner);
-        writer.end();
-
-        List<String> errors = tracker.getErrors();
-
-        if (!errors.isEmpty())
-        {
-            // Only write out the <UL> if it will contain <LI> elements. An empty <UL> is not
-            // valid XHTML.
-
-            writer.element("ul");
-
-            for (String message : errors)
-            {
-                writer.element("li");
-                writer.write(message);
-                writer.end();
-            }
-
-            writer.end(); // ul
-        }
-
-        writer.end(); // div
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.xdoc
deleted file mode 100644
index bc6a0eb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Errors.xdoc
+++ /dev/null
@@ -1,39 +0,0 @@
-<document>
-    <body>
-        <section name="Examples">
-
-            <p>
-                The Errors component automatically connects with the Form that encloses it. Just place the
-                component inside a Form.
-            </p>
-
-            <subsection name="Search.tml">
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-
-    <t:form>
-
-        <t:errors>
-
-        <t:label for="search"/>
-        <t:textfield t:id="search"/>
-
-        <input type="submit" value="Search"/>
-
-    </t:form>
-
-    </body>
-</html>]]></source>
-
-                <p>
-                    The Errors component here will display any validation errors that occur when the form is submitted.
-                </p>
-
-            </subsection>
-
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/EventLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/EventLink.java
deleted file mode 100644
index 1ae171e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/EventLink.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.base.AbstractComponentEventLink;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * A close relative of {@link org.apache.tapestry5.corelib.components.ActionLink} except in two ways.
- * <p/>
- * First, the event that it triggers is explicitly controlled, rather than always "action".
- * <p/>
- * Second, the event is triggered in its container.
- * <p/>
- * This allows slightly shorter URLs but also allows multiple components within the same container to generate identical
- * URLs for common actions.
- */
-public class EventLink extends AbstractComponentEventLink
-{
-    /**
-     * The name of the event to be triggered in the parent component. Defaults to the id of the component. An {@link
-     * org.apache.tapestry5.corelib.components.ActionLink} triggers an "action" event on itself, and EventLink component
-     * triggers any arbitrary event on <em>its container</em>.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String event;
-
-    @Inject
-    private ComponentResources resources;
-
-    String defaultEvent()
-    {
-        return resources.getId();
-    }
-
-    @Override
-    protected Link createLink(Object[] eventContext)
-    {
-        ComponentResources containerResources = resources.getContainerResources();
-
-        return containerResources.createEventLink(event, eventContext);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/EventLink.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/EventLink.xdoc
deleted file mode 100644
index e7bc436..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/EventLink.xdoc
+++ /dev/null
@@ -1,81 +0,0 @@
-<document>
-    <body>
-        <section name="Examples">
-
-            <p>
-                This example is from Tapestry itself, from the GridColumns component that displays the columns
-                titles across to the top of a Grid. We've simplified the example somewhat to focus in on
-                the use of the EventLink component.
-            </p>
-
-            <subsection name="GridColumns.tml">
-                <source><![CDATA[
-<thead xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <tr>
-        <th t:type="Loop" source="columnNames" value="columnName">
-            <a t:id="sort">${columnModel.label}</a>
-            <a t:id="sort2">
-                <img src="${icon}" id="${columnModel.id}:sort" class="t-sort-icon" alt="${iconLabel}"/>
-            </a>
-        </th>
-    </tr>
-</thead>]]></source>
-
-            </subsection>
-
-            <subsection name="GridColumns.java (partial)">
-                <source><![CDATA[
-public class GridColumns
-{
-    . . .
-
-    @Component(parameters = {"event=sort", "context=columnModel.id"})
-    private EventLink sort, sort2;
-
-    void onSort(String columnId)
-    {
-        if (columnId.equals(sortColumnId))
-        {
-            sortAscending = !sortAscending;
-        }
-        else
-        {
-            sortColumnId = columnId;
-            sortAscending = true;
-        }
-    }
-
-}]]></source>
-
-                <p>
-                    The advantage of the EventLink component is that instead of having two identical event handler
-                    methods,
-                    onActionFromSort() and onActionFromSort2(), we have a single event handler method,
-                    onSort(), that covers events triggered by either component. In addition, the URLs for the two
-                    components
-                    will be identical, whereas if using ActionLink components, the URLs would be slightly different, to
-                    reflect to two different component ids.
-                </p>
-
-                <p>
-                    This example also shows the advantages of defining the component in the Java class,
-                    using the
-                    @Component annotation, rather than in the template (as we do in most examples). We can
-                    simply define two fields with the same configuration.
-                </p>
-
-
-            </subsection>
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                The event parameter is often omitted; it defaults to the component's id ... you will often specify
-                the component id, or a specific event name, but not both.
-            </p>
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ExceptionDisplay.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ExceptionDisplay.java
deleted file mode 100644
index df19393..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ExceptionDisplay.java
+++ /dev/null
@@ -1,111 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.util.List;
-
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Import;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.services.ExceptionAnalysis;
-import org.apache.tapestry5.ioc.services.ExceptionAnalyzer;
-import org.apache.tapestry5.ioc.services.ExceptionInfo;
-import org.apache.tapestry5.services.StackTraceElementAnalyzer;
-import org.apache.tapestry5.services.StackTraceElementClassConstants;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Integral part of the default {@link org.apache.tapestry5.corelib.pages.ExceptionReport} page used to break apart and
- * display the properties of the exception.
- * 
- * @see org.apache.tapestry5.ioc.services.ExceptionAnalyzer
- */
-@Import(library = "exceptiondisplay.js")
-public class ExceptionDisplay
-{
-    /**
-     * Exception to report.
-     */
-    @Parameter(required = true, allowNull = false)
-    private Throwable exception;
-
-    @Inject
-    private ExceptionAnalyzer analyzer;
-
-    @Property
-    private ExceptionInfo info;
-
-    @Property
-    private String propertyName;
-
-    @Property
-    private StackTraceElement frame;
-
-    @Property
-    private List<ExceptionInfo> stack;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    @Property
-    private String toggleId;
-
-    private boolean sawDoFilter;
-
-    @Inject
-    @Primary
-    private StackTraceElementAnalyzer frameAnalyzer;
-
-    void setupRender()
-    {
-        ExceptionAnalysis analysis = analyzer.analyze(exception);
-
-        stack = analysis.getExceptionInfos();
-
-        toggleId = jsSupport.allocateClientId("toggleStack");
-    }
-
-    public boolean getShowPropertyList()
-    {
-        // True if either is non-empty
-
-        return !(info.getPropertyNames().isEmpty() && info.getStackTrace().isEmpty());
-    }
-
-    public Object getPropertyValue()
-    {
-        return info.getProperty(propertyName);
-    }
-
-    public String getFrameClass()
-    {
-        if (sawDoFilter)
-            return StackTraceElementClassConstants.OMITTED;
-
-        String result = frameAnalyzer.classForFrame(frame);
-
-        sawDoFilter |= frame.getMethodName().equals("doFilter");
-
-        return result;
-    }
-
-    void afterRender()
-    {
-        jsSupport.addScript("Tapestry.stackFrameToggle('%s');", toggleId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
deleted file mode 100644
index ebb5bc2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.java
+++ /dev/null
@@ -1,764 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.io.EOFException;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.HeartbeatDeferred;
-import org.apache.tapestry5.annotations.Log;
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.corelib.ClientValidation;
-import org.apache.tapestry5.corelib.internal.ComponentActionSink;
-import org.apache.tapestry5.corelib.internal.FormSupportImpl;
-import org.apache.tapestry5.corelib.internal.InternalFormSupport;
-import org.apache.tapestry5.corelib.mixins.RenderInformals;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.internal.BeanValidationContextImpl;
-import org.apache.tapestry5.internal.InternalSymbols;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.HeartbeatImpl;
-import org.apache.tapestry5.internal.util.AutofocusValidationDecorator;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.slf4j.Logger;
-
-/**
- * An HTML form, which will enclose other components to render out the various
- * types of fields.
- * <p/>
- * A Form emits many notification events. When it renders, it fires a
- * {@link org.apache.tapestry5.EventConstants#PREPARE_FOR_RENDER} notification, followed by a
- * {@link EventConstants#PREPARE} notification.
- * <p/>
- * When the form is submitted, the component emits several notifications: first a
- * {@link EventConstants#PREPARE_FOR_SUBMIT}, then a {@link EventConstants#PREPARE}: these allow the page to update its
- * state as necessary to prepare for the form submission, then (after components enclosed by the form have operated), a
- * {@link EventConstants#VALIDATE} event is emitted (followed by a {@link EventConstants#VALIDATE_FORM} event, for
- * backwards compatibility), to allow for cross-form validation. After that, either a {@link EventConstants#SUCCESS} OR
- * {@link EventConstants#FAILURE} event (depending on whether the {@link ValidationTracker} has recorded any errors).
- * Lastly, a {@link EventConstants#SUBMIT} event, for any listeners that care only about form submission, regardless of
- * success or failure.
- * <p/>
- * For all of these notifications, the event context is derived from the <strong>context</strong> parameter. This
- * context is encoded into the form's action URI (the parameter is not read when the form is submitted, instead the
- * values encoded into the form are used).
- */
-@Events(
-{ EventConstants.PREPARE_FOR_RENDER, EventConstants.PREPARE, EventConstants.PREPARE_FOR_SUBMIT,
-        EventConstants.VALIDATE, EventConstants.VALIDATE_FORM, EventConstants.SUBMIT, EventConstants.FAILURE,
-        EventConstants.SUCCESS })
-public class Form implements ClientElement, FormValidationControl
-{
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String PREPARE_FOR_RENDER = EventConstants.PREPARE_FOR_RENDER;
-
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String PREPARE_FOR_SUBMIT = EventConstants.PREPARE_FOR_SUBMIT;
-
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String PREPARE = EventConstants.PREPARE;
-
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String SUBMIT = EventConstants.SUBMIT;
-
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String VALIDATE_FORM = EventConstants.VALIDATE_FORM;
-
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String SUCCESS = EventConstants.SUCCESS;
-
-    /**
-     * @deprecated Use constant from {@link EventConstants} instead.
-     */
-    public static final String FAILURE = EventConstants.FAILURE;
-
-    /**
-     * Query parameter name storing form data (the serialized commands needed to
-     * process a form submission).
-     */
-    public static final String FORM_DATA = "t:formdata";
-
-    /**
-     * Used by {@link Submit}, etc., to identify which particular client-side element (by element id)
-     * was responsible for the submission. An empty hidden field is created, as needed, to store this value.
-     * 
-     * @since 5.2.0
-     */
-    public static final String SUBMITTING_ELEMENT_ID = "t:submit";
-
-    /**
-     * The context for the link (optional parameter). This list of values will
-     * be converted into strings and included in
-     * the URI. The strings will be coerced back to whatever their values are
-     * and made available to event handler
-     * methods.
-     */
-    @Parameter
-    private Object[] context;
-
-    /**
-     * The object which will record user input and validation errors. The object
-     * must be persistent between requests
-     * (since the form submission and validation occurs in a component event
-     * request and the subsequent render occurs
-     * in a render request). The default is a persistent property of the Form
-     * component and this is sufficient for
-     * nearly all purposes (except when a Form is rendered inside a loop).
-     */
-    @Parameter("defaultTracker")
-    private ValidationTracker tracker;
-
-    @Inject
-    @Symbol(SymbolConstants.FORM_CLIENT_LOGIC_ENABLED)
-    private boolean clientLogicDefaultEnabled;
-
-    /**
-     * Controls when client validation occurs on the client, if at all. Defaults to {@link ClientValidation#BLUR}.
-     */
-    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private ClientValidation clientValidation = clientLogicDefaultEnabled ? ClientValidation.BLUR
-            : ClientValidation.NONE;
-
-    /**
-     * If true (the default), then the JavaScript will be added to position the
-     * cursor into the form. The field to
-     * receive focus is the first rendered field that is in error, or required,
-     * or present (in that order of priority).
-     * 
-     * @see SymbolConstants#FORM_CLIENT_LOGIC_ENABLED
-     */
-    @Parameter
-    private boolean autofocus = clientLogicDefaultEnabled;
-
-    /**
-     * Binding the zone parameter will cause the form submission to be handled
-     * as an Ajax request that updates the
-     * indicated zone. Often a Form will update the same zone that contains it.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String zone;
-
-    /**
-     * If true, then the Form's action will be secure (using an absolute URL with the HTTPs scheme) regardless
-     * of whether the containing page itself is secure or not. This parameter does nothing
-     * when {@linkplain SymbolConstants#SECURE_ENABLED security is disabled} (which is often
-     * the case in development mode). This only affects how the Form's action attribute is rendered, there is
-     * not (currently) a check that the form is actually submitted securely.
-     */
-    @Parameter
-    private boolean secure;
-
-    /**
-     * Prefix value used when searching for validation messages and constraints.
-     * The default is the Form component's
-     * id. This is overridden by {@link org.apache.tapestry5.corelib.components.BeanEditForm}.
-     * 
-     * @see org.apache.tapestry5.services.FormSupport#getFormValidationId()
-     */
-    @Parameter
-    private String validationId;
-
-    /**
-     * Object to validate during the form submission process. The default is the Form component's container.
-     * This parameter should only be used in combination with the Bean Validation Library.
-     */
-    @Parameter
-    private Object validate;
-
-    @Inject
-    private Logger logger;
-
-    @Inject
-    private Environment environment;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Messages messages;
-
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    @Inject
-    private Request request;
-
-    @Inject
-    private ComponentSource source;
-
-    @Inject
-    @Symbol(InternalSymbols.PRE_SELECTED_FORM_NAMES)
-    private String preselectedFormNames;
-
-    @Persist(PersistenceConstants.FLASH)
-    private ValidationTracker defaultTracker;
-
-    @Inject
-    @Symbol(SymbolConstants.SECURE_ENABLED)
-    private boolean secureEnabled;
-
-    private InternalFormSupport formSupport;
-
-    private Element form;
-
-    private Element div;
-
-    // Collects a stream of component actions. Each action goes in as a UTF
-    // string (the component
-    // component id), followed by a ComponentAction
-
-    private ComponentActionSink actionSink;
-
-    @Mixin
-    private RenderInformals renderInformals;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    @SuppressWarnings("unchecked")
-    @Environmental
-    private TrackableComponentEventCallback eventCallback;
-
-    @Inject
-    private ClientDataEncoder clientDataEncoder;
-
-    private String clientId;
-
-    // Set during rendering or submit processing to be the
-    // same as the VT pushed into the Environment
-    private ValidationTracker activeTracker;
-
-    String defaultValidationId()
-    {
-        return resources.getId();
-    }
-
-    Object defaultValidate()
-    {
-        return resources.getContainer();
-    }
-
-    /**
-     * Returns a wrapped version of the tracker parameter (which is usually bound to the
-     * defaultTracker persistent field).
-     * If tracker is currently null, a new instance of {@link ValidationTrackerImpl} is created.
-     * The tracker is then wrapped, such that the tracker parameter
-     * is only updated the first time an error is recorded into the tracker (this will typically
-     * propagate to the defaultTracker
-     * persistent field and be stored into the session). This means that if no errors are recorded,
-     * the tracker parameter is not updated and (in the default case) no data is stored into the
-     * session.
-     * 
-     * @see <a href="https://issues.apache.org/jira/browse/TAP5-979">TAP5-979</a>
-     * @return a tracker ready to receive data (possibly a previously stored tracker with field
-     *         input and errors)
-     */
-    private ValidationTracker getWrappedTracker()
-    {
-        ValidationTracker innerTracker = tracker == null ? new ValidationTrackerImpl() : tracker;
-
-        ValidationTracker wrapper = new ValidationTrackerWrapper(innerTracker)
-        {
-            private boolean saved = false;
-
-            private void save()
-            {
-                if (!saved)
-                {
-                    tracker = getDelegate();
-
-                    saved = true;
-                }
-            }
-
-            @Override
-            public void recordError(Field field, String errorMessage)
-            {
-                super.recordError(field, errorMessage);
-
-                save();
-            }
-
-            @Override
-            public void recordError(String errorMessage)
-            {
-                super.recordError(errorMessage);
-
-                save();
-            }
-        };
-
-        return wrapper;
-    }
-
-    public ValidationTracker getDefaultTracker()
-    {
-        return defaultTracker;
-    }
-
-    public void setDefaultTracker(ValidationTracker defaultTracker)
-    {
-        this.defaultTracker = defaultTracker;
-    }
-
-    void setupRender()
-    {
-        FormSupport existing = environment.peek(FormSupport.class);
-
-        if (existing != null)
-            throw new TapestryException(messages.get("nesting-not-allowed"), existing, null);
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        Link link = resources.createFormEventLink(EventConstants.ACTION, context);
-
-        String actionURL = secure && secureEnabled ? link.toAbsoluteURI(true) : link.toURI();
-
-        actionSink = new ComponentActionSink(logger, clientDataEncoder);
-
-        clientId = javascriptSupport.allocateClientId(resources);
-
-        // Pre-register some names, to prevent client-side collisions with function names
-        // attached to the JS Form object.
-
-        IdAllocator allocator = new IdAllocator();
-
-        preallocateNames(allocator);
-
-        formSupport = createRenderTimeFormSupport(clientId, actionSink, allocator);
-
-        addJavaScriptInitialization();
-
-        if (zone != null)
-            linkFormToZone(link);
-
-        activeTracker = getWrappedTracker();
-
-        environment.push(FormSupport.class, formSupport);
-        environment.push(ValidationTracker.class, activeTracker);
-        environment.push(BeanValidationContext.class, new BeanValidationContextImpl(validate));
-
-        if (autofocus)
-        {
-            ValidationDecorator autofocusDecorator = new AutofocusValidationDecorator(
-                    environment.peek(ValidationDecorator.class), activeTracker, jsSupport);
-            environment.push(ValidationDecorator.class, autofocusDecorator);
-        }
-
-        // Now that the environment is setup, inform the component or other
-        // listeners that the form
-        // is about to render.
-
-        resources.triggerEvent(EventConstants.PREPARE_FOR_RENDER, context, null);
-
-        resources.triggerEvent(EventConstants.PREPARE, context, null);
-
-        // Save the form element for later, in case we want to write an encoding
-        // type attribute.
-
-        form = writer.element("form", "id", clientId, "method", "post", "action", actionURL);
-
-        if ((zone != null || clientValidation != ClientValidation.NONE) && !request.isXHR())
-            writer.attributes("onsubmit", MarkupConstants.WAIT_FOR_PAGE);
-
-        resources.renderInformalParameters(writer);
-
-        div = writer.element("div", "class", CSSClassConstants.INVISIBLE);
-
-        for (String parameterName : link.getParameterNames())
-        {
-            String value = link.getParameterValue(parameterName);
-
-            writer.element("input", "type", "hidden", "name", parameterName, "value", value);
-            writer.end();
-        }
-
-        writer.end(); // div
-
-        environment.peek(Heartbeat.class).begin();
-    }
-
-    private void addJavaScriptInitialization()
-    {
-        JSONObject validateSpec = new JSONObject().put("blur", clientValidation == ClientValidation.BLUR).put("submit",
-                clientValidation != ClientValidation.NONE);
-
-        JSONObject spec = new JSONObject("formId", clientId).put("validate", validateSpec);
-
-        javascriptSupport.addInitializerCall(InitializationPriority.EARLY, "formEventManager", spec);
-    }
-
-    @HeartbeatDeferred
-    private void linkFormToZone(Link link)
-    {
-        clientBehaviorSupport.linkZone(clientId, zone, link);
-    }
-
-    /**
-     * Creates an {@link org.apache.tapestry5.corelib.internal.InternalFormSupport} for
-     * this Form. This method is used
-     * by {@link org.apache.tapestry5.corelib.components.FormInjector}.
-     * <p>
-     * This method may also be invoked as the handler for the "internalCreateRenderTimeFormSupport" event.
-     * 
-     * @param clientId
-     *            the client-side id for the rendered form
-     *            element
-     * @param actionSink
-     *            used to collect component actions that will, ultimately, be
-     *            written as the t:formdata hidden
-     *            field
-     * @param allocator
-     *            used to allocate unique ids
-     * @return form support object
-     */
-    @OnEvent("internalCreateRenderTimeFormSupport")
-    InternalFormSupport createRenderTimeFormSupport(String clientId, ComponentActionSink actionSink,
-            IdAllocator allocator)
-    {
-        return new FormSupportImpl(resources, clientId, actionSink, clientBehaviorSupport,
-                clientValidation != ClientValidation.NONE, allocator, validationId);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        environment.peek(Heartbeat.class).end();
-
-        formSupport.executeDeferred();
-
-        String encodingType = formSupport.getEncodingType();
-
-        if (encodingType != null)
-            form.forceAttributes("enctype", encodingType);
-
-        writer.end(); // form
-
-        div.element("input", "type", "hidden", "name", FORM_DATA, "value", actionSink.getClientData());
-
-        if (autofocus)
-            environment.pop(ValidationDecorator.class);
-    }
-
-    void cleanupRender()
-    {
-        environment.pop(FormSupport.class);
-
-        formSupport = null;
-
-        environment.pop(ValidationTracker.class);
-
-        activeTracker = null;
-
-        environment.pop(BeanValidationContext.class);
-    }
-
-    @SuppressWarnings(
-    { "unchecked", "InfiniteLoopStatement" })
-    @Log
-    Object onAction(EventContext context) throws IOException
-    {
-        activeTracker = getWrappedTracker();
-
-        activeTracker.clear();
-
-        formSupport = new FormSupportImpl(resources, validationId);
-
-        environment.push(ValidationTracker.class, activeTracker);
-        environment.push(FormSupport.class, formSupport);
-        environment.push(BeanValidationContext.class, new BeanValidationContextImpl(validate));
-
-        Heartbeat heartbeat = new HeartbeatImpl();
-
-        environment.push(Heartbeat.class, heartbeat);
-
-        heartbeat.begin();
-
-        try
-        {
-            resources.triggerContextEvent(EventConstants.PREPARE_FOR_SUBMIT, context, eventCallback);
-
-            if (eventCallback.isAborted())
-                return true;
-
-            resources.triggerContextEvent(EventConstants.PREPARE, context, eventCallback);
-
-            if (eventCallback.isAborted())
-                return true;
-
-            executeStoredActions();
-
-            heartbeat.end();
-
-            formSupport.executeDeferred();
-
-            fireValidateFormEvent(context, eventCallback);
-
-            if (eventCallback.isAborted())
-                return true;
-
-            // Let the listeners know about overall success or failure. Most
-            // listeners fall into
-            // one of those two camps.
-
-            // If the tracker has no errors, then clear it of any input values
-            // as well, so that the next page render will be "clean" and show
-            // true persistent data, not value from the previous form
-            // submission.
-
-            if (!activeTracker.getHasErrors())
-                activeTracker.clear();
-
-            resources.triggerContextEvent(activeTracker.getHasErrors() ? EventConstants.FAILURE
-                    : EventConstants.SUCCESS, context, eventCallback);
-
-            // Lastly, tell anyone whose interested that the form is completely
-            // submitted.
-
-            if (eventCallback.isAborted())
-                return true;
-
-            resources.triggerContextEvent(EventConstants.SUBMIT, context, eventCallback);
-
-            return eventCallback.isAborted();
-        }
-        finally
-        {
-            environment.pop(Heartbeat.class);
-            environment.pop(FormSupport.class);
-
-            environment.pop(ValidationTracker.class);
-
-            environment.pop(BeanValidationContext.class);
-
-            activeTracker = null;
-        }
-    }
-
-    private void fireValidateFormEvent(EventContext context, TrackableComponentEventCallback callback)
-            throws IOException
-    {
-        fireValidateEvent(EventConstants.VALIDATE, context, callback);
-
-        if (callback.isAborted())
-            return;
-
-        fireValidateEvent(EventConstants.VALIDATE_FORM, context, callback);
-    }
-
-    private void fireValidateEvent(String eventName, EventContext context, TrackableComponentEventCallback callback)
-    {
-        try
-        {
-            resources.triggerContextEvent(eventName, context, callback);
-        }
-        catch (RuntimeException ex)
-        {
-            ValidationException ve = ExceptionUtils.findCause(ex, ValidationException.class);
-
-            if (ve != null)
-            {
-                ValidationTracker tracker = environment.peek(ValidationTracker.class);
-
-                tracker.recordError(ve.getMessage());
-
-                return;
-            }
-
-            throw ex;
-        }
-    }
-
-    /**
-     * Pulls the stored actions out of the request, converts them from MIME
-     * stream back to object stream and then
-     * objects, and executes them.
-     */
-    private void executeStoredActions()
-    {
-        String[] values = request.getParameters(FORM_DATA);
-
-        if (!request.getMethod().equals("POST") || values == null)
-            throw new RuntimeException(messages.format("invalid-request", FORM_DATA));
-
-        // Due to Ajax (FormInjector) there may be multiple values here, so
-        // handle each one individually.
-
-        for (String clientEncodedActions : values)
-        {
-            if (InternalUtils.isBlank(clientEncodedActions))
-                continue;
-
-            logger.debug("Processing actions: {}", clientEncodedActions);
-
-            ObjectInputStream ois = null;
-
-            Component component = null;
-
-            try
-            {
-                ois = clientDataEncoder.decodeClientData(clientEncodedActions);
-
-                while (!eventCallback.isAborted())
-                {
-                    String componentId = ois.readUTF();
-                    ComponentAction action = (ComponentAction) ois.readObject();
-
-                    component = source.getComponent(componentId);
-
-                    logger.debug("Processing: {} {}", componentId, action);
-
-                    action.execute(component);
-
-                    component = null;
-                }
-            }
-            catch (EOFException ex)
-            {
-                // Expected
-            }
-            catch (Exception ex)
-            {
-                Location location = component == null ? null : component.getComponentResources().getLocation();
-
-                throw new TapestryException(ex.getMessage(), location, ex);
-            }
-            finally
-            {
-                InternalUtils.close(ois);
-            }
-        }
-    }
-
-    public void recordError(String errorMessage)
-    {
-        getActiveTracker().recordError(errorMessage);
-    }
-
-    public void recordError(Field field, String errorMessage)
-    {
-        getActiveTracker().recordError(field, errorMessage);
-    }
-
-    public boolean getHasErrors()
-    {
-        return getActiveTracker().getHasErrors();
-    }
-
-    public boolean isValid()
-    {
-        return !getActiveTracker().getHasErrors();
-    }
-
-    private ValidationTracker getActiveTracker()
-    {
-        return activeTracker != null ? activeTracker : getWrappedTracker();
-    }
-
-    public void clearErrors()
-    {
-        getActiveTracker().clear();
-    }
-
-    // For testing:
-
-    void setTracker(ValidationTracker tracker)
-    {
-        this.tracker = tracker;
-    }
-
-    /**
-     * Forms use the same value for their name and their id attribute.
-     */
-    public String getClientId()
-    {
-        return clientId;
-    }
-
-    @Inject
-    private ComponentSource componentSource;
-
-    private void preallocateNames(IdAllocator idAllocator)
-    {
-        for (String name : TapestryInternalUtils.splitAtCommas(preselectedFormNames))
-        {
-            idAllocator.allocateId(name);
-        }
-
-        Component activePage = componentSource.getActivePage();
-
-        // This is unlikely but may be possible if people override some of the standard
-        // exception reporting logic.
-
-        if (activePage == null)
-            return;
-
-        ComponentResources activePageResources = activePage.getComponentResources();
-
-        try
-        {
-
-            activePageResources.triggerEvent(EventConstants.PREALLOCATE_FORM_CONTROL_NAMES, new Object[]
-            { idAllocator }, null);
-        }
-        catch (RuntimeException ex)
-        {
-            logger.error(
-                    String.format("Unable to obtrain form control names to preallocate: %s",
-                            InternalUtils.toMessage(ex)), ex);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.xdoc
deleted file mode 100644
index 201530b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Form.xdoc
+++ /dev/null
@@ -1,182 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-
-            <ul>
-                <li>
-                    <a href="BeanEditForm.html">BeanEditForm</a>
-                </li>
-                <li>
-                    <a href="Errors.html">Errors</a>
-                </li>
-                <li>
-                    <a href="FormFragment.html">FormFragment</a>
-                </li>
-                <li>
-                    <a href="Label.html">Label</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Form Control Element Components">
-
-            <p>
-                The following components are Tapestry wrappers around client-side HTML form elements:
-            </p>
-
-            <ul>
-                <li>
-                    <a href="Checkbox.html">Checkbox</a>
-                </li>
-                <li>
-                    <a href="DateField.html">DateField</a>
-                </li>
-                <li>
-                    <a href="Palette.html">Palette</a>
-                </li>
-                <li>
-                    <a href="PasswordField.html">PasswordField</a>
-                </li>
-                <li>
-                    <a href="Radio.html">Radio</a>
-                    and
-                    <a href="RadioGroup.html">RadioGroup</a>
-                </li>
-                <li>
-                    <a href="Select.html">Select</a>
-                </li>
-                <li>
-                    <a href="Submit.html">Submit</a>
-                </li>
-                <li>
-                    <a href="TextArea.html">TextArea</a>
-                </li>
-                <li>
-                    <a href="TextField.html">TextField</a>
-                </li>
-            </ul>
-
-        </section>
-
-
-        <section name="Examples">
-
-            <p>
-                Examples of the Form component are provided in the many
-                other pages that discuss specific form control element components,
-                such as
-                <a href="Radio.html">Radio</a>
-                and<a href="TextField.html">TextField</a>.
-            </p>
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                The Form component generates a seemingly bewildering number of
-                events, designed to address a wide range of needs. The goal
-                is to give you as the developer the tools necessary to
-                effeciently manage state.
-            </p>
-
-            <p>
-                All of the events that are triggered will pass along
-                the values defined by the context parameter. Most often,
-                there is no context, or the context is a single value
-                (a primary key used to identify the object being updated
-                by the form).
-            </p>
-
-
-            <subsection name="Render Events">
-
-                <p>
-                    Render event handler methods should
-                    <em>not</em>
-                    return a value, doing
-                    so will be an error. The methods are intended to allow
-                    the page to convert a primary key stored in the context
-                    back into an object ready to have its properties updated
-                    by the Form.
-                </p>
-
-                <p>
-                    The context passed to component event handler methods is provided by reading the context parameter.
-                </p>
-
-                <ul>
-                    <li>prepareForRender</li>
-                    <li>prepare</li>
-                </ul>
-
-
-            </subsection>
-
-            <subsection name="Submit Events">
-
-                <p>
-                    Submit events may return a navigational value, which will
-                    abort any remaining processing of the form submission.
-                </p>
-
-                <p>
-                    The context provided to component event handler methods
-                    originates in the form submission (it is stored in hidden form fields); the
-                    context parameter is
-                    <em>not</em>
-                    read during a form submission.
-                </p>
-
-                <ul>
-                    <li>prepareForSubmit</li>
-                    <li>prepare</li>
-                    <li>validate</li>
-                    <li>validateForm <em>(deprecated)</em></li>
-                    <li>failure
-                        <em>or</em>
-                        success
-                    </li>
-                    <li>submit</li>
-                </ul>
-
-                <p>
-                    The validate event is to allow the page to
-                    perform cross-field validation. The validateForm event is a deprecated name for the
-                    validate event (it currently exists only for backwards compatibility).
-                    The failure or success
-                    event is fired based on whether there are or are not any
-                    validation errors.
-                </p>
-
-            </subsection>
-
-
-            <subsection name="Form Ids">
-
-                <p>
-                    It is considered a best practice to give explicit ids to
-                    Form components, and form control element components.
-                    These ids propagate down to the client side as
-                    element names and/or ids, and eventually show up
-                    as query parameters when the form is submitted.
-                </p>
-
-                <p>
-                    To achieve a more RESTful URL scheme, give the form component
-                    an id based on what it does rather than what data it updates, thus
-                    <code><![CDATA[<t:form t:id="search"/>]]></code>
-                    rather than
-                    <code><![CDATA[<t:form t:id="searchData"/>]]></code>
-                    or
-                    <code><![CDATA[<t:form t:id="searchForm"/>]]></code>.
-
-                </p>
-
-
-            </subsection>
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormFragment.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormFragment.java
deleted file mode 100644
index 89f7f09..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormFragment.java
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.CSSClassConstants;
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.internal.ComponentActionSink;
-import org.apache.tapestry5.corelib.internal.FormSupportAdapter;
-import org.apache.tapestry5.corelib.internal.HiddenFieldPositioner;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.HiddenFieldLocationRules;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.slf4j.Logger;
-
-/**
- * A FormFragment is a portion of a Form that may be selectively displayed. Form elements inside a FormFragment will
- * automatically bypass validation when the fragment is invisible. The trick is to also bypass server-side form
- * processing for such fields when the form is submitted; client-side logic "removes" the
- * {@link org.apache.tapestry5.corelib.components.Form#FORM_DATA form data} for the fragment if it is invisible when the
- * form
- * is submitted; alternately, client-side logic can simply remove the form fragment element (including its visible and
- * hidden fields) to prevent server-side processing.
- * <p/>
- * The client-side element will now listen to two new event defined by client-side constants:
- * <dl>
- * <dt>Tapestry.CHANGE_VISIBILITY_EVENT</dt>
- * <dd>Change the visiblity as per the event memo's visibility property. When the visiblity changes, the correct
- * animation is executed.</dd>
- * <dt>Tapestry.HIDE_AND_REMOVE_EVENT</dt>
- * <dd>Hides the element, then removes it from the DOM entirely.
- * </dl>
- * 
- * @see org.apache.tapestry5.corelib.mixins.TriggerFragment
- */
-@SupportsInformalParameters
-public class FormFragment implements ClientElement
-{
-    /**
-     * Determines if the fragment is initially visible or initially invisible (the default). This is only used when
-     * rendering; when the form is submitted, the hidden field value is used to determine whether the elements within
-     * the fragment should be processed (or ignored if still invisible).
-     */
-    @Parameter
-    private boolean visible;
-
-    /**
-     * If true, then the fragment submits the values from fields it contains <em>even if</em> the fragment is not
-     * visible.
-     * The default is to omit values from fields when the enclosing fragment is non visible.
-     * 
-     * @since 5.2.0
-     */
-    @Parameter
-    private boolean alwaysSubmit;
-
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make the fragment visible.
-     * If not specified, then the default "slidedown" function is used.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String show;
-
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that is invoked when the fragment is to be
-     * hidden. If not specified, the default "slideup" function is used.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String hide;
-
-    /**
-     * The element to render for each iteration of the loop. The default comes from the template, or "div" if the
-     * template did not specific an element.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String element;
-
-    /**
-     * If bound, then the id attribute of the rendered element will be this exact value. If not bound, then a unique id
-     * is generated for the element.
-     */
-    @Parameter(name = "id", defaultPrefix = BindingConstants.LITERAL)
-    private String idParameter;
-
-    @Inject
-    private Environment environment;
-
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    private String clientId;
-
-    private ComponentActionSink componentActions;
-
-    @Inject
-    private Logger logger;
-
-    @Inject
-    private HiddenFieldLocationRules rules;
-
-    private HiddenFieldPositioner hiddenFieldPositioner;
-
-    @Inject
-    private ClientDataEncoder clientDataEncoder;
-
-    String defaultElement()
-    {
-        return resources.getElementName("div");
-    }
-
-    /**
-     * Renders a &lt;div&gt; tag and provides an override of the {@link org.apache.tapestry5.services.FormSupport}
-     * environmental.
-     */
-    void beginRender(MarkupWriter writer)
-    {
-        FormSupport formSupport = environment.peekRequired(FormSupport.class);
-
-        clientId = resources.isBound("id") ? idParameter : javascriptSupport.allocateClientId(resources);
-
-        hiddenFieldPositioner = new HiddenFieldPositioner(writer, rules);
-
-        Element element = writer.element(this.element, "id", clientId);
-
-        resources.renderInformalParameters(writer);
-
-        if (!visible)
-            element.addClassName(CSSClassConstants.INVISIBLE);
-
-        clientBehaviorSupport.addFormFragment(clientId, alwaysSubmit, show, hide);
-
-        componentActions = new ComponentActionSink(logger, clientDataEncoder);
-
-        // Here's the magic of environmentals ... we can create a wrapper around
-        // the normal FormSupport environmental that intercepts some of the behavior.
-        // Here we're setting aside all the actions inside the FormFragment so that we
-        // can control whether those actions occur when the form is submitted.
-
-        FormSupport override = new FormSupportAdapter(formSupport)
-        {
-            @Override
-            public <T> void store(T component, ComponentAction<T> action)
-            {
-                componentActions.store(component, action);
-            }
-
-            @Override
-            public <T> void storeAndExecute(T component, ComponentAction<T> action)
-            {
-                componentActions.store(component, action);
-
-                action.execute(component);
-            }
-        };
-
-        // Tada! Now all the enclosed components will use our override of FormSupport,
-        // until we pop it off.
-
-        environment.push(FormSupport.class, override);
-
-    }
-
-    /**
-     * Closes the &lt;div&gt; tag and pops off the {@link org.apache.tapestry5.services.FormSupport} environmental
-     * override.
-     * 
-     * @param writer
-     */
-    void afterRender(MarkupWriter writer)
-    {
-        hiddenFieldPositioner.getElement().attributes("type", "hidden",
-
-        "name", Form.FORM_DATA,
-
-        "id", clientId + "-hidden",
-
-        "value", componentActions.getClientData());
-
-        writer.end(); // div
-
-        environment.pop(FormSupport.class);
-    }
-
-    public String getClientId()
-    {
-        return clientId;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormFragment.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormFragment.xdoc
deleted file mode 100644
index 40689a6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormFragment.xdoc
+++ /dev/null
@@ -1,159 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-
-            <ul>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="../mixins/TriggerFragment.html">TriggerFragment</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Examples">
-
-            <p>
-                This example will collect a billing address for an order and, optionally, a separate
-                shipping address. Initially, the form will render just the billing address fields:
-            </p>
-
-            <p>
-                <img src="formfragment_ref_1.png"/>
-            </p>
-
-
-            <p>
-                Clicking the checkbox will trigger an animation that slides down the
-                remainder of the form.
-            </p>
-
-            <p>
-                <img src="formfragment_ref_2.png"/>
-            </p>
-
-
-            <p>
-                The FormFragment component ensures that client-side validation is only enabled for fields
-                that are actually visible to the user. In addition, for fields that are enclosed within the
-                FormFragment,
-                server-side validation and processing only occurs if the fields were visible to the user when the
-                client-side
-                form was submitted.
-            </p>
-
-            <subsection name="OrderAddress.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>Order Address</h1>
-
-        <t:form t:id="order">
-
-            <t:errors/>
-
-            <div class="t-beaneditor">
-
-                <h2>Billing Address</h2>
-
-                <t:beaneditor t:id="billingAddress"/>
-
-                <t:checkbox t:id="separateShipTo" t:mixins="triggerfragment" fragment="seperateShippingAddress"/>
-                <t:label for="separateShipTo">Separate Ship To?</t:label>
-
-                <t:formfragment t:id="seperateShippingAddress" visible="separateShipTo">
-
-                    <h2>Shipping Address</h2>
-
-                    <t:beaneditor t:id="shippingAddress"/>
-
-                </t:formfragment>
-
-
-                <div class="t-beaneditor-row">
-                    <input type="submit" value="Continue"/>
-                </div>
-            </div>
-
-        </t:form>
-
-    </body>
-</html>]]></source>
-
-                <p>
-                    The separateShipTo property is initially null, so the FormFragment is initially invisible. The
-                    BeanEditor
-                    and all of the individual fields are rendered, but the &lt;div&gt; for the FormFragment is simply
-                    invisible.
-                </p>
-
-                <p>
-                    The
-                    <a href="../mixins/TriggerFragment.html">TriggerFragment</a>
-                    mixin adds a client-side trigger that
-                    will show or hide the fragment as the checkbox is clicked by the user.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="OrderAddress.java">
-                <source><![CDATA[
-public class OrderAddress
-{
-    @Property
-    @Persist
-    private ShippingAddress billingAddress;
-
-    @Property
-    @Persist
-    private ShippingAddress shippingAddress;
-
-    @Property
-    @Persist
-    private boolean separateShipTo;
-
-    Object onSuccessFromOrder()
-    {
-      ...
-    }
-}]]></source>
-            </subsection>
-
-            <p>
-                The OrderAddress page is largely just a holder of the properties (for simplicity in this example,
-                there is no event handler for the success event, nor are we going into other details that would
-                be reflected in a real application).
-            </p>
-
-            <p>
-                The BeanEditor component will create default instances of billingAddress and shippingAddress.
-                If the user does not choose to use a seperate ship-to, the shippingAddress property will contain
-                an empty ShippingAddress object. The application will need to query the separateShipTo property
-                to determine how to proceed once the form is succesfully submitted.
-            </p>
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                FormFragments are nestable, which can lead to complex (and perhaps, confusing) interfaces.
-            </p>
-
-            <p>
-                The FormFragment doesn't just prevent server-side input validation when invisible; it prevents
-                <em>any</em>
-                server-side processing
-                for the components it encloses, as if the components were entirely absent.
-            </p>
-
-            <p>
-                If JavaScript is disabled on the client, the application will still operate, though the user
-                will have to submit the form to have the fragment(s) update.
-            </p>
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormInjector.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormInjector.java
deleted file mode 100644
index 0e7291b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/FormInjector.java
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.data.InsertPosition;
-import org.apache.tapestry5.corelib.internal.ComponentActionSink;
-import org.apache.tapestry5.corelib.internal.HiddenFieldPositioner;
-import org.apache.tapestry5.corelib.internal.InternalFormSupport;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.services.PageRenderQueue;
-import org.apache.tapestry5.internal.services.RequestConstants;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.HiddenFieldLocationRules;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.slf4j.Logger;
-
-/**
- * A way to add new content to an existing Form. The FormInjector emulates its tag from the template (or uses a
- * &lt;div&gt;). When triggered, new content is obtained from the application and is injected before or after the
- * element.
- * <p/>
- * On the client side, a new function, trigger(), is added to the element. Invoking this client-side function will
- * trigger the FormInjector; a request is sent to the server, new content is generated, and the new content is placed
- * before or after (per configuration) the existing FormInjector element.
- */
-@SupportsInformalParameters
-@Events(EventConstants.ACTION)
-public class FormInjector implements ClientElement
-{
-    public static final String INJECT_EVENT = "inject";
-
-    /**
-     * @deprecated Use {@link RequestConstants#FORM_CLIENTID_PARAMETER} instead
-     */
-    public static final String FORM_CLIENTID_PARAMETER = RequestConstants.FORM_CLIENTID_PARAMETER;
-
-    /**
-     * @deprecated Use {@link RequestConstants#FORM_COMPONENTID_PARAMETER} instead
-     */
-    public static final String FORM_COMPONENTID_PARAMETER = RequestConstants.FORM_COMPONENTID_PARAMETER;
-
-    /**
-     * The context for the link (optional parameter). This list of values will be converted into strings and included in
-     * the URI. The strings will be coerced back to whatever their values are and made available to event handler
-     * methods.
-     */
-    @Parameter
-    private Object[] context;
-
-    @Parameter(defaultPrefix = BindingConstants.LITERAL, value = "above")
-    private InsertPosition position;
-
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make added content
-     * visible. Leaving as null uses the default function, "highlight".
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String show;
-
-    /**
-     * The element name to render, which is normally the element name used to represent the FormInjector component in
-     * the template, or "div".
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String element;
-
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    @SuppressWarnings("unchecked")
-    @Environmental
-    private TrackableComponentEventCallback eventCallback;
-
-    @Inject
-    private PageRenderQueue pageRenderQueue;
-
-    private String clientId;
-
-    @Inject
-    private ComponentResources resources;
-
-    private Element clientElement;
-
-    String defaultElement()
-    {
-        return resources.getElementName("div");
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        clientId = javascriptSupport.allocateClientId(resources);
-
-        clientElement = writer.element(element, "id", clientId);
-
-        resources.renderInformalParameters(writer);
-
-        // Now work on the JavaScript side of things.
-
-        Link link = resources.createEventLink(INJECT_EVENT, context);
-
-        link.addParameter(RequestConstants.FORM_CLIENTID_PARAMETER, formSupport.getClientId());
-        link.addParameter(RequestConstants.FORM_COMPONENTID_PARAMETER, formSupport.getFormComponentId());
-
-        clientBehaviorSupport.addFormInjector(clientId, link, position, show);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-
-        // Add the class name to the rendered client element. This allows nested elements to locate
-        // the containing FormInjector element.
-
-        clientElement.addClassName("t-forminjector");
-    }
-
-    /**
-     * Returns the unique client-side id of the rendered element.
-     */
-    public String getClientId()
-    {
-        return clientId;
-    }
-
-    /**
-     * Invoked via an Ajax request. Triggers an action event and captures the return value. The return value from the
-     * event notification is what will ultimately render (typically, its a Block).
-     */
-    void onInject(EventContext context) throws IOException
-    {
-        resources.triggerContextEvent(EventConstants.ACTION, context, eventCallback);
-
-        if (!eventCallback.isAborted())
-            return;
-
-        // Before rendering, allocate a unique element id and record it into the JSON reply.
-
-        PartialMarkupRendererFilter filter = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                clientId = javascriptSupport.allocateClientId(resources);
-
-                reply.put("elementId", clientId);
-
-                renderer.renderMarkup(writer, reply);
-            }
-        };
-
-        pageRenderQueue.addPartialMarkupRendererFilter(filter);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
deleted file mode 100644
index 5bc70d1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.java
+++ /dev/null
@@ -1,603 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.io.IOException;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.corelib.data.GridPagerPosition;
-import org.apache.tapestry5.grid.ColumnSort;
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.grid.GridModel;
-import org.apache.tapestry5.grid.GridSortModel;
-import org.apache.tapestry5.grid.SortConstraint;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
-import org.apache.tapestry5.internal.bindings.AbstractBinding;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * A grid presents tabular data. It is a composite component, created in terms of several sub-components. The
- * sub-components are statically wired to the Grid, as it provides access to the data and other models that they need.
- * <p/>
- * A Grid may operate inside a {@link org.apache.tapestry5.corelib.components.Form}. By overriding the cell renderers of
- * properties, the default output-only behavior can be changed to produce a complex form with individual control for
- * editing properties of each row. This is currently workable but less than ideal -- if the order of rows provided by
- * the {@link org.apache.tapestry5.grid.GridDataSource} changes between render and form submission, then there's the
- * possibility that data will be applied to the wrong server-side objects. In general, when using Grid and Form
- * together, you want to provide the Grid with a {@link org.apache.tapestry5.ValueEncoder} (via the encoder parameter).
- * 
- * @see org.apache.tapestry5.beaneditor.BeanModel
- * @see org.apache.tapestry5.services.BeanModelSource
- * @see org.apache.tapestry5.grid.GridDataSource
- */
-@SupportsInformalParameters
-public class Grid implements GridModel
-{
-    /**
-     * The source of data for the Grid to display. This will usually be a List or array but can also be an explicit
-     * {@link GridDataSource}. For Lists and object arrays, a GridDataSource is created automatically as a wrapper
-     * around the underlying List.
-     */
-    @Parameter(required = true, autoconnect = true)
-    private GridDataSource source;
-
-    /**
-     * A wrapper around the provided GridDataSource that caches access to the availableRows property. This is the source
-     * provided to sub-components.
-     */
-    private GridDataSource cachingSource;
-
-    /**
-     * The number of rows of data displayed on each page. If there are more rows than will fit, the Grid will divide up
-     * the rows into "pages" and (normally) provide a pager to allow the user to navigate within the overall result
-     * set.
-     */
-    @Parameter("25")
-    private int rowsPerPage;
-
-    /**
-     * Defines where the pager (used to navigate within the "pages" of results) should be displayed: "top", "bottom",
-     * "both" or "none".
-     */
-    @Parameter(value = "top", defaultPrefix = BindingConstants.LITERAL)
-    private GridPagerPosition pagerPosition;
-
-    /**
-     * Used to store the current object being rendered (for the current row). This is used when parameter blocks are
-     * provided to override the default cell renderer for a particular column ... the components within the block can
-     * use the property bound to the row parameter to know what they should render.
-     */
-    @Parameter(principal = true)
-    private Object row;
-
-    /**
-     * Optional output parmeter used to identify the index of the column being rendered.
-     */
-    @Parameter
-    private int columnIndex;
-
-    /**
-     * The model used to identify the properties to be presented and the order of presentation. The model may be
-     * omitted, in which case a default model is generated from the first object in the data source (this implies that
-     * the objects provided by the source are uniform). The model may be explicitly specified to override the default
-     * behavior, say to reorder or rename columns or add additional columns. The add, include,
-     * exclude and reorder
-     * parameters are <em>only</em> applied to a default model, not an explicitly provided one.
-     */
-    @Parameter
-    private BeanModel model;
-
-    /**
-     * The model parameter after modification due to the add, include, exclude and reorder parameters.
-     */
-    private BeanModel dataModel;
-
-    /**
-     * The model used to handle sorting of the Grid. This is generally not specified, and the built-in model supports
-     * only single column sorting. The sort constraints (the column that is sorted, and ascending vs. descending) is
-     * stored as persistent fields of the Grid component.
-     */
-    @Parameter
-    private GridSortModel sortModel;
-
-    /**
-     * A comma-seperated list of property names to be added to the {@link org.apache.tapestry5.beaneditor.BeanModel}.
-     * Cells for added columns will be blank unless a cell override is provided. This parameter is only used
-     * when a default model is created automatically.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String add;
-
-    /**
-     * A comma-separated list of property names to be retained from the
-     * {@link org.apache.tapestry5.beaneditor.BeanModel}.
-     * Only these properties will be retained, and the properties will also be reordered. The names are
-     * case-insensitive. This parameter is only used
-     * when a default model is created automatically.
-     */
-    @SuppressWarnings("unused")
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String include;
-
-    /**
-     * A comma-separated list of property names to be removed from the {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * .
-     * The names are case-insensitive. This parameter is only used
-     * when a default model is created automatically.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String exclude;
-
-    /**
-     * A comma-separated list of property names indicating the order in which the properties should be presented. The
-     * names are case insensitive. Any properties not indicated in the list will be appended to the end of the display
-     * order. This parameter is only used
-     * when a default model is created automatically.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String reorder;
-
-    /**
-     * A Block to render instead of the table (and pager, etc.) when the source is empty. The default is simply the text
-     * "There is no data to display". This parameter is used to customize that message, possibly including components to
-     * allow the user to create new objects.
-     */
-    @Parameter(value = "block:empty", defaultPrefix = BindingConstants.LITERAL)
-    private Block empty;
-
-    /**
-     * CSS class for the &lt;table&gt; element. In addition, informal parameters to the Grid are rendered in the table
-     * element.
-     */
-    @Parameter(name = "class", defaultPrefix = BindingConstants.LITERAL, value = "t-data-grid")
-    @Property(write = false)
-    private String tableClass;
-
-    /**
-     * If true, then the Grid will be wrapped in an element that acts like a
-     * {@link org.apache.tapestry5.corelib.components.Zone}; all the paging and sorting links will refresh the zone,
-     * repainting
-     * the entire grid within it, but leaving the rest of the page (outside the zone) unchanged.
-     */
-    @Parameter
-    private boolean inPlace;
-
-    /**
-     * The name of the psuedo-zone that encloses the Grid.
-     */
-    @Property(write = false)
-    private String zone;
-
-    private boolean didRenderZoneDiv;
-
-    @Persist
-    private Integer currentPage;
-
-    @Persist
-    private String sortColumnId;
-
-    @Persist
-    private Boolean sortAscending;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private BeanModelSource modelSource;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    @Component(parameters =
-    { "index=inherit:columnIndex", "lean=inherit:lean", "overrides=overrides", "zone=zone" })
-    private GridColumns columns;
-
-    @Component(parameters =
-    { "columnIndex=inherit:columnIndex", "rowsPerPage=rowsPerPage", "currentPage=currentPage", "row=row",
-            "overrides=overrides" }, publishParameters = "rowIndex,rowClass,volatile,encoder,lean")
-    private GridRows rows;
-
-    @Component(parameters =
-    { "source=dataSource", "rowsPerPage=rowsPerPage", "currentPage=currentPage", "zone=zone" })
-    private GridPager pager;
-
-    @Component(parameters = "to=pagerTop")
-    private Delegate pagerTop;
-
-    @Component(parameters = "to=pagerBottom")
-    private Delegate pagerBottom;
-
-    @Component(parameters = "class=tableClass", inheritInformalParameters = true)
-    private Any table;
-
-    @Environmental(false)
-    private FormSupport formSupport;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    /**
-     * Defines where block and label overrides are obtained from. By default, the Grid component provides block
-     * overrides (from its block parameters).
-     */
-    @Parameter(value = "this", allowNull = false)
-    @Property(write = false)
-    private PropertyOverrides overrides;
-
-    /**
-     * Set up via the traditional or Ajax component event request handler
-     */
-    @Environmental
-    private ComponentEventResultProcessor componentEventResultProcessor;
-
-    @Inject
-    private ComponentDefaultProvider defaultsProvider;
-
-    ValueEncoder defaultEncoder()
-    {
-        return defaultsProvider.defaultValueEncoder("row", resources);
-    }
-
-    /**
-     * A version of GridDataSource that caches the availableRows property. This addresses TAPESTRY-2245.
-     */
-    static class CachingDataSource implements GridDataSource
-    {
-        private final GridDataSource delegate;
-
-        private boolean availableRowsCached;
-
-        private int availableRows;
-
-        CachingDataSource(GridDataSource delegate)
-        {
-            this.delegate = delegate;
-        }
-
-        public int getAvailableRows()
-        {
-            if (!availableRowsCached)
-            {
-                availableRows = delegate.getAvailableRows();
-                availableRowsCached = true;
-            }
-
-            return availableRows;
-        }
-
-        public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints)
-        {
-            delegate.prepare(startIndex, endIndex, sortConstraints);
-        }
-
-        public Object getRowValue(int index)
-        {
-            return delegate.getRowValue(index);
-        }
-
-        public Class getRowType()
-        {
-            return delegate.getRowType();
-        }
-    }
-
-    /**
-     * Default implementation that only allows a single column to be the sort column, and stores the sort information as
-     * persistent fields of the Grid component.
-     */
-    class DefaultGridSortModel implements GridSortModel
-    {
-        public ColumnSort getColumnSort(String columnId)
-        {
-            if (!TapestryInternalUtils.isEqual(columnId, sortColumnId))
-                return ColumnSort.UNSORTED;
-
-            return getColumnSort();
-        }
-
-        private ColumnSort getColumnSort()
-        {
-            return getSortAscending() ? ColumnSort.ASCENDING : ColumnSort.DESCENDING;
-        }
-
-        public void updateSort(String columnId)
-        {
-            assert InternalUtils.isNonBlank(columnId);
-            if (columnId.equals(sortColumnId))
-            {
-                setSortAscending(!getSortAscending());
-                return;
-            }
-
-            sortColumnId = columnId;
-            setSortAscending(true);
-        }
-
-        public List<SortConstraint> getSortConstraints()
-        {
-            if (sortColumnId == null)
-                return Collections.emptyList();
-
-            PropertyModel sortModel = getDataModel().getById(sortColumnId);
-
-            SortConstraint constraint = new SortConstraint(sortModel, getColumnSort());
-
-            return Collections.singletonList(constraint);
-        }
-
-        public void clear()
-        {
-            sortColumnId = null;
-        }
-    }
-
-    GridSortModel defaultSortModel()
-    {
-        return new DefaultGridSortModel();
-    }
-
-    /**
-     * Returns a {@link org.apache.tapestry5.Binding} instance that attempts to identify the model from the source
-     * parameter (via {@link org.apache.tapestry5.grid.GridDataSource#getRowType()}. Subclasses may override to provide
-     * a different mechanism. The returning binding is variant (not invariant).
-     * 
-     * @see BeanModelSource#createDisplayModel(Class, org.apache.tapestry5.ioc.Messages)
-     */
-    protected Binding defaultModel()
-    {
-        return new AbstractBinding()
-        {
-            public Object get()
-            {
-                // Get the default row type from the data source
-
-                GridDataSource gridDataSource = source;
-
-                Class rowType = gridDataSource.getRowType();
-
-                if (rowType == null)
-                    throw new RuntimeException(
-                            String.format(
-                                    "Unable to determine the bean type for rows from %s. You should bind the model parameter explicitly.",
-                                    gridDataSource));
-
-                // Properties do not have to be read/write
-
-                return modelSource.createDisplayModel(rowType, overrides.getOverrideMessages());
-            }
-
-            /**
-             * Returns false. This may be overkill, but it basically exists because the model is
-             * inherently mutable and therefore may contain client-specific state and needs to be
-             * discarded at the end of the request. If the model were immutable, then we could leave
-             * invariant as true.
-             */
-            @Override
-            public boolean isInvariant()
-            {
-                return false;
-            }
-        };
-    }
-
-    static final ComponentAction<Grid> SETUP_DATA_SOURCE = new ComponentAction<Grid>()
-    {
-        private static final long serialVersionUID = 8545187927995722789L;
-
-        public void execute(Grid component)
-        {
-            component.setupDataSource();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Grid.SetupDataSource";
-        }
-    };
-
-    Object setupRender()
-    {
-        if (formSupport != null)
-            formSupport.store(this, SETUP_DATA_SOURCE);
-
-        setupDataSource();
-
-        // If there's no rows, display the empty block placeholder.
-
-        return cachingSource.getAvailableRows() == 0 ? empty : null;
-    }
-
-    void setupDataSource()
-    {
-        // TAP5-34: We pass the source into the CachingDataSource now; previously
-        // we were accessing source directly, but during submit the value wasn't
-        // cached, and therefore access was very inefficient, and sorting was
-        // very inconsistent during the processing of the form submission.
-
-        cachingSource = new CachingDataSource(source);
-
-        int availableRows = cachingSource.getAvailableRows();
-
-        if (availableRows == 0)
-            return;
-
-        int maxPage = ((availableRows - 1) / rowsPerPage) + 1;
-
-        // This captures when the number of rows has decreased, typically due to deletions.
-
-        int effectiveCurrentPage = getCurrentPage();
-
-        if (effectiveCurrentPage > maxPage)
-            effectiveCurrentPage = maxPage;
-
-        int startIndex = (effectiveCurrentPage - 1) * rowsPerPage;
-
-        int endIndex = Math.min(startIndex + rowsPerPage - 1, availableRows - 1);
-
-        dataModel = null;
-
-        cachingSource.prepare(startIndex, endIndex, sortModel.getSortConstraints());
-    }
-
-    Object beginRender(MarkupWriter writer)
-    {
-        // Skip rendering of component (template, body, etc.) when there's nothing to display.
-        // The empty placeholder will already have rendered.
-
-        if (cachingSource.getAvailableRows() == 0)
-            return false;
-
-        if (inPlace && zone == null)
-        {
-            zone = jsSupport.allocateClientId(resources);
-
-            writer.element("div", "id", zone);
-
-            clientBehaviorSupport.addZone(zone, null, "show");
-
-            didRenderZoneDiv = true;
-        }
-
-        return null;
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        if (didRenderZoneDiv)
-        {
-            writer.end(); // div
-            didRenderZoneDiv = false;
-        }
-    }
-
-    public BeanModel getDataModel()
-    {
-        if (dataModel == null)
-        {
-            dataModel = model;
-
-            BeanModelUtils.modify(dataModel, add, include, exclude, reorder);
-        }
-
-        return dataModel;
-    }
-
-    public GridDataSource getDataSource()
-    {
-        return cachingSource;
-    }
-
-    public GridSortModel getSortModel()
-    {
-        return sortModel;
-    }
-
-    public Object getPagerTop()
-    {
-        return pagerPosition.isMatchTop() ? pager : null;
-    }
-
-    public Object getPagerBottom()
-    {
-        return pagerPosition.isMatchBottom() ? pager : null;
-    }
-
-    public int getCurrentPage()
-    {
-        return currentPage == null ? 1 : currentPage;
-    }
-
-    public void setCurrentPage(int currentPage)
-    {
-        this.currentPage = currentPage;
-    }
-
-    private boolean getSortAscending()
-    {
-        return sortAscending != null && sortAscending.booleanValue();
-    }
-
-    private void setSortAscending(boolean sortAscending)
-    {
-        this.sortAscending = sortAscending;
-    }
-
-    public int getRowsPerPage()
-    {
-        return rowsPerPage;
-    }
-
-    public Object getRow()
-    {
-        return row;
-    }
-
-    public void setRow(Object row)
-    {
-        this.row = row;
-    }
-
-    /**
-     * Resets the Grid to inital settings; this sets the current page to one, and
-     * {@linkplain org.apache.tapestry5.grid.GridSortModel#clear() clears the sort model}.
-     */
-    public void reset()
-    {
-        setCurrentPage(1);
-        sortModel.clear();
-    }
-
-    /**
-     * Event handler for inplaceupdate event triggered from nested components when an Ajax update occurs. The event
-     * context will carry the zone, which is recorded here, to allow the Grid and its sub-components to properly
-     * re-render themselves. Invokes
-     * {@link org.apache.tapestry5.services.ComponentEventResultProcessor#processResultValue(Object)} passing this (the
-     * Grid component) as the content provider for the update.
-     */
-    void onInPlaceUpdate(String zone) throws IOException
-    {
-        this.zone = zone;
-
-        componentEventResultProcessor.processResultValue(this);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.xdoc
deleted file mode 100644
index 3da8721..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Grid.xdoc
+++ /dev/null
@@ -1,310 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="BeanEditForm.html">BeanEditForm</a>
-                </li>
-                <li>
-                    <a href="BeanDisplay.html">BeanDisplay</a>
-                </li>
-                <li>
-                    <a href="Loop.html"></a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Simple Example">
-
-            <p>
-                The Grid component is closely related to the BeanEditor component; they are both based on the same
-                underlying concept and share quite a bit of code.
-            </p>
-
-            <p>In this example, we'll display a list of users. We'll also show some basic customization, to convert a
-                column
-                from just text, to a clickable link.
-            </p>
-
-            <p>
-                <img src="grid_ref1.png"/>
-            </p>
-
-            <p>This example shows much of the default behavior, using a collection of randomly generated users.
-                The column order is determined by the order of the getter methods in the User class. The columns are
-                sortable, and
-                because there are more results than will fit on a single page, page navigation is included (the
-                navigation
-                disappears for small result sets).
-            </p>
-
-            <subsection name="User.java">
-                <source><![CDATA[
-public class User
-{
-    @NonVisual
-    private long id;
-
-    private String firstName;
-
-    private String lastName;
-
-    private int age;
-
-    public long getId() { return id; }
-
-    public void setId(long id) { this.id = id; }
-
-    public String getFirstName() { return firstName; }
-
-    public void setFirstName(String firstName) { this.firstName = firstName; }
-
-    public String getLastName() { return lastName; }
-
-    public void setLastName(String lastName) { this.lastName = lastName; }
-
-    public int getAge() { return age; }
-
-    public void setAge(int age) { this.age = age; }
-}]]></source>
-
-                <p>The @NonVisual annotation prevents the id property from being displayed.</p>
-
-            </subsection>
-
-            <subsection name="UserList.tml">
-
-                <p>
-                    We want to make the user's last name a clickable link to a detail page for the user.
-                </p>
-
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
-    <body>
-        <h1>List Users</h1>
-
-        <t:grid source="users" row="user">
-            <p:lastNameCell>
-                <t:pagelink page="user/view" context="user.id">${user.lastname}</t:pagelink>
-            </p:lastNameCell>
-            <p:empty>
-              <p>There are no users to display; you can <t:pagelink page="user/add">add some</a>.</p>
-            </p:empty>
-        </t:grid>
-    </body>
-</html>
-]]></source>
-
-
-                <p>
-                    The block parameter name
-                    <code><em>property</em>cell
-                    </code>
-                    is used to override the rendering of cells for one property. As usual, case is ignored. Here we
-                    use a PageLink component to link to a ViewUser page, passing the id of the user as
-                    activation context for the target page.
-                </p>
-
-                <p>
-                    The Grid component takes care of the &lt;td&gt; element, and the provided block parameter
-                    provides the content
-                    <em>inside</em>
-                    the &lt;td&gt;.
-                </p>
-
-                <p>
-                    For the block to know what is being rendered, we bind the row parameter of the Grid
-                    to the user property of the page. The Grid will keep updating this property
-                    just before it renders each row (using its own internal renderers, or the ones
-                    provided as parameters).
-                </p>
-
-                <p>
-                    The header for a column may be overridden in the same way, using a parameter name
-                    of
-                    <code><em>property</em>header
-                    </code>
-                    . The parameter block will provide the content
-                    inside the &lt;th&gt; element. The provided block is responsible for
-                    providing any links or icons related to sorting.
-                </p>
-
-                <p>
-                    Binding the Grid's empty parameter overrides the default message displayed when there
-                    is no data to display. As demonstrated above, it doesn't have to be simple text, the
-                    block can be a snippet of markup and components.
-                </p>
-
-            </subsection>
-
-            <subsection name="UserList.java">
-                <source><![CDATA[
-public class UserList
-{
-    @Inject
-    private UserDAO userDAO;
-
-    @Property
-    private User user;
-
-    public List<User> getUsers() { return userDAO.findAll(); }
-}]]></source>
-
-            </subsection>
-
-            <p>
-                The UserList class exists to provide access to the UserDAO service, and to act as a holder
-                for the user property, needed when the Grid is rendering. We need it here because we've
-                overridden the rendering of the lastName property.
-            </p>
-
-        </section>
-
-        <section name="Adding Columns Example">
-
-            <p>
-                Commonly, you may want to add a column to the Grid to support a computed property, or as a placeholder
-                for an action. We'll do the latter, adding a column for deleting a user.
-            </p>
-
-
-            <p>
-                <img src="grid_ref2.png"/>
-            </p>
-
-            <subsection name="UserList.tml">
-
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
-    <body>
-        <h1>List Users</h1>
-
-        <t:grid source="users" row="user" add="delete">
-            <p:lastnamecell>
-                <t:pagelink page="user/view" context="user.id">${user.lastname}</t:pagelink>
-            </p:lastnameCell>
-            <p:deletecell>
-                <t:actionlink t:id="delete" context="user.id">Delete</t:actionlink>
-            </p:deletecell>
-            <p:empty>
-              <p>There are no users to display; you can <t:pagelink page="user/add">add some</a>.</p>
-            </p:empty>
-        </t:grid>
-    </body>
-</html>
-]]></source>
-
-                <p>
-                    We now explicitly provide a column for the "delete" property, which doesn't exist. In addition, a
-                    block
-                    for the "delete" property has been added that includes an ActionLink
-                    used to delete the user for the current row. This property is a
-                    <em>virtual</em>
-                    property because it doesn't correspond to a property
-                    of the data object, User.
-                </p>
-
-            </subsection>
-
-            <subsection name="UserList.java">
-                <source><![CDATA[
-public class UserList
-{
-    @Inject
-    private UserDAO userDAO;
-
-    @Property
-    private User user;
-
-    public List<User> getUsers() { return userDAO.findAll(); }
-
-    void onActionFromDelete(long userId)
-    {
-        userDAO.remove(userId);
-    }  
-}]]></source>
-
-
-                <p>
-                    The only addition here is an event handler method for when the delete link is clicked.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="UserList.properties">
-                <source><![CDATA[
-delete-label=Delete user?]]></source>
-
-                <p>
-                    The normal column title for the "delete" property would be "Delete". Using the
-                    page's message catalog we can override that.
-                </p>
-            </subsection>
-
-
-        </section>
-
-
-        <section name="Notes">
-
-            <p>
-                Tapestry does a lot of work to help you with the source parameter. The parameter type
-                is GridDataSource, but Tapestry has built-in coercions from
-                Object[] and List. In more complicated cases, such as very large
-                queries against a database, you will want to provide your own implementation
-                of GridDataSource, to minimimze the sizes of queries and result sets.
-            </p>
-
-
-            <subsection name="CSS">
-
-                <p>The Grid component is designed to be customized via CSS. As it renders &lt;th&gt;, &lt;tr&gt; and
-                    &lt;td&gt; elements,
-                    it generates CSS class attributes for each element. You can then add customized CSS rules, even
-                    overriding the Tapestry defaults,
-                    to present the Grid as desired. This is often used to set the width of a column to a fixed value.
-                </p>
-
-                <dl>
-                    <dt>
-                        <em>propertyId</em>
-                    </dt>
-                    <dd>Added to &lt;th&gt; elements to allow customization of a particular column's header,
-                        and added to &lt;td&gt; elements to allow customization of a particular column's data cells.
-                    </dd>
-
-                    <dt>t-first</dt>
-                    <dd>Added to the first &lt;th&gt; and the first &lt;tr&gt; of the &lt;tbody&gt; (the data portion of
-                        the table).
-                    </dd>
-
-                    <dt>t-last</dt>
-                    <dd>Added to the last &lt;th&gt; and the last &lt;tr&gt;.</dd>
-
-                    <dt>t-sort-column-ascending</dt>
-                    <dd>Added to the &lt;th&gt; and all corresponding &lt;td&gt; elements for the column that is the
-                        current sort column (if any,
-                        for ascending sort).
-                    </dd>
-
-                    <dt>t-sort-column-descending</dt>
-                    <dd>As with t-soft-column-ascending, but for a descending sort.</dd>
-
-                </dl>
-
-                <p>
-                    The added CSS classes can get quite verbose; the Grid's lean parameter allows the propertyId CSS
-                    class attribute value to be omitted. Even in lean mode, the other
-                    CSS class attribute values are rendered.
-                </p>
-
-            </subsection>
-
-        </section>
-
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridCell.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridCell.java
deleted file mode 100644
index 7fe4f2d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridCell.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.corelib.base.AbstractPropertyOutput;
-
-/**
- * Part of {@link Grid} that renders the markup inside a single data cell. GridCell is used inside a pair of loops; the
- * outer loop for each row, the inner loop for each property of the row.
- */
-public class GridCell extends AbstractPropertyOutput
-{
-    Object beginRender(MarkupWriter writer)
-    {
-        return renderPropertyValue(writer, getPropertyModel().getId() + "Cell");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
deleted file mode 100644
index dc70df4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridColumns.java
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.grid.ColumnSort;
-import org.apache.tapestry5.grid.GridConstants;
-import org.apache.tapestry5.grid.GridModel;
-import org.apache.tapestry5.grid.GridSortModel;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.List;
-
-/**
- * Renders out the column headers for the grid, including links (where appropriate) to control column sorting.
- */
-@SupportsInformalParameters
-@Events(InternalConstants.GRID_INPLACE_UPDATE + " (internal event)")
-public class GridColumns
-{
-    /**
-     * The object that provides access to bean and data models, which is typically the enclosing Grid component.
-     */
-    @Parameter(value = "componentResources.container")
-    private GridModel gridModel;
-
-    /**
-     * If true, then the CSS class on each &lt;TH&gt; element will be omitted, which can reduce the amount of output
-     * from the component overall by a considerable amount. Leave this as false, the default, when you are leveraging
-     * the CSS to customize the look and feel of particular columns.
-     */
-    @Parameter
-    private boolean lean;
-
-    /**
-     * Where to look for informal parameter Blocks used to override column headers.  The default is to look for such
-     * overrides in the GridColumns component itself, but this is usually overridden.
-     */
-    @Parameter("this")
-    private PropertyOverrides overrides;
-
-    /**
-     * If not null, then each link is output as a link to update the specified zone.
-     */
-    @Parameter
-    private String zone;
-
-    @SuppressWarnings("unused")
-    @Component(
-            parameters = { "event=sort", "disabled=sortDisabled", "context=columnContext", "class=sortLinkClass",
-                    "zone=inherit:zone" })
-    private EventLink sort, sort2;
-
-    @Inject
-    @Path("sort-asc.png")
-    private Asset ascendingAsset;
-
-    @Inject
-    @Path("sort-desc.png")
-    private Asset descendingAsset;
-
-    @Inject
-    @Path("sortable.png")
-    private Asset sortableAsset;
-
-    @Inject
-    private Messages messages;
-
-    @Inject
-    private Block standardHeader;
-
-    /**
-     * Optional output parameter that stores the current column index.
-     */
-    @Parameter
-    @Property
-    private int index;
-
-    /**
-     * Caches the index of the last column.
-     */
-    private int lastColumnIndex;
-
-    @Property(write = false)
-    private PropertyModel columnModel;
-
-    @Inject
-    private ComponentResources resources;
-
-    void setupRender()
-    {
-        lastColumnIndex = gridModel.getDataModel().getPropertyNames().size() - 1;
-    }
-
-    public boolean isSortDisabled()
-    {
-        return !columnModel.isSortable();
-    }
-
-    public String getSortLinkClass()
-    {
-        switch (getSortForColumn())
-        {
-            case ASCENDING:
-                return GridConstants.SORT_ASCENDING_CLASS;
-
-            case DESCENDING:
-                return GridConstants.SORT_DESCENDING_CLASS;
-
-            default:
-                return null;
-        }
-    }
-
-    private ColumnSort getSortForColumn()
-    {
-        GridSortModel sortModel = gridModel.getSortModel();
-
-        String columnId = columnModel.getId();
-
-        return sortModel.getColumnSort(columnId);
-    }
-
-    public String getHeaderClass()
-    {
-        List<String> classes = CollectionFactory.newList();
-
-        if (!lean) classes.add(columnModel.getId());
-
-        String sort = getSortLinkClass();
-
-        if (sort != null) classes.add(sort);
-
-        if (index == 0) classes.add(GridConstants.FIRST_CLASS);
-
-        if (index == lastColumnIndex) classes.add(GridConstants.LAST_CLASS);
-
-        return TapestryInternalUtils.toClassAttributeValue(classes);
-    }
-
-    public boolean isActiveSortColumn()
-    {
-        return getSortForColumn() != ColumnSort.UNSORTED;
-    }
-
-    /**
-     * Normal, non-Ajax event handler.
-     */
-
-    void onSort(String columnId)
-    {
-        gridModel.getSortModel().updateSort(columnId);
-    }
-
-    /**
-     * Ajax event handler, which carries the zone id.
-     */
-    boolean onSort(String columnId, String zone)
-    {
-        onSort(columnId);
-
-        resources.triggerEvent(InternalConstants.GRID_INPLACE_UPDATE, new Object[] { zone }, null);
-
-        // Event is handled, don't trigger further event handler methods.
-
-        return true;
-    }
-
-    public Asset getIcon()
-    {
-        switch (getSortForColumn())
-        {
-            case ASCENDING:
-                return ascendingAsset;
-
-            case DESCENDING:
-                return descendingAsset;
-
-            default:
-                return sortableAsset;
-        }
-    }
-
-    public Object getColumnContext()
-    {
-        if (zone == null) return columnModel.getId();
-
-        return new Object[] { columnModel.getId(), zone };
-    }
-
-    public String getIconLabel()
-    {
-        switch (getSortForColumn())
-        {
-            case ASCENDING:
-                return messages.get("ascending");
-            case DESCENDING:
-                return messages.get("descending");
-            default:
-                return messages.get("sortable");
-        }
-    }
-
-    public List<String> getColumnNames()
-    {
-        return gridModel.getDataModel().getPropertyNames();
-    }
-
-
-    public void setColumnName(String columnName)
-    {
-        columnModel = gridModel.getDataModel().get(columnName);
-    }
-
-
-    public Block getBlockForColumn()
-    {
-        Block override = overrides.getOverrideBlock(columnModel.getId() + "Header");
-
-        if (override != null) return override;
-
-        return standardHeader;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java
deleted file mode 100644
index 7d518dd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridPager.java
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Generates a series of links used to jump to a particular page index within the overall data set.
- */
-@Events(InternalConstants.GRID_INPLACE_UPDATE + " (internal event)")
-public class GridPager
-{
-    /**
-     * The source of the data displayed by the grid (this is used to determine {@link GridDataSource#getAvailableRows()
-     * how many rows are available}, which in turn determines the page count).
-     */
-    @Parameter(required = true)
-    private GridDataSource source;
-
-    /**
-     * The number of rows displayed per page.
-     */
-    @Parameter(required = true)
-    private int rowsPerPage;
-
-    /**
-     * The current page number (indexed from 1).
-     */
-    @Parameter(required = true)
-    private int currentPage;
-
-    /**
-     * Number of pages before and after the current page in the range. The pager always displays links for 2 * range + 1
-     * pages, unless that's more than the total number of available pages.
-     */
-    @Parameter("5")
-    private int range;
-
-    /**
-     * If not null, then each link is output as a link to update the specified zone.
-     */
-    @Parameter
-    private String zone;
-
-    private int lastIndex;
-
-    private int maxPages;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Messages messages;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    void beginRender(MarkupWriter writer)
-    {
-        int availableRows = source.getAvailableRows();
-
-        maxPages = ((availableRows - 1) / rowsPerPage) + 1;
-
-        if (maxPages < 2) return;
-
-        writer.element("div", "class", "t-data-grid-pager");
-
-        lastIndex = 0;
-
-        for (int i = 1; i <= 2; i++)
-            writePageLink(writer, i);
-
-        int low = currentPage - range;
-        int high = currentPage + range;
-
-        if (low < 1)
-        {
-            low = 1;
-            high = 2 * range + 1;
-        }
-        else
-        {
-            if (high > maxPages)
-            {
-                high = maxPages;
-                low = high - 2 * range;
-            }
-        }
-
-        for (int i = low; i <= high; i++)
-            writePageLink(writer, i);
-
-        for (int i = maxPages - 1; i <= maxPages; i++)
-            writePageLink(writer, i);
-
-        writer.end();
-    }
-
-    private void writePageLink(MarkupWriter writer, int pageIndex)
-    {
-        if (pageIndex < 1 || pageIndex > maxPages) return;
-
-        if (pageIndex <= lastIndex) return;
-
-        if (pageIndex != lastIndex + 1) writer.write(" ... ");
-
-        lastIndex = pageIndex;
-
-        if (pageIndex == currentPage)
-        {
-            writer.element("span", "class", "current");
-            writer.write(Integer.toString(pageIndex));
-            writer.end();
-            return;
-        }
-
-        Object[] context = zone == null
-                           ? new Object[] { pageIndex }
-                           : new Object[] { pageIndex, zone };
-
-        Link link = resources.createEventLink(EventConstants.ACTION, context);
-
-        Element element = writer.element("a",
-                                         "href", zone == null ? link : "#",
-                                         "title", messages.format("goto-page", pageIndex));
-
-        writer.write(Integer.toString(pageIndex));
-        writer.end();
-
-        if (zone != null)
-        {
-            String id = jsSupport.allocateClientId(resources);
-
-            element.attribute("id", id);
-
-            clientBehaviorSupport.linkZone(id, zone, link);
-        }
-    }
-
-    /**
-     * Normal, non-Ajax event handler.
-     */
-    void onAction(int newPage)
-    {
-        // TODO: Validate newPage in range
-
-        currentPage = newPage;
-    }
-
-    /**
-     * Akjax event handler, passing the zone along.
-     */
-    boolean onAction(int newPage, String zone)
-    {
-        onAction(newPage);
-
-        resources.triggerEvent(InternalConstants.GRID_INPLACE_UPDATE, new Object[] { zone }, null);
-
-        return true; // abort event
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
deleted file mode 100644
index 909317c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/GridRows.java
+++ /dev/null
@@ -1,357 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.grid.GridConstants;
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.grid.GridModel;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.FormSupport;
-
-import java.util.List;
-
-/**
- * Renders out a series of rows within the table.
- * <p/>
- * Inside a {@link Form}, a series of row index numbers are stored into the form ( {@linkplain FormSupport#store(Object,
- * ComponentAction) as ComponentActions}). This is not ideal ... in a situation where the data set can shift between the
- * form render and the form submission, this can cause unexpected results, including applying changes to the wrong
- * objects.
- */
-@SuppressWarnings({ "unchecked" })
-public class GridRows
-{
-    private int startRow;
-
-    private boolean recordStateByIndex;
-
-    private boolean recordStateByEncoder;
-
-    /**
-     * This action is used when a {@link org.apache.tapestry5.ValueEncoder} is not provided.
-     */
-    static class SetupForRowByIndex implements ComponentAction<GridRows>
-    {
-        private static final long serialVersionUID = -3216282071752371975L;
-
-        private final int rowIndex;
-
-        public SetupForRowByIndex(int rowIndex)
-        {
-            this.rowIndex = rowIndex;
-        }
-
-        public void execute(GridRows component)
-        {
-            component.setupForRow(rowIndex);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("GridRows.SetupForRowByIndex[%d]", rowIndex);
-        }
-    }
-
-    /**
-     * This action is used when a {@link org.apache.tapestry5.ValueEncoder} is provided.
-     */
-    static class SetupForRowWithClientValue implements ComponentAction<GridRows>
-    {
-        private final String clientValue;
-
-        SetupForRowWithClientValue(String clientValue)
-        {
-            this.clientValue = clientValue;
-        }
-
-        public void execute(GridRows component)
-        {
-            component.setupForRowWithClientValue(clientValue);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("GridRows.SetupForRowWithClientValue[%s]", clientValue);
-        }
-    }
-
-    /**
-     * Parameter used to set the CSS class for each row (each &lt;tr&gt; element) within the &lt;tbody&gt;). This is not
-     * cached, so it will be recomputed for each row.
-     */
-    @Parameter(cache = false)
-    private String rowClass;
-
-    /**
-     * Object that provides access to the bean and data models used to render the Grid.
-     */
-    @Parameter(value = "componentResources.container")
-    private GridModel gridModel;
-
-    /**
-     * Where to search for property override blocks.
-     */
-    @Parameter(required = true, allowNull = false)
-    @Property
-    private PropertyOverrides overrides;
-
-    /**
-     * Number of rows displayed on each page. Long result sets are split across multiple pages.
-     */
-    @Parameter(required = true)
-    private int rowsPerPage;
-
-    /**
-     * The current page number within the available pages (indexed from 1).
-     */
-    @Parameter(required = true)
-    private int currentPage;
-
-    /**
-     * The current row being rendered, this is primarily an output parameter used to allow the Grid, and the Grid's
-     * container, to know what object is being rendered.
-     */
-    @Parameter(required = true)
-    @Property(write = false)
-    private Object row;
-
-    /**
-     * If true, then the CSS class on each &lt;TD&gt; cell will be omitted, which can reduce the amount of output from
-     * the component overall by a considerable amount. Leave this as false, the default, when you are leveraging the CSS
-     * to customize the look and feel of particular columns.
-     */
-    @Parameter
-    private boolean lean;
-
-    /**
-     * If true and the component is enclosed by a Form, then the normal state saving logic is turned off. Defaults to
-     * false, enabling state saving logic within Forms. This can be set to false when form elements within the Grid are
-     * not related to the current row of the grid, or where another component (such as {@link
-     * org.apache.tapestry5.corelib.components.Hidden}) is used to maintain row state.
-     */
-    @Parameter(name = "volatile")
-    private boolean volatileState;
-
-    /**
-     * Changes how state is recorded into the form to store the {@linkplain org.apache.tapestry5.ValueEncoder#toClient(Object)
-     * client value} for each row (rather than the index), and restore the {@linkplain
-     * org.apache.tapestry5.ValueEncoder#toValue(String) row values} from the client value.
-     */
-    @Parameter
-    private ValueEncoder encoder;
-
-
-    /**
-     * Optional output parameter (only set during rendering) that identifies the current row index. This is the index on
-     * the page (i.e., always numbered from zero) as opposed to the row index inside the {@link
-     * org.apache.tapestry5.grid.GridDataSource}.
-     */
-    @Parameter
-    private int rowIndex;
-
-    /**
-     * Optional output parameter that stores the current column index.
-     */
-    @Parameter
-    @Property
-    private int columnIndex;
-
-    @Environmental(false)
-    private FormSupport formSupport;
-
-
-    private int endRow;
-
-    /**
-     * Index into the {@link org.apache.tapestry5.grid.GridDataSource}.
-     */
-    private int dataRowIndex;
-
-    private String propertyName;
-
-    @Property(write = false)
-    private PropertyModel columnModel;
-
-    public String getRowClass()
-    {
-        List<String> classes = CollectionFactory.newList();
-
-        // Not a cached parameter, so careful to only access it once.
-
-        String rc = rowClass;
-
-        if (rc != null) classes.add(rc);
-
-        if (dataRowIndex == startRow) classes.add(GridConstants.FIRST_CLASS);
-
-        if (dataRowIndex == endRow) classes.add(GridConstants.LAST_CLASS);
-
-        return TapestryInternalUtils.toClassAttributeValue(classes);
-    }
-
-    public String getCellClass()
-    {
-        List<String> classes = CollectionFactory.newList();
-
-        String id = gridModel.getDataModel().get(propertyName).getId();
-
-        if (!lean)
-        {
-            classes.add(id);
-
-            switch (gridModel.getSortModel().getColumnSort(id))
-            {
-                case ASCENDING:
-                    classes.add(GridConstants.SORT_ASCENDING_CLASS);
-                    break;
-
-                case DESCENDING:
-                    classes.add(GridConstants.SORT_DESCENDING_CLASS);
-                    break;
-
-                default:
-            }
-        }
-
-
-        return TapestryInternalUtils.toClassAttributeValue(classes);
-    }
-
-    void setupRender()
-    {
-        GridDataSource dataSource = gridModel.getDataSource();
-
-        int availableRows = dataSource.getAvailableRows();
-
-        int maxPages = ((availableRows - 1) / rowsPerPage) + 1;
-
-        // This can sometimes happen when the number of items shifts between requests.
-
-        if (currentPage > maxPages) currentPage = maxPages;
-
-        startRow = (currentPage - 1) * rowsPerPage;
-        endRow = Math.min(availableRows - 1, startRow + rowsPerPage - 1);
-
-        dataRowIndex = startRow;
-
-        boolean recordingStateInsideForm = !volatileState && formSupport != null;
-
-        recordStateByIndex = recordingStateInsideForm && (encoder == null);
-        recordStateByEncoder = recordingStateInsideForm && (encoder != null);
-    }
-
-    /**
-     * Callback method, used when recording state to a form, or called directly when not recording state.
-     */
-    void setupForRow(int rowIndex)
-    {
-        row = gridModel.getDataSource().getRowValue(rowIndex);
-    }
-
-    /**
-     * Callback method that bypasses the data source and converts a primary key back into a row value (via {@link
-     * org.apache.tapestry5.ValueEncoder#toValue(String)}).
-     */
-    void setupForRowWithClientValue(String clientValue)
-    {
-        row = encoder.toValue(clientValue);
-
-        if (row == null)
-            throw new IllegalArgumentException(
-                    String.format("%s returned null for client value '%s'.", encoder, clientValue));
-    }
-
-
-    boolean beginRender()
-    {
-        // Setup for this row.
-
-        setupForRow(dataRowIndex);
-
-        // Update the index parameter (which starts from zero).
-        rowIndex = dataRowIndex - startRow;
-
-
-        if (row != null)
-        {
-            // When needed, store a callback used when the form is submitted.
-
-            if (recordStateByIndex)
-                formSupport.store(this, new SetupForRowByIndex(dataRowIndex));
-
-            if (recordStateByEncoder)
-            {
-                String key = encoder.toClient(row);
-                formSupport.store(this, new SetupForRowWithClientValue(key));
-            }
-        }
-
-        // If the row is null, it's because the rowIndex is too large (see the notes
-        // on GridDataSource).  When row is null, return false to not render anything for this iteration
-        // of the loop.
-
-        return row != null;
-    }
-
-    boolean afterRender()
-    {
-        dataRowIndex++;
-
-        // Abort the loop when we hit a null row, or when we've exhausted the range we need to
-        // display.
-
-        return row == null || dataRowIndex > endRow;
-    }
-
-    public List<String> getPropertyNames()
-    {
-        return gridModel.getDataModel().getPropertyNames();
-    }
-
-    public String getPropertyName()
-    {
-        return propertyName;
-    }
-
-    public void setPropertyName(String propertyName)
-    {
-        this.propertyName = propertyName;
-
-        columnModel = gridModel.getDataModel().get(propertyName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Hidden.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Hidden.java
deleted file mode 100644
index 1e6f8ca..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Hidden.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Used to record a page property as a value into the form. The value is
- * {@linkplain org.apache.tapestry5.ValueEncoder#toClient(Object) encoded} when rendered, then decoded when the form is
- * submitted,
- * and the value parameter updated.
- * 
- * @since 5.1.0.2
- */
-@SupportsInformalParameters
-public class Hidden implements ClientElement
-{
-    /**
-     * The value to read (when rendering) or update (when the form is submitted).
-     */
-    @Parameter(required = true, autoconnect = true, principal = true)
-    private Object value;
-
-    /**
-     * Value encoder for the value, usually determined automatically from the type of the property bound to the value
-     * parameter.
-     */
-    @Parameter(required = true)
-    private ValueEncoder encoder;
-
-    private String clientId;
-
-    private String controlName;
-
-    private Element hiddenInputElement;
-
-    @Environmental(false)
-    private FormSupport formSupport;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private Request request;
-
-    ValueEncoder defaultEncoder()
-    {
-        return defaultProvider.defaultValueEncoder("value", resources);
-    }
-
-    static class ProcessSubmission implements ComponentAction<Hidden>
-    {
-        private final String controlName;
-
-        public ProcessSubmission(String controlName)
-        {
-            this.controlName = controlName;
-        }
-
-        public void execute(Hidden component)
-        {
-            component.processSubmission(controlName);
-        }
-    }
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        if (formSupport == null)
-            throw new RuntimeException("The Hidden component must be enclosed by a Form component.");
-
-        controlName = formSupport.allocateControlName(resources.getId());
-
-        clientId = null;
-
-        formSupport.store(this, new ProcessSubmission(controlName));
-
-        String encoded = encoder.toClient(value);
-
-        hiddenInputElement = writer.element("input", "type", "hidden", "name", controlName, "value", encoded);
-
-        resources.renderInformalParameters(writer);
-
-        writer.end();
-
-        return false;
-    }
-
-    private void processSubmission(String controlName)
-    {
-        String encoded = request.getParameter(controlName);
-
-        Object decoded = encoder.toValue(encoded);
-
-        value = decoded;
-    }
-
-    public String getClientId()
-    {
-        if (clientId == null)
-        {
-            clientId = jsSupport.allocateClientId(resources);
-            hiddenInputElement.forceAttributes("id", clientId);
-        }
-
-        return clientId;
-    }
-
-    public String getControlName()
-    {
-        return controlName;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/If.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/If.java
deleted file mode 100644
index 2b41f28..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/If.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.base.AbstractConditional;
-
-/**
- * Conditionally renders its body. May render its tag and any informal parameters.
- */
-public class If extends AbstractConditional
-{
-    /**
-     * If true, then the body of the If component is rendered. If false, the body is omitted.
-     */
-    @Parameter(required = true)
-    private boolean test;
-
-    /**
-     * Optional parameter to invert the test. If true, then the body is rendered when the test parameter is false (not
-     * true).
-     *
-     * @see Unless
-     */
-    @Parameter
-    private boolean negate;
-
-    /**
-     * @return test parameter (if negate is false), or test parameter inverted (if negate is true)
-     */
-    protected boolean test()
-    {
-        return test != negate;
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/If.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/If.xdoc
deleted file mode 100644
index bd2f804..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/If.xdoc
+++ /dev/null
@@ -1,62 +0,0 @@
-<document>
-    <body>
-        <section name="Examples">
-
-            <subsection name="Start.tml">
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-    <body>
-        <h1>Welcome!</h1>
-
-        <t:if test="user">
-            Welcome back, ${user.firstName}
-            <p:else>
-                <t:pagelink name="login">Login</t:pagelink> /
-                <t:pagelink name="register">Register</t:pagelink>
-            </p:else>
-        </t:if>
-        
-        . . .
-
-</html>]]></source>
-
-                <p>
-                    Here, the main text is rendered if the user is logged in (the user property will
-                    be non-null after the user logs in). Otherwise, links to a login and register
-                    page are rendered.
-                </p>
-
-                <p>
-                    Note the use of the
-                    <code>p:</code>
-                    namespace (new in Tapestry 5.1). In 5.0, this would be
-                    <code>&lt;t:parameter name="else"&gt;</code>.
-                </p>
-
-            </subsection>
-
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                Tapestry has many built in coercions to boolean:
-            </p>
-
-            <dl>
-                <dt>String</dt>
-                <dd>True if non-blank and not the literal string "false" (case insensitive)</dd>
-                <dt>Number</dt>
-                <dd>True if non-zero</dd>
-                <dt>Collection</dt>
-                <dd>True if non-empty</dd>
-                <dt>Object</dt>
-                <dd>True (as long as its not null)</dd>
-            </dl>
-
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
deleted file mode 100644
index 2e4c7c2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.HeartbeatDeferred;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Generates a &lt;label&gt; element for a particular field.
- * <p/>
- * A Label will render its body, if it has one. However, in most cases it will not have a body, and will render its
- * {@linkplain org.apache.tapestry5.Field#getLabel() field's label} as it's body. Remember, however, that it is the
- * field label that will be used in any error messages. The Label component allows for client- and server-side
- * validation error decorations.
- */
-@SupportsInformalParameters
-public class Label
-{
-    /**
-     * The for parameter is used to identify the {@link Field} linked to this label (it is named this way because it
-     * results in the for attribute of the label element).
-     */
-    @Parameter(name = "for", required = true, allowNull = false, defaultPrefix = BindingConstants.COMPONENT)
-    private Field field;
-
-    @Environmental
-    private ValidationDecorator decorator;
-
-    @Inject
-    private ComponentResources resources;
-
-    /**
-     * If true, then the body of the label element (in the template) is ignored. This is used when a designer places a
-     * value inside the &lt;label&gt; element for WYSIWYG purposes, but it should be replaced with a different
-     * (probably, localized) value at runtime. The default is false, so a body will be used if present and the field's
-     * label will only be used if the body is empty or blank.
-     */
-    @Parameter
-    private boolean ignoreBody;
-
-    private Element labelElement;
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        decorator.beforeLabel(field);
-
-        labelElement = writer.element("label");
-
-        resources.renderInformalParameters(writer);
-
-        // Since we don't know if the field has rendered yet, we need to defer writing the for and id
-        // attributes until we know the field has rendered (and set its clientId property). That's
-        // exactly what Heartbeat is for.
-
-        updateAttributes();
-
-        return !ignoreBody;
-    }
-
-    @HeartbeatDeferred
-    private void updateAttributes()
-    {
-        String fieldId = field.getClientId();
-
-        labelElement.forceAttributes("for", fieldId);
-
-        decorator.insideLabel(field, labelElement);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        // If the Label element has a body that renders some non-blank output, that takes precedence
-        // over the label string provided by the field.
-
-        boolean bodyIsBlank = InternalUtils.isBlank(labelElement.getChildMarkup());
-
-        if (bodyIsBlank)
-            writer.write(field.getLabel());
-
-        writer.end(); // label
-
-        decorator.afterLabel(field);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.xdoc
deleted file mode 100644
index 832f945..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Label.xdoc
+++ /dev/null
@@ -1,50 +0,0 @@
-<document>
-    <body>
-        <section name="Examples">
-
-            <subsection name="Search.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-
-        <t:form>
-            <t:label for="search"/>
-            <t:textfield t:id="search" size="50"/>
-
-            <t:checkbox t:id="all"/>
-            <t:label for="all">
-                Include out of date records
-            </t:label>
-
-        . . .
-
-</html>]]></source>
-
-                <p>
-                    This demonstrates that the Label can come before
-                    or after the form control element component (the TextField and Checkbox components).
-                    When a Label has a body, that takes precendence over the field's label, though the field's
-                    label is what's used in any error messages.
-                </p>
-
-            </subsection>
-
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                The Label component is very important for user accessibility. A user will be able to click
-                on the label to move the cursor into the corresponding field.
-            </p>
-
-            <p>
-                The Label component supports informal parameters; this can be very useful
-                for adding the
-                <code>accesskey</code>
-                attribute supported by most browsers.
-            </p>
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java
deleted file mode 100644
index 9724588..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/LinkSubmit.java
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.TrackableComponentEventCallback;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.SubmitMode;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Generates a client-side hyperlink that submits the enclosing form. If the link is clicked in the browser, the
- * component will trigger an event ({@linkplain EventConstants#SELECTED selected} by default) , just like {@link Submit}
- * .
- */
-@SupportsInformalParameters
-@Events(EventConstants.SELECTED + " by default, may be overridden")
-public class LinkSubmit implements ClientElement
-{
-    /**
-     * If true, then no link (or accompanying JavaScript) is written (though the body still is).
-     */
-    @Parameter
-    private boolean disabled;
-
-    /**
-     * The name of the event that will be triggered if this component is the cause of the form submission. The default
-     * is "selected".
-     */
-    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private String event = EventConstants.SELECTED;
-
-    /**
-     * Defines the mode, or client-side behavior, for the submit. The default is {@link SubmitMode#NORMAL}; clicking the
-     * button submits the form with validation. {@link SubmitMode#CANCEL} indicates the client-side validation
-     * should be omitted (though server-side validation still occurs).
-     * 
-     * @since 5.2.0
-     */
-    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private SubmitMode mode = SubmitMode.NORMAL;
-
-    /**
-     * If true (the default), then any notification sent by the component will be deferred until the end of the form
-     * submission (this is usually desirable). In general, this can be left as the default except when the LinkSubmit
-     * component is rendering inside a {@link Loop}, in which case defer should be bound to false (otherwise, the
-     * event context will always be the final value of the Loop).
-     */
-    @Parameter
-    private boolean defer = true;
-
-    /**
-     * The list of values that will be made available to event handler method of this component when the form is
-     * submitted.
-     * 
-     * @since 5.2.0
-     */
-    @Parameter
-    private Object[] context;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private JavaScriptSupport javascriptSupport;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Environmental
-    private Heartbeat heartbeat;
-
-    @Inject
-    private Request request;
-
-    @SuppressWarnings("unchecked")
-    @Environmental
-    private TrackableComponentEventCallback eventCallback;
-
-    private String clientId;
-
-    private static class ProcessSubmission implements ComponentAction<LinkSubmit>
-    {
-        private final String clientId;
-
-        public ProcessSubmission(String clientId)
-        {
-            this.clientId = clientId;
-        }
-
-        public void execute(LinkSubmit component)
-        {
-            component.processSubmission(clientId);
-        }
-    }
-
-    private void processSubmission(String clientId)
-    {
-        this.clientId = clientId;
-
-        if (clientId.equals(request.getParameter(Form.SUBMITTING_ELEMENT_ID)))
-        {
-            Runnable notification = new Runnable()
-            {
-                public void run()
-                {
-                    resources.triggerEvent(event, context, eventCallback);
-                }
-            };
-
-            if (defer)
-                formSupport.defer(notification);
-            else
-                heartbeat.defer(notification);
-        }
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (!disabled)
-        {
-            clientId = javascriptSupport.allocateClientId(resources);
-
-            formSupport.store(this, new ProcessSubmission(clientId));
-
-            writer.element("span",
-
-            "id", clientId);
-
-            resources.renderInformalParameters(writer);
-        }
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        if (!disabled)
-        {
-            writer.end();
-
-            JSONObject spec = new JSONObject("form", formSupport.getClientId(), "clientId", clientId);
-
-            spec.put("validate", mode == SubmitMode.NORMAL);
-
-            javascriptSupport.addInitializerCall(InitializationPriority.EARLY, "linkSubmit", spec);
-        }
-    }
-
-    public String getClientId()
-    {
-        return clientId;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
deleted file mode 100644
index 61d1eee..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.java
+++ /dev/null
@@ -1,497 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.corelib.LoopFormState;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-
-import java.io.Serializable;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Basic looping class; loops over a number of items (provided by its source parameter), rendering its body for each
- * one. It turns out that gettting the component to <em>not</em> store its state in the Form is very tricky and, in
- * fact, a series of commands for starting and ending heartbeats, and advancing through the iterator, are still stored.
- * For a non-volatile Loop inside the form, the Loop stores a series of commands that start and end heartbeats and store
- * state (either as full objects when there the encoder parameter is not bound, or as client-side objects when there is
- * an encoder). For a Loop that doesn't need to be aware of the enclosing Form (if any), the formState parameter should
- * be bound to 'none'.
- * <p/>
- * When the Loop is used inside a Form, it will generate an {@link org.apache.tapestry5.EventConstants#SYNCHRONIZE_VALUES}
- * event to inform its container what values were submitted and in what order.
- */
-@SupportsInformalParameters
-@Events(EventConstants.SYNCHRONIZE_VALUES)
-public class Loop
-{
-    /**
-     * Setup command for non-volatile rendering.
-     */
-    private static final ComponentAction<Loop> RESET_INDEX = new ComponentAction<Loop>()
-    {
-        private static final long serialVersionUID = 6477493424977597345L;
-
-        public void execute(Loop component)
-        {
-            component.resetIndex();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Loop.ResetIndex";
-        }
-    };
-
-    /**
-     * Setup command for volatile rendering. Volatile rendering relies on re-acquiring the Iterator and working our way
-     * through it (and hoping for the best!).
-     */
-    private static final ComponentAction<Loop> SETUP_FOR_VOLATILE = new ComponentAction<Loop>()
-    {
-        private static final long serialVersionUID = -977168791667037377L;
-
-        public void execute(Loop component)
-        {
-            component.setupForVolatile();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Loop.SetupForVolatile";
-        }
-    };
-
-    /**
-     * Advances to next value in a volatile way. So, the <em>number</em> of steps is intrinsically stored in the Form
-     * (as the number of ADVANCE_VOLATILE commands), but the actual values are expressly stored only on the server.
-     */
-    private static final ComponentAction<Loop> ADVANCE_VOLATILE = new ComponentAction<Loop>()
-    {
-        private static final long serialVersionUID = -4600281573714776832L;
-
-        public void execute(Loop component)
-        {
-            component.advanceVolatile();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Loop.AdvanceVolatile";
-        }
-    };
-
-    /**
-     * Used in both volatile and non-volatile mode to end the current heartbeat (started by either ADVANCE_VOLATILE or
-     * one of the RestoreState commands). Also increments the index.
-     */
-    private static final ComponentAction<Loop> END_HEARTBEAT = new ComponentAction<Loop>()
-    {
-        private static final long serialVersionUID = -977168791667037377L;
-
-        public void execute(Loop component)
-        {
-            component.endHeartbeat();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Loop.EndHeartbeat";
-        }
-    };
-
-    /**
-     * Restores a state value (this is the case when there is no encoder and the complete value is stored).
-     */
-    static class RestoreState implements ComponentAction<Loop>
-    {
-        private static final long serialVersionUID = -3926831611368720764L;
-
-        private final Object storedValue;
-
-        public RestoreState(final Object storedValue)
-        {
-            this.storedValue = storedValue;
-        }
-
-        public void execute(Loop component)
-        {
-            component.restoreState(storedValue);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("Loop.RestoreState[%s]", storedValue);
-        }
-    }
-
-    /**
-     * Restores the value using a stored primary key via {@link PrimaryKeyEncoder#toValue(Serializable)}.
-     */
-    static class RestoreStateFromStoredClientValue implements ComponentAction<Loop>
-    {
-        private final String clientValue;
-
-        public RestoreStateFromStoredClientValue(final String clientValue)
-        {
-            this.clientValue = clientValue;
-        }
-
-        public void execute(Loop component)
-        {
-            component.restoreStateFromStoredClientValue(clientValue);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("Loop.RestoreStateFromStoredClientValue[%s]", clientValue);
-        }
-    }
-
-    /**
-     * Start of processing event that allows the Loop to set up internal bookeeping, to track which values have come up
-     * in the form submission.
-     */
-    static final ComponentAction<Loop> PREPARE_FOR_SUBMISSION = new ComponentAction<Loop>()
-    {
-        public void execute(Loop component)
-        {
-            component.prepareForSubmission();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Loop.PrepareForSubmission";
-        }
-    };
-
-    static final ComponentAction<Loop> NOTIFY_CONTAINER = new ComponentAction<Loop>()
-    {
-        public void execute(Loop component)
-        {
-            component.notifyContainer();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "Loop.NotifyContainer";
-        }
-    };
-
-    /**
-     * Defines the collection of values for the loop to iterate over. If not specified, defaults to a property of the
-     * container whose name matches the Loop cmponent's id.
-     */
-    @Parameter(required = true, principal = true, autoconnect = true)
-    private Iterable<?> source;
-
-    /**
-     * Optional value converter; if provided (or defaulted) and inside a form and not volatile, then each iterated value
-     * is converted and stored into the form. A default for this is calculated from the type of the property bound to
-     * the value parameter.
-     */
-    @Parameter
-    private ValueEncoder<Object> encoder;
-
-    /**
-     * If true and the Loop is enclosed by a Form, then the normal state saving logic is turned off. Defaults to false,
-     * enabling state saving logic within Forms. With the addition of the formState parameter, volatile simply sets a
-     * default for formState is formState is not specified.
-     *
-     * @deprecated in release 5.1.0.4, use the formState parameter instead.
-     */
-    @Parameter(name = "volatile", principal = true)
-    @Deprecated
-    private boolean volatileState;
-
-    /**
-     * Controls what information, if any, is encoded into an enclosing Form. The default value for this is set by the
-     * deprecated volatile parameter. The normal default is {@link org.apache.tapestry5.corelib.LoopFormState#VALUES},
-     * but changes to {@link org.apache.tapestry5.corelib.LoopFormState#ITERATION} if volatile is true. This parameter
-     * is only used if the component is enclosed by a Form.
-     */
-    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private LoopFormState formState;
-
-    @Environmental(false)
-    private FormSupport formSupport;
-
-    /**
-     * The element to render. If not null, then the loop will render the indicated element around its body (on each pass
-     * through the loop). The default is derived from the component template.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String element;
-
-    /**
-     * The current value, set before the component renders its body.
-     */
-    @Parameter(principal = true)
-    private Object value;
-
-    /**
-     * The index into the source items.
-     */
-    @Parameter
-    private int index;
-
-    /**
-     * A Block to render instead of the loop when the source is empty.  The default is to render nothing.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private Block empty;
-
-    private Iterator<?> iterator;
-
-    @Environmental
-    private Heartbeat heartbeat;
-
-    private boolean storeValuesInForm, storeIncrementsInForm, storeHeartbeatsInForm;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    private Block cleanupBlock;
-
-    /**
-     * Objects that have been recovered via {@link org.apache.tapestry5.ValueEncoder#toValue(String)} during the
-     * processing of the loop. These are sent to the container via an event.
-     */
-    private List<Object> synchonizedValues;
-
-
-    LoopFormState defaultFormState()
-    {
-        return volatileState ? LoopFormState.ITERATION : LoopFormState.VALUES;
-    }
-
-    String defaultElement()
-    {
-        return resources.getElementName();
-    }
-
-    ValueEncoder defaultEncoder()
-    {
-        return defaultProvider.defaultValueEncoder("value", resources);
-    }
-
-    @SetupRender
-    boolean setup()
-    {
-        index = 0;
-
-        iterator = source == null ? null : source.iterator();
-
-        boolean insideForm = formSupport != null;
-
-
-        storeValuesInForm = insideForm && formState == LoopFormState.VALUES;
-        storeIncrementsInForm = insideForm && formState == LoopFormState.ITERATION;
-
-        storeHeartbeatsInForm = insideForm && formState != LoopFormState.NONE;
-
-        if (storeValuesInForm)
-            formSupport.store(this, PREPARE_FOR_SUBMISSION);
-
-        // Only render the body if there is something to iterate over
-
-        boolean hasContent = iterator != null && iterator.hasNext();
-
-        if (insideForm && hasContent)
-        {
-            if (storeValuesInForm) formSupport.store(this, RESET_INDEX);
-            if (storeIncrementsInForm) formSupport.store(this, SETUP_FOR_VOLATILE);
-        }
-
-        cleanupBlock = hasContent ? null : empty;
-
-        // Jump directly to cleanupRender if there is no content
-
-        return hasContent;
-    }
-
-
-    /**
-     * Returns the empty block, or null, after the render has finished. It will only be the empty block (which itself
-     * may be null) if the source was null or empty.
-     */
-    Block cleanupRender()
-    {
-        if (storeValuesInForm)
-            formSupport.store(this, NOTIFY_CONTAINER);
-
-        return cleanupBlock;
-    }
-
-    private void setupForVolatile()
-    {
-        index = 0;
-        iterator = source.iterator();
-    }
-
-    private void advanceVolatile()
-    {
-        value = iterator.next();
-
-        startHeartbeat();
-    }
-
-    /**
-     * Begins a new heartbeat.
-     */
-    @BeginRender
-    void begin(MarkupWriter writer)
-    {
-        value = iterator.next();
-
-        if (storeValuesInForm)
-        {
-            if (encoder == null)
-            {
-                formSupport.store(this, new RestoreState(value));
-            }
-            else
-            {
-                String clientValue = encoder.toClient(value);
-
-                formSupport.store(this, new RestoreStateFromStoredClientValue(clientValue));
-            }
-        }
-
-        if (storeIncrementsInForm)
-        {
-            formSupport.store(this, ADVANCE_VOLATILE);
-        }
-
-        startHeartbeat();
-
-        if (element != null)
-        {
-            writer.element(element);
-            resources.renderInformalParameters(writer);
-        }
-    }
-
-    private void startHeartbeat()
-    {
-        heartbeat.begin();
-    }
-
-    /**
-     * Ends the current heartbeat.
-     */
-    @AfterRender
-    boolean after(MarkupWriter writer)
-    {
-        if (element != null) writer.end();
-
-        endHeartbeat();
-
-        if (storeHeartbeatsInForm)
-        {
-            formSupport.store(this, END_HEARTBEAT);
-        }
-
-        return !iterator.hasNext();
-    }
-
-    private void endHeartbeat()
-    {
-        heartbeat.end();
-
-        index++;
-    }
-
-    private void resetIndex()
-    {
-        index = 0;
-    }
-
-    /**
-     * Restores state previously stored by the Loop into a Form.
-     */
-    private void restoreState(Object storedValue)
-    {
-        value = storedValue;
-
-        startHeartbeat();
-    }
-
-    /**
-     * Restores state previously encoded by the Loop and stored into the Form.
-     */
-    private void restoreStateFromStoredClientValue(String clientValue)
-    {
-        // We assume that if an encoder is available when we rendered, that one will be available
-        // when the form is submitted.
-
-        Object restoredValue = encoder.toValue(clientValue);
-
-        restoreState(restoredValue);
-
-        synchonizedValues.add(restoredValue);
-    }
-
-    private void prepareForSubmission()
-    {
-        synchonizedValues = CollectionFactory.newList();
-    }
-
-    private void notifyContainer()
-    {
-        Object[] values = synchonizedValues.toArray();
-
-        resources.triggerEvent(EventConstants.SYNCHRONIZE_VALUES, values, null);
-    }
-
-    // For testing:
-
-    int getIndex()
-    {
-        return index;
-    }
-
-    Object getValue()
-    {
-        return value;
-    }
-
-    void setSource(Iterable<?> source)
-    {
-        this.source = source;
-    }
-
-    void setHeartbeat(Heartbeat heartbeat)
-    {
-        this.heartbeat = heartbeat;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.xdoc
deleted file mode 100644
index 8e81591..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Loop.xdoc
+++ /dev/null
@@ -1,208 +0,0 @@
-<document>
-    <body>
-        <section name="Basic Example">
-
-            <p>
-                This example is based around a NavBar component that generates a set
-                of links to other pages in the applilcation.
-            </p>
-
-            <subsection name="NavBar.tml">
-
-                <source><![CDATA[
-<table class="navigation" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-   <tr>
-        <t:loop source="pageNames" value="pageName">
-            <td class="${tabClass}">
-                <t:pagelink page="pageName">${pageName}</t:pagelink>
-            </td>
-        </t:loop>
-    </tr>
-
-</table>]]></source>
-
-                <p>
-                    We are assuming that the NavBar component
-                    has a pageNames property (possibly a parameter). The Loop will
-                    iterate over those page names and store each into its value parameter.
-                </p>
-
-
-            </subsection>
-
-
-            <subsection name="NavBar.java">
-
-                <source><![CDATA[
-public class NavBar
-{
-    @Parameter(defaultPrefix="literal", required=true)
-    private String pages;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Property
-    private String _pageName;
-
-    public String[] getPageNames()
-    {
-        return pages.split(",");
-    }
-
-    public String getTabClass()
-    {
-        if (pageName.equalsIgnoreCase(resources.getPageName())
-            return "current";
-
-        return null;
-    }
-}
-]]></source>
-
-                <p>
-                    The component converts its pages parameter into the pageNames property
-                    by splitting it at the commas. It tracks the current pageName of the loop
-                    not just to generate the links, but to calculate the CSS class of each
-                    &lt;td&gt; element on the fly. This way we can give the tab corresponding
-                    to the current page a special look or highlight.
-                </p>
-
-            </subsection>
-
-        </section>
-
-        <section name="Invisible Instrumentation">
-
-            <p>We can fold together the Loop component and the &lt;td&gt; element:</p>
-
-            <subsection name="NavBar.tml">
-
-                <source><![CDATA[
-<table class="navigation" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-   <tr>
-        <td t:type="loop" source="pageNames" value="pageName" class="${tabClass}">
-            <t:pagelink page="pageName">${pageName}</t:pagelink>
-        </td>
-    </tr>
-
-</table>]]></source>
-
-                <p>Using the
-                    <code>t:type="loop"</code>
-                    attribute, the other way to identify a template
-                    element as a component, allows the Loop component to render the element's tag,
-                    the &lt;td&gt; on each iteration, along with informal parameters (the class attribute). This is
-                    called<em>invisible instrumentation</em>, and it is more concise and more
-                    editor/preview friendly than Tapestry's typical markup.
-                </p>
-            </subsection>
-        </section>
-
-        <section name="Forms and Loops Example">
-
-            <p>
-                Tapestry form control element components (TextField, etc.) work inside loops. However,
-                some additional configuration is needed to make this work efficiently.
-            </p>
-
-            <p>
-                With no extra configuration, each value object will be serialized into the form (if
-                you view the rendered markup, you'll see a hidden form field containing serialized data needed by
-                Tapestry to process the form). This can become very bloated, or may not work if the objects being
-                iterated
-                are not serializable.
-            </p>
-
-            <p>
-                The typical case is database driven; you are editting objects from a database and need
-                those objects back when the form is submitted. All that should be stored
-                on the client is the
-                <em>ids</em>
-                of those objects. Thats what the encoder
-                parameter is for.
-            </p>
-
-            <subsection name="EditOrder.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-
-        <h1>Edit Order Quantities</h1>
-
-        <t:form>
-
-            <t:errors/>
-
-            <t:loop source="items" value="item" encoder="encoder">
-                <div class="line-item">
-                    <t:label for="quantity">${item.product.name}</t:label>
-                    <t:textfield t:id="quantity" value="item.quantity"/>
-                </div>
-            </t:loop>
-
-            <input type="submit" value="Update"/>
-        </t:form>
-    </body>
-</html>]]></source>
-
-                <p>
-                    The TextField component is rendered multiple times, once
-                    for each LineItem in the Order.
-                </p>
-            </subsection>
-
-            <subsection name="EditOrder.java">
-                <source><![CDATA[
-public class EditOrder
-{
-    @Inject
-    private OrderDAO orderDAO;
-
-    @Property
-    private final ValueEncoder<LineItem> encoder = new ValueEncoder<LineItem>()
-    {
-        public String toClient(LineItem value) { return String.valueOf(value.getId()); }
-
-        public LineItem toValue(String clientValue)
-        {
-            long id = Long.parseLong(clientValue);
-            
-            return orderDAO.getLineItem(id);
-        }
-    };
-
-    @Persist
-    private long orderId;
-
-    @Property
-    private LineItem item;
-
-    public List<LineItem> getItems()
-    {
-        return orderDAO.getLineItemsForOrder(orderId);
-    }
-}]]></source>
-
-                <p>
-                    Here, we expect the OrderDAO service to do most of the work,
-                    and we create a wrapper around it, in the form of the
-                    ValueEncoder instance.
-                </p>
-
-                <p>
-                    We've glossed over a few issues here, including how to handle
-                    the case that a particular item has been deleted or changed
-                    between the render request and the form submission, as well as how the orderId
-                    property gets set in the first place.
-                </p>
-
-            </subsection>
-
-
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java
deleted file mode 100644
index 9e55f9d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Output.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.text.Format;
-
-/**
- * A component for formatting output. If the component is represented in the template using an element, then the element
- * (plus any informal parameters) will be output around the formatted value.
- */
-@SupportsInformalParameters
-public class Output
-{
-    /**
-     * The value to be output (before formatting). If the formatted value is blank, no output is produced.
-     */
-    @Parameter(required = true, autoconnect = true)
-    private Object value;
-
-    /**
-     * The format to be applied to the object.
-     */
-    @Parameter(required = true, allowNull = false)
-    private Format format;
-
-    /**
-     * If true, the default, then output is filtered, escaping any reserved characters. If false, the output is written
-     * raw.
-     */
-    @Parameter
-    private boolean filter = true;
-
-    /**
-     * The element name, derived from the component template. This can even be overridden manually if desired (for
-     * example, to sometimes render a surrounding element and other times not).
-     */
-    @Parameter("componentResources.elementName")
-    private String elementName;
-
-    @Inject
-    private ComponentResources resources;
-
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        if (value == null) return false;
-
-        String formatted = format.format(value);
-
-        if (InternalUtils.isNonBlank(formatted))
-        {
-            if (elementName != null)
-            {
-                writer.element(elementName);
-
-                resources.renderInformalParameters(writer);
-            }
-
-            if (filter) writer.write(formatted);
-            else writer.writeRaw(formatted);
-
-            if (elementName != null) writer.end();
-        }
-
-        return false;
-    }
-
-    // For testing.
-
-    void setup(Object value, Format format, boolean filter, String elementName, ComponentResources resources)
-    {
-        this.value = value;
-        this.format = format;
-        this.filter = filter;
-        this.elementName = elementName;
-        this.resources = resources;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java
deleted file mode 100644
index b90b630..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/OutputRaw.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Used to output raw markup to the client. Unlike, say, an expansion, the output from OutputRaw is unfiltered, with any
- * special characters or entities left exactly as is. This is used in situations where the markup is provided
- * externally, rather than constructed within Tapestry.
- *
- * @see MarkupWriter#writeRaw(String)
- */
-public class OutputRaw
-{
-    /**
-     * The value to to render. If unbound, and a property of the container matches the component's id, then that
-     * property will be the source of the value.
-     */
-    @Parameter(required = true, autoconnect = true)
-    private String value;
-
-    @Inject
-    private ComponentResources resources;
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        if (value != null && value.length() > 0) writer.writeRaw(value);
-
-        // Abort the rest of the render.
-
-        return false;
-    }
-
-    // For testing:
-
-    void setValue(String value)
-    {
-        this.value = value;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PageLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PageLink.java
deleted file mode 100644
index 1c0dd99..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PageLink.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.base.AbstractLink;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Generates a render request link to some other page in the application. If an activation context is supplied (as the
- * context parameter), then the context values will be encoded into the URL. If no context is supplied, then the target
- * page itself will supply the context via a passivate event.
- * <p/>
- * Pages are not required to have an activation context. When a page does have an activation context, the value
- * typically represents the identity of some object displayed or otherwise manipulated by the page.
- */
-public class PageLink extends AbstractLink
-{
-    /**
-     * The logical name of the page to link to.
-     */
-    @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private String page;
-
-    @Inject
-    private ComponentResources resources;
-
-    /**
-     * If provided, this is the activation context for the target page (the information will be encoded into the URL).
-     * If not provided, then the target page will provide its own activation context.
-     */
-    @Parameter
-    private Object[] context;
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (isDisabled()) return;
-
-        Link link = resources.createPageLink(page, resources.isBound("context"), context);
-
-        writeLink(writer, link);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        if (isDisabled()) return;
-
-        writer.end(); // <a>
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PageLink.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PageLink.xdoc
deleted file mode 100644
index fc80869..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PageLink.xdoc
+++ /dev/null
@@ -1,89 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="ActionLink.html">ActionLink</a>
-                </li>
-                <li>
-                    <a href="EventLink.html">EventLink</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Examples">
-
-            <p>
-                We're continuing with the example introduced in the
-                <a href="Grid.html">Grid</a>
-                examples.
-            </p>
-
-            <p>
-                The UserList page renders a series of page links, passing the user id as the context:
-            </p>
-
-            <subsection name="UserList.html (partial)">
-                <source><![CDATA[
-        <t:grid source="users" row="user" model="model">
-            <p:lastnamecell>
-                <t:pagelink page="user/view" context="user.id">${user.lastname}</t:pagelink>
-            </p:lastnamecell>
-
-        </t:grid>]]></source>
-            </subsection>
-
-
-            <subsection name="ViewUser.java">
-
-                <p>
-                    The ViewUser page is responsible for converting that user id back into a User instance,
-                    by providing an event handler method for the "activate" event.
-                </p>
-
-                <source><![CDATA[
-public class ViewUser
-{
-    private User user;
-
-    @Inject
-    private UserDAO userDAO;
-
-    public User getUser()
-    {
-        return user;
-    }
-
-    void onActivate(long userId)
-    {
-        user = userDAO.findById(userId);
-    }
-}
-            ]]></source>
-
-            </subsection>
-
-            <subsection name="ViewUser.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>View User</h1>
-
-        <t:beandisplay object="user"/>
-    </body>
-</html>]]></source>
-
-                <p>
-                    Rendering out the User object, using a
-                    <a href="BeanDisplay.html">BeanDisplay</a>
-                    component, is easy, and the template doesn't have to know or
-                    care about the page activation context; it just reads the user property.
-                </p>
-
-            </subsection>
-
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java
deleted file mode 100644
index a8761cd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.java
+++ /dev/null
@@ -1,480 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Import;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.base.AbstractField;
-import org.apache.tapestry5.internal.util.SelectModelRenderer;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Multiple selection component. Generates a UI consisting of two &lt;select&gt; elements configured for multiple
- * selection; the one on the left is the list of "available" elements, the one on the right is "selected". Elements can
- * be moved between the lists by clicking a button, or double clicking an option (and eventually, via drag and drop).
- * <p/>
- * The items in the available list are kept ordered as per {@link SelectModel} order. When items are moved from the
- * selected list to the available list, they items are inserted back into their proper positions.
- * <p/>
- * The Palette may operate in normal or re-orderable mode, controlled by the reorder parameter.
- * <p/>
- * In normal mode, the items in the selected list are kept in the same "natural" order as the items in the available
- * list.
- * <p/>
- * In re-order mode, items moved to the selected list are simply added to the bottom of the list. In addition, two extra
- * buttons appear to move items up and down within the selected list.
- * <p/>
- * Much of the look and feel is driven by CSS, the default Tapestry CSS is used to set up the columns, etc. By default,
- * the &lt;select&gt; element's widths are 200px, and it is common to override this to a specific value:
- * <p/>
- * 
- * <pre>
- * &lt;style&gt;
- * DIV.t-palette SELECT { width: 300px; }
- * &lt;/style&gt;
- * </pre>
- * <p/>
- * You'll want to ensure that both &lt;select&gt; in each column is the same width, otherwise the display will update
- * poorly as options are moved from one column to the other.
- * <p/>
- * Option groups within the {@link SelectModel} will be rendered, but are not supported by many browsers, and are not
- * fully handled on the client side.
- */
-@Import(library = "palette.js")
-public class Palette extends AbstractField
-{
-    // These all started as anonymous inner classes, and were refactored out to here.
-    // I was chasing down one of those perplexing bytecode errors.
-
-    private final class AvailableRenderer implements Renderable
-    {
-        public void render(MarkupWriter writer)
-        {
-            writer.element("select", "id", getClientId() + "-avail", "multiple", "multiple", "size", getSize(), "name",
-                    getControlName() + "-avail");
-
-            writeDisabled(writer, isDisabled());
-
-            for (Runnable r : availableOptions)
-                r.run();
-
-            writer.end();
-        }
-    }
-
-    private final class OptionGroupEnd implements Runnable
-    {
-        private final OptionGroupModel model;
-
-        private OptionGroupEnd(OptionGroupModel model)
-        {
-            this.model = model;
-        }
-
-        public void run()
-        {
-            renderer.endOptionGroup(model);
-        }
-    }
-
-    private final class OptionGroupStart implements Runnable
-    {
-        private final OptionGroupModel model;
-
-        private OptionGroupStart(OptionGroupModel model)
-        {
-            this.model = model;
-        }
-
-        public void run()
-        {
-            renderer.beginOptionGroup(model);
-        }
-    }
-
-    private final class RenderOption implements Runnable
-    {
-        private final OptionModel model;
-
-        private RenderOption(OptionModel model)
-        {
-            this.model = model;
-        }
-
-        public void run()
-        {
-            renderer.option(model);
-        }
-    }
-
-    private final class SelectedRenderer implements Renderable
-    {
-        public void render(MarkupWriter writer)
-        {
-            writer.element("select", "id", getClientId(), "multiple", "multiple", "size", getSize(), "name",
-                    getControlName());
-
-            writeDisabled(writer, isDisabled());
-
-            putPropertyNameIntoBeanValidationContext("selected");
-
-            Palette.this.validate.render(writer);
-
-            removePropertyNameFromBeanValidationContext();
-
-            for (Object value : getSelected())
-            {
-                OptionModel model = valueToOptionModel.get(value);
-
-                renderer.option(model);
-            }
-
-            writer.end();
-        }
-    }
-
-    /**
-     * List of Runnable commands to render the available options.
-     */
-    private List<Runnable> availableOptions;
-
-    /**
-     * The image to use for the deselect button (the default is a left pointing arrow).
-     */
-    @Parameter(value = "asset:deselect.png")
-    @Property(write = false)
-    private Asset deselect;
-
-    /**
-     * Encoder used to translate between server-side objects and client-side strings.
-     */
-    @Parameter(required = true, allowNull = false)
-    private ValueEncoder<Object> encoder;
-
-    /**
-     * Model used to define the values and labels used when rendering.
-     */
-    @Parameter(required = true, allowNull = false)
-    private SelectModel model;
-
-    /**
-     * Allows the title text for the available column (on the left) to be modified. As this is a Block, it can contain
-     * conditionals and components. The default is the text "Available".
-     */
-    @Property(write = false)
-    @Parameter(required = true, allowNull = false, value = "message:available-label", defaultPrefix = BindingConstants.LITERAL)
-    private Block availableLabel;
-
-    /**
-     * Allows the title text for the selected column (on the right) to be modified. As this is a Block, it can contain
-     * conditionals and components. The default is the text "Available".
-     */
-    @Property(write = false)
-    @Parameter(required = true, allowNull = false, value = "message:selected-label", defaultPrefix = BindingConstants.LITERAL)
-    private Block selectedLabel;
-
-    /**
-     * The image to use for the move down button (the default is a downward pointing arrow).
-     */
-    @Parameter(value = "asset:move_down.png")
-    @Property(write = false)
-    private Asset moveDown;
-
-    /**
-     * The image to use for the move up button (the default is an upward pointing arrow).
-     */
-    @Parameter(value = "asset:move_up.png")
-    @Property(write = false)
-    private Asset moveUp;
-
-    /**
-     * Used to include scripting code in the rendered page.
-     */
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    /**
-     * Needed to access query parameters when processing form submission.
-     */
-    @Inject
-    private Request request;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private ComponentResources componentResources;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
-    private SelectModelRenderer renderer;
-
-    /**
-     * The image to use for the select button (the default is a right pointing arrow).
-     */
-    @Parameter(value = "asset:select.png")
-    @Property(write = false)
-    private Asset select;
-
-    /**
-     * The list of selected values from the {@link org.apache.tapestry5.SelectModel}. This will be updated when the form
-     * is submitted. If the value for the parameter is null, a new list will be created, otherwise the existing list
-     * will be cleared. If unbound, defaults to a property of the container matching this component's id.
-     */
-    @Parameter(required = true, autoconnect = true)
-    private List<Object> selected;
-
-    /**
-     * If true, then additional buttons are provided on the client-side to allow for re-ordering of the values.
-     */
-    @Parameter("false")
-    @Property(write = false)
-    private boolean reorder;
-
-    /**
-     * Used during rendering to identify the options corresponding to selected values (from the selected parameter), in
-     * the order they should be displayed on the page.
-     */
-    private List<OptionModel> selectedOptions;
-
-    private Map<Object, OptionModel> valueToOptionModel;
-
-    /**
-     * Number of rows to display.
-     */
-    @Parameter(value = "10")
-    private int size;
-
-    /**
-     * The object that will perform input validation. The validate binding prefix is generally used to provide
-     * this object in a declarative fashion.
-     * 
-     * @since 5.2.0
-     */
-    @Parameter(defaultPrefix = BindingConstants.VALIDATE)
-    @SuppressWarnings("unchecked")
-    private FieldValidator<Object> validate;
-
-    @Inject
-    @Symbol(SymbolConstants.COMPACT_JSON)
-    private boolean compactJSON;
-
-    /**
-     * The natural order of elements, in terms of their client ids.
-     */
-    private List<String> naturalOrder;
-
-    public Renderable getAvailableRenderer()
-    {
-        return new AvailableRenderer();
-    }
-
-    public Renderable getSelectedRenderer()
-    {
-        return new SelectedRenderer();
-    }
-
-    @Override
-    protected void processSubmission(String elementName)
-    {
-        String parameterValue = request.getParameter(elementName + "-values");
-
-        this.tracker.recordInput(this, parameterValue);
-
-        JSONArray values = new JSONArray(parameterValue);
-
-        // Use a couple of local variables to cut down on access via bindings
-
-        List<Object> selected = this.selected;
-
-        if (selected == null)
-            selected = newList();
-        else
-            selected.clear();
-
-        ValueEncoder encoder = this.encoder;
-
-        int count = values.length();
-        for (int i = 0; i < count; i++)
-        {
-            String value = values.getString(i);
-
-            Object objectValue = encoder.toValue(value);
-
-            selected.add(objectValue);
-        }
-
-        putPropertyNameIntoBeanValidationContext("selected");
-
-        try
-        {
-            this.fieldValidationSupport.validate(selected, this.componentResources, this.validate);
-
-            this.selected = selected;
-        }
-        catch (final ValidationException e)
-        {
-            this.tracker.recordError(this, e.getMessage());
-        }
-
-        removePropertyNameFromBeanValidationContext();
-    }
-
-    private void writeDisabled(MarkupWriter writer, boolean disabled)
-    {
-        if (disabled)
-            writer.attributes("disabled", "disabled");
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        JSONArray selectedValues = new JSONArray();
-
-        for (OptionModel selected : selectedOptions)
-        {
-
-            Object value = selected.getValue();
-            String clientValue = encoder.toClient(value);
-
-            selectedValues.put(clientValue);
-        }
-
-        JSONArray naturalOrder = new JSONArray();
-
-        for (String value : this.naturalOrder)
-        {
-            naturalOrder.put(value);
-        }
-
-        String clientId = getClientId();
-
-        javascriptSupport.addScript("new Tapestry.Palette('%s', %s, %s);", clientId, reorder, naturalOrder
-                .toString(compactJSON));
-
-        writer.element("input", "type", "hidden", "id", clientId + "-values", "name", getControlName() + "-values",
-                "value", selectedValues);
-        writer.end();
-    }
-
-    /**
-     * Prevent the body from rendering.
-     */
-    boolean beforeRenderBody()
-    {
-        return false;
-    }
-
-    @SuppressWarnings("unchecked")
-    void setupRender(MarkupWriter writer)
-    {
-        valueToOptionModel = CollectionFactory.newMap();
-        availableOptions = CollectionFactory.newList();
-        selectedOptions = CollectionFactory.newList();
-        naturalOrder = CollectionFactory.newList();
-        renderer = new SelectModelRenderer(writer, encoder);
-
-        final Set selectedSet = newSet(getSelected());
-
-        SelectModelVisitor visitor = new SelectModelVisitor()
-        {
-            public void beginOptionGroup(OptionGroupModel groupModel)
-            {
-                availableOptions.add(new OptionGroupStart(groupModel));
-            }
-
-            public void endOptionGroup(OptionGroupModel groupModel)
-            {
-                availableOptions.add(new OptionGroupEnd(groupModel));
-            }
-
-            public void option(OptionModel optionModel)
-            {
-                Object value = optionModel.getValue();
-
-                boolean isSelected = selectedSet.contains(value);
-
-                String clientValue = toClient(value);
-
-                naturalOrder.add(clientValue);
-
-                if (isSelected)
-                {
-                    selectedOptions.add(optionModel);
-                    valueToOptionModel.put(value, optionModel);
-                    return;
-                }
-
-                availableOptions.add(new RenderOption(optionModel));
-            }
-        };
-
-        model.visit(visitor);
-    }
-
-    /**
-     * Computes a default value for the "validate" parameter using
-     * {@link org.apache.tapestry5.services.FieldValidatorDefaultSource}.
-     */
-    Binding defaultValidate()
-    {
-        return this.defaultProvider.defaultValidatorBinding("selected", this.componentResources);
-    }
-
-    // Avoids a strange Javassist bytecode error, c'est lavie!
-    int getSize()
-    {
-        return size;
-    }
-
-    String toClient(Object value)
-    {
-        return encoder.toClient(value);
-    }
-
-    List<Object> getSelected()
-    {
-        if (selected == null)
-            return Collections.emptyList();
-
-        return selected;
-    }
-
-    @Override
-    public boolean isRequired()
-    {
-        return validate.isRequired();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.xdoc
deleted file mode 100644
index d33c12e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Palette.xdoc
+++ /dev/null
@@ -1,137 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="Select.html">Select</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Examples">
-
-            <p>
-                For this example, we'll implement a page from an e-commerce order wizard; the page collects information
-                about special handling for the order:
-            </p>
-
-            <p>
-                <br/>
-                <img src="palette_ref.png"/>
-            </p>
-
-            <p>
-                This single screen shot doesn't capture the full richness of the user experience provided
-                by the Palette component. The buttons enable and disable
-                themselves based on what's selected. You can move items by double clicking, and you can move multiple
-                items by selecting
-                them and and then clicking the button.
-            </p>
-
-            <p>
-                This is a far better experience than using &lt;select&gt; with multiple enabled, as its very difficult
-                to navigate
-                a large list when using a traditional &lt;select&gt; and very easy to accidentally lose your selection.
-                The price of this
-                is the requirement for JavaScript on the client side.
-            </p>
-
-            <subsection name="SpecialHandling.java">
-                <source><![CDATA[
-public enum SpecialHandling
-{
-    EXPRESS_SERVICE, GIFT_WRAP, GIFT_BASKET, CUSTOM_ENGRAVING, SHIPPING_INSURANCE,
-    EXTENDED_WARRANTY
-}]]>        </source>
-
-                <p>
-                    In this contrived example, the possible types of special handling are defined using
-                    an enum. It's more likely, in the real world, that this would be defined in terms
-                    of a database entity.
-                </p>
-            </subsection>
-
-            <subsection name="OrderHandling.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>Special Handling</h1>
-
-        <t:form>
-
-            <t:palette t:id="handling" encoder="encoder" model="model"/>
-
-            <br/>
-
-            <input type="submit" value="Continue"/>
-
-        </t:form>
-
-    </body>
-</html>]]></source>
-
-                <p>
-                    Here we are able to omit the selected parameter (the list of selected items) because the Palette
-                    component's id matches a property of the page.
-                </p>
-
-                <p>
-                    The model parameter will define the available options that can be selected. The encoder parameter
-                    will define how to translate server side values (the enum values) into client side strings and back.
-                </p>
-
-            </subsection>
-
-            <subsection name="OrderHandling.java">
-                <source><![CDATA[
-public class OrderHandling
-{
-    @Property
-    @Persist
-    private List<SpecialHandling> handling;
-
-    @Inject
-    private Messages messages;
-
-    @Property
-    private final ValueEncoder<SpecialHandling> encoder = new EnumValueEncoder(SpecialHandling.class);
-
-    @Property
-    private final SelectModel model = new EnumSelectModel(SpecialHandling.class, messages);
-}]]></source>
-
-                <p>
-                    Tapestry has built-in public classes that help convert enum types into value encoders
-                    and select models.
-                </p>
-
-                <p>
-                    Injecting a Messages object gives a component access to its own message catalog.
-                </p>
-
-                <p>
-                    The Palette component will read the handling property when rendering (it's ok for it to be null).
-                    When the form is submitted, it will create a new List and update the handling property.
-                </p>
-
-            </subsection>
-        </section>
-
-        <section name="Notes">
-            <p>
-                The Palette can also be used to order, not just select, items, by binding the reorder
-                parameter to true. In that case, additional buttons are added that allow selected items to
-                be moved up or down the list.
-            </p>
-
-            <p>
-                The Palette can be further customized through a mix of CSS and by replacing the images
-                used for its various buttons.
-            </p>
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PasswordField.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PasswordField.java
deleted file mode 100644
index aef6ca4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PasswordField.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.corelib.base.AbstractTextField;
-
-/**
- * A version of {@link TextField}, but rendered out as an &lt;input type="password"&gt; element. Further, the output
- * value for a PasswordField is always blank.  When the value provided to the PasswordField is blank, it does not update
- * its property (care should be taken that the "required" validator not be used in that case).
- * <p/>
- * Includes the <code>size</code> attribute, if a {@link org.apache.tapestry5.beaneditor.Width} annotation is present on
- * the property bound to the value parameter.
- */
-public class PasswordField extends AbstractTextField
-{
-
-    @Override
-    protected final void writeFieldTag(MarkupWriter writer, String value)
-    {
-        writer.element("input",
-
-                       "type", "password",
-
-                       "name", getControlName(),
-
-                       "id", getClientId(),
-
-                       "value", "",
-
-                       "size", getWidth());
-    }
-
-
-    final void afterRender(MarkupWriter writer)
-    {
-        writer.end(); // input
-    }
-
-    /**
-     * Returns true, blank input should be ignored and not cause an update to the server-side property bound to the
-     * value parameter.
-     *
-     * @return true
-     */
-    @Override
-    protected boolean ignoreBlankInput()
-    {
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PasswordField.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PasswordField.xdoc
deleted file mode 100644
index 2508550..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PasswordField.xdoc
+++ /dev/null
@@ -1,18 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="TextField.html">TextField</a>
-                </li>
-                <li>
-                    <a href="TextArea.html">TextArea</a>
-                </li>
-            </ul>
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
deleted file mode 100644
index 3886fb3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ProgressiveDisplay.java
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.TrackableComponentEventCallback;
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * A component used to implement the <a
- * href="http://en.wikipedia.org/wiki/Progressive_enhancement">progressive
- * enhancement</a> web design strategy; the component renders itself with a
- * simplified initial content (i.e., "loading
- * ...") and an Ajax request then supplies the component's true body. This
- * results in much faster page loads. You can
- * even nest these!
- * <p/>
- * The component simply does not render its body on initial render. On the subsequent action event request, it fires a
- * {@link org.apache.tapestry5.EventConstants#PROGRESSIVE_DISPLAY} event to inform the container about the (optional)
- * event context. The event handler method may return a renderable object; if not then the component's body is rendered
- * as the partial markup response.
- * 
- * @since 5.1.0.1
- */
-@SupportsInformalParameters
-@IncludeJavaScriptLibrary("ProgressiveDisplay.js")
-@Events(EventConstants.PROGRESSIVE_DISPLAY)
-@SuppressWarnings("all")
-public class ProgressiveDisplay
-{
-    /**
-     * The initial content to display until the real content arrives. Defaults
-     * to "Loading ..." and an Ajax activity
-     * icon.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL, value = "block:defaultInitial")
-    private Block initial;
-
-    /**
-     * If provided, this is the event context, which will be provided via the
-     * {@link org.apache.tapestry5.EventConstants#PROGRESSIVE_DISPLAY event}.
-     */
-    @Parameter
-    private Object[] context;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    @Environmental
-    private TrackableComponentEventCallback eventCallback;
-
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that
-     * is invoked after the elements's body
-     * content has been updated. If not specified, then the basic "highlight"
-     * method is used, which performs a classic
-     * "yellow fade" to indicate to the user that and update has taken place.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String update;
-
-    Block beginRender(MarkupWriter writer)
-    {
-        String clientId = jsSupport.allocateClientId(resources);
-        String elementName = resources.getElementName("div");
-
-        Element e = writer.element(elementName, "id", clientId);
-
-        resources.renderInformalParameters(writer);
-
-        e.addClassName("t-zone");
-
-        Link link = resources.createEventLink(EventConstants.ACTION, context);
-
-        JSONObject spec = new JSONObject();
-
-        if (InternalUtils.isNonBlank(update))
-            spec.put("update", update.toLowerCase());
-
-        spec.put("element", clientId);
-        spec.put("url", link.toURI());
-
-        jsSupport.addInitializerCall("progressiveDisplay", spec);
-
-        return initial;
-    }
-
-    Object onAction(EventContext context) throws IOException
-    {
-        resources.triggerContextEvent(EventConstants.PROGRESSIVE_DISPLAY, context, eventCallback);
-
-        if (eventCallback.isAborted())
-            return null;
-
-        return getBody();
-    }
-
-    boolean beforeRenderBody()
-    {
-        return false;
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-
-    /**
-     * Returns the body of the ProgressiveDisplay, which is sometimes (in the
-     * context of a {@linkplain MultiZoneUpdate multi-zone update})
-     * the content to be included.
-     * 
-     * @since 5.2.0
-     * @return body of component
-     */
-    public Block getBody()
-    {
-        return resources.getBody();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
deleted file mode 100644
index 08680f5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyDisplay.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.corelib.base.AbstractPropertyOutput;
-
-/**
- * Outputs a single property value. Overrides for individual properties come from block parameters whose name matches
- * the {@linkplain PropertyModel#getId() property id}. This component is rarely used on its own, but is a critical piece
- * of the {@link BeanDisplay} component.
- */
-public class PropertyDisplay extends AbstractPropertyOutput
-{
-    Object beginRender(MarkupWriter writer)
-    {
-        return renderPropertyValue(writer, getPropertyModel().getId());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
deleted file mode 100644
index b8a5cd4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/PropertyEditor.java
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.*;
-
-import java.lang.annotation.Annotation;
-import java.util.Locale;
-
-/**
- * Used to edit a single property of a bean. This is used primarily by {@link BeanEditForm}. Unlike BeanEditForm, the
- * object to be edited must already exist and the {@linkplain BeanModel model} must be passed in explicitly.
- */
-public class PropertyEditor
-{
-    /**
-     * Configures and stores a {@link PropertyEditContext} into the {@link Environment}.
-     */
-    static class SetupEnvironment implements ComponentAction<PropertyEditor>
-    {
-        private static final long serialVersionUID = 5337049721509981997L;
-
-        private final String property;
-
-        public SetupEnvironment(String property)
-        {
-            this.property = property;
-        }
-
-        public void execute(PropertyEditor component)
-        {
-            component.setupEnvironment(property);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("PropertyEditor.SetupEnvironment[%s]", property);
-        }
-    }
-
-    static class CleanupEnvironment implements ComponentAction<PropertyEditor>
-    {
-        private static final long serialVersionUID = 7878694042753046523L;
-
-        public void execute(PropertyEditor component)
-        {
-            component.cleanupEnvironment();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "PropertyEditor.CleanupEnvironment";
-        }
-    }
-
-    private static final ComponentAction CLEANUP_ENVIRONMENT = new CleanupEnvironment();
-
-    /**
-     * The object to be edited by the BeanEditor. This will be read when the component renders and updated when the form
-     * for the component is submitted. Typically, the container will listen for a "prepare" event, in order to ensure
-     * that a non-null value is ready to be read or updated.
-     */
-    @Parameter(required = true, allowNull = false)
-    private Object object;
-
-    /**
-     * Where to search for local overrides of property editing blocks as block parameters. This is normally the
-     * containing component of the PropertyEditor, but when the component is used within a BeanEditor, it will be the
-     * BeanEditor's block parameters that will be searched.
-     */
-    @Parameter(value = "this", allowNull = false)
-    private PropertyOverrides overrides;
-
-    /**
-     * Identifies the property to be edited by the editor.
-     */
-    @Parameter(required = true)
-    private String property;
-
-    /**
-     * The model that identifies the parameters to be edited, their order, and every other aspect.
-     */
-    @Parameter(required = true, allowNull = false)
-    private BeanModel model;
-
-    @Inject
-    private FieldValidatorDefaultSource fieldValidatorDefaultSource;
-
-    @Inject
-    private Environment environment;
-
-    /**
-     * Source for property editor blocks. This defaults to the default implementation of {@link
-     * org.apache.tapestry5.services.BeanBlockSource}.
-     */
-    @Parameter(required = true, allowNull = false)
-    private BeanBlockSource beanBlockSource;
-
-    @Inject
-    @Core
-    private BeanBlockSource defaultBeanBlockSource;
-
-    @Inject
-    private Messages messages;
-
-    @Inject
-    private Locale locale;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private FieldTranslatorSource fieldTranslatorSource;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    private PropertyModel propertyModel;
-
-    BeanBlockSource defaultBeanBlockSource()
-    {
-        return defaultBeanBlockSource;
-    }
-
-    /**
-     * Creates a {@link org.apache.tapestry5.services.PropertyEditContext} and pushes it onto the {@link
-     * org.apache.tapestry5.services.Environment} stack.
-     */
-    void setupEnvironment(final String propertyName)
-    {
-        propertyModel = model.get(propertyName);
-
-        PropertyEditContext context = new PropertyEditContext()
-        {
-            public Messages getContainerMessages()
-            {
-                return overrides.getOverrideMessages();
-            }
-
-            public String getLabel()
-            {
-                return propertyModel.getLabel();
-            }
-
-            public String getPropertyId()
-            {
-                return propertyModel.getId();
-            }
-
-            public Class getPropertyType()
-            {
-                return propertyModel.getPropertyType();
-            }
-
-            public Object getPropertyValue()
-            {
-                return propertyModel.getConduit().get(object);
-            }
-
-            public FieldTranslator getTranslator(Field field)
-            {
-                return fieldTranslatorSource.createDefaultTranslator(field, propertyName,
-                                                                     overrides.getOverrideMessages(), locale,
-                                                                     propertyModel.getPropertyType(),
-                                                                     propertyModel.getConduit());
-            }
-
-            public FieldValidator getValidator(Field field)
-            {
-                return fieldValidatorDefaultSource.createDefaultValidator(field, propertyName,
-                                                                          overrides.getOverrideMessages(), locale,
-                                                                          propertyModel.getPropertyType(),
-                                                                          propertyModel.getConduit());
-            }
-
-            public void setPropertyValue(Object value)
-            {
-                propertyModel.getConduit().set(object, value);
-            }
-
-            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-            {
-                return propertyModel.getAnnotation(annotationClass);
-            }
-        };
-
-        environment.push(PropertyEditContext.class, context);
-        
-        BeanValidationContext beanValidationContext = environment.peek(BeanValidationContext.class);
-        
-        if(beanValidationContext != null)
-        {
-        	beanValidationContext.setCurrentProperty(propertyName);
-        }
-    }
-
-    /**
-     * Called at the end of the form render (or at the end of the form submission) to clean up the {@link Environment}
-     * stack.
-     */
-    void cleanupEnvironment()
-    {
-        environment.pop(PropertyEditContext.class);
-    }
-
-    /**
-     * Record into the Form what's needed to process the property.
-     */
-    void setupRender()
-    {
-        // Sets up the PropertyEditContext for the duration of the render of this component
-        // (which will include the duration of the editor block).
-
-        formSupport.storeAndExecute(this, new SetupEnvironment(property));
-    }
-
-    /**
-     * Records into the Form the cleanup logic for the property.
-     */
-    void cleanupRender()
-    {
-        // Removes the PropertyEditContext after this component (including the editor block)
-        // has rendered.
-
-        formSupport.storeAndExecute(this, CLEANUP_ENVIRONMENT);
-    }
-
-    /**
-     * Returns a Block for rendering the property. The Block will be able to access the {@link PropertyEditContext} via
-     * the {@link Environmental} annotation.
-     */
-    Block beginRender()
-    {
-        
-        Block override = overrides.getOverrideBlock(propertyModel.getId());
-
-        if (override != null)
-        {
-            return override;
-        }
-
-        String dataType = propertyModel.getDataType();
-
-        if (dataType == null)
-            throw new RuntimeException(
-                    String.format("The data type for property '%s' of %s is null.", propertyModel.getPropertyName(),
-                                  object));
-
-        try
-        {
-
-            return beanBlockSource.getEditBlock(dataType);
-        }
-        catch (RuntimeException ex)
-        {
-            String message = messages.format("block-error", propertyModel.getPropertyName(), dataType, object, ex);
-
-            throw new TapestryException(message, resources.getLocation(), ex);
-        }
-        
-    }
-
-    /**
-     * Returns false, to prevent the rendering of the body of the component. PropertyEditor should not have a body.
-     */
-    boolean beforeRenderBody()
-    {
-        return false;
-    }
-
-    /**
-     * Used for testing.
-     */
-    void inject(ComponentResources resources, PropertyOverrides overrides, PropertyModel propertyModel,
-                BeanBlockSource beanBlockSource, Messages messages, Object object)
-    {
-        this.resources = resources;
-        this.overrides = overrides;
-        this.propertyModel = propertyModel;
-        this.beanBlockSource = beanBlockSource;
-        this.messages = messages;
-        this.object = object;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java
deleted file mode 100644
index da8d833..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.java
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.RadioContainer;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.mixins.DiscardBody;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.corelib.mixins.RenderInformals;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * A radio button (i.e., &lt;input type="radio"&gt;). Radio buttons <strong>must</strong> operate within a
- * {@link RadioContainer} (normally, the {@link RadioGroup} component).
- * <p/>
- * If the value parameter is not bound, then the default value is a property of the container component whose name
- * matches the Radio component's id.
- */
-public class Radio implements Field
-{
-    @Environmental
-    private RadioContainer container;
-
-    /**
-     * The user presentable label for the field. If not provided, a reasonable label is generated from the component's
-     * id, first by looking for a message key named "id-label" (substituting the component's actual id), then by
-     * converting the actual id to a presentable string (for example, "userId" to "User Id").
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String label;
-
-    /**
-     * The value associated with this radio button. This is used to determine which radio button will be selected when
-     * the page is rendered, and also becomes the value assigned when the form is submitted.
-     */
-    @Parameter(required = true, principal = true, autoconnect = true)
-    private Object value;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private ComponentResources resources;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderInformals renderInformals;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderDisabled renderDisabled;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private DiscardBody discardBody;
-
-    @Inject
-    private JavaScriptSupport jsSupport;
-
-    private String clientId;
-
-    private String controlName;
-
-    /**
-     * If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
-     * disabled field ignores any value in the request when the form is submitted.
-     */
-    @Parameter("false")
-    private boolean disabled;
-
-    String defaultLabel()
-    {
-        return defaultProvider.defaultLabel(resources);
-    }
-
-    /**
-     * Returns the control name provided by the containing {@link org.apache.tapestry5.RadioContainer}.
-     */
-    public String getControlName()
-    {
-        return controlName;
-    }
-
-    public String getLabel()
-    {
-        return label;
-    }
-
-    /**
-     * Returns true if this component has been expressly disabled (via its disabled parameter), or if the
-     * {@link RadioContainer container} has been disabled.
-     */
-    public boolean isDisabled()
-    {
-        return disabled || container.isDisabled();
-    }
-
-    public String getClientId()
-    {
-        return clientId;
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        String value = container.toClient(this.value);
-
-        clientId = jsSupport.allocateClientId(resources);
-        controlName = container.getControlName();
-
-        writer.element("input", "type", "radio", "id", clientId, "name", controlName, "value", value);
-
-        if (container.isSelected(this.value))
-            writer.attributes("checked", "checked");
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-
-    /**
-     * Returns false; the RadioComponent component does not support declarative field validation.
-     */
-    public boolean isRequired()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.xdoc
deleted file mode 100644
index 76f8e34..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Radio.xdoc
+++ /dev/null
@@ -1,155 +0,0 @@
-<document>
-    <body>
-
-        <section name="Related Components">
-
-            <ul>
-                <li>
-                    <a href="RadioGroup.html">RadioGroup</a>
-                </li>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="Select.html">Select</a>
-                </li>
-            </ul>
-
-        </section>
-
-        <section name="Examples">
-            <p>
-                Radio components are always used in conjunction with
-                a RadioGroup component. The RadioGroup defines the property
-                that will be read and updated, and the individual Radio
-                components determine what value will be assigned to the property.
-            </p>
-
-            <p>
-                Our example will be part of a page that collects credit card information.
-                We'll just be showing the portions related to
-                a set of radio buttons for choosing the type of credit card.
-            </p>
-
-            <p>
-                <img src="radio_ref.png"/>
-            </p>
-
-            <subsection name="CardType.java">
-
-                <source><![CDATA[
-public enum CardType
-{
-    MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER
-}
-]]></source>
-
-            </subsection>
-
-            <subsection name="Payment.tml">
-
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>Order Payment</h1>
-
-        <t:form>
-            <t:label for="cardNumber"/>:
-
-            <t:textfield t:id="cardNumber" size="16"/>
-
-            <br/>
-
-            <t:label for="type"/>:
-
-            <t:radiogroup t:id="type">
-                <t:radio t:id="masterCard"/>
-                <t:label for="masterCard"/>
-                <t:radio t:id="visa"/>
-                <t:label for="visa"/>
-                <t:radio t:id="amex"/>
-                <t:label for="amex"/>
-                <t:radio t:id="dinersClub"/>
-                <t:label for="dinersClub"/>
-                <t:radio t:id="discover"/>
-                <t:label for="discover"/>
-            </t:radiogroup>
-
-        </t:form>
-
-    </body>
-</html>]]></source>
-
-                <p>
-                    The advantage of using radio buttons here, rather than a drop down list,
-                    is that we could extend the labels to use a small image of each
-                    type of supported card.
-                </p>
-
-                <p>
-                    We're once again using the trick of matching the component's id
-                    to a property of the containing page. The RadioGroup's value parameter
-                    will be bound to the page's type property. Likewise, each of the
-                    Radio components will be matched to a property of the page.
-                </p>
-
-            </subsection>
-
-            <subsection name="Payment.java (partial)">
-
-                <source><![CDATA[
-
-public class Payment
-{
-    . . .
-
-    @Property
-    @Persist
-    private CardType type;
-
-    public CardType getMasterCard() { return CardType.MASTER_CARD; }
-
-    public CardType getVisa() { return CardType.VISA; }
-
-    public CardType getAmex() { return CardType.AMERICAN_EXPRESS; }
-
-    public CardType getDinersClub() { return CardType.DINERS_CLUB; }
-
-    public CardType getDiscover() { return CardType.DISCOVER; }
-
-    . . .
-}]]></source>
-
-
-                <p>
-                    We use a number of read-only properties to provide
-                    each Radio component with its corresponding enum value, that will
-                    ultimately be assigned to the page's type property
-                    (if that corresponding Radio component is selected by the user).
-                </p>
-
-                <p>
-                    This is far from the only pattern of usage; it is much more likely
-                    that you will use a Loop component around a single Radio component
-                    than you will use a whole array of Radio components as in this example.
-                </p>
-
-            </subsection>
-
-            <subsection name="Payment.properties">
-
-                <p>
-                    We override the default generated labels for a few fields and enum values:
-                </p>
-
-                <source><![CDATA[
-cardnumber-label=Credit Card Number
-type-label=Credit Card Type
-dinersclub-label=Diner's Club]]></source>
-            </subsection>
-
-        </section>
-
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
deleted file mode 100644
index 97f950d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.java
+++ /dev/null
@@ -1,251 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Request;
-
-@Events(EventConstants.VALIDATE)
-public class RadioGroup implements Field
-{
-    /**
-     * The property read and updated by the group as a whole.
-     */
-    @Parameter(required = true, principal = true, autoconnect = true)
-    private Object value;
-
-    /**
-     * If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
-     * disabled field ignores any value in the request when the form is submitted.
-     */
-    @Parameter("false")
-    private boolean disabled;
-
-    /**
-     * The user presentable label for the field. If not provided, a reasonable label is generated from the component's
-     * id, first by looking for a message key named "id-label" (substituting the component's actual id), then by
-     * converting the actual id to a presentable string (for example, "userId" to "User Id").
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String label;
-
-    /**
-     * The id used to generate a page-unique client-side identifier for the component. If a component renders multiple
-     * times, a suffix will be appended to the to id to ensure uniqueness. The uniqued value may be accessed via the
-     * {@link #getClientId() clientId property}.
-     */
-    @Parameter(value = "prop:componentResources.id", defaultPrefix = BindingConstants.LITERAL)
-    private String clientId;
-
-    /**
-     * Allows a specific implementation of {@link org.apache.tapestry5.ValueEncoder} to be supplied. This is used to
-     * create client-side string values for the different radio button values.
-     */
-    @Parameter(required = true, allowNull = false)
-    private ValueEncoder encoder;
-
-    /**
-     * The object that will perform input validation. The validate binding prefix is generally used to provide this
-     * object in a declarative fashion.
-     */
-    @Parameter(defaultPrefix = BindingConstants.VALIDATE)
-    @SuppressWarnings("unchecked")
-    private FieldValidator<Object> validate;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Inject
-    private Environment environment;
-
-    @Inject
-    private Request request;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
-    private String controlName;
-
-    String defaultLabel()
-    {
-        return defaultProvider.defaultLabel(resources);
-    }
-
-    final ValueEncoder defaultEncoder()
-    {
-        return defaultProvider.defaultValueEncoder("value", resources);
-    }
-
-    private static class Setup implements ComponentAction<RadioGroup>
-    {
-        private static final long serialVersionUID = -7984673040135949374L;
-
-        private final String controlName;
-
-        Setup(String controlName)
-        {
-            this.controlName = controlName;
-        }
-
-        public void execute(RadioGroup component)
-        {
-            component.setup(controlName);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("RadioGroup.Setup[%s]", controlName);
-        }
-    }
-
-    private static final ComponentAction<RadioGroup> PROCESS_SUBMISSION = new ComponentAction<RadioGroup>()
-    {
-        private static final long serialVersionUID = -3857110108918776386L;
-
-        public void execute(RadioGroup component)
-        {
-            component.processSubmission();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "RadioGroup.ProcessSubmission";
-        }
-    };
-
-    private void setup(String elementName)
-    {
-        controlName = elementName;
-    }
-
-    private void processSubmission()
-    {
-        String rawValue = request.getParameter(controlName);
-
-        tracker.recordInput(this, rawValue);
-        try
-        {
-            if (validate != null)
-                fieldValidationSupport.validate(rawValue, resources, validate);
-        }
-        catch (ValidationException ex)
-        {
-            tracker.recordError(this, ex.getMessage());
-        }
-
-        value = encoder.toValue(rawValue);
-    }
-
-    /**
-     * Obtains the element name for the group, and stores a {@link RadioContainer} into the {@link Environment} (so that
-     * the {@link Radio} components can find it).
-     */
-    final void setupRender()
-    {
-        ComponentAction<RadioGroup> action = new Setup(formSupport.allocateControlName(clientId));
-
-        formSupport.storeAndExecute(this, action);
-
-        String submittedValue = tracker.getInput(this);
-
-        final String selectedValue = submittedValue != null ? submittedValue : encoder.toClient(value);
-
-        environment.push(RadioContainer.class, new RadioContainer()
-        {
-            public String getControlName()
-            {
-                return controlName;
-            }
-
-            public boolean isDisabled()
-            {
-                return disabled;
-            }
-
-            @SuppressWarnings("unchecked")
-            public String toClient(Object value)
-            {
-                // TODO: Ensure that value is of the expected type?
-
-                return encoder.toClient(value);
-            }
-
-            public boolean isSelected(Object value)
-            {
-                return TapestryInternalUtils.isEqual(encoder.toClient(value), selectedValue);
-            }
-        });
-
-        formSupport.store(this, PROCESS_SUBMISSION);
-    }
-
-    /**
-     * Pops the {@link RadioContainer} off the Environment.
-     */
-    final void afterRender()
-    {
-        environment.pop(RadioContainer.class);
-    }
-
-    public String getControlName()
-    {
-        return controlName;
-    }
-
-    public String getLabel()
-    {
-        return label;
-    }
-
-    public boolean isDisabled()
-    {
-        return disabled;
-    }
-
-    /**
-     * Returns null; the radio group does not render as a tag and so doesn't have an id to share.  RadioGroup implements
-     * {@link org.apache.tapestry5.Field} only so it can interact with the {@link org.apache.tapestry5.ValidationTracker}.
-     *
-     * @return null
-     */
-    public String getClientId()
-    {
-        return null;
-    }
-
-    public boolean isRequired()
-    {
-        return validate.isRequired();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.xdoc
deleted file mode 100644
index 06046f9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RadioGroup.xdoc
+++ /dev/null
@@ -1,9 +0,0 @@
-<document>
-    <body>
-        <p>
-            Examples are provided with the documentation of the
-            <a href="Radio.html">Radio</a>
-            component.
-        </p>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RemoveRowLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RemoveRowLink.java
deleted file mode 100644
index 69e907e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RemoveRowLink.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.internal.AjaxFormLoopContext;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Used inside a {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} to remove the current row from the loop.
- * This fires a server-side event (from the AjaxFormLoop component); the event context is the object to be removed. On
- * the client-side, the element for the row is hidden, then removed altogether.
- */
-@SupportsInformalParameters
-public class RemoveRowLink
-{
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private AjaxFormLoopContext context;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    void beginRender(MarkupWriter writer)
-    {
-        String clientId = jsSupport.allocateClientId(resources);
-
-        writer.element("a",
-
-        "href", "#",
-
-        "id", clientId);
-
-        resources.renderInformalParameters(writer);
-
-        context.addRemoveRowTrigger(clientId);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RenderObject.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RenderObject.java
deleted file mode 100644
index 8aa2e3b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/RenderObject.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.pages.ExceptionReport;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-/**
- * Renders out an object using the {@link ObjectRenderer} service. Used primarily on the {@link ExceptionReport} page.
- * This is focused on objects that have a specific {@link ObjectRenderer} strategy. The {@link BeanDisplay} component is
- * used for displaying the contents of arbitrary objects in terms of a series of property names and values.
- */
-public class RenderObject
-{
-    @Parameter(required = true)
-    private Object object;
-
-    @Inject
-    @Primary
-    private ObjectRenderer<Object> renderer;
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        renderer.render(object, writer);
-
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
deleted file mode 100644
index 88b475a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.java
+++ /dev/null
@@ -1,355 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.BeforeRenderTemplate;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.corelib.base.AbstractField;
-import org.apache.tapestry5.corelib.data.BlankOption;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.util.CaptureResultCallback;
-import org.apache.tapestry5.internal.util.SelectModelRenderer;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-import org.apache.tapestry5.services.ValueEncoderSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.util.EnumSelectModel;
-
-/**
- * Select an item from a list of values, using an [X]HTML &lt;select&gt; element on the client side. An validation
- * decorations will go around the entire &lt;select&gt; element.
- * <p/>
- * A core part of this component is the {@link ValueEncoder} (the encoder parameter) that is used to convert between
- * server-side values and client-side strings. In many cases, a {@link ValueEncoder} can be generated automatically from
- * the type of the value parameter. The {@link ValueEncoderSource} service provides an encoder in these situations; it
- * can be overriden by binding the encoder parameter, or extended by contributing a {@link ValueEncoderFactory} into the
- * service's configuration.
- */
-@Events(
-{ EventConstants.VALIDATE, EventConstants.VALUE_CHANGED + " when 'zone' parameter is bound" })
-public class Select extends AbstractField
-{
-    public static final String CHANGE_EVENT = "change";
-
-    private class Renderer extends SelectModelRenderer
-    {
-
-        public Renderer(MarkupWriter writer)
-        {
-            super(writer, encoder);
-        }
-
-        @Override
-        protected boolean isOptionSelected(OptionModel optionModel, String clientValue)
-        {
-            return isSelected(clientValue);
-        }
-    }
-
-    /**
-     * Allows a specific implementation of {@link ValueEncoder} to be supplied. This is used to create client-side
-     * string values for the different options.
-     * 
-     * @see ValueEncoderSource
-     */
-    @Parameter
-    private ValueEncoder encoder;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    // Maybe this should default to property "<componentId>Model"?
-    /**
-     * The model used to identify the option groups and options to be presented to the user. This can be generated
-     * automatically for Enum types.
-     */
-    @Parameter(required = true, allowNull = false)
-    private SelectModel model;
-
-    /**
-     * Controls whether an additional blank option is provided. The blank option precedes all other options and is never
-     * selected. The value for the blank option is always the empty string, the label may be the blank string; the
-     * label is from the blankLabel parameter (and is often also the empty string).
-     */
-    @Parameter(value = "auto", defaultPrefix = BindingConstants.LITERAL)
-    private BlankOption blankOption;
-
-    /**
-     * The label to use for the blank option, if rendered. If not specified, the container's message catalog is
-     * searched for a key, <code><em>id</em>-blanklabel</code>.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String blankLabel;
-
-    @Inject
-    private Request request;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    /**
-     * Performs input validation on the value supplied by the user in the form submission.
-     */
-    @Parameter(defaultPrefix = BindingConstants.VALIDATE)
-    private FieldValidator<Object> validate;
-
-    /**
-     * The value to read or update.
-     */
-    @Parameter(required = true, principal = true, autoconnect = true)
-    private Object value;
-
-    /**
-     * Binding the zone parameter will cause any change of Select's value to be handled as an Ajax request that updates
-     * the
-     * indicated zone. The component will trigger the event {@link EventConstants#VALUE_CHANGED} to inform its
-     * container that Select's value has changed.
-     * 
-     * @since 5.2.0
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String zone;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Inject
-    private JavaScriptSupport javascriptSupport;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderDisabled renderDisabled;
-
-    private String selectedClientValue;
-
-    private boolean isSelected(String clientValue)
-    {
-        return TapestryInternalUtils.isEqual(clientValue, selectedClientValue);
-    }
-
-    @SuppressWarnings(
-    { "unchecked" })
-    @Override
-    protected void processSubmission(String elementName)
-    {
-        String submittedValue = request.getParameter(elementName);
-
-        tracker.recordInput(this, submittedValue);
-
-        Object selectedValue = toValue(submittedValue);
-
-        putPropertyNameIntoBeanValidationContext("value");
-
-        try
-        {
-            fieldValidationSupport.validate(selectedValue, resources, validate);
-
-            value = selectedValue;
-        }
-        catch (ValidationException ex)
-        {
-            tracker.recordError(this, ex.getMessage());
-        }
-
-        removePropertyNameFromBeanValidationContext();
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("select", "name", getControlName(), "id", getClientId());
-
-        putPropertyNameIntoBeanValidationContext("value");
-
-        validate.render(writer);
-
-        removePropertyNameFromBeanValidationContext();
-
-        resources.renderInformalParameters(writer);
-        
-        decorateInsideField();
-
-        // Disabled is via a mixin
-
-        if (this.zone != null)
-        {
-            Link link = resources.createEventLink(CHANGE_EVENT);
-
-            JSONObject spec = new JSONObject("selectId", getClientId(), "zoneId", zone, "url", link.toURI());
-
-            javascriptSupport.addInitializerCall("linkSelectToZone", spec);
-        }
-    }
-
-    Object onChange(@RequestParameter(value = "t:selectvalue", allowBlank = true)
-    final String selectValue)
-    {
-        final Object newValue = toValue(selectValue);
-
-        CaptureResultCallback<Object> callback = new CaptureResultCallback<Object>();
-
-        this.resources.triggerEvent(EventConstants.VALUE_CHANGED, new Object[]
-        { newValue }, callback);
-
-        this.value = newValue;
-
-        return callback.getResult();
-    }
-
-    protected Object toValue(String submittedValue)
-    {
-        return InternalUtils.isBlank(submittedValue) ? null : this.encoder.toValue(submittedValue);
-    }
-
-    @SuppressWarnings("unchecked")
-    ValueEncoder defaultEncoder()
-    {
-        return defaultProvider.defaultValueEncoder("value", resources);
-    }
-
-    @SuppressWarnings("unchecked")
-    SelectModel defaultModel()
-    {
-        Class valueType = resources.getBoundType("value");
-
-        if (valueType == null)
-            return null;
-
-        if (Enum.class.isAssignableFrom(valueType))
-            return new EnumSelectModel(valueType, resources.getContainerMessages());
-
-        return null;
-    }
-
-    /**
-     * Computes a default value for the "validate" parameter using {@link FieldValidatorDefaultSource}.
-     */
-    Binding defaultValidate()
-    {
-        return defaultProvider.defaultValidatorBinding("value", resources);
-    }
-
-    Object defaultBlankLabel()
-    {
-        Messages containerMessages = resources.getContainerMessages();
-
-        String key = resources.getId() + "-blanklabel";
-
-        if (containerMessages.contains(key))
-            return containerMessages.get(key);
-
-        return null;
-    }
-
-    /**
-     * Renders the options, including the blank option.
-     */
-    @BeforeRenderTemplate
-    void options(MarkupWriter writer)
-    {
-        selectedClientValue = tracker.getInput(this);
-
-        // Use the value passed up in the form submission, if available.
-        // Failing that, see if there is a current value (via the value parameter), and
-        // convert that to a client value for later comparison.
-
-        if (selectedClientValue == null)
-            selectedClientValue = value == null ? null : encoder.toClient(value);
-
-        if (showBlankOption())
-        {
-            writer.element("option", "value", "");
-            writer.write(blankLabel);
-            writer.end();
-        }
-
-        SelectModelVisitor renderer = new Renderer(writer);
-
-        model.visit(renderer);
-    }
-
-    @Override
-    public boolean isRequired()
-    {
-        return validate.isRequired();
-    }
-
-    private boolean showBlankOption()
-    {
-        switch (blankOption)
-        {
-            case ALWAYS:
-                return true;
-
-            case NEVER:
-                return false;
-
-            default:
-                return !isRequired();
-        }
-    }
-
-    // For testing.
-
-    void setModel(SelectModel model)
-    {
-        this.model = model;
-        blankOption = BlankOption.NEVER;
-    }
-
-    void setValue(Object value)
-    {
-        this.value = value;
-    }
-
-    void setValueEncoder(ValueEncoder encoder)
-    {
-        this.encoder = encoder;
-    }
-
-    void setValidationTracker(ValidationTracker tracker)
-    {
-        this.tracker = tracker;
-    }
-
-    void setBlankOption(BlankOption option, String label)
-    {
-        blankOption = option;
-        blankLabel = label;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.xdoc
deleted file mode 100644
index 6eeb82e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Select.xdoc
+++ /dev/null
@@ -1,277 +0,0 @@
-<document>
-    <body>
-        <section name="Simple Example">
-
-            <p>
-                A simple example, selecting one of three strings:
-            </p>
-
-            <subsection name="SelectColor.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>Select Color</h1>
-
-        <t:form>
-
-            <t:label for="color"/>:
-            <t:select t:id="color" model="literal:Red,Green,Blue"/>
-
-            <br/>
-
-            <input type="submit" value="Continue"/>
-        </t:form>
-
-    </body>
-</html>]]></source>
-
-                <p>
-                    When the model parameter is a string, it is split apart at the commas.  When the model parameter is
-                    a List of Strings, each element is considered a selection option.
-                </p>
-
-                <p>
-                    When using this approach, you'll commonly put the list into the message catalog,
-                    and reference it using a "message:" binding.
-                </p>
-
-                <p>
-                    Here the label displayed to the user is the same as the value used to update the property, but that
-                    doesn't have to be the case. By specifying a value and a label, we can control the server side value
-                    without changing how the UI appears to the user:
-                </p>
-
-                <source>
-                    <![CDATA[
-            <t:select t:id="color" model="literal:FF0000=Red,00FF00=Green,0000FF=Blue"/>
-]]>
-                </source>
-
-
-            </subsection>
-
-<subsection name="SelectColor.java">
-
-<source><![CDATA[
-public class SelectColor
-{
-  @Validate("required")
-  public String color;
-
-}]]></source>
-
-    <p>
-        Placing the @Validate annotation on the field supplies the default validation for this field, here
-        it indicates that color is required.  This prevents the
-        Select component from including a blank option for the field (though this behavior too can be overridden).
-        Without the @Validate, it would be possible for the user to select a blank value, and null would
-        be assigned to the color property of SelectColor.  This might be appropriate for a search form, but
-        not for an edit form.
-    </p>
-
-</subsection>
-
-        </section>
-
-        <section name="Enum Example">
-
-            <p>Working with Enums is, amazingly, even easier (and more so than with the Radio component).</p>
-
-            <p>
-                Most of this example is the same as for the
-                <a href="Radio.html">Radio</a>
-                component, except that
-                we're using a single Select component instead of multiple Radio components:
-            </p>
-
-            <p>
-                <img src="select_ref2.png"/>
-            </p>
-
-            <subsection name="CardType.java">
-
-                <source><![CDATA[
-public enum CardType
-{
-    MASTER_CARD, VISA, AMERICAN_EXPRESS, DINERS_CLUB, DISCOVER
-}
-]]></source>
-
-            </subsection>
-
-            <subsection name="Payment.tml (partial)">
-
-                <p>
-                    In the Radio example, we used a Label and a Radio component for each enum value.
-                    With Select we use a single Label and a single Select component:
-                </p>
-
-                <source><![CDATA[
-    <t:label for="type"/>:
-    <t:select t:id="type"/>]]></source>
-
-
-                <p>
-                    Here again, Tapestry is binding the value parameter to the type property, based on the component's
-                    id.
-                    In addition, because the property type of the property in question is an enum, a SelectModel
-                    is automatically generated.
-                </p>
-
-            </subsection>
-
-            <subsection name="Payment.java (partial)">
-
-                <source><![CDATA[                                                                   
-public class Payment
-{
-    . . .
-
-    @Property
-    @Persist
-    @Validate("required")
-    private CardType type;
-
-
-    . . .
-}]]></source>
-
-
-            </subsection>
-
-            <subsection name="Payment.properties">
-
-                <p>
-                    Once again, we need to slightly customize Tapestry's guess at the label for the enum value
-                    DINERS_CLUB.
-                    In the Radio example, we overrode the label for the dinersClub<em>component</em>. Here there is just
-                    the Select component,
-                    but we still have an option: override how the DINERS_CLUB enum value is displayed:
-                </p>
-
-                <source><![CDATA[DINERS_CLUB=Diner's Club]]></source>
-
-                <p>Tapestry looks inside a component's message catalog for entries before "humanizing" the name. In the
-                    <em>very rare</em>
-                    event that there's a naming conflict, you may qualify the enum value with its class name:
-                </p>
-
-
-                <source><![CDATA[CardType.DINERS_CLUB=Diner's Club]]></source>
-
-                <p>And, of course, all of this is case insensitive. The use of case here helps to identify how the
-                    values
-                    are to be used.
-                </p>
-            </subsection>
-
-        </section>
-        
-        <section name="Chaining of Select components">
-        	There is often a requirement for chaining Select components. When a value of a Select component is changed 
-        	another Select should become visible. Let's consider the following example: you create an online shop for a car seller.
-        	A make is modeled as enumeration CarMaker.  
-        	
-        	<subsection name="CarMaker.java">
-                <source><![CDATA[                                                                   
-public enum CarMaker
-{
-    MERCEDES, AUDI, BMW;
-}]]></source>  
-			</subsection>
-			
-			<subsection name="SelectZoneDemo.tml">
-				The Select component 'carMaker' of the page SelectZoneDemo shows all available car makers. 
-				When a user selects a car maker, another Select component for selecting available models of the make should appear.
-				This can be accomplished by the parameter <em>zone</em> of the Select component 'carMaker'. When <em>zone</em> parameter is bound 
-				every change of the Select's value causes an Ajax request. In this case the Select component publishes the event <em>valuechanged</em> which can 
-				be used to provide the <em>model</em> for the second Select component.
-       	                <source><![CDATA[                                                                   
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-   <t:form>
-      <p>
-         <t:errors />
-      </p>
-      <p>
-         <t:select t:id="carMaker" validate="required"
-                   zone="modelZone" />
-      </p>
-      
-      <t:zone t:id="modelZone" id="modelZone">
-         <t:if test="carMaker">
-           <p>
-              <t:select t:id="carModel" model="availableModels" validate="required"/>
-           </p>
-         </t:if>
-      </t:zone>
-      
-      <p>
-         <t:submit value="literal:Submit" />
-      </p>
-   </t:form>
-
-</html>]]></source>
-        </subsection>
-        
-	    <subsection name="SelectZoneDemo.java">
-        		The event handler method for the event <em>valuechanged</em> is used to provide the available car models of the currently selected car maker.
-        		The new Select's value is passed as context. 
-        	                <source><![CDATA[                                                                   
-public class SelectZoneDemo
-{
-   
-   @Inject
-   private Messages messages;
-   
-   @Property
-   @Persist
-   private CarMaker carMaker;
-   
-   @Property
-   @Persist
-   private String carModel;
-
-   @InjectComponent
-   private Zone modelZone;
-   
-   @Property
-   @Persist
-   private List<String> availableModels;
-    
-    public Object onValueChanged(CarMaker maker) 
-    {
-       availableModels = findAvailableModels(maker);
-       
-       return modelZone.getBody();
-    }
-    
-    public List<String> findAvailableModels(final CarMaker maker) 
-    {
-      switch (maker) 
-      {
-         case AUDI:
-            return Arrays.asList("A4", "A6", "A8");
-         case BMW:
-            return Arrays.asList("3 Series", "5 Series", "7 Series");
-         case MERCEDES:
-            return Arrays.asList("C-Class", "E-Class", "S-Class");
-         default:
-            return Arrays.asList();
-       }
-    }    
-}]]></source>
-
-
-<p>
-The Select component is very smart for enum types; it can automatically create a SelectModel for a given Enum, and a default
-ValueEncoder.  Likewise, it can turn an array or List into a SelectModel automatically.  This streamlines the use of the Select
-in many situations ... but because the model and encode parameters are still present, allows you to override its behavior
-when needed.
-</p>
-
-			</subsection>
-        
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Submit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Submit.java
deleted file mode 100644
index 0456ac7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Submit.java
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.SubmitMode;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Corresponds to &lt;input type="submit"&gt; or &lt;input type="image"&gt;, a client-side element that can force the
- * enclosing form to submit. The submit responsible for the form submission will post a notification that allows the
- * application to know that it was the responsible entity. The notification is named "selected" and has no context.
- */
-@SupportsInformalParameters
-@Events(EventConstants.SELECTED + " by default, may be overridden")
-public class Submit implements ClientElement
-{
-    /**
-     * If true (the default), then any notification sent by the component will be deferred until the end of the form
-     * submission (this is usually desirable). In general, this can be left as the default except when the Submit
-     * component is rendering inside a {@link Loop}, in which case defer should be bound to false (otherwise, the
-     * event context will always be the final value of the Loop).
-     */
-    @Parameter
-    private boolean defer = true;
-
-    /**
-     * The name of the event that will be triggered if this component is the cause of the form submission. The default
-     * is {@link EventConstants#SELECTED}.
-     */
-    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private String event = EventConstants.SELECTED;
-
-    /**
-     * If true, then the field will render out with a disabled attribute (to turn off client-side behavior). Further, a
-     * disabled field ignores any value in the request when the form is submitted.
-     */
-    @Parameter("false")
-    private boolean disabled;
-
-    /**
-     * The list of values that will be made available to event handler method of this component when the form is
-     * submitted.
-     * 
-     * @since 5.1.0.0
-     */
-    @Parameter
-    private Object[] context;
-
-    /**
-     * If provided, the component renders an input tag with type "image". Otherwise "submit".
-     * 
-     * @since 5.1.0.0
-     */
-    @Parameter(defaultPrefix = BindingConstants.ASSET)
-    private Asset image;
-
-    /**
-     * Defines the mode, or client-side behavior, for the submit. The default is {@link SubmitMode#NORMAL}; clicking the
-     * button submits the form with validation. {@link SubmitMode#CANCEL} indicates the client-side validation
-     * should be omitted (though server-side validation still occurs).
-     * 
-     * @since 5.2.0
-     */
-    @Parameter(allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private SubmitMode mode = SubmitMode.NORMAL;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Environmental
-    private Heartbeat heartbeat;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Request request;
-
-    @Inject
-    private JavaScriptSupport javascriptSupport;
-
-    @SuppressWarnings("unchecked")
-    @Environmental
-    private TrackableComponentEventCallback eventCallback;
-
-    private String clientId;
-
-    private static class ProcessSubmission implements ComponentAction<Submit>
-    {
-        private final String clientId, elementName;
-
-        public ProcessSubmission(String clientId, String elementName)
-        {
-            this.clientId = clientId;
-            this.elementName = elementName;
-        }
-
-        public void execute(Submit component)
-        {
-            component.processSubmission(clientId, elementName);
-        }
-    }
-
-    public Submit()
-    {
-    }
-
-    Submit(Request request)
-    {
-        this.request = request;
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        clientId = javascriptSupport.allocateClientId(resources);
-
-        String name = formSupport.allocateControlName(resources.getId());
-
-        // Save the element, to see if an id is later requested.
-
-        String type = image == null ? "submit" : "image";
-
-        writer.element("input",
-
-        "type", type,
-
-        "name", name,
-
-        "id", clientId);
-
-        if (disabled)
-            writer.attributes("disabled", "disabled");
-
-        if (image != null)
-            writer.attributes("src", image.toClientURL());
-
-        formSupport.store(this, new ProcessSubmission(clientId, name));
-
-        resources.renderInformalParameters(writer);
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-
-        if (mode == SubmitMode.CANCEL)
-            javascriptSupport.addInitializerCall("cancelButton", getClientId());
-    }
-
-    void processSubmission(String clientId, String elementName)
-    {
-        if (disabled || !selected(clientId, elementName))
-            return;
-
-        Runnable sendNotification = new Runnable()
-        {
-            public void run()
-            {
-                // TAP5-1024: allow for navigation result from the event callback
-                resources.triggerEvent(event, context, eventCallback);
-            }
-        };
-
-        // When not deferred, don't wait, fire the event now (actually, at the end of the current
-        // heartbeat). This is most likely because the Submit is inside a Loop and some contextual
-        // information will change if we defer.
-
-        if (defer)
-            formSupport.defer(sendNotification);
-        else
-            heartbeat.defer(sendNotification);
-    }
-
-    private boolean selected(String clientId, String elementName)
-    {
-        // Case #1: via JavaScript, the client id is passed up.
-
-        if (clientId.equals(request.getParameter(Form.SUBMITTING_ELEMENT_ID)))
-            return true;
-
-        // Case #2: No JavaScript, look for normal semantic (non-null value for the element's name).
-        // If configured as an image submit, look for a value for the x position. Ah, the ugliness
-        // of HTML.
-
-        String name = image == null ? elementName : elementName + ".x";
-
-        String value = request.getParameter(name);
-
-        return value != null;
-    }
-
-    /**
-     * Returns the component's client id. This must be called after the component has rendered.
-     * 
-     * @return client id for the component
-     */
-    public String getClientId()
-    {
-        return clientId;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Submit.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Submit.xdoc
deleted file mode 100644
index b63c9e2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Submit.xdoc
+++ /dev/null
@@ -1,68 +0,0 @@
-<document>
-    <body>
-        <section name="Examples">
-
-            <p>
-                The thing to remember is that the Submit component will trigger its "selected" event in the
-                <em>middle</em>
-                of the form submission, before the form triggers its "validate", "success" (or "failure") and "submit"
-                events.
-                Thus the best thing to do is to store in a temporary field what should be done inside the "success"
-                event handler.
-            </p>
-
-            <subsection name="EditUser.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-
-        <h1>Edit User</h1>
-
-        <t:form>
-
-            <t:errors/>
-
-            <t:beaneditor t:id="user"/>
-
-            <p>
-                <input type="submit" value="Update User"/>
-                <t:submit t:id="delete" value="Delete User"/>
-            </p>
-
-        </t:form>
-</html>]]></source>
-            </subsection>
-
-
-            <subsection name="EditUser.java">
-                <source><![CDATA[
-public class EditUser
-{
-    @Inject
-    private UserDAO userDAO;
-
-    @Property
-    @Persist
-    private User user;
-
-    private boolean deleteUser;
-
-    void onSelectedFromDelete() { deleteUser = true; }
-
-    Object onSuccess()
-    {
-        if (deleteUser)
-            userDAO.delete(user.getId());
-        else
-            userDAO.update(user);
-
-        return UserList.class;
-    }
-}]]></source>
-
-
-            </subsection>
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/SubmitNotifier.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/SubmitNotifier.java
deleted file mode 100644
index 961b145..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/SubmitNotifier.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * A non visual component used to provide notifications to its container during a form submission. Records actions into
- * the form on {@link org.apache.tapestry5.annotations.BeginRender} and {@link org.apache.tapestry5.annotations.AfterRender}
- * that (during the form submission) triggers "BeginSubmit" and "AfterSubmit" events.  The container can receive these
- * events to perform setup before a group of components process their submission, and perform cleanup afterwards.
- */
-@Events({ "BeginSubmit", "AfterSubmit" })
-public class SubmitNotifier
-{
-    private static final class TriggerEvent implements ComponentAction<SubmitNotifier>
-    {
-        private final String eventType;
-
-        public TriggerEvent(String eventType)
-        {
-            this.eventType = eventType;
-        }
-
-        public void execute(SubmitNotifier component)
-        {
-            component.trigger(eventType);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("SubmitNotifier.TriggerEvent[%s]", eventType);
-        }
-    }
-
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    void beginRender()
-    {
-        formSupport.store(this, new TriggerEvent("BeginSubmit"));
-    }
-
-    void afterRender()
-    {
-        formSupport.store(this, new TriggerEvent("AfterSubmit"));
-    }
-
-    private void trigger(String eventType)
-    {
-        resources.triggerEvent(eventType, null, null);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextArea.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextArea.java
deleted file mode 100644
index 860b8aa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextArea.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.corelib.base.AbstractTextField;
-
-/**
- * TextArea component corresponds to a &lt;textarea&gt; element. The value parameter is almost always bound to a string,
- * but this is not an absolute requirement.
- * <p/>
- * Includes the <code>cols</code> attribute, if a {@link org.apache.tapestry5.beaneditor.Width} annotation is present on
- * the property bound to the value parameter.
- *
- * @see org.apache.tapestry5.corelib.components.TextOutput
- */
-public class TextArea extends AbstractTextField
-{
-    private String value;
-
-    @Override
-    protected final void writeFieldTag(MarkupWriter writer, String value)
-    {
-        writer.element("textarea",
-
-                       "name", getControlName(),
-
-                       "id", getClientId(),
-
-                       "cols", getWidth());
-
-        // Save until needed in after()
-
-        this.value = value;
-    }
-
-    final void afterRender(MarkupWriter writer)
-    {
-        // TextArea will not have a template.
-
-        if (value != null) writer.write(value);
-
-        writer.end(); // textarea
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextArea.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextArea.xdoc
deleted file mode 100644
index f7232be..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextArea.xdoc
+++ /dev/null
@@ -1,26 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="TextOutput.html">TextOutput</a>
-                </li>
-                <li>
-                    <a href="TextField.html">TextField</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Notes">
-
-            <p>
-                The TextArea component accepts informal parameters, which can be used to set the standard
-                rows and cols attributes.
-            </p>
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextField.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextField.java
deleted file mode 100644
index b175e6e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextField.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.corelib.base.AbstractTextField;
-
-/**
- * TextField component corresponds to &lt;input type="text"&gt; element. The value parameter will be editted. TextField
- * is generally used with string values, but other values are acceptible, as long as they can be freely converted back
- * and forth to strings.
- * <p/>
- * Includes the <code>size</code> attribute, if a {@link org.apache.tapestry5.beaneditor.Width} annotation is present on
- * the property bound to the value parameter.
- */
-public class TextField extends AbstractTextField
-{
-    @Override
-    protected void writeFieldTag(MarkupWriter writer, String value)
-    {
-        writer.element("input",
-
-                       "type", "text",
-
-                       "name", getControlName(),
-
-                       "id", getClientId(),
-
-                       "value", value,
-
-                       "size", getWidth());
-    }
-
-    final void afterRender(MarkupWriter writer)
-    {
-        writer.end(); // input
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextField.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextField.xdoc
deleted file mode 100644
index 72a4705..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextField.xdoc
+++ /dev/null
@@ -1,78 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="Form.html">Form</a>
-                </li>
-                <li>
-                    <a href="PasswordField.html">PasswordField</a>
-                </li>
-                <li>
-                    <a href="TextArea.html">TextArea</a>
-                </li>
-            </ul>
-        </section>
-
-        <section name="Examples">
-
-            <p>
-                Once again, we're basing the example on the order payment screen
-                from the
-                <a href="Radio.html">Radio</a>
-                examples. This time we're focusing in on
-                the text field used for entering the credit card number, and we're going to validate
-                that number using a regular expression:
-            </p>
-
-            <p>
-                <img src="textfield_ref.png"/>
-            </p>
-
-            <subsection name="Payment.tml (partial)">
-                <source><![CDATA[
-            <t:label for="cardNumber"/>:
-            <t:textfield t:id="cardNumber"  validate="required,regexp" size="20"/>]]></source>
-
-                <p>
-                    The validate parameter is used to specify validations for the field. When it is omitted,
-                    the @Validate annotation of the property is used (if present). In any case, this references
-                    two of the built-in validations: "required" and "regexp".
-                </p>
-
-                <p>
-                    This example presumes that the Payment page includes a property named "cardNumber".
-                </p>
-
-                <p>
-                    The "required" validation requires no extra configuration. On the other hand, "regexp"
-                    needs to know the regular expression to enforce ... and it should also have a
-                    user presentable message.
-                </p>
-
-            </subsection>
-
-
-            <subsection name="Payment.properties (partial)">
-                <source><![CDATA[
-cardnumber-regexp-message=Credit Card numbers consist of 16 digits
-cardnumber-regexp=\\d{4}(\\-?\\d{4}){3}]]></source>
-
-                <p>
-                    Tapestry uses the page's message catalog as a source of extra validation information.
-                    The key is the component id, the name of the validation. The value is given to the validator
-                    object ... here it's the regular expression for a credit card number (four sets of four digits,
-                    optionally seperated by dashes). The "-message" entry allows the normal error message
-                    for the validator to be overridden.
-                </p>
-            </subsection>
-
-        </section>
-
-        <section name="Notes">
-            <p>
-                These same approaches apply consistently to all form control element components.
-            </p>
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextOutput.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextOutput.java
deleted file mode 100644
index 0481d49..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextOutput.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.mixins.DiscardBody;
-
-import java.util.regex.Pattern;
-
-/**
- * Outputs paragraph oriented text, typically collected via a {@link org.apache.tapestry5.corelib.components.TextArea}
- * component.  The TextArea is split into lines, and each line it output inside its own &lt;p&gt; element.
- */
-public class TextOutput
-{
-    @Parameter(required = true)
-    private String value;
-
-    @Mixin
-    private DiscardBody discardBody;
-
-    private static final Pattern SPLIT_PATTERN = Pattern.compile("((\\r\\n)|\\r|\\n)", Pattern.MULTILINE);
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (value == null) return;
-
-        String[] lines = SPLIT_PATTERN.split(value);
-
-        for (String line : lines)
-        {
-            writer.element("p");
-
-            writer.write(line.trim());
-
-            writer.end();
-        }
-    }
-
-    void injectValue(String value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextOutput.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextOutput.xdoc
deleted file mode 100644
index 7190a81..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/TextOutput.xdoc
+++ /dev/null
@@ -1,11 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="TextArea.html">TextArea</a>
-                </li>
-            </ul>
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Trigger.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Trigger.java
deleted file mode 100644
index 8112699..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Trigger.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Triggers an arbitrary event during rendering. This is often useful to add JavaScript
- * to a page or a component (via calls to the {@link JavaScriptSupport} environmental).
- * 
- * @since 5.2.0
- */
-public class Trigger
-{
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String event;
-
-    @Inject
-    private ComponentResources resources;
-
-    String defaultEvent()
-    {
-        return this.resources.getId();
-    }
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        this.resources.triggerEvent(this.event, new Object[]
-        { writer }, null);
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Trigger.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Trigger.xdoc
deleted file mode 100644
index 4789ead..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Trigger.xdoc
+++ /dev/null
@@ -1,64 +0,0 @@
-<document>
-    <body>
-
-        <section name="Examples">
-
-            <p>
-                In this example, we are showing how to trigger an event from the template of a page. When the following page is rendered
-                the both instances of the component Trigger publish an arbitrary event. 
-            </p>
-
-            <subsection name="TriggerDemo.tml">
-                <source><![CDATA[
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <body>
-        <h1>Trigger Demo</h1>
-        
-        <p> ... </p>
-
-        <t:trigger event="addAdditionalScriptLinks"/>
-
-        <p> ... </p>
-        
-        <t:trigger event="provideAdditionalMarkup"/>
-    </body>
-</html>
-]]></source>
-
-                <p>
-                    Inside the handler method for the event <em>addAdditionalScriptLinks</em> we add a link to a JavaScript file.
-                    The handler method for the event <em>provideAdditionalMarkup</em> provides some additional markup. 
-                    The MarkupWriter is passed as the event context.
-                </p>
-
-
-            </subsection>
-
-            <subsection name="TriggerDemo.java">
-                <source><![CDATA[
-public class TriggerDemo
-{
-    
-    @Environmental
-    private JavaScriptSupport jsSupport;
-    
-    @Inject @Path("context:js/scripts.js")
-    private Asset scripts;
-    
-    public void onAddAdditionalScriptLinks()
-    {
-       jsSupport.importJavaScriptLibrary(scripts);
-    }
-    
-    public void onProvideAdditionalMarkup(MarkupWriter writer)
-    {   
-        writer.writeRaw("Hello.");
-    }
-}
-]]></source>
-            </subsection>
-
-        </section>
-
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Unless.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Unless.java
deleted file mode 100644
index 8d13a14..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Unless.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.base.AbstractConditional;
-
-/**
- * A close relative of the {@link org.apache.tapestry5.corelib.components.If} component that inverts the meaning of its
- * test.  This is easier than an If component with the negate parameter set to true.
- */
-public class Unless extends AbstractConditional
-{
-    /**
-     * If true, then the body of the If component is rendered. If false, the body is omitted.
-     */
-    @Parameter(required = true)
-    private boolean test;
-
-    /**
-     * @return test parameter inverted
-     */
-    protected boolean test()
-    {
-        return !test;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
deleted file mode 100644
index 2075bf3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.java
+++ /dev/null
@@ -1,256 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.CSSClassConstants;
-import org.apache.tapestry5.ClientBodyElement;
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.QueryParameterConstants;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.internal.ComponentActionSink;
-import org.apache.tapestry5.corelib.internal.FormSupportAdapter;
-import org.apache.tapestry5.corelib.internal.HiddenFieldPositioner;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.HiddenFieldLocationRules;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.slf4j.Logger;
-
-/**
- * A Zone is portion of the output page designed for easy dynamic updating via Ajax or other client-side effects. A
- * Zone renders out as a &lt;div&gt; element (or whatever is specified in the template) and may have content initially,
- * or may only get its content as a result of client side activity.
- * <p/>
- * Often, Zones are initially invisible, in which case the visible parameter may be set to false (it defaults to true).
- * <p/>
- * When a user clicks an {@link org.apache.tapestry5.corelib.components.ActionLink} whose zone parameter is set, the
- * corresponding client-side Tapestry.ZoneManager object is located. It will update the content of the Zone's
- * &lt;div&gt; and then invoke either a show method (if the div is not visible) or an update method (if the div is
- * visible). The show and update parameters are the <em>names</em> of functions attached to the Tapestry.ElementEffect
- * object. Likewise, a {@link org.apache.tapestry5.corelib.components.Form} component may also trigger an update of a
- * client-side Zone.
- * <p/>
- * The server side event handler can return a {@link org.apache.tapestry5.Block} or a component to render as the new
- * content on the client side. Often, re-rendering the Zone's {@linkplain #getBody() body} is useful. Multiple
- * client-side zones may be updated by returning a {@link org.apache.tapestry5.ajax.MultiZoneUpdate}.
- * <p/>
- * Renders informal parameters, adding CSS class "t-zone" and possibly, "t-invisible".
- * <p/>
- * You will often want to specify the id parameter of the Zone, in addition to it's Tapestry component id; this "locks
- * down" the client-side id, so the same value is used even in later partial renders of the page (essential if the Zone
- * is nested inside another Zone). When you specify the client-side id, it is used exactly as provided (meaning that you
- * are responsible for ensuring that there will not be an id conflict even in the face of multiple partial renders of
- * the page). Failure to provide an explicit id results in a new, and non-predictable, id being generated for each
- * partial render, which will often result in client-side failures to locate the element to update when the Zone is
- * triggered.
- * <p>
- * In some cases, you may want to know (on the server side) the client id of the zone that was updated; this is passed
- * as part of the Ajax request, as the {@link QueryParameterConstants#ZONE_ID} parameter. An example use of this would
- * be to provide new content into a Zone that updates the same Zone, when the Zone's client-side id is dynamically
- * allocated (rather than statically defined). In most cases, however, the programmer is responsible for assigning a
- * specific client-side id, via the id parameter.
- * <p/>
- * A Zone starts and stops a {@link Heartbeat} when it renders (both normally, and when re-rendering).
- * <p/>
- * After the client-side content is updated, a client-side event is fired on the zone's element. The constant
- * Tapestry.ZONE_UPDATED_EVENT can be used to listen to the event.
- */
-@SupportsInformalParameters
-public class Zone implements ClientBodyElement
-{
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that is invoked to make the Zone's
-     * &lt;div&gt; visible before being updated. If not specified, then the basic "show" method is used.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String show;
-
-    /**
-     * Name of a function on the client-side Tapestry.ElementEffect object that is invoked after the Zone's content has
-     * been updated. If not specified, then the basic "highlight" method is used, which performs a classic "yellow fade"
-     * to indicate to the user that and update has taken place.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String update;
-
-    /**
-     * The element name to render for the zone; this defaults to the element actually used in the template, or "div" if
-     * no specific element was specified.
-     */
-    @Parameter(required = true, allowNull = false, defaultPrefix = BindingConstants.LITERAL)
-    private String elementName;
-
-    /**
-     * If bound, then the id attribute of the rendered element will be this exact value. If not bound, then a unique id
-     * is generated for the element.
-     */
-    @Parameter(name = "id", defaultPrefix = BindingConstants.LITERAL)
-    private String idParameter;
-
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Environmental
-    private ClientBehaviorSupport clientBehaviorSupport;
-
-    @Inject
-    private Environment environment;
-
-    /**
-     * If true (the default) then the zone will render normally. If false, then the "t-invisible" CSS class is added,
-     * which will make the zone initially invisible.
-     */
-    @Parameter
-    private boolean visible = true;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Heartbeat heartbeat;
-
-    @Inject
-    private Logger logger;
-
-    @Inject
-    private ClientDataEncoder clientDataEncoder;
-
-    @Inject
-    private HiddenFieldLocationRules rules;
-
-    private String clientId;
-
-    private boolean insideForm;
-
-    private HiddenFieldPositioner hiddenFieldPositioner;
-
-    private ComponentActionSink actionSink;
-
-    String defaultElementName()
-    {
-        return resources.getElementName("div");
-    }
-
-    void beginRender(MarkupWriter writer)
-    {
-        clientId = resources.isBound("id") ? idParameter : javascriptSupport.allocateClientId(resources);
-
-        Element e = writer.element(elementName, "id", clientId);
-
-        resources.renderInformalParameters(writer);
-
-        e.addClassName("t-zone");
-
-        if (!visible)
-            e.addClassName(CSSClassConstants.INVISIBLE);
-
-        clientBehaviorSupport.addZone(clientId, show, update);
-
-        FormSupport existingFormSupport = environment.peek(FormSupport.class);
-
-        insideForm = existingFormSupport != null;
-
-        if (insideForm)
-        {
-            hiddenFieldPositioner = new HiddenFieldPositioner(writer, rules);
-
-            actionSink = new ComponentActionSink(logger, clientDataEncoder);
-
-            environment.push(FormSupport.class, new FormSupportAdapter(existingFormSupport)
-            {
-                @Override
-                public <T> void store(T component, ComponentAction<T> action)
-                {
-                    actionSink.store(component, action);
-                }
-
-                @Override
-                public <T> void storeAndExecute(T component, ComponentAction<T> action)
-                {
-                    store(component, action);
-
-                    action.execute(component);
-                }
-
-            });
-        }
-
-        heartbeat.begin();
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        heartbeat.end();
-
-        if (insideForm)
-        {
-            environment.pop(FormSupport.class);
-
-            if (actionSink.isEmpty())
-            {
-                hiddenFieldPositioner.discard();
-            }
-            else
-            {
-                hiddenFieldPositioner.getElement().attributes("type", "hidden",
-
-                "name", Form.FORM_DATA,
-
-                "value", actionSink.getClientData());
-            }
-        }
-
-        writer.end(); // div
-    }
-
-    /**
-     * The client id of the Zone; this is set when the Zone renders and will either be the value bound to the id
-     * parameter, or an allocated unique id. When the id parameter is bound, this value is always accurate.
-     * When the id parameter is not bound, the clientId is set during the {@linkplain BeginRender begin render phase}
-     * and will be null or inaccurate before then.
-     * 
-     * @return client-side element id
-     */
-    public String getClientId()
-    {
-        if (resources.isBound("id"))
-            return idParameter;
-
-        return clientId;
-    }
-
-    /**
-     * Returns the zone's body (the content enclosed by its start and end tags). This is often used as part of an Ajax
-     * partial page render to update the client with a fresh render of the content inside the zone.
-     * 
-     * @return the zone's body as a Block
-     */
-    public Block getBody()
-    {
-        return resources.getBody();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.xdoc
deleted file mode 100644
index 5c89fcc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/Zone.xdoc
+++ /dev/null
@@ -1,79 +0,0 @@
-<document>
-    <body>
-        <section name="Related Components">
-            <ul>
-                <li>
-                    <a href="AjaxFormLoop.html">AjaxFormLoop</a>
-                </li>
-                <li>
-                    <a href="FormFragment.html">FormFragment</a>
-                </li>
-            </ul>
-        </section>
-        <section name="Examples">
-
-            <subsection name="ZoneDemo.tml (partial)">
-
-                <source><![CDATA[
-<t:zone t:id="counterZone" id="counterZone">
-  <p>You have clicked the link <strong>${clickCount}</strong> times.</p>
-</t:zone>
-
-<p>
-<t:actionlink t:id="clicker" zone="counterZone">increment the count</t:actionlink>
-</p>
-
-]]></source>
-
-                <p>It's pretty standard to bind the id parameter of a zone; the zone parameter of ActionLink
-                    and Form are the<em>client-side element id</em>, not the component id. They are often,
-                    but not always, the same. Binding the id parameter ensures that a particular, fixed value
-                    is used.
-                </p>
-
-                <p>
-                    Binding the zone parameter of the ActionLink, EventLink or Form (the "trigger"
-                    component) is what triggers the partial-render and update logic.
-                </p>
-
-            </subsection>
-
-            <subsection name="ZoneDemo.java">
-                <source><![CDATA[
-public class ZoneDemo
-{
-  @Property
-  @Persist
-  private int clickCount;
-
-  @InjectComponent
-  private Zone counterZone;
-
-  Object onActionFromClicker()
-  {
-    clickCount++;
-
-    return counterZone.getBody();
-  }
-}
-]]></source>
-
-                <p>
-                    The event handler method for the clicker component increments the count, then
-                    returns the body of the zone. The body will be re-rendered (reflecting the new count),
-                    and sent to the client, which will update the zone in place, and trigger and animation
-                    (by default, a simple yellow fade) to draw the user's attention.
-                </p>
-
-                <p>
-                    Not shown here, but fully valid, is to include JavaScript libraries and generate
-                    initialization JavaScript. This fully consistent with ordinary full-page renders.
-                </p>
-
-
-            </subsection>
-
-
-        </section>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ajaxformloop.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ajaxformloop.png
deleted file mode 100644
index 310fee4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/ajaxformloop.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beandisplay_ref.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beandisplay_ref.png
deleted file mode 100644
index d9e4f91..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beandisplay_ref.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_customized.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_customized.png
deleted file mode 100644
index 38ddfe0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_customized.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_simple.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_simple.png
deleted file mode 100644
index ce5ce46..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_simple.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_validation1.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_validation1.png
deleted file mode 100644
index 5ee3635..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_validation1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_validation2.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_validation2.png
deleted file mode 100644
index bae11c3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/beaneditform_ref_validation2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/datefield_ref1.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/datefield_ref1.png
deleted file mode 100644
index 74667a6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/datefield_ref1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/datefield_ref2.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/datefield_ref2.png
deleted file mode 100644
index 8486daf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/datefield_ref2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/formfragment_ref_1.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/formfragment_ref_1.png
deleted file mode 100644
index 0d47fdb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/formfragment_ref_1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/formfragment_ref_2.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/formfragment_ref_2.png
deleted file mode 100644
index 966ebf0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/formfragment_ref_2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/grid_ref1.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/grid_ref1.png
deleted file mode 100644
index 593ba49..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/grid_ref1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/grid_ref2.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/grid_ref2.png
deleted file mode 100644
index 20bcc5d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/grid_ref2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/palette_ref.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/palette_ref.png
deleted file mode 100644
index b8a70be..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/palette_ref.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/radio_ref.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/radio_ref.png
deleted file mode 100644
index 52d9d9f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/radio_ref.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/select_ref1.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/select_ref1.png
deleted file mode 100644
index 9595677..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/select_ref1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/select_ref2.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/select_ref2.png
deleted file mode 100644
index a3b946e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/select_ref2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/textfield_ref.png b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/textfield_ref.png
deleted file mode 100644
index 643d985..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/components/textfield_ref.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/BlankOption.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/BlankOption.java
deleted file mode 100644
index 81ba7e5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/BlankOption.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.data;
-
-/**
- * Used with the {@link org.apache.tapestry5.corelib.components.Select} component to control whether an initial blank
- * option is supplied.  Determines the optionality of the undelrying property from the Select's {@linkplain
- * org.apache.tapestry5.FieldValidator#isRequired() validate parameter}
- */
-public enum BlankOption
-{
-    /**
-     * Always include the blank option, even if the underlying property is required.
-     */
-    ALWAYS,
-
-    /**
-     * Never include the blank option, even if the underlying property is optional.
-     */
-    NEVER,
-
-    /**
-     * The default: include the blank option if the underlying property is optional.
-     */
-    AUTO;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/GridPagerPosition.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/GridPagerPosition.java
deleted file mode 100644
index e93e2f5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/GridPagerPosition.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.data;
-
-import org.apache.tapestry5.corelib.components.Grid;
-
-/**
- * Used by the {@link Grid} component to control where the pager portion of the Grid should be displayed.
- */
-public enum GridPagerPosition
-{
-    /**
-     * Position the pager above the Grid's table.
-     */
-    TOP(true, false),
-
-    /**
-     * Position the pager below the Grid's table (this is the default).
-     */
-    BOTTOM(false, true),
-
-    /**
-     * Show the pager above and below the Grid's table.
-     */
-    BOTH(true, true),
-
-    /**
-     * Don't show a pager (the application will need to supply its own navigation mechanism).
-     */
-    NONE(false, false);
-
-    private final boolean matchTop;
-
-    private final boolean matchBottom;
-
-    private GridPagerPosition(boolean matchTop, boolean matchBottom)
-    {
-        this.matchTop = matchTop;
-        this.matchBottom = matchBottom;
-    }
-
-    public boolean isMatchBottom()
-    {
-        return matchBottom;
-    }
-
-    public boolean isMatchTop()
-    {
-        return matchTop;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/InsertPosition.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/InsertPosition.java
deleted file mode 100644
index 0983962..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/data/InsertPosition.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.data;
-
-public enum InsertPosition
-{
-    /**
-     * Insert the new content above (i.e., before) the insertion position.
-     */
-    ABOVE,
-
-    /**
-     * Insert the new context below (i.e., after) the insertion position.
-     */
-    BELOW;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/AjaxFormLoopContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/AjaxFormLoopContext.java
deleted file mode 100644
index 33768d1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/AjaxFormLoopContext.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Interface that allows an enclosing {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} to work with enclosed
- * components such as {@link org.apache.tapestry5.corelib.components.AddRowLink} or
- * {@link org.apache.tapestry5.corelib.components.RemoveRowLink}.
- */
-public interface AjaxFormLoopContext
-{
-    /**
-     * Adds a clientId to the list of client-side elements that trigger the addition of a new row.
-     * 
-     * @param clientId
-     *            unique id (typically via
-     *            {@link JavaScriptSupport#allocateClientId(org.apache.tapestry5.ComponentResources)})
-     */
-    void addAddRowTrigger(String clientId);
-
-    /**
-     * Used by {@link org.apache.tapestry5.corelib.components.RemoveRowLink} to
-     * 
-     * @param clientId
-     */
-    void addRemoveRowTrigger(String clientId);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java
deleted file mode 100644
index 304c243..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/ComponentActionSink.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ClientDataSink;
-import org.slf4j.Logger;
-
-/**
- * Used to collection component actions, with the ultimate goal being the creation of a MIME-encoded string of the
- * serialization of those actions.
- */
-public class ComponentActionSink
-{
-    private final Logger logger;
-
-    private final ObjectOutputStream stream;
-
-    private final ClientDataSink sink;
-
-    private boolean empty = true;
-
-    public ComponentActionSink(Logger logger, ClientDataEncoder encoder)
-    {
-        this.logger = logger;
-
-        sink = encoder.createSink();
-
-        stream = sink.getObjectOutputStream();
-    }
-
-    public <T> void store(T component, ComponentAction<T> action)
-    {
-        Component castComponent = (Component) component;
-        assert action != null;
-
-        String completeId = castComponent.getComponentResources().getCompleteId();
-
-        logger.debug("Storing action: {} {}", completeId, action);
-
-        try
-        {
-            // Writing the complete id is not very efficient, but the GZip filter
-            // should help out there.
-            stream.writeUTF(completeId);
-            stream.writeObject(action);
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(InternalMessages.componentActionNotSerializable(completeId, ex), ex);
-        }
-
-        empty = false;
-    }
-
-    /** @since 5.2.0 */
-    public boolean isEmpty()
-    {
-        return empty;
-    }
-
-    public String getClientData()
-    {
-        return sink.getClientData();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportAdapter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportAdapter.java
deleted file mode 100644
index add313c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportAdapter.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * An implementation of {@link org.apache.tapestry5.services.FormSupport} that delegates all behavior to another
- * instance of FormSupport. This allows some of the behavior to be overridden easily.
- */
-public class FormSupportAdapter implements FormSupport
-{
-    private final FormSupport delegate;
-
-    public FormSupportAdapter(FormSupport delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    public String allocateControlName(String id)
-    {
-        return delegate.allocateControlName(id);
-    }
-
-    public <T> void store(T component, ComponentAction<T> action)
-    {
-        delegate.store(component, action);
-    }
-
-    public <T> void storeAndExecute(T component, ComponentAction<T> action)
-    {
-        delegate.storeAndExecute(component, action);
-    }
-
-    public void defer(Runnable command)
-    {
-        delegate.defer(command);
-    }
-
-    public void setEncodingType(String encodingType)
-    {
-        delegate.setEncodingType(encodingType);
-    }
-
-    public void addValidation(Field field, String validationName, String message, Object constraint)
-    {
-        delegate.addValidation(field, validationName, message, constraint);
-    }
-
-    public String getClientId()
-    {
-        return delegate.getClientId();
-    }
-
-    public boolean isClientValidationEnabled()
-    {
-        return delegate.isClientValidationEnabled();
-    }
-
-    public String getFormComponentId()
-    {
-        return delegate.getFormComponentId();
-    }
-
-    public String getFormValidationId()
-    {
-        return delegate.getFormValidationId();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java
deleted file mode 100644
index caad37f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/FormSupportImpl.java
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import java.util.List;
-
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-
-/**
- * Provides support to components enclosed by a form when the form is rendering (allowing the components to registry
- * form submit callback commands), and also during form submission time.
- * <p/>
- * TODO: Most methods should only be invokable depending on whether the form is rendering or processing a submission.
- */
-public class FormSupportImpl implements InternalFormSupport, Locatable
-{
-    private final ComponentResources resources;
-
-    private final ClientBehaviorSupport clientBehaviorSupport;
-
-    private final boolean clientValidationEnabled;
-
-    private final IdAllocator idAllocator;
-
-    private final String clientId;
-
-    private final ComponentActionSink actionSink;
-
-    private final String formValidationId;
-
-    private List<Runnable> commands;
-
-    private String encodingType;
-
-    /**
-     * Constructor used when processing a form submission.
-     */
-    public FormSupportImpl(ComponentResources resources, String formValidationId)
-    {
-        this(resources, null, null, null, false, null, formValidationId);
-    }
-
-    /**
-     * Full constructor (specifically constructor for render time).
-     */
-    public FormSupportImpl(ComponentResources resources, String clientId, ComponentActionSink actionSink,
-            ClientBehaviorSupport clientBehaviorSupport, boolean clientValidationEnabled, IdAllocator idAllocator,
-            String formValidationId)
-    {
-        this.resources = resources;
-        this.clientId = clientId;
-        this.actionSink = actionSink;
-        this.clientBehaviorSupport = clientBehaviorSupport;
-        this.clientValidationEnabled = clientValidationEnabled;
-        this.idAllocator = idAllocator;
-        this.formValidationId = formValidationId;
-    }
-
-    public Location getLocation()
-    {
-        return resources.getLocation();
-    }
-
-    public String getFormComponentId()
-    {
-        return resources.getCompleteId();
-    }
-
-    public String allocateControlName(String id)
-    {
-        return idAllocator.allocateId(id);
-    }
-
-    public <T> void store(T component, ComponentAction<T> action)
-    {
-        actionSink.store(component, action);
-    }
-
-    public <T> void storeAndExecute(T component, ComponentAction<T> action)
-    {
-        actionSink.store(component, action);
-
-        action.execute(component);
-    }
-
-    public void defer(Runnable command)
-    {
-        assert command != null;
-
-        if (commands == null)
-            commands = CollectionFactory.newList();
-
-        commands.add(command);
-    }
-
-    public void executeDeferred()
-    {
-        if (commands == null)
-            return;
-
-        for (Runnable r : commands)
-            r.run();
-
-        commands.clear();
-    }
-
-    public String getClientId()
-    {
-        return clientId;
-    }
-
-    public String getEncodingType()
-    {
-        return encodingType;
-    }
-
-    public void setEncodingType(String encodingType)
-    {
-        assert InternalUtils.isNonBlank(encodingType);
-
-        if (this.encodingType != null && !this.encodingType.equals(encodingType))
-            throw new IllegalStateException(InternalMessages.conflictingEncodingType(this.encodingType, encodingType));
-
-        this.encodingType = encodingType;
-    }
-
-    public void addValidation(Field field, String validationName, String message, Object constraint)
-    {
-        if (clientValidationEnabled)
-            clientBehaviorSupport.addValidation(field, validationName, message, constraint);
-    }
-
-    public boolean isClientValidationEnabled()
-    {
-        return clientValidationEnabled;
-    }
-
-    public String getFormValidationId()
-    {
-        return formValidationId;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/HiddenFieldPositioner.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/HiddenFieldPositioner.java
deleted file mode 100644
index f236850..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/HiddenFieldPositioner.java
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.MarkupWriterListener;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.services.HiddenFieldLocationRules;
-
-/**
- * Used to position a hidden field (as part of a form-related component). Hidden fields are not allowed to go just
- * anywhere, there are rules, dictated by the (X)HTML schema, about where they are allowed. We use the
- * {@link org.apache.tapestry5.MarkupWriterListener} interface to monitor elements as they are started and ended to find
- * a
- * place to put content.
- */
-public class HiddenFieldPositioner
-{
-    /**
-     * The type of element to create.
-     */
-    private static final String ELEMENT = "input";
-
-    private final MarkupWriter writer;
-
-    private final HiddenFieldLocationRules rules;
-
-    private final OneShotLock lock = new OneShotLock();
-
-    private Element hiddenFieldElement;
-
-    private final MarkupWriterListener listener = new MarkupWriterListener()
-    {
-        public void elementDidStart(Element element)
-        {
-            if (rules.placeHiddenFieldInside(element))
-            {
-                hiddenFieldElement = element.element(ELEMENT);
-                writer.removeListener(this);
-            }
-        }
-
-        public void elementDidEnd(Element element)
-        {
-            if (rules.placeHiddenFieldAfter(element))
-            {
-                hiddenFieldElement = element.getContainer().element(ELEMENT);
-                writer.removeListener(this);
-            }
-        }
-    };
-
-    public HiddenFieldPositioner(MarkupWriter writer, HiddenFieldLocationRules rules)
-    {
-        this.writer = writer;
-        this.rules = rules;
-
-        this.writer.addListener(listener);
-    }
-
-    /**
-     * Returns the hidden field element, which can have its attributes filled in.
-     * 
-     * @return the element
-     * @throws IllegalStateException
-     *             if the element was not positioned
-     */
-    public Element getElement()
-    {
-        lock.lock();
-
-        // Remove the listener if it hasn't been removed already.
-
-        writer.removeListener(listener);
-
-        if (hiddenFieldElement == null)
-            throw new IllegalStateException(
-                    "The rendered content did not include any elements that allow for the positioning of the hidden form field's element.");
-
-        return hiddenFieldElement;
-    }
-
-    /**
-     * Discard this positioner (an alternative to invoking {@link #getElement()}).
-     * If an {@link Element} has been created for the hidden field, that
-     * element is removed.
-     * 
-     * @since 5.2.0
-     */
-    public void discard()
-    {
-        lock.lock();
-
-        if (hiddenFieldElement != null)
-            hiddenFieldElement.remove();
-
-        writer.removeListener(listener);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/InternalFormSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/InternalFormSupport.java
deleted file mode 100644
index 53981bf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/InternalFormSupport.java
+++ /dev/null
@@ -1,36 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Additional methods for {@link org.apache.tapestry5.services.FormSupport} used internally by Tapestry.
- *
- * @see org.apache.tapestry5.corelib.components.Form
- * @see org.apache.tapestry5.corelib.components.FormInjector
- */
-public interface InternalFormSupport extends FormSupport
-{
-    /**
-     * Executes any deferred callbacks added via {@link org.apache.tapestry5.services.FormSupport#defer(Runnable)}.
-     */
-    void executeDeferred();
-
-    /**
-     * Returns the form encoding type, if one has been set via a call to {@link org.apache.tapestry5.services.FormSupport#setEncodingType(String)}.
-     */
-    String getEncodingType();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/InternalMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/InternalMessages.java
deleted file mode 100644
index 1fdf420..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/InternalMessages.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-
-public final class InternalMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(InternalMessages.class);
-
-    public static String componentActionNotSerializable(String componentId, Throwable cause)
-    {
-        return MESSAGES.format("component-action-not-serializable", componentId, cause);
-    }
-
-    public static String encloseErrorsInForm()
-    {
-        return MESSAGES.get("enclose-errors-in-form");
-    }
-
-    public static String failureInstantiatingObject(Class objectType, String componentId, Throwable cause)
-    {
-        return MESSAGES.format("failure-instantitating-object", ClassFabUtils
-                .toJavaClassName(objectType), componentId, cause);
-    }
-
-    public static String conflictingEncodingType(String existing, String conflicting)
-    {
-        return MESSAGES.format("conflicting-encoding-type", existing, conflicting);
-    }
-
-    public static String toClientShouldReturnString()
-    {
-        return MESSAGES.format("to-client-should-return-string");
-    }
-
-    public static String formFieldOutsideForm(String fieldName)
-    {
-        return MESSAGES.format("form-field-outside-form", fieldName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/WrappedComponentAction.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/WrappedComponentAction.java
deleted file mode 100644
index 8b6cfce..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/internal/WrappedComponentAction.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentSource;
-
-import java.io.Serializable;
-
-/**
- * A wrapper around a component id and a {@link org.apache.tapestry5.ComponentAction}.
- *
- * @see org.apache.tapestry5.corelib.components.FormFragment
- */
-public class WrappedComponentAction implements Serializable
-{
-    private final String componentId;
-
-    private final ComponentAction action;
-
-    public WrappedComponentAction(Component component, ComponentAction action)
-    {
-        this(component.getComponentResources().getCompleteId(), action);
-    }
-
-    /**
-     * @param componentId the component's complete id, suitable for use with {@link org.apache.tapestry5.services.ComponentSource#getComponent(String)}.
-     * @param action      the action associated with the component
-     */
-    public WrappedComponentAction(String componentId, ComponentAction action)
-    {
-        this.componentId = componentId;
-        this.action = action;
-    }
-
-    /**
-     * Retrieves the component from the source and executes the action.
-     *
-     * @param source used to re-acquire the component
-     */
-    public void execute(ComponentSource source)
-    {
-        Component component = source.getComponent(componentId);
-
-        action.execute(component);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
deleted file mode 100644
index de3e6d7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/Autocomplete.java
+++ /dev/null
@@ -1,250 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.annotations.Import;
-import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.MarkupWriterFactory;
-import org.apache.tapestry5.services.ResponseRenderer;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.util.TextStreamResponse;
-
-/**
- * A mixin for a text field that allows for autocompletion of text fields. This is based on Prototype's autocompleter
- * control.
- * <p/>
- * The mixin renders an (initially invisible) progress indicator after the field (it will also be after the error icon
- * most fields render). The progress indicator is made visible during the request to the server. The mixin then renders
- * a &lt;div&gt; that will be filled in on the client side with dynamically obtained selections.
- * <p/>
- * Multiple selection on the client is enabled by binding the tokens parameter (however, the mixin doesn't help split
- * multiple selections up on the server, that is still your code's responsibility).
- * <p/>
- * The container is responsible for providing an event handler for event "providecompletions". The context will be the
- * partial input string sent from the client. The return value should be an array or list of completions, in
- * presentation order. I.e.
- * <p/>
- * 
- * <pre>
- * String[] onProvideCompletionsFromMyField(String input)
- * {
- *   return . . .;
- * }
- * </pre>
- */
-@Import(library =
-{ "${tapestry.scriptaculous}/controls.js", "autocomplete.js" })
-@Events(EventConstants.PROVIDE_COMPLETIONS)
-public class Autocomplete
-{
-    static final String EVENT_NAME = "autocomplete";
-
-    private static final String PARAM_NAME = "t:input";
-
-    /**
-     * The field component to which this mixin is attached.
-     */
-    @InjectContainer
-    private Field field;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Environmental
-    private JavaScriptSupport jsSupport;
-
-    @Inject
-    private TypeCoercer coercer;
-
-    @Inject
-    private MarkupWriterFactory factory;
-
-    @Inject
-    @Path("${tapestry.spacer-image}")
-    private Asset spacerImage;
-
-    /**
-     * Overwrites the default minimum characters to trigger a server round trip (the default is 1).
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private int minChars;
-
-    @Inject
-    private ResponseRenderer responseRenderer;
-
-    /**
-     * Overrides the default check frequency for determining whether to send a server request. The default is .4
-     * seconds.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private double frequency;
-
-    /**
-     * If given, then the autocompleter will support multiple input values, seperated by any of the individual
-     * characters in the string.
-     */
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String tokens;
-
-    /**
-     * Mixin afterRender phrase occurs after the component itself. This is where we write the &lt;div&gt; element and
-     * the JavaScript.
-     * 
-     * @param writer
-     */
-    void afterRender(MarkupWriter writer)
-    {
-        String id = field.getClientId();
-
-        String menuId = id + ":menu";
-        String loaderId = id + ":loader";
-
-        // The spacer image is used as a placeholder, allowing CSS to determine what image
-        // is actually displayed.
-
-        writer.element("img",
-
-        "src", spacerImage.toClientURL(),
-
-        "class", "t-autoloader-icon " + CSSClassConstants.INVISIBLE,
-
-        "alt", "",
-
-        "id", loaderId);
-        writer.end();
-
-        writer.element("div",
-
-        "id", menuId,
-
-        "class", "t-autocomplete-menu");
-        writer.end();
-
-        Link link = resources.createEventLink(EVENT_NAME);
-
-        JSONObject config = new JSONObject();
-        config.put("paramName", PARAM_NAME);
-        config.put("indicator", loaderId);
-
-        if (resources.isBound("minChars"))
-            config.put("minChars", minChars);
-
-        if (resources.isBound("frequency"))
-            config.put("frequency", frequency);
-
-        if (resources.isBound("tokens"))
-        {
-            for (int i = 0; i < tokens.length(); i++)
-            {
-                config.accumulate("tokens", tokens.substring(i, i + 1));
-            }
-        }
-
-        // Let subclasses do more.
-        configure(config);
-
-        JSONObject spec = new JSONObject("elementId", id, "menuId", menuId, "url", link.toURI()).put("config",
-                config);
-
-        jsSupport.addInitializerCall("autocompleter", spec);
-    }
-
-    Object onAutocomplete(@RequestParameter(PARAM_NAME)
-    String input)
-    {
-        final Holder<List> matchesHolder = Holder.create();
-
-        // Default it to an empty list.
-
-        matchesHolder.put(Collections.emptyList());
-
-        ComponentEventCallback callback = new ComponentEventCallback()
-        {
-            public boolean handleResult(Object result)
-            {
-                List matches = coercer.coerce(result, List.class);
-
-                matchesHolder.put(matches);
-
-                return true;
-            }
-        };
-
-        resources.triggerEvent(EventConstants.PROVIDE_COMPLETIONS, new Object[]
-        { input }, callback);
-
-        ContentType contentType = responseRenderer.findContentType(this);
-
-        MarkupWriter writer = factory.newPartialMarkupWriter(contentType);
-
-        generateResponseMarkup(writer, matchesHolder.get());
-
-        return new TextStreamResponse(contentType.toString(), writer.toString());
-    }
-
-    /**
-     * Invoked to allow subclasses to further configure the parameters passed to the JavaScript Ajax.Autocompleter
-     * options. The values minChars, frequency and tokens my be pre-configured. Subclasses may override this method to
-     * configure additional features of the Ajax.Autocompleter.
-     * <p/>
-     * <p/>
-     * This implementation does nothing.
-     * 
-     * @param config
-     *            parameters object
-     */
-    protected void configure(JSONObject config)
-    {
-    }
-
-    /**
-     * Generates the markup response that will be returned to the client; this should be an &lt;ul&gt; element with
-     * nested &lt;li&gt; elements. Subclasses may override this to produce more involved markup (including images and
-     * CSS class attributes).
-     * 
-     * @param writer
-     *            to write the list to
-     * @param matches
-     *            list of matching objects, each should be converted to a string
-     */
-    protected void generateResponseMarkup(MarkupWriter writer, List matches)
-    {
-        writer.element("ul");
-
-        for (Object o : matches)
-        {
-            writer.element("li");
-            writer.write(o.toString());
-            writer.end();
-        }
-
-        writer.end(); // ul
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/DiscardBody.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/DiscardBody.java
deleted file mode 100644
index d5039b3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/DiscardBody.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.annotations.BeforeRenderBody;
-import org.apache.tapestry5.annotations.MixinAfter;
-
-/**
- * Discards a component's body. Returns false from the {@link BeforeRenderBody} phase, which prevents the rendering of
- * the body. Set up as a "MixinAfter" so that components can render their an alternative body if they so desire before
- * this mixin cancels the normal body (from the container's template).
- */
-@MixinAfter
-public class DiscardBody
-{
-    boolean beforeRenderBody()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/NotEmpty.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/NotEmpty.java
deleted file mode 100644
index c4a272a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/NotEmpty.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.MixinAfter;
-import org.apache.tapestry5.dom.Element;
-
-/**
- * A mixin that attaches to an element that renders an element.  At the end of the render, if the element is empty, then
- * a non-breaking space (&amp;nbsp;) is injected into the element. This is often necessary for proper rendering on the
- * client.
- * <p/>
- * Often used in conjunction with the {@link org.apache.tapestry5.corelib.components.Any} component.
- *
- * @since 5.1.0.0
- */
-@MixinAfter
-public class NotEmpty
-{
-    private Element element;
-
-    void beginRender(MarkupWriter writer)
-    {
-        element = writer.getElement();
-    }
-
-    void afterRender()
-    {
-        if (element.isEmpty())
-        {
-            element.removeChildren();
-            element.raw("&nbsp;");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderClientId.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderClientId.java
deleted file mode 100644
index 2ab2940..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderClientId.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.ClientElement;
-
-/**
- * Forces a client element to render its client id by ensuring that "getClientId" is called.
- */
-public class RenderClientId
-{
-    @InjectContainer
-    private ClientElement element;
-
-    @AfterRender
-    void ensureId()
-    {
-        element.getClientId();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderDisabled.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderDisabled.java
deleted file mode 100644
index 2974dfe..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderDisabled.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.annotations.MixinAfter;
-
-/**
- * Renders an "disabled" attribute if the containing {@link Field#isDisabled() is disabled}.
- */
-@MixinAfter
-public class RenderDisabled
-{
-    @InjectContainer
-    private Field field;
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (field.isDisabled())
-            writer.attributes("disabled", "disabled");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderInformals.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderInformals.java
deleted file mode 100644
index b899825..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderInformals.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Used to render out all informal parameters, at the end of the {@link org.apache.tapestry5.annotations.BeginRender}
- * phase.
- * <p/>
- * This mixin can be used with components that render a single tag inside the {@link BeginRender} phase. RenderInformals
- * will activate during the PostBeginRender phase to write additional attributes, from the informal parameters, into the
- * active element.
- * <p/>
- * If you want this behavior, but need to render more than a single tag, then implement render phase methods for the
- * {@link BeforeRenderTemplate} and {@link AfterRenderTemplate} phases. Use those phases to write the additional
- * elements and close them.
- * <p/>
- * This is often used as a base class, for cases where a component doesn't have other mixins.
- */
-@MixinAfter
-@SupportsInformalParameters
-public class RenderInformals
-{
-    @Inject
-    private ComponentResources resources;
-
-    void beginRender(MarkupWriter writer)
-    {
-        resources.renderInformalParameters(writer);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderNotification.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderNotification.java
deleted file mode 100644
index 784a8e9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/RenderNotification.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * This mixin triggers event notifcations to identify when it enters
- * the {@link BeginRender} and {@link AfterRender} render phases.
- * The {@link MarkupWriter} is passed as the event context. The most common use of this
- * is to handle the "afterRender" event to generate client-side JavaScript for content
- * just rendered via a {@link Block} (this is a common Ajax use case related to partial
- * page rendering).
- * 
- * @since 5.2.0
- */
-@Events(
-{ "beginRender", "afterRender" })
-public class RenderNotification
-{
-    @Inject
-    private ComponentResources resources;
-
-    void beginRender(MarkupWriter writer)
-    {
-        trigger(writer, "beginRender");
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        trigger(writer, "afterRender");
-    }
-
-    private void trigger(MarkupWriter writer, String eventName)
-    {
-        resources.triggerEvent(eventName, new Object[]
-        { writer }, null);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/TriggerFragment.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/TriggerFragment.java
deleted file mode 100644
index a297f32..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/TriggerFragment.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.mixins;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.HeartbeatDeferred;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * A mixin that can be applied to a {@link org.apache.tapestry5.corelib.components.Checkbox} or
- * {@link org.apache.tapestry5.corelib.components.Radio} component that will link the input field and a
- * {@link org.apache.tapestry5.corelib.components.FormFragment}, making the field control the client-side visibility of
- * the
- * FormFragment.
- */
-public class TriggerFragment
-{
-    @InjectContainer
-    private Field container;
-
-    /**
-     * The {@link org.apache.tapestry5.corelib.components.FormFragment} instance to make dynamically visible or hidden.
-     */
-    @Parameter(required = true, defaultPrefix = BindingConstants.COMPONENT, allowNull = false)
-    private ClientElement fragment;
-
-    /**
-     * If true then the client-side logic is inverted; the fragment is made visible when the checkbox is NOT checked.
-     * The default is false (the fragment is visible when the checkbox IS checked).
-     * 
-     * @since 5.2.0
-     */
-    @Parameter
-    private boolean invert;
-
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @HeartbeatDeferred
-    void beginRender()
-    {
-        JSONObject spec = new JSONObject("triggerId", container.getClientId(), "fragmentId", fragment.getClientId());
-        spec.put("invert", invert);
-
-        javascriptSupport.addInitializerCall("linkTriggerToFormFragment", spec);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/TriggerFragment.xdoc b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/TriggerFragment.xdoc
deleted file mode 100644
index a9aaf69..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/mixins/TriggerFragment.xdoc
+++ /dev/null
@@ -1,9 +0,0 @@
-<document>
-    <body>
-        <p>
-            See the
-            <a href="../components/FormFragment.html">FormFragment</a>
-            documentation for an example.
-        </p>
-    </body>
-</document>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
deleted file mode 100644
index 497b521..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ExceptionReport.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.pages;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.annotations.ContentType;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ExceptionReporter;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * Responsible for reporting runtime exceptions. This page is quite verbose and is usually overridden in a production
- * application. When {@link org.apache.tapestry5.SymbolConstants#PRODUCTION_MODE} is "true", it is very abbreviated.
- *
- * @see org.apache.tapestry5.corelib.components.ExceptionDisplay
- */
-@ContentType("text/html")
-public class ExceptionReport implements ExceptionReporter
-{
-    private static final String PATH_SEPARATOR_PROPERTY = "path.separator";
-
-    // Match anything ending in .(something?)path.
-
-    private static final Pattern PATH_RECOGNIZER = Pattern.compile("\\..*path$");
-
-    @Property
-    private String attributeName;
-
-    @Inject
-    @Property
-    private Request request;
-
-    @Inject
-    @Symbol(SymbolConstants.PRODUCTION_MODE)
-    @Property(write = false)
-    private boolean productionMode;
-
-    @Inject
-    @Symbol(SymbolConstants.TAPESTRY_VERSION)
-    @Property(write = false)
-    private String tapestryVersion;
-
-    @Inject
-    @Symbol(SymbolConstants.APPLICATION_VERSION)
-    @Property(write = false)
-    private String applicationVersion;
-
-    @Property(write = false)
-    private Throwable rootException;
-
-    @Property
-    private String propertyName;
-
-    private final String pathSeparator = System.getProperty(PATH_SEPARATOR_PROPERTY);
-
-    public void reportException(Throwable exception)
-    {
-        rootException = exception;
-    }
-
-    public boolean getHasSession()
-    {
-        return request.getSession(false) != null;
-    }
-
-    public Session getSession()
-    {
-        return request.getSession(false);
-    }
-
-    public Object getAttributeValue()
-    {
-        return getSession().getAttribute(attributeName);
-    }
-
-    /**
-     * Returns a <em>sorted</em> list of system property names.
-     */
-    public List<String> getSystemProperties()
-    {
-        return InternalUtils.sortedKeys(System.getProperties());
-    }
-
-    public String getPropertyValue()
-    {
-        return System.getProperty(propertyName);
-    }
-
-    public boolean isComplexProperty()
-    {
-        return PATH_RECOGNIZER.matcher(propertyName).find() && getPropertyValue().contains(pathSeparator);
-    }
-
-    public String[] getComplexPropertyValue()
-    {
-        // Neither : nor ; is a regexp character.
-
-        return getPropertyValue().split(pathSeparator);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java
deleted file mode 100644
index 487457a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.pages;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.services.PropertyOutputContext;
-
-import java.text.DateFormat;
-import java.util.Calendar;
-import java.util.Date;
-import java.util.Locale;
-
-/**
- * Contains blocks for displaying basic property types; the blocks are contributed to the
- * {@link BeanBlockSource} service.
- */
-public class PropertyDisplayBlocks
-{
-    @Environmental
-    private PropertyOutputContext context;
-
-    @Inject
-    private Locale locale;
-
-    private final DateFormat dateFormat = DateFormat.getDateInstance(DateFormat.MEDIUM, locale);
-
-    public String getConvertedEnumValue()
-    {
-        Enum value = (Enum) context.getPropertyValue();
-
-        if (value == null) return null;
-
-        return TapestryInternalUtils.getLabelForEnum(context.getMessages(), value);
-    }
-
-    public DateFormat getDateFormat()
-    {
-        return dateFormat;
-    }
-    
-    public Date getCalendarDate() 
-    {
-        Calendar calendar = (Calendar) context.getPropertyValue();
-        
-        if(calendar == null)
-            return null;
-        
-        return calendar.getTime();
-     }
-
-
-    public PropertyOutputContext getContext()
-    {
-        return context;
-    }
-
-    public Renderable getPasswordRenderer()
-    {
-        return new Renderable()
-        {
-            public void render(MarkupWriter writer)
-            {
-
-                Object value = context.getPropertyValue();
-
-                int length = value == null ? 0 : value.toString().length();
-
-                for (int i = 0; i < length; i++) writer.write("*");
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
deleted file mode 100644
index 79ee243..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.java
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.pages;
-
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.corelib.components.*;
-import org.apache.tapestry5.services.BeanBlockContribution;
-import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.services.PropertyEditContext;
-import org.apache.tapestry5.util.EnumSelectModel;
-import org.apache.tapestry5.util.EnumValueEncoder;
-
-/**
- * A page that exists to contain blocks used to edit different types of properties. The blocks on this page are
- * contributed into the {@link BeanBlockSource} service configuration.
- *
- * @see BeanBlockContribution
- * @see BeanEditForm
- */
-public class PropertyEditBlocks
-{
-    @Environmental
-    private PropertyEditContext context;
-
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label",
-                    "translate=prop:textFieldTranslator", "validate=prop:textFieldValidator",
-                    "clientId=prop:context.propertyId", "annotationProvider=context"})
-    private TextField textField;
-
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label",
-                    "translate=prop:numberFieldTranslator", "validate=prop:numberFieldValidator",
-                    "clientId=prop:context.propertyId", "annotationProvider=context"})
-    private TextField numberField;
-
-
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label", "encoder=valueEncoderForProperty",
-                    "model=selectModelForProperty", "validate=prop:selectValidator",
-                    "clientId=prop:context.propertyId"})
-    private Select select;
-
-    @SuppressWarnings("unused")
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label",
-                    "clientId=prop:context.propertyId"})
-    private Checkbox checkboxField;
-
-    @SuppressWarnings("unused")
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label", "clientId=prop:context.propertyid",
-                    "validate=prop:dateFieldValidator"})
-    private DateField dateField;
-    
-    @SuppressWarnings("unused")
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label", "clientId=prop:context.propertyid",
-                    "validate=prop:calendarFieldValidator"})
-    private DateField calendarField;
-
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label",
-                    "translate=prop:passwordFieldTranslator", "validate=prop:passwordFieldValidator",
-                    "clientId=prop:context.propertyId", "annotationProvider=context"})
-    private PasswordField passwordField;
-
-    @Component(
-            parameters = {"value=context.propertyValue", "label=prop:context.label",
-                    "translate=prop:textAreaTranslator",
-                    "validate=prop:textAreaValidator", "clientId=prop:context.propertyId",
-                    "annotationProvider=context"})
-    private TextArea textArea;
-
-
-    public PropertyEditContext getContext()
-    {
-        return context;
-    }
-
-
-    public FieldTranslator getTextFieldTranslator()
-    {
-        return context.getTranslator(textField);
-    }
-
-    public FieldValidator getTextFieldValidator()
-    {
-        return context.getValidator(textField);
-    }
-
-    public FieldTranslator getNumberFieldTranslator()
-    {
-        return context.getTranslator(numberField);
-    }
-
-    public FieldValidator getNumberFieldValidator()
-    {
-        return context.getValidator(numberField);
-    }
-
-    public FieldTranslator getPasswordFieldTranslator()
-    {
-        return context.getTranslator(passwordField);
-    }
-
-    public FieldValidator getPasswordFieldValidator()
-    {
-        return context.getValidator(passwordField);
-    }
-
-    public FieldTranslator getTextAreaTranslator()
-    {
-        return context.getTranslator(textArea);
-    }
-
-    public FieldValidator getTextAreaValidator()
-    {
-        return context.getValidator(textArea);
-    }
-
-
-    public FieldValidator getDateFieldValidator()
-    {
-        return context.getValidator(dateField);
-    }
-
-    public FieldValidator getCalendarFieldValidator()
-    {
-        return context.getValidator(calendarField);
-    }
-
-    public FieldValidator getSelectValidator()
-    {
-        return context.getValidator(select);
-    }
-
-    /**
-     * Provide a value encoder for an enum type.
-     */
-    @SuppressWarnings("unchecked")
-    public ValueEncoder getValueEncoderForProperty()
-    {
-        return new EnumValueEncoder(context.getPropertyType());
-    }
-
-    /**
-     * Provide a select mode for an enum type.
-     */
-    @SuppressWarnings("unchecked")
-    public SelectModel getSelectModelForProperty()
-    {
-        return new EnumSelectModel(context.getPropertyType(), context.getContainerMessages());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
deleted file mode 100644
index b17ced5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/corelib/pages/ServiceStatus.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.pages;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.annotations.ContentType;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.ServiceActivity;
-import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.services.BeanModelSource;
-
-import java.util.List;
-
-/**
- * Page used to see the status of all services defined by the {@link Registry}.
- * <p/>
- * TODO: Add filters to control which services are displayed
- */
-@ContentType("text/html")
-public class ServiceStatus
-{
-    @Inject
-    private ServiceActivityScoreboard scoreboard;
-
-    @Property
-    private List<ServiceActivity> activity;
-
-    @Property
-    private ServiceActivity row;
-
-    @Inject
-    private BeanModelSource source;
-
-    @Property
-    private final BeanModel model;
-
-    @Inject
-    private Messages messages;
-
-    @Property
-    @Inject
-    @Symbol(SymbolConstants.PRODUCTION_MODE)
-    private boolean productionMode;
-
-    {
-        model = source.createDisplayModel(ServiceActivity.class, messages);
-
-        model.add("serviceInterface", null);
-
-        // There's no line number information for interfaces, so we'll reorder the
-        // propreties manually.
-
-        model.reorder("serviceId", "serviceInterface", "scope", "status");
-    }
-
-    void setupRender()
-    {
-        activity = scoreboard.getServiceActivity();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java
deleted file mode 100644
index ce6831d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/AbstractMarkupModel.java
+++ /dev/null
@@ -1,147 +0,0 @@
-//  Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-public abstract class AbstractMarkupModel implements MarkupModel
-{
-    private final boolean useApostropheForAttributes;
-
-    protected AbstractMarkupModel(boolean useApostropheForAttributes)
-    {
-        this.useApostropheForAttributes = useApostropheForAttributes;
-    }
-
-    public char getAttributeQuote()
-    {
-        return useApostropheForAttributes ? '\'' : '"';
-    }
-
-    /**
-     * Passes all characters but '&lt;', '&gt;' and '&amp;' through unchanged.
-     */
-    public String encode(String content)
-    {
-        int length = content.length();
-
-        StringBuilder builder = null;
-
-        for (int i = 0; i < length; i++)
-        {
-            char ch = content.charAt(i);
-
-            switch (ch)
-            {
-                case '<':
-
-                    if (builder == null)
-                    {
-                        builder = new StringBuilder(2 * length);
-
-                        builder.append(content.substring(0, i));
-                    }
-
-                    builder.append("&lt;");
-                    continue;
-
-                case '>':
-
-                    if (builder == null)
-                    {
-                        builder = new StringBuilder(2 * length);
-
-                        builder.append(content.substring(0, i));
-                    }
-
-                    builder.append("&gt;");
-                    continue;
-
-                case '&':
-
-                    if (builder == null)
-                    {
-                        builder = new StringBuilder(2 * length);
-
-                        builder.append(content.substring(0, i));
-                    }
-
-                    builder.append("&amp;");
-                    continue;
-
-                default:
-
-                    if (builder != null)
-                        builder.append(ch);
-            }
-        }
-
-        return builder == null ? content : builder.toString();
-    }
-
-    public void encodeQuoted(String content, StringBuilder builder)
-    {
-        assert content != null;
-        int length = content.length();
-
-        for (int i = 0; i < length; i++)
-        {
-            char ch = content.charAt(i);
-
-            switch (ch)
-            {
-                case '<':
-
-                    builder.append("&lt;");
-                    continue;
-
-                case '>':
-
-                    builder.append("&gt;");
-                    continue;
-
-                case '&':
-
-                    builder.append("&amp;");
-                    continue;
-
-                case '"':
-
-                    if (!useApostropheForAttributes)
-                    {
-                        builder.append("&quot;");
-                        continue;
-                    }
-
-                    builder.append(ch);
-                    continue;
-
-                case '\'':
-
-                    if (useApostropheForAttributes)
-                    {
-                        //TAP5-714
-                        builder.append("&#39;");
-                        continue;
-                    }
-
-
-                    // Fall through
-
-                default:
-
-                    builder.append(ch);
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Attribute.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Attribute.java
deleted file mode 100644
index 18db8c6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Attribute.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-
-import java.util.Map;
-
-/**
- * An attribute within an {@link org.apache.tapestry5.dom.Element}. Each attribute has a namespace URI, a local name
- * within the namespace, and a value.
- *
- * @since 5.1.0.2
- */
-public class Attribute
-{
-    private final Element element;
-
-    private final String namespace;
-
-    private final String name;
-
-    String value;
-
-    Attribute nextAttribute;
-
-    Attribute(Element element, String namespace, String name, String value, Attribute nextAttribute)
-    {
-        this.element = element;
-        this.namespace = namespace;
-        this.name = name;
-        this.value = value;
-        this.nextAttribute = nextAttribute;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public String getNamespace()
-    {
-        return namespace;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    void render(MarkupModel model, StringBuilder builder, Map<String, String> namespaceURIToPrefix)
-    {
-        builder.append(" ");
-        builder.append(element.toPrefixedName(namespaceURIToPrefix, namespace, name));
-        builder.append("=");
-        builder.append(model.getAttributeQuote());
-        model.encodeQuoted(value, builder);
-        builder.append(model.getAttributeQuote());
-    }
-
-    boolean matches(String namespace, String name)
-    {
-        return TapestryInternalUtils.isEqual(this.namespace, namespace) &&
-                this.name.equalsIgnoreCase(name);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/CData.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/CData.java
deleted file mode 100644
index 24ac3cf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/CData.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Map;
-
-/**
- * A node that stores parsed character content (CDATA).  For XML documents (as per {@link MarkupModel#isXML()}, this
- * will be writtens as a CDATA section. For non-XML documents, the content is filtered as it is written out.
- */
-public class CData extends Node
-{
-    private final String content;
-
-    public CData(Element container, String content)
-    {
-        super(container);
-
-        this.content = content;
-    }
-
-    @Override
-    void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
-    {
-        MarkupModel model = document.getMarkupModel();
-
-        if (model.isXML())
-        {
-            writer.print("<![CDATA[");
-            writer.print(content);
-            writer.print("]]>");
-            return;
-        }
-
-        // CDATA not supported, so write it normally, with entities escaped.
-
-        writer.print(model.encode(content));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Comment.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Comment.java
deleted file mode 100644
index 2e74fe6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Comment.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Map;
-
-/**
- * A node that represents a comment within the DOM.
- */
-public final class Comment extends Node
-{
-    private final String comment;
-
-    Comment(Element container, String comment)
-    {
-        super(container);
-
-        this.comment = comment;
-    }
-
-    @Override
-    void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
-    {
-        writer.print("<!--");
-        writer.print(comment);
-        writer.print("-->");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/DTD.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/DTD.java
deleted file mode 100644
index 72b246e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/DTD.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-
-/**
- * Representation of a document type. Note that technically, a Doctype isn't a node in an xml document; hence this
- * doesn't extend node.
- */
-public class DTD
-{
-    private final String name;
-
-    private final String publicId;
-
-    private final String systemId;
-
-    public DTD(String name, String publicId, String systemId)
-    {
-        this.name = name;
-        this.publicId = publicId;
-        this.systemId = systemId;
-    }
-
-    public void toMarkup(PrintWriter writer)
-    {
-        if (publicId != null)
-        {
-            if (systemId != null)
-            {
-                writer.printf("<!DOCTYPE %s PUBLIC \"%s\" \"%s\">", name, publicId, systemId);
-            }
-            else
-            {
-                writer.printf("<!DOCTYPE %s PUBLIC \"%s\">", name, publicId);
-            }
-        }
-        else if (systemId != null)
-        {
-            writer.printf("<!DOCTYPE %s SYSTEM \"%s\">", name, systemId);
-        }
-        else
-        {
-            writer.printf("<!DOCTYPE %s>", name);
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java
deleted file mode 100644
index e21b370..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/DefaultMarkupModel.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Set;
-
-/**
- * Default implementation of {@link org.apache.tapestry5.dom.MarkupModel} that is appropriate for traditional (X)HTML
- * markup. Assumes that all tags are lower-case.  The majority of elements will be "expanded" (meaning a complete start
- * and end tag); this is for compatibility with web browsers, especially when the content type of a response indicates
- * HTML, not true XML. Only the "hr" and "br" and "img" tags will be rendered abbreviated (i.e., "lt;img/&gt;").
- */
-public class DefaultMarkupModel extends AbstractMarkupModel
-{
-    private final Set<String> ALWAYS_EMPTY = CollectionFactory.newSet("hr", "br", "img");
-
-    public DefaultMarkupModel()
-    {
-        this(false);
-    }
-
-    public DefaultMarkupModel(boolean useApostropheForAttributes)
-    {
-        super(useApostropheForAttributes);
-    }
-
-    public EndTagStyle getEndTagStyle(String element)
-    {
-        boolean alwaysEmpty = ALWAYS_EMPTY.contains(element);
-
-        return alwaysEmpty ? EndTagStyle.ABBREVIATE : EndTagStyle.REQUIRE;
-    }
-
-    /**
-     * Returns false.
-     */
-    public boolean isXML()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java
deleted file mode 100644
index cbeaea5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Document.java
+++ /dev/null
@@ -1,272 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * The root node of a DOM.
- */
-public final class Document extends Node
-{
-    /**
-     * XML Namespace URI. May be bound to the "xml" but must not be bound to any other prefix.
-     */
-    public static final String XML_NAMESPACE_URI = "http://www.w3.org/XML/1998/namespace";
-
-    /**
-     * Namespace used exclusively for defining namespaces.
-     */
-    public static final String XMLNS_NAMESPACE_URI = "http://www.w3.org/2000/xmlns/";
-
-    private Element rootElement;
-
-    private DTD dtd;
-
-    private final MarkupModel model;
-
-    private final String encoding;
-
-    /**
-     * Non-element content that comes between the DOCTYPE and the root element.
-     */
-    private List<Node> preamble;
-
-    public Document(MarkupModel model)
-    {
-        this(model, null);
-    }
-
-    public Document(MarkupModel model, String encoding)
-    {
-        super(null);
-
-        assert model != null;
-
-        this.model = model;
-        this.encoding = encoding;
-    }
-
-    @Override
-    public Document getDocument()
-    {
-        return this;
-    }
-
-    /**
-     * Finds an element based on a path of element names.
-     * 
-     * @param path
-     *            slash separated series of element names
-     * @return the matching element, or null if not found
-     * @see Element#find(String)
-     */
-    public Element find(String path)
-    {
-        assert InternalUtils.isNonBlank(path);
-
-        if (rootElement == null)
-            return null;
-
-        int slashx = path.indexOf("/");
-
-        String rootElementName = slashx < 0 ? path : path.substring(0, slashx);
-
-        if (!rootElement.getName().equals(rootElementName))
-            return null;
-
-        return slashx < 0 ? rootElement : rootElement.find(path.substring(slashx + 1));
-    }
-
-    /**
-     * Builds with an instance of {@link DefaultMarkupModel}.
-     */
-    public Document()
-    {
-        this(new DefaultMarkupModel());
-    }
-
-    public MarkupModel getMarkupModel()
-    {
-        return model;
-    }
-
-    /**
-     * Creates the root element for this document, replacing any previous root element.
-     */
-    public Element newRootElement(String name)
-    {
-        rootElement = new Element(this, null, name);
-
-        return rootElement;
-    }
-
-    /**
-     * Creates a new root element within a namespace.
-     * 
-     * @param namespace
-     *            URI of namespace containing the element
-     * @param name
-     *            name of element with namespace
-     * @return the root element
-     */
-    public Element newRootElement(String namespace, String name)
-    {
-        rootElement = new Element(this, namespace, name);
-
-        return rootElement;
-    }
-
-    @Override
-    public void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
-    {
-        if (model.isXML())
-        {
-            writer.print("<?xml version=\"1.0\"");
-
-            if (encoding != null)
-                writer.printf(" encoding=\"%s\"", encoding);
-
-            writer.print("?>\n");
-        }
-        if (dtd != null)
-        {
-            dtd.toMarkup(writer);
-        }
-
-        if (preamble != null)
-        {
-            for (Node n : preamble)
-                n.toMarkup(this, writer, namespaceURIToPrefix);
-        }
-
-        if (rootElement == null)
-            return;
-
-        Map<String, String> initialNamespaceMap = CollectionFactory.newMap();
-
-        initialNamespaceMap.put("xml", "http://www.w3.org/XML/1998/namespace");
-        initialNamespaceMap.put("xmlns", "http://www.w3.org/2000/xmlns/");
-
-        rootElement.toMarkup(document, writer, initialNamespaceMap);
-    }
-
-    public Element getRootElement()
-    {
-        return rootElement;
-    }
-
-    /**
-     * Tries to find an element in this document whose id is specified.
-     * 
-     * @param id
-     *            the value of the id attribute of the element being looked for
-     * @return the element if found. null if not found.
-     */
-    public Element getElementById(String id)
-    {
-        return rootElement.getElementById(id);
-    }
-
-    public void dtd(String name, String publicId, String systemId)
-    {
-        dtd = new DTD(name, publicId, systemId);
-    }
-
-    @Override
-    protected Map<String, String> getNamespaceURIToPrefix()
-    {
-        if (rootElement == null) { return Collections.emptyMap(); }
-
-        return rootElement.getNamespaceURIToPrefix();
-    }
-
-    /**
-     * Visits the root element of the document.
-     * 
-     * @param visitor
-     *            callback
-     * @since 5.1.0.0
-     */
-    void visit(Visitor visitor)
-    {
-        rootElement.visit(visitor);
-    }
-
-    private <T extends Node> T newChild(T child)
-    {
-        if (preamble == null)
-            preamble = CollectionFactory.newList();
-
-        preamble.add(child);
-
-        return child;
-    }
-
-    /**
-     * Adds the comment and returns this document for further construction.
-     * 
-     * @since 5.1.0.0
-     */
-    public Document comment(String text)
-    {
-        newChild(new Comment(null, text));
-
-        return this;
-    }
-
-    /**
-     * Adds the raw text and returns this document for further construction.
-     * 
-     * @since 5.1.0.0
-     */
-    public Document raw(String text)
-    {
-        newChild(new Raw(null, text));
-
-        return this;
-    }
-
-    /**
-     * Adds and returns a new text node (the text node is returned so that {@link Text#write(String)} or [@link
-     * {@link Text#writef(String, Object[])} may be invoked.
-     * 
-     * @param text
-     *            initial text for the node
-     * @return the new Text node
-     */
-    public Text text(String text)
-    {
-        return newChild(new Text(null, text));
-    }
-
-    /**
-     * Adds and returns a new CDATA node.
-     * 
-     * @param content
-     *            the content to be rendered by the node
-     * @return the newly created node
-     */
-    public CData cdata(String content)
-    {
-        return newChild(new CData(null, content));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java
deleted file mode 100644
index 5fa3cf2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Element.java
+++ /dev/null
@@ -1,1024 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.util.PrintOutCollector;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.Stack;
-
-/**
- * An element that will render with a begin tag and attributes, a body, and an end tag. Also acts as a factory for
- * enclosed Element, Text and Comment nodes.
- * <p/>
- * TODO: Support for CDATA nodes. Do we need Entity nodes?
- */
-public final class Element extends Node
-{
-
-    private final String name;
-
-    private Node firstChild;
-
-    private Node lastChild;
-
-    private Attribute firstAttribute;
-
-    private final Document document;
-
-    private static final String CLASS_ATTRIBUTE = "class";
-
-    /**
-     * URI of the namespace which contains the element.  A quirk in XML is that the element may be in a namespace it
-     * defines itself, so resolving the namespace to a prefix must wait until render time (since the Element is created
-     * before the namespaces for it are defined).
-     */
-    private final String namespace;
-
-    private Map<String, String> namespaceToPrefix;
-
-    /**
-     * Constructor for a root element.
-     */
-    Element(Document container, String namespace, String name)
-    {
-        super(null);
-
-        document = container;
-        this.namespace = namespace;
-        this.name = name;
-    }
-
-    /**
-     * Constructor for a nested element.
-     */
-    Element(Element parent, String namespace, String name)
-    {
-        super(parent);
-
-        this.namespace = namespace;
-        this.name = name;
-
-        document = null;
-    }
-
-    @Override
-    public Document getDocument()
-    {
-        return document != null ? document : super.getDocument();
-    }
-
-    /**
-     * Returns the containing element for this element. This will be null for the root element of a document.
-     *
-     * @deprecated since 5.1.0.1, use {@link Node#getContainer()} instead
-     */
-    public Element getParent()
-    {
-        return container;
-    }
-
-    /**
-     * Adds an attribute to the element, but only if the attribute name does not already exist.
-     *
-     * @param name  the name of the attribute to add
-     * @param value the value for the attribute. A value of null is allowed, and no attribute will be added to the
-     *              element.
-     */
-    public Element attribute(String name, String value)
-    {
-        return attribute(null, name, value);
-    }
-
-    /**
-     * Adds a namespaced attribute to the element, but only if the attribute name does not already exist.
-     *
-     * @param namespace the namespace to contain the attribute, or null
-     * @param name      the name of the attribute to add
-     * @param value     the value for the attribute. A value of null is allowed, and no attribute will be added to the
-     *                  element.
-     */
-    public Element attribute(String namespace, String name, String value)
-    {
-        assert InternalUtils.isNonBlank(name);
-        updateAttribute(namespace, name, value, false);
-
-        return this;
-    }
-
-    private void updateAttribute(String namespace, String name, String value, boolean force)
-    {
-        if (!force && value == null) return;
-
-        Attribute prior = null;
-        Attribute cursor = firstAttribute;
-
-        while (cursor != null)
-        {
-            if (cursor.matches(namespace, name))
-            {
-                if (!force) return;
-
-                if (value != null)
-                {
-                    cursor.value = value;
-                    return;
-                }
-
-                // Remove this Attribute node from the linked list
-
-                if (prior == null)
-                    firstAttribute = cursor.nextAttribute;
-                else
-                    prior.nextAttribute = cursor.nextAttribute;
-
-                return;
-            }
-
-            prior = cursor;
-            cursor = cursor.nextAttribute;
-        }
-
-        //  Don't add a Attribute if the value is null.
-
-        if (value == null) return;
-
-        firstAttribute = new Attribute(this, namespace, name, value, firstAttribute);
-    }
-
-
-    /**
-     * Convenience for invoking {@link #attribute(String, String)} multiple times.
-     *
-     * @param namesAndValues alternating attribute names and attribute values
-     */
-    public Element attributes(String... namesAndValues)
-    {
-        int i = 0;
-        while (i < namesAndValues.length)
-        {
-            String name = namesAndValues[i++];
-            String value = namesAndValues[i++];
-
-            attribute(name, value);
-        }
-
-        return this;
-    }
-
-    /**
-     * Forces changes to a number of attributes. The new attributes <em>overwrite</em> previous values. Overriding an
-     * attribute's value to null will remove the attribute entirely.
-     *
-     * @param namesAndValues alternating attribute names and attribute values
-     * @return this element
-     */
-    public Element forceAttributes(String... namesAndValues)
-    {
-        return forceAttributesNS(null, namesAndValues);
-    }
-
-    /**
-     * Forces changes to a number of attributes in the global namespace. The new attributes <em>overwrite</em> previous
-     * values. Overriding attribute's value to null will remove the attribute entirely.
-     * TAP5-708: don't use element namespace for attributes
-     *
-     * @param namespace the namespace or null
-     * @param namesAndValues alternating attribute name and value
-     * @return this element
-     *
-     */
-    public Element forceAttributesNS(String namespace, String... namesAndValues)
-    {
-        int i = 0;
-
-        while (i < namesAndValues.length)
-        {
-            String name = namesAndValues[i++];
-            String value = namesAndValues[i++];
-
-            updateAttribute(namespace, name, value, true);
-        }
-
-        return this;
-    }
-
-    /**
-     * Creates and returns a new Element node as a child of this node.
-     *
-     * @param name           the name of the element to create
-     * @param namesAndValues alternating attribute names and attribute values
-     */
-    public Element element(String name, String... namesAndValues)
-    {
-        assert InternalUtils.isNonBlank(name);
-        Element child = newChild(new Element(this, null, name));
-
-        child.attributes(namesAndValues);
-
-        return child;
-    }
-
-    /**
-     * Creates and returns a new Element within a namespace as a child of this node.
-     *
-     * @param namespace namespace to contain the element, or null
-     * @param name      element name to create within the namespace
-     * @return the newly created element
-     */
-    public Element elementNS(String namespace, String name)
-    {
-        assert InternalUtils.isNonBlank(name);
-        return newChild(new Element(this, namespace, name));
-    }
-
-    public Element elementAt(int index, String name, String... namesAndValues)
-    {
-        assert InternalUtils.isNonBlank(name);
-        Element child = new Element(this, null, name);
-        child.attributes(namesAndValues);
-
-        insertChildAt(index, child);
-
-        return child;
-    }
-
-    /**
-     * Adds the comment and returns this element for further construction.
-     */
-    public Element comment(String text)
-    {
-        newChild(new Comment(this, text));
-
-        return this;
-    }
-
-    /**
-     * Adds the raw text and returns this element for further construction.
-     */
-    public Element raw(String text)
-    {
-        newChild(new Raw(this, text));
-
-        return this;
-    }
-
-    /**
-     * Adds and returns a new text node (the text node is returned so that {@link Text#write(String)} or [@link {@link
-     * Text#writef(String, Object[])} may be invoked .
-     *
-     * @param text initial text for the node
-     * @return the new Text node
-     */
-    public Text text(String text)
-    {
-        return newChild(new Text(this, text));
-    }
-
-    /**
-     * Adds and returns a new CDATA node.
-     *
-     * @param content the content to be rendered by the node
-     * @return the newly created node
-     */
-    public CData cdata(String content)
-    {
-        return newChild(new CData(this, content));
-    }
-
-
-    private <T extends Node> T newChild(T child)
-    {
-        addChild(child);
-
-        return child;
-    }
-
-    @Override
-    void toMarkup(Document document, PrintWriter writer, Map<String, String> containerNamespacePrefixToURI)
-    {
-        Map<String, String> localNamespacePrefixToURI = createNamespaceURIToPrefix(containerNamespacePrefixToURI);
-
-        MarkupModel markupModel = document.getMarkupModel();
-
-        StringBuilder builder = new StringBuilder();
-
-        String prefixedElementName = toPrefixedName(localNamespacePrefixToURI, namespace, name);
-
-        builder.append("<").append(prefixedElementName);
-
-        // Output order used to be alpha sorted, but now it tends to be the inverse
-        // of the order in which attributes were added.
-
-        for (Attribute attr = firstAttribute; attr != null; attr = attr.nextAttribute)
-        {
-            attr.render(markupModel, builder, localNamespacePrefixToURI);
-        }
-
-        // Next, emit namespace declarations for each namespace.
-
-        List<String> namespaces = InternalUtils.sortedKeys(namespaceToPrefix);
-
-        for (String namespace : namespaces)
-        {
-            if (namespace.equals(Document.XML_NAMESPACE_URI)) continue;
-
-            String prefix = namespaceToPrefix.get(namespace);
-
-            builder.append(" xmlns");
-
-            if (!prefix.equals(""))
-            {
-                builder.append(":").append(prefix);
-            }
-
-            builder.append("=");
-            builder.append(markupModel.getAttributeQuote());
-
-            markupModel.encodeQuoted(namespace, builder);
-
-            builder.append(markupModel.getAttributeQuote());
-        }
-
-        EndTagStyle style = markupModel.getEndTagStyle(name);
-
-        boolean hasChildren = hasChildren();
-
-        String close = (!hasChildren && style == EndTagStyle.ABBREVIATE) ? "/>" : ">";
-
-        builder.append(close);
-
-        writer.print(builder.toString());
-
-        if (hasChildren) writeChildMarkup(document, writer, localNamespacePrefixToURI);
-
-        // Dangerous -- perhaps it should be an error for a tag of type OMIT to even have children!
-        // We'll certainly be writing out unbalanced markup in that case.
-
-        if (style == EndTagStyle.OMIT) return;
-
-        if (hasChildren || style == EndTagStyle.REQUIRE)
-        {
-            // TAP5-471: Avoid use of printf().
-            writer.print("</");
-            writer.print(prefixedElementName);
-            writer.print(">");
-        }
-    }
-
-    String toPrefixedName(Map<String, String> namespaceURIToPrefix, String namespace, String name)
-    {
-        if (namespace == null || namespace.equals("")) return name;
-
-        if (namespace.equals(Document.XML_NAMESPACE_URI)) return "xml:" + name;
-
-        String prefix = namespaceURIToPrefix.get(namespace);
-
-        // This should never happen, because namespaces are automatically defined as needed.
-
-        if (prefix == null)
-            throw new IllegalArgumentException(
-                    String.format("No prefix has been defined for namespace '%s'.", namespace));
-
-        // The empty string indicates the default namespace which doesn't use a prefix.
-
-        if (prefix.equals("")) return name;
-
-        return prefix + ":" + name;
-    }
-
-    /**
-     * Tries to find an element under this element (including itself) whose id is specified.
-     * Performs a width-first
-     * search of the document tree.
-     * 
-     * @param id
-     *            the value of the id attribute of the element being looked for
-     * @return the element if found. null if not found.
-     */
-    public Element getElementById(final String id)
-    {   
-        return getElementByAttributeValue("id", id);
-    }
-    
-    /**
-     * Tries to find an element under this element (including itself) whose given attribute has a given value.
-     * 
-     * @since 5.2.3
-     * 
-     * @param attributeName the name of the attribute of the element being looked for
-     * @param attributeValue
-     *            the value of the attribute of the element being looked for
-     * @return the element if found. null if not found.
-     */
-    public Element getElementByAttributeValue(final String attributeName, final String attributeValue)
-    {
-        assert attributeName != null;
-        assert attributeValue != null;
-        
-        return getElement(new Predicate<Element>()
-        {
-
-            @Override
-            public boolean accept(Element e)
-            {
-                String elementId = e.getAttribute(attributeName);
-                return attributeValue.equals(elementId);
-            }
-        });
-    }
-
-    /**
-     * Tries to find an element under this element (including itself) accepted by the given predicate.
-     * 
-     * @since 5.2.3
-     * 
-     * @param predicate Predicate to accept the element
-     * @return the element if found. null if not found.
-     */
-    public Element getElement(Predicate<Element> predicate)
-    {
-        LinkedList<Element> queue = CollectionFactory.newLinkedList();
-
-        queue.add(this);
-
-        while (!queue.isEmpty())
-        {
-            Element e = queue.removeFirst();
-
-            if (predicate.accept(e)) return e;
-
-            for (Element child : e.childElements())
-            {
-                queue.addLast(child);
-            }
-        }
-
-        // Exhausted the entire tree
-
-        return null;
-    }
-
-
-    /**
-     * Searchs for a child element with a particular name below this element. The path parameter is a slash separated
-     * series of element names.
-     *
-     * @param path
-     * @return
-     */
-    public Element find(String path)
-    {
-        assert InternalUtils.isNonBlank(path);
-        Element search = this;
-
-        for (String name : TapestryInternalUtils.splitPath(path))
-        {
-            search = search.findChildWithElementName(name);
-
-            if (search == null) break;
-        }
-
-        return search;
-    }
-
-    private Element findChildWithElementName(String name)
-    {
-        for (Element child : childElements())
-        {
-            if (child.getName().equals(name))
-                return child;
-        }
-
-        // Not found.
-
-        return null;
-    }
-
-    private Iterable<Element> childElements()
-    {
-        return new Iterable<Element>()
-        {
-            public Iterator<Element> iterator()
-            {
-                return new Iterator<Element>()
-                {
-                    private Node cursor = firstChild;
-
-                    {
-                        advance();
-                    }
-
-                    private void advance()
-                    {
-                        while (cursor != null)
-                        {
-                            if (cursor instanceof Element) return;
-
-                            cursor = cursor.nextSibling;
-                        }
-                    }
-
-                    public boolean hasNext()
-                    {
-                        return cursor != null;
-                    }
-
-                    public Element next()
-                    {
-                        Element result = (Element) cursor;
-
-                        cursor = cursor.nextSibling;
-
-                        advance();
-
-                        return result;
-                    }
-
-                    public void remove()
-                    {
-                        throw new UnsupportedOperationException("remove() not supported.");
-                    }
-                };
-            }
-        };
-    }
-
-    public String getAttribute(String attributeName)
-    {
-        for (Attribute attr = firstAttribute; attr != null; attr = attr.nextAttribute)
-        {
-            if (attr.getName().equalsIgnoreCase(attributeName))
-                return attr.value;
-        }
-
-        return null;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    /**
-     * Adds one or more CSS class names to the "class" attribute. No check for duplicates is made. Note that CSS class
-     * names are case insensitive on the client.
-     *
-     * @param className one or more CSS class names
-     * @return the element for further configuration
-     */
-    public Element addClassName(String... className)
-    {
-        String classes = getAttribute(CLASS_ATTRIBUTE);
-
-        StringBuilder builder = new StringBuilder();
-
-        if (classes != null) builder.append(classes);
-
-        for (String name : className)
-        {
-            if (builder.length() > 0) builder.append(" ");
-
-            builder.append(name);
-        }
-
-        forceAttributes(CLASS_ATTRIBUTE, builder.toString());
-
-        return this;
-    }
-
-    /**
-     * Defines a namespace for this element, mapping a URI to a prefix.   This will affect how namespaced elements and
-     * attributes nested within the element are rendered, and will also cause <code>xmlns:</code> attributes (to define
-     * the namespace and prefix) to be rendered.
-     *
-     * @param namespace       URI of the namespace
-     * @param namespacePrefix prefix
-     * @return this element
-     */
-    public Element defineNamespace(String namespace, String namespacePrefix)
-    {
-        assert namespace != null;
-        assert namespacePrefix != null;
-        if (namespace.equals(Document.XML_NAMESPACE_URI))
-            return this;
-
-        if (namespaceToPrefix == null)
-            namespaceToPrefix = CollectionFactory.newMap();
-
-        namespaceToPrefix.put(namespace, namespacePrefix);
-
-        return this;
-    }
-
-    /**
-     * Returns the namespace for this element (which is typically a URL). The namespace may be null.
-     */
-    public String getNamespace()
-    {
-        return namespace;
-    }
-
-    /**
-     * Removes an element; the element's children take the place of the node within its container.
-     */
-    public void pop()
-    {
-        // Have to be careful because we'll be  modifying the underlying list of children
-        // as we work, so we need a copy of the children.
-
-        List<Node> childrenCopy = CollectionFactory.newList(getChildren());
-
-        for (Node child : childrenCopy)
-        {
-            child.moveBefore(this);
-        }
-
-        remove();
-    }
-
-    /**
-     * Removes all children from this element.
-     *
-     * @return the element, for method chaining
-     */
-    public Element removeChildren()
-    {
-        firstChild = null;
-        lastChild = null;
-
-        return this;
-    }
-
-    /**
-     * Creates the URI to namespace prefix map for this element, which reflects namespace mappings from containing
-     * elements. In addition, automatic namespaces are defined for any URIs that are not explicitly mapped (this occurs
-     * sometimes in Ajax partial render scenarios).
-     *
-     * @return a mapping from namespace URI to namespace prefix
-     */
-    private Map<String, String> createNamespaceURIToPrefix(Map<String, String> containerNamespaceURIToPrefix)
-    {
-        MapHolder holder = new MapHolder(containerNamespaceURIToPrefix);
-
-        holder.putAll(namespaceToPrefix);
-
-
-        // result now contains all the mappings, including this element's.
-
-        // Add a mapping for the element's namespace.
-
-        if (InternalUtils.isNonBlank(namespace))
-        {
-
-            // Add the namespace for the element as the default namespace.
-
-            if (!holder.getResult().containsKey(namespace))
-            {
-                defineNamespace(namespace, "");
-                holder.put(namespace, "");
-            }
-        }
-
-        // And for any attributes that have a namespace.
-
-        for (Attribute attr = firstAttribute; attr != null; attr = attr.nextAttribute)
-            addMappingIfNeeded(holder, attr.getNamespace());
-
-        return holder.getResult();
-    }
-
-    private void addMappingIfNeeded(MapHolder holder, String namespace)
-    {
-        if (InternalUtils.isBlank(namespace)) return;
-
-        Map<String, String> current = holder.getResult();
-
-        if (current.containsKey(namespace)) return;
-
-        // A missing namespace.
-
-        Set<String> prefixes = CollectionFactory.newSet(holder.getResult().values());
-
-        // A clumsy way to find a unique id for the new namespace.
-
-        int i = 0;
-        while (true)
-        {
-            String prefix = "ns" + i;
-
-            if (!prefixes.contains(prefix))
-            {
-                defineNamespace(namespace, prefix);
-                holder.put(namespace, prefix);
-                return;
-            }
-
-            i++;
-        }
-    }
-
-    @Override
-    protected Map<String, String> getNamespaceURIToPrefix()
-    {
-        MapHolder holder = new MapHolder();
-
-        List<Element> elements = CollectionFactory.newList(this);
-
-        Element cursor = container;
-
-        while (cursor != null)
-        {
-            elements.add(cursor);
-            cursor = cursor.container;
-        }
-
-        // Reverse the list, so that later elements will overwrite earlier ones.
-
-        Collections.reverse(elements);
-
-        for (Element e : elements)
-            holder.putAll(e.namespaceToPrefix);
-
-        return holder.getResult();
-    }
-
-    /**
-     * Returns true if the element has no children, or has only text children that contain only whitespace.
-     *
-     * @since 5.1.0.0
-     */
-    public boolean isEmpty()
-    {
-        List<Node> children = getChildren();
-
-        if (children.isEmpty()) return true;
-
-        for (Node n : children)
-        {
-            if (n instanceof Text)
-            {
-                Text t = (Text) n;
-
-                if (t.isEmpty()) continue;
-            }
-
-            // Not a text node, or a non-empty text node, then the element isn't empty.
-            return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Depth-first visitor traversal of this Element and its Element children. The traversal order is the same as render
-     * order.
-     *
-     * @param visitor callback
-     * @since 5.1.0.0
-     */
-    public void visit(Visitor visitor)
-    {
-        Stack<Element> queue = CollectionFactory.newStack();
-
-        queue.push(this);
-
-        while (!queue.isEmpty())
-        {
-            Element e = queue.pop();
-
-            visitor.visit(e);
-
-            e.queueChildren(queue);
-        }
-    }
-
-
-    private void queueChildren(Stack<Element> queue)
-    {
-        if (firstChild == null) return;
-
-        List<Element> childElements = CollectionFactory.newList();
-
-        for (Node cursor = firstChild; cursor != null; cursor = cursor.nextSibling)
-        {
-            if (cursor instanceof Element)
-                childElements.add((Element) cursor);
-        }
-
-        Collections.reverse(childElements);
-
-        for (Element e : childElements)
-            queue.push(e);
-    }
-
-    void addChild(Node child)
-    {
-        child.container = this;
-
-        if (lastChild == null)
-        {
-            firstChild = child;
-            lastChild = child;
-            return;
-        }
-
-        lastChild.nextSibling = child;
-        lastChild = child;
-    }
-
-    void insertChildAt(int index, Node newChild)
-    {
-        newChild.container = this;
-
-        if (index < 1)
-        {
-            newChild.nextSibling = firstChild;
-            firstChild = newChild;
-        }
-        else
-        {
-            Node cursor = firstChild;
-            for (int i = 1; i < index; i++)
-            {
-                cursor = cursor.nextSibling;
-            }
-
-
-            newChild.nextSibling = cursor.nextSibling;
-            cursor.nextSibling = newChild;
-        }
-
-        if (index < 1)
-            firstChild = newChild;
-
-        if (newChild.nextSibling == null)
-            lastChild = newChild;
-    }
-
-    boolean hasChildren()
-    {
-        return firstChild != null;
-    }
-
-    void writeChildMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
-    {
-        Node cursor = firstChild;
-
-        while (cursor != null)
-        {
-            cursor.toMarkup(document, writer, namespaceURIToPrefix);
-
-            cursor = cursor.nextSibling;
-        }
-    }
-
-    /**
-     * @return the concatenation of the String representations {@link #toString()} of its children.
-     */
-    public final String getChildMarkup()
-    {
-        PrintOutCollector collector = new PrintOutCollector();
-
-        writeChildMarkup(getDocument(), collector.getPrintWriter(), null);
-
-        return collector.getPrintOut();
-    }
-
-    /**
-     * Returns an unmodifiable list of children for this element. Only {@link org.apache.tapestry5.dom.Element}s will
-     * have children.  Also, note that unlike W3C DOM, attributes are not represented as {@link
-     * org.apache.tapestry5.dom.Node}s.
-     *
-     * @return unmodifiable list of children nodes
-     */
-    @SuppressWarnings("unchecked")
-    public List<Node> getChildren()
-    {
-        List<Node> result = CollectionFactory.newList();
-        Node cursor = firstChild;
-
-        while (cursor != null)
-        {
-            result.add(cursor);
-            cursor = cursor.nextSibling;
-        }
-
-        return result;
-    }
-
-    void remove(Node node)
-    {
-        Node prior = null;
-        Node cursor = firstChild;
-
-        while (cursor != null)
-        {
-            if (cursor == node)
-            {
-                Node afterNode = node.nextSibling;
-
-                if (prior != null)
-                    prior.nextSibling = afterNode;
-                else
-                    firstChild = afterNode;
-
-                // If node was the final node in the element then handle deletion.
-                // It's even possible node was the only node in the container.
-
-                if (lastChild == node)
-                {
-                    lastChild = prior != null ? prior : null;
-                }
-
-                return;
-            }
-
-            prior = cursor;
-            cursor = cursor.nextSibling;
-        }
-
-        throw new IllegalArgumentException("Node to remove was not present as a child of this element.");
-    }
-
-    void insertChildBefore(Node existing, Node node)
-    {
-        int index = indexOfNode(existing);
-
-        node.container = this;
-
-        insertChildAt(index, node);
-    }
-
-    void insertChildAfter(Node existing, Node node)
-    {
-        Node oldAfter = existing.nextSibling;
-
-        existing.nextSibling = node;
-        node.nextSibling = oldAfter;
-
-        if (oldAfter == null)
-            lastChild = node;
-
-        node.container = this;
-    }
-
-    int indexOfNode(Node node)
-    {
-        int index = 0;
-        Node cursor = firstChild;
-
-        while (cursor != null)
-        {
-            if (node == cursor) return index;
-
-            cursor = cursor.nextSibling;
-            index++;
-        }
-
-        throw new IllegalArgumentException("Node not a child of this element.");
-    }
-
-    /**
-     * Returns the attributes for this Element as a (often empty) collection of {@link
-     * org.apache.tapestry5.dom.Attribute}s. The order of the attributes within the collection is not specified.
-     * Modifying the collection will not affect the attributes (use {@link #forceAttributes(String[])} to change
-     * existing attribute values, and {@link #attribute(String, String, String)} to add new attribute values.
-     *
-     * @return attribute collection
-     */
-    public Collection<Attribute> getAttributes()
-    {
-        Collection<Attribute> result = CollectionFactory.newList();
-
-        for (Attribute a = firstAttribute; a != null; a = a.nextAttribute)
-        {
-            result.add(a);
-        }
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/EndTagStyle.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/EndTagStyle.java
deleted file mode 100644
index 8cdea25..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/EndTagStyle.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-/**
- * Part of a {@link MarkupModel}, used to define how end tags are handled when the {@link Document} in rendered out as a
- * text stream.
- */
-public enum EndTagStyle
-{
-
-    /**
-     * Omit the end tag. Examples for HTML include the input, br and img elements.
-     *
-     * @deprecated Tapestry always renders well formed XML markup (even when a DOCTYPE  is not present, or the content
-     *             type is traditional text/html).
-     */
-    OMIT,
-    /**
-     * Require an end tag always. This is the default for most elements in HTML.
-     */
-    REQUIRE,
-    /**
-     * Require an end tag, but abbreviate it if the element has no children. This is the only value that should be used
-     * in XML documents, but {@link org.apache.tapestry5.dom.DefaultMarkupModel} forces most tags to use {@link
-     * #REQUIRE} for semi-obscure browser compatibility issues.
-     */
-    ABBREVIATE
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java
deleted file mode 100644
index bc7ad82..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/MapHolder.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * Used by {@link org.apache.tapestry5.dom.Element} to construct namespace URI to prefix maps.
- *
- * @since 5.0.19
- */
-class MapHolder
-{
-    private static final Map<String, String> EMPTY_MAP = Collections.emptyMap();
-
-    private final Map<String, String> startingMap;
-
-    private Map<String, String> localMap;
-
-    MapHolder()
-    {
-        this(null);
-    }
-
-    MapHolder(Map<String, String> startingMap)
-    {
-        this.startingMap = startingMap == null ? EMPTY_MAP : startingMap;
-    }
-
-    void put(String key, String value)
-    {
-        getMutable().put(key, value);
-    }
-
-    Map<String, String> getMutable()
-    {
-        if (localMap == null)
-            localMap = CollectionFactory.newMap(startingMap);
-
-        return localMap;
-    }
-
-    void putAll(Map<String, String> map)
-    {
-        if (map == null || map.isEmpty()) return;
-
-        getMutable().putAll(map);
-    }
-
-    Map<String, String> getResult()
-    {
-        return localMap != null ? localMap : startingMap;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/MarkupModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/MarkupModel.java
deleted file mode 100644
index 04589e8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/MarkupModel.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-/**
- * Used by a the DOM to determine how to produce markup. Delegates details about converted entities and some formatting
- * details.  This exists to handle the differences between traditional HTML output (which is SGML based, meaning there
- * can be elements that are valid without a close tag) and "modern" XML, such as XHTML.  Generally speaking, for XHTML
- * it is vital that a !DOCTYPE be included in the rendered response, or the browser will be unable to display the result
- * properly.
- */
-public interface MarkupModel
-{
-    /**
-     * Encodes the characters, converting control characters (such as '&lt;') into corresponding entities (such as
-     * &amp;lt;).
-     *
-     * @param content to be filtered
-     * @return the filtered content
-     */
-    String encode(String content);
-
-    /**
-     * Encodes the characters into the buffer for use in a quoted value (that is, an attribute value), converting
-     * control characters (such as '&lt;') into corresponding entities (such as &amp;lt;). In addition, double quotes
-     * must be quoted or otherwise escaped.
-     *
-     * @param content to be filtered
-     * @param buffer  to receive the filtered content
-     */
-    void encodeQuoted(String content, StringBuilder buffer);
-
-    /**
-     * For a given element, determines how the end tag for the element should be rendered.
-     */
-    EndTagStyle getEndTagStyle(String element);
-
-    /**
-     * Returns true if the document markup is XML, which is used to determine the need for an XML declaration at the
-     * start of the document, and whether CDATA sections are supported.
-     *
-     * @return true for XML output, false for HTML output
-     */
-    boolean isXML();
-
-    /**
-     * What character is used when generating quotes around attribute values? This will be either a single or double
-     * quote.
-     *
-     * @return single (') or double (") quote
-     * @since 5.1.0.0
-     */
-    char getAttributeQuote();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Node.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Node.java
deleted file mode 100644
index fb5c351..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Node.java
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Map;
-
-import org.apache.tapestry5.internal.util.PrintOutCollector;
-
-/**
- * A node within the DOM.
- */
-public abstract class Node
-{
-    Element container;
-
-    /**
-     * Next node within containing element.
-     */
-    Node nextSibling;
-
-    /**
-     * Creates a new node, setting its container to the provided value. Container may also be null, but that is only
-     * used for Document nodes (the topmost node of a DOM).
-     *
-     * @param container element containing this node
-     */
-    protected Node(Element container)
-    {
-        this.container = container;
-    }
-
-    /**
-     * Returns the containing {@link org.apache.tapestry5.dom.Element} for this node, or null if this node is the root
-     * element of the document.
-     */
-    public Element getContainer()
-    {
-        return container;
-    }
-
-    public Document getDocument()
-    {
-        return container.getDocument();
-    }
-
-
-    /**
-     * Invokes {@link #toMarkup(PrintWriter)}, collecting output in a string, which is returned.
-     */
-    @Override
-    public String toString()
-    {
-        PrintOutCollector collector = new PrintOutCollector();
-
-        toMarkup(collector.getPrintWriter());
-
-        return collector.getPrintOut();
-    }
-
-
-    /**
-     * Writes the markup for this node to the writer.
-     */
-    public void toMarkup(PrintWriter writer)
-    {
-        toMarkup(getDocument(), writer, getNamespaceURIToPrefix());
-    }
-
-    protected Map<String, String> getNamespaceURIToPrefix()
-    {
-        // For non-Elements, the container (which should be an Element) will provide the mapping.
-
-        return container.getNamespaceURIToPrefix();
-    }
-
-    /**
-     * Implemented by each subclass, with the document passed in for efficiency.
-     */
-    abstract void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix);
-
-    /**
-     * Moves this node so that it becomes a sibling of the element, ordered just before the element.
-     *
-     * @param element to move the node before
-     * @return the node for further modification
-     */
-    public Node moveBefore(Element element)
-    {
-        validateElement(element);
-
-        remove();
-
-        element.container.insertChildBefore(element, this);
-
-        return this;
-    }
-
-
-    /**
-     * Moves this node so that it becomes a sibling of the element, ordered just after the element.
-     *
-     * @param element to move the node after
-     * @return the node for further modification
-     */
-    public Node moveAfter(Element element)
-    {
-        validateElement(element);
-
-        remove();
-
-        element.container.insertChildAfter(element, this);
-
-        return this;
-    }
-
-    /**
-     * Moves this node so that it becomes this first child of the element, shifting existing elements forward.
-     *
-     * @param element to move the node inside
-     * @return the node for further modification
-     */
-    public Node moveToTop(Element element)
-    {
-        validateElement(element);
-
-        remove();
-
-        element.insertChildAt(0, this);
-
-        return this;
-    }
-
-    /**
-     * Moves this node so that it the last child of the element.
-     *
-     * @param element to move the node inside
-     * @return the node for further modification
-     */
-    public Node moveToBottom(Element element)
-    {
-        validateElement(element);
-
-        remove();
-
-        element.addChild(this);
-
-        return this;
-    }
-
-    private void validateElement(Element element)
-    {
-        assert element != null;
-
-        Node search = element;
-        while (search != null)
-        {
-            if (search.equals(this))
-            {
-                throw new IllegalArgumentException("Unable to move a node relative to itself.");
-            }
-
-            search = search.getContainer();
-        }
-    }
-
-    /**
-     * Removes a node from its container, setting its container property to null, and removing it from its container's
-     * list of children.
-     */
-    public void remove()
-    {
-        container.remove(this);
-
-        container = null;
-    }
-
-    /**
-     * Wraps a node inside a new element.  The new element is created before the node, then the node is moved inside the
-     * new element.
-     *
-     * @param elementName    name of new element to create
-     * @param namesAndValues to set attributes of new element
-     * @return the created element
-     */
-    public Element wrap(String elementName, String... namesAndValues)
-    {
-        int index = container.indexOfNode(this);
-
-        // Insert the new element just before this node.
-        Element element = container.elementAt(index, elementName, namesAndValues);
-
-        // Move this node inside the new element.
-        moveToTop(element);
-
-        return element;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Raw.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Raw.java
deleted file mode 100644
index 5aa74fa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Raw.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Map;
-
-/**
- * A specialized node in the document tree that contains raw markup to be printed to the client exactly as-is.
- */
-public final class Raw extends Node
-{
-    private final String text;
-
-    Raw(Element container, String text)
-    {
-        super(container);
-
-        this.text = text;
-    }
-
-    /**
-     * Prints the text exactly as is, no translations, filtering, etc.
-     */
-    @Override
-    void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
-    {
-        writer.print(text);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Text.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Text.java
deleted file mode 100644
index 02a2abf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Text.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.io.PrintWriter;
-import java.util.Map;
-
-/**
- * A type of node that contains text.
- */
-public final class Text extends Node
-{
-    private final StringBuilder buffer;
-
-    Text(Element container, String text)
-    {
-        super(container);
-
-        buffer = new StringBuilder(text.length());
-
-        write(text);
-    }
-
-    boolean isEmpty()
-    {
-        return buffer.length() == 0 || buffer.toString().trim().length() == 0;
-    }
-
-    /**
-     * Writes additional text into the node, appending it to any existing text.
-     */
-    public void write(String text)
-    {
-        buffer.append(text);
-    }
-
-    public void writef(String format, Object... args)
-    {
-        write(String.format(format, args));
-    }
-
-    @Override
-    void toMarkup(Document document, PrintWriter writer, Map<String, String> namespaceURIToPrefix)
-    {
-        String encoded = document.getMarkupModel().encode(buffer.toString());
-
-        writer.print(encoded);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Visitor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Visitor.java
deleted file mode 100644
index 577ed88..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/Visitor.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-/**
- * A callback interface used navigate the {@link org.apache.tapestry5.dom.Element}s of a document.
- *
- * @since 5.1.0.0
- */
-public interface Visitor
-{
-    /**
-     * Called for each Element being visited.
-     *
-     * @param element visited
-     */
-    void visit(Element element);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/XMLMarkupModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/XMLMarkupModel.java
deleted file mode 100644
index 91ccb82..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/dom/XMLMarkupModel.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-/**
- * Markup model used when generating any form of XML markup.
- */
-public final class XMLMarkupModel extends AbstractMarkupModel
-{
-    public XMLMarkupModel()
-    {
-        this(false);
-    }
-
-    public XMLMarkupModel(boolean useApostropheForAttributes)
-    {
-        super(useApostropheForAttributes);
-    }
-
-    /**
-     * Always returns ABBREVIATE.
-     */
-    public EndTagStyle getEndTagStyle(String element)
-    {
-        return EndTagStyle.ABBREVIATE;
-    }
-
-    /**
-     * Returns true.
-     */
-    public boolean isXML()
-    {
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/ColumnSort.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/ColumnSort.java
deleted file mode 100644
index 350f502..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/ColumnSort.java
+++ /dev/null
@@ -1,22 +0,0 @@
-package org.apache.tapestry5.grid;
-
-/**
- * Identifies how a column within a {@link org.apache.tapestry5.grid.GridSortModel} is sorted.
- */
-public enum ColumnSort
-{
-    /**
-     * A sort column and sorted in ascending order.
-     */
-    ASCENDING,
-
-    /**
-     * A sort column, and sorted in descending order.
-     */
-    DESCENDING,
-
-    /**
-     * Not a sort column.
-     */
-    UNSORTED
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridConstants.java
deleted file mode 100644
index 00888b6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridConstants.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.grid;
-
-public class GridConstants
-{
-    /**
-     * CSS class for the first column or the first row. May be applied to a &lt;th&gt; (in the &lt;thead&gt;) or a
-     * &lt;tr&gt; (in the &lt;tbody&gt;).
-     */
-    public static final String FIRST_CLASS = "t-first";
-
-    /**
-     * CSS class for the last column or the last row. May be applied to a &lt;th&gt; (in the &lt;thead&gt;) or a
-     * &lt;tr&gt; (in the &lt;tbody&gt;).
-     */
-    public static final String LAST_CLASS = "t-last";
-
-    /**
-     * Marks the column that is currently sorted for sort ascending.  May be applied to a &lt;th&gt; (in the
-     * &lt;thead&gt; or a &lt;td&gt; in the &lt;tbody&gt;).
-     */
-    public static final String SORT_ASCENDING_CLASS = "t-sort-column-ascending";
-
-    /**
-     * Marks the column that is currently sorted for sort descending.  May be applied to a &lt;th&gt; (in the
-     * &lt;thead&gt; or a &lt;td&gt; in the &lt;tbody&gt;).
-     */
-
-    public static final String SORT_DESCENDING_CLASS = "t-sort-column-descending";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
deleted file mode 100644
index 9ebe488..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridDataSource.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.grid;
-
-import java.util.List;
-
-/**
- * Defines how a {@link org.apache.tapestry5.corelib.components.Grid} component (and its sub-components) gain access to
- * the row data that is displayed on the page. In many cases, this is just a wrapper around a simple List, but the
- * abstractions exist to support access to a large data set that is accessible in sections.
- */
-public interface GridDataSource
-{
-    /**
-     * Returns the number of rows available in the data source.
-     */
-    int getAvailableRows();
-
-    /**
-     * Invoked to allow the source to prepare to present values. This gives the source a chance to pre-fetch data (when
-     * appropriate) and informs the source of the desired sort order.  Sorting comes first, then extraction by range.
-     *
-     * @param startIndex      the starting index to be retrieved
-     * @param endIndex        the ending index to be retrieved
-     * @param sortConstraints identify how data is to be sorted
-     */
-    void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints);
-
-    /**
-     * Returns the row value at the provided index. This method will be invoked in sequential order. In rare instances,
-     * {@link #getAvailableRows()} may return a different number of rows than are actually available (i.e., the database
-     * was changed between calls to {@link #getAvailableRows()} and the call to {@link #prepare(int, int,
-     * java.util.List)}).  In that case, this method should return null for any out-of-range indexes.
-     */
-    Object getRowValue(int index);
-
-    /**
-     * Returns the type of value in the rows, or null if not known. This value is used to create a default {@link
-     * org.apache.tapestry5.beaneditor.BeanModel} when no such model is explicitly provided.
-     *
-     * @return the row type, or null
-     */
-    Class getRowType();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
deleted file mode 100644
index 8593110..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridModel.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.grid;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-
-/**
- * A provider of model data to the sub-components of the {@link org.apache.tapestry5.corelib.components.Grid} component.
- * The primary implementor of this component is the Grid component itself. This is effectively a way to package three
- * values as a single parameter to components such as {@link org.apache.tapestry5.corelib.components.GridColumns} and
- * {@link org.apache.tapestry5.corelib.components.GridRows}.
- */
-public interface GridModel
-{
-    /**
-     * Returns the data model, which defines the columns (in terms of properties of the row type), and provides access
-     * to actual values for a given row instance.
-     */
-    BeanModel getDataModel();
-
-    /**
-     * Returns the source for the data to be presented in the Grid.
-     */
-    GridDataSource getDataSource();
-
-    /**
-     * Returns the object used to track sorting behavior of the Grid.
-     */
-    GridSortModel getSortModel();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridSortModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridSortModel.java
deleted file mode 100644
index fe2968e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/GridSortModel.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.grid;
-
-import java.util.List;
-
-/**
- * Models the sorting applied to the a {@link org.apache.tapestry5.grid.GridDataSource}.
- */
-public interface GridSortModel
-{
-    /**
-     * Identifies how (or if) a column is sorted.
-     *
-     * @param columnId
-     * @return the sort for the indicated column or {@link org.apache.tapestry5.grid.ColumnSort#UNSORTED} if the column
-     *         is not used for sorting
-     */
-    ColumnSort getColumnSort(String columnId);
-
-    /**
-     * Updates the column sort.  The receiver determines how to handle the sort request.
-     *
-     * @param columnId property id of column to sort on
-     */
-    void updateSort(String columnId);
-
-    /**
-     * Returns a list of sort constraints, identifying which columns are sorted, and how.  May return an empty list (but
-     * won't return null).
-     *
-     * @see org.apache.tapestry5.grid.GridDataSource#prepare(int, int, java.util.List)
-     */
-    List<SortConstraint> getSortConstraints();
-
-    void clear();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
deleted file mode 100644
index cbacd30..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/grid/SortConstraint.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.grid;
-
-import org.apache.tapestry5.beaneditor.PropertyModel;
-
-/**
- * Identifies how a single column (identified as a {@link org.apache.tapestry5.beaneditor.PropertyModel}) is sorted.
- */
-public class SortConstraint
-{
-    private final PropertyModel propertyModel;
-
-    private final ColumnSort columnSort;
-
-    public SortConstraint(PropertyModel propertyModel, ColumnSort columnSort)
-    {
-        assert propertyModel != null;
-        assert columnSort != null;
-
-        this.propertyModel = propertyModel;
-        this.columnSort = columnSort;
-    }
-
-    public PropertyModel getPropertyModel()
-    {
-        return propertyModel;
-    }
-
-    public ColumnSort getColumnSort()
-    {
-        return columnSort;
-    }
-
-    // equals() is useful for testing
-
-    @Override
-    public boolean equals(Object o)
-    {
-        if (this == o) return true;
-
-        if (o == null || getClass() != o.getClass()) return false;
-
-        SortConstraint that = (SortConstraint) o;
-
-        if (columnSort != that.columnSort) return false;
-
-        return propertyModel.equals(that.propertyModel);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java
deleted file mode 100644
index 2a68d64..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractContributionDef.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-
-/**
- * Partially implements {@link org.apache.tapestry5.ioc.def.ContributionDef}, providing empty implementations of the
- * three contribute() methods.
- */
-public abstract class AbstractContributionDef implements ContributionDef
-{
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           Configuration configuration)
-    {
-    }
-
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           OrderedConfiguration configuration)
-    {
-    }
-
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           MappedConfiguration configuration)
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractEventContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractEventContext.java
deleted file mode 100644
index 8844158..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AbstractEventContext.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.EventContext;
-
-public abstract class AbstractEventContext implements EventContext
-{
-    public String[] toStrings()
-    {
-        int count = getCount();
-
-        String[] result = new String[count];
-
-        for (int i = 0; i < count; i++)
-        {
-            result[i] = get(String.class, i);
-        }
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AssetConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AssetConstants.java
deleted file mode 100644
index 7ea1431..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/AssetConstants.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-/**
- * Defines constants for the two basic asset prefixes.
- * 
- * @since 5.2.0
- */
-public class AssetConstants
-{
-    /** For assets that are stored in the web application context. */
-    public static final String CONTEXT = "context";
-
-    /** For assets that are stored in the classpath (i.e., inside 3rd party component library JARs). */
-    public static final String CLASSPATH = "classpath";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/BeanValidationContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/BeanValidationContext.java
deleted file mode 100644
index 29c0f85..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/BeanValidationContext.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal;
-
-/**
- * Defines a context for validating beans.
- * 
- * @since 5.2.0
- */
-public interface BeanValidationContext
-{
-    /**
-     * Returns the type of the object to validate. This method is needed for client side validation.
-     */
-    Class getBeanType();
-    
-    /**
-     * Return the object to validate.
-     */
-    Object getBeanInstance();
-    
-    /**
-     * Returns name of the property to validate. The current name is overwritten by every form field.
-     */
-    String getCurrentProperty();
-    
-    /**
-     * Sets name of the property to validate.
-     * 
-     * @param propertyName name of the property
-     */
-    void setCurrentProperty(String propertyName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/BeanValidationContextImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/BeanValidationContextImpl.java
deleted file mode 100644
index 49536a0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/BeanValidationContextImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal;
-
-
-public class BeanValidationContextImpl implements BeanValidationContext
-{
-    private Object bean;
-    private String currentProperty;
-
-    public BeanValidationContextImpl(Object bean)
-    {
-        this.bean = bean;
-    }
-
-    public Class getBeanType()
-    {
-        return bean==null?null:bean.getClass();
-    }
-
-    public Object getBeanInstance()
-    {
-        return bean;
-    }
-
-	public String getCurrentProperty() 
-	{
-		return currentProperty;
-	}
-
-	public void setCurrentProperty(String propertyName) 
-	{
-		this.currentProperty = propertyName;
-	}
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java
deleted file mode 100644
index 8199dc0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ContextResourceSymbolProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.internal.services.ContextResource;
-import org.apache.tapestry5.ioc.internal.services.ResourceSymbolProvider;
-import org.apache.tapestry5.services.Context;
-
-/**
- * Makes a {@link org.apache.tapestry5.ioc.Resource} in the {@link org.apache.tapestry5.services.Context} available as a
- * {@link org.apache.tapestry5.ioc.services.SymbolProvider}
- *
- * @since 5.1.0.5
- */
-public class ContextResourceSymbolProvider extends ResourceSymbolProvider
-{
-    public ContextResourceSymbolProvider(Context context, String path)
-    {
-        super(new ContextResource(context, path));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultNullFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultNullFieldStrategy.java
deleted file mode 100644
index 90b8957..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultNullFieldStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright  2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.NullFieldStrategy;
-
-/**
- * Default strategy, which is to do nothing: null values stay null.
- */
-public class DefaultNullFieldStrategy implements NullFieldStrategy
-{
-    /**
-     * Returns null.
-     */
-    public Object replaceToClient()
-    {
-        return null;
-    }
-
-    /**
-     * Returns null .
-     */
-    public String replaceFromClient()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValidationDecorator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValidationDecorator.java
deleted file mode 100644
index 6262334..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/DefaultValidationDecorator.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Default implementation that writes an attribute into fields or labels that are in error.
- */
-public final class DefaultValidationDecorator extends BaseValidationDecorator
-{
-    private final Environment environment;
-
-    private final Asset spacerAsset;
-
-    private final MarkupWriter markupWriter;
-
-    /**
-     * @param environment
-     *            used to locate objects and services during the render
-     * @param spacerAsset
-     *            asset for a one-pixel spacer image used as a placeholder for the error marker icon
-     * @param markupWriter
-     */
-    public DefaultValidationDecorator(Environment environment, Asset spacerAsset, MarkupWriter markupWriter)
-    {
-        this.environment = environment;
-        this.spacerAsset = spacerAsset;
-        this.markupWriter = markupWriter;
-    }
-
-    @Override
-    public void insideField(Field field)
-    {
-        if (inError(field))
-            addErrorClassToCurrentElement();
-    }
-
-    @Override
-    public void insideLabel(Field field, Element element)
-    {
-        if (field == null)
-            return;
-
-        if (inError(field))
-            element.addClassName(CSSClassConstants.ERROR);
-    }
-
-    /**
-     * Writes an icon for field after the field. The icon has the same id as the field, with ":icon" appended. This is
-     * expected by the default client-side JavaScript. The icon's src is a blank spacer image (this is to allow the
-     * image displayed to be overridden via CSS). The icon's CSS class is "t-error-icon", with "t-invisible" added
-     * if the field is not in error when rendered. If client validation is not enabled for the form containing the
-     * field and the field is not in error, then the error icon itself is not rendered.
-     * 
-     * @param field
-     *            which just completed rendering itself
-     */
-    @Override
-    public void afterField(Field field)
-    {
-        boolean inError = inError(field);
-
-        boolean clientValidationEnabled = getFormSupport().isClientValidationEnabled();
-
-        if (inError || clientValidationEnabled)
-        {
-            String iconId = field.getClientId() + "_icon";
-
-            String cssClass = inError ? "t-error-icon" : "t-error-icon t-invisible";
-
-            markupWriter.element("img", "src", spacerAsset.toClientURL(), "alt", "", "class", cssClass, "id", iconId);
-            markupWriter.end();
-        }
-
-    }
-
-    private FormSupport getFormSupport()
-    {
-        return environment.peekRequired(FormSupport.class);
-    }
-
-    private boolean inError(Field field)
-    {
-        ValidationTracker tracker = environment.peekRequired(ValidationTracker.class);
-
-        return tracker.inError(field);
-    }
-
-    private void addErrorClassToCurrentElement()
-    {
-        markupWriter.getElement().addClassName(CSSClassConstants.ERROR);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/EmptyEventContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/EmptyEventContext.java
deleted file mode 100644
index 547ebc6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/EmptyEventContext.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.EventContext;
-
-/**
- * Placeholder used when no context is available.
- */
-public class EmptyEventContext implements EventContext
-{
-    /**
-     * Always returns zero.
-     */
-    public int getCount()
-    {
-        return 0;
-    }
-
-    /**
-     * This should never be called because the count is always zero.
-     */
-    public <T> T get(Class<T> desiredType, int index)
-    {
-        return null;
-    }
-
-    public String[] toStrings()
-    {
-        return InternalConstants.EMPTY_STRING_ARRAY;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalComponentResources.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalComponentResources.java
deleted file mode 100644
index 8da47aa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalComponentResources.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.bindings.PropBinding;
-import org.apache.tapestry5.internal.services.PersistentFieldManager;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.structure.PageResetListener;
-import org.apache.tapestry5.internal.transform.ParameterConduit;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-/**
- * An extension of {@link org.apache.tapestry5.ComponentResources} that represents additional
- * methods that are private
- * to the framework and not exposed in any public APIs.
- */
-public interface InternalComponentResources extends ComponentResources,
-        InternalComponentResourcesCommon
-{
-    /**
-     * Get the current persisted value of the field.
-     * 
-     * @param fieldName
-     *            the name of the field to access
-     * @return the value stored for the field, or null if no value is currently stored
-     */
-    Object getFieldChange(String fieldName);
-
-    /**
-     * Checks to see if there is a value stored for the indicated field.
-     */
-    boolean hasFieldChange(String fieldName);
-
-    /**
-     * Posts a change to a persistent field. If the component is still loading, then this change is
-     * ignored. Otherwise,
-     * it is propagated, via the
-     * {@link Page#persistFieldChange(org.apache.tapestry5.ComponentResources, String, Object)
-     * page} to the {@link PersistentFieldManager}.
-     */
-    void persistFieldChange(String fieldName, Object newValue);
-
-    /**
-     * Allows the resources to cleanup any render-time only data.
-     */
-    void postRenderCleanup();
-
-    /**
-     * Invoked to make the receiver queue itself to be rendered.
-     */
-    void queueRender(RenderQueue queue);
-
-    /**
-     * Delegates to {@link Page#addResetListener(org.apache.tapestry5.internal.structure.PageResetListener)}.
-     * 
-     * @param listener
-     *            to register
-     */
-    void addPageResetListener(PageResetListener listener);
-
-    /**
-     * Gets a previously stored ParameterConduit, allowing PCs to be shared between a component
-     * and a mixin of that component.
-     * 
-     * @since 5.2.0
-     */
-    ParameterConduit getParameterConduit(String parameterName);
-
-    /**
-     * Stores a ParameterConduit for later access. Tthis occurs inside a component's
-     * {@link PageLifecycleListener#containingPageDidLoad()} lifecycle
-     * method.
-     * 
-     * @since 5.2.0
-     */
-    void setParameterConduit(String parameterName, ParameterConduit conduit);
-    
-    
-    /**
-     * Returns the name of the bound property if {@link PropBinding} is used and the expression points to a property on a bean (e.g. user.name).
-     * Otherwise this method returns null.
-     * 
-     * @param parameterName name of the parameter
-     * 
-     * @since 5.2.0
-     */
-    String getPropertyName(String parameterName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalComponentResourcesCommon.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalComponentResourcesCommon.java
deleted file mode 100644
index 0cf7e62..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalComponentResourcesCommon.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.runtime.Component;
-
-import java.util.Map;
-
-/**
- * Operations shared by {@link InternalComponentResources} and {@link ComponentPageElement}. Typically, these means
- * methods of InternalComponentResources that are delegated to the component page element.
- */
-public interface InternalComponentResourcesCommon
-{
-    /**
-     * Returns true if the component has finished loading. Initially, this value will be false.
-     * 
-     * @see org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidLoad()
-     */
-    boolean isLoaded();
-
-    /**
-     * Used during construction of the page to identify the binding for a particular parameter.
-     * <p/>
-     */
-    void bindParameter(String parameterName, Binding binding);
-
-    /**
-     * Returns the binding for the given parameter name, or null.
-     * 
-     * @param parameterName
-     *            name of component parameter
-     * @return binding if bound, or null
-     * @since 5.1.0.0
-     */
-    Binding getBinding(String parameterName);
-
-    /**
-     * Returns the mixin instance for the fully qualfied mixin class name.
-     * 
-     * @param mixinClassName
-     *            fully qualified class name
-     * @return IllegalArgumentException if no such mixin is associated with the core component
-     */
-    Component getMixinByClassName(String mixinClassName);
-
-    /**
-     * Constructs a map linking informal parameters to the corresponding bindings.
-     * 
-     * @return map, possible empty
-     */
-    Map<String, Binding> getInformalParameterBindings();
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
deleted file mode 100644
index b228a66..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalConstants.java
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-
-public final class InternalConstants
-{
-    /**
-     * Init parameter used to identify the package from which application classes are loaded. Such
-     * classes are in the
-     * pages, components and mixins sub-packages.
-     */
-    public static final String TAPESTRY_APP_PACKAGE_PARAM = "tapestry.app-package";
-
-    /**
-     * Turns off loading of default modules (as driven by JAR file Manifest entries).
-     */
-    public static final String DISABLE_DEFAULT_MODULES_PARAM = "tapestry.disable-default-modules";
-
-    /**
-     * The name of the query parameter that stores the page activation context inside an action
-     * request.
-     */
-    public static final String PAGE_CONTEXT_NAME = "t:ac";
-
-    /**
-     * Name of event triggered by Grid sub-components when an in-place Grid is updated.
-     */
-    public static final String GRID_INPLACE_UPDATE = "inplaceupdate";
-
-    /**
-     * The name of a query parameter that stores the containing page (used in action links when the
-     * page containing the
-     * component is not the same as the page that was rendering). The active page (the page which
-     * initiated the render)
-     * is encoded into the URL, and the containing page is tacked on as this query parameter.
-     */
-    public static final String CONTAINER_PAGE_NAME = "t:cp";
-
-    public static final String OBJECT_RENDER_DIV_SECTION = "t-env-data-section";
-
-    public static final String MIXINS_SUBPACKAGE = "mixins";
-
-    public static final String COMPONENTS_SUBPACKAGE = "components";
-
-    public static final String PAGES_SUBPACKAGE = "pages";
-
-    public static final String BASE_SUBPACKAGE = "base";
-
-    /**
-     * Used in some Ajax scenarios to set the content type for the response early, when the Page
-     * instance (the authority
-     * on content types) is known. The value is of type {@link org.apache.tapestry5.ContentType}.
-     */
-    public static final String CONTENT_TYPE_ATTRIBUTE_NAME = "content-type";
-
-    public static final String CHARSET_CONTENT_TYPE_PARAMETER = "charset";
-
-    /**
-     * Request attribute that stores a {@link org.apache.tapestry5.internal.structure.Page} instance
-     * that will be
-     * rendered as the {@linkplain org.apache.tapestry5.SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
-     * immediate
-     * mode response}.
-     */
-    public static final String IMMEDIATE_RESPONSE_PAGE_ATTRIBUTE = "tapestry.immediate-response-page";
-
-    /**
-     * Required MIME type for JSON responses. If this MIME type is not used, the client-side
-     * Prototype code will not
-     * recognize the response as JSON, and the Ajax.Response.responseJSON property will be null.
-     */
-    public static final String JSON_MIME_TYPE = "application/json";
-
-    /**
-     * Request attribute key; if non-null, then automatic GZIP compression of response stream is
-     * suppressed. This is
-     * useful when the code opening the response stream wants to explicitly control whether GZIP
-     * compression occurs or
-     * not.
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String SUPPRESS_COMPRESSION = "tapestry.supress-compression";
-
-    /**
-     * Name of response header for content encoding.
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String CONTENT_ENCODING_HEADER = "Content-Encoding";
-
-    /**
-     * Response content encoding value indicating use of GZIP compression.
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String GZIP_CONTENT_ENCODING = "gzip";
-
-    /**
-     * Identifies the start of an expansion inside a template.
-     */
-    public static final String EXPANSION_START = "${";
-
-    /**
-     * Special prefix for parameters that are inherited from named parameters of their container.
-     */
-    public static final String INHERIT_BINDING_PREFIX = "inherit:";
-
-    public static final long TEN_YEARS = new TimeInterval("10y").milliseconds();
-
-    public static final String[] EMPTY_STRING_ARRAY = new String[0];
-
-    /**
-     * Name of the core {@link JavaScriptStack}, which supplies the basic JavaScript infrastructure
-     * on the client.
-     * 
-     * @since 5.2.0
-     */
-    public static final String CORE_STACK_NAME = "core";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalMessages.java
deleted file mode 100644
index 7e66d0d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalMessages.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-final class InternalMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(InternalMessages.class);
-
-    static String badKeyValue(String input)
-    {
-        return MESSAGES.format("bad-key-value", input);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java
deleted file mode 100644
index 5e19e5b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalPropertyConduit.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.PropertyConduit;
-
-
-/**
- * Extension to {@link org.apache.tapestry5.PropertyConduit} that adds a method to determine the name of the property.
- * 
- * @since 5.2.0
- *
- */
-public interface InternalPropertyConduit extends PropertyConduit
-{
-    /**
-     * Returns the name of the property read or updated by the conduit or null. 
-     * If the expression points to a property on a bean (e.g. user.name) this method returns the last property in the chain. 
-     * Otherwise this method returns {@code null}.
-     * 
-     * @return property name or {@code null}
-     * 
-     */
-    String getPropertyName();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java
deleted file mode 100644
index 167a059..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/InternalSymbols.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-public class InternalSymbols
-{
-    /**
-     * The application mode, generally "servlet", used to select the correct contributions to the
-     * {@link org.apache.tapestry5.services.Alias} service.
-     */
-    public static final String ALIAS_MODE = "tapestry.alias-mode";
-
-    /**
-     * The name of the application (i.e., the name of the application filter). Used, for example, to select additional
-     * resources related to the application.
-     */
-    public static final String APP_NAME = "tapestry.app-name";
-
-    /**
-     * The application package converted to a path ('.' becomes '/'). Useful for finding resources on the classpath
-     * relevant to the application.
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String APP_PACKAGE_PATH = "tapestry.app-package-path";
-
-    /**
-     * Comma-seperated list of pre-allocated Form component control names. Basically, this exists to work
-     * around name collisions on the client side.
-     * 
-     * @since 5.2.0
-     */
-    public static final String PRE_SELECTED_FORM_NAMES = "tapestry.pre-selected-form-names";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/KeyValue.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/KeyValue.java
deleted file mode 100644
index 37413cb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/KeyValue.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-/**
- * A key/value pair.
- */
-public class KeyValue
-{
-    private final String key;
-
-    private final String value;
-
-    public KeyValue(final String key, final String value)
-    {
-        this.key = key;
-        this.value = value;
-    }
-
-    public String getKey()
-    {
-        return key;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/OptionGroupModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/OptionGroupModelImpl.java
deleted file mode 100644
index f3d7774..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/OptionGroupModelImpl.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.OptionGroupModel;
-import org.apache.tapestry5.OptionModel;
-
-import java.util.List;
-import java.util.Map;
-
-public final class OptionGroupModelImpl implements OptionGroupModel
-{
-    private final String label;
-
-    private final boolean disabled;
-
-    private final List<OptionModel> options;
-
-    private final Map<String, String> attributes;
-
-    public OptionGroupModelImpl(String label, boolean disabled, List<OptionModel> options,
-                                String... attributeKeysAndValues)
-    {
-        this(label, disabled, options, attributeKeysAndValues.length == 0 ? null : TapestryInternalUtils
-                .mapFromKeysAndValues(attributeKeysAndValues));
-    }
-
-    public OptionGroupModelImpl(String label, boolean disabled, List<OptionModel> options,
-                                Map<String, String> attributes)
-    {
-        this.label = label;
-        this.disabled = disabled;
-        this.options = options;
-        this.attributes = attributes;
-    }
-
-    public Map<String, String> getAttributes()
-    {
-        return attributes;
-    }
-
-    public String getLabel()
-    {
-        return label;
-    }
-
-    public List<OptionModel> getOptions()
-    {
-        return options;
-    }
-
-    public boolean isDisabled()
-    {
-        return disabled;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("OptionGroupModel[%s]", label);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/OptionModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/OptionModelImpl.java
deleted file mode 100644
index 89ce561..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/OptionModelImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.AbstractOptionModel;
-
-public class OptionModelImpl extends AbstractOptionModel
-{
-    private final String label;
-
-    private final Object value;
-
-    /**
-     * Constructor for when the value and the label are the same.
-     */
-    public OptionModelImpl(String value)
-    {
-        this(value, value);
-    }
-
-    public OptionModelImpl(String label, Object value)
-    {
-        this.label = label;
-        this.value = value;
-    }
-
-    public String getLabel()
-    {
-        return label;
-    }
-
-    public Object getValue()
-    {
-        return value;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("OptionModel[%s %s]", label, value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java
deleted file mode 100644
index b6ac3b5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/PropertyOverridesImpl.java
+++ /dev/null
@@ -1,44 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.ioc.Messages;
-
-public class PropertyOverridesImpl implements PropertyOverrides
-{
-    private final ComponentResources resources;
-
-    private final Messages messages;
-
-    public PropertyOverridesImpl(ComponentResources resources)
-    {
-        this.resources = resources;
-
-        messages = resources.getContainerMessages();
-    }
-
-    public Block getOverrideBlock(String name)
-    {
-        return resources.getBlockParameter(name);
-    }
-
-    public Messages getOverrideMessages()
-    {
-        return messages;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SelectModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SelectModelImpl.java
deleted file mode 100644
index 429077c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SelectModelImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.OptionGroupModel;
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.util.AbstractSelectModel;
-
-import java.util.Arrays;
-import java.util.List;
-
-public final class SelectModelImpl extends AbstractSelectModel
-{
-    private final List<OptionGroupModel> optionGroups;
-
-    private final List<OptionModel> optionModels;
-
-    public SelectModelImpl(final List<OptionGroupModel> optionGroups,
-                           final List<OptionModel> optionModels)
-    {
-        this.optionGroups = optionGroups;
-        this.optionModels = optionModels;
-    }
-
-    public SelectModelImpl(OptionModel... optionModels)
-    {
-        this(null, Arrays.asList(optionModels));
-    }
-
-    public SelectModelImpl(OptionGroupModel... groupModels)
-    {
-        this(Arrays.asList(groupModels), null);
-    }
-
-    public List<OptionGroupModel> getOptionGroups()
-    {
-        return optionGroups;
-    }
-
-    public List<OptionModel> getOptions()
-    {
-        return optionModels;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java
deleted file mode 100644
index e25868f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ServletContextSymbolProvider.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-
-import javax.servlet.ServletContext;
-import java.util.Map;
-
-/**
- * A wrapper around {@link ServletContext} that makes init-parameters accessible as symbols.
- */
-public class ServletContextSymbolProvider implements SymbolProvider
-{
-    private final Map<String, String> properties = CollectionFactory.newCaseInsensitiveMap();
-
-    public ServletContextSymbolProvider(ServletContext context)
-    {
-        for (String name : InternalUtils.toList(context.getInitParameterNames()))
-        {
-            properties.put(name, context.getInitParameter(name));
-        }
-    }
-
-    public String valueForSymbol(String symbolName)
-    {
-        return properties.get(symbolName);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SingleKeySymbolProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SingleKeySymbolProvider.java
deleted file mode 100644
index 5332cfa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SingleKeySymbolProvider.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-
-/**
- * Implementation of {@link SymbolProvider} that only supports a single key/value pair.
- */
-public class SingleKeySymbolProvider implements SymbolProvider
-{
-    private final String symbolName;
-
-    private final String value;
-
-    public SingleKeySymbolProvider(final String symbolName, final String value)
-    {
-        this.symbolName = symbolName;
-        this.value = value;
-    }
-
-    public String valueForSymbol(String symbolName)
-    {
-        if (this.symbolName.equalsIgnoreCase(symbolName)) return value;
-
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java
deleted file mode 100644
index 205a891..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticModuleDef.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Collections;
-import java.util.Set;
-
-/**
- * A synthetic module definition, used to mix in some additional "pre-built" service configuration contributions.
- */
-public class SyntheticModuleDef implements ModuleDef
-{
-    private final Set<ContributionDef> contributionDefs;
-
-    public SyntheticModuleDef(ContributionDef... contributionDefs)
-    {
-        this.contributionDefs = CollectionFactory.newSet(contributionDefs);
-    }
-
-    /**
-     * Returns null.
-     */
-    public Class getBuilderClass()
-    {
-        return null;
-    }
-
-    /**
-     * Returns the configured set.
-     */
-    public Set<ContributionDef> getContributionDefs()
-    {
-        return contributionDefs;
-    }
-
-    /**
-     * Returns an empty set.
-     */
-    public Set<DecoratorDef> getDecoratorDefs()
-    {
-        return Collections.emptySet();
-    }
-
-    /**
-     * Returns "SyntheticModule".
-     */
-    public String getLoggerName()
-    {
-        return "SyntheticModule";
-    }
-
-    /**
-     * Returns null.
-     */
-    public ServiceDef getServiceDef(String serviceId)
-    {
-        return null;
-    }
-
-    /**
-     * Returns an empty set.
-     */
-    public Set<String> getServiceIds()
-    {
-        return Collections.emptySet();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java
deleted file mode 100644
index 068132b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/SyntheticSymbolSourceContributionDef.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-
-/**
- * Makes a contribution to the SymbolSource service configuration.
- */
-public class SyntheticSymbolSourceContributionDef extends AbstractContributionDef
-{
-    private final String contributionName;
-
-    private final SymbolProvider provider;
-
-    private final String[] constraints;
-
-    public SyntheticSymbolSourceContributionDef(String contributionName, SymbolProvider provider,
-                                                String... constraints)
-    {
-        this.contributionName = contributionName;
-        this.provider = provider;
-        this.constraints = constraints;
-    }
-
-
-    @SuppressWarnings("unchecked")
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           OrderedConfiguration configuration)
-    {
-        configuration.add(contributionName, provider, constraints);
-    }
-
-
-    /**
-     * Returns "SymbolSource".
-     */
-    public String getServiceId()
-    {
-        return "SymbolSource";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java
deleted file mode 100644
index 151c3d4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryAppInitializer.java
+++ /dev/null
@@ -1,268 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.IOCUtilities;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.RegistryBuilder;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.services.TapestryModule;
-import org.slf4j.Logger;
-
-import java.util.Formatter;
-import java.util.List;
-
-/**
- * This class is used to build the {@link Registry}. The Registry contains
- * {@link org.apache.tapestry5.ioc.services.TapestryIOCModule} and {@link TapestryModule}, any
- * modules identified by {@link #addModules(Class[])} )}, plus the application module.
- * <p/>
- * The application module is optional.
- * <p/>
- * The application module is identified as <em>package</em>.services.<em>appName</em>Module, where
- * <em>package</em> and the <em>appName</em> are specified by the caller.
- */
-public class TapestryAppInitializer
-{
-    private final Logger logger;
-
-    private final SymbolProvider appProvider;
-
-    private final String appName;
-
-    private final String aliasMode;
-
-    private final long startTime;
-
-    private final RegistryBuilder builder = new RegistryBuilder();
-
-    private long registryCreatedTime;
-    private Registry registry;
-
-    /**
-     * @param logger
-     *            logger for output confirmation
-     * @param appProvider
-     *            provides symbols for the application (normally, from the ServletContext init
-     *            parameters)
-     * @param appName
-     *            the name of the application (i.e., the name of the application servlet)
-     * @param aliasMode
-     *            the mode, used by the {@link org.apache.tapestry5.services.Alias} service,
-     *            normally "servlet"
-     */
-    public TapestryAppInitializer(Logger logger, String appPackage, String appName, String aliasMode)
-    {
-        this(logger, new SingleKeySymbolProvider(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM,
-                appPackage), appName, aliasMode, null);
-    }
-
-    /**
-     * @param logger
-     *            logger for output confirmation
-     * @param appProvider
-     *            provides symbols for the application (normally, from the ServletContext init
-     *            parameters)
-     * @param appName
-     *            the name of the application (i.e., the name of the application servlet)
-     * @param aliasMode
-     *            the mode, used by the {@link org.apache.tapestry5.services.Alias} service,
-     *            normally "servlet"
-     * @deprecated Use
-     *             {@link #TapestryAppInitializer(Logger, SymbolProvider, String, String, String)}
-     *             instead
-     */
-    public TapestryAppInitializer(Logger logger, SymbolProvider appProvider, String appName,
-            String aliasMode)
-    {
-        this(logger, appProvider, appName, aliasMode, null);
-    }
-
-    /**
-     * @param logger
-     *            logger for output confirmation
-     * @param appProvider
-     *            provides symbols for the application (normally, from the ServletContext init
-     *            parameters)
-     * @param appName
-     *            the name of the application (i.e., the name of the application servlet)
-     * @param aliasMode
-     *            the mode, used by the {@link org.apache.tapestry5.services.Alias} service,
-     *            normally "servlet"
-     * @param executionModes
-     *            an optional, comma-seperated list of execution modes, each of which is used
-     *            to find a list of additional module classes to load (key
-     *            <code>tapestry.<em>name</em>-modules</code> in appProvider, i.e., the servlet
-     *            context)
-     */
-    public TapestryAppInitializer(Logger logger, SymbolProvider appProvider, String appName,
-            String aliasMode, String executionModes)
-    {
-        this.logger = logger;
-        this.appProvider = appProvider;
-
-        String appPackage = appProvider
-                .valueForSymbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM);
-
-        this.appName = appName;
-        this.aliasMode = aliasMode;
-
-        startTime = System.currentTimeMillis();
-
-        if (!Boolean.parseBoolean(appProvider
-                .valueForSymbol(InternalConstants.DISABLE_DEFAULT_MODULES_PARAM)))
-        {
-            IOCUtilities.addDefaultModules(builder);
-        }
-
-        // This gets added automatically.
-
-        addModules(TapestryModule.class);
-
-        String className = appPackage + ".services." + InternalUtils.capitalize(this.appName)
-                + "Module";
-
-        try
-        {
-            // This class is possibly loaded by a parent class loader of the application class
-            // loader. The context class loader should have the appropriate view to the module class,
-            // if any.
-
-            Class moduleClass = Thread.currentThread().getContextClassLoader().loadClass(className);
-
-            builder.add(moduleClass);
-        }
-        catch (ClassNotFoundException ex)
-        {
-            // That's OK, not all applications will have a module class, even though any
-            // non-trivial application will.
-        }
-
-        // Add a synthetic module that contributes symbol sources.
-
-        addSyntheticSymbolSourceModule(appPackage);
-
-        for (String mode : TapestryInternalUtils.splitAtCommas(executionModes))
-        {
-            String key = String.format("tapestry.%s-modules", mode);
-            String moduleList = appProvider.valueForSymbol(key);
-
-            for (String moduleClassName : TapestryInternalUtils.splitAtCommas(moduleList))
-            {
-                builder.add(moduleClassName);
-            }
-        }
-    }
-
-    /**
-     * Adds additional modules.
-     * 
-     * @param moduleDefs
-     */
-    public void addModules(ModuleDef... moduleDefs)
-    {
-        for (ModuleDef def : moduleDefs)
-            builder.add(def);
-    }
-
-    public void addModules(Class... moduleClasses)
-    {
-        builder.add(moduleClasses);
-    }
-
-    private void addSyntheticSymbolSourceModule(String appPackage)
-    {
-        ContributionDef appPathContribution = new SyntheticSymbolSourceContributionDef("AppPath",
-                new SingleKeySymbolProvider(InternalSymbols.APP_PACKAGE_PATH, appPackage.replace(
-                        '.', '/')));
-
-        ContributionDef symbolSourceContribution = new SyntheticSymbolSourceContributionDef(
-                "ServletContext", appProvider, "before:ApplicationDefaults");
-
-        ContributionDef aliasModeContribution = new SyntheticSymbolSourceContributionDef(
-                "AliasMode", new SingleKeySymbolProvider(InternalSymbols.ALIAS_MODE, aliasMode),
-                "before:ServletContext");
-
-        ContributionDef appNameContribution = new SyntheticSymbolSourceContributionDef("AppName",
-                new SingleKeySymbolProvider(InternalSymbols.APP_NAME, appName),
-                "before:ServletContext");
-
-        builder.add(new SyntheticModuleDef(symbolSourceContribution, aliasModeContribution,
-                appNameContribution, appPathContribution));
-    }
-
-    public Registry createRegistry()
-    {
-        registryCreatedTime = System.currentTimeMillis();
-
-        registry = builder.build();
-
-        return registry;
-    }
-
-    public void announceStartup()
-    {
-        long toFinish = System.currentTimeMillis();
-
-        SymbolSource source = registry.getService("SymbolSource", SymbolSource.class);
-
-        StringBuilder buffer = new StringBuilder("Startup status:\n\n");
-        Formatter f = new Formatter(buffer);
-
-        f.format("Application '%s' (Tapestry version %s).\n\n"
-                + "Startup time: %,d ms to build IoC Registry, %,d ms overall.\n\n"
-                + "Startup services status:\n", appName, source
-                .valueForSymbol(SymbolConstants.TAPESTRY_VERSION), registryCreatedTime - startTime,
-                toFinish - startTime);
-
-        int unrealized = 0;
-
-        ServiceActivityScoreboard scoreboard = registry.getService(ServiceActivityScoreboard.class);
-
-        List<ServiceActivity> serviceActivity = scoreboard.getServiceActivity();
-
-        int longest = 0;
-
-        // One pass to find the longest name, and to count the unrealized services.
-
-        for (ServiceActivity activity : serviceActivity)
-        {
-            Status status = activity.getStatus();
-
-            longest = Math.max(longest, activity.getServiceId().length());
-
-            if (status == Status.DEFINED || status == Status.VIRTUAL)
-                unrealized++;
-        }
-
-        String formatString = "%" + longest + "s: %s\n";
-
-        // A second pass to output all the services
-
-        for (ServiceActivity activity : serviceActivity)
-        {
-            f.format(formatString, activity.getServiceId(), activity.getStatus().name());
-        }
-
-        f.format("\n%4.2f%% unrealized services (%d/%d)\n", 100. * unrealized
-                / serviceActivity.size(), unrealized, serviceActivity.size());
-
-        logger.info(buffer.toString());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
deleted file mode 100644
index d9acbf7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/TapestryInternalUtils.java
+++ /dev/null
@@ -1,592 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Pattern;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.Asset2;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.LinkCreationListener;
-import org.apache.tapestry5.services.LinkCreationListener2;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-/**
- * Shared utility methods used by various implementation classes.
- */
-@SuppressWarnings("all")
-public class TapestryInternalUtils
-{
-    private static final String SLASH = "/";
-
-    private static final Pattern SLASH_PATTERN = Pattern.compile(SLASH);
-
-    private static final Pattern NON_WORD_PATTERN = Pattern.compile("[^\\w]");
-
-    private static final Pattern COMMA_PATTERN = Pattern.compile("\\s*,\\s*");
-
-    private static final int BUFFER_SIZE = 5000;
-
-    /**
-     * Capitalizes the string, and inserts a space before each upper case character (or sequence of upper case
-     * characters). Thus "userId" becomes "User Id", etc. Also, converts underscore into space (and capitalizes the
-     * following word), thus "user_id" also becomes "User Id".
-     */
-    public static String toUserPresentable(String id)
-    {
-        StringBuilder builder = new StringBuilder(id.length() * 2);
-
-        char[] chars = id.toCharArray();
-        boolean postSpace = true;
-        boolean upcaseNext = true;
-
-        for (char ch : chars)
-        {
-            if (upcaseNext)
-            {
-                builder.append(Character.toUpperCase(ch));
-                upcaseNext = false;
-
-                continue;
-            }
-
-            if (ch == '_')
-            {
-                builder.append(' ');
-                upcaseNext = true;
-                continue;
-            }
-
-            boolean upperCase = Character.isUpperCase(ch);
-
-            if (upperCase && !postSpace)
-                builder.append(' ');
-
-            builder.append(ch);
-
-            postSpace = upperCase;
-        }
-
-        return builder.toString();
-    }
-
-    public static Map<String, String> mapFromKeysAndValues(String... keysAndValues)
-    {
-        Map<String, String> result = CollectionFactory.newMap();
-
-        int i = 0;
-        while (i < keysAndValues.length)
-        {
-            String key = keysAndValues[i++];
-            String value = keysAndValues[i++];
-
-            result.put(key, value);
-        }
-
-        return result;
-    }
-
-    /**
-     * Converts a string to an {@link OptionModel}. The string is of the form "value=label". If the equals sign is
-     * omitted, then the same value is used for both value and label.
-     * 
-     * @param input
-     * @return
-     */
-    public static OptionModel toOptionModel(String input)
-    {
-        assert input != null;
-        int equalsx = input.indexOf('=');
-
-        if (equalsx < 0)
-            return new OptionModelImpl(input);
-
-        String value = input.substring(0, equalsx);
-        String label = input.substring(equalsx + 1);
-
-        return new OptionModelImpl(label, value);
-    }
-
-    /**
-     * Parses a string input into a series of value=label pairs compatible with {@link #toOptionModel(String)}. Splits
-     * on commas. Ignores whitespace around commas.
-     * 
-     * @param input
-     *            comma seperated list of terms
-     * @return list of option models
-     */
-    public static List<OptionModel> toOptionModels(String input)
-    {
-        assert input != null;
-        List<OptionModel> result = CollectionFactory.newList();
-
-        for (String term : input.split(","))
-            result.add(toOptionModel(term.trim()));
-
-        return result;
-    }
-
-    /**
-     * Wraps the result of {@link #toOptionModels(String)} as a {@link SelectModel} (with no option groups).
-     * 
-     * @param input
-     * @return
-     */
-    public static SelectModel toSelectModel(String input)
-    {
-        List<OptionModel> options = toOptionModels(input);
-
-        return new SelectModelImpl(null, options);
-    }
-
-    /**
-     * Converts a map entry to an {@link OptionModel}.
-     * 
-     * @param input
-     * @return
-     */
-    public static OptionModel toOptionModel(Map.Entry input)
-    {
-        assert input != null;
-        String label = input.getValue() != null ? String.valueOf(input.getValue()) : "";
-
-        return new OptionModelImpl(label, input.getKey());
-    }
-
-    /**
-     * Processes a map input into a series of map entries compatible with {@link #toOptionModel(Map.Entry)}.
-     * 
-     * @param input
-     *            map of elements
-     * @return list of option models
-     */
-    public static <K, V> List<OptionModel> toOptionModels(Map<K, V> input)
-    {
-        assert input != null;
-        List<OptionModel> result = CollectionFactory.newList();
-
-        for (Map.Entry entry : input.entrySet())
-            result.add(toOptionModel(entry));
-
-        return result;
-    }
-
-    /**
-     * Wraps the result of {@link #toOptionModels(Map)} as a {@link SelectModel} (with no option groups).
-     * 
-     * @param input
-     * @return
-     */
-    public static <K, V> SelectModel toSelectModel(Map<K, V> input)
-    {
-        List<OptionModel> options = toOptionModels(input);
-
-        return new SelectModelImpl(null, options);
-    }
-
-    /**
-     * Converts an object to an {@link OptionModel}.
-     * 
-     * @param input
-     * @return
-     */
-    public static OptionModel toOptionModel(Object input)
-    {
-        String label = (input != null ? String.valueOf(input) : "");
-
-        return new OptionModelImpl(label, input);
-    }
-
-    /**
-     * Processes a list input into a series of objects compatible with {@link #toOptionModel(Object)}.
-     * 
-     * @param input
-     *            list of elements
-     * @return list of option models
-     */
-    public static <E> List<OptionModel> toOptionModels(List<E> input)
-    {
-        assert input != null;
-        List<OptionModel> result = CollectionFactory.newList();
-
-        for (E element : input)
-            result.add(toOptionModel(element));
-
-        return result;
-    }
-
-    /**
-     * Wraps the result of {@link #toOptionModels(List)} as a {@link SelectModel} (with no option groups).
-     * 
-     * @param input
-     * @return
-     */
-    public static <E> SelectModel toSelectModel(List<E> input)
-    {
-        List<OptionModel> options = toOptionModels(input);
-
-        return new SelectModelImpl(null, options);
-    }
-
-    /**
-     * Parses a key/value pair where the key and the value are seperated by an equals sign. The key and value are
-     * trimmed of leading and trailing whitespace, and returned as a {@link KeyValue}.
-     * 
-     * @param input
-     * @return
-     */
-    public static KeyValue parseKeyValue(String input)
-    {
-        int pos = input.indexOf('=');
-
-        if (pos < 1)
-            throw new IllegalArgumentException(InternalMessages.badKeyValue(input));
-
-        String key = input.substring(0, pos);
-        String value = input.substring(pos + 1);
-
-        return new KeyValue(key.trim(), value.trim());
-    }
-
-    /**
-     * Used to convert a property expression into a key that can be used to locate various resources (Blocks, messages,
-     * etc.). Strips out any punctuation characters, leaving just words characters (letters, number and the
-     * underscore).
-     * 
-     * @param expression
-     *            a property expression
-     * @return the expression with punctuation removed
-     */
-    public static String extractIdFromPropertyExpression(String expression)
-    {
-        return replace(expression, NON_WORD_PATTERN, "");
-    }
-
-    /**
-     * Looks for a label within the messages based on the id. If found, it is used, otherwise the name is converted to a
-     * user presentable form.
-     */
-    public static String defaultLabel(String id, Messages messages, String propertyExpression)
-    {
-        String key = id + "-label";
-
-        if (messages.contains(key))
-            return messages.get(key);
-
-        return toUserPresentable(extractIdFromPropertyExpression(lastTerm(propertyExpression)));
-    }
-
-    /**
-     * Strips a dotted sequence (such as a property expression, or a qualified class name) down to the last term of that
-     * expression, by locating the last period ('.') in the string.
-     */
-    public static String lastTerm(String input)
-    {
-        int dotx = input.lastIndexOf('.');
-
-        return input.substring(dotx + 1);
-    }
-
-    /**
-     * Converts an list of strings into a space-separated string combining them all, suitable for use as an HTML class
-     * attribute value.
-     * 
-     * @param classes
-     *            classes to combine
-     * @return the joined classes, or null if classes is empty
-     */
-    public static String toClassAttributeValue(List<String> classes)
-    {
-        if (classes.isEmpty())
-            return null;
-
-        return InternalUtils.join(classes, " ");
-    }
-
-    /**
-     * Converts an enum to a label string, allowing for overrides from a message catalog.
-     * <p/>
-     * <ul>
-     * <li>As key <em>prefix</em>.<em>name</em> if present. Ex: "ElementType.LOCAL_VARIABLE"
-     * <li>As key <em>name</em> if present, i.e., "LOCAL_VARIABLE".
-     * <li>As a user-presentable version of the name, i.e., "Local Variable".
-     * </ul>
-     * 
-     * @param messages
-     *            the messages to search for the label
-     * @param prefix
-     * @param value
-     *            to get a label for
-     * @return the label
-     */
-    public static String getLabelForEnum(Messages messages, String prefix, Enum value)
-    {
-        String name = value.name();
-
-        String key = prefix + "." + name;
-
-        if (messages.contains(key))
-            return messages.get(key);
-
-        if (messages.contains(name))
-            return messages.get(name);
-
-        return toUserPresentable(name.toLowerCase());
-    }
-
-    public static String getLabelForEnum(Messages messages, Enum value)
-    {
-        String prefix = lastTerm(value.getClass().getName());
-
-        return getLabelForEnum(messages, prefix, value);
-    }
-
-    private static String replace(String input, Pattern pattern, String replacement)
-    {
-        return pattern.matcher(input).replaceAll(replacement);
-    }
-
-    /**
-     * Determines if the two values are equal. They are equal if they are the exact same value (including if they are
-     * both null). Otherwise standard equals() comparison is used.
-     * 
-     * @param <T>
-     * @param left
-     *            value to compare, possibly null
-     * @param right
-     *            value to compare, possibly null
-     * @return true if same value, both null, or equal
-     */
-    public static <T> boolean isEqual(T left, T right)
-    {
-        if (left == right)
-            return true;
-
-        if (left == null)
-            return right == null;
-
-        return left.equals(right);
-    }
-
-    /**
-     * Splits a path at each slash.
-     */
-    public static String[] splitPath(String path)
-    {
-        return SLASH_PATTERN.split(path);
-    }
-
-    /**
-     * Splits a value around commas. Whitespace around the commas is removed, as is leading and trailing whitespace.
-     * 
-     * @since 5.1.0.0
-     */
-    public static String[] splitAtCommas(String value)
-    {
-        if (InternalUtils.isBlank(value))
-            return InternalConstants.EMPTY_STRING_ARRAY;
-
-        return COMMA_PATTERN.split(value.trim());
-    }
-
-    /**
-     * Copies some content from an input stream to an output stream. It is the caller's responsibility to close the
-     * streams.
-     * 
-     * @param in
-     *            source of data
-     * @param out
-     *            sink of data
-     * @throws IOException
-     * @since 5.1.0.0
-     */
-    public static void copy(InputStream in, OutputStream out) throws IOException
-    {
-        byte[] buffer = new byte[BUFFER_SIZE];
-
-        while (true)
-        {
-            int length = in.read(buffer);
-
-            if (length < 0)
-                break;
-
-            out.write(buffer, 0, length);
-        }
-
-        // TAPESTRY-2415: WebLogic needs this flush() call.
-        out.flush();
-    }
-
-    public static boolean isEqual(EventContext left, EventContext right)
-    {
-        if (left == right)
-            return true;
-
-        int count = left.getCount();
-
-        if (count != right.getCount())
-            return false;
-
-        for (int i = 0; i < count; i++)
-        {
-            if (!left.get(Object.class, i).equals(right.get(Object.class, i)))
-                return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Converts an Asset to an Asset2 if necessary. When actually wrapping an Asset as an Asset2, the asset is assumed
-     * to be variant (i.e., not cacheable).
-     * 
-     * @since 5.1.0.0
-     */
-    public static Asset2 toAsset2(final Asset asset)
-    {
-        if (asset instanceof Asset2)
-            return (Asset2) asset;
-
-        return new Asset2()
-        {
-            /** Returns false. */
-            public boolean isInvariant()
-            {
-                return false;
-            }
-
-            public Resource getResource()
-            {
-                return asset.getResource();
-            }
-
-            public String toClientURL()
-            {
-                return asset.toClientURL();
-            }
-
-            @Override
-            public String toString()
-            {
-                return asset.toString();
-            }
-        };
-    }
-
-    public static InternalPropertyConduit toInternalPropertyConduit(final PropertyConduit conduit)
-    {
-        if (conduit instanceof InternalPropertyConduit)
-            return (InternalPropertyConduit) conduit;
-
-        return new InternalPropertyConduit()
-        {
-
-            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-            {
-                return conduit.getAnnotation(annotationClass);
-            }
-
-            public void set(Object instance, Object value)
-            {
-                conduit.set(instance, value);
-            }
-
-            public Class getPropertyType()
-            {
-                return conduit.getPropertyType();
-            }
-
-            public Object get(Object instance)
-            {
-                return conduit.get(instance);
-            }
-
-            public String getPropertyName()
-            {
-                return null;
-            }
-        };
-    }
-
-    /**
-     * @param mixinDef
-     *            the original mixin definition.
-     * @return an Orderable whose id is the mixin name.
-     */
-    public static Orderable<String> mixinTypeAndOrder(String mixinDef)
-    {
-        int idx = mixinDef.indexOf("::");
-        if (idx == -1) { return new Orderable(mixinDef, mixinDef); }
-        String type = mixinDef.substring(0, idx);
-        String[] constraints = splitMixinConstraints(mixinDef.substring(idx + 2));
-
-        return new Orderable(type, type, constraints);
-    }
-
-    public static String[] splitMixinConstraints(String s)
-    {
-        return InternalUtils.isBlank(s) ? null : s.split(";");
-    }
-
-    /**
-     * Common mapper, used primarily with {@link F#map(Mapper, java.util.Collection)}
-     * 
-     * @since 5.2.0
-     */
-    public static Mapper<Asset, StylesheetLink> assetToStylesheetLink = new Mapper<Asset, StylesheetLink>()
-    {
-        public StylesheetLink map(Asset input)
-        {
-            return new StylesheetLink(input);
-        };
-    };
-
-    public static LinkCreationListener2 toLinkCreationListener2(final LinkCreationListener delegate)
-    {
-        return new LinkCreationListener2()
-        {
-
-            public void createdPageRenderLink(Link link, PageRenderRequestParameters parameters)
-            {
-                delegate.createdPageRenderLink(link);
-            }
-
-            public void createdComponentEventLink(Link link, ComponentEventRequestParameters parameters)
-            {
-                delegate.createdComponentEventLink(link);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/URLEventContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/URLEventContext.java
deleted file mode 100644
index 58fc856..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/URLEventContext.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.services.ContextValueEncoder;
-
-/**
- * Implementation based on values extracted from the URL (an event context, or a page activation
- * context) that uses a {@link org.apache.tapestry5.services.ContextValueEncoder} to convert from
- * string values to the desired values.
- */
-public class URLEventContext extends AbstractEventContext
-{
-    private final ContextValueEncoder valueEncoder;
-
-    private final String[] values;
-
-    public URLEventContext(ContextValueEncoder valueEncoder, String[] values)
-    {
-        this.valueEncoder = valueEncoder;
-        this.values = values;
-    }
-
-    public int getCount()
-    {
-        return values == null ? 0 : values.length;
-    }
-
-    public <T> T get(Class<T> desiredType, int index)
-    {
-        return valueEncoder.toValue(desiredType, values[index]);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ZeroNullFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ZeroNullFieldStrategy.java
deleted file mode 100644
index b38b0e1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/ZeroNullFieldStrategy.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.NullFieldStrategy;
-
-/**
- * Treats nulls to or from the client as if they were 0's.
- */
-public class ZeroNullFieldStrategy implements NullFieldStrategy
-{
-    /**
-     * Returns the value 0.
-     */
-    public Object replaceToClient()
-    {
-        return 0L;
-    }
-
-    /**
-     * Returns "0".
-     */
-    public String replaceFromClient()
-    {
-        return "0";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java
deleted file mode 100644
index 442240d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/antlr/BaseLexer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.antlr;
-
-import org.antlr.runtime.CharStream;
-import org.antlr.runtime.Lexer;
-import org.antlr.runtime.RecognizerSharedState;
-import org.antlr.runtime.RecognitionException;
-
-public abstract class BaseLexer extends Lexer
-{
-    protected BaseLexer()
-    {
-    }
-
-    protected BaseLexer(CharStream charStream,
-                        RecognizerSharedState recognizerSharedState)
-    {
-        super(charStream, recognizerSharedState);
-    }
-
-    protected void stripLeadingPlus()
-    {
-        String text = getText();
-
-        // For compatibility with Tapestry 5.0, we need to allow a sign of '+', which Long.parseLong()
-        // doesn't accept. To keep things downstream simple, we eliminate the '+' here.
-
-        if (text.startsWith("+"))
-        {
-            setText(text.substring(1));
-        }
-    }
-
-    @Override
-    public void reportError(RecognitionException e)
-    {
-        throw new RuntimeException(String.format("Unable to parse input at character position %d",
-                                                 e.charPositionInLine + 1),
-                                   e);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java
deleted file mode 100644
index 212b782..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/antlr/BaseParser.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.antlr;
-
-import org.antlr.runtime.Parser;
-import org.antlr.runtime.TokenStream;
-import org.antlr.runtime.RecognizerSharedState;
-
-public class BaseParser extends Parser
-{
-    public BaseParser(TokenStream tokenStream)
-    {
-        super(tokenStream);
-    }
-
-    public BaseParser(TokenStream tokenStream,
-                      RecognizerSharedState recognizerSharedState)
-    {
-        super(tokenStream, recognizerSharedState);
-    }
-
-    @Override
-    public void emitErrorMessage(String message)
-    {
-        // This is caught and more properly reported later.
-        throw new RuntimeException(message);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java
deleted file mode 100644
index 6213ddc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelImpl.java
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.beaneditor.RelativePosition;
-import org.apache.tapestry5.internal.services.CoercingPropertyConduitWrapper;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.PropertyConduitSource;
-
-public class BeanModelImpl<T> implements BeanModel<T>
-{
-    private final Class<T> beanType;
-
-    private final PropertyConduitSource propertyConduitSource;
-
-    private final TypeCoercer typeCoercer;
-
-    private final Messages messages;
-
-    private final ObjectLocator locator;
-
-    private final Map<String, PropertyModel> properties = CollectionFactory.newCaseInsensitiveMap();
-
-    // The list of property names, in desired order (generally not alphabetical order).
-
-    private final List<String> propertyNames = CollectionFactory.newList();
-
-    public BeanModelImpl(Class<T> beanType, PropertyConduitSource propertyConduitSource, TypeCoercer typeCoercer,
-            Messages messages, ObjectLocator locator)
-
-    {
-        this.beanType = beanType;
-        this.propertyConduitSource = propertyConduitSource;
-        this.typeCoercer = typeCoercer;
-        this.messages = messages;
-        this.locator = locator;
-    }
-
-    public Class<T> getBeanType()
-    {
-        return beanType;
-    }
-
-    public T newInstance()
-    {
-        return locator.autobuild("Instantiating new instance of " + beanType.getName(), beanType);
-    }
-
-    public PropertyModel add(String propertyName)
-    {
-        PropertyConduit conduit = createConduit(propertyName);
-
-        return add(propertyName, conduit);
-    }
-
-    private void validateNewPropertyName(String propertyName)
-    {
-        assert InternalUtils.isNonBlank(propertyName);
-        if (properties.containsKey(propertyName))
-            throw new RuntimeException(String.format(
-                    "Bean editor model for %s already contains a property model for property '%s'.",
-                    beanType.getName(), propertyName));
-    }
-
-    public PropertyModel add(RelativePosition position, String existingPropertyName, String propertyName,
-            PropertyConduit conduit)
-    {
-        assert position != null;
-        validateNewPropertyName(propertyName);
-
-        // Locate the existing one.
-
-        PropertyModel existing = get(existingPropertyName);
-
-        // Use the case normalized property name.
-
-        int pos = propertyNames.indexOf(existing.getPropertyName());
-
-        PropertyModel newModel = new PropertyModelImpl(this, propertyName, conduit, messages);
-
-        properties.put(propertyName, newModel);
-
-        int offset = position == RelativePosition.AFTER ? 1 : 0;
-
-        propertyNames.add(pos + offset, propertyName);
-
-        return newModel;
-    }
-
-    public PropertyModel add(RelativePosition position, String existingPropertyName, String propertyName)
-    {
-        PropertyConduit conduit = createConduit(propertyName);
-
-        return add(position, existingPropertyName, propertyName, conduit);
-    }
-
-    public PropertyModel add(String propertyName, PropertyConduit conduit)
-    {
-        validateNewPropertyName(propertyName);
-
-        PropertyModel propertyModel = new PropertyModelImpl(this, propertyName, conduit, messages);
-
-        properties.put(propertyName, propertyModel);
-
-        // Remember the order in which the properties were added.
-
-        propertyNames.add(propertyName);
-
-        return propertyModel;
-    }
-
-    private CoercingPropertyConduitWrapper createConduit(String propertyName)
-    {
-        return new CoercingPropertyConduitWrapper(propertyConduitSource.create(beanType, propertyName), typeCoercer);
-    }
-
-    public PropertyModel get(String propertyName)
-    {
-        PropertyModel propertyModel = properties.get(propertyName);
-
-        if (propertyModel == null)
-            throw new UnknownValueException(String.format(
-                    "Bean editor model for %s does not contain a property named '%s'.", beanType.getName(),
-                    propertyName), new AvailableValues("Defined properties", propertyNames));
-
-        return propertyModel;
-    }
-
-    public PropertyModel getById(String propertyId)
-    {
-        for (PropertyModel model : properties.values())
-        {
-            if (model.getId().equalsIgnoreCase(propertyId))
-                return model;
-        }
-
-        // Not found, so we throw an exception. A bit of work to set
-        // up the exception however.
-
-        List<String> ids = CollectionFactory.newList();
-
-        for (PropertyModel model : properties.values())
-        {
-            ids.add(model.getId());
-        }
-
-        throw new UnknownValueException(String.format(
-                "Bean editor model for %s does not contain a property with id '%s'.", beanType.getName(), propertyId),
-                new AvailableValues("Defined property ids", ids));
-    }
-
-    public List<String> getPropertyNames()
-    {
-        return CollectionFactory.newList(propertyNames);
-    }
-
-    public BeanModel<T> exclude(String... propertyNames)
-    {
-        for (String propertyName : propertyNames)
-        {
-            PropertyModel model = properties.get(propertyName);
-
-            if (model == null)
-                continue;
-
-            // De-referencing from the model is needed because the name provided may not be a
-            // case-exact match, so we get the normalized or canonical name from the model because
-            // that's the one in propertyNames.
-
-            this.propertyNames.remove(model.getPropertyName());
-
-            properties.remove(propertyName);
-        }
-
-        return this;
-    }
-
-    public BeanModel<T> reorder(String... propertyNames)
-    {
-        List<String> remainingPropertyNames = CollectionFactory.newList(this.propertyNames);
-        List<String> reorderedPropertyNames = CollectionFactory.newList();
-
-        for (String name : propertyNames)
-        {
-            PropertyModel model = get(name);
-
-            // Get the canonical form (which may differ from name in terms of case)
-            String canonical = model.getPropertyName();
-
-            reorderedPropertyNames.add(canonical);
-
-            remainingPropertyNames.remove(canonical);
-        }
-
-        this.propertyNames.clear();
-        this.propertyNames.addAll(reorderedPropertyNames);
-
-        // Any unspecified names are ordered to the end. Don't want them? Remove them instead.
-        this.propertyNames.addAll(remainingPropertyNames);
-
-        return this;
-    }
-
-    public BeanModel<T> include(String... propertyNames)
-    {
-        List<String> reorderedPropertyNames = CollectionFactory.newList();
-        Map<String, PropertyModel> reduced = CollectionFactory.newCaseInsensitiveMap();
-
-        for (String name : propertyNames)
-        {
-
-            PropertyModel model = get(name);
-
-            String canonical = model.getPropertyName();
-
-            reorderedPropertyNames.add(canonical);
-            reduced.put(canonical, model);
-
-        }
-
-        this.propertyNames.clear();
-        this.propertyNames.addAll(reorderedPropertyNames);
-
-        properties.clear();
-        properties.putAll(reduced);
-
-        return this;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("BeanModel[");
-        builder.append(ClassFabUtils.toJavaClassName(beanType));
-
-        builder.append(" properties:");
-        String sep = "";
-
-        for (String name : propertyNames)
-        {
-            builder.append(sep);
-            builder.append(name);
-
-            sep = ", ";
-        }
-
-        builder.append("]");
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java
deleted file mode 100644
index fde048a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtils.java
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Utilities used in a few places to modify an existing {@link BeanModel}.
- */
-public final class BeanModelUtils
-{
-
-    /**
-     * Performs standard set of modifications to a {@link org.apache.tapestry5.beaneditor.BeanModel}
-     * . First new
-     * properties may be added, then properties removed, then properties reordered.
-     * 
-     * @param model
-     *            to modifiy
-     * @param addPropertyNames
-     *            comma seperated list of property names to add, or null
-     * @param includePropertyNames
-     *            comma seperated list of property names to include
-     * @param excludePropertyNames
-     *            comma seperated list of property names to exclude, or null
-     * @param reorderPropertyNames
-     *            comma seperated list of property names to reorder, or null
-     */
-    public static void modify(BeanModel model, String addPropertyNames,
-            String includePropertyNames, String excludePropertyNames, String reorderPropertyNames)
-    {
-        if (addPropertyNames != null)
-            add(model, addPropertyNames);
-
-        if (includePropertyNames != null)
-            include(model, join(includePropertyNames, addPropertyNames));
-
-        if (excludePropertyNames != null)
-            exclude(model, excludePropertyNames);
-
-        if (reorderPropertyNames != null)
-            reorder(model, reorderPropertyNames);
-    }
-
-    private static final String join(String firstList, String optionalSecondList)
-    {
-        if (InternalUtils.isBlank(optionalSecondList))
-            return firstList;
-
-        return firstList + "," + optionalSecondList;
-    }
-
-    /**
-     * Adds empty properties to the bean model. New properties are added with a <em>null</em>
-     * {@link org.apache.tapestry5.PropertyConduit}. `
-     * 
-     * @param model
-     *            to be modified
-     * @param propertyNames
-     *            comma-separated list of property names
-     */
-    public static void add(BeanModel model, String propertyNames)
-    {
-        for (String name : split(propertyNames))
-        {
-            model.add(name, null);
-        }
-    }
-
-    /**
-     * Removes properties from the bean model.
-     * 
-     * @param model
-     * @param propertyNames
-     *            comma-separated list of property names
-     * @see BeanModel#exclude(String...)
-     */
-    public static void exclude(BeanModel model, String propertyNames)
-    {
-        model.exclude(split(propertyNames));
-    }
-
-    /**
-     * Selects a subset of the properties to keep, and reorders them.
-     */
-    public static void include(BeanModel model, String propertyNames)
-    {
-        model.include(split(propertyNames));
-    }
-
-    /**
-     * Reorders properties within the bean model.
-     * 
-     * @param model
-     * @param propertyNames
-     *            comma-separated list of property names
-     * @see BeanModel#reorder(String...)
-     */
-    public static void reorder(BeanModel model, String propertyNames)
-    {
-        model.reorder(split(propertyNames));
-    }
-
-    static String[] split(String propertyNames)
-    {
-        String trimmed = propertyNames.trim();
-
-        if (trimmed.length() == 0)
-            return InternalConstants.EMPTY_STRING_ARRAY;
-
-        return trimmed.split("\\s*,\\s*");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java
deleted file mode 100644
index d3caa9a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/EnvironmentMessages.java
+++ /dev/null
@@ -1,47 +0,0 @@
-
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.ioc.Messages;
-
-/**
- * Holds the current (overrides) Messages object and override id for placemnt into the environment
- * by FieldValidatorDefaultSourceImpl so ValidationConstraintGenerator implementations have access
- * to the catalog if necessary.
- */
-public class EnvironmentMessages
-{
-
-    private final Messages messages;
-    private final String overrideId;
-
-    public EnvironmentMessages(Messages messages, String overrideId)
-    {
-        this.messages = messages;
-        this.overrideId = overrideId;
-    }
-
-    public Messages getMessages()
-    {
-        return messages;
-    }
-
-    public String getOverrideId()
-    {
-        return overrideId;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java
deleted file mode 100644
index 0156a93..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/MessagesConstraintGenerator.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.PropertyEditContext;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.util.List;
-import java.util.Arrays;
-import java.util.regex.Pattern;
-
-/**
- * Generates constraints from the containing component's property file.
- * Looks for a key in the form: propertyId-validate. 
- *
- */
-public class MessagesConstraintGenerator implements ValidationConstraintGenerator
-{
-
-    private final Environment environment;
-    private final String format="%s-validate";
-    private final Pattern splitPattern;
-
-    public MessagesConstraintGenerator(final Environment environment) {
-        this.environment = environment;
-        splitPattern = Pattern.compile(ValidateAnnotationConstraintGenerator.VALIDATOR_PATTERN);
-    }
-
-    public List<String> buildConstraints(Class propertyType, AnnotationProvider annotationProvider)
-    {
-        EnvironmentMessages environmentMessages = environment.peek(EnvironmentMessages.class);
-        if (environmentMessages == null) {
-            return null;
-        }
-
-        String key = String.format(format,environmentMessages.getOverrideId());
-        Messages m = environmentMessages.getMessages();
-        if (!m.contains(key))
-        {
-            return null;
-        }
-
-        String result = m.get(key);
-        if (InternalUtils.isBlank(result))
-        {
-            return null;
-        }
-        return Arrays.asList(splitPattern.split(result));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java
deleted file mode 100644
index 7dcc77c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PrimitiveFieldConstraintGenerator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Adds a "required" constraint for any property of whose type is a primitive (not a wrapper or reference) type.
- */
-public class PrimitiveFieldConstraintGenerator implements ValidationConstraintGenerator
-{
-    private final List<String> REQUIRED = Arrays.asList("required");
-
-    public List<String> buildConstraints(Class propertyType, AnnotationProvider annotationProvider)
-    {
-        return propertyType.isPrimitive() ? REQUIRED : null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java
deleted file mode 100644
index 3ac921a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/PropertyModelImpl.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import java.lang.annotation.Annotation;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-
-@SuppressWarnings("all")
-public class PropertyModelImpl implements PropertyModel
-{
-    private final BeanModel model;
-
-    private final String name;
-
-    private final PropertyConduit conduit;
-
-    private final String id;
-
-    private String label;
-
-    private String dataType;
-
-    private boolean sortable;
-
-    public PropertyModelImpl(BeanModel model, String name, PropertyConduit conduit, Messages messages)
-    {
-        this.model = model;
-        this.name = name;
-        this.conduit = conduit;
-
-        id = TapestryInternalUtils.extractIdFromPropertyExpression(name);
-
-        label = TapestryInternalUtils.defaultLabel(id, messages, name);
-
-        // Primitive types need to be converted to wrapper types before checking to see
-        // if they are sortable.
-
-        Class wrapperType = ClassFabUtils.getWrapperType(getPropertyType());
-
-        sortable = Comparable.class.isAssignableFrom(wrapperType);
-    }
-
-    public String getId()
-    {
-        return id;
-    }
-
-    public Class getPropertyType()
-    {
-        return conduit == null ? Object.class : conduit.getPropertyType();
-    }
-
-    public PropertyConduit getConduit()
-    {
-        return conduit;
-    }
-
-    public PropertyModel label(String label)
-    {
-        assert InternalUtils.isNonBlank(label);
-        this.label = label;
-
-        return this;
-    }
-
-    public String getLabel()
-    {
-        return label;
-    }
-
-    public String getPropertyName()
-    {
-        return name;
-    }
-
-    public BeanModel model()
-    {
-        return model;
-    }
-
-    public PropertyModel dataType(String dataType)
-    {
-        this.dataType = dataType;
-
-        return this;
-    }
-
-    public String getDataType()
-    {
-        return dataType;
-    }
-
-    public boolean isSortable()
-    {
-        return sortable;
-    }
-
-    public PropertyModel sortable(boolean sortable)
-    {
-        this.sortable = sortable;
-
-        return this;
-    }
-
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return conduit == null ? null : conduit.getAnnotation(annotationClass);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java
deleted file mode 100644
index df4600e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGenerator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.regex.Pattern;
-
-/**
- * Checks for the {@link Validate} annotation, and extracts its value to form the result.
- */
-public class ValidateAnnotationConstraintGenerator implements ValidationConstraintGenerator
-{
-
-    static final String VALIDATOR_PATTERN="(?<!\\\\)\\s*,\\s*(?!([0-9]*\\}))";
-
-    private final Pattern validatorPattern;
-
-    public ValidateAnnotationConstraintGenerator()
-    {
-        validatorPattern = Pattern.compile(VALIDATOR_PATTERN);
-    }
-
-    public List<String> buildConstraints(Class propertyType, AnnotationProvider annotationProvider)
-    {
-        Validate annotation = annotationProvider.getAnnotation(Validate.class);
-
-        if (annotation == null)
-            return null;
-
-        //TAP5-520: Commas within regular expressions like {n,m} or {n,} or a\,b .
-        //We use Negative Lookahead to avoid matching the case a\,b .
-        //We use Positive Lookahead to avoid matching cases {n,m} and {n,}.
-        //http://www.regular-expressions.info/lookaround.html
-        return Arrays.asList(validatorPattern.split(annotation.value()));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java
deleted file mode 100644
index f2f11cf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AbstractBinding.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-import java.lang.annotation.Annotation;
-
-/**
- * Abstract base class for bindings. Assumes that the binding is read only and invariant. Subclasses must provide an
- * implementation of {@link Binding#get()}.
- */
-public abstract class AbstractBinding extends BaseLocatable implements Binding
-{
-    public AbstractBinding()
-    {
-        this(null);
-    }
-
-    protected AbstractBinding(Location location)
-    {
-        super(location);
-    }
-
-    /**
-     * @throws TapestryException always
-     */
-    public void set(Object value)
-    {
-        throw new TapestryException(BindingsMessages.bindingIsReadOnly(this), this, null);
-    }
-
-    /**
-     * Returns true. Subclasses that do not supply a fixed, read-only value should override this method to return
-     * false.
-     */
-    public boolean isInvariant()
-    {
-        return true;
-    }
-
-    /**
-     * Returns the actual class, by invoking {@link Binding#get()}. Subclasses may override this method to work more
-     * efficiently (say, when the binding type is known statically).
-     */
-    public Class getBindingType()
-    {
-        return get().getClass();
-    }
-
-    /**
-     * Always returns null. Bindings that provide access to a method or field will override this method to return the
-     * appropriate annotation.
-     */
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
deleted file mode 100644
index 99259c9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBinding.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.Asset2;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Location;
-
-public class AssetBinding extends AbstractBinding
-{
-    private final String description;
-
-    private final Asset2 asset;
-
-    public AssetBinding(Location location, String description, Asset asset)
-    {
-        super(location);
-
-        this.description = description;
-        this.asset = TapestryInternalUtils.toAsset2(asset);
-    }
-
-    @Override
-    public Class getBindingType()
-    {
-        return Asset2.class;
-    }
-
-    public Object get()
-    {
-        return asset;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("AssetBinding[%s: %s]", description, asset);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
deleted file mode 100644
index 45dc8e2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/AssetBindingFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.BindingFactory;
-
-/**
- * Binding factory where the expression is a reference to an asset.
- *
- * @see org.apache.tapestry5.services.AssetSource
- * @see org.apache.tapestry5.internal.bindings.ContextBindingFactory
- */
-public class AssetBindingFactory implements BindingFactory
-{
-    private final AssetSource source;
-
-    public AssetBindingFactory(AssetSource source)
-    {
-        this.source = source;
-    }
-
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        Resource baseResource = container.getBaseResource();
-
-        Asset asset = source.getAsset(baseResource, expression, container.getLocale());
-
-        return new AssetBinding(location, description, asset);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BindingsMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BindingsMessages.java
deleted file mode 100644
index 39ba6a4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BindingsMessages.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-final class BindingsMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(BindingsMessages.class);
-
-    private BindingsMessages()
-    {
-    }
-
-    static String bindingIsReadOnly(Binding binding)
-    {
-        return MESSAGES.format("binding-is-read-only", binding);
-    }
-
-    static String validateBindingForFieldsOnly(ComponentResources component)
-    {
-        return MESSAGES.format("validate-binding-for-fields-only", component.getCompleteId());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java
deleted file mode 100644
index 46274fc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBinding.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-
-public class BlockBinding extends AbstractBinding
-{
-    private final String description;
-
-    private final ComponentResources component;
-
-    private final String blockId;
-
-    public BlockBinding(Location location, String description, ComponentResources component, String blockId
-    )
-    {
-        super(location);
-
-        this.description = description;
-        this.component = component;
-        this.blockId = blockId;
-    }
-
-    public Object get()
-    {
-        return component.getBlock(blockId);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("BlockBinding[%s: %s]", description, blockId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java
deleted file mode 100644
index c0bce25..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/BlockBindingFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-
-/**
- * Accesses a named block from the container. The block must exist.
- */
-public class BlockBindingFactory implements BindingFactory
-{
-    public Binding newBinding(String description, ComponentResources container,
-                              ComponentResources component, String expression, Location location)
-    {
-        return new BlockBinding(location, description, container, expression);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java
deleted file mode 100644
index 5617939..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBinding.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-
-public class ComponentBinding extends AbstractBinding
-{
-    private final String description;
-
-    private final ComponentResources resources;
-
-    private final String componentId;
-
-    public ComponentBinding(Location location, String description, ComponentResources resources, String componentId
-    )
-    {
-        super(location);
-
-        this.description = description;
-        this.resources = resources;
-        this.componentId = componentId;
-    }
-
-    public Object get()
-    {
-        return resources.getEmbeddedComponent(componentId);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ComponentResources[%s %s]", description, componentId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java
deleted file mode 100644
index 9432d53..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ComponentBindingFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-
-/**
- * The "component:" binding prefix, which allows access to a child component via its id.
- */
-public class ComponentBindingFactory implements BindingFactory
-{
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        return new ComponentBinding(location, description, container, expression);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
deleted file mode 100644
index 1abb9bb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ContextBindingFactory.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.BindingFactory;
-
-/**
- * Specialization of {@link org.apache.tapestry5.internal.bindings.AssetBindingFactory} that is explicitly limited to
- * context assets.
- *
- * @since 5.1.0.0
- */
-public class ContextBindingFactory implements BindingFactory
-{
-    private final AssetSource source;
-
-    public ContextBindingFactory(AssetSource source)
-    {
-        this.source = source;
-    }
-
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        Asset asset = source.getContextAsset(expression, container.getLocale());
-
-        return new AssetBinding(location, description, asset);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InternalPropBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InternalPropBinding.java
deleted file mode 100644
index 7e6cdc8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InternalPropBinding.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-
-/**
- * Internal marker interface for {@linkplain org.apache.tapestry5.internal.bindings.PropBinding}
- *
- */
-public interface InternalPropBinding extends Binding
-{
-	/**
-	 * Returns the name of the property, if exists.
-	 */
-	String getPropertyName();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
deleted file mode 100644
index 1e8ab0d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/InvariantBinding.java
+++ /dev/null
@@ -1,57 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Extends {@link org.apache.tapestry5.internal.bindings.AbstractBinding} with a description and a binding type, with
- * invariant forced to true.
- */
-public abstract class InvariantBinding extends AbstractBinding
-{
-    private final Class bindingType;
-
-    protected final String description;
-
-    public InvariantBinding(Location location, Class bindingType, String description)
-    {
-        super(location);
-
-        this.bindingType = bindingType;
-        this.description = description;
-    }
-
-    /**
-     * Returns true.
-     */
-    @Override
-    public boolean isInvariant()
-    {
-        return true;
-    }
-
-    @Override
-    public Class getBindingType()
-    {
-        return bindingType;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("InvariantBinding[%s]", description);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java
deleted file mode 100644
index 776418d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBinding.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Binding type for literal, immutable values. Literal bindings are {@linkplain org.apache.tapestry5.Binding#isInvariant()
- * invariant}; any value provided by a LiteralBinding, even if {@linkplain org.apache.tapestry5.ioc.services.TypeCoercer#coerce(Object,
- * Class) coerced}, will be cached aggresively by Tapestry cmponent.
- * <p/>
- * <p>LiteralBindings are often used for literal string values supplied in-line in the component template, but is used
- * for many other things as well, any kind of fixed, read-only value.
- */
-public class LiteralBinding extends AbstractBinding
-{
-    private final String description;
-
-    private final Object value;
-
-    public LiteralBinding(Location location, String description, Object value)
-    {
-        super(location);
-        this.description = description;
-        this.value = value;
-    }
-
-    public Object get()
-    {
-        return value;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("LiteralBinding[%s: %s]", description, value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java
deleted file mode 100644
index 24ae056..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/LiteralBindingFactory.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-
-/**
- * Binding factory that treats the expression as a literal string. The simplest form of binding.
- *
- * @see org.apache.tapestry5.internal.bindings.LiteralBinding
- */
-public class LiteralBindingFactory implements BindingFactory
-{
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        return new LiteralBinding(location, description, expression);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java
deleted file mode 100644
index 0600850..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/MessageBindingFactory.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-
-/**
- * Implementation of the message: binding prefix -- we simply get the message key and store it inside at {@link
- * LiteralBinding}.
- */
-public class MessageBindingFactory implements BindingFactory
-{
-
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        String messageValue = container.getMessages().get(expression);
-
-        return new LiteralBinding(location, description, messageValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java
deleted file mode 100644
index d530133..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/NullFieldStrategyBindingFactory.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.NullFieldStrategySource;
-
-/**
- * Treats the expression as the name of a {@link org.apache.tapestry5.NullFieldStrategy}, accessed via the {@link
- * org.apache.tapestry5.services.NullFieldStrategySource} service.
- */
-public class NullFieldStrategyBindingFactory implements BindingFactory
-{
-    private NullFieldStrategySource strategySource;
-
-    public NullFieldStrategyBindingFactory(NullFieldStrategySource strategySource)
-    {
-        this.strategySource = strategySource;
-    }
-
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        NullFieldStrategy strategy = strategySource.get(expression);
-
-        return new LiteralBinding(location, description, strategy);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
deleted file mode 100644
index 4656fe2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBinding.java
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.Invariant;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-import java.lang.annotation.Annotation;
-
-/**
- * Base class for bindings created by the {@link org.apache.tapestry5.internal.bindings.PropBindingFactory}. A subclass
- * of this is created at runtime.
- */
-public class PropBinding extends AbstractBinding implements InternalPropBinding
-{
-    private final Object root;
-
-    private final PropertyConduit conduit;
-
-    private final String toString;
-
-    private boolean invariant;
-
-    public PropBinding(final Location location, final Object root, final PropertyConduit conduit, final String toString
-    )
-    {
-        super(location);
-
-        this.root = root;
-        this.conduit = conduit;
-        this.toString = toString;
-
-        invariant = conduit.getAnnotation(Invariant.class) != null;
-    }
-
-    /**
-     * The default implementation of get() will throw a TapestryException (binding is write only). The fabricated
-     * subclass <em>may</em> override this method (as well as set()).
-     */
-    public Object get()
-    {
-        try
-        {
-            return conduit.get(root);
-        }
-        catch (Exception ex)
-        {
-            throw new TapestryException(ex.getMessage(), getLocation(), ex);
-        }
-    }
-
-    @Override
-    public void set(Object value)
-    {
-        try
-        {
-            conduit.set(root, value);
-        }
-        catch (Exception ex)
-        {
-            throw new TapestryException(ex.getMessage(), getLocation(), ex);
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        return toString;
-    }
-
-    /**
-     * Almost always returns false, unless the conduit provides the {@link org.apache.tapestry5.internal.services.Invariant}
-     * annotation.
-     */
-    @Override
-    public boolean isInvariant()
-    {
-        return invariant;
-    }
-
-    @Override
-    public Class getBindingType()
-    {
-        return conduit.getPropertyType();
-    }
-
-    @Override
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return conduit.getAnnotation(annotationClass);
-    }
-
-	public String getPropertyName() 
-	{
-		return TapestryInternalUtils.toInternalPropertyConduit(conduit).getPropertyName();
-	}
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
deleted file mode 100644
index 2865808..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/PropBindingFactory.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.PropertyConduitSource;
-
-/**
- * Binding factory for reading and updating JavaBean properties.
- * <p/>
- * Expression are evaluated via a {@link PropertyConduit}, which is generated by {@link PropertyConduitSource} (which
- * therefore defines the expression language).
- */
-public class PropBindingFactory implements BindingFactory
-{
-    private final PropertyConduitSource source;
-
-    private final StringInterner interner;
-
-    public PropBindingFactory(PropertyConduitSource propertyConduitSource, StringInterner interner)
-    {
-        source = propertyConduitSource;
-        this.interner = interner;
-    }
-
-    public Binding newBinding(String description, ComponentResources container,
-                              ComponentResources component, String expression, Location location)
-    {
-        Object target = container.getComponent();
-        Class targetClass = target.getClass();
-
-        PropertyConduit conduit = source.create(targetClass, expression);
-
-        String toString = interner.format("PropBinding[%s %s(%s)]", description, container
-                .getCompleteId(), expression);
-
-        return new PropBinding(location, target, conduit, toString);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java
deleted file mode 100644
index b29f23d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBinding.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-
-public class RenderVariableBinding extends AbstractBinding
-{
-    private final String description;
-    private final ComponentResources resources;
-    private final String name;
-
-    public RenderVariableBinding(Location location, String description, ComponentResources resources, String name
-    )
-    {
-        super(location);
-
-        this.description = description;
-        this.resources = resources;
-        this.name = name;
-    }
-
-    @Override
-    public void set(Object value)
-    {
-        resources.storeRenderVariable(name, value);
-    }
-
-    /**
-     * Returns false, render variables are always variable.
-     */
-    @Override
-    public boolean isInvariant()
-    {
-        return false;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("RenderVariable[%s %s]", description, name);
-    }
-
-
-    public Object get()
-    {
-        return resources.getRenderVariable(name);
-    }
-
-    /**
-     * Always returns Object since we don't (statically) know the type of object.
-     */
-    @Override
-    public Class getBindingType()
-    {
-        return Object.class;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java
deleted file mode 100644
index 84948ef..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/RenderVariableBindingFactory.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-
-public class RenderVariableBindingFactory implements BindingFactory
-{
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                              String expression, Location location)
-    {
-        return new RenderVariableBinding(location, description, container, expression);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
deleted file mode 100644
index dce5a6b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.services.BindingFactory;
-
-public class SymbolBindingFactory implements BindingFactory
-{
-    private SymbolSource symbolSource;
-    
-    public SymbolBindingFactory(SymbolSource symbolSource)
-    {
-        this.symbolSource = symbolSource;
-    }
-
-    public Binding newBinding(String description, ComponentResources container,
-            ComponentResources component, String expression, Location location)
-    {
-     
-        String value = symbolSource.valueForSymbol(expression);
-        
-        return new LiteralBinding(location, description, value);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java
deleted file mode 100644
index c6e2073..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/TranslateBindingFactory.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.FieldTranslatorSource;
-
-/**
- * Interprets the binding expression as the name of a {@link org.apache.tapestry5.Translator} provided by the {@link
- * org.apache.tapestry5.services.TranslatorSource}.
- */
-public class TranslateBindingFactory implements BindingFactory
-{
-    private final FieldTranslatorSource source;
-
-    private final StringInterner interner;
-
-    public TranslateBindingFactory(FieldTranslatorSource source, StringInterner interner)
-    {
-        this.source = source;
-        this.interner = interner;
-    }
-
-    public Binding newBinding(String description, ComponentResources container,
-                              final ComponentResources component, final String expression, Location location)
-    {
-        return new InvariantBinding(location, FieldTranslator.class, interner.intern(description + ": " + expression))
-        {
-            public Object get()
-            {
-                return source.createTranslator(component, expression);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java
deleted file mode 100644
index a2b04fe..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactory.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.FieldValidatorSource;
-
-/**
- * Factory for bindings that provide a {@link org.apache.tapestry5.FieldValidator} based on a validator specification.
- * This binding factory is only useable with components that implement the {@link org.apache.tapestry5.Field}
- * interface.
- */
-public class ValidateBindingFactory implements BindingFactory
-{
-    private final FieldValidatorSource fieldValidatorSource;
-
-    private final StringInterner interner;
-
-    public ValidateBindingFactory(FieldValidatorSource fieldValidatorSource, StringInterner interner)
-    {
-        this.fieldValidatorSource = fieldValidatorSource;
-        this.interner = interner;
-    }
-
-    public Binding newBinding(String description, ComponentResources container,
-                              ComponentResources component, final String expression, Location location)
-    {
-        Object fieldAsObject = component.getComponent();
-
-        if (!Field.class.isInstance(fieldAsObject))
-            throw new TapestryException(BindingsMessages.validateBindingForFieldsOnly(component),
-                                        location, null);
-
-        final Field field = (Field) fieldAsObject;
-
-        return new InvariantBinding(location, FieldValidator.class, interner.intern(description + ": " + expression))
-        {
-            public Object get()
-            {
-                // The expression is a validator specification, such as "required,minLength=5".
-                // ValidatorBindingFactory is the odd man out becasuse it needs the binding component (the
-                // component whose parameter is to be bound) rather than the containing component, the way
-                // most factories work.
-
-                return fieldValidatorSource.createValidators(field, expression);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java
deleted file mode 100644
index ff80563..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/event/InvalidationEventHubImpl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.event;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newThreadSafeList;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.List;
-
-/**
- * Base implementation class for classes (especially services) that need to manage a list of {@link
- * org.apache.tapestry5.services.InvalidationListener}s.
- */
-public class InvalidationEventHubImpl implements InvalidationEventHub
-{
-    private final List<InvalidationListener> listeners = newThreadSafeList();
-
-    /**
-     * Notifies all {@link InvalidationListener listener}s.
-     */
-    protected final void fireInvalidationEvent()
-    {
-        for (InvalidationListener listener : listeners)
-        {
-            listener.objectWasInvalidated();
-        }
-    }
-
-    public final void addInvalidationListener(InvalidationListener listener)
-    {
-        listeners.add(listener);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/events/EndOfRequestListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/events/EndOfRequestListener.java
deleted file mode 100644
index 7e30e3e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/events/EndOfRequestListener.java
+++ /dev/null
@@ -1,29 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.events;
-
-/**
- * Event listener interface for objects that need to know when the current request finishes.
- *
- * @see org.apache.tapestry5.internal.services.EndOfRequestEventHub
- */
-public interface EndOfRequestListener
-{
-    /**
-     * Notified at the end of the request.  This notification occurs after the response has been sent to the client,
-     * which means that it is to late to (for example) create a new HttpSession.
-     */
-    void requestDidComplete();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
deleted file mode 100644
index 414d146..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/CollectionGridDataSource.java
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.grid;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.grid.ColumnSort;
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.grid.SortConstraint;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-@SuppressWarnings("all")
-public class CollectionGridDataSource implements GridDataSource
-{
-    private final List list;
-
-    public CollectionGridDataSource(final Collection collection)
-    {
-        assert collection != null;
-        list = CollectionFactory.newList(collection);
-    }
-
-    public int getAvailableRows()
-    {
-        return list.size();
-    }
-
-    public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints)
-    {
-        for (SortConstraint constraint : sortConstraints)
-        {
-            final ColumnSort sort = constraint.getColumnSort();
-
-            if (sort == ColumnSort.UNSORTED)
-                continue;
-
-            final PropertyConduit conduit = constraint.getPropertyModel().getConduit();
-
-            final Comparator valueComparator = new Comparator<Comparable>()
-            {
-                public int compare(Comparable o1, Comparable o2)
-                {
-                    // Simplify comparison, and handle case where both are nulls.
-
-                    if (o1 == o2)
-                        return 0;
-
-                    if (o2 == null)
-                        return 1;
-
-                    if (o1 == null)
-                        return -1;
-
-                    return o1.compareTo(o2);
-                }
-            };
-
-            final Comparator rowComparator = new Comparator()
-            {
-                public int compare(Object row1, Object row2)
-                {
-                    Comparable value1 = (Comparable) conduit.get(row1);
-                    Comparable value2 = (Comparable) conduit.get(row2);
-
-                    return valueComparator.compare(value1, value2);
-                }
-            };
-
-            final Comparator reverseComparator = new Comparator()
-            {
-                public int compare(Object o1, Object o2)
-                {
-                    int modifier = sort == ColumnSort.ASCENDING ? 1 : -1;
-
-                    return modifier * rowComparator.compare(o1, o2);
-                }
-            };
-
-            // We can freely sort this list because its just a copy.
-
-            Collections.sort(list, reverseComparator);
-        }
-    }
-
-    /**
-     * Returns the type of the first element in the list, or null if the list is empty.
-     */
-    public Class getRowType()
-    {
-        return list.isEmpty() ? null : list.get(0).getClass();
-    }
-
-    public Object getRowValue(int index)
-    {
-        return list.get(index);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/NullDataSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/NullDataSource.java
deleted file mode 100644
index a08012b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/grid/NullDataSource.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.grid;
-
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.grid.SortConstraint;
-
-import java.util.List;
-
-/**
- * An implementation of {@link org.apache.tapestry5.grid.GridDataSource} used when the value null is provided as the
- * source.
- */
-public class NullDataSource implements GridDataSource
-{
-    public int getAvailableRows()
-    {
-        return 0;
-    }
-
-    public Class getRowType()
-    {
-        return null;
-    }
-
-    public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints)
-    {
-    }
-
-    public Object getRowValue(int index)
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/BufferedGZipOutputStream.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/BufferedGZipOutputStream.java
deleted file mode 100644
index 4508ece..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/BufferedGZipOutputStream.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.gzip;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-import java.io.BufferedOutputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.util.zip.GZIPOutputStream;
-
-/**
- * A buffered output stream that, when a certain number of bytes is buffered (the cutover point) will open a compressed
- * stream (via {@link org.apache.tapestry5.services.Response#getOutputStream(String)}
- */
-public class BufferedGZipOutputStream extends ServletOutputStream
-{
-    private final String contentType;
-
-    private final HttpServletResponse response;
-
-    private final ResponseCompressionAnalyzer analyzer;
-
-    private final int cutover;
-
-    private ByteArrayOutputStream byteArrayOutputStream;
-
-    /**
-     * Initially the ByteArrayOutputStream, later the response output stream (possibly wrapped with a
-     * GZIPOutputStream).
-     */
-    private OutputStream currentOutputStream;
-
-    public BufferedGZipOutputStream(String contentType, HttpServletResponse response, int cutover,
-                                    ResponseCompressionAnalyzer analyzer)
-    {
-        this.contentType = contentType;
-        this.response = response;
-        this.cutover = cutover;
-        this.analyzer = analyzer;
-
-        byteArrayOutputStream = new ByteArrayOutputStream(cutover);
-
-        currentOutputStream = byteArrayOutputStream;
-    }
-
-    private void checkForCutover() throws IOException
-    {
-        if (byteArrayOutputStream == null) return;
-
-        if (byteArrayOutputStream.size() < cutover) return;
-
-        // Time to switch over to GZIP.
-        openResponseOutputStream(true);
-    }
-
-    private void openResponseOutputStream(boolean gzip) throws IOException
-    {
-        OutputStream responseOutputStream = response.getOutputStream();
-
-        boolean useCompression = gzip && analyzer.isCompressable(contentType);
-
-        OutputStream possiblyCompressed = useCompression
-                                          ? new GZIPOutputStream(responseOutputStream)
-                                          : responseOutputStream;
-
-        if (useCompression)
-            response.setHeader(InternalConstants.CONTENT_ENCODING_HEADER, InternalConstants.GZIP_CONTENT_ENCODING);
-
-        currentOutputStream =
-                new BufferedOutputStream(possiblyCompressed);
-
-        // Write what content we already have to the new stream.
-
-        byteArrayOutputStream.writeTo(currentOutputStream);
-
-        byteArrayOutputStream = null;
-    }
-
-    public void write(int b) throws IOException
-    {
-        currentOutputStream.write(b);
-
-        checkForCutover();
-    }
-
-    @Override
-    public void write(byte[] b) throws IOException
-    {
-        currentOutputStream.write(b);
-
-        checkForCutover();
-    }
-
-    @Override
-    public void write(byte[] b, int off, int len) throws IOException
-    {
-        currentOutputStream.write(b, off, len);
-
-        checkForCutover();
-    }
-
-    @Override
-    public void flush() throws IOException
-    {
-        forceOutputStream().flush();
-    }
-
-    @Override
-    public void close() throws IOException
-    {
-        // When closing, if we haven't accumulated enough output yet to start compressing,
-        // then send what we have, uncompressed.
-
-        forceOutputStream().close();
-    }
-
-    private OutputStream forceOutputStream() throws IOException
-    {
-        if (byteArrayOutputStream != null)
-            openResponseOutputStream(false);
-
-        return currentOutputStream;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/GZIPEnabledResponse.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/GZIPEnabledResponse.java
deleted file mode 100644
index 5e30941..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/GZIPEnabledResponse.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.gzip;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpServletResponseWrapper;
-import java.io.IOException;
-
-public class GZIPEnabledResponse extends HttpServletResponseWrapper
-{
-    private final int cutover;
-
-    private final HttpServletRequest request;
-
-    private final HttpServletResponse response;
-
-    private final ResponseCompressionAnalyzer analyzer;
-
-    private boolean contentLengthSet = false;
-
-    public GZIPEnabledResponse(HttpServletResponse response, HttpServletRequest request, int cutover,
-            ResponseCompressionAnalyzer analyzer)
-    {
-        super(response);
-
-        this.request = request;
-        this.response = response;
-        this.cutover = cutover;
-        this.analyzer = analyzer;
-    }
-
-    public void setContentLength(int len)
-    {
-        super.setContentLength(len);
-
-        contentLengthSet = true;
-    }
-
-    @Override
-    public ServletOutputStream getOutputStream() throws IOException
-    {
-        if (contentLengthSet || isCompressionDisabled())
-            return super.getOutputStream();
-
-        String contentType = getContentType();
-
-        return new BufferedGZipOutputStream(contentType, response, cutover, analyzer);
-    }
-
-    private boolean isCompressionDisabled()
-    {
-        return request.getAttribute(InternalConstants.SUPPRESS_COMPRESSION) != null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/GZipFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/GZipFilter.java
deleted file mode 100644
index 8859f55..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/gzip/GZipFilter.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.gzip;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.HttpServletRequestFilter;
-import org.apache.tapestry5.services.HttpServletRequestHandler;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * Filter that adds GZIP compression to the response, if the client supports it.
- */
-public class GZipFilter implements HttpServletRequestFilter
-{
-    private final int cutover;
-
-    private final ResponseCompressionAnalyzer analyzer;
-
-    public GZipFilter(
-            @Symbol(SymbolConstants.MIN_GZIP_SIZE)
-            int cutover,
-
-            ResponseCompressionAnalyzer analyzer)
-    {
-        this.cutover = cutover;
-        this.analyzer = analyzer;
-    }
-
-    public boolean service(HttpServletRequest request, HttpServletResponse response, HttpServletRequestHandler handler)
-            throws IOException
-    {
-        HttpServletResponse newResponse = analyzer.isGZipSupported()
-                                          ? new GZIPEnabledResponse(response, request, cutover, analyzer)
-                                          : response;
-
-        return handler.service(request, newResponse);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/ModelMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/ModelMessages.java
deleted file mode 100644
index 8bb5545..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/ModelMessages.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.model;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-class ModelMessages
-{
-    private final static Messages MESSAGES = MessagesImpl.forClass(ModelMessages.class);
-
-    private ModelMessages()
-    {
-    }
-
-    static String duplicateParameter(String parameterName, String componentName)
-    {
-        return MESSAGES.format("duplicate-parameter", parameterName, componentName);
-    }
-
-    static String duplicateParameterValue(String parameterName, String componentId, String componentClassName)
-    {
-        return MESSAGES.format("duplicate-parameter-value", parameterName, componentId, componentClassName);
-    }
-
-    static String duplicateComponentId(String id, String componentClassName)
-    {
-        return MESSAGES.format("duplicate-component-id", id, componentClassName);
-    }
-
-    static String missingPersistentField(String fieldName)
-    {
-        return MESSAGES.format("missing-persistent-field", fieldName);
-    }
-
-    static String duplicateMixin(String simpleName, String componentId)
-    {
-        return MESSAGES.format("duplicate-mixin", simpleName, componentId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
deleted file mode 100644
index e5c7e7f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableComponentModelImpl.java
+++ /dev/null
@@ -1,371 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.model;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
-import org.apache.tapestry5.model.ParameterModel;
-import org.slf4j.Logger;
-
-/**
- * Internal implementation of {@link org.apache.tapestry5.model.MutableComponentModel}.
- */
-public final class MutableComponentModelImpl implements MutableComponentModel
-{
-    private final ComponentModel parentModel;
-
-    private final Resource baseResource;
-
-    private final String componentClassName;
-
-    private final IdAllocator persistentFieldNameAllocator = new IdAllocator();
-
-    private final Logger logger;
-
-    private Map<String, ParameterModel> parameters;
-
-    private Map<String, EmbeddedComponentModel> embeddedComponents;
-
-    /**
-     * Maps from field name to strategy.
-     */
-    private Map<String, String> persistentFields;
-
-    private List<String> mixinClassNames;
-
-    private Map<String, String[]> mixinOrders;
-
-    private boolean informalParametersSupported;
-
-    private boolean mixinAfter;
-
-    private Map<String, String> metaData;
-
-    private Set<Class> handledRenderPhases;
-
-    private Map<String, Boolean> handledEvents;
-
-    public MutableComponentModelImpl(String componentClassName, Logger logger,
-            Resource baseResource, ComponentModel parentModel)
-    {
-        this.componentClassName = componentClassName;
-        this.logger = logger;
-        this.baseResource = baseResource;
-        this.parentModel = parentModel;
-
-        // Pre-allocate names from the parent, to avoid name collisions.
-
-        if (this.parentModel != null)
-        {
-            for (String name : this.parentModel.getPersistentFieldNames())
-            {
-                persistentFieldNameAllocator.allocateId(name);
-            }
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ComponentModel[%s]", componentClassName);
-    }
-
-    public Logger getLogger()
-    {
-        return logger;
-    }
-
-    public Resource getBaseResource()
-    {
-        return baseResource;
-    }
-
-    public String getComponentClassName()
-    {
-        return componentClassName;
-    }
-
-    public void addParameter(String name, boolean required, boolean allowNull,
-            String defaultBindingPrefix, boolean cached)
-    {
-        assert InternalUtils.isNonBlank(name);
-        assert InternalUtils.isNonBlank(defaultBindingPrefix);
-        if (parameters == null)
-            parameters = CollectionFactory.newCaseInsensitiveMap();
-
-        if (parameters.containsKey(name))
-            throw new IllegalArgumentException(ModelMessages.duplicateParameter(name,
-                    componentClassName));
-
-        parameters.put(name, new ParameterModelImpl(name, required, allowNull,
-                defaultBindingPrefix, cached));
-    }
-
-    public void addParameter(String name, boolean required, boolean allowNull,
-            String defaultBindingPrefix)
-    {
-        // assume /false/ for the default because:
-        // if the parameter is actually cached, the only effect will be to reduce that optimization
-        // in certain
-        // scenarios (mixin BindParameter). But if the value is NOT cached but we say it is,
-        // we'll get incorrect behavior.
-        addParameter(name, required, allowNull, defaultBindingPrefix, false);
-    }
-
-    public ParameterModel getParameterModel(String parameterName)
-    {
-        ParameterModel result = InternalUtils.get(parameters, parameterName.toLowerCase());
-
-        if (result == null && parentModel != null)
-            result = parentModel.getParameterModel(parameterName);
-
-        return result;
-    }
-    
-    public boolean isFormalParameter(String parameterName)
-    {
-        return getParameterModel(parameterName) != null;
-    }
-
-    public List<String> getParameterNames()
-    {
-        List<String> names = CollectionFactory.newList();
-
-        if (parameters != null)
-            names.addAll(parameters.keySet());
-
-        if (parentModel != null)
-            names.addAll(parentModel.getParameterNames());
-
-        Collections.sort(names);
-
-        return names;
-    }
-
-    public List<String> getDeclaredParameterNames()
-    {
-        return InternalUtils.sortedKeys(parameters);
-    }
-
-    public MutableEmbeddedComponentModel addEmbeddedComponent(String id, String type,
-            String componentClassName, boolean inheritInformalParameters, Location location)
-    {
-        // TODO: Parent compent model? Or would we simply override the parent?
-
-        if (embeddedComponents == null)
-            embeddedComponents = CollectionFactory.newCaseInsensitiveMap();
-        else if (embeddedComponents.containsKey(id))
-            throw new IllegalArgumentException(ModelMessages.duplicateComponentId(id,
-                    this.componentClassName));
-
-        MutableEmbeddedComponentModel embedded = new MutableEmbeddedComponentModelImpl(id, type,
-                componentClassName, this.componentClassName, inheritInformalParameters, location);
-
-        embeddedComponents.put(id, embedded);
-
-        return embedded; // So that parameters can be filled in
-    }
-
-    public List<String> getEmbeddedComponentIds()
-    {
-        List<String> result = CollectionFactory.newList();
-
-        if (embeddedComponents != null)
-            result.addAll(embeddedComponents.keySet());
-
-        if (parentModel != null)
-            result.addAll(parentModel.getEmbeddedComponentIds());
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    public EmbeddedComponentModel getEmbeddedComponentModel(String componentId)
-    {
-        EmbeddedComponentModel result = InternalUtils.get(embeddedComponents, componentId);
-
-        if (result == null && parentModel != null)
-            result = parentModel.getEmbeddedComponentModel(componentId);
-
-        return result;
-    }
-
-    public String getFieldPersistenceStrategy(String fieldName)
-    {
-        String result = InternalUtils.get(persistentFields, fieldName);
-
-        if (result == null && parentModel != null)
-            result = parentModel.getFieldPersistenceStrategy(fieldName);
-
-        if (result == null)
-            throw new IllegalArgumentException(ModelMessages.missingPersistentField(fieldName));
-
-        return result;
-    }
-
-    public List<String> getPersistentFieldNames()
-    {
-        return persistentFieldNameAllocator.getAllocatedIds();
-    }
-
-    public String setFieldPersistenceStrategy(String fieldName, String strategy)
-    {
-        String logicalFieldName = persistentFieldNameAllocator.allocateId(fieldName);
-
-        if (persistentFields == null)
-            persistentFields = CollectionFactory.newMap();
-
-        persistentFields.put(logicalFieldName, strategy);
-
-        return logicalFieldName;
-    }
-
-    public boolean isRootClass()
-    {
-        return parentModel == null;
-    }
-
-    public void addMixinClassName(String mixinClassName, String... order)
-    {
-        if (mixinClassNames == null)
-            mixinClassNames = CollectionFactory.newList();
-
-        mixinClassNames.add(mixinClassName);
-        if (order != null && order.length > 0)
-        {
-            if (mixinOrders == null)
-                mixinOrders = CollectionFactory.newCaseInsensitiveMap();
-            mixinOrders.put(mixinClassName, order);
-        }
-    }
-
-    public List<String> getMixinClassNames()
-    {
-        List<String> result = CollectionFactory.newList();
-
-        if (mixinClassNames != null)
-            result.addAll(mixinClassNames);
-
-        if (parentModel != null)
-            result.addAll(parentModel.getMixinClassNames());
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    public void enableSupportsInformalParameters()
-    {
-        informalParametersSupported = true;
-    }
-
-    public boolean getSupportsInformalParameters()
-    {
-        return informalParametersSupported;
-    }
-
-    public ComponentModel getParentModel()
-    {
-        return parentModel;
-    }
-
-    public boolean isMixinAfter()
-    {
-        return mixinAfter;
-    }
-
-    public void setMixinAfter(boolean mixinAfter)
-    {
-        this.mixinAfter = mixinAfter;
-    }
-
-    public void setMeta(String key, String value)
-    {
-        assert InternalUtils.isNonBlank(key);
-        assert InternalUtils.isNonBlank(value);
-        if (metaData == null)
-            metaData = CollectionFactory.newCaseInsensitiveMap();
-
-        // TODO: Error if duplicate?
-
-        metaData.put(key, value);
-    }
-
-    public void addRenderPhase(Class renderPhase)
-    {
-        assert renderPhase != null;
-        if (handledRenderPhases == null)
-            handledRenderPhases = CollectionFactory.newSet();
-
-        handledRenderPhases.add(renderPhase);
-    }
-
-    public void addEventHandler(String eventType)
-    {
-        if (handledEvents == null)
-            handledEvents = CollectionFactory.newCaseInsensitiveMap();
-
-        handledEvents.put(eventType, true);
-    }
-
-    public String getMeta(String key)
-    {
-        String result = InternalUtils.get(metaData, key);
-
-        if (result == null && parentModel != null)
-            result = parentModel.getMeta(key);
-
-        return result;
-    }
-
-    public Set<Class> getHandledRenderPhases()
-    {
-        Set<Class> result = CollectionFactory.newSet();
-
-        if (parentModel != null)
-            result.addAll(parentModel.getHandledRenderPhases());
-
-        if (handledRenderPhases != null)
-            result.addAll(handledRenderPhases);
-
-        return result;
-    }
-
-    public boolean handlesEvent(String eventType)
-    {
-        if (InternalUtils.get(handledEvents, eventType) != null)
-            return true;
-
-        return parentModel == null ? false : parentModel.handlesEvent(eventType);
-    }
-
-    public String[] getOrderForMixin(String mixinClassName)
-    {
-        return InternalUtils.get(mixinOrders, mixinClassName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java
deleted file mode 100644
index 91df200..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/MutableEmbeddedComponentModelImpl.java
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.model;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
-
-public class MutableEmbeddedComponentModelImpl extends BaseLocatable implements MutableEmbeddedComponentModel
-{
-    private final String id;
-
-    private final String componentType;
-
-    private final String componentClassName;
-
-    private final String declaredClass;
-
-    private final boolean inheritInformalParameters;
-
-    private Map<String, String> parameters;
-
-    private List<String> publishedParameters = Collections.emptyList();
-
-    /**
-     * List of mixin class names.
-     */
-    private List<String> mixinClassNames;
-
-    private Map<String, String[]> mixinConstraints;
-
-    public MutableEmbeddedComponentModelImpl(String id, String componentType, String componentClassName,
-            String declaredClass, boolean inheritInformalParameters, Location location)
-    {
-        super(location);
-
-        this.id = id;
-        this.componentType = componentType;
-        this.componentClassName = componentClassName;
-        this.inheritInformalParameters = inheritInformalParameters;
-        this.declaredClass = declaredClass;
-    }
-
-    public String getComponentClassName()
-    {
-        return componentClassName;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("EmbeddedComponentModel[id=%s type=%s class=%s inheritInformals=%s]", id, componentType,
-                componentClassName, inheritInformalParameters);
-    }
-
-    public void addParameter(String name, String value)
-    {
-        if (parameters == null)
-            parameters = CollectionFactory.newMap();
-        else if (parameters.containsKey(name))
-            throw new IllegalArgumentException(ModelMessages.duplicateParameterValue(name, id, declaredClass));
-
-        parameters.put(name, value);
-    }
-
-    public String getId()
-    {
-        return id;
-    }
-
-    public String getComponentType()
-    {
-        return componentType;
-    }
-
-    public List<String> getParameterNames()
-    {
-        return InternalUtils.sortedKeys(parameters);
-    }
-
-    public String getParameterValue(String parameterName)
-    {
-        return InternalUtils.get(parameters, parameterName);
-    }
-
-    public List<String> getMixinClassNames()
-    {
-        if (mixinClassNames == null)
-            return Collections.emptyList();
-
-        return Collections.unmodifiableList(mixinClassNames);
-    }
-
-    public void addMixin(String mixinClassName, String... constraints)
-    {
-        if (mixinClassNames == null)
-        {
-            mixinClassNames = CollectionFactory.newList();
-            mixinConstraints = CollectionFactory.newCaseInsensitiveMap();
-        }
-        else
-        {
-            if (mixinClassNames.contains(mixinClassName))
-                throw new IllegalArgumentException(ModelMessages.duplicateMixin(mixinClassName, id));
-        }
-
-        mixinClassNames.add(mixinClassName);
-        mixinConstraints.put(mixinClassName, constraints);
-    }
-
-    public boolean getInheritInformalParameters()
-    {
-        return inheritInformalParameters;
-    }
-
-    public void setPublishedParameters(List<String> parameterNames)
-    {
-        assert parameterNames != null;
-        publishedParameters = parameterNames;
-    }
-
-    public List<String> getPublishedParameters()
-    {
-        return publishedParameters;
-    }
-
-    public String[] getConstraintsForMixin(String mixinClassName)
-    {
-        return InternalUtils.get(mixinConstraints, mixinClassName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/ParameterModelImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/ParameterModelImpl.java
deleted file mode 100644
index f825afa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/model/ParameterModelImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.model;
-
-import org.apache.tapestry5.model.ParameterModel;
-
-public class ParameterModelImpl implements ParameterModel
-{
-    private final String name;
-
-    private final boolean required;
-
-    private final boolean allowNull;
-
-    private final String defaultBindingPrefix;
-
-    private final boolean cached;
-
-    public ParameterModelImpl(
-            String name,
-            boolean required,
-            boolean allowNull,
-            String defaultBindingPrefix,
-            boolean cached)
-    {
-        this.name = name;
-        this.required = required;
-        this.allowNull = allowNull;
-        this.defaultBindingPrefix = defaultBindingPrefix;
-        this.cached = cached;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public boolean isRequired()
-    {
-        return required;
-    }
-
-    public String getDefaultBindingPrefix()
-    {
-        return defaultBindingPrefix;
-    }
-
-    public boolean isAllowNull()
-    {
-        return allowNull;
-    }
-
-    public boolean isCached()
-    {
-        return cached;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
deleted file mode 100644
index 1ee3f29..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/AssemblerContext.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.parser.TokenType;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.runtime.RenderCommand;
-
-import java.util.List;
-
-/**
- * Used when constructing a {@link org.apache.tapestry5.internal.pageload.AssemblerContext}, encapsulating the
- * assembler, the {@link org.apache.tapestry5.internal.pageload.TokenStream} for the component's template, and helping
- * to consolidate composable render commands (that is, a series of render commands that are not components can be
- * replaced with a single {@link org.apache.tapestry5.internal.pageload.CompositeRenderCommand} which reduces the number
- * of render operations for the page).
- */
-class AssemblerContext implements TokenStream
-{
-    final ComponentAssembler assembler;
-
-    final TokenStream stream;
-
-    private final List<RenderCommand> composable = CollectionFactory.newList();
-
-    AssemblerContext(ComponentAssembler assembler, TokenStream stream)
-    {
-        this.assembler = assembler;
-        this.stream = stream;
-    }
-
-    public boolean more()
-    {
-        return stream.more();
-    }
-
-    public TemplateToken next()
-    {
-        return stream.next();
-    }
-
-    public <T extends TemplateToken> T next(Class<T> type)
-    {
-        return stream.next(type);
-    }
-
-    public TokenType peekType()
-    {
-        return stream.peekType();
-    }
-
-    void addComposable(RenderCommand command)
-    {
-        composable.add(command);
-    }
-
-    void flushComposable()
-    {
-        switch (composable.size())
-        {
-            case 0:
-                return;
-
-            case 1:
-                addRenderCommand(composable.get(0));
-                break;
-
-            default:
-                addRenderCommand(new CompositeRenderCommand(composable.toArray(new RenderCommand[composable.size()])));
-                break;
-        }
-
-        composable.clear();
-    }
-
-    void add(PageAssemblyAction action)
-    {
-        flushComposable();
-
-        assembler.add(action);
-    }
-
-    private void addRenderCommand(final RenderCommand command)
-    {
-        assembler.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                pageAssembly.addRenderCommand(command);
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
deleted file mode 100644
index ea2d029..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssembler.java
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Encapsulates a series of actions that are used to assemble a new page instance (or a comoponent within the page).
- */
-interface ComponentAssembler
-{
-    /**
-     * The model defining the component assembled by this assembler.
-     */
-    ComponentModel getModel();
-
-    /**
-     * Assembles and returns page's root component
-     *
-     * @param page to assemble
-     */
-    ComponentPageElement assembleRootComponent(Page page);
-
-    /**
-     * Assembles a component embedded within another component, leaving the new component on the {@link
-     * org.apache.tapestry5.internal.pageload.PageAssembly#createdElement} stack.
-     *
-     * @param pageAssembly      holds dynamic state while assembling the comopnent
-     * @param embeddedAssembler
-     * @param embeddedId        the unique id for the component within its container
-     * @param elementName       element name in the template for the component (or null if defined via a Tapestry
-     *                          namespaced element)
-     * @param location          location of the embedded component in its container's template
-     */
-    void assembleEmbeddedComponent(PageAssembly pageAssembly, EmbeddedComponentAssembler embeddedAssembler,
-                                   String embeddedId, String elementName,
-                                   Location location);
-
-    /**
-     * Adds a page assembly action for this component
-     *
-     * @param action to be performed when assembling a page
-     */
-    void add(PageAssemblyAction action);
-
-    /**
-     * Validates that all component ids defined by the model are accounted for in the template. In addition, takes care
-     * of id pre-allocation.
-     */
-    void validateEmbeddedIds(Map<String, Location> componentIds, Resource templateResource);
-
-    /**
-     * Generates an id for an otherwise anonymous component, based on the component's type.
-     *
-     * @param componentType
-     * @return unique id based on the type
-     */
-    String generateEmbeddedId(String componentType);
-
-    /**
-     * Creates an assembler for an embedded component within this component. Does some additional tracking of published
-     * parameters.
-     *
-     * @param embeddedId         unique id for the embedded component
-     * @param componentClassName class name to instantiate
-     * @param embeddedModel      model defining how the component is used (may be null)
-     * @param mixins             mixins for the component (as defined in the template)
-     * @param location           location of the component (i.e., it's location in the container template)
-     * @return assembler for the component
-     */
-    EmbeddedComponentAssembler createEmbeddedAssembler(String embeddedId, String componentClassName,
-                                                       EmbeddedComponentModel embeddedModel,
-                                                       String mixins,
-                                                       Location location);
-
-    /**
-     * Finds a binder for a published parameter, or returns null. That is, if the parameter name matches the name of a
-     * parameter of an emebdded components of this component, returns a parameter binder for the parameter. The caller
-     * will pass the {@link org.apache.tapestry5.internal.structure.ComponentPageElement} that corresponds to this
-     * component to the binder and the binder will, internally, redirect to the correct embedded ComponentPageElement.
-     *
-     * @param parameterName simple (unqualified) name of parameter
-     * @return binder, or null if the parameter name does not correspond to a published parameter of an embedded
-     *         component
-     */
-    ParameterBinder getBinder(String parameterName);
-
-    /**
-     * Returns the locale for which the component is being assembled.
-     */
-    Locale getLocale();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
deleted file mode 100644
index fd931bc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerImpl.java
+++ /dev/null
@@ -1,381 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.structure.*;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.ComponentClassResolver;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-class ComponentAssemblerImpl implements ComponentAssembler
-{
-    private final ComponentAssemblerSource assemblerSource;
-
-    private final ComponentInstantiatorSource instantiatorSource;
-
-    private final ComponentClassResolver componentClassResolver;
-
-    private final Instantiator instantiator;
-
-    private final Locale locale;
-
-    private final ComponentPageElementResources resources;
-
-    private final List<PageAssemblyAction> actions = CollectionFactory.newList();
-
-    private final IdAllocator allocator = new IdAllocator();
-
-    private final OperationTracker tracker;
-
-    private Map<String, String> publishedParameterToEmbeddedId;
-
-    private Map<String, EmbeddedComponentAssembler> embeddedIdToAssembler;
-
-    public ComponentAssemblerImpl(ComponentAssemblerSource assemblerSource,
-            ComponentInstantiatorSource instantiatorSource, ComponentClassResolver componentClassResolver,
-            Instantiator instantiator, ComponentPageElementResources resources, Locale locale, OperationTracker tracker)
-    {
-        this.assemblerSource = assemblerSource;
-        this.instantiatorSource = instantiatorSource;
-        this.componentClassResolver = componentClassResolver;
-        this.instantiator = instantiator;
-        this.resources = resources;
-        this.locale = locale;
-        this.tracker = tracker;
-    }
-
-    public ComponentPageElement assembleRootComponent(final Page page)
-    {
-        return tracker.invoke("Assembling root component for page " + page.getName(),
-                new Invokable<ComponentPageElement>()
-                {
-                    public ComponentPageElement invoke()
-                    {
-                        return performAssembleRootComponent(page);
-                    }
-                });
-    }
-
-    private ComponentPageElement performAssembleRootComponent(Page page)
-    {
-        PageAssembly pageAssembly = new PageAssembly(page);
-
-        try
-        {
-            ComponentPageElement newElement = new ComponentPageElementImpl(pageAssembly.page, instantiator, resources);
-
-            pageAssembly.componentName.push(new ComponentName(pageAssembly.page.getName()));
-
-            pageAssembly.page.addLifecycleListener(newElement);
-
-            addRootComponentMixins(newElement);
-
-            pushNewElement(pageAssembly, newElement);
-
-            runActions(pageAssembly);
-
-            popNewElement(pageAssembly);
-
-            // Execute the deferred actions in reverse order to how they were added. This makes
-            // sense, as (currently) all deferred actions are related to inheriting informal parameters;
-            // those are added deepest component to shallowed (root) component, but should be executed
-            // in the opposite order to ensure that chained inherited parameters resolve correctly.
-
-            int count = pageAssembly.deferred.size();
-            for (int i = count - 1; i >= 0; i--)
-            {
-                PageAssemblyAction action = pageAssembly.deferred.get(i);
-
-                action.execute(pageAssembly);
-            }
-
-            return pageAssembly.createdElement.peek();
-        }
-        catch (RuntimeException ex)
-        {
-            throw new RuntimeException(PageloadMessages.exceptionAssemblingRootComponent(pageAssembly.page.getName(),
-                    InternalUtils.toMessage(ex)), ex);
-        }
-    }
-
-    private void addRootComponentMixins(ComponentPageElement element)
-    {
-        for (String className : instantiator.getModel().getMixinClassNames())
-        {
-            Instantiator mixinInstantiator = instantiatorSource.getInstantiator(className);
-
-            ComponentModel model = instantiator.getModel();
-            element.addMixin(InternalUtils.lastTerm(className), mixinInstantiator, model.getOrderForMixin(className));
-        }
-    }
-
-    public void assembleEmbeddedComponent(final PageAssembly pageAssembly,
-            final EmbeddedComponentAssembler embeddedAssembler, final String embeddedId, final String elementName,
-            final Location location)
-    {
-        ComponentName containerName = pageAssembly.componentName.peek();
-
-        final ComponentName embeddedName = containerName.child(embeddedId.toLowerCase());
-
-        final String componentClassName = instantiator.getModel().getComponentClassName();
-
-        String description = String.format("Assembling component %s (%s)", embeddedName.completeId, componentClassName);
-
-        tracker.run(description, new Runnable()
-        {
-            public void run()
-            {
-                ComponentPageElement container = pageAssembly.activeElement.peek();
-
-                try
-                {
-
-                    pageAssembly.componentName.push(embeddedName);
-
-                    ComponentPageElement newElement = container.newChild(embeddedId, embeddedName.nestedId,
-                            embeddedName.completeId, elementName, instantiator, location);
-
-                    pageAssembly.page.addLifecycleListener(newElement);
-
-                    pushNewElement(pageAssembly, newElement);
-
-                    embeddedAssembler.addMixinsToElement(newElement);
-
-                    runActions(pageAssembly);
-
-                    popNewElement(pageAssembly);
-
-                    pageAssembly.componentName.pop();
-                }
-                catch (RuntimeException ex)
-                {
-                    throw new TapestryException(PageloadMessages.exceptionAssemblingEmbeddedComponent(embeddedId,
-                            componentClassName, container.getCompleteId(), InternalUtils.toMessage(ex)), location, ex);
-                }
-            }
-        });
-    }
-
-    private void pushNewElement(PageAssembly pageAssembly, final ComponentPageElement componentElement)
-    {
-        // This gets popped after all actions have executed.
-        pageAssembly.activeElement.push(componentElement);
-
-        // The container pops this one.
-        pageAssembly.createdElement.push(componentElement);
-
-        BodyPageElement shunt = new BodyPageElement()
-        {
-            public void addToBody(RenderCommand element)
-            {
-                componentElement.addToTemplate(element);
-            }
-        };
-
-        pageAssembly.bodyElement.push(shunt);
-    }
-
-    private void popNewElement(PageAssembly pageAssembly)
-    {
-        pageAssembly.bodyElement.pop();
-        pageAssembly.activeElement.pop();
-
-        // But the component itself stays on the createdElement stack!
-    }
-
-    private void runActions(PageAssembly pageAssembly)
-    {
-        for (PageAssemblyAction action : actions)
-            action.execute(pageAssembly);
-    }
-
-    public ComponentModel getModel()
-    {
-        return instantiator.getModel();
-    }
-
-    public void add(PageAssemblyAction action)
-    {
-        actions.add(action);
-    }
-
-    public void validateEmbeddedIds(Map<String, Location> componentIds, Resource templateResource)
-    {
-        Map<String, Boolean> embeddedIds = CollectionFactory.newCaseInsensitiveMap();
-
-        for (String id : getModel().getEmbeddedComponentIds())
-            embeddedIds.put(id, true);
-
-        for (String id : componentIds.keySet())
-        {
-            allocator.allocateId(id);
-            embeddedIds.remove(id);
-        }
-
-        if (!embeddedIds.isEmpty())
-        {
-
-            String className = getModel().getComponentClassName();
-
-            throw new RuntimeException(PageloadMessages.embeddedComponentsNotInTemplate(InternalUtils
-                    .joinSorted(embeddedIds.keySet()), className, InternalUtils.lastTerm(className), templateResource));
-        }
-    }
-
-    public String generateEmbeddedId(String componentType)
-    {
-        // Component types may be in folders; strip off the folder part for starters.
-
-        int slashx = componentType.lastIndexOf("/");
-
-        String baseId = componentType.substring(slashx + 1).toLowerCase();
-
-        // The idAllocator is pre-loaded with all the component ids from the template, so even
-        // if the lower-case type matches the id of an existing component, there won't be a name
-        // collision.
-
-        return allocator.allocateId(baseId);
-    }
-
-    public EmbeddedComponentAssembler createEmbeddedAssembler(String embeddedId, String componentClassName,
-            EmbeddedComponentModel embeddedModel, String mixins, Location location)
-    {
-        try
-        {
-
-            if (InternalUtils.isBlank(componentClassName)) { throw new TapestryException(PageloadMessages
-                    .missingComponentType(), location, null); }
-            EmbeddedComponentAssemblerImpl embedded = new EmbeddedComponentAssemblerImpl(assemblerSource,
-                    instantiatorSource, componentClassResolver, componentClassName, locale, embeddedModel, mixins,
-                    location);
-
-            if (embeddedIdToAssembler == null)
-                embeddedIdToAssembler = CollectionFactory.newMap();
-
-            embeddedIdToAssembler.put(embeddedId, embedded);
-
-            if (embeddedModel != null)
-            {
-                for (String publishedParameterName : embeddedModel.getPublishedParameters())
-                {
-                    if (publishedParameterToEmbeddedId == null)
-                        publishedParameterToEmbeddedId = CollectionFactory.newCaseInsensitiveMap();
-
-                    String existingEmbeddedId = publishedParameterToEmbeddedId.get(publishedParameterName);
-
-                    if (existingEmbeddedId != null) { throw new TapestryException(PageloadMessages
-                            .parameterAlreadyPublished(publishedParameterName, embeddedId, instantiator.getModel()
-                                    .getComponentClassName(), existingEmbeddedId), location, null); }
-
-                    publishedParameterToEmbeddedId.put(publishedParameterName, embeddedId);
-                }
-
-            }
-
-            return embedded;
-        }
-        catch (Exception ex)
-        {
-            throw new TapestryException(PageloadMessages.failureCreatingEmbeddedComponent(embeddedId, instantiator
-                    .getModel().getComponentClassName(), InternalUtils.toMessage(ex)), location, ex);
-        }
-    }
-
-    public ParameterBinder getBinder(final String parameterName)
-    {
-        final String embeddedId = InternalUtils.get(publishedParameterToEmbeddedId, parameterName);
-
-        if (embeddedId == null)
-            return null;
-
-        final EmbeddedComponentAssembler embededdedComponentAssembler = embeddedIdToAssembler.get(embeddedId);
-
-        final ComponentAssembler embeddedAssembler = embededdedComponentAssembler.getComponentAssembler();
-
-        final ParameterBinder embeddedBinder = embeddedAssembler.getBinder(parameterName);
-
-        // The complex case: a re-publish! Yes you can go deep here if you don't
-        // value your sanity!
-
-        if (embeddedBinder != null) { return new ParameterBinder()
-        {
-            public void bind(ComponentPageElement element, Binding binding)
-            {
-                ComponentPageElement subelement = element.getEmbeddedElement(embeddedId);
-
-                embeddedBinder.bind(subelement, binding);
-            }
-
-            public String getDefaultBindingPrefix(String metaDefault)
-            {
-                return embeddedBinder.getDefaultBindingPrefix(metaDefault);
-            }
-        }; }
-
-        final ParameterBinder innerBinder = embededdedComponentAssembler.createParameterBinder(parameterName);
-
-        if (innerBinder == null)
-        {
-            String message = PageloadMessages.publishedParameterNonexistant(parameterName, instantiator.getModel()
-                    .getComponentClassName(), embeddedId);
-
-            throw new TapestryException(message, embededdedComponentAssembler.getLocation(), null);
-        }
-        // The simple case, publishing a parameter of a subcomponent as if it were a parameter
-        // of this component.
-
-        return new ParameterBinder()
-        {
-            public void bind(ComponentPageElement element, Binding binding)
-            {
-                ComponentPageElement subelement = element.getEmbeddedElement(embeddedId);
-
-                innerBinder.bind(subelement, binding);
-            }
-
-            public String getDefaultBindingPrefix(String metaDefault)
-            {
-                return innerBinder.getDefaultBindingPrefix(metaDefault);
-            }
-        };
-    }
-
-    public Locale getLocale()
-    {
-        return locale;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ComponentAssembler[%s]", instantiator.getModel().getComponentClassName());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerSource.java
deleted file mode 100644
index dbb3ffb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentAssemblerSource.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import java.util.Locale;
-
-/**
- * Provides access to {@link org.apache.tapestry5.internal.pageload.ComponentAssembler}s (this is used by the assemblers
- * to find related assemblers).
- */
-public interface ComponentAssemblerSource
-{
-    /**
-     * Gets (and possibly creates) a component assembler for the indicated class name and locale.
-     */
-    public ComponentAssembler getAssembler(String className, Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentName.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentName.java
deleted file mode 100644
index 48ccc2f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ComponentName.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-/**
- * Used to construct component names.
- */
-public class ComponentName
-{
-    private final String pageName;
-
-    final String nestedId;
-
-    final String completeId;
-
-    ComponentName(String pageName)
-    {
-        this.pageName = pageName;
-        this.nestedId = null;
-        this.completeId = pageName;
-    }
-
-    private ComponentName(String pageName, String nestedId, String completeId)
-    {
-        this.completeId = completeId;
-        this.nestedId = nestedId;
-        this.pageName = pageName;
-    }
-
-    ComponentName child(String embeddedId)
-    {
-        String newNestedId = nestedId == null
-                             ? embeddedId
-                             : nestedId + "." + embeddedId;
-
-        return new ComponentName(pageName, newNestedId, pageName + ":" + newNestedId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/CompositeRenderCommand.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/CompositeRenderCommand.java
deleted file mode 100644
index 5ace7e5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/CompositeRenderCommand.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-/**
- * A RenderCommand wrapper that renders internally a series of render commands. This is intended for static content
- * (commands that may write content, but won't affect the render queue itself.
- */
-class CompositeRenderCommand implements RenderCommand
-{
-    /**
-     * Composite commands are intended for static elements; elements that won't invoke methods on the RenderQueue. To
-     * enforce this, we have a NO-OP version of RenderQueue that is passed to the composed render commands.
-     */
-    private static final RenderQueue NOOP = new RenderQueue()
-    {
-        public void push(RenderCommand command)
-        {
-            nyi("push");
-        }
-
-        public void startComponent(ComponentResources resources)
-        {
-            nyi("startComponent");
-        }
-
-        public void endComponent()
-        {
-            nyi("endComponent");
-        }
-
-        private void nyi(String methodName)
-        {
-            throw new IllegalStateException(
-                    PageloadMessages.compositeRenderCommandMethodNotImplemented(methodName));
-        }
-    };
-
-    private final RenderCommand[] commands;
-
-    public CompositeRenderCommand(RenderCommand[] commands)
-    {
-        this.commands = commands;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        for (RenderCommand c : commands)
-        {
-            c.render(writer, NOOP);
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("CompositeRenderCommand[");
-
-        boolean comma = false;
-
-        for (RenderCommand c : commands)
-        {
-            if (comma) builder.append(", ");
-
-            builder.append(c);
-
-            comma = true;
-        }
-
-        return builder.append("]").toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
deleted file mode 100644
index 65098af..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssembler.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.ioc.Locatable;
-
-/**
- * Encapsulates logic related to assembling an embedded component within a {@link org.apache.tapestry5.internal.pageload.ComponentAssembler}.
- */
-interface EmbeddedComponentAssembler extends Locatable
-{
-    /**
-     * Returns the assembler responsible for creating instances of this embedded component.
-     */
-    ComponentAssembler getComponentAssembler();
-
-    /**
-     * Creates a binder that can later be used to bind the parameter. The parameter name may be unqualified ("value") or
-     * have a mixin prefix ("mymixin.value").  In the former case, the correct mixin is located (though the more typical
-     * case is to bind a parameter of the component itself, not a parameter of a mixin attached to the component). In
-     * the latter case, the mixinId is validated (to ensure it exists).
-     * <p/>
-     * If the name of the parameter does not match a formal parameter of the component (or mixin) and the component (or
-     * mixin) does not support informal parameters, then null is returned.
-     * <p/>
-     * This method should only be called at page-assembly time as it requires some data that is collected during
-     * ComponentAssembly construction in order to handle published parameters of embedded components.
-     *
-     * @param parameterName simple or qualified parameter name
-     * @return object that can bind the parameter
-     */
-    ParameterBinder createParameterBinder(String parameterName);
-
-    /**
-     * Checks to see if the parameter name  has been bound.
-     */
-    boolean isBound(String parameterName);
-
-    /**
-     * Marks the parameter name as bound. This is necessary to keep template bindings from overriding bindings in the
-     * {@link org.apache.tapestry5.annotations.Component} annotation (even inherited bindings).
-     */
-    void setBound(String parameterName);
-
-
-    /**
-     * Adds mixins to the newly created embedded element.
-     *
-     * @param newElement new element requiring mixins
-     */
-    void addMixinsToElement(ComponentPageElement newElement);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
deleted file mode 100644
index a749d03..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/EmbeddedComponentAssemblerImpl.java
+++ /dev/null
@@ -1,258 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-
-import org.apache.tapestry5.internal.services.ComponentInstantiatorSource;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-import org.apache.tapestry5.services.ComponentClassResolver;
-
-import java.util.Locale;
-import java.util.Map;
-
-public class EmbeddedComponentAssemblerImpl implements EmbeddedComponentAssembler
-{
-    private final ComponentInstantiatorSource instantiatorSource;
-
-    private final ComponentAssemblerSource assemblerSource;
-
-    private final Locale locale;
-
-    private final ComponentModel componentModel;
-
-    private final Location location;
-
-    private final Map<String, Instantiator> mixinIdToInstantiator = CollectionFactory.newCaseInsensitiveMap();
-    private final Map<String, String[]> mixinsIdToOrderConstraints = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Maps parameter names (both simple, and qualified with the mixin id) to the corresponding QualifiedParameterName.
-     */
-    private final Map<String, ParameterBinder> parameterNameToBinder = CollectionFactory.newCaseInsensitiveMap();
-
-    // The id of the mixin to receive informal parameters.  If null, the component itself recieves them.
-    // If the component doesn't support them, they are quietly dropped.
-
-    private final String informalParametersMixinId;
-
-    private Map<String, Boolean> bound;
-
-    /**
-     * @param assemblerSource
-     * @param instantiatorSource     used to access component models
-     * @param componentClassResolver used to convert mixin types to component models
-     * @param componentClassName     class name of embedded component
-     * @param locale
-     * @param embeddedModel          embedded model (may be null for components defined in the template)
-     * @param templateMixins         list of mixins from the t:mixins element (possibly null)
-     * @param location               location of components element in its container's template
-     */
-    public EmbeddedComponentAssemblerImpl(ComponentAssemblerSource assemblerSource,
-                                          ComponentInstantiatorSource instantiatorSource,
-                                          ComponentClassResolver componentClassResolver,
-                                          String componentClassName,
-                                          Locale locale,
-                                          EmbeddedComponentModel embeddedModel,
-                                          String templateMixins,
-                                          Location location)
-    {
-        this.assemblerSource = assemblerSource;
-        this.instantiatorSource = instantiatorSource;
-        this.locale = locale;
-        this.location = location;
-
-        componentModel = getModel(componentClassName);
-
-        // Add the implementation mixins defined by the component model.
-
-        for (String className : componentModel.getMixinClassNames())
-        {
-            addMixin(className,componentModel.getOrderForMixin(className));
-        }
-
-        // If there's an embedded model (i.e., there was an @Component annotation)
-        // then it may define some mixins.
-
-        if (embeddedModel != null)
-        {
-            for (String className : embeddedModel.getMixinClassNames())
-            {
-                addMixin(className,embeddedModel.getConstraintsForMixin(className));
-            }
-        }
-
-        // And the template may include a t:mixins element to define yet more mixin.
-        // Template strings specified as:
-        for (String mixinDef : TapestryInternalUtils.splitAtCommas(templateMixins))
-        {
-            Orderable<String> order = TapestryInternalUtils.mixinTypeAndOrder(mixinDef);
-            String className = componentClassResolver.resolveMixinTypeToClassName(order.getId());
-
-            addMixin(className,order.getConstraints());
-        }
-
-        informalParametersMixinId = prescanMixins();
-
-    }
-
-    private String prescanMixins()
-    {
-        // Mixin id found to support informal parameters
-
-        String supportsInformals = null;
-
-        for (Map.Entry<String, Instantiator> entry : mixinIdToInstantiator.entrySet())
-        {
-            String mixinId = entry.getKey();
-            ComponentModel mixinModel = entry.getValue().getModel();
-
-            updateParameterNameToQualified(mixinId, mixinModel);
-
-            if (supportsInformals == null && mixinModel.getSupportsInformalParameters())
-                supportsInformals = mixinId;
-        }
-
-        // The component comes last and overwrites simple names from the others.
-
-        updateParameterNameToQualified(null, componentModel);
-
-        return supportsInformals;
-    }
-
-    private void updateParameterNameToQualified(String mixinId, ComponentModel model)
-    {
-        for (String parameterName : model.getParameterNames())
-        {
-            String defaultBindingPrefix = model.getParameterModel(parameterName).getDefaultBindingPrefix();
-
-            ParameterBinderImpl binder = new ParameterBinderImpl(mixinId, parameterName, defaultBindingPrefix);
-
-            parameterNameToBinder.put(parameterName,
-                                      binder);
-
-            if (mixinId != null)
-                parameterNameToBinder.put(mixinId + "." + parameterName, binder);
-        }
-    }
-
-    private void addMixin(String className, String... order)
-    {
-        Instantiator mixinInstantiator = instantiatorSource.getInstantiator(className);
-
-        String mixinId = InternalUtils.lastTerm(className);
-
-        if (mixinIdToInstantiator.containsKey(mixinId))
-            throw new TapestryException(
-                    PageloadMessages.uniqueMixinRequired(mixinId),
-                    location, null);
-
-
-        mixinIdToInstantiator.put(mixinId, mixinInstantiator);
-        mixinsIdToOrderConstraints.put(mixinId, order);
-    }
-
-    private ComponentModel getModel(String className)
-    {
-        return instantiatorSource.getInstantiator(className).getModel();
-    }
-
-    public ComponentAssembler getComponentAssembler()
-    {
-        return assemblerSource.getAssembler(componentModel.getComponentClassName(), locale);
-    }
-
-    public ParameterBinder createParameterBinder(String parameterName)
-    {
-        int dotx = parameterName.indexOf('.');
-        if (dotx >= 0)
-        {
-            String mixinId = parameterName.substring(0, dotx);
-            if (!mixinIdToInstantiator.containsKey(mixinId))
-            {
-                throw new TapestryException(
-                        PageloadMessages.mixinidForParamnotfound(parameterName, mixinIdToInstantiator.keySet()),
-                        location, 
-                        null);
-            }
-        }
-        else
-        {
-            // Unqualified parameter name. May be a reference not to a parameter of this component, but a published
-            // parameter of a component embedded in this component. The ComponentAssembler for this component
-            // will know.
-
-            ComponentAssembler assembler = assemblerSource.getAssembler(componentModel.getComponentClassName(), locale);
-
-            ParameterBinder binder = assembler.getBinder(parameterName);
-
-            if (binder != null) return binder;
-        }
-
-        final ParameterBinder binder = parameterNameToBinder.get(parameterName);
-
-        if (binder != null)
-            return binder;
-
-        // Informal parameter: Is there a mixin for that?
-
-        if (informalParametersMixinId != null)
-            return new ParameterBinderImpl(informalParametersMixinId, parameterName, null);
-
-        if (componentModel.getSupportsInformalParameters())
-            return new ParameterBinderImpl(null, parameterName, null);
-
-        // Otherwise, informal parameter and not supported by the component or any mixin.
-
-        return null;
-    }
-
-    public boolean isBound(String parameterName)
-    {
-        return InternalUtils.get(bound, parameterName) != null;
-    }
-
-    public void setBound(String parameterName)
-    {
-        if (bound == null)
-            bound = CollectionFactory.newCaseInsensitiveMap();
-
-        bound.put(parameterName, true);
-    }
-
-    public void addMixinsToElement(ComponentPageElement newElement)
-    {
-        for (Map.Entry<String, Instantiator> entry : mixinIdToInstantiator.entrySet())
-        {
-            String mixinId = entry.getKey();
-            Instantiator instantiator = entry.getValue();
-
-            newElement.addMixin(mixinId, instantiator, mixinsIdToOrderConstraints.get(mixinId));
-        }
-    }
-
-    public Location getLocation()
-    {
-        return location;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
deleted file mode 100644
index 72345e3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssembly.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.structure.BodyPageElement;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.runtime.RenderCommand;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * Mutable data used when {@link org.apache.tapestry5.internal.pageload.ComponentAssembler}s are assembling a page
- * instance.
- */
-class PageAssembly
-{
-    final Page page;
-
-    final Stack<ComponentPageElement> activeElement = CollectionFactory.newStack();
-
-    final Stack<BodyPageElement> bodyElement = CollectionFactory.newStack();
-
-    final Stack<ComponentPageElement> createdElement = CollectionFactory.newStack();
-
-    final Stack<ComponentName> componentName = CollectionFactory.newStack();
-
-    final Stack<EmbeddedComponentAssembler> embeddedAssembler = CollectionFactory.newStack();
-
-    final List<PageAssemblyAction> deferred = CollectionFactory.newList();
-
-    private final Set<String> flags = CollectionFactory.newSet();
-
-    PageAssembly(Page page)
-    {
-        this.page = page;
-    }
-
-    /**
-     * Adds the command to the top element of the {@link #bodyElement} stack. {@linkplain
-     * #flushComposableRenderCommands() Flushes} composable render commands first.
-     *
-     * @param command
-     */
-    void addRenderCommand(RenderCommand command)
-    {
-        bodyElement.peek().addToBody(command);
-    }
-
-    boolean checkAndSetFlag(String flagName)
-    {
-        boolean result = flags.contains(flagName);
-
-        if (!result)
-            flags.add(flagName);
-
-        return result;
-    }
-
-    void checkForRecursion(String componentClassName, Location location)
-    {
-        for (Object o : activeElement.getSnapshot())
-        {
-            ComponentPageElement e = (ComponentPageElement) o;
-
-            if (e.getComponentResources().getComponentModel().getComponentClassName().equals(componentClassName))
-            {
-                throw new TapestryException(
-                        PageloadMessages.recursiveTemplate(componentClassName),
-                        location, 
-                        null);
-            }
-        }
-    }
-}
-
-
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssemblyAction.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssemblyAction.java
deleted file mode 100644
index d59320d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageAssemblyAction.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-interface PageAssemblyAction
-{
-    /**
-     * Execute some action related to assembling a page.
-     *
-     * @param pageAssembly identifies the page being assembled
-     */
-    void execute(PageAssembly pageAssembly);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
deleted file mode 100644
index b71e305..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageLoaderImpl.java
+++ /dev/null
@@ -1,1028 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.bindings.LiteralBinding;
-import org.apache.tapestry5.internal.parser.*;
-import org.apache.tapestry5.internal.services.*;
-import org.apache.tapestry5.internal.structure.*;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * There's still a lot of room to beef up {@link org.apache.tapestry5.internal.pageload.ComponentAssembler} and
- * {@link org.apache.tapestry5.internal.pageload.EmbeddedComponentAssembler} to perform more static analysis, but
- * that may no longer be necessary, given Tapestry 5.2's default use of non-pooled pages.
- * <p/>
- * Loading a page involves a recursive process of creating
- * {@link org.apache.tapestry5.internal.pageload.ComponentAssembler}s: for the root component, then down the tree for
- * each embedded component. A ComponentAssembler is largely a collection of
- * {@link org.apache.tapestry5.internal.pageload.PageAssemblyAction}s. Once created, a ComponentAssembler can quickly
- * assemble any number of component instances. All of the expensive logic, such as fitting template tokens together and
- * matching parameters to bindings, is done as part of the one-time construction of the ComponentAssembler. The end
- * result removes a huge amount of computational redundancy that was present in Tapestry 5.0, but to understand this,
- * you need to split your mind into two phases: construction (of the ComponentAssemblers) and assembly.
- * <p/>
- * And truly, <em>This is the Tapestry Heart, This is the Tapestry Soul...</em>
- */
-public class PageLoaderImpl implements PageLoader, InvalidationListener, ComponentAssemblerSource
-{
-    private static final class Key
-    {
-        private final String className;
-
-        private final Locale locale;
-
-        private Key(String className, Locale locale)
-        {
-            this.className = className;
-            this.locale = locale;
-        }
-
-        @Override
-        public boolean equals(Object o)
-        {
-            if (this == o)
-                return true;
-            if (o == null || getClass() != o.getClass())
-                return false;
-
-            Key key = (Key) o;
-
-            return className.equals(key.className) && locale.equals(key.locale);
-        }
-
-        @Override
-        public int hashCode()
-        {
-            return 31 * className.hashCode() + locale.hashCode();
-        }
-    }
-
-    private static final PageAssemblyAction POP_EMBEDDED_COMPONENT_ACTION = new PageAssemblyAction()
-    {
-        public void execute(PageAssembly pageAssembly)
-        {
-            pageAssembly.createdElement.pop();
-            pageAssembly.bodyElement.pop();
-            pageAssembly.embeddedAssembler.pop();
-        }
-    };
-
-    private static final RenderCommand END_ELEMENT = new RenderCommand()
-    {
-        public void render(MarkupWriter writer, RenderQueue queue)
-        {
-            writer.end();
-        }
-
-        @Override
-        public String toString()
-        {
-            return "End";
-        }
-    };
-
-    private final Map<Key, ComponentAssembler> cache = CollectionFactory.newConcurrentMap();
-
-    private final ComponentInstantiatorSource instantiatorSource;
-
-    private final ComponentTemplateSource templateSource;
-
-    private final PageElementFactory elementFactory;
-
-    private final ComponentPageElementResourcesSource resourcesSource;
-
-    private final ComponentClassResolver componentClassResolver;
-
-    private final PersistentFieldManager persistentFieldManager;
-
-    private final StringInterner interner;
-
-    private final OperationTracker tracker;
-
-    private final PerthreadManager perThreadManager;
-
-    private final boolean poolingEnabled;
-
-    public PageLoaderImpl(ComponentInstantiatorSource instantiatorSource, ComponentTemplateSource templateSource,
-            PageElementFactory elementFactory, ComponentPageElementResourcesSource resourcesSource,
-            ComponentClassResolver componentClassResolver, PersistentFieldManager persistentFieldManager,
-            StringInterner interner, OperationTracker tracker, PerthreadManager perThreadManager,
-            @Symbol(SymbolConstants.PAGE_POOL_ENABLED)
-            boolean poolingEnabled)
-    {
-        this.instantiatorSource = instantiatorSource;
-        this.templateSource = templateSource;
-        this.elementFactory = elementFactory;
-        this.resourcesSource = resourcesSource;
-        this.componentClassResolver = componentClassResolver;
-        this.persistentFieldManager = persistentFieldManager;
-        this.interner = interner;
-        this.tracker = tracker;
-        this.perThreadManager = perThreadManager;
-        this.poolingEnabled = poolingEnabled;
-    }
-
-    public void objectWasInvalidated()
-    {
-        cache.clear();
-    }
-
-    public Page loadPage(final String logicalPageName, final Locale locale)
-    {
-        final String pageClassName = componentClassResolver.resolvePageNameToClassName(logicalPageName);
-
-        return tracker.invoke("Constructing instance of page class " + pageClassName, new Invokable<Page>()
-        {
-            public Page invoke()
-            {
-                Page page = new PageImpl(logicalPageName, locale, persistentFieldManager, perThreadManager,
-                        poolingEnabled);
-
-                ComponentAssembler assembler = getAssembler(pageClassName, locale);
-
-                ComponentPageElement rootElement = assembler.assembleRootComponent(page);
-
-                page.setRootElement(rootElement);
-
-                // The page is *loaded* before it is attached to the request.
-                // This is to help ensure that no client-specific information leaks
-                // into the page's default state.
-
-                page.loaded();
-
-                return page;
-            }
-        });
-    }
-
-    public ComponentAssembler getAssembler(String className, Locale locale)
-    {
-        Key key = new Key(className, locale);
-
-        ComponentAssembler result = cache.get(key);
-
-        if (result == null)
-        {
-            // There's a window here where two threads may create the same assembler simultaneously;
-            // the extra assembler will be discarded.
-
-            result = createAssembler(className, locale);
-
-            cache.put(key, result);
-        }
-
-        return result;
-    }
-
-    private ComponentAssembler createAssembler(final String className, final Locale locale)
-    {
-        return tracker.invoke("Creating ComponentAssembler for " + className, new Invokable<ComponentAssembler>()
-        {
-            public ComponentAssembler invoke()
-            {
-                Instantiator instantiator = instantiatorSource.getInstantiator(className);
-
-                ComponentModel componentModel = instantiator.getModel();
-
-                ComponentTemplate template = templateSource.getTemplate(componentModel, locale);
-
-                ComponentPageElementResources resources = resourcesSource.get(locale);
-
-                ComponentAssembler assembler = new ComponentAssemblerImpl(PageLoaderImpl.this, instantiatorSource,
-                        componentClassResolver, instantiator, resources, locale, tracker);
-
-                // "Program" the assembler by adding actions to it. The actions interact with a
-                // PageAssembly object (a fresh one for each new page being created).
-
-                programAssembler(assembler, template);
-
-                return assembler;
-            }
-        });
-    }
-
-    /**
-     * "Programs" the assembler by analyzing the component, its mixins and its embedded components (both in the template
-     * and in the Java class), adding new PageAssemblyActions.
-     */
-    private void programAssembler(ComponentAssembler assembler, ComponentTemplate template)
-    {
-        TokenStream stream = createTokenStream(assembler, template);
-
-        AssemblerContext context = new AssemblerContext(assembler, stream);
-
-        if (template.isMissing())
-        {
-            // Pretend the template has a single <t:body> element.
-
-            body(context);
-
-            return;
-        }
-
-        while (context.more())
-        {
-            processTemplateToken(context);
-        }
-
-        context.flushComposable();
-    }
-
-    /**
-     * Creates the TokenStream by pre-processing the templates, looking for
-     * {@link org.apache.tapestry5.internal.parser.ExtensionPointToken}s
-     * and replacing them with appropriate overrides. Also validates that all embedded ids are accounted for.
-     */
-    private TokenStream createTokenStream(ComponentAssembler assembler, ComponentTemplate template)
-    {
-        List<TemplateToken> tokens = CollectionFactory.newList();
-
-        Stack<TemplateToken> queue = CollectionFactory.newStack();
-
-        List<ComponentTemplate> overrideSearch = buildOverrideSearch(assembler, template);
-
-        // The base template is the first non-extension template upwards in the hierarchy
-        // from this component.
-
-        ComponentTemplate baseTemplate = getLast(overrideSearch);
-
-        pushAll(queue, baseTemplate.getTokens());
-
-        while (!queue.isEmpty())
-        {
-            TemplateToken token = queue.pop();
-
-            // When an ExtensionPoint is found, it is replaced with the tokens of its override.
-
-            if (token.getTokenType().equals(TokenType.EXTENSION_POINT))
-            {
-                ExtensionPointToken extensionPointToken = (ExtensionPointToken) token;
-
-                queueOverrideTokensForExtensionPoint(extensionPointToken, queue, overrideSearch);
-
-            }
-            else
-            {
-                tokens.add(token);
-            }
-        }
-
-        // Build up a map of component ids to locations
-
-        Collections.reverse(overrideSearch);
-
-        Map<String, Location> componentIds = CollectionFactory.newCaseInsensitiveMap();
-
-        for (ComponentTemplate ct : overrideSearch)
-        {
-            componentIds.putAll(ct.getComponentIds());
-        }
-
-        // Validate that every emebedded component id in the template (or inherited from an extended template)
-        // is accounted for.
-
-        assembler.validateEmbeddedIds(componentIds, template.getResource());
-
-        return new TokenStreamImpl(tokens);
-    }
-
-    private static <T> T getLast(List<T> list)
-    {
-        int count = list.size();
-
-        return list.get(count - 1);
-    }
-
-    private void queueOverrideTokensForExtensionPoint(ExtensionPointToken extensionPointToken,
-            Stack<TemplateToken> queue, List<ComponentTemplate> overrideSearch)
-    {
-        String extensionPointId = extensionPointToken.getExtensionPointId();
-
-        // Work up from the component, through its base classes, towards the last non-extension template.
-
-        for (ComponentTemplate t : overrideSearch)
-        {
-            List<TemplateToken> tokens = t.getExtensionPointTokens(extensionPointId);
-
-            if (tokens != null)
-            {
-                pushAll(queue, tokens);
-                return;
-            }
-        }
-
-        // Sanity check: since an extension point defines its own default, it's going to be hard to
-        // not find an override, somewhere, for it.
-
-        throw new TapestryException(PageloadMessages.couldNotFindOverride(extensionPointId),
-                extensionPointToken.getLocation(), null);
-    }
-
-    private List<ComponentTemplate> buildOverrideSearch(ComponentAssembler assembler, ComponentTemplate template)
-    {
-        List<ComponentTemplate> result = CollectionFactory.newList();
-        result.add(template);
-
-        ComponentModel model = assembler.getModel();
-
-        ComponentTemplate lastTemplate = template;
-
-        while (lastTemplate.isExtension())
-        {
-            ComponentModel parentModel = model.getParentModel();
-
-            if (parentModel == null) { throw new RuntimeException(PageloadMessages.noParentForExtension(model)); }
-
-            ComponentTemplate parentTemplate = templateSource.getTemplate(parentModel, assembler.getLocale());
-
-            result.add(parentTemplate);
-
-            lastTemplate = parentTemplate;
-
-            model = parentModel;
-        }
-
-        return result;
-    }
-
-    /**
-     * Push all the tokens onto the stack, in reverse order, so that the last token is deepest and the first token is
-     * most shallow (first to come off the queue).
-     */
-    private void pushAll(Stack<TemplateToken> queue, List<TemplateToken> tokens)
-    {
-        for (int i = tokens.size() - 1; i >= 0; i--)
-            queue.push(tokens.get(i));
-    }
-
-    private void processTemplateToken(AssemblerContext context)
-    {
-        // These tokens can appear at the top level, or at lower levels (this method is invoked
-        // from token-processing loops inside element(), component(), etc.
-
-        switch (context.peekType())
-        {
-            case TEXT:
-
-                text(context);
-                break;
-
-            case EXPANSION:
-                expansion(context);
-                break;
-
-            case BODY:
-                context.next();
-
-                body(context);
-                break;
-
-            case START_ELEMENT:
-                // Will consume past matching end token
-                element(context);
-                break;
-
-            case START_COMPONENT:
-                // Will consume past matching end token
-                component(context);
-                break;
-
-            // ATTRIBUTE and END_ELEMENT can't happen at the top level, they're
-            // handled at a lower level. (inside element(), component(), etc.)
-
-            case COMMENT:
-                comment(context);
-                break;
-
-            case BLOCK:
-                // Will consume past matching end token
-                block(context);
-                break;
-
-            case PARAMETER:
-                // Will consume past the matching end token
-                parameter(context);
-                break;
-
-            case DTD:
-                dtd(context);
-                break;
-
-            case DEFINE_NAMESPACE_PREFIX:
-
-                defineNamespacePrefix(context);
-                break;
-
-            case CDATA:
-                cdata(context);
-                break;
-
-            default:
-                throw new IllegalStateException(PageloadMessages.tokenNotImplemented(context.peekType()));
-        }
-    }
-
-    private void cdata(AssemblerContext context)
-    {
-        final CDATAToken token = context.next(CDATAToken.class);
-
-        RenderCommand command = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                writer.cdata(token.getContent());
-            }
-
-            @Override
-            public String toString()
-            {
-                return String.format("CDATA[%s]", token.getLocation());
-            }
-        };
-
-        context.addComposable(command);
-
-    }
-
-    private void defineNamespacePrefix(AssemblerContext context)
-    {
-        final DefineNamespacePrefixToken token = context.next(DefineNamespacePrefixToken.class);
-
-        RenderCommand command = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                writer.defineNamespace(token.getNamespaceURI(), token.getNamespacePrefix());
-            }
-
-            @Override
-            public String toString()
-            {
-                return String.format("DefineNamespace[%s %s]", token.getNamespacePrefix(), token.getNamespaceURI());
-            }
-        };
-
-        context.addComposable(command);
-    }
-
-    private void dtd(AssemblerContext context)
-    {
-        final DTDToken token = context.next(DTDToken.class);
-
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                if (!pageAssembly.checkAndSetFlag("dtd-page-element-added"))
-                {
-                    RenderCommand command = new DTDPageElement(token.getName(), token.getPublicId(), token
-                            .getSystemId());
-
-                    // It doesn't really matter where this ends up in the tree as long as its inside
-                    // a portion that always renders.
-
-                    pageAssembly.addRenderCommand(command);
-                }
-            }
-        });
-    }
-
-    private void parameter(AssemblerContext context)
-    {
-        final ParameterToken token = context.next(ParameterToken.class);
-
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                String parameterName = token.getName();
-
-                ComponentPageElement element = pageAssembly.createdElement.peek();
-
-                BlockImpl block = new BlockImpl(token.getLocation(), interner.format("Parameter %s of %s",
-                        parameterName, element.getCompleteId()));
-
-                Binding binding = new LiteralBinding(token.getLocation(), "block parameter " + parameterName, block);
-
-                EmbeddedComponentAssembler embeddedAssembler = pageAssembly.embeddedAssembler.peek();
-
-                ParameterBinder binder = embeddedAssembler.createParameterBinder(parameterName);
-
-                if (binder == null) { throw new TapestryException(PageloadMessages.parameterNotSupported(
-                        element.getCompleteId(), parameterName), token.getLocation(), null); }
-
-                binder.bind(pageAssembly.createdElement.peek(), binding);
-
-                pageAssembly.bodyElement.push(block);
-            }
-        });
-
-        consumeToEndElementAndPopBodyElement(context);
-    }
-
-    private void block(AssemblerContext context)
-    {
-        final BlockToken token = context.next(BlockToken.class);
-
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                String blockId = token.getId();
-
-                ComponentPageElement element = pageAssembly.activeElement.peek();
-
-                String description = blockId == null ? interner.format("Anonymous within %s", element.getCompleteId())
-                        : interner.format("%s within %s", blockId, element.getCompleteId());
-
-                BlockImpl block = new BlockImpl(token.getLocation(), description);
-
-                if (blockId != null)
-                    element.addBlock(blockId, block);
-
-                // Start directing template content into the Block
-                pageAssembly.bodyElement.push(block);
-            }
-        });
-
-        consumeToEndElementAndPopBodyElement(context);
-    }
-
-    private void consumeToEndElementAndPopBodyElement(AssemblerContext context)
-    {
-        while (true)
-        {
-            switch (context.peekType())
-            {
-                case END_ELEMENT:
-
-                    context.next();
-
-                    context.add(new PageAssemblyAction()
-                    {
-                        public void execute(PageAssembly pageAssembly)
-                        {
-                            pageAssembly.bodyElement.pop();
-                        }
-                    });
-
-                    return;
-
-                default:
-                    processTemplateToken(context);
-            }
-        }
-    }
-
-    private void comment(AssemblerContext context)
-    {
-        CommentToken token = context.next(CommentToken.class);
-
-        RenderCommand commentElement = new CommentPageElement(token.getComment());
-
-        context.addComposable(commentElement);
-    }
-
-    private void component(AssemblerContext context)
-    {
-        EmbeddedComponentAssembler embeddedAssembler = startComponent(context);
-
-        while (true)
-        {
-            switch (context.peekType())
-            {
-                case ATTRIBUTE:
-
-                    bindAttributeAsParameter(context, embeddedAssembler);
-
-                    break;
-
-                case END_ELEMENT:
-
-                    context.next();
-
-                    context.add(POP_EMBEDDED_COMPONENT_ACTION);
-
-                    return;
-
-                default:
-                    processTemplateToken(context);
-            }
-        }
-    }
-
-    private void bindAttributeAsParameter(AssemblerContext context, EmbeddedComponentAssembler embeddedAssembler)
-    {
-        AttributeToken token = context.next(AttributeToken.class);
-
-        addParameterBindingAction(context, embeddedAssembler, token.getName(), token.getValue(),
-                BindingConstants.LITERAL, token.getLocation());
-    }
-
-    private void element(AssemblerContext context)
-    {
-        StartElementToken token = context.next(StartElementToken.class);
-
-        RenderCommand element = new StartElementPageElement(token.getNamespaceURI(), token.getName());
-
-        context.addComposable(element);
-
-        while (true)
-        {
-            switch (context.peekType())
-            {
-                case ATTRIBUTE:
-                    attribute(context);
-                    break;
-
-                case END_ELEMENT:
-
-                    context.next();
-
-                    context.addComposable(END_ELEMENT);
-
-                    // Pop out a level.
-                    return;
-
-                default:
-                    processTemplateToken(context);
-            }
-        }
-
-    }
-
-    private EmbeddedComponentAssembler startComponent(AssemblerContext context)
-    {
-        StartComponentToken token = context.next(StartComponentToken.class);
-
-        ComponentAssembler assembler = context.assembler;
-        String elementName = token.getElementName();
-
-        // Initial guess: the type from the token (but this may be null in many cases).
-        String embeddedType = token.getComponentType();
-
-        // This may be null for an anonymous component.
-        String embeddedId = token.getId();
-
-        String embeddedComponentClassName = null;
-
-        final EmbeddedComponentModel embeddedModel = embeddedId == null ? null : assembler.getModel()
-                .getEmbeddedComponentModel(embeddedId);
-
-        if (embeddedId == null)
-            embeddedId = assembler.generateEmbeddedId(embeddedType);
-
-        if (embeddedModel != null)
-        {
-            String modelType = embeddedModel.getComponentType();
-
-            if (InternalUtils.isNonBlank(modelType) && embeddedType != null) { throw new TapestryException(
-                    PageloadMessages.redundantEmbeddedComponentTypes(embeddedId, embeddedType, modelType), token, null); }
-
-            embeddedType = modelType;
-            embeddedComponentClassName = embeddedModel.getComponentClassName();
-        }
-
-        String componentClassName = embeddedComponentClassName;
-
-        // This awkwardness is making me think that the page loader should resolve the component
-        // type before invoking this method (we would then remove the componentType parameter).
-
-        if (InternalUtils.isNonBlank(embeddedType))
-        {
-            // The type actually overrides the specified class name. The class name is defined
-            // by the type of the field. In many scenarios, the field type is a common
-            // interface,
-            // and the type is used to determine the concrete class to instantiate.
-
-            try
-            {
-                componentClassName = componentClassResolver.resolveComponentTypeToClassName(embeddedType);
-            }
-            catch (RuntimeException ex)
-            {
-                throw new TapestryException(ex.getMessage(), token, ex);
-            }
-        }
-
-        // OK, now we can record an action to get it instantiated.
-
-        EmbeddedComponentAssembler embeddedAssembler = assembler.createEmbeddedAssembler(embeddedId,
-                componentClassName, embeddedModel, token.getMixins(), token.getLocation());
-
-        addActionForEmbeddedComponent(context, embeddedAssembler, embeddedId, elementName, componentClassName);
-
-        addParameterBindingActions(context, embeddedAssembler, embeddedModel);
-
-        if (embeddedModel != null && embeddedModel.getInheritInformalParameters())
-        {
-            // Another two-step: The first "captures" the container and embedded component. The second
-            // occurs at the end of the page setup.
-
-            assembler.add(new PageAssemblyAction()
-            {
-                public void execute(PageAssembly pageAssembly)
-                {
-                    final ComponentPageElement container = pageAssembly.activeElement.peek();
-                    final ComponentPageElement embedded = pageAssembly.createdElement.peek();
-
-                    pageAssembly.deferred.add(new PageAssemblyAction()
-                    {
-                        public void execute(PageAssembly pageAssembly)
-                        {
-                            copyInformalParameters(container, embedded);
-                        }
-                    });
-                }
-            });
-
-        }
-
-        return embeddedAssembler;
-
-    }
-
-    private void copyInformalParameters(ComponentPageElement container, ComponentPageElement embedded)
-    {
-        // TODO: Much more, this is an area where we can make things a bit more efficient by tracking
-        // what has and hasn't been bound in the EmbeddedComponentAssembler (and identifying what is
-        // and isn't informal).
-
-        ComponentModel model = embedded.getComponentResources().getComponentModel();
-
-        Map<String, Binding> informals = container.getInformalParameterBindings();
-
-        for (String name : informals.keySet())
-        {
-            if (model.getParameterModel(name) != null)
-                continue;
-
-            Binding binding = informals.get(name);
-
-            embedded.bindParameter(name, binding);
-        }
-    }
-
-    private void addParameterBindingActions(AssemblerContext context, EmbeddedComponentAssembler embeddedAssembler,
-            EmbeddedComponentModel embeddedModel)
-    {
-        if (embeddedModel == null)
-            return;
-
-        for (String parameterName : embeddedModel.getParameterNames())
-        {
-            String parameterValue = embeddedModel.getParameterValue(parameterName);
-
-            addParameterBindingAction(context, embeddedAssembler, parameterName, parameterValue, BindingConstants.PROP,
-                    embeddedModel.getLocation());
-        }
-    }
-
-    private void addParameterBindingAction(AssemblerContext context,
-            final EmbeddedComponentAssembler embeddedAssembler, final String parameterName,
-            final String parameterValue, final String metaDefaultBindingPrefix, final Location location)
-    {
-        if (embeddedAssembler.isBound(parameterName))
-            return;
-
-        embeddedAssembler.setBound(parameterName);
-
-        if (parameterValue.startsWith(InternalConstants.INHERIT_BINDING_PREFIX))
-        {
-            String containerParameterName = parameterValue.substring(InternalConstants.INHERIT_BINDING_PREFIX.length());
-
-            addInheritedBindingAction(context, parameterName, containerParameterName);
-            return;
-        }
-
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                // Because of published parameters, we have to wait until page assembly time to throw out
-                // informal parameters bound to components that don't support informal parameters ...
-                // otherwise we'd throw out (sometimes!) published parameters.
-
-                final ParameterBinder binder = embeddedAssembler.createParameterBinder(parameterName);
-
-                // Null meaning an informal parameter and the component (and mixins) doesn't support informals.
-
-                if (binder != null)
-                {
-                    final String defaultBindingPrefix = binder.getDefaultBindingPrefix(metaDefaultBindingPrefix);
-
-                    InternalComponentResources containerResources = pageAssembly.activeElement.peek()
-                            .getComponentResources();
-
-                    ComponentPageElement embeddedElement = pageAssembly.createdElement.peek();
-                    InternalComponentResources embeddedResources = embeddedElement.getComponentResources();
-
-                    Binding binding = elementFactory.newBinding(parameterName, containerResources, embeddedResources,
-                            defaultBindingPrefix, parameterValue, location);
-
-                    binder.bind(embeddedElement, binding);
-                }
-            }
-        });
-    }
-
-    /**
-     * Adds a deferred action to the PageAssembly, to handle connecting the embedded components' parameter to the
-     * container component's parameter once everything else has been built.
-     * 
-     * @param context
-     * @param parameterName
-     * @param containerParameterName
-     */
-    private void addInheritedBindingAction(AssemblerContext context, final String parameterName,
-            final String containerParameterName)
-    {
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                // At the time this action executes, we'll be able to capture the containing and embedded
-                // component. We can then defer the connection logic until after all other construction.
-
-                final ComponentPageElement container = pageAssembly.activeElement.peek();
-                final ComponentPageElement embedded = pageAssembly.createdElement.peek();
-
-                // Parameters are normally bound bottom to top. Inherited parameters run differently, and should be
-                // top to bottom.
-                pageAssembly.deferred.add(new PageAssemblyAction()
-                {
-                    public void execute(PageAssembly pageAssembly)
-                    {
-                        connectInheritedParameter(container, embedded, parameterName, containerParameterName);
-                    }
-                });
-            }
-        });
-    }
-
-    private void connectInheritedParameter(ComponentPageElement container, ComponentPageElement embedded,
-            String parameterName, String containerParameterName)
-    {
-        // TODO: This assumes that the two parameters are both on the core component and not on
-        // a mixin. I think this could be improved with more static analysis.
-
-        Binding containerBinding = container.getBinding(containerParameterName);
-
-        if (containerBinding == null)
-            return;
-
-        // This helps with debugging, and re-orients any thrown exceptions
-        // to the location of the inherited binding, rather than the container component's
-        // binding.
-
-        // Binding inherited = new InheritedBinding(description, containerBinding, embedded.getLocation());
-
-        embedded.bindParameter(parameterName, containerBinding);
-    }
-
-    private void addActionForEmbeddedComponent(AssemblerContext context,
-            final EmbeddedComponentAssembler embeddedAssembler, final String embeddedId, final String elementName,
-            final String componentClassName)
-    {
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                pageAssembly.checkForRecursion(componentClassName, embeddedAssembler.getLocation());
-
-                Locale locale = pageAssembly.page.getLocale();
-
-                ComponentAssembler assemblerForSubcomponent = getAssembler(componentClassName, locale);
-
-                // Remeber: this pushes onto to the createdElement stack, but does not pop it.
-
-                assemblerForSubcomponent.assembleEmbeddedComponent(pageAssembly, embeddedAssembler, embeddedId,
-                        elementName, embeddedAssembler.getLocation());
-
-                // ... which is why we can find it via peek() here. And it's our responsibility
-                // to clean it up.
-
-                ComponentPageElement embeddedElement = pageAssembly.createdElement.peek();
-
-                // Add the new element to the template of its container.
-
-                pageAssembly.addRenderCommand(embeddedElement);
-
-                // And redirect any futher content from this component's template to go into
-                // the body of the embedded element.
-
-                pageAssembly.bodyElement.push(embeddedElement);
-                pageAssembly.embeddedAssembler.push(embeddedAssembler);
-
-                // The means we need to pop the createdElement, bodyElement and embeddedAssembler stacks
-                // when done with this sub-component, which is what POP_EMBEDDED_COMPONENT_ACTION does.
-            }
-        });
-    }
-
-    private void attribute(AssemblerContext context)
-    {
-        final AttributeToken token = context.next(AttributeToken.class);
-
-        String value = token.getValue();
-
-        // No expansion makes this easier, more efficient.
-        if (value.indexOf(InternalConstants.EXPANSION_START) < 0)
-        {
-            RenderCommand command = new RenderAttribute(token);
-
-            context.addComposable(command);
-
-            return;
-        }
-
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                InternalComponentResources resources = pageAssembly.activeElement.peek().getComponentResources();
-
-                RenderCommand command = elementFactory.newAttributeElement(resources, token);
-
-                pageAssembly.addRenderCommand(command);
-            }
-        });
-    }
-
-    private void body(AssemblerContext context)
-    {
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                ComponentPageElement element = pageAssembly.activeElement.peek();
-
-                pageAssembly.addRenderCommand(new RenderBodyElement(element));
-            }
-        });
-    }
-
-    private void expansion(AssemblerContext context)
-    {
-        final ExpansionToken token = context.next(ExpansionToken.class);
-
-        context.add(new PageAssemblyAction()
-        {
-            public void execute(PageAssembly pageAssembly)
-            {
-                ComponentResources resources = pageAssembly.activeElement.peek().getComponentResources();
-
-                RenderCommand command = elementFactory.newExpansionElement(resources, token);
-
-                pageAssembly.addRenderCommand(command);
-            }
-        });
-    }
-
-    private void text(AssemblerContext context)
-    {
-        TextToken textToken = context.next(TextToken.class);
-
-        context.addComposable(new TextPageElement(textToken.getText()));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageloadMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageloadMessages.java
deleted file mode 100644
index 2857f97..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/PageloadMessages.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.internal.parser.TokenType;
-import org.apache.tapestry5.model.ComponentModel;
-
-import java.util.Collection;
-
-/**
- * Localized exception message support for pageload-related classes.
- * @since 5.2.0
- */
-final class PageloadMessages
-{
-
-    private static final Messages MESSAGES = MessagesImpl.forClass(PageloadMessages.class);
-
-    private PageloadMessages()
-    {
-    }
-
-    public static String uniqueMixinRequired(String mixinId)
-    {
-        return MESSAGES.format("unique_mixin_required", mixinId);
-    }
-
-    public static String mixinidForParamnotfound(String parameterName, Collection<String> availableMixins)
-    {
-        return MESSAGES.format("mixinid_for_paramnotfound", parameterName, InternalUtils.joinSorted(availableMixins));
-    }
-
-    public static String missingComponentType()
-    {
-        return MESSAGES.get("missing_component_type");
-    }
-
-    public static String noMoreTokens()
-    {
-        return MESSAGES.get("no_more_tokens");
-    }
-
-    public static String couldNotFindOverride(String extensionPointId)
-    {
-        return MESSAGES.format("could_not_find_override", extensionPointId);
-    }
-
-    public static String noParentForExtension(ComponentModel model)
-    {
-        return MESSAGES.format("no_parent_for_extension", model.getComponentClassName());
-    }
-
-    public static String tokenNotImplemented(TokenType type)
-    {
-        return MESSAGES.format("token_not_implemented", type.toString());
-    }
-
-    public static String parameterNotSupported(String completeId, String parameterName)
-    {
-        return MESSAGES.format("parameter_not_supported", completeId, parameterName);
-    }
-
-    public static String redundantEmbeddedComponentTypes(String embeddedId, String embeddedType, String modelType)
-    {
-        return MESSAGES.format("redundant_embedded_component_types", embeddedId, embeddedType, modelType);
-    }
-
-    public static String recursiveTemplate(String componentClassName)
-    {
-        return MESSAGES.format("recursive_template", componentClassName);
-    }
-
-    public static String compositeRenderCommandMethodNotImplemented(String methodName)
-    {
-        return MESSAGES.format("composite_render_command_method_not_implemented",methodName);
-    }
-
-    public static String exceptionAssemblingRootComponent(String pageName, String exceptionMessage)
-    {
-        return MESSAGES.format("exception_assembling_root_component",pageName,exceptionMessage);
-    }
-
-    public static String exceptionAssemblingEmbeddedComponent(
-            String embeddedId,
-            String embeddedClassName,
-            String containerId,
-            String exception)
-    {
-        return MESSAGES.format("exception_assembling_embedded_component",
-                embeddedId,
-                embeddedClassName,
-                containerId,
-                exception);
-    }
-
-    public static String embeddedComponentsNotInTemplate(
-            String joinedComponentIds,
-            String qualifiedClassName,
-            String simpleClassName,
-            Resource templateResource)
-    {
-        return MESSAGES.format("embedded_components_not_in_template",
-                joinedComponentIds,
-                qualifiedClassName,
-                simpleClassName,
-                templateResource);
-    }
-
-    public static String parameterAlreadyPublished(
-            String publishedParameterName, 
-            String embeddedId,
-            String componentClassName,
-            String existingEmbeddedId)
-    {
-        return MESSAGES.format("parameter_already_published",
-                publishedParameterName,
-                embeddedId,
-                componentClassName,
-                existingEmbeddedId);
-    }
-
-    public static String failureCreatingEmbeddedComponent(String embeddedId, String containerClass, String exception)
-    {
-        return MESSAGES.format("failure_creating_embedded_component",embeddedId, containerClass, exception);
-    }
-
-    public static String publishedParameterNonexistant(String parameterName, String publishingClass, String embeddedId)
-    {
-        return MESSAGES.format("published_parameter_nonexistant", parameterName, publishingClass, embeddedId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ParameterBinder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ParameterBinder.java
deleted file mode 100644
index e437779..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ParameterBinder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-
-/**
- * Encapsulates the result of a parameter lookup, i.e., the conversion from qualified or unqualified parameter name to
- * mixin id (or null) and parameter name, as well as the default binding prefix for the parameter.
- *
- * @see org.apache.tapestry5.internal.pageload.EmbeddedComponentAssembler#createParameterBinder(String)
- */
-interface ParameterBinder
-{
-    /**
-     * Bindings the parameter of the element.   The name (and optionally mixinid) of the parameter is determined when
-     * the ParameterBinder is created.
-     *
-     * @param element page element to bind
-     * @param binding binding for the parameter
-     */
-    void bind(ComponentPageElement element, Binding binding);
-
-    /**
-     * Returns the correct default binding prefix to use for this parameter, which is either the {@linkplain
-     * org.apache.tapestry5.model.ParameterModel#getDefaultBindingPrefix() default binding prefix configured for the
-     * parameter}, or the meta-default (when binding an informal parameter). A specific binding of a parameter may
-     * always override the default binding prefix, however it is calculated.
-     *
-     * @param metaDefault
-     * @return binding prefix
-     */
-    String getDefaultBindingPrefix(String metaDefault);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ParameterBinderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ParameterBinderImpl.java
deleted file mode 100644
index bae5300..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/ParameterBinderImpl.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-
-/**
- * Default implementation; invokes {@link org.apache.tapestry5.internal.structure.ComponentPageElement#bindParameter(String,
- * org.apache.tapestry5.Binding)} or {@link org.apache.tapestry5.internal.structure.ComponentPageElement#bindMixinParameter(String,
- * String, org.apache.tapestry5.Binding)}.
- */
-class ParameterBinderImpl implements ParameterBinder
-{
-    private final String mixinId;
-
-    private final String parameterName;
-
-    private final String defaultBindingPrefix;
-
-    ParameterBinderImpl(String mixinId, String parameterName, String defaultBindingPrefix)
-    {
-        this.mixinId = mixinId;
-        this.parameterName = parameterName;
-        this.defaultBindingPrefix = defaultBindingPrefix;
-    }
-
-    public void bind(ComponentPageElement element, Binding binding)
-    {
-        if (mixinId == null)
-        {
-            element.bindParameter(parameterName, binding);
-            return;
-        }
-
-        element.bindMixinParameter(mixinId, parameterName, binding);
-    }
-
-    public String getDefaultBindingPrefix(String metaDefault)
-    {
-        return defaultBindingPrefix != null ? defaultBindingPrefix : metaDefault;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/RenderAttribute.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/RenderAttribute.java
deleted file mode 100644
index b23e92d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/RenderAttribute.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.parser.AttributeToken;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-class RenderAttribute implements RenderCommand
-{
-    private final AttributeToken token;
-
-    public RenderAttribute(AttributeToken token)
-    {
-        this.token = token;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        writer.attributeNS(token.getNamespaceURI(), token.getName(), token.getValue());
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("AttributeNS[%s %s \"%s\"]",
-                             token.getNamespaceURI(), token.getName(), token.getValue());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/RenderBodyElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/RenderBodyElement.java
deleted file mode 100644
index 1c22863..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/RenderBodyElement.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-class RenderBodyElement implements RenderCommand
-{
-    private final ComponentPageElement component;
-
-    public RenderBodyElement(ComponentPageElement component)
-    {
-        this.component = component;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        component.enqueueBeforeRenderBody(queue);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("RenderBody[%s]", component.getNestedId());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/TokenStream.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/TokenStream.java
deleted file mode 100644
index 03f3561..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/TokenStream.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.parser.TokenType;
-
-/**
- * Provides cursor index into a {@link org.apache.tapestry5.internal.parser.ComponentTemplate}.
- */
-interface TokenStream
-{
-    /**
-     * Returns true if there are more tokens available.
-     */
-    boolean more();
-
-    /**
-     * Peeks at the type of the next token.
-     */
-    TokenType peekType();
-
-    /**
-     * Returns the next token and casts it to the indicated type.
-     */
-    <T extends TemplateToken> T next(Class<T> type);
-
-    /**
-     * Returns the next token.
-     */
-    TemplateToken next();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/TokenStreamImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/TokenStreamImpl.java
deleted file mode 100644
index be2a6af..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/pageload/TokenStreamImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.parser.TokenType;
-
-import java.util.List;
-
-class TokenStreamImpl implements TokenStream
-{
-    private final List<TemplateToken> tokens;
-
-    private int index = 0;
-
-    TokenStreamImpl(List<TemplateToken> tokens)
-    {
-        this.tokens = tokens;
-    }
-
-    public boolean more()
-    {
-        return index < tokens.size();
-    }
-
-    public TokenType peekType()
-    {
-        checkMore();
-
-        return tokens.get(index).getTokenType();
-    }
-
-    private void checkMore()
-    {
-        if (!more())
-            throw new IllegalStateException(PageloadMessages.noMoreTokens());
-    }
-
-    public <T extends TemplateToken> T next(Class<T> type)
-    {
-        return type.cast(next());
-    }
-
-    public TemplateToken next()
-    {
-        checkMore();
-
-        return tokens.get(index++);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java
deleted file mode 100644
index baa32ab..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/AttributeToken.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Stores an attribute/value pair (as part of an XML element).
- */
-public class AttributeToken extends TemplateToken
-{
-    private final String namespaceURI;
-
-    private final String name;
-
-    private final String value;
-
-    public AttributeToken(String namespaceURI, String name, String value, Location location)
-    {
-        super(TokenType.ATTRIBUTE, location);
-
-        this.namespaceURI = namespaceURI;
-        this.name = name;
-        this.value = value;
-    }
-
-    /**
-     * Returns local name for the attribute.
-     */
-    public String getName()
-    {
-        return name;
-    }
-
-    /**
-     * Returns the value for the attribute.
-     */
-    public String getValue()
-    {
-        return value;
-    }
-
-    /**
-     * Returns the namespace URI containing the attribute, or the empty string for the default namespace.
-     */
-    public String getNamespaceURI()
-    {
-        return namespaceURI;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("Attribute[");
-
-        if (namespaceURI.length() > 0) builder.append(namespaceURI).append(" ");
-
-        builder.append(name).append("=").append(value).append("]");
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java
deleted file mode 100644
index 8a33c77..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BlockToken.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A block, used to enclose a chunk of template (including components) and control when or if the content is rendered.
- */
-public class BlockToken extends TemplateToken
-{
-    private final String id;
-
-    /**
-     * @param id       the id of the block, or null for an anonymous block
-     * @param location of the block element
-     */
-    public BlockToken(String id, Location location)
-    {
-        super(TokenType.BLOCK, location);
-
-        this.id = id;
-    }
-
-    /**
-     * Returns the block's template-unique id, or null if the block element did not specify an id.
-     */
-    public String getId()
-    {
-        return id;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Block[%s]", id == null ? "" : id);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java
deleted file mode 100644
index b851dcb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/BodyToken.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Placeholder for a component's body (within the component's template).
- */
-public class BodyToken extends TemplateToken
-{
-    public BodyToken(Location location)
-    {
-        super(TokenType.BODY, location);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java
deleted file mode 100644
index af6e766..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CDATAToken.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Literal text that was enclosed within a !CDATA in the input template (so we should do the same during output).
- */
-public class CDATAToken extends TemplateToken
-{
-    private final String content;
-
-    public CDATAToken(String content, Location location)
-    {
-        super(TokenType.CDATA, location);
-
-        this.content = content;
-    }
-
-    public String getContent()
-    {
-        return content;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("CDATA[%s]", content);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java
deleted file mode 100644
index ce65ea8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/CommentToken.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A node representing a comment embedded in the source input.
- */
-public class CommentToken extends TemplateToken
-{
-    private final String comment;
-
-    public CommentToken(String comment, Location location)
-    {
-        super(TokenType.COMMENT, location);
-
-        this.comment = comment;
-    }
-
-    public String getComment()
-    {
-        return comment;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Comment[%s]", comment);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java
deleted file mode 100644
index a016614..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplate.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * A parsed component template, containing all the tokens parsed from the template.
- */
-public interface ComponentTemplate
-{
-    /**
-     * Returns true if no template could be found for the component.
-     */
-    boolean isMissing();
-
-    /**
-     * Returns true if this component template is an extension of its parent class' template.
-     *
-     * @since 5.1.0.1
-     */
-    boolean isExtension();
-
-    /**
-     * Returns a list of tokens associated with an extension point, or null if this template neither defines the
-     * extension point nor overrides it.
-     *
-     * @param extensionPointId
-     * @return list of tokens provided in this template, or null
-     * @since 5.1.0.1
-     */
-    List<TemplateToken> getExtensionPointTokens(String extensionPointId);
-
-    /**
-     * Returns the resource that was parsed to form the template.
-     */
-    Resource getResource();
-
-    /**
-     * Returns a list of tokens that were parsed from the template. The caller should not modify this list.
-     */
-    List<TemplateToken> getTokens();
-
-    /**
-     * Identifies     {@link org.apache.tapestry5.internal.parser.StartComponentToken}s with a non-blank id, mapping the
-     * id to its location (within the template). This is used to report unmatched ids (where the component, or its
-     * super-classes, do not define an embedded component).
-     *
-     * @see org.apache.tapestry5.annotations.Component (used to define an embedded component)
-     */
-    Map<String, Location> getComponentIds();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java
deleted file mode 100644
index efc4aff..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ComponentTemplateImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.util.List;
-import java.util.Map;
-
-public class ComponentTemplateImpl implements ComponentTemplate
-{
-    private final Resource resource;
-
-    private final List<TemplateToken> tokens;
-
-    private final Map<String, Location> componentIds;
-
-    private final boolean extension;
-
-    private final Map<String, List<TemplateToken>> overrides;
-
-    /**
-     * @param resource     the resource from which the template was parsed
-     * @param tokens       the tokens of the template, a copy of this list will be made
-     * @param componentIds ids of components defined in the template
-     * @param extension
-     * @param overrides    id to list of tokens for that override
-     */
-    public ComponentTemplateImpl(Resource resource, List<TemplateToken> tokens,
-                                 Map<String, Location> componentIds, boolean extension,
-                                 Map<String, List<TemplateToken>> overrides)
-    {
-        this.resource = resource;
-        this.extension = extension;
-        this.overrides = overrides;
-        this.tokens = newList(tokens);
-        this.componentIds = CollectionFactory.newMap(componentIds);
-    }
-
-    public Resource getResource()
-    {
-        return resource;
-    }
-
-    public List<TemplateToken> getTokens()
-    {
-        return tokens;
-    }
-
-    public Map<String, Location> getComponentIds()
-    {
-        return componentIds;
-    }
-
-    /**
-     * Returns false.
-     */
-    public boolean isMissing()
-    {
-        return false;
-    }
-
-    public List<TemplateToken> getExtensionPointTokens(String extensionPointId)
-    {
-        return InternalUtils.get(overrides, extensionPointId);
-    }
-
-    public boolean isExtension()
-    {
-        return extension;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java
deleted file mode 100644
index dfbda07..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DTDToken.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Represents the presence of a Document Type declaration within a template. The Document type declaration will be
- * output to the client. In the event that multiple declarations are encountered (a page and one or more nested
- * components all declare a document type), the first document type declared will be used.
- */
-public class DTDToken extends TemplateToken
-{
-    private final String name;
-
-    private final String publicId;
-
-    private final String systemId;
-
-    public DTDToken(String name, String publicId, String systemId, Location location)
-    {
-        super(TokenType.DTD, location);
-
-        this.name = name;
-        this.publicId = publicId;
-        this.systemId = systemId;
-    }
-
-    /**
-     * Returns the doctype name (the name of the document root element)
-     */
-    public String getName()
-    {
-        return name;
-    }
-
-    /**
-     * Returns the public identifier of the DTD
-     */
-    public String getPublicId()
-    {
-        return publicId;
-    }
-
-    /**
-     * Returns the system identifier of the DTD
-     */
-    public String getSystemId()
-    {
-        return systemId;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("DTD[name=%s; publicId=%s; systemId=%s]", name, publicId, systemId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java
deleted file mode 100644
index 5ffc7b5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/DefineNamespacePrefixToken.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A token from a template that defines a namespace prefix. This will always follow a {@link
- * org.apache.tapestry5.internal.parser.StartComponentToken} or {@link org.apache.tapestry5.internal.parser.StartElementToken}
- * (and come before {@link org.apache.tapestry5.internal.parser.AttributeToken}) and applies to the component or
- * element.
- *
- * @see org.apache.tapestry5.dom.Element#defineNamespace(String, String)
- */
-public class DefineNamespacePrefixToken extends TemplateToken
-{
-    private final String namespaceURI;
-    private final String namespacePrefix;
-
-    public DefineNamespacePrefixToken(String namespaceURI, String namespacePrefix, Location location)
-    {
-        super(TokenType.DEFINE_NAMESPACE_PREFIX, location);
-
-        this.namespacePrefix = namespacePrefix;
-        this.namespaceURI = namespaceURI;
-    }
-
-    public String getNamespacePrefix()
-    {
-        return namespacePrefix;
-    }
-
-    public String getNamespaceURI()
-    {
-        return namespaceURI;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("DefineNamespacePrefix[%s=%s]", namespacePrefix, namespaceURI);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java
deleted file mode 100644
index e3e0931..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/EndElementToken.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Ends a previously started element (including components, parameters, blocks, etc.).
- */
-public class EndElementToken extends TemplateToken
-{
-    public EndElementToken(Location location)
-    {
-        super(TokenType.END_ELEMENT, location);
-    }
-
-    @Override
-    public String toString()
-    {
-        return "End";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java
deleted file mode 100644
index 64bdd74..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExpansionToken.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A token containing an expression expansion from the template. Expression expansions look like Ant variables, i.e.,
- * "${xyz}", where xyz is a binding expression. It may have a prefix or not ("prop:" will be the default prefix if not
- * specified).
- */
-public class ExpansionToken extends TemplateToken
-{
-    private final String expression;
-
-    public ExpansionToken(String expression, Location location)
-    {
-        super(TokenType.EXPANSION, location);
-
-        this.expression = expression;
-    }
-
-    public String getExpression()
-    {
-        return expression;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Expression[%s]", expression);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java
deleted file mode 100644
index a033397..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ExtensionPointToken.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A token that represents the replacement of a portion of the template with the content of an extension point, or an
- * override of that extension point.
- *
- * @see org.apache.tapestry5.internal.parser.ComponentTemplate#getExtensionPointTokens(String)
- * @since 5.1.0.1
- */
-public class ExtensionPointToken extends TemplateToken
-{
-    private final String extensionPointId;
-
-    public ExtensionPointToken(String extensionPointId, Location location)
-    {
-        super(TokenType.EXTENSION_POINT, location);
-        this.extensionPointId = extensionPointId;
-    }
-
-    public String getExtensionPointId()
-    {
-        return extensionPointId;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java
deleted file mode 100644
index eab158e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/ParameterToken.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A parameter block to be passed to a component as a parameter.
- */
-public class ParameterToken extends TemplateToken
-{
-    private final String name;
-
-    /**
-     * @param name     the name of the parameter to be bound
-     * @param location location of the element
-     */
-    public ParameterToken(String name, Location location)
-    {
-        super(TokenType.PARAMETER, location);
-
-        this.name = name;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Parameter[%s]", name);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java
deleted file mode 100644
index 8ceaf77..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartComponentToken.java
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * The start element of a component within the template. Will be followed by a series of {@link
- * org.apache.tapestry5.internal.parser.AttributeToken}s for any attributes (outside of id and type), and eventually
- * will be balanced by an {@link org.apache.tapestry5.internal.parser.EndElementToken}.
- */
-public class StartComponentToken extends TemplateToken
-{
-    private final String elementName;
-
-    private final String id;
-
-    private final String componentType;
-
-    private final String mixins;
-
-    /**
-     * @param elementName the name of the element from which this component was parsed, or null if the element was the
-     *                    t:comp placeholder
-     * @param id          the id of the component (may be null for anonymous components)
-     * @param type        the type of component (may be null if the component type is specified outside the template)
-     * @param mixins      a comma-separated list of mixins (possibly null)
-     * @param location    the location within the template at which the element was parsed
-     */
-    public StartComponentToken(String elementName, String id, String type, String mixins,
-                               Location location)
-    {
-        super(TokenType.START_COMPONENT, location);
-
-        // TODO: id or type may be null, but not both!
-
-        this.elementName = elementName;
-        this.id = id;
-        componentType = type;
-        this.mixins = mixins;
-    }
-
-    /**
-     * Returns the element for this component. When using the &lt;t:comp&gt; placeholder, this value will be null. When
-     * using "invisible instrumentation", where t:id or t:type attributes are added to existing elements, this is the
-     * local name of the element so attached.
-     *
-     * @return the element name or null
-     */
-    public String getElementName()
-    {
-        return elementName;
-    }
-
-    /**
-     * Returns a non-blank id if one was provided in the template. If the id attribute was missing (or the value was
-     * blank), returns null.
-     */
-    public String getId()
-    {
-        return id;
-    }
-
-    /**
-     * Returns a non-blank component type if one was provided in the template. If the type attribute was missing (or the
-     * value was blank), returns null.
-     */
-    public String getComponentType()
-    {
-        return componentType;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder();
-
-        add(builder, "element", elementName);
-        add(builder, "id", id);
-        add(builder, "type", componentType);
-        add(builder, "mixins", mixins);
-
-        builder.insert(0, "StartComponentToken[");
-        builder.append("]");
-
-        return builder.toString();
-    }
-
-    private void add(StringBuilder builder, String label, String value)
-    {
-        if (value == null)
-            return;
-
-        if (builder.length() > 0)
-            builder.append(" ");
-
-        builder.append(label);
-        builder.append("=");
-        builder.append(value);
-    }
-
-    /**
-     * Returns the list of mixins for this component instance, or null for no mixins.
-     */
-    public String getMixins()
-    {
-        return mixins;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java
deleted file mode 100644
index 179838e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/StartElementToken.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * The start of an ordinary element within the template (as opposed to {@link org.apache.tapestry5.internal.parser.StartComponentToken},
- * which represents an active Tapestry token. A start element token may be immediately followed by {@link
- * org.apache.tapestry5.internal.parser.AttributeToken}s that represents the attributes associated with the element. A
- * start element token will always be balanced by a {@link org.apache.tapestry5.internal.parser.EndElementToken} (though
- * there will likely be some amount of intermediate tokens).
- */
-public class StartElementToken extends TemplateToken
-{
-    private final String namespaceURI;
-
-    private final String name;
-
-    public StartElementToken(String namespaceURI, String name, Location location)
-    {
-        super(TokenType.START_ELEMENT, location);
-
-        this.namespaceURI = namespaceURI;
-        this.name = name;
-    }
-
-    /**
-     * Returns local name for the element.
-     */
-    public String getName()
-    {
-        return name;
-    }
-
-    /**
-     * @return the namespace URI for the element, or the empty string for the default namespace
-     */
-    public String getNamespaceURI()
-    {
-        return namespaceURI;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("Start[");
-
-        if (namespaceURI != null && namespaceURI.length() > 0) builder.append(namespaceURI).append(" ");
-
-        builder.append(name).append("]");
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java
deleted file mode 100644
index 09aa078..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TemplateToken.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Base class for tokens parsed out of a template. The set of classes rooted here are effectively object encapsulations
- * of the events generated by a SAX parser.
- */
-public abstract class TemplateToken extends BaseLocatable
-{
-    private final TokenType tokenType;
-
-    protected TemplateToken(TokenType tokenType, Location location)
-    {
-        super(location);
-        this.tokenType = tokenType;
-    }
-
-    public TokenType getTokenType()
-    {
-        return tokenType;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java
deleted file mode 100644
index 9717ee4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TextToken.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-import org.apache.tapestry5.ioc.Location;
-
-/**
- *
- */
-public class TextToken extends TemplateToken
-{
-    private final String text;
-
-    public TextToken(String text, Location location)
-    {
-        super(TokenType.TEXT, location);
-
-        this.text = text;
-    }
-
-    /**
-     * Returns the text extracted from that part of the template.
-     */
-    public String getText()
-    {
-        return text;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Text[%s]", text);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TokenType.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TokenType.java
deleted file mode 100644
index 1384775..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/TokenType.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.parser;
-
-/**
- * Defines the different types of {@link org.apache.tapestry5.internal.parser.TemplateToken}s. Each value maps to a
- * particular subclass of TemplateToken.
- */
-public enum TokenType
-{
-
-    ATTRIBUTE, CDATA, COMMENT, END_ELEMENT, START_COMPONENT, START_ELEMENT, TEXT, BODY, EXPANSION, PARAMETER, BLOCK, DTD,
-    DEFINE_NAMESPACE_PREFIX,
-
-    /**
-     * @since 5.1.0.1
-     */
-    EXTENSION_POINT
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/package.html b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/package.html
deleted file mode 100644
index 3a4fe96..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/parser/package.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<body>
-Classes related to parsing of Tapestry component templates.
-</body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java
deleted file mode 100644
index 9ea5889..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/AvailableValuesRenderer.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-/**
- * Renders out a {@link AvailableValues} instance as a &lt;div&gt; enclosing a &lt;ul&gt;.
- * 
- * @since 5.2.0
- */
-public class AvailableValuesRenderer implements ObjectRenderer<AvailableValues>
-{
-    public void render(AvailableValues values, MarkupWriter writer)
-    {
-        writer.element("div", "class", "t-available-values");
-
-        writer.element("p");
-
-        writer.writef("%s:", values.getValueType());
-
-        writer.end();
-
-        writer.element("ul");
-
-        for (String value : values.getValues())
-        {
-            writer.element("li");
-            writer.write(value);
-            writer.end();
-        }
-
-        writer.end();
-
-        writer.end(); // div
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java
deleted file mode 100644
index 0d7c259..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ComponentResourcesRenderer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-/**
- * Renders {@link ComponentResources} instance, showing the complete id and the class name and the location (if a
- * location is available, it won't be for pages).
- */
-public class ComponentResourcesRenderer implements ObjectRenderer<ComponentResources>
-{
-    private final ObjectRenderer masterRenderer;
-
-    public ComponentResourcesRenderer(@Primary ObjectRenderer masterRenderer)
-    {
-        this.masterRenderer = masterRenderer;
-    }
-
-    public void render(ComponentResources object, MarkupWriter writer)
-    {
-        writer.writef("%s (class %s)", object.getCompleteId(), object.getComponentModel().getComponentClassName());
-
-        Location location = object.getLocation();
-
-        if (location != null)
-        {
-            writer.element("br");
-            writer.end();
-
-            masterRenderer.render(location, writer);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/EventContextRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/EventContextRenderer.java
deleted file mode 100644
index 0b7b9ac..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/EventContextRenderer.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-/**
- * Renders out the values stored inside a {@link EventContext}.
- */
-public class EventContextRenderer implements ObjectRenderer<EventContext>
-{
-    private final ObjectRenderer masterRenderer;
-
-    public EventContextRenderer(@Primary ObjectRenderer masterRenderer)
-    {
-        this.masterRenderer = masterRenderer;
-    }
-
-
-    public void render(EventContext object, MarkupWriter writer)
-    {
-        int count = object.getCount();
-
-        if (count == 0) return;
-
-        writer.element("ul", "class", "t-data-list");
-
-        for (int i = 0; i < count; i++)
-        {
-            writer.element("li");
-
-            masterRenderer.render(object.get(Object.class, i), writer);
-
-            writer.end();
-        }
-
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ListRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ListRenderer.java
deleted file mode 100644
index 0b784ce..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ListRenderer.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-import java.util.List;
-
-/**
- * Renders a List, but rendering an unordered list.
- */
-public class ListRenderer implements ObjectRenderer<List>
-{
-    private final ObjectRenderer masterRenderer;
-
-    public ListRenderer(@Primary ObjectRenderer masterRenderer)
-    {
-        this.masterRenderer = masterRenderer;
-    }
-
-    public void render(List list, MarkupWriter writer)
-    {
-        if (list.isEmpty())
-        {
-            writer.element("em");
-            writer.write("empty list");
-            writer.end();
-            return;
-        }
-
-        writer.element("ul", "class", "t-data-list");
-
-        for (Object element : list)
-        {
-            writer.element("li");
-
-            masterRenderer.render(element, writer);
-
-            writer.end();
-        }
-
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java
deleted file mode 100644
index 9fb649c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/LocationRenderer.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-import java.io.*;
-import java.util.Set;
-
-/**
- * Responsible for rendering a {@link Location}. It is designed to only perform the full output (which includes a
- * snippet of the source file) once per render. This requires the use of the "perthread" scope (since the service
- * tracks, internally, which locations have already been rendered, to avoid repetition).
- */
-@Scope(ScopeConstants.PERTHREAD)
-public class LocationRenderer implements ObjectRenderer<Location>
-{
-    private static final int RANGE = 5;
-
-    private final Set<Location> rendered = CollectionFactory.newSet();
-
-    public void render(Location location, MarkupWriter writer)
-    {
-        writer.write(location.toString());
-
-        /** If the full details were already rendered this request, then skip the rest. */
-        if (rendered.contains(location)) return;
-
-        rendered.add(location);
-
-        Resource r = location.getResource();
-        int line = location.getLine();
-
-        // No line number? then nothing more to render.
-
-        if (line <= 0) return;
-
-        if (!r.exists()) return;
-
-
-        int start = line - RANGE;
-        int end = line + RANGE;
-
-        writer.element("table", "class", "t-location-outer");
-
-        LineNumberReader reader = null;
-
-        try
-        {
-            InputStream is = r.openStream();
-            InputStreamReader isr = new InputStreamReader(is);
-            reader = new LineNumberReader(new BufferedReader(isr));
-
-            while (true)
-            {
-                String input = reader.readLine();
-
-                if (input == null) break;
-
-                int current = reader.getLineNumber();
-
-                if (current < start) continue;
-
-                if (current > end) break;
-
-                writer.element("tr");
-
-                writer.element("td", "class", "t-location-line");
-
-                if (line == current) writer.getElement().addClassName("t-location-current");
-
-                writer.write(Integer.toString(current));
-                writer.end();
-
-                Element td = writer.element("td", "class", "t-location-content");
-
-                if (line == current) td.addClassName("t-location-current");
-
-                if (start == current) td.addClassName("t-location-content-first");
-
-                writer.write(input);
-                writer.end();
-
-                writer.end(); // tr
-            }
-
-            reader.close();
-            reader = null;
-        }
-        catch (IOException ex)
-        {
-            writer.write(ex.toString());
-        }
-        finally
-        {
-            InternalUtils.close(reader);
-        }
-
-        writer.end(); // div
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ObjectArrayRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ObjectArrayRenderer.java
deleted file mode 100644
index 03a472b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/ObjectArrayRenderer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ObjectRenderer;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Renders an Object[] array as an unordered list.
- */
-public class ObjectArrayRenderer implements ObjectRenderer<Object[]>
-{
-    private final ObjectRenderer masterRenderer;
-
-    public ObjectArrayRenderer(@Primary ObjectRenderer masterRenderer)
-    {
-        this.masterRenderer = masterRenderer;
-    }
-
-    public void render(Object[] array, MarkupWriter writer)
-    {
-        if (array.length == 0)
-        {
-            writer.element("em");
-            writer.write("empty array");
-            writer.end();
-            return;
-        }
-
-        List list = Arrays.asList(array);
-
-        masterRenderer.render(list, writer);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
deleted file mode 100644
index e4022a0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/renderers/RequestRenderer.java
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.renderers;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.Context;
-import org.apache.tapestry5.services.ObjectRenderer;
-import org.apache.tapestry5.services.Request;
-
-import java.util.List;
-
-public class RequestRenderer implements ObjectRenderer<Request>
-{
-    private final Context context;
-
-    private final ObjectRenderer masterObjectRenderer;
-
-    public RequestRenderer(@Primary ObjectRenderer masterObjectRenderer, Context context)
-    {
-        this.masterObjectRenderer = masterObjectRenderer;
-        this.context = context;
-    }
-
-    public void render(Request request, MarkupWriter writer)
-    {
-        writer.element("dl");
-
-        dt(writer, "Context Path");
-
-        writer.element("dd");
-
-        String contextPath = request.getContextPath();
-
-        if (contextPath.equals(""))
-        {
-            writer.element("em");
-            writer.write("none (deployed as root)");
-            writer.end();
-        }
-        else
-        {
-            writer.write(contextPath);
-        }
-        writer.end(); // dd
-
-        dt(writer, "Request Path");
-        dd(writer, request.getPath());
-
-        dt(writer, "Locale");
-        dd(writer, request.getLocale().toString());
-
-        dt(writer, "Secure");
-        dd(writer, Boolean.toString(request.isSecure()));
-
-        dt(writer, "Server Name");
-        dd(writer, request.getServerName());
-
-        writer.end();
-
-        parameters(request, writer);
-        headers(request, writer);
-        context(writer);
-    }
-
-    private void context(MarkupWriter writer)
-    {
-        List<String> attributeNames = context.getAttributeNames();
-
-        if (attributeNames.isEmpty()) return;
-
-        section(writer, "Context Attributes");
-
-        writer.element("dl");
-
-        for (String name : attributeNames)
-        {
-            dt(writer, name);
-
-            writer.element("dd");
-
-            masterObjectRenderer.render(context.getAttribute(name), writer);
-
-            writer.end(); // dd
-        }
-
-        writer.end(); // dl
-    }
-
-    private void parameters(Request request, MarkupWriter writer)
-    {
-        List<String> parameterNames = request.getParameterNames();
-
-        if (parameterNames.isEmpty())
-            return;
-
-        section(writer, "Query Parameters");
-
-        writer.element("dl");
-
-        for (String name : parameterNames)
-        {
-            String[] values = request.getParameters(name);
-
-            dt(writer, name);
-
-            writer.element("dd");
-
-            if (values.length > 1)
-            {
-                writer.element("ul");
-
-                for (String value : values)
-                {
-                    writer.element("li");
-                    writer.write(value);
-                    writer.end();
-                }
-
-                writer.end(); // ul
-            }
-            else
-            {
-                writer.write(values[0]);
-            }
-
-            writer.end(); // dd
-        }
-
-        writer.end(); // dl
-    }
-
-    private void dt(MarkupWriter writer, String name)
-    {
-        writer.element("dt");
-        writer.write(name);
-        writer.end();
-    }
-
-    private void dd(MarkupWriter writer, String name)
-    {
-        writer.element("dd");
-        writer.write(name);
-        writer.end();
-    }
-
-    private void section(MarkupWriter writer, String name)
-    {
-        writer.element("div", "class", InternalConstants.OBJECT_RENDER_DIV_SECTION);
-        writer.write(name);
-        writer.end();
-    }
-
-    private void headers(Request request, MarkupWriter writer)
-    {
-        section(writer, "Headers");
-
-        writer.element("dl");
-
-        for (String name : request.getHeaderNames())
-        {
-            dt(writer, name);
-            dd(writer, request.getHeader(name));
-        }
-
-        writer.end(); // dl
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java
deleted file mode 100644
index 813e215..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractAsset.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset2;
-
-/**
- * Base class for assets.
- *
- * @since 5.1.0.0
- */
-public abstract class AbstractAsset implements Asset2
-{
-    private final boolean invariant;
-
-    public AbstractAsset(boolean invariant)
-    {
-        this.invariant = invariant;
-    }
-
-    public boolean isInvariant()
-    {
-        return invariant;
-    }
-
-    /**
-     * Returns {@link org.apache.tapestry5.Asset#toClientURL()}.
-     */
-    @Override
-    public String toString()
-    {
-        return toClientURL();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractComponentMethodInvocation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractComponentMethodInvocation.java
deleted file mode 100644
index d556ae3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractComponentMethodInvocation.java
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-
-public abstract class AbstractComponentMethodInvocation implements ComponentMethodInvocation
-{
-    private final ComponentMethodInvocationInfo info;
-
-    private final Component instance;
-
-    private int adviceIndex = 0;
-
-    private Throwable thrown;
-
-    private Object result;
-
-    public AbstractComponentMethodInvocation(ComponentMethodInvocationInfo info, Component instance)
-    {
-        this.info = info;
-        this.instance = instance;
-    }
-
-    public Component getInstance()
-    {
-        return instance;
-    }
-
-    public ComponentResources getComponentResources()
-    {
-        return instance.getComponentResources();
-    }
-
-    public String getMethodName()
-    {
-        return info.getMethodName();
-    }
-
-    public Class getResultType()
-    {
-        return info.getResultType();
-    }
-
-    public int getParameterCount()
-    {
-        return info.getParameterCount();
-    }
-
-    public Class getParameterType(int index)
-    {
-        return info.getParameterType(index);
-    }
-
-    /**
-     * This first call is to the first advice. When we run out of advice, we re-invoke.
-     */
-    public void proceed()
-    {
-        if (adviceIndex >= info.getAdviceCount())
-        {
-            invokeAdvisedMethod();
-            return;
-        }
-
-        ComponentMethodAdvice advice = info.getAdvice(adviceIndex++);
-
-        // When this advice invokes proceed(), we can advance to the next advice,
-        // and then ultimately to the advised method.
-
-        advice.advise(this);
-    }
-
-    /**
-     * Implemented to reinvoke the method on the advised method of the component.
-     */
-    protected abstract void invokeAdvisedMethod();
-
-    public boolean isFail()
-    {
-        return thrown != null;
-    }
-
-    public void rethrow()
-    {
-        if (thrown != null)
-            throw new RuntimeException(thrown);
-    }
-
-    public <T extends Throwable> T getThrown(Class<T> throwableClass)
-    {
-        if (throwableClass.isInstance(thrown))
-            return throwableClass.cast(thrown);
-
-        return null;
-    }
-
-    public void overrideThrown(Exception thrown)
-    {
-        for (Class type : info.getExceptionTypes())
-        {
-            if (type.isInstance(thrown))
-            {
-                this.thrown = thrown;
-                return;
-            }
-        }
-
-        throw new IllegalArgumentException(String.format(
-                "Exception class %s is not a declared exception type for method %s().", thrown.getClass(), info
-                        .getMethodName()));
-    }
-
-    public Object getResult()
-    {
-        return result;
-    }
-
-    public void overrideResult(Object newResult)
-    {
-        if (newResult != null)
-        {
-            Class expectedType = info.getEffectiveResultType();
-
-            if (!expectedType.isInstance(newResult)) { throw new IllegalArgumentException(String.format(
-                    "Invalid result value (%s) does not match return type %s for method %s.", newResult, expectedType
-                            .getName(), info.getMethodName())); }
-        }
-
-        result = newResult;
-        thrown = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractInstantiator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractInstantiator.java
deleted file mode 100644
index c876a6c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractInstantiator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.model.ComponentModel;
-
-/**
- * Abstract base class for instantiators; for each component, a new subclass is created at runtime.
- */
-public abstract class AbstractInstantiator implements Instantiator
-{
-    private final ComponentModel model;
-
-    private final String description;
-
-    protected final Object[] constructorArgs;
-
-    public AbstractInstantiator(ComponentModel model, String description, Object[] constructorArgs)
-    {
-        this.model = model;
-        this.description = description;
-        this.constructorArgs = constructorArgs;
-    }
-
-    @Override
-    public String toString()
-    {
-        return description;
-    }
-
-    public ComponentModel getModel()
-    {
-        return model;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractMethodAccess.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractMethodAccess.java
deleted file mode 100644
index a455b12..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractMethodAccess.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.MethodAccess;
-import org.apache.tapestry5.services.MethodInvocationResult;
-
-/**
- * Base class used for dynamically-created subclasses that implement {@link MethodAccess}
- * 
- * @since 5.2.0
- */
-public abstract class AbstractMethodAccess implements MethodAccess
-{
-    protected MethodInvocationResult success(Object result)
-    {
-        return new MethodInvocationSuccessfulResult(result);
-    }
-
-    protected MethodInvocationResult fail(Throwable exception)
-    {
-        return new MethodInvocationFailResult(exception);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java
deleted file mode 100644
index 895707d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AbstractSessionPersistentFieldStrategy.java
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-/**
- * Base class for strategies that store their values as keys in the session. Implements a uniform format for the keys,
- * based on a prefix to identify the particular strategy.
- */
-public abstract class AbstractSessionPersistentFieldStrategy implements PersistentFieldStrategy
-{
-    private final String prefix;
-
-    private final Request request;
-
-    protected AbstractSessionPersistentFieldStrategy(String prefix, Request request)
-    {
-        this.prefix = prefix;
-        this.request = request;
-    }
-
-    public final Collection<PersistentFieldChange> gatherFieldChanges(String pageName)
-    {
-        Session session = request.getSession(false);
-
-        if (session == null) return Collections.emptyList();
-
-        List<PersistentFieldChange> result = newList();
-
-        String fullPrefix = prefix + pageName + ":";
-
-        for (String name : session.getAttributeNames(fullPrefix))
-        {
-            Object persistedValue = session.getAttribute(name);
-
-            Object applicationValue = persistedValue == null ? null : convertPersistedToApplicationValue(
-                    persistedValue);
-
-            PersistentFieldChange change = buildChange(name, applicationValue);
-
-            result.add(change);
-
-            didReadChange(session, name);
-        }
-
-        return result;
-    }
-
-    public void discardChanges(String pageName)
-    {
-        Session session = request.getSession(false);
-
-        if (session == null) return;
-
-        String fullPrefix = prefix + pageName + ":";
-
-        for (String name : session.getAttributeNames(fullPrefix))
-        {
-            session.setAttribute(name, null);
-        }
-    }
-
-    /**
-     * Called after each key is read by {@link #gatherFieldChanges(String)}. This implementation does nothing,
-     * subclasses may override.
-     *
-     * @param session       the session from which a value was just read
-     * @param attributeName the name of the attribute used to read a value
-     */
-    protected void didReadChange(Session session, String attributeName)
-    {
-    }
-
-    private PersistentFieldChange buildChange(String name, Object newValue)
-    {
-        String[] chunks = name.split(":");
-
-        // Will be empty string for the root component
-        String componentId = chunks[2];
-        String fieldName = chunks[3];
-
-        return new PersistentFieldChangeImpl(componentId, fieldName, newValue);
-    }
-
-    public final void postChange(String pageName, String componentId, String fieldName,
-                                 Object newValue)
-    {
-        assert InternalUtils.isNonBlank(pageName);
-        assert InternalUtils.isNonBlank(fieldName);
-        Object persistedValue = newValue == null ? null : convertApplicationValueToPersisted(newValue);
-
-        StringBuilder builder = new StringBuilder(prefix);
-        builder.append(pageName);
-        builder.append(':');
-
-        if (componentId != null) builder.append(componentId);
-
-        builder.append(':');
-        builder.append(fieldName);
-
-        Session session = request.getSession(persistedValue != null);
-
-        // TAPESTRY-2308: The session will be false when newValue is null and the session
-        // does not already exist.
-
-        if (session != null)
-        {
-            session.setAttribute(builder.toString(), persistedValue);
-        }
-    }
-
-    /**
-     * Hook that allows a value to be converted as it is written to the session. Passed the new value provided by the
-     * application, returns the object to be stored in the session. This implementation simply returns the provided
-     * value.
-     *
-     * @param newValue non-null value
-     * @return persisted value
-     * @see #convertPersistedToApplicationValue(Object)
-     */
-    protected Object convertApplicationValueToPersisted(Object newValue)
-    {
-        return newValue;
-    }
-
-    /**
-     * Converts a persisted value stored in the session back into an application value.   This implementation returns
-     * the persisted value as is.
-     *
-     * @param persistedValue non-null persisted value
-     * @return application value
-     * @see #convertPersistedToApplicationValue(Object)
-     */
-    protected Object convertPersistedToApplicationValue(Object persistedValue)
-    {
-        return persistedValue;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ActionRenderResponseGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ActionRenderResponseGenerator.java
deleted file mode 100644
index e3fbead..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ActionRenderResponseGenerator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-
-import java.io.IOException;
-
-/**
- * Used to produce the normal response to an action request: a redirect to a particular page.
- */
-public interface ActionRenderResponseGenerator
-{
-    void generateResponse(Page page) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ActionRenderResponseGeneratorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ActionRenderResponseGeneratorImpl.java
deleted file mode 100644
index c1fa059..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ActionRenderResponseGeneratorImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.Response;
-
-import java.io.IOException;
-
-/**
- * Simply uses the {@link LinkSource} to generate a link which is then {@linkplain
- * org.apache.tapestry5.services.Response#sendRedirect(org.apache.tapestry5.Link)} sent as a redirect}.
- */
-public class ActionRenderResponseGeneratorImpl implements ActionRenderResponseGenerator
-{
-    private final LinkSource linkSource;
-
-    private final Response response;
-
-    public ActionRenderResponseGeneratorImpl(LinkSource linkSource, Response response)
-    {
-        this.linkSource = linkSource;
-        this.response = response;
-    }
-
-    public void generateResponse(Page page) throws IOException
-    {
-        Link link = linkSource.createPageRenderLink(page.getName(), false);
-
-        response.sendRedirect(link);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
deleted file mode 100644
index 2f6ac11..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentEventRequestHandler.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.TrackableComponentEventCallback;
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-/**
- * Similar to {@link ComponentEventRequestHandlerImpl}, but built around the Ajax request cycle, where the action
- * request sends back an immediate JSON response containing the new content.
- */
-@SuppressWarnings("unchecked")
-public class AjaxComponentEventRequestHandler implements ComponentEventRequestHandler
-{
-    private final RequestPageCache cache;
-
-    private final Request request;
-
-    private final PageRenderQueue queue;
-
-    private final ComponentEventResultProcessor resultProcessor;
-
-    private final PageContentTypeAnalyzer pageContentTypeAnalyzer;
-
-    private final Environment environment;
-
-    private final AjaxPartialResponseRenderer partialRenderer;
-
-    private final PageActivator pageActivator;
-
-    public AjaxComponentEventRequestHandler(RequestPageCache cache, Request request, PageRenderQueue queue, @Ajax
-    ComponentEventResultProcessor resultProcessor, PageActivator pageActivator,
-            PageContentTypeAnalyzer pageContentTypeAnalyzer, Environment environment,
-            AjaxPartialResponseRenderer partialRenderer)
-    {
-        this.cache = cache;
-        this.queue = queue;
-        this.resultProcessor = resultProcessor;
-        this.pageActivator = pageActivator;
-        this.pageContentTypeAnalyzer = pageContentTypeAnalyzer;
-        this.request = request;
-        this.environment = environment;
-        this.partialRenderer = partialRenderer;
-    }
-
-    public void handle(ComponentEventRequestParameters parameters) throws IOException
-    {
-        Page activePage = cache.get(parameters.getActivePageName());
-
-        final Holder<Boolean> resultProcessorInvoked = Holder.create();
-        resultProcessorInvoked.put(false);
-
-        ComponentEventResultProcessor interceptor = new ComponentEventResultProcessor()
-        {
-            public void processResultValue(Object value) throws IOException
-            {
-                resultProcessorInvoked.put(true);
-
-                resultProcessor.processResultValue(value);
-            }
-        };
-
-        if (pageActivator.activatePage(activePage.getRootElement().getComponentResources(), parameters
-                .getPageActivationContext(), interceptor))
-            return;
-
-        // If we end up doing a partial render, the page render queue service needs to know the
-        // page that will be rendered (for logging purposes, if nothing else).
-
-        queue.setRenderingPage(activePage);
-
-        ContentType contentType = pageContentTypeAnalyzer.findContentType(activePage);
-
-        request.setAttribute(InternalConstants.CONTENT_TYPE_ATTRIBUTE_NAME, contentType);
-
-        Page containerPage = cache.get(parameters.getContainingPageName());
-
-        ComponentPageElement element = containerPage.getComponentElementByNestedId(parameters.getNestedComponentId());
-
-        // In many cases, the triggered element is a Form that needs to be able to
-        // pass its event handler return values to the correct result processor.
-        // This is certainly the case for forms.
-
-        TrackableComponentEventCallback callback = new ComponentResultProcessorWrapper(interceptor);
-
-        environment.push(ComponentEventResultProcessor.class, interceptor);
-        environment.push(TrackableComponentEventCallback.class, callback);
-
-        boolean handled = element
-                .triggerContextEvent(parameters.getEventType(), parameters.getEventContext(), callback);
-
-        if (!handled)
-            throw new TapestryException(ServicesMessages.eventNotHandled(element, parameters.getEventType()), element,
-                    null);
-
-        environment.pop(TrackableComponentEventCallback.class);
-        environment.pop(ComponentEventResultProcessor.class);
-
-        if (queue.isPartialRenderInitialized())
-        {
-            partialRenderer.renderPartialPageMarkup();
-            return;
-        }
-
-        // If some other form of return value that's not a partial page render was send through to the
-        // Ajax ComponentEventResultProcessor, then there's nothing more to do.
-
-        if (resultProcessorInvoked.get())
-            return;
-
-        // Send an empty JSON reply if no value was returned from the component event handler method.
-
-        JSONObject reply = new JSONObject();
-
-        resultProcessor.processResultValue(reply);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentInstanceEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentInstanceEventResultProcessor.java
deleted file mode 100644
index 3ad416a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxComponentInstanceEventResultProcessor.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.Ajax;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-import java.io.IOException;
-
-/**
- * Performs a partial page render based on a root component. If the component is actually a page,
- * it will send an JSON reponse to rediret to the page.
- */
-@SuppressWarnings("all")
-public class AjaxComponentInstanceEventResultProcessor implements ComponentEventResultProcessor<Component>
-{
-    private final RequestPageCache cache;
-
-    private final ComponentEventResultProcessor masterProcessor;
-
-    public AjaxComponentInstanceEventResultProcessor(RequestPageCache cache, @Ajax
-    ComponentEventResultProcessor masterProcessor)
-    {
-        this.cache = cache;
-        this.masterProcessor = masterProcessor;
-    }
-
-    public void processResultValue(Component value) throws IOException
-    {
-        ComponentResources resources = value.getComponentResources();
-
-        boolean isPage = value == resources.getPage();
-
-        String pageName = resources.getPageName();
-
-        if (isPage)
-        {
-            // This will ultimately send a JSON response to redirect to the page
-
-            masterProcessor.processResultValue(pageName);
-            return;
-        }
-
-        // Otherwise, a component within a page. Components are transformed to implement RenderCommand, but if we just
-        // pass the component itself to the master processor, we'll get in a loop, so we instead
-        // pass the ComponentPageElement (which implements RenderCommand as well).
-
-        Page page = cache.get(pageName);
-
-        String nestedId = resources.getNestedId();
-
-        RenderCommand command = page.getComponentElementByNestedId(nestedId);
-
-        masterProcessor.processResultValue(command);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
deleted file mode 100644
index 73fe6f5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxFilter.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-/**
- * A filter that intercepts Ajax-oriented requests, thos that originate on the client-side using XmlHttpRequest. In
- * these cases, the action processing occurs normally, but the response is quite different.
- */
-public class AjaxFilter implements ComponentEventRequestFilter
-{
-    private final Request request;
-
-    private final ComponentEventRequestHandler ajaxHandler;
-
-    public AjaxFilter(Request request, @Ajax ComponentEventRequestHandler ajaxHandler)
-    {
-        this.request = request;
-        this.ajaxHandler = ajaxHandler;
-    }
-
-    public void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler)
-            throws IOException
-    {
-        ComponentEventRequestHandler next = request.isXHR() ? ajaxHandler : handler;
-
-        next.handle(parameters);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxLinkComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxLinkComponentEventResultProcessor.java
deleted file mode 100644
index 39288ca..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxLinkComponentEventResultProcessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-//  Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.Ajax;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-import java.io.IOException;
-
-/**
- * Handles {@link org.apache.tapestry5.Link} result types by building a JSON response with key "redirectURL".
- */
-@SuppressWarnings("all")
-public class AjaxLinkComponentEventResultProcessor implements ComponentEventResultProcessor<Link>
-{
-    private final ComponentEventResultProcessor masterProcessor;
-
-    public AjaxLinkComponentEventResultProcessor(@Ajax ComponentEventResultProcessor masterProcessor)
-    {
-        this.masterProcessor = masterProcessor;
-    }
-
-    public void processResultValue(Link value) throws IOException
-    {
-        JSONObject response = new JSONObject();
-
-        response.put("redirectURL", value.toRedirectURI());
-
-        masterProcessor.processResultValue(response);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPageClassComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPageClassComponentEventResultProcessor.java
deleted file mode 100644
index 73e1043..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPageClassComponentEventResultProcessor.java
+++ /dev/null
@@ -1,49 +0,0 @@
-//  Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.Ajax;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.ComponentSource;
-
-import java.io.IOException;
-
-/**
- * Processes a Class result by converting the Class to a logical page name, then processing that.
- *
- * @see org.apache.tapestry5.services.ComponentSource
- * @see org.apache.tapestry5.internal.services.AjaxPageNameComponentEventResultProcessor
- */
-@SuppressWarnings("all")
-public class AjaxPageClassComponentEventResultProcessor implements ComponentEventResultProcessor<Class>
-{
-    private final ComponentSource componentSource;
-
-    private final ComponentEventResultProcessor masterProcessor;
-
-    public AjaxPageClassComponentEventResultProcessor(ComponentSource componentSource,
-                                                      @Ajax ComponentEventResultProcessor masterProcessor)
-    {
-        this.componentSource = componentSource;
-        this.masterProcessor = masterProcessor;
-    }
-
-    public void processResultValue(Class value) throws IOException
-    {
-        String pageName = componentSource.getPage(value).getComponentResources().getPageName();
-
-        masterProcessor.processResultValue(pageName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPageNameComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPageNameComponentEventResultProcessor.java
deleted file mode 100644
index 23ddaac..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPageNameComponentEventResultProcessor.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.Ajax;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-import java.io.IOException;
-
-/**
- * A {@link org.apache.tapestry5.services.ComponentEventResultProcessor}, used for Ajax requests, for a String value
- * that is interpreted as a logical page name.
- * 
- * @see org.apache.tapestry5.internal.services.PageNameComponentEventResultProcessor
- */
-@SuppressWarnings("all")
-public class AjaxPageNameComponentEventResultProcessor implements ComponentEventResultProcessor<String>
-{
-    private final ComponentEventResultProcessor masterProcessor;
-
-    private final LinkSource linkSource;
-
-    public AjaxPageNameComponentEventResultProcessor(@Ajax
-    ComponentEventResultProcessor masterProcessor, LinkSource linkSource)
-    {
-        this.masterProcessor = masterProcessor;
-        this.linkSource = linkSource;
-    }
-
-    /**
-     * Obtains a page render {@link org.apache.tapestry5.Link} for the named, then builds a JSON response for the
-     * client.
-     * 
-     * @param value
-     *            page name
-     * @throws IOException
-     */
-    public void processResultValue(String value) throws IOException
-    {
-        Link link = linkSource.createPageRenderLink(value, false);
-
-        masterProcessor.processResultValue(link);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRenderer.java
deleted file mode 100644
index c3d2672..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRenderer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-/**
- * Used to render portions of a page as part of an {@linkplain AjaxComponentEventRequestHandler Ajax request}.    This
- * encapsulates rendering of the partial response and then the construction of a {@linkplain
- * org.apache.tapestry5.json.JSONObject JSON reply}. Works with the pipeline defined by the {@link
- * org.apache.tapestry5.services.PartialMarkupRenderer} service.
- *
- * @see org.apache.tapestry5.internal.services.PageRenderQueue
- */
-public interface AjaxPartialResponseRenderer
-{
-    /**
-     * Used to render a partial response as part of an Ajax action request. A call to {@link
-     * org.apache.tapestry5.internal.services.PageRenderQueue#initializeForPartialPageRender(org.apache.tapestry5.runtime.RenderCommand)}
-     * should precede this call.
-     */
-    void renderPartialPageMarkup() throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
deleted file mode 100644
index e85d009..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AjaxPartialResponseRendererImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.MarkupWriterFactory;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-public class AjaxPartialResponseRendererImpl implements AjaxPartialResponseRenderer
-{
-    private final MarkupWriterFactory factory;
-
-    private final Request request;
-
-    private final Response response;
-
-    private final PartialMarkupRenderer partialMarkupRenderer;
-
-    private final String outputEncoding;
-
-    private final boolean compactJSON;
-
-    public AjaxPartialResponseRendererImpl(MarkupWriterFactory factory,
-
-    Request request,
-
-    Response response,
-
-    PartialMarkupRenderer partialMarkupRenderer,
-
-    @Inject
-    @Symbol(SymbolConstants.CHARSET)
-    String outputEncoding,
-
-    @Symbol(SymbolConstants.COMPACT_JSON)
-    boolean compactJSON)
-    {
-        this.factory = factory;
-        this.request = request;
-        this.response = response;
-        this.partialMarkupRenderer = partialMarkupRenderer;
-        this.outputEncoding = outputEncoding;
-        this.compactJSON = compactJSON;
-    }
-
-    public void renderPartialPageMarkup() throws IOException
-    {
-        // This is a complex area as we are trying to keep public and private services properly
-        // separated, and trying to keep stateless and stateful (i.e., perthread scope) services
-        // separated. So we inform the stateful queue service what it needs to do here ...
-
-        ContentType pageContentType = (ContentType) request.getAttribute(InternalConstants.CONTENT_TYPE_ATTRIBUTE_NAME);
-
-        ContentType contentType = new ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
-
-        MarkupWriter writer = factory.newPartialMarkupWriter(pageContentType);
-
-        JSONObject reply = new JSONObject();
-
-        // ... and here, the pipeline eventually reaches the PRQ to let it render the root render command.
-
-        partialMarkupRenderer.renderMarkup(writer, reply);
-
-        PrintWriter pw = response.getPrintWriter(contentType.toString());
-
-        reply.print(pw, compactJSON);
-
-        pw.close();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AliasImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AliasImpl.java
deleted file mode 100644
index fc9e0fb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AliasImpl.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.Alias;
-import org.apache.tapestry5.services.AliasManager;
-
-import java.util.Map;
-
-public class AliasImpl implements Alias, ObjectProvider
-{
-    // Derived from the managers when first needed
-
-    private final Map<Class, Object> properties = CollectionFactory.newMap();
-
-    private final String mode;
-
-    private boolean initialized = false;
-
-    private AliasManager masterManager;
-
-    private AliasManager overridesManager;
-
-    public AliasImpl(AliasManager masterManager, String mode, AliasManager overridesManager)
-    {
-        this.masterManager = masterManager;
-        this.mode = mode;
-        this.overridesManager = overridesManager;
-    }
-
-    public ObjectProvider getObjectProvider()
-    {
-        return this;
-    }
-
-    private synchronized void initialize()
-    {
-        if (initialized) return;
-
-        properties.putAll(masterManager.getAliasesForMode(mode));
-        properties.putAll(overridesManager.getAliasesForMode(mode));
-
-        masterManager = null;
-        overridesManager = null;
-
-        initialized = true;
-    }
-
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider,
-                         ObjectLocator locator)
-    {
-        initialize();
-
-        Object object = properties.get(objectType);
-
-        // Let another provider handle this (probably the default object provider)
-        if (object == null) return null;
-
-        // A ClassCastException should never occur.
-
-        return objectType.cast(object);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AliasManagerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AliasManagerImpl.java
deleted file mode 100644
index 1a94fb1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AliasManagerImpl.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.AliasContribution;
-import org.apache.tapestry5.services.AliasManager;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.Map;
-
-public class AliasManagerImpl implements AliasManager
-{
-    private final Logger logger;
-
-    private final Collection<AliasContribution> contributions;
-
-    public AliasManagerImpl(Logger logger, Collection<AliasContribution> contributions)
-    {
-        this.logger = logger;
-        this.contributions = contributions;
-    }
-
-    public Map<Class, Object> getAliasesForMode(String mode)
-    {
-        Map<Class, Object> general = buildMapForMode("");
-        Map<Class, Object> specific = buildMapForMode(mode);
-
-        // Anything in specific overrides anything in general
-
-        general.putAll(specific);
-
-        return general;
-    }
-
-    private Map<Class, Object> buildMapForMode(String mode)
-    {
-        Map<Class, Object> result = CollectionFactory.newMap();
-
-        for (AliasContribution ic : contributions)
-        {
-            if (!ic.getMode().equalsIgnoreCase(mode)) continue;
-
-            Class contributionType = ic.getContributionType();
-
-            Object existing = result.get(contributionType);
-
-            if (existing != null)
-            {
-                logger.error(ServicesMessages.duplicateContribution(
-                        ic.getObject(),
-                        contributionType,
-                        existing));
-                continue;
-            }
-
-            result.put(contributionType, ic.getObject());
-        }
-
-        return result;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzer.java
deleted file mode 100644
index 8b20666..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzer.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
-
-/**
- * Checks for the {@link DataType} annotation, returning its value if present.
- */
-public class AnnotationDataTypeAnalyzer implements DataTypeAnalyzer
-{
-    public String identifyDataType(PropertyAdapter adapter)
-    {
-        DataType annotation = adapter.getAnnotation(DataType.class);
-
-        return annotation == null ? null : annotation.value();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationGlobalsImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationGlobalsImpl.java
deleted file mode 100644
index bde755e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationGlobalsImpl.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.ApplicationGlobals;
-import org.apache.tapestry5.services.Context;
-
-import javax.servlet.ServletContext;
-
-public class ApplicationGlobalsImpl implements ApplicationGlobals
-{
-    private ServletContext servletContext;
-
-    private Context context;
-
-    public void storeServletContext(ServletContext context)
-    {
-        servletContext = context;
-    }
-
-    public ServletContext getServletContext()
-    {
-        return servletContext;
-    }
-
-    public Context getContext()
-    {
-        return context;
-    }
-
-    public void storeContext(Context context)
-    {
-        this.context = context;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java
deleted file mode 100644
index 61e8748..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationMessageCatalogObjectProvider.java
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-
-/**
- * Allows for injection of the global application message catalog into services. The injected value
- * is, in fact, a proxy. Each method access of the proxy will determine the current thread's locale, and delegate
- * to the actual global message catalog for that particular locale. There's caching to keep it reasonably
- * efficient.
- * 
- * @since 5.2.0
- * @see ComponentMessagesSource#getApplicationCatalog(Locale)
- */
-public class ApplicationMessageCatalogObjectProvider implements ObjectProvider, InvalidationListener
-{
-    private final ObjectLocator objectLocator;
-
-    private ComponentMessagesSource messagesSource;
-
-    private ThreadLocale threadLocale;
-
-    private final Map<Locale, Messages> localeToMessages = CollectionFactory.newMap();
-
-    private Messages proxy;
-
-    private class ApplicationMessagesObjectCreator implements ObjectCreator
-    {
-        public Object createObject()
-        {
-            Locale locale = threadLocale.getLocale();
-
-            Messages messages = localeToMessages.get(locale);
-
-            if (messages == null)
-            {
-                messages = messagesSource.getApplicationCatalog(locale);
-                localeToMessages.put(locale, messages);
-            }
-
-            return messages;
-        }
-    };
-
-    public ApplicationMessageCatalogObjectProvider(ObjectLocator locator)
-    {
-        this.objectLocator = locator;
-    }
-
-    /**
-     * Because this is an ObjectProvider and is part of the MasterObjectProvider pipeline, it has to
-     * be careful to not require further dependencies at construction time. This means we have to "drop out"
-     * of normal IoC dependency injection and adopt a lookup strategy based on the ObjectLocator. Further,
-     * we have to be careful about multi-threading issues.
-     */
-    private synchronized Messages getProxy()
-    {
-        if (proxy == null)
-        {
-            this.messagesSource = objectLocator.getService(ComponentMessagesSource.class);
-            this.threadLocale = objectLocator.getService(ThreadLocale.class);
-
-            ClassFactory classFactory = objectLocator.getService("ClassFactory", ClassFactory.class);
-
-            proxy = classFactory.createProxy(Messages.class, new ApplicationMessagesObjectCreator(),
-                    "<ApplicationMessagesProxy>");
-
-            // Listen for invalidations; clear our cache of localized Messages bundles when
-            // and invalidation occurs.
-
-            messagesSource.getInvalidationEventHub().addInvalidationListener(this);
-        }
-
-        return proxy;
-    }
-
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-    {
-        if (objectType.equals(Messages.class))
-            return objectType.cast(getProxy());
-
-        return null;
-    }
-
-    public void objectWasInvalidated()
-    {
-        localeToMessages.clear();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStackTraceElementAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStackTraceElementAnalyzer.java
deleted file mode 100644
index 3af0ec0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStackTraceElementAnalyzer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.StackTraceElementAnalyzer;
-import org.apache.tapestry5.services.StackTraceElementClassConstants;
-
-/**
- * Identifies frames for application classes.
- * 
- * @since 5.1.0.0
- */
-public class ApplicationStackTraceElementAnalyzer implements StackTraceElementAnalyzer
-{
-    private final String appPackage;
-
-    public ApplicationStackTraceElementAnalyzer(@Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)
-    String appPackage)
-    {
-        this.appPackage = appPackage;
-    }
-
-    public String classForFrame(StackTraceElement frame)
-    {
-        return frame.getClassName().startsWith(appPackage) && frame.getLineNumber() > 0 ? StackTraceElementClassConstants.USER_CODE
-                : null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java
deleted file mode 100644
index 660911f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImpl.java
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newConcurrentMap;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.services.ApplicationStateContribution;
-import org.apache.tapestry5.services.ApplicationStateCreator;
-import org.apache.tapestry5.services.ApplicationStateManager;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
-
-public class ApplicationStateManagerImpl implements ApplicationStateManager
-{
-    static final String DEFAULT_STRATEGY = "session";
-
-    static class ApplicationStateAdapter<T>
-    {
-        private final Class<T> ssoClass;
-
-        private final ApplicationStatePersistenceStrategy strategy;
-
-        private final ApplicationStateCreator<T> creator;
-
-        ApplicationStateAdapter(Class<T> ssoClass, ApplicationStatePersistenceStrategy strategy,
-                ApplicationStateCreator<T> creator)
-        {
-            this.ssoClass = ssoClass;
-            this.strategy = strategy;
-            this.creator = creator;
-        }
-
-        T getOrCreate()
-        {
-            return strategy.get(ssoClass, creator);
-        }
-
-        void set(T sso)
-        {
-            strategy.set(ssoClass, sso);
-        }
-
-        boolean exists()
-        {
-            return strategy.exists(ssoClass);
-        }
-    }
-
-    /**
-     * The map will be extended periodically as new ASOs, not in the configuration, are encountered.
-     * Thut is is thread
-     * safe.
-     */
-    private final Map<Class, ApplicationStateAdapter> classToAdapter = newConcurrentMap();
-
-    private final ApplicationStatePersistenceStrategySource source;
-
-    private final ObjectLocator locator;
-
-    @SuppressWarnings("unchecked")
-    public ApplicationStateManagerImpl(Map<Class, ApplicationStateContribution> configuration,
-            ApplicationStatePersistenceStrategySource source, ObjectLocator locator)
-    {
-        this.source = source;
-        this.locator = locator;
-
-        for (Class asoClass : configuration.keySet())
-        {
-            ApplicationStateContribution contribution = configuration.get(asoClass);
-
-            ApplicationStateAdapter adapter = newAdapter(asoClass, contribution.getStrategy(),
-                    contribution.getCreator());
-
-            classToAdapter.put(asoClass, adapter);
-        }
-
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T> ApplicationStateAdapter<T> newAdapter(final Class<T> ssoClass, String strategyName,
-            ApplicationStateCreator<T> creator)
-    {
-        if (creator == null)
-        {
-            creator = new ApplicationStateCreator<T>()
-            {
-                public T create()
-                {
-                    return locator.autobuild("Instantiating instance of SSO class "
-                            + ssoClass.getName(), ssoClass);
-                }
-            };
-        }
-
-        ApplicationStatePersistenceStrategy strategy = source.get(strategyName);
-
-        return new ApplicationStateAdapter(ssoClass, strategy, creator);
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T> ApplicationStateAdapter<T> getAdapter(Class<T> ssoClass)
-    {
-        ApplicationStateAdapter<T> result = classToAdapter.get(ssoClass);
-
-        // Not found is completely OK, we'll define it on the fly.
-
-        if (result == null)
-        {
-            result = newAdapter(ssoClass, DEFAULT_STRATEGY, null);
-            classToAdapter.put(ssoClass, result);
-        }
-
-        return result;
-    }
-
-    public <T> T get(Class<T> ssoClass)
-    {
-        return getAdapter(ssoClass).getOrCreate();
-    }
-
-    public <T> T getIfExists(Class<T> ssoClass)
-    {
-        ApplicationStateAdapter<T> adapter = getAdapter(ssoClass);
-
-        return adapter.exists() ? adapter.getOrCreate() : null;
-    }
-
-    public <T> void set(Class<T> ssoClass, T sso)
-    {
-        getAdapter(ssoClass).set(sso);
-    }
-
-    public <T> boolean exists(Class<T> ssoClass)
-    {
-        return getAdapter(ssoClass).exists();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImpl.java
deleted file mode 100644
index e5d67d9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
-
-import java.util.Map;
-
-public class ApplicationStatePersistenceStrategySourceImpl implements
-        ApplicationStatePersistenceStrategySource
-{
-    private final Map<String, ApplicationStatePersistenceStrategy> configuration;
-
-    public ApplicationStatePersistenceStrategySourceImpl(Map<String, ApplicationStatePersistenceStrategy> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public ApplicationStatePersistenceStrategy get(String name)
-    {
-        ApplicationStatePersistenceStrategy result = configuration.get(name);
-
-        if (result == null)
-            throw new RuntimeException(ServicesMessages.missingApplicationStatePersistenceStrategy(
-                    name,
-                    configuration.keySet()));
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java
deleted file mode 100644
index 545fdd2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ArrayEventContext.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.AbstractEventContext;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-/**
- * Simple implementation of {@link org.apache.tapestry5.EventContext}.
- * 
- * @since 5.1.0.0
- */
-public class ArrayEventContext extends AbstractEventContext
-{
-    private final TypeCoercer typeCoercer;
-
-    private final Object[] values;
-
-    public ArrayEventContext(TypeCoercer typeCoercer, Object... values)
-    {
-        this.typeCoercer = typeCoercer;
-        this.values = values;
-    }
-
-    public <T> T get(Class<T> desiredType, int index)
-    {
-        return typeCoercer.coerce(values[index], desiredType);
-    }
-
-    public int getCount()
-    {
-        return values.length;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
deleted file mode 100644
index 2b972ac..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetDispatcher.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.apache.tapestry5.services.Dispatcher;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.assets.AssetRequestHandler;
-
-/**
- * Recognizes requests where the path begins with "/asset/" and delivers the content therein as a bytestream. Also
- * handles requests that are simply polling for a change to the file.
- * 
- * @see ResourceStreamer
- * @see ClasspathAssetAliasManager
- * @see ResourceCache
- * @see AssetRequestHandler
- */
-@UsesMappedConfiguration(AssetRequestHandler.class)
-public class AssetDispatcher implements Dispatcher
-{
-    private final Map<String, AssetRequestHandler> configuration;
-
-    private final String pathPrefix;
-
-    public AssetDispatcher(Map<String, AssetRequestHandler> configuration,
-
-    @Symbol(SymbolConstants.APPLICATION_VERSION)
-    String applicationVersion)
-    {
-        this.configuration = configuration;
-
-        this.pathPrefix = RequestConstants.ASSET_PATH_PREFIX + applicationVersion + "/";
-    }
-
-    public boolean dispatch(Request request, Response response) throws IOException
-    {
-        String path = request.getPath();
-
-        // Remember that the request path does not include the context path, so we can simply start
-        // looking for the asset path prefix right off the bat.
-
-        if (!path.startsWith(pathPrefix))
-            return false;
-
-        String virtualPath = path.substring(pathPrefix.length());
-
-        int slashx = virtualPath.indexOf('/');
-
-        String virtualFolder = virtualPath.substring(0, slashx);
-
-        AssetRequestHandler handler = configuration.get(virtualFolder);
-
-        if (handler != null)
-        {
-
-            String extraPath = virtualPath.substring(slashx + 1);
-
-            boolean handled = handler.handleAssetRequest(request, response, extraPath);
-
-            if (handled)
-                return true;
-        }
-
-        response.sendError(HttpServletResponse.SC_NOT_FOUND, path);
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java
deleted file mode 100644
index ebf7e8a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetInjectionProvider.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Performs injection of assets, based on the presence of the {@link Path} annotation. This is more
- * useful than the
- * general {@link AssetObjectProvider}, because relative assets are supported.
- */
-public class AssetInjectionProvider implements InjectionProvider
-{
-    private final SymbolSource symbolSource;
-
-    private final AssetSource assetSource;
-
-    public AssetInjectionProvider(SymbolSource symbolSource, AssetSource assetSource)
-    {
-        this.symbolSource = symbolSource;
-        this.assetSource = assetSource;
-    }
-
-    public boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
-            ClassTransformation transformation, MutableComponentModel componentModel)
-    {
-        TransformField field = transformation.getField(fieldName);
-
-        Path path = field.getAnnotation(Path.class);
-
-        if (path == null)
-            return false;
-
-        final String expanded = symbolSource.expandSymbols(path.value());
-
-        final Resource baseResource = componentModel.getBaseResource();
-
-        ComponentValueProvider<Asset> provider = new ComponentValueProvider<Asset>()
-        {
-
-            public Asset get(ComponentResources resources)
-            {
-                Locale locale = resources.getLocale();
-
-                return assetSource.getAsset(baseResource, expanded, locale);
-            }
-        };
-
-        field.injectIndirect(provider);
-
-        return true;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java
deleted file mode 100644
index e8d22f7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetObjectProvider.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.Core;
-
-/**
- * Exposes assets (in the current locale). The Inject annotation must be supplemented by a {@link Path} annotation, to
- * identify what asset to be injected.
- */
-public class AssetObjectProvider implements ObjectProvider
-{
-    private final AssetSource source;
-
-    private final TypeCoercer typeCoercer;
-
-    private final SymbolSource symbolSource;
-
-    public AssetObjectProvider(@Core AssetSource source,
-
-                               @Builtin TypeCoercer typeCoercer,
-
-                               @Builtin SymbolSource symbolSource)
-    {
-        this.source = source;
-        this.typeCoercer = typeCoercer;
-        this.symbolSource = symbolSource;
-    }
-
-    /**
-     * Provides the asset. If the expression does not identify an asset domain, with a prefix, it is assumed to be a
-     * path on the classpath, relative to the root of the classpath.
-     *
-     * @param objectType the type of object (which must be Object or Asset)
-     * @param locator    not used
-     */
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-    {
-        Path path = annotationProvider.getAnnotation(Path.class);
-
-        if (path == null) return null;
-
-        String expanded = symbolSource.expandSymbols(path.value());
-
-        Asset asset = source.getAsset(null, expanded, null);
-
-        return typeCoercer.coerce(asset, objectType);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetResourceLocator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetResourceLocator.java
deleted file mode 100644
index 7746301..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetResourceLocator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * Responsible for converting a path into a {@link org.apache.tapestry5.ioc.Resource} that can be
- * {@linkplain org.apache.tapestry5.internal.services.ResourceStreamer
- * streamed to the client}. The path is on the classpath, but may have been changed to include a checksum (in
- * certain cases).
- * 
- * @since 5.1.0.2
- */
-public interface AssetResourceLocator
-{
-    /**
-     * For a complete classpath path, returns the Resource for the path. This include checking for a
-     * digest for protected files.
-     * 
-     * @return
-     *         resource corresponding to path (may be for a non-existent resource), or null if path is invalid (i.e.,
-     *         incorrect digest)
-     */
-    Resource findClasspathResourceForPath(String path) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetResourceLocatorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetResourceLocatorImpl.java
deleted file mode 100644
index 2caa310..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetResourceLocatorImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.Response;
-
-public class AssetResourceLocatorImpl implements AssetResourceLocator
-{
-    private final ResourceCache resourceCache;
-
-    private final Response response;
-
-    private final AssetSource assetSource;
-
-    public AssetResourceLocatorImpl(ResourceCache resourceCache, Response response, AssetSource assetSource)
-    {
-        this.resourceCache = resourceCache;
-        this.response = response;
-        this.assetSource = assetSource;
-    }
-
-    public Resource findClasspathResourceForPath(String path) throws IOException
-    {
-        Resource resource = assetSource.resourceForPath(path);
-
-        if (!resourceCache.requiresDigest(resource))
-            return resource;
-
-        return validateChecksumOfClasspathResource(resource);
-    }
-
-    /**
-     * Validates the checksome encoded into the resource, and returns the true resource (with the checksum
-     * portion removed from the file name).
-     */
-    private Resource validateChecksumOfClasspathResource(Resource resource) throws IOException
-    {
-        String file = resource.getFile();
-
-        // Somehow this code got real ugly, but it's all about preventing NPEs when a resource
-        // that should have a digest doesn't.
-
-        boolean valid = false;
-        Resource result = resource;
-
-        int lastdotx = file.lastIndexOf('.');
-
-        if (lastdotx > 0)
-        {
-            int prevdotx = file.lastIndexOf('.', lastdotx - 1);
-
-            if (prevdotx > 0)
-            {
-                String requestDigest = file.substring(prevdotx + 1, lastdotx);
-
-                // Strip the digest out of the file name.
-
-                String realFile = file.substring(0, prevdotx) + file.substring(lastdotx);
-
-                result = resource.forFile(realFile);
-
-                String actualDigest = resourceCache.getDigest(result);
-
-                valid = requestDigest.equals(actualDigest);
-            }
-        }
-
-        if (valid)
-            return result;
-
-        // TODO: Perhaps we should send an exception here, so that the caller can decide
-        // to send the error. I'm not happy with this.
-
-        response.sendError(HttpServletResponse.SC_FORBIDDEN, ServicesMessages.wrongAssetDigest(result));
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java
deleted file mode 100644
index 8486286..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AssetSourceImpl.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.internal.AssetConstants;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.services.AssetFactory;
-import org.apache.tapestry5.services.AssetSource;
-
-@SuppressWarnings("all")
-public class AssetSourceImpl implements AssetSource
-{
-    private final StrategyRegistry<AssetFactory> registry;
-
-    private final ThreadLocale threadLocale;
-
-    private final Map<String, Resource> prefixToRootResource = CollectionFactory.newMap();
-
-    private final Map<Resource, Asset> cache = CollectionFactory.newConcurrentMap();
-
-    private final SymbolSource symbolSource;
-
-    public AssetSourceImpl(ThreadLocale threadLocale,
-
-    Map<String, AssetFactory> configuration, SymbolSource symbolSource)
-    {
-        this.threadLocale = threadLocale;
-        this.symbolSource = symbolSource;
-
-        Map<Class, AssetFactory> byResourceClass = CollectionFactory.newMap();
-
-        for (Map.Entry<String, AssetFactory> e : configuration.entrySet())
-        {
-            String prefix = e.getKey();
-            AssetFactory factory = e.getValue();
-
-            Resource rootResource = factory.getRootResource();
-
-            byResourceClass.put(rootResource.getClass(), factory);
-
-            prefixToRootResource.put(prefix, rootResource);
-        }
-
-        registry = StrategyRegistry.newInstance(AssetFactory.class, byResourceClass);
-    }
-
-    public Asset getClasspathAsset(String path)
-    {
-        return getClasspathAsset(path, null);
-    }
-
-    public Asset getClasspathAsset(String path, Locale locale)
-    {
-        return getAsset(null, path, locale);
-    }
-
-    public Asset getContextAsset(String path, Locale locale)
-    {
-        return getAsset(prefixToRootResource.get(AssetConstants.CONTEXT), path, locale);
-    }
-
-    public Asset getAsset(Resource baseResource, String path, Locale locale)
-    {
-        return getAssetInLocale(baseResource, path, defaulted(locale));
-    }
-
-    public Resource resourceForPath(String path)
-    {
-        return getUnlocalizedResource(null, path);
-    }
-
-    public Asset getExpandedAsset(String path)
-    {
-        return getUnlocalizedAsset(symbolSource.expandSymbols(path));
-    }
-
-    public Asset getUnlocalizedAsset(String path)
-    {
-        return getAssetInLocale(null, path, null);
-    }
-
-    private Asset getAssetInLocale(Resource baseResource, String path, Locale locale)
-    {
-        return getLocalizedAssetFromResource(getUnlocalizedResource(baseResource, path), locale);
-    }
-
-    private Resource getUnlocalizedResource(Resource baseResource, String path)
-    {
-        assert InternalUtils.isNonBlank(path);
-        int colonx = path.indexOf(':');
-
-        if (colonx < 0)
-        {
-            Resource root = baseResource != null ? baseResource : prefixToRootResource.get(AssetConstants.CLASSPATH);
-
-            return root.forFile(path);
-        }
-
-        String prefix = path.substring(0, colonx);
-
-        Resource root = prefixToRootResource.get(prefix);
-
-        if (root == null)
-            throw new IllegalArgumentException(ServicesMessages.unknownAssetPrefix(path));
-
-        return root.forFile(path.substring(colonx + 1));
-    }
-
-    private Asset getLocalizedAssetFromResource(Resource unlocalized, Locale locale)
-    {
-        Resource localized = locale == null ? unlocalized : unlocalized.forLocale(locale);
-
-        if (localized == null)
-            throw new RuntimeException(ServicesMessages.assetDoesNotExist(unlocalized));
-
-        return getAssetForResource(localized);
-    }
-
-    private Asset getAssetForResource(Resource resource)
-    {
-        Asset result = cache.get(resource);
-
-        if (result == null)
-        {
-            result = createAssetFromResource(resource);
-            cache.put(resource, result);
-        }
-
-        return result;
-    }
-
-    private Locale defaulted(Locale locale)
-    {
-        return locale != null ? locale : threadLocale.getLocale();
-    }
-
-    private Asset createAssetFromResource(Resource resource)
-    {
-        // The class of the resource is derived from the class of the base resource.
-        // So we can then use the class of the resource as a key to locate the correct asset
-        // factory.
-
-        Class resourceClass = resource.getClass();
-
-        AssetFactory factory = registry.get(resourceClass);
-
-        return factory.createAsset(resource);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java
deleted file mode 100644
index e1df8cb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeExpansionBinding.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.internal.bindings.AbstractBinding;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Wraps a {@link StringProvider} as a read-only {@link Binding}.
- */
-public class AttributeExpansionBinding extends AbstractBinding
-{
-    private final StringProvider provider;
-
-    public AttributeExpansionBinding(Location location, StringProvider provider)
-    {
-        super(location);
-
-        this.provider = provider;
-    }
-
-    public Object get()
-    {
-        return provider.provideString();
-    }
-
-    /**
-     * Returns false. Expansions reference properties that may change arbitrarily.
-     */
-    @Override
-    public boolean isInvariant()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeInfo.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeInfo.java
deleted file mode 100644
index 33db5c7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/AttributeInfo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javax.xml.namespace.QName;
-
-/**
- * Tracks the qualified name and value of an attribute within a start element
- * XMLToken.
- * 
- * @since 5.2.0
- */
-public class AttributeInfo
-{
-    final QName attributeName;
-
-    final String value;
-
-    public AttributeInfo(QName attributeName, String value)
-    {
-        this.attributeName = attributeName;
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BasePropertyConduit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BasePropertyConduit.java
deleted file mode 100644
index c15fa1d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BasePropertyConduit.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.annotation.Annotation;
-
-import org.apache.tapestry5.internal.InternalPropertyConduit;
-import org.apache.tapestry5.internal.util.IntegerRange;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-/**
- * Base class for {@link org.apache.tapestry5.PropertyConduit} instances created by the {@link
- * org.apache.tapestry5.services.PropertyConduitSource}.
- */
-@SuppressWarnings("all")
-public abstract class BasePropertyConduit implements InternalPropertyConduit
-{
-    private final Class propertyType;
-    
-    private final String propertyName;
-
-    private final AnnotationProvider annotationProvider;
-
-    private final String description;
-
-    private final TypeCoercer typeCoercer;
-
-    public BasePropertyConduit(Class propertyType, String propertyName, AnnotationProvider annotationProvider, String description,
-                               TypeCoercer typeCoercer)
-    {
-        assert propertyType != null;
-        assert annotationProvider != null;
-        assert typeCoercer != null;
-        assert InternalUtils.isNonBlank(description);
-        this.propertyType = propertyType;
-        this.propertyName = propertyName;
-        this.annotationProvider = annotationProvider;
-        this.description = description;
-        this.typeCoercer = typeCoercer;
-    }
-
-    @Override
-    public final String toString()
-    {
-        return description;
-    }
-
-    public final <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return annotationProvider.getAnnotation(annotationClass);
-    }
-
-    public final Class getPropertyType()
-    {
-        return propertyType;
-    }
-
-    public final String getPropertyName()
-    {
-        return propertyName;
-    }
-
-    public final IntegerRange range(int from, int to)
-    {
-        return new IntegerRange(from, to);
-    }
-
-    protected final <T> T coerce(Object value, Class<T> type)
-    {
-        return typeCoercer.coerce(value, type);
-    }
-
-    public final boolean invert(Object value)
-    {
-        return coerce(value, Boolean.class).equals(Boolean.FALSE);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java
deleted file mode 100644
index 0e39071..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BaseURLSourceImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.BaseURLSource;
-import org.apache.tapestry5.services.Request;
-
-public class BaseURLSourceImpl implements BaseURLSource
-{
-    private final Request request;
-
-    public BaseURLSourceImpl(Request request)
-    {
-        this.request = request;
-    }
-
-    public String getBaseURL(boolean secure)
-    {
-        int port = request.getServerPort();
-
-        int schemeDefaultPort = request.isSecure() ? 443 : 80;
-
-        String portSuffix = port == schemeDefaultPort ? "" : ":" + port;
-
-        return String.format("%s://%s%s", secure ? "https" : "http", request.getServerName(), portSuffix);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java
deleted file mode 100644
index 0f79237..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockOverrideSourceImpl.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.BeanBlockContribution;
-import org.apache.tapestry5.services.BeanBlockOverrideSource;
-
-import java.util.Collection;
-import java.util.Map;
-
-public class BeanBlockOverrideSourceImpl implements BeanBlockOverrideSource
-{
-    private final RequestPageCache pageCache;
-
-    private final Map<String, BeanBlockContribution> display = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, BeanBlockContribution> edit = CollectionFactory.newCaseInsensitiveMap();
-
-    public BeanBlockOverrideSourceImpl(RequestPageCache pageCache,
-                                       Collection<BeanBlockContribution> configuration)
-    {
-        this.pageCache = pageCache;
-
-        for (BeanBlockContribution contribution : configuration)
-        {
-            Map<String, BeanBlockContribution> map = contribution.isEdit() ? edit : display;
-
-            map.put(contribution.getDataType(), contribution);
-        }
-    }
-
-    public boolean hasDisplayBlock(String datatype)
-    {
-        return display.containsKey(datatype);
-    }
-
-    public Block getDisplayBlock(String datatype)
-    {
-        return toBlock(display.get(datatype));
-    }
-
-    private Block toBlock(BeanBlockContribution contribution)
-    {
-        if (contribution == null) return null;
-
-        Page page = pageCache.get(contribution.getPageName());
-
-        return page.getRootElement().getBlock(contribution.getBlockId());
-    }
-
-    public Block getEditBlock(String datatype)
-    {
-        return toBlock(edit.get(datatype));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockSourceImpl.java
deleted file mode 100644
index c35e7cd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanBlockSourceImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.services.BeanBlockContribution;
-import org.apache.tapestry5.services.BeanBlockOverrideSource;
-import org.apache.tapestry5.services.BeanBlockSource;
-
-import java.util.Collection;
-
-public class BeanBlockSourceImpl implements BeanBlockSource
-{
-    // This is checked before masterSource
-    private final BeanBlockOverrideSource overrideSource;
-
-    private final BeanBlockOverrideSource masterSource;
-
-    public BeanBlockSourceImpl(RequestPageCache pageCache,
-                               BeanBlockOverrideSource overrideSource, Collection<BeanBlockContribution> configuration)
-    {
-        this.overrideSource = overrideSource;
-        masterSource = new BeanBlockOverrideSourceImpl(pageCache, configuration);
-    }
-
-    public boolean hasDisplayBlock(String datatype)
-    {
-        return overrideSource.hasDisplayBlock(datatype) || masterSource.hasDisplayBlock(datatype);
-    }
-
-    public Block getDisplayBlock(String datatype)
-    {
-        Block result = overrideSource.getDisplayBlock(datatype);
-
-        if (result == null)
-            result = masterSource.getDisplayBlock(datatype);
-
-        if (result == null)
-            throw new RuntimeException(ServicesMessages.noDisplayForDataType(datatype));
-
-        return result;
-    }
-
-    public Block getEditBlock(String datatype)
-    {
-        Block result = overrideSource.getEditBlock(datatype);
-
-        if (result == null)
-            result = masterSource.getEditBlock(datatype);
-
-        if (result == null)
-            throw new RuntimeException(ServicesMessages.noEditForDataType(datatype));
-
-        return result;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java
deleted file mode 100644
index c3d6f0f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BeanModelSourceImpl.java
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.reflect.Method;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-import org.apache.tapestry5.internal.beaneditor.BeanModelImpl;
-import org.apache.tapestry5.internal.beaneditor.BeanModelUtils;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.PropertyConduitSource;
-
-public class BeanModelSourceImpl implements BeanModelSource
-{
-    private final TypeCoercer typeCoercer;
-
-    private final PropertyAccess propertyAccess;
-
-    private final PropertyConduitSource propertyConduitSource;
-
-    private final ClassFactory classFactory;
-
-    private final DataTypeAnalyzer dataTypeAnalyzer;
-
-    private final ObjectLocator locator;
-
-    private static class PropertyOrder implements Comparable<PropertyOrder>
-    {
-        final String propertyName;
-
-        final int classDepth;
-
-        final int sortKey;
-
-        public PropertyOrder(final String propertyName, int classDepth, int sortKey)
-        {
-            this.propertyName = propertyName;
-            this.classDepth = classDepth;
-            this.sortKey = sortKey;
-        }
-
-        public int compareTo(PropertyOrder o)
-        {
-            int result = classDepth - o.classDepth;
-
-            if (result == 0)
-                result = sortKey - o.sortKey;
-
-            if (result == 0)
-                result = propertyName.compareTo(o.propertyName);
-
-            return result;
-        }
-    }
-
-    /**
-     * @param classAdapter
-     *            defines the bean that contains the properties
-     * @param propertyNames
-     *            the initial set of property names, which will be rebuilt in the correct order
-     */
-    private void orderProperties(ClassPropertyAdapter classAdapter, List<String> propertyNames)
-    {
-        List<PropertyOrder> properties = CollectionFactory.newList();
-
-        for (String name : propertyNames)
-        {
-            PropertyAdapter pa = classAdapter.getPropertyAdapter(name);
-
-            Method readMethod = pa.getReadMethod();
-
-            Location location = readMethod == null ? null : classFactory.getMethodLocation(readMethod);
-
-            int line = location == null ? -1 : location.getLine();
-
-            properties.add(new PropertyOrder(name, computeDepth(pa), line));
-        }
-
-        Collections.sort(properties);
-
-        propertyNames.clear();
-
-        for (PropertyOrder po : properties)
-        {
-            propertyNames.add(po.propertyName);
-        }
-    }
-
-    private static int computeDepth(PropertyAdapter pa)
-    {
-        int depth = 0;
-        Class c = pa.getDeclaringClass();
-
-        // When the method originates in an interface, the parent may be null, not Object.
-
-        while (c != null && c != Object.class)
-        {
-            depth++;
-            c = c.getSuperclass();
-        }
-
-        return depth;
-    }
-
-    public BeanModelSourceImpl(TypeCoercer typeCoercer, PropertyAccess propertyAccess,
-            PropertyConduitSource propertyConduitSource, @ComponentLayer
-            ClassFactory classFactory, @Primary
-            DataTypeAnalyzer dataTypeAnalyzer, ObjectLocator locator)
-    {
-        this.typeCoercer = typeCoercer;
-        this.propertyAccess = propertyAccess;
-        this.propertyConduitSource = propertyConduitSource;
-        this.classFactory = classFactory;
-        this.dataTypeAnalyzer = dataTypeAnalyzer;
-        this.locator = locator;
-    }
-
-    public <T> BeanModel<T> createDisplayModel(Class<T> beanClass, Messages messages)
-    {
-        return create(beanClass, false, messages);
-    }
-
-    public <T> BeanModel<T> createEditModel(Class<T> beanClass, Messages messages)
-    {
-        return create(beanClass, true, messages);
-    }
-
-    public <T> BeanModel<T> create(Class<T> beanClass, boolean filterReadOnlyProperties, Messages messages)
-    {
-        assert beanClass != null;
-        assert messages != null;
-        ClassPropertyAdapter adapter = propertyAccess.getAdapter(beanClass);
-
-        BeanModel<T> model = new BeanModelImpl<T>(beanClass, propertyConduitSource, typeCoercer, messages, locator);
-
-        for (final String propertyName : adapter.getPropertyNames())
-        {
-            PropertyAdapter pa = adapter.getPropertyAdapter(propertyName);
-
-            if (!pa.isRead())
-                continue;
-
-            if (pa.getAnnotation(NonVisual.class) != null)
-                continue;
-
-            if (filterReadOnlyProperties && !pa.isUpdate())
-                continue;
-
-            final String dataType = dataTypeAnalyzer.identifyDataType(pa);
-
-            // If an unregistered type, then ignore the property.
-
-            if (dataType == null)
-                continue;
-
-            model.add(propertyName).dataType(dataType);
-        }
-
-        // First, order the properties based on the location of the getter method
-        // within the class.
-
-        List<String> propertyNames = model.getPropertyNames();
-
-        orderProperties(adapter, propertyNames);
-
-        model.reorder(propertyNames.toArray(new String[propertyNames.size()]));
-
-        // Next, check for an annotation with specific ordering information.
-
-        ReorderProperties reorderAnnotation = beanClass.getAnnotation(ReorderProperties.class);
-
-        if (reorderAnnotation != null)
-        {
-            BeanModelUtils.reorder(model, reorderAnnotation.value());
-        }
-
-        return model;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java
deleted file mode 100644
index a4d8311..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BindingSourceImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.BindingSource;
-
-public class BindingSourceImpl implements BindingSource
-{
-    private final Map<String, BindingFactory> factories;
-
-    private final StringInterner interner;
-
-    public BindingSourceImpl(Map<String, BindingFactory> factories, StringInterner interner)
-    {
-        this.factories = factories;
-        this.interner = interner;
-    }
-
-    public Binding newBinding(String description, ComponentResources container, String defaultPrefix, String expression)
-    {
-        return newBinding(description, container, container, defaultPrefix, expression, null);
-    }
-
-    public Binding newBinding(String description, ComponentResources container, ComponentResources component,
-            String defaultPrefix, String expression, Location location)
-    {
-        assert InternalUtils.isNonBlank(description);
-        assert container != null;
-        assert InternalUtils.isNonBlank(defaultPrefix);
-        assert component != null;
-        if (InternalUtils.isBlank(expression))
-            throw new TapestryException(ServicesMessages.emptyBinding(description), location, null);
-
-        // Location might be null
-
-        String subexpression = expression;
-        int colonx = expression.indexOf(':');
-
-        BindingFactory factory = null;
-
-        if (colonx > 0)
-        {
-            String prefix = expression.substring(0, colonx);
-
-            factory = factories.get(prefix);
-            if (factory != null)
-                subexpression = expression.substring(colonx + 1);
-        }
-
-        if (factory == null)
-            factory = factories.get(defaultPrefix);
-
-        // And if that's null, what then? We assume that the default prefix is a valid prefix,
-        // or we'll get an NPE below and report it like any other error.
-
-        try
-        {
-            return factory.newBinding(interner.intern(description), container, component, subexpression, location);
-        }
-        catch (Exception ex)
-        {
-            throw new TapestryException(ServicesMessages.bindingSourceFailure(expression, ex), location, ex);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java
deleted file mode 100644
index 5637281..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/BlockInjectionProvider.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Id;
-import org.apache.tapestry5.internal.transform.ReadOnlyFieldValueConduit;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.TransformConstants;
-import org.apache.tapestry5.services.TransformField;
-import org.apache.tapestry5.services.TransformMethod;
-
-/**
- * Identifies fields of type {@link Block} that have the {@link Inject} annotation and converts them
- * into read-only
- * fields containing the injected Block from the template. The annotation's value is the id of the
- * block to inject; if
- * omitted, the block id is deduced from the field id.
- * <p/>
- * Must be scheduled before {@link DefaultInjectionProvider} because it uses the same annotation, Inject, with a
- * different interpretation.
- */
-public class BlockInjectionProvider implements InjectionProvider
-{
-
-    public boolean provideInjection(final String fieldName, Class fieldType, ObjectLocator locator,
-            ClassTransformation transformation, MutableComponentModel componentModel)
-    {
-        if (!fieldType.equals(Block.class))
-            return false;
-
-        TransformField field = transformation.getField(fieldName);
-
-        Id annotation = field.getAnnotation(Id.class);
-
-        String blockId = getBlockId(fieldName, annotation);
-
-        ComponentValueProvider<FieldValueConduit> provider = cxreateProvider(fieldName, blockId);
-
-        field.replaceAccess(provider);
-
-        return true; // claim the field
-    }
-
-    private ComponentValueProvider<FieldValueConduit> cxreateProvider(final String fieldName, final String blockId)
-    {
-        return new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(final ComponentResources resources)
-            {
-                return new ReadOnlyFieldValueConduit(resources, fieldName)
-                {
-                    public Object get()
-                    {
-                        return resources.getBlock(blockId);
-                    }
-                };
-            }
-        };
-    }
-
-    private String getBlockId(String fieldName, Id annotation)
-    {
-        if (annotation != null)
-            return annotation.value();
-
-        return InternalUtils.stripMemberName(fieldName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
deleted file mode 100644
index 3e552c5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CheckForUpdatesFilter.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-import java.util.concurrent.TimeUnit;
-
-/**
- * Implements a barrier that periodically asks the {@link org.apache.tapestry5.services.UpdateListenerHub} to check for
- * updates to files. The UpdateListenerHub is invoked from a write method, meaning that when it is called, all other
- * threads will be blocked.
- */
-public class CheckForUpdatesFilter implements RequestFilter
-{
-    private final long checkInterval;
-
-    private final long updateTimeout;
-
-    private final UpdateListenerHub updateListenerHub;
-
-    private final ConcurrentBarrier barrier = new ConcurrentBarrier();
-
-    private final Runnable checker = new Runnable()
-    {
-        public void run()
-        {
-            // On a race condition, multiple threads may hit this method briefly. If we've
-            // already done a check, don't run it again.
-
-            if (System.currentTimeMillis() - lastCheck >= checkInterval)
-            {
-
-                // Fire the update event which will force a number of checks and then
-                // corresponding invalidation events.
-
-                updateListenerHub.fireCheckForUpdates();
-
-                lastCheck = System.currentTimeMillis();
-            }
-        }
-    };
-
-    private long lastCheck = 0;
-
-    /**
-     * @param updateListenerHub invoked, at intervals, to spur the process of detecting changes
-     * @param checkInterval     interval, in milliseconds, between checks
-     * @param updateTimeout     time, in  milliseconds, to wait to obtain update lock.
-     */
-    public CheckForUpdatesFilter(UpdateListenerHub updateListenerHub, long checkInterval, long updateTimeout)
-    {
-        this.updateListenerHub = updateListenerHub;
-        this.checkInterval = checkInterval;
-        this.updateTimeout = updateTimeout;
-    }
-
-    public boolean service(final Request request, final Response response, final RequestHandler handler)
-            throws IOException
-    {
-        final Holder<IOException> exceptionHolder = new Holder<IOException>();
-
-        Invokable<Boolean> invokable = new Invokable<Boolean>()
-        {
-            public Boolean invoke()
-            {
-                if (System.currentTimeMillis() - lastCheck >= checkInterval)
-                    barrier.tryWithWrite(checker, updateTimeout, TimeUnit.MILLISECONDS);
-
-                // And, now, back to code within the read lock.
-
-                try
-                {
-                    return handler.service(request, response);
-                }
-                catch (IOException ex)
-                {
-                    exceptionHolder.put(ex);
-                    return false;
-                }
-            }
-        };
-
-        // Obtain a read lock while handling the request. This will not impair parallel operations, except when a file check
-        // is needed (the exclusive write lock will block threads attempting to get a read lock).
-
-        boolean result = barrier.withRead(invokable);
-
-        if (exceptionHolder.hasValue()) throw exceptionHolder.get();
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClassResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClassResultProcessor.java
deleted file mode 100644
index 0cbbcbc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClassResultProcessor.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-import java.io.IOException;
-
-/**
- * Used when a component event handler returns a class value. The value is interpreted as the page class. A link to the
- * page will be sent.
- */
-public class ClassResultProcessor implements ComponentEventResultProcessor<Class>
-{
-    private final ComponentClassResolver resolver;
-
-    private final RequestPageCache requestPageCache;
-
-    private final ActionRenderResponseGenerator generator;
-
-    public ClassResultProcessor(ComponentClassResolver resolver, RequestPageCache requestPageCache,
-                                ActionRenderResponseGenerator generator)
-    {
-        this.resolver = resolver;
-        this.requestPageCache = requestPageCache;
-        this.generator = generator;
-    }
-
-    public void processResultValue(Class value) throws IOException
-    {
-        String className = value.getName();
-        String pageName = resolver.resolvePageClassNameToPageName(className);
-
-        Page page = requestPageCache.get(pageName);
-
-        generator.generateResponse(page);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
deleted file mode 100644
index 6155ba3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImpl.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.apache.tapestry5.services.assets.AssetPathConstructor;
-
-public class ClasspathAssetAliasManagerImpl implements ClasspathAssetAliasManager
-{
-    private final AssetPathConstructor assetPathConstructor;
-
-    /**
-     * Map from alias to path.
-     */
-    private final Map<String, String> aliasToPathPrefix = CollectionFactory.newMap();
-
-    /**
-     * Map from path to alias.
-     */
-    private final Map<String, String> pathPrefixToAlias = CollectionFactory.newMap();
-
-    private final List<String> sortedAliases;
-
-    private final List<String> sortedPathPrefixes;
-
-    /**
-     * Configuration is a map of aliases (short names) to complete names. Keys and values should end with a slash, but
-     * one will be provided as necessary, so don't both.
-     */
-    public ClasspathAssetAliasManagerImpl(AssetPathConstructor assetPathConstructor,
-
-    Map<String, String> configuration)
-    {
-        this.assetPathConstructor = assetPathConstructor;
-
-        for (Map.Entry<String, String> e : configuration.entrySet())
-        {
-            String alias = withOutSlash(e.getKey());
-
-            if (alias.contains("/"))
-                throw new RuntimeException(String.format(
-                        "Virtual folder names (for component libraries) may no longer contain slashes as of Tapestry 5.2. "
-                                + "You must change the ComponentClassAsssetAliasManager contribution for '%s'.", alias));
-
-            String path = withOutSlash(e.getValue());
-
-            aliasToPathPrefix.put(alias, path);
-            pathPrefixToAlias.put(path, alias);
-
-        }
-
-        Comparator<String> sortDescendingByLength = new Comparator<String>()
-        {
-            public int compare(String o1, String o2)
-            {
-                return o2.length() - o1.length();
-            }
-        };
-
-        sortedAliases = CollectionFactory.newList(aliasToPathPrefix.keySet());
-        Collections.sort(sortedAliases, sortDescendingByLength);
-
-        sortedPathPrefixes = CollectionFactory.newList(aliasToPathPrefix.values());
-        Collections.sort(sortedPathPrefixes, sortDescendingByLength);
-    }
-
-    private String withOutSlash(String input)
-    {
-        if (input.endsWith("/"))
-            return input.substring(0, input.length() - 1);
-
-        return input;
-    }
-
-    public String toClientURL(String resourcePath)
-    {
-        for (String pathPrefix : sortedPathPrefixes)
-        {
-            if (resourcePath.startsWith(pathPrefix))
-            {
-                String virtualFolder = pathPrefixToAlias.get(pathPrefix);
-
-                String virtualPath = resourcePath.substring(pathPrefix.length() + 1);
-
-                return assetPathConstructor.constructAssetPath(virtualFolder, virtualPath);
-            }
-        }
-
-        // This is a minor misuse of the UnknownValueException but the exception reporting
-        // is too useful to pass up.
-
-        throw new UnknownValueException(
-                String
-                        .format(
-                                "Unable to create a client URL for classpath resource %s: The resource path was not within an aliased path.",
-                                resourcePath), new AvailableValues("Aliased paths", aliasToPathPrefix.values()));
-    }
-
-    public String toResourcePath(String clientURL)
-    {
-        // Include the slash in the base path
-
-        String basePath = clientURL.substring(RequestConstants.ASSET_PATH_PREFIX.length());
-
-        for (String alias : sortedAliases)
-        {
-            if (basePath.startsWith(alias)) { return aliasToPathPrefix.get(alias) + "/"
-                    + basePath.substring(alias.length() + 1); }
-        }
-
-        return basePath;
-    }
-
-    public Map<String, String> getMappings()
-    {
-        return Collections.unmodifiableMap(aliasToPathPrefix);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
deleted file mode 100644
index 18e68b8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClasspathAssetFactory.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.AssetFactory;
-import org.apache.tapestry5.services.AssetPathConverter;
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.Map;
-
-/**
- * Generates Assets for files on the classpath. Caches generated client URLs internally, and clears that cache when
- * notified to do so by the {@link ResourceCache}.
- *
- * @see AssetDispatcher
- */
-public class ClasspathAssetFactory implements AssetFactory, InvalidationListener
-{
-    private final ResourceCache cache;
-
-    private final ClasspathAssetAliasManager aliasManager;
-
-    private final Map<Resource, String> resourceToDefaultPath = CollectionFactory.newConcurrentMap();
-
-    private final ClasspathResource rootResource;
-
-    private final AssetPathConverter converter;
-
-    private final boolean invariant;
-
-    public ClasspathAssetFactory(ResourceCache cache, ClasspathAssetAliasManager aliasManager,
-                                 AssetPathConverter converter)
-    {
-        this.cache = cache;
-        this.aliasManager = aliasManager;
-        this.converter = converter;
-
-        rootResource = new ClasspathResource("");
-
-        invariant = converter.isInvariant();
-    }
-
-    public void objectWasInvalidated()
-    {
-        resourceToDefaultPath.clear();
-    }
-
-    private String clientURL(Resource resource)
-    {
-        String defaultPath = resourceToDefaultPath.get(resource);
-
-        if (defaultPath == null)
-        {
-            defaultPath = buildDefaultPath(resource);
-
-            resourceToDefaultPath.put(resource, defaultPath);
-        }
-
-        return converter.convertAssetPath(defaultPath);
-    }
-
-    private String buildDefaultPath(Resource resource)
-    {
-        boolean requiresDigest = cache.requiresDigest(resource);
-
-        String path = resource.getPath();
-
-        if (requiresDigest)
-        {
-            // Resources with extensions go from foo/bar/baz.txt --> foo/bar/baz.CHECKSUM.txt
-
-            int lastdotx = path.lastIndexOf('.');
-
-            path = path.substring(0, lastdotx + 1) + cache.getDigest(resource) + path.substring(lastdotx);
-        }
-
-        return aliasManager.toClientURL(path);
-    }
-
-    public Asset createAsset(final Resource resource)
-    {
-        return new AbstractAsset(invariant)
-        {
-            public Resource getResource()
-            {
-                return resource;
-            }
-
-            public String toClientURL()
-            {
-                return clientURL(resource);
-            }
-        };
-    }
-
-    public Resource getRootResource()
-    {
-        return rootResource;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientBehaviorSupportImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientBehaviorSupportImpl.java
deleted file mode 100644
index 2c0705e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientBehaviorSupportImpl.java
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.corelib.data.InsertPosition;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-public class ClientBehaviorSupportImpl implements ClientBehaviorSupport
-{
-    private final JavaScriptSupport javascriptSupport;
-
-    private final Environment environment;
-
-    private final JSONObject validations = new JSONObject();
-
-    public ClientBehaviorSupportImpl(JavaScriptSupport javascriptSupport, Environment environment)
-    {
-        this.javascriptSupport = javascriptSupport;
-        this.environment = environment;
-    }
-
-    public void addZone(String clientId, String showFunctionName, String updateFunctionName)
-    {
-        JSONObject spec = new JSONObject("element", clientId);
-
-        addFunction(spec, "show", showFunctionName);
-        addFunction(spec, "update", updateFunctionName);
-
-        FormSupport formSupport = environment.peek(FormSupport.class);
-
-        if (formSupport != null)
-        {
-            JSONObject parameters = new JSONObject(RequestConstants.FORM_CLIENTID_PARAMETER, formSupport.getClientId(),
-                    RequestConstants.FORM_COMPONENTID_PARAMETER, formSupport.getFormComponentId());
-            spec.put("parameters", parameters);
-        }
-
-        javascriptSupport.addInitializerCall("zone", spec);
-    }
-
-    private void addFunction(JSONObject spec, String key, String showFunctionName)
-    {
-        if (showFunctionName != null)
-            spec.put(key, showFunctionName.toLowerCase());
-    }
-
-    public void linkZone(String linkId, String elementId, Link eventLink)
-    {
-        JSONObject spec = new JSONObject("linkId", linkId, "zoneId", elementId, "url", eventLink.toURI());
-
-        javascriptSupport.addInitializerCall("linkZone", spec);
-    }
-
-    /**
-     * @deprecated Use {@link #addFormFragment(String,boolean,String,String)} instead
-     */
-    public void addFormFragment(String clientId, String showFunctionName, String hideFunctionName)
-    {
-        addFormFragment(clientId, false, showFunctionName, hideFunctionName);
-    }
-
-    public void addFormFragment(String clientId, boolean alwaysSubmit, String showFunctionName, String hideFunctionName)
-    {
-        JSONObject spec = new JSONObject("element", clientId);
-
-        addFunction(spec, "show", showFunctionName);
-        addFunction(spec, "hide", hideFunctionName);
-
-        if (alwaysSubmit)
-            spec.put("alwaysSubmit", true);
-
-        javascriptSupport.addInitializerCall("formFragment", spec);
-    }
-
-    public void addFormInjector(String clientId, Link link, InsertPosition insertPosition, String showFunctionName)
-    {
-        JSONObject spec = new JSONObject("element", clientId, "url", link.toURI());
-
-        if (insertPosition == InsertPosition.BELOW)
-            spec.put("below", true);
-
-        addFunction(spec, "show", showFunctionName);
-
-        // Always has at least two properties.
-
-        javascriptSupport.addInitializerCall("formInjector", spec);
-    }
-
-    public void addValidation(Field field, String validationName, String message, Object constraint)
-    {
-        String fieldId = field.getClientId();
-
-        JSONArray specs;
-
-        if (validations.has(fieldId))
-            specs = validations.getJSONArray(fieldId);
-        else
-        {
-            specs = new JSONArray();
-            validations.put(fieldId, specs);
-        }
-
-        JSONArray thisSpec = new JSONArray();
-
-        thisSpec.put(validationName);
-        thisSpec.put(message);
-
-        if (constraint != null)
-            thisSpec.put(constraint);
-
-        specs.put(thisSpec);
-    }
-
-    /**
-     * Invoked at the end of rendering to commit (to the {@link JavaScriptSupport}) any accumulated
-     * validations.
-     */
-    public void commit()
-    {
-        if (validations.length() != 0)
-            javascriptSupport.addInitializerCall("validate", validations);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientDataEncoderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientDataEncoderImpl.java
deleted file mode 100644
index 243e39b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientDataEncoderImpl.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.util.Base64InputStream;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ClientDataSink;
-import org.apache.tapestry5.services.URLEncoder;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.ObjectInputStream;
-import java.util.zip.GZIPInputStream;
-
-public class ClientDataEncoderImpl implements ClientDataEncoder
-{
-    private final URLEncoder urlEncoder;
-
-    public ClientDataEncoderImpl(URLEncoder urlEncoder)
-    {
-        this.urlEncoder = urlEncoder;
-    }
-
-    public ClientDataSink createSink()
-    {
-        try
-        {
-            return new ClientDataSinkImpl(urlEncoder);
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public ObjectInputStream decodeClientData(String clientData)
-    {
-        // The clientData is Base64 that's been gzip'ed (i.e., this matches
-        // what ClientDataSinkImpl does.
-
-        try
-        {
-            BufferedInputStream buffered = new BufferedInputStream(
-                    new GZIPInputStream(new Base64InputStream(clientData)));
-
-            return new ObjectInputStream(buffered);
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public ObjectInputStream decodeEncodedClientData(String clientData) throws IOException
-    {
-        return decodeClientData(urlEncoder.decode(clientData));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientDataSinkImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientDataSinkImpl.java
deleted file mode 100644
index 5ac3012..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientDataSinkImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.util.Base64OutputStream;
-import org.apache.tapestry5.services.ClientDataSink;
-import org.apache.tapestry5.services.URLEncoder;
-
-import java.io.BufferedOutputStream;
-import java.io.IOException;
-import java.io.ObjectOutputStream;
-import java.io.OutputStream;
-import java.util.zip.GZIPOutputStream;
-
-public class ClientDataSinkImpl implements ClientDataSink
-{
-    private final Base64OutputStream base64OutputStream;
-
-    private final ObjectOutputStream objectOutputStream;
-
-    private final URLEncoder urlEncoder;
-
-    private boolean closed;
-
-    public ClientDataSinkImpl(URLEncoder urlEncoder) throws IOException
-    {
-        this.urlEncoder = urlEncoder;
-        base64OutputStream = new Base64OutputStream();
-
-        final BufferedOutputStream pipeline = new BufferedOutputStream(new GZIPOutputStream(base64OutputStream));
-
-        OutputStream guard = new OutputStream()
-        {
-            @Override
-            public void write(int b) throws IOException
-            {
-                pipeline.write(b);
-            }
-
-            @Override
-            public void close() throws IOException
-            {
-                closed = true;
-
-                pipeline.close();
-            }
-
-            @Override
-            public void flush() throws IOException
-            {
-                pipeline.flush();
-            }
-
-            @Override
-            public void write(byte[] b) throws IOException
-            {
-                pipeline.write(b);
-            }
-
-            @Override
-            public void write(byte[] b, int off, int len) throws IOException
-            {
-                pipeline.write(b, off, len);
-            }
-        };
-
-
-        objectOutputStream = new ObjectOutputStream(guard);
-    }
-
-    public ObjectOutputStream getObjectOutputStream()
-    {
-        return objectOutputStream;
-    }
-
-    public String getClientData()
-    {
-        if (!closed)
-        {
-            try
-            {
-                objectOutputStream.close();
-            }
-            catch (IOException ex)
-            {
-                // Ignore.
-            }
-        }
-
-        return base64OutputStream.toBase64();
-    }
-
-    public String getEncodedClientData()
-    {
-        return urlEncoder.encode(getClientData());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java
deleted file mode 100644
index 0318848..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientInfrastructureImpl.java
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClientInfrastructure;
-
-/**
- * The default JavaScript Stack consists of Prototype, Scriptaculous & the Tapestry-specific library.
- * 
- * @since 5.1.0.2
- */
-public class ClientInfrastructureImpl implements ClientInfrastructure
-{
-    private final SymbolSource symbolSource;
-
-    private final AssetSource assetSource;
-
-    private final ThreadLocale threadLocale;
-
-    private final List<Asset> javaScriptStack, stylesheetStack;
-
-    private final Asset consoleJavaScript, consoleStylesheet;
-
-    private final boolean isBlackbirdEnabled;
-
-    private static final String[] CORE_JAVASCRIPT = new String[]
-    {
-    // Core scripts added to any page that uses scripting
-
-            "${tapestry.scriptaculous}/prototype.js",
-
-            "${tapestry.scriptaculous}/scriptaculous.js",
-
-            "${tapestry.scriptaculous}/effects.js",
-
-            // Uses functions defined by the prior three
-
-            "${tapestry.default-javascript}", };
-
-    // Because of changes to the logic of how stylesheets get incorporated, the default stylesheet
-    // was removed, the logic for it is now in TapestryModule.contributeMarkupRenderer().
-
-    private static final String[] CORE_STYLESHEET = new String[0];
-
-    public ClientInfrastructureImpl(SymbolSource symbolSource, AssetSource assetSource, ThreadLocale threadLocale,
-            @Symbol(SymbolConstants.BLACKBIRD_ENABLED)
-            boolean isBlackbirdEnabled)
-    {
-        this.symbolSource = symbolSource;
-        this.assetSource = assetSource;
-        this.threadLocale = threadLocale;
-        this.isBlackbirdEnabled = isBlackbirdEnabled;
-
-        javaScriptStack = convertToAssets(CORE_JAVASCRIPT);
-        stylesheetStack = convertToAssets(CORE_STYLESHEET);
-
-        consoleJavaScript = expand("${tapestry.blackbird}/blackbird.js", "org/apache/tapestry5/tapestry-console.js",
-                null);
-        consoleStylesheet = expand("${tapestry.blackbird}/blackbird.css", "org/apache/tapestry5/tapestry-console.css",
-                null);
-    }
-
-    private List<Asset> convertToAssets(String[] paths)
-    {
-        List<Asset> assets = CollectionFactory.newList();
-
-        for (String path : paths)
-        {
-            assets.add(expand(path, null));
-        }
-
-        return Collections.unmodifiableList(assets);
-    }
-
-    private Asset expand(String path, Locale locale)
-    {
-        String expanded = symbolSource.expandSymbols(path);
-
-        return assetSource.getAsset(null, expanded, locale);
-    }
-
-    private Asset expand(String blackbirdPath, String consolePath, Locale locale)
-    {
-        String path = isBlackbirdEnabled ? blackbirdPath : consolePath;
-
-        return expand(path, locale);
-    }
-
-    public List<Asset> getJavascriptStack()
-    {
-        Asset messages = assetSource.getAsset(null, "org/apache/tapestry5/tapestry-messages.js", threadLocale
-                .getLocale());
-
-        return createStack(javaScriptStack, messages, consoleJavaScript);
-    }
-
-    public List<Asset> getStylesheetStack()
-    {
-        return createStack(stylesheetStack, consoleStylesheet);
-    }
-
-    public List<Asset> createStack(List<Asset> stack, Asset... assets)
-    {
-        List<Asset> result = CollectionFactory.newList(stack);
-
-        for (Asset next : assets)
-        {
-            result.add(next);
-        }
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorage.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorage.java
deleted file mode 100644
index 6b6108e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorage.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-
-/**
- * Describes an object that can store {@link PersistentFieldChange}s, and manage a query parameter stored into a {@link
- * Link} to maining this data across requests.
- */
-public interface ClientPersistentFieldStorage extends PersistentFieldStrategy
-{
-    /**
-     * Updates a link, adding a query parameter to it (if necessary) to store
-     *
-     * @param link
-     */
-    void updateLink(Link link);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
deleted file mode 100644
index d93cd87..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImpl.java
+++ /dev/null
@@ -1,292 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ClientDataSink;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.Request;
-
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * Manages client-persistent values on behalf of a {@link ClientPersistentFieldStorageImpl}. Some effort is made to
- * ensure that we don't uncessarily convert between objects and Base64 (the encoding used to record the value on the
- * client).
- */
-@Scope(ScopeConstants.PERTHREAD)
-public class ClientPersistentFieldStorageImpl implements ClientPersistentFieldStorage
-{
-    static final String PARAMETER_NAME = "t:state:client";
-
-    private static class Key implements Serializable
-    {
-        private static final long serialVersionUID = -2741540370081645945L;
-
-        private final String pageName;
-
-        private final String componentId;
-
-        private final String fieldName;
-
-        Key(String pageName, String componentId, String fieldName)
-        {
-            this.pageName = pageName;
-            this.componentId = componentId;
-            this.fieldName = fieldName;
-        }
-
-        public boolean matches(String pageName)
-        {
-            return this.pageName.equals(pageName);
-        }
-
-        public PersistentFieldChange toChange(Object value)
-        {
-            return new PersistentFieldChangeImpl(componentId == null ? "" : componentId,
-                                                 fieldName, value);
-        }
-
-        @Override
-        public int hashCode()
-        {
-            final int PRIME = 31;
-
-            int result = 1;
-
-            result = PRIME * result + ((componentId == null) ? 0 : componentId.hashCode());
-
-            // fieldName and pageName are never null
-
-            result = PRIME * result + fieldName.hashCode();
-            result = PRIME * result + pageName.hashCode();
-
-            return result;
-        }
-
-        @Override
-        public boolean equals(Object obj)
-        {
-            if (this == obj) return true;
-            if (obj == null) return false;
-            if (getClass() != obj.getClass()) return false;
-            final Key other = (Key) obj;
-
-            // fieldName and pageName are never null
-
-            if (!fieldName.equals(other.fieldName)) return false;
-            if (!pageName.equals(other.pageName)) return false;
-
-            if (componentId == null)
-            {
-                if (other.componentId != null) return false;
-            }
-            else if (!componentId.equals(other.componentId)) return false;
-
-            return true;
-        }
-    }
-
-    private final ClientDataEncoder clientDataEncoder;
-
-    private final Map<Key, Object> persistedValues = CollectionFactory.newMap();
-
-    private String clientData;
-
-    private boolean mapUptoDate = false;
-
-    public ClientPersistentFieldStorageImpl(Request request, ClientDataEncoder clientDataEncoder)
-    {
-        this.clientDataEncoder = clientDataEncoder;
-
-        // This, here, is the problem of TAPESTRY-2501; this call can predate
-        // the check to set the character set based on meta data of the page.
-
-        String value = request.getParameter(PARAMETER_NAME);
-
-        // MIME can encode to a '+' character; the browser converts that to a space; we convert it
-        // back.
-
-        clientData = value == null ? null : value.replace(' ', '+');
-    }
-
-    public void updateLink(Link link)
-    {
-        refreshClientData();
-
-        if (clientData != null) link.addParameter(PARAMETER_NAME, clientData);
-    }
-
-    public Collection<PersistentFieldChange> gatherFieldChanges(String pageName)
-    {
-        refreshMap();
-
-        if (persistedValues.isEmpty()) return Collections.emptyList();
-
-        Collection<PersistentFieldChange> result = CollectionFactory.newList();
-
-        for (Map.Entry<Key, Object> e : persistedValues.entrySet())
-        {
-            Key key = e.getKey();
-
-            if (key.matches(pageName)) result.add(key.toChange(e.getValue()));
-        }
-
-        return result;
-    }
-
-    public void discardChanges(String pageName)
-    {
-        refreshMap();
-
-        Collection<Key> removedKeys = CollectionFactory.newList();
-
-        for (Key key : persistedValues.keySet())
-        {
-            if (key.pageName.equals(pageName)) removedKeys.add(key);
-        }
-
-        for (Key key : removedKeys)
-        {
-            persistedValues.remove(key);
-            clientData = null;
-        }
-    }
-
-    public void postChange(String pageName, String componentId, String fieldName, Object newValue)
-    {
-        refreshMap();
-
-        Key key = new Key(pageName, componentId, fieldName);
-
-        if (newValue == null)
-            persistedValues.remove(key);
-        else
-        {
-            if (!Serializable.class.isInstance(newValue))
-                throw new IllegalArgumentException(ServicesMessages
-                        .clientStateMustBeSerializable(newValue));
-
-            persistedValues.put(key, newValue);
-        }
-
-        clientData = null;
-    }
-
-    /**
-     * Refreshes the _persistedValues map if it is not up to date.
-     */
-    @SuppressWarnings("unchecked")
-    private void refreshMap()
-    {
-        if (mapUptoDate) return;
-
-        // Parse the client data to form the map.
-
-        restoreMapFromClientData();
-
-        mapUptoDate = true;
-    }
-
-    /**
-     * Restores the _persistedValues map from the client data provided in the incoming Request.
-     */
-    private void restoreMapFromClientData()
-    {
-        persistedValues.clear();
-
-        if (clientData == null) return;
-
-        ObjectInputStream in = null;
-
-        try
-        {
-            in = clientDataEncoder.decodeClientData(clientData);
-
-            int count = in.readInt();
-
-            for (int i = 0; i < count; i++)
-            {
-                Key key = (Key) in.readObject();
-                Object value = in.readObject();
-
-                persistedValues.put(key, value);
-            }
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ServicesMessages.corruptClientState(), ex);
-        }
-        finally
-        {
-            InternalUtils.close(in);
-        }
-    }
-
-    private void refreshClientData()
-    {
-        // Client data will be null after a change to the map, or if there was no client data in the
-        // request. In any other case where the client data is non-null, it is by definition
-        // up-to date (since it is reset to null any time there's a change to the map).
-
-        if (clientData != null) return;
-
-        // Very typical: we're refreshing the client data but haven't created the map yet, and there
-        // was no value in the request. Leave it as null.
-
-        if (!mapUptoDate) return;
-
-        // Null is also appropriate when the persisted values are empty.
-
-        if (persistedValues.isEmpty()) return;
-
-        // Otherwise, time to update clientData from persistedValues
-
-        ClientDataSink sink = clientDataEncoder.createSink();
-
-        ObjectOutputStream os = sink.getObjectOutputStream();
-
-        try
-        {
-            os.writeInt(persistedValues.size());
-
-            for (Map.Entry<Key, Object> e : persistedValues.entrySet())
-            {
-                os.writeObject(e.getKey());
-                os.writeObject(e.getValue());
-            }
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex.getMessage(), ex);
-        }
-        finally
-        {
-            InternalUtils.close(os);
-        }
-
-        clientData = sink.getClientData();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
deleted file mode 100644
index c0f7299..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStrategy.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.LinkCreationListener;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-
-import java.util.Collection;
-
-/**
- * Implements simple client-persistent properties. Most of the logic is delegated to an instance of {@link
- * ClientPersistentFieldStorage}. This division of layer allows this service to be a true singleton, and a listener to
- * the {@link LinkSource}, and allow per-request state to be isolated inside the other service.
- */
-public class ClientPersistentFieldStrategy implements PersistentFieldStrategy, LinkCreationListener
-{
-    private final ClientPersistentFieldStorage storage;
-
-    public ClientPersistentFieldStrategy(ClientPersistentFieldStorage storage)
-    {
-        this.storage = storage;
-    }
-
-    public Collection<PersistentFieldChange> gatherFieldChanges(String pageName)
-    {
-        return storage.gatherFieldChanges(pageName);
-    }
-
-    public void postChange(String pageName, String componentId, String fieldName, Object newValue)
-    {
-        storage.postChange(pageName, componentId, fieldName, newValue);
-    }
-
-    public void createdComponentEventLink(Link link)
-    {
-        storage.updateLink(link);
-    }
-
-    public void createdPageRenderLink(Link link)
-    {
-        storage.updateLink(link);
-    }
-
-    public void discardChanges(String pageName)
-    {
-        storage.discardChanges(pageName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java
deleted file mode 100644
index e1135bf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CoercingPropertyConduitWrapper.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-import java.lang.annotation.Annotation;
-
-public class CoercingPropertyConduitWrapper implements PropertyConduit
-{
-    private final PropertyConduit conduit;
-
-    private final TypeCoercer coercer;
-
-    public CoercingPropertyConduitWrapper(final PropertyConduit conduit, final TypeCoercer coercer)
-    {
-        this.conduit = conduit;
-        this.coercer = coercer;
-    }
-
-    public Object get(Object instance)
-    {
-        return conduit.get(instance);
-    }
-
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return conduit.getAnnotation(annotationClass);
-    }
-
-    public Class getPropertyType()
-    {
-        return conduit.getPropertyType();
-    }
-
-    @SuppressWarnings("unchecked")
-    public void set(Object instance, Object value)
-    {
-        Object coerced = coercer.coerce(value, getPropertyType());
-
-        conduit.set(instance, coerced);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
deleted file mode 100644
index 91efa0d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CommonResourcesInjectionProvider.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.slf4j.Logger;
-
-/**
- * Allows for a number of anonymous injections based on the type of field that is to be injected.
- */
-public class CommonResourcesInjectionProvider implements InjectionProvider
-{
-    private static ComponentValueProvider<Messages> messagesProvider = new ComponentValueProvider<Messages>()
-    {
-
-        public Messages get(ComponentResources resources)
-        {
-            return resources.getMessages();
-        }
-    };
-
-    private static ComponentValueProvider<Locale> localeProvider = new ComponentValueProvider<Locale>()
-    {
-
-        public Locale get(ComponentResources resources)
-        {
-            return resources.getLocale();
-        }
-    };
-
-    private static ComponentValueProvider<Logger> loggerProvider = new ComponentValueProvider<Logger>()
-    {
-
-        public Logger get(ComponentResources resources)
-        {
-            return resources.getLogger();
-        };
-    };
-
-    private static ComponentValueProvider<String> completeIdProvider = new ComponentValueProvider<String>()
-    {
-        public String get(ComponentResources resources)
-        {
-            return resources.getCompleteId();
-        }
-    };
-
-    private static final Map<Class, ComponentValueProvider> configuration = CollectionFactory
-            .newMap();
-
-    {
-        configuration.put(Messages.class, messagesProvider);
-        configuration.put(Locale.class, localeProvider);
-        configuration.put(Logger.class, loggerProvider);
-        configuration.put(String.class, completeIdProvider);
-    }
-
-    @SuppressWarnings("unchecked")
-    public boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
-            ClassTransformation transformation, MutableComponentModel componentModel)
-    {
-        ComponentValueProvider provider = configuration.get(fieldType);
-
-        if (provider == null)
-            return false;
-
-        transformation.getField(fieldName).injectIndirect(provider);
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCache.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCache.java
deleted file mode 100644
index f641a7f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCache.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * A cache for converting between class names and component (or other) classes. For component classes, ensures that the
- * class is the transformed class.
- */
-public interface ComponentClassCache
-{
-    /**
-     * Gets the Class instance for the given fully-qualified class name.
-     * 
-     * @param className
-     *            fully qualified class name, or a primitive type name, or an array name (in source format)
-     * @return the class instance
-     */
-    Class forName(String className);
-
-    /**
-     * Computes the default value for a field of the given type, returns the appropriate
-     * default value. This is typically null, but may be false (for a primitive boolean) or some
-     * version of 0 (for a primitive numeric field). Wrapper types will still be null.
-     * 
-     * @param className
-     *            type of field
-     * @since 5.2.0
-     */
-    Object defaultValueForType(String className);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java
deleted file mode 100644
index 0998d44..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassCacheImpl.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.Map;
-
-public class ComponentClassCacheImpl implements ComponentClassCache, InvalidationListener
-{
-    private final Map<String, Class> cache = CollectionFactory.newConcurrentMap();
-
-    private final ClassFactory classFactory;
-
-    private final TypeCoercer typeCoercer;
-
-    public ComponentClassCacheImpl(@ComponentLayer
-    ClassFactory classFactory, TypeCoercer typeCoercer)
-    {
-        this.classFactory = classFactory;
-        this.typeCoercer = typeCoercer;
-    }
-
-    public void objectWasInvalidated()
-    {
-        cache.clear();
-    }
-
-    @SuppressWarnings("unchecked")
-    public Object defaultValueForType(String className)
-    {
-        Class clazz = forName(className);
-
-        if (!clazz.isPrimitive())
-            return null;
-
-        // Remembering that 0 coerces to boolean false, this covers all the primitive
-        // types (boolean, int, short, etc.)
-        return typeCoercer.coerce(0, clazz);
-    }
-
-    public Class forName(String className)
-    {
-        Class result = cache.get(className);
-
-        if (result == null)
-        {
-            result = lookupClassForType(className);
-
-            cache.put(className, result);
-        }
-
-        return result;
-    }
-
-    private Class lookupClassForType(String className)
-    {
-        if (className.equals("void"))
-            return void.class;
-
-        if (ClassFabUtils.isPrimitiveType(className))
-            return ClassFabUtils.getPrimitiveType(className);
-
-        // This step is necessary to handle primitives arrays.
-
-        String jvmName = ClassFabUtils.toJVMBinaryName(className);
-
-        ClassLoader componentLoader = classFactory.getClassLoader();
-
-        try
-        {
-            return Class.forName(jvmName, true, componentLoader);
-        }
-        catch (ClassNotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
deleted file mode 100644
index de388ac..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassResolverImpl.java
+++ /dev/null
@@ -1,667 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Formatter;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassNameLocator;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.LibraryMapping;
-import org.slf4j.Logger;
-
-public class ComponentClassResolverImpl implements ComponentClassResolver, InvalidationListener
-{
-    private static final String CORE_LIBRARY_PREFIX = "core/";
-
-    private final Logger logger;
-
-    private final ComponentInstantiatorSource componentInstantiatorSource;
-
-    private final ClassNameLocator classNameLocator;
-
-    private final String appRootPackage;
-
-    private final String startPageName;
-
-    // Map from folder name to a list of root package names.
-    // The key does not begin or end with a slash.
-
-    private final Map<String, List<String>> mappings = CollectionFactory.newCaseInsensitiveMap();
-
-    // Flag indicating that the maps have been cleared following an invalidation
-    // and need to be rebuilt. The flag and the four maps below are not synchronized
-    // because they are only modified inside a synchronized block. That should be strong enough ...
-    // and changes made will become "visible" at the end of the synchronized block. Because of the
-    // structure of Tapestry, there should not be any reader threads while the write thread
-    // is operating.
-
-    private boolean needsRebuild = true;
-
-    /**
-     * Logical page name to class name.
-     */
-    private final Map<String, String> pageToClassName = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Component type to class name.
-     */
-    private final Map<String, String> componentToClassName = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Mixing type to class name.
-     */
-    private final Map<String, String> mixinToClassName = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Page class name to logical name (needed to build URLs). This one is case sensitive, since class names do always
-     * have a particular case.
-     */
-    private final Map<String, String> pageClassNameToLogicalName = CollectionFactory.newMap();
-
-    /**
-     * Used to convert a logical page name to the canonical form of the page name; this ensures that uniform case for
-     * page names is used.
-     */
-    private final Map<String, String> pageNameToCanonicalPageName = CollectionFactory.newCaseInsensitiveMap();
-
-    private final ConcurrentBarrier barrier = new ConcurrentBarrier();
-
-    private static final Pattern SPLIT_PACKAGE_PATTERN = Pattern.compile("\\.");
-
-    private static final Pattern SPLIT_FOLDER_PATTERN = Pattern.compile("/");
-
-    private static final int LOGICAL_NAME_BUFFER_SIZE = 40;
-
-    public ComponentClassResolverImpl(Logger logger,
-
-    ComponentInstantiatorSource componentInstantiatorSource,
-
-    ClassNameLocator classNameLocator,
-
-    @Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)
-    String appRootPackage,
-
-    @Symbol(SymbolConstants.START_PAGE_NAME)
-    String startPageName,
-
-    Collection<LibraryMapping> mappings)
-    {
-        this.logger = logger;
-        this.componentInstantiatorSource = componentInstantiatorSource;
-        this.classNameLocator = classNameLocator;
-
-        this.appRootPackage = appRootPackage;
-        this.startPageName = startPageName;
-
-        addPackagesToInstantiatorSource(this.appRootPackage);
-
-        for (LibraryMapping mapping : mappings)
-        {
-            String prefix = mapping.getPathPrefix();
-
-            while (prefix.startsWith("/"))
-            {
-                prefix = prefix.substring(1);
-            }
-
-            while (prefix.endsWith("/"))
-            {
-                prefix = prefix.substring(0, prefix.length() - 1);
-            }
-
-            String rootPackage = mapping.getRootPackage();
-
-            List<String> packages = this.mappings.get(prefix);
-
-            if (packages == null)
-            {
-                packages = CollectionFactory.newList();
-                this.mappings.put(prefix, packages);
-            }
-
-            packages.add(rootPackage);
-
-            // These packages, which will contain classes subject to class transformation,
-            // must be registered with the component instantiator (which is responsible
-            // for transformation).
-
-            addPackagesToInstantiatorSource(rootPackage);
-        }
-    }
-
-    private void addPackagesToInstantiatorSource(String rootPackage)
-    {
-        componentInstantiatorSource.addPackage(rootPackage + "." + InternalConstants.PAGES_SUBPACKAGE);
-        componentInstantiatorSource.addPackage(rootPackage + "." + InternalConstants.COMPONENTS_SUBPACKAGE);
-        componentInstantiatorSource.addPackage(rootPackage + "." + InternalConstants.MIXINS_SUBPACKAGE);
-        componentInstantiatorSource.addPackage(rootPackage + "." + InternalConstants.BASE_SUBPACKAGE);
-    }
-
-    /**
-     * When the class loader is invalidated, clear any cached page names or component types.
-     */
-    public synchronized void objectWasInvalidated()
-    {
-        barrier.withWrite(new Runnable()
-        {
-            public void run()
-            {
-                needsRebuild = true;
-            }
-        });
-    }
-
-    /**
-     * Invoked from within a withRead() block, checks to see if a rebuild is needed, and then performs the rebuild
-     * within a withWrite() block.
-     */
-    private void rebuild()
-    {
-        if (!needsRebuild)
-            return;
-
-        barrier.withWrite(new Runnable()
-        {
-            public void run()
-            {
-                performRebuild();
-            }
-        });
-    }
-
-    private void performRebuild()
-    {
-
-        Map<String, String> savedPages = CollectionFactory.newMap(pageToClassName);
-        Map<String, String> savedComponents = CollectionFactory.newMap(componentToClassName);
-        Map<String, String> savedMixins = CollectionFactory.newMap(mixinToClassName);
-
-        pageToClassName.clear();
-        componentToClassName.clear();
-        mixinToClassName.clear();
-        pageClassNameToLogicalName.clear();
-        pageNameToCanonicalPageName.clear();
-
-        rebuild("", appRootPackage);
-
-        for (String prefix : mappings.keySet())
-        {
-            List<String> packages = mappings.get(prefix);
-
-            String folder = prefix + "/";
-
-            for (String packageName : packages)
-                rebuild(folder, packageName);
-        }
-
-        showChanges("pages", savedPages, pageToClassName);
-        showChanges("components", savedComponents, componentToClassName);
-        showChanges("mixins", savedMixins, mixinToClassName);
-
-        needsRebuild = false;
-    }
-
-    private void showChanges(String title, Map<String, String> savedMap, Map<String, String> newMap)
-    {
-        if (savedMap.equals(newMap))
-            return;
-
-        Map<String, String> core = CollectionFactory.newMap();
-        Map<String, String> nonCore = CollectionFactory.newMap();
-
-        int maxLength = 0;
-
-        // Pass # 1: Get all the stuff in the core library
-
-        for (String name : newMap.keySet())
-        {
-            if (name.startsWith(CORE_LIBRARY_PREFIX))
-            {
-                // Strip off the "core/" prefix.
-
-                String key = name.substring(CORE_LIBRARY_PREFIX.length());
-
-                maxLength = Math.max(maxLength, key.length());
-
-                core.put(key, newMap.get(name));
-            }
-            else
-            {
-                maxLength = Math.max(maxLength, name.length());
-
-                nonCore.put(name, newMap.get(name));
-            }
-        }
-
-        // Merge the non-core mappings into the core mappings. Where there are conflicts on name, it
-        // means the application overrode a core page/component/mixin and that's ok ... the
-        // merged core map will reflect the application's mapping.
-
-        core.putAll(nonCore);
-
-        StringBuilder builder = new StringBuilder(2000);
-        Formatter f = new Formatter(builder);
-
-        f.format("Available %s:\n", title);
-
-        String formatString = "%" + maxLength + "s: %s\n";
-
-        List<String> sorted = InternalUtils.sortedKeys(core);
-
-        for (String name : sorted)
-        {
-            String className = core.get(name);
-
-            if (name.equals(""))
-                name = "(blank)";
-
-            f.format(formatString, name, className);
-        }
-
-        logger.info(builder.toString());
-    }
-
-    private void rebuild(String pathPrefix, String rootPackage)
-    {
-        fillNameToClassNameMap(pathPrefix, rootPackage, InternalConstants.PAGES_SUBPACKAGE, pageToClassName);
-        fillNameToClassNameMap(pathPrefix, rootPackage, InternalConstants.COMPONENTS_SUBPACKAGE, componentToClassName);
-        fillNameToClassNameMap(pathPrefix, rootPackage, InternalConstants.MIXINS_SUBPACKAGE, mixinToClassName);
-    }
-
-    private void fillNameToClassNameMap(String pathPrefix, String rootPackage, String subPackage,
-            Map<String, String> logicalNameToClassName)
-    {
-        String searchPackage = rootPackage + "." + subPackage;
-        boolean isPage = subPackage.equals(InternalConstants.PAGES_SUBPACKAGE);
-
-        Collection<String> classNames = classNameLocator.locateClassNames(searchPackage);
-
-        int startPos = searchPackage.length() + 1;
-
-        for (String name : classNames)
-        {
-            String logicalName = toLogicalName(name, pathPrefix, startPos, true);
-            String unstrippedName = toLogicalName(name, pathPrefix, startPos, false);
-
-            if (isPage)
-            {
-                int lastSlashx = logicalName.lastIndexOf("/");
-
-                String lastTerm = lastSlashx < 0 ? logicalName : logicalName.substring(lastSlashx + 1);
-
-                if (lastTerm.equalsIgnoreCase("index") || lastTerm.equalsIgnoreCase(startPageName))
-                {
-                    String reducedName = lastSlashx < 0 ? "" : logicalName.substring(0, lastSlashx);
-
-                    // Make the super-stripped name another alias to the class.
-
-                    logicalNameToClassName.put(reducedName, name);
-                    pageNameToCanonicalPageName.put(reducedName, logicalName);
-                }
-
-                pageClassNameToLogicalName.put(name, logicalName);
-                pageNameToCanonicalPageName.put(logicalName, logicalName);
-                pageNameToCanonicalPageName.put(unstrippedName, logicalName);
-            }
-
-            logicalNameToClassName.put(logicalName, name);
-            logicalNameToClassName.put(unstrippedName, name);
-        }
-    }
-
-    /**
-     * Converts a fully qualified class name to a logical name
-     * 
-     * @param className
-     *            fully qualified class name
-     * @param pathPrefix
-     *            prefix to be placed on the logical name (to identify the library from in which the class
-     *            lives)
-     * @param startPos
-     *            start position within the class name to extract the logical name (i.e., after the final '.' in
-     *            "rootpackage.pages.").
-     * @param stripTerms
-     * @return a short logical name in folder format ('.' replaced with '/')
-     */
-    private String toLogicalName(String className, String pathPrefix, int startPos, boolean stripTerms)
-    {
-        List<String> terms = CollectionFactory.newList();
-
-        addAll(terms, SPLIT_FOLDER_PATTERN, pathPrefix);
-
-        addAll(terms, SPLIT_PACKAGE_PATTERN, className.substring(startPos));
-
-        StringBuilder builder = new StringBuilder(LOGICAL_NAME_BUFFER_SIZE);
-        String sep = "";
-
-        String logicalName = terms.remove(terms.size() - 1);
-
-        String unstripped = logicalName;
-
-        for (String term : terms)
-        {
-            builder.append(sep);
-            builder.append(term);
-
-            sep = "/";
-
-            if (stripTerms)
-                logicalName = stripTerm(term, logicalName);
-        }
-
-        if (logicalName.equals(""))
-            logicalName = unstripped;
-
-        builder.append(sep);
-        builder.append(logicalName);
-
-        return builder.toString();
-    }
-
-    private void addAll(List<String> terms, Pattern splitter, String input)
-    {
-        for (String term : splitter.split(input))
-        {
-            if (term.equals(""))
-                continue;
-
-            terms.add(term);
-        }
-    }
-
-    private String stripTerm(String term, String logicalName)
-    {
-        if (isCaselessPrefix(term, logicalName))
-        {
-            logicalName = logicalName.substring(term.length());
-        }
-
-        if (isCaselessSuffix(term, logicalName))
-        {
-            logicalName = logicalName.substring(0, logicalName.length() - term.length());
-        }
-
-        return logicalName;
-    }
-
-    private boolean isCaselessPrefix(String prefix, String string)
-    {
-        return string.regionMatches(true, 0, prefix, 0, prefix.length());
-    }
-
-    private boolean isCaselessSuffix(String suffix, String string)
-    {
-        return string.regionMatches(true, string.length() - suffix.length(), suffix, 0, suffix.length());
-    }
-
-    public String resolvePageNameToClassName(final String pageName)
-    {
-        return barrier.withRead(new Invokable<String>()
-        {
-            public String invoke()
-            {
-                String result = locate(pageName, pageToClassName);
-
-                if (result == null)
-                    throw new UnknownValueException(String.format("Unable to resolve '%s' to a page class name.",
-                            pageName), new AvailableValues("Page names", presentableNames(pageToClassName)));
-
-                return result;
-            }
-        });
-    }
-
-    public boolean isPageName(final String pageName)
-    {
-        return barrier.withRead(new Invokable<Boolean>()
-        {
-            public Boolean invoke()
-            {
-                return locate(pageName, pageToClassName) != null;
-            }
-        });
-    }
-
-    public List<String> getPageNames()
-    {
-        return barrier.withRead(new Invokable<List<String>>()
-        {
-            public List<String> invoke()
-            {
-                rebuild();
-
-                List<String> result = CollectionFactory.newList(pageClassNameToLogicalName.values());
-
-                Collections.sort(result);
-
-                return result;
-            }
-        });
-    }
-
-    public String resolveComponentTypeToClassName(final String componentType)
-    {
-        return barrier.withRead(new Invokable<String>()
-        {
-            public String invoke()
-            {
-                String result = locate(componentType, componentToClassName);
-
-                if (result == null)
-                    throw new UnknownValueException(String.format("Unable to resolve '%s' to a component class name.",
-                            componentType), new AvailableValues("Component types",
-                            presentableNames(componentToClassName)));
-
-                return result;
-            }
-        });
-    }
-
-    Collection<String> presentableNames(Map<String, ?> map)
-    {
-        Set<String> result = CollectionFactory.newSet();
-
-        for (String name : map.keySet())
-        {
-
-            if (name.startsWith(CORE_LIBRARY_PREFIX))
-            {
-                result.add(name.substring(CORE_LIBRARY_PREFIX.length()));
-                continue;
-            }
-
-            result.add(name);
-        }
-
-        return result;
-    }
-
-    public String resolveMixinTypeToClassName(final String mixinType)
-    {
-        return barrier.withRead(new Invokable<String>()
-        {
-            public String invoke()
-            {
-                String result = locate(mixinType, mixinToClassName);
-
-                if (result == null)
-                    throw new UnknownValueException(String.format("Unable to resolve '%s' to a mixin class name.",
-                            mixinType), new AvailableValues("Mixin types", presentableNames(mixinToClassName)));
-
-                return result;
-            }
-        });
-    }
-
-    /**
-     * Locates a class name within the provided map, given its logical name. If not found naturally, a search inside the
-     * "core" library is included.
-     * 
-     * @param logicalName
-     *            name to search for
-     * @param logicalNameToClassName
-     *            mapping from logical name to class name
-     * @return the located class name or null
-     */
-    private String locate(String logicalName, Map<String, String> logicalNameToClassName)
-    {
-        rebuild();
-
-        String result = logicalNameToClassName.get(logicalName);
-
-        // If not found, see if it exists under the core package. In this way,
-        // anything in core is "inherited" (but overridable) by the application.
-
-        if (result == null)
-            result = logicalNameToClassName.get(CORE_LIBRARY_PREFIX + logicalName);
-
-        return result;
-    }
-
-    public String resolvePageClassNameToPageName(final String pageClassName)
-    {
-        return barrier.withRead(new Invokable<String>()
-        {
-            public String invoke()
-            {
-                rebuild();
-
-                String result = pageClassNameToLogicalName.get(pageClassName);
-
-                if (result == null)
-                    throw new IllegalArgumentException(ServicesMessages.pageNameUnresolved(pageClassName));
-
-                return result;
-            }
-        });
-    }
-
-    public String canonicalizePageName(final String pageName)
-    {
-        return barrier.withRead(new Invokable<String>()
-        {
-            public String invoke()
-            {
-                String result = locate(pageName, pageNameToCanonicalPageName);
-
-                if (result == null)
-                    throw new UnknownValueException(String.format("Unable to resolve '%s' to a known page name.",
-                            pageName), new AvailableValues("Page names", presentableNames(pageNameToCanonicalPageName)));
-
-                return result;
-            }
-        });
-    }
-
-    public Map<String, String> getFolderToPackageMapping()
-    {
-        Map<String, String> result = CollectionFactory.newCaseInsensitiveMap();
-
-        for (String folder : mappings.keySet())
-        {
-            List<String> packageNames = mappings.get(folder);
-
-            String packageName = findCommonPackageNameForFolder(folder, packageNames);
-
-            result.put(folder, packageName);
-        }
-
-        return result;
-    }
-
-    static String findCommonPackageNameForFolder(String folder, List<String> packageNames)
-    {
-        String packageName = findCommonPackageName(packageNames);
-
-        if (packageName == null)
-            throw new RuntimeException(
-                    String
-                            .format(
-                                    "Package names for library folder '%s' (%s) can not be reduced to a common base package (of at least two terms).",
-                                    folder, InternalUtils.joinSorted(packageNames)));
-        return packageName;
-    }
-
-    static String findCommonPackageName(List<String> packageNames)
-    {
-        // BTW, this is what reduce is for in Clojure ...
-
-        String commonPackageName = packageNames.get(0);
-
-        for (int i = 1; i < packageNames.size(); i++)
-        {
-            commonPackageName = findCommonPackageName(commonPackageName, packageNames.get(i));
-
-            if (commonPackageName == null)
-                break;
-        }
-
-        return commonPackageName;
-    }
-
-    static String findCommonPackageName(String commonPackageName, String packageName)
-    {
-        String[] commonExploded = explode(commonPackageName);
-        String[] exploded = explode(packageName);
-
-        int count = Math.min(commonExploded.length, exploded.length);
-
-        int commonLength = 0;
-        int commonTerms = 0;
-
-        for (int i = 0; i < count; i++)
-        {
-            if (exploded[i].equals(commonExploded[i]))
-            {
-                // Keep track of the number of shared characters (including the dot seperators)
-
-                commonLength += exploded[i].length() + (i == 0 ? 0 : 1);
-                commonTerms++;
-            }
-            else
-            {
-                break;
-            }
-        }
-
-        if (commonTerms < 2)
-            return null;
-
-        return commonPackageName.substring(0, commonLength);
-    }
-
-    private static final Pattern DOT = Pattern.compile("\\.");
-
-    private static String[] explode(String packageName)
-    {
-        return DOT.split(packageName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformer.java
deleted file mode 100644
index 2a46091..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javassist.CtClass;
-
-/**
- * Encapsulates all the work performed by the {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource}
- * when it loads and transforms a class.
- */
-public interface ComponentClassTransformer
-{
-    /**
-     * Performs a transformation on the class, accessing the class from the class pool.
-     *
-     * @param ctClass     compile time class to be transformed
-     * @param classLoader class loader used to resolve references to other classes (both transformed and not)
-     */
-    void transformComponentClass(CtClass ctClass, ClassLoader classLoader);
-
-    /**
-     * Creates a new instantiator instance.
-     *
-     * @param componentClassName fully qualified name of component class to instantiate
-     */
-    Instantiator createInstantiator(String componentClassName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java
deleted file mode 100644
index c86b6a8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentClassTransformerImpl.java
+++ /dev/null
@@ -1,254 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.NotFoundException;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.TapestryMarkers;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.model.MutableComponentModelImpl;
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.services.CtClassSource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.slf4j.Logger;
-
-/**
- * Implementation of {@link org.apache.tapestry5.internal.services.ComponentClassTransformer}.
- */
-public class ComponentClassTransformerImpl implements ComponentClassTransformer, InvalidationListener
-{
-    /**
-     * Map from class name to class transformation.
-     */
-    private final Map<String, InternalClassTransformation> nameToClassTransformation = CollectionFactory
-            .newConcurrentMap();
-
-    private final Map<String, ComponentModel> nameToComponentModel = CollectionFactory.newConcurrentMap();
-
-    private final ComponentClassTransformWorker workerChain;
-
-    private final LoggerSource loggerSource;
-
-    private final ClassFactory classFactory;
-
-    private final CtClassSource classSource;
-
-    private final ComponentClassCache componentClassCache;
-
-    private final boolean developmentMode;
-
-    private final OperationTracker tracker;
-
-    private final String[] SUBPACKAGES =
-    { "." + InternalConstants.PAGES_SUBPACKAGE + ".", "." + InternalConstants.COMPONENTS_SUBPACKAGE + ".",
-            "." + InternalConstants.MIXINS_SUBPACKAGE + ".", "." + InternalConstants.BASE_SUBPACKAGE + "." };
-
-    /**
-     * @param workerChain
-     *            the ordered list of class transform works as a chain of command instance
-     * @param classSource
-     * @param componentClassCache
-     */
-    public ComponentClassTransformerImpl(@Primary
-    ComponentClassTransformWorker workerChain,
-
-    LoggerSource loggerSource,
-
-    @ComponentLayer
-    ClassFactory classFactory,
-
-    @ComponentLayer
-    CtClassSource classSource,
-
-    ComponentClassCache componentClassCache,
-
-    @Symbol(SymbolConstants.PRODUCTION_MODE)
-    boolean productionMode,
-
-    OperationTracker tracker)
-    {
-        this.workerChain = workerChain;
-        this.loggerSource = loggerSource;
-        this.classFactory = classFactory;
-        this.componentClassCache = componentClassCache;
-        this.classSource = classSource;
-        this.developmentMode = !productionMode;
-        this.tracker = tracker;
-    }
-
-    /**
-     * Clears the cache of {@link InternalClassTransformation} instances whenever the class loader is invalidated.
-     */
-    public void objectWasInvalidated()
-    {
-        nameToClassTransformation.clear();
-        nameToComponentModel.clear();
-    }
-
-    public void transformComponentClass(final CtClass ctClass, final ClassLoader classLoader)
-    {
-        tracker.run("Transforming component class " + ctClass.getName(), new Runnable()
-        {
-            public void run()
-            {
-                String parentClassname;
-
-                // Component classes must be public
-
-                if (!Modifier.isPublic(ctClass.getModifiers()))
-                    return;
-
-                try
-                {
-                    // And have a public constructor.
-
-                    CtConstructor ctor = ctClass.getConstructor("()V");
-
-                    if (!Modifier.isPublic(ctor.getModifiers()))
-                        return;
-                }
-                catch (NotFoundException ex)
-                {
-                    return;
-                }
-
-                // Is it an inner class (does the class name contain a '$')?
-                // Inner classes are loaded by the same class loader as the component, but are
-                // not components and are not transformed.
-
-                if (ctClass.getName().contains("$"))
-                    return;
-
-                // Force the creation of the parent class.
-
-                try
-                {
-                    parentClassname = ctClass.getSuperclass().getName();
-                }
-                catch (NotFoundException ex)
-                {
-                    throw new RuntimeException(ex);
-                }
-
-                String classname = ctClass.getName();
-
-                Logger transformLogger = loggerSource.getLogger("tapestry.transformer." + classname);
-                Logger logger = loggerSource.getLogger(classname);
-
-                // If the parent class is in a controlled package, it will already have been loaded and
-                // transformed (that is driven by the ComponentInstantiatorSource).
-
-                InternalClassTransformation parentTransformation = nameToClassTransformation.get(parentClassname);
-
-                // TAPESTRY-2449: Ignore the base class that Groovy can inject
-
-                if (parentTransformation == null
-                        && !(parentClassname.equals("java.lang.Object") || parentClassname
-                                .equals("groovy.lang.GroovyObjectSupport")))
-                {
-                    String suggestedPackageName = buildSuggestedPackageName(classname);
-
-                    throw new RuntimeException(ServicesMessages.baseClassInWrongPackage(parentClassname, classname,
-                            suggestedPackageName));
-                }
-
-                // TODO: Check that the name is not already in the map. But I think that can't happen,
-                // because the classloader itself is synchronized.
-
-                Resource baseResource = new ClasspathResource(classname.replace(".", "/") + ".class");
-
-                ComponentModel parentModel = nameToComponentModel.get(parentClassname);
-
-                MutableComponentModel model = new MutableComponentModelImpl(classname, logger, baseResource,
-                        parentModel);
-
-                InternalClassTransformation transformation = parentTransformation == null ? new InternalClassTransformationImpl(
-                        classFactory, ctClass, componentClassCache, model, classSource, developmentMode)
-                        : parentTransformation.createChildTransformation(ctClass, model);
-
-                String transformerDescription = null;
-
-                try
-                {
-                    workerChain.transform(transformation, model);
-
-                    transformerDescription = transformation.finish();
-                }
-                catch (Throwable ex)
-                {
-                    throw new TransformationException(transformation, ex);
-                }
-
-                transformLogger.debug(TapestryMarkers.CLASS_TRANSFORMATION, "Finished class transformation: {}",
-                        transformerDescription);
-
-                nameToClassTransformation.put(classname, transformation);
-                nameToComponentModel.put(classname, model);
-            }
-        });
-    }
-
-    public Instantiator createInstantiator(String componentClassName)
-    {
-        InternalClassTransformation ct = nameToClassTransformation.get(componentClassName);
-
-        if (ct == null)
-            throw new RuntimeException(ServicesMessages.classNotTransformed(componentClassName));
-
-        try
-        {
-            return ct.createInstantiator();
-        }
-        catch (Throwable ex)
-        {
-            throw new TransformationException(ct, ex);
-        }
-    }
-
-    private String buildSuggestedPackageName(String className)
-    {
-        for (String subpackage : SUBPACKAGES)
-        {
-            int pos = className.indexOf(subpackage);
-
-            // Keep the leading '.' in the subpackage name and tack on "base".
-
-            if (pos > 0)
-                return className.substring(0, pos + 1) + InternalConstants.BASE_SUBPACKAGE;
-        }
-
-        // Is this even reachable? className should always be in a controlled package and so
-        // some subpackage above should have matched.
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java
deleted file mode 100644
index 71c86a4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImpl.java
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.bindings.InvariantBinding;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.BindingSource;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.FieldTranslatorSource;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.ValueEncoderSource;
-
-public class ComponentDefaultProviderImpl implements ComponentDefaultProvider
-{
-    private final PropertyAccess propertyAccess;
-
-    private final BindingSource bindingSource;
-
-    private final ValueEncoderSource valueEncoderSource;
-
-    private final FieldTranslatorSource fieldTranslatorSource;
-
-    private final FieldValidatorDefaultSource fieldValidatorDefaultSource;
-
-    static final FieldValidator NOOP_VALIDATOR = new FieldValidator()
-    {
-        public void validate(Object value) throws ValidationException
-        {
-            // Do nothing
-        }
-
-        public void render(MarkupWriter writer)
-        {
-        }
-
-        public boolean isRequired()
-        {
-            return false;
-        }
-    };
-
-    public ComponentDefaultProviderImpl(PropertyAccess propertyAccess, BindingSource bindingSource,
-                                        ValueEncoderSource valueEncoderSource,
-                                        FieldTranslatorSource fieldTranslatorSource,
-                                        FieldValidatorDefaultSource fieldValidatorDefaultSource)
-    {
-        this.propertyAccess = propertyAccess;
-        this.bindingSource = bindingSource;
-        this.valueEncoderSource = valueEncoderSource;
-        this.fieldTranslatorSource = fieldTranslatorSource;
-        this.fieldValidatorDefaultSource = fieldValidatorDefaultSource;
-    }
-
-    public String defaultLabel(ComponentResources resources)
-    {
-        assert resources != null;
-        String componentId = resources.getId();
-        String key = componentId + "-label";
-
-        Messages containerMessages = resources.getContainerResources().getMessages();
-
-        if (containerMessages.contains(key)) return containerMessages.get(key);
-
-        return TapestryInternalUtils.toUserPresentable(componentId);
-    }
-
-    public Binding defaultBinding(String parameterName, ComponentResources resources)
-    {
-        assert InternalUtils.isNonBlank(parameterName);
-        assert resources != null;
-        String componentId = resources.getId();
-
-        Component container = resources.getContainer();
-
-        // Only provide a default binding if the container actually contains the property.
-        // This sets up an error condition for when the parameter is not bound, and
-        // the binding can't be deduced.
-
-        if (propertyAccess.getAdapter(container).getPropertyAdapter(componentId) == null)
-            return null;
-
-        ComponentResources containerResources = resources.getContainerResources();
-
-        return bindingSource.newBinding(
-                "default " + parameterName,
-                containerResources,
-                BindingConstants.PROP,
-                componentId);
-    }
-
-    @SuppressWarnings({ "unchecked" })
-    public ValueEncoder defaultValueEncoder(String parameterName, ComponentResources resources)
-    {
-        assert InternalUtils.isNonBlank(parameterName);
-        assert resources != null;
-        Class parameterType = resources.getBoundType(parameterName);
-
-        if (parameterType == null) return null;
-
-        return valueEncoderSource.getValueEncoder(parameterType);
-    }
-
-    public FieldTranslator defaultTranslator(String parameterName, ComponentResources resources)
-    {
-        return fieldTranslatorSource.createDefaultTranslator(resources, parameterName);
-    }
-
-    public Binding defaultTranslatorBinding(final String parameterName, final ComponentResources resources)
-    {
-        String description = String.format("default translator, parameter %s of %s",
-                                           parameterName, resources.getCompleteId());
-
-        return new InvariantBinding(resources.getLocation(), FieldTranslator.class, description)
-        {
-            public Object get()
-            {
-                return defaultTranslator(parameterName, resources);
-            }
-        };
-    }
-
-    public FieldValidator defaultValidator(String parameterName, ComponentResources resources)
-    {
-        FieldValidator result = fieldValidatorDefaultSource.createDefaultValidator(resources, parameterName);
-
-        return result == null ? NOOP_VALIDATOR : result;
-    }
-
-    public Binding defaultValidatorBinding(final String parameterName, final ComponentResources resources)
-    {
-        String description = String.format("default validator, parameter %s of %s", parameterName,
-                                           resources.getCompleteId());
-
-        return new InvariantBinding(resources.getLocation(), FieldValidator.class, description)
-        {
-            public Object get()
-            {
-                return defaultValidator(parameterName, resources);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
deleted file mode 100644
index ef16591..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventDispatcher.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-/**
- * Processes component action events sent as requests from the client. Component events include an event type, identify
- * a page and a component, and may provide additional context strings.
- *
- * @see org.apache.tapestry5.services.ComponentEventLinkEncoder
- */
-public class ComponentEventDispatcher implements Dispatcher
-{
-    private final ComponentRequestHandler componentRequestHandler;
-
-    private final ComponentEventLinkEncoder linkEncoder;
-
-    public ComponentEventDispatcher(ComponentRequestHandler componentRequestHandler,
-                                    ComponentEventLinkEncoder linkEncoder)
-    {
-        this.componentRequestHandler = componentRequestHandler;
-        this.linkEncoder = linkEncoder;
-    }
-
-    public boolean dispatch(Request request, Response response) throws IOException
-    {
-        ComponentEventRequestParameters parameters = linkEncoder.decodeComponentEventRequest(request);
-
-        if (parameters == null) return false;
-
-        componentRequestHandler.handleComponentEvent(parameters);
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
deleted file mode 100644
index bbbffec..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventImpl.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.slf4j.Logger;
-
-public class ComponentEventImpl extends EventImpl implements ComponentEvent
-{
-    private final String eventType;
-
-    private final String originatingComponentId;
-
-    private final EventContext context;
-
-    private final ComponentPageElementResources elementResources;
-
-    /**
-     * @param eventType
-     *            non blank string used to identify the type of event that was triggered
-     * @param originatingComponentId
-     *            the id of the component that triggered the event
-     * @param context
-     *            provides access to parameter values
-     * @param handler
-     *            invoked when a non-null return value is obtained from an event handler method
-     * @param elementResources
-     *            provides access to common resources and services
-     * @param logger
-     *            used to log method invocations
-     */
-    public ComponentEventImpl(String eventType, String originatingComponentId, EventContext context,
-            ComponentEventCallback handler, ComponentPageElementResources elementResources, Logger logger)
-    {
-        super(handler, logger);
-
-        this.eventType = eventType;
-        this.originatingComponentId = originatingComponentId;
-        this.elementResources = elementResources;
-        this.context = context;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ComponentEvent[%s from %s]", eventType, originatingComponentId.length() == 0 ? "(self)"
-                : originatingComponentId);
-    }
-
-    public boolean matches(String eventType, String componentId, int parameterCount)
-    {
-        if (isAborted())
-            return false;
-
-        return this.eventType.equalsIgnoreCase(eventType) && context.getCount() >= parameterCount
-                && (originatingComponentId.equalsIgnoreCase(componentId) || componentId.equals(""));
-    }
-
-    @SuppressWarnings("unchecked")
-    public Object coerceContext(int index, String desiredTypeName)
-    {
-        if (index >= context.getCount())
-            throw new IllegalArgumentException(ServicesMessages.contextIndexOutOfRange(getMethodDescription()));
-        try
-        {
-            Class desiredType = elementResources.toClass(desiredTypeName);
-
-            return context.get(desiredType, index);
-        }
-        catch (Exception ex)
-        {
-            throw new IllegalArgumentException(ServicesMessages.exceptionInMethodParameter(getMethodDescription(),
-                    index, ex), ex);
-        }
-    }
-
-    public Object[] getContext()
-    {
-        int count = context.getCount();
-
-        Object[] result = new Object[count];
-
-        for (int i = 0; i < count; i++)
-            result[i] = context.get(Object.class, i);
-
-        return result;
-    }
-
-    public EventContext getEventContext()
-    {
-        return context;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
deleted file mode 100644
index aacefc0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImpl.java
+++ /dev/null
@@ -1,349 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.*;
-
-public class ComponentEventLinkEncoderImpl implements ComponentEventLinkEncoder
-{
-    private final ComponentClassResolver componentClassResolver;
-
-    private final ContextPathEncoder contextPathEncoder;
-
-    private final LocalizationSetter localizationSetter;
-
-    private final Request request;
-
-    private final Response response;
-
-    private final RequestSecurityManager requestSecurityManager;
-
-    private final BaseURLSource baseURLSource;
-
-    private final PersistentLocale persistentLocale;
-
-    private final boolean encodeLocaleIntoPath;
-
-    private static final int BUFFER_SIZE = 100;
-
-    private static final char SLASH = '/';
-
-    // A beast that recognizes all the elements of a path in a single go.
-    // We skip the leading slash, then take the next few terms (until a dot or a colon)
-    // as the page name. Then there's a sequence that sees a dot
-    // and recognizes the nested component id (which may be missing), which ends
-    // at the colon, or at the slash (or the end of the string). The colon identifies
-    // the event name (the event name is also optional). A valid path will always have
-    // a nested component id or an event name (or both) ... when both are missing, then the
-    // path is most likely a page render request. After the optional event name,
-    // the next piece is the action context, which is the remainder of the path.
-
-    private final Pattern PATH_PATTERN = Pattern.compile(
-
-    "^/" + // The leading slash is recognized but skipped
-            "(((\\w+)/)*(\\w+))" + // A series of folder names leading up to the page name, forming
-            // the logical page name
-            "(\\.(\\w+(\\.\\w+)*))?" + // The first dot separates the page name from the nested
-            // component id
-            "(\\:(\\w+))?" + // A colon, then the event type
-            "(/(.*))?", // A slash, then the action context
-            Pattern.COMMENTS);
-
-    // Constants for the match groups in the above pattern.
-    private static final int LOGICAL_PAGE_NAME = 1;
-    private static final int NESTED_ID = 6;
-    private static final int EVENT_NAME = 9;
-    private static final int CONTEXT = 11;
-
-    public ComponentEventLinkEncoderImpl(ComponentClassResolver componentClassResolver,
-            ContextPathEncoder contextPathEncoder, LocalizationSetter localizationSetter, Request request,
-            Response response, RequestSecurityManager requestSecurityManager, BaseURLSource baseURLSource,
-            PersistentLocale persistentLocale, @Symbol(SymbolConstants.ENCODE_LOCALE_INTO_PATH)
-            boolean encodeLocaleIntoPath)
-    {
-        this.componentClassResolver = componentClassResolver;
-        this.contextPathEncoder = contextPathEncoder;
-        this.localizationSetter = localizationSetter;
-        this.request = request;
-        this.response = response;
-        this.requestSecurityManager = requestSecurityManager;
-        this.baseURLSource = baseURLSource;
-        this.persistentLocale = persistentLocale;
-        this.encodeLocaleIntoPath = encodeLocaleIntoPath;
-    }
-
-    public Link createPageRenderLink(PageRenderRequestParameters parameters)
-    {
-        StringBuilder builder = new StringBuilder(BUFFER_SIZE);
-
-        // Build up the absolute URI.
-
-        String activePageName = parameters.getLogicalPageName();
-
-        builder.append(request.getContextPath());
-
-        encodeLocale(builder);
-
-        builder.append(SLASH);
-
-        String encodedPageName = encodePageName(activePageName);
-
-        builder.append(encodedPageName);
-
-        appendContext(encodedPageName.length() > 0, parameters.getActivationContext(), builder);
-
-        Link link = new LinkImpl(builder.toString(), false, requestSecurityManager.checkPageSecurity(activePageName),
-                response, contextPathEncoder, baseURLSource);
-
-        if (parameters.isLoopback())
-            link.addParameter(TapestryConstants.PAGE_LOOPBACK_PARAMETER_NAME, "t");
-
-        return link;
-    }
-
-    private String encodePageName(String pageName)
-    {
-        if (pageName.equalsIgnoreCase("index"))
-            return "";
-
-        String encoded = pageName.toLowerCase();
-
-        if (!encoded.endsWith("/index"))
-            return encoded;
-
-        return encoded.substring(0, encoded.length() - 6);
-    }
-
-    private void encodeLocale(StringBuilder builder)
-    {
-        if (encodeLocaleIntoPath)
-        {
-            Locale locale = persistentLocale.get();
-
-            if (locale != null)
-            {
-                builder.append(SLASH);
-                builder.append(locale.toString());
-            }
-        }
-    }
-
-    public Link createComponentEventLink(ComponentEventRequestParameters parameters, boolean forForm)
-    {
-        StringBuilder builder = new StringBuilder(BUFFER_SIZE);
-
-        // Build up the absolute URI.
-
-        String activePageName = parameters.getActivePageName();
-        String containingPageName = parameters.getContainingPageName();
-        String eventType = parameters.getEventType();
-
-        String nestedComponentId = parameters.getNestedComponentId();
-        boolean hasComponentId = InternalUtils.isNonBlank(nestedComponentId);
-
-        builder.append(request.getContextPath());
-
-        encodeLocale(builder);
-
-        builder.append(SLASH);
-        builder.append(activePageName.toLowerCase());
-
-        if (hasComponentId)
-        {
-            builder.append('.');
-            builder.append(nestedComponentId);
-        }
-
-        if (!hasComponentId || !eventType.equals(EventConstants.ACTION))
-        {
-            builder.append(":");
-            builder.append(encodePageName(eventType));
-        }
-
-        appendContext(true, parameters.getEventContext(), builder);
-
-        Link result = new LinkImpl(builder.toString(), forForm,
-                requestSecurityManager.checkPageSecurity(activePageName), response, contextPathEncoder, baseURLSource);
-
-        EventContext pageActivationContext = parameters.getPageActivationContext();
-
-        if (pageActivationContext.getCount() != 0)
-        {
-            // Reuse the builder
-            builder.setLength(0);
-            appendContext(true, pageActivationContext, builder);
-
-            // Omit that first slash
-            result.addParameter(InternalConstants.PAGE_CONTEXT_NAME, builder.substring(1));
-        }
-
-        // TAPESTRY-2044: Sometimes the active page drags in components from another page and we
-        // need to differentiate that.
-
-        if (!containingPageName.equalsIgnoreCase(activePageName))
-            result.addParameter(InternalConstants.CONTAINER_PAGE_NAME, encodePageName(containingPageName));
-
-        return result;
-    }
-
-    public ComponentEventRequestParameters decodeComponentEventRequest(Request request)
-    {
-        Matcher matcher = PATH_PATTERN.matcher(request.getPath());
-
-        if (!matcher.matches())
-            return null;
-
-        String nestedComponentId = matcher.group(NESTED_ID);
-
-        String eventType = matcher.group(EVENT_NAME);
-
-        if (nestedComponentId == null && eventType == null)
-            return null;
-
-        String activePageName = matcher.group(LOGICAL_PAGE_NAME);
-
-        int slashx = activePageName.indexOf('/');
-
-        String possibleLocaleName = slashx > 0 ? activePageName.substring(0, slashx) : "";
-
-        if (localizationSetter.setLocaleFromLocaleName(possibleLocaleName))
-            activePageName = activePageName.substring(slashx + 1);
-
-        if (!componentClassResolver.isPageName(activePageName))
-            return null;
-
-        activePageName = componentClassResolver.canonicalizePageName(activePageName);
-
-        EventContext eventContext = contextPathEncoder.decodePath(matcher.group(CONTEXT));
-
-        EventContext activationContext = contextPathEncoder.decodePath(request
-                .getParameter(InternalConstants.PAGE_CONTEXT_NAME));
-
-        // The event type is often omitted, and defaults to "action".
-
-        if (eventType == null)
-            eventType = EventConstants.ACTION;
-
-        if (nestedComponentId == null)
-            nestedComponentId = "";
-
-        String containingPageName = request.getParameter(InternalConstants.CONTAINER_PAGE_NAME);
-
-        if (containingPageName == null)
-            containingPageName = activePageName;
-        else
-            containingPageName = componentClassResolver.canonicalizePageName(containingPageName);
-
-        return new ComponentEventRequestParameters(activePageName, containingPageName, nestedComponentId, eventType,
-                activationContext, eventContext);
-    }
-
-    public PageRenderRequestParameters decodePageRenderRequest(Request request)
-    {
-        // The extended name may include a page activation context. The trick is
-        // to figure out where the logical page name stops and where the
-        // activation context begins. Further, strip out the leading slash.
-
-        String path = request.getPath();
-
-        // TAPESTRY-1343: Sometimes path is the empty string (it should always be at least a slash,
-        // but Tomcat may return the empty string for a root context request).
-
-        String extendedName = path.length() == 0 ? path : path.substring(1);
-
-        // Ignore trailing slashes in the path.
-        while (extendedName.endsWith("/"))
-            extendedName = extendedName.substring(0, extendedName.length() - 1);
-
-        int slashx = extendedName.indexOf('/');
-
-        // So, what can we have left?
-        // 1. A page name
-        // 2. A locale followed by a page name
-        // 3. A page name followed by activation context
-        // 4. A locale name, page name, activation context
-        // 5. Just activation context (for root Index page)
-        // 6. A locale name followed by activation context
-
-        String possibleLocaleName = slashx > 0 ? extendedName.substring(0, slashx) : extendedName;
-
-        if (localizationSetter.setLocaleFromLocaleName(possibleLocaleName))
-        {
-            extendedName = slashx > 0 ? extendedName.substring(slashx + 1) : "";
-        }
-
-        slashx = extendedName.length();
-        boolean atEnd = true;
-
-        while (slashx > 0)
-        {
-            String pageName = extendedName.substring(0, slashx);
-            String pageActivationContext = atEnd ? "" : extendedName.substring(slashx + 1);
-
-            PageRenderRequestParameters parameters = checkIfPage(request, pageName, pageActivationContext);
-
-            if (parameters != null)
-                return parameters;
-
-            // Work backwards, splitting at the next slash.
-            slashx = extendedName.lastIndexOf('/', slashx - 1);
-
-            atEnd = false;
-        }
-
-        // OK, maybe its all page activation context for the root Index page.
-
-        return checkIfPage(request, "", extendedName);
-    }
-
-    private PageRenderRequestParameters checkIfPage(Request request, String pageName, String pageActivationContext)
-    {
-        if (!componentClassResolver.isPageName(pageName))
-            return null;
-
-        EventContext activationContext = contextPathEncoder.decodePath(pageActivationContext);
-
-        String canonicalized = componentClassResolver.canonicalizePageName(pageName);
-
-        boolean loopback = request.getParameter(TapestryConstants.PAGE_LOOPBACK_PARAMETER_NAME) != null;
-
-        return new PageRenderRequestParameters(canonicalized, activationContext, loopback);
-    }
-
-    public void appendContext(boolean seperatorRequired, EventContext context, StringBuilder builder)
-    {
-        String encoded = contextPathEncoder.encodeIntoPath(context);
-
-        if (encoded.length() > 0)
-        {
-            if (seperatorRequired)
-                builder.append(SLASH);
-
-            builder.append(encoded);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
deleted file mode 100644
index a5f6453..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentEventRequestHandlerImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.TrackableComponentEventCallback;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.ComponentEventRequestHandler;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.Traditional;
-
-@SuppressWarnings("unchecked")
-public class ComponentEventRequestHandlerImpl implements ComponentEventRequestHandler
-{
-    private final ComponentEventResultProcessor resultProcessor;
-
-    private final RequestPageCache cache;
-
-    private final Response response;
-
-    private final PageActivator pageActivator;
-
-    private final ActionRenderResponseGenerator generator;
-
-    private final Environment environment;
-
-    public ComponentEventRequestHandlerImpl(@Traditional
-    @Primary
-    ComponentEventResultProcessor resultProcessor,
-
-    RequestPageCache cache, Response response,
-
-    PageActivator pageActivator,
-
-    ActionRenderResponseGenerator generator, Environment environment)
-    {
-        this.resultProcessor = resultProcessor;
-        this.cache = cache;
-        this.response = response;
-        this.pageActivator = pageActivator;
-        this.generator = generator;
-        this.environment = environment;
-    }
-
-    public void handle(ComponentEventRequestParameters parameters) throws IOException
-    {
-        Page activePage = cache.get(parameters.getActivePageName());
-
-        if (pageActivator.activatePage(activePage.getRootElement().getComponentResources(), parameters
-                .getPageActivationContext(), resultProcessor))
-            return;
-
-        Page containerPage = cache.get(parameters.getContainingPageName());
-
-        TrackableComponentEventCallback callback = new ComponentResultProcessorWrapper(resultProcessor);
-
-        environment.push(ComponentEventResultProcessor.class, resultProcessor);
-        environment.push(TrackableComponentEventCallback.class, callback);
-
-        ComponentPageElement element = containerPage.getComponentElementByNestedId(parameters.getNestedComponentId());
-
-        boolean handled = element
-                .triggerContextEvent(parameters.getEventType(), parameters.getEventContext(), callback);
-
-        if (!handled)
-            throw new TapestryException(ServicesMessages.eventNotHandled(element, parameters.getEventType()), element,
-                    null);
-
-        environment.pop(TrackableComponentEventCallback.class);
-        environment.pop(ComponentEventResultProcessor.class);
-
-        if (callback.isAborted())
-        {
-            callback.rethrow();
-            return;
-        }
-
-        if (!response.isCommitted())
-            generator.generateResponse(activePage);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java
deleted file mode 100644
index c443ee2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceProcessor.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.annotation.*;
-
-/**
- * Marker for {@link org.apache.tapestry5.services.ComponentEventResultProcessor} to identify the particular
- * implementation used for handling {@link org.apache.tapestry5.runtime.Component} instances (i.e., pages).
- */
-@Target({ElementType.PARAMETER, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface ComponentInstanceProcessor
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java
deleted file mode 100644
index a303891..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessor.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.Traditional;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-
-@Marker({Traditional.class, ComponentInstanceProcessor.class})
-public class ComponentInstanceResultProcessor implements ComponentEventResultProcessor<Component>
-{
-    private final RequestPageCache requestPageCache;
-
-    private final Logger logger;
-
-    private final ActionRenderResponseGenerator generator;
-
-    public ComponentInstanceResultProcessor(Logger logger, RequestPageCache requestPageCache,
-                                            ActionRenderResponseGenerator generator)
-    {
-        this.requestPageCache = requestPageCache;
-        this.logger = logger;
-        this.generator = generator;
-    }
-
-    public void processResultValue(Component value) throws IOException
-    {
-        ComponentResources resources = value.getComponentResources();
-
-        if (resources.getContainer() != null)
-            logger.warn(ServicesMessages.componentInstanceIsNotAPage(value));
-
-        // We have all these layers and layers between us and the page instance, but its easy to
-        // extract the page class name and quickly re-resolve that to the page instance.
-
-        Page page = requestPageCache.get(resources.getPageName());
-
-        generator.generateResponse(page);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java
deleted file mode 100644
index d37783e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSource.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.services.CtClassSource;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.services.InvalidationEventHub;
-
-/**
- * Creates {@link org.apache.tapestry5.internal.services.Instantiator}s for components, based on component class name.
- * This will involve transforming the component's class before it is loaded.
- * <p/>
- * In addition, a source acts as an event hub for {@link org.apache.tapestry5.services.InvalidationListener}s, so that
- * any information derived from loaded classes can be discarded and rebuilt when classes change.
- * <p/>
- * The strategy used is that when <em>any</em> class (in a controlled package) changes, the entire class loader is
- * discarded, along with any instances derived from those classes. A new class loader is created, and then invalidation
- * events are fired to listeners.
- */
-public interface ComponentInstantiatorSource
-{
-
-    /**
-     * Given the name of a component class, provides an instantiator for that component. Instantiators are cached, so
-     * repeated calls to this method with the same class name will return the same instance; however, callers should
-     * also be aware that the instantiators may lose validity after an invalidation (caused by changes to external Java
-     * class files).
-     *
-     * @param classname FQCN to find (and perhaps transform and load)
-     * @return an object which can instantiate an instance of the component
-     */
-    Instantiator getInstantiator(String classname);
-
-    /**
-     * Adds a controlled package. Only classes within controlled packages are subject to transformation.
-     *
-     * @param packageName the package name to add (must not be blank)
-     */
-    void addPackage(String packageName);
-
-    /**
-     * Checks to see if a fully qualfied class name exists. This method appears to exist only for testing.
-     *
-     * @param className name of class to check
-     * @return true if the class exists (there's a ".class" file), false otherwise
-     */
-    boolean exists(String className);
-
-    /**
-     * Returns a class factory that can be used to generate additional classes around enhanced classes, or create
-     * subclasses of enhanced classes.
-     */
-    ClassFactory getClassFactory();
-
-    /**
-     * Returns a class source used when creating new classes dynamically.
-     */
-    CtClassSource getClassSource();
-
-    /**
-     * Invalidation event hub used to notify listeners that component classes have changed.
-     *
-     * @see org.apache.tapestry5.services.ComponentClasses
-     * @since 5.1.0.0
-     */
-    InvalidationEventHub getInvalidationEventHub();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
deleted file mode 100644
index e78847d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImpl.java
+++ /dev/null
@@ -1,371 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Map;
-import java.util.Set;
-
-import javassist.CannotCompileException;
-import javassist.ClassPath;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.Loader;
-import javassist.LoaderClassPath;
-import javassist.NotFoundException;
-import javassist.Translator;
-
-import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryClassPool;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.internal.services.CtClassSource;
-import org.apache.tapestry5.ioc.internal.services.CtClassSourceImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.UpdateListener;
-import org.slf4j.Logger;
-
-/**
- * A wrapper around a Javassist class loader that allows certain classes to be modified as they are loaded.
- */
-public final class ComponentInstantiatorSourceImpl extends InvalidationEventHubImpl implements Translator,
-        ComponentInstantiatorSource, UpdateListener
-{
-    /**
-     * Add -Djavassist-write-dir=target/transformed-classes to the command line to force output of transformed classes
-     * to disk (for hardcore debugging).
-     */
-    private static final String JAVASSIST_WRITE_DIR = System.getProperty("javassist-write-dir");
-
-    private final Set<String> controlledPackageNames = CollectionFactory.newSet();
-
-    private final URLChangeTracker changeTracker;
-
-    private final ClassLoader parent;
-
-    private final InternalRequestGlobals internalRequestGlobals;
-
-    private Loader loader;
-
-    private final ComponentClassTransformer transformer;
-
-    private final Logger logger;
-
-    private ClassFactory classFactory;
-
-    /**
-     * Map from class name to Instantiator.
-     */
-    private final Map<String, Instantiator> classNameToInstantiator = CollectionFactory.newMap();
-
-    private final Map<String, RuntimeException> classToPriorTransformException = CollectionFactory.newMap();
-
-    private CtClassSource classSource;
-
-    private class PackageAwareLoader extends Loader
-    {
-        public PackageAwareLoader(ClassLoader parent, ClassPool classPool)
-        {
-            super(parent, classPool);
-        }
-
-        /**
-         * Determines if the class name represents a component class from a controlled package. If so,
-         * super.findClass() will load it and transform it. Returns null if not in a controlled package, allowing the
-         * parent class loader to do the work.
-         * 
-         * @param className
-         * @return the loaded transformed Class, or null to force a load of the class from the parent class loader
-         * @throws ClassNotFoundException
-         */
-        @Override
-        protected Class findClass(String className) throws ClassNotFoundException
-        {
-            if (inControlledPackage(className)) { return super.findClass(className); }
-
-            // Returning null forces delegation to the parent class loader.
-
-            return null;
-        }
-    }
-
-    public ComponentInstantiatorSourceImpl(Logger logger, ClassLoader parent, ComponentClassTransformer transformer,
-            InternalRequestGlobals internalRequestGlobals, ClasspathURLConverter classpathURLConverter)
-    {
-        this.parent = parent;
-        this.transformer = transformer;
-        this.logger = logger;
-        this.internalRequestGlobals = internalRequestGlobals;
-        this.changeTracker = new URLChangeTracker(classpathURLConverter);
-
-        initializeService();
-    }
-
-    public synchronized void checkForUpdates()
-    {
-        if (!changeTracker.containsChanges())
-            return;
-
-        changeTracker.clear();
-        classNameToInstantiator.clear();
-
-        // Release the existing class pool, loader and so forth.
-        // Create a new one.
-
-        initializeService();
-
-        // Tell everyone that the world has changed and they should discard
-        // their cache.
-
-        fireInvalidationEvent();
-    }
-
-    /**
-     * Invoked at object creation, or when there are updates to class files (i.e., invalidation), to create a new set of
-     * Javassist class pools and loaders.
-     */
-    private void initializeService()
-    {
-        ClassFactoryClassPool classPool = new ClassFactoryClassPool(parent);
-
-        // For TAPESTRY-2561, we're introducing a class loader between the parent (i.e., the
-        // context class loader), and the component class loader, to try and prevent the deadlocks
-        // that we've been seeing.
-
-        ClassLoader threadDeadlockBuffer = new URLClassLoader(new URL[0], parent);
-
-        loader = new PackageAwareLoader(threadDeadlockBuffer, classPool);
-
-        ClassPath path = new LoaderClassPath(loader);
-
-        classPool.appendClassPath(path);
-
-        classSource = new CtClassSourceImpl(classPool, loader);
-
-        try
-        {
-            loader.addTranslator(classPool, this);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        classFactory = new ClassFactoryImpl(loader, classPool, classSource, logger);
-
-        classToPriorTransformException.clear();
-    }
-
-    // This is called from well within a synchronized block.
-    public void onLoad(ClassPool pool, String classname) throws NotFoundException, CannotCompileException
-    {
-        logger.debug("BEGIN onLoad " + classname);
-
-        // This is our chance to make changes to the CtClass before it is loaded into memory.
-
-        String diag = "FAIL";
-
-        // TAPESTRY-2517: Attempting to re-transform a class that was partially transformed (but
-        // then failed) gives confusing exceptions if the user refreshes the failed page.
-        // Just give the same exception back.
-
-        RuntimeException failure = classToPriorTransformException.get(classname);
-
-        if (failure == null)
-        {
-            // If we are loading a class, it is because it is in a controlled package. There may be
-            // errors in the class that keep it from loading. By adding it to the change tracker
-            // early, we ensure that when the class is fixed, the change is picked up. Originally,
-            // this code was at the end of the method, and classes that contained errors would not be
-            // reloaded even after the code was fixed.
-
-            addClassFileToChangeTracker(classname);
-
-            try
-            {
-                CtClass ctClass = pool.get(classname);
-
-                // Force the creation of the super-class before the target class.
-
-                forceSuperclassTransform(ctClass);
-
-                // Do the transformations here
-
-                transformer.transformComponentClass(ctClass, loader);
-
-                writeClassToFileSystemForHardCoreDebuggingPurposesOnly(ctClass);
-
-                diag = "END";
-            }
-            catch (RuntimeException classLoaderException)
-            {
-                internalRequestGlobals.storeClassLoaderException(classLoaderException);
-
-                failure = classLoaderException;
-
-                classToPriorTransformException.put(classname, failure);
-            }
-        }
-
-        logger.debug(String.format("%5s onLoad %s", diag, classname));
-
-        if (failure != null)
-            throw failure;
-    }
-
-    private void writeClassToFileSystemForHardCoreDebuggingPurposesOnly(CtClass ctClass)
-    {
-        if (JAVASSIST_WRITE_DIR == null)
-            return;
-
-        try
-        {
-            boolean p = ctClass.stopPruning(true);
-            ctClass.writeFile(JAVASSIST_WRITE_DIR);
-            ctClass.defrost();
-            ctClass.stopPruning(p);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private void addClassFileToChangeTracker(String classname)
-    {
-        String path = ClassFabUtils.getPathForClassNamed(classname);
-
-        URL url = loader.getResource(path);
-
-        changeTracker.add(url);
-    }
-
-    private void forceSuperclassTransform(CtClass ctClass) throws NotFoundException
-    {
-        CtClass superClass = ctClass.getSuperclass();
-
-        findClass(superClass.getName());
-    }
-
-    /**
-     * Does nothing.
-     */
-    public void start(ClassPool pool) throws NotFoundException, CannotCompileException
-    {
-    }
-
-    public synchronized Instantiator getInstantiator(String className)
-    {
-        Instantiator result = classNameToInstantiator.get(className);
-
-        // Note: a race condition here can result in the temporary creation of a duplicate instantiator.
-
-        if (result == null)
-        {
-            // Force the creation of the class (and the transformation of the class).
-
-            findClass(className);
-
-            // Note: this is really a create, and in fact, will create a new Class instance
-            // (it doesn't cache internally). This code is the only cache, which is why
-            // the method is synchronized. We could use a ConcurrentBarrier, but I suspect
-            // that the overhead of that is greater on a typical invocation than
-            // the cost of the synchronization and the Map lookup.
-
-            result = transformer.createInstantiator(className);
-
-            classNameToInstantiator.put(className, result);
-        }
-
-        return result;
-    }
-
-    private Class findClass(String classname)
-    {
-        try
-        {
-            return loader.loadClass(classname);
-        }
-        catch (ClassNotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    /**
-     * Returns true if the package for the class name is in a package that is controlled by the enhancer. Controlled
-     * packages are identified by {@link #addPackage(String)}.
-     */
-
-    boolean inControlledPackage(String classname)
-    {
-        String packageName = stripTail(classname);
-
-        while (packageName != null)
-        {
-            if (controlledPackageNames.contains(packageName))
-                return true;
-
-            packageName = stripTail(packageName);
-        }
-
-        return false;
-    }
-
-    private String stripTail(String input)
-    {
-        int lastdot = input.lastIndexOf('.');
-
-        if (lastdot < 0)
-            return null;
-
-        return input.substring(0, lastdot);
-    }
-
-    // synchronized may be overkill, but that's ok.
-    public synchronized void addPackage(String packageName)
-    {
-        assert InternalUtils.isNonBlank(packageName);
-        controlledPackageNames.add(packageName);
-    }
-
-    public boolean exists(String className)
-    {
-        String path = className.replace(".", "/") + ".class";
-
-        return parent.getResource(path) != null;
-    }
-
-    public ClassFactory getClassFactory()
-    {
-        return classFactory;
-    }
-
-    public CtClassSource getClassSource()
-    {
-        return classSource;
-    }
-
-    public InvalidationEventHub getInvalidationEventHub()
-    {
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java
deleted file mode 100644
index e5a58d7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImpl.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.func.Worker;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.UpdateListener;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import org.apache.tapestry5.services.messages.PropertiesFileParser;
-
-public class ComponentMessagesSourceImpl implements ComponentMessagesSource, UpdateListener
-{
-    private final MessagesSource messagesSource;
-
-    private final MessagesBundle appCatalogBundle;
-
-    private class ComponentModelBundle implements MessagesBundle
-    {
-        private final ComponentModel model;
-
-        public ComponentModelBundle(ComponentModel model)
-        {
-            this.model = model;
-        }
-
-        public Resource getBaseResource()
-        {
-            return model.getBaseResource();
-        }
-
-        public Object getId()
-        {
-            return model.getComponentClassName();
-        }
-
-        public MessagesBundle getParent()
-        {
-            ComponentModel parentModel = model.getParentModel();
-
-            if (parentModel == null)
-                return appCatalogBundle;
-
-            return new ComponentModelBundle(parentModel);
-        }
-    }
-
-    public ComponentMessagesSourceImpl(List<Resource> appCatalogResources, PropertiesFileParser parser,
-            ClasspathURLConverter classpathURLConverter)
-    {
-        this(appCatalogResources, parser, new URLChangeTracker(classpathURLConverter));
-    }
-
-    ComponentMessagesSourceImpl(Resource appCatalogResource, PropertiesFileParser parser, URLChangeTracker tracker)
-    {
-        this(Arrays.asList(appCatalogResource), parser, tracker);
-    }
-
-    ComponentMessagesSourceImpl(List<Resource> appCatalogResources, PropertiesFileParser parser,
-            URLChangeTracker tracker)
-    {
-        messagesSource = new MessagesSourceImpl(tracker, parser);
-
-        appCatalogBundle = createAppCatalogBundle(appCatalogResources);
-    }
-
-    public void checkForUpdates()
-    {
-        messagesSource.checkForUpdates();
-    }
-
-    public Messages getMessages(ComponentModel componentModel, Locale locale)
-    {
-        MessagesBundle bundle = new ComponentModelBundle(componentModel);
-
-        return messagesSource.getMessages(bundle, locale);
-    }
-
-    public Messages getApplicationCatalog(Locale locale)
-    {
-        return messagesSource.getMessages(appCatalogBundle, locale);
-    }
-
-    private MessagesBundle createAppCatalogBundle(List<Resource> resources)
-    {
-        MessagesBundle current = null;
-
-        for (Resource r : resources)
-        {
-            current = createMessagesBundle(r, current);
-        }
-
-        return current;
-    }
-
-    private MessagesBundle createMessagesBundle(final Resource resource, final MessagesBundle parent)
-    {
-        return new MessagesBundle()
-        {
-            public Resource getBaseResource()
-            {
-                return resource;
-            }
-
-            public Object getId()
-            {
-                return resource.getPath();
-            }
-
-            public MessagesBundle getParent()
-            {
-                return parent;
-            }
-        };
-    }
-
-    public InvalidationEventHub getInvalidationEventHub()
-    {
-        return messagesSource;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMethodInvocationBuilder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMethodInvocationBuilder.java
deleted file mode 100644
index 9eb3add..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMethodInvocationBuilder.java
+++ /dev/null
@@ -1,325 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.reflect.Modifier;
-import java.util.concurrent.atomic.AtomicLong;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtField;
-import javassist.CtMethod;
-
-import org.apache.tapestry5.ioc.internal.services.CtClassSource;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-/**
- * Used by {@link org.apache.tapestry5.internal.services.InternalClassTransformationImpl} to manage adding method
- * invocation advice to arbitrary component methods.
- * 
- * @see org.apache.tapestry5.ioc.MethodAdvice
- */
-class ComponentMethodInvocationBuilder
-{
-    private static final String FIELD_NAME = "_p";
-
-    private static final int PROTECTED_FINAL = Modifier.PROTECTED | Modifier.FINAL;
-
-    private static final int PUBLIC_FINAL = Modifier.PUBLIC | Modifier.FINAL;
-
-    private final InternalClassTransformation transformation;
-
-    private final CtClassSource classSource;
-
-    private final TransformMethodSignature advisedMethod;
-
-    private final ComponentMethodInvocationInfo info;
-
-    private final CtClass invocationCtClass;
-
-    private final String invocationClassName;
-
-    private static final AtomicLong UID_GENERATOR = new AtomicLong(System.currentTimeMillis());
-
-    private static String nextUID()
-    {
-        return Long.toHexString(UID_GENERATOR.getAndIncrement());
-    }
-
-    public ComponentMethodInvocationBuilder(InternalClassTransformation transformation,
-            ComponentClassCache componentClassCache, TransformMethodSignature advisedMethod,
-            CtClassSource classSource)
-    {
-        this.transformation = transformation;
-        this.advisedMethod = advisedMethod;
-        this.classSource = classSource;
-
-        info = new ComponentMethodInvocationInfo(advisedMethod, componentClassCache);
-
-        invocationClassName = this.transformation.getClassName() + "$"
-                + this.advisedMethod.getMethodName() + "$invocation_" + nextUID();
-
-        invocationCtClass = this.classSource.newClass(invocationClassName,
-                AbstractComponentMethodInvocation.class);
-    }
-
-    public void addAdvice(ComponentMethodAdvice advice)
-    {
-        info.addAdvice(advice);
-    }
-
-    /**
-     * Commit the changes, creating the new class for the invocation, and renaming and rewriting the advised method.
-     */
-    public void commit()
-    {
-        // The class name is the component class name plus the method name plus a unique uid. This places
-        // the invocation in the same package as the component class; the original method will ultimately
-        // be renamed and modified to be package private.
-
-        try
-        {
-            createConstructor();
-
-            implementOverride();
-
-            implementGetParameter();
-
-            String renamed = copyAdvisedMethod();
-
-            implementInvokeAdvisedMethod(renamed);
-
-            classSource.createClass(invocationCtClass);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        rebuildOriginalMethod();
-    }
-
-    private void rebuildOriginalMethod()
-    {
-        String methodInfoField = transformation.addInjectedField(
-                ComponentMethodInvocationInfo.class, advisedMethod.getMethodName() + "$info", info);
-
-        String componentResourcesField = transformation.getResourcesFieldName();
-
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        builder.addln("%s invocation = new %<s(%s, $0, $$);", invocationClassName, methodInfoField);
-
-        // Off into the first MethodAdvice
-
-        builder.addln("invocation.proceed();");
-
-        String[] exceptionTypes = advisedMethod.getExceptionTypes();
-        int exceptionCount = exceptionTypes.length;
-
-        if (exceptionCount > 0)
-        {
-            for (int i = 0; i < exceptionCount; i++)
-            {
-                String type = exceptionTypes[i];
-                String name = "ex" + i;
-
-                builder.addln("%s %s = (%1$s) invocation.getThrown(%s.getExceptionType(%d));",
-                        type, name, methodInfoField, i);
-                builder.addln("if (%s != null) throw %<s;", name);
-            }
-        }
-
-        String returnType = advisedMethod.getReturnType();
-
-        if (!returnType.equals("void"))
-        {
-            builder.addln("return %s;", ClassFabUtils.castReference("invocation.getResult()",
-                    returnType));
-        }
-
-        builder.end();
-
-        /** Replace the original method with the new implementation. */
-        transformation.addNewMethod(advisedMethod, builder.toString());
-    }
-
-    private void implementInvokeAdvisedMethod(String advisedMethodName)
-            throws CannotCompileException
-    {
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        boolean isVoid = advisedMethod.getReturnType().equals("void");
-
-        builder.addln("%s component = (%<s) getComponentResources().getComponent();",
-                transformation.getClassName());
-
-        String[] exceptionTypes = advisedMethod.getExceptionTypes();
-        int exceptionCount = exceptionTypes.length;
-
-        if (exceptionCount > 0)
-            builder.add("try").begin();
-
-        if (!isVoid)
-            builder.add("overrideResult(($w) ");
-
-        builder.add("component.%s(", advisedMethodName);
-
-        for (int i = 0; i < advisedMethod.getParameterTypes().length; i++)
-        {
-            if (i > 0)
-                builder.add(", ");
-
-            builder.add("%s%d", FIELD_NAME, i);
-        }
-
-        builder.add(")");
-
-        if (!isVoid)
-            builder.add(")");
-
-        builder.addln(";");
-
-        if (exceptionCount > 0)
-        {
-            builder.end(); // try
-
-            for (int i = 0; i < exceptionCount; i++)
-            {
-                builder.addln("catch (%s ex) { overrideThrown(ex); }", exceptionTypes[i]);
-            }
-        }
-
-        builder.end();
-
-        CtMethod method = new CtMethod(CtClass.voidType, "invokeAdvisedMethod", new CtClass[0],
-                invocationCtClass);
-
-        method.setModifiers(PROTECTED_FINAL);
-        method.setBody(builder.toString());
-
-        invocationCtClass.addMethod(method);
-    }
-
-    private String copyAdvisedMethod()
-    {
-        String newName = transformation.newMemberName("advised$" + advisedMethod.getMethodName());
-
-        transformation.copyMethod(advisedMethod, Modifier.FINAL, newName);
-
-        return newName;
-    }
-
-    private void createConstructor() throws CannotCompileException
-    {
-        int parameterCount = info.getParameterCount();
-
-        CtClass[] parameterTypes = new CtClass[parameterCount + 2];
-
-        parameterTypes[0] = toCtClass(ComponentMethodInvocationInfo.class);
-        parameterTypes[1] = toCtClass(Component.class);
-
-        BodyBuilder builder = new BodyBuilder().begin().addln("super($1,$2);");
-
-        for (int i = 0; i < parameterCount; i++)
-        {
-            String name = FIELD_NAME + i;
-
-            String parameterTypeName = advisedMethod.getParameterTypes()[i];
-
-            CtClass parameterType = classSource.toCtClass(parameterTypeName);
-
-            CtField field = new CtField(parameterType, name, invocationCtClass);
-            field.setModifiers(Modifier.PRIVATE);
-            invocationCtClass.addField(field);
-
-            parameterTypes[2 + i] = parameterType;
-
-            builder.addln("%s = $%d;", name, 3 + i);
-        }
-
-        builder.end();
-
-        CtConstructor constructor = new CtConstructor(parameterTypes, invocationCtClass);
-        constructor.setBody(builder.toString());
-
-        invocationCtClass.addConstructor(constructor);
-    }
-
-    private CtClass toCtClass(Class input)
-    {
-        return classSource.toCtClass(input);
-    }
-
-    private void implementOverride() throws CannotCompileException
-    {
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        builder.addln("switch ($1)").begin();
-
-        int count = advisedMethod.getParameterTypes().length;
-
-        for (int i = 0; i < count; i++)
-        {
-            String type = advisedMethod.getParameterTypes()[i];
-
-            builder.addln("case %d: %s = %s; break;", i, FIELD_NAME + i, ClassFabUtils
-                    .castReference("$2", type));
-        }
-
-        builder.addln("default: throw new IllegalArgumentException(\"Index out of range.\");");
-
-        builder.end().end();
-
-        CtMethod method = new CtMethod(CtClass.voidType, "override", new CtClass[]
-        { CtClass.intType, toCtClass(Object.class) }, invocationCtClass);
-
-        method.setModifiers(PUBLIC_FINAL);
-        method.setBody(builder.toString());
-
-        invocationCtClass.addMethod(method);
-    }
-
-    private void implementGetParameter() throws CannotCompileException
-    {
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        builder.addln("switch ($1)").begin();
-
-        int count = advisedMethod.getParameterTypes().length;
-
-        for (int i = 0; i < count; i++)
-        {
-            builder.addln("case %d: return ($w) %s;", i, FIELD_NAME + i);
-        }
-
-        builder.addln("default: throw new IllegalArgumentException(\"Index out of range.\");");
-
-        builder.end().end();
-
-        CtMethod method = new CtMethod(toCtClass(Object.class), "getParameter", new CtClass[]
-        { CtClass.intType }, invocationCtClass);
-
-        method.setModifiers(PUBLIC_FINAL);
-        method.setBody(builder.toString());
-
-        invocationCtClass.addMethod(method);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMethodInvocationInfo.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMethodInvocationInfo.java
deleted file mode 100644
index 023f9d1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentMethodInvocationInfo.java
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-import java.util.List;
-
-/**
- * A companion to {@link org.apache.tapestry5.internal.services.AbstractComponentMethodInvocation} that stores most of
- * the method and advice information needed.
- */
-public class ComponentMethodInvocationInfo
-{
-    private final TransformMethodSignature methodSignature;
-
-    private final ComponentClassCache componentClassCache;
-
-    private final List<ComponentMethodAdvice> advice = CollectionFactory.newList();
-
-    private Class effectiveResultType;
-
-    public ComponentMethodInvocationInfo(TransformMethodSignature methodSignature,
-                                         ComponentClassCache componentClassCache)
-    {
-        this.methodSignature = methodSignature;
-        this.componentClassCache = componentClassCache;
-    }
-
-    public String getMethodName()
-    {
-        return methodSignature.getMethodName();
-    }
-
-    public Class getResultType()
-    {
-        return componentClassCache.forName(methodSignature.getReturnType());
-    }
-
-    public synchronized Class getEffectiveResultType()
-    {
-        if (effectiveResultType == null)
-        {
-            Class resultType = getResultType();
-
-            effectiveResultType = resultType.isPrimitive() ? ClassFabUtils.getWrapperType(resultType) : resultType;
-        }
-
-        return effectiveResultType;
-    }
-
-    public int getParameterCount()
-    {
-        return methodSignature.getParameterTypes().length;
-    }
-
-    public Class getParameterType(int index)
-    {
-        return componentClassCache.forName(methodSignature.getParameterTypes()[index]);
-    }
-
-    public int getAdviceCount()
-    {
-        return advice.size();
-    }
-
-    public ComponentMethodAdvice getAdvice(int index)
-    {
-        return advice.get(index);
-    }
-
-    public void addAdvice(ComponentMethodAdvice advice)
-    {
-        // Ultimately, the mutable portion of this object's lifecycle all occurs inside a synchronized block defined by
-        // the class loader.  After that the advice list is only accessed for reads.  I don't think there
-        // are any concurrency issues with this approach.
-
-        this.advice.add(advice);
-    }
-
-    public Class[] getExceptionTypes()
-    {
-        String[] exceptionTypes = methodSignature.getExceptionTypes();
-        int count = exceptionTypes.length;
-
-        Class[] result = new Class[count];
-
-        for (int i = 0; i < count; i++)
-        {
-            result[i] = componentClassCache.forName(exceptionTypes[i]);
-        }
-
-        return result;
-    }
-
-    public Class getExceptionType(int index)
-    {
-        return componentClassCache.forName(methodSignature.getExceptionTypes()[index]);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java
deleted file mode 100644
index 6b22d67..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSource.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.model.ComponentModel;
-
-/**
- * Access to component models (as provided via {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource}).
- * <p/>
- * This is a good candidate to move into the public services package.
- *
- * @since 5.1.0.0
- */
-public interface ComponentModelSource
-{
-    /**
-     * Returns the model for a particular component class name.
-     *
-     * @param componentClassName name of component class
-     * @return model for component
-     * @throws IllegalArgumentException if component class name does not match a known component
-     */
-    ComponentModel getModel(String componentClassName);
-
-    /**
-     * Returns the model for a page.  The page name is resolved to a component class name.
-     *
-     * @param pageName name of page
-     * @return the model for the page
-     * @throws IllegalArgumentException if the page name is not a known page name
-     */
-    ComponentModel getPageModel(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java
deleted file mode 100644
index 9c01847..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentModelSourceImpl.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.ComponentClassResolver;
-
-public class ComponentModelSourceImpl implements ComponentModelSource
-{
-    private final ComponentClassResolver resolver;
-
-    private final ComponentInstantiatorSource source;
-
-    public ComponentModelSourceImpl(ComponentClassResolver resolver, ComponentInstantiatorSource source)
-    {
-        this.resolver = resolver;
-        this.source = source;
-    }
-
-    public ComponentModel getModel(String componentClassName)
-    {
-        return source.getInstantiator(componentClassName).getModel();
-    }
-
-    public ComponentModel getPageModel(String pageName)
-    {
-        return getModel(resolver.resolvePageNameToClassName(pageName));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
deleted file mode 100644
index 354d429..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentRequestHandlerTerminator.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009 Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-/**
- * Terminator for the {@link org.apache.tapestry5.services.ComponentRequestHandler} pipeline, that feeds out into the
- * {@link org.apache.tapestry5.services.ComponentEventRequestHandler} and {@link org.apache.tapestry5.services.PageRenderRequestHandler}
- * pipelines.
- *
- * @sicne 5.1.0.0
- */
-public class ComponentRequestHandlerTerminator implements ComponentRequestHandler
-{
-    private final ComponentEventRequestHandler componentEventRequestHandler;
-
-    private final PageRenderRequestHandler pageRenderRequestHandler;
-
-    public ComponentRequestHandlerTerminator(@Traditional ComponentEventRequestHandler componentEventRequestHandler,
-                                             PageRenderRequestHandler pageRenderRequestHandler)
-    {
-        this.componentEventRequestHandler = componentEventRequestHandler;
-        this.pageRenderRequestHandler = pageRenderRequestHandler;
-    }
-
-    public void handleComponentEvent(ComponentEventRequestParameters parameters) throws IOException
-    {
-        componentEventRequestHandler.handle(parameters);
-    }
-
-    public void handlePageRender(PageRenderRequestParameters parameters) throws IOException
-    {
-        pageRenderRequestHandler.handle(parameters);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResourcesInjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResourcesInjectionProvider.java
deleted file mode 100644
index b82a34a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResourcesInjectionProvider.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.transform.ReadOnlyFieldValueConduit;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Allows for the injection of the component's {@link org.apache.tapestry5.ComponentResources}.
- */
-public class ComponentResourcesInjectionProvider implements InjectionProvider
-{
-
-    public boolean provideInjection(final String fieldName, Class fieldType, ObjectLocator locator,
-            ClassTransformation transformation, MutableComponentModel componentModel)
-    {
-        if (!fieldType.equals(ComponentResources.class))
-            return false;
-
-        TransformField field = transformation.getField(fieldName);
-
-        ComponentValueProvider<FieldValueConduit> provider = createResourcesFieldConduitProvider(fieldName);
-
-        field.replaceAccess(provider);
-
-        return true;
-    }
-
-    private ComponentValueProvider<FieldValueConduit> createResourcesFieldConduitProvider(final String fieldName)
-    {
-        return new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(final ComponentResources resources)
-            {
-                return new ReadOnlyFieldValueConduit(resources, fieldName)
-                {
-                    public Object get()
-                    {
-                        return resources;
-                    }
-                };
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResourcesOperation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResourcesOperation.java
deleted file mode 100644
index 468d9ba..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResourcesOperation.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-
-/**
- * A kind of callback that can easily be injected into a transformed class to perform complex work.
- * <p/>
- * These callbacks are often injected into a transformed component class via {@link
- * org.apache.tapestry5.services.ClassTransformation#addInjectedField(Class, String, Object)}. Bear in mind that such
- * callbacks must be <em>threadsafe</em>, since every instance of such a class will share a single instance of the
- * operation.
- */
-public interface ComponentResourcesOperation
-{
-    /**
-     * Perform some operation that requires the components' resources.
-     */
-    void perform(ComponentResources resources);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResultProcessorWrapper.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResultProcessorWrapper.java
deleted file mode 100644
index 05e3f35..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentResultProcessorWrapper.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.TrackableComponentEventCallback;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-/**
- * A wrapper around {@link ComponentEventResultProcessor} that encapsulates capturing the exception.
- */
-@SuppressWarnings("unchecked")
-public class ComponentResultProcessorWrapper implements TrackableComponentEventCallback
-{
-    private boolean aborted;
-
-    private IOException exception;
-
-    private final ComponentEventResultProcessor processor;
-
-    public ComponentResultProcessorWrapper(ComponentEventResultProcessor processor)
-    {
-        this.processor = processor;
-    }
-
-    public boolean handleResult(Object result)
-    {
-        if (aborted)
-            throw new IllegalStateException(
-                    "Event callback has already received and processed a result value and can not do so again.");
-
-        try
-        {
-            processor.processResultValue(result);
-        }
-        catch (IOException ex)
-        {
-            exception = ex;
-        }
-
-        aborted = true;
-
-        return true;
-    }
-
-    /**
-     * Returns true if {@link org.apache.tapestry5.ComponentEventCallback#handleResult(Object)} was invoked, false
-     * otherwise.
-     * 
-     * @return true if the event was aborted
-     */
-    public boolean isAborted()
-    {
-        return aborted;
-    }
-
-    public void rethrow() throws IOException
-    {
-        if (exception != null)
-            throw exception;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentSourceImpl.java
deleted file mode 100644
index 28dd8b5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentSourceImpl.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.RequestGlobals;
-
-@SuppressWarnings("all")
-public class ComponentSourceImpl implements ComponentSource
-{
-    private final RequestPageCache pageCache;
-
-    private final ComponentClassResolver resolver;
-
-    private final RequestGlobals globals;
-
-    public ComponentSourceImpl(RequestPageCache pageCache, ComponentClassResolver resolver, RequestGlobals globals)
-    {
-        this.pageCache = pageCache;
-        this.resolver = resolver;
-        this.globals = globals;
-    }
-
-    public Component getComponent(String completeId)
-    {
-        assert InternalUtils.isNonBlank(completeId);
-
-        int colonx = completeId.indexOf(':');
-
-        if (colonx < 0)
-        {
-            Page page = pageCache.get(completeId);
-
-            return page.getRootComponent();
-        }
-
-        String pageName = completeId.substring(0, colonx);
-
-        Page page = pageCache.get(pageName);
-        String nestedId = completeId.substring(colonx + 1);
-        String mixinId = null;
-
-        int dollarx = nestedId.indexOf("$");
-
-        if (dollarx > 0)
-        {
-            mixinId = nestedId.substring(dollarx + 1);
-            nestedId = nestedId.substring(0, dollarx);
-        }
-
-        ComponentPageElement element = page.getComponentElementByNestedId(nestedId);
-
-        if (mixinId == null)
-            return element.getComponent();
-
-        ComponentResources resources = element.getMixinResources(mixinId);
-
-        return resources.getComponent();
-    }
-
-    public Component getPage(String pageName)
-    {
-        assert pageName != null;
-
-        Page page = pageCache.get(pageName);
-
-        return page.getRootComponent();
-    }
-
-    public Component getPage(Class pageClass)
-    {
-        assert pageClass != null;
-
-        String pageName = resolver.resolvePageClassNameToPageName(pageClass.getName());
-
-        return getPage(pageName);
-    }
-
-    public Component getActivePage()
-    {
-        String pageName = globals.getActivePageName();
-
-        return pageName == null ? null : getPage(pageName);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java
deleted file mode 100644
index 04d9909..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSource.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
-
-import java.util.Locale;
-
-/**
- * Provides access to cached {@link org.apache.tapestry5.internal.parser.ComponentTemplate}s. The source acts as a
- * invalidation event hub, and will broadcast invalidation events when any loaded template resource changes. The
- * listener for these invalidation events is the page source, which stores cached page instances.
- * <p/>
- * Any search for a template will end with success (a non-null template), but the template returned may be the {@link
- * ComponentTemplate#isMissing() missing template}.
- */
-public interface ComponentTemplateSource
-{
-    /**
-     * Provides access to a template. The template will be parsed as necessary. If no template for the exact component
-     * is found, then the template for the component's parent is returned. In this way, it is possible for a component
-     * to extend the behavior of its super-class without duplicating the super-class component's template.
-     * <p/>
-     * In some cases, the empty template will be returned.
-     *
-     * @param componentModel model for the component whose template is to be accessed
-     * @param locale         the locale to find the template within
-     * @return the cached template instance
-     */
-    ComponentTemplate getTemplate(ComponentModel componentModel, Locale locale);
-
-    /**
-     * Event hub used to notify listeners that underlying component template files have changed.
-     *
-     * @see org.apache.tapestry5.services.ComponentTemplates
-     * @since 5.1.0.0
-     */
-    InvalidationEventHub getInvalidationEventHub();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
deleted file mode 100644
index e263e59..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImpl.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.util.MultiKey;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.UpdateListener;
-import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Service implementation that manages a cache of parsed component templates.
- */
-public final class ComponentTemplateSourceImpl extends InvalidationEventHubImpl implements ComponentTemplateSource,
-        UpdateListener
-{
-    private final TemplateParser parser;
-
-    private final ComponentTemplateLocator locator;
-
-    private final URLChangeTracker tracker;
-
-    /**
-     * Caches from a key (combining component name and locale) to a resource. Often, many different keys will point to
-     * the same resource (i.e., "foo:en_US", "foo:en_UK", and "foo:en" may all be parsed from the same "foo.tml"
-     * resource). The resource may end up being null, meaning the template does not exist in any locale.
-     */
-    private final Map<MultiKey, Resource> templateResources = CollectionFactory.newConcurrentMap();
-
-    /**
-     * Cache of parsed templates, keyed on resource.
-     */
-    private final Map<Resource, ComponentTemplate> templates = CollectionFactory.newConcurrentMap();
-
-    private final ComponentTemplate missingTemplate = new ComponentTemplate()
-    {
-        public Map<String, Location> getComponentIds()
-        {
-            return Collections.emptyMap();
-        }
-
-        public Resource getResource()
-        {
-            return null;
-        }
-
-        public List<TemplateToken> getTokens()
-        {
-            return Collections.emptyList();
-        }
-
-        public boolean isMissing()
-        {
-            return true;
-        }
-
-        public List<TemplateToken> getExtensionPointTokens(String extensionPointId)
-        {
-            return null;
-        }
-
-        public boolean isExtension()
-        {
-            return false;
-        }
-    };
-
-    public ComponentTemplateSourceImpl(TemplateParser parser, @Primary
-    ComponentTemplateLocator templateLocator, ClasspathURLConverter classpathURLConverter)
-    {
-        this(parser, templateLocator, new URLChangeTracker(classpathURLConverter));
-    }
-
-    ComponentTemplateSourceImpl(TemplateParser parser, ComponentTemplateLocator locator, URLChangeTracker tracker)
-    {
-        this.parser = parser;
-        this.locator = locator;
-        this.tracker = tracker;
-    }
-
-    /**
-     * Resolves the component name to a localized {@link Resource} (using the {@link ComponentTemplateLocator} chain of
-     * command service). The localized resource is used as the key to a cache of {@link ComponentTemplate}s.
-     * <p/>
-     * If a template doesn't exist, then the missing ComponentTemplate is returned.
-     */
-    public ComponentTemplate getTemplate(ComponentModel componentModel, Locale locale)
-    {
-        String componentName = componentModel.getComponentClassName();
-
-        MultiKey key = new MultiKey(componentName, locale);
-
-        // First cache is key to resource.
-
-        Resource resource = templateResources.get(key);
-
-        if (resource == null)
-        {
-            resource = locateTemplateResource(componentModel, locale);
-            templateResources.put(key, resource);
-        }
-
-        // If we haven't yet parsed the template into the cache, do so now.
-
-        ComponentTemplate result = templates.get(resource);
-
-        if (result == null)
-        {
-            result = parseTemplate(resource);
-            templates.put(resource, result);
-        }
-
-        return result;
-    }
-
-    private ComponentTemplate parseTemplate(Resource r)
-    {
-        // In a race condition, we may parse the same template more than once. This will likely add
-        // the resource to the tracker multiple times. Not likely this will cause a big issue.
-
-        if (!r.exists())
-            return missingTemplate;
-
-        tracker.add(r.toURL());
-
-        return parser.parseTemplate(r);
-    }
-
-    private Resource locateTemplateResource(ComponentModel initialModel, Locale locale)
-    {
-        ComponentModel model = initialModel;
-        while (model != null)
-        {
-            Resource localized = locator.locateTemplate(model, locale);
-
-            if (localized != null)
-                return localized;
-
-            // Otherwise, this component doesn't have its own template ... lets work up to its
-            // base class and check there.
-
-            model = model.getParentModel();
-        }
-
-        // This will be a Resource whose URL is null, which will be picked up later and force the
-        // return of the empty template.
-
-        return initialModel.getBaseResource().withExtension(TapestryConstants.TEMPLATE_EXTENSION);
-    }
-
-    /**
-     * Checks to see if any parsed resource has changed. If so, then all internal caches are cleared, and an
-     * invalidation event is fired. This is brute force ... a more targeted dependency management strategy may come
-     * later.
-     */
-    public void checkForUpdates()
-    {
-        if (tracker.containsChanges())
-        {
-            tracker.clear();
-            templateResources.clear();
-            templates.clear();
-            fireInvalidationEvent();
-        }
-    }
-
-    public InvalidationEventHub getInvalidationEventHub()
-    {
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CompositeFieldValidator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CompositeFieldValidator.java
deleted file mode 100644
index 7aa075e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CompositeFieldValidator.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-
-import java.util.List;
-
-/**
- * Aggregates together a number of field validator instances as a single unit.
- */
-public final class CompositeFieldValidator implements FieldValidator
-{
-    private final FieldValidator[] validators;
-
-    public CompositeFieldValidator(List<FieldValidator> validators)
-    {
-        this.validators = validators.toArray(new FieldValidator[validators.size()]);
-    }
-
-    @SuppressWarnings("unchecked")
-    public void validate(Object value) throws ValidationException
-    {
-        for (FieldValidator fv : validators)
-            fv.validate(value);
-    }
-
-    public void render(MarkupWriter writer)
-    {
-        for (FieldValidator fv : validators)
-            fv.render(writer);
-    }
-
-    public boolean isRequired()
-    {
-        for (FieldValidator fv : validators)
-        {
-            if (fv.isRequired()) return true;
-        }
-
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java
deleted file mode 100644
index 7f98484..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextAssetFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.AssetFactory;
-import org.apache.tapestry5.services.AssetPathConverter;
-import org.apache.tapestry5.services.Context;
-import org.apache.tapestry5.services.assets.AssetPathConstructor;
-
-/**
- * Implementation of {@link AssetFactory} for assets that are part of the web application context.
- * 
- * @see org.apache.tapestry5.internal.services.ContextResource
- */
-public class ContextAssetFactory implements AssetFactory
-{
-    private final AssetPathConstructor assetPathConstructor;
-
-    private final Resource rootResource;
-
-    private final AssetPathConverter converter;
-
-    private final boolean invariant;
-
-    public ContextAssetFactory(AssetPathConstructor assetPathConstructor, Context context,
-
-    AssetPathConverter converter)
-    {
-        this.assetPathConstructor = assetPathConstructor;
-        this.converter = converter;
-
-        rootResource = new ContextResource(context, "/");
-        invariant = this.converter.isInvariant();
-    }
-
-    public Asset createAsset(final Resource resource)
-    {
-        final String defaultPath = assetPathConstructor.constructAssetPath(RequestConstants.CONTEXT_FOLDER, resource
-                .getPath());
-
-        return new AbstractAsset(invariant)
-        {
-            public Resource getResource()
-            {
-                return resource;
-            }
-
-            public String toClientURL()
-            {
-                return converter.convertAssetPath(defaultPath);
-            }
-        };
-    }
-
-    /**
-     * Returns the root {@link org.apache.tapestry5.internal.services.ContextResource}.
-     */
-    public Resource getRootResource()
-    {
-        return rootResource;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java
deleted file mode 100644
index 922086f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.services.Context;
-
-import javax.servlet.ServletContext;
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-public class ContextImpl implements Context
-{
-    private final ServletContext servletContext;
-
-    public ContextImpl(ServletContext servletContext)
-    {
-        this.servletContext = servletContext;
-    }
-
-    public URL getResource(String path)
-    {
-        try
-        {
-            return servletContext.getResource(path);
-        }
-        catch (MalformedURLException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public File getRealFile(String path)
-    {
-        String realPath = servletContext.getRealPath(path);
-
-        return realPath == null ? null : new File(realPath);
-    }
-
-    public String getInitParameter(String name)
-    {
-        return servletContext.getInitParameter(name);
-    }
-
-    @SuppressWarnings("unchecked")
-    public List<String> getResourcePaths(String path)
-    {
-        List<String> result = CollectionFactory.newList();
-        Stack<String> queue = CollectionFactory.newStack();
-
-        queue.push(path);
-
-        while (!queue.isEmpty())
-        {
-            String current = queue.pop();
-
-            Set<String> matches = servletContext.getResourcePaths(current);
-
-            // Tomcat 5.5.20 inside JBoss 4.0.2 has been observed to do this!
-            // Perhaps other servers do as well.
-
-            if (matches == null) continue;
-
-            for (String match : matches)
-            {
-                // Folders are queued up for further expansion.
-
-                if (match.endsWith("/")) queue.push(match);
-                else result.add(match);
-            }
-        }
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    public Object getAttribute(String name)
-    {
-        return servletContext.getAttribute(name);
-    }
-
-    public List<String> getAttributeNames()
-    {
-        return InternalUtils.toList(servletContext.getAttributeNames());
-    }
-
-    public String getMimeType(String file)
-    {
-        return servletContext.getMimeType(file);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java
deleted file mode 100644
index 33ddcd8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextPathEncoderImpl.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.URLEventContext;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ContextPathEncoder;
-import org.apache.tapestry5.services.ContextValueEncoder;
-import org.apache.tapestry5.services.URLEncoder;
-
-public class ContextPathEncoderImpl implements ContextPathEncoder
-{
-    private static final int BUFFER_SIZE = 100;
-
-    private final ContextValueEncoder valueEncoder;
-
-    private final URLEncoder urlEncoder;
-
-    private final TypeCoercer typeCoercer;
-
-    private final EventContext EMPTY = new EmptyEventContext();
-
-    public ContextPathEncoderImpl(ContextValueEncoder valueEncoder, URLEncoder urlEncoder, TypeCoercer typeCoercer)
-    {
-        this.valueEncoder = valueEncoder;
-        this.urlEncoder = urlEncoder;
-        this.typeCoercer = typeCoercer;
-    }
-
-    public String encodeValue(Object value)
-    {
-        String valueEncoded = value == null ? null : valueEncoder.toClient(value);
-
-        return urlEncoder.encode(valueEncoded);
-    }
-
-    public String encodeIntoPath(Object[] context)
-    {
-        if (context == null || context.length == 0)
-            return "";
-
-        return encodeIntoPath(new ArrayEventContext(typeCoercer, context));
-    }
-
-    public String encodeIntoPath(EventContext context)
-    {
-        assert context != null;
-        int count = context.getCount();
-
-        StringBuilder output = new StringBuilder(BUFFER_SIZE);
-
-        for (int i = 0; i < count; i++)
-        {
-            Object raw = context.get(Object.class, i);
-
-            String urlEncoded = encodeValue(raw);
-
-            if (i > 0)
-                output.append("/");
-
-            output.append(urlEncoded);
-        }
-
-        return output.toString();
-    }
-
-    public EventContext decodePath(String path)
-    {
-        if (InternalUtils.isBlank(path))
-            return EMPTY;
-
-        String[] split = TapestryInternalUtils.splitPath(path);
-
-        for (int i = 0; i < split.length; i++)
-        {
-            split[i] = urlEncoder.decode(split[i]);
-        }
-
-        return new URLEventContext(valueEncoder, split);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java
deleted file mode 100644
index bb0e4e9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextResource.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.AbstractResource;
-import org.apache.tapestry5.services.Context;
-
-/**
- * A resource stored with in the web application context.
- */
-public class ContextResource extends AbstractResource
-{
-    private static final int PRIME = 37;
-
-    private final Context context;
-
-    public ContextResource(Context context, String path)
-    {
-        super(path);
-        
-        assert context != null;
-
-        this.context = context;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("context:%s", getPath());
-    }
-
-    @Override
-    protected Resource newResource(String path)
-    {
-        return new ContextResource(context, path);
-    }
-
-    public URL toURL()
-    {
-        // This is so easy to screw up; ClassLoader.getResource() doesn't want a leading slash,
-        // and HttpServletContext.getResource() does. This is what I mean when I say that
-        // a framework is an accumulation of the combined experience of many users and developers.
-
-        String contextPath = "/" + getPath();
-
-        // Always prefer the actual file to the URL.  This is critical for templates to
-        // reload inside Tomcat.
-
-        File file = context.getRealFile(contextPath);
-
-        if (file != null && file.exists())
-        {
-            try
-            {
-                return file.toURL();
-            }
-            catch (MalformedURLException ex)
-            {
-                throw new RuntimeException(ex);
-            }
-        }
-
-        // But, when packaged inside a WAR or JAR, the File will not be available, so use whatever
-        // URL we get ... but reloading won't work.
-
-        return context.getResource(contextPath);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return PRIME * context.hashCode() + getPath().hashCode();
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) return true;
-        if (obj == null) return false;
-        if (getClass() != obj.getClass()) return false;
-
-        final ContextResource other = (ContextResource) obj;
-
-        return context == other.context && getPath().equals(other.getPath());
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextValueEncoderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextValueEncoderImpl.java
deleted file mode 100644
index 5d362ab..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ContextValueEncoderImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.services.ContextValueEncoder;
-import org.apache.tapestry5.services.ValueEncoderSource;
-
-@SuppressWarnings("all")
-public class ContextValueEncoderImpl implements ContextValueEncoder
-{
-    private final ValueEncoderSource valueEncoderSource;
-
-    public ContextValueEncoderImpl(ValueEncoderSource valueEncoderSource)
-    {
-        this.valueEncoderSource = valueEncoderSource;
-    }
-
-    public String toClient(Object value)
-    {
-        assert value != null;
-
-        ValueEncoder encoder = valueEncoderSource.getValueEncoder(value.getClass());
-
-        return encoder.toClient(value);
-    }
-
-
-    public <T> T toValue(Class<T> requiredType, String clientValue)
-    {
-        assert requiredType != null;
-
-        ValueEncoder<T> encoder = valueEncoderSource.getValueEncoder(requiredType);
-
-        return encoder.toValue(clientValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookieSink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookieSink.java
deleted file mode 100644
index ba855cc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookieSink.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javax.servlet.http.Cookie;
-
-/**
- * You can write cookies to it.
- */
-public interface CookieSink
-{
-
-    /**
-     * Adds a cookie to the sink
-     */
-    void addCookie(Cookie cookie);
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookieSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookieSource.java
deleted file mode 100644
index dab31d0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookieSource.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javax.servlet.http.Cookie;
-
-/**
- * Provides the cookies from the browser.
- */
-public interface CookieSource
-{
-    /**
-     * Returns the cookies from the browser.
-     */
-    Cookie[] getCookies();
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java
deleted file mode 100644
index 3c88006..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/CookiesImpl.java
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.Cookies;
-import org.apache.tapestry5.services.Request;
-
-import javax.servlet.http.Cookie;
-
-/**
- * Implementation of the {@link org.apache.tapestry5.services.Cookies} service interface.
- */
-public class CookiesImpl implements Cookies
-{
-    private final Request request;
-
-    private final CookieSource cookieSource;
-
-    private final CookieSink cookieSink;
-
-    private final int defaultMaxAge;
-
-    /**
-     * @param request
-     * @param cookieSource
-     * @param cookieSink
-     * @param defaultMaxAge default cookie expiration time in milliseconds
-     */
-    public CookiesImpl(Request request,
-
-                       CookieSource cookieSource,
-
-                       CookieSink cookieSink,
-
-                       @Symbol("tapestry.default-cookie-max-age") @IntermediateType(TimeInterval.class)
-                       long defaultMaxAge)
-    {
-        this.request = request;
-        this.cookieSource = cookieSource;
-        this.cookieSink = cookieSink;
-        this.defaultMaxAge = (int) (defaultMaxAge / 1000l);
-    }
-
-    public String readCookieValue(String name)
-    {
-        Cookie[] cookies = cookieSource.getCookies();
-
-        if (cookies == null) return null;
-
-        for (Cookie cooky : cookies)
-        {
-            if (cooky.getName().equals(name)) return cooky.getValue();
-        }
-
-        return null;
-    }
-
-    public void writeCookieValue(String name, String value)
-    {
-        writeCookieValue(name, value, defaultMaxAge);
-    }
-
-    public void writeCookieValue(String name, String value, int maxAge)
-    {
-        Cookie cookie = new Cookie(name, value);
-        cookie.setPath(request.getContextPath() + "/");
-        cookie.setMaxAge(maxAge);
-        cookie.setSecure(request.isSecure());
-
-        cookieSink.addCookie(cookie);
-    }
-
-    public void writeCookieValue(String name, String value, String path)
-    {
-        Cookie cookie = new Cookie(name, value);
-        cookie.setPath(path);
-        cookie.setMaxAge(defaultMaxAge);
-        cookie.setSecure(request.isSecure());
-
-        cookieSink.addCookie(cookie);
-    }
-
-    public void writeDomainCookieValue(String name, String value, String domain)
-    {
-        writeDomainCookieValue(name, value, domain, defaultMaxAge);
-    }
-
-    public void writeDomainCookieValue(String name, String value, String domain, int maxAge)
-    {
-        Cookie cookie = new Cookie(name, value);
-        cookie.setPath(request.getContextPath() + "/");
-        cookie.setDomain(domain);
-        cookie.setMaxAge(maxAge);
-        cookie.setSecure(request.isSecure());
-
-        cookieSink.addCookie(cookie);
-    }
-
-    public void writeCookieValue(String name, String value, String path, String domain)
-    {
-        Cookie cookie = new Cookie(name, value);
-        cookie.setPath(path);
-        cookie.setDomain(domain);
-        cookie.setMaxAge(defaultMaxAge);
-        cookie.setSecure(request.isSecure());
-
-        cookieSink.addCookie(cookie);
-    }
-
-    public void removeCookieValue(String name)
-    {
-        Cookie cookie = new Cookie(name, null);
-        cookie.setPath(request.getContextPath() + "/");
-        cookie.setMaxAge(0);
-        cookie.setSecure(request.isSecure());
-
-        cookieSink.addCookie(cookie);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DTDData.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DTDData.java
deleted file mode 100644
index ad88484..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DTDData.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.xml.sax.ext.LexicalHandler;
-
-/**
- * A capturing of the data from
- * {@link LexicalHandler#startDTD(String, String, String)}.
- * 
- * @since 5.2.0
- */
-public interface DTDData
-{
-    String getRootName();
-
-    String getPublicId();
-
-    String getSystemId();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultDataTypeAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultDataTypeAnalyzer.java
deleted file mode 100644
index 578a996..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultDataTypeAnalyzer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.Map;
-
-/**
- * The default data type analyzer, which is based entirely on the type of the property (and not on annotations or naming
- * conventions). This is based on a configuration of property type class to string provided as an IoC service
- * configuration.
- */
-public class DefaultDataTypeAnalyzer implements DataTypeAnalyzer, InvalidationListener
-{
-    private final StrategyRegistry<String> registry;
-
-    public DefaultDataTypeAnalyzer(Map<Class, String> configuration)
-    {
-        registry = StrategyRegistry.newInstance(String.class, configuration);
-    }
-
-    /**
-     * Clears the registry on an invalidation event (this is because the registry caches results, and the keys are
-     * classes that may be component classes from the invalidated component class loader).
-     */
-    public void objectWasInvalidated()
-    {
-        registry.clearCache();
-    }
-
-    public String identifyDataType(PropertyAdapter adapter)
-    {
-        Class propertyType = adapter.getType();
-
-        String dataType = registry.get(propertyType);
-
-        // To avoid "no strategy" exceptions, we expect a contribution of Object.class to the empty
-        // string. We convert that back to a null.
-
-        if (dataType.equals(""))
-            return null;
-
-        return dataType;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java
deleted file mode 100644
index ba5e517..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultInjectionProvider.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.services.MasterObjectProvider;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Worker for the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation that delegates out to the master
- * {@link org.apache.tapestry5.ioc.services.MasterObjectProvider} to access the value. This worker must be scheduled
- * after certain other workers, such as {@link BlockInjectionProvider} (which is keyed off a combination of type and
- * the Inject annotation).
- * 
- * @see org.apache.tapestry5.ioc.services.MasterObjectProvider
- */
-public class DefaultInjectionProvider implements InjectionProvider
-{
-    private final MasterObjectProvider masterObjectProvider;
-
-    private final ObjectLocator locator;
-
-    public DefaultInjectionProvider(MasterObjectProvider masterObjectProvider, ObjectLocator locator)
-    {
-        this.masterObjectProvider = masterObjectProvider;
-        this.locator = locator;
-    }
-
-    @SuppressWarnings("unchecked")
-    public boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
-            final ClassTransformation transformation, MutableComponentModel componentModel)
-    {
-        // I hate special cases, but we have a conflict between the ObjectProvider contributed so as to inject
-        // the global application messages into services, and the injection of per-component Messages into components.
-        // For yet other reasons, this InjectionProvider gets invoked before CommonResources, and will attempt
-        // to inject the wrong Messages (the global application messages, not the component messages) ... so we
-        // make a special check here.
-
-        if (fieldType.equals(Messages.class))
-            return false;
-
-        TransformField field = transformation.getField(fieldName);
-
-        Object injectionValue = masterObjectProvider.provide(fieldType, field, this.locator, false);
-
-        // Null means that no ObjectProvider could provide the value. We have set up the chain of
-        // command so that InjectResources can give it a try next. Later, we'll try to match against
-        // a service.
-
-        if (injectionValue != null)
-        {
-            field.inject(injectionValue);
-            return true;
-        }
-
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
deleted file mode 100644
index c96e8f0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultRequestExceptionHandler.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.net.URLEncoder;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ExceptionReporter;
-import org.apache.tapestry5.services.RequestExceptionHandler;
-import org.apache.tapestry5.services.Response;
-import org.slf4j.Logger;
-
-/**
- * Default implementation of {@link RequestExceptionHandler} that displays the standard ExceptionReport page. The page
- * must implement the {@link ExceptionReporter} interface.
- */
-public class DefaultRequestExceptionHandler implements RequestExceptionHandler
-{
-    private final RequestPageCache pageCache;
-
-    private final PageResponseRenderer renderer;
-
-    private final Logger logger;
-
-    private final String pageName;
-
-    private final Response response;
-
-    public DefaultRequestExceptionHandler(RequestPageCache pageCache, PageResponseRenderer renderer, Logger logger,
-
-    @Symbol(SymbolConstants.EXCEPTION_REPORT_PAGE)
-    String pageName,
-
-    Response response)
-    {
-        this.pageCache = pageCache;
-        this.renderer = renderer;
-        this.logger = logger;
-        this.pageName = pageName;
-        this.response = response;
-    }
-
-    public void handleRequestException(Throwable exception) throws IOException
-    {
-        logger.error(ServicesMessages.requestException(exception), exception);
-
-        // TAP5-233: Make sure the client knows that an error occurred.
-
-        response.setStatus(HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
-
-        String rawMessage = InternalUtils.toMessage(exception);
-
-        // Encode it compatibly with the JavaScript escape() function.
-
-        String encoded = URLEncoder.encode(rawMessage, "UTF-8").replace("+", "%20");
-
-        response.setHeader("X-Tapestry-ErrorMessage", encoded);
-
-        Page page = pageCache.get(pageName);
-
-        ExceptionReporter rootComponent = (ExceptionReporter) page.getRootComponent();
-
-        // Let the page set up for the new exception.
-
-        rootComponent.reportException(exception);
-
-        renderer.renderPageResponse(page);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultSessionPersistedObjectAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultSessionPersistedObjectAnalyzer.java
deleted file mode 100644
index 7f3eb35..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DefaultSessionPersistedObjectAnalyzer.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.annotations.ImmutableSessionPersistedObject;
-import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
-
-/**
- * Default catch-all implementation of {@link org.apache.tapestry5.services.SessionPersistedObjectAnalyzer}.
- *
- * @since 5.1.0.0
- */
-public class DefaultSessionPersistedObjectAnalyzer implements SessionPersistedObjectAnalyzer<Object>
-{
-    /**
-     * An object is dirty <em>unless</em> it has the {@link org.apache.tapestry5.annotations.ImmutableSessionPersistedObject}
-     * annotation.
-     *
-     * @param object to analyze
-     * @return false if immutable, true otherwise
-     */
-    public boolean isDirty(Object object)
-    {
-        boolean immutable = object.getClass().getAnnotation(ImmutableSessionPersistedObject.class) != null;
-
-        // Imuutable objects are always clean, others are assumed dirty.
-        // Go implement OptimizedSessionPersistedObject if you don't like it.
-
-        return !immutable;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DelegateFieldAccess.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DelegateFieldAccess.java
deleted file mode 100644
index ed59340..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DelegateFieldAccess.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.services.FieldAccess;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * A temporary version of {@link FieldAccess} returned in some circumstances from {@link TransformField#getAccess()}.
- * {@linkplain TransformField#replaceAccess(org.apache.tapestry5.ioc.services.FieldValueConduit) replaced} (with a
- * {@link FieldValueConduit}), the delegate of this class may be pointed directly at the FieldValueConduit (through an
- * adapter) and no extra classes or static methods (on the component class) will need to be constructed.
- * 
- * @since 5.2.0
- */
-class DelegateFieldAccess implements FieldAccess
-{
-    // Technically, this field should be volatile or synchronized; I hope it falls under the proper
-    // synchronization umbrella by the time its actually used in a live component class.
-    
-    FieldAccess delegate;
-
-    public Object read(Object instance)
-    {
-        return delegate.read(instance);
-    }
-
-    public void write(Object instance, Object value)
-    {
-        delegate.write(instance, value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DelegatingMessagesImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DelegatingMessagesImpl.java
deleted file mode 100644
index 0e591ed..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DelegatingMessagesImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-
-/**
- * Implementation of {@link Messages} that wraps two other Messages instances: a primary and a delegate.
- * The primary handles any keys it contains; method invocations that reference keys not contained by
- * the primary are passed on to the delegate.
- * 
- * @since 5.2.0
- */
-public class DelegatingMessagesImpl implements Messages
-{
-    private final Messages primary, delegate;
-
-    public DelegatingMessagesImpl(Messages primary, Messages delegate)
-    {
-        this.primary = primary;
-        this.delegate = delegate;
-    }
-
-    public boolean contains(String key)
-    {
-        return primary.contains(key) || delegate.contains(key);
-    }
-
-    private Messages select(String key)
-    {
-        return primary.contains(key) ? primary : delegate;
-    }
-
-    public String format(String key, Object... args)
-    {
-        return select(key).format(key, args);
-    }
-
-    public String get(String key)
-    {
-        return select(key).get(key);
-    }
-
-    public MessageFormatter getFormatter(String key)
-    {
-        return select(key).getFormatter(key);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinker.java
deleted file mode 100644
index d07f62b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinker.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-/**
- * Responsible for injecting script and style links into the &lt;head&gt; and &lt;body&gt; element of the rendered HTML
- * document.
- */
-public interface DocumentLinker
-{
-    /**
-     * Adds a link to load a JavaScript library. . The &lt;script&gt; elements will be added inside
-     * the document's &lt;head&gt;.
-     */
-    void addScriptLink(String scriptURL);
-
-    /**
-     * Adds a link to load a CSS stylesheet.
-     */
-    void addStylesheetLink(StylesheetLink stylesheet);
-
-    /**
-     * Adds JavaScript code. The code is collected into a single block that is injected just before the close body tag
-     * of the page (in a full page render) and collected as the "script" property of the partial page render response.
-     * The JavaScript is executed after the page loads (or in an Ajax update, after external JavaScript libraries are
-     * loaded and the DOM is updated).
-     * <p>
-     * This method may be called multiple times for the same priority and the script will be accumulated.
-     * 
-     * @param priority
-     *            when to execute the provided script
-     * @param script
-     *            statement to add to the block (a newline will be appended as well)
-     */
-    void addScript(InitializationPriority priority, String script);
-
-    /**
-     * Adds a call to the Tapestry.init() function. This may be called multiple times and the init() calls will occur
-     * in order. In a normal page render, the init() calls will be added to the main JavaScript block, but in a partial
-     * page render Ajax response, the initialization will be property "init" of the partial page render response.
-     * <p>
-     * This method should only be invoked at most once per priority.
-     * 
-     * @since 5.2.0
-     */
-    void setInitialization(InitializationPriority priority, JSONObject initialization);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java
deleted file mode 100644
index 42e5edd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/DocumentLinkerImpl.java
+++ /dev/null
@@ -1,302 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.Node;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Worker;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-public class DocumentLinkerImpl implements DocumentLinker
-{
-    private final List<String> scripts = CollectionFactory.newList();
-
-    private final Map<InitializationPriority, StringBuilder> priorityToScript = CollectionFactory.newMap();
-
-    private final Map<InitializationPriority, JSONObject> priorityToInit = CollectionFactory.newMap();
-
-    private final List<StylesheetLink> includedStylesheets = CollectionFactory.newList();
-
-    private final boolean compactJSON;
-
-    private final boolean omitGeneratorMetaTag;
-
-    private final String tapestryBanner;
-
-    private boolean hasDynamicScript;
-
-    /**
-     * @param omitGeneratorMetaTag
-     *            via symbol configuration
-     * @param tapestryVersion
-     *            version of Tapestry framework (for meta tag)
-     * @param compactJSON
-     *            should JSON content be compact or pretty printed?
-     */
-    public DocumentLinkerImpl(boolean omitGeneratorMetaTag, String tapestryVersion, boolean compactJSON)
-    {
-        this.omitGeneratorMetaTag = omitGeneratorMetaTag;
-
-        tapestryBanner = String.format("Apache Tapestry Framework (version %s)", tapestryVersion);
-
-        this.compactJSON = compactJSON;
-    }
-
-    public void addStylesheetLink(StylesheetLink sheet)
-    {
-        includedStylesheets.add(sheet);
-    }
-
-    public void addScriptLink(String scriptURL)
-    {
-        scripts.add(scriptURL);
-    }
-
-    public void addScript(InitializationPriority priority, String script)
-    {
-
-        StringBuilder builder = priorityToScript.get(priority);
-
-        if (builder == null)
-        {
-            builder = new StringBuilder();
-            priorityToScript.put(priority, builder);
-        }
-
-        builder.append(script);
-
-        builder.append("\n");
-
-        hasDynamicScript = true;
-    }
-
-    public void setInitialization(InitializationPriority priority, JSONObject initialization)
-    {
-        priorityToInit.put(priority, initialization);
-
-        hasDynamicScript = true;
-    }
-
-    /**
-     * Updates the supplied Document, possibly adding &lt;head&gt; or &lt;body&gt; elements.
-     * 
-     * @param document
-     *            to be updated
-     */
-    public void updateDocument(Document document)
-    {
-        Element root = document.getRootElement();
-
-        // If the document failed to render at all, that's a different problem and is reported elsewhere.
-
-        if (root == null)
-            return;
-
-        addStylesheetsToHead(root, includedStylesheets);
-
-        // only add the generator meta only to html documents
-
-        boolean isHtmlRoot = root.getName().equals("html");
-
-        if (!omitGeneratorMetaTag && isHtmlRoot)
-        {
-            Element head = findOrCreateElement(root, "head", true);
-            head.element("meta", "name", "generator", "content", tapestryBanner);
-        }
-
-        addScriptElements(root);
-    }
-
-    private void addScriptElements(Element root)
-    {
-        if (scripts.isEmpty() && !hasDynamicScript)
-            return;
-
-        // This only applies when the document is an HTML document. This may need to change in the
-        // future, perhaps configurable, to allow for html and xhtml and perhaps others. Does SVG
-        // use stylesheets?
-
-        String rootElementName = root.getName();
-
-        if (!rootElementName.equals("html"))
-            throw new RuntimeException(ServicesMessages.documentMissingHTMLRoot(rootElementName));
-
-        Element container = findOrCreateElement(root, "head", true);
-
-        // TAPESTRY-2364
-
-        addScriptLinksForIncludedScripts(container, scripts);
-
-        if (hasDynamicScript)
-            addDynamicScriptBlock(findOrCreateElement(root, "body", false));
-    }
-
-    private Element findOrCreateElement(Element root, String childElement, boolean atTop)
-    {
-        Element container = root.find(childElement);
-
-        // Create the element is it is missing.
-
-        if (container == null)
-            container = atTop ? root.elementAt(0, childElement) : root.element(childElement);
-
-        return container;
-    }
-
-    /**
-     * Adds the dynamic script block, which is, ultimately, a call to the client-side Tapestry.onDOMLoaded() function.
-     * 
-     * @param body
-     *            element to add the dynamic scripting to
-     */
-    protected void addDynamicScriptBlock(Element body)
-    {
-        StringBuilder block = new StringBuilder();
-
-        boolean wrapped = false;
-
-        for (InitializationPriority p : InitializationPriority.values())
-        {
-            if (p != InitializationPriority.IMMEDIATE && !wrapped
-                    && (priorityToScript.containsKey(p) || priorityToInit.containsKey(p)))
-            {
-
-                block.append("Tapestry.onDOMLoaded(function() {\n");
-
-                wrapped = true;
-            }
-
-            add(block, p);
-        }
-
-        if (wrapped)
-            block.append("});\n");
-
-        Element e = body.element("script", "type", "text/javascript");
-
-        e.raw(block.toString());
-
-    }
-
-    private void add(StringBuilder block, InitializationPriority priority)
-    {
-        add(block, priorityToScript.get(priority));
-        add(block, priorityToInit.get(priority));
-    }
-
-    private void add(StringBuilder block, JSONObject init)
-    {
-        if (init == null)
-            return;
-
-        block.append("Tapestry.init(");
-        block.append(init.toString(compactJSON));
-        block.append(");\n");
-    }
-
-    private void add(StringBuilder block, StringBuilder content)
-    {
-        if (content == null)
-            return;
-
-        block.append(content);
-    }
-
-    /**
-     * Adds a script link for each included script to the bottom of the container (the &lt;head&gt;).
-     * 
-     * @param container
-     *            element to add the script links to
-     * @param scripts
-     *            scripts to add
-     */
-    protected void addScriptLinksForIncludedScripts(Element container, List<String> scripts)
-    {
-        final Element scriptContainer = container.elementAt(0, "script-container");
-
-        Worker<String> addScript = new Worker<String>()
-        {
-            public void work(String scriptURL)
-            {
-                scriptContainer.element("script", "type", "text/javascript", "src", scriptURL);
-            }
-        };
-
-        F.flow(scripts).each(addScript);
-
-        scriptContainer.pop();
-    }
-
-    /**
-     * Locates the head element under the root ("html") element, creating it if necessary, and adds the stylesheets to
-     * it.
-     * 
-     * @param root
-     *            element of document
-     * @param stylesheets
-     *            to add to the document
-     */
-    protected void addStylesheetsToHead(Element root, List<StylesheetLink> stylesheets)
-    {
-        int count = stylesheets.size();
-
-        if (count == 0)
-            return;
-
-        // This only applies when the document is an HTML document. This may need to change in the
-        // future, perhaps configurable, to allow for html and xhtml and perhaps others. Does SVG
-        // use stylesheets?
-
-        String rootElementName = root.getName();
-
-        // Not an html document, don't add anything.
-        if (!rootElementName.equals("html"))
-            return;
-
-        Element head = findOrCreateElement(root, "head", true);
-
-        // Create a temporary container element.
-        Element container = head.elementAt(0, "stylesheet-link-container");
-
-        for (int i = 0; i < count; i++)
-            stylesheets.get(i).add(container);
-
-        container.pop();
-    }
-
-    Element findExistingElement(Element container, String elementName)
-    {
-        for (Node n : container.getChildren())
-        {
-            if (n instanceof Element)
-            {
-                Element e = (Element) n;
-
-                if (e.getName().equalsIgnoreCase(elementName))
-                    return e;
-            }
-        }
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EmptyClientInfrastructure.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EmptyClientInfrastructure.java
deleted file mode 100644
index 90de02d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EmptyClientInfrastructure.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.services.ClientInfrastructure;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Used for Ajax responses to provide an empty stack (since, by definition, the client must already have the base
- * stack).
- *
- * @since 5.1.0.2
- */
-public class EmptyClientInfrastructure implements ClientInfrastructure
-{
-    public List<Asset> getJavascriptStack()
-    {
-        return Collections.emptyList();
-    }
-
-    public List<Asset> getStylesheetStack()
-    {
-        return Collections.emptyList();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHub.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHub.java
deleted file mode 100644
index 27852b7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHub.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.events.EndOfRequestListener;
-
-/**
- * Manages request notifications for the {@link org.apache.tapestry5.internal.events.EndOfRequestListener} interface.
- */
-public interface EndOfRequestEventHub
-{
-    void addEndOfRequestListener(EndOfRequestListener listener);
-
-    void removeEndOfRequestListener(EndOfRequestListener listener);
-
-    /**
-     * Invoked at the end of the request to notify the listeners.
-     */
-    void fire();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java
deleted file mode 100644
index bd1bd21..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.events.EndOfRequestListener;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.List;
-
-public class EndOfRequestEventHubImpl implements EndOfRequestEventHub
-{
-    private final List<EndOfRequestListener> listeners = CollectionFactory.newThreadSafeList();
-
-    public void addEndOfRequestListener(EndOfRequestListener listener)
-    {
-        listeners.add(listener);
-    }
-
-    public void removeEndOfRequestListener(EndOfRequestListener listener)
-    {
-        listeners.remove(listener);
-    }
-
-    public void fire()
-    {
-        for (EndOfRequestListener l : listeners)
-        {
-            l.requestDidComplete();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java
deleted file mode 100644
index ad80e37..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnumValueEncoderFactory.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-import org.apache.tapestry5.util.EnumValueEncoder;
-
-/**
- * Factory that provides a configured instance of {@link EnumValueEncoder}.
- *
- * @param <E>
- */
-public class EnumValueEncoderFactory<E extends Enum<E>> implements ValueEncoderFactory<E>
-{
-    public ValueEncoder<E> create(Class<E> type)
-    {
-        return new EnumValueEncoder<E>(type);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
deleted file mode 100644
index 4b040ad..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentImpl.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.EnvironmentalAccess;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A non-threadsafe implementation (expects to use the "perthread" service lifecyle).
- */
-public class EnvironmentImpl implements Environment, ThreadCleanupListener
-{
-
-    // My generics mojo breaks down when we talk about the key and the value being related
-    // types.
-
-    private final Map<Class, LinkedList> typeToStack = CollectionFactory.newMap();
-
-    private final Map<Class, EnvironmentalAccessImpl> typeToAccess = CollectionFactory.newMap();
-
-    private final OneShotLock lock = new OneShotLock();
-
-    @SuppressWarnings("unchecked")
-    private <T> LinkedList<T> stackFor(Class<T> type)
-    {
-        lock.check();
-
-        LinkedList<T> result = typeToStack.get(type);
-
-        if (result == null)
-        {
-            result = CollectionFactory.newLinkedList();
-            typeToStack.put(type, result);
-        }
-
-        return result;
-    }
-
-    public <T> T peek(Class<T> type)
-    {
-        LinkedList<T> stack = stackFor(type);
-
-        return stack.isEmpty() ? null : stack.getFirst();
-    }
-
-    public <T> T peekRequired(Class<T> type)
-    {
-        T result = peek(type);
-
-        if (result == null)
-        {
-            List<Class> types = CollectionFactory.newList();
-            for (Map.Entry<Class, LinkedList> e : typeToStack.entrySet())
-            {
-                LinkedList list = e.getValue();
-
-                if (list != null && !list.isEmpty()) types.add(e.getKey());
-            }
-
-            throw new RuntimeException(ServicesMessages.missingFromEnvironment(type, types));
-        }
-
-        return result;
-    }
-
-    public <T> T pop(Class<T> type)
-    {
-        LinkedList<T> stack = stackFor(type);
-
-        invalidate(type);
-
-        return stack.removeFirst();
-    }
-
-    public <T> T push(Class<T> type, T instance)
-    {
-        LinkedList<T> stack = stackFor(type);
-
-        T result = stack.isEmpty() ? null : stack.getFirst();
-
-        stack.addFirst(instance);
-
-        invalidate(type);
-
-        return result;
-    }
-
-    public void clear()
-    {
-        lock.check();
-
-        typeToStack.clear();
-
-        for (EnvironmentalAccessImpl closure : typeToAccess.values())
-        {
-            closure.invalidate();
-        }
-    }
-
-    public <T> EnvironmentalAccess<T> getAccess(Class<T> type)
-    {
-        lock.check();
-
-        EnvironmentalAccessImpl access = typeToAccess.get(type);
-
-        if (access == null)
-        {
-            access = new EnvironmentalAccessImpl(this, type);
-            typeToAccess.put(type, access);
-        }
-
-        return access;
-    }
-
-    public void threadDidCleanup()
-    {
-        lock.lock();
-    }
-
-    void invalidate(Class type)
-    {
-        EnvironmentalAccessImpl access = typeToAccess.get(type);
-
-        if (access != null) access.invalidate();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalAccessImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalAccessImpl.java
deleted file mode 100644
index 5c19bba..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalAccessImpl.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.EnvironmentalAccess;
-
-class EnvironmentalAccessImpl implements EnvironmentalAccess
-{
-    private final Environment environment;
-
-    private final Class type;
-
-    private boolean cached = false;
-
-    private Object currentValue;
-
-    public EnvironmentalAccessImpl(Environment environment, Class type)
-    {
-        this.environment = environment;
-        this.type = type;
-    }
-
-    public Object peek()
-    {
-        if (!cached)
-        {
-            currentValue = environment.peek(type);
-            cached = true;
-        }
-
-        return currentValue;
-    }
-
-    public Object peekRequired()
-    {
-        if (!cached)
-        {
-            currentValue = environment.peekRequired(type);
-            cached = true;
-        }
-
-        return currentValue;
-    }
-
-    /**
-     * Invoked whenever the value stored in the Environment (for this type) changes.
-     */
-    void invalidate()
-    {
-        cached = false;
-        currentValue = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java
deleted file mode 100644
index b699249..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImpl.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-
-public class EnvironmentalShadowBuilderImpl implements EnvironmentalShadowBuilder
-{
-    private final ClassFactory classFactory;
-
-    private final Environment environment;
-
-    /**
-     * Construct using the default builtin factory, not the component layer version.
-     */
-    public EnvironmentalShadowBuilderImpl(@Builtin ClassFactory classFactory,
-
-                                          Environment environment)
-    {
-        this.classFactory = classFactory;
-        this.environment = environment;
-    }
-
-    public <T> T build(Class<T> serviceType)
-    {
-        // TODO: Check that serviceType is an interface?
-
-        Class proxyClass = buildProxyClass(serviceType);
-
-        try
-        {
-            Constructor cons = proxyClass.getConstructors()[0];
-
-            Object raw = cons.newInstance(environment, serviceType);
-
-            return serviceType.cast(raw);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private Class buildProxyClass(Class serviceType)
-    {
-        ClassFab classFab = classFactory.newClass(serviceType);
-
-        classFab.addField("environment", Environment.class);
-        classFab.addField("_serviceType", Class.class);
-
-        classFab.addConstructor(new Class[] { Environment.class, Class.class }, null,
-                                "{ environment = $1; _serviceType = $2; }");
-
-        classFab.addMethod(Modifier.PRIVATE, new MethodSignature(serviceType, "_delegate", null, null),
-                           "return ($r) environment.peekRequired(_serviceType); ");
-
-        classFab.proxyMethodsToDelegate(serviceType, "_delegate()",
-                                        String.format("<EnvironmentalProxy for %s>", serviceType.getName()));
-
-        return classFab.createClass();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java
deleted file mode 100644
index 6aa55ce..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/EventImpl.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.TapestryMarkers;
-import org.apache.tapestry5.runtime.Event;
-import org.slf4j.Logger;
-
-@SuppressWarnings("all")
-public class EventImpl implements Event
-{
-    private boolean aborted;
-
-    private String methodDescription;
-
-    private final ComponentEventCallback handler;
-
-    private final Logger logger;
-
-    private final boolean debugEnabled;
-
-    /**
-     * @param handler informed of return values from methods, deems when the event is aborted
-     * @param logger  used to log method invocations
-     */
-    public EventImpl(ComponentEventCallback handler, Logger logger)
-    {
-        assert handler != null;
-        this.handler = handler;
-        this.logger = logger;
-
-        // TAP5-471: Thousands of calls to isDebugEnabled() do add up
-        debugEnabled = logger.isDebugEnabled();
-    }
-
-    public boolean isAborted()
-    {
-        return aborted;
-    }
-
-    public void setMethodDescription(String methodDescription)
-    {
-        if (debugEnabled)
-            logger.debug(TapestryMarkers.EVENT_HANDLER_METHOD, "Invoking: " + methodDescription);
-
-        this.methodDescription = methodDescription;
-    }
-
-    @SuppressWarnings("unchecked")
-    public boolean storeResult(Object result)
-    {
-        // Given that this method is *only* invoked from code
-        // that is generated at runtime and proven to be correct,
-        // this should never, ever happen. But what the hell,
-        // let's check anyway.
-
-        if (aborted)
-            throw new IllegalStateException(ServicesMessages.componentEventIsAborted(methodDescription));
-
-
-        if (result != null)
-            aborted |= handler.handleResult(result);
-
-        return aborted;
-    }
-
-    protected String getMethodDescription()
-    {
-        return methodDescription;
-    }
-
-    public void reset()
-    {
-        aborted = false;
-        methodDescription = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java
deleted file mode 100644
index 710952c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-public class FieldTranslatorImpl<T> implements FieldTranslator<T>
-{
-    private final Field field;
-    private final Translator<T> translator;
-    private final MessageFormatter formatter;
-    private final FormSupport formSupport;
-
-    public FieldTranslatorImpl(Field field, Translator<T> translator, MessageFormatter formatter,
-                               FormSupport formSupport)
-    {
-        this.field = field;
-        this.translator = translator;
-        this.formatter = formatter;
-        this.formSupport = formSupport;
-    }
-
-    public T parse(String input) throws ValidationException
-    {
-        return translator.parseClient(field, input, formatMessage());
-    }
-
-    private String formatMessage()
-    {
-        return formatter.format(field.getLabel());
-    }
-
-    public void render(MarkupWriter writer)
-    {
-        translator.render(field, formatMessage(), writer, formSupport);
-    }
-
-    public String toClient(T value)
-    {
-        return translator.toClient(value);
-    }
-
-    public Class<T> getType()
-    {
-        return translator.getType();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
deleted file mode 100644
index b8c2324..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImpl.java
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.beaneditor.Translate;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.FieldTranslatorSource;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.TranslatorSource;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-
-@SuppressWarnings("all")
-public class FieldTranslatorSourceImpl implements FieldTranslatorSource
-{
-    private final TranslatorSource translatorSource;
-
-    private final ValidationMessagesSource validationMessagesSource;
-
-    private final FormSupport formSupport;
-
-    public FieldTranslatorSourceImpl(TranslatorSource translatorSource,
-            ValidationMessagesSource validationMessagesSource, FormSupport formSupport)
-    {
-        this.translatorSource = translatorSource;
-        this.validationMessagesSource = validationMessagesSource;
-        this.formSupport = formSupport;
-    }
-
-    public FieldTranslator createDefaultTranslator(ComponentResources resources, String parameterName)
-    {
-        assert resources != null;
-        assert InternalUtils.isNonBlank(parameterName);
-        Field field = (Field) resources.getComponent();
-        Class propertyType = resources.getBoundType(parameterName);
-
-        return createDefaultTranslator(field, resources.getId(), resources.getContainerMessages(), resources
-                .getLocale(), propertyType, resources.getAnnotationProvider(parameterName));
-    }
-
-    public FieldTranslator createDefaultTranslator(Field field, String overrideId, Messages overrideMessages,
-            Locale locale, Class propertyType, AnnotationProvider propertyAnnotations)
-    {
-        assert field != null;
-        assert overrideMessages != null;
-        assert locale != null;
-        assert InternalUtils.isNonBlank(overrideId);
-        if (propertyType == null)
-            return null;
-
-        Translator translator = findTranslator(propertyType, propertyAnnotations);
-
-        if (translator == null)
-            return null;
-
-        return createTranslator(field, overrideId, overrideMessages, locale, translator);
-    }
-
-    Translator findTranslator(Class propertyType, AnnotationProvider propertyAnnotations)
-    {
-        Translate annotation = propertyAnnotations.getAnnotation(Translate.class);
-
-        if (annotation != null)
-            return translatorSource.get(annotation.value());
-
-        if (propertyType == null)
-            return null;
-
-        return translatorSource.findByType(propertyType);
-    }
-
-    public FieldTranslator createTranslator(Field field, String overrideId, Messages overrideMessages, Locale locale,
-            Translator translator)
-    {
-        MessageFormatter formatter = findFormatter(overrideId, overrideMessages, locale, translator);
-
-        return new FieldTranslatorImpl(field, translator, formatter, formSupport);
-    }
-
-    public FieldTranslator createTranslator(ComponentResources resources, String translatorName)
-    {
-        assert resources != null;
-        assert InternalUtils.isNonBlank(translatorName);
-        Field field = (Field) resources.getComponent();
-
-        Translator translator = translatorSource.get(translatorName);
-
-        return createTranslator(field, resources.getId(), resources.getContainerMessages(), resources.getLocale(),
-                translator);
-    }
-
-    private MessageFormatter findFormatter(String overrideId, Messages overrideMessages, Locale locale,
-            Translator translator)
-    {
-        // TAP5-228: Try to distinguish message overrides by form id and overrideId (i.e., property name) first.
-
-        String translatorName = translator.getName();
-
-        String overrideKey = formSupport.getFormValidationId() + "-" + overrideId + "-" + translatorName + "-message";
-
-        if (overrideMessages.contains(overrideKey))
-            return overrideMessages.getFormatter(overrideKey);
-
-        // Ok, look for a simpler name that omits the formId prefix.
-
-        overrideKey = overrideId + "-" + translatorName + "-message";
-
-        if (overrideMessages.contains(overrideKey))
-            return overrideMessages.getFormatter(overrideKey);
-
-        // Otherwise, use the built-in validation message appropriate to this validator.
-
-        Messages validationMessages = validationMessagesSource.getValidationMessages(locale);
-
-        return validationMessages.getFormatter(translator.getMessageKey());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java
deleted file mode 100644
index feed759..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidationSupportImpl.java
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.FieldValidationSupport;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.corelib.internal.InternalMessages;
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.ExceptionUtils;
-
-@SuppressWarnings("all")
-public class FieldValidationSupportImpl implements FieldValidationSupport
-{
-    private final TypeCoercer typeCoercer;
-
-    public FieldValidationSupportImpl(TypeCoercer typeCoercer)
-    {
-        this.typeCoercer = typeCoercer;
-    }
-
-    public String toClient(Object value, ComponentResources componentResources, FieldTranslator<Object> translator,
-            NullFieldStrategy nullFieldStrategy)
-    {
-        assert componentResources != null;
-        assert translator != null;
-        assert nullFieldStrategy != null;
-        final Holder<String> resultHolder = Holder.create();
-
-        ComponentEventCallback callback = new ComponentEventCallback()
-        {
-            public boolean handleResult(Object result)
-            {
-                // What's nice is that the ComponentEventException will automatically identify
-                // the method description.
-
-                if (!(result instanceof String))
-                    throw new RuntimeException(InternalMessages.toClientShouldReturnString());
-
-                resultHolder.put((String) result);
-
-                return true;
-            }
-        };
-
-        componentResources.triggerEvent(EventConstants.TO_CLIENT, new Object[]
-        { value }, callback);
-
-        if (resultHolder.hasValue())
-            return resultHolder.get();
-
-        Object effectiveValue = value;
-
-        if (effectiveValue == null)
-        {
-            effectiveValue = nullFieldStrategy.replaceToClient();
-
-            // Don't try to coerce or translate null.
-
-            if (effectiveValue == null)
-                return null;
-        }
-
-        // And now, whether its a value from a bound property, or from the null field strategy,
-        // get it into the right format for the translator and let it translate.
-
-        Object coerced = typeCoercer.coerce(effectiveValue, translator.getType());
-
-        return translator.toClient(coerced);
-    }
-
-    public Object parseClient(String clientValue, ComponentResources componentResources,
-            FieldTranslator<Object> translator, NullFieldStrategy nullFieldStrategy) throws ValidationException
-    {
-        assert componentResources != null;
-        assert translator != null;
-        assert nullFieldStrategy != null;
-        String effectiveValue = clientValue;
-
-        if (InternalUtils.isBlank(effectiveValue))
-        {
-            effectiveValue = nullFieldStrategy.replaceFromClient();
-
-            if (effectiveValue == null)
-                return null;
-        }
-
-        final Holder<Object> resultHolder = Holder.create();
-
-        ComponentEventCallback callback = new ComponentEventCallback()
-        {
-            public boolean handleResult(Object result)
-            {
-                resultHolder.put(result);
-                return true;
-            }
-        };
-
-        try
-        {
-            componentResources.triggerEvent(EventConstants.PARSE_CLIENT, new Object[]
-            { effectiveValue }, callback);
-        }
-        catch (RuntimeException ex)
-        {
-            rethrowValidationException(ex);
-        }
-
-        if (resultHolder.hasValue())
-            return resultHolder.get();
-
-        return translator.parse(effectiveValue);
-    }
-
-    /**
-     * Checks for a {@link org.apache.tapestry5.ValidationException} inside the outer exception and throws that,
-     * otherwise rethrows the runtime exception.
-     * 
-     * @param outerException
-     *            initially caught exception
-     * @throws ValidationException
-     *             if found
-     */
-    private void rethrowValidationException(RuntimeException outerException) throws ValidationException
-    {
-        ValidationException ve = ExceptionUtils.findCause(outerException, ValidationException.class);
-
-        if (ve != null)
-            throw ve;
-
-        throw outerException;
-    }
-
-    @SuppressWarnings(
-    { "unchecked" })
-    public void validate(Object value, ComponentResources componentResources, FieldValidator validator)
-            throws ValidationException
-    {
-        assert componentResources != null;
-        assert validator != null;
-        validator.validate(value);
-
-        try
-        {
-            componentResources.triggerEvent(EventConstants.VALIDATE, new Object[]
-            { value }, null);
-        }
-        catch (RuntimeException ex)
-        {
-            rethrowValidationException(ex);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java
deleted file mode 100644
index 90acb76..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImpl.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.internal.beaneditor.EnvironmentMessages;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.FieldValidatorSource;
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-import org.apache.tapestry5.services.Environment;
-
-import java.util.List;
-import java.util.Locale;
-
-public class FieldValidatorDefaultSourceImpl implements FieldValidatorDefaultSource
-{
-    private final ValidationConstraintGenerator validationConstraintGenerator;
-
-    private final FieldValidatorSource fieldValidatorSource;
-
-    public FieldValidatorDefaultSourceImpl(
-            ValidationConstraintGenerator validationConstraintGenerator,
-            FieldValidatorSource fieldValidatorSource)
-    {
-        this.validationConstraintGenerator = validationConstraintGenerator;
-        this.fieldValidatorSource = fieldValidatorSource;
-    }
-
-    public FieldValidator createDefaultValidator(Field field, String overrideId,
-                                                 Messages overrideMessages, Locale locale, Class propertyType,
-                                                 AnnotationProvider propertyAnnotations)
-    {
-        List<FieldValidator> validators = newList();
-
-        for (String constraint : validationConstraintGenerator.buildConstraints(
-                propertyType,
-                propertyAnnotations))
-        {
-            int equalsx = constraint.indexOf('=');
-
-            String validatorType = equalsx > 0 ? constraint.substring(0, equalsx) : constraint;
-            String constraintValue = equalsx > 0 ? constraint.substring(equalsx + 1) : null;
-
-            FieldValidator validator = fieldValidatorSource.createValidator(
-                    field,
-                    validatorType,
-                    constraintValue,
-                    overrideId,
-                    overrideMessages,
-                    locale);
-
-            validators.add(validator);
-        }
-        return validators.size() == 1 ? validators.get(0) : new CompositeFieldValidator(validators);
-    }
-
-    public FieldValidator createDefaultValidator(ComponentResources resources, String parameterName)
-    {
-        Class propertyType = resources.getBoundType(parameterName);
-
-        if (propertyType == null) return null;
-
-        Field field = (Field) resources.getComponent();
-
-        return createDefaultValidator(field, resources.getId(), resources.getContainerMessages(), resources.getLocale(),
-                                      propertyType, resources.getAnnotationProvider(parameterName));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java
deleted file mode 100644
index eb6ea27..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-public class FieldValidatorImpl implements FieldValidator
-{
-    private final Field field;
-
-    private final Object constraintValue;
-
-    private final MessageFormatter messageFormatter;
-
-    private final Validator validator;
-
-    private final FormSupport formSupport;
-
-    public FieldValidatorImpl(Field field, Object constraintValue, MessageFormatter messageFormatter,
-                              Validator validator, FormSupport formSupport)
-    {
-        this.field = field;
-        this.constraintValue = constraintValue;
-        this.messageFormatter = messageFormatter;
-        this.validator = validator;
-        this.formSupport = formSupport;
-    }
-
-    @SuppressWarnings("unchecked")
-    public void validate(Object value) throws ValidationException
-    {
-        if (!validator.isRequired() && isBlank(value)) return;
-
-        if (value != null && !validator.getValueType().isInstance(value)) return;
-
-        validator.validate(field, constraintValue, messageFormatter, value);
-    }
-
-    @SuppressWarnings("unchecked")
-    public void render(MarkupWriter writer)
-    {
-        validator.render(field, constraintValue, messageFormatter, writer, formSupport);
-    }
-
-    public boolean isRequired()
-    {
-        return validator.isRequired();
-    }
-
-    private boolean isBlank(Object value)
-    {
-        return value == null || value.equals("");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java
deleted file mode 100644
index 432874c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImpl.java
+++ /dev/null
@@ -1,427 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.Validator;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.FieldValidatorSource;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-import org.apache.tapestry5.validator.ValidatorMacro;
-
-@SuppressWarnings("all")
-public class FieldValidatorSourceImpl implements FieldValidatorSource
-{
-    private final ValidationMessagesSource messagesSource;
-
-    private final Map<String, Validator> validators;
-
-    private final TypeCoercer typeCoercer;
-
-    private final FormSupport formSupport;
-
-    private final ValidatorMacro validatorMacro;
-
-    public FieldValidatorSourceImpl(ValidationMessagesSource messagesSource, TypeCoercer typeCoercer,
-            FormSupport formSupport, Map<String, Validator> validators, ValidatorMacro validatorMacro)
-    {
-        this.messagesSource = messagesSource;
-        this.typeCoercer = typeCoercer;
-        this.formSupport = formSupport;
-        this.validators = validators;
-        this.validatorMacro = validatorMacro;
-    }
-
-    public FieldValidator createValidator(Field field, String validatorType, String constraintValue)
-    {
-        Component component = (Component) field;        
-        assert InternalUtils.isNonBlank(validatorType);
-        ComponentResources componentResources = component.getComponentResources();
-        String overrideId = componentResources.getId();
-        Locale locale = componentResources.getLocale();
-
-        // So, if you use a TextField on your EditUser page, we want to search the messages
-        // of the EditUser page (the container), not the TextField (which will always be the same).
-
-        Messages overrideMessages = componentResources.getContainerMessages();
-
-        return createValidator(field, validatorType, constraintValue, overrideId, overrideMessages, locale);
-    }
-
-    public FieldValidator createValidator(Field field, String validatorType, String constraintValue, String overrideId,
-            Messages overrideMessages, Locale locale)
-    {
-    	
-    	ValidatorSpecification originalSpec = new ValidatorSpecification(validatorType, constraintValue);
-    	
-    	List<ValidatorSpecification> specs = expandMacros(newList(originalSpec));
-    	
-    	List<FieldValidator> fieldValidators = CollectionFactory.newList();
-    	
-    	for (ValidatorSpecification spec : specs) {
-			fieldValidators.add(createValidator(field, spec, overrideId, overrideMessages, locale));
-		}
-    	
-    	return new CompositeFieldValidator(fieldValidators);
-    }
-    
-    private FieldValidator createValidator(Field field, ValidatorSpecification spec, String overrideId,
-            Messages overrideMessages, Locale locale)
-    {
-    	
-    	String validatorType = spec.getValidatorType();
-    	
-        assert InternalUtils.isNonBlank(validatorType);
-        Validator validator = validators.get(validatorType);
-
-        if (validator == null)
-            throw new IllegalArgumentException(ServicesMessages.unknownValidatorType(validatorType, InternalUtils
-                    .sortedKeys(validators)));
-
-        // I just have this thing about always treating parameters as finals, so
-        // we introduce a second variable to treat a mutable.
-
-        String formValidationid = formSupport.getFormValidationId();
-
-        Object coercedConstraintValue = computeConstraintValue(validatorType, validator, spec.getConstraintValue(),
-                formValidationid, overrideId, overrideMessages);
-
-        MessageFormatter formatter = findMessageFormatter(formValidationid, overrideId, overrideMessages, locale,
-                validatorType, validator);
-
-        return new FieldValidatorImpl(field, coercedConstraintValue, formatter, validator, formSupport);
-    }
-
-    private Object computeConstraintValue(String validatorType, Validator validator, String constraintValue,
-            String formId, String overrideId, Messages overrideMessages)
-    {
-        Class constraintType = validator.getConstraintType();
-
-        String constraintText = findConstraintValue(validatorType, constraintType, constraintValue, formId, overrideId,
-                overrideMessages);
-
-        if (constraintText == null)
-            return null;
-
-        return typeCoercer.coerce(constraintText, constraintType);
-    }
-
-    private String findConstraintValue(String validatorType, Class constraintType, String constraintValue,
-            String formValidationId, String overrideId, Messages overrideMessages)
-    {
-        if (constraintValue != null)
-            return constraintValue;
-
-        if (constraintType == null)
-            return null;
-
-        // If no constraint was provided, check to see if it is available via a localized message
-        // key. This is really handy for complex validations such as patterns.
-
-        String perFormKey = formValidationId + "-" + overrideId + "-" + validatorType;
-
-        if (overrideMessages.contains(perFormKey))
-            return overrideMessages.get(perFormKey);
-
-        String generalKey = overrideId + "-" + validatorType;
-
-        if (overrideMessages.contains(generalKey))
-            return overrideMessages.get(generalKey);
-
-        throw new IllegalArgumentException(ServicesMessages.missingValidatorConstraint(validatorType, constraintType,
-                perFormKey, generalKey));
-    }
-
-    private MessageFormatter findMessageFormatter(String formId, String overrideId, Messages overrideMessages,
-            Locale locale, String validatorType, Validator validator)
-    {
-
-        String overrideKey = formId + "-" + overrideId + "-" + validatorType + "-message";
-
-        if (overrideMessages.contains(overrideKey))
-            return overrideMessages.getFormatter(overrideKey);
-
-        overrideKey = overrideId + "-" + validatorType + "-message";
-
-        if (overrideMessages.contains(overrideKey))
-            return overrideMessages.getFormatter(overrideKey);
-
-        Messages messages = messagesSource.getValidationMessages(locale);
-
-        String key = validator.getMessageKey();
-
-        return messages.getFormatter(key);
-    }
-
-    public FieldValidator createValidators(Field field, String specification)
-    {
-        List<ValidatorSpecification> specs = toValidatorSpecifications(specification);
-
-        List<FieldValidator> fieldValidators = CollectionFactory.newList();
-
-        for (ValidatorSpecification spec : specs)
-        {
-            fieldValidators.add(createValidator(field, spec.getValidatorType(), spec.getConstraintValue()));
-        }
-
-        if (fieldValidators.size() == 1)
-            return fieldValidators.get(0);
-
-        return new CompositeFieldValidator(fieldValidators);
-    }
-
-    List<ValidatorSpecification> toValidatorSpecifications(String specification)
-    {
-        return expandMacros(parse(specification));
-    }
-
-    private List<ValidatorSpecification> expandMacros(List<ValidatorSpecification> specs)
-    {
-        Map<String, Boolean> expandedMacros = CollectionFactory.newCaseInsensitiveMap();
-        List<ValidatorSpecification> queue = CollectionFactory.newList(specs);
-        List<ValidatorSpecification> result = CollectionFactory.newList();
-
-        while (!queue.isEmpty())
-        {
-            ValidatorSpecification head = queue.remove(0);
-
-            String validatorType = head.getValidatorType();
-
-            String expanded = validatorMacro.valueForMacro(validatorType);
-            if (expanded != null)
-            {
-                if (head.getConstraintValue() != null)
-                    throw new RuntimeException(String.format(
-                            "'%s' is a validator macro, not a validator, and can not have a constraint value.",
-                            validatorType));
-
-                if (expandedMacros.containsKey(validatorType))
-                    throw new RuntimeException(String.format("Validator macro '%s' appears more than once.",
-                            validatorType));
-
-                expandedMacros.put(validatorType, true);
-
-                List<ValidatorSpecification> parsed = parse(expanded);
-
-                // Add the new validator specifications to the front of the queue, replacing the validator macro
-
-                for (int i = 0; i < parsed.size(); i++)
-                {
-                    queue.add(i, parsed.get(i));
-                }
-            }
-            else
-            {
-                result.add(head);
-            }
-        }
-
-        return result;
-    }
-
-    /**
-     * A code defining what the parser is looking for.
-     */
-    enum State
-    {
-
-        /**
-         * The start of a validator type.
-         */
-        TYPE_START,
-        /**
-         * The end of a validator type.
-         */
-        TYPE_END,
-        /**
-         * Equals sign after a validator type, or a comma.
-         */
-        EQUALS_OR_COMMA,
-        /**
-         * The start of a constraint value.
-         */
-        VALUE_START,
-        /**
-         * The end of the constraint value.
-         */
-        VALUE_END,
-        /**
-         * The comma after a constraint value.
-         */
-        COMMA
-    }
-
-    static List<ValidatorSpecification> parse(String specification)
-    {
-        List<ValidatorSpecification> result = newList();
-
-        char[] input = specification.toCharArray();
-
-        int cursor = 0;
-        int start = -1;
-
-        String type = null;
-        boolean skipWhitespace = true;
-        State state = State.TYPE_START;
-
-        while (cursor < input.length)
-        {
-            char ch = input[cursor];
-
-            if (skipWhitespace && Character.isWhitespace(ch))
-            {
-                cursor++;
-                continue;
-            }
-
-            skipWhitespace = false;
-
-            switch (state)
-            {
-
-                case TYPE_START:
-
-                    if (Character.isLetter(ch))
-                    {
-                        start = cursor;
-                        state = State.TYPE_END;
-                        break;
-                    }
-
-                    parseError(cursor, specification);
-
-                case TYPE_END:
-
-                    if (Character.isLetter(ch))
-                    {
-                        break;
-                    }
-
-                    type = specification.substring(start, cursor);
-
-                    skipWhitespace = true;
-                    state = State.EQUALS_OR_COMMA;
-                    continue;
-
-                case EQUALS_OR_COMMA:
-
-                    if (ch == '=')
-                    {
-                        skipWhitespace = true;
-                        state = State.VALUE_START;
-                        break;
-                    }
-
-                    if (ch == ',')
-                    {
-                        result.add(new ValidatorSpecification(type));
-                        type = null;
-                        state = State.COMMA;
-                        continue;
-                    }
-
-                    parseError(cursor, specification);
-
-                case VALUE_START:
-
-                    start = cursor;
-                    state = State.VALUE_END;
-                    break;
-
-                case VALUE_END:
-
-                    // The value ends when we hit whitespace or a comma
-
-                    if (Character.isWhitespace(ch) || ch == ',')
-                    {
-                        String value = specification.substring(start, cursor);
-
-                        result.add(new ValidatorSpecification(type, value));
-                        type = null;
-
-                        skipWhitespace = true;
-                        state = State.COMMA;
-                        continue;
-                    }
-
-                    break;
-
-                case COMMA:
-
-                    if (ch == ',')
-                    {
-                        skipWhitespace = true;
-                        state = State.TYPE_START;
-                        break;
-                    }
-
-                    parseError(cursor, specification);
-            } // case
-
-            cursor++;
-        } // while
-
-        // cursor is now one character past end of string.
-        // Cleanup whatever state we were in the middle of.
-
-        switch (state)
-        {
-            case TYPE_END:
-
-                type = specification.substring(start);
-
-            case EQUALS_OR_COMMA:
-
-                result.add(new ValidatorSpecification(type));
-                break;
-
-            // Case when the specification ends with an equals sign.
-
-            case VALUE_START:
-                result.add(new ValidatorSpecification(type, ""));
-                break;
-
-            case VALUE_END:
-
-                result.add(new ValidatorSpecification(type, specification.substring(start)));
-                break;
-
-            // For better or worse, ending the string with a comma is valid.
-
-            default:
-        }
-
-        return result;
-    }
-
-    private static void parseError(int cursor, String specification)
-    {
-        throw new RuntimeException(ServicesMessages.validatorSpecificationParseError(cursor, specification));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FlashPersistentFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FlashPersistentFieldStrategy.java
deleted file mode 100644
index fca9585..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/FlashPersistentFieldStrategy.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-/**
- * The "flash" strategy stores data inside the {@link Session session}, just like {@link
- * SessionPersistentFieldStrategy}, but also removes the values from the session on first use. In this way, a short-term
- * value (such as an error message) will "survive" from an action request to a render request and then disappear.
- */
-public class FlashPersistentFieldStrategy extends AbstractSessionPersistentFieldStrategy
-{
-    /**
-     * Prefix used to identify keys stored in the session.
-     */
-    static final String PREFIX = "flash:";
-
-    public FlashPersistentFieldStrategy(Request request)
-    {
-        super(PREFIX, request);
-    }
-
-    @Override
-    protected void didReadChange(Session session, String attributeName)
-    {
-        // For flash persistence, after reading a value, get rid of it.
-        session.setAttribute(attributeName, null);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/GenericValueEncoderFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/GenericValueEncoderFactory.java
deleted file mode 100644
index b903319..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/GenericValueEncoderFactory.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-
-/**
- * An implementation of {@link ValueEncoderFactory} that returns a pre-wired instance of {@link ValueEncoder}. This is
- * odd for a factory, because it doesn't actually create the returned instance, just stores it until the encoder is
- * needed.
- *
- * @param <V>
- */
-public class GenericValueEncoderFactory<V> implements ValueEncoderFactory<V>
-{
-    private final ValueEncoder<V> encoder;
-
-    public GenericValueEncoderFactory(ValueEncoder<V> encoder)
-    {
-        this.encoder = encoder;
-    }
-
-    public ValueEncoder<V> create(Class<V> type)
-    {
-        return encoder;
-    }
-
-    public static <V> GenericValueEncoderFactory<V> create(ValueEncoder<V> encoder)
-    {
-        return new GenericValueEncoderFactory<V>(encoder);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java
deleted file mode 100644
index 19b4df5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HeartbeatImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newStack;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.services.Heartbeat;
-
-public class HeartbeatImpl implements Heartbeat
-{
-    private final Stack<List<Runnable>> stack = newStack();
-
-    public void begin()
-    {
-        List<Runnable> beat = CollectionFactory.newList();
-
-        stack.push(beat);
-    }
-
-    public void defer(Runnable command)
-    {
-        assert command != null;
-
-        stack.peek().add(command);
-
-    }
-
-    public void end()
-    {
-        List<Runnable> beat = stack.pop();
-
-        for (Runnable r : beat)
-            r.run();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HiddenFieldLocationRulesImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HiddenFieldLocationRulesImpl.java
deleted file mode 100644
index b4231b3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/HiddenFieldLocationRulesImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.services.HiddenFieldLocationRules;
-import org.apache.tapestry5.services.RelativeElementPosition;
-
-public class HiddenFieldLocationRulesImpl implements HiddenFieldLocationRules
-{
-    private final Map<String, RelativeElementPosition> configuration;
-
-    public HiddenFieldLocationRulesImpl(Map<String, RelativeElementPosition> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    private boolean match(Element element, RelativeElementPosition position)
-    {
-        assert element != null;
-        String key = element.getName();
-
-        RelativeElementPosition actual = configuration.get(key);
-
-        if (actual == null)
-            return false;
-
-        return actual == position;
-    }
-
-    public boolean placeHiddenFieldInside(Element element)
-    {
-        return match(element, RelativeElementPosition.INSIDE);
-    }
-
-    public boolean placeHiddenFieldAfter(Element element)
-    {
-        return match(element, RelativeElementPosition.AFTER);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/IdentityAssetPathConverter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/IdentityAssetPathConverter.java
deleted file mode 100644
index f7cfdc3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/IdentityAssetPathConverter.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.AssetPathConverter;
-
-/**
- * Returns the default asset path unchanged. This is an invariant converter.
- *
- * @since 5.1.0.0
- */
-public class IdentityAssetPathConverter implements AssetPathConverter
-{
-    /**
-     * @return true
-     */
-    public boolean isInvariant()
-    {
-        return true;
-    }
-
-    /**
-     * @param assetPath default asset path
-     * @return assetPath unchanged
-     */
-    public String convertAssetPath(String assetPath)
-    {
-        return assetPath;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/IgnoredPathsFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/IgnoredPathsFilter.java
deleted file mode 100644
index b356092..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/IgnoredPathsFilter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.HttpServletRequestFilter;
-import org.apache.tapestry5.services.HttpServletRequestHandler;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.regex.Pattern;
-
-public class IgnoredPathsFilter implements HttpServletRequestFilter
-{
-    private final Pattern[] ignoredPatterns;
-
-    public IgnoredPathsFilter(Collection<String> configuration)
-    {
-        ignoredPatterns = new Pattern[configuration.size()];
-
-        int i = 0;
-
-        for (String regexp : configuration)
-        {
-            Pattern p = Pattern.compile(regexp, Pattern.CASE_INSENSITIVE);
-
-            ignoredPatterns[i++] = p;
-        }
-    }
-
-    public boolean service(HttpServletRequest request, HttpServletResponse response, HttpServletRequestHandler handler)
-            throws IOException
-    {
-        // The servlet path should be "/", and path info is everything after that.
-
-        String path = request.getServletPath();
-        String pathInfo = request.getPathInfo();
-
-        if (pathInfo != null) path += pathInfo;
-
-
-        for (Pattern p : ignoredPatterns)
-        {
-            if (p.matcher(path).matches()) return false;
-        }
-
-        // Not a match, so let it go.
-
-        return handler.service(request, response);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ImmediateActionRenderResponseFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ImmediateActionRenderResponseFilter.java
deleted file mode 100644
index a6dbff3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ImmediateActionRenderResponseFilter.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-public class ImmediateActionRenderResponseFilter implements ComponentEventRequestFilter
-{
-    private final Request request;
-
-    private final Response response;
-
-    private final PageResponseRenderer renderer;
-
-    public ImmediateActionRenderResponseFilter(Request request, PageResponseRenderer renderer, Response response)
-    {
-        this.request = request;
-        this.renderer = renderer;
-        this.response = response;
-    }
-
-    public void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler)
-            throws IOException
-    {
-        handler.handle(parameters);
-
-        // If markup or a redirect has already been generated, then we're good.
-
-        if (response.isCommitted()) return;
-
-        // Otherwise, we should be operating in immediate mode.  Figure out which page
-        // was selected to render.
-
-        Page page = (Page) request.getAttribute(InternalConstants.IMMEDIATE_RESPONSE_PAGE_ATTRIBUTE);
-
-        if (page != null)
-        {
-            // We don't have a context to provide but this still nags me as not the right thing to do.
-
-            page.getRootElement().triggerEvent(EventConstants.ACTIVATE, new Object[0], null);
-
-            renderer.renderPageResponse(page);
-            return;
-        }
-
-        throw new IllegalStateException(
-                "Sanity check - neither a stream response nor a redirect response was generated for this action request.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ImmediateActionRenderResponseGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ImmediateActionRenderResponseGenerator.java
deleted file mode 100644
index 4417d58..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ImmediateActionRenderResponseGenerator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Alternative implementation, used when {@link org.apache.tapestry5.SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS}
- * is set to true.
- */
-public class ImmediateActionRenderResponseGenerator implements ActionRenderResponseGenerator
-{
-    private final Request request;
-
-    public ImmediateActionRenderResponseGenerator(Request request)
-    {
-        this.request = request;
-    }
-
-    public void generateResponse(Page page) throws IOException
-    {
-        assert page != null;
-        if (request.getAttribute(InternalConstants.IMMEDIATE_RESPONSE_PAGE_ATTRIBUTE) != null) return;
-
-        // We are somewhere in the middle of processing an action request, possibly something
-        // complicated like a form submission.  Tapestry components are not re-entrant, so we
-        // can't render the request right now, instead we record that we need to render
-        // a response as an attribute, and let a filter on the ComponentEventRequestHandler service
-        // do the work.
-
-        request.setAttribute(InternalConstants.IMMEDIATE_RESPONSE_PAGE_ATTRIBUTE, page);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InjectionKey.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InjectionKey.java
deleted file mode 100644
index ddc8bb1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InjectionKey.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Used with {@link org.apache.tapestry5.internal.services.InternalClassTransformation} to search for prior injections
- * of a give type and value.  Assumes the values have a reasonable hashCode() implementation.
- */
-public final class InjectionKey
-{
-    private final Class type;
-    private final Object value;
-
-    private final int hashCode;
-
-    public InjectionKey(Class type, Object value)
-    {
-        this.type = type;
-        this.value = value;
-
-        hashCode = type.hashCode() * 31 + value.hashCode();
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return hashCode;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == null) return false;
-
-        if (obj instanceof InjectionKey)
-        {
-            InjectionKey other = (InjectionKey) obj;
-
-            return type.equals(other.type) &&
-                    value.equals(other.value);
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("InjectionKey[%s %s]", type.getName(), value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/Instantiator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/Instantiator.java
deleted file mode 100644
index 2445f75..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/Instantiator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.runtime.Component;
-
-/**
- * An object that can instantiate a component. This is used with transformed classes, in which the normal no-arguments
- * constructor has been replaced with a constructor with arguments; the instantiator will retain the necessary arguments
- * and pass them to the enhanced class' constructor.
- */
-public interface Instantiator
-{
-    /**
-     * Instantiates and returns a new instance of the desired class. Component classes are always modified so that they
-     * implement {@link Component} (and often, other interfaces as well).
-     */
-    Component newInstance(InternalComponentResources resources);
-
-    /**
-     * Returns the model that defines the behavior of the component.
-     */
-    ComponentModel getModel();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformation.java
deleted file mode 100644
index 3c736bd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformation.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javassist.CtClass;
-
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.TransformMethod;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-import java.util.List;
-
-/**
- * Extends {@link org.apache.tapestry5.services.ClassTransformation} with additional methods that may only be used
- * internally by Tapestry.
- */
-public interface InternalClassTransformation extends ClassTransformation
-{
-    /**
-     * Adds a new method to the transformed class, possibly replacing an existing method or
-     * overriding a base-class method.
-     * 
-     * @since 5.2.0
-     */
-    TransformMethod addNewMethod(TransformMethodSignature signature, String methodBody);
-
-    /**
-     * Invoked after all {@link ComponentClassTransformWorker}s have had their chance to work over the class. This
-     * performs any final operations for the class transformation, which includes coming up with the final constructor
-     * method for the class.
-     * 
-     * @return the description of the transformation, so that it can be logged (quite verbose)
-     */
-    String finish();
-
-    /**
-     * Called (after {@link #finish()}) to construct an instantiator for the component.
-     * 
-     * @return the component's instantiator
-     */
-    Instantiator createInstantiator();
-
-    /**
-     * Returns a copy of the transformation's IdAllocator. Used when creating a child class transformation. May only be
-     * invoked on a frozen transformation.
-     */
-    IdAllocator getIdAllocator();
-
-    /**
-     * Returns a copy of the list of constructor arguments for this class.
-     */
-    List<Object> getConstructorArgs();
-
-    /**
-     * Searchs for an existing injection of an object, returning the name of the protected field into which the value
-     * was injected.
-     */
-    String searchForPreviousInjection(InjectionKey key);
-
-    InternalClassTransformation createChildTransformation(CtClass childClass, MutableComponentModel childModel);
-
-    /**
-     * Returns the parent transformation, or null for a root class.
-     */
-    InternalClassTransformation getParentTransformation();
-
-    /**
-     * Creates a new method by copying the body of an existing method. This is part of the scheme for providing method
-     * advice.
-     * 
-     * @param sourceMethod
-     *            method to be copied
-     * @param modifiers
-     *            modifiers for the new method
-     * @param newMethodName
-     *            name of new method to create
-     */
-    void copyMethod(TransformMethodSignature sourceMethod, int modifiers, String newMethodName);
-
-    /**
-     * Returns true if the provided signature is a method implemented by the transformed class.
-     * 
-     * @param signature
-     * @return true if implemented
-     */
-    boolean isMethod(TransformMethodSignature signature);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
deleted file mode 100644
index cd8ad8e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalClassTransformationImpl.java
+++ /dev/null
@@ -1,2447 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Inherited;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Formatter;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javassist.*;
-import javassist.expr.ExprEditor;
-import javassist.expr.FieldAccess;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.ioc.internal.services.CtClassSource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.services.*;
-import org.slf4j.Logger;
-
-/**
- * Implementation of the {@link org.apache.tapestry5.internal.services.InternalClassTransformation} interface.
- */
-@SuppressWarnings("all")
-public final class InternalClassTransformationImpl implements InternalClassTransformation
-{
-    public static final MethodSignature INVOKE_SIGNATURE = new MethodSignature(MethodInvocationResult.class, "invoke",
-            new Class[]
-            { Object.class, Object[].class }, null);
-
-    public static final MethodSignature FIELD_ACCESS_READ_SIGNATURE = new MethodSignature(Object.class, "read",
-            new Class[]
-            { Object.class }, null);
-
-    public static final MethodSignature FIELD_ACCESS_WRITE_SIGNATURE = new MethodSignature(void.class, "write",
-            new Class[]
-            { Object.class, Object.class }, null);
-
-    private static final int INIT_BUFFER_SIZE = 100;
-
-    private boolean frozen;
-
-    private final CtClass ctClass;
-
-    private final Logger logger;
-
-    private final InternalClassTransformation parentTransformation;
-
-    private final ClassPool classPool;
-
-    private final IdAllocator idAllocator;
-
-    private final CtClass providerType;
-
-    class TransformMethodImpl implements TransformMethod
-    {
-        final CtMethod method;
-
-        private final TransformMethodSignature sig;
-
-        private List<Annotation> annotations;
-
-        private final boolean added;
-
-        private ComponentMethodInvocationBuilder builder;
-
-        private MethodAccess access;
-
-        private String identifier;
-
-        private Boolean override;
-
-        private List<List<Annotation>> parameterAnnotations;
-
-        TransformMethodImpl(CtMethod method, boolean added)
-        {
-            this.method = method;
-            this.sig = toMethodSignature(method);
-            this.added = added;
-
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("TransformMethod[%s]", getMethodIdentifier());
-        }
-
-        public int compareTo(TransformMethod o)
-        {
-            return sig.compareTo(o.getSignature());
-        }
-
-        public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-        {
-            if (annotations == null)
-                annotations = extractAnnotations(method);
-
-            return findAnnotationInList(annotationClass, annotations);
-        }
-
-        public <A extends Annotation> A getParameterAnnotation(int index, Class<A> annotationType)
-        {
-            if (parameterAnnotations == null)
-                extractParameterAnnotations();
-
-            return findAnnotationInList(annotationType, parameterAnnotations.get(index));
-        }
-
-        private void extractParameterAnnotations()
-        {
-            int count = sig.getParameterTypes().length;
-
-            parameterAnnotations = CollectionFactory.newList();
-
-            for (int parameterIndex = 0; parameterIndex < count; parameterIndex++)
-            {
-                List<Annotation> annotations = extractAnnotationsForParameter(parameterIndex);
-
-                parameterAnnotations.add(annotations);
-            }
-        }
-
-        private List<Annotation> extractAnnotationsForParameter(int parameterIndex)
-        {
-            List<Annotation> result = CollectionFactory.newList();
-
-            Object[] parameterAnnotations = method.getAvailableParameterAnnotations()[parameterIndex];
-
-            addAnnotationsToList(result, parameterAnnotations, false);
-
-            return result;
-        }
-
-        public TransformMethodSignature getSignature()
-        {
-            return sig;
-        }
-
-        public String getName()
-        {
-            return sig.getMethodName();
-        }
-
-        public void addAdvice(ComponentMethodAdvice advice)
-        {
-            failIfFrozen();
-
-            assert advice != null;
-
-            if (builder == null)
-                builder = createBuilder(sig);
-
-            builder.addAdvice(advice);
-
-            formatter.format("add advice %s : %s\n\n", sig.getMediumDescription(), advice);
-        }
-
-        public void addOperationAfter(ComponentInstanceOperation operation)
-        {
-            addAdvice(toAfterAdvice(operation));
-        }
-
-        public void addOperationBefore(ComponentInstanceOperation operation)
-        {
-            addAdvice(toBeforeAdvice(operation));
-        }
-
-        public MethodAccess getAccess()
-        {
-            failIfFrozen();
-
-            if (access == null)
-                access = createMethodAccess();
-
-            return access;
-        }
-
-        private MethodAccess createMethodAccess()
-        {
-            if (isPrivate())
-                return createPrivateMethodAccess();
-
-            return createNonPrivateMethodAccess();
-        }
-
-        private boolean isPrivate()
-        {
-            return Modifier.isPrivate(sig.getModifiers());
-        }
-
-        private MethodAccess createNonPrivateMethodAccess()
-        {
-            // For a public method, given the instance, we can just invoke the method directly
-            // from the MethodAccess object.
-
-            String accessTarget = "instance." + sig.getMethodName();
-
-            return createMethodAccessForTarget(accessTarget, false);
-        }
-
-        private MethodAccess createMethodAccessForTarget(String accessTarget, boolean passInstance)
-        {
-            boolean isVoid = sig.getReturnType().equals("void");
-
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            builder.addln("%s instance = (%<s) $1;", getClassName());
-
-            builder.addln("try").begin();
-
-            if (!isVoid)
-            {
-                builder.add("return success(($w) ");
-            }
-
-            // Call the target, even if the eventual method is void
-
-            builder.add(accessTarget);
-            builder.add("(");
-
-            if (passInstance)
-                builder.add("instance");
-
-            int p = 0;
-
-            for (String type : sig.getParameterTypes())
-            {
-                if (passInstance || p != 0)
-                    builder.add(", ");
-
-                String ref = String.format("$2[%d]", p++);
-                builder.add(ClassFabUtils.castReference(ref, type));
-            }
-
-            // Balance the call to success()
-            if (!isVoid)
-                builder.add(")");
-
-            builder.addln(");");
-
-            if (isVoid)
-                builder.addln("return success(null);");
-
-            builder.end(); // try
-            builder.addln("catch (java.lang.RuntimeException ex) { throw ex; }");
-            builder.addln("catch (java.lang.Exception ex) { return fail(ex); }");
-
-            builder.end();
-
-            return instantiateMethodAccessFromBody(builder.toString());
-        }
-
-        private MethodAccess instantiateMethodAccessFromBody(String body)
-        {
-            // The access object is created in the same package as the component, so that it can access
-            // protected and package private methods.
-            String accessClassName = String.format("%s$MethodAccess_%s_%s", getClassName(), sig.getMethodName(),
-                    ClassFabUtils.nextUID());
-
-            ClassFab cf = classFactory.newClass(accessClassName, AbstractMethodAccess.class);
-
-            cf.addMethod(Modifier.PUBLIC, INVOKE_SIGNATURE, body);
-
-            cf.addToString(String.format("MethodAccess[method %s of class %s]", sig.getMediumDescription(),
-                    getClassName()));
-
-            Class accessClass = cf.createClass();
-
-            try
-            {
-                Object accessInstance = accessClass.newInstance();
-
-                return (MethodAccess) accessInstance;
-            }
-            catch (Exception ex)
-            {
-                throw new RuntimeException(ex);
-            }
-        }
-
-        private MethodAccess createPrivateMethodAccess()
-        {
-            // As with Java inner classes, we have to create a static bridge method.
-
-            String staticAccessMethodName = createStaticAccessMethodForNonPublicMethod();
-
-            // Have the MethodAccess object call the static method and pass the
-            // instance object as the first parameter. The static method will then
-            // invoke the non-public method on the passed instance.
-
-            return createMethodAccessForTarget(String.format("%s#%s", getClassName(), staticAccessMethodName), true);
-        }
-
-        /**
-         * The static method takes the same parameters as the main method, but takes
-         * an instance object first. Invoking the static method turns into an invocation
-         * of the proper method of the instance object.
-         * 
-         * @return the name of the created static access method
-         */
-        private String createStaticAccessMethodForNonPublicMethod()
-        {
-            List<String> parameterTypes = CollectionFactory.newList(getClassName());
-            parameterTypes.addAll(Arrays.asList(sig.getParameterTypes()));
-
-            String methodName = newMemberName("access", sig.getMethodName());
-
-            TransformMethodSignature accessMethodSignature = new TransformMethodSignature(Modifier.PUBLIC
-                    + Modifier.STATIC, sig.getReturnType(), methodName, parameterTypes.toArray(new String[0]),
-                    sig.getExceptionTypes());
-
-            boolean isVoid = sig.getReturnType().equals("void");
-
-            BodyBuilder builder = new BodyBuilder();
-
-            builder.begin();
-
-            if (!isVoid)
-                builder.add("return ");
-
-            builder.add("$1.%s(", sig.getMethodName());
-
-            for (int i = 0; i < sig.getParameterTypes().length; i++)
-            {
-                if (i > 0)
-                    builder.add(", ");
-
-                builder.add("$%d", i + 2);
-            }
-
-            builder.addln(");");
-
-            builder.end();
-
-            addNewMethod(accessMethodSignature, builder.toString());
-
-            return methodName;
-        }
-
-        public String getMethodIdentifier()
-        {
-            if (identifier == null)
-            {
-                int lineNumber = method.getMethodInfo2().getLineNumber(0);
-                CtClass enclosingClass = method.getDeclaringClass();
-                String sourceFile = enclosingClass.getClassFile2().getSourceFile();
-
-                identifier = String.format("%s.%s (at %s:%d)", enclosingClass.getName(), sig.getMediumDescription(),
-                        sourceFile, lineNumber);
-            }
-
-            return identifier;
-        }
-
-        public boolean isOverride()
-        {
-            if (override == null)
-                override = searchForOverride();
-
-            return override;
-        }
-
-        private boolean searchForOverride()
-        {
-            InternalClassTransformation search = parentTransformation;
-
-            while (search != null)
-            {
-                if (search.isMethod(sig))
-                    return true;
-
-                search = search.getParentTransformation();
-            }
-
-            // Not found in any super-class.
-
-            return false;
-        }
-
-        void doFinish()
-        {
-            if (builder != null)
-            {
-                builder.commit();
-                builder = null;
-            }
-        }
-    }
-
-    class TransformFieldImpl implements TransformField
-    {
-        private final CtField field;
-
-        private final CtClass fieldType;
-
-        private final String name, type;
-
-        private boolean added;
-
-        private List<Annotation> annotations;
-
-        private Object claimTag;
-
-        String readValueBody, writeValueBody;
-
-        private DelegateFieldAccess delegateFieldAccess;
-
-        private org.apache.tapestry5.services.FieldAccess access;
-
-        TransformFieldImpl(CtField field, boolean added)
-        {
-            this.field = field;
-            this.name = field.getName();
-            this.added = added;
-
-            try
-            {
-                fieldType = field.getType();
-                type = fieldType.getName();
-            }
-            catch (NotFoundException ex)
-            {
-                throw new RuntimeException(ex);
-            }
-        }
-
-        void doFinish()
-        {
-            if (delegateFieldAccess != null)
-            {
-                access = createAccess();
-                delegateFieldAccess.delegate = access;
-                delegateFieldAccess = null;
-            }
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("TransformField[%s %s.%s(%s)]", Modifier.toString(field.getModifiers()),
-                    getClassName(), name, type);
-        }
-
-        public int compareTo(TransformField o)
-        {
-            return name.compareTo(o.getName());
-        }
-
-        public String getName()
-        {
-            return name;
-        }
-
-        public String getType()
-        {
-            return type;
-        }
-
-        public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-        {
-            failIfFrozen();
-
-            if (annotations == null)
-                annotations = extractAnnotations(field);
-
-            return findAnnotationInList(annotationClass, annotations);
-        }
-
-        public void claim(Object tag)
-        {
-            assert tag != null;
-
-            failIfFrozen();
-
-            if (claimTag != null)
-                throw new IllegalStateException(String.format(
-                        "Field %s of class %s is already claimed by %s and can not be claimed by %s.", getName(),
-                        getClassName(), claimTag, tag));
-
-            claimTag = tag;
-
-            formatter.format("Field %s claimed by %s\n\n", name, tag);
-        }
-
-        public boolean isClaimed()
-        {
-            return claimTag != null;
-        }
-
-        public int getModifiers()
-        {
-            return field.getModifiers();
-        }
-
-        void replaceReadAccess(String methodName)
-        {
-            failIfFrozen();
-
-            if (readValueBody != null)
-                throw new IllegalStateException(String.format("Field %s.%s has already had read access replaced.",
-                        getClassName(), name));
-
-            // Explicitly reference $0 (aka "this") because of TAPESTRY-1511.
-            // $0 is valid even inside a static method.
-
-            readValueBody = String.format("$_ = $0.%s();", methodName);
-
-            formatter.format("replace read %s: %s();\n\n", name, methodName);
-
-            fieldAccessReplaced = true;
-        }
-
-        void replaceWriteAccess(String methodName)
-        {
-            failIfFrozen();
-
-            if (writeValueBody != null)
-                throw new IllegalStateException(String.format("Field %s.%s has already had write access replaced.",
-                        getClassName(), name));
-
-            // Explicitly reference $0 (aka "this") because of TAPESTRY-1511.
-            // $0 is valid even inside a static method.
-
-            writeValueBody = String.format("$0.%s($1);", methodName);
-
-            formatter.format("replace write %s: %s();\n\n", name, methodName);
-
-            fieldAccessReplaced = true;
-        }
-
-        public org.apache.tapestry5.services.FieldAccess getAccess()
-        {
-            failIfFrozen();
-
-            if (access != null)
-                return access;
-
-            if (delegateFieldAccess == null)
-            {
-                delegateFieldAccess = new DelegateFieldAccess();
-            }
-
-            return delegateFieldAccess;
-        }
-
-        private org.apache.tapestry5.services.FieldAccess createAccess()
-        {
-            TransformMethod reader = createReader();
-            TransformMethod writer = createWriter();
-
-            return createFieldAccess(reader, writer);
-        }
-
-        private org.apache.tapestry5.services.FieldAccess createFieldAccess(TransformMethod reader,
-                TransformMethod writer)
-        {
-            ClassFab cf = classFactory.newClass(org.apache.tapestry5.services.FieldAccess.class);
-
-            addFieldAccessReadMethod(cf, reader);
-            addFieldAccessWriteMethod(cf, writer);
-
-            cf.addToString(String.format("FieldAccess<%s.%s>", getClassName(), name));
-
-            Class accessClass = cf.createClass();
-
-            try
-            {
-                return (org.apache.tapestry5.services.FieldAccess) accessClass.newInstance();
-            }
-            catch (Exception ex)
-            {
-                throw new RuntimeException(ex);
-            }
-        }
-
-        private void addFieldAccessReadMethod(ClassFab cf, TransformMethod readAccess)
-        {
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            builder.addln("%s instance = (%<s) $1;", getClassName());
-            builder.addln("return ($w) instance.%s();", readAccess.getName());
-
-            builder.end();
-
-            cf.addMethod(Modifier.PUBLIC, FIELD_ACCESS_READ_SIGNATURE, builder.toString());
-        }
-
-        private void addFieldAccessWriteMethod(ClassFab cf, TransformMethod writeAccess)
-        {
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            builder.addln("%s instance = (%<s) $1;", getClassName());
-            builder.addln("%s value = %s;", type, ClassFabUtils.castReference("$2", type));
-            builder.addln("instance.%s(value);", writeAccess.getName());
-
-            builder.end();
-
-            cf.addMethod(Modifier.PUBLIC, FIELD_ACCESS_WRITE_SIGNATURE, builder.toString());
-        }
-
-        private TransformMethod createReader()
-        {
-            String methodName = newMemberName("readaccess", name);
-
-            TransformMethodSignature signature = new TransformMethodSignature(Modifier.PUBLIC, type, methodName, null,
-                    null);
-
-            // Add the method as existing, so that the field access may be replaced with a FieldValueConduit
-            // if necessary.
-            return addOrReplaceMethod(signature, String.format("return %s;", name), false);
-        }
-
-        private TransformMethod createWriter()
-        {
-            String methodName = newMemberName("writeaccess", name);
-
-            TransformMethodSignature signature = new TransformMethodSignature(Modifier.PUBLIC, "void", methodName,
-                    new String[]
-                    { type }, null);
-
-            // Add the method as existing, so that the field access may be replaced with a FieldValueConduit
-            // if necessary.
-
-            return addOrReplaceMethod(signature, String.format("%s = $1;", name), false);
-        }
-
-        public void replaceAccess(ComponentValueProvider<FieldValueConduit> conduitProvider)
-        {
-            replaceAccess(addIndirectInjectedField(FieldValueConduit.class, name + "$conduit", conduitProvider));
-        }
-
-        public void replaceAccess(FieldValueConduit conduit)
-        {
-            String fieldName = addInjectedFieldUncached(FieldValueConduit.class, name + "$conduit", conduit);
-
-            // TODO: If access != null?
-
-            access = toFieldAccess(conduit);
-
-            if (delegateFieldAccess != null)
-            {
-                delegateFieldAccess.delegate = access;
-                delegateFieldAccess = null;
-            }
-
-            replaceAccess(getTransformFieldImpl(fieldName));
-        }
-
-        public void replaceAccess(TransformField conduitField)
-        {
-            failIfFrozen();
-
-            String conduitFieldName = conduitField.getName();
-
-            String readMethodName = newMemberName("get", name);
-
-            TransformMethodSignature readSig = new TransformMethodSignature(Modifier.PRIVATE, type, readMethodName,
-                    null, null);
-
-            String cast = TransformUtils.getWrapperTypeName(type);
-
-            // The ($r) cast will convert the result to the method return type; generally
-            // this does nothing. but for primitive types, it will unwrap
-            // the wrapper type back to a primitive.
-
-            BodyBuilder builder = new BodyBuilder();
-
-            builder.begin();
-
-            builder.addln("%s result = ($r) ((%s) %s.get());", type, cast, conduitFieldName);
-
-            if (developmentMode)
-            {
-                builder.addln("%s = result;", name);
-            }
-
-            builder.addln("return result;");
-
-            builder.end();
-
-            addNewMethod(readSig, builder.toString());
-
-            replaceReadAccess(readMethodName);
-
-            String writeMethodName = newMemberName("set", name);
-
-            TransformMethodSignature writeSig = new TransformMethodSignature(Modifier.PRIVATE, "void", writeMethodName,
-                    new String[]
-                    { type }, null);
-
-            builder.clear().begin();
-
-            if (developmentMode)
-            {
-                builder.addln("%s = $1;", name);
-            }
-
-            builder.addln("%s.set(($w) $1);", conduitFieldName);
-
-            builder.end();
-
-            addNewMethod(writeSig, builder.toString());
-
-            replaceWriteAccess(writeMethodName);
-        }
-
-        public void inject(Object value)
-        {
-            failIfFrozen();
-
-            addInjectToConstructor(name, fieldType, value);
-
-            makeReadOnly(name);
-        }
-
-        public <T> void injectIndirect(ComponentValueProvider<T> provider)
-        {
-            assert provider != null;
-
-            failIfFrozen();
-
-            String argReference = addConstructorArg(providerType, provider);
-
-            addToConstructor(String.format("  %s = (%s) (%s).get(%s);", name, type, argReference, resourcesFieldName));
-
-            makeReadOnly(name);
-        }
-
-    }
-
-    private final Map<TransformMethodSignature, TransformMethodImpl> methods = CollectionFactory.newMap();
-
-    private Map<String, TransformFieldImpl> fields = CollectionFactory.newMap();
-
-    /**
-     * Map, keyed on InjectKey, of field name. Injections are always added as protected (not
-     * private) fields to support
-     * sharing of injections between a base class and a sub class.
-     */
-    private final Map<InjectionKey, String> injectionCache = CollectionFactory.newMap();
-
-    // Cache of class annotation
-
-    private List<Annotation> classAnnotations;
-
-    /**
-     * Contains the assembled Javassist code for the class' default constructor.
-     */
-    private StringBuilder constructor = new StringBuilder(INIT_BUFFER_SIZE);
-
-    private final List<Object> constructorArgs;
-
-    private final MutableComponentModel componentModel;
-
-    private final String resourcesFieldName;
-
-    private StringBuilder description = new StringBuilder(INIT_BUFFER_SIZE);
-
-    private Formatter formatter = new Formatter(description);
-
-    private final ClassFactory classFactory;
-
-    private final ComponentClassCache componentClassCache;
-
-    private final CtClassSource classSource;
-
-    // In development mode, extra logic is inserted to "shadow" fields (that have been replaced with a FieldConduit).
-    // The "live" value is stored into the field any time it is read or updated, to assist with debugging.
-    // https://issues.apache.org/jira/browse/TAP5-1208
-    private final boolean developmentMode;
-
-    // If true, then during finish, it is necessary to search for field replacements
-    // (field reads or writes replaces with method calls).
-    private boolean fieldAccessReplaced;
-
-    /**
-     * Signature for newInstance() method of Instantiator.
-     */
-    private static final MethodSignature NEW_INSTANCE_SIGNATURE = new MethodSignature(Component.class, "newInstance",
-            new Class[]
-            { InternalComponentResources.class }, null);
-
-    private static final TransformMethodSignature GET_COMPONENT_RESOURCES_SIGNATURE = new TransformMethodSignature(
-            Modifier.PUBLIC | Modifier.FINAL, ComponentResources.class.getName(), "getComponentResources", null, null);
-
-    /**
-     * This is a constructor for a base class.
-     */
-    public InternalClassTransformationImpl(ClassFactory classFactory, CtClass ctClass,
-            ComponentClassCache componentClassCache, MutableComponentModel componentModel, CtClassSource classSource,
-            boolean developmentMode)
-    {
-        this.ctClass = ctClass;
-        this.componentClassCache = componentClassCache;
-        this.classSource = classSource;
-        this.developmentMode = developmentMode;
-        classPool = this.ctClass.getClassPool();
-        this.classFactory = classFactory;
-        parentTransformation = null;
-        this.componentModel = componentModel;
-
-        providerType = toCtClass(ComponentValueProvider.class);
-
-        idAllocator = new IdAllocator();
-
-        logger = componentModel.getLogger();
-
-        preloadMembers();
-
-        constructorArgs = CollectionFactory.newList();
-        constructor.append("{\n");
-
-        addImplementedInterface(Component.class);
-
-        resourcesFieldName = addField(Modifier.PROTECTED | Modifier.FINAL, InternalComponentResources.class.getName(),
-                "resources");
-
-        addToConstructor(String.format("  %s = $1;", resourcesFieldName));
-
-        addNewMethod(GET_COMPONENT_RESOURCES_SIGNATURE, "return " + resourcesFieldName + ";");
-
-        // The "}" will be added later, inside finish().
-    }
-
-    /**
-     * Constructor for a component sub-class.
-     * 
-     * @param developmentMode
-     *            TODO
-     */
-    private InternalClassTransformationImpl(CtClass ctClass, InternalClassTransformation parentTransformation,
-            ClassFactory classFactory, CtClassSource classSource, ComponentClassCache componentClassCache,
-            MutableComponentModel componentModel, boolean developmentMode)
-    {
-        this.ctClass = ctClass;
-        this.componentClassCache = componentClassCache;
-        this.classSource = classSource;
-        classPool = this.ctClass.getClassPool();
-        this.classFactory = classFactory;
-        logger = componentModel.getLogger();
-        this.parentTransformation = parentTransformation;
-        this.componentModel = componentModel;
-        this.developmentMode = developmentMode;
-
-        providerType = toCtClass(ComponentValueProvider.class);
-
-        resourcesFieldName = parentTransformation.getResourcesFieldName();
-
-        idAllocator = parentTransformation.getIdAllocator();
-
-        preloadMembers();
-
-        constructorArgs = parentTransformation.getConstructorArgs();
-
-        // Re-invoke the constructor, passing the resources and array of values to the super class
-
-        addToConstructor("{\n  super($$);");
-
-        // The "}" will be added later, inside finish().
-    }
-
-    public InternalClassTransformation createChildTransformation(CtClass childClass, MutableComponentModel childModel)
-    {
-        return new InternalClassTransformationImpl(childClass, this, classFactory, classSource, componentClassCache,
-                childModel, developmentMode);
-    }
-
-    private void freeze()
-    {
-        frozen = true;
-
-        // Free up stuff we don't need after freezing.
-        // Everything else should be final.
-
-        fields = null;
-
-        classAnnotations = null;
-        constructor = null;
-        formatter = null;
-        description = null;
-    }
-
-    public String getResourcesFieldName()
-    {
-        return resourcesFieldName;
-    }
-
-    /**
-     * Loads all existing fields and methods defined by the class.
-     */
-    private void preloadMembers()
-    {
-        preloadFields();
-        preloadMethods();
-    }
-
-    private void preloadMethods()
-    {
-        for (CtMethod method : ctClass.getDeclaredMethods())
-        {
-            recordMethod(method, false);
-
-            idAllocator.allocateId(method.getName());
-        }
-    }
-
-    /**
-     * Converts and stores {@link CtField} to {@link TransformField}, and checks that each field is
-     * one of:
-     * <ul>
-     * <li>private</li>
-     * <li>static</li>
-     * <li>groovy.lang.MetaClass (for Groovy compatibility)</li> </li>
-     */
-    private void preloadFields()
-    {
-        List<String> names = CollectionFactory.newList();
-
-        for (CtField field : ctClass.getDeclaredFields())
-        {
-            String name = field.getName();
-
-            idAllocator.allocateId(name);
-
-            TransformFieldImpl tfi = fields.put(name, new TransformFieldImpl(field, false));
-
-            int modifiers = field.getModifiers();
-
-            // Fields must be either static or private.
-
-            if (Modifier.isStatic(modifiers) || Modifier.isPrivate(modifiers))
-                continue;
-
-            // Groovy injects a public field named metaClass. We ignore it, and add it as a claimed
-            // field to prevent any of the workers from seeing it.
-
-            if (name.equals("metaClass") && getFieldType(name).equals("groovy.lang.MetaClass"))
-            {
-                tfi.claim("Ignored");
-                continue;
-            }
-
-            names.add(name);
-        }
-
-        if (!names.isEmpty())
-            throw new RuntimeException(ServicesMessages.nonPrivateFields(getClassName(), names));
-    }
-
-    public <T extends Annotation> T getFieldAnnotation(String fieldName, Class<T> annotationClass)
-    {
-        return getField(fieldName).getAnnotation(annotationClass);
-    }
-
-    public <T extends Annotation> T getMethodAnnotation(TransformMethodSignature signature, Class<T> annotationClass)
-    {
-        return getOrCreateMethod(signature).getAnnotation(annotationClass);
-    }
-
-    /**
-     * Searches an array of objects (that are really annotations instances) to find one that is of
-     * the correct type,
-     * which is returned.
-     * 
-     * @param <T>
-     * @param annotationClass
-     *            the annotation to search for
-     * @param annotations
-     *            the available annotations
-     * @return the matching annotation instance, or null if not found
-     */
-    private <T extends Annotation> T findAnnotationInList(Class<T> annotationClass, List<Annotation> annotations)
-    {
-        for (Object annotation : annotations)
-        {
-            if (annotationClass.isInstance(annotation))
-                return annotationClass.cast(annotation);
-        }
-
-        return null;
-    }
-
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return findAnnotationInList(annotationClass, getClassAnnotations());
-    }
-
-    private List<Annotation> extractAnnotations(CtMember member)
-    {
-        try
-        {
-            List<Annotation> result = CollectionFactory.newList();
-
-            addAnnotationsToList(result, member.getAnnotations(), false);
-
-            return result;
-        }
-        catch (ClassNotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private void addAnnotationsToList(List<Annotation> list, Object[] annotations, boolean filterNonInherited)
-    {
-        for (Object o : annotations)
-        {
-            Annotation a = (Annotation) o;
-
-            // When assembling class annotations from a base class, you want to ignore any
-            // that are not @Inherited.
-
-            if (filterNonInherited)
-            {
-                Class<? extends Annotation> annotationType = a.annotationType();
-
-                Inherited inherited = annotationType.getAnnotation(Inherited.class);
-
-                if (inherited == null)
-                    continue;
-            }
-
-            list.add(a);
-        }
-    }
-
-    public TransformField getField(String fieldName)
-    {
-        return getTransformFieldImpl(fieldName);
-    }
-
-    private TransformFieldImpl getTransformFieldImpl(String fieldName)
-    {
-        failIfFrozen();
-
-        TransformFieldImpl result = fields.get(fieldName);
-
-        if (result != null)
-            return result;
-
-        throw new RuntimeException(String.format("Class %s does not contain a field named '%s'.", getClassName(),
-                fieldName));
-    }
-
-    public String newMemberName(String suggested)
-    {
-        failIfFrozen();
-
-        assert InternalUtils.isNonBlank(suggested);
-
-        String memberName = InternalUtils.createMemberName(suggested);
-
-        return idAllocator.allocateId(memberName);
-    }
-
-    public String newMemberName(String prefix, String baseName)
-    {
-        return newMemberName(prefix + "_" + InternalUtils.stripMemberName(baseName));
-    }
-
-    public void addImplementedInterface(Class interfaceClass)
-    {
-        failIfFrozen();
-
-        try
-        {
-            CtClass ctInterface = toCtClass(interfaceClass);
-
-            if (classImplementsInterface(ctInterface))
-                return;
-
-            implementDefaultMethodsForInterface(ctInterface);
-
-            ctClass.addInterface(ctInterface);
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    /**
-     * Adds default implementations for the methods defined by the interface (and all of its
-     * super-interfaces). The
-     * implementations return null (or 0, or false, as appropriate to to the method type). There are
-     * a number of
-     * degenerate cases that are not covered properly: these are related to base interfaces that may
-     * be implemented by
-     * base classes.
-     * 
-     * @param ctInterface
-     * @throws NotFoundException
-     */
-    private void implementDefaultMethodsForInterface(CtClass ctInterface) throws NotFoundException
-    {
-        // java.lang.Object is the parent interface of interfaces
-
-        if (ctInterface.getName().equals(Object.class.getName()))
-            return;
-
-        for (CtMethod method : ctInterface.getDeclaredMethods())
-        {
-            addDefaultImplementation(method);
-        }
-
-        for (CtClass parent : ctInterface.getInterfaces())
-        {
-            implementDefaultMethodsForInterface(parent);
-        }
-    }
-
-    private void addDefaultImplementation(CtMethod method)
-    {
-        // Javassist has an oddity for interfaces: methods "inherited" from java.lang.Object show
-        // up as methods of the interface. We skip those and only consider the methods
-        // that are abstract.
-
-        if (!Modifier.isAbstract(method.getModifiers()))
-            return;
-
-        try
-        {
-            CtMethod newMethod = CtNewMethod.copy(method, ctClass, null);
-
-            // Methods from interfaces are always public. We definitely
-            // need to change the modifiers of the method so that
-            // it is not abstract.
-
-            newMethod.setModifiers(Modifier.PUBLIC);
-
-            // Javassist will provide a minimal implementation for us (return null, false, 0,
-            // whatever).
-
-            newMethod.setBody(null);
-
-            ctClass.addMethod(newMethod);
-
-            TransformMethod tm = recordMethod(newMethod, true);
-
-            addMethodToDescription("add default", tm.getSignature(), "<default>");
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new RuntimeException(ServicesMessages.errorAddingMethod(ctClass, method.getName(), ex), ex);
-        }
-    }
-
-    private TransformMethodImpl recordMethod(CtMethod method, boolean asNew)
-    {
-        TransformMethodImpl tmi = new TransformMethodImpl(method, asNew);
-
-        methods.put(tmi.getSignature(), tmi);
-
-        return tmi;
-    }
-
-    /**
-     * Check to see if the target class (or any of its super classes) implements the provided
-     * interface. This is geared
-     * for simple interfaces (that don't extend other interfaces), thus if the class (or a base
-     * class) implement
-     * interface Y that extends interface X, we may not return true for interface X.
-     */
-
-    private boolean classImplementsInterface(CtClass ctInterface) throws NotFoundException
-    {
-
-        for (CtClass current = ctClass; current != null; current = current.getSuperclass())
-        {
-            for (CtClass anInterface : current.getInterfaces())
-            {
-                if (anInterface == ctInterface)
-                    return true;
-            }
-        }
-
-        return false;
-    }
-
-    public void claimField(String fieldName, Object tag)
-    {
-        getField(fieldName).claim(tag);
-    }
-
-    public void addMethod(TransformMethodSignature signature, String methodBody)
-    {
-        removed("addMethod(TransformMethodSignature,String)");
-    }
-
-    public TransformMethod addNewMethod(TransformMethodSignature signature, String methodBody)
-    {
-        return addOrReplaceMethod(signature, methodBody, true);
-    }
-
-    public TransformMethod addNewTransformedMethod(TransformMethodSignature signature, String methodBody)
-    {
-        return addOrReplaceMethod(signature, methodBody, false);
-    }
-
-    /**
-     * @param signature
-     *            of method to add
-     * @param methodBody
-     *            or null for default
-     * @param addAsNew
-     *            if true, then fields in the method will not be transformed
-     */
-    private TransformMethodImpl addOrReplaceMethod(TransformMethodSignature signature, String methodBody,
-            boolean addAsNew)
-    {
-        failIfFrozen();
-
-        CtClass returnType = findCtClass(signature.getReturnType());
-        CtClass[] parameters = buildCtClassList(signature.getParameterTypes());
-        CtClass[] exceptions = buildCtClassList(signature.getExceptionTypes());
-
-        String suffix = addAsNew ? "" : " transformed";
-
-        String action = "add" + suffix;
-
-        TransformMethodImpl result = null;
-
-        try
-        {
-            CtMethod existing = ctClass.getDeclaredMethod(signature.getMethodName(), parameters);
-
-            if (existing != null)
-            {
-                action = "replace" + suffix;
-
-                ctClass.removeMethod(existing);
-            }
-        }
-        catch (NotFoundException ex)
-        {
-            // That's ok. Kind of sloppy to rely on a thrown exception; wish getDeclaredMethod()
-            // would return null for
-            // that case. Alternately, we could maintain a set of the method signatures of declared
-            // or added methods.
-        }
-
-        try
-        {
-
-            CtMethod method = new CtMethod(returnType, signature.getMethodName(), parameters, ctClass);
-
-            // TODO: Check for duplicate method add
-
-            method.setModifiers(signature.getModifiers());
-
-            method.setBody(methodBody);
-            method.setExceptionTypes(exceptions);
-
-            ctClass.addMethod(method);
-
-            result = recordMethod(method, addAsNew);
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new MethodCompileException(ServicesMessages.methodCompileError(signature, methodBody, ex),
-                    methodBody, ex);
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        addMethodToDescription(action, signature, methodBody);
-
-        return result;
-    }
-
-    public void addTransformedMethod(TransformMethodSignature signature, String methodBody)
-    {
-        removed("addTransformedMethod(TransformMethodSignature,String)");
-    }
-
-    private CtClass[] buildCtClassList(String[] typeNames)
-    {
-        CtClass[] result = new CtClass[typeNames.length];
-
-        for (int i = 0; i < typeNames.length; i++)
-            result[i] = findCtClass(typeNames[i]);
-
-        return result;
-    }
-
-    private CtClass findCtClass(String type)
-    {
-        try
-        {
-            return classPool.get(type);
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public void extendMethod(TransformMethodSignature methodSignature, String methodBody)
-    {
-        removed("extendMethod(TransformMethodSignature, String)");
-    }
-
-    public void extendExistingMethod(TransformMethodSignature methodSignature, String methodBody)
-    {
-        removed("extendExistingMethod(TransformMethodSignature, String)");
-    }
-
-    public void copyMethod(TransformMethodSignature sourceMethod, int modifiers, String newMethodName)
-    {
-        failIfFrozen();
-
-        CtClass returnType = findCtClass(sourceMethod.getReturnType());
-        CtClass[] parameters = buildCtClassList(sourceMethod.getParameterTypes());
-        CtClass[] exceptions = buildCtClassList(sourceMethod.getExceptionTypes());
-
-        TransformMethodImpl tmi = locateExistingOrCreateOverrideMethod(sourceMethod);
-
-        CtMethod source = tmi.method;
-
-        try
-        {
-            CtMethod method = new CtMethod(returnType, newMethodName, parameters, ctClass);
-
-            method.setModifiers(modifiers);
-
-            method.setExceptionTypes(exceptions);
-
-            method.setBody(source, null);
-
-            ctClass.addMethod(method);
-
-            recordMethod(method, false);
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new RuntimeException(String.format("Error copying method %s to new method %s().", sourceMethod,
-                    newMethodName), ex);
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        // The new method is *not* considered an added method, so field references inside the method
-        // will be transformed.
-
-        formatter.format("\n%s renamed to %s\n\n", sourceMethod, newMethodName);
-    }
-
-    public void addCatch(TransformMethodSignature methodSignature, String exceptionType, String body)
-    {
-        removed("addCatch(TransformMethodSignature, String, String)");
-    }
-
-    public void prefixMethod(TransformMethodSignature methodSignature, String methodBody)
-    {
-        removed("prefixMethod(TransformMethodSignature, String)");
-    }
-
-    private void addMethodToDescription(String operation, TransformMethodSignature methodSignature, String methodBody)
-    {
-        formatter.format("%s method: %s %s %s(", operation, Modifier.toString(methodSignature.getModifiers()),
-                methodSignature.getReturnType(), methodSignature.getMethodName());
-
-        String[] parameterTypes = methodSignature.getParameterTypes();
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            if (i > 0)
-                description.append(", ");
-
-            formatter.format("%s $%d", parameterTypes[i], i + 1);
-        }
-
-        description.append(")");
-
-        String[] exceptionTypes = methodSignature.getExceptionTypes();
-        for (int i = 0; i < exceptionTypes.length; i++)
-        {
-            if (i == 0)
-                description.append("\n  throws ");
-            else
-                description.append(", ");
-
-            description.append(exceptionTypes[i]);
-        }
-
-        if (methodBody != null)
-            formatter.format("\n%s", methodBody);
-
-        description.append("\n\n");
-    }
-
-    public TransformMethod getOrCreateMethod(TransformMethodSignature signature)
-    {
-        failIfFrozen();
-
-        return findOverrideOrCreateMethod(signature);
-    }
-
-    private TransformMethodImpl findOverrideOrCreateMethod(TransformMethodSignature signature)
-    {
-        TransformMethodImpl result = findOrOverrideMethod(signature);
-
-        if (result != null)
-            return result;
-
-        return addOrReplaceMethod(signature, null, true);
-    }
-
-    private TransformMethodImpl findOrOverrideMethod(TransformMethodSignature signature)
-    {
-        TransformMethodImpl result = methods.get(signature);
-
-        if (result != null)
-            return result;
-
-        return addOverrideOfSuperclassMethod(signature);
-    }
-
-    private TransformMethodImpl locateExistingOrCreateOverrideMethod(TransformMethodSignature signature)
-    {
-        TransformMethodImpl result = findOrOverrideMethod(signature);
-
-        if (result != null)
-            return result;
-
-        throw new IllegalArgumentException(String.format("Class %s does not declare method '%s'.", getClassName(),
-                signature));
-
-    }
-
-    // TODO: Rework this method for efficiency, i.e., so that we can leverage the methods
-    // map in parent InternalClassTransformImpls, rather than the exhaustive
-    // search.
-    private TransformMethodImpl addOverrideOfSuperclassMethod(TransformMethodSignature methodSignature)
-    {
-        try
-        {
-            for (CtClass current = ctClass; current != null; current = current.getSuperclass())
-            {
-                for (CtMethod method : current.getDeclaredMethods())
-                {
-                    if (match(method, methodSignature))
-                    {
-                        // TODO: What if the method is not overridable (i.e. private, or final)?
-                        // Perhaps we should limit it to just public methods.
-
-                        CtMethod newMethod = CtNewMethod.delegator(method, ctClass);
-                        ctClass.addMethod(newMethod);
-
-                        // Record it as a new method.
-                        return recordMethod(newMethod, true);
-                    }
-                }
-            }
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        // Not found in a super-class.
-
-        return null;
-    }
-
-    private boolean match(CtMethod method, TransformMethodSignature sig)
-    {
-        if (!sig.getMethodName().equals(method.getName()))
-            return false;
-
-        CtClass[] paramTypes;
-
-        try
-        {
-            paramTypes = method.getParameterTypes();
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        String[] sigTypes = sig.getParameterTypes();
-
-        int count = sigTypes.length;
-
-        if (paramTypes.length != count)
-            return false;
-
-        for (int i = 0; i < count; i++)
-        {
-            String paramType = paramTypes[i].getName();
-
-            if (!paramType.equals(sigTypes[i]))
-                return false;
-        }
-
-        // Ignore exceptions thrown and modifiers.
-        // TODO: Validate a match on return type?
-
-        return true;
-    }
-
-    public List<String> findFieldsWithAnnotation(final Class<? extends Annotation> annotationClass)
-    {
-        return toFieldNames(matchFieldsWithAnnotation(annotationClass));
-    }
-
-    public List<String> findFields(final FieldFilter filter)
-    {
-        assert filter != null;
-
-        failIfFrozen();
-
-        List<TransformField> fields = matchFields(new Predicate<TransformField>()
-        {
-            public boolean accept(TransformField object)
-            {
-                return filter.accept(object.getName(), object.getType());
-            }
-        });
-
-        return toFieldNames(fields);
-    }
-
-    public List<TransformField> matchFields(Predicate<TransformField> predicate)
-    {
-        failIfFrozen();
-
-        return InternalUtils.matchAndSort(fields.values(), predicate);
-    }
-
-    public List<TransformField> matchFieldsWithAnnotation(final Class<? extends Annotation> annotationClass)
-    {
-        return matchFields(new Predicate<TransformField>()
-        {
-            public boolean accept(TransformField field)
-            {
-                return field.getAnnotation(annotationClass) != null;
-            }
-        });
-    }
-
-    public List<TransformMethodSignature> findMethodsWithAnnotation(final Class<? extends Annotation> annotationClass)
-    {
-        List<TransformMethod> methods = matchMethods(new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod method)
-            {
-                return method.getAnnotation(annotationClass) != null;
-            };
-        });
-
-        return toMethodSignatures(methods);
-    }
-
-    public List<TransformMethodSignature> findMethods(final MethodFilter filter)
-    {
-        assert filter != null;
-
-        List<TransformMethod> methods = matchMethods(new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod object)
-            {
-                return filter.accept(object.getSignature());
-            };
-        });
-
-        return toMethodSignatures(methods);
-    }
-
-    public List<TransformMethod> matchMethods(Predicate<TransformMethod> predicate)
-    {
-        failIfFrozen();
-
-        return InternalUtils.matchAndSort(methods.values(), predicate);
-    }
-
-    public List<TransformMethod> matchMethodsWithAnnotation(final Class<? extends Annotation> annotationType)
-    {
-        return matchMethods(new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod method)
-            {
-                return method.getAnnotation(annotationType) != null;
-            }
-        });
-    }
-
-    private TransformMethodSignature toMethodSignature(CtMethod method)
-    {
-        try
-        {
-            String type = method.getReturnType().getName();
-            String[] parameters = toTypeNames(method.getParameterTypes());
-            String[] exceptions = toTypeNames(method.getExceptionTypes());
-
-            return new TransformMethodSignature(method.getModifiers(), type, method.getName(), parameters, exceptions);
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private String[] toTypeNames(CtClass[] types)
-    {
-        String[] result = new String[types.length];
-
-        for (int i = 0; i < types.length; i++)
-            result[i] = types[i].getName();
-
-        return result;
-    }
-
-    public List<String> findUnclaimedFields()
-    {
-        return toFieldNames(matchUnclaimedFields());
-    }
-
-    public List<TransformField> matchUnclaimedFields()
-    {
-        return matchFields(new Predicate<TransformField>()
-        {
-            public boolean accept(TransformField object)
-            {
-                TransformFieldImpl tmi = (TransformFieldImpl) object;
-
-                return !(tmi.added || tmi.isClaimed());
-            }
-        });
-    }
-
-    public String getFieldType(String fieldName)
-    {
-        return getField(fieldName).getType();
-    }
-
-    public boolean isField(String fieldName)
-    {
-        failIfFrozen();
-
-        // Only declared instance fields end up in this map, and all
-        // fields are either static or private.
-
-        return fields.containsKey(fieldName);
-    }
-
-    public int getFieldModifiers(String fieldName)
-    {
-        return getField(fieldName).getModifiers();
-    }
-
-    public String addField(int modifiers, String type, String suggestedName)
-    {
-        return createField(modifiers, type, suggestedName).getName();
-    }
-
-    public TransformField createField(int modifiers, String type, String suggestedName)
-    {
-        failIfFrozen();
-
-        String fieldName = newMemberName(suggestedName);
-
-        TransformFieldImpl result = null;
-
-        try
-        {
-            CtClass ctType = convertNameToCtType(type);
-
-            CtField field = new CtField(ctType, fieldName, ctClass);
-            field.setModifiers(modifiers);
-
-            ctClass.addField(field);
-
-            result = new TransformFieldImpl(field, true);
-
-            fields.put(fieldName, result);
-
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        formatter.format("add field: %s %s %s;\n\n", Modifier.toString(modifiers), type, fieldName);
-
-        return result;
-    }
-
-    // Returns String for backwards compatibility reasons
-    public String addInjectedField(Class type, String suggestedName, Object value)
-    {
-        assert type != null;
-
-        failIfFrozen();
-
-        InjectionKey key = new InjectionKey(type, value);
-
-        String fieldName = searchForPreviousInjection(key);
-
-        if (fieldName != null)
-            return fieldName;
-
-        // TODO: Probably doesn't handle arrays and primitives.
-
-        fieldName = addInjectedFieldUncached(type, suggestedName, value);
-
-        // Remember the injection in-case this class, or a subclass, injects the value again.
-
-        injectionCache.put(key, fieldName);
-
-        return fieldName;
-    }
-
-    public <T> TransformField addIndirectInjectedField(Class<T> type, String suggestedName,
-            ComponentValueProvider<T> provider)
-    {
-        assert type != null;
-        assert provider != null;
-
-        TransformField field = createField(Modifier.PROTECTED | Modifier.FINAL, type.getName(), suggestedName);
-
-        String argReference = addConstructorArg(providerType, provider);
-
-        // Inside the constructor,
-        // pass the resources to the provider's get() method, cast to the
-        // field type and assign. This will likely not work with
-        // primitives and arrays, but that's ok for now.
-
-        addToConstructor(String.format("  %s = (%s) (%s).get(%s);", field.getName(), type.getName(), argReference,
-                resourcesFieldName));
-
-        return field;
-    }
-
-    private CtClass toCtClass(Class type)
-    {
-        try
-        {
-            return classPool.get(type.getName());
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    /**
-     * This is split out from {@link #addInjectedField(Class, String, Object)} to handle a special
-     * case for the
-     * InternalComponentResources, which is null when "injected" (during the class transformation)
-     * and is only
-     * determined when a component is actually instantiated.
-     */
-    private String addInjectedFieldUncached(Class type, String suggestedName, Object value)
-    {
-        CtClass ctType = toCtClass(type);
-
-        String fieldName = addField(Modifier.PROTECTED | Modifier.FINAL, type.getName(), suggestedName);
-
-        addInjectToConstructor(fieldName, ctType, value);
-
-        return fieldName;
-    }
-
-    public String searchForPreviousInjection(InjectionKey key)
-    {
-        String result = injectionCache.get(key);
-
-        if (result != null)
-            return result;
-
-        if (parentTransformation != null)
-            return parentTransformation.searchForPreviousInjection(key);
-
-        return null;
-    }
-
-    public void advise(TransformMethodSignature methodSignature, ComponentMethodAdvice advice)
-    {
-        getOrCreateMethod(methodSignature).addAdvice(advice);
-    }
-
-    public boolean isMethodOverride(TransformMethodSignature methodSignature)
-    {
-        if (!isMethod(methodSignature))
-            throw new IllegalArgumentException(String.format("Method %s is not implemented by transformed class %s.",
-                    methodSignature, getClassName()));
-
-        return getOrCreateMethod(methodSignature).isOverride();
-    }
-
-    public InternalClassTransformation getParentTransformation()
-    {
-        return parentTransformation;
-    }
-
-    public boolean isMethod(TransformMethodSignature signature)
-    {
-        assert signature != null;
-
-        return methods.containsKey(signature);
-    }
-
-    /**
-     * Adds a parameter to the constructor for the class; the parameter is used to initialize the
-     * value for a field.
-     * 
-     * @param fieldName
-     *            name of field to inject
-     * @param fieldType
-     *            Javassist type of the field (and corresponding parameter)
-     * @param value
-     *            the value to be injected (which will in unusual cases be null)
-     */
-    private void addInjectToConstructor(String fieldName, CtClass fieldType, Object value)
-    {
-        addToConstructor(String.format("  %s = %s;", fieldName, addConstructorArg(fieldType, value)));
-    }
-
-    public void injectField(String fieldName, Object value)
-    {
-        getField(fieldName).inject(value);
-    }
-
-    private CtClass convertNameToCtType(String type) throws NotFoundException
-    {
-        return classPool.get(type);
-    }
-
-    public String finish()
-    {
-        failIfFrozen();
-
-        // Finishing fields may sometimes create new methods, so finish the fields
-        // first.
-
-        for (TransformFieldImpl tfi : fields.values())
-        {
-            tfi.doFinish();
-        }
-
-        // doFinish() will sometimes create new methods on the ClassTransformation, yielding
-        // a concurrent modification exception, so do a defensive copy.
-
-        List<TransformMethodImpl> tmis = CollectionFactory.newList(methods.values());
-
-        for (TransformMethodImpl tmi : tmis)
-        {
-            tmi.doFinish();
-        }
-
-        String initializer = convertConstructorToMethod();
-
-        performFieldTransformations();
-
-        addConstructor(initializer);
-
-        String description = toString();
-
-        freeze();
-
-        return description;
-    }
-
-    private void addConstructor(String initializer)
-    {
-        // Add a call to the initializer; the method converted from the class' default
-        // constructor.
-
-        constructor.append("  ");
-        constructor.append(initializer);
-
-        // This finally matches the "{" added inside the constructor
-
-        constructor.append("();\n\n}");
-
-        String constructorBody = constructor.toString();
-
-        try
-        {
-            CtClass[] types = new CtClass[]
-            { toCtClass(InternalComponentResources.class), toCtClass(Object[].class) };
-
-            CtConstructor cons = CtNewConstructor.make(types, null, constructorBody, ctClass);
-
-            ctClass.addConstructor(cons);
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        formatter.format("add constructor: %s(ComponentResources, Object[])\n%s\n\n", getClassName(), constructorBody);
-    }
-
-    private String convertConstructorToMethod()
-    {
-        String initializer = idAllocator.allocateId("initializer");
-
-        try
-        {
-            CtConstructor defaultConstructor = ctClass.getConstructor("()V");
-
-            CtMethod initializerMethod = defaultConstructor.toMethod(initializer, ctClass);
-
-            ctClass.addMethod(initializerMethod);
-
-            recordMethod(initializerMethod, false);
-
-            // Replace the constructor body with one that fails. This leaves, as an open question,
-            // what to do about any other constructors.
-
-            String body = String.format("throw new RuntimeException(\"%s\");",
-                    ServicesMessages.forbidInstantiateComponentClass(getClassName()));
-
-            defaultConstructor.setBody(body);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        formatter.format("convert default constructor: %s();\n\n", initializer);
-
-        return initializer;
-    }
-
-    public Instantiator createInstantiator()
-    {
-        if (Modifier.isAbstract(ctClass.getModifiers()))
-            return createAbstractClassInstantiator();
-
-        String componentClassName = getClassName();
-
-        String name = ClassFabUtils.generateClassName("Instantiator");
-
-        ClassFab cf = classFactory.newClass(name, AbstractInstantiator.class);
-
-        Object[] componentConstructorArgs = constructorArgs.toArray(new Object[constructorArgs.size()]);
-
-        cf.addConstructor(new Class[]
-        { ComponentModel.class, String.class, Object[].class }, null, "super($1, $2, $3);");
-
-        // Pass $1 (the InternalComponentResources object) and the constructorArgs (from the AbstractIntantiator
-        // base class) into the new component instance's constructor
-
-        cf.addMethod(Modifier.PUBLIC, NEW_INSTANCE_SIGNATURE,
-                String.format("return new %s($1, constructorArgs);", componentClassName));
-
-        Class instantiatorClass = cf.createClass();
-
-        try
-        {
-            Object instance = instantiatorClass.getConstructors()[0].newInstance(componentModel,
-                    String.format("Instantiator[%s]", componentClassName), componentConstructorArgs);
-
-            return (Instantiator) instance;
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private Instantiator createAbstractClassInstantiator()
-    {
-        return new Instantiator()
-        {
-            public Component newInstance(InternalComponentResources resources)
-            {
-                throw new RuntimeException(String.format("Component class %s is abstract and can not be instantiated.",
-                        ctClass.getName()));
-            }
-
-            public ComponentModel getModel()
-            {
-                return componentModel;
-            }
-        };
-    }
-
-    private void failIfFrozen()
-    {
-        if (frozen)
-            throw new IllegalStateException("The ClassTransformation instance (for " + getClassName()
-                    + ") has completed all transformations and may not be further modified.");
-    }
-
-    private void failIfNotFrozen()
-    {
-        if (!frozen)
-            throw new IllegalStateException("The ClassTransformation instance (for " + getClassName()
-                    + ") has not yet completed all transformations.");
-    }
-
-    public IdAllocator getIdAllocator()
-    {
-        failIfNotFrozen();
-
-        return idAllocator;
-    }
-
-    public List<Object> getConstructorArgs()
-    {
-        failIfNotFrozen();
-
-        return CollectionFactory.newList(constructorArgs);
-    }
-
-    public List<Annotation> getClassAnnotations()
-    {
-        failIfFrozen();
-
-        if (classAnnotations == null)
-            assembleClassAnnotations();
-
-        return classAnnotations;
-    }
-
-    private void assembleClassAnnotations()
-    {
-        classAnnotations = CollectionFactory.newList();
-
-        boolean filter = false;
-
-        try
-        {
-            for (CtClass current = ctClass; current != null; current = current.getSuperclass())
-            {
-                addAnnotationsToList(classAnnotations, current.getAnnotations(), filter);
-
-                // Super-class annotations are filtered
-
-                filter = true;
-            }
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-        catch (ClassNotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("InternalClassTransformation[\n");
-
-        try
-        {
-            Formatter formatter = new Formatter(builder);
-
-            formatter.format("%s %s extends %s", Modifier.toString(ctClass.getModifiers()), ctClass.getName(), ctClass
-                    .getSuperclass().getName());
-
-            CtClass[] interfaces = ctClass.getInterfaces();
-
-            for (int i = 0; i < interfaces.length; i++)
-            {
-                if (i == 0)
-                    builder.append("\n  implements ");
-                else
-                    builder.append(", ");
-
-                builder.append(interfaces[i].getName());
-            }
-
-            if (description != null)
-                formatter.format("\n\n%s", description.toString());
-        }
-        catch (NotFoundException ex)
-        {
-            builder.append(ex);
-        }
-
-        builder.append("]");
-
-        return builder.toString();
-    }
-
-    public void makeReadOnly(String fieldName)
-    {
-        String methodName = newMemberName("write", fieldName);
-
-        String fieldType = getFieldType(fieldName);
-
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PRIVATE, "void", methodName, new String[]
-        { fieldType }, null);
-
-        String message = ServicesMessages.readOnlyField(getClassName(), fieldName);
-
-        String body = String.format("throw new java.lang.RuntimeException(\"%s\");", message);
-
-        addNewMethod(sig, body);
-
-        replaceWriteAccess(fieldName, methodName);
-    }
-
-    public void removeField(String fieldName)
-    {
-        removed("removeField(String)");
-    }
-
-    public void replaceReadAccess(String fieldName, String methodName)
-    {
-        getTransformFieldImpl(fieldName).replaceReadAccess(methodName);
-    }
-
-    public void replaceWriteAccess(String fieldName, String methodName)
-    {
-        getTransformFieldImpl(fieldName).replaceWriteAccess(methodName);
-    }
-
-    private void performFieldTransformations()
-    {
-        // If no field transformations have been requested, then we can save ourselves some
-        // trouble!
-
-        if (fieldAccessReplaced)
-            replaceFieldAccess();
-    }
-
-    static final int SYNTHETIC = 0x00001000;
-
-    private void replaceFieldAccess()
-    {
-        final Map<String, String> fieldReadTransforms = CollectionFactory.newMap();
-        final Map<String, String> fieldWriteTransforms = CollectionFactory.newMap();
-
-        for (TransformFieldImpl tfi : fields.values())
-        {
-            putIfNotNull(fieldReadTransforms, tfi.name, tfi.readValueBody);
-            putIfNotNull(fieldWriteTransforms, tfi.name, tfi.writeValueBody);
-        }
-
-        ExprEditor editor = new ExprEditor()
-        {
-            private final Set<CtBehavior> addedMethods = CollectionFactory.newSet();
-
-            {
-                for (TransformMethodImpl tmi : methods.values())
-                {
-                    if (tmi.added)
-                        addedMethods.add(tmi.method);
-                }
-            }
-
-            public void edit(FieldAccess access) throws CannotCompileException
-            {
-                CtBehavior where = access.where();
-
-                if (where instanceof CtConstructor)
-                    return;
-
-                // It may be access to a public field of a data object somewhere and
-                // that's ignored TAP5-1222
-
-                if (!access.getClassName().equals(getClassName()))
-                    return;
-
-                boolean isRead = access.isReader();
-                String fieldName = access.getFieldName();
-                CtMethod method = (CtMethod) where;
-
-                formatter.format("Checking field %s %s in method %s(): ", isRead ? "read" : "write", fieldName,
-                        method.getName());
-
-                // Ignore any methods to were added as part of the transformation.
-                // If we reference the field there, we really mean the field.
-
-                if (addedMethods.contains(where))
-                {
-                    formatter.format("added method\n");
-                    return;
-                }
-
-                Map<String, String> transformMap = isRead ? fieldReadTransforms : fieldWriteTransforms;
-
-                String body = transformMap.get(fieldName);
-                if (body == null)
-                {
-                    formatter.format("field not transformed\n");
-                    return;
-                }
-
-                formatter.format("replacing with %s\n", body);
-
-                access.replace(body);
-            }
-        };
-
-        try
-        {
-            ctClass.instrument(editor);
-        }
-        catch (CannotCompileException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        formatter.format("\n");
-    }
-
-    private static <K, V> void putIfNotNull(Map<K, V> map, K key, V value)
-    {
-        if (value != null)
-            map.put(key, value);
-    }
-
-    public Class toClass(String type)
-    {
-        String finalType = TransformUtils.getWrapperTypeName(type);
-
-        try
-        {
-            return Class.forName(finalType, true, classFactory.getClassLoader());
-        }
-        catch (ClassNotFoundException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public String getClassName()
-    {
-        return ctClass.getName();
-    }
-
-    public Logger getLogger()
-    {
-        return logger;
-    }
-
-    public void extendConstructor(String statement)
-    {
-        removed("extendConstructor(String)");
-    }
-
-    void addToConstructor(String statement)
-    {
-        constructor.append(statement);
-        constructor.append("\n");
-    }
-
-    public String getMethodIdentifier(TransformMethodSignature signature)
-    {
-        return getOrCreateMethod(signature).getMethodIdentifier();
-    }
-
-    public boolean isRootTransformation()
-    {
-        return parentTransformation == null;
-    }
-
-    /**
-     * Adds a new constructor argument to the transformed constructor.
-     * 
-     * @param parameterType
-     *            type of parameter
-     * @param value
-     *            value of parameter
-     * @return de-referenced argument value
-     */
-    private String addConstructorArg(CtClass parameterType, Object value)
-    {
-
-        int index = constructorArgs.size();
-
-        constructorArgs.add(value);
-
-        return ClassFabUtils.castReference(String.format("$2[%d]", index), parameterType.getName());
-    }
-
-    private static List<TransformMethodSignature> toMethodSignatures(List<TransformMethod> input)
-    {
-        List<TransformMethodSignature> result = CollectionFactory.newList();
-
-        for (TransformMethod m : input)
-        {
-            result.add(m.getSignature());
-        }
-
-        return result;
-    }
-
-    private static List<String> toFieldNames(List<TransformField> fields)
-    {
-        List<String> result = CollectionFactory.newList();
-
-        for (TransformField f : fields)
-        {
-            result.add(f.getName());
-        }
-
-        return result;
-    }
-
-    private ComponentMethodInvocationBuilder createBuilder(TransformMethodSignature signature)
-    {
-        return new ComponentMethodInvocationBuilder(this, componentClassCache, signature, classSource);
-    }
-
-    public boolean isDeclaredMethod(TransformMethodSignature signature)
-    {
-        failIfFrozen();
-
-        assert signature != null;
-
-        return methods.containsKey(signature);
-    }
-
-    private void removed(String methodName)
-    {
-        throw new RuntimeException(String.format(
-                "Method ClassTransformation.%s has been deprecated and is no longer functional. "
-                        + "Please consult the JavaDoc for a suitable replacement.", methodName));
-    }
-
-    private static ComponentMethodAdvice toBeforeAdvice(final ComponentInstanceOperation operation)
-    {
-        return new ComponentMethodAdvice()
-        {
-
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                operation.invoke(invocation.getInstance());
-
-                invocation.proceed();
-            }
-        };
-    }
-
-    private static ComponentMethodAdvice toAfterAdvice(final ComponentInstanceOperation operation)
-    {
-        return new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                invocation.proceed();
-
-                operation.invoke(invocation.getInstance());
-            }
-        };
-    }
-
-    public void addComponentEventHandler(String eventType, int minContextValues, String methodDescription,
-            ComponentEventHandler handler)
-    {
-        assert InternalUtils.isNonBlank(eventType);
-        assert InternalUtils.isNonBlank(methodDescription);
-        assert handler != null;
-
-        componentModel.addEventHandler(eventType);
-
-        getOrCreateMethod(TransformConstants.DISPATCH_COMPONENT_EVENT).addAdvice(
-                createEventHandlerAdvice(eventType, minContextValues, methodDescription, handler));
-
-    }
-
-    private static ComponentMethodAdvice createEventHandlerAdvice(final String eventType, final int minContextValues,
-            final String methodDescription, final ComponentEventHandler handler)
-    {
-        return new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                // Invoke the super-class implementation first.
-                
-                invocation.proceed();
-                
-                ComponentEvent event = (ComponentEvent) invocation.getParameter(0);
-
-                if (!event.isAborted() && event.matches(eventType, "", minContextValues))
-                {
-                    event.setMethodDescription(methodDescription);
-
-                    handler.handleEvent(invocation.getInstance(), event);
-
-                    // Ensure that the caller knows that some event handler method
-                    // was invoked.
-                    invocation.overrideResult(true);
-                }
-            }
-        };
-    }
-
-    private static org.apache.tapestry5.services.FieldAccess toFieldAccess(final FieldValueConduit conduit)
-    {
-        return new org.apache.tapestry5.services.FieldAccess()
-        {
-
-            public void write(Object instance, Object value)
-            {
-                conduit.set(value);
-            }
-
-            public Object read(Object instance)
-            {
-                return conduit.get();
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
deleted file mode 100644
index f8a3d76..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalModule.java
+++ /dev/null
@@ -1,323 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javax.servlet.http.Cookie;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.pageload.PageLoaderImpl;
-import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
-import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
-import org.apache.tapestry5.internal.structure.ComponentPageElementResourcesSource;
-import org.apache.tapestry5.internal.structure.ComponentPageElementResourcesSourceImpl;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.Autobuild;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.services.CtClassSource;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-import org.slf4j.Logger;
-
-/**
- * {@link org.apache.tapestry5.services.TapestryModule} has gotten too complicated and it is nice to demarkate public
- * (and stable) from internal (and volatile).
- */
-@Marker(Core.class)
-public class InternalModule
-{
-    private final UpdateListenerHub updateListenerHub;
-
-    private final RequestGlobals requestGlobals;
-
-    private final InvalidationEventHub classesInvalidationEventHub;
-
-    public InternalModule(UpdateListenerHub updateListenerHub, RequestGlobals requestGlobals,
-
-    @ComponentClasses
-    InvalidationEventHub classesInvalidationEventHub)
-    {
-        this.updateListenerHub = updateListenerHub;
-        this.requestGlobals = requestGlobals;
-        this.classesInvalidationEventHub = classesInvalidationEventHub;
-    }
-
-    /**
-     * Bind all the private/internal services of Tapestry.
-     */
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(PersistentFieldManager.class, PersistentFieldManagerImpl.class);
-        binder.bind(TemplateParser.class, TemplateParserImpl.class);
-        binder.bind(PageResponseRenderer.class, PageResponseRendererImpl.class);
-        binder.bind(PageMarkupRenderer.class, PageMarkupRendererImpl.class);
-        binder.bind(LinkSource.class, LinkSourceImpl.class);
-        binder.bind(LocalizationSetter.class, LocalizationSetterImpl.class);
-        binder.bind(PageElementFactory.class, PageElementFactoryImpl.class);
-        binder.bind(ResourceStreamer.class, ResourceStreamerImpl.class);
-        binder.bind(ClientPersistentFieldStorage.class, ClientPersistentFieldStorageImpl.class);
-        binder.bind(PageRenderQueue.class, PageRenderQueueImpl.class);
-        binder.bind(AjaxPartialResponseRenderer.class, AjaxPartialResponseRendererImpl.class);
-        binder.bind(PageContentTypeAnalyzer.class, PageContentTypeAnalyzerImpl.class);
-        binder.bind(ComponentPageElementResourcesSource.class, ComponentPageElementResourcesSourceImpl.class);
-        binder.bind(RequestSecurityManager.class, RequestSecurityManagerImpl.class);
-        binder.bind(InternalRequestGlobals.class, InternalRequestGlobalsImpl.class);
-        binder.bind(EndOfRequestEventHub.class);
-        binder.bind(ResponseCompressionAnalyzer.class, ResponseCompressionAnalyzerImpl.class);
-        binder.bind(ComponentModelSource.class);
-        binder.bind(AssetResourceLocator.class);
-        binder.bind(JavaScriptStackPathConstructor.class);
-        binder.bind(AjaxFormUpdateController.class);
-    }
-
-    /**
-     * Chooses one of two implementations, based on the configured mode.
-     */
-    public static ActionRenderResponseGenerator buildActionRenderResponseGenerator(
-
-    @Symbol(SymbolConstants.SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS)
-    boolean immediateMode,
-
-    ObjectLocator locator)
-    {
-        if (immediateMode)
-            return locator.autobuild(ImmediateActionRenderResponseGenerator.class);
-
-        return locator.autobuild(ActionRenderResponseGeneratorImpl.class);
-    }
-
-    @Scope(ScopeConstants.PERTHREAD)
-    public static RequestPageCache buildRequestPageCache(ServiceResources serviceResources,
-            @Symbol(SymbolConstants.PAGE_POOL_ENABLED)
-            boolean pagePoolEnabled, PerthreadManager perthreadManager)
-    {
-        if (pagePoolEnabled)
-        {
-
-            RequestPageCacheImpl service = serviceResources.autobuild(RequestPageCacheImpl.class);
-
-            perthreadManager.addThreadCleanupListener(service);
-
-            return service;
-        }
-
-        // Modern, non-pooling
-
-        NonPoolingRequestPageCacheImpl service = serviceResources.autobuild(NonPoolingRequestPageCacheImpl.class);
-
-        perthreadManager.addThreadCleanupListener(service);
-
-        return service;
-    }
-
-    public ComponentInstantiatorSource buildComponentInstantiatorSource(@Builtin
-    ClassFactory classFactory,
-
-    ComponentClassTransformer transformer,
-
-    Logger logger,
-
-    InternalRequestGlobals internalRequestGlobals,
-
-    ClasspathURLConverter classpathURLConverter)
-    {
-        ComponentInstantiatorSourceImpl source = new ComponentInstantiatorSourceImpl(logger,
-                classFactory.getClassLoader(), transformer, internalRequestGlobals, classpathURLConverter);
-
-        updateListenerHub.addUpdateListener(source);
-
-        return source;
-    }
-
-    public static ComponentClassTransformer buildComponentClassTransformer(@Autobuild
-    ComponentClassTransformerImpl transformer, @ComponentClasses
-    InvalidationEventHub hub)
-    {
-        hub.addInvalidationListener(transformer);
-
-        return transformer;
-    }
-
-    public PageLoader buildPageLoader(@Autobuild
-    PageLoaderImpl service,
-
-    @ComponentTemplates
-    InvalidationEventHub templatesHub,
-
-    @ComponentMessages
-    InvalidationEventHub messagesHub)
-    {
-        // TODO: We could combine these three using chain-of-command.
-
-        classesInvalidationEventHub.addInvalidationListener(service);
-        templatesHub.addInvalidationListener(service);
-        messagesHub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    public PagePool buildPagePool(@Autobuild
-    PagePoolImpl service,
-
-    @ComponentTemplates
-    InvalidationEventHub templatesHub,
-
-    @ComponentMessages
-    InvalidationEventHub messagesHub)
-    {
-        // This covers invalidations due to changes to classes
-
-        classesInvalidationEventHub.addInvalidationListener(service);
-
-        // This covers invalidation due to changes to message catalogs (properties files)
-
-        messagesHub.addInvalidationListener(service);
-
-        // ... and this covers invalidations due to changes to templates
-
-        templatesHub.addInvalidationListener(service);
-
-        // Give the service a chance to clean up its own cache periodically as well
-
-        updateListenerHub.addUpdateListener(service);
-
-        return service;
-    }
-
-    public PageSource buildPageSource(@Autobuild
-    PageSourceImpl service,
-
-    @ComponentTemplates
-    InvalidationEventHub templatesHub,
-
-    @ComponentMessages
-    InvalidationEventHub messagesHub)
-    {
-        // This covers invalidations due to changes to classes
-
-        classesInvalidationEventHub.addInvalidationListener(service);
-
-        // This covers invalidation due to changes to message catalogs (properties files)
-
-        messagesHub.addInvalidationListener(service);
-
-        // ... and this covers invalidations due to changes to templates
-
-        templatesHub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    public ComponentClassCache buildComponentClassCache(@Autobuild
-    ComponentClassCacheImpl service)
-    {
-        classesInvalidationEventHub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    public CookieSource buildCookieSource()
-    {
-        return new CookieSource()
-        {
-
-            public Cookie[] getCookies()
-            {
-                return requestGlobals.getHTTPServletRequest().getCookies();
-            }
-        };
-    }
-
-    public CookieSink buildCookieSink()
-    {
-        return new CookieSink()
-        {
-
-            public void addCookie(Cookie cookie)
-            {
-                requestGlobals.getHTTPServletResponse().addCookie(cookie);
-            }
-        };
-    }
-
-    public ResourceCache buildResourceCache(@Autobuild
-    ResourceCacheImpl service)
-    {
-        updateListenerHub.addUpdateListener(service);
-
-        return service;
-    }
-
-    public ComponentTemplateSource buildComponentTemplateSource(TemplateParser parser, @Primary
-    ComponentTemplateLocator locator, ClasspathURLConverter classpathURLConverter)
-    {
-        ComponentTemplateSourceImpl service = new ComponentTemplateSourceImpl(parser, locator, classpathURLConverter);
-
-        updateListenerHub.addUpdateListener(service);
-
-        return service;
-    }
-
-    @Marker(ComponentLayer.class)
-    public static CtClassSource buildCtClassSource(PropertyShadowBuilder builder,
-            ComponentInstantiatorSource componentInstantiatorSource)
-    {
-        return builder.build(componentInstantiatorSource, "classSource", CtClassSource.class);
-    }
-
-    public PageActivationContextCollector buildPageActivationContextCollector(@Autobuild
-    PageActivationContextCollectorImpl service)
-    {
-        classesInvalidationEventHub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public StringInterner buildStringInterner(@Autobuild
-    StringInternerImpl service)
-    {
-        classesInvalidationEventHub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    /**
-     * Contributes:
-     * <dl>
-     * <dt>LinkDecoration (instance of {@link LinkDecorationListener})</dt>
-     * <dd>Triggers events for notifications about links</dd>
-     * <dl>
-     * 
-     * @since 5.2.0
-     */
-    public static void contributeLinkSource(OrderedConfiguration<LinkCreationListener2> configuration)
-    {
-        configuration.addInstance("LinkDecoration", LinkDecorationListener.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalRequestGlobals.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalRequestGlobals.java
deleted file mode 100644
index 7fc45ce..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalRequestGlobals.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Stores global per-request data internal to the framework.
- */
-public interface InternalRequestGlobals
-{
-    /**
-     * Stores the throwable for later; only the first such exception is kept (later exceptions are ignored, see
-     * TAPESTRY-2399).
-     */
-    void storeClassLoaderException(Throwable classLoaderException);
-
-    Throwable getClassLoaderException();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalRequestGlobalsImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalRequestGlobalsImpl.java
deleted file mode 100644
index 9d72f3d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/InternalRequestGlobalsImpl.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-
-@Scope(ScopeConstants.PERTHREAD)
-public class InternalRequestGlobalsImpl implements InternalRequestGlobals
-{
-    private Throwable classLoaderException;
-
-    public Throwable getClassLoaderException()
-    {
-        return classLoaderException;
-    }
-
-    public void storeClassLoaderException(Throwable classLoaderException)
-    {
-        if (this.classLoaderException == null)
-            this.classLoaderException = classLoaderException;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/Invariant.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/Invariant.java
deleted file mode 100644
index 924b570..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/Invariant.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.lang.annotation.*;
-
-/**
- * Special annotation that is applied to literal {@link org.apache.tapestry5.PropertyConduit}s, to inform {@link
- * org.apache.tapestry5.internal.bindings.PropBinding} that the value is, in fact, invariant.
- */
-@Target({ElementType.PARAMETER, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface Invariant
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
deleted file mode 100644
index 5da19fb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessor.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.Response;
-
-public class JSONArrayEventResultProcessor implements ComponentEventResultProcessor<JSONArray>
-{
-    private final Response response;
-
-    private final String outputEncoding;
-
-    private final boolean compactJSON;
-
-    public JSONArrayEventResultProcessor(Response response,
-
-    @Symbol(SymbolConstants.CHARSET)
-    String outputEncoding,
-
-    @Symbol(SymbolConstants.COMPACT_JSON)
-    boolean compactJSON)
-    {
-        this.response = response;
-        this.outputEncoding = outputEncoding;
-        this.compactJSON = compactJSON;
-    }
-
-    public void processResultValue(JSONArray value) throws IOException
-    {
-        ContentType contentType = new ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
-
-        PrintWriter pw = response.getPrintWriter(contentType.toString());
-
-        value.print(pw, compactJSON);
-
-        pw.close();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java
deleted file mode 100644
index c62f19c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/JSONObjectEventResultProcessor.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.Response;
-
-/**
- * Implementation of {@link ComponentEventResultProcessor} for {@link org.apache.tapestry5.json.JSONObject}, allowing a
- * component event handler to return a JSONObject that will be sent directly to the client as the reply. This is often
- * used with custom components that need a custom JSON response.
- */
-public class JSONObjectEventResultProcessor implements ComponentEventResultProcessor<JSONObject>
-{
-    private final Response response;
-
-    private final String outputEncoding;
-
-    private final boolean compactJSON;
-
-    public JSONObjectEventResultProcessor(Response response,
-
-    @Symbol(SymbolConstants.CHARSET)
-    String outputEncoding,
-
-    @Symbol(SymbolConstants.COMPACT_JSON)
-    boolean compactJSON)
-    {
-        this.response = response;
-        this.outputEncoding = outputEncoding;
-        this.compactJSON = compactJSON;
-    }
-
-    public void processResultValue(JSONObject value) throws IOException
-    {
-        ContentType contentType = new ContentType(InternalConstants.JSON_MIME_TYPE, outputEncoding);
-
-        PrintWriter pw = response.getPrintWriter(contentType.toString());
-
-        value.print(pw, compactJSON);
-
-        pw.close();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkDecorationListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkDecorationListener.java
deleted file mode 100644
index ba0659a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkDecorationListener.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.LinkCreationListener2;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-
-/**
- * A default {@link LinkCreationListener2} that triggers the {@link EventConstants#DECORATE_COMPONENT_EVENT_LINK} and
- * {@link EventConstants#DECORATE_PAGE_RENDER_LINK} events as links are generated.
- * 
- * @since 5.2.0
- */
-public class LinkDecorationListener implements LinkCreationListener2
-{
-    private final ComponentClassResolver resolver;
-
-    private final ComponentSource componentSource;
-
-    private final ComponentModelSource modelSource;
-
-    public LinkDecorationListener(ComponentClassResolver resolver, ComponentSource componentSource,
-            ComponentModelSource modelSource)
-    {
-        this.resolver = resolver;
-        this.componentSource = componentSource;
-        this.modelSource = modelSource;
-    }
-
-    public void createdComponentEventLink(Link link, ComponentEventRequestParameters parameters)
-    {
-        trigger(parameters.getActivePageName(), EventConstants.DECORATE_COMPONENT_EVENT_LINK, link, parameters);
-    }
-
-    public void createdPageRenderLink(Link link, PageRenderRequestParameters parameters)
-    {
-        trigger(parameters.getLogicalPageName(), EventConstants.DECORATE_PAGE_RENDER_LINK, link, parameters);
-    }
-
-    private void trigger(String pageName, String eventType, Link link, Object parameters)
-    {
-        String pageClassName = resolver.resolvePageNameToClassName(pageName);
-
-        ComponentModel model = modelSource.getModel(pageClassName);
-
-        if (model.handlesEvent(eventType))
-        {
-            Component page = componentSource.getPage(pageName);
-
-            page.getComponentResources().triggerEvent(eventType, new Object[]
-            { link, parameters }, null);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java
deleted file mode 100644
index bf9e4de..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkImpl.java
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.BaseURLSource;
-import org.apache.tapestry5.services.ContextPathEncoder;
-import org.apache.tapestry5.services.Response;
-
-public class LinkImpl implements Link
-{
-    private Map<String, String> parameters;
-
-    private final String basePath;
-
-    private final boolean forForm;
-
-    private LinkSecurity defaultSecurity;
-
-    private final Response response;
-
-    private final ContextPathEncoder contextPathEncoder;
-
-    private final BaseURLSource baseURLSource;
-
-    private String anchor;
-
-    public LinkImpl(String basePath, boolean forForm, LinkSecurity defaultSecurity, Response response,
-            ContextPathEncoder contextPathEncoder, BaseURLSource baseURLSource)
-    {
-        assert basePath != null;
-
-        this.basePath = basePath;
-        this.forForm = forForm;
-        this.defaultSecurity = defaultSecurity;
-        this.response = response;
-        this.contextPathEncoder = contextPathEncoder;
-        this.baseURLSource = baseURLSource;
-    }
-
-    public Link copyWithBasePath(String basePath)
-    {
-        LinkImpl copy = new LinkImpl(basePath, forForm, defaultSecurity, response, contextPathEncoder, baseURLSource);
-
-        copy.anchor = anchor;
-
-        for (String name : getParameterNames())
-        {
-            copy.addParameter(name, parameters.get(name));
-        }
-
-        return copy;
-    }
-
-    public void addParameter(String parameterName, String value)
-    {
-        assert InternalUtils.isNonBlank(parameterName);
-        assert InternalUtils.isNonBlank(value);
-        if (parameters == null)
-            parameters = CollectionFactory.newMap();
-
-        parameters.put(parameterName, value);
-    }
-
-    public String getBasePath()
-    {
-        return basePath;
-    }
-
-    public void removeParameter(String parameterName)
-    {
-        assert InternalUtils.isNonBlank(parameterName);
-        if (parameters != null)
-            parameters.remove(parameterName);
-    }
-
-    public String getAnchor()
-    {
-        return anchor;
-    }
-
-    public List<String> getParameterNames()
-    {
-        return InternalUtils.sortedKeys(parameters);
-    }
-
-    public String getParameterValue(String name)
-    {
-        return InternalUtils.get(parameters, name);
-    }
-
-    public void setAnchor(String anchor)
-    {
-        this.anchor = anchor;
-    }
-
-    public String toAbsoluteURI()
-    {
-        return buildAnchoredURI(defaultSecurity.promote());
-    }
-
-    public String toAbsoluteURI(boolean secure)
-    {
-        return buildAnchoredURI(secure ? LinkSecurity.FORCE_SECURE : LinkSecurity.FORCE_INSECURE);
-    }
-
-    public String toRedirectURI()
-    {
-        return appendAnchor(response.encodeRedirectURL(buildURI(defaultSecurity)));
-    }
-
-    public String toURI()
-    {
-        return buildAnchoredURI(defaultSecurity);
-    }
-
-    private String appendAnchor(String path)
-    {
-        return InternalUtils.isBlank(anchor) ? path : path + "#" + anchor;
-    }
-
-    private String buildAnchoredURI(LinkSecurity security)
-    {
-        return appendAnchor(response.encodeURL(buildURI(security)));
-    }
-
-    /**
-     * Returns the value from {@link #toURI()}
-     */
-    @Override
-    public String toString()
-    {
-        return toURI();
-    }
-
-    /**
-     * Extends the absolute path with any query parameters. Query parameters are never added to a forForm link.
-     * 
-     * @return absoluteURI appended with query parameters
-     */
-    private String buildURI(LinkSecurity security)
-    {
-
-        if (!security.isAbsolute() && (forForm || parameters == null))
-            return basePath;
-
-        StringBuilder builder = new StringBuilder(basePath.length() * 2);
-
-        switch (security)
-        {
-            case FORCE_SECURE:
-                builder.append(baseURLSource.getBaseURL(true));
-                break;
-            case FORCE_INSECURE:
-                builder.append(baseURLSource.getBaseURL(false));
-                break;
-            default:
-        }
-
-        // The base URL (from BaseURLSource) does not end with a slash.
-        // The basePath does (the context path begins with a slash or is blank, then there's
-        // always a slash before the local name or page name.
-
-        builder.append(basePath);
-
-        if (!forForm)
-        {
-            String sep = basePath.contains("?") ? "&" : "?";
-
-            for (String name : getParameterNames())
-            {
-                String value = parameters.get(name);
-
-                builder.append(sep);
-
-                // We assume that the name is URL safe and that the value will already have been URL
-                // encoded if it is not known to be URL safe.
-
-                builder.append(name);
-                builder.append("=");
-                builder.append(value);
-
-                sep = "&";
-            }
-        }
-
-        return builder.toString();
-    }
-
-    public Link addParameterValue(String parameterName, Object value)
-    {
-        addParameter(parameterName, contextPathEncoder.encodeValue(value));
-
-        return this;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSecurity.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSecurity.java
deleted file mode 100644
index 8ab34a8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSecurity.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Identifies how a {@link Link} should handle security.
- * 
- * @since 5.2.2
- */
-public enum LinkSecurity
-{
-    /** The request was insecure, but the targeted page was secure, so the URI should be absolute and secure. */
-    FORCE_SECURE,
-
-    /** The request was was secure but the targeted page is not, so the URI should be absolute and insecure. */
-    FORCE_INSECURE,
-
-    /**
-     * The request is insecure, which matches the targeted page security, so there's no explicit need for an absolute
-     * URI.
-     */
-    INSECURE,
-
-    /**
-     * The request is secure, which matches the targeted page security, so there's no explicit need for an absolute
-     * URI.
-     */
-    SECURE;
-
-    /** Promotes to either {@link #FORCE_SECURE} or {@link #FORCE_INSECURE}. */
-    public LinkSecurity promote()
-    {
-        switch (this)
-        {
-            case SECURE:
-            case FORCE_SECURE:
-                return FORCE_SECURE;
-
-            default:
-                return FORCE_INSECURE;
-        }
-    }
-
-    /** Does this value indicate forcing an absolute URI (one that includes scheme and hostname)? */
-    public boolean isAbsolute()
-    {
-        return this == FORCE_SECURE || this == FORCE_INSECURE;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSource.java
deleted file mode 100644
index 93127e1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSource.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.services.LinkCreationHub;
-import org.apache.tapestry5.services.LinkCreationListener2;
-
-/**
- * A source for {@link org.apache.tapestry5.Link} objects.
- * 
- * @see org.apache.tapestry5.services.LinkCreationListener
- * @since 5.1.0.0
- */
-@UsesOrderedConfiguration(LinkCreationListener2.class)
-public interface LinkSource
-{
-    /**
-     * Creates a stateful action link. Action links are built for components. Action links are encoded by the current
-     * request (that is, bound to the current request's session, if any).
-     * 
-     * @param page
-     * @param nestedId
-     * @param eventType
-     *            the type of event to trigger
-     * @param forForm
-     *            true if the link is for a form, false otherwise
-     * @param context
-     *            Additional path data, each value will be converted to a string and appended to the URI @return a
-     *            link
-     * @see org.apache.tapestry5.ComponentResources#createActionLink(String, boolean, Object[])
-     */
-    Link createComponentEventLink(Page page, String nestedId, String eventType, boolean forForm, Object... context);
-
-    /**
-     * Creates a render link for the page. If an activation context is supplied then that context is built into the URI.
-     * If no activation context is supplied, then the activation context is obtained from the page itself, by triggering
-     * a passivate event on its root component.
-     * <p/>
-     * When the activationContext is an empty array, the targeted page is checked to see if it can provide an activation
-     * context. This is accomplished by triggering a "passivate" event on the targeted page. If the override parameter
-     * is true, this will not occur (even when the activation context is empty).
-     * 
-     * @param pageName
-     *            name of the page to which a link should be created
-     * @param override
-     *            if true, then the provided activation context is always used even if empty
-     * @param pageActivationContext
-     *            the activation context for the page
-     * @return a link
-     * @see org.apache.tapestry5.ComponentResources#createPageLink(String, boolean, Object[])
-     */
-    Link createPageRenderLink(String pageName, boolean override, Object... pageActivationContext);
-
-    /**
-     * Returns the hub, used to register and de-register {@link org.apache.tapestry5.services.LinkCreationListener}s.
-     * 
-     * @return the hub
-     */
-    LinkCreationHub getLinkCreationHub();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java
deleted file mode 100644
index 2c0bba0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LinkSourceImpl.java
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.LinkCreationHub;
-import org.apache.tapestry5.services.LinkCreationListener;
-import org.apache.tapestry5.services.LinkCreationListener2;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.RequestGlobals;
-
-@SuppressWarnings("all")
-public class LinkSourceImpl implements LinkSource, LinkCreationHub
-{
-    private final PageRenderQueue pageRenderQueue;
-
-    private final PageActivationContextCollector contextCollector;
-
-    private final ComponentEventLinkEncoder linkEncoder;
-
-    private final List<LinkCreationListener2> listeners = CollectionFactory.newThreadSafeList();
-
-    private final TypeCoercer typeCoercer;
-
-    private final ComponentClassResolver resolver;
-
-    private final RequestGlobals requestGlobals;
-
-    private final RequestPageCache pageCache;
-
-    public LinkSourceImpl(PageRenderQueue pageRenderQueue, PageActivationContextCollector contextCollector,
-            TypeCoercer typeCoercer, ComponentClassResolver resolver, ComponentEventLinkEncoder linkEncoder,
-            RequestGlobals requestGlobals, RequestPageCache pageCache, List<LinkCreationListener2> configuration)
-    {
-        this.pageRenderQueue = pageRenderQueue;
-        this.contextCollector = contextCollector;
-        this.typeCoercer = typeCoercer;
-        this.resolver = resolver;
-        this.linkEncoder = linkEncoder;
-        this.requestGlobals = requestGlobals;
-        this.pageCache = pageCache;
-
-        listeners.addAll(configuration);
-    }
-
-    public Link createComponentEventLink(Page page, String nestedId, String eventType, boolean forForm,
-            Object... eventContext)
-    {
-        assert page != null;
-        assert InternalUtils.isNonBlank(eventType);
-
-        Page activePage = pageRenderQueue.getRenderingPage();
-
-        // See TAPESTRY-2184
-        if (activePage == null)
-            activePage = page;
-
-        String activePageName = activePage.getName();
-
-        Object[] pageActivationContext = contextCollector.collectPageActivationContext(activePageName);
-
-        ComponentEventRequestParameters parameters = new ComponentEventRequestParameters(activePageName,
-                page.getName(), toBlank(nestedId), eventType,
-                new ArrayEventContext(typeCoercer, pageActivationContext), new ArrayEventContext(typeCoercer,
-                        eventContext));
-
-        Link link = linkEncoder.createComponentEventLink(parameters, forForm);
-
-        for (LinkCreationListener2 listener : listeners)
-            listener.createdComponentEventLink(link, parameters);
-
-        return link;
-    }
-
-    private String toBlank(String input)
-    {
-        return input == null ? "" : input;
-    }
-
-    public Link createPageRenderLink(String pageName, boolean override, Object... pageActivationContext)
-    {
-        // Resolve the page name to its canonical format (the best version for URLs). This also
-        // validates
-        // the page name.
-
-        String canonical = resolver.canonicalizePageName(pageName);
-
-        Object[] context = (override || pageActivationContext.length != 0) ? pageActivationContext : contextCollector
-                .collectPageActivationContext(canonical);
-
-        boolean loopback = canonical.equals(requestGlobals.getActivePageName())
-                && pageCache.get(pageName).hasResetListeners();
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(canonical, new ArrayEventContext(
-                typeCoercer, context), loopback);
-
-        Link link = linkEncoder.createPageRenderLink(parameters);
-
-        for (LinkCreationListener2 listener : listeners)
-            listener.createdPageRenderLink(link, parameters);
-
-        return link;
-    }
-
-    public LinkCreationHub getLinkCreationHub()
-    {
-        return this;
-    }
-
-    public void addListener(LinkCreationListener listener)
-    {
-        assert listener != null;
-
-        addListener(TapestryInternalUtils.toLinkCreationListener2(listener));
-    }
-
-    public void removeListener(LinkCreationListener listener)
-    {
-        throw new UnsupportedOperationException("Removing listeners from LinkSource is not longer supported.");
-    }
-
-    public void addListener(LinkCreationListener2 listener)
-    {
-        assert listener != null;
-
-        listeners.add(listener);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java
deleted file mode 100644
index 2e10bba..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LiteralPropertyConduit.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-/**
- * A PropertyConduit for a literal value in an expression, such as a number, or "true", "false" or "null".
- */
-public class LiteralPropertyConduit extends BasePropertyConduit
-{
-    private final Object value;
-
-    public LiteralPropertyConduit(Class propertyType, AnnotationProvider annotationProvider, String description,
-                                  TypeCoercer typeCoercer,
-                                  Object value)
-    {
-        super(propertyType, null, annotationProvider, description, typeCoercer);
-
-        this.value = value;
-    }
-
-    public Object get(Object instance)
-    {
-        return value;
-    }
-
-    public void set(Object instance, Object value)
-    {
-        throw new RuntimeException(ServicesMessages.literalConduitNotUpdateable());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java
deleted file mode 100644
index bacf40b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/LocalizationSetterImpl.java
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.PersistentLocale;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Given a set of supported locales, for a specified desired locale, sets the current thread's locale to a supported
- * locale that is closest to the desired.
- */
-public class LocalizationSetterImpl implements LocalizationSetter
-{
-    private final Request request;
-
-    private final ThreadLocale threadLocale;
-
-    private final Locale defaultLocale;
-
-    private final Set<String> supportedLocaleNames;
-
-    private final List<Locale> supportedLocales;
-
-    private final Map<String, Locale> localeCache = CollectionFactory.newConcurrentMap();
-
-    private final PersistentLocale persistentLocale;
-
-    public LocalizationSetterImpl(Request request,
-
-    PersistentLocale persistentLocale,
-
-    ThreadLocale threadLocale,
-
-    @Symbol(SymbolConstants.SUPPORTED_LOCALES)
-    String localeNames)
-    {
-        this.request = request;
-
-        this.persistentLocale = persistentLocale;
-        this.threadLocale = threadLocale;
-
-        this.supportedLocaleNames = CollectionFactory.newSet();
-        
-        String[] names = TapestryInternalUtils.splitAtCommas(localeNames);
-        
-        for (String name : names)
-        {
-            supportedLocaleNames.add(name.toLowerCase());
-        }
-
-        supportedLocales = parseNames(names);
-
-        defaultLocale = supportedLocales.get(0);
-    }
-
-    private List<Locale> parseNames(String[] localeNames)
-    {
-        List<Locale> list = CollectionFactory.newList();
-
-        for (String name : localeNames)
-        {
-            list.add(toLocale(name));
-        }
-
-        return Collections.unmodifiableList(list);
-    }
-
-    public Locale toLocale(String localeName)
-    {
-        Locale result = localeCache.get(localeName);
-
-        if (result == null)
-        {
-            result = constructLocale(localeName);
-            localeCache.put(localeName, result);
-        }
-
-        return result;
-    }
-
-    private Locale constructLocale(String name)
-    {
-        String[] terms = name.split("_");
-
-        switch (terms.length)
-        {
-            case 1:
-                return new Locale(terms[0], "");
-
-            case 2:
-                return new Locale(terms[0], terms[1]);
-
-            case 3:
-
-                return new Locale(terms[0], terms[1], terms[2]);
-
-            default:
-
-                throw new IllegalArgumentException();
-        }
-    }
-
-    public boolean setLocaleFromLocaleName(String localeName)
-    {
-        boolean supported = isSupportedLocaleName(localeName);
-
-        if (supported)
-        {
-            Locale locale = findClosestSupportedLocale(toLocale(localeName));
-
-            persistentLocale.set(locale);
-
-            threadLocale.setLocale(locale);
-        }
-        else
-        {
-            Locale requestLocale = request.getLocale();
-
-            Locale supportedLocale = findClosestSupportedLocale(requestLocale);
-
-            threadLocale.setLocale(supportedLocale);
-        }
-
-        return supported;
-    }
-
-    public void setNonPeristentLocaleFromLocaleName(String localeName)
-    {
-        Locale requested = toLocale(localeName);
-
-        Locale supported = findClosestSupportedLocale(requested);
-
-        threadLocale.setLocale(supported);
-    }
-
-    private Locale findClosestSupportedLocale(Locale desiredLocale)
-    {
-        String localeName = desiredLocale.toString();
-
-        while (true)
-        {
-            if (isSupportedLocaleName(localeName))
-                return toLocale(localeName);
-
-            localeName = stripTerm(localeName);
-
-            if (localeName.length() == 0)
-                break;
-        }
-
-        return defaultLocale;
-    }
-
-    static String stripTerm(String localeName)
-    {
-        int scorex = localeName.lastIndexOf('_');
-
-        return scorex < 0 ? "" : localeName.substring(0, scorex);
-    }
-
-    public List<Locale> getSupportedLocales()
-    {
-        return supportedLocales;
-    }
-
-    public boolean isSupportedLocaleName(String localeName)
-    {
-        return supportedLocaleNames.contains(localeName.toLowerCase());
-    }
-
-    public SelectModel getSupportedLocalesModel()
-    {
-        List<OptionModel> options = CollectionFactory.newList();
-
-        for (Locale l : supportedLocales)
-        {
-            options.add(new OptionModelImpl(l.getDisplayName(l), l));
-        }
-
-        return new SelectModelImpl(null, options);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java
deleted file mode 100644
index c34780c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MapMessages.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * An implementation  of {@link Messages} that is based on a map.
- *
- */
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.util.AbstractMessages;
-
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Implementation of {@link Messages} based on a simple Map (of string keys and values).
- */
-public class MapMessages extends AbstractMessages
-{
-    private final Map<String, String> properties;
-
-
-    /**
-     * A new instance <strong>retaining</strong> (not copying) the provided map.
-     */
-    public MapMessages(Locale locale, Map<String, String> properties)
-    {
-        super(locale);
-
-        this.properties = properties;
-    }
-
-
-    @Override
-    protected String valueForKey(String key)
-    {
-        return properties.get(key);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupRendererTerminator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupRendererTerminator.java
deleted file mode 100644
index 8bad9a0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupRendererTerminator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.services.MarkupRenderer;
-
-/**
- * Terminator for the [@link MarkupRenderer} pipeline, which exists to invoke {@link
- * org.apache.tapestry5.internal.services.PageRenderQueue#render(org.apache.tapestry5.MarkupWriter)}.
- *
- * @since 5.1.0.0
- */
-public class MarkupRendererTerminator implements MarkupRenderer
-{
-    private final PageRenderQueue pageRenderQueue;
-
-    public MarkupRendererTerminator(PageRenderQueue pageRenderQueue)
-    {
-        this.pageRenderQueue = pageRenderQueue;
-    }
-
-    public void renderMarkup(MarkupWriter writer)
-    {
-        pageRenderQueue.render(writer);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterFactoryImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterFactoryImpl.java
deleted file mode 100644
index 8dc6a51..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterFactoryImpl.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.DefaultMarkupModel;
-import org.apache.tapestry5.dom.MarkupModel;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.MarkupWriterFactory;
-
-public class MarkupWriterFactoryImpl implements MarkupWriterFactory
-{
-    private final PageContentTypeAnalyzer analyzer;
-
-    private final RequestPageCache cache;
-
-    private final MarkupModel htmlModel = new DefaultMarkupModel();
-
-    private final MarkupModel xmlModel = new XMLMarkupModel();
-
-    private final MarkupModel htmlPartialModel = new DefaultMarkupModel(true);
-
-    private final MarkupModel xmlPartialModel = new XMLMarkupModel(true);
-
-    public MarkupWriterFactoryImpl(PageContentTypeAnalyzer analyzer, RequestPageCache cache)
-    {
-        this.analyzer = analyzer;
-        this.cache = cache;
-    }
-
-    public MarkupWriter newMarkupWriter(ContentType contentType)
-    {
-        return newMarkupWriter(contentType, false);
-    }
-
-    public MarkupWriter newPartialMarkupWriter(ContentType contentType)
-    {
-        return newMarkupWriter(contentType, true);
-    }
-
-    @SuppressWarnings({"UnusedDeclaration"})
-    private MarkupWriter newMarkupWriter(ContentType contentType, boolean partial)
-    {
-        boolean isHTML = contentType.getMimeType().equalsIgnoreCase("text/html");
-
-        MarkupModel model = partial
-                            ? (isHTML ? htmlPartialModel : xmlPartialModel)
-                            : (isHTML ? htmlModel : xmlModel);
-
-        // The charset parameter sets the encoding attribute of the XML declaration, if
-        // not null and if using the XML model.
-
-        return new MarkupWriterImpl(model, contentType.getCharset());
-    }
-
-    public MarkupWriter newMarkupWriter(String pageName)
-    {
-        Page page = cache.get(pageName);
-
-        ContentType contentType = analyzer.findContentType(page);
-
-        return newMarkupWriter(contentType);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java
deleted file mode 100644
index 88d5760..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MarkupWriterImpl.java
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.PrintWriter;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.MarkupWriterListener;
-import org.apache.tapestry5.dom.DefaultMarkupModel;
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.MarkupModel;
-import org.apache.tapestry5.dom.Text;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-public class MarkupWriterImpl implements MarkupWriter
-{
-    private final Document document;
-
-    private Element current;
-
-    private Text currentText;
-
-    private List<MarkupWriterListener> listeners;
-
-    /**
-     * Creates a new instance of the MarkupWriter with a {@link org.apache.tapestry5.dom.DefaultMarkupModel}.
-     */
-    public MarkupWriterImpl()
-    {
-        this(new DefaultMarkupModel());
-    }
-
-    public MarkupWriterImpl(MarkupModel model)
-    {
-        this(model, null);
-    }
-
-    public MarkupWriterImpl(MarkupModel model, String encoding)
-    {
-        document = new Document(model, encoding);
-    }
-
-    public void toMarkup(PrintWriter writer)
-    {
-        document.toMarkup(writer);
-    }
-
-    @Override
-    public String toString()
-    {
-        return document.toString();
-    }
-
-    public Document getDocument()
-    {
-        return document;
-    }
-
-    public Element getElement()
-    {
-        return current;
-    }
-
-    public void cdata(String content)
-    {
-        currentText = null;
-
-        if (current == null)
-        {
-            document.cdata(content);
-        }
-        else
-        {
-            current.cdata(content);
-        }
-    }
-
-    public void write(String text)
-    {
-        if (text == null) return;
-
-        if (currentText == null)
-        {
-            currentText =
-                    current == null
-                    ? document.text(text)
-                    : current.text(text);
-
-            return;
-        }
-
-        currentText.write(text);
-    }
-
-    public void writef(String format, Object... args)
-    {
-        // A bit of a cheat:
-
-        write("");
-        currentText.writef(format, args);
-    }
-
-    public void attributes(Object... namesAndValues)
-    {
-        ensureCurrentElement();
-
-        int i = 0;
-        
-        int length = namesAndValues.length;
-        
-        if(length % 2 != 0)
-            throw new IllegalArgumentException(ServicesMessages.markupWriterAttributeNameOrValueOmitted(current.getName(), namesAndValues));
-
-        while (i < length)
-        {
-            // name should never be null.
-
-            String name = namesAndValues[i++].toString();
-            Object value = namesAndValues[i++];
-
-            if (value == null) continue;
-
-            current.attribute(name, value.toString());
-        }
-    }
-
-    private void ensureCurrentElement()
-    {
-        if (current == null)
-            throw new IllegalStateException(ServicesMessages.markupWriterNoCurrentElement());
-    }
-
-    public Element element(String name, Object... namesAndValues)
-    {
-        if (current == null)
-        {
-            Element existingRootElement = document.getRootElement();
-
-            if (existingRootElement != null)
-                throw new IllegalStateException(String.format(
-                        "A document must have exactly one root element. Element <%s> is already the root element.",
-                        existingRootElement.getName()));
-
-            current = document.newRootElement(name);
-        }
-        else
-        {
-            current = current.element(name);
-        }
-
-        attributes(namesAndValues);
-
-        currentText = null;
-
-        fireElementDidStart();
-
-        return current;
-    }
-
-    public void writeRaw(String text)
-    {
-        currentText = null;
-
-        if (current == null)
-        {
-            document.raw(text);
-        }
-        else
-        {
-            current.raw(text);
-        }
-    }
-
-    public Element end()
-    {
-        ensureCurrentElement();
-
-        fireElementDidEnd();
-
-        current = current.getParent();
-
-        currentText = null;
-
-        return current;
-    }
-
-    public void comment(String text)
-    {
-        currentText = null;
-
-        if (current == null)
-        {
-            document.comment(text);
-        }
-        else
-        {
-            current.comment(text);
-        }
-    }
-
-    public Element attributeNS(String namespace, String attributeName, String attributeValue)
-    {
-        ensureCurrentElement();
-
-        current.attribute(namespace, attributeName, attributeValue);
-
-        return current;
-    }
-
-    public Element defineNamespace(String namespace, String namespacePrefix)
-    {
-        ensureCurrentElement();
-
-        current.defineNamespace(namespace, namespacePrefix);
-
-        return current;
-    }
-
-    public Element elementNS(String namespace, String elementName)
-    {
-        if (current == null) current = document.newRootElement(namespace, elementName);
-        else current = current.elementNS(namespace, elementName);
-
-        currentText = null;
-
-        fireElementDidStart();
-
-        return current;
-    }
-
-    public void addListener(MarkupWriterListener listener)
-    {
-        assert listener != null;
-        if (listeners == null) listeners = CollectionFactory.newList();
-
-        listeners.add(listener);
-    }
-
-    public void removeListener(MarkupWriterListener listener)
-    {
-        if (listeners != null)
-            listeners.remove(listener);
-    }
-
-    private void fireElementDidStart()
-    {
-        if (isEmpty(listeners)) return;
-
-        for (MarkupWriterListener l : CollectionFactory.newList(listeners))
-        {
-            l.elementDidStart(current);
-        }
-    }
-
-    private static boolean isEmpty(Collection<?> collection)
-    {
-        return collection == null || collection.isEmpty();
-    }
-
-    private void fireElementDidEnd()
-    {
-        if (isEmpty(listeners)) return;
-
-        for (MarkupWriterListener l : CollectionFactory.newList(listeners))
-        {
-            l.elementDidEnd(current);
-        }
-    }
-}
-
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java
deleted file mode 100644
index 8200448..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesBundle.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * Represents a bundle of properties files that can be used to collect properties that are eventually used to form a
- * {@link Messages}.
- */
-public interface MessagesBundle
-{
-
-    /**
-     * Returns an object used to identify this particular bundle; this should be a simple immutable value such as a
-     * String.
-     */
-    Object getId();
-
-    /**
-     * Returns the base resource for this bundle of properties files.
-     */
-    Resource getBaseResource();
-
-    /**
-     * Returns a parent bundle for this bundle, or null if this bundle has no parent. Parent bundle provide properties
-     * that are overridden by child bundles.
-     */
-    MessagesBundle getParent();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java
deleted file mode 100644
index ea69efb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSource.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.UpdateListener;
-
-import java.util.Locale;
-
-public interface MessagesSource extends InvalidationEventHub, UpdateListener
-{
-    /**
-     * Used to obtain a {@link Messages} instance for a particular component, within a particular locale. If the
-     * component extends from another component, then its localized properties will merge with its parent's properties
-     * (with the subclass overriding the super class on any conflicts).
-     *
-     * @param bundle defines the set of properties files to read, as well as a series of parent bundles to extend and
-     *               override
-     * @param locale
-     * @return the message catalog for the bundle, in the indicated locale
-     */
-    Messages getMessages(MessagesBundle bundle, Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java
deleted file mode 100644
index 8c86334..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MessagesSourceImpl.java
+++ /dev/null
@@ -1,221 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
-import org.apache.tapestry5.internal.util.MultiKey;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.LocalizedNameGenerator;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.services.messages.PropertiesFileParser;
-
-/**
- * A utility class that encapsulates all the logic for reading properties files and assembling {@link Messages} from
- * them, in accordance with extension rules and locale. This represents code that was refactored out of
- * {@link ComponentMessagesSourceImpl}. This class can be used as a base class, though the existing code base uses it as
- * a
- * utility. Composition trumps inheritance!
- * <p/>
- * The message catalog for a component is the combination of all appropriate properties files for the component, plus
- * any keys inherited form base components and, ultimately, the application global message catalog. At some point we
- * should add support for per-library message catalogs.
- * <p/>
- * Message catalogs are read using the UTF-8 character set. This is tricky in JDK 1.5; we read the file into memory then
- * feed that bytestream to Properties.load().
- */
-public class MessagesSourceImpl extends InvalidationEventHubImpl implements MessagesSource
-{
-    private final URLChangeTracker tracker;
-
-    private final PropertiesFileParser propertiesFileParser;
-
-    /**
-     * Keyed on bundle id and locale.
-     */
-    private final Map<MultiKey, Messages> messagesByBundleIdAndLocale = CollectionFactory.newConcurrentMap();
-
-    /**
-     * Keyed on bundle id and locale, the cooked properties include properties inherited from less locale-specific
-     * properties files, or inherited from parent bundles.
-     */
-    private final Map<MultiKey, Map<String, String>> cookedProperties = CollectionFactory.newConcurrentMap();
-
-    /**
-     * Raw properties represent just the properties read from a specific properties file, in isolation.
-     */
-    private final Map<Resource, Map<String, String>> rawProperties = CollectionFactory.newConcurrentMap();
-
-    private final Map<String, String> emptyMap = Collections.emptyMap();
-
-    public MessagesSourceImpl(URLChangeTracker tracker, PropertiesFileParser propertiesFileParser)
-    {
-        this.tracker = tracker;
-        this.propertiesFileParser = propertiesFileParser;
-    }
-
-    public void checkForUpdates()
-    {
-        if (tracker.containsChanges())
-        {
-            messagesByBundleIdAndLocale.clear();
-            cookedProperties.clear();
-            rawProperties.clear();
-
-            tracker.clear();
-
-            fireInvalidationEvent();
-        }
-    }
-
-    public Messages getMessages(MessagesBundle bundle, Locale locale)
-    {
-        MultiKey key = new MultiKey(bundle.getId(), locale);
-
-        Messages result = messagesByBundleIdAndLocale.get(key);
-
-        if (result == null)
-        {
-            result = buildMessages(bundle, locale);
-            messagesByBundleIdAndLocale.put(key, result);
-        }
-
-        return result;
-    }
-
-    private Messages buildMessages(MessagesBundle bundle, Locale locale)
-    {
-        Map<String, String> properties = findBundleProperties(bundle, locale);
-
-        return new MapMessages(locale, properties);
-    }
-
-    /**
-     * Assembles a set of properties appropriate for the bundle in question, and the desired locale. The properties
-     * reflect the properties of the bundles' parent (if any) for the locale, overalyed with any properties defined for
-     * this bundle and its locale.
-     */
-    private Map<String, String> findBundleProperties(MessagesBundle bundle, Locale locale)
-    {
-        if (bundle == null)
-            return emptyMap;
-
-        MultiKey key = new MultiKey(bundle.getId(), locale);
-
-        Map<String, String> existing = cookedProperties.get(key);
-
-        if (existing != null)
-            return existing;
-
-        // What would be cool is if we could maintain a cache of bundle id + locale -->
-        // Resource. That would optimize quite a bit of this; may need to use an alternative to
-        // LocalizedNameGenerator.
-
-        Resource propertiesResource = bundle.getBaseResource().withExtension("properties");
-
-        List<Resource> localizations = CollectionFactory.newList();
-
-        for (String localizedFile : new LocalizedNameGenerator(propertiesResource.getFile(), locale))
-        {
-            Resource localized = propertiesResource.forFile(localizedFile);
-
-            localizations.add(localized);
-        }
-
-        // We need them in least-specific to most-specific order, the opposite
-        // of how the LocalizedNameGenerator provides them.
-
-        Collections.reverse(localizations);
-
-        // Localizations are now in least-specific to most-specific order.
-
-        Map<String, String> previous = findBundleProperties(bundle.getParent(), locale);
-
-        for (Resource localization : localizations)
-        {
-            Map<String, String> rawProperties = getRawProperties(localization);
-
-            // Woould be nice to write into the cookedProperties cache here,
-            // but we can't because we don't know the locale part of the MultiKey.
-
-            previous = extend(previous, rawProperties);
-        }
-
-        cookedProperties.put(key, previous);
-
-        return previous;
-    }
-
-    /**
-     * Returns a new map consisting of all the properties in previous overlayed with all the properties in
-     * rawProperties. If rawProperties is empty, returns just the base map.
-     */
-    private Map<String, String> extend(Map<String, String> base, Map<String, String> rawProperties)
-    {
-        if (rawProperties.isEmpty())
-            return base;
-
-        // Make a copy of the base Map
-
-        Map<String, String> result = CollectionFactory.newCaseInsensitiveMap(base);
-
-        // Add or overwrite properties to the copy
-
-        result.putAll(rawProperties);
-
-        return result;
-    }
-
-    private Map<String, String> getRawProperties(Resource localization)
-    {
-        Map<String, String> result = rawProperties.get(localization);
-
-        if (result == null)
-        {
-            result = readProperties(localization);
-
-            rawProperties.put(localization, result);
-        }
-
-        return result;
-    }
-
-    /**
-     * Creates and returns a new map that contains properties read from the properties file.
-     */
-    private Map<String, String> readProperties(Resource resource)
-    {
-        if (!resource.exists())
-            return emptyMap;
-
-        tracker.add(resource.toURL());
-
-        try
-        {
-            return propertiesFileParser.parsePropertiesFile(resource);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ServicesMessages.failureReadingMessages(resource, ex), ex);
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java
deleted file mode 100644
index 4fe481a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MetaDataLocatorImpl.java
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.MetaDataLocator;
-
-import java.util.Map;
-
-public class MetaDataLocatorImpl implements MetaDataLocator, InvalidationListener
-{
-    private final SymbolSource symbolSource;
-
-    private final TypeCoercer typeCoercer;
-
-    private final ComponentModelSource modelSource;
-
-    private final Map<String, Map<String, String>> defaultsByFolder = CollectionFactory
-            .newCaseInsensitiveMap();
-
-    private final Map<String, String> cache = CollectionFactory.newConcurrentMap();
-
-    private interface ValueLocator
-    {
-        String valueForKey(String key);
-    }
-
-    public MetaDataLocatorImpl(SymbolSource symbolSource, TypeCoercer typeCoercer,
-            ComponentModelSource modelSource, Map<String, String> configuration)
-    {
-        this.symbolSource = symbolSource;
-        this.typeCoercer = typeCoercer;
-        this.modelSource = modelSource;
-
-        loadDefaults(configuration);
-    }
-
-    public void objectWasInvalidated()
-    {
-        cache.clear();
-    }
-
-    private void loadDefaults(Map<String, String> configuration)
-    {
-        for (Map.Entry<String, String> e : configuration.entrySet())
-        {
-            String key = e.getKey();
-
-            int colonx = key.indexOf(':');
-
-            String folderKey = colonx < 0 ? "" : key.substring(0, colonx);
-
-            Map<String, String> forFolder = defaultsByFolder.get(folderKey);
-
-            if (forFolder == null)
-            {
-                forFolder = CollectionFactory.newCaseInsensitiveMap();
-                defaultsByFolder.put(folderKey, forFolder);
-            }
-
-            String defaultKey = colonx < 0 ? key : key.substring(colonx + 1);
-
-            forFolder.put(defaultKey, e.getValue());
-        }
-    }
-
-    public <T> T findMeta(String key, final ComponentResources resources, Class<T> expectedType)
-    {
-        String value = getSymbolExpandedValueFromCache(key, resources.getCompleteId() + "/" + key,
-                new ValueLocator()
-                {
-                    public String valueForKey(String key)
-                    {
-                        return locate(key, resources);
-                    }
-                });
-
-        return typeCoercer.coerce(value, expectedType);
-    }
-
-    public <T> T findMeta(String key, final String pageName, Class<T> expectedType)
-    {
-        String value = getSymbolExpandedValueFromCache(key, pageName + "/" + key,
-                new ValueLocator()
-                {
-                    public String valueForKey(String key)
-                    {
-                        String result = modelSource.getPageModel(pageName).getMeta(key);
-
-                        return result != null ? result : locateInDefaults(key, pageName);
-                    }
-                });
-
-        return typeCoercer.coerce(value, expectedType);
-    }
-
-    private String getSymbolExpandedValueFromCache(String key, String cacheKey,
-            ValueLocator valueLocator)
-    {
-        if (cache.containsKey(cacheKey))
-            return cache.get(cacheKey);
-
-        String value = valueLocator.valueForKey(key);
-
-        if (value == null)
-        {
-            value = symbolSource.valueForSymbol(key);
-        }
-        else
-        {
-            value = symbolSource.expandSymbols(value);
-        }
-
-        cache.put(cacheKey, value);
-
-        return value;
-    }
-
-    private String locate(String key, ComponentResources resources)
-    {
-        ComponentResources cursor = resources;
-
-        while (true)
-        {
-            String value = cursor.getComponentModel().getMeta(key);
-
-            if (value != null)
-                return value;
-
-            ComponentResources next = cursor.getContainerResources();
-
-            if (next == null)
-                return locateInDefaults(key, cursor.getPageName());
-
-            cursor = next;
-        }
-    }
-
-    private String locateInDefaults(String key, String pageName)
-    {
-
-        // We're going to peel this apart, slash by slash. Thus for
-        // "mylib/myfolder/mysubfolder/MyPage" we'll be checking: "mylib/myfolder/mysubfolder",
-        // then "mylib/myfolder", then "mylib", then "".
-
-        String path = pageName;
-
-        while (true)
-        {
-            int lastSlashx = path.lastIndexOf('/');
-
-            String folderKey = lastSlashx < 0 ? "" : path.substring(0, lastSlashx);
-
-            Map<String, String> forFolder = defaultsByFolder.get(folderKey);
-
-            if (forFolder != null && forFolder.containsKey(key))
-                return forFolder.get(key);
-
-            if (lastSlashx < 0)
-                break;
-
-            path = path.substring(0, lastSlashx);
-        }
-
-        // Perhaps from here into the symbol sources? That may come later.
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodCompileException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodCompileException.java
deleted file mode 100644
index e81020d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodCompileException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Exception thrown when a method body fails to compile; this will allow the method body to be displayed to the user on
- * the request failure page.
- */
-public class MethodCompileException extends RuntimeException
-{
-    private static final long serialVersionUID = -2803586049370974986L;
-
-    private final String methodBody;
-
-    public MethodCompileException(String message, String methodBody, Throwable cause)
-    {
-        super(message, cause);
-
-        this.methodBody = methodBody;
-    }
-
-    public String getMethodBody()
-    {
-        return methodBody;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodInvocationFailResult.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodInvocationFailResult.java
deleted file mode 100644
index 6d1a989..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodInvocationFailResult.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.MethodInvocationResult;
-
-/**
- * Implementation of {@link MethodInvocationResult} for failed
- * invocations (where a checked exception was thrown).
- * 
- * @since 5.2.0
- */
-public class MethodInvocationFailResult implements MethodInvocationResult
-{
-    private final Throwable thrown;
-
-    public MethodInvocationFailResult(Throwable thrown)
-    {
-        this.thrown = thrown;
-    }
-
-    public Object getReturnValue()
-    {
-        return null;
-    }
-
-    public <T extends Throwable> T getThrown(Class<T> throwableClass)
-    {
-        if (throwableClass.isInstance(thrown))
-            return throwableClass.cast(thrown);
-
-        return null;
-    }
-
-    public boolean isFail()
-    {
-        return true;
-    }
-
-    public void rethrow()
-    {
-        throw new RuntimeException(thrown);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodInvocationSuccessfulResult.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodInvocationSuccessfulResult.java
deleted file mode 100644
index 37128fa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/MethodInvocationSuccessfulResult.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.MethodInvocationResult;
-
-/**
- * Implementation of {@link MethodInvocationResult} for successful
- * method invocations.
- * 
- * @since 5.2.0
- */
-public class MethodInvocationSuccessfulResult implements MethodInvocationResult
-{
-    private final Object returnValue;
-
-    public MethodInvocationSuccessfulResult(Object returnValue)
-    {
-        this.returnValue = returnValue;
-    }
-
-    public Object getReturnValue()
-    {
-        return returnValue;
-    }
-
-    public <T extends Throwable> T getThrown(Class<T> throwableClass)
-    {
-        return null;
-    }
-
-    public boolean isFail()
-    {
-        return false;
-    }
-
-    public void rethrow()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NamespaceMapping.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NamespaceMapping.java
deleted file mode 100644
index 379e272..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NamespaceMapping.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Used within a {@link XMLToken} to identify namespaces defined with a start
- * element token.
- * 
- * @since 5.2.0
- */
-class NamespaceMapping
-{
-    final String prefix, uri;
-
-    public NamespaceMapping(String prefix, String uri)
-    {
-        this.prefix = prefix;
-        this.uri = uri;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NonPoolingRequestPageCacheImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NonPoolingRequestPageCacheImpl.java
deleted file mode 100644
index 1832765..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NonPoolingRequestPageCacheImpl.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.slf4j.Logger;
-
-public class NonPoolingRequestPageCacheImpl implements RequestPageCache, ThreadCleanupListener
-{
-    private final Logger logger;
-
-    private final ComponentClassResolver resolver;
-
-    private final PageSource pageSource;
-
-    private final ThreadLocale threadLocale;
-
-    private final Map<String, Page> cache = CollectionFactory.newMap();
-
-    public NonPoolingRequestPageCacheImpl(Logger logger, ComponentClassResolver resolver, PageSource pageSource,
-            ThreadLocale threadLocale)
-    {
-        this.logger = logger;
-        this.resolver = resolver;
-        this.pageSource = pageSource;
-        this.threadLocale = threadLocale;
-    }
-
-    public void threadDidCleanup()
-    {
-        for (Page page : cache.values())
-        {
-            try
-            {
-                page.detached();
-            }
-            catch (Throwable t)
-            {
-                logger.error(String.format("Error detaching page %s: %s", page, InternalUtils.toMessage(t)), t);
-            }
-        }
-    }
-
-    public Page get(String pageName)
-    {
-        String canonical = resolver.canonicalizePageName(pageName);
-
-        Page page = cache.get(canonical);
-
-        if (page == null)
-        {
-            Locale locale = threadLocale.getLocale();
-
-            page = pageSource.getPage(canonical, locale);
-
-            try
-            {
-                page.attached();
-            }
-            catch (Throwable t)
-            {
-                throw new RuntimeException(String.format("Unable to attach page %s (%s): %s", canonical, locale,
-                        InternalUtils.toMessage(t)), t);
-            }
-
-            cache.put(canonical, page);
-        }
-
-        return page;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java
deleted file mode 100644
index edc2e3b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.NullFieldStrategySource;
-
-import java.util.Map;
-
-public class NullFieldStrategySourceImpl implements NullFieldStrategySource
-{
-    private final Map<String, NullFieldStrategy> configuration;
-
-    public NullFieldStrategySourceImpl(Map<String, NullFieldStrategy> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public NullFieldStrategy get(String name)
-    {
-        NullFieldStrategy result = configuration.get(name);
-
-        if (result != null) return result;
-        
-        throw new UnknownValueException(String.format("Unrecognized name '%s' locating a null field strategy.", name),
-                new AvailableValues("Configured null field strategies", configuration));
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
deleted file mode 100644
index db41cdb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ObjectComponentEventResultProcessor.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-/**
- * A catch-all for type Object that reports the return value as an error.
- */
-@SuppressWarnings("unchecked")
-public class ObjectComponentEventResultProcessor implements ComponentEventResultProcessor<Object>
-{
-    private final Collection<Class> configuredClasses;
-
-    public ObjectComponentEventResultProcessor(Collection<Class> configuredClasses)
-    {
-        this.configuredClasses = configuredClasses;
-    }
-
-    public void processResultValue(Object value) throws IOException
-    {
-        List<String> names = F.flow(configuredClasses).map(new Mapper<Class, String>()
-        {
-            public String map(Class input)
-            {
-                return ClassFabUtils.toJavaClassName(input);
-            }
-        }).toList();
-
-        String message = String.format(
-                "A component event handler method returned the value %s. Return type %s can not be handled.", value,
-                ClassFabUtils.toJavaClassName(value.getClass()));
-
-        throw new UnknownValueException(message, new AvailableValues("Configured return types", names));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java
deleted file mode 100644
index e3b59e1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedApplicationStateObjectAnalyzer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.OptimizedApplicationStateObject;
-import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
-
-public class OptimizedApplicationStateObjectAnalyzer implements SessionPersistedObjectAnalyzer<OptimizedApplicationStateObject>
-{
-    public boolean isDirty(OptimizedApplicationStateObject object)
-    {
-        return object.isApplicationStateObjectDirty();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedSessionPersistedObjectAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedSessionPersistedObjectAnalyzer.java
deleted file mode 100644
index 58fc936..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/OptimizedSessionPersistedObjectAnalyzer.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.OptimizedSessionPersistedObject;
-import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
-
-public class OptimizedSessionPersistedObjectAnalyzer implements SessionPersistedObjectAnalyzer<OptimizedSessionPersistedObject>
-{
-    public boolean isDirty(OptimizedSessionPersistedObject object)
-    {
-        return object.isSessionPersistedObjectDirty();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollector.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollector.java
deleted file mode 100644
index 01f043c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollector.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Fires the {@link org.apache.tapestry5.EventConstants#PASSIVATE} event on a page, and collects the result, converting
- * it to an array of objects.
- */
-public interface PageActivationContextCollector
-{
-    /**
-     * Fires the passivate event and collects the response, which is coerced to an object array. A page that does not
-     * have an event handler for the passivate event will return an empty array.
-     *
-     * @param pageName to collect context from ; this should be the canonical page name
-     * @return the activation context, or an empty array of the page does not provide a context
-     */
-    Object[] collectPageActivationContext(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java
deleted file mode 100644
index eb334c0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImpl.java
+++ /dev/null
@@ -1,102 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.Map;
-
-public class PageActivationContextCollectorImpl implements PageActivationContextCollector, InvalidationListener
-{
-    private final Object[] EMPTY = new Object[0];
-
-    private final TypeCoercer typeCoercer;
-
-    private final ComponentModelSource modelSource;
-
-    private final RequestPageCache requestPageCache;
-
-    /**
-     * Keyed on *canonical* page name, value indicates whether the page has a passivate event handler.
-     */
-    private final Map<String, Boolean> cache = CollectionFactory.newConcurrentMap();
-
-    public PageActivationContextCollectorImpl(TypeCoercer typeCoercer, RequestPageCache requestPageCache,
-                                              ComponentModelSource modelSource)
-    {
-        this.typeCoercer = typeCoercer;
-        this.requestPageCache = requestPageCache;
-        this.modelSource = modelSource;
-    }
-
-    public void objectWasInvalidated()
-    {
-        cache.clear();
-    }
-
-    public Object[] collectPageActivationContext(String pageName)
-    {
-        Boolean hasHandler = cache.get(pageName);
-
-        if (hasHandler == null)
-        {
-            ComponentModel model = modelSource.getPageModel(pageName);
-
-            hasHandler = model.handlesEvent(EventConstants.PASSIVATE);
-
-            cache.put(pageName, hasHandler);
-        }
-
-        // If no handler for the event, then no need to fire the event (and more importantly,
-        // no need to obtain a page instance!)
-
-        if (!hasHandler)
-            return EMPTY;
-
-        // Get or create a page instance and trigger the event.
-
-        Page page = requestPageCache.get(pageName);
-
-        ComponentPageElement element = page.getRootElement();
-
-        final Holder<Object[]> holder = Holder.create();
-
-        ComponentEventCallback callback = new ComponentEventCallback()
-        {
-            public boolean handleResult(Object result)
-            {
-                holder.put(typeCoercer.coerce(result, Object[].class));
-
-                // We've got the value, stop the event.
-
-                return true;
-            }
-        };
-
-        element.triggerEvent(EventConstants.PASSIVATE, null, callback);
-
-        if (!holder.hasValue()) return EMPTY;
-
-        return holder.get();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivator.java
deleted file mode 100644
index b840d5a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-/**
- * Responsible for firing the {@linkplain EventConstants#ACTIVATE} event on the page.
- * 
- * @since 5.2.0
- */
-public interface PageActivator
-{
-    /**
-     * Activates the page.
-     * 
-     * @param pageResources
-     *            resource for the page
-     * @param activationContext
-     *            the page activation context
-     * @param resultProcessor
-     *            responsible for handling the value returned from the event handler method
-     * @return true if result processor received a non-null value (indicating that the processing of the request
-     *         should terminate)
-     */
-    @SuppressWarnings("unchecked")
-    boolean activatePage(ComponentResources pageResources, EventContext activationContext,
-            ComponentEventResultProcessor resultProcessor) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
deleted file mode 100644
index e39b1b9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageActivatorImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.TrackableComponentEventCallback;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-public class PageActivatorImpl implements PageActivator
-{
-
-    @SuppressWarnings("unchecked")
-    public boolean activatePage(ComponentResources pageResources, EventContext activationContext,
-            ComponentEventResultProcessor resultProcessor) throws IOException
-    {
-        TrackableComponentEventCallback callback = new ComponentResultProcessorWrapper(resultProcessor);
-
-        pageResources.triggerContextEvent(EventConstants.ACTIVATE, activationContext, callback);
-
-        if (callback.isAborted())
-        {
-            callback.rethrow();
-            return true;
-        }
-
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzer.java
deleted file mode 100644
index 5a3059b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzer.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.internal.structure.Page;
-
-public interface PageContentTypeAnalyzer
-{
-    /**
-     * Analyzes the meta-data for the page and identifies the correct {@link org.apache.tapestry5.ContentType}
-     * (including encoding).
-     *
-     * @param page to be rendered
-     * @return the content type
-     */
-    ContentType findContentType(Page page);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java
deleted file mode 100644
index dd2eba1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageContentTypeAnalyzerImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.MetaDataConstants;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.MetaDataLocator;
-
-public class PageContentTypeAnalyzerImpl implements PageContentTypeAnalyzer
-{
-    private final MetaDataLocator metaDataLocator;
-
-    private final String outputCharset;
-
-    public PageContentTypeAnalyzerImpl(MetaDataLocator metaDataLocator,
-
-    @Symbol(SymbolConstants.CHARSET)
-    String outputCharset)
-    {
-        this.metaDataLocator = metaDataLocator;
-        this.outputCharset = outputCharset;
-    }
-
-    public ContentType findContentType(Page page)
-    {
-        ComponentResources pageResources = page.getRootComponent().getComponentResources();
-
-        String contentTypeString = metaDataLocator.findMeta(MetaDataConstants.RESPONSE_CONTENT_TYPE, pageResources,
-                String.class);
-
-        // Draconian but necessary: overwrite the content type they selected with the application-wide output charset.
-
-        return new ContentType(contentTypeString, outputCharset);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageDocumentGeneratorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageDocumentGeneratorImpl.java
deleted file mode 100644
index 7112c7c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageDocumentGeneratorImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.MarkupWriterFactory;
-import org.apache.tapestry5.services.PageDocumentGenerator;
-
-public class PageDocumentGeneratorImpl implements PageDocumentGenerator
-{
-    private final RequestPageCache pageCache;
-
-    private final PageMarkupRenderer markupRenderer;
-
-    private final MarkupWriterFactory markupWriterFactory;
-
-    public PageDocumentGeneratorImpl(RequestPageCache pageCache, PageMarkupRenderer markupRenderer,
-            MarkupWriterFactory markupWriterFactory)
-    {
-        this.markupRenderer = markupRenderer;
-        this.markupWriterFactory = markupWriterFactory;
-        this.pageCache = pageCache;
-    }
-
-    public Document render(String logicalPageName)
-    {
-        Page page = pageCache.get(logicalPageName);
-
-        MarkupWriter writer = markupWriterFactory.newMarkupWriter(logicalPageName);
-
-        markupRenderer.renderPageMarkup(page, writer);
-
-        return writer.getDocument();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java
deleted file mode 100644
index cfde638..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactory.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.parser.AttributeToken;
-import org.apache.tapestry5.internal.parser.ExpansionToken;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.BindingSource;
-
-/**
- * Used by the {@link org.apache.tapestry5.internal.services.PageLoader} to create partialar page elements. This has
- * evolved and focused to mostly concern bindings and expansions.
- */
-public interface PageElementFactory
-{
-    /**
-     * Creates a RenderCommand for rendering an attribute, when the attribute contains expansions.
-     *
-     * @param componentResources identifies component
-     * @param token              token containing value with expansions
-     * @return render command to render the text with expansions expanded
-     */
-    RenderCommand newAttributeElement(ComponentResources componentResources, AttributeToken token);
-
-    /**
-     * Converts an expansion token into a command that renders the expanded value.
-     *
-     * @param componentResources identifies the component
-     * @param token              contains expansion expression
-     * @return command to render expansion
-     */
-    RenderCommand newExpansionElement(ComponentResources componentResources, ExpansionToken token);
-
-    /**
-     * Creates a new binding as with {@link BindingSource#newBinding(String, ComponentResources, ComponentResources,
-     * String, String, Location)}. However, if the binding contains an expansion (i.e., <code>${...}</code>), then a
-     * binding that returns the fully expanded expression will be returned.
-     */
-    Binding newBinding(String parameterName, ComponentResources loadingComponentResources,
-                       ComponentResources embeddedComponentResources, String defaultBindingPrefix, String expression,
-                       Location location);
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
deleted file mode 100644
index ea76f97..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageElementFactoryImpl.java
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.parser.AttributeToken;
-import org.apache.tapestry5.internal.parser.ExpansionToken;
-import org.apache.tapestry5.internal.structure.ExpansionPageElement;
-import org.apache.tapestry5.ioc.Location;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.BindingSource;
-
-import java.util.List;
-
-public class PageElementFactoryImpl implements PageElementFactory
-{
-    private final TypeCoercer typeCoercer;
-
-    private final BindingSource bindingSource;
-
-    private static class LiteralStringProvider implements StringProvider
-    {
-        private final String string;
-
-        LiteralStringProvider(String string)
-        {
-            this.string = string;
-        }
-
-        public String provideString()
-        {
-            return string;
-        }
-    }
-
-    public PageElementFactoryImpl(TypeCoercer typeCoercer, BindingSource bindingSource)
-    {
-        this.typeCoercer = typeCoercer;
-        this.bindingSource = bindingSource;
-    }
-
-    public RenderCommand newAttributeElement(ComponentResources componentResources, final AttributeToken token)
-    {
-        final StringProvider provider = parseAttributeExpansionExpression(token.getValue(), componentResources,
-                                                                          token.getLocation());
-
-        final String namespace = token.getNamespaceURI();
-        final String name = token.getName();
-
-        return new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                writer.attributeNS(namespace, name, provider.provideString());
-            }
-
-            public String toString()
-            {
-                return String.format("AttributeNS[%s %s \"%s\"]", namespace, name, token.getValue());
-            }
-        };
-    }
-
-    private StringProvider parseAttributeExpansionExpression(String expression, ComponentResources resources,
-                                                             final Location location)
-    {
-        final List<StringProvider> providers = newList();
-
-        int startx = 0;
-
-        while (true)
-        {
-            int expansionx = expression.indexOf(InternalConstants.EXPANSION_START, startx);
-
-            // No more expansions, add in the rest of the string as a literal.
-
-            if (expansionx < 0)
-            {
-                if (startx < expression.length())
-                    providers.add(new LiteralStringProvider(expression.substring(startx)));
-                break;
-            }
-
-            // Add in a literal string chunk for the characters between the last expansion and
-            // this expansion.
-
-            if (startx != expansionx)
-                providers.add(new LiteralStringProvider(expression.substring(startx, expansionx)));
-
-            int endx = expression.indexOf("}", expansionx);
-
-            if (endx < 0) throw new TapestryException(ServicesMessages
-                    .unclosedAttributeExpression(expression), location, null);
-
-            String expansion = expression.substring(expansionx + 2, endx);
-
-            final Binding binding = bindingSource.newBinding("attribute expansion", resources, resources,
-                                                             BindingConstants.PROP, expansion, location);
-
-            final StringProvider provider = new StringProvider()
-            {
-                public String provideString()
-                {
-                    try
-                    {
-                        Object raw = binding.get();
-
-                        return typeCoercer.coerce(raw, String.class);
-                    }
-                    catch (Exception ex)
-                    {
-                        throw new TapestryException(ex.getMessage(), location, ex);
-                    }
-                }
-            };
-
-            providers.add(provider);
-
-            // Restart the search after '}'
-
-            startx = endx + 1;
-        }
-
-        // Simplify the typical case, where the entire attribute is just a single expansion:
-
-        if (providers.size() == 1) return providers.get(0);
-
-        return new StringProvider()
-        {
-
-            public String provideString()
-            {
-                StringBuilder builder = new StringBuilder();
-
-                for (StringProvider provider : providers)
-                    builder.append(provider.provideString());
-
-                return builder.toString();
-            }
-        };
-    }
-
-    public RenderCommand newExpansionElement(ComponentResources componentResources, ExpansionToken token)
-    {
-        Binding binding = bindingSource.newBinding("expansion", componentResources, componentResources,
-                                                   BindingConstants.PROP, token.getExpression(), token.getLocation());
-
-        return new ExpansionPageElement(binding, typeCoercer);
-    }
-
-    public Binding newBinding(String parameterName, ComponentResources loadingComponentResources,
-                              ComponentResources embeddedComponentResources, String defaultBindingPrefix,
-                              String expression, Location location)
-    {
-
-        if (expression.contains(InternalConstants.EXPANSION_START))
-        {
-            StringProvider provider = parseAttributeExpansionExpression(expression, loadingComponentResources,
-                                                                        location);
-
-            return new AttributeExpansionBinding(location, provider);
-        }
-
-        return bindingSource.newBinding(parameterName, loadingComponentResources,
-                                        embeddedComponentResources, defaultBindingPrefix, expression, location);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoader.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoader.java
deleted file mode 100644
index 20b5a41..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLoader.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResourcesCommon;
-import org.apache.tapestry5.internal.structure.Page;
-
-import java.util.Locale;
-
-/**
- * Instantiates a fully loaded, configured instance of a Tapestry page. This is a recursive process, since part of
- * loading a page is to load the page elements for the page, many of which are components. Further, in some cases, the
- * full component tree is not identified until after each component's template is loaded. Because this is an expensive
- * process, loaded pages will be used for many requests (on behalf of many different users) and will be pooled between
- * requests.
- *
- * @see PagePool
- * @see RequestPageCache
- */
-public interface PageLoader
-{
-    /**
-     * Loads the page in the given locale.
-     *
-     * @param pageName the <em>canonicalized</em> logical name of the page, which will be made available via {@link
-     *                 Page#getName()} and {@link ComponentResourcesCommon#getPageName()} (for any component within the
-     *                 page).
-     * @param locale   the locale to load the page and its components , which will be made available via {@link
-     *                 Page#getLocale()} and {@link ComponentResourcesCommon#getLocale()} (for any component within the
-     *                 page)
-     * @see Page#getLocale()
-     */
-    Page loadPage(String pageName, Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLocator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLocator.java
deleted file mode 100644
index b50ac70..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageLocator.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-
-/**
- * Used as a key to lookup a page from the {@link org.apache.tapestry5.internal.services.PagePool}.
- */
-public class PageLocator
-{
-    private final String pageName;
-
-    private final Locale locale;
-
-    public PageLocator(String pageName, Locale locale)
-    {
-        this.pageName = pageName;
-        this.locale = locale;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == null || !(obj instanceof PageLocator))
-        {
-            return false;
-        }
-        PageLocator locator = (PageLocator) obj;
-        return pageName.equals(locator.pageName) && locale.equals(locator.locale);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return pageName.hashCode() * 17 + locale.hashCode();
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("%s[%s, %s]", getClass().getSimpleName(), pageName, locale
-                .toString());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageMarkupRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageMarkupRenderer.java
deleted file mode 100644
index 2ddee2a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageMarkupRenderer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.structure.Page;
-
-/**
- * Service used to render page markup using a MarkupWriter.  This is  used when rendering a complete page as part of a
- * {@linkplain org.apache.tapestry5.internal.services.PageRenderRequestHandlerImpl page render request},
- */
-public interface PageMarkupRenderer
-{
-    /**
-     * Initializes the rendering using the {@link org.apache.tapestry5.services.MarkupRenderer} pipeline.
-     *
-     * @param page   page to render
-     * @param writer receives the markup
-     */
-    void renderPageMarkup(Page page, MarkupWriter writer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageMarkupRendererImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageMarkupRendererImpl.java
deleted file mode 100644
index 2a6feb9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageMarkupRendererImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.MarkupRenderer;
-
-public class PageMarkupRendererImpl implements PageMarkupRenderer
-{
-    private final PageRenderQueue pageRenderQueue;
-
-    private final MarkupRenderer markupRendererPipeline;
-
-    public PageMarkupRendererImpl(MarkupRenderer markupRendererPipeline, PageRenderQueue pageRenderQueue)
-    {
-        // We have to go through some awkward tricks here:
-        // - MarkupRenderer and MarkupRendererFilter are PUBLIC
-        // - Page, PageMarkupRenderer, PageRenderQueue are PRIVATE
-        // - This service is the bridge between public and private
-
-        this.pageRenderQueue = pageRenderQueue;
-
-        this.markupRendererPipeline = markupRendererPipeline;
-    }
-
-    public void renderPageMarkup(Page page, MarkupWriter writer)
-    {
-        // This is why the PRQ is scope perthread; we tell it what to render here ...
-
-        pageRenderQueue.initializeForCompletePage(page);
-
-        // ... then our statically fixed pipeline is able to (eventually) call into it.
-
-        markupRendererPipeline.renderMarkup(writer);
-
-        if (writer.getDocument().getRootElement() == null)
-            throw new RuntimeException(ServicesMessages.noMarkupFromPageRender(page));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageNameComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageNameComponentEventResultProcessor.java
deleted file mode 100644
index 1bdf1a8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageNameComponentEventResultProcessor.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-import java.io.IOException;
-
-/**
- * Used when a component event handler returns a string value. The value is interpreted as the logical name of a page. A
- * link to the page will be sent as a redirect.
- */
-public class PageNameComponentEventResultProcessor implements ComponentEventResultProcessor<String>
-{
-    private final RequestPageCache requestPageCache;
-
-    private final ActionRenderResponseGenerator generator;
-
-    public PageNameComponentEventResultProcessor(RequestPageCache requestPageCache,
-                                                 ActionRenderResponseGenerator generator)
-    {
-        this.requestPageCache = requestPageCache;
-        this.generator = generator;
-    }
-
-    public void processResultValue(String value) throws IOException
-    {
-        Page page = requestPageCache.get(value);
-
-        generator.generateResponse(page);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePool.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePool.java
deleted file mode 100644
index 94e0b6c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePool.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-
-/**
- * Provides access to pages, creating them as necessary, and pooling them between requests.
- */
-public interface PagePool
-{
-    /**
-     * Obtains a page instance from the pool via a logical page name. A page instance is created if no such page is
-     * currently available. The page pool enforces limits on the number of page instances (for any page name / locale
-     * combination) and may wait for a page to become available rather than create a new instance. There's also a hard
-     * limit, at which point an exception is raised.
-     * 
-     * @param pageName
-     *            the canonical page name
-     * @return a page instance
-     * @throws RuntimeException
-     *             if the name is not valid, if the page cannot be loaded, or if an instance of the page
-     *             can't be created.
-     */
-    Page checkout(String pageName);
-
-    /**
-     * Releases a previously checked-out page.
-     * 
-     * @param page
-     *            a previously checked-out page
-     */
-    void release(Page page);
-
-    /**
-     * Discards a page, which occurs when there are errors invoking lifecycle methods on the page.
-     * 
-     * @param page
-     *            a previously checked-out page
-     */
-    void discard(Page page);
-
-    /**
-     * Forces the page pool to discard all pooled pages.
-     * 
-     * @since 5.2.0
-     */
-    void clear();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolCache.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolCache.java
deleted file mode 100644
index f825d55..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolCache.java
+++ /dev/null
@@ -1,348 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.LinkedList;
-import java.util.ListIterator;
-import java.util.Locale;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-/**
- * Used by  {@link org.apache.tapestry5.internal.services.PagePoolImpl} to maintain a cache of available and in-use page
- * instances.
- * <p/>
- * This code is designed to handle high volume sites and deal with request fluctuations.
- * <p/>
- * Page instances, once created, are tracked with <strong>soft</strong> references.
- * <p/>
- * A <em>soft limit</em> on the number of page instances is enforced. Requesting a page instance when the soft limit has
- * been reached (or exceeded) will result in a delay until a page instance (released from another thread) is available.
- * The delay time is configurable.
- * <p/>
- * A <em>hard limit</em> on the number of page instances is enforced. This number may not be exceeded. Requesting a page
- * instance when at the hard limit will result in a runtime exception.
- */
-final class PagePoolCache
-{
-    private final String pageName;
-
-    private final Locale locale;
-
-    private final int softLimit;
-
-    private final long softWait;
-
-    private final int hardLimit;
-
-    private final long activeWindow;
-
-    private final PageLoader pageLoader;
-
-    /**
-     * Pages that are available for use.
-     */
-    private final LinkedList<CachedPage> available = CollectionFactory.newLinkedList();
-
-    /**
-     * Pages that are currently in use.
-     */
-    private final LinkedList<CachedPage> inUse = CollectionFactory.newLinkedList();
-
-    /**
-     * Guards access to the available and in use lists.
-     */
-    private final Lock lock = new ReentrantLock();
-
-    /**
-     * Condition signalled whenever an in-use page is returned to the cache, which is useful if some other thread may be
-     * waiting for a page to be available.
-     */
-    private final Condition pageAvailable = lock.newCondition();
-
-    /**
-     * Tracks the usage of a page instance, allowing a last access property to be associated with the page. CachedPage
-     * instances are only accessed from within a {@link org.apache.tapestry5.internal.services.PagePoolCache}, which
-     * handles synchronization concerns.
-     * <p/>
-     * An earlier version of this code used <em>soft references</em>, but those seem to be problematic (the test suite
-     * started behaving erratically and response time suffered).  Perhaps that could be addressed via tuning of the VM,
-     * but for the meantime, we use hard references and rely more on the soft and hard limits and the culling of unused
-     * pages periodically.
-     */
-    static class CachedPage
-    {
-        private final Page page;
-
-        private long lastAccess;
-
-        CachedPage(Page page)
-        {
-            this.page = page;
-        }
-    }
-
-    /**
-     * @param pageName     logical name of page, needed when creating a fresh instance
-     * @param locale       locale of the page, needed when creating a fresh instance
-     * @param pageLoader   used to create a fresh page instance, if necessary
-     * @param softLimit    soft limit on pages, point at which the cache will wait for an existing page to be made
-     *                     available
-     * @param softWait     interval, in milliseconds, to wait for a page to become available
-     * @param hardLimit    maximum number of page instances that will ever be created
-     * @param activeWindow interval, in milliseconds, beyond which an available page is simply discarded
-     */
-    public PagePoolCache(String pageName, Locale locale, PageLoader pageLoader, int softLimit, long softWait,
-                         int hardLimit, long activeWindow)
-    {
-        this.pageName = pageName;
-        this.locale = locale;
-        this.pageLoader = pageLoader;
-        this.softLimit = softLimit;
-        this.softWait = softWait;
-        this.hardLimit = hardLimit;
-        this.activeWindow = activeWindow;
-    }
-
-    /**
-     * Finds an available page instance and returns it.  If no page instance is available, will wait up to the soft wait
-     * for one to become available. After that time, it will either create a new instance, or give up (the hard instance
-     * limit has been reached) and throw an exception.
-     *
-     * @return page instance
-     * @throws RuntimeException if the hard limit is reached, or if there is an error loading a new page instance
-     */
-    Page checkout()
-    {
-        // The only problem here is that *each* new page attached to the request
-        // may wait the soft limit.  The alternative would be to timestamp the request
-        // itself, and compute the wait period from that ... a dangerous and expensive option.
-
-        long start = System.currentTimeMillis();
-
-        // We don't set a wait on acquiring the lock; it is assumed that any given thread will
-        // only have the lock for an instant whether it is checking for an available page, or
-        // releasing pages from the in use list back into the active list. We go to some trouble to
-        // ensure that the PageLoader is invoked OUTSIDE of the lock.
-
-        lock.lock();
-
-        try
-        {
-
-
-            while (true)
-            {
-                // We have the write lock, see if there is an available cached page we can use.
-
-                Page page = findAvailablePage();
-
-                if (page != null) return page;
-
-                // Now it starts to get tricky.  Have we hit the soft limit yet?
-                // We assume that none of the in use pages' soft references are cleared,
-                // which is largely accurate as long as there haven't been a lot
-                // of request exceptions.  We'll take the count at face value.
-
-                if (inUse.size() < softLimit) break;
-
-                // We'll wait for pages to be available, but careful that the
-                // total wait period is less than the soft wait limit.
-
-                long waitMillis = (start + softWait) - System.currentTimeMillis();
-
-                // We've run out of time to wait.
-
-                if (waitMillis < 1) break;
-
-                try
-                {
-                    // Note: await() will release the lock, but will re-acquire it
-                    // before returning. 
-                    pageAvailable.await(waitMillis, TimeUnit.MILLISECONDS);
-                }
-                catch (InterruptedException ex)
-                {
-                    // Not sure who is interrupting us (the servlet container)? But returning null
-                    // is the fastest way to bounce out of the thread.
-
-                    return null;
-                }
-
-                // Loop back up and see if an active page is available.  It won't always be,
-                // because of race conditions, so we may wait again.
-            }
-
-            // We get here if we exhausted the softWait interval without actually
-            // acquiring a page.            
-
-            // If past the hard limit, we don't try to create the page fresh.
-
-            if (inUse.size() >= hardLimit)
-                throw new RuntimeException(ServicesMessages.pagePoolExausted(pageName, locale, hardLimit));
-        }
-        finally
-        {
-            lock.unlock();
-        }
-
-        // This may take a moment, so we're careful to do it outside of a write lock.
-        // That does mean that we may slip over a hard or soft limit momentarily, if
-        // just the right race condition occurs.
-
-        Page page = pageLoader.loadPage(pageName, locale);
-
-        lock.lock();
-
-        try
-        {
-            inUse.addFirst(new CachedPage(page));
-        }
-        finally
-        {
-            lock.unlock();
-        }
-
-        return page;
-    }
-
-    /**
-     * Finds and returns the first available page.
-     * <p/>
-     * Side effect: removes the {@link org.apache.tapestry5.internal.services.PagePoolCache.CachedPage} from the
-     * available list and moves it to the in use list.
-     *
-     * @return the page, if any found, or null if no page is available
-     */
-    private Page findAvailablePage()
-    {
-        if (available.isEmpty()) return null;
-
-        CachedPage cachedPage = available.removeFirst();
-
-        inUse.addFirst(cachedPage);
-
-        return cachedPage.page;
-    }
-
-    /**
-     * Invoked to release an active page back into the pool.
-     */
-    void release(Page page)
-    {
-        lock.lock();
-
-        try
-        {
-            CachedPage cached = null;
-
-            ListIterator<CachedPage> i = inUse.listIterator();
-
-            while (i.hasNext())
-            {
-                cached = i.next();
-
-                if (cached.page == page)
-                {
-                    i.remove();
-                    break;
-                }
-            }
-
-            // This should not ever happen. The only scenario I can think of is if a page instance
-            // was in use before the page pool was cleared (due to a file check invalidation notification).
-            // That's not supposed to happen, CheckForUpdatesFilter ensures that all threads but one
-            // or blocked on the outside when a file check occurs.
-
-            // So, cached is null means that the page instance was not created by this
-            // PagePoolCache, so we're not interested in keeping it.
-
-            if (cached == null) return;
-
-            cached.lastAccess = System.currentTimeMillis();
-
-            available.addFirst(cached);
-
-            pageAvailable.signal();
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    /**
-     * Called for dirty pages, pages that are in an unknown state after being used for the request. Such pages are
-     * removed from the in use list and NOT added back to the active list.
-     */
-    void remove(Page page)
-    {
-        lock.lock();
-
-        try
-        {
-            ListIterator<CachedPage> i = inUse.listIterator();
-
-            while (i.hasNext())
-            {
-                CachedPage cached = i.next();
-
-                if (cached.page == page)
-                {
-                    i.remove();
-
-                    break;
-                }
-            }
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    /**
-     * Finds any cached pages whose last modified time is beyond the active window, meaning they haven't been used in
-     * some amount of time., and releases them to the garbage collector.
-     */
-    void cleanup()
-    {
-        long cutoff = System.currentTimeMillis() - activeWindow;
-
-        lock.lock();
-
-        try
-        {
-
-            ListIterator<CachedPage> i = available.listIterator();
-
-            while (i.hasNext())
-            {
-                CachedPage cached = i.next();
-
-                if (cached.lastAccess < cutoff) i.remove();
-            }
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolImpl.java
deleted file mode 100644
index dc7a6ec..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolImpl.java
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.UpdateListener;
-import org.slf4j.Logger;
-
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Registered as an invalidation listener with the page loader, the component messages source, and the component
- * template source. Any time any of those notice a change, then the entire page pool is wiped.
- * <p/>
- * The master page pool is, itself, divided into individual sub-pools, one for each combination of
- * <p/>
- * This code is designed to handle high volume sites and deal with request fluctuations.
- * <p/>
- * A <em>soft limit</em> on the number of page instances is enforced. Asking for a page instance when the soft limit has
- * been reached (or exceeded) will result in a delay until a page instance (released from another thread) is available.
- * The delay time is configurable.
- * <p/>
- * A <em>hard limit</em> on the number of page instances is enforced. This number may not be exceeded. Requesting a page
- * instance when at the hard limit will result in a runtime exception.
- * <p/>
- * As an {@link org.apache.tapestry5.services.UpdateListener}, the service will reduce the size of each page's pool by
- * eliminating pages that haven't been used recently.
- * 
- * @see org.apache.tapestry5.internal.services.PagePoolCache
- */
-public class PagePoolImpl implements PagePool, InvalidationListener, UpdateListener, PagePoolImplMBean
-{
-    private final Logger logger;
-
-    private final PageLoader pageLoader;
-
-    private final ThreadLocale threadLocale;
-
-    private int softLimit;
-
-    private long softWait;
-
-    private int hardLimit;
-
-    private long activeWindow;
-
-    private final Map<PageLocator, PagePoolCache> pool = CollectionFactory.newMap();
-
-    public PagePoolImpl(Logger logger,
-
-    PageLoader pageLoader,
-
-    ThreadLocale threadLocale,
-
-    @Symbol(SymbolConstants.PAGE_POOL_SOFT_LIMIT)
-    int softLimit,
-
-    @Symbol(SymbolConstants.PAGE_POOL_SOFT_WAIT)
-    @IntermediateType(TimeInterval.class)
-    long softWait,
-
-    @Symbol(SymbolConstants.PAGE_POOL_HARD_LIMIT)
-    int hardLimit,
-
-    @Symbol(SymbolConstants.PAGE_POOL_ACTIVE_WINDOW)
-    @IntermediateType(TimeInterval.class)
-    long activeWindow)
-    {
-        this.logger = logger;
-        this.pageLoader = pageLoader;
-        this.threadLocale = threadLocale;
-        this.softLimit = softLimit;
-        this.softWait = softWait;
-        this.hardLimit = hardLimit;
-        this.activeWindow = activeWindow;
-    }
-
-    public Page checkout(String pageName)
-    {
-        PagePoolCache cache = get(pageName, threadLocale.getLocale());
-
-        return cache.checkout();
-    }
-
-    public void release(Page page)
-    {
-        PagePoolCache cache = getPagePoolCache(page);
-
-        // If the page is not "clean" of any request/client state, it can't go
-        // back in the pool.
-
-        if (page.detached())
-        {
-            logger.error(ServicesMessages.pageIsDirty(page));
-
-            cache.remove(page);
-
-            return;
-        }
-
-        cache.release(page);
-    }
-
-    public void discard(Page page)
-    {
-        getPagePoolCache(page).remove(page);
-    }
-
-    private PagePoolCache getPagePoolCache(Page page)
-    {
-        return get(page.getName(), page.getLocale());
-    }
-
-    private synchronized PagePoolCache get(String pageName, Locale locale)
-    {
-        PageLocator locator = new PageLocator(pageName, locale);
-
-        PagePoolCache result = pool.get(locator);
-
-        if (result == null)
-        {
-            // TODO: It might be nice to allow individual pages to override the default limits.
-
-            result = new PagePoolCache(pageName, locale, pageLoader, softLimit, softWait, hardLimit, activeWindow);
-
-            pool.put(locator, result);
-        }
-
-        return result;
-    }
-
-    /**
-     * Any time templates, classes or messages change, we throw out all instances.
-     */
-    public synchronized void objectWasInvalidated()
-    {
-        clear();
-    }
-
-    /**
-     * On the periodic check for updates call, we clean up the caches, discarding unsued and out of date page
-     * instances.
-     */
-    public synchronized void checkForUpdates()
-    {
-        for (PagePoolCache cache : pool.values())
-        {
-            cache.cleanup();
-        }
-    }
-
-    public void clear()
-    {
-        pool.clear();
-    }
-
-    public int getSoftLimit()
-    {
-        return softLimit;
-    }
-
-    public void setSoftLimit(int softLimit)
-    {
-        this.softLimit = softLimit;
-
-        objectWasInvalidated();
-    }
-
-    public long getSoftWait()
-    {
-        return softWait;
-    }
-
-    public void setSoftWait(long softWait)
-    {
-        this.softWait = softWait;
-
-        objectWasInvalidated();
-    }
-
-    public int getHardLimit()
-    {
-        return hardLimit;
-    }
-
-    public void setHardLimit(int hardLimit)
-    {
-        this.hardLimit = hardLimit;
-
-        objectWasInvalidated();
-    }
-
-    public long getActiveWindow()
-    {
-        return activeWindow;
-    }
-
-    public void setActiveWindow(long activeWindow)
-    {
-        this.activeWindow = activeWindow;
-
-        objectWasInvalidated();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolImplMBean.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolImplMBean.java
deleted file mode 100644
index e18a200..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PagePoolImplMBean.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.services;
-
-
-
-/**
- * Exposes page pool settings as managed properties of a MBean.
- * 
- * @since 5.2.0
- */
-public interface PagePoolImplMBean
-{
-    /**
-     * Returns the soft limit.
-     * 
-     * @see org.apache.tapestry5.SymbolConstants#PAGE_POOL_SOFT_LIMIT
-     */
-    int getSoftLimit();
-    
-    /**
-     * Sets the soft limit.
-     */
-    void setSoftLimit(int softLimit);
-    
-    /**
-     * Returns the soft wait.
-     * 
-     * @see org.apache.tapestry5.SymbolConstants#PAGE_POOL_SOFT_WAIT
-     */
-    long getSoftWait();
-    
-    /**
-     * Sets the soft wait.
-     */
-    void setSoftWait(long softWait);
-    
-    /**
-     * Returns the hard limit.
-     * 
-     * @see org.apache.tapestry5.SymbolConstants#PAGE_POOL_HARD_LIMIT
-     * 
-     * @deprecated The hard limit will be removed in a later release of Tapestry, as the maximum number of instance
-     *             is easily controlled by limiting the number of request handling threads in the servlet container.
-     */
-    int getHardLimit();
-    
-    /**
-     * Sets the hard limit.
-     * 
-     * @deprecated The hard limit will be removed in a later release of Tapestry, as the maximum number of instance
-     *             is easily controlled by limiting the number of request handling threads in the servlet container.
-     */
-    void setHardLimit(int hardLimit);
-    
-    /**
-     * Returns the active window.
-     * 
-     * @see org.apache.tapestry5.SymbolConstants#PAGE_POOL_ACTIVE_WINDOW
-     */
-    long getActiveWindow();
-    
-    /**
-     * Sets the active window.
-     */
-    void setActiveWindow(long activeWindow);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
deleted file mode 100644
index 39da112..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderDispatcher.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-/**
- * Dispatches incoming requests for render requests. Render requests consist of either just a logical page name (case
- * insensitive) or a logical page name plus additional context. Because of this structure, it take a little bit of work
- * to identify the split point between the page name and the context.
- */
-public class PageRenderDispatcher implements Dispatcher
-{
-    private final ComponentRequestHandler componentRequestHandler;
-
-    private final ComponentEventLinkEncoder linkEncoder;
-
-    public PageRenderDispatcher(ComponentRequestHandler componentRequestHandler, ComponentEventLinkEncoder linkEncoder)
-    {
-        this.componentRequestHandler = componentRequestHandler;
-        this.linkEncoder = linkEncoder;
-    }
-
-    public boolean dispatch(Request request, final Response response) throws IOException
-    {
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        if (parameters == null) return false;
-
-        componentRequestHandler.handlePageRender(parameters);
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderLinkSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderLinkSourceImpl.java
deleted file mode 100644
index 8152a33..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderLinkSourceImpl.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.PageRenderLinkSource;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.EventContext;
-
-public class PageRenderLinkSourceImpl implements PageRenderLinkSource
-{
-    private final ComponentClassResolver resolver;
-
-    private final LinkSource linkSource;
-
-    public PageRenderLinkSourceImpl(LinkSource linkSource, ComponentClassResolver resolver)
-    {
-        this.linkSource = linkSource;
-        this.resolver = resolver;
-    }
-
-    private String toPageName(Class pageClass)
-    {
-        return resolver.resolvePageClassNameToPageName(pageClass.getName());
-    }
-
-    public Link createPageRenderLink(Class pageClass)
-    {
-        return createPageRenderLink(toPageName(pageClass));
-    }
-
-    public Link createPageRenderLink(String pageName)
-    {
-        return linkSource.createPageRenderLink(pageName, false);
-    }
-
-    public Link createPageRenderLinkWithContext(Class pageClass, Object... context)
-    {
-        return createPageRenderLinkWithContext(toPageName(pageClass), context);
-    }
-
-    public Link createPageRenderLinkWithContext(Class pageClass, EventContext eventContext)
-    {
-        return createPageRenderLinkWithContext(toPageName(pageClass), eventContext);
-    }
-
-    public Link createPageRenderLinkWithContext(String pageName, Object... context)
-    {
-        return linkSource.createPageRenderLink(pageName, true, context);
-    }
-
-    public Link createPageRenderLinkWithContext(String pageName, EventContext eventContext)
-    {
-        int count = eventContext.getCount();
-
-        Object[] pageActivationContext = new Object[count];
-
-        for(int i = 0; i < count; i++)
-            pageActivationContext[i] = eventContext.get(Object.class, i);
-
-        return linkSource.createPageRenderLink(pageName, true, pageActivationContext);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueue.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueue.java
deleted file mode 100644
index 6374e15..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueue.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-import org.apache.tapestry5.services.ajax.MultiZoneUpdateEventResultProcessor;
-
-/**
- * A wrapper around {@link org.apache.tapestry5.runtime.RenderQueue}, but referencable as a (per-thread) service. This
- * service is scoped so that we can tell it what to render in one method, then have it do the render in another. Part of
- * an elaborate scheme to keep certain interfaces public and other closely related ones private.
- */
-public interface PageRenderQueue
-{
-    /**
-     * Initializes the queue for rendering of a complete page.
-     */
-    void initializeForCompletePage(Page page);
-
-    /**
-     * Sets the default page that will render the response.
-     */
-    void setRenderingPage(Page page);
-
-    /**
-     * Returns the page that is rendering markup content.
-     */
-    Page getRenderingPage();
-
-    /**
-     * Initializes the queue for rendering of a portion of a page.
-     */
-    void initializeForPartialPageRender(RenderCommand rootCommand);
-
-    /**
-     * Obtains the value previously supplied to
-     * {@link #initializeForPartialPageRender(org.apache.tapestry5.runtime.RenderCommand)}.
-     * This allows the "natural" renderer to be substituted or otherwise manipulated.
-     * 
-     * @return the root renderer
-     */
-    RenderCommand getRootRenderCommand();
-
-    /**
-     * Returns true if {@link #initializeForPartialPageRender(org.apache.tapestry5.runtime.RenderCommand)} has been
-     * invoked.
-     */
-    boolean isPartialRenderInitialized();
-
-    /**
-     * Forces the partialRenderInitialized flag to true, even if there isn't a root render command.
-     * This is used by the {@link MultiZoneUpdateEventResultProcessor} which doesn't add a render command
-     * until after rendering starts (care-of a stack of filters).
-     * 
-     * @since 5.2.2
-     */
-    void forcePartialRenderInitialized();
-
-    /**
-     * Render to the write, as setup by the initialize method.
-     * 
-     * @param writer
-     *            to write markup to
-     */
-    void render(MarkupWriter writer);
-
-    /**
-     * Performs a partial markup render, as configured via
-     * {@link #initializeForPartialPageRender(org.apache.tapestry5.runtime.RenderCommand)}.
-     * 
-     * @param writer
-     *            to which markup should be written
-     * @param reply
-     *            JSONObject which will contain the partial response
-     */
-    void renderPartial(MarkupWriter writer, JSONObject reply);
-
-    /**
-     * Adds an optional filter to the rendering. Optional filters are <em>temporary</em>, used just during the current
-     * partial render (as opposed to filters contributed to the
-     * {@link org.apache.tapestry5.services.PartialMarkupRenderer} service which are permanent, shared and stateless.
-     * <p/>
-     * Filters are added to the <em>end</em> of the pipeline (after all permanent contributions).
-     * <p/>
-     * Filters will be executed in the order in which they are added.
-     * 
-     * @param filter
-     *            to add to the pipeline
-     */
-    void addPartialMarkupRendererFilter(PartialMarkupRendererFilter filter);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java
deleted file mode 100644
index 2e6d27e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderQueueImpl.java
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-import org.slf4j.Logger;
-
-/**
- * This services keeps track of the page being rendered and the root command for the partial render, it is therefore
- * request/thread scoped. There's a filter pipeline around the rendering, and that gets to be stateless because this
- * service, at the end of the pipeline, is stateful.
- */
-@Scope(ScopeConstants.PERTHREAD)
-public class PageRenderQueueImpl implements PageRenderQueue
-{
-    private final LoggerSource loggerSource;
-
-    private Page page;
-
-    private RenderCommand rootCommand;
-
-    private boolean partialRenderInitialized;
-
-    private final Stack<PartialMarkupRendererFilter> filters = CollectionFactory.newStack();
-
-    private static class Bridge implements PartialMarkupRenderer
-    {
-        private final PartialMarkupRendererFilter filter;
-
-        private final PartialMarkupRenderer delegate;
-
-        private Bridge(PartialMarkupRendererFilter filter, PartialMarkupRenderer delegate)
-        {
-            this.filter = filter;
-            this.delegate = delegate;
-        }
-
-        public void renderMarkup(MarkupWriter writer, JSONObject reply)
-        {
-            filter.renderMarkup(writer, reply, delegate);
-        }
-    }
-
-    public PageRenderQueueImpl(LoggerSource loggerSource)
-    {
-        this.loggerSource = loggerSource;
-    }
-
-    public void initializeForCompletePage(Page page)
-    {
-        this.page = page;
-        rootCommand = page.getRootElement();
-    }
-
-    public void setRenderingPage(Page page)
-    {
-        assert page != null;
-        this.page = page;
-    }
-
-    public boolean isPartialRenderInitialized()
-    {
-        return partialRenderInitialized;
-    }
-
-    public void forcePartialRenderInitialized()
-    {
-        partialRenderInitialized = true;
-    }
-
-    public void initializeForPartialPageRender(RenderCommand rootCommand)
-    {
-        assert rootCommand != null;
-
-        if (page == null)
-            throw new IllegalStateException("Page must be specified before root render command.");
-
-        this.rootCommand = rootCommand;
-
-        partialRenderInitialized = true;
-    }
-
-    public RenderCommand getRootRenderCommand()
-    {
-        return rootCommand;
-    }
-
-    public Page getRenderingPage()
-    {
-        return page;
-    }
-
-    public void render(MarkupWriter writer)
-    {
-        String name = "tapestry.render." + page.getLogger().getName();
-
-        Logger logger = loggerSource.getLogger(name);
-
-        RenderQueueImpl queue = new RenderQueueImpl(logger);
-
-        queue.push(rootCommand);
-
-        // Run the queue until empty.
-
-        queue.run(writer);
-    }
-
-    public void addPartialMarkupRendererFilter(PartialMarkupRendererFilter filter)
-    {
-        assert filter != null;
-
-        filters.push(filter);
-    }
-
-    public void renderPartial(MarkupWriter writer, JSONObject reply)
-    {
-        PartialMarkupRenderer terminator = new PartialMarkupRenderer()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply)
-            {
-                render(writer);
-            }
-        };
-
-        PartialMarkupRenderer delegate = terminator;
-
-        while (!filters.isEmpty())
-        {
-            PartialMarkupRendererFilter filter = filters.pop();
-
-            PartialMarkupRenderer bridge = new Bridge(filter, delegate);
-
-            delegate = bridge;
-        }
-
-        // The initialize methods will already have been invoked.
-
-        delegate.renderMarkup(writer, reply);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
deleted file mode 100644
index 46eb7c2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImpl.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.PageRenderRequestHandler;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Traditional;
-
-/**
- * Handles a page render request by activating and then rendering the page.
- * 
- * @see org.apache.tapestry5.internal.services.PageRenderDispatcher
- */
-@SuppressWarnings("unchecked")
-public class PageRenderRequestHandlerImpl implements PageRenderRequestHandler
-{
-    private final RequestPageCache cache;
-
-    private final ComponentEventResultProcessor resultProcessor;
-
-    private final PageResponseRenderer pageResponseRenderer;
-
-    private final PageActivator pageActivator;
-
-    public PageRenderRequestHandlerImpl(RequestPageCache cache, @Traditional
-    @Primary
-    ComponentEventResultProcessor resultProcessor, PageResponseRenderer pageResponseRenderer,
-            PageActivator pageActivator)
-    {
-        this.cache = cache;
-        this.resultProcessor = resultProcessor;
-        this.pageResponseRenderer = pageResponseRenderer;
-        this.pageActivator = pageActivator;
-    }
-
-    public void handle(PageRenderRequestParameters parameters) throws IOException
-    {
-        Page page = cache.get(parameters.getLogicalPageName());
-
-        if (pageActivator.activatePage(page.getRootElement().getComponentResources(),
-                parameters.getActivationContext(), resultProcessor))
-            return;
-
-        if (!parameters.isLoopback())
-            page.pageReset();
-
-        pageResponseRenderer.renderPageResponse(page);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageResponseRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageResponseRenderer.java
deleted file mode 100644
index 62b5282..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageResponseRenderer.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-
-import java.io.IOException;
-
-/**
- * Service responsible for writing a full page markup response.
- */
-public interface PageResponseRenderer
-{
-    void renderPageResponse(Page page) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageResponseRendererImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageResponseRendererImpl.java
deleted file mode 100644
index 093c467..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageResponseRendererImpl.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.services.MarkupWriterFactory;
-import org.apache.tapestry5.services.RequestGlobals;
-import org.apache.tapestry5.services.Response;
-import org.slf4j.Logger;
-
-public class PageResponseRendererImpl implements PageResponseRenderer
-{
-    private final RequestGlobals requestGlobals;
-
-    private final PageMarkupRenderer markupRenderer;
-
-    private final MarkupWriterFactory markupWriterFactory;
-
-    private final PageContentTypeAnalyzer pageContentTypeAnalyzer;
-
-    private final Response response;
-
-    private final Logger logger;
-
-    public PageResponseRendererImpl(RequestGlobals requestGlobals, MarkupWriterFactory markupWriterFactory,
-            PageMarkupRenderer markupRenderer, PageContentTypeAnalyzer pageContentTypeAnalyzer, Response response,
-            Logger logger)
-    {
-        this.requestGlobals = requestGlobals;
-        this.markupWriterFactory = markupWriterFactory;
-        this.markupRenderer = markupRenderer;
-        this.pageContentTypeAnalyzer = pageContentTypeAnalyzer;
-        this.response = response;
-        this.logger = logger;
-    }
-
-    public void renderPageResponse(Page page) throws IOException
-    {
-        assert page != null;
-
-        requestGlobals.storeActivePageName(page.getName());
-
-        ContentType contentType = pageContentTypeAnalyzer.findContentType(page);
-
-        // For the moment, the content type is all that's used determine the model for the markup writer.
-        // It's something of a can of worms.
-
-        MarkupWriter writer = markupWriterFactory.newMarkupWriter(contentType);
-
-        markupRenderer.renderPageMarkup(page, writer);
-
-        PrintWriter pw = response.getPrintWriter(contentType.toString());
-
-        long startNanos = System.nanoTime();
-
-        writer.toMarkup(pw);
-
-        long endNanos = System.nanoTime();
-
-        if (logger.isDebugEnabled())
-        {
-            long elapsedNanos = endNanos - startNanos;
-            double elapsedSeconds = ((float) elapsedNanos) / 1000000000F;
-
-            logger.debug(String.format("Response DOM streamed to markup in %.3f seconds", elapsedSeconds));
-        }
-
-        pw.close();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java
deleted file mode 100644
index 428aa55..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSource.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.internal.structure.Page;
-
-/**
- * Access to localized page instances (which are now shared singletons, starting in release 5.2).
- * This service is a wrapper around {@link PageLoader} that caches the loaded pages.
- * 
- * @since 5.2.0
- */
-public interface PageSource
-{
-    Page getPage(String canonicalPageName, Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
deleted file mode 100644
index d69151a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PageSourceImpl.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.InvalidationListener;
-
-public class PageSourceImpl implements PageSource, InvalidationListener
-{
-    private final PageLoader pageLoader;
-
-    private static final class CachedPageKey
-    {
-        final String pageName;
-
-        final Locale locale;
-
-        public CachedPageKey(String pageName, Locale locale)
-        {
-            this.pageName = pageName;
-            this.locale = locale;
-        }
-
-        public int hashCode()
-        {
-            return 37 * pageName.hashCode() + locale.hashCode();
-        }
-
-        public boolean equals(Object obj)
-        {
-            if (this == obj)
-                return true;
-
-            if (!(obj instanceof CachedPageKey))
-                return false;
-
-            CachedPageKey other = (CachedPageKey) obj;
-
-            return pageName.equals(other.pageName) && locale.equals(other.locale);
-        }
-    }
-
-    private final Map<CachedPageKey, Page> pageCache = CollectionFactory.newConcurrentMap();
-
-    public PageSourceImpl(PageLoader pageLoader)
-    {
-        this.pageLoader = pageLoader;
-    }
-
-    public synchronized void objectWasInvalidated()
-    {
-        pageCache.clear();
-    }
-
-    public Page getPage(String canonicalPageName, Locale locale)
-    {
-        CachedPageKey key = new CachedPageKey(canonicalPageName, locale);
-
-        if (!pageCache.containsKey(key))
-        {
-            // In rare race conditions, we may see the same page loaded multiple times across
-            // different threads. The last built one will "evict" the others from the page cache,
-            // and the earlier ones will be GCed.
-
-            Page page = pageLoader.loadPage(canonicalPageName, locale);
-
-            pageCache.put(key, page);
-        }
-
-        // From good authority (Brian Goetz), this is the best way to ensure that the
-        // loaded page, with all of its semi-mutable construction-time state, is
-        // properly published.
-
-        return pageCache.get(key);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
deleted file mode 100644
index c81a785..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinker.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-public class PartialMarkupDocumentLinker implements DocumentLinker
-{
-    private final JSONArray scripts = new JSONArray();
-
-    private final JSONArray stylesheets = new JSONArray();
-
-    private final Map<InitializationPriority, JSONObject> priorityToInits = CollectionFactory.newMap();
-
-    public void addScriptLink(String scriptURL)
-    {
-        scripts.put(scriptURL);
-    }
-
-    public void addStylesheetLink(StylesheetLink stylesheet)
-    {
-        JSONObject object = new JSONObject(
-
-        "href", stylesheet.getURL(),
-
-        "media", stylesheet.getOptions().getMedia());
-
-        stylesheets.put(object);
-    }
-
-    public void addScript(InitializationPriority priority, String script)
-    {
-        throw new UnsupportedOperationException(
-                "DocumentLinker.addScript() is not implemented for partial page renders.");
-    }
-
-    public void setInitialization(InitializationPriority priority, JSONObject initialization)
-    {
-        priorityToInits.put(priority, initialization);
-    }
-
-    /**
-     * Commits changes, adding one or more keys to the reply.
-     * 
-     * @param reply
-     *            JSON Object to be sent to client
-     */
-    public void commit(JSONObject reply)
-    {
-        if (scripts.length() > 0)
-            reply.put("scripts", scripts);
-
-        if (stylesheets.length() > 0)
-            reply.put("stylesheets", stylesheets);
-
-        JSONArray inits = new JSONArray();
-
-        for (InitializationPriority p : InitializationPriority.values())
-        {
-            JSONObject init = priorityToInits.get(p);
-
-            if (init != null)
-                inits.put(init);
-        }
-
-        if (inits.length() > 0)
-            reply.put("inits", inits);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupRendererTerminator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupRendererTerminator.java
deleted file mode 100644
index f5b7c18..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PartialMarkupRendererTerminator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009, 2010 Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-
-/**
- * Terminator for the {@link org.apache.tapestry5.services.PartialMarkupRenderer} pipeline, which ultimately invokes
- * {@link org.apache.tapestry5.internal.services.PageRenderQueue#renderPartial(org.apache.tapestry5.MarkupWriter, org.apache.tapestry5.json.JSONObject)}
- * .
- * 
- * @since 5.1.0.0
- */
-public class PartialMarkupRendererTerminator implements PartialMarkupRenderer
-{
-    private final PageRenderQueue renderQueue;
-
-    public PartialMarkupRendererTerminator(PageRenderQueue renderQueue)
-    {
-        this.renderQueue = renderQueue;
-    }
-
-    public void renderMarkup(MarkupWriter writer, JSONObject reply)
-    {
-        // Ensure that whatever renders will do so inside a root element.
-        // Omitting this causes NPEs when rendering individual zones
-        // of a MultiZoneUpdate
-
-        writer.element("partial-render-root-element");
-
-        renderQueue.renderPartial(writer, reply);
-
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java
deleted file mode 100644
index f2b18c1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.PersistentFieldBundle;
-import org.apache.tapestry5.services.PersistentFieldChange;
-
-import java.util.Collection;
-import java.util.Map;
-
-public class PersistentFieldBundleImpl implements PersistentFieldBundle
-{
-    /**
-     * Keyed on componentId + fieldName.
-     */
-    private final Map<String, Object> values = CollectionFactory.newMap();
-
-    public PersistentFieldBundleImpl(Collection<PersistentFieldChange> changes)
-    {
-        for (PersistentFieldChange change : changes)
-        {
-            String key = buildKey(change.getComponentId(), change.getFieldName());
-
-            values.put(key, change.getValue());
-        }
-    }
-
-    private String buildKey(String componentId, String fieldName)
-    {
-        StringBuilder builder = new StringBuilder();
-        if (componentId != null) builder.append(componentId);
-        builder.append(':');
-        builder.append(fieldName);
-
-        return builder.toString();
-    }
-
-    public boolean containsValue(String componentId, String fieldName)
-    {
-        String key = buildKey(componentId, fieldName);
-
-        return values.containsKey(key);
-    }
-
-    public Object getValue(String componentId, String fieldName)
-    {
-        String key = buildKey(componentId, fieldName);
-
-        return values.get(key);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldChangeImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldChangeImpl.java
deleted file mode 100644
index 81cf2fb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldChangeImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.PersistentFieldChange;
-
-public class PersistentFieldChangeImpl implements PersistentFieldChange
-{
-    private final String componentId;
-
-    private final String fieldName;
-
-    private final Object value;
-
-    public PersistentFieldChangeImpl(final String componentId, final String fieldName, final Object value)
-    {
-        assert componentId != null;
-        assert InternalUtils.isNonBlank(fieldName);
-
-        this.componentId = componentId;
-        this.fieldName = fieldName;
-        this.value = value;
-    }
-
-    public String getComponentId()
-    {
-        return componentId;
-    }
-
-    public String getFieldName()
-    {
-        return fieldName;
-    }
-
-    public Object getValue()
-    {
-        return value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManager.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManager.java
deleted file mode 100644
index 6555aec..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManager.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.services.PersistentFieldBundle;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-
-/**
- * Handle persistent property changes. Primarily, delegates to a number of {@link org.apache.tapestry5.services.PersistentFieldStrategy}
- * instances.
- */
-@UsesMappedConfiguration(PersistentFieldStrategy.class)
-public interface PersistentFieldManager
-{
-    /**
-     * Posts a change of a persistent property.
-     *
-     * @param pageName  the logical name of the page containing the component
-     * @param resources the resources for the component or mixin (used to determine the persistence strategy)
-     * @param fieldName the name of the field whose persistent value has changed
-     * @param newValue  the new value for the field, possibly null
-     */
-    void postChange(String pageName, ComponentResources resources, String fieldName, Object newValue);
-
-    /**
-     * Locates all persistently stored changes to all properties within the page (for the current session and request)
-     * and gathers them together into a bundle.
-     *
-     * @param pageName the logical name of the page to gather changes for
-     * @return a bundle identifying all such changes
-     */
-    PersistentFieldBundle gatherChanges(String pageName);
-
-    /**
-     * Discards all changes for the indicated page. This will not affect pages that have already been attached to this
-     * request, but will affect subsequent page attachments in this and later requests.
-     *
-     * @param pageName logical name of page whose persistent field data is to be discarded
-     */
-    void discardChanges(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java
deleted file mode 100644
index 504ecd4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImpl.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.MetaDataLocator;
-import org.apache.tapestry5.services.PersistentFieldBundle;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-
-import java.util.Collection;
-import java.util.Map;
-
-public class PersistentFieldManagerImpl implements PersistentFieldManager
-{
-    private final MetaDataLocator metaDataLocator;
-
-    private final Map<String, PersistentFieldStrategy> strategies;
-
-    public PersistentFieldManagerImpl(MetaDataLocator locator, Map<String, PersistentFieldStrategy> strategies)
-    {
-        metaDataLocator = locator;
-
-        this.strategies = strategies;
-    }
-
-    private PersistentFieldStrategy getStrategy(String strategyName)
-    {
-        PersistentFieldStrategy result = strategies.get(strategyName);
-
-        if (result == null)
-            throw new UnknownValueException(String.format("'%s' is not a defined persistent strategy.", strategyName),
-                    new AvailableValues("Configured persistent field strategies", strategies));
-
-        return result;
-    }
-
-    public PersistentFieldBundle gatherChanges(String pageName)
-    {
-        Collection<PersistentFieldChange> allChanges = CollectionFactory.newList();
-
-        for (PersistentFieldStrategy strategy : strategies.values())
-        {
-            allChanges.addAll(strategy.gatherFieldChanges(pageName));
-        }
-
-        return new PersistentFieldBundleImpl(allChanges);
-    }
-
-    public void discardChanges(String pageName)
-    {
-        for (PersistentFieldStrategy strategy : strategies.values())
-        {
-            strategy.discardChanges(pageName);
-        }
-    }
-
-    public void postChange(String pageName, ComponentResources resources, String fieldName, Object newValue)
-    {
-        String strategyName = findStrategy(resources, fieldName);
-        PersistentFieldStrategy strategy = getStrategy(strategyName);
-
-        strategy.postChange(pageName, resources.getNestedId(), fieldName, newValue);
-    }
-
-    private String findStrategy(ComponentResources resources, String fieldName)
-    {
-        ComponentModel model = resources.getComponentModel();
-
-        String strategy = model.getFieldPersistenceStrategy(fieldName);
-
-        if (InternalUtils.isNonBlank(strategy))
-            return strategy;
-
-        return metaDataLocator.findMeta(SymbolConstants.PERSISTENCE_STRATEGY, resources, String.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
deleted file mode 100644
index 58f0d0d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PersistentLocaleImpl.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Locale;
-import java.util.Set;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.services.PersistentLocale;
-
-public class PersistentLocaleImpl implements PersistentLocale
-{
-    private final PerthreadManager perThreadManager;
-
-    private final String supportedLocales;
-
-    private final Set<String> localeNames = CollectionFactory.newSet();
-
-    public PersistentLocaleImpl(PerthreadManager perThreadManager,
-
-    @Symbol(SymbolConstants.SUPPORTED_LOCALES)
-    String supportedLocales)
-    {
-        this.perThreadManager = perThreadManager;
-        this.supportedLocales = supportedLocales;
-
-        for (String name : TapestryInternalUtils.splitAtCommas(supportedLocales))
-        {
-            localeNames.add(name.toLowerCase());
-        }
-    }
-
-    public void set(Locale locale)
-    {
-        assert locale != null;
-        if (!localeNames.contains(locale.toString().toLowerCase()))
-        {
-            String message = String
-                    .format(
-                            "Locale '%s' is not supported by this application. Supported locales are '%s'; this is configured via the %s symbol.",
-                            locale, supportedLocales, SymbolConstants.SUPPORTED_LOCALES);
-
-            throw new IllegalArgumentException(message);
-        }
-
-        perThreadManager.put(this, locale);
-    }
-
-    public Locale get()
-    {
-        return (Locale) perThreadManager.get(this);
-    }
-
-    public boolean isSet()
-    {
-        return get() != null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PrefixCheckStackTraceElementAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PrefixCheckStackTraceElementAnalyzer.java
deleted file mode 100644
index 4aa08ad..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PrefixCheckStackTraceElementAnalyzer.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.StackTraceElementAnalyzer;
-
-/**
- * Checks to see if a class has a given prefix to its class name.
- *
- * @since 5.1.0.0
- */
-public class PrefixCheckStackTraceElementAnalyzer implements StackTraceElementAnalyzer
-{
-    private final String cssClass;
-    private final String prefix;
-
-    public PrefixCheckStackTraceElementAnalyzer(String cssClass, String prefix)
-    {
-        this.prefix = prefix;
-        this.cssClass = cssClass;
-    }
-
-    public String classForFrame(StackTraceElement frame)
-    {
-        return frame.getClassName().startsWith(prefix)
-               ? cssClass
-               : null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
deleted file mode 100644
index 1d1cc28..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImpl.java
+++ /dev/null
@@ -1,1404 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.antlr.runtime.ANTLRInputStream;
-import org.antlr.runtime.CommonTokenStream;
-import org.antlr.runtime.tree.Tree;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.internal.antlr.PropertyExpressionLexer;
-import org.apache.tapestry5.internal.antlr.PropertyExpressionParser;
-import org.apache.tapestry5.internal.util.IntegerRange;
-import org.apache.tapestry5.internal.util.MultiKey;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.internal.NullAnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.GenericsUtils;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.PropertyConduitSource;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import static org.apache.tapestry5.internal.antlr.PropertyExpressionParser.*;
-
-public class PropertyConduitSourceImpl implements PropertyConduitSource, InvalidationListener
-{
-    private static final MethodSignature GET_SIGNATURE = new MethodSignature(Object.class, "get", new Class[]
-    { Object.class }, null);
-
-    private static final MethodSignature SET_SIGNATURE = new MethodSignature(void.class, "set", new Class[]
-    { Object.class, Object.class }, null);
-
-    private static final Method RANGE;
-
-    private static final Method INVERT;
-
-    static
-    {
-        try
-        {
-            RANGE = BasePropertyConduit.class.getMethod("range", int.class, int.class);
-            INVERT = BasePropertyConduit.class.getMethod("invert", Object.class);
-        }
-        catch (NoSuchMethodException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private final AnnotationProvider nullAnnotationProvider = new NullAnnotationProvider();
-
-    private static class ConstructorParameter
-    {
-        private final String fieldName;
-
-        private final Class type;
-
-        private final Object value;
-
-        ConstructorParameter(String fieldName, Class type, Object value)
-        {
-            this.fieldName = fieldName;
-            this.type = type;
-            this.value = value;
-        }
-
-        public String getFieldName()
-        {
-            return fieldName;
-        }
-
-        public Class getType()
-        {
-            return type;
-        }
-
-        public Object getValue()
-        {
-            return value;
-        }
-    }
-
-    /**
-     * Describes all the gory details of one term (one property or method
-     * invocation) from within the expression.
-     */
-    private interface ExpressionTermInfo extends AnnotationProvider
-    {
-
-        /**
-         * The method to invoke to read the property value, or null.
-         */
-        Method getReadMethod();
-
-        /**
-         * The method to invoke to write the property value, or null. Always
-         * null for method terms (which are inherently
-         * read-only).
-         */
-        Method getWriteMethod();
-
-        /**
-         * The return type of the method, or the type of the property.
-         */
-        Class getType();
-
-        /**
-         * True if an explicit cast to the return type is needed (typically
-         * because of generics).
-         */
-        boolean isCastRequired();
-
-        /**
-         * Returns a user-presentable name identifying the property or method
-         * name.
-         */
-        String getDescription();
-
-        /**
-         * Returns the name of the property, if exists. This is also the name of the public field.
-         */
-        String getPropertyName();
-
-        /**
-         * Returns true if the term is actually a public field.
-         */
-        boolean isField();
-
-        /**
-         * Returns the Field if the term is a public field.
-         */
-        Field getField();
-
-    }
-
-    /**
-     * How are null values in intermdiate terms to be handled?
-     */
-    private enum NullHandling
-    {
-        /**
-         * Add code to check for null and throw exception if null.
-         */
-        FORBID,
-
-        /**
-         * Add code to check for null and short-circuit (i.e., the "?."
-         * safe-dereference operator)
-         */
-        ALLOW,
-
-        /**
-         * Add no null check at all.
-         */
-        IGNORE
-    }
-
-    private class GeneratedTerm
-    {
-        final Type type;
-
-        final String termReference;
-
-        /**
-         * @param type
-         *            type of variable
-         * @param termReference
-         *            name of variable, or a constant value
-         */
-        private GeneratedTerm(Type type, String termReference)
-        {
-            this.type = type;
-            this.termReference = termReference;
-        }
-    }
-
-    private final PropertyAccess access;
-
-    private final ClassFactory classFactory;
-
-    private final TypeCoercer typeCoercer;
-
-    private final StringInterner interner;
-
-    /**
-     * Because of stuff like Hibernate, we sometimes start with a subclass in
-     * some inaccessible class loader and need to
-     * work up to a base class from a common class loader.
-     */
-    private final Map<Class, Class> classToEffectiveClass = CollectionFactory.newConcurrentMap();
-
-    /**
-     * Keyed on combination of root class and expression.
-     */
-    private final Map<MultiKey, PropertyConduit> cache = CollectionFactory.newConcurrentMap();
-
-    private final Invariant invariantAnnotation = new Invariant()
-    {
-        public Class<? extends Annotation> annotationType()
-        {
-            return Invariant.class;
-        }
-    };
-
-    private final AnnotationProvider invariantAnnotationProvider = new AnnotationProvider()
-    {
-        public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-        {
-            if (annotationClass == Invariant.class)
-                return annotationClass.cast(invariantAnnotation);
-
-            return null;
-        }
-    };
-
-    private final PropertyConduit literalTrue;
-
-    private final PropertyConduit literalFalse;
-
-    private final PropertyConduit literalNull;
-
-    /**
-     * Encapsulates the process of building a PropertyConduit instance from an
-     * expression.
-     */
-    class PropertyConduitBuilder
-    {
-        private final Class rootType;
-
-        private final ClassFab classFab;
-
-        private final String expression;
-
-        private final Tree tree;
-
-        private Class conduitPropertyType;
-
-        private String conduitPropertyName;
-
-        private AnnotationProvider annotationProvider = nullAnnotationProvider;
-
-        // Used to create unique variable names.
-
-        private int variableIndex = 0;
-
-        private final List<ConstructorParameter> parameters = CollectionFactory.newList();
-
-        private final BodyBuilder navBuilder = new BodyBuilder();
-
-        PropertyConduitBuilder(Class rootType, String expression, Tree tree)
-        {
-            this.rootType = rootType;
-            this.expression = expression;
-            this.tree = tree;
-
-            String name = ClassFabUtils.generateClassName("PropertyConduit");
-
-            this.classFab = classFactory.newClass(name, BasePropertyConduit.class);
-        }
-
-        PropertyConduit createInstance()
-        {
-            createAccessors();
-
-            Object[] parameters = createConstructor();
-
-            Class conduitClass = classFab.createClass();
-
-            try
-            {
-                return (PropertyConduit) conduitClass.getConstructors()[0].newInstance(parameters);
-            }
-            catch (Exception ex)
-            {
-                throw new RuntimeException(ex);
-            }
-        }
-
-        private Object[] createConstructor()
-        {
-            List<Class> types = CollectionFactory.newList();
-
-            // $1, $2, $3, $4, $5 ...
-
-            types.add(Class.class);
-            types.add(String.class);
-            types.add(AnnotationProvider.class);
-            types.add(String.class);
-            types.add(TypeCoercer.class);
-
-            List<Object> values = CollectionFactory.newList();
-
-            values.add(conduitPropertyType);
-            values.add(conduitPropertyName);
-            values.add(annotationProvider);
-            values.add(interner.format("PropertyConduit[%s %s]", rootType.getName(), expression));
-            values.add(typeCoercer);
-
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            builder.addln("super($1,$2,$3,$4,$5);");
-
-            int index = 6;
-
-            for (ConstructorParameter p : parameters)
-            {
-                types.add(p.getType());
-                values.add(p.getValue());
-
-                builder.addln("%s = $%d;", p.getFieldName(), index++);
-            }
-
-            builder.end();
-
-            Class[] arrayOfTypes = types.toArray(new Class[0]);
-
-            classFab.addConstructor(arrayOfTypes, null, builder.toString());
-
-            return values.toArray();
-        }
-
-        private String addInjection(Class fieldType, Object fieldValue)
-        {
-            String fieldName = String.format("injected_%s_%d", toSimpleName(fieldType), parameters.size());
-
-            classFab.addField(fieldName, Modifier.PRIVATE | Modifier.FINAL, fieldType);
-
-            parameters.add(new ConstructorParameter(fieldName, fieldType, fieldValue));
-
-            return fieldName;
-        }
-
-        private void createNoOp(ClassFab classFab, MethodSignature signature, String format, Object... values)
-        {
-            String message = String.format(format, values);
-
-            String body = String.format("throw new RuntimeException(\"%s\");", message);
-
-            classFab.addMethod(Modifier.PUBLIC, signature, body);
-        }
-
-        private boolean isLeaf(Tree node)
-        {
-            int type = node.getType();
-
-            return type != DEREF && type != SAFEDEREF;
-        }
-
-        private void createGetRoot()
-        {
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            builder.addln("%s root = (%<s) $1;", ClassFabUtils.toJavaClassName(rootType));
-
-            builder.addln(
-                    "if (root == null) throw new NullPointerException(\"Root object of property expression '%s' is null.\");",
-                    expression);
-
-            builder.addln("return root;");
-
-            builder.end();
-
-            MethodSignature sig = new MethodSignature(rootType, "getRoot", new Class[]
-            { Object.class }, null);
-
-            classFab.addMethod(Modifier.PRIVATE, sig, builder.toString());
-        }
-
-        private void addRootVariable(BodyBuilder builder)
-        {
-            builder.addln("%s root = getRoot($1);", ClassFabUtils.toJavaClassName(rootType));
-        }
-
-        private void createAccessors()
-        {
-            createGetRoot();
-
-            navBuilder.begin();
-
-            String previousReference = "$1";
-            Type activeType = rootType;
-
-            Tree node = tree;
-
-            while (!isLeaf(node))
-            {
-                GeneratedTerm term = processDerefNode(navBuilder, activeType, node, previousReference, "$1");
-
-                activeType = term.type;
-
-                previousReference = term.termReference;
-
-                // Second term is the continuation, possibly another chained
-                // DEREF, etc.
-                node = node.getChild(1);
-            }
-
-            navBuilder.addln("return %s;", previousReference);
-
-            navBuilder.end();
-            Class activeClass = GenericsUtils.asClass(activeType);
-
-            MethodSignature sig = new MethodSignature(activeClass, "navigate", new Class[]
-            { rootType }, null);
-
-            classFab.addMethod(Modifier.PRIVATE, sig, navBuilder.toString());
-
-            createGetterAndSetter(activeClass, sig, node);
-        }
-
-        private void createGetterAndSetter(Class activeType, MethodSignature navigateMethod, Tree node)
-        {
-            switch (node.getType())
-            {
-                case IDENTIFIER:
-                case INVOKE:
-
-                    // So, a this point, we have the navigation method written
-                    // and it covers all but the terminal
-                    // de-reference. node is an IDENTIFIER or INVOKE. We're
-                    // ready to use the navigation
-                    // method to implement get() and set().
-
-                    ExpressionTermInfo info = infoForMember(activeType, node);
-
-                    createSetter(navigateMethod, info);
-                    createGetter(navigateMethod, node, info);
-
-                    conduitPropertyType = info.getType();
-                    conduitPropertyName = info.getPropertyName();
-                    annotationProvider = info;
-
-                    return;
-
-                case RANGEOP:
-
-                    // As currently implemented, RANGEOP can only appear as the
-                    // top level, which
-                    // means we didn't need the navigate method after all.
-
-                    createRangeOpGetter(node, "root");
-                    createNoOpSetter();
-
-                    conduitPropertyType = IntegerRange.class;
-
-                    return;
-
-                case LIST:
-
-                    createListGetter(node, "root");
-                    createNoOpSetter();
-
-                    conduitPropertyType = List.class;
-
-                    return;
-
-                case NOT:
-                    createNotOpGetter(node, "root");
-                    createNoOpSetter();
-
-                    conduitPropertyType = boolean.class;
-
-                    return;
-
-                default:
-                    throw unexpectedNodeType(node, IDENTIFIER, INVOKE, RANGEOP, LIST, NOT);
-            }
-        }
-
-        private void createRangeOpGetter(Tree node, String rootName)
-        {
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            addRootVariable(builder);
-
-            builder.addln("return %s;", createMethodInvocation(builder, node, rootName, 0, RANGE));
-
-            builder.end();
-
-            classFab.addMethod(Modifier.PUBLIC, GET_SIGNATURE, builder.toString());
-        }
-
-        private void createNotOpGetter(Tree node, String rootName)
-        {
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            addRootVariable(builder);
-
-            builder.addln("return ($w) %s;", createMethodInvocation(builder, node, rootName, 0, INVERT));
-
-            builder.end();
-
-            classFab.addMethod(Modifier.PUBLIC, GET_SIGNATURE, builder.toString());
-        }
-
-        public void createListGetter(Tree node, String rootName)
-        {
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            addRootVariable(builder);
-
-            builder.addln("return %s;", createListConstructor(builder, node, rootName));
-
-            builder.end();
-
-            classFab.addMethod(Modifier.PUBLIC, GET_SIGNATURE, builder.toString());
-        }
-
-        private String createListConstructor(BodyBuilder builder, Tree node, String rootName)
-        {
-            String listName = nextVariableName(List.class);
-
-            int count = node.getChildCount();
-
-            builder.addln("java.util.List %s = new java.util.ArrayList(%d);", listName, count);
-
-            for (int i = 0; i < count; i++)
-            {
-                GeneratedTerm generatedTerm = subexpression(builder, node.getChild(i), rootName);
-
-                builder.addln("%s.add(($w) %s);", listName, generatedTerm.termReference);
-            }
-
-            return listName;
-        }
-
-        private String createNotOp(BodyBuilder builder, Tree node, String rootName)
-        {
-            String flagName = nextVariableName(Boolean.class);
-            GeneratedTerm term = subexpression(builder, node.getChild(0), rootName);
-
-            builder.addln("boolean %s = invert(($w) %s);", flagName, term.termReference);
-
-            return flagName;
-        }
-
-        /**
-         * Evalutates the node as a sub expression, storing the result into a
-         * new variable, whose name is returned.
-         * 
-         * @param builder
-         *            to receive generated code
-         * @param node
-         *            root of tree of nodes to be evaluated
-         * @param rootName
-         *            name of variable holding reference to root object of
-         *            expression
-         * @return GeneratedTerm identifying the name of the variable and its
-         *         type
-         */
-        private GeneratedTerm subexpression(BodyBuilder builder, Tree node, String rootName)
-        {
-            String previousReference = rootName;
-            Class activeType = rootType;
-
-            while (node != null)
-            {
-                switch (node.getType())
-                {
-                    case TRUE:
-                    case FALSE:
-
-                        previousReference = node.getType() == TRUE ? "true" : "false";
-                        activeType = boolean.class;
-
-                        node = null;
-                        break;
-
-                    case INTEGER:
-
-                        long integerValue = Long.parseLong(node.getText());
-
-                        previousReference = String.format("%dL", integerValue);
-                        activeType = long.class;
-
-                        node = null;
-
-                        break;
-
-                    case DECIMAL:
-
-                        double decimalValue = Double.parseDouble(node.getText());
-
-                        previousReference = String.format(Locale.ENGLISH, "%fd", decimalValue);
-                        activeType = double.class;
-
-                        node = null;
-
-                        break;
-
-                    case STRING:
-
-                        String stringValue = node.getText();
-                        // Injecting is easier; don't have to fuss with escaping
-                        // quotes or such.
-                        previousReference = addInjection(String.class, stringValue);
-                        activeType = String.class;
-
-                        node = null;
-
-                        break;
-
-                    case DEREF:
-                    case SAFEDEREF:
-
-                        GeneratedTerm generated = processDerefNode(builder, activeType, node, previousReference,
-                                rootName);
-
-                        previousReference = generated.termReference;
-                        activeType = GenericsUtils.asClass(generated.type);
-
-                        node = node.getChild(1);
-
-                        break;
-
-                    case IDENTIFIER:
-                    case INVOKE:
-
-                        generated = addAccessForMember(builder, activeType, node, previousReference, rootName,
-                                NullHandling.IGNORE);
-
-                        previousReference = generated.termReference;
-                        activeType = GenericsUtils.asClass(generated.type);
-
-                        node = null;
-
-                        break;
-
-                    case NOT:
-
-                        previousReference = createNotOp(builder, node, rootName);
-                        activeType = boolean.class;
-
-                        node = null;
-
-                        break;
-
-                    case LIST:
-
-                        previousReference = createListConstructor(builder, node, rootName);
-                        activeType = List.class;
-
-                        node = null;
-
-                        break;
-
-                    default:
-                        throw unexpectedNodeType(node, TRUE, FALSE, INTEGER, DECIMAL, STRING, DEREF, SAFEDEREF,
-                                IDENTIFIER, INVOKE, LIST);
-                }
-            }
-
-            return new GeneratedTerm(activeType, previousReference);
-        }
-
-        private void createSetter(MethodSignature navigateMethod, ExpressionTermInfo info)
-        {
-            // A write method will only be identified if the info is a writable
-            // property.
-            // Other alternatives: a method as the final term, or a read-only
-            // property.
-
-            Method method = info.getWriteMethod();
-
-            if (method == null && !info.isField())
-            {
-                createNoOpSetter();
-                return;
-            }
-
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            addRootVariable(builder);
-
-            builder.addln("%s target = navigate(root);", ClassFabUtils.toJavaClassName(navigateMethod.getReturnType()));
-
-            // I.e. due to ?. operator. The navigate method will already have
-            // checked for nulls
-            // if they are not allowed.
-
-            builder.addln("if (target == null) return;");
-
-            String propertyTypeName = ClassFabUtils.toJavaClassName(info.getType());
-
-            String reference = ClassFabUtils.castReference("$2", propertyTypeName);
-
-            if (info.isField())
-            {
-                builder.add("target.%s = %s;", info.getPropertyName(), reference);
-            }
-            else
-            {
-                builder.addln("target.%s(%s);", method.getName(), reference);
-            }
-
-            builder.end();
-
-            classFab.addMethod(Modifier.PUBLIC, SET_SIGNATURE, builder.toString());
-        }
-
-        private void createNoOpSetter()
-        {
-            createNoOp(classFab, SET_SIGNATURE, "Expression '%s' for class %s is read-only.", expression,
-                    rootType.getName());
-        }
-
-        private void createGetter(MethodSignature navigateMethod, Tree node, ExpressionTermInfo info)
-        {
-            Method method = info.getReadMethod();
-
-            if (method == null && !info.isField())
-            {
-                createNoOp(classFab, GET_SIGNATURE, "Expression %s for class %s is write-only.", expression,
-                        rootType.getName());
-                return;
-            }
-
-            BodyBuilder builder = new BodyBuilder().begin();
-
-            addRootVariable(builder);
-
-            builder.addln("%s target = navigate(root);", ClassFabUtils.toJavaClassName(navigateMethod.getReturnType()));
-
-            // I.e. due to ?. operator. The navigate method will already have
-            // checked for nulls
-            // if they are not allowed.
-
-            builder.addln("if (target == null) return null;");
-
-            String reference = info.isField() ? info.getPropertyName() : createMethodInvocation(builder, node, "root",
-                    method);
-
-            builder.addln("return ($w) target.%s;", reference);
-
-            builder.end();
-
-            classFab.addMethod(Modifier.PUBLIC, GET_SIGNATURE, builder.toString());
-        }
-
-        /**
-         * Creates a method invocation call for the given node (an INVOKE node).
-         * 
-         * @param bodyBuilder
-         *            may receive new code to define variables for some
-         *            sub-expressions
-         * @param node
-         *            the INVOKE node; child #1 and up are parameter expressions
-         *            to the method being invoked
-         * @param rootName
-         *            name of variable holding reference to root object of
-         *            expression
-         * @param method
-         *            defines the name and parameter types of the method to
-         *            invoke
-         * @return method invocation string (the name of the method and any
-         *         parameters, ready to be added to a method
-         *         body)
-         */
-        private String createMethodInvocation(BodyBuilder bodyBuilder, Tree node, String rootName, Method method)
-        {
-            return createMethodInvocation(bodyBuilder, node, rootName, 1, method);
-        }
-
-        /**
-         * Creates a method invocation call for the given node
-         * 
-         * @param bodyBuilder
-         *            may receive new code to define variables for some
-         *            sub-expressions
-         * @param node
-         *            the node containing child nodes for the parameters
-         * @param rootName
-         *            name of variable holding reference to root object of
-         *            expression
-         * @param childOffset
-         *            the offset to the first parameter (for example, this is 1
-         *            for an INVOKE node)
-         * @param method
-         *            defines the name and parameter types of the method to
-         *            invoke
-         * @return method invocation string (the name of the method and any
-         *         parameters, ready to be added to a method
-         *         body)
-         */
-        private String createMethodInvocation(BodyBuilder bodyBuilder, Tree node, String rootName, int childOffset,
-                Method method)
-        {
-            Class[] parameterTypes = method.getParameterTypes();
-
-            StringBuilder builder = new StringBuilder();
-
-            builder.append(method.getName());
-            builder.append("(");
-
-            for (int i = 0; i < parameterTypes.length; i++)
-            {
-                // child(0) is the method name, child(1) is the first parameter,
-                // etc.
-
-                GeneratedTerm generatedTerm = subexpression(bodyBuilder, node.getChild(i + childOffset), rootName);
-                String currentReference = generatedTerm.termReference;
-
-                Class actualType = GenericsUtils.asClass(generatedTerm.type);
-
-                Class parameterType = parameterTypes[i];
-
-                boolean needsUnwrap = false;
-
-                if (!parameterType.isAssignableFrom(actualType))
-                {
-                    String coerced = nextVariableName(parameterType);
-
-                    String call = String.format("coerce(($w) %s, %s)", currentReference,
-                            addInjection(Class.class, parameterType));
-
-                    String parameterTypeName = ClassFabUtils.toJavaClassName(parameterType);
-
-                    bodyBuilder.addln("%s %s = %s;", parameterTypeName, coerced,
-                            ClassFabUtils.castReference(call, parameterTypeName));
-
-                    currentReference = coerced;
-                }
-                else
-                {
-                    needsUnwrap = parameterType.isPrimitive() && !actualType.isPrimitive();
-                }
-
-                if (i > 0)
-                    builder.append(", ");
-
-                builder.append(currentReference);
-
-                if (needsUnwrap)
-                {
-                    builder.append(".").append(ClassFabUtils.getUnwrapMethodName(parameterType)).append("()");
-                }
-            }
-
-            return builder.append(")").toString();
-        }
-
-        /**
-         * Extends the navigate method for a node, which will be a DEREF or
-         * SAFEDERF.
-         */
-        private GeneratedTerm processDerefNode(BodyBuilder builder, Type activeType, Tree node,
-                String previousVariableName, String rootName)
-        {
-            // The first child is the term.
-
-            Tree term = node.getChild(0);
-
-            boolean allowNull = node.getType() == SAFEDEREF;
-
-            // Returns the type of the method/property ... this is the wrapped
-            // (i.e. java.lang.Integer) type if
-            // the real type is primitive. It also reflects generics information
-            // that may have been associated
-            // with the underlying method.
-
-            return addAccessForMember(builder, activeType, term, previousVariableName, rootName,
-                    allowNull ? NullHandling.ALLOW : NullHandling.FORBID);
-        }
-
-        private String nextVariableName(Class type)
-        {
-            return String.format("var_%s_%d", toSimpleName(type), variableIndex++);
-        }
-
-        private String toSimpleName(Class type)
-        {
-            if (type.isArray())
-            {
-                Class<?> componentType = type.getComponentType();
-
-                while (componentType.isArray())
-                {
-                    componentType = componentType.getComponentType();
-                }
-
-                return InternalUtils.lastTerm(componentType.getName()) + "_array";
-            }
-            return InternalUtils.lastTerm(type.getName());
-        }
-
-        private GeneratedTerm addAccessForMember(BodyBuilder builder, Type activeType, Tree term,
-                String previousVariableName, String rootName, NullHandling nullHandling)
-        {
-            assertNodeType(term, IDENTIFIER, INVOKE);
-            Class activeClass = GenericsUtils.asClass(activeType);
-            // Get info about this property or method.
-
-            ExpressionTermInfo info = infoForMember(activeClass, term);
-
-            Method method = info.getReadMethod();
-
-            if (method == null && !info.isField())
-                throw new RuntimeException(String.format(
-                        "Property '%s' of class %s is not readable (it has no read accessor method).",
-                        info.getDescription(), activeClass.getName()));
-
-            Type termType;
-            /*
-             * It's not possible for the ClassPropertyAdapter to know about the generic info for all the properties of
-             * a class. For instance; if the type arguments of a field are provided by a subclass.
-             */
-            if (info.isField())
-            {
-                termType = GenericsUtils.extractActualType(activeType, info.getField());
-            }
-            else
-            {
-                termType = GenericsUtils.extractActualType(activeType, method);
-            }
-
-            Class termClass = GenericsUtils.asClass(termType);
-
-            final Class wrappedType = ClassFabUtils.getWrapperType(termClass);
-
-            String wrapperTypeName = ClassFabUtils.toJavaClassName(wrappedType);
-
-            final String variableName = nextVariableName(wrappedType);
-
-            String reference = info.isField() ? info.getPropertyName() : createMethodInvocation(builder, term,
-                    rootName, method);
-
-            builder.add("%s %s = ", wrapperTypeName, variableName);
-
-            // Casts are needed for primitives, and for the case where
-            // generics are involved.
-
-            if (termClass.isPrimitive())
-            {
-                builder.add(" ($w) ");
-            }
-            else if (info.isCastRequired() || info.getType() != termClass)
-            {
-                builder.add(" (%s) ", wrapperTypeName);
-            }
-
-            builder.addln("%s.%s;", previousVariableName, reference);
-
-            switch (nullHandling)
-            {
-                case ALLOW:
-                    builder.addln("if (%s == null) return null;", variableName);
-                    break;
-
-                case FORBID:
-                    // Perform a null check on intermediate terms.
-                    builder.addln("if (%s == null) %s.nullTerm(\"%s\", \"%s\", $1);", variableName,
-                            PropertyConduitSourceImpl.class.getName(), info.getDescription(), expression);
-                    break;
-
-                default:
-                    break;
-            }
-
-            return new GeneratedTerm(wrappedType == termClass ? termType : wrappedType, variableName);
-        }
-
-        private void assertNodeType(Tree node, int... expected)
-        {
-            int type = node.getType();
-
-            for (int e : expected)
-            {
-                if (type == e)
-                    return;
-            }
-
-            throw unexpectedNodeType(node, expected);
-        }
-
-        private RuntimeException unexpectedNodeType(Tree node, int... expected)
-        {
-            List<String> tokenNames = CollectionFactory.newList();
-
-            for (int i = 0; i < expected.length; i++)
-                tokenNames.add(PropertyExpressionParser.tokenNames[expected[i]]);
-
-            String message = String.format("Node %s was type %s, but was expected to be (one of) %s.",
-                    node.toStringTree(), PropertyExpressionParser.tokenNames[node.getType()],
-                    InternalUtils.joinSorted(tokenNames));
-
-            return new RuntimeException(message);
-        }
-
-        private ExpressionTermInfo infoForMember(Class activeType, Tree node)
-        {
-            if (node.getType() == INVOKE)
-                return infoForInvokeNode(activeType, node);
-
-            return infoForPropertyOrPublicField(activeType, node);
-        }
-
-        private ExpressionTermInfo infoForPropertyOrPublicField(Class activeType, Tree node)
-        {
-            String propertyName = node.getText();
-
-            ClassPropertyAdapter classAdapter = access.getAdapter(activeType);
-            final PropertyAdapter adapter = classAdapter.getPropertyAdapter(propertyName);
-
-            if (adapter == null)
-            {
-                List<String> names = classAdapter.getPropertyNames();
-
-                throw new UnknownValueException(String.format(
-                        "Class %s does not contain a property (or public field) named '%s'.", activeType.getName(),
-                        propertyName), new AvailableValues("Properties (and public fields)", names));
-            }
-
-            return createExpressionTermInfoForProperty(adapter);
-        }
-
-        private ExpressionTermInfo createExpressionTermInfoForProperty(final PropertyAdapter adapter)
-        {
-            return new ExpressionTermInfo()
-            {
-                public Method getReadMethod()
-                {
-                    return adapter.getReadMethod();
-                }
-
-                public Method getWriteMethod()
-                {
-                    return adapter.getWriteMethod();
-                }
-
-                public Class getType()
-                {
-                    return adapter.getType();
-                }
-
-                public boolean isCastRequired()
-                {
-                    return adapter.isCastRequired();
-                }
-
-                public String getDescription()
-                {
-                    return adapter.getName();
-                }
-
-                public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-                {
-                    return adapter.getAnnotation(annotationClass);
-                }
-
-                public String getPropertyName()
-                {
-                    return adapter.getName();
-                }
-
-                public boolean isField()
-                {
-                    return adapter.isField();
-                }
-
-                public Field getField()
-                {
-                    return adapter.getField();
-                }
-            };
-        }
-
-        private ExpressionTermInfo infoForInvokeNode(Class activeType, Tree node)
-        {
-            String methodName = node.getChild(0).getText();
-
-            int parameterCount = node.getChildCount() - 1;
-
-            try
-            {
-                final Method method = findMethod(activeType, methodName, parameterCount);
-
-                if (method.getReturnType().equals(void.class))
-                    throw new RuntimeException(String.format("Method %s.%s() returns void.", activeType.getName(),
-                            methodName));
-
-                final Class genericType = GenericsUtils.extractGenericReturnType(activeType, method);
-
-                return new ExpressionTermInfo()
-                {
-                    public Method getReadMethod()
-                    {
-                        return method;
-                    }
-
-                    public Method getWriteMethod()
-                    {
-                        return null;
-                    }
-
-                    public Class getType()
-                    {
-                        return genericType;
-                    }
-
-                    public boolean isCastRequired()
-                    {
-                        return genericType != method.getReturnType();
-                    }
-
-                    public String getDescription()
-                    {
-                        return new MethodSignature(method).getUniqueId();
-                    }
-
-                    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-                    {
-                        return method.getAnnotation(annotationClass);
-                    }
-
-                    public String getPropertyName()
-                    {
-                        return null;
-                    }
-
-                    public boolean isField()
-                    {
-                        return false;
-                    }
-
-                    public Field getField()
-                    {
-                        return null;
-                    }
-                };
-            }
-            catch (NoSuchMethodException ex)
-            {
-                throw new RuntimeException(String.format("No public method '%s()' in class %s.", methodName,
-                        activeType.getName()));
-            }
-        }
-
-        private Method findMethod(Class activeType, String methodName, int parameterCount) throws NoSuchMethodException
-        {
-            for (Method method : activeType.getMethods())
-            {
-
-                if (method.getParameterTypes().length == parameterCount
-                        && method.getName().equalsIgnoreCase(methodName))
-                    return method;
-            }
-
-            // TAP5-330
-            if (activeType != Object.class)
-                return findMethod(Object.class, methodName, parameterCount);
-
-            throw new NoSuchMethodException(ServicesMessages.noSuchMethod(activeType, methodName));
-        }
-    }
-
-    public PropertyConduitSourceImpl(PropertyAccess access, @ComponentLayer
-    ClassFactory classFactory, TypeCoercer typeCoercer, StringInterner interner)
-    {
-        this.access = access;
-        this.classFactory = classFactory;
-        this.typeCoercer = typeCoercer;
-        this.interner = interner;
-
-        literalTrue = createLiteralConduit(Boolean.class, true);
-        literalFalse = createLiteralConduit(Boolean.class, false);
-        literalNull = createLiteralConduit(Void.class, null);
-    }
-
-    public PropertyConduit create(Class rootClass, String expression)
-    {
-        assert rootClass != null;
-        assert InternalUtils.isNonBlank(expression);
-        Class effectiveClass = toEffectiveClass(rootClass);
-
-        MultiKey key = new MultiKey(effectiveClass, expression);
-
-        PropertyConduit result = cache.get(key);
-
-        if (result == null)
-        {
-            result = build(effectiveClass, expression);
-            cache.put(key, result);
-        }
-
-        return result;
-    }
-
-    private Class toEffectiveClass(Class rootClass)
-    {
-        Class result = classToEffectiveClass.get(rootClass);
-
-        if (result == null)
-        {
-            result = classFactory.importClass(rootClass);
-
-            classToEffectiveClass.put(rootClass, result);
-        }
-
-        return result;
-    }
-
-    /**
-     * Clears its caches when the component class loader is invalidated; this is
-     * because it will be common to generate
-     * conduits rooted in a component class (which will no longer be valid and
-     * must be released to the garbage
-     * collector).
-     */
-    public void objectWasInvalidated()
-    {
-        cache.clear();
-        classToEffectiveClass.clear();
-    }
-
-    /**
-     * Builds a subclass of {@link BasePropertyConduit} that implements the
-     * get() and set() methods and overrides the
-     * constructor. In a worst-case race condition, we may build two (or more)
-     * conduits for the same
-     * rootClass/expression, and it will get sorted out when the conduit is
-     * stored into the cache.
-     * 
-     * @param rootClass
-     *            class of root object for expression evaluation
-     * @param expression
-     *            expression to be evaluated
-     * @return the conduit
-     */
-    private PropertyConduit build(final Class rootClass, String expression)
-    {
-        Tree tree = parse(expression);
-
-        try
-        {
-            switch (tree.getType())
-            {
-                case TRUE:
-
-                    return literalTrue;
-
-                case FALSE:
-
-                    return literalFalse;
-
-                case NULL:
-
-                    return literalNull;
-
-                case INTEGER:
-
-                    // Leading '+' may screw this up.
-                    // TODO: Singleton instance for "0", maybe "1"?
-
-                    return createLiteralConduit(Long.class, new Long(tree.getText()));
-
-                case DECIMAL:
-
-                    // Leading '+' may screw this up.
-                    // TODO: Singleton instance for "0.0"?
-
-                    return createLiteralConduit(Double.class, new Double(tree.getText()));
-
-                case STRING:
-
-                    return createLiteralConduit(String.class, tree.getText());
-
-                case RANGEOP:
-
-                    Tree fromNode = tree.getChild(0);
-                    Tree toNode = tree.getChild(1);
-
-                    // If the range is defined as integers (not properties, etc.)
-                    // then it is possible to calculate the value here, once, and not
-                    // build a new class.
-
-                    if (fromNode.getType() != INTEGER || toNode.getType() != INTEGER)
-                        break;
-
-                    int from = Integer.parseInt(fromNode.getText());
-                    int to = Integer.parseInt(toNode.getText());
-
-                    IntegerRange ir = new IntegerRange(from, to);
-
-                    return createLiteralConduit(IntegerRange.class, ir);
-
-                case THIS:
-
-                    return createLiteralThisPropertyConduit(rootClass);
-
-                default:
-                    break;
-            }
-
-            return new PropertyConduitBuilder(rootClass, expression, tree).createInstance();
-        }
-        catch (Exception ex)
-        {
-            throw new PropertyExpressionException(String.format("Exception generating conduit for expression '%s': %s",
-                    expression, InternalUtils.toMessage(ex)), expression, ex);
-        }
-    }
-
-    private PropertyConduit createLiteralThisPropertyConduit(final Class rootClass)
-    {
-        return new PropertyConduit()
-        {
-            public Object get(Object instance)
-            {
-                return instance;
-            }
-
-            public void set(Object instance, Object value)
-            {
-                throw new RuntimeException(ServicesMessages.literalConduitNotUpdateable());
-            }
-
-            public Class getPropertyType()
-            {
-                return rootClass;
-            }
-
-            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-            {
-                return invariantAnnotationProvider.getAnnotation(annotationClass);
-            }
-        };
-    }
-
-    private <T> PropertyConduit createLiteralConduit(Class<T> type, T value)
-    {
-        return new LiteralPropertyConduit(type, invariantAnnotationProvider, interner.format(
-                "LiteralPropertyConduit[%s]", value), typeCoercer, value);
-    }
-
-    private Tree parse(String expression)
-    {
-        InputStream is = new ByteArrayInputStream(expression.getBytes());
-
-        ANTLRInputStream ais;
-
-        try
-        {
-            ais = new ANTLRInputStream(is);
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        PropertyExpressionLexer lexer = new PropertyExpressionLexer(ais);
-
-        CommonTokenStream tokens = new CommonTokenStream(lexer);
-
-        PropertyExpressionParser parser = new PropertyExpressionParser(tokens);
-
-        try
-        {
-            return (Tree) parser.start().getTree();
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(String.format("Error parsing property expression '%s': %s.", expression,
-                    ex.getMessage()), ex);
-        }
-    }
-
-    /**
-     * May be invoked from fabricated PropertyConduit instances.
-     */
-    public static void nullTerm(String term, String expression, Object root)
-    {
-        String message = String.format("Property '%s' (within property expression '%s', of %s) is null.", term,
-                expression, root);
-
-        throw new NullPointerException(message);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java
deleted file mode 100644
index 765c0bb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/PropertyExpressionException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Exception thrown when there is a problem parsing a property expression using the ANTLR property expression grammar.
- */
-public class PropertyExpressionException extends RuntimeException
-{
-    private final String expression;
-
-    public PropertyExpressionException(String message, String expression, Throwable cause)
-    {
-        super(message, cause);
-
-        this.expression = expression;
-    }
-
-    /**
-     * Returns the property expression containing the error.
-     */
-    public String getExpression()
-    {
-        return expression;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProxiesStackTraceElementAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProxiesStackTraceElementAnalyzer.java
deleted file mode 100644
index 454efd2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ProxiesStackTraceElementAnalyzer.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.StackTraceElementAnalyzer;
-import org.apache.tapestry5.services.StackTraceElementClassConstants;
-
-/**
- * Identifies frames for various proxy classes (class name starts with a '$' and there's no line number.  They are
- * ommitted.
- *
- * @since 5.1.0.0
- */
-public class ProxiesStackTraceElementAnalyzer implements StackTraceElementAnalyzer
-{
-    public String classForFrame(StackTraceElement frame)
-    {
-        return frame.getClassName().startsWith("$") && frame.getLineNumber() <= 0
-               ? StackTraceElementClassConstants.OMITTED
-               : null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderCommandComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderCommandComponentEventResultProcessor.java
deleted file mode 100644
index 8955470..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderCommandComponentEventResultProcessor.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-
-/**
- * Processor for objects that implement {@link RenderCommand} (such as
- * {@link org.apache.tapestry5.internal.structure.BlockImpl}).
- * 
- * @see AjaxPartialResponseRenderer#renderPartialPageMarkup()
- */
-public class RenderCommandComponentEventResultProcessor implements ComponentEventResultProcessor<RenderCommand>,
-        PartialMarkupRendererFilter
-{
-    private final PageRenderQueue pageRenderQueue;
-
-    private final AjaxFormUpdateController ajaxFormUpdateController;
-
-    public RenderCommandComponentEventResultProcessor(PageRenderQueue pageRenderQueue,
-            AjaxFormUpdateController ajaxFormUpdateController)
-    {
-        this.pageRenderQueue = pageRenderQueue;
-        this.ajaxFormUpdateController = ajaxFormUpdateController;
-    }
-
-    public void processResultValue(final RenderCommand value) throws IOException
-    {
-        pageRenderQueue.addPartialMarkupRendererFilter(this);
-        pageRenderQueue.initializeForPartialPageRender(value);
-    }
-
-    /**
-     * As a filter, this class does three things:
-     * <ul>
-     * <li>It creates an outer element to capture the partial page content that will be rendered</li>
-     * <li>It does setup and cleanup with the {@link AjaxFormUpdateController}</li>
-     * <li>It extracts the child markup and stuff it into the reply's "content" property.</li>
-     * </ul>
-     */
-    public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-    {
-        // The partial will quite often contain multiple elements (or just a block of plain text),
-        // so those must be enclosed in a root element.
-
-        Element root = writer.element("ajax-partial");
-
-        ajaxFormUpdateController.setupBeforePartialZoneRender(writer);
-
-        renderer.renderMarkup(writer, reply);
-
-        ajaxFormUpdateController.cleanupAfterPartialZoneRender();
-
-        writer.end();
-
-        String content = root.getChildMarkup().trim();
-
-        reply.put("content", content);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java
deleted file mode 100644
index 71fa8e5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueException.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-/**
- * Exception used when rendering, to capture the stack of active components (for propery reporting in the exception
- * page).
- */
-public class RenderQueueException extends TapestryException
-{
-    private final Object[] activeComponents;
-
-    public RenderQueueException(String message, Object[] activeComponents, Throwable cause)
-    {
-        super(message, cause);
-
-        this.activeComponents = activeComponents;
-    }
-
-    public Object[] getActiveComponents()
-    {
-        return activeComponents;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
deleted file mode 100644
index c709407..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderQueueImpl.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.TapestryMarkers;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.slf4j.Logger;
-
-public class RenderQueueImpl implements RenderQueue
-{
-    private static final int INITIAL_QUEUE_DEPTH = 200;
-
-    private final Stack<RenderCommand> queue = CollectionFactory.newStack(INITIAL_QUEUE_DEPTH);
-
-    private final Stack<ComponentResources> renderingComponents = CollectionFactory.newStack();
-
-    private final Logger logger;
-
-    public RenderQueueImpl(Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    public void push(RenderCommand command)
-    {
-        assert command != null;
-        queue.push(command);
-    }
-
-    public void run(MarkupWriter writer)
-    {
-        RenderCommand command = null;
-
-        boolean traceEnabled = logger.isTraceEnabled(TapestryMarkers.RENDER_COMMANDS);
-
-        long startNanos = System.nanoTime();
-        int commandCount = 0;
-        int maxDepth = 0;
-
-        // Seems to make sense to use one try/finally around the whole processInbound, rather than
-        // around each call to render() since the end result (in a failure scenario) is the same.
-
-        try
-        {
-            while (!queue.isEmpty())
-            {
-                maxDepth = Math.max(maxDepth, queue.getDepth());
-
-                command = queue.pop();
-
-                commandCount++;
-
-                if (traceEnabled) logger.trace(TapestryMarkers.RENDER_COMMANDS, "Executing: {}", command);
-
-                command.render(writer, this);
-            }
-        }
-        catch (RuntimeException ex)
-        {
-            // This will likely leave the page in a dirty state, and it will not go back into the
-            // page pool.
-
-            String message = ServicesMessages.renderQueueError(command, ex);
-
-            logger.error(message, ex);
-
-            throw new RenderQueueException(message, renderingComponents.getSnapshot(), ex);
-        }
-
-        long endNanos = System.nanoTime();
-
-        long elapsedNanos = endNanos - startNanos;
-        double elapsedSeconds = ((double) elapsedNanos) / 1000000000d;
-
-        logger.debug(TapestryMarkers.RENDER_COMMANDS,
-                     String.format("Executed %,d rendering commands (max queue depth: %,d) in %.3f seconds",
-                                   commandCount,
-                                   maxDepth,
-                                   elapsedSeconds));
-    }
-
-    public void startComponent(ComponentResources resources)
-    {
-        assert resources != null;
-        renderingComponents.push(resources);
-    }
-
-    public void endComponent()
-    {
-        renderingComponents.pop();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java
deleted file mode 100644
index 43e03b3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RenderSupportImpl.java
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.javascript.StylesheetOptions;
-
-public class RenderSupportImpl implements RenderSupport
-{
-    private final SymbolSource symbolSource;
-
-    private final AssetSource assetSource;
-
-    private final JavaScriptSupport javascriptSupport;
-
-    // As of 5.2.1, RenderSupportImpl doesn't have any internal mutable state and could be converted
-    // to a service (using the service proxy to the JSS)
-    // instead of an Environmental. But we'll just delete it in 5.3.
-
-    /**
-     * @param symbolSource
-     *            Used to expand symbols (in {@linkplain #addClasspathScriptLink(String...)}
-     * @param assetSource
-     *            Used to convert classpath scripts to {@link org.apache.tapestry5.Asset}s
-     * @param javascriptSupport
-     *            Used to add JavaScript libraries and blocks of initialization JavaScript to the rendered page
-     */
-    public RenderSupportImpl(SymbolSource symbolSource, AssetSource assetSource, JavaScriptSupport javascriptSupport)
-    {
-        this.symbolSource = symbolSource;
-        this.assetSource = assetSource;
-        this.javascriptSupport = javascriptSupport;
-    }
-
-    public String allocateClientId(String id)
-    {
-        return javascriptSupport.allocateClientId(id);
-    }
-
-    public String allocateClientId(ComponentResources resources)
-    {
-        return javascriptSupport.allocateClientId(resources);
-    }
-
-    public void addScriptLink(Asset... scriptAssets)
-    {
-        for (Asset asset : scriptAssets)
-        {
-            assert asset != null;
-
-            javascriptSupport.importJavaScriptLibrary(asset);
-        }
-    }
-
-    public void addScriptLink(String... scriptURLs)
-    {
-        for (String url : scriptURLs)
-            javascriptSupport.importJavaScriptLibrary(url);
-    }
-
-    public void addClasspathScriptLink(String... classpaths)
-    {
-        for (String path : classpaths)
-            addScriptLinkFromClasspath(path);
-    }
-
-    private void addScriptLinkFromClasspath(String path)
-    {
-        String expanded = symbolSource.expandSymbols(path);
-
-        Asset asset = assetSource.getAsset(null, expanded, null);
-
-        addScriptLink(asset);
-    }
-
-    public void addScript(String script)
-    {
-        javascriptSupport.addScript(script);
-    }
-
-    public void addScript(String format, Object... arguments)
-    {
-        javascriptSupport.addScript(format, arguments);
-    }
-
-    public void addInit(String functionName, JSONArray parameterList)
-    {
-        addInitFunctionInvocation(functionName, parameterList);
-    }
-
-    public void addInit(String functionName, JSONObject parameter)
-    {
-        javascriptSupport.addInitializerCall(functionName, parameter);
-    }
-
-    public void addInit(String functionName, String... parameters)
-    {
-        JSONArray array = new JSONArray();
-
-        for (String parameter : parameters)
-        {
-            array.put(parameter);
-        }
-
-        addInit(functionName, array);
-    }
-
-    public void autofocus(FieldFocusPriority priority, String fieldId)
-    {
-        javascriptSupport.autofocus(priority, fieldId);
-    }
-
-    /**
-     * For the few existing places that use the old variations of addInit(), passing a list of
-     * strings or a JSONArray, the end result is a bit inefficient. We end up generating lots
-     * of calls to Tapestry.init, with no attempt to aggregate them. Most of the time, the init
-     * occurs with a JSONObject (the "spec") and is handled by {@link JavaScriptSupport}.
-     */
-    private void addInitFunctionInvocation(String functionName, Object parameters)
-    {
-        assert InternalUtils.isNonBlank(functionName);
-        assert parameters != null;
-
-        JSONArray list = new JSONArray().put(parameters);
-        JSONObject wrapper = new JSONObject().put(functionName, list);
-
-        addScript("Tapestry.init(%s);", wrapper);
-    }
-
-    public void addStylesheetLink(Asset stylesheet, String media)
-    {
-        javascriptSupport.importStylesheet(new StylesheetLink(stylesheet, new StylesheetOptions(media)));
-    }
-
-    public void addStylesheetLink(String stylesheetURL, String media)
-    {
-        javascriptSupport.importStylesheet(new StylesheetLink(stylesheetURL, new StylesheetOptions(media)));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestConstants.java
deleted file mode 100644
index 75a2292..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestConstants.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.corelib.components.FormInjector;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-
-/**
- * Constants used when processing requests from the client web browser.
- */
-public final class RequestConstants
-{
-
-    /**
-     * Request path prefix that identifies an internal (on the classpath) asset.
-     */
-    public static final String ASSET_PATH_PREFIX = "/assets/";
-
-    /**
-     * Virtual folder name for assets that are actually stored in the context, but are exposed (much like classpath
-     * assets) to gain far-future expires headers and automatic content compression.
-     * 
-     * @since 5.1.0.0
-     */
-    public static final String CONTEXT_FOLDER = "ctx";
-
-    /**
-     * Folder for combined {@link JavaScriptStack} JavaScript files. The path consists of the locale (as a folder) and
-     * the name
-     * of the stack (suffixed with ".js").
-     * 
-     * @since 5.2.0
-     */
-    public static final String STACK_FOLDER = "stack";
-
-    /**
-     * Name of parameter, in an Ajax update, that identifies the client-side id of the {@link Form} being extended. Used
-     * with {@link Zone}, {@link FormInjector} and other similar components that may be contained within a form.
-     * 
-     * @since 5.2.0
-     */
-    public static final String FORM_CLIENTID_PARAMETER = "t:formid";
-
-    /**
-     * The server-side part of {@link #FORM_CLIENTID_PARAMETER} identifying the server-side component id.
-     * 
-     * @since 5.2.0
-     */
-    public static final String FORM_COMPONENTID_PARAMETER = "t:formcomponentid";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestEncodingInitializer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestEncodingInitializer.java
deleted file mode 100644
index f53d996..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestEncodingInitializer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Determines the reuest encoding for the given page and applies that to the request, so that parameters may be properly
- * decoded.
- */
-public interface RequestEncodingInitializer
-{
-    /**
-     * Initializes the request encoding to match the encoding defined for the page.
-     *
-     * @param pageName logical name of the page
-     */
-    void initializeRequestEncoding(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
deleted file mode 100644
index 4346eb1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestErrorFilter.java
+++ /dev/null
@@ -1,95 +0,0 @@
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.*;
-
-import java.io.IOException;
-
-/**
- * Filter for the {@link org.apache.tapestry5.services.RequestHandler} pipeline used to intercept and report
- * exceptions.
- */
-public class RequestErrorFilter implements RequestFilter
-{
-    private final InternalRequestGlobals internalRequestGlobals;
-    private final RequestExceptionHandler exceptionHandler;
-
-    public RequestErrorFilter(InternalRequestGlobals internalRequestGlobals, RequestExceptionHandler exceptionHandler)
-    {
-        this.internalRequestGlobals = internalRequestGlobals;
-        this.exceptionHandler = exceptionHandler;
-    }
-
-    public boolean service(Request request, Response response, RequestHandler handler) throws IOException
-    {
-        try
-        {
-            return handler.service(request, response);
-        }
-        catch (IOException ex)
-        {
-            // Pass it through.
-            throw ex;
-        }
-        catch (Throwable ex)
-        {
-            // Most of the time, we've got exception linked up the kazoo ... but when ClassLoaders
-            // get involved, things go screwy.  Exceptions when transforming classes can cause
-            // a NoClassDefFoundError with no cause; here we're trying to link the cause back in.
-            // TAPESTRY-2078
-
-            Throwable exceptionToReport = attachNewCause(ex, internalRequestGlobals.getClassLoaderException());
-
-            exceptionHandler.handleRequestException(exceptionToReport);
-
-            // We assume a reponse has been sent and there's no need to handle the request
-            // further.
-
-            return true;
-        }
-    }
-
-    private Throwable attachNewCause(Throwable exception, Throwable underlyingCause)
-    {
-        if (underlyingCause == null) return exception;
-
-        Throwable current = exception;
-
-        while (current != null)
-        {
-
-            if (current == underlyingCause) return exception;
-
-            Throwable cause = current.getCause();
-
-            // Often, exceptions report themselves as their own cause.
-
-            if (current == cause) break;
-
-            if (cause == null)
-            {
-
-                try
-                {
-                    current.initCause(underlyingCause);
-
-                    return exception;
-                }
-                catch (IllegalStateException ex)
-                {
-                    // TAPESTRY-2284: sometimes you just can't init the cause, and there's no way to
-                    // find out without trying.
-
-                }
-            }
-
-            // Otherwise, continue working down the chain until we find a place where we can attach
-
-            current = cause;
-        }
-
-        // Found no place to report the exeption, so report the underlying cause (and lose out
-        // on all the other context).
-
-        return underlyingCause;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestGlobalsImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestGlobalsImpl.java
deleted file mode 100644
index bdea69e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestGlobalsImpl.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestGlobals;
-import org.apache.tapestry5.services.Response;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Dumb data holder for per-request data.
- */
-@Scope(ScopeConstants.PERTHREAD)
-public class RequestGlobalsImpl implements RequestGlobals
-{
-    private HttpServletRequest servletRequest;
-
-    private HttpServletResponse servletResponse;
-
-    private Request request;
-
-    private Response response;
-
-    private String activePageName;
-
-    public void storeServletRequestResponse(HttpServletRequest request, HttpServletResponse response)
-    {
-        servletRequest = request;
-        servletResponse = response;
-    }
-
-    public HttpServletRequest getHTTPServletRequest()
-    {
-        return servletRequest;
-    }
-
-    public HttpServletResponse getHTTPServletResponse()
-    {
-        return servletResponse;
-    }
-
-    public void storeRequestResponse(Request request, Response response)
-    {
-        this.request = request;
-        this.response = response;
-    }
-
-    public Request getRequest()
-    {
-        return request;
-    }
-
-    public Response getResponse()
-    {
-        return response;
-    }
-
-    public String getActivePageName()
-    {
-        return activePageName;
-    }
-
-    public void storeActivePageName(String pageName)
-    {
-        this.activePageName = pageName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestImpl.java
deleted file mode 100644
index cb76fc0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestImpl.java
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import java.io.UnsupportedEncodingException;
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Basic implementation of {@link org.apache.tapestry5.services.Request} that wraps around an
- * {@link javax.servlet.http.HttpServletRequest}.
- */
-public class RequestImpl implements Request
-{
-    static final String REQUESTED_WITH_HEADER = "X-Requested-With";
-
-    static final String XML_HTTP_REQUEST = "XMLHttpRequest";
-
-    private final HttpServletRequest request;
-
-    private final String requestEncoding;
-
-    private final SessionPersistedObjectAnalyzer analyzer;
-
-    private boolean encodingSet;
-
-    private Session session;
-
-    public RequestImpl(HttpServletRequest request, String requestEncoding, SessionPersistedObjectAnalyzer analyzer)
-    {
-        this.request = request;
-        this.requestEncoding = requestEncoding;
-        this.analyzer = analyzer;
-    }
-
-    public List<String> getParameterNames()
-    {
-        setupEncoding();
-
-        return InternalUtils.toList(request.getParameterNames());
-    }
-
-    public List<String> getHeaderNames()
-    {
-        return InternalUtils.toList(request.getHeaderNames());
-    }
-
-    public String getParameter(String name)
-    {
-        setupEncoding();
-
-        return request.getParameter(name);
-    }
-
-    public String[] getParameters(String name)
-    {
-        setupEncoding();
-
-        return request.getParameterValues(name);
-    }
-
-    public String getHeader(String name)
-    {
-        return request.getHeader(name);
-    }
-
-    public String getPath()
-    {
-        String pathInfo = request.getPathInfo();
-
-        if (pathInfo == null)
-            return request.getServletPath();
-
-        // Websphere 6.1 is a bit wonky (see TAPESTRY-1713), and tends to return the empty string
-        // for the servlet path, and return the true path in pathInfo.
-
-        return pathInfo.length() == 0 ? "/" : pathInfo;
-    }
-
-    public String getContextPath()
-    {
-        return request.getContextPath();
-    }
-
-    public Session getSession(boolean create)
-    {
-        if (session == null)
-        {
-            HttpSession hsession = request.getSession(create);
-
-            if (hsession != null)
-            {
-                session = new SessionImpl(hsession, analyzer);
-            }
-        }
-
-        if (!create && session != null && session.isInvalidated())
-            return null;
-
-        return session;
-    }
-
-    public Locale getLocale()
-    {
-        return request.getLocale();
-    }
-
-    public long getDateHeader(String name)
-    {
-        return request.getDateHeader(name);
-    }
-
-    private void setupEncoding()
-    {
-        if (encodingSet)
-            return;
-
-        try
-        {
-            request.setCharacterEncoding(requestEncoding);
-        }
-        catch (UnsupportedEncodingException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        encodingSet = true;
-    }
-
-    public boolean isXHR()
-    {
-        return XML_HTTP_REQUEST.equals(request.getHeader(REQUESTED_WITH_HEADER));
-    }
-
-    public boolean isSecure()
-    {
-        return request.isSecure();
-    }
-
-    public boolean isRequestedSessionIdValid()
-    {
-        return request.isRequestedSessionIdValid();
-    }
-
-    public Object getAttribute(String name)
-    {
-        return request.getAttribute(name);
-    }
-
-    public void setAttribute(String name, Object value)
-    {
-        request.setAttribute(name, value);
-    }
-
-    public String getMethod()
-    {
-        return request.getMethod();
-    }
-
-    public String getServerName()
-    {
-        return request.getServerName();
-    }
-
-    public int getLocalPort()
-    {
-        return request.getLocalPort();
-    }
-
-    /** @since 5.2.5 */
-    public int getServerPort()
-    {
-        return request.getServerPort();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCache.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCache.java
deleted file mode 100644
index 76e27f7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCache.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-
-/**
- * Per-thread service that caches page instances for the duration of the request, and is also responsible for tracking
- * the active page (the page which will ultimately render the response).
- * <p/>
- * Since {@link org.apache.tapestry5.internal.structure.Page} is internal, most user-code should use the
- * {@link org.apache.tapestry5.services.ComponentSource} service instead.
- * <p>
- * Starting in 5.2, page instances are shared (with externalized mutable state), not pooled, but the cache is still
- * useful for managing the page's {@linkplain PageLifecycleListener lifecycle}. There are now two different
- * implementation classes for this single service, selected via {@link SymbolConstants#PAGE_POOL_ENABLED}.
- */
-public interface RequestPageCache
-{
-    /**
-     * Gets the page via its page name, in the current locale. The logical page name is resolved to a class name, which
-     * is used to obtain the page (from the page pool). Note that under certain circumstances, a page may have multiple
-     * names (even beyond simple case-insensitivity), and RequestPageCache caches correctly.
-     * 
-     * @param pageName
-     *            the name of the page to retrieve (this is the logical page name, not the fully qualified class
-     *            name)
-     * @return a page instance reserved for this request
-     * @throws IllegalArgumentException
-     *             if the name can not be resolved to a page instance
-     */
-    Page get(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java
deleted file mode 100644
index 742a1c6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestPageCacheImpl.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.apache.tapestry5.services.ComponentClassResolver;
-
-/**
- * This is the original implementation, which is built around the {@link PagePool}.
- */
-public class RequestPageCacheImpl implements RequestPageCache, ThreadCleanupListener
-{
-    private final PagePool pagePool;
-
-    private final ComponentClassResolver resolver;
-    /**
-     * Keyed on canonical page name (case insensitive).
-     */
-    private final Map<String, Page> cache = CollectionFactory.newCaseInsensitiveMap();
-
-    public RequestPageCacheImpl(PagePool pagePool, ComponentClassResolver resolver)
-    {
-        this.pagePool = pagePool;
-        this.resolver = resolver;
-    }
-
-    public Page get(String pageName)
-    {
-        assert pageName != null;
-
-        String canonicalName = resolver.canonicalizePageName(pageName);
-
-        Page page = cache.get(canonicalName);
-
-        if (page == null)
-        {
-            page = pagePool.checkout(canonicalName);
-
-            try
-            {
-                page.attached();
-            }
-            catch (RuntimeException ex)
-            {
-                pagePool.discard(page);
-
-                throw ex;
-            }
-
-            cache.put(canonicalName, page);
-        }
-
-        return page;
-    }
-
-    /**
-     * At the end of the request, when the thread cleanup event occurs, release any pages attached to the request back
-     * to the page pool.
-     */
-    public void threadDidCleanup()
-    {
-        for (Page p : cache.values())
-            pagePool.release(p);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManager.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManager.java
deleted file mode 100644
index 1acfa9c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManager.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-
-/**
- * Used to manage the relationship between the security of a request and the security of a page. By secure, we mean
- * whether a request uses HTTPS and whether a page demands the use of HTTPS.
- * 
- * @see org.apache.tapestry5.services.Request#isSecure()
- */
-public interface RequestSecurityManager
-{
-    /**
-     * Checks the page to see if it is secure; if so, and the request is not secure, then a redirect to the page is
-     * generated and sent.
-     * 
-     * @param parameters
-     *            parameters for the current request
-     * @return true if a redirect was sent, false if normal processing should continue
-     * @throws IOException
-     */
-    boolean checkForInsecurePageRenderRequest(PageRenderRequestParameters parameters) throws IOException;
-
-    /**
-     * Checks the target page of the component event request to see if it is secure; if so, and the
-     * request is not secure, then a redirect to the page is generated and sent, preserving the
-     * original component event request.
-     * 
-     * @param parameters
-     *            parameters for the current request
-     * @return true if a redirect was sent, false if normal processing should continue
-     * @throws IOException
-     * @since 5.2.0.0
-     */
-    boolean checkForInsecureComponentEventRequest(ComponentEventRequestParameters parameters) throws IOException;
-
-    /**
-     * Determines if the page security does not match the request's security.
-     * 
-     * @param pageName
-     *            for the security check
-     * @return SECURE or INSECURE if a change in security is required, or UNSPECIFIED if the request security matches
-     *         the page's security level
-     */
-    LinkSecurity checkPageSecurity(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
deleted file mode 100644
index f439a48..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImpl.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MetaDataConstants;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.MetaDataLocator;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-
-public class RequestSecurityManagerImpl implements RequestSecurityManager
-{
-    private final Request request;
-
-    private final Response response;
-
-    private final MetaDataLocator locator;
-
-    private final boolean securityEnabled;
-
-    private final ComponentEventLinkEncoder componentEventLinkEncoder;
-
-    public RequestSecurityManagerImpl(Request request, Response response,
-            ComponentEventLinkEncoder componentEventLinkEncoder, MetaDataLocator locator, @Symbol(SymbolConstants.SECURE_ENABLED)
-            boolean securityEnabled)
-    {
-        this.request = request;
-        this.response = response;
-        this.componentEventLinkEncoder = componentEventLinkEncoder;
-        this.locator = locator;
-        this.securityEnabled = securityEnabled;
-    }
-
-    public boolean checkForInsecureComponentEventRequest(ComponentEventRequestParameters parameters) throws IOException
-    {
-        if (!needsRedirect(parameters.getActivePageName()))
-            return false;
-
-        // Page is secure but request is not, so redirect.
-        // We can safely ignore the forForm parameter since secure form requests are always done from
-        // an already secured page
-
-        Link link = componentEventLinkEncoder.createComponentEventLink(parameters, false);
-
-        response.sendRedirect(link);
-
-        return true;
-    }
-
-    public boolean checkForInsecurePageRenderRequest(PageRenderRequestParameters parameters) throws IOException
-    {
-        if (!needsRedirect(parameters.getLogicalPageName()))
-            return false;
-
-        // Page is secure but request is not, so redirect.
-
-        Link link = componentEventLinkEncoder.createPageRenderLink(parameters);
-
-        response.sendRedirect(link);
-
-        return true;
-    }
-
-    private boolean needsRedirect(String pageName)
-    {
-        if (!securityEnabled)
-            return false;
-
-        // We don't (at this time) redirect from secure to insecure, just from insecure to secure.
-
-        if (request.isSecure())
-            return false;
-
-        if (!isSecure(pageName))
-            return false;
-
-        return true;
-    }
-
-    private boolean isSecure(String pageName)
-    {
-        return locator.findMeta(MetaDataConstants.SECURE_PAGE, pageName, Boolean.class);
-    }
-
-    public LinkSecurity checkPageSecurity(String pageName)
-    {
-        if (!securityEnabled)
-            return LinkSecurity.INSECURE;
-
-        boolean securePage = isSecure(pageName);
-
-        if (request.isSecure() == securePage)
-            return securePage ? LinkSecurity.SECURE : LinkSecurity.INSECURE;
-
-        // Return a value that will, ultimately, force an absolute URL.
-
-        return securePage ? LinkSecurity.FORCE_SECURE : LinkSecurity.FORCE_INSECURE;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceCache.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceCache.java
deleted file mode 100644
index 85849a5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceCache.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.ResourceDigestGenerator;
-
-/**
- * Caches information about resources on the classpath. In addition, acts as an invalidation hub for any resources for
- * which information is obtained (when any of the resources are changed, invalidation listeners are notified so they can
- * clear their caches).
- */
-public interface ResourceCache extends InvalidationEventHub
-{
-    /**
-     * Returns true if the path requires that the client URL for the resource include a digest to validate that the
-     * client is authorized to access the resource.
-     *
-     * @param resource
-     * @return true if digest is required for the resource
-     * @see ResourceDigestGenerator#requiresDigest(String)
-     */
-    boolean requiresDigest(Resource resource);
-
-    /**
-     * Returns the contents of the resource
-     *
-     * @param resource
-     * @return access to compressed and uncompressed streams
-     * @since 5.1.0.0
-     */
-    StreamableResource getStreamableResource(Resource resource);
-
-    /**
-     * Returns the digest for the given path.
-     *
-     * @param resource
-     * @return the digest, or null if the resource does not exist
-     */
-    String getDigest(Resource resource);
-
-    /**
-     * Returns the time modified for the resource.
-     *
-     * @param resource
-     * @return the date time modified for the path, or a negative value if the resource does not exist
-     */
-    long getTimeModified(Resource resource);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceCacheImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceCacheImpl.java
deleted file mode 100644
index 4ecb881..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceCacheImpl.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.event.InvalidationEventHubImpl;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.services.ResourceDigestGenerator;
-import org.apache.tapestry5.services.UpdateListener;
-
-import java.net.URL;
-import java.util.Map;
-
-public class ResourceCacheImpl extends InvalidationEventHubImpl implements ResourceCache,
-        UpdateListener
-{
-    private final URLChangeTracker tracker;
-
-    private final ResourceDigestGenerator digestGenerator;
-
-    private final Map<Resource, Cached> cache = CollectionFactory.newConcurrentMap();
-
-    final static long MISSING_RESOURCE_TIME_MODIFIED = -1L;
-
-    private class Cached
-    {
-        final boolean requiresDigest;
-
-        final String digest;
-
-        final long timeModified;
-
-        final StreamableResource streamable;
-
-        Cached(Resource resource)
-        {
-            requiresDigest = digestGenerator.requiresDigest(resource.getPath());
-
-            URL url = resource.toURL();
-
-            // The url may be null when a request for a protected asset arrives, because the
-            // Resource initially is for the file with the digest incorporated into the path, which
-            // means
-            // no underlying file exists. Subsequently, we'll strip out the digest and resolve
-            // to an actual resource.
-
-            digest = (requiresDigest && url != null) ? digestGenerator.generateDigest(url)
-                                                     : null;
-
-            timeModified = url != null ? tracker.add(url) : MISSING_RESOURCE_TIME_MODIFIED;
-
-            streamable = url == null ? null : new StreamableResourceImpl(url, timeModified);
-        }
-    }
-
-    public ResourceCacheImpl(final ResourceDigestGenerator digestGenerator, ClasspathURLConverter classpathURLConverter)
-    {
-        this.digestGenerator = digestGenerator;
-        tracker = new URLChangeTracker(classpathURLConverter,true);
-    }
-
-    public void checkForUpdates()
-    {
-        if (tracker.containsChanges())
-        {
-            cache.clear();
-            tracker.clear();
-
-            fireInvalidationEvent();
-        }
-    }
-
-    private Cached get(Resource resource)
-    {
-        Cached result = cache.get(resource);
-
-        if (result == null)
-        {
-            result = new Cached(resource);
-            cache.put(resource, result);
-        }
-
-        return result;
-    }
-
-    public String getDigest(Resource resource)
-    {
-        return get(resource).digest;
-    }
-
-    public long getTimeModified(Resource resource)
-    {
-        return get(resource).timeModified;
-    }
-
-    public boolean requiresDigest(Resource resource)
-    {
-        return get(resource).requiresDigest;
-    }
-
-    public StreamableResource getStreamableResource(Resource resource)
-    {
-        return get(resource).streamable;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestGeneratorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestGeneratorImpl.java
deleted file mode 100644
index 36e6907..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceDigestGeneratorImpl.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.commons.codec.binary.Hex;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ResourceDigestGenerator;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.security.MessageDigest;
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Implementation of {@link ResourceDigestGenerator} that generates MD5 digests.
- */
-public class ResourceDigestGeneratorImpl implements ResourceDigestGenerator
-{
-    private static final int BUFFER_SIZE = 5000;
-
-    private final Set<String> digestExtensions;
-
-    public ResourceDigestGeneratorImpl(Collection<String> configuration)
-    {
-        digestExtensions = CollectionFactory.newSet(configuration);
-    }
-
-    public String generateDigest(URL url)
-    {
-        InputStream stream = null;
-
-        try
-        {
-            MessageDigest digest = MessageDigest.getInstance("MD5");
-
-            stream = new BufferedInputStream(url.openStream());
-
-            digestStream(digest, stream);
-
-            stream.close();
-            stream = null;
-
-            byte[] bytes = digest.digest();
-            char[] encoded = Hex.encodeHex(bytes);
-
-            return new String(encoded);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-        finally
-        {
-            InternalUtils.close(stream);
-        }
-    }
-
-    private void digestStream(MessageDigest digest, InputStream stream) throws IOException
-    {
-        byte[] buffer = new byte[BUFFER_SIZE];
-
-        while (true)
-        {
-            int length = stream.read(buffer);
-
-            if (length < 0) return;
-
-            digest.update(buffer, 0, length);
-        }
-    }
-
-    /**
-     * Current implementation is based on the path extension, and a configured list of extensions.
-     */
-    public boolean requiresDigest(String path)
-    {
-        int dotx = path.lastIndexOf('.');
-        String extension = path.substring(dotx + 1).toLowerCase();
-
-        return digestExtensions.contains(extension);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java
deleted file mode 100644
index 8828321..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamer.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Responsible for streaming the contents of a resource to the client. The {@link org.apache.tapestry5.ioc.Resource} to
- * stream is almost always a {@link org.apache.tapestry5.ioc.internal.util.ClasspathResource}.
- * <p/>
- * The service's configuration is used to map file extensions to content types. Note: this only works for simple
- * extensions (i.e., "jpg") not for complex extensions (i.e., "tar.gz").
- * 
- * @since 5.1.0.0
- */
-@UsesMappedConfiguration(String.class)
-public interface ResourceStreamer
-{
-    /**
-     * Streams the content of the resource to the client (or sends
-     * an alternative response such as {@link HttpServletResponse#SC_NOT_MODIFIED}).
-     */
-    void streamResource(Resource resource) throws IOException;
-
-    /**
-     * Analyzes the resource to determine what its content type is, possibly using the service's configuration.
-     * 
-     * @param resource
-     *            to analyze
-     * @return content type
-     * @throws IOException
-     */
-    String getContentType(Resource resource) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
deleted file mode 100644
index 9df49f7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResourceStreamerImpl.java
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Context;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletResponse;
-
-public class ResourceStreamerImpl implements ResourceStreamer
-{
-    static final String IF_MODIFIED_SINCE_HEADER = "If-Modified-Since";
-
-    private final ResourceCache resourceCache;
-
-    private final Request request;
-
-    private final Response response;
-
-    private final Context context;
-
-    private final ResponseCompressionAnalyzer analyzer;
-
-    private final Map<String, String> configuration;
-
-    private final int compressionCutoff;
-
-    private final boolean productionMode;
-
-    public ResourceStreamerImpl(Request request,
-
-    Response response,
-
-    Context context,
-
-    ResourceCache resourceCache,
-
-    Map<String, String> configuration,
-
-    ResponseCompressionAnalyzer analyzer,
-
-    @Symbol(SymbolConstants.MIN_GZIP_SIZE)
-    int compressionCutoff,
-
-    @Symbol(SymbolConstants.PRODUCTION_MODE)
-    boolean productionMode)
-    {
-        this.request = request;
-        this.response = response;
-        this.context = context;
-        this.resourceCache = resourceCache;
-        this.configuration = configuration;
-        this.analyzer = analyzer;
-        this.compressionCutoff = compressionCutoff;
-        this.productionMode = productionMode;
-    }
-
-    public void streamResource(Resource resource) throws IOException
-    {
-        if (!resource.exists())
-        {
-            response.sendError(HttpServletResponse.SC_NOT_FOUND, ServicesMessages.assetDoesNotExist(resource));
-            return;
-        }
-
-        long ifModifiedSince = 0;
-
-        try
-        {
-            ifModifiedSince = request.getDateHeader(IF_MODIFIED_SINCE_HEADER);
-        }
-        catch (IllegalArgumentException ex)
-        {
-            // Simulate the header being missing if it is poorly formatted.
-
-            ifModifiedSince = -1;
-        }
-
-        if (ifModifiedSince > 0)
-        {
-            long modified = resourceCache.getTimeModified(resource);
-
-            if (ifModifiedSince >= modified)
-            {
-                response.sendError(HttpServletResponse.SC_NOT_MODIFIED, "");
-                return;
-            }
-        }
-
-        // Prevent the upstream code from compressing when we don't want to.
-
-        response.disableCompression();
-        
-        StreamableResource streamble = resourceCache.getStreamableResource(resource);
-
-        long lastModified = streamble.getLastModified();
-
-        response.setDateHeader("Last-Modified", lastModified);
-
-        if (productionMode)
-            response.setDateHeader("Expires", lastModified + InternalConstants.TEN_YEARS);
-
-        String contentType = identifyContentType(resource, streamble);
-
-        boolean compress = analyzer.isGZipSupported() && streamble.getSize(false) >= compressionCutoff
-                && analyzer.isCompressable(contentType);
-
-        int contentLength = streamble.getSize(compress);
-
-        if (contentLength >= 0)
-            response.setContentLength(contentLength);
-
-        if (compress)
-            response.setHeader(InternalConstants.CONTENT_ENCODING_HEADER, InternalConstants.GZIP_CONTENT_ENCODING);
-
-        InputStream is = null;
-
-        try
-        {
-            is = streamble.getStream(compress);
-
-            OutputStream os = response.getOutputStream(contentType);
-
-            TapestryInternalUtils.copy(is, os);
-
-            is.close();
-            is = null;
-
-            os.close();
-        }
-        finally
-        {
-            InternalUtils.close(is);
-        }
-    }
-
-    public String getContentType(Resource resource) throws IOException
-    {
-        return identifyContentType(resource, resourceCache.getStreamableResource(resource));
-    }
-
-    private String identifyContentType(Resource resource, StreamableResource streamble) throws IOException
-    {
-        String contentType = streamble.getContentType();
-
-        if ("content/unknown".equals(contentType))
-            contentType = null;
-
-        if (contentType != null)
-            return contentType;
-
-        contentType = context.getMimeType(resource.getPath());
-
-        if (contentType != null)
-            return contentType;
-
-        String file = resource.getFile();
-        int dotx = file.lastIndexOf('.');
-
-        if (dotx > 0)
-        {
-            String extension = file.substring(dotx + 1);
-
-            contentType = configuration.get(extension);
-        }
-
-        return contentType != null ? contentType : "application/octet-stream";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java
deleted file mode 100644
index 8344923..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImpl.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-import org.apache.tapestry5.SymbolConstants;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Collection;
-import java.util.Map;
-
-public class ResponseCompressionAnalyzerImpl implements ResponseCompressionAnalyzer
-{
-    private final HttpServletRequest request;
-
-    private final Map<String, Boolean> notCompressable = CollectionFactory.newCaseInsensitiveMap();
-
-    private final boolean gzipCompressionEnabled;
-
-    public ResponseCompressionAnalyzerImpl(HttpServletRequest request, Collection<String> configuration,
-                                           @Symbol(SymbolConstants.GZIP_COMPRESSION_ENABLED)
-                                           boolean gzipCompressionEnabled)
-    {
-        this.request = request;
-        this.gzipCompressionEnabled = gzipCompressionEnabled;
-
-        for (String contentType : configuration)
-            notCompressable.put(contentType, true);
-    }
-
-    public boolean isGZipSupported()
-    {
-        if (!gzipCompressionEnabled) return false;
-
-        String supportedEncodings = request.getHeader("Accept-Encoding");
-
-        if (supportedEncodings == null) return false;
-
-        for (String encoding : TapestryInternalUtils.splitAtCommas(supportedEncodings))
-        {
-            if (encoding.equalsIgnoreCase("gzip"))
-                return true;
-        }
-
-        return false;
-    }
-
-    public boolean isCompressable(String contentType)
-    {
-        int x = contentType.indexOf(';');
-
-        String key = x < 0 ? contentType : contentType.substring(0, x);
-
-        return notCompressable.get(key) == null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java
deleted file mode 100644
index 3c21f2a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseImpl.java
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.BufferedWriter;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.io.Writer;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Response;
-
-/**
- * Implementation of {@link Response} that wraps around an underlying {@link HttpServletResponse}.
- */
-public class ResponseImpl implements Response
-{
-    private final HttpServletRequest request;
-
-    private final HttpServletResponse response;
-
-    public ResponseImpl(HttpServletRequest request, HttpServletResponse response)
-    {
-        assert request != null;
-        assert response != null;
-
-        this.request = request;
-        this.response = response;
-    }
-
-    public PrintWriter getPrintWriter(String contentType) throws IOException
-    {
-        assert InternalUtils.isNonBlank(contentType);
-        OutputStream os = getOutputStream(contentType);
-
-        Writer w = new OutputStreamWriter(os, response.getCharacterEncoding());
-
-        return new PrintWriter(new BufferedWriter(w));
-    }
-
-    public String encodeURL(String URL)
-    {
-        return response.encodeURL(URL);
-    }
-
-    public String encodeRedirectURL(String URL)
-    {
-        return response.encodeRedirectURL(URL);
-    }
-
-    public void sendRedirect(String URL) throws IOException
-    {
-        response.sendRedirect(URL);
-    }
-
-    public void sendRedirect(Link link) throws IOException
-    {
-        assert link != null;
-        String redirectURL = encodeRedirectURL(link.toRedirectURI());
-
-        sendRedirect(redirectURL);
-    }
-
-    public void setStatus(int sc)
-    {
-        response.setStatus(sc);
-    }
-
-    public OutputStream getOutputStream(String contentType) throws IOException
-    {
-        assert InternalUtils.isNonBlank(contentType);
-        response.setContentType(contentType);
-
-        return response.getOutputStream();
-    }
-
-    public void sendError(int sc, String message) throws IOException
-    {
-        response.sendError(sc, message);
-    }
-
-    public void setContentLength(int length)
-    {
-        response.setContentLength(length);
-    }
-
-    public void setDateHeader(String name, long date)
-    {
-        response.setDateHeader(name, date);
-    }
-
-    public void setHeader(String name, String value)
-    {
-        response.setHeader(name, value);
-    }
-
-    public void setIntHeader(String name, int value)
-    {
-        response.setIntHeader(name, value);
-    }
-
-    public boolean isCommitted()
-    {
-        return response.isCommitted();
-    }
-
-    public void disableCompression()
-    {
-        request.setAttribute(InternalConstants.SUPPRESS_COMPRESSION, true);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseRendererImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseRendererImpl.java
deleted file mode 100644
index a8952ca..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ResponseRendererImpl.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ResponseRenderer;
-
-public class ResponseRendererImpl implements ResponseRenderer
-{
-    private final RequestPageCache pageCache;
-
-    private final PageContentTypeAnalyzer pageContentAnalyzer;
-
-    private final PageResponseRenderer renderer;
-
-    public ResponseRendererImpl(RequestPageCache pageCache, PageContentTypeAnalyzer pageContentAnalyzer,
-            PageResponseRenderer renderer)
-    {
-        this.pageCache = pageCache;
-        this.pageContentAnalyzer = pageContentAnalyzer;
-        this.renderer = renderer;
-    }
-
-    public ContentType findContentType(Object component)
-    {
-        Component c = (Component) component;
-
-        String pageName = c.getComponentResources().getPageName();
-
-        Page page = pageCache.get(pageName);
-
-        return pageContentAnalyzer.findContentType(page);
-    }
-
-    public void renderPageMarkupResponse(String pageName) throws IOException
-    {
-        Page page = pageCache.get(pageName);
-
-        renderer.renderPageResponse(page);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RestoreDirtySessionObjects.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RestoreDirtySessionObjects.java
deleted file mode 100644
index 95902e8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RestoreDirtySessionObjects.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.events.EndOfRequestListener;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-/**
- * A listener that invokes {@link org.apache.tapestry5.services.Session#restoreDirtyObjects()}.
- */
-public class RestoreDirtySessionObjects implements EndOfRequestListener
-{
-    private final Request request;
-
-    public RestoreDirtySessionObjects(Request request)
-    {
-        this.request = request;
-    }
-
-    public void requestDidComplete()
-    {
-        Session session = request.getSession(false);
-
-        if (session != null)
-            session.restoreDirtyObjects();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
deleted file mode 100644
index ca2f104..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/RootPathDispatcher.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentRequestHandler;
-import org.apache.tapestry5.services.Dispatcher;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-
-/**
- * Recognizes a request for the application root (i.e., "/") and handles this the same as a render request for the
- * "Start" page. Support for the Start page is kept for legacy purposes, Index pages are the correct approach.
- */
-public class RootPathDispatcher implements Dispatcher
-{
-    private static final EventContext EMPTY_CONTEXT = new EmptyEventContext();
-
-    private final ComponentClassResolver componentClassResolver;
-
-    private final ComponentRequestHandler handler;
-
-    private final String startPageName;
-
-    private final PageRenderRequestParameters parameters;
-
-    public RootPathDispatcher(ComponentClassResolver componentClassResolver,
-
-    ComponentRequestHandler handler,
-
-    @Symbol(SymbolConstants.START_PAGE_NAME)
-    String startPageName)
-    {
-        this.componentClassResolver = componentClassResolver;
-        this.handler = handler;
-        this.startPageName = startPageName;
-
-        parameters = new PageRenderRequestParameters(this.startPageName, EMPTY_CONTEXT, false);
-    }
-
-    public boolean dispatch(Request request, final Response response) throws IOException
-    {
-        // Only match the root path
-
-        if (request.getPath().equals("/") && componentClassResolver.isPageName(startPageName))
-        {
-            handler.handlePageRender(parameters);
-
-            return true;
-        }
-
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java
deleted file mode 100644
index 974109e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SaxTemplateParser.java
+++ /dev/null
@@ -1,1118 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tapestry5.internal.parser.AttributeToken;
-import org.apache.tapestry5.internal.parser.BlockToken;
-import org.apache.tapestry5.internal.parser.BodyToken;
-import org.apache.tapestry5.internal.parser.CDATAToken;
-import org.apache.tapestry5.internal.parser.CommentToken;
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.internal.parser.ComponentTemplateImpl;
-import org.apache.tapestry5.internal.parser.DTDToken;
-import org.apache.tapestry5.internal.parser.DefineNamespacePrefixToken;
-import org.apache.tapestry5.internal.parser.EndElementToken;
-import org.apache.tapestry5.internal.parser.ExpansionToken;
-import org.apache.tapestry5.internal.parser.ExtensionPointToken;
-import org.apache.tapestry5.internal.parser.ParameterToken;
-import org.apache.tapestry5.internal.parser.StartComponentToken;
-import org.apache.tapestry5.internal.parser.StartElementToken;
-import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.parser.TextToken;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-/**
- * SAX-based template parser logic, taking a {@link Resource} to a Tapestry
- * template file and returning
- * a {@link ComponentTemplate}.
- * <p>
- * Earlier versions of this code used the StAX (streaming XML parser), but that
- * was really, really bad for Google App Engine. This version uses SAX under the
- * covers, but kind of replicates the important bits of the StAX API as
- * {@link XMLTokenStream}.
- * 
- * @since 5.2.0
- */
-@SuppressWarnings(
-{ "JavaDoc" })
-public class SaxTemplateParser
-{
-    private static final String MIXINS_ATTRIBUTE_NAME = "mixins";
-
-    private static final String TYPE_ATTRIBUTE_NAME = "type";
-
-    private static final String ID_ATTRIBUTE_NAME = "id";
-
-    public static final String XML_NAMESPACE_URI = "http://www.w3.org/XML/1998/namespace";
-
-    /**
-     * Used as the namespace URI for Tapestry templates.
-     */
-    public static final String TAPESTRY_SCHEMA_5_0_0 = "http://tapestry.apache.org/schema/tapestry_5_0_0.xsd";
-
-    /**
-     * Adds several new elements.
-     */
-    public static final String TAPESTRY_SCHEMA_5_1_0 = "http://tapestry.apache.org/schema/tapestry_5_1_0.xsd";
-
-    // Might want to change this from a Set to a map from URI to version number
-    // (if we hit a 3rd version of the namespace URI).
-    private static final Set<String> TAPESTRY_SCHEMA_URIS = CollectionFactory.newSet(
-            TAPESTRY_SCHEMA_5_0_0, TAPESTRY_SCHEMA_5_1_0);
-
-    /**
-     * Special namespace used to denote Block parameters to components, as a
-     * (preferred) alternative to the t:parameter
-     * element. The simple element name is the name of the parameter.
-     */
-    private static final String TAPESTRY_PARAMETERS_URI = "tapestry:parameter";
-
-    /**
-     * URI prefix used to identify a Tapestry library, the remainder of the URI
-     * becomes a prefix on the element name.
-     */
-    private static final String LIB_NAMESPACE_URI_PREFIX = "tapestry-library:";
-
-    /**
-     * Pattern used to parse the path portion of the library namespace URI. A
-     * series of simple identifiers with slashes
-     * allowed as seperators.
-     */
-
-    private static final Pattern LIBRARY_PATH_PATTERN = Pattern.compile("^[a-z]\\w*(/[a-z]\\w*)*$",
-            Pattern.CASE_INSENSITIVE);
-
-    private static final Pattern ID_PATTERN = Pattern.compile("^[a-z]\\w*$",
-            Pattern.CASE_INSENSITIVE);
-
-    /**
-     * Any amount of mixed simple whitespace (space, tab, form feed) mixed with
-     * at least one carriage return or line
-     * feed, followed by any amount of whitespace. Will be reduced to a single
-     * linefeed.
-     */
-    private static final Pattern REDUCE_LINEBREAKS_PATTERN = Pattern.compile(
-            "[ \\t\\f]*[\\r\\n]\\s*", Pattern.MULTILINE);
-
-    /**
-     * Used when compressing whitespace, matches any sequence of simple
-     * whitespace (space, tab, formfeed). Applied after
-     * REDUCE_LINEBREAKS_PATTERN.
-     */
-    private static final Pattern REDUCE_WHITESPACE_PATTERN = Pattern.compile("[ \\t\\f]+",
-            Pattern.MULTILINE);
-
-    // Note the use of the non-greedy modifier; this prevents the pattern from
-    // merging multiple
-    // expansions on the same text line into a single large
-    // but invalid expansion.
-
-    private static final Pattern EXPANSION_PATTERN = Pattern.compile("\\$\\{\\s*(.*?)\\s*}");
-
-    private static final Set<String> MUST_BE_ROOT = CollectionFactory.newSet("extend", "container");
-
-    private final Resource resource;
-
-    private final XMLTokenStream tokenStream;
-
-    private final StringBuilder textBuffer = new StringBuilder();
-
-    private final List<TemplateToken> tokens = CollectionFactory.newList();
-
-    // This starts pointing at tokens but occasionally shifts to a list inside
-    // the overrides Map.
-    private List<TemplateToken> tokenAccumulator = tokens;
-
-    /**
-     * Primarily used as a set of componentIds (to check for duplicates and
-     * conflicts).
-     */
-    private final Map<String, Location> componentIds = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Map from override id to a list of tokens; this actually works both for
-     * overrides defined by this template and
-     * overrides provided by this template.
-     */
-    private Map<String, List<TemplateToken>> overrides;
-
-    private boolean extension;
-
-    private Location textStartLocation;
-
-    private boolean active = true;
-
-    public SaxTemplateParser(Resource resource, Map<String, URL> publicIdToURL)
-    {
-        this.resource = resource;
-        this.tokenStream = new XMLTokenStream(resource, publicIdToURL);
-    }
-
-    public ComponentTemplate parse(boolean compressWhitespace)
-    {
-        try
-        {
-            tokenStream.parse();
-
-            TemplateParserState initialParserState = new TemplateParserState()
-                    .compressWhitespace(compressWhitespace);
-
-            root(initialParserState);
-
-            return new ComponentTemplateImpl(resource, tokens, componentIds, extension, overrides);
-        }
-        catch (Exception ex)
-        {
-            throw new TapestryException(String.format("Failure parsing template %s: %s", resource,
-                    InternalUtils.toMessage(ex)), tokenStream.getLocation(), ex);
-        }
-
-    }
-
-    void root(TemplateParserState state)
-    {
-        while (active && tokenStream.hasNext())
-        {
-            switch (tokenStream.next())
-            {
-                case DTD:
-
-                    dtd();
-
-                    break;
-
-                case START_ELEMENT:
-
-                    rootElement(state);
-
-                    break;
-
-                case END_DOCUMENT:
-                    // Ignore it.
-                    break;
-
-                default:
-                    textContent(state);
-            }
-        }
-    }
-
-    private void rootElement(TemplateParserState initialState)
-    {
-        TemplateParserState state = setupForElement(initialState);
-
-        String uri = tokenStream.getNamespaceURI();
-        String name = tokenStream.getLocalName();
-
-        if (TAPESTRY_SCHEMA_5_1_0.equals(uri))
-        {
-            if (name.equalsIgnoreCase("extend"))
-            {
-                extend(state);
-                return;
-            }
-        }
-
-        if (TAPESTRY_SCHEMA_URIS.contains(uri))
-        {
-            if (name.equalsIgnoreCase("container"))
-            {
-                container(state);
-                return;
-            }
-        }
-
-        element(state);
-    }
-
-    private void extend(TemplateParserState state)
-    {
-        extension = true;
-
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case START_ELEMENT:
-
-                    if (tokenStream.getNamespaceURI().equals(TAPESTRY_SCHEMA_5_1_0)
-                            && tokenStream.getLocalName().equalsIgnoreCase("replace"))
-                    {
-                        replace(state);
-                        break;
-                    }
-
-                    throw new RuntimeException("Child element of <extend> must be <replace>.");
-
-                case END_ELEMENT:
-
-                    return;
-
-                    // Ignore spaces and characters inside <extend>.
-
-                case COMMENT:
-                case SPACE:
-                    break;
-
-                // Other content (characters, etc.) are forbidden.
-
-                case CHARACTERS:
-                    if (InternalUtils.isBlank(tokenStream.getText()))
-                        break;
-
-                default:
-                    unexpectedEventType();
-            }
-        }
-    }
-
-    private void replace(TemplateParserState state)
-    {
-        String id = getRequiredIdAttribute();
-
-        addContentToOverride(setupForElement(state), id);
-    }
-
-    private void unexpectedEventType()
-    {
-        XMLTokenType eventType = tokenStream.getEventType();
-
-        throw new IllegalStateException(String.format("Unexpected XML parse event %s.", eventType
-                .name()));
-    }
-
-    private void dtd()
-    {
-        DTDData dtdInfo = tokenStream.getDTDInfo();
-
-        tokenAccumulator.add(new DTDToken(dtdInfo.getRootName(), dtdInfo.getPublicId(), dtdInfo
-                .getSystemId(), getLocation()));
-    }
-
-    private Location getLocation()
-    {
-        return tokenStream.getLocation();
-    }
-
-    /**
-     * Processes an element through to its matching end tag.
-     * <p/>
-     * An element can be:
-     * <p/>
-     * a Tapestry component via &lt;t:type&gt;
-     * <p/>
-     * a Tapestry component via t:type="type" and/or t:id="id"
-     * <p/>
-     * a Tapestry component via a library namespace
-     * <p/>
-     * A parameter element via &lt;t:parameter&gt;
-     * <p/>
-     * A parameter element via &lt;p:name&gt;
-     * <p/>
-     * A &lt;t:remove&gt; element (in the 5.1 schema)
-     * <p/>
-     * A &lt;t:content&gt; element (in the 5.1 schema)
-     * <p/>
-     * A &lt;t:block&gt; element
-     * <p/>
-     * The body &lt;t:body&gt;
-     * <p/>
-     * An ordinary element
-     */
-    void element(TemplateParserState initialState)
-    {
-        TemplateParserState state = setupForElement(initialState);
-
-        String uri = tokenStream.getNamespaceURI();
-        String name = tokenStream.getLocalName();
-
-        if (TAPESTRY_SCHEMA_5_1_0.equals(uri))
-        {
-
-            if (name.equalsIgnoreCase("remove"))
-            {
-                removeContent();
-
-                return;
-            }
-
-            if (name.equalsIgnoreCase("content"))
-            {
-                limitContent(state);
-
-                return;
-            }
-
-            if (name.equalsIgnoreCase("extension-point"))
-            {
-                extensionPoint(state);
-
-                return;
-            }
-
-            if (name.equalsIgnoreCase("replace")) { throw new RuntimeException(
-                    "The <replace> element may only appear directly within an extend element."); }
-
-            if (MUST_BE_ROOT.contains(name))
-                mustBeRoot(name);
-        }
-
-        if (TAPESTRY_SCHEMA_URIS.contains(uri))
-        {
-
-            if (name.equalsIgnoreCase("body"))
-            {
-                body();
-                return;
-            }
-
-            if (name.equalsIgnoreCase("container"))
-            {
-                mustBeRoot(name);
-            }
-
-            if (name.equalsIgnoreCase("block"))
-            {
-                block(state);
-                return;
-            }
-
-            if (name.equalsIgnoreCase("parameter"))
-            {
-                classicParameter(state);
-
-                return;
-            }
-
-            possibleTapestryComponent(state, null, tokenStream.getLocalName().replace('.', '/'));
-
-            return;
-        }
-
-        if (uri != null && uri.startsWith(LIB_NAMESPACE_URI_PREFIX))
-        {
-            libraryNamespaceComponent(state);
-
-            return;
-        }
-
-        if (TAPESTRY_PARAMETERS_URI.equals(uri))
-        {
-            parameterElement(state);
-
-            return;
-        }
-
-        // Just an ordinary element ... unless it has t:id or t:type
-
-        possibleTapestryComponent(state, tokenStream.getLocalName(), null);
-    }
-
-    /**
-     * Processes a body of an element including text and (recursively) nested
-     * elements. Adds an
-     * {@link org.apache.tapestry5.internal.parser.TokenType#END_ELEMENT} token
-     * before returning.
-     * 
-     * @param state
-     */
-    private void processBody(TemplateParserState state)
-    {
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case START_ELEMENT:
-
-                    // The recursive part: when we see a new element start.
-
-                    element(state);
-                    break;
-
-                case END_ELEMENT:
-
-                    // At the end of an element, we're done and can return.
-                    // This is the matching end element for the start element
-                    // that invoked this method.
-
-                    endElement(state);
-
-                    return;
-
-                default:
-                    textContent(state);
-            }
-        }
-    }
-
-    private TemplateParserState setupForElement(TemplateParserState initialState)
-    {
-        processTextBuffer(initialState);
-
-        return checkForXMLSpaceAttribute(initialState);
-    }
-
-    /**
-     * Handles an extension point, putting a RenderExtension token in position
-     * in the template.
-     * 
-     * @param state
-     */
-    private void extensionPoint(TemplateParserState state)
-    {
-        // An extension point adds a token that represents where the override
-        // (either the default
-        // provided in the parent template, or the true override from a child
-        // template) is positioned.
-
-        String id = getRequiredIdAttribute();
-
-        tokenAccumulator.add(new ExtensionPointToken(id, getLocation()));
-
-        addContentToOverride(state.insideComponent(false), id);
-    }
-
-    private String getRequiredIdAttribute()
-    {
-        String id = getSingleParameter("id");
-
-        if (InternalUtils.isBlank(id))
-            throw new RuntimeException(String.format("The <%s> element must have an id attribute.",
-                    tokenStream.getLocalName()));
-
-        return id;
-    }
-
-    private void addContentToOverride(TemplateParserState state, String id)
-
-    {
-        List<TemplateToken> savedTokenAccumulator = tokenAccumulator;
-
-        tokenAccumulator = CollectionFactory.newList();
-
-        // TODO: id should probably be unique; i.e., you either define an
-        // override or you
-        // provide an override, but you don't do both in the same template.
-
-        if (overrides == null)
-            overrides = CollectionFactory.newCaseInsensitiveMap();
-
-        overrides.put(id, tokenAccumulator);
-
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case START_ELEMENT:
-                    element(state);
-                    break;
-
-                case END_ELEMENT:
-
-                    processTextBuffer(state);
-
-                    // Restore everthing to how it was before the
-                    // extention-point was reached.
-
-                    tokenAccumulator = savedTokenAccumulator;
-                    return;
-
-                default:
-                    textContent(state);
-            }
-        }
-    }
-
-    private void mustBeRoot(String name)
-    {
-        throw new RuntimeException(String.format(
-                "Element <%s> is only valid as the root element of a template.", name));
-    }
-
-    /**
-     * Triggered by &lt;t:content&gt; element; limits template content to just
-     * what's inside.
-     */
-
-    private void limitContent(TemplateParserState state)
-    {
-        if (state.isCollectingContent())
-            throw new IllegalStateException(
-                    "The <content> element may not be nested within another <content> element.");
-
-        TemplateParserState newState = state.collectingContent().insideComponent(false);
-
-        // Clear out any tokens that precede the <t:content> element
-
-        tokens.clear();
-
-        // I'm not happy about this; you really shouldn't define overrides just
-        // to clear them out,
-        // but it is consistent. Perhaps this should be an error if overrides is
-        // non-empty.
-
-        overrides = null;
-
-        // Make sure that if the <t:content> appears inside a <t:replace> or
-        // <t:extension-point>, that
-        // it is still handled correctly.
-
-        tokenAccumulator = tokens;
-
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case START_ELEMENT:
-                    element(newState);
-                    break;
-
-                case END_ELEMENT:
-
-                    // The active flag is global, once we hit it, the entire
-                    // parse is aborted, leaving
-                    // tokens with just tokens defined inside <t:content>.
-
-                    active = false;
-
-                    break;
-
-                default:
-                    textContent(state);
-            }
-        }
-
-    }
-
-    private void removeContent()
-    {
-        int depth = 1;
-
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case START_ELEMENT:
-                    depth++;
-                    break;
-
-                // The matching end element.
-
-                case END_ELEMENT:
-                    depth--;
-
-                    if (depth == 0)
-                        return;
-
-                    break;
-
-                default:
-                    // Ignore anything else (text, comments, etc.)
-            }
-        }
-    }
-
-    private String nullForBlank(String input)
-    {
-        return InternalUtils.isBlank(input) ? null : input;
-    }
-
-    /**
-     * Added in release 5.1.
-     */
-    private void libraryNamespaceComponent(TemplateParserState state)
-    {
-        String uri = tokenStream.getNamespaceURI();
-
-        // The library path is encoded into the namespace URI.
-
-        String path = uri.substring(LIB_NAMESPACE_URI_PREFIX.length());
-
-        if (!LIBRARY_PATH_PATTERN.matcher(path).matches())
-            throw new RuntimeException(ServicesMessages.invalidPathForLibraryNamespace(uri));
-
-        possibleTapestryComponent(state, null, path + "/" + tokenStream.getLocalName());
-    }
-
-    /**
-     * @param elementName
-     * @param identifiedType
-     *            the type of the element, usually null, but may be the
-     *            component type derived from element
-     */
-    private void possibleTapestryComponent(TemplateParserState state, String elementName,
-            String identifiedType)
-    {
-        String id = null;
-        String type = identifiedType;
-        String mixins = null;
-
-        int count = tokenStream.getAttributeCount();
-
-        Location location = getLocation();
-
-        List<TemplateToken> attributeTokens = CollectionFactory.newList();
-
-        for (int i = 0; i < count; i++)
-        {
-            QName qname = tokenStream.getAttributeName(i);
-
-            if (isXMLSpaceAttribute(qname))
-                continue;
-
-            // The name will be blank for an xmlns: attribute
-
-            String localName = qname.getLocalPart();
-
-            if (InternalUtils.isBlank(localName))
-                continue;
-
-            String uri = qname.getNamespaceURI();
-
-            String value = tokenStream.getAttributeValue(i);
-
-            if (TAPESTRY_SCHEMA_URIS.contains(uri))
-            {
-                if (localName.equalsIgnoreCase(ID_ATTRIBUTE_NAME))
-                {
-                    id = nullForBlank(value);
-
-                    validateId(id, "invalid-component-id");
-
-                    continue;
-                }
-
-                if (type == null && localName.equalsIgnoreCase(TYPE_ATTRIBUTE_NAME))
-                {
-                    type = nullForBlank(value);
-                    continue;
-                }
-
-                if (localName.equalsIgnoreCase(MIXINS_ATTRIBUTE_NAME))
-                {
-                    mixins = nullForBlank(value);
-                    continue;
-                }
-
-                // Anything else is the name of a Tapestry component parameter
-                // that is simply
-                // not part of the template's doctype for the element being
-                // instrumented.
-            }
-
-            attributeTokens.add(new AttributeToken(uri, localName, value, location));
-        }
-
-        boolean isComponent = (id != null || type != null);
-
-        // If provided t:mixins but not t:id or t:type, then its not quite a
-        // component
-
-        if (mixins != null && !isComponent)
-            throw new TapestryException(ServicesMessages.mixinsInvalidWithoutIdOrType(elementName),
-                    location, null);
-
-        if (isComponent)
-        {
-            tokenAccumulator.add(new StartComponentToken(elementName, id, type, mixins, location));
-        }
-        else
-        {
-            tokenAccumulator.add(new StartElementToken(tokenStream.getNamespaceURI(), elementName,
-                    location));
-        }
-
-        addDefineNamespaceTokens();
-
-        tokenAccumulator.addAll(attributeTokens);
-
-        if (id != null)
-            componentIds.put(id, location);
-
-        processBody(state.insideComponent(isComponent));
-    }
-
-    private void addDefineNamespaceTokens()
-    {
-        for (int i = 0; i < tokenStream.getNamespaceCount(); i++)
-        {
-            String uri = tokenStream.getNamespaceURI(i);
-
-            // These URIs are strictly part of the server-side Tapestry template
-            // and are not ever sent to the client.
-
-            if (TAPESTRY_SCHEMA_URIS.contains(uri))
-                continue;
-
-            if (uri.equals(TAPESTRY_PARAMETERS_URI))
-                continue;
-
-            if (uri.startsWith(LIB_NAMESPACE_URI_PREFIX))
-                continue;
-
-            tokenAccumulator.add(new DefineNamespacePrefixToken(uri, tokenStream
-                    .getNamespacePrefix(i), getLocation()));
-        }
-    }
-
-    private TemplateParserState checkForXMLSpaceAttribute(TemplateParserState state)
-    {
-        for (int i = 0; i < tokenStream.getAttributeCount(); i++)
-        {
-            QName qName = tokenStream.getAttributeName(i);
-
-            if (isXMLSpaceAttribute(qName))
-            {
-                boolean compress = !"preserve".equals(tokenStream.getAttributeValue(i));
-
-                return state.compressWhitespace(compress);
-            }
-        }
-
-        return state;
-    }
-
-    /**
-     * Processes the text buffer and then adds an end element token.
-     */
-    private void endElement(TemplateParserState state)
-    {
-        processTextBuffer(state);
-
-        tokenAccumulator.add(new EndElementToken(getLocation()));
-    }
-
-    /**
-     * Handler for Tapestry 5.0's "classic" &lt;t:parameter&gt; element. This
-     * turns into a {@link org.apache.tapestry5.internal.parser.ParameterToken}
-     * and the body and end element are provided normally.
-     */
-    private void classicParameter(TemplateParserState state)
-    {
-        String parameterName = getSingleParameter("name");
-
-        if (InternalUtils.isBlank(parameterName))
-            throw new TapestryException(ServicesMessages.parameterElementNameRequired(),
-                    getLocation(), null);
-
-        ensureParameterWithinComponent(state);
-
-        tokenAccumulator.add(new ParameterToken(parameterName, getLocation()));
-
-        processBody(state.insideComponent(false));
-    }
-
-    private void ensureParameterWithinComponent(TemplateParserState state)
-    {
-        if (!state.isInsideComponent())
-            throw new RuntimeException(
-                    "Block parameters are only allowed directly within component elements.");
-    }
-
-    /**
-     * Tapestry 5.1 uses a special namespace (usually mapped to "p:") and the
-     * name becomes the parameter element.
-     */
-    private void parameterElement(TemplateParserState state)
-    {
-        ensureParameterWithinComponent(state);
-
-        if (tokenStream.getAttributeCount() > 0)
-            throw new TapestryException(ServicesMessages.parameterElementDoesNotAllowAttributes(),
-                    getLocation(), null);
-
-        tokenAccumulator.add(new ParameterToken(tokenStream.getLocalName(), getLocation()));
-
-        processBody(state.insideComponent(false));
-    }
-
-    /**
-     * Checks that a body element is empty. Returns after the body's close
-     * element. Adds a single body token (but not an
-     * end token).
-     */
-    private void body()
-    {
-        tokenAccumulator.add(new BodyToken(getLocation()));
-
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case END_ELEMENT:
-                    return;
-
-                default:
-                    throw new IllegalStateException(ServicesMessages
-                            .contentInsideBodyNotAllowed(getLocation()));
-            }
-        }
-    }
-
-    /**
-     * Driven by the &lt;t:container&gt; element, this state adds elements for
-     * its body but not its start or end tags.
-     * 
-     * @param state
-     */
-    private void container(TemplateParserState state)
-    {
-        while (active)
-        {
-            switch (tokenStream.next())
-            {
-                case START_ELEMENT:
-                    element(state);
-                    break;
-
-                // The matching end-element for the container. Don't add a
-                // token.
-
-                case END_ELEMENT:
-
-                    processTextBuffer(state);
-
-                    return;
-
-                default:
-                    textContent(state);
-            }
-        }
-    }
-
-    /**
-     * A block adds a token for its start tag and end tag and allows any content
-     * within.
-     */
-    private void block(TemplateParserState state)
-    {
-        String blockId = getSingleParameter("id");
-
-        validateId(blockId, "invalid-block-id");
-
-        tokenAccumulator.add(new BlockToken(blockId, getLocation()));
-
-        processBody(state.insideComponent(false));
-    }
-
-    private String getSingleParameter(String attributeName)
-    {
-        String result = null;
-
-        for (int i = 0; i < tokenStream.getAttributeCount(); i++)
-        {
-            QName qName = tokenStream.getAttributeName(i);
-
-            if (isXMLSpaceAttribute(qName))
-                continue;
-
-            if (qName.getLocalPart().equalsIgnoreCase(attributeName))
-            {
-                result = tokenStream.getAttributeValue(i);
-                continue;
-            }
-
-            // Only the named attribute is allowed.
-
-            throw new TapestryException(ServicesMessages.undefinedTapestryAttribute(tokenStream
-                    .getLocalName(), qName.toString(), attributeName), getLocation(), null);
-        }
-
-        return result;
-    }
-
-    private void validateId(String id, String messageKey)
-    {
-        if (id == null)
-            return;
-
-        if (ID_PATTERN.matcher(id).matches())
-            return;
-
-        // Not a match.
-
-        throw new TapestryException(ServicesMessages.invalidId(messageKey, id), getLocation(), null);
-    }
-
-    private boolean isXMLSpaceAttribute(QName qName)
-    {
-        return XML_NAMESPACE_URI.equals(qName.getNamespaceURI())
-                && "space".equals(qName.getLocalPart());
-    }
-
-    /**
-     * Processes text content if in the correct state, or throws an exception.
-     * This is used as a default for matching
-     * case statements.
-     * 
-     * @param state
-     */
-    private void textContent(TemplateParserState state)
-    {
-        switch (tokenStream.getEventType())
-        {
-            case COMMENT:
-                comment(state);
-                break;
-
-            case CDATA:
-                cdata(state);
-                break;
-
-            case CHARACTERS:
-            case SPACE:
-                characters();
-                break;
-
-            default:
-                unexpectedEventType();
-        }
-    }
-
-    private void characters()
-    {
-        if (textStartLocation == null)
-            textStartLocation = getLocation();
-
-        textBuffer.append(tokenStream.getText());
-    }
-
-    private void cdata(TemplateParserState state)
-    {
-        processTextBuffer(state);
-
-        tokenAccumulator.add(new CDATAToken(tokenStream.getText(), getLocation()));
-    }
-
-    private void comment(TemplateParserState state)
-    {
-        processTextBuffer(state);
-
-        String comment = tokenStream.getText();
-
-        tokenAccumulator.add(new CommentToken(comment, getLocation()));
-    }
-
-    /**
-     * Processes the accumulated text in the text buffer as a text token.
-     */
-    private void processTextBuffer(TemplateParserState state)
-    {
-        if (textBuffer.length() != 0)
-            convertTextBufferToTokens(state);
-
-        textStartLocation = null;
-    }
-
-    private void convertTextBufferToTokens(TemplateParserState state)
-    {
-        String text = textBuffer.toString();
-
-        textBuffer.setLength(0);
-
-        if (state.isCompressWhitespace())
-        {
-            text = compressWhitespaceInText(text);
-
-            if (InternalUtils.isBlank(text))
-                return;
-        }
-
-        addTokensForText(text);
-    }
-
-    /**
-     * Reduces vertical whitespace to a single newline, then reduces horizontal
-     * whitespace to a single space.
-     * 
-     * @param text
-     * @return compressed version of text
-     */
-    private String compressWhitespaceInText(String text)
-    {
-        String linebreaksReduced = REDUCE_LINEBREAKS_PATTERN.matcher(text).replaceAll("\n");
-
-        return REDUCE_WHITESPACE_PATTERN.matcher(linebreaksReduced).replaceAll(" ");
-    }
-
-    /**
-     * Scans the text, using a regular expression pattern, for expansion
-     * patterns, and adds appropriate tokens for what
-     * it finds.
-     * 
-     * @param text
-     *            to add as
-     *            {@link org.apache.tapestry5.internal.parser.TextToken}s and
-     *            {@link org.apache.tapestry5.internal.parser.ExpansionToken}s
-     */
-    private void addTokensForText(String text)
-    {
-        Matcher matcher = EXPANSION_PATTERN.matcher(text);
-
-        int startx = 0;
-
-        // The big problem with all this code is that everything gets assigned
-        // to the
-        // start of the text block, even if there are line breaks leading up to
-        // it.
-        // That's going to take a lot more work and there are bigger fish to
-        // fry. In addition,
-        // TAPESTRY-2028 means that the whitespace has likely been stripped out
-        // of the text
-        // already anyway.
-
-        while (matcher.find())
-        {
-            int matchStart = matcher.start();
-
-            if (matchStart != startx)
-            {
-                String prefix = text.substring(startx, matchStart);
-
-                tokenAccumulator.add(new TextToken(prefix, textStartLocation));
-            }
-
-            // Group 1 includes the real text of the expansion, with whitespace
-            // around the
-            // expression (but inside the curly braces) excluded.
-
-            String expression = matcher.group(1);
-
-            tokenAccumulator.add(new ExpansionToken(expression, textStartLocation));
-
-            startx = matcher.end();
-        }
-
-        // Catch anything after the final regexp match.
-
-        if (startx < text.length())
-            tokenAccumulator.add(new TextToken(text.substring(startx, text.length()),
-                    textStartLocation));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java
deleted file mode 100644
index 4cee478..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SelectModelFactoryImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.services.SelectModelFactory;
-import org.apache.tapestry5.services.ValueEncoderSource;
-
-public class SelectModelFactoryImpl implements SelectModelFactory
-{
-    private final PropertyAccess propertyAccess;
-    private final ValueEncoderSource valueEncoderSource;
-
-    public SelectModelFactoryImpl(final PropertyAccess propertyAccess,
-            final ValueEncoderSource valueEncoderSource)
-    {
-        super();
-        this.propertyAccess = propertyAccess;
-        this.valueEncoderSource = valueEncoderSource;
-    }
-
-    @SuppressWarnings("unchecked")
-    public SelectModel create(final List<?> objects, final String labelProperty)
-    {
-        final List<OptionModel> options = CollectionFactory.newList();
-
-        for (final Object object : objects)
-        {
-            final ClassPropertyAdapter classPropertyAdapter = this.propertyAccess
-                    .getAdapter(object);
-
-            final PropertyAdapter propertyAdapter = classPropertyAdapter.getPropertyAdapter(labelProperty);
-
-            final ValueEncoder encoder = this.valueEncoderSource.getValueEncoder(propertyAdapter.getType());
-
-            final Object label = propertyAdapter.get(object);
-
-            options.add(new OptionModelImpl(encoder.toClient(label), object));
-
-        }
-
-        return new SelectModelImpl(null, options);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java
deleted file mode 100644
index da0b26f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProvider.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.annotations.Service;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-
-/**
- * Adds support for the {@link Service} annotation (which can be applied to fields or parameters), which is used to
- * disambiguate injection when multiple services implement the same service interface.
- */
-public class ServiceAnnotationObjectProvider implements ObjectProvider
-{
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider,
-                         ObjectLocator locator)
-    {
-        Service annotation = annotationProvider.getAnnotation(Service.class);
-
-        if (annotation == null) return null;
-
-        return locator.getService(annotation.value(), objectType);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java
deleted file mode 100644
index 9d5b013..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServiceInjectionProvider.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.InjectionProvider;
-
-/**
- * A very late worker related to the {@link Inject} annotation that, when all other forms of injection have failed,
- * matches the field type to a service interface.
- */
-public class ServiceInjectionProvider implements InjectionProvider
-{
-    private final ObjectLocator locator;
-
-    public ServiceInjectionProvider(ObjectLocator locator)
-    {
-        this.locator = locator;
-    }
-
-    @SuppressWarnings("unchecked")
-    public boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
-                                    ClassTransformation transformation, MutableComponentModel componentModel)
-    {
-        Object inject = this.locator.getService(fieldType);
-
-        assert inject != null;
-
-        transformation.injectField(fieldName, inject);
-
-        // If we make it this far without an exception, then we were successful
-        // and should claim the field.
-
-        return true;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java
deleted file mode 100644
index 6ad176a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ServicesMessages.java
+++ /dev/null
@@ -1,343 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import javassist.CtClass;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.InternalComponentResourcesImpl;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-import java.util.Locale;
-
-public class ServicesMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(ServicesMessages.class);
-
-    public static String duplicateContribution(Object conflict, Class contributionType, Object existing)
-    {
-        return MESSAGES.format("duplicate-contribution", conflict, contributionType.getName(), existing);
-    }
-
-    public static String markupWriterNoCurrentElement()
-    {
-        return MESSAGES.get("markup-writer-no-current-element");
-    }
-
-    public static String errorAddingMethod(CtClass ctClass, String methodName, Throwable cause)
-    {
-        return MESSAGES.format("error-adding-method", ctClass.getName(), methodName, cause);
-    }
-
-    public static String classNotTransformed(String className)
-    {
-        return MESSAGES.format("class-not-transformed", className);
-    }
-
-    public static String missingTemplateResource(Resource resource)
-    {
-        return MESSAGES.format("missing-template-resource", resource);
-    }
-
-    public static String contentInsideBodyNotAllowed(Location location)
-    {
-        return MESSAGES.format("content-inside-body-not-allowed", location);
-    }
-
-    public static String methodCompileError(TransformMethodSignature signature, String methodBody, Throwable cause)
-    {
-        return MESSAGES.format("method-compile-error", signature, methodBody, cause);
-    }
-
-    public static String renderQueueError(RenderCommand command, Throwable cause)
-    {
-        return MESSAGES.format("render-queue-error", command, cause);
-    }
-
-    public static String readOnlyField(String className, String fieldName)
-    {
-        return MESSAGES.format("read-only-field", className, fieldName);
-    }
-
-    public static String nonPrivateFields(String className, List<String> names)
-    {
-        return MESSAGES.format("non-private-fields", className, InternalUtils.joinSorted(names));
-    }
-
-    public static String bindingSourceFailure(String expression, Throwable cause)
-    {
-        return MESSAGES.format("binding-source-failure", expression, cause);
-    }
-
-    public static String contextIndexOutOfRange(String methodDescription)
-    {
-        return MESSAGES.format("context-index-out-of-range", methodDescription);
-    }
-
-    public static String pageNameUnresolved(String pageClassName)
-    {
-        return MESSAGES.format("page-name-unresolved", pageClassName);
-    }
-
-    public static String exceptionInMethodParameter(String methodDescription, int index, Throwable cause)
-    {
-        return MESSAGES.format("exception-in-method-parameter", methodDescription, index + 1, cause);
-    }
-
-    public static String componentEventIsAborted(String methodDescription)
-    {
-        return MESSAGES.format("component-event-is-aborted", methodDescription);
-    }
-
-    public static String parameterNameMustBeUnique(String parameterName, String parameterValue)
-    {
-        return MESSAGES.format("parameter-name-must-be-unique", parameterName, parameterValue);
-    }
-
-    public static String pageIsDirty(Object page)
-    {
-        return MESSAGES.format("page-is-dirty", page);
-    }
-
-    public static String componentInstanceIsNotAPage(Component result)
-    {
-        return MESSAGES.format("component-instance-is-not-a-page", result.getComponentResources().getCompleteId());
-    }
-
-    public static String failureReadingMessages(Resource url, Throwable cause)
-    {
-        return MESSAGES.format("failure-reading-messages", url, cause);
-    }
-
-    public static String unknownAssetPrefix(String path)
-    {
-        return MESSAGES.format("unknown-asset-prefix", path);
-    }
-
-    public static String assetDoesNotExist(Resource resource)
-    {
-        return MESSAGES.format("asset-does-not-exist", resource);
-    }
-
-    public static String wrongAssetDigest(Resource resource)
-    {
-        return MESSAGES.format("wrong-asset-digest", resource.getPath());
-    }
-
-    public static String unknownValidatorType(String validatorType, List<String> knownValidatorTypes)
-    {
-        return MESSAGES.format("unknown-validator-type", validatorType, InternalUtils.join(knownValidatorTypes));
-    }
-
-    public static String validatorSpecificationParseError(int cursor, String specification)
-    {
-        return MESSAGES.format("validator-specification-parse-error", specification.charAt(cursor), cursor + 1,
-                specification);
-    }
-
-    public static String mixinsInvalidWithoutIdOrType(String elementName)
-    {
-        return MESSAGES.format("mixins-invalid-without-id-or-type", elementName);
-    }
-
-    public static String missingFromEnvironment(Class type, Collection<Class> availableTypes)
-    {
-        List<String> types = CollectionFactory.newList();
-
-        for (Class c : availableTypes)
-            types.add(c.getName());
-
-        return MESSAGES.format("missing-from-environment", type.getName(), InternalUtils.joinSorted(types));
-    }
-
-    public static String invalidComponentEventResult(Object result, Collection<Class> configuredResultTypes)
-    {
-        List<String> classNames = CollectionFactory.newList();
-
-        for (Class c : configuredResultTypes)
-            classNames.add(c.getName());
-
-        return MESSAGES.format("invalid-component-event-result", result, ClassFabUtils.toJavaClassName(result
-                .getClass()), InternalUtils.joinSorted(classNames));
-    }
-
-    public static String undefinedTapestryAttribute(String elementName, String attributeName,
-            String allowedAttributeName)
-    {
-        return MESSAGES.format("undefined-tapestry-attribute", elementName, attributeName, allowedAttributeName);
-    }
-
-    public static String parameterElementNameRequired()
-    {
-        return MESSAGES.get("parameter-element-name-required");
-    }
-
-    public static String missingApplicationStatePersistenceStrategy(String name, Collection<String> availableNames)
-    {
-        return MESSAGES.format("missing-application-state-persistence-strategy", name, InternalUtils
-                .joinSorted(availableNames));
-    }
-
-    public static String requestException(Throwable cause)
-    {
-        return MESSAGES.format("request-exception", cause);
-    }
-
-    public static String componentRecursion(String componentClassName)
-    {
-        return MESSAGES.format("component-recursion", componentClassName);
-    }
-
-    public static String clientStateMustBeSerializable(Object newValue)
-    {
-        return MESSAGES.format("client-state-must-be-serializable", newValue);
-    }
-
-    public static String corruptClientState()
-    {
-        return MESSAGES.get("corrupt-client-state");
-    }
-
-    public static String unclosedAttributeExpression(String expression)
-    {
-        return MESSAGES.format("unclosed-attribute-expression", expression);
-    }
-
-    public static String noDisplayForDataType(String datatype)
-    {
-        return MESSAGES.format("no-display-for-data-type", datatype);
-    }
-
-    public static String noEditForDataType(String datatype)
-    {
-        return MESSAGES.format("no-edit-for-data-type", datatype);
-    }
-
-    public static String missingValidatorConstraint(String validatorType, Class type, String perFormMessageKey,
-            String generalMessageKey)
-    {
-        return MESSAGES.format("missing-validator-constraint", validatorType, type.getName(), perFormMessageKey,
-                generalMessageKey);
-    }
-
-    public static String resourcesAccessForbidden(String URI)
-    {
-        return MESSAGES.format("resource-access-forbidden", URI);
-    }
-
-    public static String noMarkupFromPageRender(Page page)
-    {
-        return MESSAGES.format("no-markup-from-page-render", page.getName());
-    }
-
-    public static String baseClassInWrongPackage(String parentClassName, String className, String suggestedPackage)
-    {
-        return MESSAGES.format("base-class-in-wrong-package", parentClassName, className, suggestedPackage);
-    }
-
-    public static String invalidId(String messageKey, String idValue)
-    {
-        return MESSAGES.format(messageKey, idValue);
-    }
-
-    public static String attributeNotAllowed(String elementName)
-    {
-        return MESSAGES.format("attribute-not-allowed", elementName);
-    }
-
-    public static String pagePoolExausted(String pageName, Locale locale, int hardLimit)
-    {
-        return MESSAGES.format("page-pool-exausted", pageName, locale.toString(), hardLimit);
-    }
-
-    public static String noTranslatorForType(Class valueType, Collection<String> typeNames)
-    {
-        return MESSAGES.format("no-translator-for-type", ClassFabUtils.toJavaClassName(valueType), InternalUtils
-                .joinSorted(typeNames));
-    }
-
-    public static String emptyBinding(String parameterName)
-    {
-        return MESSAGES.format("parameter-binding-must-not-be-empty", parameterName);
-    }
-
-    public static String noSuchMethod(Class clazz, String methodName)
-    {
-        return MESSAGES.format("no-such-method", ClassFabUtils.toJavaClassName(clazz), methodName);
-    }
-
-    public static String forbidInstantiateComponentClass(String className)
-    {
-        return MESSAGES.format("forbid-instantiate-component-class", className);
-    }
-
-    public static String eventNotHandled(ComponentPageElement element, String eventName)
-    {
-        return MESSAGES.format("event-not-handled", eventName, element.getCompleteId());
-    }
-
-    public static String documentMissingHTMLRoot(String rootElementName)
-    {
-        return MESSAGES.format("document-missing-html-root", rootElementName);
-    }
-
-    public static String addNewMethodConflict(TransformMethodSignature signature)
-    {
-        return MESSAGES.format("add-new-method-conflict", signature);
-    }
-
-    public static String parameterElementDoesNotAllowAttributes()
-    {
-        return MESSAGES.get("parameter-element-does-not-allow-attributes");
-    }
-
-    public static String invalidPathForLibraryNamespace(String URI)
-    {
-        return MESSAGES.format("invalid-path-for-library-namespace", URI);
-    }
-
-    public static String literalConduitNotUpdateable()
-    {
-        return MESSAGES.get("literal-conduit-not-updateable");
-    }
-
-    public static String requestRewriteReturnedNull()
-    {
-        return MESSAGES.get("request-rewrite-returned-null");
-    }
-
-    public static String linkRewriteReturnedNull()
-    {
-        return MESSAGES.get("link-rewrite-returned-null");
-    }
-
-    public static String markupWriterAttributeNameOrValueOmitted(String element, Object[] namesAndValues)
-    {
-        return MESSAGES.format("markup-writer-attribute-name-or-value-omitted", element, InternalUtils.join(Arrays
-                .asList(namesAndValues)));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionApplicationStatePersistenceStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionApplicationStatePersistenceStrategy.java
deleted file mode 100644
index eaad2ad..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionApplicationStatePersistenceStrategy.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.ApplicationStateCreator;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-/**
- * Stores ASOs in the {@link Session}, which will be created as necessary.
- */
-public class SessionApplicationStatePersistenceStrategy implements ApplicationStatePersistenceStrategy
-{
-    static final String PREFIX = "sso:";
-
-    private final Request request;
-
-    public SessionApplicationStatePersistenceStrategy(Request request)
-    {
-        this.request = request;
-    }
-
-    protected Session getSession()
-    {
-        return request.getSession(true);
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> T get(Class<T> ssoClass, ApplicationStateCreator<T> creator)
-    {
-        return (T) getOrCreate(ssoClass, creator);
-    }
-    
-    protected <T> Object getOrCreate(Class<T> ssoClass, ApplicationStateCreator<T> creator)
-    {
-        Session session = getSession();
-
-        String key = buildKey(ssoClass);
-
-        Object sso = session.getAttribute(key);
-
-        if (sso == null)
-        {
-            sso = creator.create();
-            set(ssoClass, (T) sso);
-        }
-
-        return sso;
-    }
-
-    protected <T> String buildKey(Class<T> ssoClass)
-    {
-        return PREFIX + ssoClass.getName();
-    }
-
-    public <T> void set(Class<T> ssoClass, T sso)
-    {
-        String key = buildKey(ssoClass);
-
-        getSession().setAttribute(key, sso);
-    }
-
-    public <T> boolean exists(Class<T> ssoClass)
-    {
-        String key = buildKey(ssoClass);
-
-        Session session = request.getSession(false);
-
-        return session != null && session.getAttribute(key) != null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java
deleted file mode 100644
index 0116b21..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionImpl.java
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Session;
-import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
-
-import javax.servlet.http.HttpSession;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A thin wrapper around {@link HttpSession}.
- */
-public class SessionImpl implements Session
-{
-    private final SessionPersistedObjectAnalyzer analyzer;
-
-    private final HttpSession session;
-
-    private boolean invalidated = false;
-
-    /**
-     * Cache of attribute objects read from, or written to, the real session.
-     * This is needed for end-of-request
-     * processing.
-     */
-    private final Map<String, Object> sessionAttributeCache = CollectionFactory.newMap();
-
-    public SessionImpl(HttpSession session, SessionPersistedObjectAnalyzer analyzer)
-    {
-        this.session = session;
-        this.analyzer = analyzer;
-    }
-
-    public Object getAttribute(String name)
-    {
-        Object result = session.getAttribute(name);
-
-        sessionAttributeCache.put(name, result);
-
-        return result;
-    }
-
-    public List<String> getAttributeNames()
-    {
-        return InternalUtils.toList(session.getAttributeNames());
-    }
-
-    public void setAttribute(String name, Object value)
-    {
-        session.setAttribute(name, value);
-
-        sessionAttributeCache.put(name, value);
-    }
-
-    public List<String> getAttributeNames(String prefix)
-    {
-        List<String> result = CollectionFactory.newList();
-
-        Enumeration e = session.getAttributeNames();
-        while (e.hasMoreElements())
-        {
-            String name = (String) e.nextElement();
-
-            if (name.startsWith(prefix)) result.add(name);
-        }
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    public int getMaxInactiveInterval()
-    {
-        return session.getMaxInactiveInterval();
-    }
-
-    public void invalidate()
-    {
-        invalidated = true;
-
-        session.invalidate();
-
-        sessionAttributeCache.clear();
-    }
-
-    public boolean isInvalidated()
-    {
-        return invalidated;
-    }
-
-    public void setMaxInactiveInterval(int seconds)
-    {
-        session.setMaxInactiveInterval(seconds);
-    }
-
-    public void restoreDirtyObjects()
-    {
-        if (invalidated) return;
-
-        if (sessionAttributeCache.isEmpty()) return;
-
-        for (Map.Entry<String, Object> entry : sessionAttributeCache.entrySet())
-        {
-            String attributeName = entry.getKey();
-
-            Object attributeValue = entry.getValue();
-
-            if (attributeValue == null) continue;
-
-            if (analyzer.isDirty(attributeValue))
-            {
-                // TAP5-834: Jetty & Tomcat work by object identity, will not update the attribute
-                // and fire the session binding event unless there's a real change. So we set the
-                // attribute to null and then to the new value and that should force the necessary
-                // notification.
-                
-                session.setAttribute(attributeName, null);
-                session.setAttribute(attributeName, attributeValue);
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionPersistentFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionPersistentFieldStrategy.java
deleted file mode 100644
index 3de9108..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SessionPersistentFieldStrategy.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-/**
- * A strategy for storing persistent page properties into the {@link Session session}.
- * <p/>
- * Builds attribute names as: <code>state:<em>page-name</em>:<em>component-id</em>:<em>field-name</em></code>
- */
-
-public class SessionPersistentFieldStrategy extends AbstractSessionPersistentFieldStrategy
-{
-    /**
-     * Prefix used to identify keys stored in the session that are being used to store persistent field data.
-     */
-    static final String PREFIX = "state:";
-
-    public SessionPersistentFieldStrategy(Request request)
-    {
-        super(PREFIX, request);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StaticFilesFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StaticFilesFilter.java
deleted file mode 100644
index 5a17f1d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StaticFilesFilter.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.net.URL;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.services.Context;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-
-/**
- * Identifies requests that are for actual resource files in the context. For those, Tapestry allows the servlet
- * container to process the request.
- */
-public class StaticFilesFilter implements RequestFilter
-{
-    private final Context context;
-
-    public StaticFilesFilter(Context context)
-    {
-        this.context = context;
-    }
-
-    public boolean service(Request request, Response response, RequestHandler handler)
-            throws IOException
-    {
-        String path = request.getPath();
-
-        // TAPESTRY-1322: Treat requests from the browser for a favorites icon via the normal
-        // servlet even if the file doesn't exist, to keep the request from looking like a
-        // component action request.
-
-        if (path.equals("/favicon.ico")) return false;
-
-        // TAPESTRY-2606: A colon in the path is frequently the case for Tapestry event URLs,
-        // but gives Windows fits.
-
-        if (!path.contains(":"))
-        {
-            // We are making the questionable assumption that all files to be vended out will contain
-            // an extension (with a dot separator). Without this, the filter tends to match against
-            // folder names when we don't want it to (especially for the root context path).
-
-            int dotx = path.lastIndexOf(".");
-
-            if (dotx > 0)
-            {
-                URL url = context.getResource(path);
-
-                if (url != null)
-                {
-                    String suffix = path.substring(dotx + 1);
-
-                    // We never allow access to Tapestry component templates, even if they exist.
-                    // It is considered a security risk, like seeing a raw JSP. Earlier alpha versions
-                    // of Tapestry required that the templates be stored in WEB-INF.
-
-                    if (suffix.equalsIgnoreCase(TapestryConstants.TEMPLATE_EXTENSION))
-                    {
-
-                        response.sendError(HttpServletResponse.SC_FORBIDDEN, ServicesMessages
-                                .resourcesAccessForbidden(path));
-
-                        return true;
-                    }
-
-                    return false;
-                }
-            }
-        }
-
-        return handler.service(request, response);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
deleted file mode 100644
index 800e7b7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamPageContentResultProcessor.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.PageRenderRequestHandler;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.StreamPageContent;
-
-/**
- * Used to trigger the rendering of a particular page without causing a redirect to that page.
- * The content of the page is just streamed to the client.
- * 
- * @since 5.2.0
- */
-public class StreamPageContentResultProcessor implements ComponentEventResultProcessor<StreamPageContent>
-{
-
-    @Inject
-    private PageRenderRequestHandler handler;
-
-    @Inject
-    private ComponentClassResolver resolver;
-
-    @Inject
-    private TypeCoercer typeCoercer;
-
-    @Inject
-    private Request request;
-
-    public void processResultValue(final StreamPageContent value) throws IOException
-    {
-
-        final Class<?> pageClass = value.getPageClass();
-        final Object[] activationContext = value.getPageActivationContext();
-
-        final String pageName = this.resolver.resolvePageClassNameToPageName(pageClass.getName());
-
-        final EventContext context = activationContext == null ? new EmptyEventContext() : new ArrayEventContext(
-                this.typeCoercer, activationContext);
-
-        this.handler.handle(new PageRenderRequestParameters(pageName, context, false));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamResponseResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamResponseResultProcessor.java
deleted file mode 100644
index a2b6e6a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamResponseResultProcessor.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-
-import org.apache.tapestry5.StreamResponse;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.Response;
-
-public class StreamResponseResultProcessor implements ComponentEventResultProcessor<StreamResponse>
-{
-    private final Response response;
-
-    public StreamResponseResultProcessor(Response response)
-    {
-        this.response = response;
-    }
-
-    public void processResultValue(StreamResponse streamResponse) throws IOException
-    {
-        OutputStream os = null;
-        InputStream is = null;
-
-        // The whole point is that the response is in the hands of the StreamResponse;
-        // if they want to compress the result, they can add their own GZIPOutputStream to
-        // their pipeline.
-
-        response.disableCompression();
-
-        streamResponse.prepareResponse(response);
-
-        try
-        {
-            is = new BufferedInputStream(streamResponse.getStream());
-
-            os = response.getOutputStream(streamResponse.getContentType());
-
-            TapestryInternalUtils.copy(is, os);
-
-            os.close();
-            os = null;
-
-            is.close();
-            is = null;
-        }
-        finally
-        {
-            InternalUtils.close(is);
-            InternalUtils.close(os);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamableResource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamableResource.java
deleted file mode 100644
index fc63b9c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamableResource.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Abstracts around a {@link org.apache.tapestry5.ioc.Resource} to allow access to the resource's content either
- * compressed on uncompressed. The advantage is that, for compressed streams, the data is only compressed once, rather
- * than for each request.
- *
- * @since 5.1.0.0
- * @see ResourceCache
- */
-public interface StreamableResource
-{
-    /**
-     * Returns the content type available from the underlying {@link java.net.URLConnection}, which may be null.
-     *
-     * @return content type, or null
-     */
-    String getContentType() throws IOException;
-
-    /**
-     * Returns the size of the content
-     *
-     * @param compress if true, return size of compressed content
-     * @return size
-     * @throws IOException
-     */
-    int getSize(boolean compress) throws IOException;
-
-    /**
-     * Returns the raw input stream (wrapped in a {@link java.io.BufferedInputStream}, or the compressed bytestream.
-     *
-     * @param compress if true, return compressed version
-     * @return stream of raw or compressed bytes
-     */
-    InputStream getStream(boolean compress) throws IOException;
-
-    /**
-     * Returns the time the underlying file was last modified.
-     */
-    long getLastModified() throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamableResourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamableResourceImpl.java
deleted file mode 100644
index 965f507..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StreamableResourceImpl.java
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.io.*;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.zip.GZIPOutputStream;
-
-public class StreamableResourceImpl implements StreamableResource
-{
-    private final URL url;
-
-    private final long lastModified;
-
-    private boolean uncompressedCached;
-
-    private int size;
-
-    private String contentType;
-
-    private boolean compressedCached;
-
-    private int compressedSize;
-
-    // TODO: For the moment, we keep the compressed stream in memory. A later solution, for larger files,
-    // may want to store the compressed version externally, as a temporary file.
-    private byte[] compressedBytes;
-
-    public StreamableResourceImpl(URL url, long lastModified)
-    {
-        this.url = url;
-        this.lastModified = lastModified;
-    }
-
-    public int getSize(boolean compress) throws IOException
-    {
-        return compress ? getCompressedSize() : getUncompressedSize();
-    }
-
-    public InputStream getStream(boolean compress) throws IOException
-    {
-        return compress ? getCompressedStream() : getUncompressedStream();
-    }
-
-    private synchronized int getCompressedSize() throws IOException
-    {
-        updateCompressedCachedValues();
-
-        return compressedSize;
-    }
-
-    private synchronized InputStream getCompressedStream() throws IOException
-    {
-        updateCompressedCachedValues();
-
-        return new ByteArrayInputStream(compressedBytes);
-    }
-
-    private synchronized int getUncompressedSize() throws IOException
-    {
-        updateUncompressedCachedValues();
-
-        return size;
-    }
-
-    public long getLastModified() throws IOException
-    {
-        return lastModified;
-    }
-
-    public synchronized String getContentType() throws IOException
-    {
-        updateUncompressedCachedValues();
-
-        return contentType;
-    }
-
-    private void updateUncompressedCachedValues() throws IOException
-    {
-        if (uncompressedCached) return;
-
-        URLConnection connection = url.openConnection();
-
-        size = connection.getContentLength();
-        contentType = connection.getContentType();
-
-        uncompressedCached = true;
-    }
-
-    private void updateCompressedCachedValues() throws IOException
-    {
-        if (compressedCached) return;
-
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        OutputStream compressor = new BufferedOutputStream(new GZIPOutputStream(bos));
-
-        InputStream is = null;
-
-        try
-        {
-            is = getUncompressedStream();
-
-            TapestryInternalUtils.copy(is, compressor);
-
-            compressor.close();
-        }
-        finally
-        {
-            InternalUtils.close(is);
-        }
-
-        compressedBytes = bos.toByteArray();
-        compressedSize = bos.size();
-
-        compressedCached = true;
-    }
-
-    private InputStream getUncompressedStream() throws IOException
-    {
-        return new BufferedInputStream(url.openStream());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringInterner.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringInterner.java
deleted file mode 100644
index 78ee5f4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringInterner.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Creates "interned" strings that are unique for the same content. This is used for common description strings,
- * particularly those used by {@link org.apache.tapestry5.Binding} instances.  The internal cache of interned strings id
- * cleared whenever the {@link org.apache.tapestry5.services.ComponentClasses} {@link
- * org.apache.tapestry5.services.InvalidationEventHub} is invalidated (i.e., when component class files change).
- *
- * @since 5.1.0.0
- */
-public interface StringInterner
-{
-    /**
-     * Interns a string.
-     *
-     * @param string the string to intern
-     * @return the input string, or another string instance with the same content
-     */
-    String intern(String string);
-
-    /**
-     * Formats a string (using {@link String#format(String, Object[])}) and returns the interned result.
-     *
-     * @param format    string format
-     * @param arguments used inside the format
-     * @return formatted and interned string
-     */
-    String format(String format, Object... arguments);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringInternerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringInternerImpl.java
deleted file mode 100644
index 9755faf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringInternerImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.InvalidationListener;
-
-import java.util.Map;
-
-public class StringInternerImpl implements StringInterner, InvalidationListener
-{
-    private final Map<String, String> cache = CollectionFactory.newConcurrentMap();
-
-    public void objectWasInvalidated()
-    {
-        cache.clear();
-    }
-
-    public String intern(String string)
-    {
-        String result = cache.get(string);
-
-        // Not yet in the cache?  Add it.
-
-        if (result == null)
-        {
-            cache.put(string, string);
-            result = string;
-        }
-
-        return result;
-    }
-
-    public String format(String format, Object... arguments)
-    {
-        return intern(String.format(format, arguments));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringProvider.java
deleted file mode 100644
index e15340f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringProvider.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Interface used when assembling an attribute value that contains expansions.
- */
-public interface StringProvider
-{
-    /**
-     * Ask the object to provide the desired string. Often this involves computing the string value dynamically, or
-     * aggregating together multiple StringProviders.
-     */
-    String provideString();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringValueEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringValueEncoder.java
deleted file mode 100644
index dbb9a11..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/StringValueEncoder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ValueEncoder;
-
-/**
- * Passes the string value from the server to the client and vice-versa without any translation.
- */
-public class StringValueEncoder implements ValueEncoder<String>
-{
-    public String toClient(String value)
-    {
-        return value;
-    }
-
-    public String toValue(String clientValue)
-    {
-        return clientValue;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SyntheticStackTraceElementAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SyntheticStackTraceElementAnalyzer.java
deleted file mode 100644
index 94f06e6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/SyntheticStackTraceElementAnalyzer.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.StackTraceElementAnalyzer;
-import org.apache.tapestry5.services.StackTraceElementClassConstants;
-
-/**
- * Identifies any code associated with line 1 as omitted (i.e., it's a synthetic
- * method related to an inner class).
- * 
- * @since 5.2.0
- */
-public class SyntheticStackTraceElementAnalyzer implements StackTraceElementAnalyzer
-{
-    public String classForFrame(StackTraceElement frame)
-    {
-        return frame.getLineNumber() == 1 ? StackTraceElementClassConstants.OMITTED : null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java
deleted file mode 100644
index 29e88a8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TapestryAOPStackFrameAnalyzer.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.StackTraceElementAnalyzer;
-import org.apache.tapestry5.services.StackTraceElementClassConstants;
-
-/**
- * Encapsulates a number of tests for identifying stack frames that are a side-effect
- * of various Tapestry Aspect Oriented Programming and other code generation behaviors.
- * 
- * @since 5.2.0
- */
-public class TapestryAOPStackFrameAnalyzer implements StackTraceElementAnalyzer
-{
-    private static final String[] SYNTHETIC_METHOD_PREFIXES = new String[]
-    { "_$get_", "_$set_", "_$readaccess_", "_$writeaccess_" };
-
-    public String classForFrame(StackTraceElement frame)
-    {
-        if (omit(frame))
-            return StackTraceElementClassConstants.OMITTED;
-
-        return null;
-    }
-
-    private boolean omit(StackTraceElement frame)
-    {
-        // $FieldAccess class in root package is generated
-
-        if (frame.getClassName().startsWith("$FieldAccess_"))
-            return true;
-
-        if (frame.getMethodName().equals("invoke") && frame.getClassName().contains("$MethodAccess_"))
-            return true;
-
-        if (frame.getMethodName().equals("invokeAdvisedMethod") && frame.getClassName().contains("$invocation_"))
-            return true;
-
-        for (String prefix : SYNTHETIC_METHOD_PREFIXES)
-        {
-            if (frame.getMethodName().startsWith(prefix))
-                return true;
-        }
-
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java
deleted file mode 100644
index d41acba..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParser.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-import java.net.URL;
-
-/**
- * Parses a resource into a {@link org.apache.tapestry5.internal.parser.ComponentTemplate}. The service's configuration
- * is used to map common document types to internal copies of the corresponding DTD.
- *
- * @see org.apache.tapestry5.internal.services.PageLoader
- */
-@UsesMappedConfiguration(URL.class)
-public interface TemplateParser
-{
-    /**
-     * Parses the given resource into a component template.
-     *
-     * @param templateResource the path
-     * @return the parsed template contents
-     * @throws RuntimeException if the resource does not exist, or if there is any kind of parse error
-     */
-    ComponentTemplate parseTemplate(Resource templateResource);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java
deleted file mode 100644
index 2502259..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.net.URL;
-import java.util.Map;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-
-/**
- * Parses Tapestry XML template files into {@link ComponentTemplate} instances.
- * A new instance of {@link SaxTemplateParser} is created for each document
- * parsed.
- * 
- * @since 5.1.0.0
- */
-public class TemplateParserImpl implements TemplateParser
-{
-    private final Map<String, URL> configuration;
-
-    private final boolean defaultCompressWhitespace;
-
-    private final OperationTracker tracker;
-
-    public TemplateParserImpl(Map<String, URL> configuration,
-
-    @Symbol(SymbolConstants.COMPRESS_WHITESPACE)
-    boolean defaultCompressWhitespace, OperationTracker tracker)
-    {
-        this.configuration = configuration;
-        this.defaultCompressWhitespace = defaultCompressWhitespace;
-        this.tracker = tracker;
-    }
-
-    public ComponentTemplate parseTemplate(final Resource templateResource)
-    {
-        if (!templateResource.exists())
-            throw new RuntimeException(ServicesMessages.missingTemplateResource(templateResource));
-
-        return tracker.invoke("Parsing component template " + templateResource, new Invokable<ComponentTemplate>()
-        {
-            public ComponentTemplate invoke()
-            {
-                return new SaxTemplateParser(templateResource, configuration).parse(defaultCompressWhitespace);
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserState.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserState.java
deleted file mode 100644
index 0e4ee2a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TemplateParserState.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Used to track behaviors inside {@link org.apache.tapestry5.internal.services.SaxTemplateParser}. Internal state is
- * immutable, the set-like methods return a new immutable instance.
- *
- * @since 5.1.0.0
- */
-class TemplateParserState
-{
-    private final boolean compressWhitespace;
-
-    private final boolean collectingContent;
-
-    private final boolean insideComponent;
-
-    TemplateParserState()
-    {
-        compressWhitespace = false;
-        collectingContent = false;
-        insideComponent = false;
-    }
-
-    private TemplateParserState(boolean compressWhitespace, boolean collectingContent, boolean insideComponent)
-    {
-        this.compressWhitespace = compressWhitespace;
-        this.collectingContent = collectingContent;
-        this.insideComponent = insideComponent;
-    }
-
-    TemplateParserState compressWhitespace(boolean flag)
-    {
-        return flag == compressWhitespace ? this : new TemplateParserState(flag, collectingContent, insideComponent);
-    }
-
-    TemplateParserState collectingContent()
-    {
-        return collectingContent ? this : new TemplateParserState(compressWhitespace, true, insideComponent);
-    }
-
-    TemplateParserState insideComponent(boolean flag)
-    {
-        return flag == insideComponent ? this : new TemplateParserState(compressWhitespace, collectingContent, flag);
-    }
-
-    boolean isInsideComponent()
-    {
-        return insideComponent;
-    }
-
-    boolean isCompressWhitespace()
-    {
-        return compressWhitespace;
-    }
-
-    /**
-     * Is content being collected, inside a &lt;t:content&gt; element?
-     */
-    public boolean isCollectingContent()
-    {
-        return collectingContent;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("TemplateParserState[compressWhitespace=%s, collectingContent=%s, insideComponent=%s]",
-                             compressWhitespace, collectingContent, insideComponent);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TransformationException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TransformationException.java
deleted file mode 100644
index ea3be56..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TransformationException.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.ClassTransformation;
-
-/**
- * Exception thrown when there is a failure transforming a class, or instantiating a transformed class. The cause may be
- * an Error. The goal is to get the {@link ClassTransformation} into the exception report page, properly formatted.
- */
-public class TransformationException extends TapestryException
-{
-    private static final long serialVersionUID = -7312854113157232961L;
-
-    private final ClassTransformation transformation;
-
-    public TransformationException(ClassTransformation transformation, Throwable cause)
-    {
-        super(cause.getMessage(), cause);
-
-        this.transformation = transformation;
-    }
-
-    public ClassTransformation getTransformation()
-    {
-        return transformation;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorAlternatesSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorAlternatesSourceImpl.java
deleted file mode 100644
index 63c3edd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorAlternatesSourceImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.services.TranslatorAlternatesSource;
-
-@SuppressWarnings("unchecked")
-public class TranslatorAlternatesSourceImpl implements TranslatorAlternatesSource
-{
-    private final Map<String, Translator> configuration;
-
-    public TranslatorAlternatesSourceImpl(Map<String, Translator> configuration)
-    {
-        this.configuration = configuration;
-
-        for (Map.Entry<String, Translator> me : configuration.entrySet())
-        {
-            if (!me.getKey().equalsIgnoreCase(me.getValue().getName()))
-                throw new RuntimeException(String.format(
-                        "Contribution key '%s' does not match '%s' (the name of the corresponding Translator).", me
-                                .getKey(), me.getValue().getName()));
-        }
-    }
-
-    public Map<String, Translator> getTranslatorAlternates()
-    {
-        return configuration;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java
deleted file mode 100644
index 346799e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TranslatorSourceImpl.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.TranslatorSource;
-
-@SuppressWarnings("unchecked")
-public class TranslatorSourceImpl implements TranslatorSource, InvalidationListener
-{
-    private final Map<String, Translator> nameToTranslator = CollectionFactory.newCaseInsensitiveMap();
-
-    private final StrategyRegistry<Translator> registry;
-
-    private static final Map<String, Translator> EMPTY = Collections.emptyMap();
-
-    public TranslatorSourceImpl(Map<Class, Translator> configuration)
-    {
-        this(configuration, EMPTY);
-    }
-
-    public TranslatorSourceImpl(Map<Class, Translator> configuration, Map<String, Translator> alternates)
-    {
-        for (Map.Entry<Class, Translator> me : configuration.entrySet())
-        {
-            Class type = me.getKey();
-            Translator translator = me.getValue();
-
-            if (!type.equals(translator.getType()))
-                throw new RuntimeException(
-                        String
-                                .format(
-                                        "Contributed translator for type %s reports its type as %s. Please change the contribution so that the key matches that translator type.",
-                                        type.getName(), translator.getType().getName()));
-
-            String name = translator.getName();
-
-            if (nameToTranslator.containsKey(name))
-                throw new RuntimeException(
-                        String
-                                .format(
-                                        "Two different Translators contributed to the TranslatorSource service use the same translator name: '%s'.  Translator names must be unique.",
-                                        name));
-
-            nameToTranslator.put(name, translator);
-        }
-
-        for (String name : alternates.keySet())
-        {
-            if (nameToTranslator.containsKey(name))
-                throw new RuntimeException(
-                        String
-                                .format(
-                                        "Translator '%s' contributed to the TranslatorAlternatesSource service has the same name as a standard Translator contributed to the TranslatorSource service.",
-                                        name));
-
-            nameToTranslator.put(name, alternates.get(name));
-        }
-
-        registry = StrategyRegistry.newInstance(Translator.class, configuration, true);
-    }
-
-    public Translator get(String name)
-    {
-        Translator result = nameToTranslator.get(name);
-
-        if (result == null)
-            throw new UnknownValueException(String.format("Unknown translator type '%s'.", name), new AvailableValues(
-                    "Configured translators", nameToTranslator));
-
-        return result;
-    }
-
-    public Translator getByType(Class valueType)
-    {
-        Translator result = registry.get(valueType);
-
-        if (result == null)
-        {
-            List<String> names = CollectionFactory.newList();
-
-            for (Class type : registry.getTypes())
-            {
-                names.add(type.getName());
-            }
-
-            throw new IllegalArgumentException(ServicesMessages.noTranslatorForType(valueType, names));
-        }
-
-        return result;
-    }
-
-    public Translator findByType(Class valueType)
-    {
-        return registry.get(valueType);
-    }
-
-    public void objectWasInvalidated()
-    {
-        registry.clearCache();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java
deleted file mode 100644
index bee075d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/TypeCoercedValueEncoderFactory.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-
-/**
- * Provides {@link org.apache.tapestry5.ValueEncoder} instances that are backed by the {@link
- * org.apache.tapestry5.ioc.services.TypeCoercer} service.
- */
-public class TypeCoercedValueEncoderFactory implements ValueEncoderFactory<Object>
-{
-    private final TypeCoercer typeCoercer;
-
-    public TypeCoercedValueEncoderFactory(TypeCoercer typeCoercer)
-    {
-        this.typeCoercer = typeCoercer;
-    }
-
-    public ValueEncoder<Object> create(final Class<Object> type)
-    {
-        return new ValueEncoder<Object>()
-        {
-            public String toClient(Object value)
-            {
-                return typeCoercer.coerce(value, String.class);
-            }
-
-            public Object toValue(String clientValue)
-            {
-                return typeCoercer.coerce(clientValue, type);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLEncoderImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLEncoderImpl.java
deleted file mode 100644
index 2e4c1dd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLEncoderImpl.java
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.BitSet;
-
-import org.apache.tapestry5.services.URLEncoder;
-
-public class URLEncoderImpl implements URLEncoder
-{
-    static final String ENCODED_NULL = "$N";
-    static final String ENCODED_BLANK = "$B";
-
-    /**
-     * Bit set indicating which character are safe to pass through (when encoding or decoding) as-is. All other
-     * characters are encoded as a kind of unicode escape.
-     */
-    private final BitSet safe = new BitSet(128);
-
-    {
-        markSafe("abcdefghijklmnopqrstuvwxyz");
-        markSafe("ABCDEFGHIJKLMNOPQRSTUVWXYZ");
-        markSafe("01234567890-_.:");
-    }
-
-    private void markSafe(String s)
-    {
-        for (char ch : s.toCharArray())
-        {
-            safe.set((int) ch);
-        }
-    }
-
-    public String encode(String input)
-    {
-        if (input == null)
-            return ENCODED_NULL;
-
-        if (input.equals(""))
-            return ENCODED_BLANK;
-
-        boolean dirty = false;
-
-        int length = input.length();
-
-        StringBuilder output = new StringBuilder(length * 2);
-
-        for (int i = 0; i < length; i++)
-        {
-            char ch = input.charAt(i);
-
-            if (ch == '$')
-            {
-                output.append("$$");
-                dirty = true;
-                continue;
-            }
-
-            int chAsInt = (int) ch;
-
-            if (safe.get(chAsInt))
-            {
-                output.append(ch);
-                continue;
-            }
-
-            output.append(String.format("$%04x", chAsInt));
-            dirty = true;
-        }
-
-        return dirty ? output.toString() : input;
-    }
-
-    public String decode(String input)
-    {
-        assert input != null;
-
-        if (input.equals(ENCODED_NULL))
-            return null;
-
-        if (input.equals(ENCODED_BLANK))
-            return "";
-
-        boolean dirty = false;
-
-        int length = input.length();
-
-        StringBuilder output = new StringBuilder(length * 2);
-
-        for (int i = 0; i < length; i++)
-        {
-            char ch = input.charAt(i);
-
-            if (ch == '$')
-            {
-                dirty = true;
-
-                if (i + 1 < length && input.charAt(i + 1) == '$')
-                {
-                    output.append('$');
-                    i++;
-
-                    dirty = true;
-                    continue;
-                }
-
-                if (i + 4 < length)
-                {
-                    String hex = input.substring(i + 1, i + 5);
-
-                    try
-                    {
-                        int unicode = Integer.parseInt(hex, 16);
-
-                        output.append((char) unicode);
-                        i += 4;
-                        dirty = true;
-                        continue;
-                    }
-                    catch (NumberFormatException ex)
-                    {
-                        // Ignore.
-                    }
-                }
-
-                throw new IllegalArgumentException(
-                        String.format(
-                                "Input string '%s' is not valid; the '$' character at position %d should be followed by another '$' or a four digit hex number (a unicode value).",
-                                input, i + 1));
-            }
-
-            if (!safe.get((int) ch)) { throw new IllegalArgumentException(
-                    String.format("Input string '%s' is not valid; the character '%s' at position %d is not valid.",
-                            input, ch, i + 1)); }
-
-            output.append(ch);
-        }
-
-        return dirty ? output.toString() : input;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterImpl.java
deleted file mode 100644
index 2e4a0ae..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterImpl.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.URLRewriter;
-import org.apache.tapestry5.urlrewriter.URLRewriteContext;
-import org.apache.tapestry5.urlrewriter.URLRewriterRule;
-
-
-/**
- * Default {@linkplain org.apache.tapestry5.services.URLRewriter} implementation.
- *
- * @since 5.1.0.2
- */
-@UsesOrderedConfiguration(URLRewriterRule.class)
-public class URLRewriterImpl implements URLRewriter
-{
-
-    final private List<URLRewriterRule> incomingRules;
-    final private List<URLRewriterRule> outgoingRules;
-
-    /**
-     * Single constructor of this class.
-     * 
-     * @param rules
-     *            a <code>List</code> of <code>URLRewriterRule</code>. It cannot be null.
-     */
-    public URLRewriterImpl(List<URLRewriterRule> rules)
-    {
-        assert rules != null;
-        this.incomingRules = new ArrayList<URLRewriterRule>();
-        this.outgoingRules = new ArrayList<URLRewriterRule>();
-        for(URLRewriterRule rule : rules)
-        {
-            switch(rule.applicability())
-            {
-                case INBOUND:
-                    incomingRules.add(rule);
-                    break;
-                case OUTBOUND:
-                    outgoingRules.add(rule);
-                    break;
-                default:
-                    incomingRules.add(rule);
-                    outgoingRules.add(rule);
-            }
-        }
-    }
-
-    public Request processRequest(Request request)
-    {
-        request = process(request,incomingRules,new URLRewriteContext(){
-            public boolean isIncoming()
-            {
-                return true;
-            }
-
-            public PageRenderRequestParameters getPageParameters()
-            {
-                return null;
-            }
-
-            public ComponentEventRequestParameters getComponentEventParameters()
-            {
-                return null;
-            }
-        });
-        if (request == null)
-        {
-            throw new NullPointerException(
-                ServicesMessages.requestRewriteReturnedNull());
-        }
-        return request;
-    }
-
-    private Request process(Request request, List<URLRewriterRule> rules, URLRewriteContext context)
-    {
-
-        for (URLRewriterRule rule : rules)
-        {
-
-            request = rule.process(request,context);
-            if (request == null)
-            {
-                return null;
-            }
-
-        }
-
-        return request;
-
-    }
-
-    public Request processLink(Request request,URLRewriteContext context) {
-        request = process(request,outgoingRules,context);
-        if (request == null)
-        {
-            throw new NullPointerException(
-                    ServicesMessages.linkRewriteReturnedNull());
-        }
-        return request;
-    }
-
-    public boolean hasRequestRules() {
-        return !incomingRules.isEmpty();
-    }
-
-    public boolean hasLinkRules() {
-        return !outgoingRules.isEmpty();
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterLinkEncoderInterceptor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterLinkEncoderInterceptor.java
deleted file mode 100644
index f1263b0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterLinkEncoderInterceptor.java
+++ /dev/null
@@ -1,145 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.URLRewriter;
-import org.apache.tapestry5.urlrewriter.SimpleRequestWrapper;
-import org.apache.tapestry5.urlrewriter.URLRewriteContext;
-
-/**
- * An intercepter for the {@link ComponentEventLinkEncoder} service that is put into use when there
- * {@linkplain URLRewriter#hasLinkRules() URL link rewrite rules}.
- * 
- * @since 5.2.0
- */
-public class URLRewriterLinkEncoderInterceptor implements ComponentEventLinkEncoder
-{
-    private final URLRewriter urlRewriter;
-
-    private final Request request;
-
-    private final ComponentEventLinkEncoder delegate;
-
-    public URLRewriterLinkEncoderInterceptor(URLRewriter urlRewriter, Request request,
-            ComponentEventLinkEncoder delegate)
-    {
-        this.urlRewriter = urlRewriter;
-        this.request = request;
-        this.delegate = delegate;
-    }
-
-    public Link createComponentEventLink(final ComponentEventRequestParameters parameters, boolean forForm)
-    {
-        Link standardLink = delegate.createComponentEventLink(parameters, forForm);
-
-        URLRewriteContext rewriteContext = new URLRewriteContext()
-        {
-            public boolean isIncoming()
-            {
-                return false;
-            }
-
-            public PageRenderRequestParameters getPageParameters()
-            {
-                return null;
-            }
-
-            public ComponentEventRequestParameters getComponentEventParameters()
-            {
-                return parameters;
-            }
-        };
-
-        return rewriteIfNeeded(standardLink, rewriteContext);
-    }
-
-    public Link createPageRenderLink(final PageRenderRequestParameters parameters)
-    {
-        Link standardLink = delegate.createPageRenderLink(parameters);
-
-        URLRewriteContext rewriteContext = new URLRewriteContext()
-        {
-            public boolean isIncoming()
-            {
-                return false;
-            }
-
-            public PageRenderRequestParameters getPageParameters()
-            {
-                return parameters;
-            }
-
-            public ComponentEventRequestParameters getComponentEventParameters()
-            {
-                return null;
-            }
-        };
-
-        return rewriteIfNeeded(standardLink, rewriteContext);
-    }
-
-    public ComponentEventRequestParameters decodeComponentEventRequest(Request request)
-    {
-        return delegate.decodeComponentEventRequest(request);
-    }
-
-    public PageRenderRequestParameters decodePageRenderRequest(Request request)
-    {
-        return delegate.decodePageRenderRequest(request);
-    }
-
-    private Link rewriteIfNeeded(Link link, URLRewriteContext context)
-    {
-        SimpleRequestWrapper fakeRequest = new SimpleRequestWrapper(request, link.getBasePath());
-
-        Request rewritten = urlRewriter.processLink(fakeRequest, context);
-
-        // if the original request is equal to the rewritten one, no
-        // rewriting is needed
-        if (fakeRequest == rewritten)
-            return link;
-
-        String originalServerName = request.getServerName();
-
-        String rewrittenServerName = rewritten.getServerName();
-
-        boolean absolute = originalServerName.equals(rewrittenServerName) == false;
-
-        String baseURI = absolute ? fullUrl(rewritten) : rewritten.getContextPath() + rewritten.getPath();
-
-        return link.copyWithBasePath(baseURI);
-    }
-
-    private String fullUrl(Request request)
-    {
-
-        String protocol = request.isSecure() ? "https://" : "http://";
-
-        int localPort = request.getLocalPort();
-
-        String port = localPort == 80 ? "" : ":" + localPort;
-
-        String path = request.getPath();
-        String contextPath = request.getContextPath();
-
-        return protocol + request.getServerName() + port + contextPath + path;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterRequestFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterRequestFilter.java
deleted file mode 100644
index 7d9c84a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/URLRewriterRequestFilter.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.URLRewriter;
-
-/**
- * <code>RequestFilter</code> that applies the URL rewriting rules to requests.
- * 
- * @see org.apache.tapestry5.services.RequestFilter
- */
-public class URLRewriterRequestFilter implements RequestFilter
-{
-
-    final private URLRewriter urlRewriter;
-
-    /**
-     * Single constructor of this class.
-     * @param urlRewriter um {@link URLRewriter}. It cannot be null.
-     */
-    public URLRewriterRequestFilter(URLRewriter urlRewriter)
-    {
-        assert urlRewriter != null;
-        this.urlRewriter = urlRewriter;
-    }
-
-    public boolean service(Request request, Response response, RequestHandler handler)
-            throws IOException
-    {
-
-        request = urlRewriter.processRequest(request);
-
-        return handler.service(request, response);
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java
deleted file mode 100644
index 45ef9bb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationConstraintGeneratorImpl.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-
-@SuppressWarnings("all")
-public class ValidationConstraintGeneratorImpl implements ValidationConstraintGenerator
-{
-    private final List<ValidationConstraintGenerator> configuration;
-
-    public ValidationConstraintGeneratorImpl(final List<ValidationConstraintGenerator> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public List<String> buildConstraints(Class propertyType, AnnotationProvider annotationProvider)
-    {
-        assert propertyType != null;
-        assert annotationProvider != null;
-        List<String> result = CollectionFactory.newList();
-
-        for (ValidationConstraintGenerator g : configuration)
-        {
-            List<String> constraints = g.buildConstraints(propertyType, annotationProvider);
-
-            if (constraints != null)
-                result.addAll(constraints);
-        }
-
-        // TODO: How to handle duplicate or conflicting constraints from different generators?
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationMessagesSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationMessagesSourceImpl.java
deleted file mode 100644
index b9d5296..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidationMessagesSourceImpl.java
+++ /dev/null
@@ -1,162 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.services.UpdateListener;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import org.apache.tapestry5.services.messages.PropertiesFileParser;
-
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-public class ValidationMessagesSourceImpl implements ValidationMessagesSource, UpdateListener
-{
-    private final ComponentMessagesSource componentMessagesSource;
-
-    private final MessagesSource messagesSource;
-
-    private final MessagesBundle bundle;
-
-    private final Map<Locale, Messages> cache = CollectionFactory.newConcurrentMap();
-
-    private class ValidationMessagesBundle implements MessagesBundle
-    {
-        private final Resource baseResource;
-
-        private final MessagesBundle parent;
-
-        public ValidationMessagesBundle(Resource baseResource, MessagesBundle parent)
-        {
-            this.baseResource = baseResource;
-            this.parent = parent;
-        }
-
-        public Resource getBaseResource()
-        {
-            return baseResource;
-        }
-
-        public Object getId()
-        {
-            return baseResource.getPath();
-        }
-
-        public MessagesBundle getParent()
-        {
-            return parent;
-        }
-    }
-
-    /**
-     * Delegates to a {@link Messages} instance obtained from the {@link MessagesSource}. This ensures that changes to
-     * the underlying properties files will be reflected.
-     */
-    private class ValidationMessages implements Messages
-    {
-        private final Locale locale;
-
-        public ValidationMessages(Locale locale)
-        {
-            this.locale = locale;
-        }
-
-        private Messages messages()
-        {
-            // The MessagesSource caches the value returned, until any underlying file is touched,
-            // at which point an updated Messages will be returned.
-
-            return messagesSource.getMessages(bundle, locale);
-        }
-
-        public boolean contains(String key)
-        {
-            return messages().contains(key);
-        }
-
-        public String format(String key, Object... args)
-        {
-            return messages().format(key, args);
-        }
-
-        public String get(String key)
-        {
-            return messages().get(key);
-        }
-
-        public MessageFormatter getFormatter(String key)
-        {
-            // Ideally, there would be a MessageFormatterImpl that would delegate to a fresh copy
-            // of a MessageFormatter obtained from the source, but that's probably overkill.
-
-            return messages().getFormatter(key);
-        }
-    }
-
-    public ValidationMessagesSourceImpl(List<String> bundles, Resource classpathRoot, PropertiesFileParser parser,
-            ComponentMessagesSource componentMessagesSource, ClasspathURLConverter classpathURLConverter)
-    {
-        this(bundles, classpathRoot, parser, componentMessagesSource, new URLChangeTracker(classpathURLConverter));
-    }
-
-    ValidationMessagesSourceImpl(List<String> bundles, Resource classpathRoot, PropertiesFileParser parser,
-            ComponentMessagesSource componentMessagesSource, URLChangeTracker tracker)
-    {
-        messagesSource = new MessagesSourceImpl(tracker, parser);
-        this.componentMessagesSource = componentMessagesSource;
-
-        MessagesBundle parent = null;
-
-        for (String bundle : bundles)
-        {
-            Resource bundleResource = classpathRoot.forFile(bundle);
-
-            parent = new ValidationMessagesBundle(bundleResource, parent);
-        }
-
-        bundle = parent;
-    }
-
-    public Messages getValidationMessages(Locale locale)
-    {
-        Messages result = cache.get(locale);
-
-        if (result == null)
-        {
-            Messages appCatalog = componentMessagesSource.getApplicationCatalog(locale);
-            Messages validation = new ValidationMessages(locale);
-            result = new DelegatingMessagesImpl(appCatalog, validation);
-
-            cache.put(locale, result);
-        }
-
-        return result;
-    }
-
-    public void checkForUpdates()
-    {
-        // When there are changes, the Messages cached inside the MessagesSource will be discarded
-        // and will be rebuilt on demand by the ValidationMessages instances.
-
-        messagesSource.checkForUpdates();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidatorSpecification.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidatorSpecification.java
deleted file mode 100644
index 617d1cf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValidatorSpecification.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-
-/**
- * Validator type and constraint values parsed from a validator specification.
- */
-public class ValidatorSpecification
-{
-    private final String validatorType;
-
-    private final String constraintValue;
-
-    public ValidatorSpecification(String validatorType)
-    {
-        this(validatorType, null);
-    }
-
-    public ValidatorSpecification(String validatorType, String constraintValue)
-    {
-        this.validatorType = validatorType;
-        this.constraintValue = constraintValue;
-    }
-
-    public String getConstraintValue()
-    {
-        return constraintValue;
-    }
-
-    public String getValidatorType()
-    {
-        return validatorType;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ValidatorSpecification[%s %s]", validatorType, constraintValue);
-    }
-
-    @Override
-    public boolean equals(Object other)
-    {
-        if (other == null || other.getClass() != getClass())
-            return false;
-
-        ValidatorSpecification ov = (ValidatorSpecification) other;
-
-        if (!validatorType.equals(ov.validatorType))
-            return false;
-
-        return TapestryInternalUtils.isEqual(constraintValue, ov.constraintValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
deleted file mode 100644
index c61379c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ValueEncoderSourceImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-import org.apache.tapestry5.services.ValueEncoderSource;
-
-@SuppressWarnings("all")
-public class ValueEncoderSourceImpl implements ValueEncoderSource, InvalidationListener
-{
-    private final StrategyRegistry<ValueEncoderFactory> registry;
-
-    private final Map<Class, ValueEncoder> cache = CollectionFactory.newConcurrentMap();
-
-    public ValueEncoderSourceImpl(Map<Class, ValueEncoderFactory> configuration)
-    {
-        registry = StrategyRegistry.newInstance(ValueEncoderFactory.class, configuration);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public <T> ValueEncoder<T> getValueEncoder(Class<T> type)
-    {
-        assert type != null;
-        ValueEncoder<T> result = cache.get(type);
-
-        if (result == null)
-        {
-            ValueEncoderFactory<T> factory = registry.get(type);
-
-            result = factory.create(type);
-
-            cache.put(type, result);
-        }
-
-        return result;
-    }
-
-    public void objectWasInvalidated()
-    {
-        registry.clearCache();
-        cache.clear();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java
deleted file mode 100644
index 8a94915..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLToken.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * A token parsed from an XML file, used when parsing templates.
- * 
- * @since 5.2.0
- */
-class XMLToken extends BaseLocatable
-{
-    final XMLTokenType type;
-
-    DTDData dtdData;
-
-    String uri, localName, qName;
-
-    List<AttributeInfo> attributes;
-
-    List<NamespaceMapping> namespaceMappings;
-
-    // COMMENT, CDATA, CHARACTERS, WHITESPACE
-    String text;
-
-    XMLToken(XMLTokenType type, Location location)
-    {
-        super(location);
-
-        this.type = type;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java
deleted file mode 100644
index bbdad04..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenStream.java
+++ /dev/null
@@ -1,412 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.namespace.QName;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.LocationImpl;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.xml.sax.Attributes;
-import org.xml.sax.ContentHandler;
-import org.xml.sax.EntityResolver;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.ext.LexicalHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-/** Parses a document as a stream of XML tokens */
-public class XMLTokenStream
-{
-    private final class SaxHandler implements LexicalHandler, EntityResolver, ContentHandler
-    {
-        private Locator locator;
-
-        private int currentLine = -1;
-
-        private Location cachedLocation;
-
-        private Location textLocation;
-
-        private final StringBuilder builder = new StringBuilder();
-
-        private boolean inCDATA, insideDTD;
-
-        private List<NamespaceMapping> namespaceMappings = CollectionFactory.newList();
-
-        private Location getLocation()
-        {
-            int line = locator.getLineNumber();
-
-            if (currentLine != line)
-                cachedLocation = null;
-
-            if (cachedLocation == null)
-            {
-                cachedLocation = new LocationImpl(resource, line);
-            }
-
-            return cachedLocation;
-        }
-
-        private XMLToken add(XMLTokenType type)
-        {
-            XMLToken token = new XMLToken(type, getLocation());
-
-            tokens.add(token);
-
-            return token;
-        }
-
-        public InputSource resolveEntity(String publicId, String systemId) throws SAXException,
-                IOException
-        {
-            URL url = publicIdToURL.get(publicId);
-
-            try
-            {
-                if (url != null)
-                    return new InputSource(url.openStream());
-            }
-            catch (IOException ex)
-            {
-                throw new SAXException(String.format("Unable to open stream for resource %s: %s",
-                        url, InternalUtils.toMessage(ex)), ex);
-            }
-
-            return null;
-        }
-
-        public void comment(char[] ch, int start, int length) throws SAXException
-        {
-            if (insideDTD)
-                return;
-
-            // TODO: Coalesce?
-            add(XMLTokenType.COMMENT).text = new String(ch, start, length);
-        }
-
-        public void startCDATA() throws SAXException
-        {
-            // TODO: Flush characters?
-
-            inCDATA = true;
-        }
-
-        public void endCDATA() throws SAXException
-        {
-            if (builder.length() != 0)
-            {
-                add(XMLTokenType.CDATA).text = builder.toString();
-            }
-
-            builder.setLength(0);
-            inCDATA = false;
-        }
-
-        public void characters(char[] ch, int start, int length) throws SAXException
-        {
-            if (inCDATA)
-            {
-                builder.append(ch, start, length);
-                return;
-            }
-
-            XMLToken token = new XMLToken(XMLTokenType.CHARACTERS, textLocation);
-            token.text = new String(ch, start, length);
-
-            tokens.add(token);
-        }
-
-        public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
-        {
-        }
-
-        public void startDTD(final String name, final String publicId, final String systemId)
-                throws SAXException
-        {
-            insideDTD = true;
-
-            DTDData data = new DTDData()
-            {
-
-                public String getSystemId()
-                {
-                    return systemId;
-
-                }
-
-                public String getRootName()
-                {
-                    return name;
-                }
-
-                public String getPublicId()
-                {
-                    return publicId;
-                }
-            };
-
-            add(XMLTokenType.DTD).dtdData = data;
-        }
-
-        public void endDocument() throws SAXException
-        {
-            add(XMLTokenType.END_DOCUMENT);
-        }
-
-        public void endElement(String uri, String localName, String qName) throws SAXException
-        {
-            add(XMLTokenType.END_ELEMENT);
-        }
-
-        public void setDocumentLocator(Locator locator)
-        {
-            this.locator = locator;
-        }
-
-        public void startElement(String uri, String localName, String qName, Attributes attributes)
-                throws SAXException
-        {
-            XMLToken token = add(XMLTokenType.START_ELEMENT);
-
-            token.uri = uri;
-            token.localName = localName;
-            token.qName = qName;
-
-            // The XML parser tends to reuse the same Attributes object, so
-            // capture the data out of it.
-
-            if (attributes.getLength() == 0)
-            {
-                token.attributes = Collections.emptyList();
-            }
-            else
-            {
-                token.attributes = CollectionFactory.newList();
-
-                for (int i = 0; i < attributes.getLength(); i++)
-                {
-                    String prefixedName = attributes.getQName(i);
-
-                    int lastColon = prefixedName.lastIndexOf(':');
-
-                    String prefix = lastColon > 0 ? prefixedName.substring(0, lastColon) : "";
-
-                    QName qname = new QName(attributes.getURI(i), attributes.getLocalName(i),
-                            prefix);
-
-                    token.attributes.add(new AttributeInfo(qname, attributes.getValue(i)));
-                }
-            }
-
-            token.namespaceMappings = CollectionFactory.newList(namespaceMappings);
-
-            namespaceMappings.clear();
-
-            // Any text collected starts here as well:
-
-            textLocation = getLocation();
-        }
-
-        public void startPrefixMapping(String prefix, String uri) throws SAXException
-        {
-            namespaceMappings.add(new NamespaceMapping(prefix, uri));
-        }
-
-        public void endDTD() throws SAXException
-        {
-            insideDTD = false;
-        }
-
-        public void endEntity(String name) throws SAXException
-        {
-        }
-
-        public void startEntity(String name) throws SAXException
-        {
-        }
-
-        public void endPrefixMapping(String prefix) throws SAXException
-        {
-        }
-
-        public void processingInstruction(String target, String data) throws SAXException
-        {
-        }
-
-        public void skippedEntity(String name) throws SAXException
-        {
-        }
-
-        public void startDocument() throws SAXException
-        {
-        }
-    }
-
-    private int cursor = -1;
-
-    private final List<XMLToken> tokens = CollectionFactory.newList();
-
-    private final Resource resource;
-
-    private final Map<String, URL> publicIdToURL;
-
-    private Location exceptionLocation;
-
-    public XMLTokenStream(Resource resource, Map<String, URL> publicIdToURL)
-    {
-        this.resource = resource;
-        this.publicIdToURL = publicIdToURL;
-    }
-
-    public void parse() throws SAXException, IOException
-    {
-        SaxHandler handler = new SaxHandler();
-
-        XMLReader reader = XMLReaderFactory.createXMLReader();
-
-        reader.setContentHandler(handler);
-        reader.setEntityResolver(handler);
-        reader.setProperty("http://xml.org/sax/properties/lexical-handler", handler);
-
-        InputStream stream = resource.openStream();
-
-        try
-        {
-            reader.parse(new InputSource(stream));
-        }
-        catch (IOException ex)
-        {
-            this.exceptionLocation = handler.getLocation();
-
-            throw ex;
-        }
-        catch (SAXException ex)
-        {
-            this.exceptionLocation = handler.getLocation();
-
-            throw ex;
-        }
-        catch (RuntimeException ex)
-        {
-            this.exceptionLocation = handler.getLocation();
-
-            throw ex;
-        }
-        finally
-        {
-            InternalUtils.close(stream);
-        }
-    }
-
-    private XMLToken token()
-    {
-        return tokens.get(cursor);
-    }
-
-    /**
-     * Returns the type of the next token.
-     */
-    public XMLTokenType next()
-    {
-        cursor++;
-
-        // TODO: Check for overflow?
-
-        return getEventType();
-    }
-
-    public int getAttributeCount()
-    {
-        return token().attributes.size();
-    }
-
-    public QName getAttributeName(int i)
-    {
-        return token().attributes.get(i).attributeName;
-    }
-
-    public DTDData getDTDInfo()
-    {
-        return token().dtdData;
-    }
-
-    public XMLTokenType getEventType()
-    {
-        return token().type;
-    }
-
-    public String getLocalName()
-    {
-        return token().localName;
-    }
-
-    public Location getLocation()
-    {
-        if (exceptionLocation != null)
-            return exceptionLocation;
-
-        return token().getLocation();
-    }
-
-    public int getNamespaceCount()
-    {
-        return token().namespaceMappings.size();
-    }
-
-    public String getNamespacePrefix(int i)
-    {
-        return token().namespaceMappings.get(i).prefix;
-    }
-
-    public String getNamespaceURI()
-    {
-        return token().uri;
-    }
-
-    public String getNamespaceURI(int i)
-    {
-        return token().namespaceMappings.get(i).uri;
-    }
-
-    public String getText()
-    {
-        return token().text;
-    }
-
-    public boolean hasNext()
-    {
-        return cursor < tokens.size() - 1;
-    }
-
-    public String getAttributeValue(int i)
-    {
-        return token().attributes.get(i).value;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenType.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenType.java
deleted file mode 100644
index c5df058..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/XMLTokenType.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Identifies type of {@link XMLToken}.
- * 
- * @since 5.2.0
- */
-public enum XMLTokenType
-{
-    DTD, START_ELEMENT, END_ELEMENT, END_DOCUMENT, COMMENT, SPACE, CHARACTERS, CDATA, ENTITY_REFERENCE, ATTRIBUTE, NAMESPACE, NOTATION_DECLARATION, ENTITY_DECLARATION
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateController.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateController.java
deleted file mode 100644
index 0e408c2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateController.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.ajax;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Coordinates the rendering of page partials in the context of an
- * Ajax update to an existing Form.
- * 
- * @see AjaxFormUpdateFilter
- * @see MultiZoneUpdate
- * @since 5.2.0
- */
-public interface AjaxFormUpdateController
-{
-    void initializeForForm(String formComponentId, String formClientId);
-
-    /**
-     * Called before starting to render a zone's content; initializes
-     * the {@link FormSupport} and {@link ValidationTracker} environmentals
-     * and starts a heartbeat.
-     */
-    void setupBeforePartialZoneRender(MarkupWriter writer);
-
-    /**
-     * Ends the heartbeat, executes deferred Form actions,
-     * and cleans up the environmentals.
-     */
-    void cleanupAfterPartialZoneRender();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateControllerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateControllerImpl.java
deleted file mode 100644
index 6bcfadc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateControllerImpl.java
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.ajax;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.ValidationTrackerImpl;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.corelib.internal.ComponentActionSink;
-import org.apache.tapestry5.corelib.internal.HiddenFieldPositioner;
-import org.apache.tapestry5.corelib.internal.InternalFormSupport;
-import org.apache.tapestry5.internal.util.CaptureResultCallback;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.HiddenFieldLocationRules;
-import org.slf4j.Logger;
-
-@Scope(ScopeConstants.PERTHREAD)
-public class AjaxFormUpdateControllerImpl implements AjaxFormUpdateController
-{
-    private final ComponentSource componentSource;
-
-    private final HiddenFieldLocationRules rules;
-
-    private final Environment environment;
-
-    private final Heartbeat heartbeat;
-
-    private final ClientDataEncoder clientDataEncoder;
-
-    private final Logger logger;
-
-    private String formComponentId;
-
-    private String formClientId;
-
-    private HiddenFieldPositioner hiddenFieldPositioner;
-
-    private ComponentActionSink actionSink;
-
-    private InternalFormSupport formSupport;
-
-    public AjaxFormUpdateControllerImpl(ComponentSource componentSource, HiddenFieldLocationRules rules,
-            Environment environment, Heartbeat heartbeat, ClientDataEncoder clientDataEncoder, Logger logger)
-    {
-        this.componentSource = componentSource;
-        this.rules = rules;
-        this.environment = environment;
-        this.heartbeat = heartbeat;
-        this.clientDataEncoder = clientDataEncoder;
-        this.logger = logger;
-    }
-
-    public void initializeForForm(String formComponentId, String formClientId)
-    {
-        this.formComponentId = formComponentId;
-        this.formClientId = formClientId;
-    }
-
-    public void setupBeforePartialZoneRender(MarkupWriter writer)
-    {
-        if (formComponentId == null)
-            return;
-
-        hiddenFieldPositioner = new HiddenFieldPositioner(writer, rules);
-
-        actionSink = new ComponentActionSink(logger, clientDataEncoder);
-
-        formSupport = createInternalFormSupport(formClientId, formComponentId, actionSink);
-
-        environment.push(FormSupport.class, formSupport);
-        environment.push(ValidationTracker.class, new ValidationTrackerImpl());
-
-        heartbeat.begin();
-    }
-
-    public void cleanupAfterPartialZoneRender()
-    {
-        if (formComponentId == null)
-            return;
-
-        heartbeat.end();
-
-        formSupport.executeDeferred();
-
-        environment.pop(ValidationTracker.class);
-        environment.pop(FormSupport.class);
-
-        // If the Zone didn't actually contain any form control elements, then
-        // nothing will have been written to the action sink. In that case,
-        // get rid of the hidden field, if one was even added.
-
-        if (actionSink.isEmpty())
-        {
-            hiddenFieldPositioner.discard();
-
-            return;
-        }
-
-        // We've collected some hidden data that needs to be placed inside the Zone.
-        // This will raise an exception if the content of the zone didn't provide such a position.
-
-        hiddenFieldPositioner.getElement().attributes("type", "hidden",
-
-        "name", Form.FORM_DATA,
-
-        "value", actionSink.getClientData());
-    }
-
-    private InternalFormSupport createInternalFormSupport(String formClientId, String formComponentId,
-            ComponentActionSink actionSink)
-    {
-        // Kind of ugly, but the only way to ensure we don't have name collisions on the
-        // client side is to force a unique id into each name (as well as each id, but that's
-        // JavaScriptSupport's job). It would be nice if we could agree on the uid, but
-        // not essential.
-
-        String uid = Long.toHexString(System.currentTimeMillis());
-
-        IdAllocator idAllocator = new IdAllocator("_" + uid);
-
-        Component formComponent = componentSource.getComponent(formComponentId);
-
-        CaptureResultCallback<InternalFormSupport> callback = CaptureResultCallback.create();
-
-        // This is a bit of a back-door to access a non-public method!
-
-        formComponent.getComponentResources().triggerEvent("internalCreateRenderTimeFormSupport", new Object[]
-        { formClientId, actionSink, idAllocator }, callback);
-
-        return callback.getResult();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateFilter.java
deleted file mode 100644
index 5b914a9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/AjaxFormUpdateFilter.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.ajax;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.internal.services.RequestConstants;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Ajax;
-import org.apache.tapestry5.services.ComponentEventRequestFilter;
-import org.apache.tapestry5.services.ComponentEventRequestHandler;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Filter for the {@link Ajax} {@link ComponentEventRequestHandler} that informs the {@link AjaxFormUpdateController}
- * about the form's client id and component id. Partial renders work with the
- * AjaxFormUpdateController to ensure that the Form data, if any, is collected and rendered
- * as part of the response.
- * 
- * @since 5.2.0
- */
-public class AjaxFormUpdateFilter implements ComponentEventRequestFilter
-{
-    private final Request request;
-
-    private final AjaxFormUpdateController ajaxFormUpdateController;
-
-    public AjaxFormUpdateFilter(Request request, AjaxFormUpdateController ajaxFormUpdateController)
-    {
-        this.request = request;
-        this.ajaxFormUpdateController = ajaxFormUpdateController;
-    }
-
-    public void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler)
-            throws IOException
-    {
-        String formClientId = request.getParameter(RequestConstants.FORM_CLIENTID_PARAMETER);
-        String formComponentId = request.getParameter(RequestConstants.FORM_COMPONENTID_PARAMETER);
-
-        if (InternalUtils.isNonBlank(formClientId) && InternalUtils.isNonBlank(formComponentId))
-            ajaxFormUpdateController.initializeForForm(formComponentId, formClientId);
-
-        handler.handle(parameters);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
deleted file mode 100644
index 973b8af..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImpl.java
+++ /dev/null
@@ -1,345 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.ajax;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Worker;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.services.DocumentLinker;
-import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-public class JavaScriptSupportImpl implements JavaScriptSupport
-{
-    private final IdAllocator idAllocator;
-
-    private final DocumentLinker linker;
-
-    // Using a Map as a case-insensitive set of stack names.
-
-    private final Map<String, Boolean> addedStacks = CollectionFactory.newCaseInsensitiveMap();
-
-    private final List<String> stackLibraries = CollectionFactory.newList();
-
-    private final List<String> otherLibraries = CollectionFactory.newList();
-
-    private final Set<String> importedStylesheetURLs = CollectionFactory.newSet();
-
-    private final List<StylesheetLink> stylesheetLinks = CollectionFactory.newList();
-
-    private final Map<InitializationPriority, JSONObject> inits = CollectionFactory.newMap();
-
-    private final JavaScriptStackSource javascriptStackSource;
-
-    private final JavaScriptStackPathConstructor stackPathConstructor;
-
-    private final boolean partialMode;
-
-    private FieldFocusPriority focusPriority;
-
-    private String focusFieldId;
-
-    public JavaScriptSupportImpl(DocumentLinker linker, JavaScriptStackSource javascriptStackSource,
-            JavaScriptStackPathConstructor stackPathConstructor)
-    {
-        this(linker, javascriptStackSource, stackPathConstructor, new IdAllocator(), false);
-    }
-
-    /**
-     * @param linker
-     *            responsible for assembling all the information gathered by JavaScriptSupport and
-     *            attaching it to the Document (for a full page render) or to the JSON response (in a partial render)
-     * @param javascriptStackSource
-     *            source of information about {@link JavaScriptStack}s, used when handling the import
-     *            of libraries and stacks (often, to handle transitive dependencies)
-     * @param stackPathConstructor
-     *            encapsulates the knowledge of how to represent a stack (which may be converted
-     *            from a series of JavaScript libraries into a single virtual JavaScript library)
-     * @param idAllocator
-     *            used when allocating unique ids (it is usually pre-initialized in an Ajax request to ensure
-     *            that newly allocated ids do not conflict with previous renders and partial updates)
-     * @param partialMode
-     *            if true, then the JSS configures itself for a partial page render (part of an Ajax request)
-     *            which automatically assumes the "core" library has been added (to the original page render)
-     *            and makes other minor changes to behavior.
-     */
-    public JavaScriptSupportImpl(DocumentLinker linker, JavaScriptStackSource javascriptStackSource,
-            JavaScriptStackPathConstructor stackPathConstructor, IdAllocator idAllocator, boolean partialMode)
-    {
-        this.linker = linker;
-        this.idAllocator = idAllocator;
-        this.javascriptStackSource = javascriptStackSource;
-        this.stackPathConstructor = stackPathConstructor;
-        this.partialMode = partialMode;
-
-        // In partial mode, assume that the infrastructure stack is already present
-        // (from the original page render).
-
-        if (partialMode)
-            addedStacks.put(InternalConstants.CORE_STACK_NAME, true);
-    }
-
-    public void commit()
-    {
-        if (focusFieldId != null)
-            addInitializerCall("activate", focusFieldId);
-
-        F.flow(stylesheetLinks).each(new Worker<StylesheetLink>()
-        {
-            public void work(StylesheetLink value)
-            {
-                linker.addStylesheetLink(value);
-            }
-        });
-
-        Worker<String> linkLibrary = new Worker<String>()
-        {
-            public void work(String value)
-            {
-                linker.addScriptLink(value);
-            }
-        };
-
-        F.flow(stackLibraries).each(linkLibrary);
-        F.flow(otherLibraries).each(linkLibrary);
-
-        for (InitializationPriority p : InitializationPriority.values())
-        {
-            JSONObject init = inits.get(p);
-
-            if (init != null)
-                linker.setInitialization(p, init);
-        }
-    }
-
-    public void addInitializerCall(InitializationPriority priority, String functionName, JSONObject parameter)
-    {
-        storeInitializerCall(priority, functionName, parameter);
-    }
-
-    private void storeInitializerCall(InitializationPriority priority, String functionName, Object parameter)
-    {
-        assert priority != null;
-        assert parameter != null;
-        assert InternalUtils.isNonBlank(functionName);
-        addCoreStackIfNeeded();
-
-        JSONObject init = inits.get(priority);
-
-        if (init == null)
-        {
-            init = new JSONObject();
-            inits.put(priority, init);
-        }
-
-        JSONArray invocations = init.has(functionName) ? init.getJSONArray(functionName) : null;
-
-        if (invocations == null)
-        {
-            invocations = new JSONArray();
-            init.put(functionName, invocations);
-        }
-
-        invocations.put(parameter);
-    }
-
-    public void addInitializerCall(String functionName, JSONObject parameter)
-    {
-        addInitializerCall(InitializationPriority.NORMAL, functionName, parameter);
-    }
-
-    public void addInitializerCall(InitializationPriority priority, String functionName, String parameter)
-    {
-        storeInitializerCall(priority, functionName, parameter);
-    }
-
-    public void addInitializerCall(String functionName, String parameter)
-    {
-        addInitializerCall(InitializationPriority.NORMAL, functionName, parameter);
-    }
-
-    public void addScript(InitializationPriority priority, String format, Object... arguments)
-    {
-        assert priority != null;
-        assert InternalUtils.isNonBlank(format);
-
-        addCoreStackIfNeeded();
-
-        String newScript = arguments.length == 0 ? format : String.format(format, arguments);
-
-        if (partialMode)
-        {
-            addInitializerCall(priority, "evalScript", newScript);
-        }
-        else
-        {
-            linker.addScript(priority, newScript);
-        }
-    }
-
-    public void addScript(String format, Object... arguments)
-    {
-        addScript(InitializationPriority.NORMAL, format, arguments);
-    }
-
-    public String allocateClientId(ComponentResources resources)
-    {
-        return allocateClientId(resources.getId());
-    }
-
-    public String allocateClientId(String id)
-    {
-        return idAllocator.allocateId(id);
-    }
-
-    public void importJavaScriptLibrary(Asset asset)
-    {
-        assert asset != null;
-
-        importJavaScriptLibrary(asset.toClientURL());
-    }
-
-    public void importJavaScriptLibrary(String libraryURL)
-    {
-        addCoreStackIfNeeded();
-
-        String stackName = findStackForLibrary(libraryURL);
-
-        if (stackName != null)
-        {
-            importStack(stackName);
-            return;
-        }
-
-        if (otherLibraries.contains(libraryURL))
-            return;
-
-        otherLibraries.add(libraryURL);
-    }
-
-    private Map<String, String> libraryURLToStackName;
-
-    /**
-     * Locates the name of the stack that includes the library URL. Returns the stack,
-     * or null if the library is free-standing.
-     */
-    private String findStackForLibrary(String libraryURL)
-    {
-        return getLibraryURLToStackName().get(libraryURL);
-    }
-
-    private Map<String, String> getLibraryURLToStackName()
-    {
-        if (libraryURLToStackName == null)
-        {
-            libraryURLToStackName = CollectionFactory.newMap();
-
-            for (String stackName : javascriptStackSource.getStackNames())
-            {
-                for (Asset library : javascriptStackSource.getStack(stackName).getJavaScriptLibraries())
-                {
-                    libraryURLToStackName.put(library.toClientURL(), stackName);
-                }
-            }
-        }
-
-        return libraryURLToStackName;
-    }
-
-    private void addCoreStackIfNeeded()
-    {
-        addAssetsFromStack(InternalConstants.CORE_STACK_NAME);
-    }
-
-    private void addAssetsFromStack(String stackName)
-    {
-        if (addedStacks.containsKey(stackName))
-            return;
-
-        JavaScriptStack stack = javascriptStackSource.getStack(stackName);
-
-        for (String dependentStackname : stack.getStacks())
-        {
-            addAssetsFromStack(dependentStackname);
-        }
-
-        stackLibraries.addAll(stackPathConstructor.constructPathsForJavaScriptStack(stackName));
-
-        stylesheetLinks.addAll(stack.getStylesheets());
-
-        addedStacks.put(stackName, true);
-
-        String initialization = stack.getInitialization();
-
-        if (initialization != null)
-            addScript(InitializationPriority.IMMEDIATE, initialization);
-    }
-
-    public void importStylesheet(Asset stylesheet)
-    {
-        assert stylesheet != null;
-        importStylesheet(new StylesheetLink(stylesheet));
-    }
-
-    public void importStylesheet(StylesheetLink stylesheetLink)
-    {
-        assert stylesheetLink != null;
-        String stylesheetURL = stylesheetLink.getURL();
-
-        if (importedStylesheetURLs.contains(stylesheetURL))
-            return;
-
-        importedStylesheetURLs.add(stylesheetURL);
-
-        stylesheetLinks.add(stylesheetLink);
-    }
-
-    public void importStack(String stackName)
-    {
-        assert InternalUtils.isNonBlank(stackName);
-        addCoreStackIfNeeded();
-
-        addAssetsFromStack(stackName);
-    }
-
-    public void autofocus(FieldFocusPriority priority, String fieldId)
-    {
-        assert priority != null;
-        assert InternalUtils.isNonBlank(fieldId);
-
-        if (focusFieldId == null || priority.compareTo(focusPriority) > 0)
-        {
-            this.focusPriority = priority;
-            focusFieldId = fieldId;
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetPathConstructorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetPathConstructorImpl.java
deleted file mode 100644
index cd0758c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/AssetPathConstructorImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.assets;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.services.RequestConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.assets.AssetPathConstructor;
-
-public class AssetPathConstructorImpl implements AssetPathConstructor
-{
-    private final Request request;
-
-    private final String prefix;
-
-    public AssetPathConstructorImpl(Request request,
-
-    @Symbol(SymbolConstants.APPLICATION_VERSION)
-    String applicationVersion)
-    {
-        this.request = request;
-        this.prefix = RequestConstants.ASSET_PATH_PREFIX + applicationVersion + "/";
-    }
-
-    public String constructAssetPath(String virtualFolder, String path)
-    {
-        StringBuilder builder = new StringBuilder(request.getContextPath());
-        builder.append(prefix);
-        builder.append(virtualFolder);
-        builder.append('/');
-        builder.append(path);
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/BytestreamCache.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/BytestreamCache.java
deleted file mode 100644
index 6f5f5c6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/BytestreamCache.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.assets;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-
-/**
- * A wrapper around a byte-stream, represented internally as a byte array. Part of the fix
- * to TAP5-1116, avoiding a live lock due to ByteArrayOutputStream.writeTo() being a synchronized
- * method.
- * 
- * @since 5.2.0
- */
-public class BytestreamCache
-{
-    private final byte[] streamData;
-
-    public BytestreamCache(byte[] streamData)
-    {
-        this.streamData = streamData;
-    }
-
-    public BytestreamCache(ByteArrayOutputStream os)
-    {
-        this(os.toByteArray());
-    }
-
-    public void writeTo(OutputStream os) throws IOException
-    {
-        os.write(streamData, 0, streamData.length);
-    }
-
-    public int size()
-    {
-        return streamData.length;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java
deleted file mode 100644
index 76d4e06..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ClasspathAssetRequestHandler.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.assets;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.internal.services.AssetResourceLocator;
-import org.apache.tapestry5.internal.services.ResourceStreamer;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.assets.AssetRequestHandler;
-
-/**
- * A handler for asset requests for classpath assets (within a specific folder).
- * Each mapping of the {@link ClasspathAssetAliasManager} gets one of these.
- * 
- * @since 5.2.0
- */
-public class ClasspathAssetRequestHandler implements AssetRequestHandler
-{
-    private final ResourceStreamer streamer;
-
-    private final AssetResourceLocator assetResourceLocator;
-
-    private final String baseFolder;
-
-    public ClasspathAssetRequestHandler(ResourceStreamer streamer, AssetResourceLocator assetResourceLocator,
-            String baseFolder)
-    {
-        this.streamer = streamer;
-        this.assetResourceLocator = assetResourceLocator;
-        this.baseFolder = baseFolder;
-    }
-
-    public boolean handleAssetRequest(Request request, Response response, String extraPath) throws IOException
-    {
-        String assetPath = baseFolder + "/" + extraPath;
-
-        Resource resource = assetResourceLocator.findClasspathResourceForPath(assetPath);
-
-        if (resource == null)
-            return false;
-
-        streamer.streamResource(resource);
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java
deleted file mode 100644
index 3fcadbb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandler.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.assets;
-
-import java.io.IOException;
-import java.util.regex.Pattern;
-
-import org.apache.tapestry5.internal.services.ResourceStreamer;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.assets.AssetRequestHandler;
-
-/**
- * Handles requests for context assets, screening out attempt to
- * access anything under WEB-INF or META-INF.
- * 
- * @since 5.2.0
- */
-public class ContextAssetRequestHandler implements AssetRequestHandler
-{
-    private final ResourceStreamer resourceStreamer;
-
-    private final Resource rootContextResource;
-
-    private final Pattern illegal = Pattern.compile("^(((web|meta)-inf.*)|(.*\\.tml$))", Pattern.CASE_INSENSITIVE);
-
-    public ContextAssetRequestHandler(ResourceStreamer resourceStreamer, Resource rootContextResource)
-    {
-        this.resourceStreamer = resourceStreamer;
-        this.rootContextResource = rootContextResource;
-    }
-
-    public boolean handleAssetRequest(Request request, Response response, String extraPath) throws IOException
-    {
-        if (illegal.matcher(extraPath).matches())
-            return false;
-
-        Resource resource = rootContextResource.forFile(extraPath);
-
-        resourceStreamer.streamResource(resource);
-
-        return true;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
deleted file mode 100644
index 7ec7d3f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/assets/StackAssetRequestHandler.java
+++ /dev/null
@@ -1,223 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.assets;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.List;
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-import java.util.zip.GZIPOutputStream;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.ResourceCache;
-import org.apache.tapestry5.internal.services.StreamableResource;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-import org.apache.tapestry5.services.assets.AssetRequestHandler;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-
-public class StackAssetRequestHandler implements AssetRequestHandler, InvalidationListener
-{
-    private final ResourceCache resourceCache;
-
-    private final JavaScriptStackSource javascriptStackSource;
-
-    private final LocalizationSetter localizationSetter;
-
-    private final ResponseCompressionAnalyzer compressionAnalyzer;
-
-    private final boolean productionMode;
-
-    private final Pattern pathPattern = Pattern.compile("^(.+)/(.+)\\.js$");
-
-    // Two caches, keyed on extra path. Both are accessed only from synchronized blocks.
-    private final Map<String, BytestreamCache> uncompressedCache = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, BytestreamCache> compressedCache = CollectionFactory.newCaseInsensitiveMap();
-
-    public StackAssetRequestHandler(ResourceCache resourceCache, JavaScriptStackSource javascriptStackSource,
-            LocalizationSetter localizationSetter, ResponseCompressionAnalyzer compressionAnalyzer,
-
-            @Symbol(SymbolConstants.PRODUCTION_MODE)
-            boolean productionMode)
-    {
-        this.resourceCache = resourceCache;
-        this.javascriptStackSource = javascriptStackSource;
-        this.localizationSetter = localizationSetter;
-        this.compressionAnalyzer = compressionAnalyzer;
-        this.productionMode = productionMode;
-    }
-
-    public boolean handleAssetRequest(Request request, Response response, String extraPath) throws IOException
-    {
-        boolean compress = compressionAnalyzer.isGZipSupported();
-
-        BytestreamCache cachedStream = getStream(extraPath, compress);
-
-        // The whole point of this is to force the client to aggressively cache the combined, virtual
-        // stack asset.
-
-        long lastModified = System.currentTimeMillis();
-        response.setDateHeader("Last-Modified", lastModified);
-
-        if (productionMode)
-            response.setDateHeader("Expires", lastModified + InternalConstants.TEN_YEARS);
-
-        response.setContentLength(cachedStream.size());
-
-        if (compress)
-            response.setHeader(InternalConstants.CONTENT_ENCODING_HEADER, InternalConstants.GZIP_CONTENT_ENCODING);
-
-        // CSS support is problematic, because of relative URLs inside the CSS files. For the
-        // moment, only JavaScript is supported.
-
-        OutputStream output = response.getOutputStream("text/javascript");
-
-        cachedStream.writeTo(output);
-
-        output.close();
-
-        return true;
-    }
-
-    /** Notified by the {@link ResourceCache} when resource files change; the internal caches are cleared. */
-    public synchronized void objectWasInvalidated()
-    {
-        uncompressedCache.clear();
-        compressedCache.clear();
-    }
-
-    private BytestreamCache getStream(String extraPath, boolean compressed) throws IOException
-    {
-        return compressed ? getCompressedStream(extraPath) : getUncompressedStream(extraPath);
-    }
-
-    private synchronized BytestreamCache getCompressedStream(String extraPath) throws IOException
-    {
-        BytestreamCache result = compressedCache.get(extraPath);
-
-        if (result == null)
-        {
-            BytestreamCache uncompressed = getUncompressedStream(extraPath);
-            result = compressStream(uncompressed);
-            compressedCache.put(extraPath, result);
-        }
-
-        return result;
-    }
-
-    private synchronized BytestreamCache getUncompressedStream(String extraPath) throws IOException
-    {
-        BytestreamCache result = uncompressedCache.get(extraPath);
-
-        if (result == null)
-        {
-            result = assembleStackContent(extraPath);
-            uncompressedCache.put(extraPath, result);
-        }
-
-        return result;
-    }
-
-    private BytestreamCache assembleStackContent(String extraPath) throws IOException
-    {
-        Matcher matcher = pathPattern.matcher(extraPath);
-
-        if (!matcher.matches())
-            throw new RuntimeException("Invalid path for a stack asset request.");
-
-        String localeName = matcher.group(1);
-        String stackName = matcher.group(2);
-
-        return assembleStackContent(localeName, stackName);
-    }
-
-    private BytestreamCache assembleStackContent(String localeName, String stackName) throws IOException
-    {
-        localizationSetter.setNonPeristentLocaleFromLocaleName(localeName);
-
-        JavaScriptStack stack = javascriptStackSource.getStack(stackName);
-        List<Asset> libraries = stack.getJavaScriptLibraries();
-
-        return assembleStackContent(libraries);
-    }
-
-    private BytestreamCache assembleStackContent(List<Asset> libraries) throws IOException
-    {
-        ByteArrayOutputStream stream = new ByteArrayOutputStream();
-        OutputStreamWriter osw = new OutputStreamWriter(stream, "UTF-8");
-        PrintWriter writer = new PrintWriter(osw, true);
-
-        JSONArray paths = new JSONArray();
-
-        for (Asset library : libraries)
-        {
-            String path = library.toClientURL();
-
-            paths.put(path);
-
-            writer.format("\n/* %s */;\n", path);
-
-            streamLibraryContent(library, stream);
-        }
-
-        writer.format("\n;/**/\nTapestry.markScriptLibrariesLoaded(%s);\n", paths);
-
-        writer.close();
-
-        return new BytestreamCache(stream);
-    }
-
-    private void streamLibraryContent(Asset library, OutputStream outputStream) throws IOException
-    {
-        Resource resource = library.getResource();
-
-        StreamableResource streamable = resourceCache.getStreamableResource(resource);
-
-        InputStream inputStream = streamable.getStream(false);
-
-        TapestryInternalUtils.copy(inputStream, outputStream);
-    }
-
-    private BytestreamCache compressStream(BytestreamCache uncompressed) throws IOException
-    {
-        ByteArrayOutputStream compressed = new ByteArrayOutputStream();
-        OutputStream compressor = new GZIPOutputStream(compressed);
-
-        uncompressed.writeTo(compressor);
-
-        compressor.close();
-
-        return new BytestreamCache(compressed);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/CoreJavaScriptStack.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/CoreJavaScriptStack.java
deleted file mode 100644
index a604eb7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/CoreJavaScriptStack.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.javascript;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.ClientInfrastructure;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-/**
- * JavaScriptStack based on the information retrieved from {@link ClientInfrastructure}.
- * 
- * @since 5.2.0
- */
-public class CoreJavaScriptStack implements JavaScriptStack
-{
-    private final ClientInfrastructure clientInfrastructure;
-
-    private final boolean productionMode;
-
-    public CoreJavaScriptStack(ClientInfrastructure clientInfrastructure,
-
-    @Symbol(SymbolConstants.PRODUCTION_MODE)
-    boolean productionMode)
-    {
-        this.clientInfrastructure = clientInfrastructure;
-        this.productionMode = productionMode;
-    }
-
-    public String getInitialization()
-    {
-        return productionMode ? null : "Tapestry.DEBUG_ENABLED = true;";
-    }
-
-    public List<Asset> getJavaScriptLibraries()
-    {
-        return clientInfrastructure.getJavascriptStack();
-    }
-
-    public List<StylesheetLink> getStylesheets()
-    {
-        return F.flow(clientInfrastructure.getStylesheetStack()).map(TapestryInternalUtils.assetToStylesheetLink)
-                .toList();
-    }
-
-    public List<String> getStacks()
-    {
-        return Collections.emptyList();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java
deleted file mode 100644
index 8b78e77..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/DateFieldStack.java
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.javascript;
-
-import java.text.DateFormatSymbols;
-import java.util.Calendar;
-import java.util.Collections;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-
-public class DateFieldStack implements JavaScriptStack
-{
-    private final ThreadLocale threadLocale;
-
-    private final boolean compactJSON;
-
-    private final List<Asset> javaScriptStack;
-
-    private final List<StylesheetLink> stylesheetStack;
-
-    public DateFieldStack(ThreadLocale threadLocale, @Symbol(SymbolConstants.COMPACT_JSON)
-    boolean compactJSON, final AssetSource assetSource)
-    {
-        this.threadLocale = threadLocale;
-        this.compactJSON = compactJSON;
-
-        Mapper<String, Asset> pathToAsset = new Mapper<String, Asset>()
-        {
-            public Asset map(String path)
-            {
-                return assetSource.getExpandedAsset(path);
-            }
-        };
-
-        Mapper<String, StylesheetLink> pathToStylesheetLink = pathToAsset
-                .combine(TapestryInternalUtils.assetToStylesheetLink);
-
-        javaScriptStack = F
-                .flow("${tapestry.datepicker}/js/datepicker.js", "org/apache/tapestry5/corelib/components/datefield.js")
-                .map(pathToAsset).toList();
-
-        stylesheetStack = F.flow("${tapestry.datepicker}/css/datepicker.css").map(pathToStylesheetLink).toList();
-    }
-
-    public String getInitialization()
-    {
-        Locale locale = threadLocale.getLocale();
-
-        JSONObject spec = new JSONObject();
-
-        DateFormatSymbols symbols = new DateFormatSymbols(locale);
-
-        spec.put("months", new JSONArray(symbols.getMonths()));
-
-        StringBuilder days = new StringBuilder();
-
-        String[] weekdays = symbols.getWeekdays();
-
-        Calendar c = Calendar.getInstance(locale);
-
-        int firstDay = c.getFirstDayOfWeek();
-
-        // DatePicker needs them in order from monday to sunday.
-
-        for (int i = Calendar.MONDAY; i <= Calendar.SATURDAY; i++)
-        {
-            days.append(weekdays[i].substring(0, 1));
-        }
-
-        days.append(weekdays[Calendar.SUNDAY].substring(0, 1));
-
-        spec.put("days", days.toString().toLowerCase(locale));
-
-        // DatePicker expects 0 to be monday. Calendar defines SUNDAY as 1, MONDAY as 2, etc.
-
-        spec.put("firstDay", firstDay == Calendar.SUNDAY ? 6 : firstDay - 2);
-
-        // TODO: Skip localization if locale is English?
-
-        return String.format("Tapestry.DateField.initLocalization(%s);", spec.toString(compactJSON));
-    }
-
-    public List<Asset> getJavaScriptLibraries()
-    {
-        return javaScriptStack;
-    }
-
-    public List<StylesheetLink> getStylesheets()
-    {
-        return stylesheetStack;
-    }
-
-    public List<String> getStacks()
-    {
-        return Collections.emptyList();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructor.java
deleted file mode 100644
index 359e100..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructor.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.javascript;
-
-import java.util.List;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Used to generate a list of asset URL paths for the JavaScript libraries
- * of a JavaScript stack. This encapsulates much of the logic of {@linkplain SymbolConstants#COMBINE_SCRIPTS script
- * aggregation}.
- * 
- * @since 5.2.0
- * @see JavaScriptStack
- * @see JavaScriptStackSource
- * @see JavaScriptSupport
- */
-public interface JavaScriptStackPathConstructor
-{
-    /**
-     * Given a stack, by name, return a list of URL paths for the individual libraqries in the stack.
-     * If scripts are combined, this will be a single (combined) URL.
-     * 
-     * @param stackName
-     *            name of {@link JavaScriptStack}
-     */
-    List<String> constructPathsForJavaScriptStack(String stackName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java
deleted file mode 100644
index 1363e56..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackPathConstructorImpl.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.javascript;
-
-import java.util.List;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.internal.services.RequestConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.assets.AssetPathConstructor;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-
-public class JavaScriptStackPathConstructorImpl implements JavaScriptStackPathConstructor
-{
-    private final ThreadLocale threadLocale;
-
-    private final AssetPathConstructor assetPathConstructor;
-
-    private final JavaScriptStackSource javascriptStackSource;
-
-    private final boolean combineScripts;
-
-    private final Mapper<Asset, String> toPath = new Mapper<Asset, String>()
-    {
-        public String map(Asset input)
-        {
-            return input.toClientURL();
-        }
-    };
-
-    public JavaScriptStackPathConstructorImpl(ThreadLocale threadLocale, AssetPathConstructor assetPathConstructor,
-            JavaScriptStackSource javascriptStackSource,
-
-            @Symbol(SymbolConstants.COMBINE_SCRIPTS)
-            boolean combineScripts)
-    {
-        this.threadLocale = threadLocale;
-        this.assetPathConstructor = assetPathConstructor;
-        this.javascriptStackSource = javascriptStackSource;
-        this.combineScripts = combineScripts;
-    }
-
-    public List<String> constructPathsForJavaScriptStack(String stackName)
-    {
-        JavaScriptStack stack = javascriptStackSource.getStack(stackName);
-
-        List<Asset> assets = stack.getJavaScriptLibraries();
-
-        if (assets.size() > 1 && combineScripts)
-            return combinedStackURL(stackName);
-
-        return toPaths(assets);
-    }
-
-    private List<String> toPaths(List<Asset> assets)
-    {
-        assert assets != null;
-        return F.flow(assets).map(toPath).toList();
-    }
-
-    private List<String> combinedStackURL(String stackName)
-    {
-        String path = String.format("%s/%s.js", threadLocale.getLocale().toString(), stackName);
-
-        String stackURL = assetPathConstructor.constructAssetPath(RequestConstants.STACK_FOLDER, path);
-
-        return CollectionFactory.newList(stackURL);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
deleted file mode 100644
index 9c95703..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/javascript/JavaScriptStackSourceImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.javascript;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-
-public class JavaScriptStackSourceImpl implements JavaScriptStackSource
-{
-    private final Map<String, JavaScriptStack> configuration;
-
-    public JavaScriptStackSourceImpl(Map<String, JavaScriptStack> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public JavaScriptStack getStack(String name)
-    {
-        JavaScriptStack stack = configuration.get(name);
-
-        if (stack == null)
-            throw new UnknownValueException(String.format("No JavaScriptStack with name '%s'.", name),
-                    new AvailableValues("Configured JavaScript stacks", configuration));
-
-        return stack;
-    }
-
-    public List<String> getStackNames()
-    {
-        return F.flow(configuration.keySet()).sort().toList();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
deleted file mode 100644
index 7a66e7c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.linktransform;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
-
-public class LinkTransformerImpl implements LinkTransformer
-{
-    private final ComponentEventLinkTransformer componentEventLinkTransformer;
-
-    private final PageRenderLinkTransformer pageRenderLinkTransformer;
-
-    public LinkTransformerImpl(@Primary
-    ComponentEventLinkTransformer componentEventLinkTransformer, @Primary
-    PageRenderLinkTransformer pageRenderLinkTransformer)
-    {
-        this.componentEventLinkTransformer = componentEventLinkTransformer;
-        this.pageRenderLinkTransformer = pageRenderLinkTransformer;
-    }
-
-    public Link transformComponentEventLink(Link defaultLink, ComponentEventRequestParameters parameters)
-    {
-        return or(componentEventLinkTransformer.transformComponentEventLink(defaultLink, parameters), defaultLink);
-    }
-
-    public Link transformPageRenderLink(Link defaultLink, PageRenderRequestParameters parameters)
-    {
-        return or(pageRenderLinkTransformer.transformPageRenderLink(defaultLink, parameters), defaultLink);
-    }
-
-    public ComponentEventRequestParameters decodeComponentEventRequest(Request request)
-    {
-        return componentEventLinkTransformer.decodeComponentEventRequest(request);
-    }
-
-    public PageRenderRequestParameters decodePageRenderRequest(Request request)
-    {
-        return pageRenderLinkTransformer.decodePageRenderRequest(request);
-    }
-
-    private Link or(Link left, Link right)
-    {
-        return left != null ? left : right;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
deleted file mode 100644
index f18f471..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/linktransform/LinkTransformerInterceptor.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.linktransform;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-
-/**
- * Intercepts some methods of {@link ComponentEventLinkEncoder}, passing the returned {@link Link}s
- * through methods of{@link LinkTransformer}.
- * 
- * @since 5.2.0
- */
-public class LinkTransformerInterceptor implements ComponentEventLinkEncoder
-{
-    private final LinkTransformer linkTransformer;
-
-    private final ComponentEventLinkEncoder delegate;
-
-    public LinkTransformerInterceptor(LinkTransformer linkTransformer, ComponentEventLinkEncoder delegate)
-    {
-        this.linkTransformer = linkTransformer;
-        this.delegate = delegate;
-    }
-
-    public Link createComponentEventLink(ComponentEventRequestParameters parameters, boolean forForm)
-    {
-        return linkTransformer.transformComponentEventLink(delegate.createComponentEventLink(parameters, forForm),
-                parameters);
-    }
-
-    public Link createPageRenderLink(PageRenderRequestParameters parameters)
-    {
-        return linkTransformer.transformPageRenderLink(delegate.createPageRenderLink(parameters), parameters);
-    }
-
-    public ComponentEventRequestParameters decodeComponentEventRequest(Request request)
-    {
-        ComponentEventRequestParameters parameters = linkTransformer.decodeComponentEventRequest(request);
-
-        if (parameters == null)
-            parameters = delegate.decodeComponentEventRequest(request);
-
-        return parameters;
-    }
-
-    public PageRenderRequestParameters decodePageRenderRequest(Request request)
-    {
-        PageRenderRequestParameters parameters = linkTransformer.decodePageRenderRequest(request);
-
-        if (parameters == null)
-            parameters = delegate.decodePageRenderRequest(request);
-
-        return parameters;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java
deleted file mode 100644
index 581a1dd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImpl.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.messages;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.Map;
-import java.util.Properties;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.messages.PropertiesFileParser;
-
-public class PropertiesFileParserImpl implements PropertiesFileParser
-{
-    /**
-     * Charset used when reading a properties file.
-     */
-    private static final String CHARSET = "UTF-8";
-
-    /**
-     * Buffer size used when reading a properties file.
-     */
-    private static final int BUFFER_SIZE = 2000;
-
-    public Map<String, String> parsePropertiesFile(Resource resource) throws IOException
-    {
-        Map<String, String> result = CollectionFactory.newCaseInsensitiveMap();
-
-        Properties p = new Properties();
-        InputStream is = null;
-
-        try
-        {
-
-            is = readUTFStreamToEscapedASCII(resource.openStream());
-
-            // Ok, now we have the content read into memory as UTF-8, not ASCII.
-
-            p.load(is);
-
-            is.close();
-
-            is = null;
-        }
-        finally
-        {
-            InternalUtils.close(is);
-        }
-
-        for (Map.Entry e : p.entrySet())
-        {
-            String key = e.getKey().toString();
-
-            String value = p.getProperty(key);
-
-            result.put(key, value);
-        }
-
-        return result;
-    }
-
-    /**
-     * Reads a UTF-8 stream, performing a conversion to ASCII (i.e., ISO8859-1 encoding). Characters outside the normal
-     * range for ISO8859-1 are converted to unicode escapes. In effect, Tapestry is performing native2ascii on the
-     * files, on the fly.
-     */
-    private static InputStream readUTFStreamToEscapedASCII(InputStream is) throws IOException
-    {
-        Reader reader = new InputStreamReader(is, CHARSET);
-
-        StringBuilder builder = new StringBuilder(BUFFER_SIZE);
-        char[] buffer = new char[BUFFER_SIZE];
-
-        while (true)
-        {
-            int length = reader.read(buffer);
-
-            if (length < 0)
-                break;
-
-            for (int i = 0; i < length; i++)
-            {
-                char ch = buffer[i];
-
-                if (ch <= '\u007f')
-                {
-                    builder.append(ch);
-                    continue;
-                }
-
-                builder.append(String.format("\\u%04x", (int) ch));
-            }
-        }
-
-        reader.close();
-
-        byte[] resourceContent = builder.toString().getBytes();
-
-        return new ByteArrayInputStream(resourceContent);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/ContentTypeExtractor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/ContentTypeExtractor.java
deleted file mode 100644
index d5e3e68..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/ContentTypeExtractor.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.meta;
-
-import org.apache.tapestry5.MetaDataConstants;
-import org.apache.tapestry5.annotations.ContentType;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.meta.MetaDataExtractor;
-
-public class ContentTypeExtractor implements MetaDataExtractor<ContentType>
-{
-    public void extractMetaData(MutableComponentModel model, ContentType annotation)
-    {
-        model.setMeta(MetaDataConstants.RESPONSE_CONTENT_TYPE, annotation.value());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/MetaAnnotationExtractor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/MetaAnnotationExtractor.java
deleted file mode 100644
index cab5fb8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/MetaAnnotationExtractor.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.meta;
-
-import org.apache.tapestry5.annotations.Meta;
-import org.apache.tapestry5.internal.KeyValue;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.meta.MetaDataExtractor;
-
-public class MetaAnnotationExtractor implements MetaDataExtractor<Meta>
-{
-    public void extractMetaData(MutableComponentModel model, Meta annotation)
-    {
-        for (String meta : annotation.value())
-        {
-            KeyValue kv = TapestryInternalUtils.parseKeyValue(meta);
-
-            model.setMeta(kv.getKey(), kv.getValue());
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/MetaWorkerImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/MetaWorkerImpl.java
deleted file mode 100644
index 14273a4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/meta/MetaWorkerImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.meta;
-
-import java.lang.annotation.Annotation;
-import java.util.Map;
-
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.meta.MetaDataExtractor;
-import org.apache.tapestry5.services.meta.MetaWorker;
-
-@SuppressWarnings("unchecked")
-public class MetaWorkerImpl implements MetaWorker
-{
-    private final Map<Class, MetaDataExtractor> configuration;
-
-    public MetaWorkerImpl(Map<Class, MetaDataExtractor> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (Class c : configuration.keySet())
-        {
-            Annotation annotation = transformation.getAnnotation(c);
-
-            if (annotation != null)
-            {
-                MetaDataExtractor extractor = configuration.get(c);
-
-                extractor.extractMetaData(model, annotation);
-            }
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
deleted file mode 100644
index 97d4baf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/DefaultTemplateLocator.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.templates;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-
-public class DefaultTemplateLocator implements ComponentTemplateLocator
-{
-    public Resource locateTemplate(ComponentModel model, Locale locale)
-    {
-        return model.getBaseResource().withExtension(TapestryConstants.TEMPLATE_EXTENSION).forLocale(locale);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java
deleted file mode 100644
index 30cf6d3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/templates/PageTemplateLocator.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.templates;
-
-import static java.lang.String.format;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-
-/**
- * The special case for pages, where the template is searched for in the web application context.
- * 
- * @since 5.2.0
- */
-public class PageTemplateLocator implements ComponentTemplateLocator
-{
-    private final Resource contextRoot;
-
-    private final ComponentClassResolver resolver;
-
-    public PageTemplateLocator(Resource contextRoot, ComponentClassResolver resolver)
-    {
-        this.contextRoot = contextRoot;
-        this.resolver = resolver;
-    }
-
-    public Resource locateTemplate(ComponentModel model, Locale locale)
-    {
-        String className = model.getComponentClassName();
-
-        // A bit of a hack, but should work.
-
-        if (!className.contains(".pages."))
-            return null;
-
-        String logicalName = resolver.resolvePageClassNameToPageName(className);
-
-        int slashx = logicalName.lastIndexOf('/');
-
-        if (slashx > 0)
-        {
-            // However, the logical name isn't quite what we want. It may have been somewhat
-            // trimmed.
-
-            String simpleClassName = InternalUtils.lastTerm(className);
-
-            logicalName = logicalName.substring(0, slashx + 1) + simpleClassName;
-        }
-
-        String path = format("%s.%s", logicalName, TapestryConstants.TEMPLATE_EXTENSION);
-
-        return contextRoot.forFile(path).forLocale(locale);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/AbstractComponentCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/AbstractComponentCallback.java
deleted file mode 100644
index aa627e0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/AbstractComponentCallback.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.runtime.Event;
-
-/**
- * Base class for most implementations of {@link org.apache.tapestry5.internal.structure.ComponentCallback}, used when
- * there is an underlying {@link org.apache.tapestry5.runtime.Event}.
- *
- * @see LifecycleNotificationComponentCallback
- */
-public abstract class AbstractComponentCallback implements ComponentCallback
-{
-    private final Event event;
-
-    public AbstractComponentCallback(Event event)
-    {
-        this.event = event;
-    }
-
-    public boolean isEventAborted()
-    {
-        return event.isAborted();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java
deleted file mode 100644
index 5caa9b2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BlockImpl.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-import java.util.List;
-
-public class BlockImpl extends BaseLocatable implements Block, BodyPageElement, RenderCommand
-{
-    // We could lazily create this, but for (parameter) block elements the case
-    // for an empty block is extremely rare.
-
-    private final List<RenderCommand> elements = CollectionFactory.newList();
-
-    private final String description;
-
-    public BlockImpl(Location location, String description)
-    {
-        super(location);
-
-        this.description = description;
-    }
-
-    public void addToBody(RenderCommand element)
-    {
-        elements.add(element);
-    }
-
-    /**
-     * Pushes all the elements of the body of this block onto the queue in appropriate order.
-     */
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        int count = elements.size();
-        for (int i = count - 1; i >= 0; i--)
-            queue.push(elements.get(i));
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Block[%s, at %s]", description, getLocation());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BodyPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BodyPageElement.java
deleted file mode 100644
index 6a2da64..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/BodyPageElement.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.runtime.RenderCommand;
-
-/**
- * A type of page element that has a body that can be added to. This is part of the constuction phase that is faciliated
- * by the {@link org.apache.tapestry5.internal.services.PageLoader}.
- */
-public interface BodyPageElement
-{
-    /**
-     * Used during the construction of the page. Adds a page element as part of the body of the component. The body of a
-     * component is defined as the portion of the container's template directly enclosed by component's start and end
-     * elements.
-     */
-    void addToBody(RenderCommand element);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/CommentPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/CommentPageElement.java
deleted file mode 100644
index da65a69..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/CommentPageElement.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.parser.CommentToken;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-/**
- * Renders a text comment.
- *
- * @see CommentToken
- */
-public class CommentPageElement implements RenderCommand
-{
-    private final String text;
-
-    public CommentPageElement(final String text)
-    {
-        this.text = text;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        writer.comment(text);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Comment[%s]", text);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentCallback.java
deleted file mode 100644
index 10d470a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentCallback.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.runtime.Component;
-
-/**
- * Callback interface, used when invoking lifecycle methods on components.
- */
-public interface ComponentCallback
-{
-    /**
-     * Callback method, passed a component to operate upon.
-     */
-    void run(Component component);
-
-    /**
-     * Returns true if the underlying event has been aborted and no further event method invocations should occur.
-     *
-     * @return true if the event is aborted, false if event processing should continue
-     * @see org.apache.tapestry5.runtime.Event#isAborted()
-     */
-    boolean isEventAborted();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
deleted file mode 100644
index b72d994..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElement.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ComponentResourcesCommon;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.InternalComponentResourcesCommon;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.runtime.*;
-import org.slf4j.Logger;
-
-/**
- * Defines an element of a page that is a component elements that are, in fact, components (rather than just static
- * markup).
- */
-public interface ComponentPageElement extends ComponentResourcesCommon, InternalComponentResourcesCommon, RenderCommand, BodyPageElement, PageLifecycleListener
-{
-    /**
-     * Returns the core component associated with this page element (as opposed to any mixins attached to the
-     * component).
-     */
-    Component getComponent();
-
-    /**
-     * Returns the resources associated with the core component.
-     */
-    InternalComponentResources getComponentResources();
-
-    /**
-     * Returns the page which contains this component.
-     */
-    Page getContainingPage();
-
-    /**
-     * Containing component (or null for the root component of a page).
-     */
-    ComponentPageElement getContainerElement();
-
-    /**
-     * Used during the construction of a page. Adds a page element as part of the template for this page element. A page
-     * element will eventually render by sequentially rendering these elements. A page elements template is really just
-     * the outermost portions of the component's template ... where a template contains elements that are all
-     * components, those components will receive portions of the template as their body.
-     */
-    void addToTemplate(RenderCommand element);
-
-    /**
-     * Used during the contruction of a page to add a non-anonymous Block to the component.
-     *
-     * @see ComponentResourcesCommon#getBlock(String)
-     */
-    void addBlock(String blockId, Block block);
-
-    /**
-     * Adds a mixin.
-     *
-     * @param mixinId      a unique id for the mixin, the last term of the mixin's class name
-     * @param instantiator used to instantiate an instance of the mixin
-     * @param order        Ordering strings used to determine the order of mixin execution.
-     */
-    void addMixin(String mixinId, Instantiator instantiator, String... order);
-
-    /**
-     * @param mixinId       id of previously added mixin
-     * @param parameterName simple (unqualified) name of parameter
-     * @param binding       binding for parameter
-     * @since 5.1.0.0
-     */
-    void bindMixinParameter(String mixinId, String parameterName, Binding binding);
-
-    /**
-     * Retrieves a component page element by its id. The search is caseless.
-     *
-     * @param id used to locate the element
-     * @return the page element
-     * @throws IllegalArgumentException if no component exists with the given id
-     */
-    ComponentPageElement getEmbeddedElement(String id);
-
-    /**
-     * Returns the {@link org.apache.tapestry5.ComponentResources} for a mixin attached to this component element. Mixin
-     * ids are the simple names of the mixin class.
-     *
-     * @param mixinId the mixin id (case insensitive)
-     * @return the resources for the component
-     * @throws IllegalArgumentException if no mixin with the given id exists
-     */
-    ComponentResources getMixinResources(String mixinId);
-
-    /**
-     * Invoked when the component should render its body.
-     */
-    void enqueueBeforeRenderBody(RenderQueue queue);
-
-    /**
-     * Asks each mixin and component to {@link Component#dispatchComponentEvent(ComponentEvent)}, returning true if any
-     * handler was found.
-     *
-     * @param event to be handled
-     * @return true if a handler was found
-     */
-    boolean dispatchEvent(ComponentEvent event);
-
-    /**
-     * Creates a new child component of the invoked component.  The new element will be added as an embedded element of
-     * its container.
-     *
-     * @param id           simple id of the new component
-     * @param nestedId
-     * @param completeId
-     * @param elementName  name of the component's element in its container's template
-     * @param instantiator used to create a component instance, and access the component's model
-     * @param location     location of the element within its container's template @return the new component
-     */
-    ComponentPageElement newChild(String id, String nestedId, String completeId, String elementName,
-                                  Instantiator instantiator,
-                                  Location location);
-
-    /**
-     * Returns a logger used to for logging event dispatch and event method invocation.
-     */
-    Logger getEventLogger();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
deleted file mode 100644
index 13825dd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementImpl.java
+++ /dev/null
@@ -1,1302 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.AfterRenderBody;
-import org.apache.tapestry5.annotations.AfterRenderTemplate;
-import org.apache.tapestry5.annotations.BeforeRenderTemplate;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.CleanupRender;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.AbstractEventContext;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.services.ComponentEventImpl;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.util.NotificationEventCallback;
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.Orderer;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.ParameterModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.runtime.ComponentEventException;
-import org.apache.tapestry5.runtime.Event;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.slf4j.Logger;
-
-/**
- * Implements {@link RenderCommand} and represents a component within an overall page. Much of a
- * component page
- * element's behavior is delegated to user code, via a {@link org.apache.tapestry5.runtime.Component} instance.
- * <p/>
- * Once instantiated, a ComponentPageElement should be registered as a
- * {@linkplain org.apache.tapestry5.internal.structure.Page#addLifecycleListener(org.apache.tapestry5.runtime.PageLifecycleListener)
- * lifecycle listener}. This could be done inside the constructors, but that tends to complicate unit tests, so its done
- * by {@link org.apache.tapestry5.internal.services.PageElementFactoryImpl}. There's still a bit of refactoring in this
- * class (and its many inner classes) that can improve overall efficiency.
- * <p>
- * Modified for Tapestry 5.2 to adjust for the no-pooling approach (shared instances with externalized mutable state).
- */
-public class ComponentPageElementImpl extends BaseLocatable implements ComponentPageElement, PageLifecycleListener
-{
-    /**
-     * Placeholder for the body used when the component has no real content.
-     */
-    private static class PlaceholderBlock implements Block, Renderable
-    {
-        public void render(MarkupWriter writer)
-        {
-        }
-
-        @Override
-        public String toString()
-        {
-            return "<PlaceholderBlock>";
-        }
-    }
-
-    private static final Block PLACEHOLDER_BLOCK = new PlaceholderBlock();
-
-    private static final ComponentCallback RESTORE_STATE_BEFORE_PAGE_ATTACH = new LifecycleNotificationComponentCallback()
-    {
-        public void run(Component component)
-        {
-            component.restoreStateBeforePageAttach();
-        }
-    };
-
-    private static final ComponentCallback CONTAINING_PAGE_DID_ATTACH = new LifecycleNotificationComponentCallback()
-    {
-        public void run(Component component)
-        {
-            component.containingPageDidAttach();
-        }
-    };
-
-    private static final ComponentCallback CONTAINING_PAGE_DID_DETACH = new LifecycleNotificationComponentCallback()
-    {
-        public void run(Component component)
-        {
-            component.containingPageDidDetach();
-        }
-    };
-
-    private static final ComponentCallback CONTAINING_PAGE_DID_LOAD = new LifecycleNotificationComponentCallback()
-    {
-        public void run(Component component)
-        {
-            component.containingPageDidLoad();
-        }
-    };
-
-    private static final ComponentCallback POST_RENDER_CLEANUP = new LifecycleNotificationComponentCallback()
-    {
-        public void run(Component component)
-        {
-            component.postRenderCleanup();
-        }
-    };
-
-    // For the moment, every component will have a template, even if it consists of
-    // just a page element to queue up a BeforeRenderBody phase.
-
-    private static void pushElements(RenderQueue queue, List<RenderCommand> list)
-    {
-        int count = size(list);
-        for (int i = count - 1; i >= 0; i--)
-            queue.push(list.get(i));
-    }
-
-    private static int size(List<?> list)
-    {
-        return list == null ? 0 : list.size();
-    }
-
-    private abstract class AbstractPhase implements RenderCommand
-    {
-        private final String name;
-
-        private final boolean reverse;
-
-        AbstractPhase(String name)
-        {
-            this(name, false);
-        }
-
-        AbstractPhase(String name, boolean reverse)
-        {
-            this.name = name;
-            this.reverse = reverse;
-        }
-
-        @Override
-        public String toString()
-        {
-            return phaseToString(name);
-        }
-
-        void invoke(MarkupWriter writer, Event event)
-        {
-            try
-            {
-                if (components == null)
-                {
-                    invokeComponent(coreComponent, writer, event);
-                    return;
-                }
-
-                // Multiple components (i.e., some mixins).
-
-                Iterator<Component> i = reverse ? InternalUtils.reverseIterator(components) : components.iterator();
-
-                while (i.hasNext())
-                {
-                    invokeComponent(i.next(), writer, event);
-
-                    if (event.isAborted())
-                        break;
-                }
-            }
-            catch (RuntimeException ex)
-            {
-                throw new TapestryException(ex.getMessage(), getLocation(), ex);
-            }
-
-        }
-
-        /**
-         * Each concrete class implements this method to branch to the corresponding method
-         * of {@link Component}.
-         */
-        protected abstract void invokeComponent(Component component, MarkupWriter writer, Event event);
-    }
-
-    private class SetupRenderPhase extends AbstractPhase
-    {
-        public SetupRenderPhase()
-        {
-            super("SetupRender");
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.setupRender(writer, event);
-        }
-
-        public void render(MarkupWriter writer, RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, event.getResult(), beginRenderPhase, cleanupRenderPhase);
-
-            event.reset();
-        }
-    }
-
-    private class BeginRenderPhase extends AbstractPhase
-    {
-        private BeginRenderPhase()
-        {
-            super("BeginRender");
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.beginRender(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, final RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, afterRenderPhase);
-            push(queue, event.getResult(), beforeRenderTemplatePhase, null);
-
-            event.reset();
-        }
-    }
-
-    /**
-     * Replaces {@link org.apache.tapestry5.internal.structure.ComponentPageElementImpl.BeginRenderPhase} when there is
-     * a handler for AfterRender but not BeginRender.
-     */
-    private class OptimizedBeginRenderPhase implements RenderCommand
-    {
-        public void render(MarkupWriter writer, RenderQueue queue)
-        {
-            push(queue, afterRenderPhase);
-            push(queue, beforeRenderTemplatePhase);
-        }
-
-        @Override
-        public String toString()
-        {
-            return phaseToString("OptimizedBeginRenderPhase");
-        }
-    }
-
-    /**
-     * Reponsible for rendering the component's template. Even a component that doesn't have a
-     * template goes through
-     * this phase, as a synthetic template (used to trigger the rendering of the component's body)
-     * will be supplied.
-     */
-    private class BeforeRenderTemplatePhase extends AbstractPhase
-    {
-        private BeforeRenderTemplatePhase()
-        {
-            super("BeforeRenderTemplate");
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.beforeRenderTemplate(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, final RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, afterRenderTemplatePhase);
-
-            if (event.getResult())
-                pushElements(queue, template);
-
-            event.reset();
-        }
-    }
-
-    /**
-     * Alternative version of BeforeRenderTemplatePhase used when the BeforeRenderTemplate render
-     * phase is not handled.
-     */
-    private class RenderTemplatePhase implements RenderCommand
-    {
-        public void render(MarkupWriter writer, RenderQueue queue)
-        {
-            push(queue, afterRenderTemplatePhase);
-
-            pushElements(queue, template);
-        }
-
-        @Override
-        public String toString()
-        {
-            return phaseToString("RenderTemplate");
-        }
-    }
-
-    private class BeforeRenderBodyPhase extends AbstractPhase
-    {
-        private BeforeRenderBodyPhase()
-        {
-            super("BeforeRenderBody");
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.beforeRenderBody(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, afterRenderBodyPhase);
-
-            if (event.getResult() && bodyBlock != null)
-                queue.push(bodyBlock);
-
-            event.reset();
-        }
-    }
-
-    private class AfterRenderBodyPhase extends AbstractPhase
-    {
-
-        private AfterRenderBodyPhase()
-        {
-            super("AfterRenderBody", true);
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.afterRenderBody(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, event.getResult(), null, beforeRenderBodyPhase);
-
-            event.reset();
-        }
-    }
-
-    private class AfterRenderTemplatePhase extends AbstractPhase
-    {
-        private AfterRenderTemplatePhase()
-        {
-            super("AfterRenderTemplate", true);
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.afterRenderTemplate(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, final RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, event.getResult(), null, beforeRenderTemplatePhase);
-
-            event.reset();
-        }
-    }
-
-    private class AfterRenderPhase extends AbstractPhase
-    {
-        private AfterRenderPhase()
-        {
-            super("AfterRender", true);
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.afterRender(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, event.getResult(), cleanupRenderPhase, beginRenderPhase);
-
-            event.reset();
-        }
-    }
-
-    private class CleanupRenderPhase extends AbstractPhase
-    {
-        private CleanupRenderPhase()
-        {
-            super("CleanupRender", true);
-        }
-
-        protected void invokeComponent(Component component, MarkupWriter writer, Event event)
-        {
-            component.cleanupRender(writer, event);
-        }
-
-        public void render(final MarkupWriter writer, RenderQueue queue)
-        {
-            RenderPhaseEvent event = createRenderEvent(queue);
-
-            invoke(writer, event);
-
-            push(queue, event.getResult(), null, setupRenderPhase);
-
-            event.reset();
-        }
-    }
-
-    private class PostRenderCleanupPhase implements RenderCommand
-    {
-        /**
-         * Used to detect mismatches calls to {@link MarkupWriter#element(String, Object[])} and
-         * {@link org.apache.tapestry5.MarkupWriter#end()}. The expectation is that any element(s)
-         * begun by this component
-         * during rendering will be balanced by end() calls, resulting in the current element
-         * reverting to its initial
-         * value.
-         */
-        private final Element expectedElementAtCompletion;
-
-        PostRenderCleanupPhase(Element expectedElementAtCompletion)
-        {
-            this.expectedElementAtCompletion = expectedElementAtCompletion;
-        }
-
-        public void render(MarkupWriter writer, RenderQueue queue)
-        {
-            rendering.set(false);
-
-            Element current = writer.getElement();
-
-            if (current != expectedElementAtCompletion)
-                throw new TapestryException(StructureMessages.unbalancedElements(completeId), getLocation(), null);
-
-            invoke(false, POST_RENDER_CLEANUP);
-
-            queue.endComponent();
-
-            // Now and only now the component is done rendering and fully cleaned up. Decrement
-            // the page's dirty count. If the entire render goes well, then the page will be
-            // clean and can be stored into the pool for later reuse.
-
-            page.decrementDirtyCount();
-        }
-
-        @Override
-        public String toString()
-        {
-            return phaseToString("PostRenderCleanup");
-        }
-    }
-
-    private Map<String, Block> blocks;
-
-    private BlockImpl bodyBlock;
-
-    private Map<String, ComponentPageElement> children;
-
-    private final String elementName;
-
-    private final Logger eventLogger;
-
-    private final String completeId;
-
-    // The user-provided class, with runtime code enhancements. In a component with mixins, this
-    // is the component to which the mixins are attached.
-    private final Component coreComponent;
-
-    /**
-     * Component lifecycle instances for all mixins; the core component is added to this list during
-     * page load. This is only used in the case that a component has mixins (in which case, the core component is
-     * listed last).
-     */
-    private List<Component> components = null;
-
-    private final ComponentPageElementResources elementResources;
-
-    private final ComponentPageElement container;
-
-    private final InternalComponentResources coreResources;
-
-    private final String id;
-
-    private Orderer<Component> mixinBeforeOrderer;
-
-    private Orderer<Component> mixinAfterOrderer;
-
-    private boolean loaded;
-
-    /**
-     * Map from mixin id (the simple name of the mixin class) to resources for the mixin. Created
-     * when first mixin is
-     * added.
-     */
-    private Map<String, InternalComponentResources> mixinIdToComponentResources;
-
-    private final String nestedId;
-
-    private final Page page;
-
-    private final PerThreadValue<RenderPhaseEvent> renderEvent;
-
-    private final PerThreadValue<Boolean> rendering;
-
-    // We know that, at the very least, there will be an element to force the component to render
-    // its body, so there's no reason to wait to initialize the list.
-
-    private final List<RenderCommand> template = CollectionFactory.newList();
-
-    private RenderCommand setupRenderPhase, beginRenderPhase, beforeRenderTemplatePhase, beforeRenderBodyPhase,
-            afterRenderBodyPhase, afterRenderTemplatePhase, afterRenderPhase, cleanupRenderPhase;
-
-    /**
-     * Constructor for other components embedded within the root component or at deeper levels of
-     * the hierarchy.
-     * 
-     * @param page
-     *            ultimately containing this component
-     * @param container
-     *            component immediately containing this component (may be null for a root component)
-     * @param id
-     *            unique (within the container) id for this component (may be null for a root
-     *            component)
-     * @param elementName
-     *            the name of the element which represents this component in the template, or null
-     *            for
-     *            &lt;comp&gt; element or a page component
-     * @param instantiator
-     *            used to create the new component instance and access the component's model
-     * @param location
-     *            location of the element (within a template), used as part of exception reporting
-     * @param elementResources
-     *            Provides access to common methods of various services
-     */
-    ComponentPageElementImpl(Page page, ComponentPageElement container, String id, String nestedId, String completeId,
-            String elementName, Instantiator instantiator, Location location,
-            ComponentPageElementResources elementResources)
-    {
-        super(location);
-
-        this.page = page;
-        this.container = container;
-        this.id = id;
-        this.nestedId = nestedId;
-        this.completeId = completeId;
-        this.elementName = elementName;
-        this.elementResources = elementResources;
-
-        ComponentResources containerResources = container == null ? null : container.getComponentResources();
-
-        coreResources = new InternalComponentResourcesImpl(this.page, this, containerResources, this.elementResources,
-                completeId, nestedId, instantiator, false);
-
-        coreComponent = coreResources.getComponent();
-
-        eventLogger = elementResources.getEventLogger(coreResources.getLogger());
-
-        renderEvent = elementResources.createPerThreadValue();
-        rendering = elementResources.createPerThreadValue();
-    }
-
-    /**
-     * Constructor for the root component of a page.
-     */
-    public ComponentPageElementImpl(Page page, Instantiator instantiator, ComponentPageElementResources elementResources)
-    {
-        this(page, null, null, null, page.getName(), null, instantiator, null, elementResources);
-    }
-
-    private void initializeRenderPhases()
-    {
-        setupRenderPhase = new SetupRenderPhase();
-        beginRenderPhase = new BeginRenderPhase();
-        beforeRenderTemplatePhase = new BeforeRenderTemplatePhase();
-        beforeRenderBodyPhase = new BeforeRenderBodyPhase();
-        afterRenderBodyPhase = new AfterRenderBodyPhase();
-        afterRenderTemplatePhase = new AfterRenderTemplatePhase();
-        afterRenderPhase = new AfterRenderPhase();
-        cleanupRenderPhase = new CleanupRenderPhase();
-
-        // Now the optimization, where we remove, replace and collapse unused phases. We use
-        // the component models to determine which phases have handler methods for the
-        // render phases.
-
-        Set<Class> handled = coreResources.getComponentModel().getHandledRenderPhases();
-
-        if (mixinIdToComponentResources != null)
-        {
-            for (ComponentResources r : mixinIdToComponentResources.values())
-                handled.addAll(r.getComponentModel().getHandledRenderPhases());
-        }
-
-        if (!handled.contains(CleanupRender.class))
-            cleanupRenderPhase = null;
-
-        // Now, work back to front.
-
-        if (!handled.contains(AfterRender.class))
-            afterRenderPhase = cleanupRenderPhase;
-
-        if (!handled.contains(AfterRenderTemplate.class))
-            afterRenderTemplatePhase = null;
-
-        if (!handled.contains(AfterRenderBody.class))
-            afterRenderBodyPhase = null;
-
-        if (!handled.contains(BeforeRenderTemplate.class))
-            beforeRenderTemplatePhase = new RenderTemplatePhase();
-
-        if (!handled.contains(BeginRender.class))
-        {
-            RenderCommand replacement = afterRenderPhase != null ? new OptimizedBeginRenderPhase()
-                    : beforeRenderTemplatePhase;
-
-            beginRenderPhase = replacement;
-        }
-
-        if (!handled.contains(SetupRender.class))
-            setupRenderPhase = beginRenderPhase;
-    }
-
-    public ComponentPageElement newChild(String id, String nestedId, String completeId, String elementName,
-            Instantiator instantiator, Location location)
-    {
-        ComponentPageElementImpl child = new ComponentPageElementImpl(page, this, id, nestedId, completeId,
-                elementName, instantiator, location, elementResources);
-
-        addEmbeddedElement(child);
-
-        return child;
-    }
-
-    void push(RenderQueue queue, boolean forward, RenderCommand forwardPhase, RenderCommand backwardPhase)
-    {
-        push(queue, forward ? forwardPhase : backwardPhase);
-    }
-
-    void push(RenderQueue queue, RenderCommand nextPhase)
-    {
-        if (nextPhase != null)
-            queue.push(nextPhase);
-    }
-
-    void addEmbeddedElement(ComponentPageElement child)
-    {
-        if (children == null)
-            children = CollectionFactory.newCaseInsensitiveMap();
-
-        String childId = child.getId();
-
-        ComponentPageElement existing = children.get(childId);
-
-        if (existing != null)
-            throw new TapestryException(StructureMessages.duplicateChildComponent(this, childId), child,
-                    new TapestryException(StructureMessages.originalChildComponent(this, childId,
-                            existing.getLocation()), existing, null));
-
-        children.put(childId, child);
-    }
-
-    public void addMixin(String mixinId, Instantiator instantiator, String... order)
-    {
-        if (mixinIdToComponentResources == null)
-        {
-            mixinIdToComponentResources = CollectionFactory.newCaseInsensitiveMap();
-            components = CollectionFactory.newList();
-        }
-
-        String mixinExtension = "$" + mixinId.toLowerCase();
-
-        InternalComponentResourcesImpl resources = new InternalComponentResourcesImpl(page, this, coreResources,
-                elementResources, completeId + mixinExtension, nestedId + mixinExtension, instantiator, true);
-
-        mixinIdToComponentResources.put(mixinId, resources);
-        // note that since we're using explicit ordering now,
-        // we don't add anything to components until we page load; instead, we add
-        // to the orderers.
-        if (order == null)
-            order = InternalConstants.EMPTY_STRING_ARRAY;
-
-        if (resources.getComponentModel().isMixinAfter())
-        {
-            if (mixinAfterOrderer == null)
-                mixinAfterOrderer = new Orderer<Component>(getLogger());
-            mixinAfterOrderer.add(mixinId, resources.getComponent(), order);
-        }
-        else
-        {
-            if (mixinBeforeOrderer == null)
-                mixinBeforeOrderer = new Orderer<Component>(getLogger());
-            mixinBeforeOrderer.add(mixinId, resources.getComponent(), order);
-        }
-    }
-
-    public void bindMixinParameter(String mixinId, String parameterName, Binding binding)
-    {
-        InternalComponentResources mixinResources = InternalUtils.get(mixinIdToComponentResources, mixinId);
-
-        mixinResources.bindParameter(parameterName, binding);
-    }
-
-    public Binding getBinding(String parameterName)
-    {
-        return coreResources.getBinding(parameterName);
-    }
-
-    public void bindParameter(String parameterName, Binding binding)
-    {
-        coreResources.bindParameter(parameterName, binding);
-    }
-
-    public void addToBody(RenderCommand element)
-    {
-        if (bodyBlock == null)
-            bodyBlock = new BlockImpl(getLocation(), "Body of " + getCompleteId());
-
-        bodyBlock.addToBody(element);
-    }
-
-    public void addToTemplate(RenderCommand element)
-    {
-        template.add(element);
-    }
-
-    private void addUnboundParameterNames(String prefix, List<String> unbound, InternalComponentResources resource)
-    {
-        ComponentModel model = resource.getComponentModel();
-
-        for (String name : model.getParameterNames())
-        {
-            if (resource.isBound(name))
-                continue;
-
-            ParameterModel parameterModel = model.getParameterModel(name);
-
-            if (parameterModel.isRequired())
-            {
-                String fullName = prefix == null ? name : prefix + "." + name;
-
-                unbound.add(fullName);
-            }
-        }
-    }
-
-    public void restoreStateBeforePageAttach()
-    {
-        invoke(false, RESTORE_STATE_BEFORE_PAGE_ATTACH);
-    }
-
-    public void containingPageDidAttach()
-    {
-        invoke(false, CONTAINING_PAGE_DID_ATTACH);
-    }
-
-    public void containingPageDidDetach()
-    {
-        invoke(false, CONTAINING_PAGE_DID_DETACH);
-    }
-
-    public void containingPageDidLoad()
-    {
-        // If this component has mixins, order them according to:
-        // mixins.
-
-        if (components != null)
-        {
-            List<Component> ordered = CollectionFactory.newList();
-
-            if (mixinBeforeOrderer != null)
-                ordered.addAll(mixinBeforeOrderer.getOrdered());
-
-            ordered.add(coreComponent);
-
-            // Add the remaining, late executing mixins
-            if (mixinAfterOrderer != null)
-                ordered.addAll(mixinAfterOrderer.getOrdered());
-
-            components = ordered;
-            // no need to keep the orderers around.
-            mixinBeforeOrderer = null;
-            mixinAfterOrderer = null;
-        }
-
-        // For some parameters, bindings (from defaults) are provided inside the callback method, so
-        // that is invoked first, before we check for unbound parameters.
-
-        invoke(false, CONTAINING_PAGE_DID_LOAD);
-        verifyRequiredParametersAreBound();
-
-        // We assume that by the time we start to render, the structure (i.e., mixins) is nailed
-        // down. We could add a lock, but that seems wasteful.
-
-        initializeRenderPhases();
-
-        loaded = true;
-    }
-
-    public void enqueueBeforeRenderBody(RenderQueue queue)
-    {
-        if (bodyBlock != null)
-            push(queue, beforeRenderBodyPhase);
-    }
-
-    public String getCompleteId()
-    {
-        return completeId;
-    }
-
-    public Component getComponent()
-    {
-        return coreComponent;
-    }
-
-    public InternalComponentResources getComponentResources()
-    {
-        return coreResources;
-    }
-
-    public ComponentPageElement getContainerElement()
-    {
-        return container;
-    }
-
-    public Page getContainingPage()
-    {
-        return page;
-    }
-
-    public ComponentPageElement getEmbeddedElement(String embeddedId)
-    {
-        ComponentPageElement embeddedElement = InternalUtils.get(children, embeddedId);
-
-        if (embeddedElement == null)
-        {
-            Set<String> ids = InternalUtils.keys(children);
-
-            throw new UnknownValueException(String.format("Component %s does not contain embedded component '%s'.",
-                    getCompleteId(), embeddedId), new AvailableValues("Embedded components", ids));
-        }
-
-        return embeddedElement;
-    }
-
-    public String getId()
-    {
-        return id;
-    }
-
-    public Logger getLogger()
-    {
-        return coreResources.getLogger();
-    }
-
-    public Component getMixinByClassName(String mixinClassName)
-    {
-        Component result = mixinForClassName(mixinClassName);
-
-        if (result == null)
-            throw new TapestryException(StructureMessages.unknownMixin(completeId, mixinClassName), getLocation(), null);
-
-        return result;
-    }
-
-    private Component mixinForClassName(String mixinClassName)
-    {
-        if (mixinIdToComponentResources == null)
-            return null;
-
-        for (InternalComponentResources resources : mixinIdToComponentResources.values())
-        {
-            if (resources.getComponentModel().getComponentClassName().equals(mixinClassName)) { return resources
-                    .getComponent(); }
-        }
-
-        return null;
-    }
-
-    public ComponentResources getMixinResources(String mixinId)
-    {
-        ComponentResources result = null;
-
-        if (mixinIdToComponentResources != null)
-            result = mixinIdToComponentResources.get(mixinId);
-
-        if (result == null)
-            throw new IllegalArgumentException(String.format("Unable to locate mixin '%s' for component '%s'.",
-                    mixinId, completeId));
-
-        return result;
-    }
-
-    public String getNestedId()
-    {
-        return nestedId;
-    }
-
-    public boolean dispatchEvent(ComponentEvent event)
-    {
-        if (components == null)
-            return coreComponent.dispatchComponentEvent(event);
-
-        // Otherwise, iterate over mixins + core component
-
-        boolean result = false;
-
-        for (Component component : components)
-        {
-            result |= component.dispatchComponentEvent(event);
-
-            if (event.isAborted())
-                break;
-        }
-
-        return result;
-    }
-
-    /**
-     * Invokes a callback on the component instances (the core component plus any mixins).
-     * 
-     * @param reverse
-     *            if true, the callbacks are in the reverse of the normal order (this is associated
-     *            with AfterXXX
-     *            phases)
-     * @param callback
-     *            the object to receive each component instance
-     */
-    private void invoke(boolean reverse, ComponentCallback callback)
-    {
-        try
-        { // Optimization: In the most general case (just the one component, no mixins)
-          // invoke the callback on the component and be done ... no iterators, no nothing.
-
-            if (components == null)
-            {
-                callback.run(coreComponent);
-                return;
-            }
-
-            Iterator<Component> i = reverse ? InternalUtils.reverseIterator(components) : components.iterator();
-
-            while (i.hasNext())
-            {
-                callback.run(i.next());
-
-                if (callback.isEventAborted())
-                    return;
-            }
-        }
-        catch (RuntimeException ex)
-        {
-            throw new TapestryException(ex.getMessage(), getLocation(), ex);
-        }
-    }
-
-    public boolean isLoaded()
-    {
-        return loaded;
-    }
-
-    public boolean isRendering()
-    {
-        return rendering.get(false);
-    }
-
-    /**
-     * Generate a toString() for the inner classes that represent render phases.
-     */
-    private String phaseToString(String phaseName)
-    {
-        return String.format("%s[%s]", phaseName, completeId);
-    }
-
-    /**
-     * Pushes the SetupRender phase state onto the queue.
-     */
-    public final void render(MarkupWriter writer, RenderQueue queue)
-    {
-        // TODO: An error if the render flag is already set (recursive rendering not
-        // allowed or advisable).
-
-        // Once we start rendering, the page is considered dirty, until we cleanup post render.
-
-        page.incrementDirtyCount();
-
-        // TODO: Check for recursive rendering.
-
-        rendering.set(true);
-
-        queue.startComponent(coreResources);
-
-        queue.push(new PostRenderCleanupPhase(writer.getElement()));
-
-        push(queue, setupRenderPhase);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ComponentPageElement[%s]", completeId);
-    }
-
-    public boolean triggerEvent(String eventType, Object[] contextValues, ComponentEventCallback callback)
-    {
-        return triggerContextEvent(eventType, createParameterContext(contextValues == null ? new Object[0]
-                : contextValues), callback);
-    }
-
-    private EventContext createParameterContext(final Object... values)
-    {
-        return new AbstractEventContext()
-        {
-            public int getCount()
-            {
-                return values.length;
-            }
-
-            public <T> T get(Class<T> desiredType, int index)
-            {
-                return elementResources.coerce(values[index], desiredType);
-            }
-        };
-    }
-
-    public boolean triggerContextEvent(final String eventType, final EventContext context,
-            final ComponentEventCallback callback)
-    {
-        assert InternalUtils.isNonBlank(eventType);
-        assert context != null;
-        String description = String.format("Triggering event '%s' on %s", eventType, completeId);
-
-        return elementResources.invoke(description, new Invokable<Boolean>()
-        {
-            public Boolean invoke()
-            {
-                return processEventTriggering(eventType, context, callback);
-            }
-        });
-    }
-
-    @SuppressWarnings("all")
-    private boolean processEventTriggering(String eventType, EventContext context, ComponentEventCallback callback)
-    {
-        boolean result = false;
-
-        ComponentPageElement component = this;
-        String componentId = "";
-
-        // Provide a default handler for when the provided handler is null.
-        final ComponentEventCallback providedHandler = callback == null ? new NotificationEventCallback(eventType,
-                completeId) : callback;
-
-        ComponentEventCallback wrapped = new ComponentEventCallback()
-        {
-            public boolean handleResult(Object result)
-            {
-                // Boolean value is not passed to the handler; it will be true (abort event)
-                // or false (continue looking for event handlers).
-
-                if (result instanceof Boolean)
-                    return (Boolean) result;
-
-                return providedHandler.handleResult(result);
-            }
-        };
-
-        RuntimeException rootException = null;
-
-        // Because I don't like to reassign parameters.
-
-        String currentEventType = eventType;
-        EventContext currentContext = context;
-
-        // Track the location of the original component for the event, even as we work our way up
-        // the hierarchy. This may not be ideal if we trigger an "exception" event ... or maybe
-        // it's right (it's the location of the originally thrown exception).
-
-        Location location = component.getComponentResources().getLocation();
-
-        while (component != null)
-        {
-            try
-            {
-                Logger logger = component.getEventLogger();
-
-                ComponentEvent event = new ComponentEventImpl(currentEventType, componentId, currentContext, wrapped,
-                        elementResources, logger);
-
-                logger.debug(TapestryMarkers.EVENT_DISPATCH, "Dispatch event: {}", event);
-
-                result |= component.dispatchEvent(event);
-
-                if (event.isAborted())
-                    return result;
-            }
-            catch (RuntimeException ex)
-            {
-                // An exception in an event handler method
-                // while we're trying to handle a previous exception!
-
-                if (rootException != null)
-                    throw rootException;
-
-                // We know component is not null and therefore has a component resources that
-                // should have a location.
-
-                // Wrap it up to help ensure that a location is available to the event handler
-                // method or,
-                // more likely, to the exception report page.
-
-                rootException = new ComponentEventException(ex.getMessage(), eventType, context, location, ex);
-
-                // Switch over to triggering an "exception" event, starting in the component that
-                // threw the exception.
-
-                currentEventType = "exception";
-                currentContext = createParameterContext(rootException);
-
-                continue;
-            }
-
-            // On each bubble up, make the event appear to come from the previous component
-            // in which the event was triggered.
-
-            componentId = component.getId();
-
-            component = component.getContainerElement();
-        }
-
-        // If there was a handler for the exception event, it is required to return a non-null (and
-        // non-boolean) value
-        // to tell Tapestry what to do. Since that didn't happen, we have no choice but to rethrow
-        // the (wrapped)
-        // exception.
-
-        if (rootException != null)
-            throw rootException;
-
-        return result;
-    }
-
-    private void verifyRequiredParametersAreBound()
-    {
-        List<String> unbound = CollectionFactory.newList();
-
-        addUnboundParameterNames(null, unbound, coreResources);
-
-        for (String name : InternalUtils.sortedKeys(mixinIdToComponentResources))
-            addUnboundParameterNames(name, unbound, mixinIdToComponentResources.get(name));
-
-        if (unbound.isEmpty())
-            return;
-
-        throw new TapestryException(StructureMessages.missingParameters(unbound, this), this, null);
-    }
-
-    public Locale getLocale()
-    {
-        return page.getLocale();
-    }
-
-    public String getElementName(String defaultElementName)
-    {
-        return elementName != null ? elementName : defaultElementName;
-    }
-
-    public Block getBlock(String id)
-    {
-        Block result = findBlock(id);
-
-        if (result == null)
-            throw new BlockNotFoundException(StructureMessages.blockNotFound(completeId, id), getLocation());
-
-        return result;
-    }
-
-    public Block findBlock(String id)
-    {
-        assert InternalUtils.isNonBlank(id);
-        return InternalUtils.get(blocks, id);
-    }
-
-    public void addBlock(String blockId, Block block)
-    {
-        if (blocks == null)
-            blocks = CollectionFactory.newCaseInsensitiveMap();
-
-        if (blocks.containsKey(blockId))
-            throw new TapestryException(StructureMessages.duplicateBlock(this, blockId), block, null);
-
-        blocks.put(blockId, block);
-    }
-
-    public String getPageName()
-    {
-        return page.getName();
-    }
-
-    public boolean hasBody()
-    {
-        return bodyBlock != null;
-    }
-
-    public Block getBody()
-    {
-        return bodyBlock == null ? PLACEHOLDER_BLOCK : bodyBlock;
-    }
-
-    public Map<String, Binding> getInformalParameterBindings()
-    {
-        return coreResources.getInformalParameterBindings();
-    }
-
-    public Logger getEventLogger()
-    {
-        return eventLogger;
-    }
-
-    public Link createEventLink(String eventType, Object... context)
-    {
-        return elementResources.createComponentEventLink(coreResources, eventType, false, context);
-    }
-
-    public Link createActionLink(String eventType, boolean forForm, Object... context)
-    {
-        return elementResources.createComponentEventLink(coreResources, eventType, forForm, context);
-    }
-
-    public Link createFormEventLink(String eventType, Object... context)
-    {
-        return elementResources.createComponentEventLink(coreResources, eventType, true, context);
-    }
-
-    public Link createPageLink(String pageName, boolean override, Object... context)
-    {
-        return elementResources.createPageRenderLink(pageName, override, context);
-    }
-
-    public Link createPageLink(Class pageClass, boolean override, Object... context)
-    {
-        return elementResources.createPageRenderLink(pageClass, override, context);
-    }
-
-    protected RenderPhaseEvent createRenderEvent(RenderQueue queue)
-    {
-        RenderPhaseEvent result = renderEvent.get();
-
-        if (result != null)
-            return result;
-
-        // Create a per-thread value to use until the end of the render.
-        // This assumes that the queue will not change during the current request,
-        // which should be valid.
-
-        result = new RenderPhaseEvent(new RenderPhaseEventHandler(queue), eventLogger);
-
-        renderEvent.set(result);
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java
deleted file mode 100644
index cddcdc7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResources.java
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.ContextValueEncoder;
-import org.slf4j.Logger;
-
-/**
- * Provides access to common methods of various services, needed by implementations of {@link ComponentPageElement} and
- * {@link org.apache.tapestry5.internal.InternalComponentResources}.
- */
-public interface ComponentPageElementResources extends ContextValueEncoder, OperationTracker
-{
-    /**
-     * Used to obtain a {@link org.apache.tapestry5.ioc.Messages} instance for a particular component. If the component
-     * extends from another component, then its localized properties will merge with its parent's properties (with the
-     * subclass overriding the super class on any conflicts).
-     * 
-     * @param componentModel
-     * @return the message catalog for the component, in the indicated locale
-     * @see org.apache.tapestry5.services.messages.ComponentMessagesSource
-     */
-    Messages getMessages(ComponentModel componentModel);
-
-    /**
-     * Performs a coercion from an input type to a desired output type. When the target type is a primitive, the actual
-     * conversion will be to the equivalent wrapper type. In some cases, the TypeCoercer will need to search for an
-     * appropriate coercion, and may even combine existing coercions to form new ones; in those cases, the results of
-     * the search are cached.
-     * 
-     * @param <S>
-     *            source type (input)
-     * @param <T>
-     *            target type (output)
-     * @param input
-     * @param targetType
-     *            defines the target type
-     * @return the coerced value
-     * @see org.apache.tapestry5.ioc.services.TypeCoercer
-     */
-    <S, T> T coerce(S input, Class<T> targetType);
-
-    /**
-     * Gets the Class instance for then give name.
-     * 
-     * @param className
-     *            fully qualified class name
-     * @return the class instance
-     * @see org.apache.tapestry5.internal.services.ComponentClassCache
-     */
-    Class toClass(String className);
-
-    /**
-     * Creates a link on behalf of a component.
-     * 
-     * @param resources
-     *            resources for the component
-     * @param eventType
-     *            type of event to create
-     * @param forForm
-     *            true if generating for a form submission
-     * @param context
-     *            additional event context associated with the link
-     * @return the link
-     * @since 5.1.0.0
-     */
-    Link createComponentEventLink(ComponentResources resources, String eventType, boolean forForm, Object... context);
-
-    /**
-     * Creates a page render request link to render a specific page.
-     * 
-     * @param pageName
-     *            the logical name of the page to link to
-     * @param override
-     *            if true, the context is used even if empty (normally, the target page is allowed to passivate,
-     *            providing a context, when the provided context is empty)
-     * @param context
-     *            the activation context for the page. If omitted, the activation context is obtained from the
-     *            target page
-     * @return link for a render request to the targetted page
-     * @since 5.1.0.0
-     */
-    Link createPageRenderLink(String pageName, boolean override, Object... context);
-
-    /**
-     * Creates a page render request link to render a specific page. Using a page class, rather than a page name, is
-     * more refactoring safe (in the even the page is renamed or moved).
-     * 
-     * @param pageClass
-     *            identifies the page to link to
-     * @param override
-     *            if true, the context is used even if empty (normally, the target page is allowed to passivate,
-     *            providing a context, when the provided context is empty)
-     * @param context
-     *            the activation context for the page. If omitted, the activation context is obtained from the
-     *            target page
-     * @return link for a render request to the targetted page
-     * @since 5.1
-     */
-    Link createPageRenderLink(Class pageClass, boolean override, Object... context);
-
-    /**
-     * Returns the event logger for the provided component logger. The event logger is based on the component logger's
-     * name (which matches the component class name) with a "tapestry..events." prefix.
-     * 
-     * @param componentLogger
-     *            provides base name for logger
-     * @return the logger
-     */
-    Logger getEventLogger(Logger componentLogger);
-
-    /**
-     * Wrapper around {@link PerthreadManager#createValue()}.
-     * 
-     * @since 5.2.0
-     */
-    <T> PerThreadValue<T> createPerThreadValue();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java
deleted file mode 100644
index 9a516e5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesImpl.java
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.internal.services.LinkSource;
-import org.apache.tapestry5.internal.services.RequestPageCache;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ContextValueEncoder;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import org.slf4j.Logger;
-
-public class ComponentPageElementResourcesImpl implements ComponentPageElementResources
-{
-    private final Locale locale;
-
-    private final ComponentMessagesSource componentMessagesSource;
-
-    private final TypeCoercer typeCoercer;
-
-    private final ComponentClassCache componentClassCache;
-
-    private final ContextValueEncoder contextValueEncoder;
-
-    private final LinkSource linkSource;
-
-    private final RequestPageCache requestPageCache;
-
-    private final ComponentClassResolver componentClassResolver;
-
-    private final LoggerSource loggerSource;
-
-    private final OperationTracker tracker;
-
-    private final PerthreadManager perThreadManager;
-
-    public ComponentPageElementResourcesImpl(Locale locale, ComponentMessagesSource componentMessagesSource,
-            TypeCoercer typeCoercer, ComponentClassCache componentClassCache, ContextValueEncoder contextValueEncoder,
-            LinkSource linkSource, RequestPageCache requestPageCache, ComponentClassResolver componentClassResolver,
-            LoggerSource loggerSource, OperationTracker tracker, PerthreadManager perThreadManager)
-    {
-        this.componentMessagesSource = componentMessagesSource;
-        this.locale = locale;
-        this.typeCoercer = typeCoercer;
-        this.componentClassCache = componentClassCache;
-        this.contextValueEncoder = contextValueEncoder;
-        this.linkSource = linkSource;
-        this.requestPageCache = requestPageCache;
-        this.componentClassResolver = componentClassResolver;
-        this.loggerSource = loggerSource;
-        this.tracker = tracker;
-        this.perThreadManager = perThreadManager;
-    }
-
-    public Messages getMessages(ComponentModel componentModel)
-    {
-        return componentMessagesSource.getMessages(componentModel, locale);
-    }
-
-    public <S, T> T coerce(S input, Class<T> targetType)
-    {
-        return typeCoercer.coerce(input, targetType);
-    }
-
-    public Class toClass(String className)
-    {
-        return componentClassCache.forName(className);
-    }
-
-    public Link createComponentEventLink(ComponentResources resources, String eventType, boolean forForm,
-            Object... context)
-    {
-        Page page = requestPageCache.get(resources.getPageName());
-
-        return linkSource.createComponentEventLink(page, resources.getNestedId(), eventType, forForm,
-                defaulted(context));
-    }
-
-    public Link createPageRenderLink(String pageName, boolean override, Object... context)
-    {
-        return linkSource.createPageRenderLink(pageName, override, defaulted(context));
-    }
-
-    public Link createPageRenderLink(Class pageClass, boolean override, Object... context)
-    {
-        assert pageClass != null;
-        String pageName = componentClassResolver.resolvePageClassNameToPageName(pageClass.getName());
-
-        return linkSource.createPageRenderLink(pageName, override, defaulted(context));
-    }
-
-    public Logger getEventLogger(Logger componentLogger)
-    {
-        String name = "tapestry.events." + componentLogger.getName();
-
-        return loggerSource.getLogger(name);
-    }
-
-    public String toClient(Object value)
-    {
-        return contextValueEncoder.toClient(value);
-    }
-
-    public <T> T toValue(Class<T> requiredType, String clientValue)
-    {
-        return contextValueEncoder.toValue(requiredType, clientValue);
-    }
-
-    private Object[] defaulted(Object[] context)
-    {
-        return context == null ? InternalConstants.EMPTY_STRING_ARRAY : context;
-    }
-
-    public <T> T invoke(String description, Invokable<T> operation)
-    {
-        return tracker.invoke(description, operation);
-    }
-
-    public void run(String description, Runnable operation)
-    {
-        tracker.run(description, operation);
-    }
-
-    public <T> PerThreadValue<T> createPerThreadValue()
-    {
-        return perThreadManager.createValue();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSource.java
deleted file mode 100644
index d7ff7a2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSource.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.util.Locale;
-
-/**
- * Provides access to the {@link org.apache.tapestry5.internal.structure.ComponentPageElementResources} facade.
- */
-public interface ComponentPageElementResourcesSource
-{
-    /**
-     * Gets (or creates) an instance of {@link ComponentPageElementResources} for the indicated locale.
-     *
-     * @param locale to create the resources for
-     * @return the resources
-     */
-    ComponentPageElementResources get(Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java
deleted file mode 100644
index b534d54..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ComponentPageElementResourcesSourceImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.internal.services.LinkSource;
-import org.apache.tapestry5.internal.services.RequestPageCache;
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ContextValueEncoder;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-
-public class ComponentPageElementResourcesSourceImpl implements ComponentPageElementResourcesSource
-{
-    private final Map<Locale, ComponentPageElementResources> cache = CollectionFactory.newConcurrentMap();
-
-    private final ComponentMessagesSource componentMessagesSource;
-
-    private final TypeCoercer typeCoercer;
-
-    private final ComponentClassCache componentClassCache;
-
-    private final ContextValueEncoder contextValueEncoder;
-
-    private final LinkSource linkSource;
-
-    private final RequestPageCache requestPageCache;
-
-    private final ComponentClassResolver componentClassResolver;
-
-    private final LoggerSource loggerSource;
-
-    private final OperationTracker tracker;
-
-    private final PerthreadManager perThreadManager;
-
-    public ComponentPageElementResourcesSourceImpl(ComponentMessagesSource componentMessagesSource,
-            TypeCoercer typeCoercer, ComponentClassCache componentClassCache, ContextValueEncoder contextValueEncoder,
-            LinkSource linkSource, RequestPageCache requestPageCache, ComponentClassResolver componentClassResolver,
-            LoggerSource loggerSource, OperationTracker tracker, PerthreadManager perThreadManager)
-    {
-        this.componentMessagesSource = componentMessagesSource;
-        this.typeCoercer = typeCoercer;
-        this.componentClassCache = componentClassCache;
-        this.contextValueEncoder = contextValueEncoder;
-        this.linkSource = linkSource;
-        this.requestPageCache = requestPageCache;
-        this.componentClassResolver = componentClassResolver;
-        this.loggerSource = loggerSource;
-        this.tracker = tracker;
-        this.perThreadManager = perThreadManager;
-    }
-
-    public ComponentPageElementResources get(Locale locale)
-    {
-        assert locale != null;
-        ComponentPageElementResources result = cache.get(locale);
-
-        if (result == null)
-        {
-            result = new ComponentPageElementResourcesImpl(locale, componentMessagesSource, typeCoercer,
-                    componentClassCache, contextValueEncoder, linkSource, requestPageCache, componentClassResolver,
-                    loggerSource, tracker, perThreadManager);
-
-            // Small race condition here, where we may create two instances of the CPER for the same locale,
-            // but that's not worth worrying about.
-
-            cache.put(locale, result);
-        }
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/DTDPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/DTDPageElement.java
deleted file mode 100644
index d7fb8f3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/DTDPageElement.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-public class DTDPageElement implements RenderCommand
-{
-    private final String name;
-
-    private final String publicId;
-
-    private final String systemId;
-
-    public DTDPageElement(String name, String publicId, String systemId)
-    {
-        this.name = name;
-        this.publicId = publicId;
-        this.systemId = systemId;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        writer.getDocument().dtd(name, publicId, systemId);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("DTD[name=%s; publicId=%s; systemId=%s]", name, publicId, systemId);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java
deleted file mode 100644
index 282913d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/ExpansionPageElement.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-public class ExpansionPageElement implements RenderCommand
-{
-    private final Binding binding;
-
-    private final boolean invariant;
-
-    private final TypeCoercer coercer;
-
-    private boolean cached;
-
-    private String cachedValue;
-
-    public ExpansionPageElement(Binding binding, TypeCoercer coercer)
-    {
-        this.binding = binding;
-        this.coercer = coercer;
-
-        invariant = this.binding.isInvariant();
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        String value = cached ? cachedValue : coercer.coerce(binding.get(), String.class);
-
-        if (invariant && !cached)
-        {
-            cachedValue = value;
-            cached = true;
-        }
-
-        writer.write(value);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Expansion[%s]", binding.toString());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java
deleted file mode 100644
index 8ce41a9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImpl.java
+++ /dev/null
@@ -1,547 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.bindings.InternalPropBinding;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.transform.ParameterConduit;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.NullAnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.slf4j.Logger;
-
-/**
- * The bridge between a component and its {@link ComponentPageElement}, that supplies all kinds of
- * resources to the
- * component, including access to its parameters, parameter bindings, and persistent field data.
- */
-@SuppressWarnings("all")
-public class InternalComponentResourcesImpl implements InternalComponentResources
-{
-    private final Page page;
-
-    private final String completeId;
-
-    private final String nestedId;
-
-    private final ComponentModel componentModel;
-
-    private final ComponentPageElement element;
-
-    private final Component component;
-
-    private final ComponentResources containerResources;
-
-    private final ComponentPageElementResources elementResources;
-
-    private final boolean mixin;
-
-    private static final Object[] EMPTY = new Object[0];
-
-    private static final AnnotationProvider NULL_ANNOTATION_PROVIDER = new NullAnnotationProvider();
-
-    // Case insensitive map from parameter name to binding
-    private Map<String, Binding> bindings;
-
-    // Case insensitive map from parameter name to ParameterConduit, used to support mixins
-    // which need access to the containing component's PC's
-    private Map<String, ParameterConduit> conduits;
-
-    private Messages messages;
-
-    private boolean informalsComputed;
-
-    private PerThreadValue<Map<String, Object>> renderVariables;
-
-    private Informal firstInformal;
-
-    /**
-     * We keep a linked list of informal parameters, which saves us the expense of determining which
-     * bindings are formal
-     * and which are informal. Each Informal points to the next.
-     */
-    private class Informal
-    {
-        private final String name;
-
-        private final Binding binding;
-
-        final Informal next;
-
-        private Informal(String name, Binding binding, Informal next)
-        {
-            this.name = name;
-            this.binding = binding;
-            this.next = next;
-        }
-
-        void write(MarkupWriter writer)
-        {
-            Object value = binding.get();
-
-            if (value == null)
-                return;
-
-            if (value instanceof Block)
-                return;
-
-            // If it's already a String, don't use the TypeCoercer (renderInformalParameters is
-            // a CPU hotspot, as is TypeCoercer.coerce).
-
-            String valueString = value instanceof String ? (String) value : elementResources
-                    .coerce(value, String.class);
-
-            writer.attributes(name, valueString);
-        }
-    }
-
-    public InternalComponentResourcesImpl(Page page, ComponentPageElement element,
-            ComponentResources containerResources, ComponentPageElementResources elementResources, String completeId,
-            String nestedId, Instantiator componentInstantiator, boolean mixin)
-    {
-        this.page = page;
-        this.element = element;
-        this.containerResources = containerResources;
-        this.elementResources = elementResources;
-        this.completeId = completeId;
-        this.nestedId = nestedId;
-        this.mixin = mixin;
-
-        componentModel = componentInstantiator.getModel();
-        component = componentInstantiator.newInstance(this);
-    }
-
-    public boolean isMixin()
-    {
-        return mixin;
-    }
-
-    public Location getLocation()
-    {
-        return element.getLocation();
-    }
-
-    public String toString()
-    {
-        return String.format("InternalComponentResources[%s]", getCompleteId());
-    }
-
-    public ComponentModel getComponentModel()
-    {
-        return componentModel;
-    }
-
-    public Component getEmbeddedComponent(String embeddedId)
-    {
-        return element.getEmbeddedElement(embeddedId).getComponent();
-    }
-
-    public Object getFieldChange(String fieldName)
-    {
-        return page.getFieldChange(nestedId, fieldName);
-    }
-
-    public String getId()
-    {
-        return element.getId();
-    }
-
-    public boolean hasFieldChange(String fieldName)
-    {
-        return getFieldChange(fieldName) != null;
-    }
-
-    public Link createEventLink(String eventType, Object... context)
-    {
-        return element.createEventLink(eventType, context);
-    }
-
-    public Link createActionLink(String eventType, boolean forForm, Object... context)
-    {
-        return element.createActionLink(eventType, forForm, context);
-    }
-
-    public Link createFormEventLink(String eventType, Object... context)
-    {
-        return element.createFormEventLink(eventType, context);
-    }
-
-    public Link createPageLink(String pageName, boolean override, Object... context)
-    {
-        return element.createPageLink(pageName, override, context);
-    }
-
-    public Link createPageLink(Class pageClass, boolean override, Object... context)
-    {
-        return element.createPageLink(pageClass, override, context);
-    }
-
-    public void discardPersistentFieldChanges()
-    {
-        page.discardPersistentFieldChanges();
-    }
-
-    public String getElementName()
-    {
-        return getElementName(null);
-    }
-
-    public List<String> getInformalParameterNames()
-    {
-        return InternalUtils.sortedKeys(getInformalParameterBindings());
-    }
-
-    public <T> T getInformalParameter(String name, Class<T> type)
-    {
-        Binding binding = getBinding(name);
-
-        Object value = binding == null ? null : binding.get();
-
-        return elementResources.coerce(value, type);
-    }
-
-    public Block getBody()
-    {
-        return element.getBody();
-    }
-
-    public boolean hasBody()
-    {
-        return element.hasBody();
-    }
-
-    public String getCompleteId()
-    {
-        return completeId;
-    }
-
-    public Component getComponent()
-    {
-        return component;
-    }
-
-    public boolean isBound(String parameterName)
-    {
-        return getBinding(parameterName) != null;
-    }
-
-    public <T extends Annotation> T getParameterAnnotation(String parameterName, Class<T> annotationType)
-    {
-        Binding binding = getBinding(parameterName);
-
-        return binding == null ? null : binding.getAnnotation(annotationType);
-    }
-
-    public boolean isRendering()
-    {
-        return element.isRendering();
-    }
-
-    public boolean triggerEvent(String eventType, Object[] context, ComponentEventCallback handler)
-    {
-        return element.triggerEvent(eventType, defaulted(context), handler);
-    }
-
-    private static Object[] defaulted(Object[] input)
-    {
-        return input == null ? EMPTY : input;
-    }
-
-    public boolean triggerContextEvent(String eventType, EventContext context, ComponentEventCallback callback)
-    {
-        return element.triggerContextEvent(eventType, context, callback);
-    }
-
-    public String getNestedId()
-    {
-        return nestedId;
-    }
-
-    public Component getPage()
-    {
-        return element.getContainingPage().getRootComponent();
-    }
-
-    public boolean isLoaded()
-    {
-        return element.isLoaded();
-    }
-
-    public void persistFieldChange(String fieldName, Object newValue)
-    {
-        try
-        {
-            page.persistFieldChange(this, fieldName, newValue);
-        }
-        catch (Exception ex)
-        {
-            throw new TapestryException(StructureMessages.fieldPersistFailure(getCompleteId(), fieldName, ex),
-                    getLocation(), ex);
-        }
-    }
-
-    public void bindParameter(String parameterName, Binding binding)
-    {
-        if (bindings == null)
-            bindings = CollectionFactory.newCaseInsensitiveMap();
-
-        bindings.put(parameterName, binding);
-    }
-
-    public Class getBoundType(String parameterName)
-    {
-        Binding binding = getBinding(parameterName);
-
-        return binding == null ? null : binding.getBindingType();
-    }
-
-    public Binding getBinding(String parameterName)
-    {
-        return InternalUtils.get(bindings, parameterName);
-    }
-
-    public AnnotationProvider getAnnotationProvider(String parameterName)
-    {
-        Binding binding = getBinding(parameterName);
-
-        return binding == null ? NULL_ANNOTATION_PROVIDER : binding;
-    }
-
-    public Logger getLogger()
-    {
-        return componentModel.getLogger();
-    }
-
-    public Component getMixinByClassName(String mixinClassName)
-    {
-        return element.getMixinByClassName(mixinClassName);
-    }
-
-    public void renderInformalParameters(MarkupWriter writer)
-    {
-        if (bindings == null)
-            return;
-
-        for (Informal i = firstInformal(); i != null; i = i.next)
-            i.write(writer);
-    }
-
-    private synchronized Informal firstInformal()
-    {
-        if (!informalsComputed)
-        {
-            for (Map.Entry<String, Binding> e : getInformalParameterBindings().entrySet())
-            {
-                firstInformal = new Informal(e.getKey(), e.getValue(), firstInformal);
-            }
-
-            informalsComputed = true;
-        }
-
-        return firstInformal;
-    }
-
-    public Component getContainer()
-    {
-        if (containerResources == null)
-            return null;
-
-        return containerResources.getComponent();
-    }
-
-    public ComponentResources getContainerResources()
-    {
-        return containerResources;
-    }
-
-    public Messages getContainerMessages()
-    {
-        return containerResources != null ? containerResources.getMessages() : null;
-    }
-
-    public Locale getLocale()
-    {
-        return element.getLocale();
-    }
-
-    public synchronized Messages getMessages()
-    {
-        if (messages == null)
-            messages = elementResources.getMessages(componentModel);
-
-        return messages;
-    }
-
-    public String getElementName(String defaultElementName)
-    {
-        return element.getElementName(defaultElementName);
-    }
-
-    public void queueRender(RenderQueue queue)
-    {
-        queue.push(element);
-    }
-
-    public Block getBlock(String blockId)
-    {
-        return element.getBlock(blockId);
-    }
-
-    public Block getBlockParameter(String parameterName)
-    {
-        return getInformalParameter(parameterName, Block.class);
-    }
-
-    public Block findBlock(String blockId)
-    {
-        return element.findBlock(blockId);
-    }
-
-    public Resource getBaseResource()
-    {
-        return componentModel.getBaseResource();
-    }
-
-    public String getPageName()
-    {
-        return element.getPageName();
-    }
-
-    public Map<String, Binding> getInformalParameterBindings()
-    {
-        Map<String, Binding> result = CollectionFactory.newMap();
-
-        if (bindings != null)
-        {
-            for (String name : bindings.keySet())
-            {
-
-                if (componentModel.getParameterModel(name) != null)
-                    continue;
-
-                result.put(name, bindings.get(name));
-            }
-        }
-
-        return result;
-    }
-
-    private synchronized Map<String, Object> getRenderVariables()
-    {
-        if (renderVariables == null)
-            renderVariables = elementResources.createPerThreadValue();
-
-        Map<String, Object> result = renderVariables.get();
-
-        if (result == null)
-            result = renderVariables.set(CollectionFactory.newCaseInsensitiveMap());
-
-        return result;
-    }
-
-    public Object getRenderVariable(String name)
-    {
-        Map<String, Object> renderVariables = getRenderVariables();
-
-        Object result = InternalUtils.get(renderVariables, name);
-
-        if (result == null)
-            throw new IllegalArgumentException(StructureMessages.missingRenderVariable(getCompleteId(), name,
-                    renderVariables == null ? null : renderVariables.keySet()));
-
-        return result;
-    }
-
-    public void storeRenderVariable(String name, Object value)
-    {
-        assert InternalUtils.isNonBlank(name);
-        assert value != null;
-        if (!element.isRendering())
-            throw new IllegalStateException(StructureMessages.renderVariableSetWhenNotRendering(getCompleteId(), name));
-
-        Map<String, Object> renderVariables = getRenderVariables();
-
-        renderVariables.put(name, value);
-    }
-
-    public void postRenderCleanup()
-    {
-        getRenderVariables().clear();
-    }
-
-    public void addPageLifecycleListener(PageLifecycleListener listener)
-    {
-        page.addLifecycleListener(listener);
-    }
-
-    public void removePageLifecycleListener(PageLifecycleListener listener)
-    {
-        page.removeLifecycleListener(listener);
-    }
-
-    public void addPageResetListener(PageResetListener listener)
-    {
-        page.addResetListener(listener);
-    }
-
-    public synchronized ParameterConduit getParameterConduit(String parameterName)
-    {
-        return InternalUtils.get(conduits, parameterName);
-    }
-
-    public synchronized void setParameterConduit(String parameterName, ParameterConduit conduit)
-    {
-        if (conduits == null)
-            conduits = CollectionFactory.newCaseInsensitiveMap();
-
-        conduits.put(parameterName, conduit);
-    }
-
-    public String getPropertyName(String parameterName)
-    {
-        Binding binding = getBinding(parameterName);
-
-        if (binding == null)
-            return null;
-
-        if (binding instanceof InternalPropBinding) { return ((InternalPropBinding) binding).getPropertyName(); }
-
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/LifecycleNotificationComponentCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/LifecycleNotificationComponentCallback.java
deleted file mode 100644
index e648702..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/LifecycleNotificationComponentCallback.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-/**
- * Implementation of {@link org.apache.tapestry5.internal.structure.ComponentCallback} used for lifecycle notifications
- * that do not have an event, and can therefore never be aborted.
- *
- * @see org.apache.tapestry5.internal.structure.AbstractComponentCallback
- */
-public abstract class LifecycleNotificationComponentCallback implements ComponentCallback
-{
-    /**
-     * Always returns false, as there is no event.
-     */
-    public boolean isEventAborted()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java
deleted file mode 100644
index 9de6739..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/Page.java
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.slf4j.Logger;
-
-import java.util.Locale;
-
-/**
- * Represents a unique page within the application. Pages are part of the <em>internal</em> structure of a Tapestry
- * application; end developers who refer to "page" are really referring to the {@link #getRootComponent() root
- * component} of the actual page.
- * <p/>
- * Starting in release 5.2, the nature of pages changed considerably. Pages are no longer pooled instances. Instead,
- * pages are shared instances (per locale) but all internal <em>mutable</em> state is stored inside
- * {@link PerthreadManager}. Page construction time is considered to extend past the
- * {@link PageLifecycleListener#containingPageDidLoad()} lifecycle notification. This is not quite perfect from a
- * threading point-of-view (arguably, even write-once-read-many fields should be protected by synchronized blocks or
- * other mechanisms). At best, we can be assured that the entire page construction phase is protected by a single
- * synchronized block (but not on the page itself). An ideal system would build the page bottom to top so that all
- * assignments could take place in constructors, assigning to final fields. Maybe some day.
- * <p/>
- * The Page object is never visible to end-user code. The page also exists to provide a kind of service to components
- * embedded (directly or indirectly) within the page.
- */
-public interface Page
-{
-    /**
-     * Returns the short, logical name for the page. This is the page name as it might included in
-     * an action or page
-     * render URL (though it will be converted to lower case when it is included).
-     */
-    String getName();
-
-    /**
-     * The locale for which the page is localized. This is set when the page is created and does not
-     * change.
-     */
-    Locale getLocale();
-
-    /**
-     * Invoked during page construction time to connect the page's root component to the page
-     * instance.
-     */
-    void setRootElement(ComponentPageElement component);
-
-    /**
-     * The root component of the page. This is the wrapper around the end developer's view of the
-     * page.
-     */
-    ComponentPageElement getRootElement();
-
-    /**
-     * The root component of the page. A convenience over invoking getRootElement().getComponent().
-     */
-    Component getRootComponent();
-
-    /**
-     * Invoked to inform the page that it is being detached from the current request. This occurs
-     * just before the page
-     * is returned to the page pool.
-     * <p/>
-     * A page may be clean or dirty. A page is dirty if its dirty count is greater than zero (meaning that, during the
-     * render of the page, some components did not fully render), or if any of its listeners throw an exception from
-     * containingPageDidDetach().
-     * <p/>
-     * The page pool should discard pages that are dirty, rather than store them into the pool.
-     * <p>
-     * Under Tapestry 5.2 and pool-less pages, the result is ignored; all mutable state is expected to be discarded
-     * automatically from the {@link PerthreadManager}. A future release of Tapestry will likely convert this method to
-     * type void.
-     * 
-     * @return true if the page is "dirty", false otherwise
-     * @see org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidDetach()
-     */
-    boolean detached();
-
-    /**
-     * Invoked to inform the page that it is attached to the current request. This occurs when a
-     * page is first referenced within a request. If the page was created from scratch for this request, the call
-     * to {@link #loaded()} will preceded the call to {@link #attached()}.
-     * <p>
-     * First all listeners have {@link PageLifecycleListener#restoreStateBeforePageAttach()} invoked, followed by
-     * {@link PageLifecycleListener#containingPageDidAttach()}.
-     */
-    void attached();
-
-    /**
-     * Inform the page that it is now completely loaded.
-     * 
-     * @see org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidLoad()
-     */
-    void loaded();
-
-    /**
-     * Adds a listener that is notified of large scale page events.
-     */
-    void addLifecycleListener(PageLifecycleListener listener);
-
-    /**
-     * Removes a listener that was previously added.
-     * 
-     * @since 5.2.0
-     */
-    void removeLifecycleListener(PageLifecycleListener listener);
-
-    /**
-     * Returns the logger of the root component element. Any logging about page construction or
-     * activity should be sent
-     * to this logger.
-     */
-    Logger getLogger();
-
-    /**
-     * Retrieves a component element by its nested id (a sequence of simple ids, separated by dots).
-     * The individual
-     * names in the nested id are matched without regards to case. A nested id of '' (the empty
-     * string) returns the root
-     * element of the page.
-     * 
-     * @throws IllegalArgumentException
-     *             if the nestedId does not correspond to a component
-     */
-    ComponentPageElement getComponentElementByNestedId(String nestedId);
-
-    /**
-     * Posts a change to a persistent field.
-     * 
-     * @param resources
-     *            the component resources for the component or mixin containing the field whose
-     *            value changed
-     * @param fieldName
-     *            the name of the field
-     * @param newValue
-     *            the new value for the field
-     */
-    void persistFieldChange(ComponentResources resources, String fieldName, Object newValue);
-
-    /**
-     * Gets a change for a field within the component.
-     * 
-     * @param nestedId
-     *            the nested component id of the component containing the field
-     * @param fieldName
-     *            the name of the persistent field
-     * @return the value, or null if no value is stored
-     */
-    Object getFieldChange(String nestedId, String fieldName);
-
-    /**
-     * Called as a component initially starts to render itself. This is used to check for the cases
-     * where a component
-     * causes a runtime exception that aborts the render early, leaving the page in an invalid
-     * state.
-     * 
-     * @deprecated No longer useful with non-pooled pages, to be removed for efficiency
-     */
-    void incrementDirtyCount();
-
-    /**
-     * Called as a component finishes rendering itself.
-     * 
-     * @deprecated No longer useful with non-pooled pages, to be removed for efficiency
-     */
-    void decrementDirtyCount();
-
-    /**
-     * Discards all persistent field changes for the page containing the component. Changes are
-     * eliminated from
-     * persistent storage (such as the {@link org.apache.tapestry5.services.Session}) which will
-     * take effect in the <em>next</em> request (the attached page instance is not affected).
-     */
-    void discardPersistentFieldChanges();
-
-    /**
-     * Adds a new listener for page reset events.
-     * 
-     * @param listener
-     *            will receive notifications when the page is accessed from a different page
-     * @since 5.2.0
-     */
-    void addResetListener(PageResetListener listener);
-
-    /**
-     * Returns true if there are any {@link PageResetListener} listeners.
-     * 
-     * @since 5.2.0
-     */
-    boolean hasResetListeners();
-
-    /**
-     * Invoked to notify {@link PageResetListener} listeners.
-     */
-    void pageReset();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
deleted file mode 100644
index a44cc8d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageImpl.java
+++ /dev/null
@@ -1,262 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.services.PersistentFieldManager;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.apache.tapestry5.services.PersistentFieldBundle;
-import org.slf4j.Logger;
-
-public class PageImpl implements Page
-{
-    private final String name;
-
-    private final Locale locale;
-
-    private final PersistentFieldManager persistentFieldManager;
-
-    private ComponentPageElement rootElement;
-
-    private final List<PageLifecycleListener> lifecycleListeners = CollectionFactory.newThreadSafeList();
-
-    private final List<PageResetListener> resetListeners = CollectionFactory.newList();
-
-    private final PerThreadValue<Integer> dirtyCount;
-
-    private boolean loadComplete;
-
-    private final OneShotLock lock = new OneShotLock();
-
-    /**
-     * Obtained from the {@link org.apache.tapestry5.internal.services.PersistentFieldManager} when
-     * first needed,
-     * discarded at the end of the request.
-     */
-    private final PerThreadValue<PersistentFieldBundle> fieldBundle;
-
-    /**
-     * @param name
-     *            canonicalized page name
-     * @param locale
-     *            locale for page and all components
-     * @param persistentFieldManager
-     *            for access to cross-request persistent values
-     * @param perThreadManager
-     *            for managing per-request mutable state
-     * @param pooled
-     *            if pooling enabled, or is this page a singleton
-     */
-    public PageImpl(String name, Locale locale, PersistentFieldManager persistentFieldManager,
-            PerthreadManager perThreadManager, boolean pooled)
-    {
-        this.name = name;
-        this.locale = locale;
-        this.persistentFieldManager = persistentFieldManager;
-
-        if (pooled)
-        {
-            dirtyCount = perThreadManager.createValue();
-        }
-        else
-        {
-            dirtyCount = null;
-        }
-
-        fieldBundle = perThreadManager.createValue();
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Page[%s %s]", name, locale);
-    }
-
-    public ComponentPageElement getComponentElementByNestedId(String nestedId)
-    {
-        assert nestedId != null;
-        ComponentPageElement element = rootElement;
-
-        if (InternalUtils.isNonBlank(nestedId))
-        {
-            for (String id : nestedId.split("\\."))
-                element = element.getEmbeddedElement(id);
-        }
-
-        return element;
-    }
-
-    public Locale getLocale()
-    {
-        return locale;
-    }
-
-    public void setRootElement(ComponentPageElement component)
-    {
-        lock.check();
-
-        rootElement = component;
-    }
-
-    public ComponentPageElement getRootElement()
-    {
-        return rootElement;
-    }
-
-    public Component getRootComponent()
-    {
-        return rootElement.getComponent();
-    }
-
-    public void addLifecycleListener(PageLifecycleListener listener)
-    {
-        lock.check();
-
-        lifecycleListeners.add(listener);
-    }
-
-    public void removeLifecycleListener(PageLifecycleListener listener)
-    {
-        lock.check();
-
-        lifecycleListeners.remove(listener);
-    }
-
-    public boolean detached()
-    {
-        boolean result = dirtyCount != null && dirtyCount.exists() && dirtyCount.get() > 0;
-
-        for (PageLifecycleListener listener : lifecycleListeners)
-        {
-            try
-            {
-                listener.containingPageDidDetach();
-            }
-            catch (RuntimeException ex)
-            {
-                getLogger().error(StructureMessages.detachFailure(listener, ex), ex);
-                result = true;
-            }
-        }
-
-        return result;
-    }
-
-    public void loaded()
-    {
-        lock.check();
-
-        for (PageLifecycleListener listener : lifecycleListeners)
-            listener.containingPageDidLoad();
-
-        loadComplete = true;
-
-        lock.lock();
-    }
-
-    public void attached()
-    {
-        if (dirtyCount != null && dirtyCount.exists() && !dirtyCount.get().equals(0))
-            throw new IllegalStateException(StructureMessages.pageIsDirty(this));
-
-        for (PageLifecycleListener listener : lifecycleListeners)
-            listener.restoreStateBeforePageAttach();
-
-        for (PageLifecycleListener listener : lifecycleListeners)
-            listener.containingPageDidAttach();
-    }
-
-    public Logger getLogger()
-    {
-        return rootElement.getLogger();
-    }
-
-    public void persistFieldChange(ComponentResources resources, String fieldName, Object newValue)
-    {
-        if (!loadComplete)
-            throw new RuntimeException(StructureMessages.persistChangeBeforeLoadComplete());
-
-        persistentFieldManager.postChange(name, resources, fieldName, newValue);
-    }
-
-    public Object getFieldChange(String nestedId, String fieldName)
-    {
-        if (!fieldBundle.exists())
-            fieldBundle.set(persistentFieldManager.gatherChanges(name));
-
-        return fieldBundle.get().getValue(nestedId, fieldName);
-    }
-
-    public void decrementDirtyCount()
-    {
-        if (dirtyCount != null)
-        {
-            int newCount = dirtyCount.get() - 1;
-
-            dirtyCount.set(newCount);
-        }
-    }
-
-    public void discardPersistentFieldChanges()
-    {
-        persistentFieldManager.discardChanges(name);
-    }
-
-    public void incrementDirtyCount()
-    {
-        if (dirtyCount != null)
-        {
-            int newCount = dirtyCount.get(0) + 1;
-
-            dirtyCount.set(newCount);
-        }
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void addResetListener(PageResetListener listener)
-    {
-        assert listener != null;
-        lock.check();
-
-        resetListeners.add(listener);
-    }
-
-    public void pageReset()
-    {
-        for (PageResetListener l : resetListeners)
-        {
-            l.containingPageDidReset();
-        }
-    }
-
-    public boolean hasResetListeners()
-    {
-        return !resetListeners.isEmpty();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageResetListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageResetListener.java
deleted file mode 100644
index fccd440..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/PageResetListener.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.annotations.PageReset;
-
-/**
- * Optional interface implemented to support resetting of the page state.
- * 
- * @since 5.2.0
- * @see PageReset
- */
-public interface PageResetListener
-{
-    /**
-     * Invoked when the page is accessed from some other page. This notification will be sent
-     * <em>after</em> the page
-     * has been activated.
-     */
-    void containingPageDidReset();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEvent.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEvent.java
deleted file mode 100644
index f9c3abc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEvent.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.internal.services.EventImpl;
-import org.slf4j.Logger;
-
-public class RenderPhaseEvent extends EventImpl
-{
-    private final RenderPhaseEventHandler handler;
-
-    public RenderPhaseEvent(RenderPhaseEventHandler handler, Logger logger)
-    {
-        super(handler, logger);
-
-        this.handler = handler;
-
-    }
-
-    public void reset()
-    {
-        super.reset();
-
-        handler.reset();
-    }
-
-    public boolean getResult()
-    {
-        return handler.getResult();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java
deleted file mode 100644
index f9892bf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/RenderPhaseEventHandler.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-/**
- * Used by {@link org.apache.tapestry5.internal.structure.ComponentPageElementImpl} to track the results of invoking the
- * component methods for a render phase event.
- * 
- * @since 5.0.19
- */
-class RenderPhaseEventHandler implements ComponentEventCallback
-{
-    private final RenderQueue renderQueue;
-
-    private boolean result = true;
-
-    private List<RenderCommand> commands;
-
-    public RenderPhaseEventHandler(RenderQueue renderQueue)
-    {
-        this.renderQueue = renderQueue;
-    }
-
-    boolean getResult()
-    {
-        return result;
-    }
-
-    void reset()
-    {
-        if (commands != null)
-        {
-            for (RenderCommand command : commands)
-                renderQueue.push(command);
-        }
-
-        result = true;
-
-        commands = null;
-    }
-
-    public boolean handleResult(Object result)
-    {
-        if (result instanceof Boolean)
-        {
-            this.result = (Boolean) result;
-            return true; // abort other handler methods
-        }
-
-        if (result instanceof RenderCommand)
-        {
-            RenderCommand command = (RenderCommand) result;
-
-            add(command);
-
-            return false; // do not abort!
-        }
-
-        if (result instanceof Renderable)
-        {
-            final Renderable renderable = (Renderable) result;
-
-            RenderCommand wrapper = new RenderCommand()
-            {
-                public void render(MarkupWriter writer, RenderQueue queue)
-                {
-                    renderable.render(writer);
-                }
-            };
-
-            add(wrapper);
-
-            return false;
-        }
-
-        throw new RuntimeException(StructureMessages.wrongPhaseResultType(Arrays.asList(Boolean.class.getName(),
-                Renderable.class.getName(), RenderCommand.class.getName())));
-    }
-
-    private void add(RenderCommand command)
-    {
-        if (commands == null)
-            commands = CollectionFactory.newList();
-
-        commands.add(command);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StartElementPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StartElementPageElement.java
deleted file mode 100644
index 5a3203c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StartElementPageElement.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-public class StartElementPageElement implements RenderCommand
-{
-    private final String namespaceURI;
-
-    private final String name;
-
-    public StartElementPageElement(String namespaceURI, String name)
-    {
-        this.namespaceURI = namespaceURI;
-
-        this.name = name;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        writer.elementNS(namespaceURI, name);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Start[%s %s]", namespaceURI, name);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java
deleted file mode 100644
index 7bb3096..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/StructureMessages.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ComponentResources;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Set;
-import java.util.Arrays;
-
-final class StructureMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(StructureMessages.class);
-
-    private StructureMessages()
-    {
-    }
-
-    static String missingParameters(List<String> parameters, ComponentPageElement element)
-    {
-        return MESSAGES.format("missing-parameters", InternalUtils.joinSorted(parameters), element
-                .getComponentResources().getComponentModel().getComponentClassName());
-    }
-    
-    static String unknownMixin(String componentId, String mixinClassName)
-    {
-        return MESSAGES.format("unknown-mixin", componentId, mixinClassName);
-    }
-
-    static String detachFailure(Object listener, Throwable cause)
-    {
-        return MESSAGES.format("detach-failure", listener, cause);
-    }
-
-    static String wrongPhaseResultType(List<String> expectedTypes)
-    {
-        return MESSAGES.format("wrong-phase-result-type", InternalUtils.join(expectedTypes));
-    }
-
-    static String blockNotFound(String componentId, String blockId)
-    {
-        return MESSAGES.format("block-not-found", componentId, blockId);
-    }
-
-    static String unbalancedElements(String componentId)
-    {
-        return MESSAGES.format("unbalanced-elements", componentId);
-    }
-
-    static String pageIsDirty(Page page)
-    {
-        return MESSAGES.format("page-is-dirty", page);
-    }
-
-    static String duplicateChildComponent(ComponentPageElement container, String childId)
-    {
-        return MESSAGES.format("duplicate-child-component", container.getCompleteId(), childId);
-    }
-
-    static String originalChildComponent(ComponentPageElement container, String childId, Location originalLocation)
-    {
-        return MESSAGES.format("original-child-component", container.getCompleteId(), childId,
-                               originalLocation.getResource().getPath(), originalLocation.getLine());
-    }
-
-    static String duplicateBlock(ComponentPageElement component, String blockId)
-    {
-        return MESSAGES.format("duplicate-block", component.getCompleteId(), blockId);
-    }
-
-    static String fieldPersistFailure(String componentId, String fieldName, Throwable cause)
-    {
-        return MESSAGES.format("field-persist-failure", componentId, fieldName, cause);
-    }
-
-    static String missingRenderVariable(String componentId, String name, Collection<String> names)
-    {
-
-        return MESSAGES.format("missing-render-variable", componentId, name, InternalUtils.joinSorted(names));
-    }
-
-    static String renderVariableSetWhenNotRendering(String completeId, String name)
-    {
-        return MESSAGES.format("render-variable-set-when-not-rendering", completeId, name);
-    }
-
-    static String persistChangeBeforeLoadComplete()
-    {
-        return MESSAGES.get("persist-change-before-load-complete");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/TextPageElement.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/TextPageElement.java
deleted file mode 100644
index 10bc324..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/structure/TextPageElement.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-public class TextPageElement implements RenderCommand
-{
-    private final String text;
-
-    public TextPageElement(String text)
-    {
-        this.text = text;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        writer.write(text);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Text[%s]", text);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/CaptureRenderedDocument.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/CaptureRenderedDocument.java
deleted file mode 100644
index 2f6f614..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/CaptureRenderedDocument.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.services.MarkupRendererFilter;
-import org.apache.tapestry5.services.MarkupRenderer;
-import org.apache.tapestry5.MarkupWriter;
-
-/**
- * Used to capture the rendered document from a traditional page render. Invokes {@link
- * org.apache.tapestry5.internal.test.TestableResponse#setRenderedDocument(org.apache.tapestry5.dom.Document)}.
- *
- * @since 5.1.0.0
- */
-public class CaptureRenderedDocument implements MarkupRendererFilter
-{
-    private final TestableResponse testableResponse;
-
-    public CaptureRenderedDocument(TestableResponse testableResponse)
-    {
-        this.testableResponse = testableResponse;
-    }
-
-
-    public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-    {
-        renderer.renderMarkup(writer);
-
-        testableResponse.setRenderedDocument(writer.getDocument());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/EndOfRequestCleanupFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/EndOfRequestCleanupFilter.java
deleted file mode 100644
index 2124553..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/EndOfRequestCleanupFilter.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-
-import java.io.IOException;
-
-/**
- * Makes sure that {@link org.apache.tapestry5.ioc.services.PerthreadManager#cleanup()} is invoked at the end of each
- * request (normally handled by {@link org.apache.tapestry5.TapestryFilter}).
- */
-public class EndOfRequestCleanupFilter implements RequestFilter
-{
-    private final PerthreadManager perThreadManager;
-
-    public EndOfRequestCleanupFilter(PerthreadManager perThreadManager)
-    {
-        this.perThreadManager = perThreadManager;
-    }
-
-    public boolean service(Request request, Response response, RequestHandler handler) throws IOException
-    {
-        try
-        {
-            return handler.service(request, response);
-        }
-        finally
-        {
-            perThreadManager.cleanup();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterContext.java
deleted file mode 100644
index 8033835..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterContext.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.services.Context;
-import org.apache.tapestry5.test.TapestryTestConstants;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Collections;
-import java.util.List;
-
-public class PageTesterContext implements Context
-{
-    private final File contextRoot;
-
-    public PageTesterContext(String contextRoot)
-    {
-        this.contextRoot = new File(TapestryTestConstants.MODULE_BASE_DIR, contextRoot);
-    }
-
-    public String getInitParameter(String name)
-    {
-        return null;
-    }
-
-    public URL getResource(String path)
-    {
-        File f = new File(contextRoot + path);
-
-        if (!f.exists() || !f.isFile())
-        {
-            return null;
-        }
-        try
-        {
-            return f.toURL();
-        }
-        catch (MalformedURLException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public List<String> getResourcePaths(String path)
-    {
-        throw new UnsupportedOperationException("getResourcePaths() is not supported for ContextForPageTester.");
-    }
-
-    public Object getAttribute(String name)
-    {
-        throw new UnsupportedOperationException("getAttribute() is not supported for ContextForPageTester.");
-    }
-
-    public List<String> getAttributeNames()
-    {
-        return Collections.emptyList();
-    }
-
-    public String getMimeType(String file)
-    {
-        return null;
-    }
-
-    /**
-     * Always returns null.
-     */
-    public File getRealFile(String path)
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
deleted file mode 100644
index 6eaa847..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterModule.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.services.CookieSink;
-import org.apache.tapestry5.internal.services.CookieSource;
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.test.PageTester;
-
-/**
- * Used in conjuction with {@link PageTester} to mock up and/or stub out portions of Tapestry that need to be handled
- * differently when testing.
- */
-public class PageTesterModule
-{
-    public static final String TEST_MODE = "test";
-
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(TestableRequest.class, TestableRequestImpl.class);
-        binder.bind(TestableResponse.class, TestableResponseImpl.class);
-    }
-
-    public static void contributeAlias(Configuration<AliasContribution> configuration, ObjectLocator locator)
-    {
-        alias(configuration, locator, Request.class, "TestableRequest");
-        alias(configuration, locator, Response.class, "TestableResponse");
-
-        TestableCookieSinkSource cookies = new TestableCookieSinkSource();
-
-        alias(configuration, CookieSink.class, cookies);
-        alias(configuration, CookieSource.class, cookies);
-    }
-
-    private static <T> void alias(Configuration<AliasContribution> configuration, ObjectLocator locator,
-                                  Class<T> serviceClass, String serviceId)
-    {
-        T service = locator.getService(serviceId, serviceClass);
-
-        alias(configuration, serviceClass, service);
-    }
-
-    private static <T> void alias(Configuration<AliasContribution> configuration, Class<T> serviceClass, T service)
-    {
-        AliasContribution<T> contribution = AliasContribution.create(serviceClass, TEST_MODE, service);
-
-        configuration.add(contribution);
-    }
-
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.override(SymbolConstants.FORCE_ABSOLUTE_URIS, "true");
-    }
-
-    public static void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration)
-    {
-        configuration.addInstance("EndOfRequestCleanup", EndOfRequestCleanupFilter.class, "before:StaticFiles");
-    }
-
-    public static void contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> configuration)
-    {
-        configuration.addInstance("CaptureRenderedDocument", CaptureRenderedDocument.class, "before:DocumentLinker");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java
deleted file mode 100644
index 5c18eb0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/PageTesterSession.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Session;
-
-import java.util.List;
-import java.util.Map;
-
-public class PageTesterSession implements Session
-{
-    private final Map<String, Object> attributes = CollectionFactory.newMap();
-
-    public List<String> getAttributeNames()
-    {
-        return InternalUtils.sortedKeys(attributes);
-    }
-
-    public List<String> getAttributeNames(String prefix)
-    {
-        List<String> result = newList();
-
-        for (String name : getAttributeNames())
-            if (name.startsWith(prefix)) result.add(name);
-
-        return result;
-    }
-
-    public Object getAttribute(String name)
-    {
-        return attributes.get(name);
-    }
-
-    public void setAttribute(String name, Object value)
-    {
-        if (value == null)
-        {
-            attributes.remove(name);
-        }
-        else
-        {
-            attributes.put(name, value);
-        }
-    }
-
-    private void nyi(String name)
-    {
-        throw new IllegalStateException(String.format("%s.%s() is not yet implemented.", getClass()
-                .getName(), name));
-    }
-
-    public int getMaxInactiveInterval()
-    {
-        nyi("getMaxInativeInterval");
-
-        return 0;
-    }
-
-    public void invalidate()
-    {
-        nyi("invalidate");
-    }
-
-    public boolean isInvalidated()
-    {
-        return false;
-    }
-
-    public void restoreDirtyObjects()
-    {
-    }
-
-    public void setMaxInactiveInterval(int seconds)
-    {
-        nyi("setMaxInactiveInterval");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java
deleted file mode 100644
index 315353b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableCookieSinkSource.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.internal.services.CookieSink;
-import org.apache.tapestry5.internal.services.CookieSource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import javax.servlet.http.Cookie;
-import java.util.Map;
-
-public class TestableCookieSinkSource implements CookieSource, CookieSink
-{
-    private final Map<String, Cookie> cookies = CollectionFactory.newMap();
-
-    public Cookie[] getCookies()
-    {
-        return cookies.values().toArray(new Cookie[cookies.size()]);
-    }
-
-    public void addCookie(Cookie cookie)
-    {
-        cookies.put(cookie.getName(), cookie);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequest.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequest.java
deleted file mode 100644
index fa0b109..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.test.PageTester;
-
-import java.util.Locale;
-
-/**
- * An extended version of {@link Request} that allows the {@link PageTester} to control and override behavior,
- * effectively simulating the portions of {@link Request} that are provided normally by a servlet container.
- */
-public interface TestableRequest extends Request
-{
-    /**
-     * Clears the internal parameters map.
-     *
-     * @return the request for further configuration
-     */
-    TestableRequest clear();
-
-    /**
-     * Sets the path; the path should begin with a "/" character and contain everything from there to the start of query
-     * parameters (if any).
-     *
-     * @param path
-     * @return the request for further configuration
-     */
-    TestableRequest setPath(String path);
-
-    /**
-     * Sets the locale requested by "the browser".
-     *
-     * @returns the request for further configuration
-     */
-    TestableRequest setLocale(Locale locale);
-
-    /**
-     * Loads a single parameter/value pair. This may define a new parameter, or add a value to a list of parameters.
-     *
-     * @return the request for further configuration
-     */
-    TestableRequest loadParameter(String parameterName, String parameterValue);
-
-    /**
-     * Overrides a parameter to the specific value, regardless of how the parameter was previously set.
-     */
-    TestableRequest overrideParameter(String parameterName, String parameterValue);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java
deleted file mode 100644
index 3d60884..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableRequestImpl.java
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.Session;
-
-import java.util.*;
-
-public class TestableRequestImpl implements TestableRequest
-{
-    private final String contextPath;
-
-    private final Map<String, Object> parameters = CollectionFactory.newMap();
-
-    private final Map<String, Object> attributes = CollectionFactory.newMap();
-
-    private Session session;
-
-    private String path = "/";
-
-    private Locale locale = Locale.getDefault();
-
-    @Inject
-    public TestableRequestImpl()
-    {
-        this("/foo");
-    }
-
-    public TestableRequestImpl(String contextPath)
-    {
-        this.contextPath = contextPath;
-    }
-
-    public TestableRequest clear()
-    {
-        parameters.clear();
-
-        return this;
-    }
-
-    public TestableRequest setPath(String path)
-    {
-        this.path = path;
-
-        return this;
-    }
-
-    public TestableRequest setLocale(Locale locale)
-    {
-        this.locale = locale;
-
-        return this;
-    }
-
-    public TestableRequest loadParameter(String parameterName, String parameterValue)
-    {
-        Object existing = parameters.get(parameterName);
-
-        if (existing == null)
-        {
-            parameters.put(parameterName, parameterValue);
-            return this;
-        }
-
-        if (existing instanceof List)
-        {
-            ((List) existing).add(parameterValue);
-            return this;
-        }
-
-        // Convert from a single String to a List of Strings.
-
-        List list = new ArrayList();
-        list.add(existing);
-        list.add(parameterValue);
-
-        parameters.put(parameterName, list);
-
-        return this;
-    }
-
-    public TestableRequest overrideParameter(String parameterName, String parameterValue)
-    {
-        parameters.put(parameterName, parameterValue);
-
-        return this;
-    }
-
-    public long getDateHeader(String name)
-    {
-        return 0;
-    }
-
-    /**
-     * Returns null.
-     */
-    public String getHeader(String name)
-    {
-        return null;
-    }
-
-    /**
-     * Returns an empty list.
-     */
-    public List<String> getHeaderNames()
-    {
-        return Collections.emptyList();
-    }
-
-    public Locale getLocale()
-    {
-        return locale;
-    }
-
-    public List<String> getParameterNames()
-    {
-        return InternalUtils.sortedKeys(parameters);
-    }
-
-    public String[] getParameters(String name)
-    {
-        Object value = parameters.get(name);
-
-        if (value == null)
-            return null;
-
-        if (value instanceof String)
-            return new String[]
-            { (String) value };
-
-        List list = (List) value;
-
-        return (String[]) list.toArray(new String[list.size()]);
-    }
-
-    public String getPath()
-    {
-        return path;
-    }
-
-    public String getContextPath()
-    {
-        return contextPath;
-    }
-
-    public String getParameter(String name)
-    {
-        Object value = parameters.get(name);
-
-        if (value == null || value instanceof String)
-            return (String) value;
-
-        List<String> list = (List<String>) value;
-
-        return list.get(0);
-    }
-
-    public Session getSession(boolean create)
-    {
-        if (!create)
-            return session;
-
-        if (session == null)
-            session = new PageTesterSession();
-
-        return session;
-    }
-
-    public void setEncoding(String requestEncoding)
-    {
-    }
-
-    /**
-     * Always returns false. If you need to test Ajax functionality, you need to be using Selenium.
-     */
-    public boolean isXHR()
-    {
-        return false;
-    }
-
-    public boolean isSecure()
-    {
-        return false;
-    }
-
-    /**
-     * Always returns true.
-     */
-    public boolean isRequestedSessionIdValid()
-    {
-        return true;
-    }
-
-    public Object getAttribute(String name)
-    {
-        return attributes.get(name);
-    }
-
-    public void setAttribute(String name, Object value)
-    {
-        attributes.put(name, value);
-    }
-
-    /**
-     * Returns "localhost" which is sufficient for testing purposes.
-     */
-    public String getServerName()
-    {
-        return "localhost";
-    }
-
-    /**
-     * Always returns POST, to keep the Form component happy.
-     */
-    public String getMethod()
-    {
-        return "POST";
-    }
-
-    /**
-     * Always returns 80.
-     */
-    public int getLocalPort()
-    {
-        return 80;
-    }
-
-    /**
-     * Always returns 80.
-     * 
-     * @since 5.2.5
-     */
-    public int getServerPort()
-    {
-        return 80;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java
deleted file mode 100644
index 3d465a0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponse.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.services.Response;
-
-public interface TestableResponse extends Response
-{
-    /**
-     * Invoked as part of the rendering pipeline to store the final rendered Document object.
-     */
-    void setRenderedDocument(Document document);
-
-    /**
-     * Allows access to the rendered document.
-     */
-    Document getRenderedDocument();
-
-    /**
-     * Returns the link redirected to via {@link org.apache.tapestry5.services.Response#sendRedirect(org.apache.tapestry5.Link)}.
-     */
-    Link getRedirectLink();
-
-    /**
-     * Clears internal state, in preparation for the next test.
-     */
-    void clear();
-    
-    /**
-     * Returns the named header.
-     * 
-     * @since 5.2.3
-     */
-    Object getHeader(String name);
-    
-    /**
-     * Returns the redirect URL.
-     * 
-     * @since 5.2.3
-     */
-    String getRedirectURL();
-    
-    /**
-     * Returns the status code for this response.
-     * 
-     * @since 5.2.3
-     */
-    int getStatus();
-    
-    /**
-     * Returns the error message, if available.
-     * 
-     * @since 5.2.3
-     */
-    String getErrorMessage();
-    
-    /**
-     * Returns the the MIME content type for the output.
-     * 
-     * @since 5.2.3
-     */
-    String getContentType();
-    
-    /**
-     * Returns the content of the {@link javax.servlet.ServletOutputStream} as string.
-     * 
-     * @since 5.2.3
-     */
-    String getOutput();
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java
deleted file mode 100644
index 1d63809..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/test/TestableResponseImpl.java
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.OutputStreamWriter;
-import java.io.PrintWriter;
-import java.util.Map;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-public class TestableResponseImpl implements TestableResponse
-{
-    private Link link;
-
-    private boolean committed;
-
-    private Document renderedDocument;
-
-    private Map<String, Object> headers;
-
-    private String redirectURL;
-
-    private int status = HttpServletResponse.SC_OK;
-
-    private String errorMessage;
-
-    private int contentLength = 0;
-    
-    private String contentType;
-
-    private final ByteArrayOutputStream output = new ByteArrayOutputStream();
-
-    private ServletOutputStream outputStream = new TesableServletOutputStream(output);
-
-    private PrintWriter printWriter;
-
-    public TestableResponseImpl()
-    {
-        headers = CollectionFactory.newMap();
-    }
-
-    public OutputStream getOutputStream(String contentType) throws IOException
-    {
-        this.contentType = contentType;
-        
-        return this.outputStream;
-    }
-
-    public PrintWriter getPrintWriter(String contentType) throws IOException
-    {
-        committed = true;
-        
-        this.contentType = contentType;
-
-        if (printWriter == null)
-        {
-            this.printWriter = new PrintWriter(new OutputStreamWriter(output));
-        }
-
-        return this.printWriter;
-    }
-
-    public void sendError(int sc, String message) throws IOException
-    {
-        setCommitted();
-
-        this.status = sc;
-        this.errorMessage = message;
-    }
-
-    public void sendRedirect(String URL) throws IOException
-    {
-        setCommitted();
-
-        this.redirectURL = URL;
-    }
-
-    public void setContentLength(int length)
-    {
-        this.contentLength = length;
-    }
-
-    public void setDateHeader(String name, long date)
-    {
-        headers.put(name, date);
-    }
-
-    public void setHeader(String name, String value)
-    {
-        headers.put(name, value);
-    }
-
-    public void setIntHeader(String name, int value)
-    {
-        headers.put(name, value);
-    }
-
-    public void sendRedirect(Link link) throws IOException
-    {
-        setCommitted();
-
-        this.link = link;
-    }
-
-    public void setStatus(int sc)
-    {
-        this.status = sc;
-    }
-
-    public String encodeRedirectURL(String URL)
-    {
-        return URL;
-    }
-
-    public String encodeURL(String URL)
-    {
-        return URL;
-    }
-
-    public Link getRedirectLink()
-    {
-        return link;
-    }
-
-    public boolean isCommitted()
-    {
-        return committed;
-    }
-
-    public void clear()
-    {
-        committed = false;
-        link = null;
-        renderedDocument = null;
-        headers.clear();
-        status = HttpServletResponse.SC_OK;
-        errorMessage = null;
-        contentLength = 0;
-        contentType = null;
-        output.reset();
-    }
-
-    public Document getRenderedDocument()
-    {
-        return renderedDocument;
-    }
-
-    public void setRenderedDocument(Document document)
-    {
-        renderedDocument = document;
-    }
-
-    public void disableCompression()
-    {
-    }
-
-    public Object getHeader(String name)
-    {
-        return headers.get(name);
-    }
-
-    public String getRedirectURL()
-    {
-        return this.redirectURL;
-    }
-
-    public int getStatus()
-    {
-        return status;
-    }
-
-    public String getErrorMessage()
-    {
-        return errorMessage;
-    }
-
-    public int getContentLength()
-    {
-        return contentLength;
-    }
-
-    private void setCommitted()
-    {
-        this.committed = true;
-    }
-    
-    public String getContentType()
-    {
-        return this.contentType;
-    }
-
-    public String getOutput()
-    {
-        return output.toString();
-    }
-
-    private class TesableServletOutputStream extends ServletOutputStream
-    {
-        private OutputStream delegate;
-
-        public TesableServletOutputStream(OutputStream delegate)
-        {
-            super();
-            this.delegate = delegate;
-        }
-
-        @Override
-        public void write(int b) throws IOException
-        {
-            delegate.write(b);
-        }
-
-        @Override
-        public void flush() throws IOException
-        {
-            super.flush();
-
-            this.delegate.flush();
-
-            setCommitted();
-        }
-
-        @Override
-        public void close() throws IOException
-        {
-            super.close();
-
-            this.delegate.close();
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java
deleted file mode 100644
index 3677044..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/AbstractIncludeAssetWorker.java
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.FieldAccess;
-import org.apache.tapestry5.services.TransformConstants;
-import org.apache.tapestry5.services.TransformField;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Base class for workers that automatically include assets in the page (via methods on
- * {@link org.apache.tapestry5.RenderSupport}).
- */
-public abstract class AbstractIncludeAssetWorker implements ComponentClassTransformWorker
-{
-    private final AssetSource assetSource;
-
-    private final SymbolSource symbolSource;
-
-    public AbstractIncludeAssetWorker(AssetSource assetSource, SymbolSource symbolSource)
-    {
-        this.assetSource = assetSource;
-        this.symbolSource = symbolSource;
-    }
-
-    /**
-     * Expands symbols in the path, then adds an operation into the setup render phase of the
-     * component. Ultimately, {@link #handleAsset(org.apache.tapestry5.Asset)} will be invoked for
-     * each asset (dervied from assetPaths).
-     * 
-     * @param transformation
-     *            transformation process for component
-     * @param model
-     *            component model for component
-     * @param assetPaths
-     *            raw paths to be converted to assets
-     */
-    protected final void addOperationForAssetPaths(ClassTransformation transformation, MutableComponentModel model,
-            String[] assetPaths)
-    {
-        List<String> expandedPaths = expandSymbolsInPaths(assetPaths);
-
-        // Since every instance of the component will be in a different locale, every instance
-        // will have a field to store its localized list of assets.
-
-        FieldAccess access = createFieldForAssets(transformation);
-
-        // Inside the component's page loaded callback, convert the asset paths to assets
-
-        storeLocalizedAssetsAtPageLoad(transformation, model.getBaseResource(), expandedPaths, access);
-
-        handleAssetsDuringSetupRenderPhase(transformation, model, access);
-    }
-
-    private FieldAccess createFieldForAssets(ClassTransformation transformation)
-    {
-        TransformField field = transformation.createField(Modifier.PROTECTED, List.class.getName(), "includedAssets");
-
-        return field.getAccess();
-    }
-
-    private void handleAssetsDuringSetupRenderPhase(ClassTransformation transformation, MutableComponentModel model,
-            final FieldAccess access)
-    {
-        ComponentMethodAdvice advice = new ComponentMethodAdvice()
-        {
-
-            @SuppressWarnings("unchecked")
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                invocation.proceed();
-
-                List<Asset> assets = (List<Asset>) access.read(invocation.getInstance());
-
-                handleAssets(assets);
-            }
-        };
-
-        transformation.getOrCreateMethod(TransformConstants.SETUP_RENDER_SIGNATURE).addAdvice(advice);
-
-        model.addRenderPhase(SetupRender.class);
-    }
-
-    private void storeLocalizedAssetsAtPageLoad(ClassTransformation transformation, final Resource baseResource,
-            final List<String> expandedPaths, final FieldAccess access)
-    {
-        ComponentMethodAdvice advice = new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                invocation.proceed();
-
-                ComponentResources resources = invocation.getComponentResources();
-
-                List<Asset> assets = convertPathsToAssets(baseResource, resources.getLocale(), expandedPaths);
-
-                access.write(invocation.getInstance(), assets);
-            }
-        };
-
-        transformation.getOrCreateMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE).addAdvice(advice);
-    }
-
-    private List<String> expandSymbolsInPaths(String[] paths)
-    {
-        List<String> result = CollectionFactory.newList();
-
-        for (String path : paths)
-        {
-            String expanded = symbolSource.expandSymbols(path);
-
-            result.add(expanded);
-        }
-
-        return result;
-    }
-
-    private List<Asset> convertPathsToAssets(Resource baseResource, Locale locale, List<String> assetPaths)
-    {
-        List<Asset> result = CollectionFactory.newList();
-
-        for (String assetPath : assetPaths)
-        {
-            Asset asset = assetSource.getAsset(baseResource, assetPath, locale);
-
-            result.add(asset);
-        }
-
-        return result;
-    }
-
-    private void handleAssets(List<Asset> assets)
-    {
-        for (Asset asset : assets)
-        {
-            handleAsset(asset);
-        }
-    }
-
-    /**
-     * Invoked, from the component's setup render phase, for each asset. This method must be
-     * threadsafe. Most
-     * implementations pass the asset to a particular method of {@link org.apache.tapestry5.RenderSupport} or
-     * {@link JavaScriptSupport}.
-     * 
-     * @param asset
-     *            to be processed
-     */
-    protected abstract void handleAsset(Asset asset);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
deleted file mode 100644
index 84ac23d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ActivationRequestParameterWorker.java
+++ /dev/null
@@ -1,158 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.ActivationRequestParameter;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.services.*;
-
-/**
- * Hooks the activate event handler on the component (presumably, a page) to
- * extract query parameters, and hooks the link decoration events to extract values
- * and add them to the {@link Link}.
- * 
- * @see ActivationRequestParameter
- * @since 5.2.0
- */
-@SuppressWarnings("all")
-public class ActivationRequestParameterWorker implements ComponentClassTransformWorker
-{
-    private final Request request;
-
-    private final ComponentClassCache classCache;
-
-    private final ValueEncoderSource valueEncoderSource;
-
-    public ActivationRequestParameterWorker(Request request, ComponentClassCache classCache,
-            ValueEncoderSource valueEncoderSource)
-    {
-        this.request = request;
-        this.classCache = classCache;
-        this.valueEncoderSource = valueEncoderSource;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(ActivationRequestParameter.class))
-        {
-            mapFieldToQueryParameter(field, transformation, model);
-        }
-    }
-
-    private void mapFieldToQueryParameter(TransformField field, ClassTransformation transformation,
-            MutableComponentModel model)
-    {
-        ActivationRequestParameter annotation = field.getAnnotation(ActivationRequestParameter.class);
-
-        String parameterName = getParameterName(field, annotation);
-
-        // Assumption: the field type is not one that's loaded by the component class loader, so it's safe
-        // to convert to a hard type during class transformation.
-
-        Class fieldType = classCache.forName(field.getType());
-
-        ValueEncoder encoder = valueEncoderSource.getValueEncoder(fieldType);
-
-        FieldAccess access = field.getAccess();
-
-        setValueFromInitializeEventHandler(transformation, access, parameterName, encoder);
-        decorateLinks(transformation, access, parameterName, encoder);
-        preallocateName(transformation, parameterName);
-    }
-
-    private static void preallocateName(ClassTransformation transformation, final String parameterName)
-    {
-        ComponentEventHandler handler = new ComponentEventHandler()
-        {
-            public void handleEvent(Component instance, ComponentEvent event)
-            {
-                IdAllocator idAllocator = event.getEventContext().get(IdAllocator.class, 0);
-
-                idAllocator.allocateId(parameterName);
-            }
-        };
-
-        transformation.addComponentEventHandler(EventConstants.PREALLOCATE_FORM_CONTROL_NAMES, 1,
-                "ActivationRequestParameterWorker preallocate form control name '" + parameterName + "' event handler",
-                handler);
-    }
-
-    @SuppressWarnings("all")
-    private void setValueFromInitializeEventHandler(ClassTransformation transformation, final FieldAccess access,
-            final String parameterName, final ValueEncoder encoder)
-    {
-        ComponentEventHandler handler = new ComponentEventHandler()
-        {
-            public void handleEvent(Component instance, ComponentEvent event)
-            {
-                String clientValue = request.getParameter(parameterName);
-
-                if (clientValue == null)
-                    return;
-
-                Object value = encoder.toValue(clientValue);
-
-                access.write(instance, value);
-            }
-        };
-
-        transformation.addComponentEventHandler(EventConstants.ACTIVATE, 0,
-                "ActivationRequestParameterWorker activate event handler", handler);
-    }
-
-    @SuppressWarnings("all")
-    private static void decorateLinks(ClassTransformation transformation, final FieldAccess access,
-            final String parameterName, final ValueEncoder encoder)
-    {
-        ComponentEventHandler handler = new ComponentEventHandler()
-        {
-            public void handleEvent(Component instance, ComponentEvent event)
-            {
-                Object value = access.read(instance);
-
-                if (value == null)
-                    return;
-
-                Link link = event.getEventContext().get(Link.class, 0);
-
-                String clientValue = encoder.toClient(value);
-
-                link.addParameter(parameterName, clientValue);
-            }
-        };
-
-        transformation.addComponentEventHandler(EventConstants.DECORATE_COMPONENT_EVENT_LINK, 0,
-                "ActivationRequestParameterWorker decorate component event link event handler", handler);
-
-        transformation.addComponentEventHandler(EventConstants.DECORATE_PAGE_RENDER_LINK, 0,
-                "ActivationRequestParameterWorker decorate page render link event handler", handler);
-    }
-
-    private String getParameterName(TransformField field, ActivationRequestParameter annotation)
-    {
-        if (annotation.value().equals(""))
-            return field.getName();
-
-        return annotation.value();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
deleted file mode 100644
index 70ff3aa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ApplicationStateWorker.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ApplicationStateManager;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Looks for the {@link ApplicationState} and {@link org.apache.tapestry5.annotations.SessionState} annotations and
- * converts read and write access on such fields into calls to the {@link ApplicationStateManager}.
- */
-public class ApplicationStateWorker implements ComponentClassTransformWorker
-{
-    private final ApplicationStateManager applicationStateManager;
-
-    private final ComponentClassCache componentClassCache;
-
-    public ApplicationStateWorker(ApplicationStateManager applicationStateManager,
-            ComponentClassCache componentClassCache)
-    {
-        this.applicationStateManager = applicationStateManager;
-        this.componentClassCache = componentClassCache;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        Map<TransformField, Boolean> fields = new TreeMap<TransformField, Boolean>();
-
-        for (TransformField field : transformation.matchFieldsWithAnnotation(ApplicationState.class))
-        {
-            ApplicationState annotation = field.getAnnotation(ApplicationState.class);
-
-            fields.put(field, annotation.create());
-
-            field.claim(annotation);
-        }
-
-        for (TransformField field : transformation.matchFieldsWithAnnotation(SessionState.class))
-        {
-            SessionState annotation = field.getAnnotation(SessionState.class);
-
-            fields.put(field, annotation.create());
-
-            field.claim(annotation);
-        }
-
-        for (Map.Entry<TransformField, Boolean> e : fields.entrySet())
-        {
-            transform(transformation, e.getKey(), e.getValue());
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private void transform(ClassTransformation transformation, TransformField field, final boolean create)
-    {
-        final Class fieldClass = componentClassCache.forName(field.getType());
-
-        field.replaceAccess(new FieldValueConduit()
-        {
-            public void set(Object newValue)
-            {
-                applicationStateManager.set(fieldClass, newValue);
-            }
-
-            public Object get()
-            {
-                return create ? applicationStateManager.get(fieldClass) : applicationStateManager
-                        .getIfExists(fieldClass);
-            }
-        });
-
-        final String expectedName = field.getName() + "Exists";
-
-        List<TransformField> fields = transformation.matchFields(new Predicate<TransformField>()
-        {
-            public boolean accept(TransformField field)
-            {
-                return field.getType().equals("boolean") && field.getName().equalsIgnoreCase(expectedName);
-            }
-        });
-
-        for (TransformField existsField : fields)
-        {
-            existsField.claim(this);
-
-            String className = transformation.getClassName();
-
-            String fieldName = existsField.getName();
-
-            existsField.replaceAccess(new ReadOnlyFieldValueConduit(className, fieldName)
-            {
-                public Object get()
-                {
-                    return applicationStateManager.exists(fieldClass);
-                }
-            });
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BaseEventHandlerMethodInvoker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BaseEventHandlerMethodInvoker.java
deleted file mode 100644
index f56d6bd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BaseEventHandlerMethodInvoker.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.services.MethodAccess;
-import org.apache.tapestry5.services.MethodInvocationResult;
-import org.apache.tapestry5.services.TransformMethod;
-
-/**
- * Base class for invoking event handler methods that also serves when invoking an
- * event handler method that takes no parameters.
- * 
- * @since 5.2.0
- */
-public class BaseEventHandlerMethodInvoker implements EventHandlerMethodInvoker
-{
-    private final MethodAccess access;
-
-    private final String identifier;
-
-    private final String eventType;
-
-    private final String componentId;
-
-    public BaseEventHandlerMethodInvoker(TransformMethod method, String eventType, String componentId)
-    {
-        this.eventType = eventType;
-        this.componentId = componentId;
-
-        access = method.getAccess();
-        identifier = method.getMethodIdentifier();
-    }
-
-    public void invokeEventHandlerMethod(ComponentEvent event, Object instance)
-    {
-        event.setMethodDescription(identifier);
-
-        MethodInvocationResult result = access.invoke(instance, constructParameters(event));
-
-        result.rethrow();
-
-        event.storeResult(result.getReturnValue());
-    }
-
-    public String getComponentId()
-    {
-        return componentId;
-    }
-
-    public String getEventType()
-    {
-        return eventType;
-    }
-
-    /**
-     * Returns 0 (the event method takes no parameters). Subclasses should override.
-     */
-    public int getMinContextValueCount()
-    {
-        return 0;
-    }
-
-    /** Overridden in subclasses to provide the actual values to be passed to the method. */
-    protected Object[] constructParameters(ComponentEvent event)
-    {
-        return InternalConstants.EMPTY_STRING_ARRAY;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java
deleted file mode 100644
index 3cfa509..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/BindParameterWorker.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.BindParameter;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Responsible for identifying, via the {@link org.apache.tapestry5.annotations.BindParameter} annotation, mixin fields
- * that should be bound to a core-component parameter value.
- * 
- * @since 5.2.0
- */
-public class BindParameterWorker implements ComponentClassTransformWorker
-{
-    private final class BoundParameterFieldValueConduit implements FieldValueConduit
-    {
-        private final String containerParameterName;
-
-        private final InternalComponentResources containerResources;
-
-        private final Class fieldType;
-
-        // Guarded by this
-        private ParameterConduit conduit;
-
-        private BoundParameterFieldValueConduit(String containerParameterName,
-                InternalComponentResources containerResources, Class fieldType)
-        {
-            this.containerParameterName = containerParameterName;
-            this.containerResources = containerResources;
-            this.fieldType = fieldType;
-        }
-
-        /**
-         * Defer obtaining the conduit object until needed, to deal with the complex
-         * lifecycle of
-         * parameters. Perhaps this can be addressed by converting constructors into
-         * methods invoked
-         * from the page loaded lifecycle method?
-         */
-        private synchronized ParameterConduit getParameterConduit()
-        {
-            if (conduit == null)
-            {
-                conduit = containerResources.getParameterConduit(containerParameterName);
-            }
-
-            return conduit;
-        }
-
-        public void set(Object newValue)
-        {
-            getParameterConduit().set(newValue);
-        }
-
-        @SuppressWarnings("unchecked")
-        public Object get()
-        {
-            // For the moment, this results in two passes through the TypeCoercer; we'll look
-            // to optimize that in the future. The first pass is deep inside ParameterConduit (coercing
-            // to the component parameter field type), the second is here (usually the same type so no
-            // real coercion necessary).
-
-            Object result = getParameterConduit().get();
-
-            return typeCoercer.coerce(result, fieldType);
-        }
-    }
-
-    private final TypeCoercer typeCoercer;
-
-    private final ComponentClassCache componentClassCache;
-
-    public BindParameterWorker(TypeCoercer typeCoercer, ComponentClassCache componentClassCache)
-    {
-        this.typeCoercer = typeCoercer;
-        this.componentClassCache = componentClassCache;
-    }
-
-    public void transform(final ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(BindParameter.class))
-            convertFieldIntoContainerBoundParameter(field);
-    }
-
-    private void convertFieldIntoContainerBoundParameter(TransformField field)
-    {
-        BindParameter annotation = field.getAnnotation(BindParameter.class);
-
-        field.claim(annotation);
-
-        final String[] possibleNames = annotation.value();
-
-        final String fieldTypeName = field.getType();
-
-        final String fieldName = field.getName();
-
-        ComponentValueProvider<FieldValueConduit> provider = new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(final ComponentResources resources)
-            {
-                try
-                {
-                    return createFieldValueConduit(resources, fieldTypeName, fieldName, possibleNames);
-                }
-                catch (Exception ex)
-                {
-                    throw new TapestryException(String.format(
-                            "Failure binding parameter field '%s' of mixin %s (type %s): %s", fieldName, resources
-                                    .getCompleteId(), resources.getComponentModel().getComponentClassName(),
-                            InternalUtils.toMessage(ex)), ex);
-                }
-            }
-
-        };
-
-        field.replaceAccess(provider);
-    }
-
-    private FieldValueConduit createFieldValueConduit(final ComponentResources resources, final String fieldTypeName,
-            final String fieldName, final String[] possibleNames)
-    {
-        if (!resources.isMixin())
-            throw new TapestryException(TransformMessages.bindParameterOnlyOnMixin(fieldName, resources), null);
-
-        InternalComponentResources containerResources = (InternalComponentResources) resources.getContainerResources();
-
-        // Evaluate this early so that we get a fast fail.
-
-        String containerParameterName = identifyParameterName(resources, InternalUtils.stripMemberName(fieldName),
-                possibleNames);
-
-        Class fieldType = componentClassCache.forName(fieldTypeName);
-
-        return new BoundParameterFieldValueConduit(containerParameterName, containerResources, fieldType);
-    }
-
-    private String identifyParameterName(ComponentResources resources, String firstGuess, String... otherGuesses)
-    {
-        ComponentModel model = resources.getContainerResources().getComponentModel();
-
-        List<String> guesses = CollectionFactory.newList();
-        guesses.add(firstGuess);
-
-        for (String name : otherGuesses)
-        {
-            guesses.add(name);
-        }
-
-        for (String name : guesses)
-        {
-            if (model.isFormalParameter(name))
-                return name;
-        }
-
-        String message = String.format("Containing component %s does not contain a formal parameter %s %s.",
-
-        model.getComponentClassName(),
-
-        guesses.size() == 1 ? "matching" : "matching any of",
-
-        InternalUtils.joinSorted(guesses));
-
-        throw new UnknownValueException(message, new AvailableValues("Formal parameters", model
-                .getDeclaredParameterNames()));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/CachedWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/CachedWorker.java
deleted file mode 100644
index a0620c9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/CachedWorker.java
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.reflect.Modifier;
-import java.util.List;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Cached;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
-
-/**
- * Caches method return values for methods annotated with {@link Cached}.
- */
-@SuppressWarnings("all")
-public class CachedWorker implements ComponentClassTransformWorker
-{
-    private final BindingSource bindingSource;
-
-    private final PerthreadManager perThreadManager;
-
-    interface MethodResultCacheFactory
-    {
-        MethodResultCache create(Component instance);
-    }
-
-    /**
-     * Handles the watching of a binding (usually a property or property expression), invalidating the
-     * cache early if the watched binding's value changes.
-     */
-    private class SimpleMethodResultCache implements MethodResultCache
-    {
-        private boolean cached;
-        private Object cachedValue;
-
-        public void set(Object cachedValue)
-        {
-            cached = true;
-            this.cachedValue = cachedValue;
-        }
-
-        public void reset()
-        {
-            cached = false;
-            cachedValue = null;
-        }
-
-        public boolean isCached()
-        {
-            return cached;
-        }
-
-        public Object get()
-        {
-            return cachedValue;
-        }
-    }
-
-    private class WatchedBindingMethodResultCache extends SimpleMethodResultCache
-    {
-        private final Binding binding;
-
-        private Object cachedBindingValue;
-
-        public WatchedBindingMethodResultCache(Binding binding)
-        {
-            this.binding = binding;
-        }
-
-        @Override
-        public boolean isCached()
-        {
-            Object currentBindingValue = binding.get();
-
-            if (!TapestryInternalUtils.isEqual(cachedBindingValue, currentBindingValue))
-            {
-                reset();
-
-                cachedBindingValue = currentBindingValue;
-            }
-
-            return super.isCached();
-        }
-    }
-
-    public CachedWorker(BindingSource bindingSource, PerthreadManager perthreadManager)
-    {
-        this.bindingSource = bindingSource;
-        this.perThreadManager = perthreadManager;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        List<TransformMethod> methods = transformation.matchMethodsWithAnnotation(Cached.class);
-
-        for (TransformMethod method : methods)
-        {
-            validateMethod(method);
-
-            adviseMethod(transformation, method);
-        }
-    }
-
-    private void adviseMethod(ClassTransformation transformation, TransformMethod method)
-    {
-        // The key needs to reflect not just the method name, but also the containing
-        // page and component (otherwise, there would be unwanted sharing of cache
-        // between different instances of the same component within or across pages). This
-        // name can't be calculated until page instantiation time.
-
-        FieldAccess fieldAccess = createPerThreadValueField(transformation, method);
-
-        Cached annotation = method.getAnnotation(Cached.class);
-
-        MethodResultCacheFactory factory = createFactory(transformation, annotation.watch(), method);
-
-        ComponentMethodAdvice advice = createAdvice(fieldAccess, factory);
-
-        method.addAdvice(advice);
-    }
-
-    private FieldAccess createPerThreadValueField(ClassTransformation transformation, TransformMethod method)
-    {
-        TransformField field = transformation.createField(Modifier.PROTECTED, PerThreadValue.class.getName(),
-                "perThreadMethodCache$" + method.getName());
-
-        // Each instance of the component will get a new PerThreadValue.
-        field.injectIndirect(new ComponentValueProvider<PerThreadValue<MethodResultCache>>()
-        {
-            public PerThreadValue<MethodResultCache> get(ComponentResources resources)
-            {
-                return perThreadManager.createValue();
-            }
-        });
-
-        return field.getAccess();
-    }
-
-    private ComponentMethodAdvice createAdvice(final FieldAccess perThreadValueAccess,
-            final MethodResultCacheFactory factory)
-    {
-        return new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                MethodResultCache cache = getOrCreateCache(invocation);
-
-                if (cache.isCached())
-                {
-                    invocation.overrideResult(cache.get());
-                    return;
-                }
-
-                invocation.proceed();
-
-                invocation.rethrow();
-
-                cache.set(invocation.getResult());
-            }
-
-            private MethodResultCache getOrCreateCache(ComponentMethodInvocation invocation)
-            {
-                Component instance = invocation.getInstance();
-
-                PerThreadValue<MethodResultCache> value = (PerThreadValue<MethodResultCache>) perThreadValueAccess
-                        .read(instance);
-
-                if (value.exists())
-                    return value.get();
-
-                return value.set(factory.create(instance));
-            }
-        };
-    }
-
-    private MethodResultCacheFactory createFactory(ClassTransformation transformation, final String watch,
-            TransformMethod method)
-    {
-        if (watch.equals(""))
-            return new MethodResultCacheFactory()
-            {
-                public MethodResultCache create(Component instance)
-                {
-                    return new SimpleMethodResultCache();
-                }
-            };
-
-        // Each component instance will get its own Binding instance. That handles both different locales,
-        // and reuse of a component (with a cached method) within a page or across pages.
-
-        TransformField bindingField = transformation.createField(Modifier.PROTECTED, Binding.class.getName(),
-                "cache$watchBinding$" + method.getName());
-
-        final FieldAccess bindingAccess = bindingField.getAccess();
-
-        transformation.getOrCreateMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE).addAdvice(
-                new ComponentMethodAdvice()
-                {
-                    public void advise(ComponentMethodInvocation invocation)
-                    {
-                        Binding binding = bindingSource.newBinding("@Cached watch", invocation.getComponentResources(),
-                                BindingConstants.PROP, watch);
-
-                        bindingAccess.write(invocation.getInstance(), binding);
-
-                        invocation.proceed();
-                    }
-                });
-
-        return new MethodResultCacheFactory()
-        {
-            public MethodResultCache create(Component instance)
-            {
-                Binding binding = (Binding) bindingAccess.read(instance);
-
-                return new WatchedBindingMethodResultCache(binding);
-            }
-        };
-    }
-
-    private void validateMethod(TransformMethod method)
-    {
-        TransformMethodSignature signature = method.getSignature();
-
-        if (signature.getReturnType().equals("void"))
-            throw new IllegalArgumentException(String.format(
-                    "Method %s may not be used with @Cached because it returns void.", method.getMethodIdentifier()));
-
-        if (signature.getParameterTypes().length != 0)
-            throw new IllegalArgumentException(String.format(
-                    "Method %s may not be used with @Cached because it has parameters.", method.getMethodIdentifier()));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
deleted file mode 100644
index 08bb7d3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ComponentWorker.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.MixinClasses;
-import org.apache.tapestry5.annotations.Mixins;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.KeyValue;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.services.StringLocation;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Finds fields with the {@link org.apache.tapestry5.annotations.Component} annotation and updates
- * the model. Also
- * checks for the {@link Mixins} and {@link MixinClasses} annotations and uses them to update the {@link ComponentModel}
- * .
- */
-public class ComponentWorker implements ComponentClassTransformWorker
-{
-    private final ComponentClassResolver resolver;
-
-    public ComponentWorker(ComponentClassResolver resolver)
-    {
-        this.resolver = resolver;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(Component.class))
-        {
-            transformField(transformation, model, field);
-        }
-    }
-
-    private void transformField(ClassTransformation transformation, MutableComponentModel model, TransformField field)
-    {
-        Component annotation = field.getAnnotation(Component.class);
-
-        field.claim(annotation);
-
-        String annotationId = annotation.id();
-
-        String fieldName = field.getName();
-
-        String id = InternalUtils.isNonBlank(annotationId) ? annotationId : InternalUtils.stripMemberName(fieldName);
-
-        String type = field.getType();
-
-        Location location = new StringLocation(String.format("%s.%s", transformation.getClassName(), fieldName), 0);
-
-        MutableEmbeddedComponentModel embedded = model.addEmbeddedComponent(id, annotation.type(), type, annotation
-                .inheritInformalParameters(), location);
-
-        addParameters(embedded, annotation.parameters());
-
-        updateModelWithPublishedParameters(embedded, annotation);
-
-        convertAccessToField(transformation, field, id);
-
-        addMixinClasses(field, embedded);
-        addMixinTypes(field, embedded);
-    }
-
-    private void convertAccessToField(ClassTransformation transformation, TransformField field, String id)
-    {
-        String fieldName = field.getName();
-
-        ComponentValueProvider<FieldValueConduit> provider = createProviderForEmbeddedComponentConduit(fieldName, id);
-
-        field.replaceAccess(provider);
-    }
-
-    private ComponentValueProvider<FieldValueConduit> createProviderForEmbeddedComponentConduit(final String fieldName,
-            final String id)
-    {
-        return new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(final ComponentResources resources)
-            {
-                return new ReadOnlyFieldValueConduit(resources, fieldName)
-                {
-                    public Object get()
-                    {
-                        return resources.getEmbeddedComponent(id);
-                    }
-                };
-            }
-        };
-    }
-
-    private void updateModelWithPublishedParameters(MutableEmbeddedComponentModel embedded, Component annotation)
-    {
-        String names = annotation.publishParameters();
-
-        if (InternalUtils.isNonBlank(names))
-            embedded.setPublishedParameters(CollectionFactory.newList(TapestryInternalUtils.splitAtCommas(names)));
-    }
-
-    private void addMixinClasses(TransformField field, MutableEmbeddedComponentModel model)
-    {
-        MixinClasses annotation = field.getAnnotation(MixinClasses.class);
-
-        if (annotation == null)
-            return;
-
-        boolean orderEmpty = annotation.order().length == 0;
-
-        if (!orderEmpty && annotation.order().length != annotation.value().length)
-            throw new TapestryException(TransformMessages.badMixinConstraintLength(annotation, field.getName()), model,
-                    null);
-
-        for (int i = 0; i < annotation.value().length; i++)
-        {
-            String[] constraints = orderEmpty ? InternalConstants.EMPTY_STRING_ARRAY : TapestryInternalUtils
-                    .splitMixinConstraints(annotation.order()[i]);
-
-            model.addMixin(annotation.value()[i].getName(), constraints);
-        }
-    }
-
-    private void addMixinTypes(TransformField field, MutableEmbeddedComponentModel model)
-    {
-        Mixins annotation = field.getAnnotation(Mixins.class);
-
-        if (annotation == null)
-            return;
-
-        for (String typeName : annotation.value())
-        {
-            Orderable<String> typeAndOrder = TapestryInternalUtils.mixinTypeAndOrder(typeName);
-            String mixinClassName = resolver.resolveMixinTypeToClassName(typeAndOrder.getTarget());
-            model.addMixin(mixinClassName, typeAndOrder.getConstraints());
-        }
-    }
-
-    private void addParameters(MutableEmbeddedComponentModel embedded, String[] parameters)
-    {
-        for (String parameter : parameters)
-        {
-            KeyValue kv = TapestryInternalUtils.parseKeyValue(parameter);
-
-            embedded.addParameter(kv.getKey(), kv.getValue());
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/DiscardAfterWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/DiscardAfterWorker.java
deleted file mode 100644
index 272400b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/DiscardAfterWorker.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.DiscardAfter;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.TransformMethod;
-
-public class DiscardAfterWorker implements ComponentClassTransformWorker
-{
-
-    private static final ComponentMethodAdvice advice = new ComponentMethodAdvice()
-    {
-
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            invocation.proceed();
-
-            if (invocation.isFail())
-                return;
-
-            ComponentResources resources = invocation.getComponentResources();
-
-            resources.discardPersistentFieldChanges();
-        }
-
-    };
-
-    public void transform(final ClassTransformation transformation, final MutableComponentModel model)
-    {
-        final List<TransformMethod> methods = transformation.matchMethodsWithAnnotation(DiscardAfter.class);
-
-        if (methods.isEmpty())
-            return;
-
-        for (final TransformMethod method : methods)
-        {
-            method.addAdvice(advice);
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java
deleted file mode 100644
index 06ea33f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EnvironmentalWorker.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Obtains a value from the {@link Environment} service based on the field type. This is triggered by the presence of
- * the {@link Environmental} annotation.
- */
-@SuppressWarnings("rawtypes")
-public class EnvironmentalWorker implements ComponentClassTransformWorker
-{
-    private final Environment environment;
-
-    private final ComponentClassCache classCache;
-
-    @SuppressWarnings("unchecked")
-    private final class EnvironmentalConduit extends ReadOnlyFieldValueConduit
-    {
-        private final Class environmentalType;
-
-        private final boolean required;
-
-        private EnvironmentalConduit(ComponentResources resources, String fieldName, final Class environmentalType,
-                boolean required)
-        {
-            super(resources, fieldName);
-
-            this.environmentalType = environmentalType;
-            this.required = required;
-        }
-
-        public Object get()
-        {
-            return required ? environment.peekRequired(environmentalType) : environment.peek(environmentalType);
-        }
-    }
-
-    public EnvironmentalWorker(Environment environment, ComponentClassCache classCache)
-    {
-        this.environment = environment;
-
-        this.classCache = classCache;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(Environmental.class))
-        {
-            transform(field);
-        }
-    }
-
-    private void transform(TransformField field)
-    {
-        Environmental annotation = field.getAnnotation(Environmental.class);
-
-        field.claim(annotation);
-
-        final String fieldName = field.getName();
-
-        final Class fieldType = classCache.forName(field.getType());
-
-        final boolean required = annotation.value();
-
-        ComponentValueProvider<FieldValueConduit> provider = new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(ComponentResources resources)
-            {
-                return new EnvironmentalConduit(resources, fieldName, fieldType, required);
-            }
-        };
-
-        field.replaceAccess(provider);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EventHandlerMethodInvoker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EventHandlerMethodInvoker.java
deleted file mode 100644
index b6ffcda..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EventHandlerMethodInvoker.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.runtime.ComponentEvent;
-
-/**
- * An object that can invoke an event handler method on a component instance.
- * 
- * @since 5.2.0
- */
-public interface EventHandlerMethodInvoker
-{
-    /**
-     * The type of event this method handles, i.e., "action".
-     */
-    String getEventType();
-
-    /**
-     * The id of the component this method should be invoked for, or
-     * the blank string to ignore component id when matching.
-     */
-    String getComponentId();
-
-    /**
-     * The minimum number of of context values needed. The method
-     * should be invoked if there are at least this number of
-     * context values.
-     */
-    int getMinContextValueCount();
-
-    /**
-     * Given an event and a component instance, invoke the component event method. The method
-     * is passed appropriate parameters. If the invocation throws a checked exception, then
-     * the exception is wrapped in a RuntimeException and rethrown.
-     */
-    void invokeEventHandlerMethod(ComponentEvent event, Object instance);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EventHandlerMethodParameterSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EventHandlerMethodParameterSource.java
deleted file mode 100644
index 93ecc6e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/EventHandlerMethodParameterSource.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.services.MethodAccess;
-
-/**
- * Supplies one parameter value when invoking a component event handler method. In general,
- * this involves extracting a value form the event's context and coercing it to a type
- * appropriate to the parameter.
- * <p>
- * These values are accumulated and used to invoke the event handler method via
- * {@link MethodAccess#invoke(Object, Object...)}.
- * 
- * @since 5.2.0
- */
-public interface EventHandlerMethodParameterSource
-{
-    /**
-     * Extract the value and coerce it to the correct type.
-     * 
-     * @return value that can be passed as a method parameter
-     */
-    Object valueForEventHandlerMethodParameter(ComponentEvent event);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/HeartbeatDeferredWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/HeartbeatDeferredWorker.java
deleted file mode 100644
index 6062680..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/HeartbeatDeferredWorker.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.HeartbeatDeferred;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.TransformMethod;
-
-public class HeartbeatDeferredWorker implements ComponentClassTransformWorker
-{
-    private final Heartbeat heartbeat;
-
-    private final ComponentMethodAdvice deferredAdvice = new ComponentMethodAdvice()
-    {
-        public void advise(final ComponentMethodInvocation invocation)
-        {
-            heartbeat.defer(new Runnable()
-            {
-
-                public void run()
-                {
-                    invocation.proceed();
-                }
-            });
-        }
-    };
-
-    public HeartbeatDeferredWorker(Heartbeat heartbeat)
-    {
-        this.heartbeat = heartbeat;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformMethod method : transformation.matchMethodsWithAnnotation(HeartbeatDeferred.class))
-        {
-            deferMethodInvocations(method);
-        }
-    }
-
-    void deferMethodInvocations(TransformMethod method)
-    {
-        validateVoid(method);
-
-        validateNoCheckedExceptions(method);
-
-        method.addAdvice(deferredAdvice);
-
-    }
-
-    private void validateNoCheckedExceptions(TransformMethod method)
-    {
-        if (method.getSignature().getExceptionTypes().length > 0)
-            throw new RuntimeException(
-                    String
-                            .format(
-                                    "Method %s is not compatible with the @HeartbeatDeferred annotation, as it throws checked exceptions.",
-                                    method.getMethodIdentifier()));
-    }
-
-    private void validateVoid(TransformMethod method)
-    {
-        if (!method.getSignature().getReturnType().equals("void"))
-            throw new RuntimeException(String.format(
-                    "Method %s is not compatible with the @HeartbeatDeferred annotation, as it is not a void method.",
-                    method.getMethodIdentifier()));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
deleted file mode 100644
index dd52fb0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ImportWorker.java
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Import;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.func.Worker;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Implements the {@link Import} annotation, both at the class and at the method level.
- * 
- * @since 5.2.0
- */
-public class ImportWorker implements ComponentClassTransformWorker
-{
-    private final JavaScriptSupport javascriptSupport;
-
-    private final SymbolSource symbolSource;
-
-    private final AssetSource assetSource;
-
-    private final Worker<Asset> importLibrary = new Worker<Asset>()
-    {
-        public void work(Asset asset)
-        {
-            javascriptSupport.importJavaScriptLibrary(asset);
-        }
-    };
-
-    private final Worker<Asset> importStylesheet = new Worker<Asset>()
-    {
-        public void work(Asset asset)
-        {
-            javascriptSupport.importStylesheet(asset);
-        };
-    };
-
-    public ImportWorker(JavaScriptSupport javascriptSupport, SymbolSource symbolSource, AssetSource assetSource)
-    {
-        this.javascriptSupport = javascriptSupport;
-        this.symbolSource = symbolSource;
-        this.assetSource = assetSource;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        processClassAnnotationAtSetupRenderPhase(transformation, model);
-
-        for (TransformMethod m : transformation.matchMethodsWithAnnotation(Import.class))
-        {
-            decorateMethod(transformation, model, m);
-        }
-    }
-
-    private void processClassAnnotationAtSetupRenderPhase(ClassTransformation transformation,
-            MutableComponentModel model)
-    {
-        Import annotation = transformation.getAnnotation(Import.class);
-
-        if (annotation == null)
-            return;
-
-        TransformMethod setupRender = transformation.getOrCreateMethod(TransformConstants.SETUP_RENDER_SIGNATURE);
-
-        decorateMethod(transformation, model, setupRender, annotation);
-
-        model.addRenderPhase(SetupRender.class);
-    }
-
-    private void decorateMethod(ClassTransformation transformation, MutableComponentModel model, TransformMethod method)
-    {
-        Import annotation = method.getAnnotation(Import.class);
-
-        decorateMethod(transformation, model, method, annotation);
-    }
-
-    private void decorateMethod(ClassTransformation transformation, MutableComponentModel model,
-            TransformMethod method, Import annotation)
-    {
-        importStacks(method, annotation.stack());
-
-        importLibraries(transformation, model, method, annotation.library());
-
-        importStylesheets(transformation, model, method, annotation.stylesheet());
-    }
-
-    private void importStacks(TransformMethod method, String[] stacks)
-    {
-        if (stacks.length != 0)
-            method.addAdvice(createImportStackAdvice(stacks));
-    }
-
-    private ComponentMethodAdvice createImportStackAdvice(final String[] stacks)
-    {
-        return new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                for (String stack : stacks)
-                {
-                    javascriptSupport.importStack(stack);
-
-                    invocation.proceed();
-                }
-            }
-        };
-    }
-
-    private void importLibraries(ClassTransformation transformation, MutableComponentModel model,
-            TransformMethod method, String[] paths)
-    {
-        decorateMethodWithOperation(transformation, model, method, paths, importLibrary);
-    }
-
-    private void importStylesheets(ClassTransformation transformation, MutableComponentModel model,
-            TransformMethod method, String[] paths)
-    {
-        decorateMethodWithOperation(transformation, model, method, paths, importStylesheet);
-    }
-
-    private void decorateMethodWithOperation(ClassTransformation transformation, MutableComponentModel model,
-            TransformMethod method, String[] paths, Worker<Asset> operation)
-    {
-        if (paths.length == 0)
-            return;
-
-        String[] expandedPaths = expandPaths(paths);
-
-        FieldAccess access = createFieldForAssets(transformation);
-
-        storeLocalizedAssetsAtPageLoad(transformation, model.getBaseResource(), expandedPaths, access);
-
-        addMethodAssetOperationAdvice(method, access, operation);
-    }
-
-    private String[] expandPaths(String[] paths)
-    {
-        String[] result = new String[paths.length];
-
-        for (int i = 0; i < paths.length; i++)
-            result[i] = symbolSource.expandSymbols(paths[i]);
-
-        return result;
-    }
-
-    private FieldAccess createFieldForAssets(ClassTransformation transformation)
-    {
-        TransformField field = transformation.createField(Modifier.PROTECTED, List.class.getName(), "includedAssets");
-
-        return field.getAccess();
-    }
-
-    private void storeLocalizedAssetsAtPageLoad(ClassTransformation transformation, final Resource baseResource,
-            final String[] expandedPaths, final FieldAccess access)
-    {
-        ComponentMethodAdvice advice = new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                invocation.proceed();
-
-                ComponentResources resources = invocation.getComponentResources();
-
-                List<Asset> assets = convertPathsToAssets(baseResource, resources.getLocale(), expandedPaths);
-
-                access.write(invocation.getInstance(), assets);
-            }
-        };
-
-        transformation.getOrCreateMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE).addAdvice(advice);
-    }
-
-    private List<Asset> convertPathsToAssets(final Resource baseResource, final Locale locale, String[] assetPaths)
-    {
-
-        return F.flow(assetPaths).map(new Mapper<String, Asset>()
-        {
-            public Asset map(String assetPath)
-            {
-                return assetSource.getAsset(baseResource, assetPath, locale);
-            }
-        }).toList();
-    }
-
-    private void addMethodAssetOperationAdvice(TransformMethod method, final FieldAccess access,
-            final Worker<Asset> operation)
-    {
-        ComponentInstanceOperation advice = new ComponentInstanceOperation()
-        {
-
-            public void invoke(Component instance)
-            {
-                List<Asset> assets = (List<Asset>) access.read(instance);
-
-                F.flow(assets).each(operation);
-            }
-        };
-
-        method.addOperationBefore(advice);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java
deleted file mode 100644
index 4f6fdc9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeJavaScriptLibraryWorker.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Recognizes the {@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary} annotation, and ensures that
- * {@link JavaScriptSupport#importJavaScriptLibrary(Asset)} is invoked.
- */
-public class IncludeJavaScriptLibraryWorker extends AbstractIncludeAssetWorker
-{
-    private final JavaScriptSupport javascriptSupport;
-
-    public IncludeJavaScriptLibraryWorker(AssetSource assetSource, JavaScriptSupport renderSupport,
-            SymbolSource symbolSource)
-    {
-        super(assetSource, symbolSource);
-
-        this.javascriptSupport = renderSupport;
-    }
-
-    public void transform(ClassTransformation transformation, final MutableComponentModel model)
-    {
-        IncludeJavaScriptLibrary annotation = transformation.getAnnotation(IncludeJavaScriptLibrary.class);
-
-        if (annotation != null)
-            addOperationForAssetPaths(transformation, model, annotation.value());
-    }
-
-    protected void handleAsset(Asset asset)
-    {
-        javascriptSupport.importJavaScriptLibrary(asset);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java
deleted file mode 100644
index db4bdc9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/IncludeStylesheetWorker.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.annotations.IncludeStylesheet;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClassTransformation;
-
-/**
- * Recognizes the {@link org.apache.tapestry5.annotations.IncludeStylesheet} annotation and ensures that {@link
- * org.apache.tapestry5.RenderSupport#addStylesheetLink(org.apache.tapestry5.Asset, String)} is invoked.
- */
-public class IncludeStylesheetWorker extends AbstractIncludeAssetWorker
-{
-    private final RenderSupport renderSupport;
-
-    public IncludeStylesheetWorker(AssetSource assetSource, RenderSupport renderSupport,
-                                   SymbolSource symbolSource)
-    {
-        super(assetSource, symbolSource);
-
-        this.renderSupport = renderSupport;
-    }
-
-    public void transform(ClassTransformation transformation, final MutableComponentModel model)
-    {
-        IncludeStylesheet annotation = transformation.getAnnotation(IncludeStylesheet.class);
-
-        if (annotation != null) addOperationForAssetPaths(transformation, model, annotation.value());
-    }
-
-
-    protected void handleAsset(Asset asset)
-    {
-        renderSupport.addStylesheetLink(asset, null);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java
deleted file mode 100644
index 8036d63..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectComponentWorker.java
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.PageLifecycleAdapter;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Recognizes the {@link org.apache.tapestry5.annotations.InjectComponent} annotation, and converts the field into a
- * read-only field containing the component. The id of the component may be explicitly stated or will be determined
- * from the field name.
- */
-public class InjectComponentWorker implements ComponentClassTransformWorker
-{
-    private final class InjectedComponentFieldValueConduit extends ReadOnlyFieldValueConduit
-    {
-        private final ComponentResources resources;
-        private final String fieldName, componentId, type;
-
-        private Component embedded;
-
-        private InjectedComponentFieldValueConduit(final ComponentResources resources, String fieldName, String type,
-                String componentId)
-        {
-            super(resources, fieldName);
-
-            this.resources = resources;
-            this.fieldName = fieldName;
-            this.componentId = componentId;
-            this.type = type;
-
-            resources.addPageLifecycleListener(new PageLifecycleAdapter()
-            {
-                public void containingPageDidLoad()
-                {
-                    load();
-
-                    resources.removePageLifecycleListener(this);
-                };
-            });
-        }
-
-        private void load()
-        {
-            embedded = resources.getEmbeddedComponent(componentId);
-
-            Class fieldType = classCache.forName(type);
-
-            if (!fieldType.isInstance(embedded))
-                throw new RuntimeException(
-                        String
-                                .format(
-                                        "Unable to inject component '%s' into field %s of component %s.  Class %s is not assignable to a field of type %s.",
-                                        componentId, fieldName, resources.getCompleteId(), embedded.getClass()
-                                                .getName(), fieldType.getName()));
-        }
-
-        public Object get()
-        {
-            return embedded;
-        }
-    }
-
-    private final ComponentClassCache classCache;
-
-    public InjectComponentWorker(ComponentClassCache classCache)
-    {
-        this.classCache = classCache;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(InjectComponent.class))
-        {
-            InjectComponent annotation = field.getAnnotation(InjectComponent.class);
-
-            field.claim(annotation);
-
-            final String type = field.getType();
-
-            final String componentId = getComponentId(field, annotation);
-
-            final String fieldName = field.getName();
-
-            ComponentValueProvider<FieldValueConduit> provider = new ComponentValueProvider<FieldValueConduit>()
-            {
-                public FieldValueConduit get(final ComponentResources resources)
-                {
-                    return new InjectedComponentFieldValueConduit(resources, fieldName, type, componentId);
-                }
-            };
-
-            field.replaceAccess(provider);
-        }
-
-    }
-
-    private String getComponentId(TransformField field, InjectComponent annotation)
-    {
-        String id = annotation.value();
-
-        if (InternalUtils.isNonBlank(id))
-            return id;
-
-        return InternalUtils.stripMemberName(field.getName());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java
deleted file mode 100644
index 87c0359..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectContainerWorker.java
+++ /dev/null
@@ -1,97 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Identifies the {@link org.apache.tapestry5.annotations.InjectContainer} annotation and adds code
- * to initialize it to
- * the core component.
- */
-public class InjectContainerWorker implements ComponentClassTransformWorker
-{
-    private final ComponentClassCache cache;
-
-    public InjectContainerWorker(ComponentClassCache cache)
-    {
-        this.cache = cache;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (final TransformField field : transformation.matchFieldsWithAnnotation(InjectContainer.class))
-        {
-            transformField(model, field);
-        }
-    }
-
-    private void transformField(MutableComponentModel model, TransformField field)
-    {
-        InjectContainer annotation = field.getAnnotation(InjectContainer.class);
-
-        field.claim(annotation);
-
-        ComponentValueProvider<FieldValueConduit> provider = createFieldValueConduitProvider(field);
-
-        field.replaceAccess(provider);
-    }
-
-    private ComponentValueProvider<FieldValueConduit> createFieldValueConduitProvider(TransformField field)
-    {
-
-        final String fieldName = field.getName();
-
-        final String fieldTypeName = field.getType();
-
-        return new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(final ComponentResources resources)
-            {
-                final Class fieldType = cache.forName(fieldTypeName);
-
-                return new ReadOnlyFieldValueConduit(resources, fieldName)
-                {
-
-                    public Object get()
-                    {
-                        Component container = resources.getContainer();
-
-                        if (!fieldType.isInstance(container))
-                        {
-                            String message = String.format(
-                                    "Component %s is not assignable to field %s.%s (of type %s).", container
-                                            .getComponentResources().getCompleteId(), resources.getComponentModel()
-                                            .getComponentClassName(), fieldName, fieldTypeName);
-
-                            throw new RuntimeException(message);
-                        }
-
-                        return container;
-                    }
-                };
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
deleted file mode 100644
index 4d4716a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectPageWorker.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.PageLifecycleAdapter;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Peforms transformations that allow pages to be injected into components.
- * 
- * @see org.apache.tapestry5.annotations.InjectPage
- */
-public class InjectPageWorker implements ComponentClassTransformWorker
-{
-    private final class InjectedPageConduit extends ReadOnlyFieldValueConduit
-    {
-        private final String injectedPageName;
-
-        private Object page;
-
-        private InjectedPageConduit(ComponentResources resources, String fieldName,
-                String injectedPageName)
-        {
-            super(resources, fieldName);
-
-            this.injectedPageName = injectedPageName;
-
-            resources.addPageLifecycleListener(new PageLifecycleAdapter()
-            {
-                @Override
-                public void containingPageDidDetach()
-                {
-                    page = null;
-                }
-            });
-        }
-
-        public Object get()
-        {
-            if (page == null)
-                page = componentSource.getPage(injectedPageName);
-
-            return page;
-        }
-    }
-
-    private final ComponentSource componentSource;
-
-    private final ComponentClassResolver resolver;
-
-    public InjectPageWorker(ComponentSource componentSource, ComponentClassResolver resolver)
-    {
-        this.componentSource = componentSource;
-        this.resolver = resolver;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(InjectPage.class))
-        {
-            addInjectedPage(field);
-        }
-    }
-
-    private void addInjectedPage(TransformField field)
-    {
-        InjectPage annotation = field.getAnnotation(InjectPage.class);
-
-        field.claim(annotation);
-
-        String pageName = annotation.value();
-
-        final String fieldName = field.getName();
-
-        final String injectedPageName = InternalUtils.isBlank(pageName) ? resolver
-                .resolvePageClassNameToPageName(field.getType()) : pageName;
-
-        ComponentValueProvider<FieldValueConduit> provider = new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(ComponentResources resources)
-            {
-                return new InjectedPageConduit(resources, fieldName, injectedPageName);
-            }
-        };
-
-        field.replaceAccess(provider);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java
deleted file mode 100644
index 078aaf8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectServiceWorker.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Processes the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation.
- * 
- * @since 5.1.0.0
- */
-public class InjectServiceWorker implements ComponentClassTransformWorker
-{
-    private final ObjectLocator locator;
-
-    private final ComponentClassCache cache;
-
-    public InjectServiceWorker(ObjectLocator locator, ComponentClassCache cache)
-    {
-        this.locator = locator;
-        this.cache = cache;
-    }
-
-    @SuppressWarnings("unchecked")
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(InjectService.class))
-        {
-            InjectService annotation = field.getAnnotation(InjectService.class);
-
-            field.claim(annotation);
-
-            Class fieldType = cache.forName(field.getType());
-
-            Object service = locator.getService(annotation.value(), fieldType);
-
-            field.inject(service);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java
deleted file mode 100644
index 19ebff3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InjectWorker.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Performs injection triggered by any field annotated with the {@link org.apache.tapestry5.ioc.annotations.Inject}
- * annotation.
- * <p/>
- * The implementation of this worker mostly delegates to a chain of command of
- * {@link org.apache.tapestry5.services.InjectionProvider}s.
- */
-public class InjectWorker implements ComponentClassTransformWorker
-{
-    private final ObjectLocator locator;
-
-    // Really, a chain of command
-
-    private final InjectionProvider injectionProvider;
-
-    private final OperationTracker tracker;
-
-    public InjectWorker(ObjectLocator locator, InjectionProvider injectionProvider, OperationTracker tracker)
-    {
-        this.locator = locator;
-        this.injectionProvider = injectionProvider;
-        this.tracker = tracker;
-    }
-
-    public final void transform(final ClassTransformation transformation, final MutableComponentModel model)
-    {
-        for (final String fieldName : transformation.findFieldsWithAnnotation(Inject.class))
-        {
-            tracker.run("Injecting field " + fieldName, new Runnable()
-            {
-                public void run()
-                {
-
-                    Inject annotation = transformation.getFieldAnnotation(fieldName, Inject.class);
-
-                    try
-                    {
-                        String fieldType = transformation.getFieldType(fieldName);
-
-                        Class type = transformation.toClass(fieldType);
-
-                        boolean success = injectionProvider.provideInjection(fieldName, type, locator, transformation,
-                                model);
-
-                        if (success)
-                            transformation.claimField(fieldName, annotation);
-                    }
-                    catch (RuntimeException ex)
-                    {
-                        throw new RuntimeException(TransformMessages.fieldInjectionError(transformation.getClassName(),
-                                fieldName, ex), ex);
-                    }
-                }
-            });
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InvokePostRenderCleanupOnResourcesWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InvokePostRenderCleanupOnResourcesWorker.java
deleted file mode 100644
index 534c3ef..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/InvokePostRenderCleanupOnResourcesWorker.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.TransformConstants;
-import org.apache.tapestry5.services.TransformMethod;
-
-/**
- * Extends a <em>root</em> component class' postRenderCleanup() method to invoke
- * {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()}.
- */
-public class InvokePostRenderCleanupOnResourcesWorker implements ComponentClassTransformWorker
-{
-    private final ComponentMethodAdvice advice = new ComponentMethodAdvice()
-    {
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            invocation.proceed();
-
-            InternalComponentResources icr = (InternalComponentResources) invocation.getComponentResources();
-
-            icr.postRenderCleanup();
-        }
-    };
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        // Since the stuff to be cleaned up is inside the component resources, we don't need to
-        // do anything extra for a subclass; the root class will invoke the cleanup method.
-        
-        if (!transformation.isRootTransformation())
-            return;
-
-        TransformMethod method = transformation.getOrCreateMethod(TransformConstants.POST_RENDER_CLEANUP_SIGNATURE);
-
-        method.addAdvice(advice);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/LogWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/LogWorker.java
deleted file mode 100644
index 4481aa2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/LogWorker.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.Log;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.internal.services.LoggingAdvice;
-import org.apache.tapestry5.ioc.services.ExceptionTracker;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.*;
-
-import java.util.List;
-
-/**
- * Looks for the {@link org.apache.tapestry5.annotations.Log} marker annotation and adds method advice to perform the
- * logging. This is similar to what the {@link org.apache.tapestry5.ioc.services.LoggingDecorator} does for service
- * interface methods.
- */
-public class LogWorker implements ComponentClassTransformWorker
-{
-    private final ExceptionTracker exceptionTracker;
-
-    public LogWorker(ExceptionTracker exceptionTracker)
-    {
-        this.exceptionTracker = exceptionTracker;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        List<TransformMethodSignature> signatures = transformation.findMethodsWithAnnotation(Log.class);
-
-        if (signatures.isEmpty()) return;
-
-        // Re-use the logging advice from LoggingDecorator
-        final MethodAdvice loggingAdvice = new LoggingAdvice(model.getLogger(), exceptionTracker);
-
-        // ... but wrap it for use at the component level.
-        ComponentMethodAdvice advice = new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                loggingAdvice.advise(invocation);
-            }
-        };
-
-        for (TransformMethodSignature signature : signatures)
-            transformation.advise(signature, advice);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MethodResultCache.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MethodResultCache.java
deleted file mode 100644
index 760734d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MethodResultCache.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-/**
- * Manages a cache value as the result of invoking a no-arguments method.
- */
-public interface MethodResultCache
-{
-    /** Returns true if the cache contains a cached value. May also check to see if the cached value is valid. */
-    boolean isCached();
-
-    /** Stores a new cached value for later reference. */
-    void set(Object cachedValue);
-
-    /** Returns the previously cached value, if any. */
-    Object get();
-
-    /** Resets the cache, discarding the cached value. */
-    void reset();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MixinAfterWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MixinAfterWorker.java
deleted file mode 100644
index a206da0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MixinAfterWorker.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.MixinAfter;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-
-/**
- * Looks for the {@link org.apache.tapestry5.annotations.MixinAfter} annotation and sets the {@link
- * org.apache.tapestry5.model.ComponentModel#isMixinAfter() mixinAfter flag} if present.
- */
-public class MixinAfterWorker implements ComponentClassTransformWorker
-{
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        if (transformation.getAnnotation(MixinAfter.class) != null)
-            model.setMixinAfter(true);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MixinWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MixinWorker.java
deleted file mode 100644
index bfa814d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/MixinWorker.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Supports the {@link org.apache.tapestry5.annotations.Mixin} annotation, which allows a mixin to
- * be part of the
- * implementation of a component. The annotation is applied to a field, which will become read-only,
- * and contain a
- * reference to the mixin instance.
- */
-public class MixinWorker implements ComponentClassTransformWorker
-{
-    private final ComponentClassResolver resolver;
-
-    public MixinWorker(final ComponentClassResolver resolver)
-    {
-        this.resolver = resolver;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(Mixin.class))
-        {
-            replaceFieldWithMixin(model, field);
-        }
-    }
-
-    private void replaceFieldWithMixin(MutableComponentModel model, TransformField field)
-    {
-        Mixin annotation = field.getAnnotation(Mixin.class);
-
-        field.claim(annotation);
-
-        String mixinType = annotation.value();
-
-        String[] order = annotation.order();
-
-        String fieldType = field.getType();
-
-        String mixinClassName = InternalUtils.isBlank(mixinType) ? fieldType : resolver
-                .resolveMixinTypeToClassName(mixinType);
-
-        model.addMixinClassName(mixinClassName, order);
-
-        replaceFieldAccessWithMixin(field, mixinClassName);
-    }
-
-    private void replaceFieldAccessWithMixin(TransformField field, String mixinClassName)
-    {
-        ComponentValueProvider<FieldValueConduit> provider = createMixinFieldProvider(field.getName(), mixinClassName);
-
-        field.replaceAccess(provider);
-    }
-
-    private ComponentValueProvider<FieldValueConduit> createMixinFieldProvider(final String fieldName,
-            final String mixinClassName)
-    {
-        return new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(ComponentResources resources)
-            {
-                final InternalComponentResources icr = (InternalComponentResources) resources;
-
-                return new ReadOnlyFieldValueConduit(resources, fieldName)
-                {
-                    public Object get()
-                    {
-                        return icr.getMixinByClassName(mixinClassName);
-                    }
-                };
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
deleted file mode 100644
index d994b92..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/OnEventWorker.java
+++ /dev/null
@@ -1,386 +0,0 @@
-//
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.TransformConstants;
-import org.apache.tapestry5.services.TransformMethod;
-import org.apache.tapestry5.services.TransformMethodSignature;
-import org.apache.tapestry5.services.ValueEncoderSource;
-
-/**
- * Provides implementations of the
- * {@link org.apache.tapestry5.runtime.Component#dispatchComponentEvent(org.apache.tapestry5.runtime.ComponentEvent)}
- * method, based on {@link org.apache.tapestry5.annotations.OnEvent} annotations.
- */
-public class OnEventWorker implements ComponentClassTransformWorker
-{
-
-    private final Request request;
-
-    private final ValueEncoderSource valueEncoderSource;
-
-    private final ComponentClassCache classCache;
-
-    /**
-     * Stores a couple of special parameter type mappings that are used when matching the entire event context
-     * (either as Object[] or EventContext).
-     */
-    private final Map<String, EventHandlerMethodParameterSource> parameterTypeToSource = CollectionFactory.newMap();
-
-    {
-        // Object[] and List are out-dated and may be deprecated some day
-
-        parameterTypeToSource.put("java.lang.Object[]", new EventHandlerMethodParameterSource()
-        {
-
-            public Object valueForEventHandlerMethodParameter(ComponentEvent event)
-            {
-                return event.getContext();
-            }
-        });
-
-        parameterTypeToSource.put(List.class.getName(), new EventHandlerMethodParameterSource()
-        {
-
-            public Object valueForEventHandlerMethodParameter(ComponentEvent event)
-            {
-                return Arrays.asList(event.getContext());
-            }
-        });
-
-        // This is better, as the EventContext maintains the original objects (or strings)
-        // and gives the event handler method access with coercion
-        parameterTypeToSource.put(EventContext.class.getName(), new EventHandlerMethodParameterSource()
-        {
-
-            public Object valueForEventHandlerMethodParameter(ComponentEvent event)
-            {
-                return event.getEventContext();
-            }
-        });
-    }
-
-    public OnEventWorker(Request request, ValueEncoderSource valueEncoderSource, ComponentClassCache classCache)
-    {
-        this.request = request;
-        this.valueEncoderSource = valueEncoderSource;
-        this.classCache = classCache;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        List<TransformMethod> methods = matchEventHandlerMethods(transformation);
-
-        if (methods.isEmpty())
-            return;
-
-        List<EventHandlerMethodInvoker> invokers = toInvokers(transformation.getClassName(), methods);
-
-        updateModelWithHandledEvents(model, invokers);
-
-        adviseDispatchComponentEventMethod(transformation, invokers);
-    }
-
-    private void adviseDispatchComponentEventMethod(ClassTransformation transformation,
-            List<EventHandlerMethodInvoker> invokers)
-    {
-        ComponentMethodAdvice advice = createDispatchComponentEventAdvice(invokers);
-
-        transformation.getOrCreateMethod(TransformConstants.DISPATCH_COMPONENT_EVENT).addAdvice(advice);
-    }
-
-    private ComponentMethodAdvice createDispatchComponentEventAdvice(final List<EventHandlerMethodInvoker> invokers)
-    {
-        return new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                // Invoke the super-class implementation first. If no super-class,
-                // this will do nothing and return false.
-
-                invocation.proceed();
-
-                ComponentEvent event = (ComponentEvent) invocation.getParameter(0);
-
-                if (invokeEventHandlers(event, invocation.getInstance()))
-                    invocation.overrideResult(true);
-            }
-
-            private boolean invokeEventHandlers(ComponentEvent event, Object instance)
-            {
-                // If the super-class aborted the event (some super-class method return non-null),
-                // then it's all over, don't even check for handlers in this class.
-
-                if (event.isAborted())
-                    return false;
-
-                boolean didInvokeSomeHandler = false;
-
-                for (EventHandlerMethodInvoker invoker : invokers)
-                {
-                    if (event.matches(invoker.getEventType(), invoker.getComponentId(),
-                            invoker.getMinContextValueCount()))
-                    {
-                        didInvokeSomeHandler = true;
-
-                        invoker.invokeEventHandlerMethod(event, instance);
-
-                        if (event.isAborted())
-                            break;
-                    }
-                }
-
-                return didInvokeSomeHandler;
-            }
-        };
-    }
-
-    private void updateModelWithHandledEvents(MutableComponentModel model,
-            final List<EventHandlerMethodInvoker> invokers)
-    {
-        for (EventHandlerMethodInvoker invoker : invokers)
-        {
-            model.addEventHandler(invoker.getEventType());
-        }
-    }
-
-    private List<TransformMethod> matchEventHandlerMethods(ClassTransformation transformation)
-    {
-        return transformation.matchMethods(new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod method)
-            {
-                return (hasCorrectPrefix(method) || hasAnnotation(method)) && !method.isOverride();
-            }
-
-            private boolean hasCorrectPrefix(TransformMethod method)
-            {
-                return method.getName().startsWith("on");
-            }
-
-            private boolean hasAnnotation(TransformMethod method)
-            {
-                return method.getAnnotation(OnEvent.class) != null;
-            }
-        });
-    }
-
-    private List<EventHandlerMethodInvoker> toInvokers(String componentClassName, List<TransformMethod> methods)
-    {
-        List<EventHandlerMethodInvoker> result = CollectionFactory.newList();
-
-        for (TransformMethod method : methods)
-        {
-            result.add(toInvoker(componentClassName, method));
-        }
-
-        return result;
-    }
-
-    private EventHandlerMethodInvoker toInvoker(final String componentClassName, TransformMethod method)
-    {
-        OnEvent annotation = method.getAnnotation(OnEvent.class);
-
-        String methodName = method.getName();
-
-        String eventType = extractEventType(methodName, annotation);
-        String componentId = extractComponentId(methodName, annotation);
-
-        final TransformMethodSignature signature = method.getSignature();
-
-        String[] parameterTypes = signature.getParameterTypes();
-
-        if (parameterTypes.length == 0)
-            return new BaseEventHandlerMethodInvoker(method, eventType, componentId);
-
-        final List<EventHandlerMethodParameterSource> sources = CollectionFactory.newList();
-
-        // I'd refactor a bit more of this if Java had covariant return types.
-
-        int contextIndex = 0;
-
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            String type = parameterTypes[i];
-
-            EventHandlerMethodParameterSource source = parameterTypeToSource.get(type);
-
-            if (source != null)
-            {
-                sources.add(source);
-                continue;
-            }
-
-            RequestParameter parameterAnnotation = method.getParameterAnnotation(i, RequestParameter.class);
-
-            if (parameterAnnotation != null)
-            {
-                String parameterName = parameterAnnotation.value();
-
-                sources.add(createQueryParameterSource(componentClassName, signature, i, parameterName, type,
-                        parameterAnnotation.allowBlank()));
-                continue;
-            }
-
-            // Note: probably safe to do the conversion to Class early (class load time)
-            // as parameters are rarely (if ever) component classes.
-
-            final int parameterIndex = contextIndex++;
-
-            sources.add(createEventContextSource(type, parameterIndex));
-        }
-
-        return createInvoker(method, eventType, componentId, contextIndex, sources);
-    }
-
-    private EventHandlerMethodParameterSource createQueryParameterSource(final String componentClassName,
-            final TransformMethodSignature signature, final int parameterIndex, final String parameterName,
-            final String parameterTypeName, final boolean allowBlank)
-    {
-        return new EventHandlerMethodParameterSource()
-        {
-            @SuppressWarnings("unchecked")
-            public Object valueForEventHandlerMethodParameter(ComponentEvent event)
-            {
-                try
-                {
-                    String parameterValue = request.getParameter(parameterName);
-
-                    if (!allowBlank && InternalUtils.isBlank(parameterValue))
-                        throw new RuntimeException(String.format(
-                                "The value for query parameter '%s' was blank, but a non-blank value is needed.",
-                                parameterName));
-
-                    Class parameterType = classCache.forName(parameterTypeName);
-
-                    ValueEncoder valueEncoder = valueEncoderSource.getValueEncoder(parameterType);
-
-                    Object value = valueEncoder.toValue(parameterValue);
-
-                    if (parameterType.isPrimitive() && value == null)
-                        throw new RuntimeException(
-                                String.format(
-                                        "Query parameter '%s' evaluates to null, but the event method parameter is type %s, a primitive.",
-                                        parameterName, parameterType.getName()));
-
-                    return value;
-                }
-                catch (Exception ex)
-                {
-                    throw new RuntimeException(
-                            String.format(
-                                    "Unable process query parameter '%s' as parameter #%d of event handler method %s (in class %s): %s",
-                                    parameterName, parameterIndex + 1, signature, componentClassName,
-                                    InternalUtils.toMessage(ex)), ex);
-                }
-            }
-        };
-    }
-
-    private EventHandlerMethodInvoker createInvoker(TransformMethod method, String eventType, String componentId,
-            final int minContextCount, final List<EventHandlerMethodParameterSource> sources)
-    {
-        return new BaseEventHandlerMethodInvoker(method, eventType, componentId)
-        {
-            final int count = sources.size();
-
-            @Override
-            public int getMinContextValueCount()
-            {
-                return minContextCount;
-            }
-
-            @Override
-            protected Object[] constructParameters(ComponentEvent event)
-            {
-                Object[] parameters = new Object[count];
-
-                for (int i = 0; i < count; i++)
-                {
-                    parameters[i] = sources.get(i).valueForEventHandlerMethodParameter(event);
-                }
-
-                return parameters;
-            }
-        };
-    }
-
-    private EventHandlerMethodParameterSource createEventContextSource(final String type, final int parameterIndex)
-    {
-        return new EventHandlerMethodParameterSource()
-        {
-            public Object valueForEventHandlerMethodParameter(ComponentEvent event)
-            {
-                return event.coerceContext(parameterIndex, type);
-            }
-        };
-    }
-
-    /**
-     * Returns the component id to match against, or the empty
-     * string if the component id is not specified. The component id
-     * is provided by the OnEvent annotation or (if that is not present)
-     * by the part of the method name following "From" ("onActionFromFoo").
-     */
-    private String extractComponentId(String methodName, OnEvent annotation)
-    {
-        if (annotation != null)
-            return annotation.component();
-
-        // Method name started with "on". Extract the component id, if present.
-
-        int fromx = methodName.indexOf("From");
-
-        if (fromx < 0)
-            return "";
-
-        return methodName.substring(fromx + 4);
-    }
-
-    /**
-     * Returns the event name to match against, as specified in the annotation
-     * or (if the annotation is not present) extracted from the name of the method.
-     * "onActionFromFoo" or just "onAction".
-     */
-    private String extractEventType(String methodName, OnEvent annotation)
-    {
-        if (annotation != null)
-            return annotation.value();
-
-        int fromx = methodName.indexOf("From");
-
-        // The first two characters are always "on" as in "onActionFromFoo".
-        return fromx == -1 ? methodName.substring(2) : methodName.substring(2, fromx);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
deleted file mode 100644
index 29f2e25..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageActivationContextWorker.java
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.annotations.PageActivationContext;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentEventHandler;
-import org.apache.tapestry5.services.FieldAccess;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Provides the page activation context handlers. This worker must be scheduled before
- * {@link org.apache.tapestry5.internal.transform.OnEventWorker} in order for the added event handler methods to be
- * properly picked up and processed.
- * 
- * @see org.apache.tapestry5.annotations.PageActivationContext
- */
-public class PageActivationContextWorker implements ComponentClassTransformWorker
-{
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        List<TransformField> fields = transformation.matchFieldsWithAnnotation(PageActivationContext.class);
-
-        // In the future we may add rules for ordering the fields (new attribute on annotation?)
-
-        if (fields.size() > 1)
-            throw new RuntimeException(TransformMessages.illegalNumberOfPageActivationContextHandlers(fields));
-
-        // So there's 0 or 1 of these
-
-        for (TransformField field : fields)
-        {
-            transformField(transformation, model, field);
-        }
-    }
-
-    private void transformField(ClassTransformation transformation, MutableComponentModel model, TransformField field)
-    {
-        PageActivationContext annotation = field.getAnnotation(PageActivationContext.class);
-
-        FieldAccess access = field.getAccess();
-
-        if (annotation.activate())
-        {
-            transformation.addComponentEventHandler(EventConstants.ACTIVATE, 1,
-                    "PageActivationContextWorker activate event handler",
-                    createActivationHandler(field.getType(), access));
-        }
-
-        if (annotation.passivate())
-        {
-            transformation.addComponentEventHandler(EventConstants.PASSIVATE, 0,
-                    "PageActivationContextWorker passivate event handler", createPassivateHandler(access));
-        }
-
-        // We don't claim the field, and other workers may even replace it with a FieldValueConduit.
-    }
-
-    private static ComponentEventHandler createActivationHandler(final String fieldType, final FieldAccess access)
-    {
-        return new ComponentEventHandler()
-        {
-            public void handleEvent(Component instance, ComponentEvent event)
-            {
-                Object value = event.coerceContext(0, fieldType);
-
-                access.write(instance, value);
-            }
-        };
-    }
-
-    private static ComponentEventHandler createPassivateHandler(final FieldAccess access)
-    {
-        return new ComponentEventHandler()
-        {
-            public void handleEvent(Component instance, ComponentEvent event)
-            {
-                Object value = access.read(instance);
-
-                event.storeResult(value);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java
deleted file mode 100644
index 274bff6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageLifecycleAnnotationWorker.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.MethodAccess;
-import org.apache.tapestry5.services.MethodInvocationResult;
-import org.apache.tapestry5.services.TransformMethod;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-/**
- * Similar to {@link org.apache.tapestry5.internal.transform.RenderPhaseMethodWorker} but applies to annotations/methods
- * related to the overall page lifecycle. Page lifecycle methods are always void and take no parameters.
- */
-public class PageLifecycleAnnotationWorker implements ComponentClassTransformWorker
-{
-    private final Class<? extends Annotation> methodAnnotationClass;
-
-    private final TransformMethodSignature lifecycleMethodSignature;
-
-    private final String methodAlias;
-
-    public PageLifecycleAnnotationWorker(Class<? extends Annotation> methodAnnotationClass,
-            TransformMethodSignature lifecycleMethodSignature, String methodAlias)
-    {
-        this.methodAnnotationClass = methodAnnotationClass;
-        this.lifecycleMethodSignature = lifecycleMethodSignature;
-        this.methodAlias = methodAlias;
-    }
-
-    public void transform(final ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformMethod method : matchLifecycleMethods(transformation))
-        {
-            invokeMethodWithinLifecycle(transformation, method);
-        }
-    }
-
-    private void invokeMethodWithinLifecycle(final ClassTransformation transformation, TransformMethod method)
-    {
-        validateMethodSignature(method);
-
-        final MethodAccess access = method.getAccess();
-
-        ComponentMethodAdvice advice = createAdviceToInvokeMethod(access);
-
-        transformation.getOrCreateMethod(lifecycleMethodSignature).addAdvice(advice);
-    }
-
-    private ComponentMethodAdvice createAdviceToInvokeMethod(final MethodAccess access)
-    {
-        return new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                invocation.proceed();
-
-                MethodInvocationResult result = access.invoke(invocation.getInstance());
-
-                result.rethrow();
-            }
-        };
-    }
-
-    private void validateMethodSignature(TransformMethod method)
-    {
-        TransformMethodSignature signature = method.getSignature();
-
-        if (!signature.getReturnType().equals("void"))
-            throw new RuntimeException(String.format("Method %s is a lifecycle method and should return void.", method
-                    .getMethodIdentifier()));
-
-        if (signature.getParameterTypes().length > 0)
-            throw new RuntimeException(String.format("Method %s is a lifecycle method and should take no parameters.",
-                    method.getMethodIdentifier()));
-    }
-
-    private List<TransformMethod> matchLifecycleMethods(final ClassTransformation transformation)
-    {
-        return transformation.matchMethods(new Predicate<TransformMethod>()
-        {
-
-            public boolean accept(TransformMethod method)
-            {
-                return method.getName().equalsIgnoreCase(methodAlias)
-                        || method.getAnnotation(methodAnnotationClass) != null;
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java
deleted file mode 100644
index d38571a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PageResetAnnotationWorker.java
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.annotations.PageReset;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.structure.PageResetListener;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
-
-/**
- * Implementation of the {@link PageReset} annotation. Makes the component implement {@link PageResetListener}.
- * 
- * @since 5.2.0
- */
-public class PageResetAnnotationWorker implements ComponentClassTransformWorker
-{
-    private static final String META_KEY = "tapestry.page-reset-listener";
-
-    private static final TransformMethodSignature CONTAINING_PAGE_DID_RESET = new TransformMethodSignature(
-            "containingPageDidReset");
-
-    private final ComponentMethodAdvice registerAsListenerAdvice = new ComponentMethodAdvice()
-    {
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            invocation.proceed();
-
-            InternalComponentResources icr = (InternalComponentResources) invocation.getComponentResources();
-
-            icr.addPageResetListener((PageResetListener) invocation.getInstance());
-        }
-    };
-
-    public void transform(final ClassTransformation transformation, MutableComponentModel model)
-    {
-        List<TransformMethod> methods = matchPageResetMethods(transformation);
-
-        if (methods.isEmpty())
-            return;
-
-        makeComponentRegisterAsPageResetListenerAtPageLoad(transformation, model);
-
-        adviseContainingPageDidResetMethod(transformation, methods);
-    }
-
-    private void adviseContainingPageDidResetMethod(ClassTransformation transformation, List<TransformMethod> methods)
-    {
-        List<MethodAccess> methodAccess = convertToMethodAccess(methods);
-
-        ComponentInstanceOperation advice = createMethodAccessAdvice(methodAccess);
-
-        transformation.getOrCreateMethod(CONTAINING_PAGE_DID_RESET).addOperationAfter(advice);
-    }
-
-    private ComponentInstanceOperation createMethodAccessAdvice(final List<MethodAccess> methodAccess)
-    {
-        return new ComponentInstanceOperation()
-        {
-
-            public void invoke(Component instance)
-            {
-                for (MethodAccess access : methodAccess)
-                {
-                    MethodInvocationResult result = access.invoke(instance);
-
-                    result.rethrow();
-                }
-            }
-        };
-    }
-
-    private List<MethodAccess> convertToMethodAccess(List<TransformMethod> methods)
-    {
-        List<MethodAccess> result = CollectionFactory.newList();
-
-        for (TransformMethod method : methods)
-        {
-            result.add(toMethodAccess(method));
-        }
-
-        return result;
-    }
-
-    private void makeComponentRegisterAsPageResetListenerAtPageLoad(final ClassTransformation transformation,
-            MutableComponentModel model)
-    {
-        // The meta key tracks whether this has already occurred; it is only necessary for a base class
-        // (subclasses, even if they include pageReset methods, do not need to re-register if the base class
-        // already has).
-
-        if (model.getMeta(META_KEY) != null)
-            return;
-
-        transformation.addImplementedInterface(PageResetListener.class);
-
-        transformation.getOrCreateMethod(TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE).addAdvice(
-                registerAsListenerAdvice);
-
-        model.setMeta(META_KEY, "true");
-    }
-
-    private List<TransformMethod> matchPageResetMethods(final ClassTransformation transformation)
-    {
-        return transformation.matchMethods(new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod method)
-            {
-                return method.getName().equalsIgnoreCase("pageReset") || method.getAnnotation(PageReset.class) != null;
-            }
-        });
-    }
-
-    private MethodAccess toMethodAccess(TransformMethod method)
-    {
-        TransformMethodSignature sig = method.getSignature();
-
-        boolean valid = sig.getParameterTypes().length == 0 && sig.getReturnType().equals("void");
-
-        if (!valid)
-            throw new RuntimeException(
-                    String
-                            .format(
-                                    "Method %s is invalid: methods with the @PageReset annotation must return void, and have no parameters.",
-                                    method.getMethodIdentifier()));
-
-        return method.getAccess();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java
deleted file mode 100644
index ad20d81..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterConduit.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.bindings.LiteralBinding;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.Component;
-
-/**
- * A facade around {@link Binding} and {@link InternalComponentResources} that is used to instrument
- * fields with the {@link Parameter} annotation. Extends {@link FieldValueConduit} so that
- * the get() method implicitly coerces the value to the field's type.
- * <p>
- * {@link #get()} will read from the underlying {@link Binding} and used the {@link TypeCoercer} coerce the value to the
- * parameter field's type. get() also includes a null value check (as per {@link Parameter#allowNull()}.
- * <p>
- * {@link #set(Object)} pushes the value into the binding.
- * 
- * @since 5.2.0
- */
-public interface ParameterConduit extends FieldValueConduit
-{
-    /**
-     * Sets the default value for the parameter based on either the current value of the field,
-     * or on result from a default method. This is only used if the parameter is not otherwise
-     * bound.
-     * 
-     * @param defaultValue
-     *            an object (which will be wrapped as a {@link LiteralBinding}, or
-     *            a {@link Binding} instance
-     */
-    void setDefault(Object defaultValue);
-
-    /**
-     * Determines if the parameter is actually bound.
-     * 
-     * @return
-     */
-    boolean isBound();
-
-    /**
-     * Resets the conduit, clearing any <em>temporarily</em> cached data (from a non-invariant {@link Binding}).
-     */
-    void reset();
-
-    /**
-     * Invoked from the component's {@link Component#containingPageDidLoad()} lifecycle method, to
-     * finishing initializing
-     * the conduit prior to real use.
-     */
-    void load();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
deleted file mode 100644
index 28ea9df..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ParameterWorker.java
+++ /dev/null
@@ -1,518 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.bindings.LiteralBinding;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.*;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Responsible for identifying parameters via the {@link org.apache.tapestry5.annotations.Parameter} annotation on
- * component fields. This is one of the most complex of the transformations.
- */
-public class ParameterWorker implements ComponentClassTransformWorker
-{
-    private final Logger logger = LoggerFactory.getLogger(ParameterWorker.class);
-
-    private final class InvokeResetOnParameterConduit implements ComponentMethodAdvice
-    {
-        private final FieldAccess conduitAccess;
-
-        private InvokeResetOnParameterConduit(FieldAccess conduitAccess)
-        {
-            this.conduitAccess = conduitAccess;
-        }
-
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            getConduit(invocation, conduitAccess).reset();
-
-            invocation.proceed();
-        }
-    }
-
-    /**
-     * Contains the per-thread state about a parameter, as stored (using
-     * a unique key) in the {@link PerthreadManager}. Externalizing such state
-     * is part of Tapestry 5.2's pool-less pages.
-     */
-    private final class ParameterState
-    {
-        boolean cached;
-
-        Object value;
-
-        void reset(Object defaultValue)
-        {
-            cached = false;
-            value = defaultValue;
-        }
-    }
-
-    private final class InvokeParameterDefaultMethod implements ComponentMethodAdvice
-    {
-        private final FieldAccess conduitAccess;
-
-        private final MethodAccess defaultMethodAccess;
-
-        private InvokeParameterDefaultMethod(FieldAccess conduitAccess, MethodAccess defaultMethodAccess)
-        {
-            this.conduitAccess = conduitAccess;
-            this.defaultMethodAccess = defaultMethodAccess;
-        }
-
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            logger.debug(String.format("%s invoking default method %s", invocation.getComponentResources()
-                    .getCompleteId(), defaultMethodAccess));
-
-            MethodInvocationResult result = defaultMethodAccess.invoke(invocation.getInstance());
-
-            result.rethrow();
-
-            getConduit(invocation, conduitAccess).setDefault(result.getReturnValue());
-
-            invocation.proceed();
-        }
-    }
-
-    private final class InvokeLoadOnParmeterConduit implements ComponentMethodAdvice
-    {
-        private final FieldAccess conduitAccess;
-
-        private InvokeLoadOnParmeterConduit(FieldAccess conduitAccess)
-        {
-            this.conduitAccess = conduitAccess;
-        }
-
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            getConduit(invocation, conduitAccess).load();
-
-            invocation.proceed();
-        }
-    }
-
-    private final ComponentClassCache classCache;
-
-    private final BindingSource bindingSource;
-
-    private final ComponentDefaultProvider defaultProvider;
-
-    private final TypeCoercer typeCoercer;
-
-    private final PerthreadManager perThreadManager;
-
-    public ParameterWorker(ComponentClassCache classCache, BindingSource bindingSource,
-            ComponentDefaultProvider defaultProvider, TypeCoercer typeCoercer, PerthreadManager perThreadManager)
-    {
-        this.classCache = classCache;
-        this.bindingSource = bindingSource;
-        this.defaultProvider = defaultProvider;
-        this.typeCoercer = typeCoercer;
-        this.perThreadManager = perThreadManager;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        transformFields(transformation, model, true);
-        transformFields(transformation, model, false);
-    }
-
-    private void transformFields(ClassTransformation transformation, MutableComponentModel model, boolean principal)
-    {
-        for (TransformField field : matchParameterFields(transformation, principal))
-        {
-            convertFieldIntoParameter(transformation, model, field);
-        }
-    }
-
-    private List<TransformField> matchParameterFields(ClassTransformation transformation, final boolean principal)
-    {
-        Predicate<TransformField> predicate = new Predicate<TransformField>()
-        {
-            public boolean accept(TransformField field)
-            {
-                Parameter annotation = field.getAnnotation(Parameter.class);
-
-                return annotation != null && annotation.principal() == principal;
-            }
-        };
-
-        return transformation.matchFields(predicate);
-    }
-
-    private void convertFieldIntoParameter(ClassTransformation transformation, MutableComponentModel model,
-            TransformField field)
-    {
-        Parameter annotation = field.getAnnotation(Parameter.class);
-
-        String fieldType = field.getType();
-
-        String parameterName = getParameterName(field.getName(), annotation.name());
-
-        field.claim(annotation);
-
-        model.addParameter(parameterName, annotation.required(), annotation.allowNull(), annotation.defaultPrefix(),
-                annotation.cache());
-
-        ComponentValueProvider<ParameterConduit> provider = createParameterConduitProvider(parameterName, fieldType,
-                annotation);
-
-        TransformField conduitField = transformation.addIndirectInjectedField(ParameterConduit.class, parameterName
-                + "$conduit", provider);
-
-        FieldAccess conduitAccess = conduitField.getAccess();
-
-        addCodeForParameterDefaultMethod(transformation, parameterName, conduitAccess);
-
-        field.replaceAccess(conduitField);
-
-        invokeLoadOnParameterConduitAtPageLoad(transformation, conduitAccess);
-
-        invokeResetOnParameterConduitAtPostRenderCleanup(transformation, conduitAccess);
-    }
-
-    private void invokeResetOnParameterConduitAtPostRenderCleanup(ClassTransformation transformation,
-            final FieldAccess conduitAccess)
-    {
-        ComponentMethodAdvice advice = new InvokeResetOnParameterConduit(conduitAccess);
-
-        addMethodAdvice(transformation, TransformConstants.POST_RENDER_CLEANUP_SIGNATURE, advice);
-    }
-
-    private void addMethodAdvice(ClassTransformation transformation, TransformMethodSignature methodSignature,
-            ComponentMethodAdvice advice)
-    {
-        transformation.getOrCreateMethod(methodSignature).addAdvice(advice);
-    }
-
-    private void invokeLoadOnParameterConduitAtPageLoad(ClassTransformation transformation, FieldAccess conduitAccess)
-    {
-        ComponentMethodAdvice pageLoadAdvice = new InvokeLoadOnParmeterConduit(conduitAccess);
-
-        addPageLoadAdvice(transformation, pageLoadAdvice);
-    }
-
-    @SuppressWarnings("all")
-    private ComponentValueProvider<ParameterConduit> createParameterConduitProvider(final String parameterName,
-            final String fieldTypeName, final Parameter annotation)
-    {
-        return new ComponentValueProvider<ParameterConduit>()
-        {
-            public ParameterConduit get(ComponentResources resources)
-            {
-                final InternalComponentResources icr = (InternalComponentResources) resources;
-
-                final String key = String.format("ParameterWorker:%s/%s", resources.getCompleteId(), parameterName);
-
-                final Class fieldType = classCache.forName(fieldTypeName);
-
-                // Rely on some code generation in the component to set the default binding from
-                // the field, or from a default method.
-
-                return new ParameterConduit()
-                {
-                    // Default value for parameter, computed *once* at
-                    // page load time.
-
-                    private Object defaultValue = classCache.defaultValueForType(fieldTypeName);
-
-                    private Binding parameterBinding;
-
-                    boolean loaded = false;
-
-                    private boolean invariant = false;
-
-                    {
-                        // Inform the ComponentResources about the parameter conduit, so it can be
-                        // shared with mixins.
-
-                        icr.setParameterConduit(parameterName, this);
-                    }
-
-                    private ParameterState getState()
-                    {
-                        ParameterState state = (ParameterState) perThreadManager.get(key);
-
-                        if (state == null)
-                        {
-                            state = new ParameterState();
-                            state.value = defaultValue;
-                            perThreadManager.put(key, state);
-                        }
-
-                        return state;
-                    }
-
-                    private boolean isLoaded()
-                    {
-                        return loaded;
-                    }
-
-                    public void set(Object newValue)
-                    {
-                        ParameterState state = getState();
-
-                        // Assignments before the page is loaded ultimately exist to set the
-                        // default value for the field. Often this is from the (original)
-                        // constructor method, which is converted to a real method as part of the transformation.
-
-                        if (!loaded)
-                        {
-                            state.value = newValue;
-                            defaultValue = newValue;
-                            return;
-                        }
-
-                        // This will catch read-only or unbound parameters.
-
-                        writeToBinding(newValue);
-
-                        state.value = newValue;
-
-                        // If caching is enabled for the parameter (the typical case) and the
-                        // component is currently rendering, then the result
-                        // can be cached in this ParameterConduit (until the component finishes
-                        // rendering).
-
-                        state.cached = annotation.cache() && icr.isRendering();
-                    }
-
-                    private Object readFromBinding()
-                    {
-                        Object result = null;
-
-                        try
-                        {
-                            Object boundValue = parameterBinding.get();
-
-                            result = typeCoercer.coerce(boundValue, fieldType);
-                        }
-                        catch (RuntimeException ex)
-                        {
-                            throw new TapestryException(String.format(
-                                    "Failure reading parameter '%s' of component %s: %s", parameterName,
-                                    icr.getCompleteId(), InternalUtils.toMessage(ex)), parameterBinding, ex);
-                        }
-
-                        if (result != null || annotation.allowNull())
-                            return result;
-
-                        throw new TapestryException(
-                                String.format(
-                                        "Parameter '%s' of component %s is bound to null. This parameter is not allowed to be null.",
-                                        parameterName, icr.getCompleteId()), parameterBinding, null);
-                    }
-
-                    private void writeToBinding(Object newValue)
-                    {
-                        // An unbound parameter acts like a simple field
-                        // with no side effects.
-
-                        if (parameterBinding == null)
-                            return;
-
-                        try
-                        {
-                            Object coerced = typeCoercer.coerce(newValue, parameterBinding.getBindingType());
-
-                            parameterBinding.set(coerced);
-                        }
-                        catch (RuntimeException ex)
-                        {
-                            throw new TapestryException(String.format(
-                                    "Failure writing parameter '%s' of component %s: %s", parameterName,
-                                    icr.getCompleteId(), InternalUtils.toMessage(ex)), icr, ex);
-                        }
-                    }
-
-                    public void reset()
-                    {
-                        if (!invariant)
-                        {
-                            getState().reset(defaultValue);
-                        }
-                    }
-
-                    public void load()
-                    {
-                        logger.debug(String.format("%s loading parameter %s", icr.getCompleteId(), parameterName));
-
-                        // If it's bound at this point, that's because of an explicit binding
-                        // in the template or @Component annotation.
-
-                        if (!icr.isBound(parameterName))
-                        {
-                            logger.debug(String.format("%s parameter %s not yet bound", icr.getCompleteId(),
-                                    parameterName));
-
-                            // Otherwise, construct a default binding, or use one provided from
-                            // the component.
-
-                            Binding binding = getDefaultBindingForParameter();
-
-                            logger.debug(String.format("%s parameter %s bound to default %s", icr.getCompleteId(),
-                                    parameterName, binding));
-
-                            if (binding != null)
-                                icr.bindParameter(parameterName, binding);
-                        }
-
-                        parameterBinding = icr.getBinding(parameterName);
-
-                        loaded = true;
-
-                        invariant = parameterBinding != null && parameterBinding.isInvariant();
-
-                        getState().value = defaultValue;
-                    }
-
-                    public boolean isBound()
-                    {
-                        return parameterBinding != null;
-                    }
-
-                    public Object get()
-                    {
-                        if (!isLoaded()) { return defaultValue; }
-
-                        ParameterState state = getState();
-
-                        if (state.cached || !isBound()) { return state.value; }
-
-                        // Read the parameter's binding and cast it to the
-                        // field's type.
-
-                        Object result = readFromBinding();
-
-                        // If the value is invariant, we can cache it until at least the end of the request (before
-                        // 5.2, it would be cached forever in the pooled instance).
-                        // Otherwise, we
-                        // we may want to cache it for the remainder of the component render (if the
-                        // component is currently rendering).
-
-                        if (invariant || (annotation.cache() && icr.isRendering()))
-                        {
-                            state.value = result;
-                            state.cached = true;
-                        }
-
-                        return result;
-                    }
-
-                    private Binding getDefaultBindingForParameter()
-                    {
-                        if (InternalUtils.isNonBlank(annotation.value()))
-                            return bindingSource.newBinding("default " + parameterName, icr,
-                                    annotation.defaultPrefix(), annotation.value());
-
-                        if (annotation.autoconnect())
-                            return defaultProvider.defaultBinding(parameterName, icr);
-
-                        // Return (if not null) the binding from the setDefault() method which is
-                        // set via a default method on the component, or from the field's initial
-                        // value.
-
-                        return parameterBinding;
-                    }
-
-                    public void setDefault(Object value)
-                    {
-                        if (value == null)
-                            return;
-
-                        if (value instanceof Binding)
-                        {
-                            parameterBinding = (Binding) value;
-                            return;
-                        }
-
-                        parameterBinding = new LiteralBinding(null, "default " + parameterName, value);
-                    }
-                };
-            }
-        };
-    }
-
-    private ParameterConduit getConduit(ComponentMethodInvocation invocation, FieldAccess access)
-    {
-        return (ParameterConduit) access.read(invocation.getInstance());
-    }
-
-    private void addCodeForParameterDefaultMethod(ClassTransformation transformation, final String parameterName,
-            final FieldAccess conduitAccess)
-    {
-        final String methodName = "default" + parameterName;
-
-        Predicate<TransformMethod> predicate = new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod method)
-            {
-                return method.getSignature().getParameterTypes().length == 0
-                        && method.getName().equalsIgnoreCase(methodName);
-            }
-        };
-
-        List<TransformMethod> matches = transformation.matchMethods(predicate);
-
-        // This will match exactly 0 or 1 (unless the user does something really silly)
-        // methods, and if it matches, we know the name of the method.
-
-        if (matches.isEmpty())
-            return;
-
-        TransformMethod defaultMethod = matches.get(0);
-
-        captureDefaultValueFromDefaultMethod(transformation, defaultMethod, conduitAccess);
-    }
-
-    private void captureDefaultValueFromDefaultMethod(ClassTransformation transformation,
-            TransformMethod defaultMethod, final FieldAccess conduitAccess)
-    {
-        final MethodAccess access = defaultMethod.getAccess();
-
-        ComponentMethodAdvice advice = new InvokeParameterDefaultMethod(conduitAccess, access);
-
-        addPageLoadAdvice(transformation, advice);
-    }
-
-    private void addPageLoadAdvice(ClassTransformation transformation, ComponentMethodAdvice advice)
-    {
-        addMethodAdvice(transformation, TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, advice);
-    }
-
-    private static String getParameterName(String fieldName, String annotatedName)
-    {
-        if (InternalUtils.isNonBlank(annotatedName))
-            return annotatedName;
-
-        return InternalUtils.stripMemberName(fieldName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java
deleted file mode 100644
index 6fc3699..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PersistWorker.java
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.PageLifecycleAdapter;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Converts fields with the {@link org.apache.tapestry5.annotations.Persist} annotation into persistent fields.
- */
-public class PersistWorker implements ComponentClassTransformWorker
-{
-    class PersistentFieldConduit implements FieldValueConduit
-    {
-        private final InternalComponentResources resources;
-
-        private final String name;
-
-        private final PerThreadValue<Object> fieldValue;
-
-        private final Object defaultValue;
-
-        public PersistentFieldConduit(InternalComponentResources resources, String name,
-                PerThreadValue<Object> fieldValue, Object defaultValue)
-        {
-            this.resources = resources;
-            this.name = name;
-            this.fieldValue = fieldValue;
-            this.defaultValue = defaultValue;
-
-            resources.addPageLifecycleListener(new PageLifecycleAdapter()
-            {
-                @Override
-                public void restoreStateBeforePageAttach()
-                {
-                    restoreStateAtPageAttach();
-                }
-            });
-        }
-
-        public Object get()
-        {
-            return fieldValue.get(defaultValue);
-        }
-
-        public void set(Object newValue)
-        {
-            resources.persistFieldChange(name, newValue);
-
-            fieldValue.set(newValue);
-        }
-
-        private void restoreStateAtPageAttach()
-        {
-            if (resources.hasFieldChange(name))
-                fieldValue.set(resources.getFieldChange(name));
-        }
-    }
-
-    private final ComponentClassCache classCache;
-
-    private final PerthreadManager perThreadManager;
-
-    public PersistWorker(ComponentClassCache classCache, PerthreadManager perThreadManager)
-    {
-        this.classCache = classCache;
-        this.perThreadManager = perThreadManager;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        List<TransformField> fieldsWithAnnotation = transformation.matchFieldsWithAnnotation(Persist.class);
-
-        for (TransformField field : fieldsWithAnnotation)
-        {
-            makeFieldPersistent(field, model);
-        }
-    }
-
-    private void makeFieldPersistent(TransformField field, MutableComponentModel model)
-    {
-        Persist annotation = field.getAnnotation(Persist.class);
-
-        field.claim(annotation);
-
-        final String logicalFieldName = model.setFieldPersistenceStrategy(field.getName(), annotation.value());
-
-        final Object defaultValue = determineDefaultValueFromFieldType(field);
-
-        ComponentValueProvider<FieldValueConduit> provider = new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(ComponentResources resources)
-            {
-                return new PersistentFieldConduit((InternalComponentResources) resources, logicalFieldName,
-                        perThreadManager.createValue(), defaultValue);
-            }
-        };
-
-        field.replaceAccess(provider);
-    }
-
-    private Object determineDefaultValueFromFieldType(TransformField field)
-    {
-        return classCache.defaultValueForType(field.getType());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PropertyWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PropertyWorker.java
deleted file mode 100644
index 25fa727..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/PropertyWorker.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.FieldAccess;
-import org.apache.tapestry5.services.TransformField;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-/**
- * Provides the getter and setter methods. The methods are added as "existing", meaning that field access to them will
- * be transformed as necessary by other annotations. This worker needs to be scheduled before any worker that might
- * delete a field.
- * 
- * @see org.apache.tapestry5.annotations.Property
- */
-public class PropertyWorker implements ComponentClassTransformWorker
-{
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(Property.class))
-        {
-            createAccessorsForField(transformation, field);
-        }
-    }
-
-    private void createAccessorsForField(ClassTransformation transformation, TransformField field)
-    {
-        Property annotation = field.getAnnotation(Property.class);
-
-        String propertyName = InternalUtils.capitalize(InternalUtils.stripMemberName(field.getName()));
-
-        if (annotation.read())
-            addGetter(transformation, field, propertyName);
-
-        if (annotation.write())
-            addSetter(transformation, field, propertyName);
-    }
-
-    private void addSetter(ClassTransformation transformation, TransformField field, String propertyName)
-    {
-        TransformMethodSignature setter = new TransformMethodSignature(Modifier.PUBLIC, "void", "set" + propertyName,
-                new String[]
-                { field.getType() }, null);
-
-        ensureNotOverride(transformation, setter);
-
-        final FieldAccess access = field.getAccess();
-
-        transformation.getOrCreateMethod(setter).addAdvice(new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                access.write(invocation.getInstance(), invocation.getParameter(0));
-            }
-        });
-    }
-
-    private void ensureNotOverride(ClassTransformation transformation, TransformMethodSignature signature)
-    {
-        if (transformation.isDeclaredMethod(signature))
-            throw new RuntimeException(String.format(
-                    "Unable to create new method %s as it already exists in class %s.", signature, transformation
-                            .getClassName()));
-    }
-
-    private void addGetter(ClassTransformation transformation, TransformField field, String propertyName)
-    {
-        TransformMethodSignature getter = new TransformMethodSignature(Modifier.PUBLIC, field.getType(), "get"
-                + propertyName, null, null);
-
-        ensureNotOverride(transformation, getter);
-
-        final FieldAccess access = field.getAccess();
-
-        transformation.getOrCreateMethod(getter).addAdvice(new ComponentMethodAdvice()
-        {
-            public void advise(ComponentMethodInvocation invocation)
-            {
-                invocation.overrideResult(access.read(invocation.getInstance()));
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ReadOnlyFieldValueConduit.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ReadOnlyFieldValueConduit.java
deleted file mode 100644
index 4577217..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/ReadOnlyFieldValueConduit.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-
-/**
- * An implementation of {@link FieldValueConduit} for a read-only component field. Subclasses
- * provide an implementation of the {@link #get()} method.
- * 
- * @since 5.2.0
- */
-public abstract class ReadOnlyFieldValueConduit implements FieldValueConduit
-{
-    private final String qualifiedFieldName;
-
-    public ReadOnlyFieldValueConduit(String qualifiedFieldName)
-    {
-        this.qualifiedFieldName = qualifiedFieldName;
-    }
-
-    public ReadOnlyFieldValueConduit(String className, String fieldName)
-    {
-        this(String.format("%s.%s", className, fieldName));
-    }
-
-    public ReadOnlyFieldValueConduit(ComponentResources resources, String fieldName)
-    {
-        this(resources.getComponentModel().getComponentClassName(), fieldName);
-    }
-
-    public final void set(Object newValue)
-    {
-        throw new RuntimeException(String.format("Field %s is read only.", qualifiedFieldName));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderCommandWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderCommandWorker.java
deleted file mode 100644
index 70af68d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderCommandWorker.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-import java.lang.reflect.Modifier;
-
-/**
- * Ensures that all components implement {@link RenderCommand} by delegating to
- * {@link org.apache.tapestry5.internal.InternalComponentResources#queueRender(org.apache.tapestry5.runtime.RenderQueue)}
- * .
- */
-public class RenderCommandWorker implements ComponentClassTransformWorker
-{
-    private final TransformMethodSignature RENDER_SIGNATURE = new TransformMethodSignature(Modifier.PUBLIC, "void",
-            "render", new String[]
-            { MarkupWriter.class.getName(), RenderQueue.class.getName() }, null);
-
-    private final ComponentMethodAdvice advice = new ComponentMethodAdvice()
-    {
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            InternalComponentResources resources = (InternalComponentResources) invocation.getComponentResources();
-
-            RenderQueue queue = (RenderQueue) invocation.getParameter(1);
-
-            resources.queueRender(queue);
-        }
-    };
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        // Subclasses don't need to bother, they'll inherit from super-classes.
-        if (!transformation.isRootTransformation())
-            return;
-
-        transformation.addImplementedInterface(RenderCommand.class);
-
-        transformation.getOrCreateMethod(RENDER_SIGNATURE).addAdvice(advice);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
deleted file mode 100644
index b236e3f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RenderPhaseMethodWorker.java
+++ /dev/null
@@ -1,275 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.annotation.Annotation;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.Map.Entry;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.AfterRenderBody;
-import org.apache.tapestry5.annotations.AfterRenderTemplate;
-import org.apache.tapestry5.annotations.BeforeRenderBody;
-import org.apache.tapestry5.annotations.BeforeRenderTemplate;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.CleanupRender;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Event;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.MethodAccess;
-import org.apache.tapestry5.services.MethodInvocationResult;
-import org.apache.tapestry5.services.TransformConstants;
-import org.apache.tapestry5.services.TransformMethod;
-import org.apache.tapestry5.services.TransformMethodSignature;
-
-/**
- * Converts one of the methods of {@link org.apache.tapestry5.runtime.Component} into a chain of
- * command that, itself,
- * invokes certain methods (render phase methods) marked with an annotation, or named in a specific
- * way.
- */
-@SuppressWarnings("all")
-public class RenderPhaseMethodWorker implements ComponentClassTransformWorker
-{
-    private final class RenderPhaseMethodAdvice implements ComponentMethodAdvice
-    {
-        private final boolean reverse;
-
-        private final List<Invoker> invokers;
-
-        private RenderPhaseMethodAdvice(boolean reverse, List<Invoker> invokers)
-        {
-            this.reverse = reverse;
-            this.invokers = invokers;
-        }
-
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            if (!reverse)
-                invocation.proceed();
-
-            // All render phase methods take the same two parameters (writer and event)
-
-            Event event = (Event) invocation.getParameter(1);
-
-            if (event.isAborted())
-                return;
-
-            Object instance = invocation.getInstance();
-            MarkupWriter writer = (MarkupWriter) invocation.getParameter(0);
-
-            for (Invoker invoker : invokers)
-            {
-                invoker.invoke(instance, writer, event);
-
-                if (event.isAborted())
-                    return;
-            }
-
-            // Parent class implementation goes last.
-
-            if (reverse)
-                invocation.proceed();
-        }
-    }
-
-    private class Invoker
-    {
-        private final String methodIdentifier;
-
-        private final MethodAccess access;
-
-        Invoker(String methodIdentifier, MethodAccess access)
-        {
-            this.methodIdentifier = methodIdentifier;
-            this.access = access;
-        }
-
-        void invoke(Object instance, MarkupWriter writer, Event event)
-        {
-            event.setMethodDescription(methodIdentifier);
-
-            // As currently implemented, MethodAccess objects ignore excess parameters.
-
-            MethodInvocationResult result = access.invoke(instance, writer);
-
-            result.rethrow();
-
-            event.storeResult(result.getReturnValue());
-        }
-
-    }
-
-    private final Map<Class<? extends Annotation>, TransformMethodSignature> annotationToSignature = CollectionFactory
-            .newMap();
-
-    private final Map<String, Class<? extends Annotation>> nameToAnnotation = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Set<Class<? extends Annotation>> reverseAnnotations = CollectionFactory.newSet(AfterRenderBody.class,
-            AfterRenderTemplate.class, AfterRender.class, CleanupRender.class);
-
-    private final Set<TransformMethodSignature> lifecycleMethods = CollectionFactory.newSet();
-
-    {
-        annotationToSignature.put(SetupRender.class, TransformConstants.SETUP_RENDER_SIGNATURE);
-        annotationToSignature.put(BeginRender.class, TransformConstants.BEGIN_RENDER_SIGNATURE);
-        annotationToSignature.put(BeforeRenderTemplate.class, TransformConstants.BEFORE_RENDER_TEMPLATE_SIGNATURE);
-        annotationToSignature.put(BeforeRenderBody.class, TransformConstants.BEFORE_RENDER_BODY_SIGNATURE);
-        annotationToSignature.put(AfterRenderBody.class, TransformConstants.AFTER_RENDER_BODY_SIGNATURE);
-        annotationToSignature.put(AfterRenderTemplate.class, TransformConstants.AFTER_RENDER_TEMPLATE_SIGNATURE);
-        annotationToSignature.put(AfterRender.class, TransformConstants.AFTER_RENDER_SIGNATURE);
-        annotationToSignature.put(CleanupRender.class, TransformConstants.CLEANUP_RENDER_SIGNATURE);
-
-        for (Entry<Class<? extends Annotation>, TransformMethodSignature> me : annotationToSignature.entrySet())
-        {
-            nameToAnnotation.put(me.getValue().getMethodName(), me.getKey());
-            lifecycleMethods.add(me.getValue());
-        }
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        Map<Class, List<TransformMethod>> methods = mapRenderPhaseAnnotationToMethods(transformation);
-
-        for (Class renderPhaseAnnotation : methods.keySet())
-        {
-            mapMethodsToRenderPhase(transformation, model, renderPhaseAnnotation, methods.get(renderPhaseAnnotation));
-        }
-    }
-
-    private void mapMethodsToRenderPhase(ClassTransformation transformation, MutableComponentModel model,
-            Class annotationType, List<TransformMethod> methods)
-    {
-        ComponentMethodAdvice renderPhaseAdvice = createAdviceForMethods(annotationType, methods);
-
-        TransformMethodSignature renderPhaseSignature = annotationToSignature.get(annotationType);
-
-        transformation.getOrCreateMethod(renderPhaseSignature).addAdvice(renderPhaseAdvice);
-
-        model.addRenderPhase(annotationType);
-    }
-
-    private ComponentMethodAdvice createAdviceForMethods(Class annotationType, List<TransformMethod> methods)
-    {
-        boolean reverse = reverseAnnotations.contains(annotationType);
-
-        List<Invoker> invokers = toInvokers(annotationType, methods, reverse);
-
-        return new RenderPhaseMethodAdvice(reverse, invokers);
-    }
-
-    private List<Invoker> toInvokers(Class annotationType, List<TransformMethod> methods, boolean reverse)
-    {
-        List<Invoker> result = CollectionFactory.newList();
-
-        for (TransformMethod method : methods)
-        {
-            MethodAccess methodAccess = toMethodAccess(method);
-
-            Invoker invoker = new Invoker(method.getMethodIdentifier(), methodAccess);
-
-            result.add(invoker);
-        }
-
-        if (reverse)
-            Collections.reverse(result);
-
-        return result;
-    }
-
-    private MethodAccess toMethodAccess(TransformMethod method)
-    {
-        validateAsRenderPhaseMethod(method);
-
-        return method.getAccess();
-    }
-
-    private void validateAsRenderPhaseMethod(TransformMethod method)
-    {
-        String[] parameterTypes = method.getSignature().getParameterTypes();
-
-        switch (parameterTypes.length)
-        {
-            case 0:
-                break;
-
-            case 1:
-                if (parameterTypes[0].equals(MarkupWriter.class.getName()))
-                    break;
-            default:
-                throw new RuntimeException(
-                        String
-                                .format(
-                                        "Method %s is not a valid render phase method: it should take no parameters, or take a single parameter of type MarkupWriter.",
-                                        method.getMethodIdentifier()));
-        }
-    }
-
-    private Map<Class, List<TransformMethod>> mapRenderPhaseAnnotationToMethods(final ClassTransformation transformation)
-    {
-        Map<Class, List<TransformMethod>> map = CollectionFactory.newMap();
-
-        List<TransformMethod> matches = matchAllMethodsNotOverriddenFromBaseClass(transformation);
-
-        for (TransformMethod method : matches)
-        {
-            addMethodToRenderPhaseCategoryMap(map, method);
-        }
-
-        return map;
-    }
-
-    private void addMethodToRenderPhaseCategoryMap(Map<Class, List<TransformMethod>> map, TransformMethod method)
-    {
-        Class categorized = categorizeMethod(method);
-
-        if (categorized != null)
-            InternalUtils.addToMapList(map, categorized, method);
-    }
-
-    private Class categorizeMethod(TransformMethod method)
-    {
-        for (Class annotationClass : annotationToSignature.keySet())
-        {
-            if (method.getAnnotation(annotationClass) != null)
-                return annotationClass;
-        }
-
-        return nameToAnnotation.get(method.getName());
-    }
-
-    private List<TransformMethod> matchAllMethodsNotOverriddenFromBaseClass(final ClassTransformation transformation)
-    {
-        return transformation.matchMethods(new Predicate<TransformMethod>()
-        {
-            public boolean accept(TransformMethod method)
-            {
-                return !method.isOverride() && !lifecycleMethods.contains(method.getSignature());
-            }
-        });
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RetainWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RetainWorker.java
deleted file mode 100644
index b5b92aa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/RetainWorker.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-
-/**
- * Identifies fields with the {@link org.apache.tapestry5.annotations.Retain} annotation, and "claims" them so that no
- * special work will occur on them. Retain has been deprecated in Tapestry 5.2 and will likely be removed in the future.
- */
-public final class RetainWorker implements ComponentClassTransformWorker
-{
-    /**
-     * Claims each field with the {@link org.apache.tapestry5.annotations.Retain} annotation, claiming it using the
-     * annotation as the tag.
-     */
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (String fieldName : transformation.findFieldsWithAnnotation(Retain.class))
-        {
-            Retain annotation = transformation.getFieldAnnotation(fieldName, Retain.class);
-
-            transformation.claimField(fieldName, annotation);
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/SessionAttributeWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/SessionAttributeWorker.java
deleted file mode 100644
index b2ab3f7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/SessionAttributeWorker.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.SessionAttribute;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Looks for the {@link SessionAttribute} annotation and converts read and write access on such
- * fields into calls to the {@link Session#getAttribute(String)} and {@link Session#setAttribute(String, Object)}.
- */
-public class SessionAttributeWorker implements ComponentClassTransformWorker
-{
-    private final Request request;
-
-    private class SessionKeyConduit implements FieldValueConduit
-    {
-        private final String key;
-
-        public SessionKeyConduit(String key)
-        {
-            this.key = key;
-        }
-
-        private Session getSession()
-        {
-            return request.getSession(true);
-        }
-
-        public Object get()
-        {
-            // TODO: caching, and not creating the session unnecessarily
-            return getSession().getAttribute(key);
-        }
-
-        public void set(Object newValue)
-        {
-            getSession().setAttribute(key, newValue);
-        }
-    }
-
-    public SessionAttributeWorker(Request request)
-    {
-        this.request = request;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchFieldsWithAnnotation(SessionAttribute.class))
-        {
-            convertFieldToSessionAccess(field);
-        }
-    }
-
-    private void convertFieldToSessionAccess(TransformField field)
-    {
-        SessionAttribute annotation = field.getAnnotation(SessionAttribute.class);
-
-        field.claim(annotation);
-
-        String key = determineSessionKey(field, annotation.value());
-
-        field.replaceAccess(new SessionKeyConduit(key));
-    }
-
-    private String determineSessionKey(TransformField field, String value)
-    {
-        return value.equals("") ? field.getName() : value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/SupportsInformalParametersWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/SupportsInformalParametersWorker.java
deleted file mode 100644
index 94b7fa5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/SupportsInformalParametersWorker.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-
-/**
- * Checks for the {@link SupportsInformalParameters} annotation, settting the corresponding flag on the model if
- * present.
- */
-public class SupportsInformalParametersWorker implements ComponentClassTransformWorker
-{
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        if (transformation.getAnnotation(SupportsInformalParameters.class) != null)
-            model.enableSupportsInformalParameters();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/TransformMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/TransformMessages.java
deleted file mode 100644
index 4aa63c0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/TransformMessages.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.util.List;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.MixinClasses;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.services.TransformField;
-
-public class TransformMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(TransformMessages.class);
-
-    public static String fieldInjectionError(String className, String fieldName, Throwable cause)
-    {
-        return MESSAGES.format("field-injection-error", className, fieldName, cause);
-    }
-
-    public static String illegalNumberOfPageActivationContextHandlers(List<TransformField> fields)
-    {
-        List<String> names = CollectionFactory.newList();
-
-        for (TransformField field : fields)
-        {
-            names.add(field.getName());
-        }
-
-        return MESSAGES.format("illegal-number-of-page-activation-context-handlers", InternalUtils.joinSorted(names));
-    }
-
-    public static String badMixinConstraintLength(MixinClasses mixin, String fieldName)
-    {
-        return MESSAGES.format("bad-mixin-constraint-length", mixin.value().length, fieldName, mixin.order().length);
-    }
-
-    /** @since 5.2.0 */
-    public static String bindParameterOnlyOnMixin(String boundParameterName, ComponentResources resources)
-    {
-        return MESSAGES.format("bind-parameter-only-on-mixin", boundParameterName, resources.getComponentModel()
-                .getComponentClassName());
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/UnclaimedFieldWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/UnclaimedFieldWorker.java
deleted file mode 100644
index 25a01bf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/transform/UnclaimedFieldWorker.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentValueProvider;
-import org.apache.tapestry5.services.TransformField;
-
-/**
- * Designed to be just about the last worker in the pipeline. Its job is to convert each otherwise unclaimed
- * field into a value stored in the {@link PerthreadManager}.
- */
-public final class UnclaimedFieldWorker implements ComponentClassTransformWorker
-{
-    private final PerthreadManager perThreadManager;
-
-    private final ComponentClassCache classCache;
-
-    static class UnclaimedFieldConduit implements FieldValueConduit
-    {
-        private final InternalComponentResources resources;
-
-        private final PerThreadValue<Object> fieldValue;
-
-        // Set prior to the containingPageDidLoad lifecycle event
-        private Object fieldDefaultValue;
-
-        private UnclaimedFieldConduit(InternalComponentResources resources, PerThreadValue<Object> fieldValue,
-                Object fieldDefaultValue)
-        {
-            this.resources = resources;
-
-            this.fieldValue = fieldValue;
-            this.fieldDefaultValue = fieldDefaultValue;
-        }
-
-        public Object get()
-        {
-            return fieldValue.get(fieldDefaultValue);
-        }
-
-        public void set(Object newValue)
-        {
-            fieldValue.set(newValue);
-
-            // This catches the case where the instance initializer method sets a value for the field.
-            // That value is captured and used when no specific value has been stored.
-
-            if (!resources.isLoaded())
-                fieldDefaultValue = newValue;
-        }
-
-    }
-
-    public UnclaimedFieldWorker(ComponentClassCache classCache, PerthreadManager perThreadManager)
-    {
-        this.classCache = classCache;
-        this.perThreadManager = perThreadManager;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformField field : transformation.matchUnclaimedFields())
-        {
-            transformField(field);
-        }
-    }
-
-    private void transformField(TransformField field)
-    {
-        int modifiers = field.getModifiers();
-
-        if (Modifier.isFinal(modifiers) || Modifier.isStatic(modifiers))
-            return;
-
-        ComponentValueProvider<FieldValueConduit> provider = createFieldValueConduitProvider(field);
-
-        field.replaceAccess(provider);
-    }
-
-    private ComponentValueProvider<FieldValueConduit> createFieldValueConduitProvider(TransformField field)
-    {
-        final String fieldName = field.getName();
-        final String fieldType = field.getType();
-
-        return new ComponentValueProvider<FieldValueConduit>()
-        {
-            public FieldValueConduit get(ComponentResources resources)
-            {
-                Object fieldDefaultValue = classCache.defaultValueForType(fieldType);
-
-                return new UnclaimedFieldConduit((InternalComponentResources) resources,
-                        perThreadManager.createValue(), fieldDefaultValue);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/AbstractTranslator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/AbstractTranslator.java
deleted file mode 100644
index 4f6a2df..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/AbstractTranslator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import org.apache.tapestry5.Translator;
-
-public abstract class AbstractTranslator<T> implements Translator<T>
-{
-    private final String name;
-    private final Class<T> type;
-    private final String messageKey;
-
-    protected AbstractTranslator(String name, Class<T> type, String messageKey)
-    {
-        this.name = name;
-        this.type = type;
-        this.messageKey = messageKey;
-    }
-
-    public String getMessageKey()
-    {
-        return messageKey;
-    }
-
-    public Class<T> getType()
-    {
-        return type;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigDecimalNumericFormatter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigDecimalNumericFormatter.java
deleted file mode 100644
index 52e4b66..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigDecimalNumericFormatter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import java.math.BigDecimal;
-import java.text.DecimalFormatSymbols;
-
-public class BigDecimalNumericFormatter extends BigTypesFormatter
-{
-    public BigDecimalNumericFormatter(DecimalFormatSymbols symbols)
-    {
-        super(symbols);
-    }
-
-    protected Number parseConvertedValue(String converted)
-    {
-        return new BigDecimal(converted);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigIntegerNumericFormatter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigIntegerNumericFormatter.java
deleted file mode 100644
index 8eeccdf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigIntegerNumericFormatter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import java.math.BigInteger;
-import java.text.DecimalFormatSymbols;
-
-public class BigIntegerNumericFormatter extends BigTypesFormatter
-{
-    public BigIntegerNumericFormatter(DecimalFormatSymbols symbols)
-    {
-        super(symbols);
-    }
-
-
-    protected Number parseConvertedValue(String fixedNeg)
-    {
-        return new BigInteger(fixedNeg);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigTypesFormatter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigTypesFormatter.java
deleted file mode 100644
index 1dd6769..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/BigTypesFormatter.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import java.text.DecimalFormatSymbols;
-import java.text.ParseException;
-
-/**
- * Base class for parsing/formatting BigInteger and BigDecimal.
- *
- * @since 5.1.0.1
- */
-public abstract class BigTypesFormatter implements NumericFormatter
-{
-    protected final DecimalFormatSymbols symbols;
-
-    public BigTypesFormatter(DecimalFormatSymbols symbols)
-    {
-        this.symbols = symbols;
-    }
-
-    protected String toString(char ch)
-    {
-        return String.valueOf(ch);
-    }
-
-    public String toClient(Number value)
-    {
-        String normal = value.toString();
-
-        // When formatting integers, we don't use the grouping seperator.
-
-        return normal.replace('-', symbols.getMinusSign()).replace('.', symbols.getDecimalSeparator());
-    }
-
-    public Number parse(String clientValue) throws ParseException
-    {
-        String noGroups = clientValue.replace(toString(symbols.getGroupingSeparator()), "");
-        String fixedNeg = noGroups.replace(symbols.getMinusSign(), '-');
-        String fixedDec = fixedNeg.replace(symbols.getDecimalSeparator(), '.');
-
-        try
-        {
-            return parseConvertedValue(fixedDec);
-        }
-        catch (NumberFormatException ex)
-        {
-            throw new ParseException(ex.getMessage(), 0);
-        }
-    }
-
-    protected abstract Number parseConvertedValue(String converted);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericFormatter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericFormatter.java
deleted file mode 100644
index ea1ed8c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericFormatter.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import java.text.ParseException;
-
-/**
- * Interface for defining the basic parse and toClient operations. The typical implementation is based on {@link
- * java.text.NumberFormat} but alternate implementations are used for BigInteger and BigDecimal.
- *
- * @since 5.1.0.1
- */
-public interface NumericFormatter
-{
-    /**
-     * Parses a value from the client in a locale-specific way.
-     */
-    Number parse(String clientValue) throws ParseException;
-
-    /**
-     * Formats a value for the client in a locale-specific way.
-     */
-    String toClient(Number value);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericFormatterImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericFormatterImpl.java
deleted file mode 100644
index 4f446ef..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericFormatterImpl.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import java.text.NumberFormat;
-import java.text.ParseException;
-
-/**
- * A wrapper around NumberFormat.
- *
- * @since 5.1.0.1
- */
-public class NumericFormatterImpl implements NumericFormatter
-{
-    private final NumberFormat format;
-
-    public NumericFormatterImpl(NumberFormat format)
-    {
-        this.format = format;
-    }
-
-    public Number parse(String clientValue) throws ParseException
-    {
-        return format.parse(clientValue);
-    }
-
-    public String toClient(Number value)
-    {
-        return format.format(value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslator.java
deleted file mode 100644
index f3a4b34..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslator.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.services.FormSupport;
-
-import java.text.ParseException;
-
-/**
- * Uses a {@link org.apache.tapestry5.internal.translator.NumericTranslatorSupport} to provide proper locale-aware
- * support for all the built-in numeric types.
- *
- * @since 5.1.0.1
- */
-public class NumericTranslator<T extends Number> extends AbstractTranslator<T>
-{
-    private final NumericTranslatorSupport support;
-
-    public NumericTranslator(String name, Class<T> type, NumericTranslatorSupport support)
-    {
-        super(name, type, support.getMessageKey(type));
-
-        this.support = support;
-    }
-
-    public void render(Field field, String message, MarkupWriter writer, FormSupport formSupport)
-    {
-        if (formSupport.isClientValidationEnabled())
-            support.addValidation(getType(), field, message);
-    }
-
-    public T parseClient(Field field, String clientValue, String message) throws ValidationException
-    {
-        try
-        {
-            return support.parseClient(getType(), clientValue);
-        }
-        catch (ParseException ex)
-        {
-            throw new ValidationException(message);
-        }
-    }
-
-    public String toClient(T value)
-    {
-        return support.toClient(getType(), value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupport.java
deleted file mode 100644
index d11b962..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupport.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import org.apache.tapestry5.Field;
-
-import java.text.ParseException;
-
-/**
- * Used to generate the client-side JSON specification for how a number-based validator operates. Uses {@link
- * org.apache.tapestry5.ioc.services.ThreadLocale} to determine the locale for any locale-specific operations.
- *
- * @since 5.1.0.1
- */
-public interface NumericTranslatorSupport
-{
-    /**
-     * Parses a client-submitted value in a localized manner.
-     *
-     * @param type        desired type of value
-     * @param clientValue value from client; this will be trimmed of leading/trailing whitespace
-     * @param <T>
-     * @return the parsed value
-     * @throws ParseException
-     * @see org.apache.tapestry5.Translator#parseClient(org.apache.tapestry5.Field, String, String)
-     */
-    <T extends Number> T parseClient(Class<T> type, String clientValue) throws ParseException;
-
-    /**
-     * Converts a server-side value to a client-side string. Integer types are formatted simply; decimal types may be
-     * formatted using thousands-seperator commas.
-     *
-     * @param type  type of value to convert
-     * @param value current (non-null) value
-     * @param <T>
-     * @return value formatted
-     */
-    <T extends Number> String toClient(Class<T> type, T value);
-
-    /**
-     * Returns the default message key for parse failures for the indicated type.
-     *
-     * @param type
-     * @param <T>
-     * @return a message key: either "integer-format-exception" or "number-format-exception"
-     */
-    <T extends Number> String getMessageKey(Class<T> type);
-
-    /**
-     * Adds client-side format validation for the field, appropriate to the indicated type.
-     *
-     * @param type    value type
-     * @param field   field to which validation should be added
-     * @param message message if the client-side value can't be parsed as a number
-     * @param <T>
-     */
-    <T extends Number> void addValidation(Class<T> type, Field field, String message);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java
deleted file mode 100644
index a704023..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/NumericTranslatorSupportImpl.java
+++ /dev/null
@@ -1,207 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.text.DecimalFormat;
-import java.text.DecimalFormatSymbols;
-import java.text.NumberFormat;
-import java.text.ParseException;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-public class NumericTranslatorSupportImpl implements NumericTranslatorSupport
-{
-    private final TypeCoercer typeCoercer;
-
-    private final ThreadLocale threadLocale;
-
-    private final Request request;
-
-    private final JavaScriptSupport javascriptSupport;
-
-    private final ClientBehaviorSupport clientBehaviorSupport;
-
-    private final boolean compactJSON;
-
-    private final Map<Locale, DecimalFormatSymbols> symbolsCache = CollectionFactory.newConcurrentMap();
-
-    private final Set<Class> integerTypes = CollectionFactory.newSet();
-
-    private static final String DECIMAL_FORMAT_SYMBOLS_PROVIDED = "tapestry.decimal-format-symbols-provided";
-
-    public NumericTranslatorSupportImpl(TypeCoercer typeCoercer, ThreadLocale threadLocale, Request request,
-            JavaScriptSupport javascriptSupport, ClientBehaviorSupport clientBehaviorSupport, 
-            @Symbol(SymbolConstants.COMPACT_JSON)
-            boolean compactJSON)
-    {
-        this.typeCoercer = typeCoercer;
-        this.threadLocale = threadLocale;
-        this.request = request;
-        this.javascriptSupport = javascriptSupport;
-        this.clientBehaviorSupport = clientBehaviorSupport;
-        this.compactJSON = compactJSON;
-
-        Class[] integerTypes =
-        { Byte.class, Short.class, Integer.class, Long.class, BigInteger.class };
-
-        for (Class c : integerTypes)
-            this.integerTypes.add(c);
-
-    }
-
-    public <T extends Number> void addValidation(Class<T> type, Field field, String message)
-    {
-        if (request.getAttribute(DECIMAL_FORMAT_SYMBOLS_PROVIDED) == null)
-        {
-            javascriptSupport.addScript(InitializationPriority.IMMEDIATE, "Tapestry.decimalFormatSymbols = %s;",
-                    createJSONDecimalFormatSymbols().toString(compactJSON));
-
-            request.setAttribute(DECIMAL_FORMAT_SYMBOLS_PROVIDED, true);
-        }
-
-        clientBehaviorSupport.addValidation(field, "numericformat", message, isIntegerType(type));
-    }
-
-    private JSONObject createJSONDecimalFormatSymbols()
-    {
-        Locale locale = threadLocale.getLocale();
-
-        DecimalFormatSymbols symbols = getSymbols(locale);
-
-        JSONObject result = new JSONObject();
-
-        result.put("groupingSeparator", toString(symbols.getGroupingSeparator()));
-        result.put("minusSign", toString(symbols.getMinusSign()));
-        result.put("decimalSeparator", toString(symbols.getDecimalSeparator()));
-
-        return result;
-    }
-
-    private DecimalFormatSymbols getSymbols(Locale locale)
-    {
-        DecimalFormatSymbols symbols = symbolsCache.get(locale);
-
-        if (symbols == null)
-        {
-            symbols = new DecimalFormatSymbols(locale);
-            symbolsCache.put(locale, symbols);
-        }
-
-        return symbols;
-    }
-
-    private boolean isIntegerType(Class type)
-    {
-        return integerTypes.contains(type);
-    }
-
-    public <T extends Number> T parseClient(Class<T> type, String clientValue) throws ParseException
-    {
-        NumericFormatter formatter = getParseFormatter(type);
-
-        Number number = formatter.parse(clientValue.trim());
-
-        return typeCoercer.coerce(number, type);
-    }
-
-    private NumericFormatter getParseFormatter(Class type)
-    {
-        Locale locale = threadLocale.getLocale();
-        DecimalFormatSymbols symbols = getSymbols(locale);
-
-        if (type.equals(BigInteger.class))
-            return new BigIntegerNumericFormatter(symbols);
-
-        if (type.equals(BigDecimal.class))
-            return new BigDecimalNumericFormatter(symbols);
-
-        // We don't cache NumberFormat instances because they are not thread safe.
-        // Perhaps we should turn this service into a perthread so that we can cache
-        // (for the duration of a request)?
-
-        // We don't cache the rest of these, because they are built on DecimalFormat which is
-        // not thread safe.
-
-        if (isIntegerType(type))
-        {
-            NumberFormat format = NumberFormat.getIntegerInstance(locale);
-            return new NumericFormatterImpl(format);
-        }
-
-        DecimalFormat df = (DecimalFormat) NumberFormat.getNumberInstance(locale);
-
-        if (type.equals(BigDecimal.class))
-            df.setParseBigDecimal(true);
-
-        return new NumericFormatterImpl(df);
-    }
-
-    private NumericFormatter getOutputFormatter(Class type)
-    {
-        Locale locale = threadLocale.getLocale();
-
-        DecimalFormatSymbols symbols = getSymbols(locale);
-
-        if (type.equals(BigInteger.class))
-            return new BigIntegerNumericFormatter(symbols);
-
-        if (type.equals(BigDecimal.class))
-            return new BigDecimalNumericFormatter(symbols);
-
-        // We don't cache the rest of these, because they are built on DecimalFormat which is
-        // not thread safe.
-
-        if (!isIntegerType(type))
-        {
-            NumberFormat format = NumberFormat.getNumberInstance(locale);
-
-            return new NumericFormatterImpl(format);
-        }
-
-        DecimalFormat df = new DecimalFormat(toString(symbols.getZeroDigit()), symbols);
-
-        return new NumericFormatterImpl(df);
-    }
-
-    public <T extends Number> String toClient(Class<T> type, T value)
-    {
-        return getOutputFormatter(type).toClient(value);
-    }
-
-    public <T extends Number> String getMessageKey(Class<T> type)
-    {
-        return isIntegerType(type) ? "integer-format-exception" : "number-format-exception";
-    }
-
-    private static String toString(char ch)
-    {
-        return String.valueOf(ch);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/StringTranslator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/StringTranslator.java
deleted file mode 100644
index 31144a6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/translator/StringTranslator.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.translator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.services.FormSupport;
-
-public class StringTranslator extends AbstractTranslator<String>
-{
-    public StringTranslator()
-    {
-        super("string", String.class, "a-string-is-a-string");
-    }
-
-    /**
-     * Does nothing.
-     */
-    public void render(Field field, String message, MarkupWriter writer, FormSupport formSupport)
-    {
-    }
-
-    /**
-     * Passes the clientValue through unchanged.
-     */
-    public String parseClient(Field field, String clientValue, String message)
-            throws ValidationException
-    {
-        return clientValue;
-    }
-
-    /**
-     * Passes the value through unchanged.
-     */
-    public String toClient(String value)
-    {
-        return value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/AutofocusValidationDecorator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/AutofocusValidationDecorator.java
deleted file mode 100644
index 7e99e67..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/AutofocusValidationDecorator.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-/**
- * Used by {@link org.apache.tapestry5.corelib.components.Form} to determine which fields will be focused and a what
- * priority.
- */
-public class AutofocusValidationDecorator extends ValidationDecoratorWrapper
-{
-    private final ValidationTracker tracker;
-
-    private final JavaScriptSupport jsSupport;
-
-    public AutofocusValidationDecorator(ValidationDecorator delegate, ValidationTracker tracker,
-            JavaScriptSupport javascriptSupport)
-    {
-        super(delegate);
-        this.tracker = tracker;
-        this.jsSupport = javascriptSupport;
-    }
-
-    @Override
-    public void insideField(Field field)
-    {
-        super.insideField(field);
-
-        if (!field.isDisabled())
-        {
-            jsSupport.autofocus(getPriority(field), field.getClientId());
-        }
-    }
-
-    private FieldFocusPriority getPriority(Field field)
-    {
-        if (tracker.inError(field))
-            return FieldFocusPriority.IN_ERROR;
-
-        if (field.isRequired())
-            return FieldFocusPriority.REQUIRED;
-
-        return FieldFocusPriority.OPTIONAL;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Base64InputStream.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Base64InputStream.java
deleted file mode 100644
index 5da08c7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Base64InputStream.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.commons.codec.binary.Base64;
-
-import java.io.ByteArrayInputStream;
-
-/**
- * An extension of {@link ByteArrayInputStream} that is initialized from a Base64 input stream (rather than from a byte
- * array).
- */
-public class Base64InputStream extends ByteArrayInputStream
-{
-    public Base64InputStream(String base64)
-    {
-        super(decode(base64));
-    }
-
-    private static byte[] decode(String base64)
-    {
-        byte[] array = base64.getBytes();
-
-        return Base64.decodeBase64(array);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Base64OutputStream.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Base64OutputStream.java
deleted file mode 100644
index 628c324..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Base64OutputStream.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.commons.codec.binary.Base64;
-
-import java.io.ByteArrayOutputStream;
-
-/**
- * An extension of {@link ByteArrayOutputStream} that allows the final byte array to be converted to a Base64 string.
- */
-public final class Base64OutputStream extends ByteArrayOutputStream
-{
-    public String toBase64()
-    {
-        byte[] binary = toByteArray();
-
-        byte[] base64 = Base64.encodeBase64(binary);
-
-        return new String(base64);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/CaptureResultCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/CaptureResultCallback.java
deleted file mode 100644
index 31006ed..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/CaptureResultCallback.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.ComponentEventCallback;
-
-/**
- * Implementation of {@link ComponentEventCallback} that simply captures the result value.
- * 
- * @since 5.2.0
- */
-public class CaptureResultCallback<T> implements ComponentEventCallback<T>
-{
-    private T result;
-
-    public boolean handleResult(T result)
-    {
-        this.result = result;
-
-        return true;
-    }
-
-    public T getResult()
-    {
-        return result;
-    }
-
-    public static <T> CaptureResultCallback<T> create()
-    {
-        return new CaptureResultCallback<T>();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Holder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Holder.java
deleted file mode 100644
index 9db73aa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/Holder.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import java.util.concurrent.atomic.AtomicReference;
-
-/**
- * An object that holds some type of other object. This is useful for communicating information from an inner class
- * (used as a closure) to the containing method. This is similar to {@link AtomicReference}, except that it is simpler
- * but <strong>not</strong> thread safe.
- *
- * @param <T>
- */
-public class Holder<T>
-{
-    private T held;
-
-    public void put(T object)
-    {
-        held = object;
-    }
-
-    public T get()
-    {
-        return held;
-    }
-
-    public boolean hasValue()
-    {
-        return held != null;
-    }
-
-    public static <T> Holder<T> create()
-    {
-        return new Holder<T>();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/IntegerRange.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/IntegerRange.java
deleted file mode 100644
index 7b2b7ab..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/IntegerRange.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import java.util.Iterator;
-
-/**
- * Represents a sequence of integer values, either ascending or descending. The sequence is always inclusive (of the
- * finish value).
- */
-public final class IntegerRange implements Iterable<Integer>
-{
-    private final int start;
-
-    private final int finish;
-
-    private class RangeIterator implements Iterator<Integer>
-    {
-        private final int increment;
-
-        private int value = start;
-
-        private boolean hasNext = true;
-
-        RangeIterator()
-        {
-            increment = start < finish ? +1 : -1;
-        }
-
-        public boolean hasNext()
-        {
-            return hasNext;
-        }
-
-        public Integer next()
-        {
-            if (!hasNext) throw new IllegalStateException();
-
-            int result = value;
-
-            hasNext = value != finish;
-
-            value += increment;
-
-            return result;
-        }
-
-        public void remove()
-        {
-            throw new UnsupportedOperationException();
-        }
-
-    }
-
-    public IntegerRange(final int start, final int finish)
-    {
-        this.start = start;
-        this.finish = finish;
-    }
-
-    public int getFinish()
-    {
-        return finish;
-    }
-
-    public int getStart()
-    {
-        return start;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("%d..%d", start, finish);
-    }
-
-    /**
-     * The main puprose of a range object is to produce an Iterator. Since IntegerRange is iterable, it is useful with
-     * the Tapestry Loop component, but also with the Java for loop!
-     */
-    public Iterator<Integer> iterator()
-    {
-        return new RangeIterator();
-    }
-
-    @Override
-    public int hashCode()
-    {
-        final int PRIME = 31;
-
-        int result = PRIME + finish;
-
-        result = PRIME * result + start;
-
-        return result;
-    }
-
-    /**
-     * Returns true if the other object is an IntegerRange with the same start and finish values.
-     */
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) return true;
-        if (obj == null) return false;
-        if (getClass() != obj.getClass()) return false;
-        final IntegerRange other = (IntegerRange) obj;
-        if (finish != other.finish) return false;
-
-        return start == other.start;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/LocaleUtils.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/LocaleUtils.java
deleted file mode 100644
index 7d6f2ee..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/LocaleUtils.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import java.util.Locale;
-
-/**
- * Contains code borrowed from <a href="http://commons.apache.org/lang/">commons-lang</a>.
- */
-public class LocaleUtils
-{
-    /**
-     * <p>Converts a String to a Locale.</p> <p/> <p>This method takes the string format of a locale and creates the
-     * locale object from it.</p> <p/>
-     * <pre>
-     *   LocaleUtils.toLocale("en")         = new Locale("en", "")
-     *   LocaleUtils.toLocale("en_GB")      = new Locale("en", "GB")
-     *   LocaleUtils.toLocale("en_GB_xxx")  = new Locale("en", "GB", "xxx")   (#)
-     * </pre>
-     * <p/> <p>(#) The behaviour of the JDK variant constructor changed between JDK1.3 and JDK1.4. In JDK1.3, the
-     * constructor upper cases the variant, in JDK1.4, it doesn't. Thus, the result from getVariant() may vary depending
-     * on your JDK.</p> <p/> <p>This method validates the input strictly. The language code must be lowercase. The
-     * country code must be uppercase. The separator must be an underscore. The length must be correct. </p>
-     *
-     * @param input the locale String to convert, null returns null
-     * @return a Locale, null if null input
-     * @throws IllegalArgumentException if the string is an invalid format
-     */
-    public static Locale toLocale(String input)
-    {
-        if (input == null)
-            return null;
-
-        int len = input.length();
-        if (len != 2 && len != 5 && len < 7)
-            fail(input);
-
-        char ch0 = input.charAt(0);
-        char ch1 = input.charAt(1);
-
-        if (ch0 < 'a' || ch0 > 'z' || ch1 < 'a' || ch1 > 'z')
-            fail(input);
-
-        if (len == 2)
-            return new Locale(input, "");
-
-        if (input.charAt(2) != '_')
-            fail(input);
-
-        char ch3 = input.charAt(3);
-        if (ch3 == '_')
-            return new Locale(input.substring(0, 2), "", input.substring(4));
-
-        char ch4 = input.charAt(4);
-        if (ch3 < 'A' || ch3 > 'Z' || ch4 < 'A' || ch4 > 'Z')
-            fail(input);
-
-        if (len == 5)
-            return new Locale(input.substring(0, 2), input.substring(3, 5));
-
-        if (input.charAt(5) != '_')
-            fail(input);
-
-        return new Locale(input.substring(0, 2), input.substring(3, 5), input.substring(6));
-    }
-
-    private static void fail(String input)
-    {
-        throw new IllegalArgumentException(String.format("Unable to convert '%s' to a Locale instance.", input));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MethodInvocationBuilder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MethodInvocationBuilder.java
deleted file mode 100644
index 20ea526..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MethodInvocationBuilder.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.TransformMethodSignature;
-import org.apache.tapestry5.services.TransformUtils;
-
-import java.util.Map;
-
-/**
- * A utility class for building part of a method body to invoke a method. Analyzes the method and matches parameter
- * types to ParameterBuilders.
- */
-public final class MethodInvocationBuilder
-{
-    private final Map<String, ParameterBuilder> builders = CollectionFactory.newMap();
-
-    /**
-     * Maps a parameter type to a {@link ParameterBuilder}.
-     */
-    public void addParameter(String parameterType, ParameterBuilder builder)
-    {
-        // TODO: Name conflicts
-
-        builders.put(parameterType, builder);
-    }
-
-    /**
-     * Maps a parameter type to a literal string to be used for the parameter expression.
-     *
-     * @see StringParameterBuilder
-     */
-    public void addParameter(String parameterType, String expression)
-    {
-        addParameter(parameterType, new StringParameterBuilder(expression));
-    }
-
-    /**
-     * Builds the method invocation. Analyzes the type of each parameter to the method, and uses a {@link
-     * ParameterBuilder} to provide the expression. Supplies a default value (usually null) for any parameters that do
-     * not have parameter builders.
-     *
-     * @param signature      of the method to invoke
-     * @param transformation
-     * @return method invocation expression
-     * @see TransformUtils#getDefaultValue(String)
-     */
-    public String buildMethodInvocation(TransformMethodSignature signature,
-                                        ClassTransformation transformation)
-    {
-        StringBuilder builder = new StringBuilder(signature.getMethodName());
-
-        builder.append("(");
-
-        String[] parameterTypes = signature.getParameterTypes();
-
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            if (i > 0) builder.append(", ");
-
-            String type = parameterTypes[i];
-
-            ParameterBuilder parameterBuilder = builders.get(type);
-
-            if (parameterBuilder == null)
-            {
-                // TODO: Log an error
-
-                builder.append(TransformUtils.getDefaultValue(type));
-            }
-            else
-            {
-                builder.append(parameterBuilder.buildParameter(transformation));
-            }
-        }
-
-        builder.append(")");
-
-        return builder.toString();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MultiKey.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MultiKey.java
deleted file mode 100644
index 503bb1f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/MultiKey.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import java.util.Arrays;
-
-/**
- * Combines multiple values to form a single composite key. MultiKey can often be used as an alternative to nested
- * maps.
- */
-public final class MultiKey
-{
-    private static final int PRIME = 31;
-
-    private final Object[] values;
-
-    private final int hashCode;
-
-    /**
-     * Creates a new instance from the provided values. It is assumed that the values provided are good map keys
-     * themselves -- immutable, with proper implementations of equals() and hashCode().
-     *
-     * @param values
-     */
-    public MultiKey(Object... values)
-    {
-        this.values = values;
-
-        hashCode = PRIME * Arrays.hashCode(this.values);
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return hashCode;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-            return true;
-        if (obj == null)
-            return false;
-        if (getClass() != obj.getClass())
-            return false;
-        final MultiKey other = (MultiKey) obj;
-
-        return Arrays.equals(values, other.values);
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("MultiKey[");
-
-        boolean first = true;
-
-        for (Object o : values)
-        {
-            if (!first)
-                builder.append(", ");
-
-            builder.append(o);
-
-            first = false;
-        }
-
-        builder.append("]");
-
-        return builder.toString();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NotificationEventCallback.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NotificationEventCallback.java
deleted file mode 100644
index df6466e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/NotificationEventCallback.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.ComponentEventCallback;
-
-/**
- * A {@link org.apache.tapestry5.ComponentEventCallback} used for notification events. Event handler methods may return
- * true (to abort the event) or false (to allow the event to continue bubbling up), but all other values are forbidden.
- */
-public class NotificationEventCallback implements ComponentEventCallback
-{
-    private final String eventType;
-
-    private final String completeId;
-
-    public NotificationEventCallback(String eventType, String completeId)
-    {
-        this.eventType = eventType;
-        this.completeId = completeId;
-    }
-
-    public boolean handleResult(Object result)
-    {
-        if (result instanceof Boolean) return ((Boolean) result);
-
-        throw new IllegalArgumentException(
-                UtilMessages.noReturnValueAccepted(eventType, completeId, result));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/ParameterBuilder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/ParameterBuilder.java
deleted file mode 100644
index 1ece396..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/ParameterBuilder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.services.ClassTransformation;
-
-/**
- * Builds single parameter value to pass into a method being invoked by a {@link org.apache.tapestry5.internal.util.MethodInvocationBuilder}.
- */
-public interface ParameterBuilder
-{
-    /**
-     * @param transformation
-     * @return the expression for the parameter
-     */
-    String buildParameter(ClassTransformation transformation);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java
deleted file mode 100644
index c369427..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoder.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
-
-import java.io.Serializable;
-
-/**
- * This is a key part of the plan to eliminate {@link org.apache.tapestry5.PrimaryKeyEncoder}.
- *
- * @since 5.1.0.0
- */
-@SuppressWarnings({ "unchecked" })
-public class PrimaryKeyEncoder2ValueEncoder implements Coercion<PrimaryKeyEncoder, ValueEncoder>
-{
-    // The magic of proxies: a coercion within TypeCoercer can use TypeCoercer as part of its job!
-    private final TypeCoercer coercer;
-
-    public PrimaryKeyEncoder2ValueEncoder(TypeCoercer coercer)
-    {
-        this.coercer = coercer;
-    }
-
-    public ValueEncoder coerce(final PrimaryKeyEncoder input)
-    {
-        final Class keyType = input.getKeyType();
-
-        if (keyType == null)
-        {
-            String message = String.format("Unable to extract primary key type from %s. " +
-                    "This represents a change from Tapestry 5.0 to Tapestry 5.1.", input);
-
-            if (input instanceof DefaultPrimaryKeyEncoder)
-                message +=
-                        " Class DefaultPrimaryKeyEncoder now includes a constructor for specifying the key type. " +
-                                "You should change the code that instantiates the encoder.";
-            else
-                message += " You should ensure that the getKeyType() method returns the correct Class.";
-
-            throw new RuntimeException(message);
-        }
-
-        return new ValueEncoder()
-        {
-            public String toClient(Object value)
-            {
-                Object key = input.toKey(value);
-
-                return coercer.coerce(key, String.class);
-            }
-
-            public Object toValue(String clientValue)
-            {
-                Serializable key = (Serializable) coercer.coerce(clientValue, keyType);
-
-                return input.toValue(key);
-            }
-
-            @Override
-            public String toString()
-            {
-                return String.format("<ValueEncoder coercion wrapper around PrimaryKeyEncoder[%s]>",
-                                     keyType.getName());
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrintOutCollector.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrintOutCollector.java
deleted file mode 100644
index 4ffd9a5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/PrintOutCollector.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import java.io.PrintWriter;
-import java.io.StringWriter;
-
-/**
- * Utility for collecting the output of a {@link java.io.PrintWriter}.
- */
-public class PrintOutCollector
-{
-    private final StringWriter stringWriter;
-
-    private PrintWriter printWriter;
-
-    public PrintOutCollector()
-    {
-        stringWriter = new StringWriter();
-        printWriter = new PrintWriter(stringWriter);
-    }
-
-    public PrintWriter getPrintWriter()
-    {
-        return printWriter;
-    }
-
-    /**
-     * Closes the {@link PrintWriter} and returns the accumulated text output.
-     */
-    public String getPrintOut()
-    {
-        printWriter.close();
-        return stringWriter.toString();
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RenderableAsBlock.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RenderableAsBlock.java
deleted file mode 100644
index 56fcfae..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/RenderableAsBlock.java
+++ /dev/null
@@ -1,50 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-/**
- * Allows any {@link org.apache.tapestry5.Renderable} object to act as a {@link org.apache.tapestry5.Block}. Basically,
- * dressed up the Renderable with the Block interface, and delegates the {@link org.apache.tapestry5.Renderable}
- * interface to the underlying renderable object.
- */
-public class RenderableAsBlock implements Block, RenderCommand
-{
-    private final Renderable renderable;
-
-    public RenderableAsBlock(Renderable renderable)
-    {
-        this.renderable = renderable;
-    }
-
-    /**
-     * Invokes {@link Renderable#render(org.apache.tapestry5.MarkupWriter)}.
-     */
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        renderable.render(writer);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Block[%s]", renderable);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/SelectModelRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/SelectModelRenderer.java
deleted file mode 100644
index 4f7c5dd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/SelectModelRenderer.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.*;
-
-import java.util.Map;
-
-public class SelectModelRenderer implements SelectModelVisitor
-{
-    private final MarkupWriter writer;
-
-    private final ValueEncoder encoder;
-
-    public SelectModelRenderer(final MarkupWriter writer, ValueEncoder encoder)
-    {
-        this.writer = writer;
-        this.encoder = encoder;
-    }
-
-    public void beginOptionGroup(OptionGroupModel groupModel)
-    {
-        writer.element("optgroup", "label", groupModel.getLabel());
-
-        writeDisabled(groupModel.isDisabled());
-        writeAttributes(groupModel.getAttributes());
-    }
-
-    public void endOptionGroup(OptionGroupModel groupModel)
-    {
-        writer.end(); // select
-    }
-
-    @SuppressWarnings("unchecked")
-    public void option(OptionModel optionModel)
-    {
-        Object optionValue = optionModel.getValue();
-
-        String clientValue = encoder.toClient(optionValue);
-
-        writer.element("option", "value", clientValue);
-
-        if (isOptionSelected(optionModel, clientValue)) writer.attributes("selected", "selected");
-
-        writeDisabled(optionModel.isDisabled());
-        writeAttributes(optionModel.getAttributes());
-
-        writer.write(optionModel.getLabel());
-
-        writer.end();
-    }
-
-    private void writeDisabled(boolean disabled)
-    {
-        if (disabled) writer.attributes("disabled", "disabled");
-    }
-
-    private void writeAttributes(Map<String, String> attributes)
-    {
-        if (attributes == null) return;
-
-        for (Map.Entry<String, String> e : attributes.entrySet())
-            writer.attributes(e.getKey(), e.getValue());
-    }
-
-    /**
-     * If true, then the selected attribute will be written. This implementation always returns false.
-     */
-    protected boolean isOptionSelected(OptionModel optionModel, String clientValue)
-    {
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/StringParameterBuilder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/StringParameterBuilder.java
deleted file mode 100644
index 69554b9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/StringParameterBuilder.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.services.ClassTransformation;
-
-import static java.lang.String.format;
-
-/**
- * Implementation of {@link org.apache.tapestry5.internal.util.ParameterBuilder} that simply provides a static string
- * value for the parameter expression.
- */
-public final class StringParameterBuilder implements ParameterBuilder
-{
-    private final String expression;
-
-    public StringParameterBuilder(String expression)
-    {
-        this.expression = expression;
-    }
-
-    public String buildParameter(ClassTransformation transformation)
-    {
-        return expression;
-    }
-
-    @Override
-    public String toString()
-    {
-        return format("StringParameterBuilder[%s]", expression);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/StringRenderable.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/StringRenderable.java
deleted file mode 100644
index 87a9e7c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/StringRenderable.java
+++ /dev/null
@@ -1,42 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-
-/**
- * Renders a string using {@link MarkupWriter#write(String)}.
- */
-public class StringRenderable implements Renderable
-{
-    private final String text;
-
-    public StringRenderable(String text)
-    {
-        this.text = text;
-    }
-
-    public void render(MarkupWriter writer)
-    {
-        writer.write(text);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Renderable[%s]", text);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/UtilMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/UtilMessages.java
deleted file mode 100644
index c3c88df..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/UtilMessages.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-class UtilMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(UtilMessages.class);
-
-    private UtilMessages()
-    {
-    }
-
-    static String noReturnValueAccepted(String eventType, String componentId, Object returnValue)
-    {
-        return MESSAGES.format("no-return-value-accepted", eventType, componentId, String
-                .valueOf(returnValue));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/ValidationDecoratorWrapper.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/ValidationDecoratorWrapper.java
deleted file mode 100644
index d0ee202..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/util/ValidationDecoratorWrapper.java
+++ /dev/null
@@ -1,63 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.dom.Element;
-
-/**
- * Implementation of {@link org.apache.tapestry5.ValidationDecorator} that delegates all method invocations. Subclasses
- * may override any of the methods.
- */
-public class ValidationDecoratorWrapper implements ValidationDecorator
-{
-    private final ValidationDecorator delegate;
-
-    public ValidationDecoratorWrapper(ValidationDecorator delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    public void beforeLabel(Field field)
-    {
-        delegate.beforeLabel(field);
-    }
-
-    public void insideLabel(Field field, Element labelElement)
-    {
-        delegate.insideLabel(field, labelElement);
-    }
-
-    public void afterLabel(Field field)
-    {
-        delegate.afterLabel(field);
-    }
-
-    public void beforeField(Field field)
-    {
-        delegate.beforeField(field);
-    }
-
-    public void insideField(Field field)
-    {
-        delegate.insideField(field);
-    }
-
-    public void afterField(Field field)
-    {
-        delegate.afterField(field);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/validator/ValidatorMacroImpl.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/validator/ValidatorMacroImpl.java
deleted file mode 100644
index a08a1ab..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/internal/validator/ValidatorMacroImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.validator;
-
-import java.util.Map;
-
-import org.apache.tapestry5.validator.ValidatorMacro;
-
-public class ValidatorMacroImpl implements ValidatorMacro
-{
-    private final Map<String, String> configuration;
-
-    public ValidatorMacroImpl(Map<String, String> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public String valueForMacro(String validatorMacro)
-    {
-        return configuration.get(validatorMacro);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
deleted file mode 100644
index ec72f91..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/ComponentModel.java
+++ /dev/null
@@ -1,185 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.model;
-
-import org.apache.tapestry5.annotations.MixinAfter;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.ioc.Resource;
-import org.slf4j.Logger;
-
-import java.util.List;
-import java.util.Set;
-
-/**
- * Defines a component in terms of its capabilities, parameters, sub-components, etc. During <em>runtime</em>, the
- * component model is immutable. During <em>construction</em> time, when the class is being transformed and loaded, the
- * model is mutable.
- *
- * @see org.apache.tapestry5.model.MutableComponentModel
- */
-public interface ComponentModel
-{
-    /**
-     * Returns the resource corresponding to the class file for this component. This is used to find related resources,
-     * such as the component's template and message catalog.
-     */
-    Resource getBaseResource();
-
-    /**
-     * The fully qualified class name of the component.
-     */
-    String getComponentClassName();
-
-    /**
-     * Returns the ids of all embedded components defined within the component class (via the {@link
-     * org.apache.tapestry5.annotations.Component} annotation), including those defined by any super-class.
-     */
-    List<String> getEmbeddedComponentIds();
-
-    /**
-     * Returns an embedded component defined by this component or by a super-class.
-     *
-     * @param componentId the id of the embedded component
-     * @return the embedded component model, or null if no component exists with that id
-     */
-    EmbeddedComponentModel getEmbeddedComponentModel(String componentId);
-
-    /**
-     * Returns the persistent strategy associated with the field.
-     *
-     * @param fieldName
-     * @return the corresponding strategy, or the empty string
-     * @throws IllegalArgumentException if the named field is not marked as persistent
-     */
-    String getFieldPersistenceStrategy(String fieldName);
-
-    /**
-     * Returns object that will be used to log warnings and errors related to this component.
-     *
-     * @see org.apache.tapestry5.annotations.Log
-     */
-    Logger getLogger();
-
-    /**
-     * Returns a list of the class names of mixins that are part of the component's implementation.
-     */
-    List<String> getMixinClassNames();
-
-    /**
-     * Return a single parameter model by parameter name, or null if the parameter is not defined (is not 
-     * a formal parameter).
-     *
-     * @param parameterName the name of the parameter (case is ignored)
-     */
-    ParameterModel getParameterModel(String parameterName);
-
-    /**
-     * Returns true if the named parameter is formally defined (there's a ParameterModel).
-     * @param parameterName name of the parameter (case is ignored)
-     * @since 5.2.0
-     */
-    boolean isFormalParameter(String parameterName);
-    
-    /**
-     * Returns an alphabetically sorted list of the names of all formal parameters. This includes parameters defined by
-     * a base class.
-     */
-
-    List<String> getParameterNames();
-
-    /**
-     * Returns an alphabetically sorted list of the names of all formal parameters defined by this specific class
-     * (parameters inherited from base classes are not identified).
-     */
-    List<String> getDeclaredParameterNames();
-
-    /**
-     * Returns a list of the names of all persistent fields (within this class, or any super-class). The names are
-     * sorted alphabetically.
-     *
-     * @see Persist
-     */
-    List<String> getPersistentFieldNames();
-
-    /**
-     * Returns true if the modeled component is a root class, a component class whose parent class is not a component
-     * class.  We may in the future require that components only extend from Object.
-     *
-     * @return true if a root class, false if a subclass
-     */
-    boolean isRootClass();
-
-    /**
-     * Returns true if the model indicates that informal parameters, additional parameters beyond the formal parameter
-     * defined for the component, are supported. This is false in most cases, but may be set to true for specific
-     * classes (when the {@link SupportsInformalParameters} annotation is present, or inherited from a super-class).
-     *
-     * @return true if this component model supports informal parameters
-     */
-    boolean getSupportsInformalParameters();
-
-    /**
-     * Returns the component model for this component's super-class, if it exists. Remember that only classes in the
-     * correct packages, are considered component classes.
-     *
-     * @return the parent class model, or null if this component's super class is not itself a component class
-     */
-    ComponentModel getParentModel();
-
-    /**
-     * Relevant for component mixins only. Indicates that the mixin behavior should occur <em>after</em> (not before)
-     * the component. Normally, this flag is set by the presence of the {@link MixinAfter} annotation.
-     *
-     * @return true if the mixin should operate after, not before, the component
-     */
-    boolean isMixinAfter();
-
-    /**
-     * Gets a meta value identified by the given key. If the current model does not provide a value for the key, then
-     * the parent component model (if any) is searched.
-     *
-     * @param key identifies the value to be accessed
-     * @return the value for the key (possibly inherited from a parent model), or null
-     */
-    String getMeta(String key);
-
-    /**
-     * Returns a set of all the render phases that this model (including parent models) that are handled. Render phases
-     * are represented by the corresponding annotation ({@link org.apache.tapestry5.annotations.BeginRender}, {@link
-     * org.apache.tapestry5.annotations.AfterRender}, etc.).
-     *
-     * @return set of classes
-     * @since 5.0.19, 5.1.0.0
-     */
-    Set<Class> getHandledRenderPhases();
-
-    /**
-     * Determines if the component has an event handler for the indicated event name (case insensitive). This includes
-     * handles in the component class itself, or its super-classes, but does not include event handles supplied by
-     * implementation or instance mixins.
-     *
-     * @param eventType name of event to check (case insensitive)
-     * @return true if event handler present
-     */
-    boolean handlesEvent(String eventType);
-
-    /**
-     * @param mixinClassName class name of the mixin for which the ordering is desired
-     * @return the ordering constraint(s) for the mixin, potentially null.
-     * @since 5.2.0
-     */
-    String[] getOrderForMixin(String mixinClassName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java
deleted file mode 100644
index f359aff..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/EmbeddedComponentModel.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.model;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.ioc.Locatable;
-
-import java.util.List;
-
-/**
- * The model for a component embedded within another component, as defined by the {@link
- * org.apache.tapestry5.annotations.Component} annotation.
- */
-public interface EmbeddedComponentModel extends Locatable
-{
-    /**
-     * A unique id for the embedded component.
-     */
-    String getId();
-
-    /**
-     * The type of the component, which may be blank.
-     */
-    String getComponentType();
-
-    /**
-     * The class name of the component, as derived from the field to which the {@link Component} annotation is applied.
-     * This value is only used when the componentType property is blank.
-     */
-    String getComponentClassName();
-
-    /**
-     * A sorted list of the names of all bound parameters.
-     */
-    List<String> getParameterNames();
-
-    /**
-     * The value for each parameter, which will be interpreted as a binding expression.
-     */
-    String getParameterValue(String parameterName);
-
-    /**
-     * Returns the fully qualified class names of all mixins added to this component, sorted alphabetically.
-     */
-    List<String> getMixinClassNames();
-
-    /**
-     * If true, then the component should inherit informal parameters from its container.
-     */
-    boolean getInheritInformalParameters();
-
-    /**
-     * Returns the list of published parameters of this component (usually an empty list).
-     *
-     * @return list of parameter names to publish
-     * @see org.apache.tapestry5.annotations.Component#publishParameters()
-     * @since 5.1.0.0
-     */
-    List<String> getPublishedParameters();
-
-    /**
-     * @param mixinClassName
-     * @return the ordering constraints for the specified mixin, or null.
-     * @Since 5.2.0.0
-     */
-    String[] getConstraintsForMixin(String mixinClassName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
deleted file mode 100644
index 227eec99..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableComponentModel.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.model;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Mutable version of {@link org.apache.tapestry5.model.ComponentModel} used during the transformation phase.
- */
-public interface MutableComponentModel extends ComponentModel
-{
-    /**
-     * Adds a new formal parameter to the model. Each parameter has a unique name (though access to parameters is case
-     * insensitive).
-     *
-     * @param name                 new, unique name for the parameter
-     * @param required             if true, the parameter must be bound
-     * @param allowNull            if true, then parameter may be bound to null, if false a null check will be added
-     * @param defaultBindingPrefix the default binding prefix for this parameter @throws IllegalArgumentException if a
-     *                             parameter with the given name has already been defined for this model
-     * @see Parameter
-     * @deprecated Use {@link #addParameter(String, boolean, boolean, String, boolean)} instead.
-     */
-    void addParameter(String name, boolean required, boolean allowNull, String defaultBindingPrefix);
-
-    /**
-     * Adds a new formal parameter to the model. Each parameter has a unique name (though access to parameters is case
-     * insensitive).
-     *
-     * @param name                 new, unique name for the parameter
-     * @param required             if true, the parameter must be bound
-     * @param allowNull            if true, then parameter may be bound to null, if false a null check will be added
-     * @param defaultBindingPrefix the default binding prefix for this parameter @throws IllegalArgumentException if a
-     *                             parameter with the given name has already been defined for this model
-     * @param cached               if true, the parameter value should be cached within the component during rendering
-     * @see org.apache.tapestry5.annotations.Parameter
-     * @since 5.2.0.0
-     */
-    public void addParameter(String name, boolean required, boolean allowNull, String defaultBindingPrefix,boolean cached);
-
-
-    /**
-     * Defines a new embedded component.
-     *
-     * @param id                        the unique id for the embedded component, which must not already exist.
-     * @param type                      the type of the component (posslibly blank)
-     * @param componentClassName        the fully qualified class name (derived from the field), used if the type is
-     *                                  blank
-     * @param inheritInformalParameters if true, then the component will inherit informal parameters provided to its
-     *                                  container
-     * @param location                  where the component is defined @return a mutable model allowing parameters to be
-     *                                  set
-     */
-    MutableEmbeddedComponentModel addEmbeddedComponent(String id, String type, String componentClassName,
-                                                       boolean inheritInformalParameters, Location location);
-
-    /**
-     * Used to define the field persistence strategy for a particular field name. Returns a logical name for the field,
-     * which is guaranteed to be unique (this is necessary for handling the case where a subclass has a persistent field
-     * with the same name as a persistent field from a super-class).
-     *
-     * @param fieldName the name of the field which is to be made persistent
-     * @param strategy  the strategy for persisting the field, from {@link Persist#value()}. This value may be blank, in
-     *                  which case the stategy is inherited from the component, or the component's container.
-     * @return a logical name for the field, to be used with {@link ComponentModel#getFieldPersistenceStrategy(String)},
-     *         and with {@link InternalComponentResources#persistFieldChange(String, Object)}, etc.
-     */
-    String setFieldPersistenceStrategy(String fieldName, String strategy);
-
-    /**
-     * Adds a mixin to the component's implementation, optionally specifying ordering constraints, as per OrderedConfiguration.
-     * @since 5.2.0.0
-     */
-    void addMixinClassName(String mixinClassName, String... order);
-
-    /**
-     * Sets the internal flag to indicate that this model (and all models that extend from it) support informal
-     * parameters.
-     */
-    void enableSupportsInformalParameters();
-
-    /**
-     * Changes the value of the mixinAfter flag. The default value is false.
-     */
-    void setMixinAfter(boolean mixinAfter);
-
-    /**
-     * Stores a meta data value under the indicated key.
-     */
-    void setMeta(String key, String value);
-
-    /**
-     * Identifies that the component does handle the render phase.
-     *
-     * @param renderPhase annotation class corresponding to the render phase
-     * @see ComponentModel#getHandledRenderPhases()
-     * @since 5.0.19, 5.1.0.0
-     */
-    void addRenderPhase(Class renderPhase);
-
-    /**
-     * Identifies that the component includes an event handler for the indicated event type.
-     *
-     * @param eventType of handled event
-     * @since 5.1.0.0
-     */
-    void addEventHandler(String eventType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableEmbeddedComponentModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableEmbeddedComponentModel.java
deleted file mode 100644
index b27aab1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/MutableEmbeddedComponentModel.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.model;
-
-import java.util.List;
-
-/**
- * A mutable version of {@link org.apache.tapestry5.model.EmbeddedComponentModel} that allows the parameters to be
- * incrementally stored.
- */
-public interface MutableEmbeddedComponentModel extends EmbeddedComponentModel
-{
-    void addParameter(String name, String value);
-
-    /**
-     * Adds a mixin to the component in terms of its fully qualified class name, with optional ordering constraints.
-     */
-    void addMixin(String mixinClassName, String... orderingConstraints);
-
-    /**
-     * Sets the list of published parameters for this embedded component.
-     *
-     * @param parameterNames list of names
-     * @see org.apache.tapestry5.annotations.Component#publishParameters()
-     * @since 5.1.0.0
-     */
-    void setPublishedParameters(List<String> parameterNames);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/ParameterModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/ParameterModel.java
deleted file mode 100644
index 3e462fb..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/model/ParameterModel.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.model;
-
-import org.apache.tapestry5.annotations.Parameter;
-
-/**
- * Model for a <em>formal</em> parameter of a component.
- *
- * @see Parameter
- */
-public interface ParameterModel
-{
-    /**
-     * The name of the parameter.
-     */
-    String getName();
-
-    /**
-     * If true, the parameter is required.
-     */
-    boolean isRequired();
-
-    /**
-     * If true, then no check is needed. If false, then the bound value must not be null.
-     */
-    boolean isAllowNull();
-
-    /**
-     * The default binding prefix for the parameter, usually "prop".
-     */
-    String getDefaultBindingPrefix();
-
-    /**
-     * @return true if the bound-value is cached in the component during rendering.
-     * @since 5.2.0.0
-     */
-    boolean isCached();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/Component.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/Component.java
deleted file mode 100644
index 9b9127e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/Component.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.OnEvent;
-
-/**
- * Interface that defines the lifecycle of a component, within a page, allowing for callbacks into the component for
- * many different events. This interface is part of the public API for Tapestry, but is <em>not</em> expected to be
- * directly implemented by component classes; it should only be implemented as part of the component class
- * transformation process.
- * <p/>
- * Most of the methods are related to render phases; see the corresponding annotations and component rendering
- * documentation to see how they relate to each other.
- */
-public interface Component extends ComponentResourcesAware, PageLifecycleListener
-{
-
-    /**
-     * Lifecycle method invoked at the end of the {@link org.apache.tapestry5.annotations.CleanupRender} render phase.
-     * There is no annotation for this method, it is part of CleanupRender, but is always invoked. Its specific use is
-     * to allow components to clean up cached parameter values.
-     */
-    void postRenderCleanup();
-
-    /**
-     * Invoked before rendering a component (or its template).
-     */
-    void setupRender(MarkupWriter writer, Event event);
-
-    /**
-     * Invoked to allow a component to render its tag (start tag and attributes).
-     */
-    void beginRender(MarkupWriter writer, Event event);
-
-    /**
-     * This phase is only invoked for components with templates.
-     */
-    void beforeRenderTemplate(MarkupWriter writer, Event event);
-
-    /**
-     * Invoked after rendering the template for a component (only for components with a template).
-     */
-    void afterRenderTemplate(MarkupWriter writer, Event event);
-
-    /**
-     * Invoked just before rendering the body of component.
-     */
-    void beforeRenderBody(MarkupWriter writer, Event event);
-
-    /**
-     * Invoked just after rendering the body of the component.
-     */
-    void afterRenderBody(MarkupWriter writer, Event event);
-
-    /**
-     * Generally used to write the close tag matching any open tag written by {@link
-     * #beginRender(org.apache.tapestry5.MarkupWriter, Event)}.
-     */
-    void afterRender(MarkupWriter writer, Event event);
-
-    /**
-     * Generally used to perform final cleanup of the component after rendering.
-     */
-    void cleanupRender(MarkupWriter writer, Event event);
-
-    /**
-     * Invoked to handle a component event. Methods with the {@link OnEvent} annotation (or the matching naming
-     * convention) will be invoked until one returns a non-null value.
-     *
-     * @param event
-     * @return true if any handler was found (and invoked), false otherwise
-     * @throws RuntimeException wrapping any checked exceptions that are thrown by individual event handler methods
-     */
-    boolean dispatchComponentEvent(ComponentEvent event);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEvent.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEvent.java
deleted file mode 100644
index 050f1cd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEvent.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-import org.apache.tapestry5.ComponentResourcesCommon;
-import org.apache.tapestry5.EventContext;
-
-/**
- * An event that may originate in application logic, or as a result of a client interaction (a GET or POST from the
- * client).
- * 
- * @see ComponentResourcesCommon#triggerEvent(String, Object[], org.apache.tapestry5.ComponentEventCallback)
- * @see org.apache.tapestry5.ComponentEventCallback
- */
-public interface ComponentEvent extends Event
-{
-    /**
-     * Returns true if the event matches the provided criteria and the event has not yet been aborted.
-     * 
-     * @param eventType
-     *            the type of event (case insensitive match)
-     * @param componentId
-     *            component is to match against (case insensitive), or the empty string
-     * @param parameterCount
-     *            minimum number of context values
-     * @return true if the event matches (and has not yet been aborted)
-     */
-    boolean matches(String eventType, String componentId, int parameterCount);
-
-    /**
-     * Coerces a context value to a particular type. The context is an array of objects; typically it is an array of
-     * strings of extra path information encoded into the action URL.
-     * 
-     * @param index
-     *            the index of the context value
-     * @param desiredTypeName
-     *            the desired type
-     * @return the coerced value (a wrapper type if the desired type is a primitive)
-     */
-    Object coerceContext(int index, String desiredTypeName);
-
-    /**
-     * Returns the underlying {@link org.apache.tapestry5.EventContext} as a (possibly empty) array.
-     */
-    Object[] getContext();
-
-    /**
-     * Returns the underlying event context.
-     */
-    EventContext getEventContext();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java
deleted file mode 100644
index 913ce75..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentEventException.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-/**
- * A wrapper exception around any exception thrown when invoking a component event handler. In some cases, the
- * underlying exception may have been a declared exception, and will be wrapped in a RuntimeException.
- *
- * @see org.apache.tapestry5.ioc.util.ExceptionUtils#findCause(Throwable, Class)
- */
-public class ComponentEventException extends TapestryException
-{
-    private final String eventType;
-
-    private final EventContext context;
-
-    /**
-     * @param message   exception message
-     * @param eventType type of event that triggered the exception
-     * @param context   context passed with the failed event
-     * @param location  location of the component while failed (may be null)
-     * @param cause     underlying exception
-     */
-    public ComponentEventException(String message, String eventType, EventContext context, Object location,
-                                   Throwable cause)
-    {
-        super(message, location, cause);
-
-        this.eventType = eventType;
-        this.context = context;
-    }
-
-    public String getEventType()
-    {
-        return eventType;
-    }
-
-    public EventContext getContext()
-    {
-        return context;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentResourcesAware.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentResourcesAware.java
deleted file mode 100644
index fde269e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/ComponentResourcesAware.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-import org.apache.tapestry5.ComponentResources;
-
-/**
- * Interface implemented by components (after they have been transformed at load time). Component classes should not
- * implement this interface directly.
- */
-public interface ComponentResourcesAware
-{
-    /**
-     * Returns the resources associated with this component class.
-     */
-    ComponentResources getComponentResources();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/Event.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/Event.java
deleted file mode 100644
index 3c32924..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/Event.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-/**
- * The core methods related to event handling. Events used in this way exist to gather data from user code, by invoking
- * user methods and capturing the response. Return values from methods, if non-null, are passed to a {@link
- * org.apache.tapestry5.ComponentEventCallback}. The {@link ComponentEvent} subinterface extends this by providing
- * access to a context, or set of information related to the event, along with additional data used, at runtime, to
- * match events to user code methods.
- */
-public interface Event
-{
-    /**
-     * Returns true if the event has been aborted (meaning that the return value from some event handler method was
-     * accepted, and processing of the event was terminated).
-     *
-     * @return true if no further event handler methods should be invoked
-     */
-    boolean isAborted();
-
-    /**
-     * Invoke to identify, to the event, what component and method is being acted upon (used for some kinds of exception
-     * reporting).
-     *
-     * @param methodDescription describes the location (i.e. file name, method name and line number) of the method
-     */
-    void setMethodDescription(String methodDescription);
-
-    /**
-     * Stores a result for the event. Storing a non-null result value may abort the event (at the discretion of the
-     * {@link org.apache.tapestry5.ComponentEventCallback}).
-     *
-     * @param result the result obtained from a method invocations
-     * @return true if the event is now aborted
-     */
-    boolean storeResult(Object result);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/PageLifecycleAdapter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/PageLifecycleAdapter.java
deleted file mode 100644
index 8efe922..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/PageLifecycleAdapter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-/**
- * Empty implementation of the {@link PageLifecycleListener} interface.
- */
-public class PageLifecycleAdapter implements PageLifecycleListener
-{
-    public void containingPageDidAttach()
-    {
-    }
-
-    public void containingPageDidDetach()
-    {
-    }
-
-    public void containingPageDidLoad()
-    {
-    }
-
-    public void restoreStateBeforePageAttach()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/PageLifecycleListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/PageLifecycleListener.java
deleted file mode 100644
index 68fa5a3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/PageLifecycleListener.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-/**
- * A set of methods that allow components to know about page-level operations.
- */
-public interface PageLifecycleListener
-{
-    /**
-     * Invoked when the page finishes loading. This occurs once all components are loaded and all parameters have been
-     * set.
-     */
-    void containingPageDidLoad();
-
-    /**
-     * Invoked when the page is detached, allowing components a chance to clear out any temporary or client specific
-     * state.
-     */
-    void containingPageDidDetach();
-
-    /**
-     * Invoked when a page is first attached to the current request, giving components a chance to initialize for the
-     * current request.
-     */
-    void containingPageDidAttach();
-
-    /**
-     * A kind of "pre-attach" phase allowing components to restore internal state before handling the actual attach;
-     * this is primarily used to restore persisted fields.
-     *
-     * @since 5.1.0.1
-     */
-    void restoreStateBeforePageAttach();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/RenderCommand.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/RenderCommand.java
deleted file mode 100644
index ee438d0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/RenderCommand.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-import org.apache.tapestry5.MarkupWriter;
-
-/**
- * A command used during rendering of a page.
- */
-public interface RenderCommand
-{
-    /**
-     * Invoked on an object to request that it render itself. This involves a mix of invoking methods on the writer, and
-     * queueing up additional commands (often, representing children of the object that was invoked) to perform
-     * additional rendering.
-     * <p/>
-     * In this way, rendering is a tail recursive algorithm, but is not implemented using tail recursion.
-     */
-    void render(MarkupWriter writer, RenderQueue queue);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/RenderQueue.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/RenderQueue.java
deleted file mode 100644
index 15256bc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/RenderQueue.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.runtime;
-
-import org.apache.tapestry5.ComponentResources;
-
-/**
- * A stateful object that manages the process of rendering a page. Rending a page in Tapestry is based on a command
- * queue.
- */
-public interface RenderQueue
-{
-    /**
-     * Adds the new command to the front of the queue.
-     */
-    void push(RenderCommand command);
-
-    /**
-     * Indicates that a component is starting its render. A stack of active components is used for exception reporting.
-     *
-     * @param resources identifies the component that is rendering
-     */
-    void startComponent(ComponentResources resources);
-
-    /**
-     * Corresponds to {@link #startComponent(String)}, used to denote when the most recently started component finishes
-     * rendering.
-     */
-    void endComponent();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/package.html b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/package.html
deleted file mode 100644
index 06a7d84..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/runtime/package.html
+++ /dev/null
@@ -1,5 +0,0 @@
-<html>
-<body>Contains interfaces that are added to component classes at <em>runtime</em>. These
-interfaces are added using Tapestry built-in AOP support.
-</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Ajax.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Ajax.java
deleted file mode 100644
index 7aa6140..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Ajax.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.*;
-
-
-/**
- * Marker annotation for services related to processing an Ajax request (rather than a {@linkplain
- * org.apache.tapestry5.services.Traditional traditional request}).
- *
- * @see ComponentEventRequestHandler
- */
-@Target({ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface Ajax
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Alias.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Alias.java
deleted file mode 100644
index 602e155..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Alias.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-import org.apache.tapestry5.ioc.services.ServiceOverride;
-
-/**
- * The Alias service provides an ObjectProvider that fits into the MasterObjectProvider command chain and disambiguates
- * injections based on type. {@linkplain org.apache.tapestry5.services.AliasContribution Contibutions} to the Alias
- * service identify the desired service to inject for a particular service interface; this is only necessary when there
- * is more than one service implementing the same interface.
- * <p/>
- * The {@linkplain AliasManager} service also takes an unordered configuration of
- * {@link org.apache.tapestry5.services.AliasContribution}; such contributions override the "factory" contributions to
- * the Alias service itself. This is often used to replace built-in service implementations with ones that are specific
- * to a particular application.
- * 
- * @deprecated Use {@link ServiceOverride} instead
- */
-@UsesConfiguration(AliasContribution.class)
-public interface Alias
-{
-    /**
-     * Returns an object provider that checks the desired type against the service's contributions.
-     */
-    ObjectProvider getObjectProvider();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AliasContribution.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AliasContribution.java
deleted file mode 100644
index 0bfed05..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AliasContribution.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.Formatter;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ServiceOverride;
-
-/**
- * A contribution into the {@link Alias} or AliasOverride service configuration.
- * 
- * @deprecated Use {@link ServiceOverride} instead
- */
-public final class AliasContribution<T>
-{
-    private final Class<T> contributionType;
-
-    private final String mode;
-
-    private final T object;
-
-    /**
-     * Simplifies the creation of an AliasContribution around a known type and instance of that type.
-     */
-    public static <X> AliasContribution<X> create(Class<X> contributionType, X object)
-    {
-        return new AliasContribution<X>(contributionType, object);
-    }
-
-    /**
-     * Simplifies the creation of an AliasContribution around a known type, mode, and an instance of that type.
-     */
-    public static <X> AliasContribution<X> create(Class<X> contributionType, String mode, X object)
-    {
-        return new AliasContribution<X>(contributionType, mode, object);
-    }
-
-    /**
-     * Conntributes the object with a blank mode.
-     */
-    public AliasContribution(Class<T> contributionType, T object)
-    {
-        this(contributionType, "", object);
-    }
-
-    public AliasContribution(Class<T> contributionType, String mode, T object)
-    {
-        assert contributionType != null;
-        this.contributionType = contributionType;
-        assert mode != null;
-        this.mode = mode;
-        assert object != null;
-        this.object = object;
-    }
-
-    /**
-     * Returns the mode of operation for this instance of Tapestry. Most of the time, this will be the empty string,
-     * meaning that the contribution applies to Tapestry is any mode. In other cases, the mode will be "servlet" but may
-     * be other modes via add on modules, such as "portlet" or "offline".
-     */
-    public String getMode()
-    {
-        return mode;
-    }
-
-    public Class<T> getContributionType()
-    {
-        return contributionType;
-    }
-
-    /**
-     * The contributed object, which will be made available.
-     */
-    public T getObject()
-    {
-        return object;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder();
-        Formatter formatter = new Formatter(builder);
-
-        formatter.format("<AliasContribution: %s", contributionType.getName());
-
-        if (InternalUtils.isNonBlank(mode))
-            formatter.format(" mode:%s", mode);
-
-        formatter.format(" %s>", object);
-
-        return builder.toString();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AliasManager.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AliasManager.java
deleted file mode 100644
index 6845b42..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AliasManager.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-import org.apache.tapestry5.ioc.services.ServiceOverride;
-
-import java.util.Map;
-
-/**
- * A thin wrapper around a set of {@link org.apache.tapestry5.services.AliasContribution}s. An
- * {@link org.apache.tapestry5.ioc.ObjectProvider} is contributed to the
- * {@link org.apache.tapestry5.ioc.services.MasterObjectProvider} service, to allow contributed objects to replace other
- * objects (typically, built in services).
- * 
- * @deprecated Use {@link ServiceOverride} instead
- */
-@UsesConfiguration(AliasContribution.class)
-public interface AliasManager
-{
-    /**
-     * Filters down the contributions based on the mode. Each {@link AliasContribution contribution} will identify a
-     * contribution type and a non-null object that implements the type and may identify a mode. Only contributions
-     * where the mode is blank or the mode matches the provided mode are returned. Mode specific contributions quietly
-     * override non-specific contributions (where the mode is blank).
-     * 
-     * @param mode
-     * @return map from contribution type to contribution object
-     */
-    Map<Class, Object> getAliasesForMode(String mode);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationGlobals.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationGlobals.java
deleted file mode 100644
index 747222e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationGlobals.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.services.Context;
-
-import javax.servlet.ServletContext;
-
-/**
- * Stores global information about the application and its environment.
- */
-public interface ApplicationGlobals
-{
-    void storeServletContext(ServletContext context);
-
-    ServletContext getServletContext();
-
-    void storeContext(Context context);
-
-    Context getContext();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationInitializer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationInitializer.java
deleted file mode 100644
index 4674192..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationInitializer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-/**
- * Service interface for initializing Tapestry for the application.  The service is a {@linkplain
- * org.apache.tapestry5.ioc.services.PipelineBuilder pipeline}, into which {@linkplain
- * org.apache.tapestry5.services.ApplicationInitializerFilter filters} may be contributed.
- */
-@UsesOrderedConfiguration(ApplicationInitializerFilter.class)
-public interface ApplicationInitializer
-{
-    void initializeApplication(Context context);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationInitializerFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationInitializerFilter.java
deleted file mode 100644
index e9e2980..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationInitializerFilter.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.services.Context;
-
-/**
- * Filter interface for {@link ApplicationInitializer}.
- */
-public interface ApplicationInitializerFilter
-{
-    void initializeApplication(Context context, ApplicationInitializer initializer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateContribution.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateContribution.java
deleted file mode 100644
index cdf7e22..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateContribution.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A contribution to the configuration of the {@link ApplicationStateManager}, identifying the strategy and creator for
- * a particular Session State Object (SSO), identified by the SSO's class.
- */
-@SuppressWarnings("all")
-public final class ApplicationStateContribution
-{
-    private final String strategy;
-
-    private final ApplicationStateCreator creator;
-
-    public ApplicationStateContribution(String strategy)
-    {
-        this(strategy, null);
-    }
-
-    public ApplicationStateContribution(String strategy, ApplicationStateCreator creator)
-    {
-        assert InternalUtils.isNonBlank(strategy);
-        this.strategy = strategy;
-        this.creator = creator;
-    }
-
-    /**
-     * The creator for the ASO. If null, the the ASO is created directly from the ASO class, via its public no-arguments
-     * constructor.
-     */
-    public ApplicationStateCreator getCreator()
-    {
-        return creator;
-    }
-
-    /**
-     * The name of the strategy used to control where the ASO is stored.
-     */
-    public String getStrategy()
-    {
-        return strategy;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateCreator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateCreator.java
deleted file mode 100644
index 7e4d2de..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateCreator.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Used by {@link ApplicationStateManager} and {@link ApplicationStatePersistenceStrategy} to create an application
- * state object on demand.
- *
- * @param <T>
- */
-public interface ApplicationStateCreator<T>
-{
-    /**
-     * Create a new instance of an application state object.
-     */
-    T create();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java
deleted file mode 100644
index 0fdc694..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStateManager.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Responsible for managing <em>session state objects</em>, objects which persist between requests, but are not tied to
- * any individual page or component. SSOs are also created on demand. SSOs are typically stored in the session, so that
- * they are specific to a particular client.
- * <p/>
- * The term "Application" is a hold-over from Tapestry 5.0, which used the {@link ApplicationState} annotation, and
- * called them "ASOs" (Application State Objects). This service would be better named "SessionStateManager" (but
- * renaming it would cause backwards compatibility issues).
- * <p/>
- * Tapestry has a built-in default strategy for storing SSOs (in the session) and instantiating them. If desired,
- * contributions to the service configuration can override the default behavior, either specifying an alternate storage
- * strategy, or an alternate {@linkplain org.apache.tapestry5.services.ApplicationStateCreator creation strategy}.
- * 
- * @see org.apache.tapestry5.annotations.ApplicationState
- */
-@UsesMappedConfiguration(key = Class.class, value = ApplicationStateContribution.class)
-public interface ApplicationStateManager
-{
-    /**
-     * For a given class, find the SSO for the class, creating it if necessary. The manager has a configuration that
-     * determines how an instance is stored and created as needed. The default (when there is no configuration for
-     * a SSO type) is to instantiate the object with injected dependencies, via {@link ObjectLocator#autobuild(Class)}.
-     * This
-     * allows an SSO to keep references to Tapestry IoC services or other objects that can be injected.
-     * 
-     * @param <T>
-     * @param ssoClass
-     *            identifies the SSO to access or create
-     * @return the SSO instance
-     */
-    <T> T get(Class<T> ssoClass);
-
-    /**
-     * For a given class, find the SSO for the class. The manager has a configuration that determines how an instance is
-     * stored.
-     * 
-     * @param <T>
-     * @param ssoClass
-     *            identifies the SSO to access or create
-     * @return the SSO instance or null if it does not already exist
-     */
-    <T> T getIfExists(Class<T> ssoClass);
-
-    /**
-     * Returns true if the SSO already exists, false if it has not yet been created.
-     * 
-     * @param ssoClass
-     *            used to select the SSO
-     * @return true if SSO exists, false if null
-     */
-    <T> boolean exists(Class<T> ssoClass);
-
-    /**
-     * Stores a new SSO, replacing the existing SSO (if any). Storing the value null will delete the SSO so that it may
-     * be re-created later.
-     * 
-     * @param <T>
-     * @param ssoClass
-     *            the type of SSO
-     * @param SSO
-     *            the SSO instance
-     */
-    <T> void set(Class<T> ssoClass, T SSO);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStatePersistenceStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStatePersistenceStrategy.java
deleted file mode 100644
index d6eefb6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStatePersistenceStrategy.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Used by {@link ApplicationStateManager} to manage a specific kind of Session State Object (SSO) persistence. The
- * stategy is responsible for managing SSO instances within its domain.
- *
- * @see org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource
- */
-public interface ApplicationStatePersistenceStrategy
-{
-    /**
-     * Gets the SSO from the domain. If the ASO does not already exist, it is created and stored, then returned.
-     */
-    <T> T get(Class<T> ssoClass, ApplicationStateCreator<T> creator);
-
-    /**
-     * Stores a new SSO, possibly replacing the existing one.
-     *
-     * @param <T>
-     * @param ssoClass
-     * @param sso      instance to store, or null to delete existing
-     */
-    <T> void set(Class<T> ssoClass, T sso);
-
-    /**
-     * Returns true if the SSO already exists, false if null.
-     */
-    <T> boolean exists(Class<T> ssoClass);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStatePersistenceStrategySource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStatePersistenceStrategySource.java
deleted file mode 100644
index ad93fb7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ApplicationStatePersistenceStrategySource.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Used to provide access to {@link org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource} instances
- * via a logical name for the stategy, such as "session".
- */
-@UsesMappedConfiguration(ApplicationStatePersistenceStrategy.class)
-public interface ApplicationStatePersistenceStrategySource
-{
-    /**
-     * Returns the named strategy.
-     *
-     * @param name of strategy to access
-     * @return the strategy
-     * @throws RuntimeException if the name does not match a configured strategy
-     */
-    ApplicationStatePersistenceStrategy get(String name);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java
deleted file mode 100644
index 66fd272..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * Used by {@link AssetSource} to create new {@link Asset}s as needed.
- *
- * @see org.apache.tapestry5.services.AssetSource
- */
-public interface AssetFactory
-{
-    /**
-     * Returns the Resource representing the root folder of the domain this factory is responsible for.
-     */
-    Resource getRootResource();
-
-    /**
-     * Creates an instance of an asset. Starting with 5.1.0.0, it is preferred (but not required) that the factory
-     * return an instance of {@link org.apache.tapestry5.Asset2}.
-     *
-     * @param resource a resource within this factories domain (derived from the {@linkplain #getRootResource() root
-     *                 resource})
-     * @return an Asset for the resource
-     */
-    Asset createAsset(Resource resource);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetPathConverter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetPathConverter.java
deleted file mode 100644
index ac12cb8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetPathConverter.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Converts the {@linkplain org.apache.tapestry5.Asset#toClientURL() path (or URI) of an asset} into a new format. This
- * is the <em>hook</em> needed to make use of a <a href="http://en.wikipedia.org/wiki/Content_Delivery_Network">Content
- * Delivery Network</a>.
- * <p/>
- * The default implementation of this is <em>identity</em>, the URI is passed through unchanged. Using a contribution to
- * the {@link org.apache.tapestry5.ioc.services.ServiceOverride} service, you may override the default implementation.
- *
- * @since 5.1.0.0
- */
-public interface AssetPathConverter
-{
-    /**
-     * Returns true if the converter returns that same converted path for any specific asset path (in which case, the
-     * converted asset path may be cached in component instance variables more aggresively). This value should be false
-     * if the converted path can vary for the same input path ... that is, if external factors (such as the identity of
-     * the user, or information obtained from the request) is involved in generating the final client URI.
-     *
-     * @return true if invariant (and therefore cachable)
-     */
-    boolean isInvariant();
-
-    /**
-     * Converts the default asset client URI to its final form, ready to be sent to the client. The default asset path
-     * is an absolute path (it starts with a leading slash) and incorporates the context path if any.
-     *
-     * @param assetPath default asset path
-     * @return a URI that can be sent to the client
-     */
-    String convertAssetPath(String assetPath);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java
deleted file mode 100644
index a072cd3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/AssetSource.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-
-import java.util.Locale;
-
-/**
- * Used to find or create an {@link org.apache.tapestry5.Asset} with a given path.
- * <p/>
- * Assets are defined with a domain, and the domain is indicated by a prefix. The two builtin domains are "context:"
- * (for files inside the web application context) and "classpath:" for files stored on the classpath (typically, inside
- * a JAR, such as a component library). Other domains can be defined via contributions to the AssetSource service.
- * <p/>
- * Since 5.1.0.0, is is preferred that
- * {@link org.apache.tapestry5.services.AssetFactory#createAsset(org.apache.tapestry5.ioc.Resource)} return an instance
- * of {@link org.apache.tapestry5.Asset2}.
- */
-@UsesMappedConfiguration(AssetFactory.class)
-public interface AssetSource
-{
-    /**
-     * Finds the asset. The path may either be a simple file name or a relative path (relative to the base resource)
-     * <em>or</em> it may have a prefix, such as "context:" or "classpath:", in which case it is treated as a complete
-     * path within the indicated domain. The resulting Resource is then localized (to the provided Locale) and returned
-     * as an Asset.
-     * <p/>
-     * The AssetSource caches its results, so a single Asset instance may be shared among many different components.
-     * 
-     * @param baseResource
-     *            base resource for computing relative paths, or null to search the classpath
-     * @param path
-     *            relative to the base resource
-     * @param locale
-     *            locale to localize the final resource to, or null for the thread's current locale
-     * @return the asset
-     * @throws RuntimeException
-     *             if the asset can not be found
-     */
-    Asset getAsset(Resource baseResource, String path, Locale locale);
-
-    /**
-     * Finds the asset, either on the classpath or (if prefixed), within the indicated domain. The result is not
-     * localized. The underlying Asset may not exist.
-     * 
-     * @param path
-     *            to the resource to provide as an Asset
-     * @return Resource for the path (the Resource may not exist)
-     * @since 5.1.0.0
-     */
-    Resource resourceForPath(String path);
-
-    /**
-     * Convienience for finding assets on the classpath.
-     * 
-     * @param path
-     *            path to the base resource, relative to classpath root
-     * @param locale
-     *            to localize the resource to
-     * @return the asset
-     * @throws RuntimeException
-     *             if the asset can not be found
-     */
-    Asset getClasspathAsset(String path, Locale locale);
-
-    /**
-     * Convienience for finding assets in the context.
-     * 
-     * @param path
-     *            path relative to the base resource (the context root)
-     * @param locale
-     *            to localize the resource to, or null for the locale for the current request
-     * @return the asset
-     * @throws RuntimeException
-     *             if the asset can not be found
-     * @since 5.1.0.0
-     */
-    Asset getContextAsset(String path, Locale locale);
-
-    /**
-     * Obtains a classpath alias in the current locale (as defined by the {@link ThreadLocale} service).
-     * 
-     * @param path
-     *            relative to the classpath root
-     * @return the asset
-     * @throws RuntimeException
-     *             if the asset can not be found
-     */
-    Asset getClasspathAsset(String path);
-
-    /**
-     * Find an asset but does not attempt to localize it. If the path has no prefix, it is assumed to
-     * be on the classpath.
-     * 
-     * @since 5.2.0
-     * @throws RuntimeException
-     *             if the asset can not be found
-     */
-    Asset getUnlocalizedAsset(String path);
-
-    /**
-     * As with {@link #getUnlocalizedAsset(String)}, but {@linkplain SymbolSource#expandSymbols(String) symbols
-     * in the path are expanded}.
-     * 
-     * @since 5.2.0
-     */
-    Asset getExpandedAsset(String path);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java
deleted file mode 100644
index 30c8ea1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BaseURLSource.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2008, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.services.ServiceOverride;
-
-/**
- * Used when switching between normal/insecure (HTTP) and secure (HTTPS) mode. When a switch occurs, it is no longer
- * possible to use just paths, instead absolute URLs (including the scheme, hostname and possibly port) must be
- * generated. The default implementation of this is simple-minded: it just tacks the correct scheme in front of
- * {@link org.apache.tapestry5.services.Request#getServerName()}. In production, behind a firewall, it is often
- * necessary to do a bit more, since <code>getServerName()</code> will often be the name of the internal server (not
- * visible to the client web browser), and a hard-coded name of a server that <em>is</em> visible to the web browser
- * is needed. Further, in testing, non-default ports are often used. In those cases, an overriding contribution to the
- * {@link ServiceOverride} service will allow a custom implementation to supercede the default version.
- */
-public interface BaseURLSource
-{
-    /**
-     * Returns the base portion of the URL, before the context path and servlet path are appended. The return value
-     * should <em>not</em> end with a slash; it should end after the host name, or after the port number. The context
-     * path, servlet path, and path info will be appended to the returned value.
-     * 
-     * @param secure
-     *            whether a secure "https" or insecure "http" base URL should be returned
-     * @return the base URL ready for additional extensions
-     */
-    String getBaseURL(boolean secure);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockContribution.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockContribution.java
deleted file mode 100644
index 1257c67..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockContribution.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.corelib.components.Label;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A contribution to the {@link BeanBlockSource} service, defining a page name and block id (within the page) that can
- * edit or display a particular type of property.
- */
-public class BeanBlockContribution
-{
-    private final String dataType;
-
-    private final String pageName;
-
-    private final String blockId;
-
-    private final boolean edit;
-
-    /**
-     * @deprecated Use {@link DisplayBlockContribution#DisplayBlockContribution(String, String, String)} or
-     *             {@link EditBlockContribution#EditorBlockContribution(String, String, String)} instead. To be
-     *             removed after Tapestry 5.2.
-     */
-    public BeanBlockContribution(String dataType, String pageName, String blockId, boolean edit)
-    {
-        assert InternalUtils.isNonBlank(dataType);
-        assert InternalUtils.isNonBlank(pageName);
-        assert InternalUtils.isNonBlank(blockId);
-        this.dataType = dataType;
-        this.pageName = pageName;
-        this.blockId = blockId;
-        this.edit = edit;
-    }
-
-    /**
-     * The type of data for which the indicated block will provide an editor or displayer for.
-     */
-    public final String getDataType()
-    {
-        return dataType;
-    }
-
-    /**
-     * The id of the block within the page.
-     */
-    public final String getBlockId()
-    {
-        return blockId;
-    }
-
-    /**
-     * If true, then the block provides an editor for the property, consisting of a {@link Label} and some field
-     * component (or set of field components). If false, the block is used to display the value of the property, usually
-     * by applying some kind of formatting to the raw value.
-     */
-    public final boolean isEdit()
-    {
-        return edit;
-    }
-
-    /**
-     * The logical name of the page containing the block.
-     */
-    public final String getPageName()
-    {
-        return pageName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockOverrideSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockOverrideSource.java
deleted file mode 100644
index 887a611..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockOverrideSource.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-/**
- * Used to override the default {@link org.apache.tapestry5.services.BeanBlockSource} for a particular data type.  The
- * service accepts the same configuration of {@link org.apache.tapestry5.services.BeanBlockContribution}s as the main
- * service.
- */
-@UsesConfiguration(BeanBlockContribution.class)
-public interface BeanBlockOverrideSource
-{
-    /**
-     * Returns a block which can be used to render an editor for the given data type, in the form of a field label and
-     * input field.
-     *
-     * @param datatype logical name for the type of data to be displayed
-     * @return the Block
-     * @throws null if no override is available
-     */
-    Block getEditBlock(String datatype);
-
-    /**
-     * Returns a block which can be used to render output for the given data type.
-     *
-     * @param datatype logical name for the type of data to be displayed
-     * @return the Block
-     * @throws null if no override is available
-     */
-    Block getDisplayBlock(String datatype);
-
-    /**
-     * Checks to see if there is a display block for the indicated data type.
-     *
-     * @param datatype to check for
-     * @return true if an override display block is available
-     */
-    boolean hasDisplayBlock(String datatype);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java
deleted file mode 100644
index 9f88014..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanBlockSource.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-/**
- * A source of {@link Block}s used to display the properties of a bean (used by the {@link
- * org.apache.tapestry5.corelib.components.Grid} component), or to edit the properties of a bean (used by the {@link
- * org.apache.tapestry5.corelib.components.BeanEditForm} component). Contributions to this service (a configuration of
- * {@link BeanBlockContribution}s) define what properties may be editted.
- * <p/>
- * Blocks are accessed in terms of a <strong>data type</strong> a string that identifies the type of data to be editted,
- * such as "string", "date", "boolean", etc.
- * <p/>
- * Tapestry contributes a number of default data types and corresponding edit and display blocks. The {@link
- * org.apache.tapestry5.services.BeanBlockOverrideSource} service allows these to be overridden.
- *
- * @see org.apache.tapestry5.services.DataTypeAnalyzer
- * @see org.apache.tapestry5.services.TapestryModule#contributeBeanBlockSource(org.apache.tapestry5.ioc.Configuration)
- */
-@UsesConfiguration(BeanBlockContribution.class)
-public interface BeanBlockSource
-{
-    /**
-     * Returns a block which can be used to render an editor for the given data type, in the form of a field label and
-     * input field.
-     *
-     * @param datatype logical name for the type of data to be displayed
-     * @return the Block
-     * @throws RuntimeException if no appropriate block is available
-     */
-    Block getEditBlock(String datatype);
-
-    /**
-     * Returns a block which can be used to render output for the given data type.
-     *
-     * @param datatype logical name for the type of data to be displayed
-     * @return the Block
-     * @throws RuntimeException if no appropriate block is available
-     */
-    Block getDisplayBlock(String datatype);
-
-    /**
-     * Checks to see if there is a display block for the indicated data type.
-     *
-     * @param datatype to check for
-     * @return true if a block is available
-     */
-    boolean hasDisplayBlock(String datatype);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java
deleted file mode 100644
index 18238b6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanEditContext.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-/**
- * Defines a context for editing a bean via {@link org.apache.tapestry5.corelib.components.BeanEditor}.
- * This value is made available at render time via the {@link org.apache.tapestry5.annotations.Environmental} annotation.
- */
-public interface BeanEditContext extends AnnotationProvider
-{
-    /**
-     * @return The class of the bean under edit.
-     */
-    Class<?> getBeanClass();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanModelSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanModelSource.java
deleted file mode 100644
index 16b4fca..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BeanModelSource.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.ioc.Messages;
-
-/**
- * Used by a component to create a default {@link org.apache.tapestry5.beaneditor.BeanModel} for a particular bean
- * class. Also provides support to the model by generating validation information for individual fields.
- * <p/>
- * BeanModels are the basis for the {@link org.apache.tapestry5.corelib.components.BeanEditor} and {@link
- * org.apache.tapestry5.corelib.components.Grid} comopnents.
- *
- * @see org.apache.tapestry5.services.PropertyConduitSource
- */
-public interface BeanModelSource
-{
-    /**
-     * Creates a new model used for editing the indicated bean class. The model will represent all read/write properties
-     * of the bean. The order of properties is determined from the order of the getter methods in the code, and can be
-     * overridden with the {@link org.apache.tapestry5.beaneditor.ReorderProperties} annotation. The labels for the
-     * properties are derived from the property names, but if the component's message catalog has keys of the form
-     * <code>propertyName-label</code>, then those will be used instead.
-     * <p/>
-     * Models are <em>mutable</em>, so they are not cached, a fresh instance is created each time.
-     *
-     * @param beanClass                class of object to be edited
-     * @param filterReadOnlyProperties if true, then properties that are read-only will be skipped (leaving only
-     *                                 read-write properties, appropriate for {@link org.apache.tapestry5.corelib.components.BeanEditForm},
-     *                                 etc.). If false, then both read-only and read-write properties will be included
-     *                                 (appropriate for {@link org.apache.tapestry5.corelib.components.Grid} or {@link
-     *                                 org.apache.tapestry5.corelib.components.BeanDisplay}).
-     * @param messages                 Used to find explicit overrides of
-     * @return a model
-     * @deprecated use {@link #createDisplayModel(Class, org.apache.tapestry5.ioc.Messages)} or {@link
-     *             #createEditModel(Class, org.apache.tapestry5.ioc.Messages)}
-     */
-    <T> BeanModel<T> create(Class<T> beanClass, boolean filterReadOnlyProperties, Messages messages);
-
-    /**
-     * Creates a model for display purposes; this may include properties which are read-only.
-     *
-     * @param beanClass class of object to be edited
-     * @param messages
-     * @return a model containing properties that can be presented to the user
-     */
-    <T> BeanModel<T> createDisplayModel(Class<T> beanClass, Messages messages);
-
-    /**
-     * Creates a model for edit and update purposes, only properties that are fully read-write are included.
-     *
-     * @param beanClass class of object to be edited
-     * @param messages
-     * @return a model containing properties that can be presented to the user
-     */
-    <T> BeanModel<T> createEditModel(Class<T> beanClass, Messages messages);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java
deleted file mode 100644
index 13c27e8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingFactory.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Creates a binding of a particular type.  This is usually invoked from the {@link
- * org.apache.tapestry5.services.BindingSource} service.
- */
-public interface BindingFactory
-{
-    /**
-     * Creates a new binding instance.
-     * <p/>
-     * The binding represents a connection between the container and the component (the component is usually the child
-     * of the component, though in a few cases, it is the component itself). In most cases, the expression is evaluated
-     * in terms of the resources of the <em>container</em> and the component is ignored.
-     *
-     * @param description of the binding, such as, "parameter foo"
-     * @param container   the component, as represented by its resources, for which a binding is to be created.
-     * @param component   the component whose parameter is to be bound by the resulting binding (rarely used)
-     * @param expression
-     * @param location    from which the binding was generate, or null if not known
-     * @return the new binding instance
-     */
-    Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                       String expression, Location location);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java
deleted file mode 100644
index 2bc6fd2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/BindingSource.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Used to acquire bindings for component parameters. The BindingSource service strips off the binding prefix to locate
- * a {@link org.apache.tapestry5.services.BindingFactory}.
- */
-@UsesMappedConfiguration(BindingFactory.class)
-public interface BindingSource
-{
-    /**
-     * Examines the expression and strips off the leading prefix. The prefix is used to choose the appropriate {@link
-     * BindingFactory}, which receives the description, the expression (after the prefix), and the location. If the
-     * prefix doesn't exist, or if there's no prefix, then the factory for the default prefix (often "literal") is used
-     * (and passed the full prefix).
-     * <p/>
-     * The binding represents a connection between the container and the component (the component is usually the child
-     * of the container, though in a few cases, it is the component itself). In most cases, the expression is evaluated
-     * in terms of the resources of the <em>container</em> and the component is ignored.
-     *
-     * @param description   description of the binding, such as "parameter foo"
-     * @param container     typically, the parent of the component
-     * @param component     the component whose parameter is to be bound
-     * @param defaultPrefix the default prefix used when the expression itself does not have a prefix
-     * @param expression    the binding
-     * @param location      location assigned to the binding (or null if not known)
-     * @return a binding
-     */
-    Binding newBinding(String description, ComponentResources container, ComponentResources component,
-                       String defaultPrefix, String expression, Location location);
-
-    /**
-     * A simpler version of {@link #newBinding(String, ComponentResources, ComponentResources, String, String,
-     * Location)} that defaults the values for several parameters. This is used in most cases. The default binding
-     * prefix will be "prop". Most often, this is used to create a new default binding.
-     *
-     * @param description   description of the binding, such as "parameter foo"
-     * @param container     typically, the parent of the component. This value will be used as the container
-     *                      <em>and</em> the component, so whatever type of expression is evaluated, will be evaulated
-     *                      in terms of this component
-     * @param defaultPrefix the default prefix used when the expression itself does not have a prefix
-     * @param expression    the binding
-     * @return a binding
-     */
-    Binding newBinding(String description, ComponentResources container, String defaultPrefix, String expression);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java
deleted file mode 100644
index 2f50ea7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClassTransformation.java
+++ /dev/null
@@ -1,643 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-
-import javassist.CtBehavior;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.internal.transform.ReadOnlyFieldValueConduit;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.Event;
-import org.slf4j.Logger;
-
-/**
- * Contains class-specific information used when transforming a raw component class into an
- * executable component class.
- * An executable class is one that has been transformed to work within Tapestry. This includes
- * adding interfaces
- * ({@link org.apache.tapestry5.runtime.Component}) but also transforming access to fields, based on
- * annotations and
- * naming conventions. Most of the changes are provided by different implementations of
- * {@link ComponentClassTransformWorker}.
- * <p/>
- * Much of this information is somewhat like ordinary reflection, but applies to a class that has not yet been loaded.
- * Field types, return types, parameter types and exception types are represented as string names, since any of them may
- * be a class that has not yet been loaded and transformed as well.
- * <p/>
- * Transformation is primarily about identifying annotations on fields and on methods and changing the class, adding new
- * interfaces, fields and methods, and deleting some existing fields.
- * <p/>
- * A ClassTransformation contains all the state data specific to a particular class being transformed. A number of
- * <em>workers</em> will operate upon the ClassTransformation to effect the desired changes before the true class is
- * loaded into memory.
- * <p/>
- * Instances of this class are not designed to be thread safe, access to an instance should be restricted to a single
- * thread. In fact, the design of this type is to allow stateless singletons in multiple threads to work on
- * thread-specific data (within the ClassTransformation).
- * <p/>
- * The majority of methods concern the <em>declared</em> members (field and methods) of a specific class, rather than
- * any fields or methods inherited from a base class.
- * 
- * @see org.apache.tapestry5.services.TapestryModule#contributeComponentClassTransformWorker(org.apache.tapestry5.ioc.OrderedConfiguration,
- *      org.apache.tapestry5.ioc.ObjectLocator, InjectionProvider, ComponentClassResolver)
- */
-public interface ClassTransformation extends AnnotationProvider
-{
-    /**
-     * Returns the fully qualified class name of the class being transformed.
-     */
-    String getClassName();
-
-    /**
-     * Returns the name of a new member (field or method). Ensures that the resulting name does not
-     * conflict with any
-     * existing member (declared by the underlying class, or inherited from a base class).
-     * 
-     * @param suggested
-     *            the suggested value for the member
-     * @return a unique name for the member
-     */
-    String newMemberName(String suggested);
-
-    /**
-     * As with {@link #newMemberName(String)}, but the suggested name is constructed from the prefix
-     * and base name. An
-     * underscore will separate the prefix from the base name.
-     * 
-     * @param prefix
-     *            for the generated name
-     * @param baseName
-     *            a name, often of an existing field or method
-     * @return a unique name
-     */
-    String newMemberName(String prefix, String baseName);
-
-    /**
-     * Generates a list of the names of declared instance fields that have the indicated annotation.
-     * Non-private and
-     * static fields are ignored. Only the names of private instance fields are returned.
-     * 
-     * @deprecated Use {@link #matchFieldsWithAnnotation(Class)} instead
-     */
-    List<String> findFieldsWithAnnotation(Class<? extends Annotation> annotationClass);
-
-    /**
-     * Returns a sorted list of declared instance fields with the indicated annotation. Non-private
-     * and static fields are ignored.
-     * 
-     * @since 5.2.0
-     */
-    List<TransformField> matchFieldsWithAnnotation(Class<? extends Annotation> annotationClass);
-
-    /**
-     * Finds all methods defined in the class that are marked with the provided annotation.
-     * 
-     * @param annotationClass
-     * @return a list of method signature (which may be empty) in ascending order
-     * @see #findMethods(MethodFilter)
-     * @deprecated Use {@link #matchMethodsWithAnnotation(Class)} instead
-     */
-    List<TransformMethodSignature> findMethodsWithAnnotation(Class<? extends Annotation> annotationClass);
-
-    /**
-     * Finds all methods matched by the provided filter.
-     * 
-     * @param filter
-     *            Passed each method signature, it may include or exclude each potential
-     * @return a list of matching method signatures (which may be empty) in ascending order (by
-     *         method name), but
-     *         descending order (by parameter count) within overrides of a single method name.
-     * @deprecated Use {@link #matchMethods(Predicate)} instead
-     */
-    List<TransformMethodSignature> findMethods(MethodFilter filter);
-
-    /**
-     * Finds all methods matched by the provided predicate.
-     * 
-     * @param predicate
-     *            Used to filter the list
-     * @return a list of matching methods (which may be empty) in ascending order (by
-     *         method name), but descending order (by parameter count) within overrides of a single method name.
-     */
-    List<TransformMethod> matchMethods(Predicate<TransformMethod> predicate);
-
-    /**
-     * Finds all methods matched by the provided predicate.
-     * 
-     * @param annotationType
-     *            Used to filter the list
-     * @return a list of matching methods (which may be empty) in ascending order (by
-     *         method name), but descending order (by parameter count) within overrides of a single method name.
-     */
-    List<TransformMethod> matchMethodsWithAnnotation(Class<? extends Annotation> annotationType);
-
-    /**
-     * Finds all unclaimed fields matched by the provided filter. Only considers private instance
-     * fields.
-     * 
-     * @param filter
-     *            passed each field name and field type
-     * @return the names of all matched fields, in ascending order
-     * @deprecated Use {@link #matchFields(Predicate)} instead
-     */
-    List<String> findFields(FieldFilter filter);
-
-    /**
-     * Finds all unclaimed fields matched by the provided predicate. Only considers instance fields.
-     * Added, removed and claimed fields are excluded.
-     * 
-     * @param predicate
-     *            used for matching
-     * @return sorted list of matching fields
-     * @since 5.2.0
-     */
-    List<TransformField> matchFields(Predicate<TransformField> predicate);
-
-    /**
-     * Finds an annotation on a declared instance field.
-     * 
-     * @param <T>
-     *            constrains parameter and return value to Annotation types
-     * @param fieldName
-     *            the name of the field, which must exist
-     * @param annotationClass
-     *            the type of annotation to access
-     * @return the annotation if present, or null otherwise
-     * @throws IllegalArgumentException
-     *             if the fieldName does not correspond to a declared field
-     * @deprecated Use {@link TransformField#getAnnotation(Class)} instead
-     */
-    <T extends Annotation> T getFieldAnnotation(String fieldName, Class<T> annotationClass);
-
-    /**
-     * Locates a declared field by its field name. The field must exist.
-     * 
-     * @param name
-     *            of declared field
-     * @return field information
-     * @throws RuntimeException
-     *             if no such field
-     * @since 5.2.0
-     */
-    TransformField getField(String fieldName);
-
-    /**
-     * Finds an annotation on a declared method.
-     * 
-     * @param <T>
-     *            constrains parameter and return value to Annotation types
-     * @param method
-     *            the method signature to search
-     * @param annotationClass
-     *            the type of annotation to access
-     * @return the annotation if present, or null otherwise
-     * @throws IllegalArgumentException
-     *             if the method signature does not correspond to a declared method
-     * @deprecated Use {@link TransformMethod#getAnnotation(Class)} instead
-     */
-    <T extends Annotation> T getMethodAnnotation(TransformMethodSignature method, Class<T> annotationClass);
-
-    /**
-     * Claims a field so as to ensure that only a single annotation is applied to any single field.
-     * When a
-     * transformation occurs (driven by a field annotation), the field is claimed (using the
-     * annotation object as the
-     * tag). If a field has multiple conflicting annotations, this will be discovered when the code
-     * attempts to claim
-     * the field a second time.
-     * 
-     * @param fieldName
-     *            the name of the field that is being claimed
-     * @param tag
-     *            a non-null object that represents why the field is being tagged (this is typically
-     *            a specific
-     *            annotation on the field)
-     * @throws IllegalArgumentException
-     *             if the fieldName does not correspond to a declared instance field
-     * @throws IllegalStateException
-     *             if the field is already claimed for some other tag
-     * @deprecated Use {@link TransformField#claim(Object)} instead
-     */
-    void claimField(String fieldName, Object tag);
-
-    /**
-     * Changes the field to be read only. Any existing code that changes the field will cause a
-     * runtime exception.
-     * 
-     * @param fieldName
-     *            name of field to so change
-     * @deprecated Use {@link TransformField#replaceAccess(TransformField)} instead
-     * @see ReadOnlyFieldValueConduit
-     */
-    void makeReadOnly(String fieldName);
-
-    /**
-     * Finds any declared <em>instance</em> fields that have not been claimed (via {@link #claimField(String, Object)})
-     * and have not been added , and returns the names of those fields. May return an empty array.
-     * 
-     * @deprecated Use {@link #matchUnclaimedFields()} instead
-     */
-    List<String> findUnclaimedFields();
-
-    /**
-     * Matches all fields that are not claimed. This may include static fields and final fields, but will not
-     * include fields that have been added as part of the transformation.
-     * 
-     * @since 5.2.0
-     * @return sorted list of unclaimed fields
-     */
-    List<TransformField> matchUnclaimedFields();
-
-    /**
-     * Obtains the type of a declared instance field.
-     * 
-     * @param fieldName
-     * @return the type of the field, as a string
-     * @throws RuntimeException
-     *             if the fieldName does not correspond to a declared instance field
-     * @deprecated Use {@link TransformField#getType()} instead
-     */
-    String getFieldType(String fieldName);
-
-    /**
-     * Returns true if the indicated name is a private instance field.
-     * 
-     * @param fieldName
-     * @return true if field exists
-     */
-    boolean isField(String fieldName);
-
-    /**
-     * Defines a new declared field for the class. The suggestedName may be modified to ensure
-     * uniqueness.
-     * 
-     * @param modifiers
-     *            modifiers for the field (typically, {@link java.lang.reflect.Modifier#PRIVATE})
-     * @param type
-     *            the type for the field, as a string
-     * @param suggestedName
-     *            the desired name for the field, which may be modified (for uniqueness) when
-     *            returned
-     * @return the (uniqued) name for the field
-     * @deprecated Use {@link #createField(int, String, String)} instead
-     */
-    String addField(int modifiers, String type, String suggestedName);
-
-    /**
-     * Defines a new declared field for the class. Suggested name may be modified to ensure uniqueness.
-     * 
-     * @param modifiers
-     *            modifiers for the field (typically, {@link java.lang.reflect.Modifier#PRIVATE})
-     * @param type
-     *            the type for the field, as a string
-     * @param suggestedName
-     *            the desired name for the field, which may be modified (for uniqueness) when
-     *            returned
-     * @return new field instance
-     */
-    TransformField createField(int modifiers, String type, String suggestedName);
-
-    /**
-     * Defines a new <strong>protected</strong> instance variable whose initial value is provided
-     * statically, via a
-     * constructor parameter. The transformation caches the result, so calling this method
-     * repeatedly with the same type
-     * and value will return the same field name. Caching extends to the parent transformation, so
-     * that a value injected
-     * into a parent class will be available (via the protected instance variable) to subclasses.
-     * This is primarily used to inject service dependencies into components, though it has a number
-     * of other uses as well.
-     * 
-     * @param type
-     *            the type of object to inject
-     * @param suggestedName
-     *            the suggested name for the new field
-     * @param value
-     *            to be injected. This value is retained.
-     * @return the actual name of the injected field
-     */
-    String addInjectedField(Class type, String suggestedName, Object value);
-
-    /**
-     * Like {@link #addInjectedField(Class, String, Object)}, but instead of specifying the value,
-     * a provider for the value is specified. In the generated class' constructor, the provider
-     * will be passed the {@link ComponentResources} and will return the final value; thus
-     * each component <em>instance</em> will receive a matching unique instance via the provider.
-     * 
-     * @param <T>
-     * @param type
-     *            type of value to inject
-     * @param suggestedName
-     *            suggested name for the new field
-     * @param provider
-     *            injected into the component to provide the value
-     * @return the actual name of the injected field
-     * @since 5.2.0
-     */
-    <T> TransformField addIndirectInjectedField(Class<T> type, String suggestedName, ComponentValueProvider<T> provider);
-
-    /**
-     * Converts an <em>existing</em> field into a read only field whose value is the provided
-     * value. This is used
-     * when converting an
-     * existing field into a read-only injected value.
-     * 
-     * @param fieldName
-     *            name of field to convert
-     * @param value
-     *            the value provided by the field
-     * @deprecated Use {@link TransformField#inject(Object)} instead
-     */
-    void injectField(String fieldName, Object value);
-
-    /**
-     * Transforms the class to implement the indicated interface. If the class (or its super class)
-     * does not already
-     * implement the interface, then the interface is added, and default implementations of any
-     * methods of the interface
-     * are added.
-     * <p/>
-     * TODO: Checking that the names of methods in the interface do not conflict with the names of methods present in
-     * the (unmodified) class.
-     * 
-     * @param interfaceClass
-     *            the interface to be implemented by the class
-     * @throws IllegalArgumentException
-     *             if the interfaceClass argument does not represent an interface
-     */
-    void addImplementedInterface(Class interfaceClass);
-
-    /**
-     * Extends an existing method. The provided method body is inserted at the end of the existing
-     * method (i.e. {@link javassist.CtBehavior#insertAfter(java.lang.String)}). To access or change
-     * the return value, use the <code>$_</code> pseudo variable.
-     * <p/>
-     * The method may be declared in the class, or may be inherited from a super-class. For inherited methods, a method
-     * body is added that first invokes the super implementation. Use
-     * {@link #addMethod(TransformMethodSignature, String)} when it is necessary to control when the super-class method
-     * is invoked.
-     * <p/>
-     * The extended method is considered <em>new</em>. New methods <em>are not</em> scanned for
-     * {@linkplain #removeField(String)} removed}, {@linkplain #replaceReadAccess(String, String)} read replaced}, or
-     * {@linkplain #replaceWriteAccess(String, String) write replaced} fields. Generally that's what you want!
-     * 
-     * @param methodSignature
-     *            the signature of the method to extend
-     * @param methodBody
-     *            the body of code
-     * @throws org.apache.tapestry5.internal.services.MethodCompileException
-     *             if the provided Javassist method body can not be compiled
-     * @deprecated Use {@link TransformMethod#addAdvice(ComponentMethodAdvice)} instead. This method is non-functional
-     *             as of Tapestry 5.2.
-     */
-    void extendMethod(TransformMethodSignature methodSignature, String methodBody);
-
-    /**
-     * Like {@link #extendMethod(TransformMethodSignature, String)}, but the extension does not mark
-     * the method as new,
-     * and field changes <em>will</em> be processed. Note: at some point, this is not longer true; extend and
-     * extendMethod work identically.
-     * 
-     * @param methodSignature
-     *            signature of the method to extend
-     * @param methodBody
-     *            the body of code
-     * @throws org.apache.tapestry5.internal.services.MethodCompileException
-     *             if the provided method body can not be compiled
-     * @see #prefixMethod(TransformMethodSignature, String)
-     * @deprecated Use {@link TransformMethod#addAdvice(ComponentMethodAdvice) instead}. This method is non-functional
-     *             as of Tapestry 5.2.
-     */
-    void extendExistingMethod(TransformMethodSignature methodSignature, String methodBody);
-
-    /**
-     * Inserts code at the beginning of a method body (i.e. {@link CtBehavior#insertBefore(String)}.
-     * <p/>
-     * The method may be declared in the class, or may be inherited from a super-class. For inherited methods, a method
-     * is added that first invokes the super implementation. Use {@link #addMethod(TransformMethodSignature, String)}
-     * when it is necessary to control when the super-class method is invoked.
-     * <p/>
-     * Like {@link #extendExistingMethod(TransformMethodSignature, String)}, this method is generally used to "wrap" an
-     * existing method adding additional functionality such as caching or transaction support.
-     * 
-     * @param methodSignature
-     * @param methodBody
-     * @throws org.apache.tapestry5.internal.services.MethodCompileException
-     *             if the provided method body can not be compiled
-     * @deprecated Use {@link TransformMethod#addAdvice(ComponentMethodAdvice)} instead. This method is non-functional
-     *             as of Tapestry 5.2.
-     */
-    void prefixMethod(TransformMethodSignature methodSignature, String methodBody);
-
-    /**
-     * Returns the name of a field that provides the {@link org.apache.tapestry5.ComponentResources} for the transformed
-     * component. This will be a protected field, accessible to the class and subclasses.
-     * 
-     * @return name of field
-     * @deprecated Obtain the resources from {@link ComponentMethodInvocation#getComponentResources()} or
-     *             as passed to {@link ComponentValueProvider#get(ComponentResources)} instead
-     */
-    String getResourcesFieldName();
-
-    /**
-     * Adds a new method to the transformed class. Replaces any existing method declared for the
-     * class. When overriding
-     * a super-class method, you should use {@link #extendMethod(TransformMethodSignature, String)},
-     * or you should
-     * remember to invoke the super class implemetation explicitly. Use this method to control when
-     * the super-class
-     * implementation is invoked.
-     * 
-     * @deprecated Use {@link #getOrCreateMethod(TransformMethodSignature)} instead. This method is non-functional as of
-     *             Tapestry 5.2.
-     */
-    void addMethod(TransformMethodSignature signature, String methodBody);
-
-    /**
-     * As with {@link #addMethod(TransformMethodSignature, String)}, but field references inside the
-     * method <em>will</em> be transformed, and the method <em>must not already exist</em>.
-     * 
-     * @deprecated Use {@link #getOrCreateMethod(TransformMethodSignature)} instead. This method is non-functional as of
-     *             Tapestry 5.2.
-     */
-    void addTransformedMethod(TransformMethodSignature methodSignature, String methodBody);
-
-    /**
-     * Adds a statement to the constructor. The statement is added as is, though a newline is added.
-     * 
-     * @param statement
-     *            the statement to add, which should end with a semicolon
-     * @deprecated Use methods that create or inject fields (directly or indirectly)
-     * @see ComponentValueProvider
-     */
-    void extendConstructor(String statement);
-
-    /**
-     * Replaces all read-references to the specified field with invocations of the specified method
-     * name. Replacements
-     * do not occur in methods added via {@link #addMethod(TransformMethodSignature, String)} or
-     * {@link #extendMethod(TransformMethodSignature, String)}.
-     * 
-     * @deprecated Use {@link TransformField#replaceAccess(ComponentValueProvider) instead
-     */
-    void replaceReadAccess(String fieldName, String methodName);
-
-    /**
-     * Replaces all write accesses to the specified field with invocations of the specified method
-     * name. The method
-     * should take a single parameter of the same type as the field. Replacements do not occur in
-     * methods added via {@link #addMethod(TransformMethodSignature, String)} or
-     * {@link #extendMethod(TransformMethodSignature, String)}.
-     * 
-     * @deprecated Use {@link TransformField#replaceAccess(ComponentValueProvider) instead
-     */
-    void replaceWriteAccess(String fieldName, String methodName);
-
-    /**
-     * Removes a field entirely; this is useful for fields that are replaced entirely by computed
-     * values.
-     * 
-     * @param fieldName
-     *            the name of the field to remove
-     * @see #replaceReadAccess(String, String)
-     * @see #replaceWriteAccess(String, String)
-     * @deprecated This method is non-functional as of Tapestry 5.2
-     */
-    void removeField(String fieldName);
-
-    /**
-     * Converts a type name into a corresponding class (possibly, a transformed class). Primitive
-     * type names are returned as wrapper types.
-     */
-    Class toClass(String type);
-
-    /**
-     * Returns a logger, based on the class name being transformed, to which warnings or errors
-     * concerning the class being transformed may be logged.
-     */
-    Logger getLogger();
-
-    /**
-     * Returns the modifiers for the named field.
-     * 
-     * @deprecated Use {@link TransformField#getModifiers()} instead
-     */
-    int getFieldModifiers(String fieldName);
-
-    /**
-     * Converts a signature to a string used to identify the method; this consists of the
-     * {@link TransformMethodSignature#getMediumDescription()} appended with source file information
-     * and line number
-     * information (when available).
-     * 
-     * @param signature
-     * @return a string that identifies the class, method name, types of parameters, source file and
-     *         source line number
-     * @deprecated Use {@link TransformMethod#getMethodIdentifier()} instead
-     */
-    String getMethodIdentifier(TransformMethodSignature signature);
-
-    /**
-     * Returns true if this transformation represents a root class (one that extends directly from
-     * Object), or false if this transformation is an sub-class of another transformed class.
-     * 
-     * @return true if root class, false if sub-class
-     */
-    boolean isRootTransformation();
-
-    /**
-     * Adds a catch block to the method. The body should end with a return or a throw. The special
-     * Javassist variable
-     * $e is the exception instance.
-     * 
-     * @param methodSignature
-     *            method to be extended.
-     * @param exceptionType
-     *            fully qualified class name of exception
-     * @param body
-     *            code to execute
-     * @deprecated Use {@link TransformMethod#addAdvice(ComponentMethodAdvice)} instead. This method is non-functional
-     *             as of Tapestry 5.2.
-     */
-    void addCatch(TransformMethodSignature methodSignature, String exceptionType, String body);
-
-    /**
-     * Adds method advice for the indicated method.
-     * 
-     * @deprecated Use {@link TransformMethod#addAdvice(ComponentMethodAdvice)} instead
-     */
-    void advise(TransformMethodSignature methodSignature, ComponentMethodAdvice advice);
-
-    /**
-     * Returns true if the method is an override of a method from the parent class.
-     * 
-     * @param methodSignature
-     *            signature of method to check
-     * @return true if the parent class contains a method with the name signature
-     * @deprecated Use {@link TransformMethod#isOverride()} instead
-     */
-    boolean isMethodOverride(TransformMethodSignature methodSignature);
-
-    /**
-     * Locates and returns the method if declared in this class; If not,
-     * the method is added to the class. If the method is an override
-     * of a base class method, then the method will delegate to the base
-     * class method (invoke it, return its value). If the method is entirely
-     * new, it will ignore its parameters and return a default value (null, 0 or false).
-     * 
-     * @param signature
-     *            identifies the method to locate, override or create
-     * @since 5.2.0
-     */
-    TransformMethod getOrCreateMethod(TransformMethodSignature signature);
-
-    /**
-     * Determines if the class being transformed includes a declared (not inherited) method
-     * with the provided signature.
-     * 
-     * @since 5.2.0
-     * @param signature
-     *            identifies method to search for
-     * @return true if a such a method exists
-     */
-    boolean isDeclaredMethod(TransformMethodSignature signature);
-
-    /**
-     * Adds advice to the {@link Component#dispatchComponentEvent(org.apache.tapestry5.runtime.ComponentEvent)} method.
-     * If the handler is invoked,
-     * the return value of the method will be overriden to true. Updates
-     * {@linkplain MutableComponentModel#addEventHandler(String) the model} to
-     * indicate that there is a handler for the named event. Existing handlers, or super-class handlers,
-     * are invoked <em>first</em>.
-     * 
-     * @param eventType
-     *            name of event to be handled
-     * @param minContextValues
-     *            minimum number of event context values required to invoke the method
-     * @param methodDescription
-     *            Text description of what the handler does (used with {@link Event#setMethodDescription(String)})
-     * @param handler
-     *            the handler to invoke
-     * @since 5.2.0
-     */
-    void addComponentEventHandler(String eventType, int minContextValues, String methodDescription,
-            ComponentEventHandler handler);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java
deleted file mode 100644
index 62ff6e8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathAssetAliasManager.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.internal.services.assets.ClasspathAssetRequestHandler;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Used as part of the support for classpath {@link org.apache.tapestry5.Asset}s, to convert the Asset's
- * {@link org.apache.tapestry5.ioc.Resource} to a URL that can be accessed by the client. The asset path, within the
- * classpath, is converted into a shorter virtual path. The term "alias" here is generally referred to as
- * "virtual folder" elsewhere.
- * <p/>
- * Service configuration is a map from folder aliases (short names) to complete paths. Names should not start or end end
- * with a slash. Generally, an alias should be a single name (not contain a slash). Paths should also not start or end
- * with a slash. An example mapping would be <code>mylib</code> to <code>com/example/mylib</code>.
- * <p>
- * As originally envisioned, this service would simply <em>optimize</em> classpath assets, allowing the URL path for
- * such assets to be shortened (and have a version number added, important for caching); thus the word "alias" makes
- * sense ... it was responsible for creating an "alias" URL shorter than the default "classpath" URL.
- * <p>
- * Starting in Tapestry 5.2, this changed; all classpath assets <strong>must</strong> be "aliased" to a shorter URL
- * path. Any URL that can not be shortened is now rejected. This simplifies creating new libraries, but also helps with
- * security concerns, as it limits which portions of the classpath can <em>ever</em> be exposed to the user agent.
- * <p>
- * Tapestry automatically contributes a number of mappings: for the application root package itself (as alias "app") and
- * for each library (via {@link ComponentClassResolver#getFolderToPackageMapping()});
- */
-@UsesMappedConfiguration(String.class)
-public interface ClasspathAssetAliasManager
-{
-    /**
-     * Takes a resource path to a classpath resource and adds the asset path prefix to the path. May also convert part
-     * of the path to an alias (based on the manager's configuration).
-     * 
-     * @param resourcePath
-     *            resource path on the classpath (with no leading slash)
-     * @return URL ready to send to the client
-     */
-    String toClientURL(String resourcePath);
-
-    /**
-     * Reverses {@link #toClientURL(String)}, stripping off the asset prefix, and re-expanding any aliased folders back
-     * to complete folders.
-     * 
-     * @deprecated No longer used as of Tapestry 5.2, may be removed in a later release.
-     */
-    String toResourcePath(String clientURL);
-
-    /**
-     * Returns the mappings used by the service: the keys are the folder aliases (i.e, "corelib")
-     * and the values are the corresponding paths (i.e., "org/apache/tapestry5/corelib"). This
-     * exists primarily so that {@link ClasspathAssetRequestHandler}s can be created automatically
-     * for each mapping.
-     * 
-     * @since 5.2.0
-     **/
-    Map<String, String> getMappings();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathProvider.java
deleted file mode 100644
index 65a6c04..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClasspathProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-
-/**
- * A marker annotation used to select the correct {@link AssetFactory} for injection. The marked interface will provide
- * assets located on the classpath.
- */
-@Target(
-        { ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface ClasspathProvider
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientBehaviorSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientBehaviorSupport.java
deleted file mode 100644
index 7ea3c17..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientBehaviorSupport.java
+++ /dev/null
@@ -1,115 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.corelib.data.InsertPosition;
-
-/**
- * Collects details about zone usage for efficient initialization of the client side objects. This has grown to include
- * the client-side behavior associated with {@link org.apache.tapestry5.corelib.components.FormFragment}s.
- * 
- * @see org.apache.tapestry5.corelib.components.Zone
- */
-public interface ClientBehaviorSupport
-{
-    /**
-     * Adds a new client-side Tapestry.Zone object. Zones are linked to a an element (typically, a &lt;div&gt;). A Zone
-     * may have handlers used to initially show it, or to highlight it when its content changes. Such handlers are
-     * referenced by name, as functions of the Tapestry.ElementEffect object.
-     * 
-     * @param clientId
-     *            client-side id of the element that will be updated by the zone
-     * @param showFunctionName
-     *            name of the function used to initially show the zone (if not visible), or null for
-     *            default
-     * @param updateFunctionName
-     *            name of function used to highlight the function after an update, or null for default
-     */
-    void addZone(String clientId, String showFunctionName, String updateFunctionName);
-
-    /**
-     * Sets the client-side onclick handler for an &lt;a&gt; element to perform an Ajax update of a zone.
-     * 
-     * @param linkId
-     *            id of the link to Ajax enable
-     * @param elementId
-     *            id of an element that has been previously registered as a Zone
-     * @param eventLink
-     */
-    void linkZone(String linkId, String elementId, Link eventLink);
-
-    /**
-     * Adds a new client-side Tapestry.FormFragment object. FormFragment's are used to make parts of a client-side form
-     * visible or invisible, which involves interactions with both the server-side and client-side validation.
-     * 
-     * @param clientId
-     *            client-side id of the element that will be made visible or invisible
-     * @param showFunctionName
-     *            name of function (of the Tapestry.ElementEffect object) used to make the SubForm visible,
-     *            or null for the default
-     * @param hideFunctionName
-     *            name of the function used to make the SubForm invisible, or null for the default
-     * @deprecated Use {@link #addFormFragment(String,boolean,String,String)} instead
-     */
-    void addFormFragment(String clientId, String showFunctionName, String hideFunctionName);
-
-    /**
-     * Adds a new client-side Tapestry.FormFragment object. FormFragment's are used to make parts of a client-side form
-     * visible or invisible, which involves interactions with both the server-side and client-side validation.
-     * 
-     * @param clientId
-     *            client-side id of the element that will be made visible or invisible
-     * @param alwaysSubmit
-     *            if true, the fragment ignores client-side visiblility and always submits its values
-     * @param showFunctionName
-     *            name of function (of the Tapestry.ElementEffect object) used to make the SubForm visible,
-     *            or null for the default
-     * @param hideFunctionName
-     *            name of the function used to make the SubForm invisible, or null for the default
-     */
-    void addFormFragment(String clientId, boolean alwaysSubmit, String showFunctionName, String hideFunctionName);
-
-    /**
-     * Adds a new client-side Tapestry.FormInjector object. FormInjectors are used to extend an existing Form with new
-     * content.
-     * 
-     * @param clientId
-     *            client-side id of the element that identifiess where the new content will be placed
-     * @param link
-     *            action request link used to trigger the server-side object, to render the new content
-     * @param insertPosition
-     *            where the new content should go (above or below the element)
-     * @param showFunctionName
-     *            name of function (of the Tapestry.ElementEffect object) used to make the new element
-     *            visible, or null for the default
-     */
-    void addFormInjector(String clientId, Link link, InsertPosition insertPosition, String showFunctionName);
-
-    /**
-     * Collects field validation information.
-     * 
-     * @param field
-     *            for which validation is being generated
-     * @param validationName
-     *            name of validation method (see Tapestry.Validation in tapestry.js)
-     * @param message
-     *            the error message to display if the field is invalid
-     * @param constraint
-     *            additional constraint value, or null for validations that don't require a constraint
-     */
-    void addValidation(Field field, String validationName, String message, Object constraint);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientDataEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientDataEncoder.java
deleted file mode 100644
index e959e97..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientDataEncoder.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-import java.io.ObjectInputStream;
-
-/**
- * A service used when a component or service needs to encode some amount of data on the client as a string. The string
- * may be a query parameter, hidden form field, or a portion of a URL.  The default implementation converts the object
- * output stream into a Base64 string.
- *
- * @since 5.1.0.1
- */
-public interface ClientDataEncoder
-{
-    /**
-     * Creates a sink for client data.  The sink provides an output stream and ultimately, a string representation of
-     * the data sent to the stream.
-     *
-     * @return a new sink
-     */
-    ClientDataSink createSink();
-
-    /**
-     * Decodes data previously obtained from {@link ClientDataSink#getClientData()}.
-     *
-     * @param clientData encoded client data
-     * @return stream of decoded data
-     */
-    ObjectInputStream decodeClientData(String clientData) throws IOException;
-
-    /**
-     * Decoes client data obtained via {@link ClientDataSink#getEncodedClientData()}.
-     *
-     * @param clientData URLEncoded client data
-     * @return stream of objects
-     * @throws IOException
-     * @since 5.1.0.4
-     */
-    ObjectInputStream decodeEncodedClientData(String clientData) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientDataSink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientDataSink.java
deleted file mode 100644
index 3bf7b39..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientDataSink.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.ObjectOutputStream;
-
-
-/**
- * Allows binary object data to be encoded into a string.
- *
- * @see ClientDataEncoder#createSink()
- * @since 5.1.0.1
- */
-public interface ClientDataSink
-{
-    /**
-     * Provides the output stream to which data can be written.
-     *
-     * @return the stream
-     */
-    ObjectOutputStream getObjectOutputStream();
-
-    /**
-     * Encoded the data written to the stream as a string that can be provided to the client. Implicitly closes the
-     * stream (if it has not already been closed).
-     *
-     * @return the encoded data as a string
-     * @see org.apache.tapestry5.services.ClientDataEncoder#decodeClientData(String)
-     */
-    String getClientData();
-
-    /**
-     * Returns the client data encoded (for inclusion in a URL) via {@link org.apache.tapestry5.services.URLEncoder}.
-     *
-     * @since 5.1.0.4
-     */
-    String getEncodedClientData();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientInfrastructure.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientInfrastructure.java
deleted file mode 100644
index 557dc95..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ClientInfrastructure.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.List;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-
-/**
- * Client infrastructure is a base set of JavaScript libraries and CSS stylesheet files, The core JavaScript libraries
- * are added to any page that uses the {@link JavaScriptSupport} adds JavaScript
- * to the page. The CSS stylesheet files are added to any page with a root &lt;html&gt; element.
- * <p/>
- * Tapestry's default JavaScript stack includes Prototype, Scriptaculous, and a Tapestry-specific library. Note that
- * these individual library files will {@linkplain org.apache.tapestry5.SymbolConstants#COMBINE_SCRIPTS be combined into
- * a single virtual resource} (from the client's point of view).
- * <p/>
- * Tapestry's default CSS stack contains the Tapestry default stylesheet, and the stylesheet used by Tapestry's
- * Blackbird console.
- * <p/>
- * Overriding the default ClientInfrastructure service gives an application complete freedom to replace any part of
- * Tapestry's default client-side resources.
- * <p>
- * 
- * @deprecated ClientInfrastructure now exists to define the "core" {@link JavaScriptStack}. It may be removed
- *             in the release 5.3.
- * @since 5.1.0.2
- */
-public interface ClientInfrastructure
-{
-    /**
-     * Returns the (localized) assets for the scripts to be included as core JavaScript stack. The assets for the stack
-     * will be added before any other JavaScript libraries included in the render of the page. Adding a library or any
-     * initialization JavaScript triggers the inclusion of the JavaScript stack.
-     * 
-     * @return list of assets
-     */
-    List<Asset> getJavascriptStack();
-
-    /**
-     * Returns the (localized) assets for CSS stylesheet files to be included on any page. These are ordered before any
-     * stylesheets specifically included (to allow default rules to be easily overridden). The default core stack
-     * includes the Tapestry default stylesheet, and an additional stylesheet for the Blackbird JavaScript console.
-     * 
-     * @return list of assets
-     */
-    List<Asset> getStylesheetStack();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
deleted file mode 100644
index cee053f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassResolver.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-import org.apache.tapestry5.ioc.services.ClassNameLocator;
-
-/**
- * Resolves page names and component types to fully qualified class names. Pages and components may be provided by the
- * application or inside a <em>mapped package</em>. Page names often appear inside URLs, and component types often
- * appear in component template (when specifying the type of an embedded component).
- * <p/>
- * The service is configured using a collection of {@link LibraryMapping}s. Each mapping maps a prefix, such as "core"
- * to a root package name, such as "org.apache.tapestry5.corelib". The root package is expected to have sub-packages:
- * "pages", "components", "mixins" and "base" ("base" is for base classes).
- * <p/>
- * The resolver performs a search of the classpath (via {@link ClassNameLocator}), to build up a set of case-insensitive
- * maps from logical page name, component type, or mixin type to fully qualified class name.
- * <p/>
- * Certain ambiguities occur if mapped packages overlap, either in terms of the the prefixes or the package names. Keep
- * things clearly separate to avoid lookup problems.
- */
-@UsesConfiguration(LibraryMapping.class)
-public interface ComponentClassResolver
-{
-    /**
-     * Converts a logical page name (such as might be encoded into a URL) into a fully qualified class name. The case of
-     * the page name is irrelevant.
-     * 
-     * @param pageName
-     *            page name
-     * @return fully qualified class name for the page
-     * @throws IllegalArgumentException
-     *             if the name does not match a known page class
-     */
-    String resolvePageNameToClassName(String pageName);
-
-    /**
-     * For a particular path, determines if the path is a logical page name. The check is case insensitive.
-     * 
-     * @param pageName
-     *            potential logical page name
-     * @return true if the page name is valid
-     */
-    boolean isPageName(String pageName);
-
-    /**
-     * Returns a list of all page names, in sorted order.
-     */
-    List<String> getPageNames();
-
-    /**
-     * Converts a fully qualified page class name into a page name (often, for inclusion as part of the URI). This value
-     * may later be passed to {@link #resolvePageNameToClassName(String)}.
-     * 
-     * @param pageClassName
-     *            fully qualified name of a page class
-     * @return equivalent logical page name
-     * @throws IllegalArgumentException
-     *             if the name can not be resolved
-     */
-    String resolvePageClassNameToPageName(String pageClassName);
-
-    /**
-     * Returns the canonical form of a page name. The canonical form uses character case matching the underlying class
-     * name.
-     * 
-     * @throws IllegalArgumentException
-     *             if the page name does not match a logical page name
-     */
-    String canonicalizePageName(String pageName);
-
-    /**
-     * Converts a component type (a logical component name such as might be used inside a template or annotation) into a
-     * fully qualified class name. Case is ignored in resolving the name.
-     * 
-     * @param componentType
-     *            a logical component type
-     * @return fully qualified class name
-     * @throws IllegalArgumentException
-     *             if the component type can not be resolved
-     */
-    String resolveComponentTypeToClassName(String componentType);
-
-    /**
-     * Converts a logical mixin type (as with component types) into a fully qualified class name. Case is ignored when
-     * resolving the name.
-     * 
-     * @param mixinType
-     *            a logical mixin type
-     * @return fully qualified class name
-     * @throws IllegalArgumentException
-     *             if the mixin type can not be resolved
-     */
-    String resolveMixinTypeToClassName(String mixinType);
-
-    /**
-     * A mapping from virtual folder name to a package name (used for converting classpath {@link Asset}s
-     * to client URLs). This is derived from the contributed {@link LibraryMapping}s.
-     * <p>
-     * It is allowed to contribute multiple root packages as a single folder name. In this case, the best common package
-     * name is used. For example, if both <code>com.example.main</code> and <code>com.example.extras</code> is mapped to
-     * folder "example", then the package mapping for "example" will be <code>com.example</code>.
-     * 
-     * @since 5.2.0
-     * @see ClasspathAssetAliasManager
-     */
-    Map<String, String> getFolderToPackageMapping();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassTransformWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassTransformWorker.java
deleted file mode 100644
index dd8d438..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClassTransformWorker.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.model.MutableComponentModel;
-
-/**
- * Interface for a set of objects that can perform component class transformations. Implementations should be
- * multithreaded, ideally they should be stateless (all necessary state can be stored in the {@link
- * org.apache.tapestry5.services.ClassTransformation}).
- */
-public interface ComponentClassTransformWorker
-{
-    /**
-     * Invoked to perform a transformation on an as-yet unloaded component class, represented by the {@link
-     * ClassTransformation} instance. In some cases, the worker may make changes to the component model -- for example,
-     * a worker that deals with parameters may update the model to reflect those parameters.
-     */
-    void transform(ClassTransformation transformation, MutableComponentModel model);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClasses.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClasses.java
deleted file mode 100644
index c901d3a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentClasses.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation used to inject the correct {@link org.apache.tapestry5.services.InvalidationEventHub} service
- * responsible for invalidations when underlying component class files are changed.
- * 
- * @since 5.1.0.0
- */
-@Target(
-{ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface ComponentClasses
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentDefaultProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentDefaultProvider.java
deleted file mode 100644
index 4feab20..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentDefaultProvider.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.*;
-
-/**
- * A service that can be injected into a component to provide common defaults for various types of parameters.
- */
-public interface ComponentDefaultProvider
-{
-    /**
-     * Computes the default label for the component (which will generally be a {@link Field}).
-     *
-     * @param resources
-     * @return the label, either extracted from the component's container's message catalog, or derived from the
-     *         component's {@link ComponentResourcesCommon#getId()}.
-     */
-    String defaultLabel(ComponentResources resources);
-
-    /**
-     * Checks to see if the container of the component (identified by its resources) contains a property matching the
-     * component's id. If so, a binding for that property is returned. This is usually the default for a {@link Field}'s
-     * value parameter (or equivalent).
-     *
-     * @param parameterName the name of the parameter
-     * @param resources     the resources of the component for which a binding is needed
-     * @return the binding, or null if the container does not have a matching property
-     */
-    Binding defaultBinding(String parameterName, ComponentResources resources);
-
-    /**
-     * Gets or creates a value encoder based on the <em>type</em> of the named parameter.  ValueEncoders are cached
-     * based on type.
-     *
-     * @param parameterName the name of the parameter whose type is used to locate a {@link
-     *                      org.apache.tapestry5.services.ValueEncoderFactory}
-     * @param resources     the resources of the component, from which parameter and its type are extracted
-     * @return the value encoder, or null if the type of the parameter is not known
-     */
-    ValueEncoder defaultValueEncoder(String parameterName, ComponentResources resources);
-
-    /**
-     * Provides a translator based on the bound parameter type, if possible.
-     *
-     * @param parameterName
-     * @param resources
-     * @return the translator, or null
-     * @deprecated Use {@link #defaultTranslatorBinding(String, org.apache.tapestry5.ComponentResources)} instead
-     */
-    FieldTranslator defaultTranslator(String parameterName, ComponentResources resources);
-
-    /**
-     * Provides a binding that itself provides the field translator.
-     *
-     * @param parameterName
-     * @param resources
-     * @return binding that provides the {@link org.apache.tapestry5.FieldTranslator}
-     */
-    Binding defaultTranslatorBinding(String parameterName, ComponentResources resources);
-
-    /**
-     * Provides a validator based on the bound parameter type.  If the property type of the parameter is not known, then
-     * a no-op validator is returned.
-     *
-     * @param parameterName
-     * @param resources
-     * @return the validator, possibly a no-op validator
-     * @deprecated Use {@link #defaultValidatorBinding(String, org.apache.tapestry5.ComponentResources)} instead
-     */
-    FieldValidator defaultValidator(String parameterName, ComponentResources resources);
-
-    /**
-     * Provides a binding that itself provides the field translator.
-     *
-     * @param parameterName
-     * @param resources
-     * @return binding that provides the {@link org.apache.tapestry5.FieldTranslator}
-     */
-    Binding defaultValidatorBinding(String parameterName, ComponentResources resources);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventHandler.java
deleted file mode 100644
index a4505f5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventHandler.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentEvent;
-
-/**
- * Interface used with {@link ClassTransformation#addComponentEventHandler(String, int, String, ComponentEventHandler)}.
- * 
- * @since 5.2.0
- */
-public interface ComponentEventHandler
-{
-    /** Handles the event. */
-    void handleEvent(Component instance, ComponentEvent event);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java
deleted file mode 100644
index 7113e67..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventLinkEncoder.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
-import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
-
-/**
- * Responsible for creating {@link org.apache.tapestry5.Link}s for page render requests and for component event
- * requests, and for parsing incoming paths to identify requests that are component event or page render requests. This
- * centralizes some logic that was scattered about in Tapestry 5.0.
- * 
- * @since 5.1.0.1
- */
-public interface ComponentEventLinkEncoder
-{
-    /**
-     * Creates a Link that encapsulates a page render request, including activation context <em>and {@link
-     * org.apache.tapestry5.services.PersistentLocale} (if set)</em>.
-     * Passes the resulting Link through the {@link PageRenderLinkTransformer} chain of command, returning
-     * the result.
-     * 
-     * @param parameters
-     *            defining page to render and context
-     * @return link for the page render
-     */
-    Link createPageRenderLink(PageRenderRequestParameters parameters);
-
-    /**
-     * Creates a link that encapsulates a component event request, including <em>{@link
-     * org.apache.tapestry5.services.PersistentLocale} (if set)</em>.
-     * <p>
-     * Forms:
-     * <ul>
-     * <li>/context/pagename:eventname -- event on the page, no action context</li>
-     * <li>/context/pagename:eventname/foo/bar -- event on the page with action context "foo", "bar"</li>
-     * <li>/context/pagename.foo.bar -- event on component foo.bar within the page, default event, no action context</li>
-     * <li>/context/pagename.foo.bar/baz.gnu -- event on component foo.bar within the page, default event, with action
-     * context "baz", "gnu"</li>
-     * <li>/context/pagename.bar.baz:eventname/foo/gnu -- event on component bar.baz within the page with action context
-     * "foo" , "gnu"</li>
-     * </ul>
-     * <p/>
-     * The persistent locale may be placed in between the context name and the page name, i.e., "/context/fr/SomePage".
-     * <p/>
-     * In many cases the context name is blank, so the path begins with a "/" and then the locale name or page name.
-     * <p/>
-     * The page name portion may itself consist of a series of folder names, i.e., "admin/user/create". The context
-     * portion isn't the concern of this code, since {@link org.apache.tapestry5.services.Request#getPath()} will
-     * already have stripped that off. We can act as if the context is always "/" (the path always starts with a slash).
-     * <p/>
-     * Passes the resulting Link through the {@link ComponentEventLinkTransformer} chain of command, returning the
-     * result.
-     * 
-     * @param parameters
-     *            defining page, component, activation context and other details
-     * @param forForm
-     *            true if the event link will trigger a form submission
-     * @return link for the component event
-     */
-    Link createComponentEventLink(ComponentEventRequestParameters parameters, boolean forForm);
-
-    /**
-     * Checks the request, primarily the {@linkplain org.apache.tapestry5.services.Request#getPath() path}, to determine
-     * the if the request is a component event request. As a side-effect (necessary for historical reasons), responsible
-     * for setting the locale for the thread, including the {@link org.apache.tapestry5.services.PersistentLocale} ...
-     * but only if the locale is a component event.
-     * 
-     * @param request
-     *            incoming request
-     * @return component event request details, if a component event request
-     */
-    ComponentEventRequestParameters decodeComponentEventRequest(Request request);
-
-    /**
-     * Checks the request, primarily the {@linkplain org.apache.tapestry5.services.Request#getPath() path}, to determine
-     * the if the request is a page render request. As a side-effect (necessary for historical reasons), responsible for
-     * setting the locale for the thread, including the {@link org.apache.tapestry5.services.PersistentLocale} ... but
-     * only if the request is a page render.
-     * 
-     * @param request
-     *            incoming request
-     * @return page render request details, if a page render request
-     */
-    PageRenderRequestParameters decodePageRenderRequest(Request request);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestFilter.java
deleted file mode 100644
index dd3266e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestFilter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-
-/**
- * Filter interface for {@link org.apache.tapestry5.services.ComponentEventRequestHandler}.
- */
-public interface ComponentEventRequestFilter
-{
-    /**
-     * Filter for a component action request.
-     *
-     * @param parameters defining details of the request
-     * @param handler    to delegate to
-     */
-    void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestHandler.java
deleted file mode 100644
index 9ae643d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestHandler.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import java.io.IOException;
-
-/**
- * Handler interface for component event requests. Component event requests <em>do things</em> such as process a form
- * submission or otherwise change state. In the majority of cases, after the component event, a redirect response is
- * sent to the client which, in turn, causes a page render.
- * <p/>
- * The ComponentEventRequestHandler service is a pipeline, allowing extensibility via contributed {@linkplain
- * org.apache.tapestry5.services.ComponentEventRequestFilter filters}.    It may be distinguished by the @{@link
- * org.apache.tapestry5.services.Traditional} marker annotation.
- * <p/>
- * A second service, AjaxComponentEventRequestHandler is also a pipeline and may be distinguished by the @{@link
- * org.apache.tapestry5.services.Ajax} marker annotation.
- *
- * @see org.apache.tapestry5.corelib.components.ActionLink
- * @see org.apache.tapestry5.corelib.components.Form
- */
-@UsesOrderedConfiguration(ComponentEventRequestFilter.class)
-public interface ComponentEventRequestHandler
-{
-    /**
-     * Handler for a component action request which will trigger an event on a component and use the return value to
-     * send a response to the client (typically, a redirect to a page render URL).
-     *
-     * @param parameters defining the requst
-     */
-    void handle(ComponentEventRequestParameters parameters) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestParameters.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestParameters.java
deleted file mode 100644
index e023e3e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventRequestParameters.java
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Encapsulates all the information that may be provided in a component event request URL.
- */
-public final class ComponentEventRequestParameters
-{
-    private final String activePageName, containingPageName, nestedComponentId, eventType;
-    private final EventContext pageActivationContext, eventContext;
-
-    public ComponentEventRequestParameters(String activePageName, String containingPageName, String nestedComponentId,
-                                           String eventType, EventContext pageActivationContext,
-                                           EventContext eventContext)
-    {
-        assert InternalUtils.isNonBlank(activePageName);
-        assert InternalUtils.isNonBlank(containingPageName);
-        assert nestedComponentId != null;
-        assert InternalUtils.isNonBlank(eventType);
-        assert pageActivationContext != null;
-        assert eventContext != null;
-        this.activePageName = activePageName;
-        this.containingPageName = containingPageName;
-        this.nestedComponentId = nestedComponentId;
-        this.eventType = eventType;
-        this.pageActivationContext = pageActivationContext;
-        this.eventContext = eventContext;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ComponentEventParameters[page=%s component=%s:%s event=%s]",
-                             activePageName,
-                             containingPageName, nestedComponentId,
-                             eventType);
-    }
-
-    // Implements equals() as a convienience for testing.
-
-    public boolean equals(Object o)
-    {
-        if (this == o) return true;
-        if (o == null || getClass() != o.getClass()) return false;
-
-        ComponentEventRequestParameters that = (ComponentEventRequestParameters) o;
-
-        if (!activePageName.equals(that.activePageName)) return false;
-        if (!containingPageName.equals(that.containingPageName)) return false;
-        if (!eventType.equals(that.eventType)) return false;
-        if (!nestedComponentId.equals(that.nestedComponentId)) return false;
-
-        if (!TapestryInternalUtils.isEqual(eventContext, that.eventContext)) return false;
-
-        return TapestryInternalUtils.isEqual(pageActivationContext, that.pageActivationContext);
-    }
-
-
-    /**
-     * The name of the active page which rendered the link.  This is usually, but not always, the page which contains
-     * the component.
-     * 
-     * @return {@link ComponentClassResolver#canonicalizePageName(String) canonicalized} page name
-     */
-    public String getActivePageName()
-    {
-        return activePageName;
-    }
-
-    /**
-     * The name of the page containing the component that was triggered. Usually this is the same as the active page,
-     * but because of {@link org.apache.tapestry5.Block} and similar constructs, a component from other than the active
-     * page may be rendered with the active page.
-     * 
-     * @return {@link ComponentClassResolver#canonicalizePageName(String) canonicalized} page name
-     */
-    public String getContainingPageName()
-    {
-        return containingPageName;
-    }
-
-    /**
-     * The path from the containing page down to the component in question. This may be the empty string if the action
-     * request is routed directly to the page rather than a component.
-     */
-    public String getNestedComponentId()
-    {
-        return nestedComponentId;
-    }
-
-    /**
-     * The type of event.  When not specified in the URL, a default type of "action" ({@link
-     * org.apache.tapestry5.EventConstants#ACTION}) is provided.
-     */
-    public String getEventType()
-    {
-        return eventType;
-    }
-
-    /**
-     * The activation context for the <em>active page</em>, possibly empty (but not null).
-     *
-     * @see org.apache.tapestry5.ComponentResourcesCommon#triggerContextEvent(String, org.apache.tapestry5.EventContext,
-     *      org.apache.tapestry5.ComponentEventCallback)
-     */
-    public EventContext getPageActivationContext()
-    {
-        return pageActivationContext;
-    }
-
-    /**
-     * The event context information passed in the URL.  Possibly empty (not not null).
-     *
-     * @see org.apache.tapestry5.ComponentResourcesCommon#triggerContextEvent(String, org.apache.tapestry5.EventContext,
-     *      org.apache.tapestry5.ComponentEventCallback)
-     */
-    public EventContext getEventContext()
-    {
-        return eventContext;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventResultProcessor.java
deleted file mode 100644
index 06475f5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentEventResultProcessor.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-import java.io.IOException;
-
-/**
- * Responsible for handling the return value provided by a component event handler method.
- * <p/>
- * There are two services built into Tapestry that implement this interface: ComponentEventResultProcessor (used for
- * ordinary page-oriented requests, and distinguished by the @{@link org.apache.tapestry5.services.Traditional}
- * and/or @{@link org.apache.tapestry5.ioc.annotations.Primary} marker annotations) and 
- * AjaxComponentEventResultProcessor, used
- * for Ajax requests (which typically return a partially rendered page), distinguished by the @{@link
- * org.apache.tapestry5.services.Ajax} marker annotation.
- * @param <T>
- */
-@UsesMappedConfiguration(key = Class.class, value = ComponentEventResultProcessor.class)
-public interface ComponentEventResultProcessor<T>
-{
-    /**
-     * For a given, non-null return value from a component event method, construct and send a response.
-     *
-     * @param value the value returned from a method
-     * @throws RuntimeException if the value can not handled
-     */
-    void processResultValue(T value) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentInstanceOperation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentInstanceOperation.java
deleted file mode 100644
index b1912bc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentInstanceOperation.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.runtime.Component;
-
-/**
- * An operation that requires an instance of a component.
- * This is a simpler alternative to a {@link ComponentMethodAdvice} that avoids
- * the most common error case: forgetting to invoke {@link ComponentMethodInvocation#proceed()} (which
- * can be very difficult to track down!).
- * 
- * @since 5.2.0
- * @see TransformMethod#addOperationAfter(ComponentInstanceOperation)
- * @see TransformMethod#addOperationBefore(ComponentInstanceOperation)
- */
-public interface ComponentInstanceOperation
-{
-    /** Called to perform the desired operation on a component instance. */
-    public void invoke(Component instance);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentLayer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentLayer.java
deleted file mode 100644
index b872105..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentLayer.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation used to identify a service from the component layer that conflicts, in terms of service interface,
- * with a service from elsewhere. In particular, this is used to disambiguate {@link
- * org.apache.tapestry5.ioc.services.ClassFactory} which has one implementation (marked with {@link
- * org.apache.tapestry5.ioc.services.Builtin} and another with this annotation.
- */
-@Target(
-        { PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface ComponentLayer
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java
deleted file mode 100644
index 4f530ad..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMessages.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.*;
-
-
-/**
- * Marker annotation used to inject the correct {@link org.apache.tapestry5.services.InvalidationEventHub} service
- * responsible for validations when component message catalog (i.e., ".properties") files change.
- *
- * @since 5.1.0.0
- */
-@Target({ElementType.PARAMETER, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface ComponentMessages
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMethodAdvice.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMethodAdvice.java
deleted file mode 100644
index 7d58108..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMethodAdvice.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * An object that receives control around an "advised" method of a component. The advise can query or even replace
- * method parameters. After invoking {@link org.apache.tapestry5.services.ComponentMethodInvocation#proceed()}, the
- * advice may query and override thrown exceptions or the return value of the invocation.
- * 
- * @see TransformMethod#addAdvice(ComponentMethodAdvice)
- * @see ComponentInstanceOperation
- */
-public interface ComponentMethodAdvice
-{
-    void advise(ComponentMethodInvocation invocation);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMethodInvocation.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMethodInvocation.java
deleted file mode 100644
index dd14198..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentMethodInvocation.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentResourcesAware;
-
-/**
- * Encapsulates the parameters, thrown exceptions, and result of a method invocation, allowing a
- * {@link org.apache.tapestry5.services.ComponentMethodAdvice} to encapsulate the invocation. Extends Invocation with
- * the {@link org.apache.tapestry5.ComponentResources} of the component for which a method is being advised.
- */
-public interface ComponentMethodInvocation extends Invocation, ComponentResourcesAware
-{
-    /**
-     * Returns the component instance containing the advised method.
-     * 
-     * @since 5.2.0
-     */
-    Component getInstance();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentRequestFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentRequestFilter.java
deleted file mode 100644
index daded12..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentRequestFilter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-
-/**
- * Filter interface for {@link org.apache.tapestry5.services.ComponentRequestHandler}.
- */
-public interface ComponentRequestFilter
-{
-    /**
-     * Handler for a component action request which will trigger an event on a component and use the return value to
-     * send a response to the client (typically, a redirect to a page render URL).
-     *
-     * @param parameters defining the requst
-     * @param handler    next handler in the pipeline
-     */
-    void handleComponentEvent(ComponentEventRequestParameters parameters, ComponentRequestHandler handler)
-            throws IOException;
-
-    /**
-     * Invoked to activate and render a page. In certain cases, based on values returned when activating the page, a
-     * {@link org.apache.tapestry5.services.ComponentEventResultProcessor} may be used to send an alternate response
-     * (typically, a redirect).
-     *
-     * @param parameters defines the page name and activation context
-     * @param handler    next handler in the pipeline
-     */
-    void handlePageRender(PageRenderRequestParameters parameters, ComponentRequestHandler handler) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentRequestHandler.java
deleted file mode 100644
index e6b5ba3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentRequestHandler.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2009 Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import java.io.IOException;
-
-/**
- * A facade around {@link org.apache.tapestry5.services.ComponentEventRequestHandler} and {@link
- * org.apache.tapestry5.services.PageRenderRequestHandler} that allows for simplified filters that cover both types of
- * requests.
- *
- * @since 5.1.0.0
- */
-@UsesOrderedConfiguration(ComponentRequestFilter.class)
-public interface ComponentRequestHandler
-{
-    /**
-     * Handler for a component action request which will trigger an event on a component and use the return value to
-     * send a response to the client (typically, a redirect to a page render URL).
-     *
-     * @param parameters defining the request
-     */
-    void handleComponentEvent(ComponentEventRequestParameters parameters) throws IOException;
-
-    /**
-     * Invoked to activate and render a page. In certain cases, based on values returned when activating the page, a
-     * {@link org.apache.tapestry5.services.ComponentEventResultProcessor} may be used to send an alternate response
-     * (typically, a redirect).
-     *
-     * @param parameters defines the page name and activation context
-     */
-    void handlePageRender(PageRenderRequestParameters parameters) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentSource.java
deleted file mode 100644
index bd589d2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentSource.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.runtime.Component;
-
-/**
- * Used by classes that need to retrieve a component by its complete id, or a page by its logical page name or root
- * component class. The complete id is the logical name of the containing page, a colon, and the nested component id. It
- * may also just be the page name (for the root component of a page).
- */
-public interface ComponentSource
-{
-    /**
-     * Gets a component by its {@linkplain org.apache.tapestry5.ComponentResourcesCommon#getCompleteId() complete id}.
-     * If the component id is for a mixin, then the mixin attached to the component will be returned. A mixin's complete
-     * id is its container's complete id, suffixed with "$" and the mixin's id (its simple class name).
-     * 
-     * @param completeId
-     *            complete component id (case insensitive)
-     * @return the component
-     * @throws IllegalArgumentException
-     *             if the component can not be found
-     * @see org.apache.tapestry5.ComponentResourcesCommon#getCompleteId()
-     */
-    Component getComponent(String completeId);
-
-    /**
-     * Returns the page identified by its logical page name. A logical page name is the short form of a page name often
-     * emebedded into URLs.
-     * 
-     * @param pageName
-     *            the logical page name
-     * @return the corresponding page's root component
-     * @throws IllegalArgumentException
-     *             if the page can not be found
-     */
-    Component getPage(String pageName);
-
-    /**
-     * A convienience for obtaining a page instance via a class instance. This is provided so as to be refactoring
-     * safe. The pageClass is simply converted to a class name and this is used to locate a page instance.
-     * 
-     * @param pageClass
-     *            used to locate the page instance
-     * @return the page instance
-     */
-    Component getPage(Class pageClass);
-
-    /**
-     * Returns the <em>active page</em>, as defined by {@link RequestGlobals#getActivePageName()}. This is the primary
-     * page for handling the current request, the page which will be {@linkplain EventConstants#ACTIVATE activated} for
-     * the request.
-     * The identity of the active page is not known until the correct {@link Dispatcher} determines this.
-     * 
-     * @return the active page, or null if no active page is yet identified
-     * @since 5.2.0
-     */
-    Component getActivePage();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java
deleted file mode 100644
index 89bc0e0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentTemplates.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.*;
-
-
-/**
- * Marker annotation used to inject the correct {@link org.apache.tapestry5.services.InvalidationEventHub} service
- * responsible for validations when component template files change.
- *
- * @since 5.1.0.0
- */
-@Target({ElementType.PARAMETER, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface ComponentTemplates
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentValueProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentValueProvider.java
deleted file mode 100644
index 753d358..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ComponentValueProvider.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ComponentResources;
-
-/**
- * An object used to provide a value of a specific type to a component (represented by an
- * instance of {@link ComponentResources}). The provider will create and return the value
- * (some providers may be smart enough to cache a value, but should be implemented in
- * a thread-safe manner). Often the provider is an inner class of a
- * {@link ComponentClassTransformWorker}.
- * 
- * @param <T>
- *            type of object provided
- * @since 5.2.0
- */
-public interface ComponentValueProvider<T>
-{
-    /**
-     * Provide the object for the indicated component.
-     * 
-     * @param resources
-     *            Identifies the component
-     * @return the object
-     */
-    T get(ComponentResources resources);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Context.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Context.java
deleted file mode 100644
index 98be32f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Context.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.File;
-import java.net.URL;
-import java.util.List;
-
-/**
- * An API agnostic version of {@link javax.servlet.ServletContext}, used to bridge the gaps between the Servlet API and
- * the Portlet API.
- */
-public interface Context
-{
-    /**
-     * Returns a URL to a resource stored within the context. The path should start with a leading slash.
-     *
-     * @param path to the resource (with a leading slash)
-     * @return the URL for the path, or null if the path does not correspond to a file.
-     */
-    URL getResource(String path);
-
-    /**
-     * Attempts to find the actual file, on the file system, that would be provided by the servlet container for the
-     * given path (which must start with a leading slash). This may return null if no such file exists, or if the
-     * resource in question is packaged inside a WAR.  If packaged inside a WAR, the contents may be accessed via {@link
-     * #getResource(String)}.
-     *
-     * @param path to  the resource (with a leading slash)
-     * @return the underlying File, or null if no such file
-     */
-    File getRealFile(String path);
-
-    /**
-     * Returns an initial parameter value defined by servlet.
-     */
-    String getInitParameter(String name);
-
-    /**
-     * Looks for resources within the web application within the supplied path. The list will be recurively expanded, as
-     * necessary. The path must start with a leading slash, and usually ends with a slash as well.
-     *
-     * @param path to search for (should start with a leading slash)
-     * @return the matches, sorted alphabetically
-     */
-    List<String> getResourcePaths(String path);
-
-    /**
-     * Returns an attribute previously stored into the context with the given name.
-     *
-     * @param name used to retrieve the attribute
-     * @return the attribute, or null if not found
-     */
-    Object getAttribute(String name);
-
-    /**
-     * Returns the names of all attributes of the context, sorted alphabetically.
-     */
-    List<String> getAttributeNames();
-
-    /**
-     * Returns the MIME content type of the specified file, or null if no content type is known. MIME types are built-in
-     * to servlet containers and may be futher specified via the web application deployment descriptor.
-     *
-     * @param file name of file
-     * @return the presumed MIME content type, or null if not known
-     * @since 5.1.0.0
-     */
-    String getMimeType(String file);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextPathEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextPathEncoder.java
deleted file mode 100644
index 5956444..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextPathEncoder.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.EventContext;
-
-/**
- * A service to provide utilities needed for event context encoding and decoding to and from (partial) URL paths. This
- * is used for both component event contexts and page activation contexts.
- */
-public interface ContextPathEncoder
-{
-    /**
-     * Encodes a single value via the {@link ContextValueEncoder} service, returning the resulting string. Even null
-     * is encoded, as per {@link URLEncoder#encode(String)}.
-     * 
-     * @since 5.2.2
-     */
-    String encodeValue(Object value);
-
-    /**
-     * Encodes the context values into a path string. Each context value (if non-null) is first value encoded into a
-     * string via the {@link org.apache.tapestry5.services.ContextValueEncoder} service. Those values are then encoded,
-     * via {@link URLEncoder#encode(String)} into URL-safe strings. The URL-safe strings are then concatenated
-     * together, separated with "/" characters.
-     * 
-     * @param context
-     *            an array of objects to encode as the context (may be null)
-     * @return the path-encoded context, or the blank string if the context is empty
-     */
-    String encodeIntoPath(Object[] context);
-
-    /**
-     * Encodes the context into a string. Returns the empty string if the context is empty.
-     * 
-     * @param context
-     *            to encode
-     * @return encoded values separated by "/" characters, or the empty string
-     * @since 5.1.0.2
-     */
-    String encodeIntoPath(EventContext context);
-
-    /**
-     * Inverse of {@link #encodeIntoPath(Object[])}; the path is split into strings, and the string are decoded and
-     * constructed into an {@link org.apache.tapestry5.EventContext}.
-     * 
-     * @param path
-     *            to decode, possibly empty or null
-     * @return corresponding event context
-     */
-    EventContext decodePath(String path);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextProvider.java
deleted file mode 100644
index 72f5171..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextProvider.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation to select the correct {@link AssetFactory} for injection. The marked interface will provide assets
- * located in the web application context.
- */
-@Target(
-        { ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface ContextProvider
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java
deleted file mode 100644
index 60367d4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ContextValueEncoder.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Used to convert values used in event contexts to client string representations and back.
- *
- * @See org.apache.tapestry5.ValueEncoder
- * @see org.apache.tapestry5.ioc.services.TypeCoercer
- */
-public interface ContextValueEncoder
-{
-    /**
-     * Converts a context value into a client-side string (that will utltimately be encoded into a URL).
-     *
-     * @param value to convert (may not be null)
-     * @return string representation of the value
-     * @see org.apache.tapestry5.ValueEncoder#toClient(Object)
-     */
-    String toClient(Object value);
-
-    /**
-     * Converts a client value back into a server-side object.
-     *
-     * @param requiredType required type to convert the string to
-     * @param clientValue  value obtained from context passed from client
-     * @return the client value converted or coerced into a server value
-     * @see org.apache.tapestry5.ValueEncoder#toValue(String)
-     */
-    <T> T toValue(Class<T> requiredType, String clientValue);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Cookies.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Cookies.java
deleted file mode 100644
index 4bcd653..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Cookies.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Used by other services to obtain cookie values for the current request, or to write cookie values as part of the
- * request.  Note that when writing cookies, the cookie's secure flag will match {@link
- * org.apache.tapestry5.services.Request#isSecure()}.
- */
-public interface Cookies
-{
-    /**
-     * Returns the value of the first cookie whose name matches. Returns null if no such cookie exists. This method is
-     * only aware of cookies that are part of the incoming request; it does not know about additional cookies added
-     * since then (via {@link #writeCookieValue(String, String)}).
-     */
-    String readCookieValue(String name);
-
-    /**
-     * Creates or updates a cookie value. The value is stored using a max age (in seconds) defined by the symbol
-     * <code>org.apache.tapestry5.default-cookie-max-age</code>. The factory default for this value is the equivalent of
-     * one week.
-     */
-
-    void writeCookieValue(String name, String value);
-
-    /**
-     * As with {@link #writeCookieValue(String, String)} but an explicit maximum age may be set.
-     *
-     * @param name   the name of the cookie
-     * @param value  the value to be stored in the cookie
-     * @param maxAge the maximum age, in seconds, to store the cookie
-     */
-
-    void writeCookieValue(String name, String value, int maxAge);
-
-    /**
-     * As with {@link #writeCookieValue(String, String)} but an explicit path may be set.
-     */
-    void writeCookieValue(String name, String value, String path);
-
-    /**
-     * As with {@link #writeCookieValue(String, String)} but an explicit domain may be set.
-     */
-    void writeDomainCookieValue(String name, String value, String domain);
-
-    /**
-     * As with {@link #writeCookieValue(String, String)} but an explicit domain and maximum age may be set.
-     */
-    void writeDomainCookieValue(String name, String value, String domain, int maxAge);
-
-    /**
-     * As with {@link #writeCookieValue(String, String, String)} but an explicit domain and path may be set.
-     */
-    void writeCookieValue(String name, String value, String path, String domain);
-
-    /**
-     * Removes a previously written cookie, by writing a new cookie with a maxAge of 0.
-     */
-    void removeCookieValue(String name);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Core.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Core.java
deleted file mode 100644
index f9b904e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Core.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation for services that are provided by the Tapestry core module.
- */
-@Target(
-{ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface Core
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DataTypeAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DataTypeAnalyzer.java
deleted file mode 100644
index 047354e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DataTypeAnalyzer.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-
-/**
- * Used by {@link BeanModelSource} to identify the type of data associated with a particular property (represented as a
- * {@link PropertyAdapter}). The data type is a string used to determine what kind of interface to use for displaying
- * the value of the property, or what kind of interface to use for editing the value of the property. Common property
- * types are "text", "enum", "checkbox", but the list is extensible.
- * <p/>
- * <p>Different strategies for identifying the data type are encapsulated in the DataTypeAnalyzer service, forming a
- * chain of command.
- * <p/>
- * The DefaultDataTypeAnalyzer service maps property types to data type names.
- * <p/>
- * The DataTypeAnalyzer service is an extensible {@linkplain org.apache.tapestry5.ioc.services.ChainBuilder chain of
- * command), that (by default) includes {@link org.apache.tapestry5.internal.services.AnnotationDataTypeAnalyzer} and
- * the DefaultDataTypeAnalyzer service (ordered last).   It uses an ordered configuration.
- *
- * @see Grid
- * @see BeanEditForm
- * @see BeanBlockSource
- */
-@UsesOrderedConfiguration(DataTypeAnalyzer.class)
-@UsesMappedConfiguration(key = Class.class, value = String.class)
-public interface DataTypeAnalyzer
-{
-    /**
-     * Identifies the data type, if known, or returns null if not known.
-     */
-    String identifyDataType(PropertyAdapter adapter);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java
deleted file mode 100644
index 6e1eaff..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DefaultObjectRenderer.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-
-/**
- * Default object renderer as a catch all for class <code>Object</code>.
- * 
- * @since 5.2.0
- */
-public class DefaultObjectRenderer implements ObjectRenderer<Object>
-{
-    public void render(Object object, MarkupWriter writer)
-    {
-        try
-        {
-            writer.write(String.valueOf(object));
-        }
-        catch (Exception ex)
-        {
-            writer.element("span", "class", "t-render-object-error");
-
-            String message = ex.getMessage();
-
-            String exceptionClassName = ex.getClass().getName();
-
-            String exceptionId = message == null ? exceptionClassName : String.format("(%s) %s", ex
-                    .getClass().getName(), message);
-
-            writer.writef("Exception rendering description for object of type %s: %s", object
-                    .getClass().getName(), exceptionId);
-
-            writer.end();
-
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java
deleted file mode 100644
index 58ef0c8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DelegatingRequest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2009, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Class that wraps an {@linkplain Request}, delegating all its methods.
- * 
- * @since 5.1.0.1
- */
-public class DelegatingRequest implements Request
-{
-
-    private Request request;
-
-    /**
-     * No-arg constructor. It should only be used for testing purposes.
-     */
-    public DelegatingRequest()
-    {
-    }
-
-    /**
-     * Constructor that receives a {@linkplain Request}.
-     * 
-     * @param request
-     *            a {@link Request}. It cannot be null.
-     */
-    public DelegatingRequest(Request request)
-    {
-        setRequest(request);
-    }
-
-    /**
-     * Sets the delegate request.
-     * 
-     * @param request
-     *            a {@link Request}. It cannot be null.
-     */
-    public void setRequest(Request request)
-    {
-        assert request != null;
-        this.request = request;
-    }
-
-    public Object getAttribute(String name)
-    {
-        return request.getAttribute(name);
-    }
-
-    public String getContextPath()
-    {
-        return request.getContextPath();
-    }
-
-    public long getDateHeader(String name)
-    {
-        return request.getDateHeader(name);
-    }
-
-    public String getHeader(String name)
-    {
-        return request.getHeader(name);
-    }
-
-    public List<String> getHeaderNames()
-    {
-        return request.getHeaderNames();
-    }
-
-    public Locale getLocale()
-    {
-        return request.getLocale();
-    }
-
-    public String getMethod()
-    {
-        return request.getMethod();
-    }
-
-    public String getParameter(String name)
-    {
-        return request.getParameter(name);
-    }
-
-    public List<String> getParameterNames()
-    {
-        return request.getParameterNames();
-    }
-
-    public String[] getParameters(String name)
-    {
-        return request.getParameters(name);
-    }
-
-    public String getPath()
-    {
-        return request.getPath();
-    }
-
-    public String getServerName()
-    {
-        return request.getServerName();
-    }
-
-    public Session getSession(boolean create)
-    {
-        return request.getSession(create);
-    }
-
-    public boolean isRequestedSessionIdValid()
-    {
-        return request.isRequestedSessionIdValid();
-    }
-
-    public boolean isSecure()
-    {
-        return request.isSecure();
-    }
-
-    public boolean isXHR()
-    {
-        return request.isXHR();
-    }
-
-    public void setAttribute(String name, Object value)
-    {
-        request.setAttribute(name, value);
-    }
-
-    public int getLocalPort()
-    {
-        return request.getLocalPort();
-    }
-
-    public int getServerPort()
-    {
-        return request.getServerPort();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Dispatcher.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Dispatcher.java
deleted file mode 100644
index c3633f7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Dispatcher.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import java.io.IOException;
-
-/**
- * A dispatcher is responsible for recognizing an incoming request. Dispatchers form an ordered chain of command, with
- * each dispatcher responsible for recognizing requests that it can process.  This is the interface for the
- * MasterDispatcher service, which takes an ordered configuration of Dispatchers (that is, the chain of command
- * pattern). If no dispatcher processes the request, it will utltimately be passed off to the servlet container.
- */
-@UsesOrderedConfiguration(Dispatcher.class)
-public interface Dispatcher
-{
-    /**
-     * Analyzes the incoming request and performs an appropriate operation for each.
-     *
-     * @return true if a response was delivered, false if the dispatcher did not handle the request (and a search for a
-     *         handler should continue)
-     */
-    boolean dispatch(Request request, Response response) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DisplayBlockContribution.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DisplayBlockContribution.java
deleted file mode 100644
index 231e7a9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/DisplayBlockContribution.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.corelib.components.BeanDisplay;
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.corelib.components.PropertyDisplay;
-
-/**
- * Contribution to {@link BeanBlockSource} identifying a block that is used to display a property.
- * 
- * @see BeanDisplay
- * @see PropertyDisplay
- * @see Grid
- * @see PropertyOutputContext
- * @since 5.2.2
- */
-public class DisplayBlockContribution extends BeanBlockContribution
-{
-    public DisplayBlockContribution(String dataType, String pageName, String blockId)
-    {
-        super(dataType, pageName, blockId, false);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EditBlockContribution.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EditBlockContribution.java
deleted file mode 100644
index d0c22be..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EditBlockContribution.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.corelib.components.BeanEditor;
-import org.apache.tapestry5.corelib.components.PropertyEditor;
-
-/**
- * Contribution to {@link BeanBlockSource} identifying a block that is used to edit a property.
- * 
- * @see BeanEditor
- * @see BeanEditForm
- * @see PropertyEditor
- * @see PropertyEditContext
- * @since 5.2.2
- */
-public class EditBlockContribution extends BeanBlockContribution
-{
-    public EditBlockContribution(String dataType, String pageName, String blockId)
-    {
-        super(dataType, pageName, blockId, true);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Environment.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Environment.java
deleted file mode 100644
index f044d01..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Environment.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.NoSuchElementException;
-
-/**
- * Provides access to environment objects, which are almost always provided to enclosed components by enclosing
- * components. Environmental services are a form of very late binding.
- * <p/>
- * The Environment acts like a collection of stacks. Each stack contains environmental objects of a given type. Most
- * often, a stack has zero or one elements, but on occasion, a particular component will push an override onto the stack
- * for the benefit of the components it encloses.
- *
- * @see org.apache.tapestry5.annotations.Environmental
- * @see org.apache.tapestry5.services.EnvironmentalShadowBuilder
- */
-public interface Environment
-{
-    /**
-     * Peeks at the current top of the indicated stack.
-     *
-     * @param <T>  the type of environmental object
-     * @param type class used to select the object
-     * @return the current object of that type, or null if no service of that type has been added
-     */
-    <T> T peek(Class<T> type);
-
-    /**
-     * Peeks at the current top of the indicated stack (which must have a non-null value).
-     *
-     * @param <T>  the type of environmental object
-     * @param type class used to select the object
-     * @return the current object of the specified type
-     * @throws RuntimeException if no service of that type has been added
-     */
-    <T> T peekRequired(Class<T> type);
-
-    /**
-     * Removes and returns the top environmental object of the selected type.
-     *
-     * @param <T>  the type of environmental object
-     * @param type class used to select the object
-     * @return the object just removed
-     * @throws NoSuchElementException if the environmental stack (for the specified type) is empty
-     */
-    <T> T pop(Class<T> type);
-
-    /**
-     * Pushes a new service onto the stack. The old service at the top of the stack is returned (it may be null).
-     *
-     * @param <T>      the type of environmental object
-     * @param type     class used to select the object
-     * @param instance the service object
-     * @return the previous top service
-     */
-    <T> T push(Class<T> type, T instance);
-
-    /**
-     * Clears all stacks; used when initializing the Environment before a render.
-     */
-    void clear();
-
-    /**
-     * For some type, returns a temporary access object for the type. The access object is efficient because it ties
-     * directly to the thread's instance of the Environment service, it also caches the current value. <p>The access
-     * object must be discarded at the end of the request (it will be unusable at that point anyway).
-     *
-     * @param type type of environmental object
-     * @param <T>
-     * @return access object that can be used to see the current environmental object of the type
-     * @since 5.0.19
-     * @deprecated No longer gives a performance advantage due to pool-less pages
-     */
-    <T> EnvironmentalAccess<T> getAccess(Class<T> type);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EnvironmentalAccess.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EnvironmentalAccess.java
deleted file mode 100644
index ebdf3b7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EnvironmentalAccess.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Provides efficient, cached access to an environmental object.
- *
- * @param <T>
- * @see org.apache.tapestry5.services.Environment#getAccess(Class)
- * @since 5.0.19
- * @deprecated No longer gives a performance advantage due to pool-less pages
- */
-public interface EnvironmentalAccess<T>
-{
-
-    /**
-     * Peeks at the current top of the configured type's stack.
-     *
-     * @return current value of type, or null.
-     */
-    T peek();
-
-    /**
-     * Peeks at the current top of the configured type's stack.
-     *
-     * @return the current value
-     * @throws RuntimeException if no environmental of that type has been added
-     */
-    T peekRequired();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EnvironmentalShadowBuilder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EnvironmentalShadowBuilder.java
deleted file mode 100644
index 127541a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/EnvironmentalShadowBuilder.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
-
-/**
- * Much like {@link PropertyShadowBuilder}, except that instead of accessing a property of some other service, it
- * accesses a value from within the {@link Environment} service. This is useful for defining a new service that can be
- * injected into other services (whereas the {@link Environmental} annotation may only be used within component
- * classes).
- */
-public interface EnvironmentalShadowBuilder
-{
-    /**
-     * Returns a proxy that delegates all methods to an object obtained from {@link Environment#peekRequired(Class)}.
-     * Note that at the time this method is invoked, the Environment service may still be virtual, and will often not
-     * yet have been loaded with values, and that's OK, the resolution is deferred to the instant a method is invoked.
-     *
-     * @param <T>
-     * @param serviceType the service type, which is used to obtained the delegate instance
-     * @return a proxy to the service
-     */
-    <T> T build(Class<T> serviceType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ExceptionReporter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ExceptionReporter.java
deleted file mode 100644
index f620838..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ExceptionReporter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Interface implemented by a page used for reporting exceptions.
- *
- * @see org.apache.tapestry5.services.RequestExceptionHandler
- */
-public interface ExceptionReporter
-{
-    /**
-     * Used to communicate to the page what exception is to be reported.
-     *
-     * @param exception runtime exception thrown during processing of the request
-     */
-    void reportException(Throwable exception);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldAccess.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldAccess.java
deleted file mode 100644
index eb794be..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldAccess.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Used when accessing the private instance variables of a component instance.
- * 
- * @see TransformField#getAccess()
- * @since 5.2.0
- */
-public interface FieldAccess
-{
-    /**
-     * Reads the value of the field of the provided instance.
-     * 
-     * @param instance
-     *            object containing field to read
-     */
-    Object read(Object instance);
-
-    /**
-     * Updates the value of the field within the instance.
-     * 
-     * @param instance
-     *            object containing field to update
-     * @param value
-     *            new value for field
-     */
-    void write(Object instance, Object value);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldFilter.java
deleted file mode 100644
index a123c06..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldFilter.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.func.Predicate;
-
-/**
- * Used by {@link ClassTransformation#findFields(FieldFilter)} to identify which fields to keep.
- * 
- * @deprecated New APIs use {@link Predicate} instead
- */
-public interface FieldFilter
-{
-    boolean accept(String fieldName, String fieldType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java
deleted file mode 100644
index f14159d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldTranslatorSource.java
+++ /dev/null
@@ -1,69 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-
-import java.util.Locale;
-
-/**
- * For a particular field, generates the default {@link org.apache.tapestry5.FieldTranslator} for the field.
- */
-public interface FieldTranslatorSource
-{
-    /**
-     * Common shorthand for {@link #createDefaultTranslator(org.apache.tapestry5.Field, String,
-     * org.apache.tapestry5.ioc.Messages, java.util.Locale, Class, org.apache.tapestry5.ioc.AnnotationProvider)}.
-     *
-     * @param resources     of component who owns the parameter
-     * @param parameterName name of parameter used to determine the property type
-     * @return field translator, or null
-     */
-    FieldTranslator createDefaultTranslator(ComponentResources resources, String parameterName);
-
-    /**
-     * Creates a {@link org.apache.tapestry5.FieldTranslator} for the given property, or returns null if one can't be
-     * constructed. The return value is null if the property type is not known, or if there is no {@link
-     * org.apache.tapestry5.Translator} available from the {@link org.apache.tapestry5.services.TranslatorSource} that
-     * is appropriate for the property type.
-     *
-     * @param field               for which a translator is needed
-     * @param overrideId          id used when looking in the overrideMessages for a message override
-     * @param overrideMessages    location to look for overriding messages
-     * @param locale              to localize validation messages to
-     * @param propertyType        type of property editted by the field, used to select the Translator
-     * @param propertyAnnotations annotations on the property (not currently used)
-     * @return the field translator, or null
-     */
-    FieldTranslator createDefaultTranslator(Field field, String overrideId, Messages overrideMessages, Locale locale,
-                                            Class propertyType, AnnotationProvider propertyAnnotations);
-
-    /**
-     * Wraps a {@link org.apache.tapestry5.Translator} as a FieldTranslator.
-     */
-    FieldTranslator createTranslator(Field field, String overrideId, Messages overrideMessages, Locale locale,
-                                     Translator translator);
-
-    /**
-     * Creates a translator (used by the {@link org.apache.tapestry5.BindingConstants#TRANSLATE translate: binding
-     * prefix}).
-     */
-    FieldTranslator createTranslator(ComponentResources componentResources, String translatorName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java
deleted file mode 100644
index 791884b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorDefaultSource.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-
-import java.util.Locale;
-
-/**
- * For a particular field, generates the default validation for the field, in accordance with a number of factors and
- * contributions.
- */
-public interface FieldValidatorDefaultSource
-{
-    /**
-     * Analyzes the property type and property annotations to determine the default set of validations for the property,
-     * which are wrapped to form a {@link org.apache.tapestry5.FieldValidator} for a field.
-     *
-     * @param field               Field component for which a validator is being created
-     * @param overrideId          the id of the component, used to locate related messages for labels and errors
-     * @param overrideMessages    where to search for label and error messages
-     * @param locale              locale used for locating messages
-     * @param propertyType        type of property bound to the editting parameter of the field (typically, the
-     *                            parameter named "value").
-     * @param propertyAnnotations source of annotations for the property being editted
-     * @return a validator reflecting all default validations for the field
-     */
-    FieldValidator createDefaultValidator(Field field, String overrideId, Messages overrideMessages, Locale locale,
-                                          Class propertyType, AnnotationProvider propertyAnnotations);
-
-    /**
-     * A convienience for the full version; assumes that the resources are associated with a {@link
-     * org.apache.tapestry5.Field}.
-     *
-     * @param resources
-     * @param parameterName
-     * @return
-     */
-    FieldValidator createDefaultValidator(ComponentResources resources, String parameterName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java
deleted file mode 100644
index 9dcd216..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FieldValidatorSource.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.Validator;
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-import java.util.Locale;
-
-/**
- * Used to create {@link org.apache.tapestry5.FieldValidator}s for a particular {@link org.apache.tapestry5.Field}
- * component.
- */
-@UsesMappedConfiguration(Validator.class)
-public interface FieldValidatorSource
-{
-    /**
-     * Creates the validator. The error message associated with the field validator usually comes from the {@link
-     * ValidationMessagesSource} (using the validator's {@link Validator#getMessageKey() message key}). However, if the
-     * container component of the field defines a message key <code><i>id</i>-<i>validator</i> (where id is the simple
-     * id of the field component, and validator is the validatorType), then that message is used instead. This allows
-     * you to override the message for a particular validation of a particular field.
-     *
-     * @param field           the field for which a validator is to be created
-     * @param validatorType   used to select the {@link org.apache.tapestry5.Validator} that forms the core of the
-     *                        {@link org.apache.tapestry5.FieldValidator}
-     * @param constraintValue a value used to configure the validator, or null if the validator is not configurarable
-     * @return the field validator for the field
-     */
-    FieldValidator createValidator(Field field, String validatorType, String constraintValue);
-
-    /**
-     * Full featured version of {@link #createValidator(Field, String, String)} used in situations where the container
-     * of the field is not necesarrilly the place to look for override messages, and the id of the field is not the key
-     * to use when checking. The {@link BeanEditForm} is an example of this.
-     *
-     * @param field            the field for which a validator is to be created
-     * @param validatorType    used to select the {@link org.apache.tapestry5.Validator} that forms the core of the
-     *                         {@link org.apache.tapestry5.FieldValidator}
-     * @param constraintValue  a value used to configure the validator, or null if the validator is not configurable
-     * @param overrideId       the base id used when searching for validator message overrides (this would normally be
-     *                         the field component's simple id)
-     * @param overrideMessages the message catalog to search for override messages (this would normally be the catalog
-     *                         for the container of the field component)
-     * @param locale           locale used when retrieving default validation messages from the {@link
-     *                         org.apache.tapestry5.services.ValidationMessagesSource}
-     * @return the field validator for the field
-     */
-    FieldValidator createValidator(Field field, String validatorType, String constraintValue,
-                                   String overrideId, Messages overrideMessages, Locale locale);
-
-    /**
-     * Creates a set of validators. The specification is a string used to identify and configure the individual
-     * validators. The specification is a comma-separated list of terms. Each term is a validator type name and an
-     * optional constraint value (seperated by an equals sign).
-     *
-     * @param field
-     * @param specification
-     * @return a composite field validator
-     */
-    FieldValidator createValidators(Field field, String specification);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java
deleted file mode 100644
index 4e8e9f6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/FormSupport.java
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.ComponentAction;
-import org.apache.tapestry5.Field;
-
-/**
- * Services provided by an enclosing Form control component to the various form element components it encloses.
- * Implements {@link org.apache.tapestry5.ClientElement}, to share the id of the enclosing form.
- *
- * @see org.apache.tapestry5.Field
- */
-public interface FormSupport extends ClientElement
-{
-    /**
-     * Allocates a unique (within the form) control name for some enclosed component, based on the component's id.
-     *
-     * @param id the component's id
-     * @return a unique string, usually the component's id, but sometime extended with a unique number or string
-     */
-    String allocateControlName(String id);
-
-    /**
-     * Stores an action for execution during a later request.  If the action contains any mutable state, it should be in
-     * its final state before invoking this method and its internal state should not be changed subsequently.
-     */
-    <T> void store(T component, ComponentAction<T> action);
-
-    /**
-     * As with {@link #store(Object, org.apache.tapestry5.ComponentAction)}}, but the action is also invoked
-     * immediately. This is useful for defining an action that should occur symmetrically in both the render request and
-     * the form submission's action request.
-     *
-     * @param component component against which to trigger the action
-     * @param action    the action that will be triggered (and passed the component)
-     */
-    <T> void storeAndExecute(T component, ComponentAction<T> action);
-
-    /**
-     * Defers a command until the end of the form submission. The command will be executed <em>before</em> the Form's
-     * validate notification, but after all other submit actions for the form have been processed. This is used,
-     * primarily, to coordinate validations or other operations that involve multiple components, when the order of the
-     * components can not be determined. During a form render, runnables are executed after the body of the form has
-     * rendered.
-     *
-     * @param command to be executed
-     */
-    void defer(Runnable command);
-
-    /**
-     * Sets the encoding type for the Form. This should only be set once, and if
-     *
-     * @param encodingType MIME type indicating type of encoding for the form
-     * @throws IllegalStateException if the encoding type has already been set to a value different than the supplied
-     */
-    void setEncodingType(String encodingType);
-
-    /**
-     * Collects field validation information. A Form may turn off client-side validation, in which case these calls will
-     * be ignored.
-     *
-     * @param field          for which validation is being generated
-     * @param validationName name of validation method (see Tapestry.Validation in tapestry.js)
-     * @param message        the error message to display if the field is invalid
-     * @param constraint     additional constraint value, or null for validations that don't require a constraint
-     */
-    void addValidation(Field field, String validationName, String message, Object constraint);
-
-    /**
-     * Return true if client validation is enabled for this form, false otherwise.
-     */
-    boolean isClientValidationEnabled();
-
-    /**
-     * Returns the complete id of the underlying Form component.  This is needed by {@link
-     * org.apache.tapestry5.corelib.components.FormInjector}.
-     */
-    String getFormComponentId();
-
-    /**
-     * Id used as a prefix when searching {@link org.apache.tapestry5.ioc.Messages} for validation messages and
-     * constraints. This is normally the simple id of the form.
-     *
-     * @return validation id string
-     * @see org.apache.tapestry5.services.FieldTranslatorSource
-     * @see org.apache.tapestry5.services.FieldValidatorSource
-     */
-    String getFormValidationId();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Heartbeat.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Heartbeat.java
deleted file mode 100644
index f3db6a1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Heartbeat.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.annotations.HeartbeatDeferred;
-
-/**
- * Allows for deferred execution of logic, useful when trying to get multiple components to coordinate behavior. A
- * component may add a command to be executed "{@linkplain #end() at the end of the heartbeat}". The classic example of
- * this is a Label and the field it labels; since we don't know which order the two will render, we can't tell if the
- * field's id is correct until after both have rendered.
- * <p/>
- * The Heartbeat is injected into components via the {@link org.apache.tapestry5.annotations.Environmental} annotation.
- */
-public interface Heartbeat
-{
-    /**
-     * Begins a new Heartbeat. Heartbeats nest. Every call to begin() should be matched by a call to {@link #end()}.
-     */
-    void begin();
-
-    /**
-     * Executes all commands since the most recent {@link #begin()}.
-     */
-    void end();
-
-    /**
-     * Adds a new command to the current Heartbeat. The command will be executed by {@link #end()}.
-     * 
-     * @param command
-     *            command to be executed at the end of the heartbeat
-     * @see HeartbeatDeferred
-     */
-    void defer(Runnable command);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HiddenFieldLocationRules.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HiddenFieldLocationRules.java
deleted file mode 100644
index 092d016..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HiddenFieldLocationRules.java
+++ /dev/null
@@ -1,38 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Provides some assistance in determining <em>where</em> to place a hidden field based on standard (X)HTML elements.
- * <p/>
- * The service works based on a mapped service contribution; keys are the element names, values area {@link
- * org.apache.tapestry5.services.RelativeElementPosition}.
- */
-@UsesMappedConfiguration(RelativeElementPosition.class)
-public interface HiddenFieldLocationRules
-{
-    /**
-     * Checks the element to see if a hidden field may be placed inside the element.
-     */
-    boolean placeHiddenFieldInside(Element element);
-
-    /**
-     * Checks the element to see if a hidden field may be placed after the element (as a sibling element).
-     */
-    boolean placeHiddenFieldAfter(Element element);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpError.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpError.java
deleted file mode 100644
index ef2bf79..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpError.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.services;
-
-/**
- * An event handler method may return an instance of this class to send an error response to the client.
- * 
- * @since 5.2.0
- */
-public final class HttpError
-{
-    private final int statusCode;
-
-    private final String message;
-    
-    public HttpError(int statusCode, String message)
-    {
-        this.statusCode = statusCode;
-        
-        this.message = message;
-    }
-    
-
-    /**
-     * Returns the error status code.
-     */
-    public int getStatusCode()
-    {
-        return statusCode;
-    }
-
-    /**
-     * Returns error message.
-     */
-    public String getMessage()
-    {
-        return message;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpServletRequestFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpServletRequestFilter.java
deleted file mode 100644
index 537e82c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpServletRequestFilter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * Filter interface for {@link org.apache.tapestry5.services.HttpServletRequestHandler}.
- */
-public interface HttpServletRequestFilter
-{
-    /**
-     * Filter interface for the HttpServletRequestHandler pipeline. A filter should delegate to the handler. It may
-     * perform operations before or after invoking the handler, and may modify the request and response passed in to the
-     * handler.
-     *
-     * @return true if the request has been handled, false otherwise
-     */
-    boolean service(HttpServletRequest request, HttpServletResponse response, HttpServletRequestHandler handler)
-            throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpServletRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpServletRequestHandler.java
deleted file mode 100644
index bb9d761..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/HttpServletRequestHandler.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * The first step in handing an incoming request to the {@linkplain org.apache.tapestry5.TapestryFilter servlet filter},
- * this constructed as a {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder pipeline}.  The main
- * implementation hands off to the {@link org.apache.tapestry5.services.RequestHandler} service.
- */
-@UsesOrderedConfiguration(HttpServletRequestFilter.class)
-public interface HttpServletRequestHandler
-{
-    /**
-     * Returns true if the request was handled, false otherwise.
-     */
-    boolean service(HttpServletRequest request, HttpServletResponse response) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InitializeActivePageName.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InitializeActivePageName.java
deleted file mode 100644
index c9c6e3d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InitializeActivePageName.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-
-/**
- * Filter contributed into the {@link ComponentRequestHandler} pipeline to set the
- * {@link RequestGlobals#getActivePageName() activePageName property}.
- * 
- * @since 5.2.0
- */
-public class InitializeActivePageName implements ComponentRequestFilter
-{
-    private final RequestGlobals globals;
-
-    public InitializeActivePageName(RequestGlobals globals)
-    {
-        this.globals = globals;
-    }
-
-    public void handleComponentEvent(ComponentEventRequestParameters parameters,
-            ComponentRequestHandler handler) throws IOException
-    {
-        globals.storeActivePageName(parameters.getActivePageName());
-
-        handler.handleComponentEvent(parameters);
-    }
-
-    public void handlePageRender(PageRenderRequestParameters parameters,
-            ComponentRequestHandler handler) throws IOException
-    {
-        globals.storeActivePageName(parameters.getLogicalPageName());
-
-        handler.handlePageRender(parameters);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InjectionProvider.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InjectionProvider.java
deleted file mode 100644
index cba4524..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InjectionProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.model.MutableComponentModel;
-
-/**
- * Provides some form of injection when the value for an {@link org.apache.tapestry5.ioc.annotations.Inject} annotation is
- * present. In this case, the provider is responsible for determining the value to be injected from the field name and
- * field type.
- * <p/>
- * This interface will be used as part of a {@link org.apache.tapestry5.ioc.services.ChainBuilder chain of command}.
- */
-public interface InjectionProvider
-{
-    /**
-     * Peform the injection, if possible. Most often, this will result in a call to {@link
-     * ClassTransformation#injectField(String, Object)}. The caller is responsible for invoking {@link
-     * ClassTransformation#claimField(String, Object)}.
-     *
-     * @param fieldName      the name of the field requesting injection
-     * @param fieldType      the type of the field
-     * @param locator        allows services to be located
-     * @param transformation allows the code for the class to be transformed
-     * @param componentModel defines the relevant aspects of the component
-     * @return true if an injection has been made (terminates the command chain), false to continue down the chain
-     */
-    boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
-                             ClassTransformation transformation, MutableComponentModel componentModel);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InvalidationEventHub.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InvalidationEventHub.java
deleted file mode 100644
index 5050e81..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InvalidationEventHub.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * An object which manages a list of {@link org.apache.tapestry5.services.InvalidationListener}s. There are multiple
- * event hub services implementing this interface, each with a specific marker annotation; each can register listeners
- * and fire events; these are based on the type of resource that has been invalidated. Tapestry has built-in support
- * for: <dl> <dt>message catalog resources <dd>{@link org.apache.tapestry5.services.ComponentMessages} marker annotation
- * <dt>component templates <dd>{@link org.apache.tapestry5.services.ComponentTemplates}  marker annotation <dt>component
- * classes <dd>{@link org.apache.tapestry5.services.ComponentClasses} marker annotation </dl>
- *
- * @since 5.1.0.0
- */
-public interface InvalidationEventHub
-{
-    /**
-     * Adds a listener, who needs to know when an underlying resource of a given category has changed (so that the
-     * receiver may discard any cached data that may  have been invalidated).
-     */
-    void addInvalidationListener(InvalidationListener listener);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InvalidationListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InvalidationListener.java
deleted file mode 100644
index 1732cbe..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/InvalidationListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Interface for objects that may cache information that can be invalidated. Invalidation occurs when external files,
- * from which in-memory data is cached, is determined to have changed. Granularity is very limited; when any external
- * file is found to have changed, the event is fired (with the expectation that the cleared cache will be repopulated as
- * necessary).
- *
- * @see org.apache.tapestry5.services.InvalidationEventHub
- * @since 5.1.0.0
- */
-public interface InvalidationListener
-{
-    /**
-     * Invoked to indicate that some object is invalid. The receiver should clear its cache.
-     */
-    void objectWasInvalidated();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java
deleted file mode 100644
index 016dbe7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LibraryMapping.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2006, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Used to configure the {@link ComponentClassResolver}, to allow it to map prefixes to library root packages (the
- * application namespace is a special case of this). In each case, a prefix on the path is mapped to a package. Starting
- * with Tapestry 5.2, the path prefix may not contain a slash character.
- * <p/>
- * The root package name should have a number of sub-packages:
- * <dl>
- * <dt>pages</dt>
- * <dd>contains named pages</dd>
- * <dt>components</dt>
- * <dd>contains components</dd>
- * <dt>mixins</dt>
- * <dd>contains component mixins</dd>
- * <dt>base</dt>
- * <dd>contains base classes</dd>
- * </dl>
- * 
- * @see org.apache.tapestry5.services.TapestryModule#contributeComponentClassResolver(org.apache.tapestry5.ioc.Configuration)
- */
-public final class LibraryMapping
-{
-    private final String pathPrefix, rootPackage;
-
-    public LibraryMapping(String pathPrefix, String rootPackage)
-    {
-        assert InternalUtils.isNonBlank(pathPrefix);
-        assert InternalUtils.isNonBlank(rootPackage);
-        if (pathPrefix.contains("/"))
-            throw new RuntimeException(
-                    "LibraryMapping path prefixes may no longer contain slashes (as of Tapestry 5.2).");
-
-        this.pathPrefix = pathPrefix;
-        this.rootPackage = rootPackage;
-    }
-
-    public String getPathPrefix()
-    {
-        return pathPrefix;
-    }
-
-    public String getRootPackage()
-    {
-        return rootPackage;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("LibraryMapping[%s, %s]", pathPrefix, rootPackage);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationHub.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationHub.java
deleted file mode 100644
index 3775ecf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationHub.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * A service that allows listeners to be registered to learn about {@link org.apache.tapestry5.Link} creation.
- */
-public interface LinkCreationHub
-{
-    /**
-     * Adds a listener. If the scope of the listener is per-thread, then it must be removed.
-     * 
-     * @param listener
-     */
-    void addListener(LinkCreationListener listener);
-
-    /**
-     * Removes a previously added listener.
-     * 
-     * @param listener
-     */
-    void removeListener(LinkCreationListener listener);
-
-    /**
-     * Adds a listener. If the scope of the listener is per-thread, then it must be removed.
-     * 
-     * @param listener
-     * @since 5.2.0
-     */
-    void addListener(LinkCreationListener2 listener);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationListener.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationListener.java
deleted file mode 100644
index 4219360..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationListener.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Link;
-
-/**
- * Listener interface for objects that need to be notified about newly created links.
- * 
- * @see org.apache.tapestry5.services.LinkCreationHub
- * @deprecated Use {@link LinkCreationListener2} instead
- */
-public interface LinkCreationListener
-{
-    /**
-     * Invoked when a page link (a link that renders a page) is created. The listener may decide to encode additional
-     * query parameters into the link (via {@link Link#addParameter(String, String)}).
-     * 
-     * @param link
-     *            the newly created link
-     */
-    void createdPageRenderLink(Link link);
-
-    /**
-     * Invoked when an action link (a link that asks a component to perform an action) is created. The listener may
-     * decide to encode additional query parameters into the link (via {@link Link#addParameter(String, String)}).
-     * 
-     * @param link
-     *            the newly created link
-     */
-    void createdComponentEventLink(Link link);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationListener2.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationListener2.java
deleted file mode 100644
index c17b6cf..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LinkCreationListener2.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Link;
-
-public interface LinkCreationListener2
-{
-    /**
-     * Invoked when a page link (a link that renders a page) is created. The listener may decide to encode additional
-     * query parameters into the link (via {@link Link#addParameter(String, String)}).
-     * 
-     * @param link
-     *            the newly created link
-     * @param parameters
-     *            information encoded into the link
-     * @since 5.2.0
-     */
-    void createdPageRenderLink(Link link, PageRenderRequestParameters parameters);
-
-    /**
-     * Invoked when an action link (a link that asks a component to perform an action) is created. The listener may
-     * decide to encode additional query parameters into the link (via {@link Link#addParameter(String, String)}).
-     * 
-     * @param link
-     *            the newly created link
-     * @param parameters
-     *            information encoded into the link
-     */
-    void createdComponentEventLink(Link link, ComponentEventRequestParameters parameters);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LocalizationSetter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LocalizationSetter.java
deleted file mode 100644
index f166e46..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/LocalizationSetter.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2006, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.SelectModel;
-
-/**
- * Sets the thread's locale given a desired locale. Note that the desired locale is just a hint. It will try to honor it
- * but there is no guarantee that it will be used as is.
- * <p/>
- * Localization is controlled by the {@link org.apache.tapestry5.SymbolConstants#SUPPORTED_LOCALES} symbol.
- */
-public interface LocalizationSetter
-{
-    /**
-     * Determines if the provided potential locale name (presumably, extracted from a request URL) is a supported locale
-     * name. A call to this method will always set the {@link org.apache.tapestry5.ioc.services.ThreadLocale} (either
-     * to the provided locale, if supported, or to the default locale). If the locale name is supported, it will also
-     * set the {@link org.apache.tapestry5.services.PersistentLocale} (which may affect how page and event links are
-     * generated, to persist the selected locale across requests).
-     * <p/>
-     * Note that locale names <strong>are</strong> case sensitive.
-     * 
-     * @param localeName
-     *            name of locale to check (which may be blank or not a locale name)
-     * @return true if the locale name is supported and the {@link org.apache.tapestry5.services.PersistentLocale} was
-     *         set
-     * @since 5.1.0.0
-     */
-    boolean setLocaleFromLocaleName(String localeName);
-
-    /**
-     * Allows the locale to be set from a specified locale name (which may be narrowed or defaulted to a support
-     * locale). Does not set the persistent locale.
-     * 
-     * @param localeName
-     *            locale in effect for this request
-     * @since 5.1.0.0
-     */
-    void setNonPeristentLocaleFromLocaleName(String localeName);
-
-    /**
-     * Returns a list of supported locales, as per the {@link org.apache.tapestry5.SymbolConstants#SUPPORTED_LOCALES}
-     * symbol.
-     * 
-     * @since 5.2.0
-     */
-    List<Locale> getSupportedLocales();
-
-    /**
-     * Checks to see if the indicated locale name is a supported locale name (that may have been
-     * incorporated into a request path). This is an important part of
-     * {@linkplain ComponentEventLinkEncoder#decodePageRenderRequest(Request) decoding a request}.
-     * 
-     * @since 5.2.0
-     */
-    boolean isSupportedLocaleName(String localeName);
-
-    /**
-     * Returns the supported locales packaged as a model. The label for each locale comes from
-     * {@link Locale#getDisplayName(Locale)} (in that locale).
-     * 
-     * @since 5.2.0
-     */
-    SelectModel getSupportedLocalesModel();
-
-    /**
-     * Converts a locale name into a Locale. The result is cached.
-     * 
-     * @since 5.2.0
-     */
-    Locale toLocale(String localeName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupRenderer.java
deleted file mode 100644
index 6353895..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupRenderer.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-/**
- * An object which will perform rendering of a page (or portion of a page).  This interface exists to be filtered via
- * {@link org.apache.tapestry5.services.MarkupRendererFilter}.
- * <p/>
- * The MarkupRenderer service takes an ordered configuration of {@link org.apache.tapestry5.services.MarkupRendererFilter}s,
- * which are used for ordinary page rendering (as opposed to {@linkplain org.apache.tapestry5.services.PartialMarkupRenderer
- * partial page rendering} for Ajax requests). The MarkupRenderer service may be selected using the
- *
- * @{@link org.apache.tapestry5.ioc.annotations.Primary} marker annotation.
- */
-@UsesOrderedConfiguration(MarkupRendererFilter.class)
-public interface MarkupRenderer
-{
-    /**
-     * Invoked to render some markup.
-     *
-     * @param writer to which markup should be written
-     */
-    void renderMarkup(MarkupWriter writer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupRendererFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupRendererFilter.java
deleted file mode 100644
index 953240e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupRendererFilter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-
-/**
- * Filter interface for {@link org.apache.tapestry5.services.MarkupRenderer}, which allows for code to execute before
- * and/or after the main rendering process.  Typically, this is to allow for the placement of {@linkplain
- * org.apache.tapestry5.services.Environment environmental services}.
- *
- * @see org.apache.tapestry5.services.TapestryModule#contributeMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration,
- *      org.apache.tapestry5.Asset, org.apache.tapestry5.Asset, ValidationMessagesSource,
- *      org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
- */
-public interface MarkupRendererFilter
-{
-    /**
-     * Implementations should perform work before or after passing the writer to the renderer.
-     *
-     * @param writer   to which markup should be written
-     * @param renderer delegate to which the writer should be passed.
-     */
-    void renderMarkup(MarkupWriter writer, MarkupRenderer renderer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupWriterFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupWriterFactory.java
deleted file mode 100644
index 2445456..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MarkupWriterFactory.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.MarkupWriter;
-
-/**
- * Source for {@link org.apache.tapestry5.MarkupWriter} instances.
- */
-public interface MarkupWriterFactory
-{
-    /**
-     * Creates a markup writer for a particular content type.
-     *
-     * @param contentType type of content generated by the markup write; used to control the type of {@link
-     *                    org.apache.tapestry5.dom.MarkupModel} used with the {@link org.apache.tapestry5.dom.Document}
-     *                    the backs the markup writer.
-     */
-    MarkupWriter newMarkupWriter(ContentType contentType);
-
-    /**
-     * Creates a markup writer for a particular content type, configured for <em>partial page rendering</em> (i.e., for
-     * a response to an Ajax request).
-     *
-     * @param contentType type of content generated by the markup write; used to control the type of {@link
-     *                    org.apache.tapestry5.dom.MarkupModel} used with the {@link org.apache.tapestry5.dom.Document}
-     *                    the backs the markup writer.
-     */
-    MarkupWriter newPartialMarkupWriter(ContentType contentType);
-
-    /**
-     * Obtains a markup writer that will render the content for the provided logical page name.
-     *
-     * @param pageName logical page name
-     * @return writer configured for the page
-     */
-    MarkupWriter newMarkupWriter(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MetaDataLocator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MetaDataLocator.java
deleted file mode 100644
index 3a57b1a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MetaDataLocator.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Used to lookup meta data concerning a particular component. The primary source of meta data is the meta data defined
- * for the component, accessed via {@link org.apache.tapestry5.model.ComponentModel#getMeta(String)}. This includes meta
- * data defined by base classes. When meta-data for a particular component can not be found, a search works up the
- * containment hierarchy (to the component's container, and the container's container, and so on). If <em>that</em>
- * proves unfruitful, a system of defaults is provided by configuration and matched against the containing page's
- * logical name.
- * <p/>
- * Finally, if no metadata is available, then {@link org.apache.tapestry5.ioc.services.SymbolSource#valueForSymbol(String)}
- * is used to obtain a value. Generally speaking, if you are going to use this service to look up meta data, your should
- * also make a contribution to the FactoryDefaults service; otherwise, you risk a runtime exception if a meta-data key
- * can not be resolved.
- */
-@UsesMappedConfiguration(String.class)
-public interface MetaDataLocator
-{
-    /**
-     * Searches for the value for the corresponding key.  The value, if located, will have symbols expanded, and will be
-     * type coerced to the desired type.
-     *
-     * @param key       the key used to locate the meta data (case insensitive)
-     * @param resources the resources of the initial component used in the search
-     * @return the value if found (in the component, the component's container, etc. or via a folder default)
-     * @throws RuntimeException if the value for the key is not present as meta data of the component, as an override,
-     *                          or as a symbol
-     */
-    <T> T findMeta(String key, ComponentResources resources, Class<T> expectedType);
-
-    /**
-     * Searches for the value for the corresponding key for a particular page name (the page will <em>not</em> be
-     * loaded).  The value, if located, will have symbols expanded, and will be type coerced to the desired type.
-     *
-     * @param key      the key used to locate the meta data (case insensitive)
-     * @param pageName the name of the page to search
-     * @return the value if found
-     * @throws RuntimeException if the value for the key is not present as meta data of the page, as an override, or as
-     *                          a symbol
-     */
-    <T> T findMeta(String key, String pageName, Class<T> expectedType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodAccess.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodAccess.java
deleted file mode 100644
index e6ad69a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodAccess.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Represents a bridge to an object method, when that method may not be public. A MethodAccess object
- * encapsulates the approach for invoking the method and capturing the result (either the return value,
- * or the checked exception that is thrown).
- * 
- * @since 5.2.0
- * @see TransformMethod#getAccess()
- */
-public interface MethodAccess
-{
-    /**
-     * Invoke the method on the target, passing a number of arguments to the method.
-     * If the method throws a RuntimeException, that is passed through unchanged.
-     * If the method throws a checked exception, that will be reflected in the invocation result.
-     * 
-     * @param target
-     *            object on which to invoke a method
-     * @param arguments
-     *            arguments to pass to the method
-     */
-    MethodInvocationResult invoke(Object target, Object... arguments);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodFilter.java
deleted file mode 100644
index 69f1a60..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodFilter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.func.Predicate;
-
-/**
- * Used by {@link ClassTransformation#findMethods(MethodFilter)} to accept or reject each method.
- * 
- * @deprecated New APIs use {@link Predicate} instead
- */
-public interface MethodFilter
-{
-    /**
-     * Passed each signature in turn, only signatures for which this method returns true will be included in the final
-     * result.
-     */
-    boolean accept(TransformMethodSignature signature);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodInvocationResult.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodInvocationResult.java
deleted file mode 100644
index 207f08a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/MethodInvocationResult.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Captures the result of invoking a method.
- * 
- * @since 5.2.0
- */
-public interface MethodInvocationResult
-{
-    /**
-     * The return value from the method invocation. This will be null if the method returns null,
-     * is a void method, or if a checked exception was thrown by the method.
-     */
-    Object getReturnValue();
-
-    /**
-     * If true, then the method invocation ended with a checked exception being thrown.
-     */
-    boolean isFail();
-
-    /**
-     * If the invocation threw a checked exception, this method will wrap that exception in a
-     * RuntimeException and throw that. For most code that doesn't specifically care about
-     * the thrown exception, this method should be invoked before continuing on to
-     * examine {@link #getReturnValue()}.
-     */
-    void rethrow();
-
-    /**
-     * If {@link #isFail()} is true, this method provides access to the actual checked exception that was thrown.
-     * 
-     * @param throwableClass
-     *            the type of exception to match
-     * @return the exception, if the method invocation threw a checked exception, and the exception is assignable to
-     *         the provided type. In other cases, null is returned.
-     */
-    <T extends Throwable> T getThrown(Class<T> throwableClass);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/NullFieldStrategySource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/NullFieldStrategySource.java
deleted file mode 100644
index 4c6090d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/NullFieldStrategySource.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * A source for {@link org.apache.tapestry5.NullFieldStrategy} instances based on a logical name.
- */
-@UsesMappedConfiguration(NullFieldStrategy.class)
-public interface NullFieldStrategySource
-{
-    /**
-     * Returns the instance based on the name.  Instances are expected to be stateless and therefore, shareable and
-     * thread safe.
-     *
-     * @param name name of the strategy (case is ignored)
-     * @return the strategy
-     * @throws IllegalArgumentException if the name does not match a configured instance
-     */
-    NullFieldStrategy get(String name);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ObjectRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ObjectRenderer.java
deleted file mode 100644
index ad40d82..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ObjectRenderer.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * A strategy interface used for converting an object into markup that describes that object. This is primarily used in
- * terms of an {@link org.apache.tapestry5.services.ExceptionReporter} page.
- * <p/>
- * The ObjectRenderer service (distinguished by the @{@link org.apache.tapestry5.ioc.annotations.Primary} marker
- * annotation) uses {@linkplain org.apache.tapestry5.ioc.services.StrategyBuilder type-based matching} to find a
- * specific ObjectRenderer for any given type.
- */
-@UsesMappedConfiguration(key = Class.class, value = ObjectRenderer.class)
-public interface ObjectRenderer<T>
-{
-    /**
-     * Renders the object out as markup.
-     *
-     * @param object to be rendered
-     * @param writer to which output should be directed
-     */
-    void render(T object, MarkupWriter writer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageDocumentGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageDocumentGenerator.java
deleted file mode 100644
index bef7abc..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageDocumentGenerator.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.dom.Document;
-
-/**
- * Interface used to programatically render a page, forming a {@link org.apache.tapestry5.dom.Document} which can then
- * be manipulated or {@linkplain org.apache.tapestry5.dom.Document#toMarkup(java.io.PrintWriter) streamed to a
- * PrintWriter}.
- */
-public interface PageDocumentGenerator
-{
-    /**
-     * Renders the page.
-     */
-    Document render(String logicalPageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderLinkSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderLinkSource.java
deleted file mode 100644
index 1ff2ab3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderLinkSource.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.EventContext;
-
-/**
- * A service that allows other services to create page render links (which are otherwise created by components, via
- * {@link org.apache.tapestry5.ComponentResources#createPageLink(String, boolean, Object[])}).
- *
- * @since 5.1.0.2
- */
-public interface PageRenderLinkSource
-{
-    /**
-     * Creates a page render link using the page's normal passivation context (if it has one).
-     *
-     * @param pageName name of page to create link to
-     * @return render link for the page
-     */
-    Link createPageRenderLink(String pageName);
-
-    /**
-     * Creates a page render link using an override of the page's passivation context (possibly an empty one).
-     *
-     * @param pageName name of page to create link to
-     * @param context zero or more values to encode as the passiviation context
-     * @return render link for the page
-     */
-    Link createPageRenderLinkWithContext(String pageName, Object... context);
-
-    /**
-     * Creates a page render link using an override of the page's passivation context.
-     *
-     * @param pageName name of page to create link to
-     * @param eventContext the EventContext to encode as the passiviation context
-     * @return render link for the page
-     * @since 5.2.0.0
-     */
-    public Link createPageRenderLinkWithContext(String pageName, EventContext eventContext);
-
-    /**
-     * Creates a page render link using the page's class to identify the target page, and using the pages normal
-     * passivation context (if it has one).
-     *
-     * @param pageClass
-     * @return render link for the page
-     */
-    Link createPageRenderLink(Class pageClass);
-
-    /**
-     * Creates a page render link using the page's class to identify the target page, and using an override of the
-     * page's passivation context (possibly an empty one).
-     *
-     * @param pageClass
-     * @param context zero or more values to encode as the passiviation context
-     * @return render link for the page
-     */
-    Link createPageRenderLinkWithContext(Class pageClass, Object... context);
-
-    /**
-     * Creates a page render link using the page's class to identify the target page, and using an override of the
-     * page's passivation context
-     *
-     * @param pageClass
-     * @param eventContext the EventContext to encode as the passiviation context
-     * @return render link for the page
-     * @since 5.2.0.0
-     */
-    Link createPageRenderLinkWithContext(Class pageClass, EventContext eventContext);
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestFilter.java
deleted file mode 100644
index 8a4bca6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestFilter.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-
-/**
- * Filter interface for {@link PageRenderRequestHandler}, which allows extra behaviors to be injected into the
- * processing of a page render request.
- */
-public interface PageRenderRequestFilter
-{
-    /**
-     * Invoked to activate and render a page. The return value of the event handler method(s) for the activate event may
-     * result in an action response generator being returned.
-     *
-     * @param parameters defines the page name and activation context
-     * @param handler    to delegate the invocation to
-     */
-    void handle(PageRenderRequestParameters parameters, PageRenderRequestHandler handler) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestHandler.java
deleted file mode 100644
index 6ca2e41..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestHandler.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import java.io.IOException;
-
-/**
- * Handles a invocation related to rendering out a pages complete content.
- * <p/>
- * The PageRenderRequestHandler service is an extensible {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
- * pipeline}.
- */
-@UsesOrderedConfiguration(PageRenderRequestFilter.class)
-public interface PageRenderRequestHandler
-{
-    /**
-     * Invoked to activate and render a page. In certain cases, based on values returned when activating the page, a
-     * {@link org.apache.tapestry5.services.ComponentEventResultProcessor} may be used to send an alternate response
-     * (typically, a redirect).
-     *
-     * @param parameters defines the page name and activation context
-     */
-    void handle(PageRenderRequestParameters parameters) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java
deleted file mode 100644
index f87817b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PageRenderRequestParameters.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2008, 2009, 2010The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.structure.PageResetListener;
-
-/**
- * Used with {@link org.apache.tapestry5.services.PageRenderRequestHandler} and
- * {@link org.apache.tapestry5.services.PageRenderRequestFilter} to define the logical page name and
- * activation context for the request.
- */
-public class PageRenderRequestParameters
-{
-    private final String logicalPageName;
-
-    private final EventContext activationContext;
-
-    /** @since 5.2.0 */
-    private final boolean loopback;
-
-    /** @deprecated Use {@link #PageRenderRequestParameters(String, EventContext, boolean)  */
-    public PageRenderRequestParameters(String logicalPageName, EventContext activationContext)
-    {
-        this(logicalPageName, activationContext, false);
-    }
-
-    /** @since 5.2.0 */
-    public PageRenderRequestParameters(String logicalPageName, EventContext activationContext, boolean loopback)
-    {
-        assert logicalPageName != null;
-        assert activationContext != null;
-        this.logicalPageName = logicalPageName;
-        this.activationContext = activationContext;
-        this.loopback = loopback;
-    }
-
-    /**
-     * Returns a {@linkplain ComponentClassResolver#canonicalizePageName(String) canonicalized} version of the page
-     * name.
-     */
-    public String getLogicalPageName()
-    {
-        return logicalPageName;
-    }
-
-    public EventContext getActivationContext()
-    {
-        return activationContext;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj)
-            return true;
-
-        if (obj == null || getClass() != obj.getClass())
-            return false;
-
-        PageRenderRequestParameters other = (PageRenderRequestParameters) obj;
-
-        return loopback == other.loopback && logicalPageName.equals(other.logicalPageName)
-                && TapestryInternalUtils.isEqual(activationContext, other.activationContext);
-    }
-
-    /**
-     * Is this request a loopback (a request for the same page that rendered it in the first place)?
-     * 
-     * @since 5.2.0
-     * @see TapestryConstants#PAGE_LOOPBACK_PARAMETER_NAME
-     * @see PageResetListener
-     */
-    public boolean isLoopback()
-    {
-        return loopback;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("PageRenderRequestParameters[%s]", logicalPageName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialMarkupRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialMarkupRenderer.java
deleted file mode 100644
index 3be19da..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialMarkupRenderer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.json.JSONObject;
-
-/**
- * Defines an Ajax-oriented partial page render, wherein a render of a portion of a page occurs, and the content is
- * stored into a key ("content") of a {@link org.apache.tapestry5.json.JSONObject}, which is sent to the client side as
- * the final response.  Client-side JavaScript receives this reply and uses it to update a portion of the page.
- * <p/>
- * <p/>
- * The PartialMarkupRenderer service takes an ordered configuration of {@link PartialMarkupRendererFilter}s.  It can be
- * selected using the {@link org.apache.tapestry5.ioc.annotations.Primary} marker annotation.
- */
-@UsesOrderedConfiguration(PartialMarkupRendererFilter.class)
-public interface PartialMarkupRenderer
-{
-    /**
-     * Implementations should perform work before or after passing the writer to the renderer.
-     *
-     * @param writer to which markup should be written
-     * @param reply  JSONObject which will contain the partial response
-     */
-    void renderMarkup(MarkupWriter writer, JSONObject reply);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialMarkupRendererFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialMarkupRendererFilter.java
deleted file mode 100644
index ff2b497..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PartialMarkupRendererFilter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.json.JSONObject;
-
-/**
- * A filter (the main interface being {@link PartialMarkupRenderer}) applied when performing a partial page render as
- * part of an Ajax-oriented request.  This is similar to {@link org.apache.tapestry5.services.MarkupRendererFilter} and
- * filters are often in place so as to contribute {@link org.apache.tapestry5.annotations.Environmental} services to the
- * pages and components that render.
- *
- * @see org.apache.tapestry5.services.TapestryModule#contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration,
- *      org.apache.tapestry5.Asset, org.apache.tapestry5.ioc.services.SymbolSource, AssetSource,
- *      ValidationMessagesSource)
- */
-public interface PartialMarkupRendererFilter
-{
-    /**
-     * Implementations should perform work before or after passing the writer to the renderer.
-     *
-     * @param writer   to which markup should be written
-     * @param reply    JSONObject which will contain the partial response
-     * @param renderer delegate to which the writer should be passed
-     */
-    void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldBundle.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldBundle.java
deleted file mode 100644
index e98237f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldBundle.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Encapsulates persisted property information for an entire page.
- */
-public interface PersistentFieldBundle
-{
-    /**
-     * Checks to see if a persistent value has been stored for the indicated component and field. TODO: This method can
-     * probably be removed; it doesn't look like its used (instead, we if check getValue() returns null).
-     *
-     * @param componentId the nested id of the component (within the page), may be null or blank for the root component
-     *                    of the page
-     * @param fieldName   the name of the field whose value was persisted
-     * @return true if a change has been stored
-     */
-    boolean containsValue(String componentId, String fieldName);
-
-    /**
-     * @param componentId the nested if of the component (within the page), may be null or blank for the root component
-     *                    of the page
-     * @param fieldName   the name of the field whose value was persisted
-     * @return the persisted value, possibly null
-     */
-    Object getValue(String componentId, String fieldName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldChange.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldChange.java
deleted file mode 100644
index cce8bd3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldChange.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Represents a previously stored change to a persistent field, within the context of a particular page of the
- * application.
- */
-public interface PersistentFieldChange
-{
-    /**
-     * Returns the nested id of the component, or the empty string for the page's root component.
-     */
-    String getComponentId();
-
-    /**
-     * Returns the name of the field for which a change was recorded.
-     */
-    String getFieldName();
-
-    /**
-     * Returns the new value for the field (which may be null).
-     */
-    Object getValue();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldStrategy.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldStrategy.java
deleted file mode 100644
index 64774c4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentFieldStrategy.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.Collection;
-
-/**
- * Defines how changes to fields (within components, within pages) may have their values persisted between requests.
- * Different implementations store the field values {@linkplain org.apache.tapestry5.internal.services.SessionPersistentFieldStrategy
- * in the session}, {@linkplain org.apache.tapestry5.internal.services.ClientPersistentFieldStrategy on the client}, or
- * elsewhere.
- */
-public interface PersistentFieldStrategy
-{
-    /**
-     * Posts a change of a persistent property.
-     *
-     * @param pageName    the name of the page containing the component
-     * @param componentId the nested id path of the component (or null for the page's root component)
-     * @param fieldName   the name of the field whose persistent value has changed
-     * @param newValue    the new value for the field, possibly null
-     */
-    void postChange(String pageName, String componentId, String fieldName, Object newValue);
-
-    /**
-     * Finds all persistent changes previously stored for the named page (for the current active session or client).
-     */
-    Collection<PersistentFieldChange> gatherFieldChanges(String pageName);
-
-    /**
-     * Discards any saved changes for the name page. There is no expectation that data already gathered from the
-     * strategy and persumably dumped into component instance fields will be affected, but future field access (within
-     * this request or a later one) will show no data for the indicated page.
-     *
-     * @param pageName logical name of page whose field persistent data should be discarded
-     */
-    void discardChanges(String pageName);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentLocale.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentLocale.java
deleted file mode 100644
index adcdfa3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PersistentLocale.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.Locale;
-
-/**
- * Manages the persistent locale stored in the browser (inside the URL).
- *
- * @see LocalizationSetter#setLocaleFromLocaleName(String)
- * @see org.apache.tapestry5.services.LocalizationSetter
- * @see org.apache.tapestry5.services.ComponentEventLinkEncoder
- */
-public interface PersistentLocale
-{
-    /**
-     * Sets the locale value that will be encoded into the response. This must match a locale configured via {@link
-     * org.apache.tapestry5.SymbolConstants#SUPPORTED_LOCALES}.
-     *
-     * @throws IllegalArgumentException if the locale is not valid
-     */
-    void set(Locale locale);
-
-    /**
-     * Gets the locale obtained from the request, or null if the response did not indicate a specific locale (in which
-     * case the active locale may have been determined from request headers).
-     */
-    Locale get();
-
-    /**
-     * @return true if a locale was present in the request URL; false otherwise.
-     */
-    boolean isSet();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java
deleted file mode 100644
index 312cd60..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyConduitSource.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.PropertyConduit;
-
-/**
- * A source for {@link org.apache.tapestry5.PropertyConduit}s, which can be thought of as a compiled property path
- * expression. PropertyConduits are the basis of the "prop:" binding factory, thus this service defines the expression
- * format used by the {@link org.apache.tapestry5.internal.bindings.PropBindingFactory}.
- */
-public interface PropertyConduitSource
-{
-    /**
-     * Returns a property conduit instance for the given expression. PropertyConduitSource caches the conduits it
-     * returns, so despite the name, this method does not always create a <em>new</em> conduit. The cache is cleared if
-     * a change to component classes is observed.
-     * <p/>
-     * Callers of this method should observe notifications from the {@link org.apache.tapestry5.services.InvalidationEventHub}
-     * for {@link org.apache.tapestry5.services.ComponentClasses} and discard any aquired conduits; failure to do so
-     * will create memory leaks whenever component classes change (the conduits will keep references to the old classes
-     * and classloaders).
-     *
-     * @param rootType   the type of the root object to which the expression is applied
-     * @param expression expression to be evaluated on instances of the root class
-     * @return RuntimeException if the expression is invalid (poorly formed, references non-existent properties, etc.)
-     */
-    PropertyConduit create(Class rootType, String expression);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java
deleted file mode 100644
index 38e2ec3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyEditContext.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-
-/**
- * Defines a context for editing a property of a bean via {@link org.apache.tapestry5.corelib.components.BeanEditor}.
- * This value is made available to blocks via the {@link org.apache.tapestry5.annotations.Environmental} annotation.
- *
- * @see org.apache.tapestry5.services.BeanBlockSource
- */
-public interface PropertyEditContext extends AnnotationProvider
-{
-    /**
-     * Returns the current value of the property being edited (the context encapsulates the object containing the
-     * property).
-     */
-    Object getPropertyValue();
-
-    /**
-     * Updates the value of the property being edited (the context encapsulates the object containing the property).
-     *
-     * @param value new value for the property
-     */
-    void setPropertyValue(Object value);
-
-    /**
-     * Returns the user-presentable label, for use with the {@link org.apache.tapestry5.corelib.components.Label}
-     * component, or to be integrated into any validation error messages.
-     */
-    String getLabel();
-
-    /**
-     * Returns the translator appropriate for the field (this is based on the property type).
-     *
-     * @param field
-     * @see org.apache.tapestry5.services.TranslatorSource
-     */
-    FieldTranslator getTranslator(Field field);
-
-    /**
-     * Returns the FieldValidator for the field.
-     *
-     * @see org.apache.tapestry5.beaneditor.Validate
-     * @see org.apache.tapestry5.services.FieldValidatorDefaultSource
-     */
-    FieldValidator getValidator(Field field);
-
-    /**
-     * Returns a string that identifies the property, usually the property name. This is used as the basis for the
-     * client-side client id.
-     */
-    String getPropertyId();
-
-    /**
-     * Returns the type of the property being edited.
-     */
-    Class getPropertyType();
-
-    /**
-     * Returns the message catalog for the container of the {@link org.apache.tapestry5.corelib.components.BeanEditForm},
-     * which is the correct place to look for strings used for labels, etc.
-     */
-    Messages getContainerMessages();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java
deleted file mode 100644
index 4f34767..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/PropertyOutputContext.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.ioc.Messages;
-
-/**
- * Provides context information needed when displaying a value. This interface is an integral part of the {@link Grid}
- * and similar output components.    It is made available to components via an {@link
- * org.apache.tapestry5.annotations.Environmental} annotation.
- */
-public interface PropertyOutputContext
-{
-    /**
-     * Returns the value of the property (the object being displayed is encapsulated by the context).
-     */
-    Object getPropertyValue();
-
-    /**
-     * Returns the message catalog appropriate for use. In practice, this is the message catalog of the container of the
-     * {@link Grid} component. This is used, for example, to locate labels for fields, or to locate string
-     * representations of Enums.
-     */
-    Messages getMessages();
-
-    /**
-     * Returns a string that identifies the property, usually the property name. This is used as the basis for the
-     * client-side client id.
-     */
-    String getPropertyId();
-
-    /**
-     * Returns the name of the property (which may, in fact, be a property expression).
-     */
-    String getPropertyName();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RelativeElementPosition.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RelativeElementPosition.java
deleted file mode 100644
index d74d63d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RelativeElementPosition.java
+++ /dev/null
@@ -1,18 +0,0 @@
-package org.apache.tapestry5.services;
-
-/**
- * Used by {@link org.apache.tapestry5.services.HiddenFieldLocationRules} to identify where a hidden field may be placed
- * relative to a particular element.
- */
-public enum RelativeElementPosition
-{
-    /**
-     * The hidden field may be placed inside the element, as a child.
-     */
-    INSIDE,
-
-    /**
-     * The hidden field may be placed after the element, as a sibling.
-     */
-    AFTER;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java
deleted file mode 100644
index 0d4362a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Request.java
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2006, 2007, 2008, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.List;
-import java.util.Locale;
-
-/**
- * Generic version of {@link javax.servlet.http.HttpServletRequest}, used to encapsulate the Servlet API version, and to
- * help bridge the differences between Servlet API and Porlet API.
- * <p/>
- * <p/>
- * The Request service is a {@linkplain org.apache.tapestry5.ioc.services.PropertyShadowBuilder shadow} of the current
- * thread's request.
- */
-public interface Request
-{
-    /**
-     * Gets the {@link Session}. If create is false and the session has not be created previously, returns null. Also,
-     * if the session is invalidated and create is false, returns null.
-     * 
-     * @param create
-     *            true to force the creation of the session
-     * @return the session (or null if create is false the session has not been previously created)
-     */
-    Session getSession(boolean create);
-
-    /**
-     * Returns the context path. This always starts with a "/" character and does not end with one, with the exception
-     * of servlets in the root context, which return the empty string.
-     */
-    String getContextPath();
-
-    /**
-     * Returns a list of query parameter names, in alphabetical order.
-     */
-    List<String> getParameterNames();
-
-    /**
-     * Returns the query parameter value for the given name. Returns null if no such parameter is in the request. For a
-     * multi-valued parameter, returns just the first value.
-     */
-    String getParameter(String name);
-
-    /**
-     * Returns the parameter values for the given name. Returns null if no such parameter is in the request.
-     */
-    String[] getParameters(String name);
-
-    /**
-     * Returns the path portion of the request, which starts with a "/" and contains everything up to the start of the
-     * query parameters. It doesn't include the context path.
-     */
-    String getPath();
-
-    /**
-     * Returns the locale of the client as determined from the request headers.
-     */
-    Locale getLocale();
-
-    /**
-     * Returns the names of all headers in the request.
-     */
-    List<String> getHeaderNames();
-
-    /**
-     * Returns the value of the specified request header as a <code>long</code> value that represents a
-     * <code>Date</code> object. Use this method with headers that contain dates, such as <code>If-Modified-Since</code>
-     * .
-     * <p/>
-     * The date is returned as the number of milliseconds since January 1, 1970 GMT. The header name is case
-     * insensitive.
-     * <p/>
-     * If the request did not have a header of the specified name, this method returns -1. If the header can't be
-     * converted to a date, the method throws an <code>IllegalArgumentException</code>.
-     * 
-     * @param name
-     *            a <code>String</code> specifying the name of the header
-     * @return a <code>long</code> value representing the date specified in the header expressed as the number of
-     *         milliseconds since January 1, 1970 GMT, or -1 if the named header was not included with the reqest
-     * @throws IllegalArgumentException
-     *             If the header value can't be converted to a date
-     */
-    long getDateHeader(String name);
-
-    /**
-     * Returns the named header as a string, or null if not found.
-     */
-    String getHeader(String name);
-
-    /**
-     * Returns true if the request originated on the client using XmlHttpRequest (the core of any Ajax behavior). Ajax
-     * action requests may behave quite differently than ordinary, page-based requests. This implementation currently
-     * depends on the client side setting a header: <strong>X-Requested-With=XMLHttpRequest</strong> (this is what
-     * Prototype does).
-     * 
-     * @return true if the request has an XmlHttpRequest origin
-     */
-    boolean isXHR();
-
-    /**
-     * Returns a boolean indicating whether this request was made using a secure channel, such as HTTPS.
-     * 
-     * @return a boolean indicating if the request was made using a secure channel
-     */
-    public boolean isSecure();
-
-    /**
-     * Returns the host name of the server to which the request was sent. It is the value of the part before ":" in the
-     * <code>Host</code> header, if any, or the resolved server name, or the server IP address.
-     * 
-     * @return the name of the server
-     */
-    public String getServerName();
-
-    /**
-     * Checks whether the requested session ID is still valid.
-     * 
-     * @return true if the request included a session id that is still active, false if the included session id has
-     *         expired
-     */
-    boolean isRequestedSessionIdValid();
-
-    /**
-     * Returns the value of the named attribute as an <code>Object</code>, or <code>null</code> if no attribute of the
-     * given name exists. Because this method is a wrapper around
-     * {@link javax.servlet.ServletRequest#getAttribute(String)},
-     * it is case <em>sensitive</em> (unlike most of Tapestry).
-     * 
-     * @param name
-     *            a <code>String</code> specifying the name of the attribute
-     * @return an <code>Object</code> containing the value of the attribute, or <code>null</code> if the attribute does
-     *         not exist
-     */
-    Object getAttribute(String name);
-
-    /**
-     * Stores an attribute in this request. Attributes are reset between requests (and remember that in Tapestry, there
-     * is usually two requests per operation: the action request that redirects to a render request).
-     * 
-     * @param name
-     *            a <code>String</code> specifying the name of the attribute
-     * @param value
-     *            the <code>Object</code> to be stored, or null to remove the attribute
-     */
-    void setAttribute(String name, Object value);
-
-    /**
-     * Returns the name of the HTTP method with which this request was made, for example, GET, POST, or PUT.
-     * 
-     * @return a string specifying the name of the method with which this request was made
-     */
-    String getMethod();
-
-    /**
-     * Returns the Internet Protocol (IP) port number of the interface
-     * on which the request was received.
-     * 
-     * @return an integer specifying the port number
-     * @since 5.2.0
-     */
-    int getLocalPort();
-
-    /**
-     * Returns the port number to which the request was sent.
-     * It is the value of the part after ":" in the <code>Host</code> header, if any, or the server port where the
-     * client connection
-     * was accepted on.
-     * 
-     * @return an integer specifying the port number
-     * @since 5.2.5
-     */
-    int getServerPort();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java
deleted file mode 100644
index 3d63bf8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestExceptionHandler.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-
-/**
- * Service invoked when an uncaught exception occurs. The error handler is responsible for providing a response to the
- * user to describe the error.
- */
-public interface RequestExceptionHandler
-{
-    /**
-     * Reponsible for handling the error <em>in some way</em> and providing <em>some response</em> to the client. A
-     * default implementation may render an error response page.
-     * <p/>
-     * <p/>
-     * The handler is also responsible for setting the response status and the X-Tapestry-ErrorMessage response header.
-     * These are very important in Ajax requests to allow the client-side logic to detect the error and present it to
-     * the user.
-     *
-     * @param exception uncaught exception to be reported
-     * @throws IOException
-     */
-    void handleRequestException(Throwable exception) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestFilter.java
deleted file mode 100644
index bbf9bfa..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-
-/**
- * Filter interface for {@link org.apache.tapestry5.services.RequestHandler}. Implementations of this interface may be
- * contributed into the RequestHandler service configuration.
- */
-public interface RequestFilter
-{
-    /**
-     * Returns true if the request has been handled, false otherwise.
-     */
-    boolean service(Request request, Response response, RequestHandler handler) throws IOException;
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestGlobals.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestGlobals.java
deleted file mode 100644
index 65f53b1..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestGlobals.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Service used to store the current request objects, both the Servlet API versions, and the
- * Tapestry generic versions.
- * The service has a per-thread scope.
- */
-public interface RequestGlobals
-{
-    /**
-     * Stores the servlet API request and response objects, for access via the properties.
-     */
-    void storeServletRequestResponse(HttpServletRequest request, HttpServletResponse response);
-
-    /**
-     * The Servlet API Request. This is exposed as service HTTPServletRequest.
-     */
-    HttpServletRequest getHTTPServletRequest();
-
-    HttpServletResponse getHTTPServletResponse();
-
-    void storeRequestResponse(Request request, Response response);
-
-    /**
-     * The current request. This is exposed as service Request.
-     */
-    Request getRequest();
-
-    /**
-     * The current response. This is exposed as service Response.
-     */
-    Response getResponse();
-
-    /**
-     * Stores the {@linkplain ComponentClassResolver#canonicalizePageName(String) canonicalized}
-     * name of the active page for this request.
-     * 
-     * @param pageName
-     *            name of page (probably extracted from the URL)
-     * @since 5.2.0
-     */
-    void storeActivePageName(String pageName);
-
-    /**
-     * Returns the active page name previously stored.
-     * 
-     * @return canonicalized page name
-     * @since 5.2.0
-     */
-    String getActivePageName();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestHandler.java
deleted file mode 100644
index 9a012c0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/RequestHandler.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import java.io.IOException;
-
-/**
- * Service interface for the RequestHandler {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder pipeline}
- * service. At the end of the pipeline, the service hands off to the {@linkplain org.apache.tapestry5.services.Dispatcher
- * master dispatcher service}.
- */
-@UsesOrderedConfiguration(RequestFilter.class)
-public interface RequestHandler
-{
-    /**
-     * Returns true if the request has been handled, false otherwise.
-     */
-    boolean service(Request request, Response response) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java
deleted file mode 100644
index 7794e12..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResourceDigestGenerator.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-import java.net.URL;
-
-/**
- * Responsible for determining which classpath resources require checksums, and for generating checksums for such
- * resources.
- * <p/>
- * The service's configuration identifies which file extensions will be secured using an checksum. The default list is
- * "class" and "tml".
- *
- * @see org.apache.tapestry5.ioc.internal.util.ClasspathResource
- * @see org.apache.tapestry5.internal.services.ClasspathAssetFactory
- */
-@UsesConfiguration(String.class)
-public interface ResourceDigestGenerator
-{
-    /**
-     * Examines the path (typically, the file name extension at the end of the path) to determine if a checksum is
-     * required for the path. The path is {@link org.apache.tapestry5.ioc.Resource} style, without a leading slash.
-     */
-    boolean requiresDigest(String path);
-
-    /**
-     * Reads the content of a URL (presumably, for a resource on the classpath) and generates a digest of its content.
-     * This digest will be incorporated into the URL provided to the client, to verify that the client has been
-     * "granted" access to this resource. This is only used for resources where {@link #requiresDigest(String)} is
-     * true.
-     *
-     * @param url
-     * @return the digest for the resource
-     */
-    String generateDigest(URL url);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java
deleted file mode 100644
index fc1bc9e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Response.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Link;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-
-/**
- * API agnostic wrapper for generating a response. Bridges the gaps between the Servlet API and the Portlet API.
- * <p/>
- * <p/>
- * The Response service is a {@linkplain org.apache.tapestry5.ioc.services.PropertyShadowBuilder shadow} of the current
- * thread's response object.
- */
-public interface Response
-{
-    /**
-     * Returns a PrintWriter object to which output may be sent. Invoking flush() on the writer will commit the output.
-     * 
-     * @param contentType
-     *            the MIME content type for the output, typically "text/html"
-     */
-    PrintWriter getPrintWriter(String contentType) throws IOException;
-
-    /**
-     * Returns an OutputStream to which byte-oriented output may be sent. Invoking flush() on the stream will commit the
-     * output.
-     * 
-     * @param contentType
-     *            the MIME content type for the output, often "application/octet-stream" or "text/plain" or one
-     *            of several others
-     */
-    OutputStream getOutputStream(String contentType) throws IOException;
-
-    /**
-     * Sends a redirect to the client.
-     * 
-     * @param URL
-     *            full or partial (relative) URL to send to the client
-     * @see #encodeRedirectURL(String)
-     */
-    void sendRedirect(String URL) throws IOException;
-
-    /**
-     * Sends a redirect to a link.
-     * 
-     * @param link
-     *            link to redirect to.
-     */
-    void sendRedirect(Link link) throws IOException;
-
-    /**
-     * Sets the status code for this response. This method is used to set the return status code when there is no error
-     * (for example, for the status codes SC_OK or SC_MOVED_TEMPORARILY). If there is an error, and the caller wishes
-     * to invoke an error-page defined in the web applicaion, the <code>sendError</code> method should be used instead.
-     * 
-     * @param sc
-     *            the status code
-     */
-    public void setStatus(int sc);
-
-    /**
-     * Sends an error response to the client using the specified status. The server defaults to creating the response to
-     * look like an HTML-formatted server error page containing the specified message, setting the content type to
-     * "text/html", leaving cookies and other headers unmodified. If an error-page declaration has been made for the web
-     * application corresponding to the status code passed in, it will be served back in preference to the suggested msg
-     * parameter.
-     * <p/>
-     * If the response has already been committed, this method throws an IllegalStateException. After using this method,
-     * the response should be considered to be committed and should not be written to.
-     * 
-     * @param sc
-     *            the error status code
-     * @param message
-     *            the descriptive message
-     * @throws IOException
-     *             If an input or output exception occurs
-     * @throws IllegalStateException
-     *             If the response was committed
-     */
-    void sendError(int sc, String message) throws IOException;
-
-    /**
-     * Sets the length of the content body in the response; this method sets the HTTP Content-Length header.
-     * 
-     * @param length
-     *            the length of the content
-     */
-    void setContentLength(int length);
-
-    /**
-     * Sets a response header with the given name and date-value. The date is specified in terms of milliseconds since
-     * the epoch. If the header had already been set, the new value overwrites the previous one.
-     * 
-     * @param name
-     *            the name of the header to set
-     * @param date
-     *            the assigned date value
-     */
-    void setDateHeader(String name, long date);
-
-    /**
-     * Sets a response header with the given name and value. If the header had already been set, the new value
-     * overwrites the previous one.
-     * 
-     * @param name
-     *            the name of the header to set
-     * @param value
-     *            the assigned value
-     */
-    void setHeader(String name, String value);
-
-    /**
-     * Sets a response header with the given name and integer value. If the header had already been set, the new value
-     * overwrites the previous one.
-     * 
-     * @param name
-     *            the name of the header to set
-     * @param value
-     *            the assigned integer value
-     */
-    void setIntHeader(String name, int value);
-
-    /**
-     * Encodes the URL, ensuring that a session id is included (if a session exists, and as necessary depending on the
-     * client browser's use of cookies).
-     * 
-     * @param URL
-     * @return the same URL or a different one with additional information to track the user session
-     */
-    String encodeURL(String URL);
-
-    /**
-     * Encodes the URL for use as a redirect, ensuring that a session id is included (if a session exists, and as
-     * necessary depending on the client browser's use of cookies).
-     * 
-     * @param URL
-     * @return the same URL or a different one with additional information to track the user session
-     */
-    String encodeRedirectURL(String URL);
-
-    /**
-     * Returns true if the response has already been sent, either as a redirect or as a stream of content.
-     * 
-     * @return true if response already sent
-     */
-    boolean isCommitted();
-
-    /**
-     * Invoked to indicate that the response content is either already compressed, or is not compressable.
-     * 
-     * @since 5.2.1
-     */
-    void disableCompression();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java
deleted file mode 100644
index ea73b45..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseCompressionAnalyzer.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-/**
- * Used to determine if the client supports GZIP compression of the response.
- * <p/>
- * The configuration is an unordered list of content types that should <em>not</em> be compressed.
- *
- * @since 5.1.0.0
- */
-@UsesConfiguration(String.class)
-public interface ResponseCompressionAnalyzer
-{
-    /**
-     * Checks the Accept-Encoding request header for a "gzip" token.
-     *
-     * @return true if gzip is supported by client
-     */
-    boolean isGZipSupported();
-
-    /**
-     * Checks to see if the indicated content type is compressable. Many formats are already compressed; pushing them
-     * through a GZip filter consumes cycles and makes them larger.
-     * <p/>
-     * Contribute content type strings to the service's configuration to mark them as not compressable.
-     *
-     * @param contentType the mime type of the content, such as "text/html" or "image/jpeg".
-     * @return true if compression is worthwile
-     */
-    boolean isCompressable(String contentType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseRenderer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseRenderer.java
deleted file mode 100644
index eddd156..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ResponseRenderer.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ContentType;
-
-import java.io.IOException;
-
-/**
- * Public facade around internal services related to rendering a markup response.
- */
-public interface ResponseRenderer
-{
-    /**
-     * Renders a markup response by rendering the named page.
-     *
-     * @param pageName logical name of page to provide the markup
-     */
-    void renderPageMarkupResponse(String pageName) throws IOException;
-
-
-    /**
-     * Finds the content type for the page containing the indicated component.
-     *
-     * @param component a component within a page
-     * @return the content type
-     * @throws IllegalArgumentException if the component parameter is not a component
-     */
-    ContentType findContentType(Object component);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/SelectModelFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/SelectModelFactory.java
deleted file mode 100644
index 8307b3a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/SelectModelFactory.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.services;
-
-import java.util.List;
-
-import org.apache.tapestry5.SelectModel;
-
-/**
- * Used to create an {@link org.apache.tapestry5.SelectModel}.
- * 
- * @since 5.2.0
- */
-public interface SelectModelFactory
-{   
-    /**
-     * Creates a {@link org.apache.tapestry5.SelectModel} from a list of objects of the same type and a label property name.
-     * The returned model creates for every object in the list a selectable option and relies on existing 
-     * {@link org.apache.tapestry5.ValueEncoder} for the object type. The value of the label property is used as user-presentable label for the option.
-     * 
-     * @param objects objects to create model from
-     * @param labelProperty property for the client-side value
-     * @return the model
-     */
-    public SelectModel create(List<?> objects, String labelProperty);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ServletApplicationInitializer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ServletApplicationInitializer.java
deleted file mode 100644
index af3b65d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ServletApplicationInitializer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import javax.servlet.ServletContext;
-
-/**
- * Service interface for initializing a servlet application, as a {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
- * pipeline}. The terminator hands off to the {@link org.apache.tapestry5.services.ApplicationInitializer} service.
- */
-@UsesOrderedConfiguration(ServletApplicationInitializerFilter.class)
-public interface ServletApplicationInitializer
-{
-    void initializeApplication(ServletContext context);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ServletApplicationInitializerFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ServletApplicationInitializerFilter.java
deleted file mode 100644
index 0004826..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ServletApplicationInitializerFilter.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import javax.servlet.ServletContext;
-
-/**
- * Filter interface for {@link org.apache.tapestry5.services.ServletApplicationInitializer}.
- *
- * @see org.apache.tapestry5.services.ServletApplicationInitializer
- */
-public interface ServletApplicationInitializerFilter
-{
-    /**
-     * Peforms one step of initializing the application before passing off to the next step.
-     */
-    void initializeApplication(ServletContext context, ServletApplicationInitializer initializer);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Session.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Session.java
deleted file mode 100644
index ed986ab..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Session.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import javax.servlet.http.HttpSession;
-import java.util.List;
-
-/**
- * Generic version of {@link HttpSession}, used to bridge the gaps between the Servlet API and the Portlet API.
- */
-public interface Session
-{
-    /**
-     * Returns a list of the names of all attributes stored in the session. The names are returned sorted
-     * alphabetically.
-     */
-    List<String> getAttributeNames();
-
-    /**
-     * Returns a list of the names of all attributes stored in the session whose name has the provided prefix. The names
-     * are returned in alphabetical order.
-     */
-    List<String> getAttributeNames(String prefix);
-
-    /**
-     * Returns the value previously stored in the session.
-     */
-    Object getAttribute(String name);
-
-    /**
-     * Sets the value of an attribute. If the value is null, then the attribute is deleted.
-     */
-    void setAttribute(String name, Object value);
-
-    /**
-     * Returns the maximum time interval, in seconds, that the servlet container will keep this session open between
-     * client accesses. After this interval, the servlet container will invalidate the session. The maximum time
-     * interval can be set with the setMaxInactiveInterval method. A negative time indicates the session should never
-     * timeout.
-     */
-    int getMaxInactiveInterval();
-
-    /**
-     * Specifies the time, in seconds, between client requests before the servlet container will invalidate this
-     * session. A negative time indicates the session should never timeout.
-     */
-    void setMaxInactiveInterval(int seconds);
-
-    /**
-     * Invalidates this session then unbinds any objects bound to it.
-     *
-     * @throws IllegalStateException if this method is called on an already invalidated session
-     */
-    void invalidate();
-
-    /**
-     * Checks to see if the session has been invalidated.  Note: this only catches calls to {@link #invalidate()}, not
-     * calls to {@link javax.servlet.http.HttpSession#invalidate()}.
-     *
-     * @since 5.1.0.0
-     */
-    boolean isInvalidated();
-
-    /**
-     * Re-stores dirty objects back into the session.  This is necessary to support clustering, because (in most
-     * application servers) session objects are only broadcast around the cluster from setAttribute().  If a mutable
-     * session object is read and changed, those changes will be limited to a single server in the cluster, which can
-     * cause confusing application failures in the event of a failover.      Does nothing if there are no changes, or
-     * the session has been invalidated.
-     *
-     * @see org.apache.tapestry5.OptimizedSessionPersistedObject
-     * @see org.apache.tapestry5.internal.services.OptimizedApplicationStateObjectAnalyzer
-     * @see org.apache.tapestry5.annotations.ImmutableSessionPersistedObject
-     * @since 5.1.0.0
-     */
-    void restoreDirtyObjects();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/SessionPersistedObjectAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/SessionPersistedObjectAnalyzer.java
deleted file mode 100644
index 8b56561..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/SessionPersistedObjectAnalyzer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Analyzes a session-persisted object, specifically to see if it is dirty or not.  The service implementation uses a
- * mapped configuration to form a {@linkplain org.apache.tapestry5.ioc.services.StrategyBuilder strategy} based on
- * object type. The service is injectable using the {@link org.apache.tapestry5.ioc.annotations.Primary} marker
- * annotation.
- *
- * @see org.apache.tapestry5.annotations.ImmutableSessionPersistedObject
- * @see org.apache.tapestry5.OptimizedSessionPersistedObject
- * @since 5.1.0.0
- */
-@UsesMappedConfiguration(key = Class.class, value = SessionPersistedObjectAnalyzer.class)
-public interface SessionPersistedObjectAnalyzer<T>
-{
-    /**
-     * Passed an object (never null) to see if it is dirty or not. Dirty objects that are stored in the session are
-     * re-stored into the session at the end of the request.
-     *
-     * @param object
-     * @return true if object needs to be re-stored into the session
-     */
-    boolean isDirty(T object);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StackTraceElementAnalyzer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StackTraceElementAnalyzer.java
deleted file mode 100644
index c3f666b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StackTraceElementAnalyzer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-/**
- * Used by {@link org.apache.tapestry5.corelib.components.ExceptionDisplay} to characterize each stack frame that is
- * presented.  Implemented as a chain-of-command service.
- *
- * @since 5.1.0.0
- */
-@UsesOrderedConfiguration(StackTraceElementAnalyzer.class)
-public interface StackTraceElementAnalyzer
-{
-    /**
-     * Returns the CSS class appropriate to the frame.
-     *
-     * @param frame stack trace element to be analyzed
-     * @return the CSS class name, or null
-     */
-    String classForFrame(StackTraceElement frame);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StackTraceElementClassConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StackTraceElementClassConstants.java
deleted file mode 100644
index 1c20023..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StackTraceElementClassConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * CSS classes, from the default CSS stylesheet, used with {@link org.apache.tapestry5.services.StackTraceElementAnalyzer}.
- *
- * @since 5.1.0.0
- */
-public class StackTraceElementClassConstants
-{
-    /**
-     * An omitted frame, because it is not interesting (such as a dynamically generated proxy). Usually invisible.
-     */
-    public static final String OMITTED = "t-omitted-frame";
-
-    /**
-     * Part of the application's code base, and therefore highlighted.
-     */
-    public static final String USER_CODE = "t-usercode-frame";
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StreamPageContent.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StreamPageContent.java
deleted file mode 100644
index 8cbf6e3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/StreamPageContent.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * An event handler method may return an instance of this class to trigger the rendering 
- * of a particular page without causing a redirect to that page.
- * 
- * @since 5.2.0
- *
- */
-public final class StreamPageContent
-{
-    private final Class<?> pageClass;
-    private final Object[] pageActivationContext;
-
-    /**
-     * 
-     * @param pageClass class of the page to render
-     */
-    public StreamPageContent(final Class<?> pageClass)
-    {
-        this(pageClass, (Object[]) null);
-    }
-
-    /**
-     * 
-     * @param pageClass class of the page to render
-     * @param pageActivationContext activation context of the page
-     */
-    public StreamPageContent(final Class<?> pageClass, final Object... pageActivationContext)
-    {
-        super();
-        this.pageClass = pageClass;
-        this.pageActivationContext = pageActivationContext;
-    }
-
-    /**
-     * Returns the class of the page to render.
-     */
-    public Class<?> getPageClass()
-    {
-        return this.pageClass;
-    }
-
-    /**
-     * Returns the activation context of the page.
-     */
-    public Object[] getPageActivationContext()
-    {
-        return this.pageActivationContext;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
deleted file mode 100644
index ca846e4..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
+++ /dev/null
@@ -1,3007 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.net.URL;
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.Date;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Random;
-import java.util.Set;
-import java.util.regex.Pattern;
-
-import javax.servlet.ServletContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.annotations.ContentType;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.corelib.ClientValidation;
-import org.apache.tapestry5.corelib.LoopFormState;
-import org.apache.tapestry5.corelib.SubmitMode;
-import org.apache.tapestry5.corelib.data.BlankOption;
-import org.apache.tapestry5.corelib.data.GridPagerPosition;
-import org.apache.tapestry5.corelib.data.InsertPosition;
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.internal.AssetConstants;
-import org.apache.tapestry5.internal.DefaultNullFieldStrategy;
-import org.apache.tapestry5.internal.DefaultValidationDecorator;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.InternalSymbols;
-import org.apache.tapestry5.internal.PropertyOverridesImpl;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.ZeroNullFieldStrategy;
-import org.apache.tapestry5.internal.beaneditor.EnvironmentMessages;
-import org.apache.tapestry5.internal.beaneditor.MessagesConstraintGenerator;
-import org.apache.tapestry5.internal.beaneditor.PrimitiveFieldConstraintGenerator;
-import org.apache.tapestry5.internal.beaneditor.ValidateAnnotationConstraintGenerator;
-import org.apache.tapestry5.internal.bindings.*;
-import org.apache.tapestry5.internal.grid.CollectionGridDataSource;
-import org.apache.tapestry5.internal.grid.NullDataSource;
-import org.apache.tapestry5.internal.gzip.GZipFilter;
-import org.apache.tapestry5.internal.renderers.AvailableValuesRenderer;
-import org.apache.tapestry5.internal.renderers.ComponentResourcesRenderer;
-import org.apache.tapestry5.internal.renderers.EventContextRenderer;
-import org.apache.tapestry5.internal.renderers.ListRenderer;
-import org.apache.tapestry5.internal.renderers.LocationRenderer;
-import org.apache.tapestry5.internal.renderers.ObjectArrayRenderer;
-import org.apache.tapestry5.internal.renderers.RequestRenderer;
-import org.apache.tapestry5.internal.services.*;
-import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateFilter;
-import org.apache.tapestry5.internal.services.ajax.JavaScriptSupportImpl;
-import org.apache.tapestry5.internal.services.assets.AssetPathConstructorImpl;
-import org.apache.tapestry5.internal.services.assets.ClasspathAssetRequestHandler;
-import org.apache.tapestry5.internal.services.assets.ContextAssetRequestHandler;
-import org.apache.tapestry5.internal.services.assets.StackAssetRequestHandler;
-import org.apache.tapestry5.internal.services.javascript.CoreJavaScriptStack;
-import org.apache.tapestry5.internal.services.javascript.DateFieldStack;
-import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
-import org.apache.tapestry5.internal.services.javascript.JavaScriptStackSourceImpl;
-import org.apache.tapestry5.internal.services.linktransform.LinkTransformerImpl;
-import org.apache.tapestry5.internal.services.linktransform.LinkTransformerInterceptor;
-import org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
-import org.apache.tapestry5.internal.services.meta.ContentTypeExtractor;
-import org.apache.tapestry5.internal.services.meta.MetaAnnotationExtractor;
-import org.apache.tapestry5.internal.services.meta.MetaWorkerImpl;
-import org.apache.tapestry5.internal.services.templates.DefaultTemplateLocator;
-import org.apache.tapestry5.internal.services.templates.PageTemplateLocator;
-import org.apache.tapestry5.internal.transform.*;
-import org.apache.tapestry5.internal.translator.NumericTranslator;
-import org.apache.tapestry5.internal.translator.NumericTranslatorSupport;
-import org.apache.tapestry5.internal.translator.StringTranslator;
-import org.apache.tapestry5.internal.util.PrimaryKeyEncoder2ValueEncoder;
-import org.apache.tapestry5.internal.util.RenderableAsBlock;
-import org.apache.tapestry5.internal.util.StringRenderable;
-import org.apache.tapestry5.internal.validator.ValidatorMacroImpl;
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.annotations.*;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentResourcesAware;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.ajax.MultiZoneUpdateEventResultProcessor;
-import org.apache.tapestry5.services.assets.AssetPathConstructor;
-import org.apache.tapestry5.services.assets.AssetRequestHandler;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import org.apache.tapestry5.services.messages.PropertiesFileParser;
-import org.apache.tapestry5.services.meta.FixedExtractor;
-import org.apache.tapestry5.services.meta.MetaDataExtractor;
-import org.apache.tapestry5.services.meta.MetaWorker;
-import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-import org.apache.tapestry5.util.StringToEnumCoercion;
-import org.apache.tapestry5.validator.Email;
-import org.apache.tapestry5.validator.Max;
-import org.apache.tapestry5.validator.MaxLength;
-import org.apache.tapestry5.validator.Min;
-import org.apache.tapestry5.validator.MinLength;
-import org.apache.tapestry5.validator.None;
-import org.apache.tapestry5.validator.Regexp;
-import org.apache.tapestry5.validator.Required;
-import org.apache.tapestry5.validator.ValidatorMacro;
-import org.slf4j.Logger;
-
-/**
- * The root module for Tapestry.
- */
-@SuppressWarnings(
-{ "JavaDoc" })
-@Marker(Core.class)
-@SubModule(InternalModule.class)
-public final class TapestryModule
-{
-    private final PipelineBuilder pipelineBuilder;
-
-    private final ApplicationGlobals applicationGlobals;
-
-    private final PropertyShadowBuilder shadowBuilder;
-
-    private final Environment environment;
-
-    private final StrategyBuilder strategyBuilder;
-
-    private final PropertyAccess propertyAccess;
-
-    private final ChainBuilder chainBuilder;
-
-    private final Request request;
-
-    private final Response response;
-
-    private final RequestGlobals requestGlobals;
-
-    private final EnvironmentalShadowBuilder environmentalBuilder;
-
-    private final EndOfRequestEventHub endOfRequestEventHub;
-
-    /**
-     * We inject all sorts of common dependencies (including builders) into the
-     * module itself (note: even though some of
-     * these service are defined by the module itself, that's ok because
-     * services are always lazy proxies). This isn't
-     * about efficiency (it may be slightly more efficient, but not in any
-     * noticable way), it's about eliminating the
-     * need to keep injecting these dependencies into individual service builder
-     * and contribution methods.
-     */
-    public TapestryModule(PipelineBuilder pipelineBuilder,
-
-    PropertyShadowBuilder shadowBuilder,
-
-    RequestGlobals requestGlobals,
-
-    ApplicationGlobals applicationGlobals,
-
-    ChainBuilder chainBuilder,
-
-    Environment environment,
-
-    StrategyBuilder strategyBuilder,
-
-    PropertyAccess propertyAccess,
-
-    Request request,
-
-    Response response,
-
-    EnvironmentalShadowBuilder environmentalBuilder,
-
-    EndOfRequestEventHub endOfRequestEventHub)
-    {
-        this.pipelineBuilder = pipelineBuilder;
-        this.shadowBuilder = shadowBuilder;
-        this.requestGlobals = requestGlobals;
-        this.applicationGlobals = applicationGlobals;
-        this.chainBuilder = chainBuilder;
-        this.environment = environment;
-        this.strategyBuilder = strategyBuilder;
-        this.propertyAccess = propertyAccess;
-        this.request = request;
-        this.response = response;
-        this.environmentalBuilder = environmentalBuilder;
-        this.endOfRequestEventHub = endOfRequestEventHub;
-    }
-
-    // A bunch of classes "promoted" from inline inner class to nested classes,
-    // just so that the stack trace would be more readable. Most of these
-    // are teminators for pipeline services.
-
-    /**
-     * @since 5.1.0.0
-     */
-    private class ApplicationInitializerTerminator implements ApplicationInitializer
-    {
-        public void initializeApplication(Context context)
-        {
-            applicationGlobals.storeContext(context);
-        }
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    private class HttpServletRequestHandlerTerminator implements HttpServletRequestHandler
-    {
-        private final RequestHandler handler;
-        private final String applicationCharset;
-        private final SessionPersistedObjectAnalyzer analyzer;
-
-        public HttpServletRequestHandlerTerminator(RequestHandler handler, String applicationCharset,
-                SessionPersistedObjectAnalyzer analyzer)
-        {
-            this.handler = handler;
-            this.applicationCharset = applicationCharset;
-            this.analyzer = analyzer;
-        }
-
-        public boolean service(HttpServletRequest servletRequest, HttpServletResponse servletResponse)
-                throws IOException
-        {
-            requestGlobals.storeServletRequestResponse(servletRequest, servletResponse);
-
-            Request request = new RequestImpl(servletRequest, applicationCharset, analyzer);
-            Response response = new ResponseImpl(servletRequest, servletResponse);
-
-            // TAP5-257: Make sure that the "initial guess" for request/response
-            // is available, even if
-            // some filter in the RequestHandler pipeline replaces them.
-
-            requestGlobals.storeRequestResponse(request, response);
-
-            // Transition from the Servlet API-based pipeline, to the
-            // Tapestry-based pipeline.
-
-            return handler.service(request, response);
-        }
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    private class ServletApplicationInitializerTerminator implements ServletApplicationInitializer
-    {
-        private final ApplicationInitializer initializer;
-
-        public ServletApplicationInitializerTerminator(ApplicationInitializer initializer)
-        {
-            this.initializer = initializer;
-        }
-
-        public void initializeApplication(ServletContext servletContext)
-        {
-            applicationGlobals.storeServletContext(servletContext);
-
-            // And now, down the (Web) ApplicationInitializer pipeline ...
-
-            ContextImpl context = new ContextImpl(servletContext);
-
-            applicationGlobals.storeContext(context);
-
-            initializer.initializeApplication(context);
-        }
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    private class RequestHandlerTerminator implements RequestHandler
-    {
-        private final Dispatcher masterDispatcher;
-
-        public RequestHandlerTerminator(Dispatcher masterDispatcher)
-        {
-            this.masterDispatcher = masterDispatcher;
-        }
-
-        public boolean service(Request request, Response response) throws IOException
-        {
-            // Update RequestGlobals with the current request/response (in case
-            // some filter replaced the
-            // normal set).
-            requestGlobals.storeRequestResponse(request, response);
-
-            return masterDispatcher.dispatch(request, response);
-        }
-    }
-
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(ClasspathAssetAliasManager.class, ClasspathAssetAliasManagerImpl.class);
-        binder.bind(PersistentLocale.class, PersistentLocaleImpl.class);
-        binder.bind(ApplicationStateManager.class, ApplicationStateManagerImpl.class);
-        binder.bind(ApplicationStatePersistenceStrategySource.class,
-                ApplicationStatePersistenceStrategySourceImpl.class);
-        binder.bind(BindingSource.class, BindingSourceImpl.class);
-        binder.bind(FieldValidatorSource.class, FieldValidatorSourceImpl.class);
-        binder.bind(ApplicationGlobals.class, ApplicationGlobalsImpl.class);
-        binder.bind(AssetSource.class, AssetSourceImpl.class);
-        binder.bind(Cookies.class, CookiesImpl.class);
-        binder.bind(FieldValidatorDefaultSource.class, FieldValidatorDefaultSourceImpl.class);
-        binder.bind(RequestGlobals.class, RequestGlobalsImpl.class);
-        binder.bind(ResourceDigestGenerator.class, ResourceDigestGeneratorImpl.class);
-        binder.bind(ValidationConstraintGenerator.class, ValidationConstraintGeneratorImpl.class);
-        binder.bind(EnvironmentalShadowBuilder.class, EnvironmentalShadowBuilderImpl.class);
-        binder.bind(ComponentSource.class, ComponentSourceImpl.class);
-        binder.bind(BeanModelSource.class, BeanModelSourceImpl.class);
-        binder.bind(BeanBlockSource.class, BeanBlockSourceImpl.class);
-        binder.bind(ComponentDefaultProvider.class, ComponentDefaultProviderImpl.class);
-        binder.bind(MarkupWriterFactory.class, MarkupWriterFactoryImpl.class);
-        binder.bind(FieldValidationSupport.class, FieldValidationSupportImpl.class);
-        binder.bind(ObjectRenderer.class, LocationRenderer.class).withId("LocationRenderer");
-        binder.bind(ObjectProvider.class, AssetObjectProvider.class).withId("AssetObjectProvider");
-        binder.bind(RequestExceptionHandler.class, DefaultRequestExceptionHandler.class);
-        binder.bind(ComponentEventResultProcessor.class, ComponentInstanceResultProcessor.class).withId(
-                "ComponentInstanceResultProcessor");
-        binder.bind(NullFieldStrategySource.class, NullFieldStrategySourceImpl.class);
-        binder.bind(HttpServletRequestFilter.class, IgnoredPathsFilter.class).withId("IgnoredPathsFilter");
-        binder.bind(ContextValueEncoder.class, ContextValueEncoderImpl.class);
-        binder.bind(BaseURLSource.class, BaseURLSourceImpl.class);
-        binder.bind(BeanBlockOverrideSource.class, BeanBlockOverrideSourceImpl.class);
-        binder.bind(AliasManager.class, AliasManagerImpl.class).withId("AliasOverrides");
-        binder.bind(HiddenFieldLocationRules.class, HiddenFieldLocationRulesImpl.class);
-        binder.bind(PageDocumentGenerator.class, PageDocumentGeneratorImpl.class);
-        binder.bind(ResponseRenderer.class, ResponseRendererImpl.class);
-        binder.bind(FieldTranslatorSource.class, FieldTranslatorSourceImpl.class);
-        binder.bind(BindingFactory.class, MessageBindingFactory.class).withId("MessageBindingFactory");
-        binder.bind(BindingFactory.class, ValidateBindingFactory.class).withId("ValidateBindingFactory");
-        binder.bind(BindingFactory.class, TranslateBindingFactory.class).withId("TranslateBindingFactory");
-        binder.bind(BindingFactory.class, AssetBindingFactory.class).withId("AssetBindingFactory");
-        binder.bind(BindingFactory.class, ContextBindingFactory.class).withId("ContextBindingFactory");
-        binder.bind(BindingFactory.class, NullFieldStrategyBindingFactory.class).withId(
-                "NullFieldStrategyBindingFactory");
-        binder.bind(BindingFactory.class, SymbolBindingFactory.class).withId("SymbolBindingFactory");
-        binder.bind(URLEncoder.class, URLEncoderImpl.class);
-        binder.bind(ContextPathEncoder.class, ContextPathEncoderImpl.class);
-        binder.bind(ApplicationStatePersistenceStrategy.class, SessionApplicationStatePersistenceStrategy.class)
-                .withId("SessionApplicationStatePersistenceStrategy");
-        binder.bind(AssetPathConverter.class, IdentityAssetPathConverter.class);
-        binder.bind(NumericTranslatorSupport.class);
-        binder.bind(ClientDataEncoder.class, ClientDataEncoderImpl.class);
-        binder.bind(ComponentEventLinkEncoder.class, ComponentEventLinkEncoderImpl.class);
-        binder.bind(PageRenderLinkSource.class, PageRenderLinkSourceImpl.class);
-        binder.bind(ClientInfrastructure.class, ClientInfrastructureImpl.class);
-        binder.bind(URLRewriter.class, URLRewriterImpl.class);
-        binder.bind(ValidatorMacro.class, ValidatorMacroImpl.class);
-        binder.bind(PropertiesFileParser.class, PropertiesFileParserImpl.class);
-        binder.bind(PageActivator.class, PageActivatorImpl.class);
-        binder.bind(Dispatcher.class, AssetDispatcher.class).withId("AssetDispatcher");
-        binder.bind(AssetPathConstructor.class, AssetPathConstructorImpl.class);
-        binder.bind(JavaScriptStackSource.class, JavaScriptStackSourceImpl.class);
-        binder.bind(TranslatorAlternatesSource.class, TranslatorAlternatesSourceImpl.class);
-        binder.bind(MetaWorker.class, MetaWorkerImpl.class);
-        binder.bind(LinkTransformer.class, LinkTransformerImpl.class);
-        binder.bind(SelectModelFactory.class, SelectModelFactoryImpl.class);
-    }
-
-    // ========================================================================
-    //
-    // Service Builder Methods (static)
-    //
-    // ========================================================================
-
-    @PreventServiceDecoration
-    public static Alias buildAlias(Logger logger,
-
-    @Symbol(InternalSymbols.ALIAS_MODE)
-    String mode,
-
-    @InjectService("AliasOverrides")
-    AliasManager overridesManager,
-
-    Collection<AliasContribution> configuration)
-    {
-        AliasManager manager = new AliasManagerImpl(logger, configuration);
-
-        return new AliasImpl(manager, mode, overridesManager);
-    }
-
-    // ========================================================================
-    //
-    // Service Contribution Methods (static)
-    //
-    // ========================================================================
-
-    /**
-     * Contributes the factory for serveral built-in binding prefixes ("asset",
-     * "block", "component", "literal", prop",
-     * "nullfieldstrategy", "message", "validate", "translate", "var").
-     */
-    public static void contributeBindingSource(MappedConfiguration<String, BindingFactory> configuration,
-
-    @InjectService("PropBindingFactory")
-    BindingFactory propBindingFactory,
-
-    @InjectService("MessageBindingFactory")
-    BindingFactory messageBindingFactory,
-
-    @InjectService("ValidateBindingFactory")
-    BindingFactory validateBindingFactory,
-
-    @InjectService("TranslateBindingFactory")
-    BindingFactory translateBindingFactory,
-
-    @InjectService("AssetBindingFactory")
-    BindingFactory assetBindingFactory,
-
-    @InjectService("NullFieldStrategyBindingFactory")
-    BindingFactory nullFieldStrategyBindingFactory,
-
-    @InjectService("ContextBindingFactory")
-    BindingFactory contextBindingFactory,
-
-    @InjectService("SymbolBindingFactory")
-    BindingFactory symbolBindingFactory)
-    {
-        configuration.add(BindingConstants.LITERAL, new LiteralBindingFactory());
-        configuration.add(BindingConstants.COMPONENT, new ComponentBindingFactory());
-        configuration.add(BindingConstants.VAR, new RenderVariableBindingFactory());
-        configuration.add(BindingConstants.BLOCK, new BlockBindingFactory());
-
-        configuration.add(BindingConstants.PROP, propBindingFactory);
-        configuration.add(BindingConstants.MESSAGE, messageBindingFactory);
-        configuration.add(BindingConstants.VALIDATE, validateBindingFactory);
-        configuration.add(BindingConstants.TRANSLATE, translateBindingFactory);
-        configuration.add(BindingConstants.ASSET, assetBindingFactory);
-        configuration.add(BindingConstants.NULLFIELDSTRATEGY, nullFieldStrategyBindingFactory);
-        configuration.add(BindingConstants.CONTEXT, contextBindingFactory);
-        configuration.add(BindingConstants.SYMBOL, symbolBindingFactory);
-    }
-
-    public static void contributeClasspathAssetAliasManager(MappedConfiguration<String, String> configuration,
-
-    @Symbol(SymbolConstants.APPLICATION_VERSION)
-    String applicationVersion,
-
-    @Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)
-    String appPackage,
-
-    ComponentClassResolver resolver)
-    {
-        configuration.add("tapestry", "org/apache/tapestry5");
-
-        configuration.add("app", toPackagePath(appPackage));
-
-        // Each library gets a mapping or its folder automatically
-
-        Map<String, String> folderToPackageMapping = resolver.getFolderToPackageMapping();
-
-        for (String folder : folderToPackageMapping.keySet())
-        {
-            configuration.add(folder, toPackagePath(folderToPackageMapping.get(folder)));
-        }
-
-    }
-
-    /**
-     * Contributes an handler for each mapped classpath alias, as well handlers for context assets
-     * and stack assets (combined {@link JavaScriptStack} files).
-     */
-    public static void contributeAssetDispatcher(MappedConfiguration<String, AssetRequestHandler> configuration,
-
-    @ContextProvider
-    AssetFactory contextAssetFactory,
-
-    @Autobuild
-    StackAssetRequestHandler stackAssetRequestHandler,
-
-    ResourceCache resourceCache,
-
-    ClasspathAssetAliasManager classpathAssetAliasManager, ResourceStreamer streamer,
-            AssetResourceLocator assetResourceLocator)
-    {
-        resourceCache.addInvalidationListener(stackAssetRequestHandler);
-
-        Map<String, String> mappings = classpathAssetAliasManager.getMappings();
-
-        for (String folder : mappings.keySet())
-        {
-            String path = mappings.get(folder);
-
-            configuration.add(folder, new ClasspathAssetRequestHandler(streamer, assetResourceLocator, path));
-        }
-
-        configuration.add(RequestConstants.CONTEXT_FOLDER,
-                new ContextAssetRequestHandler(streamer, contextAssetFactory.getRootResource()));
-
-        configuration.add(RequestConstants.STACK_FOLDER, stackAssetRequestHandler);
-
-    }
-
-    private static String toPackagePath(String packageName)
-    {
-        return packageName.replace('.', '/');
-    }
-
-    public static void contributeComponentClassResolver(Configuration<LibraryMapping> configuration)
-    {
-        configuration.add(new LibraryMapping("core", "org.apache.tapestry5.corelib"));
-    }
-
-    /**
-     * Adds a number of standard component class transform workers:
-     * <dl>
-     * <dt>Retain</dt>
-     * <dd>Allows fields to retain their values between requests</dd>
-     * <dt>Persist</dt>
-     * <dd>Allows fields to store their their value persistently between requests</dd>
-     * <dt>Parameter</dt>
-     * <dd>Identifies parameters based on the {@link org.apache.tapestry5.annotations.Parameter} annotation</dd>
-     * <dt>Component</dt>
-     * <dd>Defines embedded components based on the {@link org.apache.tapestry5.annotations.Component} annotation</dd>
-     * <dt>Mixin</dt>
-     * <dd>Adds a mixin as part of a component's implementation</dd>
-     * <dt>Environment</dt>
-     * <dd>Allows fields to contain values extracted from the {@link org.apache.tapestry5.services.Environment} service</dd>
-     * <dt>Inject</dt>
-     * <dd>Used with the {@link org.apache.tapestry5.ioc.annotations.Inject} annotation, when a value is supplied</dd>
-     * <dt>InjectService</dt>
-     * <dd>Handles the {@link org.apache.tapestry5.ioc.annotations.InjectService} annotation</dd>
-     * <dt>InjectPage</dt>
-     * <dd>Adds code to allow access to other pages via the {@link org.apache.tapestry5.annotations.InjectPage} field
-     * annotation</dd>
-     * <dt>InjectBlock</dt>
-     * <dd>Allows a block from the template to be injected into a field</dd>
-     * <dt>IncludeStylesheet</dt>
-     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeStylesheet} annotation</dd>
-     * <dt>IncludeJavaScriptLibrary</dt>
-     * <dd>Supports the {@link org.apache.tapestry5.annotations.IncludeJavaScriptLibrary} annotation</dd>
-     * <dt>Import</dt>
-     * <dd>Supports the {@link Import} annotation</dd>
-     * <dt>SupportsInformalParameters</dt>
-     * <dd>Checks for the annotation</dd>
-     * <dt>Meta</dt>
-     * <dd>Checks for meta data annotations and adds it to the component model</dd>
-     * <dt>ApplicationState</dt>
-     * <dd>Converts fields that reference application state objects
-     * <dt>UnclaimedField</dt>
-     * <dd>Identifies unclaimed fields and resets them to null/0/false at the end of the request</dd>
-     * <dt>RenderCommand</dt>
-     * <dd>Ensures all components also implement {@link org.apache.tapestry5.runtime.RenderCommand}</dd>
-     * <dt>RenderPhase</dt>
-     * <dd>Link in render phaes methods</dd>
-     * <dt>InvokePostRenderCleanupOnResources</dt>
-     * <dd>Makes sure {@link org.apache.tapestry5.internal.InternalComponentResources#postRenderCleanup()} is invoked
-     * after a component finishes rendering</dd>
-     * <dt>GenerateAccessors</dt>
-     * <dd>Generates accessor methods if {@link org.apache.tapestry5.annotations.Property} annotation is present</dd>
-     * <dt>Cached</dt>
-     * <dd>Checks for the {@link org.apache.tapestry5.annotations.Cached} annotation</dd>
-     * <dt>Log</dt>
-     * <dd>Checks for the {@link org.apache.tapestry5.annotations.Log} annotation</dd>
-     * <dt>PageReset
-     * <dd>Checks for the {@link PageReset} annotation
-     * <dt>HeartbeatDeferred
-     * <dd>Support for the {@link HeartbeatDeferred} annotation
-     * <dt>ActivationRequestParameter
-     * <dd>Support for the {@link ActivationRequestParameter} annotation
-     * </dl>
-     */
-    public static void contributeComponentClassTransformWorker(
-            OrderedConfiguration<ComponentClassTransformWorker> configuration,
-
-            MetaWorker metaWorker,
-
-            ComponentClassResolver resolver)
-    {
-        configuration.addInstance("Cached", CachedWorker.class);
-
-        configuration.add("Meta", metaWorker);
-
-        configuration.addInstance("Inject", InjectWorker.class);
-        configuration.addInstance("InjectService", InjectServiceWorker.class);
-
-        configuration.add("MixinAfter", new MixinAfterWorker());
-        configuration.add("Component", new ComponentWorker(resolver));
-        configuration.add("Mixin", new MixinWorker(resolver));
-        configuration
-                .addInstance("ActivationRequestParameter", ActivationRequestParameterWorker.class, "after:OnEvent");
-        configuration.addInstance("OnEvent", OnEventWorker.class);
-        configuration.add("SupportsInformalParameters", new SupportsInformalParametersWorker());
-        configuration.addInstance("InjectPage", InjectPageWorker.class);
-        configuration.addInstance("InjectContainer", InjectContainerWorker.class);
-        configuration.addInstance("InjectComponent", InjectComponentWorker.class);
-        configuration.add("RenderCommand", new RenderCommandWorker());
-
-        // Default values for parameters are often some form of injection, so
-        // make sure
-        // that Parameter fields are processed after injections.
-
-        configuration.addInstance("Parameter", ParameterWorker.class, "after:Inject*");
-
-        // bind parameter should always go after parameter to make sure all
-        // parameters
-        // have been properly setup.
-
-        configuration.addInstance("BindParameter", BindParameterWorker.class, "after:Parameter");
-
-        configuration.addInstance("RenderPhase", RenderPhaseMethodWorker.class);
-
-        // Ideally, these should be ordered pretty late in the process to make
-        // sure there are no
-        // side effects with other workers that do work inside the page
-        // lifecycle methods.
-
-        add(configuration, PageLoaded.class, TransformConstants.CONTAINING_PAGE_DID_LOAD_SIGNATURE, "pageLoaded");
-        add(configuration, PageAttached.class, TransformConstants.CONTAINING_PAGE_DID_ATTACH_SIGNATURE, "pageAttached");
-        add(configuration, PageDetached.class, TransformConstants.CONTAINING_PAGE_DID_DETACH_SIGNATURE, "pageDetached");
-
-        configuration.add("Retain", new RetainWorker());
-        configuration.addInstance("Persist", PersistWorker.class);
-
-        configuration.addInstance("DiscardAfter", DiscardAfterWorker.class);
-
-        configuration.addInstance("IncludeStylesheet", IncludeStylesheetWorker.class, "after:SetupRender");
-        configuration
-                .addInstance("IncludeJavaScriptLibrary", IncludeJavaScriptLibraryWorker.class, "after:SetupRender");
-        configuration.addInstance("Import", ImportWorker.class, "after:SetupRender");
-
-        configuration.add("InvokePostRenderCleanupOnResources", new InvokePostRenderCleanupOnResourcesWorker());
-
-        configuration.add("Property", new PropertyWorker());
-
-        // These must come after Property, since they actually delete fields
-        // that may still have the annotation
-        configuration.addInstance("ApplicationState", ApplicationStateWorker.class, "after:Property");
-        configuration.addInstance("Environment", EnvironmentalWorker.class, "after:Property");
-
-        configuration.addInstance("Log", LogWorker.class);
-
-        configuration.addInstance("PageReset", PageResetAnnotationWorker.class);
-
-        // This one is always last. Any additional private fields that aren't
-        // annotated will
-        // be converted to clear out at the end of the request.
-
-        configuration.addInstance("UnclaimedField", UnclaimedFieldWorker.class, "after:*");
-
-        configuration.add("PageActivationContext", new PageActivationContextWorker(), "after:OnEvent");
-
-        configuration.addInstance("SessionAttribute", SessionAttributeWorker.class);
-
-        configuration.addInstance("HeartbeatDeferred", HeartbeatDeferredWorker.class, "after:RenderPhase");
-    }
-
-    /**
-     * <dl>
-     * <dt>Annotation</dt>
-     * <dd>Checks for {@link org.apache.tapestry5.beaneditor.DataType} annotation</dd>
-     * <dt>Default (ordered last)</dt>
-     * <dd>
-     * {@link org.apache.tapestry5.internal.services.DefaultDataTypeAnalyzer} service (
-     * {@link #contributeDefaultDataTypeAnalyzer(org.apache.tapestry5.ioc.MappedConfiguration)} )</dd>
-     * </dl>
-     */
-    public static void contributeDataTypeAnalyzer(OrderedConfiguration<DataTypeAnalyzer> configuration,
-            @InjectService("DefaultDataTypeAnalyzer")
-            DataTypeAnalyzer defaultDataTypeAnalyzer)
-    {
-        configuration.add("Annotation", new AnnotationDataTypeAnalyzer());
-        configuration.add("Default", defaultDataTypeAnalyzer, "after:*");
-    }
-
-    /**
-     * Maps property types to data type names:
-     * <ul>
-     * <li>String --&gt; text
-     * <li>Number --&gt; number
-     * <li>Enum --&gt; enum
-     * <li>Boolean --&gt; boolean
-     * <li>Date --&gt; date
-     * </ul>
-     */
-    public static void contributeDefaultDataTypeAnalyzer(MappedConfiguration<Class, String> configuration)
-    {
-        // This is a special case contributed to avoid exceptions when a
-        // property type can't be
-        // matched. DefaultDataTypeAnalyzer converts the empty string to null.
-
-        configuration.add(Object.class, "");
-
-        configuration.add(String.class, "text");
-        configuration.add(Number.class, "number");
-        configuration.add(Enum.class, "enum");
-        configuration.add(Boolean.class, "boolean");
-        configuration.add(Date.class, "date");
-        configuration.add(Calendar.class, "calendar");
-    }
-
-    @Contribute(BeanBlockSource.class)
-    public static void provideDefaultBeanBlocks(Configuration<BeanBlockContribution> configuration)
-    {
-        addEditBlock(configuration, "text");
-        addEditBlock(configuration, "number");
-        addEditBlock(configuration, "enum");
-        addEditBlock(configuration, "boolean");
-        addEditBlock(configuration, "date");
-        addEditBlock(configuration, "password");
-        addEditBlock(configuration, "calendar");
-
-        // longtext uses a text area, not a text field
-
-        addEditBlock(configuration, "longtext");
-
-        addDisplayBlock(configuration, "enum");
-        addDisplayBlock(configuration, "date");
-        addDisplayBlock(configuration, "calendar");
-
-        // Password and long text have special output needs.
-        addDisplayBlock(configuration, "password");
-        addDisplayBlock(configuration, "longtext");
-    }
-
-    private static void addEditBlock(Configuration<BeanBlockContribution> configuration, String dataType)
-    {
-        addEditBlock(configuration, dataType, dataType);
-    }
-
-    private static void addEditBlock(Configuration<BeanBlockContribution> configuration, String dataType, String blockId)
-    {
-        configuration.add(new EditBlockContribution(dataType, "PropertyEditBlocks", blockId));
-    }
-
-    private static void addDisplayBlock(Configuration<BeanBlockContribution> configuration, String dataType)
-    {
-        addDisplayBlock(configuration, dataType, dataType);
-    }
-
-    private static void addDisplayBlock(Configuration<BeanBlockContribution> configuration, String dataType,
-            String blockId)
-    {
-        configuration.add(new DisplayBlockContribution(dataType, "PropertyDisplayBlocks", blockId));
-    }
-
-    /**
-     * Contributes the basic set of validators:
-     * <ul>
-     * <li>required</li>
-     * <li>minlength</li>
-     * <li>maxlength</li>
-     * <li>min</li>
-     * <li>max</li>
-     * <li>regexp</li>
-     * <li>email</li>
-     * <li>none</li>
-     * </ul>
-     */
-    public static void contributeFieldValidatorSource(MappedConfiguration<String, Validator> configuration)
-    {
-        configuration.add("required", new Required());
-        configuration.add("minlength", new MinLength());
-        configuration.add("maxlength", new MaxLength());
-        configuration.add("min", new Min());
-        configuration.add("max", new Max());
-        configuration.add("regexp", new Regexp());
-        configuration.add("email", new Email());
-        configuration.add("none", new None());
-    }
-
-    /**
-     * Contributes the base set of injection providers:
-     * <dl>
-     * <dt>Default</dt>
-     * <dd>based on {@link MasterObjectProvider}</dd>
-     * <dt>Block</dt>
-     * <dd>injects fields of type Block</dd>
-     * <dt>ComponentResources</dt>
-     * <dd>give component access to its resources</dd>
-     * <dt>CommonResources</dt>
-     * <dd>access to properties of resources (log, messages, etc.)</dd>
-     * <dt>Asset</dt>
-     * <dd>injection of assets (triggered via {@link Path} annotation), with the path relative to the component class</dd>
-     * <dt>Service</dt>
-     * <dd>ordered last, for use when Inject is present and nothing else works, matches field type against Tapestry IoC
-     * services</dd>
-     * </dl>
-     */
-    public static void contributeInjectionProvider(OrderedConfiguration<InjectionProvider> configuration,
-
-    MasterObjectProvider masterObjectProvider,
-
-    ObjectLocator locator,
-
-    SymbolSource symbolSource,
-
-    AssetSource assetSource)
-    {
-        configuration.add("Default", new DefaultInjectionProvider(masterObjectProvider, locator));
-
-        configuration.add("ComponentResources", new ComponentResourcesInjectionProvider());
-
-        // This comes after default, to deal with conflicts between injecting a
-        // String as the
-        // component id, and injecting a string with @Symbol or @Value.
-
-        configuration.add("CommonResources", new CommonResourcesInjectionProvider(), "after:Default");
-
-        configuration.add("Asset", new AssetInjectionProvider(symbolSource, assetSource), "before:Default");
-
-        configuration.add("Block", new BlockInjectionProvider(), "before:Default");
-
-        // This needs to be the last one, since it matches against services
-        // and might blow up if there is no match.
-        configuration.add("Service", new ServiceInjectionProvider(locator), "after:*");
-    }
-
-    /**
-     * Contributes two object providers:
-     * <dl>
-     * <dt>Alias</dt>
-     * <dd>Searches by type among {@linkplain AliasContribution
-     * contributions} to the {@link Alias} service</dd>
-     * <dt>Asset
-     * <dt>
-     * <dd>Checks for the {@link Path} annotation, and injects an {@link Asset}</dd>
-     * <dt>Service</dt>
-     * <dd>Injects based on the {@link Service} annotation, if present</dd>
-     * <dt>ApplicationMessages</dt>
-     * <dd>Injects the global application messages</dd>
-     * </dl>
-     */
-    public static void contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> configuration,
-
-    @Local
-    final Alias alias,
-
-    @InjectService("AssetObjectProvider")
-    ObjectProvider assetObjectProvider,
-
-    ObjectLocator locator)
-    {
-        // There's a nasty web of dependencies related to Alias; this wrapper
-        // class lets us defer instantiating the Alias service implementation just long enough
-        // to defuse those dependencies. The @Local annotation prevents a recursive call through
-        // the MasterObjectProvider to resolve the Alias service itself; that is
-        // MasterObjectProvider gets built using this proxy, then the proxy will trigger the
-        // construction of AliasImpl (which itself needs MasterObjectProvider to resolve some
-        // dependencies).
-
-        ObjectProvider wrapper = new ObjectProvider()
-        {
-            public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-            {
-                return alias.getObjectProvider().provide(objectType, annotationProvider, locator);
-            }
-        };
-
-        configuration.add("Alias", wrapper, "after:ServiceOverride");
-
-        configuration.add("Asset", assetObjectProvider, "before:AnnotationBasedContributions");
-
-        configuration.add("Service", new ServiceAnnotationObjectProvider(), "before:AnnotationBasedContributions");
-
-        configuration.add("ApplicationMessages", new ApplicationMessageCatalogObjectProvider(locator),
-                "before:AnnotationBasedContributions");
-
-    }
-
-    /**
-     * <dl>
-     * <dt>StoreIntoGlobals</dt>
-     * <dd>Stores the request and response into {@link org.apache.tapestry5.services.RequestGlobals} at the start of the
-     * pipeline</dd>
-     * <dt>IgnoredPaths</dt>
-     * <dd>Identifies requests that are known (via the IgnoredPathsFilter service's configuration) to be mapped to other
-     * applications</dd>
-     * <dt>GZip</dt>
-     * <dd>Handles GZIP compression of response streams (if supported by client)</dd>
-     */
-    public void contributeHttpServletRequestHandler(OrderedConfiguration<HttpServletRequestFilter> configuration,
-
-    @Symbol(SymbolConstants.GZIP_COMPRESSION_ENABLED)
-    boolean gzipCompressionEnabled,
-
-    @Autobuild
-    GZipFilter gzipFilter,
-
-    @InjectService("IgnoredPathsFilter")
-    HttpServletRequestFilter ignoredPathsFilter)
-    {
-        configuration.add("IgnoredPaths", ignoredPathsFilter);
-
-        configuration.add("GZIP", gzipCompressionEnabled ? gzipFilter : null, "after:IgnoredPaths");
-
-        HttpServletRequestFilter storeIntoGlobals = new HttpServletRequestFilter()
-        {
-            public boolean service(HttpServletRequest request, HttpServletResponse response,
-                    HttpServletRequestHandler handler) throws IOException
-            {
-                requestGlobals.storeServletRequestResponse(request, response);
-
-                return handler.service(request, response);
-            }
-        };
-
-        configuration.add("StoreIntoGlobals", storeIntoGlobals, "before:*");
-    }
-
-    /**
-     * Continues a number of filters into the RequestHandler service:
-     * <dl>
-     * <dt>StaticFiles</dt>
-     * <dd>Checks to see if the request is for an actual file, if so, returns true to let the servlet container process
-     * the request</dd>
-     * <dt>CheckForUpdates</dt>
-     * <dd>Periodically fires events that checks to see if the file system sources for any cached data has changed (see
-     * {@link org.apache.tapestry5.internal.services.CheckForUpdatesFilter}).
-     * <dt>ErrorFilter</dt>
-     * <dd>Catches request errors and lets the {@link org.apache.tapestry5.services.RequestExceptionHandler} handle them
-     * </dd>
-     * <dt>StoreIntoGlobals</dt>
-     * <dd>Stores the request and response into the {@link org.apache.tapestry5.services.RequestGlobals} service (this
-     * is repeated at the end of the pipeline, in case any filter substitutes the request or response).
-     * </dl>
-     */
-    public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration, Context context,
-
-    @Symbol(SymbolConstants.FILE_CHECK_INTERVAL)
-    @IntermediateType(TimeInterval.class)
-    long checkInterval,
-
-    @Symbol(SymbolConstants.FILE_CHECK_UPDATE_TIMEOUT)
-    @IntermediateType(TimeInterval.class)
-    long updateTimeout,
-
-    UpdateListenerHub updateListenerHub,
-
-    URLRewriter urlRewriter)
-    {
-        RequestFilter staticFilesFilter = new StaticFilesFilter(context);
-
-        RequestFilter storeIntoGlobals = new RequestFilter()
-        {
-            public boolean service(Request request, Response response, RequestHandler handler) throws IOException
-            {
-                requestGlobals.storeRequestResponse(request, response);
-
-                return handler.service(request, response);
-            }
-        };
-
-        RequestFilter fireEndOfRequestEvent = new RequestFilter()
-        {
-            public boolean service(Request request, Response response, RequestHandler handler) throws IOException
-            {
-                try
-                {
-                    return handler.service(request, response);
-                }
-                finally
-                {
-                    endOfRequestEventHub.fire();
-                }
-            }
-        };
-
-        configuration.add("CheckForUpdates",
-                new CheckForUpdatesFilter(updateListenerHub, checkInterval, updateTimeout), "before:*");
-
-        // we just need the URLRewriterRequestFilter if we have URL rewriter
-        // rules, of course.
-        if (urlRewriter.hasRequestRules())
-        {
-
-            URLRewriterRequestFilter urlRewriterRequestFilter = new URLRewriterRequestFilter(urlRewriter);
-            configuration.add("URLRewriter", urlRewriterRequestFilter, "before:StaticFiles");
-
-        }
-
-        configuration.add("StaticFiles", staticFilesFilter);
-
-        configuration.addInstance("ErrorFilter", RequestErrorFilter.class);
-
-        configuration.add("StoreIntoGlobals", storeIntoGlobals, "after:StaticFiles", "before:ErrorFilter");
-
-        configuration.add("EndOfRequest", fireEndOfRequestEvent, "after:StoreIntoGlobals", "before:ErrorFilter");
-
-    }
-
-    /**
-     * Contributes the basic set of translators:
-     * <ul>
-     * <li>string</li>
-     * <li>byte</li>
-     * <li>short</li>
-     * <li>integer</li>
-     * <li>long</li>
-     * <li>float</li>
-     * <li>double</li>
-     * <li>BigInteger</li>
-     * <li>BigDecimal</li>
-     * </ul>
-     */
-    public static void contributeTranslatorSource(MappedConfiguration<Class, Translator> configuration,
-            NumericTranslatorSupport support)
-    {
-
-        configuration.add(String.class, new StringTranslator());
-
-        Class[] types = new Class[]
-        { Byte.class, Short.class, Integer.class, Long.class, Float.class, Double.class, BigInteger.class,
-                BigDecimal.class };
-
-        for (Class type : types)
-        {
-            String name = type.getSimpleName().toLowerCase();
-
-            configuration.add(type, new NumericTranslator(name, type, support));
-        }
-    }
-
-    /**
-     * Adds coercions:
-     * <ul>
-     * <li>String to {@link SelectModel}
-     * <li>String to {@link InsertPosition}
-     * <li>Map to {@link oSelectModel}
-     * <li>Collection to {@link GridDataSource}
-     * <li>null to {@link GridDataSource}
-     * <li>String to {@link GridPagerPosition}
-     * <li>List to {@link SelectModel}
-     * <li>{@link .ComponentResourcesAware} (typically, a component) to {@link ComponentResources}
-     * <li>String to {@link BlankOption}
-     * <li> {@link ComponentResources} to {@link PropertyOverrides}
-     * <li>String to {@link Renderable}
-     * <li>{@link Renderable} to {@link Block}
-     * <li>String to {@link DateFormat}
-     * <li>{@link PrimaryKeyEncoder} to {@link ValueEncoder}
-     * <li>String to {@link Resource} (via {@link AssetSource#resourceForPath(String)})
-     * <li>{@link Renderable} to {@link RenderCommand}</li>
-     * <li>String to {@link LoopFormState}</li>
-     * <li>String to {@link SubmitMode}</li>
-     * <li>String to {@link Pattern}</li>
-     * <li>String to {@link DateFormat}</li>
-     * </ul>
-     */
-    public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration,
-
-    @Builtin
-    TypeCoercer coercer,
-
-    @Builtin
-    final ThreadLocale threadLocale,
-
-    @Core
-    final AssetSource assetSource)
-    {
-        configuration.add(CoercionTuple.create(ComponentResources.class, PropertyOverrides.class,
-                new Coercion<ComponentResources, PropertyOverrides>()
-                {
-                    public PropertyOverrides coerce(ComponentResources input)
-                    {
-                        return new PropertyOverridesImpl(input);
-                    }
-                }));
-
-        configuration.add(CoercionTuple.create(String.class, SelectModel.class, new Coercion<String, SelectModel>()
-        {
-            public SelectModel coerce(String input)
-            {
-                return TapestryInternalUtils.toSelectModel(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(Map.class, SelectModel.class, new Coercion<Map, SelectModel>()
-        {
-            @SuppressWarnings("unchecked")
-            public SelectModel coerce(Map input)
-            {
-                return TapestryInternalUtils.toSelectModel(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(Collection.class, GridDataSource.class,
-                new Coercion<Collection, GridDataSource>()
-                {
-                    public GridDataSource coerce(Collection input)
-                    {
-                        return new CollectionGridDataSource(input);
-                    }
-                }));
-
-        configuration.add(CoercionTuple.create(void.class, GridDataSource.class, new Coercion<Void, GridDataSource>()
-        {
-            private final GridDataSource source = new NullDataSource();
-
-            public GridDataSource coerce(Void input)
-            {
-                return source;
-            }
-        }));
-
-        add(configuration, GridPagerPosition.class);
-        add(configuration, InsertPosition.class);
-        add(configuration, BlankOption.class);
-        add(configuration, LoopFormState.class);
-        add(configuration, SubmitMode.class);
-
-        configuration.add(CoercionTuple.create(List.class, SelectModel.class, new Coercion<List, SelectModel>()
-        {
-            @SuppressWarnings("unchecked")
-            public SelectModel coerce(List input)
-            {
-                return TapestryInternalUtils.toSelectModel(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(String.class, Pattern.class, new Coercion<String, Pattern>()
-        {
-            public Pattern coerce(String input)
-            {
-                return Pattern.compile(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(ComponentResourcesAware.class, ComponentResources.class,
-                new Coercion<ComponentResourcesAware, ComponentResources>()
-                {
-
-                    public ComponentResources coerce(ComponentResourcesAware input)
-                    {
-                        return input.getComponentResources();
-                    }
-                }));
-
-        configuration.add(CoercionTuple.create(String.class, Renderable.class, new Coercion<String, Renderable>()
-        {
-            public Renderable coerce(String input)
-            {
-                return new StringRenderable(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(Renderable.class, Block.class, new Coercion<Renderable, Block>()
-        {
-            public Block coerce(Renderable input)
-            {
-                return new RenderableAsBlock(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(String.class, DateFormat.class, new Coercion<String, DateFormat>()
-        {
-            public DateFormat coerce(String input)
-            {
-                return new SimpleDateFormat(input, threadLocale.getLocale());
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(String.class, Resource.class, new Coercion<String, Resource>()
-        {
-            public Resource coerce(String input)
-            {
-                return assetSource.resourceForPath(input);
-            }
-        }));
-
-        configuration.add(CoercionTuple.create(Renderable.class, RenderCommand.class,
-                new Coercion<Renderable, RenderCommand>()
-                {
-                    public RenderCommand coerce(final Renderable input)
-                    {
-                        return new RenderCommand()
-                        {
-                            public void render(MarkupWriter writer, RenderQueue queue)
-                            {
-                                input.render(writer);
-                            }
-                        };
-                    }
-                }));
-
-        configuration.add(CoercionTuple.create(PrimaryKeyEncoder.class, ValueEncoder.class,
-                new PrimaryKeyEncoder2ValueEncoder(coercer)));
-
-        configuration.add(CoercionTuple.create(Date.class, Calendar.class, new Coercion<Date, Calendar>()
-        {
-            public Calendar coerce(Date input)
-            {
-                Calendar calendar = Calendar.getInstance(threadLocale.getLocale());
-                calendar.setTime(input);
-                return calendar;
-            }
-        }));
-
-        // Add support for "true" and "false", for compatibility with Tapestry 5.1 and earlier.
-        // These aliases may be removed in some later release.
-
-        StringToEnumCoercion<ClientValidation> stringToClientValidationCoercion = StringToEnumCoercion
-                .create(ClientValidation.class).addAlias("true", ClientValidation.BLUR)
-                .addAlias("false", ClientValidation.NONE);
-
-        configuration.add(CoercionTuple.create(String.class, ClientValidation.class, stringToClientValidationCoercion));
-    }
-
-    @SuppressWarnings("rawtypes")
-    private static <T extends Enum> void add(Configuration<CoercionTuple> configuration, Class<T> enumType)
-    {
-        configuration.add(CoercionTuple.create(String.class, enumType, StringToEnumCoercion.create(enumType)));
-    }
-
-    /**
-     * Adds built-in constraint generators:
-     * <ul>
-     * <li>PrimtiveField -- primitive fields are always required
-     * <li>ValidateAnnotation -- adds constraints from a {@link Validate} annotation
-     * </ul>
-     */
-    public static void contributeValidationConstraintGenerator(
-            OrderedConfiguration<ValidationConstraintGenerator> configuration)
-    {
-        configuration.add("PrimitiveField", new PrimitiveFieldConstraintGenerator());
-        configuration.add("ValidateAnnotation", new ValidateAnnotationConstraintGenerator());
-        configuration.addInstance("Messages", MessagesConstraintGenerator.class);
-    }
-
-    private static void add(OrderedConfiguration<ComponentClassTransformWorker> configuration,
-            Class<? extends Annotation> annotationClass, TransformMethodSignature lifecycleMethodSignature,
-            String methodAlias)
-    {
-        ComponentClassTransformWorker worker = new PageLifecycleAnnotationWorker(annotationClass,
-                lifecycleMethodSignature, methodAlias);
-
-        String name = TapestryInternalUtils.lastTerm(annotationClass.getName());
-
-        configuration.add(name, worker);
-    }
-
-    // ========================================================================
-    //
-    // Service Builder Methods (instance)
-    //
-    // ========================================================================
-
-    public Context buildContext(ApplicationGlobals globals)
-    {
-        return shadowBuilder.build(globals, "context", Context.class);
-    }
-
-    public static ComponentClassResolver buildComponentClassResolver(@Autobuild
-    ComponentClassResolverImpl service, @ComponentClasses
-    InvalidationEventHub hub)
-    {
-        // Allow the resolver to clean its cache when the component classes
-        // change
-
-        hub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    @Marker(ClasspathProvider.class)
-    public AssetFactory buildClasspathAssetFactory(ResourceCache resourceCache,
-            ClasspathAssetAliasManager aliasManager, AssetPathConverter converter)
-    {
-        ClasspathAssetFactory factory = new ClasspathAssetFactory(resourceCache, aliasManager, converter);
-
-        resourceCache.addInvalidationListener(factory);
-
-        return factory;
-    }
-
-    @Marker(ContextProvider.class)
-    public AssetFactory buildContextAssetFactory(ApplicationGlobals globals,
-
-    AssetPathConstructor assetPathConstructor,
-
-    AssetPathConverter converter)
-    {
-        return new ContextAssetFactory(assetPathConstructor, globals.getContext(), converter);
-    }
-
-    /**
-     * Builds the PropBindingFactory as a chain of command. The terminator of
-     * the chain is responsible for ordinary
-     * property names (and property paths).
-     * <p/>
-     * This mechanism has been replaced in 5.1 with a more sophisticated parser based on ANTLR. See <a
-     * href="https://issues.apache.org/jira/browse/TAP5-79">TAP5-79</a> for details. There are no longer any built-in
-     * contributions to the configuration.
-     * 
-     * @param configuration
-     *            contributions of special factories for some constants, each
-     *            contributed factory may return a
-     *            binding if applicable, or null otherwise
-     */
-    public BindingFactory buildPropBindingFactory(List<BindingFactory> configuration, @Autobuild
-    PropBindingFactory service)
-    {
-        configuration.add(service);
-
-        return chainBuilder.build(BindingFactory.class, configuration);
-    }
-
-    /**
-     * Builds the source of {@link Messages} containing validation messages. The
-     * contributions are paths to message
-     * bundles (resource paths within the classpath); the default contribution
-     * is "org/apache/tapestry5/internal/ValidationMessages".
-     */
-    public ValidationMessagesSource buildValidationMessagesSource(List<String> configuration,
-
-    UpdateListenerHub updateListenerHub,
-
-    @ClasspathProvider
-    AssetFactory classpathAssetFactory,
-
-    PropertiesFileParser parser,
-
-    ComponentMessagesSource componentMessagesSource,
-
-    ClasspathURLConverter classpathURLConverter)
-    {
-        ValidationMessagesSourceImpl service = new ValidationMessagesSourceImpl(configuration,
-                classpathAssetFactory.getRootResource(), parser, componentMessagesSource, classpathURLConverter);
-        updateListenerHub.addUpdateListener(service);
-
-        return service;
-    }
-
-    public static MetaDataLocator buildMetaDataLocator(@Autobuild
-    MetaDataLocatorImpl service, @ComponentClasses
-    InvalidationEventHub hub)
-    {
-        hub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    public PersistentFieldStrategy buildClientPersistentFieldStrategy(LinkCreationHub linkCreationHub, @Autobuild
-    ClientPersistentFieldStrategy service)
-    {
-        linkCreationHub.addListener(service);
-
-        return service;
-    }
-
-    /**
-     * Builds a proxy to the current {@link org.apache.tapestry5.RenderSupport} inside this thread's
-     * {@link org.apache.tapestry5.services.Environment}.
-     */
-    public RenderSupport buildRenderSupport()
-    {
-        return environmentalBuilder.build(RenderSupport.class);
-    }
-
-    /**
-     * Builds a proxy to the current {@link JavaScriptSupport} inside this thread's {@link Environment}.
-     * 
-     * @since 5.2.0
-     */
-    public JavaScriptSupport buildJavaScriptSupport()
-    {
-        return environmentalBuilder.build(JavaScriptSupport.class);
-    }
-
-    /**
-     * Builds a proxy to the current {@link org.apache.tapestry5.services.ClientBehaviorSupport} inside this
-     * thread's {@link org.apache.tapestry5.services.Environment}.
-     * 
-     * @since 5.1.0.1
-     */
-
-    public ClientBehaviorSupport buildClientBehaviorSupport()
-    {
-        return environmentalBuilder.build(ClientBehaviorSupport.class);
-    }
-
-    /**
-     * Builds a proxy to the current {@link org.apache.tapestry5.services.FormSupport} inside this
-     * thread's {@link org.apache.tapestry5.services.Environment}.
-     */
-    public FormSupport buildFormSupport()
-    {
-        return environmentalBuilder.build(FormSupport.class);
-    }
-
-    /**
-     * Allows the exact steps in the component class transformation process to
-     * be defined.
-     */
-    @Marker(Primary.class)
-    public ComponentClassTransformWorker buildComponentClassTransformWorker(
-            List<ComponentClassTransformWorker> configuration)
-    {
-        return chainBuilder.build(ComponentClassTransformWorker.class, configuration);
-    }
-
-    /**
-     * Analyzes properties to determine the data types, used to
-     * {@linkplain #contributeBeanBlockSource(org.apache.tapestry5.ioc.Configuration)} locale
-     * display and edit blocks} for properties. The default behaviors
-     * look for a {@link org.apache.tapestry5.beaneditor.DataType} annotation
-     * before deriving the data type from the property type.
-     */
-    @Marker(Primary.class)
-    public DataTypeAnalyzer buildDataTypeAnalyzer(List<DataTypeAnalyzer> configuration)
-    {
-        return chainBuilder.build(DataTypeAnalyzer.class, configuration);
-    }
-
-    /**
-     * A chain of command for providing values for {@link Inject}-ed fields in
-     * component classes. The service's
-     * configuration can be extended to allow for different automatic injections
-     * (based on some combination of field
-     * type and field name).
-     */
-
-    public InjectionProvider buildInjectionProvider(List<InjectionProvider> configuration)
-    {
-        return chainBuilder.build(InjectionProvider.class, configuration);
-    }
-
-    /**
-     * Initializes the application, using a pipeline of {@link org.apache.tapestry5.services.ApplicationInitializer}s.
-     */
-    @Marker(Primary.class)
-    public ApplicationInitializer buildApplicationInitializer(Logger logger,
-            List<ApplicationInitializerFilter> configuration)
-    {
-        ApplicationInitializer terminator = new ApplicationInitializerTerminator();
-
-        return pipelineBuilder.build(logger, ApplicationInitializer.class, ApplicationInitializerFilter.class,
-                configuration, terminator);
-    }
-
-    public HttpServletRequestHandler buildHttpServletRequestHandler(Logger logger,
-
-    List<HttpServletRequestFilter> configuration,
-
-    @Primary
-    RequestHandler handler,
-
-    @Symbol(SymbolConstants.CHARSET)
-    String applicationCharset,
-
-    @Primary
-    SessionPersistedObjectAnalyzer analyzer)
-    {
-        HttpServletRequestHandler terminator = new HttpServletRequestHandlerTerminator(handler, applicationCharset,
-                analyzer);
-
-        return pipelineBuilder.build(logger, HttpServletRequestHandler.class, HttpServletRequestFilter.class,
-                configuration, terminator);
-    }
-
-    @Marker(Primary.class)
-    public RequestHandler buildRequestHandler(Logger logger, List<RequestFilter> configuration,
-
-    @Primary
-    Dispatcher masterDispatcher)
-    {
-        RequestHandler terminator = new RequestHandlerTerminator(masterDispatcher);
-
-        return pipelineBuilder.build(logger, RequestHandler.class, RequestFilter.class, configuration, terminator);
-    }
-
-    public ServletApplicationInitializer buildServletApplicationInitializer(Logger logger,
-            List<ServletApplicationInitializerFilter> configuration,
-
-            @Primary
-            ApplicationInitializer initializer)
-    {
-        ServletApplicationInitializer terminator = new ServletApplicationInitializerTerminator(initializer);
-
-        return pipelineBuilder.build(logger, ServletApplicationInitializer.class,
-                ServletApplicationInitializerFilter.class, configuration, terminator);
-    }
-
-    /**
-     * The component event result processor used for normal component requests.
-     */
-    @Marker(
-    { Primary.class, Traditional.class })
-    public ComponentEventResultProcessor buildComponentEventResultProcessor(
-            Map<Class, ComponentEventResultProcessor> configuration)
-    {
-        return constructComponentEventResultProcessor(configuration);
-    }
-
-    /**
-     * The component event result processor used for Ajax-oriented component
-     * requests.
-     */
-    @Marker(Ajax.class)
-    public ComponentEventResultProcessor buildAjaxComponentEventResultProcessor(
-            Map<Class, ComponentEventResultProcessor> configuration)
-    {
-        return constructComponentEventResultProcessor(configuration);
-    }
-
-    private ComponentEventResultProcessor constructComponentEventResultProcessor(
-            Map<Class, ComponentEventResultProcessor> configuration)
-    {
-        Set<Class> handledTypes = CollectionFactory.newSet(configuration.keySet());
-
-        // A slight hack!
-
-        configuration.put(Object.class, new ObjectComponentEventResultProcessor(handledTypes));
-
-        StrategyRegistry<ComponentEventResultProcessor> registry = StrategyRegistry.newInstance(
-                ComponentEventResultProcessor.class, configuration);
-
-        return strategyBuilder.build(registry);
-    }
-
-    /**
-     * The default data type analyzer is the final analyzer consulted and
-     * identifies the type entirely pased on the
-     * property type, working against its own configuration (mapping property
-     * type class to data type).
-     */
-    public static DataTypeAnalyzer buildDefaultDataTypeAnalyzer(@Autobuild
-    DefaultDataTypeAnalyzer service, @ComponentClasses
-    InvalidationEventHub hub)
-    {
-        hub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    public static TranslatorSource buildTranslatorSource(Map<Class, Translator> configuration,
-            TranslatorAlternatesSource alternatesSource, @ComponentClasses
-            InvalidationEventHub hub)
-    {
-        TranslatorSourceImpl service = new TranslatorSourceImpl(configuration,
-                alternatesSource.getTranslatorAlternates());
-
-        hub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    @Marker(Primary.class)
-    public ObjectRenderer buildObjectRenderer(Map<Class, ObjectRenderer> configuration)
-    {
-        return strategyBuilder.build(ObjectRenderer.class, configuration);
-    }
-
-    /**
-     * Returns a {@link org.apache.tapestry5.ioc.services.ClassFactory} that can
-     * be used to create extra classes around
-     * component classes. This ClassFactory will be cleared whenever an
-     * underlying component class is discovered to have
-     * changed. Use of this class factory implies that your code will become
-     * aware of this (if necessary) to discard any
-     * cached object (alas, this currently involves dipping into the internals
-     * side to register for the correct
-     * notifications). Failure to properly clean up can result in really nasty
-     * PermGen space memory leaks.
-     */
-    @Marker(ComponentLayer.class)
-    public ClassFactory buildComponentClassFactory(ComponentInstantiatorSource source)
-    {
-        return shadowBuilder.build(source, "classFactory", ClassFactory.class);
-    }
-
-    /**
-     * Ordered contributions to the MasterDispatcher service allow different URL
-     * matching strategies to occur.
-     */
-    @Marker(Primary.class)
-    public Dispatcher buildMasterDispatcher(List<Dispatcher> configuration)
-    {
-        return chainBuilder.build(Dispatcher.class, configuration);
-    }
-
-    public PropertyConduitSource buildPropertyConduitSource(@Autobuild
-    PropertyConduitSourceImpl service, @ComponentClasses
-    InvalidationEventHub hub)
-    {
-        hub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    /**
-     * Builds a shadow of the RequestGlobals.request property. Note again that
-     * the shadow can be an ordinary singleton,
-     * even though RequestGlobals is perthread.
-     */
-    public Request buildRequest()
-    {
-        return shadowBuilder.build(requestGlobals, "request", Request.class);
-    }
-
-    /**
-     * Builds a shadow of the RequestGlobals.HTTPServletRequest property.
-     * Generally, you should inject the {@link Request} service instead, as
-     * future version of Tapestry may operate beyond just the servlet API.
-     */
-    public HttpServletRequest buildHttpServletRequest()
-    {
-        return shadowBuilder.build(requestGlobals, "HTTPServletRequest", HttpServletRequest.class);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public HttpServletResponse buildHttpServletResponse()
-    {
-        return shadowBuilder.build(requestGlobals, "HTTPServletResponse", HttpServletResponse.class);
-    }
-
-    /**
-     * Builds a shadow of the RequestGlobals.response property. Note again that
-     * the shadow can be an ordinary singleton,
-     * even though RequestGlobals is perthread.
-     */
-    public Response buildResponse()
-    {
-        return shadowBuilder.build(requestGlobals, "response", Response.class);
-    }
-
-    /**
-     * The MarkupRenderer service is used to render a full page as markup.
-     * Supports an ordered configuration of {@link org.apache.tapestry5.services.MarkupRendererFilter}s.
-     */
-    public MarkupRenderer buildMarkupRenderer(Logger logger, @Autobuild
-    MarkupRendererTerminator terminator, List<MarkupRendererFilter> configuration)
-    {
-        return pipelineBuilder.build(logger, MarkupRenderer.class, MarkupRendererFilter.class, configuration,
-                terminator);
-    }
-
-    /**
-     * A wrapper around {@link org.apache.tapestry5.internal.services.PageRenderQueue} used for
-     * partial page renders.
-     * Supports an ordered configuration of {@link org.apache.tapestry5.services.PartialMarkupRendererFilter}s.
-     * 
-     * @see #contributePartialMarkupRenderer(org.apache.tapestry5.ioc.OrderedConfiguration, org.apache.tapestry5.Asset,
-     *      org.apache.tapestry5.ioc.services.SymbolSource, AssetSource)
-     */
-    public PartialMarkupRenderer buildPartialMarkupRenderer(Logger logger,
-            List<PartialMarkupRendererFilter> configuration, @Autobuild
-            PartialMarkupRendererTerminator terminator)
-    {
-
-        return pipelineBuilder.build(logger, PartialMarkupRenderer.class, PartialMarkupRendererFilter.class,
-                configuration, terminator);
-    }
-
-    public PageRenderRequestHandler buildPageRenderRequestHandler(List<PageRenderRequestFilter> configuration,
-            Logger logger, @Autobuild
-            PageRenderRequestHandlerImpl terminator)
-    {
-        return pipelineBuilder.build(logger, PageRenderRequestHandler.class, PageRenderRequestFilter.class,
-                configuration, terminator);
-    }
-
-    /**
-     * Builds the component action request handler for traditional (non-Ajax)
-     * requests. These typically result in a
-     * redirect to a Tapestry render URL.
-     */
-    @Marker(
-    { Traditional.class, Primary.class })
-    public ComponentEventRequestHandler buildComponentEventRequestHandler(
-            List<ComponentEventRequestFilter> configuration, Logger logger, @Autobuild
-            ComponentEventRequestHandlerImpl terminator)
-    {
-        return pipelineBuilder.build(logger, ComponentEventRequestHandler.class, ComponentEventRequestFilter.class,
-                configuration, terminator);
-    }
-
-    /**
-     * Builds the action request handler for Ajax requests, based on a
-     * {@linkplain org.apache.tapestry5.ioc.services.PipelineBuilder
-     * pipeline} around {@link org.apache.tapestry5.internal.services.AjaxComponentEventRequestHandler} . Filters on
-     * the
-     * request handler are supported here as well.
-     */
-    @Marker(
-    { Ajax.class, Primary.class })
-    public ComponentEventRequestHandler buildAjaxComponentEventRequestHandler(
-            List<ComponentEventRequestFilter> configuration, Logger logger, @Autobuild
-            AjaxComponentEventRequestHandler terminator)
-    {
-        return pipelineBuilder.build(logger, ComponentEventRequestHandler.class, ComponentEventRequestFilter.class,
-                configuration, terminator);
-    }
-
-    // ========================================================================
-    //
-    // Service Contribution Methods (instance)
-    //
-    // ========================================================================
-
-    /**
-     * Contributes the default "session" strategy.
-     */
-    public void contributeApplicationStatePersistenceStrategySource(
-            MappedConfiguration<String, ApplicationStatePersistenceStrategy> configuration,
-
-            @Local
-            ApplicationStatePersistenceStrategy sessionStategy)
-    {
-        configuration.add("session", sessionStategy);
-    }
-
-    public void contributeAssetSource(MappedConfiguration<String, AssetFactory> configuration, @ContextProvider
-    AssetFactory contextAssetFactory,
-
-    @ClasspathProvider
-    AssetFactory classpathAssetFactory)
-    {
-        configuration.add(AssetConstants.CONTEXT, contextAssetFactory);
-        configuration.add(AssetConstants.CLASSPATH, classpathAssetFactory);
-    }
-
-    /**
-     * Contributes handlers for the following types:
-     * <dl>
-     * <dt>Object</dt>
-     * <dd>Failure case, added to provide a more useful exception message</dd>
-     * <dt>{@link Link}</dt>
-     * <dd>Sends a redirect to the link (which is typically a page render link)</dd>
-     * <dt>String</dt>
-     * <dd>Sends a page render redirect</dd>
-     * <dt>Class</dt>
-     * <dd>Interpreted as the class name of a page, sends a page render render redirect (this is more refactoring safe
-     * than the page name)</dd>
-     * <dt>{@link Component}</dt>
-     * <dd>A page's root component (though a non-root component will work, but will generate a warning). A direct to the
-     * containing page is sent.</dd>
-     * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
-     * <dd>The stream response is sent as the actual reply.</dd>
-     * <dt>URL</dt>
-     * <dd>Sends a redirect to a (presumably) external URL</dd>
-     * </dl>
-     */
-    public void contributeComponentEventResultProcessor(@Traditional
-    @ComponentInstanceProcessor
-    ComponentEventResultProcessor componentInstanceProcessor,
-
-    MappedConfiguration<Class, ComponentEventResultProcessor> configuration)
-    {
-        configuration.add(Link.class, new ComponentEventResultProcessor<Link>()
-        {
-            public void processResultValue(Link value) throws IOException
-            {
-                response.sendRedirect(value);
-            }
-        });
-
-        configuration.add(URL.class, new ComponentEventResultProcessor<URL>()
-        {
-            public void processResultValue(URL value) throws IOException
-            {
-                response.sendRedirect(value.toExternalForm());
-            }
-        });
-
-        configuration.add(HttpError.class, new ComponentEventResultProcessor<HttpError>()
-        {
-            public void processResultValue(HttpError value) throws IOException
-            {
-                response.sendError(value.getStatusCode(), value.getMessage());
-            }
-        });
-
-        configuration.addInstance(String.class, PageNameComponentEventResultProcessor.class);
-
-        configuration.addInstance(Class.class, ClassResultProcessor.class);
-
-        configuration.add(Component.class, componentInstanceProcessor);
-
-        configuration.addInstance(StreamResponse.class, StreamResponseResultProcessor.class);
-
-        configuration.addInstance(StreamPageContent.class, StreamPageContentResultProcessor.class);
-    }
-
-    /**
-     * Contributes handlers for the following types:
-     * <dl>
-     * <dt>Object</dt>
-     * <dd>Failure case, added to provide more useful exception message</dd>
-     * <dt>{@link RenderCommand}</dt>
-     * <dd>Typically, a {@link org.apache.tapestry5.Block}</dd>
-     * <dt>{@link org.apache.tapestry5.annotations.Component}</dt>
-     * <dd>Renders the component and its body (unless its a page, in which case a redirect JSON response is sent)</dd>
-     * <dt>{@link org.apache.tapestry5.json.JSONObject} or {@link org.apache.tapestry5.json.JSONArray}</dt>
-     * <dd>The JSONObject is returned as a text/javascript response</dd>
-     * <dt>{@link org.apache.tapestry5.StreamResponse}</dt>
-     * <dd>The stream response is sent as the actual response</dd>
-     * <dt>String</dt>
-     * <dd>Interprets the value as a logical page name and sends a client response to redirect to that page</dd>
-     * <dt>{@link org.apache.tapestry5.Link}</dt>
-     * <dd>Sends a JSON response to redirect to the link</dd>
-     * <dt>{@link Class}</dt>
-     * <dd>Treats the class as a page class and sends a redirect for a page render for that page</dd>
-     * <dt>{@link org.apache.tapestry5.ajax.MultiZoneUpdate}</dt>
-     * <dd>Sends a single JSON response to update the content of multiple zones
-     * </dl>
-     * <p>
-     * In most cases, when you want to support a new type, you should convert it to one of the built-in supported types
-     * (such as {@link RenderCommand}. You can then inject the master AjaxComponentEventResultProcessor (use the
-     * {@link Ajax} marker annotation) and delegate to it.
-     */
-    @Contribute(ComponentEventResultProcessor.class)
-    @Ajax
-    public static void provideBaseAjaxComponentEventResultProcessors(
-            MappedConfiguration<Class, ComponentEventResultProcessor> configuration)
-    {
-        configuration.addInstance(RenderCommand.class, RenderCommandComponentEventResultProcessor.class);
-        configuration.addInstance(Component.class, AjaxComponentInstanceEventResultProcessor.class);
-        configuration.addInstance(JSONObject.class, JSONObjectEventResultProcessor.class);
-        configuration.addInstance(JSONArray.class, JSONArrayEventResultProcessor.class);
-        configuration.addInstance(StreamResponse.class, StreamResponseResultProcessor.class);
-        configuration.addInstance(String.class, AjaxPageNameComponentEventResultProcessor.class);
-        configuration.addInstance(Link.class, AjaxLinkComponentEventResultProcessor.class);
-        configuration.addInstance(Class.class, AjaxPageClassComponentEventResultProcessor.class);
-        configuration.addInstance(MultiZoneUpdate.class, MultiZoneUpdateEventResultProcessor.class);
-    }
-
-    /**
-     * The MasterDispatcher is a chain-of-command of individual Dispatchers,
-     * each handling (like a servlet) a particular
-     * kind of incoming request.
-     * <dl>
-     * <dt>RootPath</dt>
-     * <dd>Renders the start page for the "/" request (outdated)</dd>
-     * <dt>Asset</dt>
-     * <dd>Provides access to assets (context, classpath and virtual) via {@link AssetDispatcher}</dd>
-     * <dt>PageRender</dt>
-     * <dd>Identifies the {@link org.apache.tapestry5.services.PageRenderRequestParameters} and forwards onto
-     * {@link PageRenderRequestHandler}</dd>
-     * <dt>ComponentEvent</dt>
-     * <dd>Identifies the {@link ComponentEventRequestParameters} and forwards onto the
-     * {@link ComponentEventRequestHandler}</dd>
-     * </dl>
-     */
-    public static void contributeMasterDispatcher(OrderedConfiguration<Dispatcher> configuration,
-
-    @InjectService("AssetDispatcher")
-    Dispatcher assetDispatcher)
-    {
-        // Looks for the root path and renders the start page. This is
-        // maintained for compatibility
-        // with earlier versions of Tapestry 5, it is recommended that an Index
-        // page be used instead.
-
-        configuration.addInstance("RootPath", RootPathDispatcher.class, "before:Asset");
-
-        // This goes first because an asset to be streamed may have an file
-        // extension, such as
-        // ".html", that will confuse the later dispatchers.
-
-        configuration.add("Asset", assetDispatcher, "before:ComponentEvent");
-
-        configuration.addInstance("ComponentEvent", ComponentEventDispatcher.class, "before:PageRender");
-
-        configuration.addInstance("PageRender", PageRenderDispatcher.class);
-    }
-
-    /**
-     * Contributes a default object renderer for type Object, plus specialized
-     * renderers for {@link org.apache.tapestry5.services.Request}, {@link org.apache.tapestry5.ioc.Location},
-     * {@link org.apache.tapestry5.ComponentResources}, {@link org.apache.tapestry5.EventContext},
-     * {@link AvailableValues},
-     * List, and Object[].
-     */
-    @SuppressWarnings("unchecked")
-    public void contributeObjectRenderer(MappedConfiguration<Class, ObjectRenderer> configuration,
-
-    @InjectService("LocationRenderer")
-    ObjectRenderer locationRenderer,
-
-    final TypeCoercer typeCoercer)
-    {
-        configuration.add(Object.class, new DefaultObjectRenderer());
-
-        configuration.addInstance(Request.class, RequestRenderer.class);
-
-        configuration.add(Location.class, locationRenderer);
-
-        ObjectRenderer preformatted = new ObjectRenderer<Object>()
-        {
-            public void render(Object object, MarkupWriter writer)
-            {
-                writer.element("pre");
-                writer.write(typeCoercer.coerce(object, String.class));
-                writer.end();
-            }
-        };
-
-        configuration.add(ClassTransformation.class, preformatted);
-
-        configuration.addInstance(List.class, ListRenderer.class);
-        configuration.addInstance(Object[].class, ObjectArrayRenderer.class);
-        configuration.addInstance(ComponentResources.class, ComponentResourcesRenderer.class);
-        configuration.addInstance(EventContext.class, EventContextRenderer.class);
-        configuration.add(AvailableValues.class, new AvailableValuesRenderer());
-    }
-
-    /**
-     * Adds page render filters, each of which provides an {@link org.apache.tapestry5.annotations.Environmental}
-     * service. Filters
-     * often provide {@link org.apache.tapestry5.annotations.Environmental} services needed by
-     * components as they render.
-     * <dl>
-     * <dt>DocumentLinker</dt>
-     * <dd>Provides {@link org.apache.tapestry5.internal.services.DocumentLinker}</dd>
-     * <dt>JavascriptSupport</dt>
-     * <dd>Provides {@link JavaScriptSupport}</dd>
-     * <dt>RenderSupport</dt>
-     * <dd>Provides {@link org.apache.tapestry5.RenderSupport}</dd>
-     * <dt>InjectDefaultStyleheet</dt>
-     * <dd>Injects the default stylesheet</dd></dt>
-     * <dt>ClientBehaviorSupport</dt>
-     * <dd>Provides {@link ClientBehaviorSupport}</dd>
-     * <dt>Heartbeat</dt>
-     * <dd>Provides {@link org.apache.tapestry5.services.Heartbeat}</dd>
-     * <dt>DefaultValidationDecorator</dt>
-     * <dd>Provides {@link org.apache.tapestry5.ValidationDecorator} (as an instance of
-     * {@link org.apache.tapestry5.internal.DefaultValidationDecorator})</dd>
-     * </dl>
-     */
-    public void contributeMarkupRenderer(OrderedConfiguration<MarkupRendererFilter> configuration,
-
-    @Path("${tapestry.spacer-image}")
-    final Asset spacerImage,
-
-    @Symbol(SymbolConstants.OMIT_GENERATOR_META)
-    final boolean omitGeneratorMeta,
-
-    @Symbol(SymbolConstants.TAPESTRY_VERSION)
-    final String tapestryVersion,
-
-    @Symbol(SymbolConstants.COMPACT_JSON)
-    final boolean compactJSON,
-
-    final SymbolSource symbolSource,
-
-    final AssetSource assetSource,
-
-    final JavaScriptStackSource javascriptStackSource,
-
-    final JavaScriptStackPathConstructor javascriptStackPathConstructor,
-
-    @Path("${tapestry.default-stylesheet}")
-    final Asset defaultStylesheet)
-    {
-        MarkupRendererFilter documentLinker = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                DocumentLinkerImpl linker = new DocumentLinkerImpl(omitGeneratorMeta, tapestryVersion, compactJSON);
-
-                environment.push(DocumentLinker.class, linker);
-
-                renderer.renderMarkup(writer);
-
-                environment.pop(DocumentLinker.class);
-
-                linker.updateDocument(writer.getDocument());
-            }
-        };
-
-        MarkupRendererFilter javaScriptSupport = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                DocumentLinker linker = environment.peekRequired(DocumentLinker.class);
-
-                JavaScriptSupportImpl support = new JavaScriptSupportImpl(linker, javascriptStackSource,
-                        javascriptStackPathConstructor);
-
-                environment.push(JavaScriptSupport.class, support);
-
-                renderer.renderMarkup(writer);
-
-                environment.pop(JavaScriptSupport.class);
-
-                support.commit();
-            }
-        };
-
-        MarkupRendererFilter renderSupport = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                JavaScriptSupport javascriptSupport = environment.peekRequired(JavaScriptSupport.class);
-
-                RenderSupportImpl support = new RenderSupportImpl(symbolSource, assetSource, javascriptSupport);
-
-                environment.push(RenderSupport.class, support);
-
-                renderer.renderMarkup(writer);
-
-                environment.pop(RenderSupport.class);
-            }
-        };
-
-        MarkupRendererFilter injectDefaultStylesheet = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                DocumentLinker linker = environment.peekRequired(DocumentLinker.class);
-
-                linker.addStylesheetLink(new StylesheetLink(defaultStylesheet.toClientURL()));
-
-                renderer.renderMarkup(writer);
-            }
-        };
-
-        MarkupRendererFilter clientBehaviorSupport = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                JavaScriptSupport javascriptSupport = environment.peekRequired(JavaScriptSupport.class);
-
-                ClientBehaviorSupportImpl clientBehaviorSupport = new ClientBehaviorSupportImpl(javascriptSupport,
-                        environment);
-
-                environment.push(ClientBehaviorSupport.class, clientBehaviorSupport);
-
-                renderer.renderMarkup(writer);
-
-                environment.pop(ClientBehaviorSupport.class);
-
-                clientBehaviorSupport.commit();
-            }
-        };
-
-        MarkupRendererFilter heartbeat = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                Heartbeat heartbeat = new HeartbeatImpl();
-
-                heartbeat.begin();
-
-                environment.push(Heartbeat.class, heartbeat);
-
-                renderer.renderMarkup(writer);
-
-                environment.pop(Heartbeat.class);
-
-                heartbeat.end();
-            }
-        };
-
-        MarkupRendererFilter defaultValidationDecorator = new MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer renderer)
-            {
-                ValidationDecorator decorator = new DefaultValidationDecorator(environment, spacerImage, writer);
-
-                environment.push(ValidationDecorator.class, decorator);
-
-                renderer.renderMarkup(writer);
-
-                environment.pop(ValidationDecorator.class);
-            }
-        };
-
-        configuration.add("DocumentLinker", documentLinker);
-        configuration.add("JavaScriptSupport", javaScriptSupport, "after:DocumentLinker");
-        configuration.add("RenderSupport", renderSupport, "after:JavaScriptSupport");
-        configuration.add("InjectDefaultStyleheet", injectDefaultStylesheet, "after:JavaScriptSupport");
-        configuration.add("ClientBehaviorSupport", clientBehaviorSupport, "after:JavaScriptSupport");
-        configuration.add("Heartbeat", heartbeat, "after:ClientBehaviorSupport");
-        configuration.add("DefaultValidationDecorator", defaultValidationDecorator, "after:Heartbeat");
-    }
-
-    /**
-     * Contributes {@link PartialMarkupRendererFilter}s used when rendering a
-     * partial Ajax response.
-     * <dl>
-     * <dt>DocumentLinker
-     * <dd>Provides {@link org.apache.tapestry5.internal.services.DocumentLinker}
-     * <dt>JavaScriptSupport
-     * <dd>Provides {@link JavaScriptSupport}</dd>
-     * <dt>PageRenderSupport</dt>
-     * <dd>Provides {@link org.apache.tapestry5.RenderSupport}</dd>
-     * <dt>ClientBehaviorSupport</dt>
-     * <dd>Provides {@link ClientBehaviorSupport}</dd>
-     * <dt>Heartbeat</dt>
-     * <dd>Provides {@link org.apache.tapestry5.services.Heartbeat}</dd>
-     * <dt>DefaultValidationDecorator</dt>
-     * <dd>Provides {@link org.apache.tapestry5.ValidationDecorator} (as an instance of
-     * {@link org.apache.tapestry5.internal.DefaultValidationDecorator})</dd>
-     * </dl>
-     */
-    public void contributePartialMarkupRenderer(OrderedConfiguration<PartialMarkupRendererFilter> configuration,
-
-    @Path("${tapestry.spacer-image}")
-    final Asset spacerImage,
-
-    final JavaScriptStackSource javascriptStackSource,
-
-    final JavaScriptStackPathConstructor javascriptStackPathConstructor,
-
-    final SymbolSource symbolSource,
-
-    final AssetSource assetSource)
-    {
-        PartialMarkupRendererFilter documentLinker = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                PartialMarkupDocumentLinker linker = new PartialMarkupDocumentLinker();
-
-                environment.push(DocumentLinker.class, linker);
-
-                renderer.renderMarkup(writer, reply);
-
-                environment.pop(DocumentLinker.class);
-
-                linker.commit(reply);
-            }
-        };
-
-        PartialMarkupRendererFilter javascriptSupport = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                String uid = Long.toHexString(System.currentTimeMillis());
-
-                String namespace = "_" + uid;
-
-                IdAllocator idAllocator = new IdAllocator(namespace);
-
-                DocumentLinker linker = environment.peekRequired(DocumentLinker.class);
-
-                JavaScriptSupportImpl support = new JavaScriptSupportImpl(linker, javascriptStackSource,
-                        javascriptStackPathConstructor, idAllocator, true);
-
-                environment.push(JavaScriptSupport.class, support);
-
-                renderer.renderMarkup(writer, reply);
-
-                environment.pop(JavaScriptSupport.class);
-
-                support.commit();
-            }
-        };
-
-        PartialMarkupRendererFilter renderSupport = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                JavaScriptSupport javascriptSupport = environment.peekRequired(JavaScriptSupport.class);
-
-                RenderSupportImpl support = new RenderSupportImpl(symbolSource, assetSource, javascriptSupport);
-
-                environment.push(RenderSupport.class, support);
-
-                renderer.renderMarkup(writer, reply);
-
-                environment.pop(RenderSupport.class);
-            }
-        };
-
-        PartialMarkupRendererFilter clientBehaviorSupport = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                JavaScriptSupport javascriptSupport = environment.peekRequired(JavaScriptSupport.class);
-
-                ClientBehaviorSupportImpl support = new ClientBehaviorSupportImpl(javascriptSupport, environment);
-
-                environment.push(ClientBehaviorSupport.class, support);
-
-                renderer.renderMarkup(writer, reply);
-
-                environment.pop(ClientBehaviorSupport.class);
-
-                support.commit();
-            }
-        };
-
-        PartialMarkupRendererFilter heartbeat = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                Heartbeat heartbeat = new HeartbeatImpl();
-
-                heartbeat.begin();
-
-                environment.push(Heartbeat.class, heartbeat);
-
-                renderer.renderMarkup(writer, reply);
-
-                environment.pop(Heartbeat.class);
-
-                heartbeat.end();
-            }
-        };
-
-        PartialMarkupRendererFilter defaultValidationDecorator = new PartialMarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-            {
-                ValidationDecorator decorator = new DefaultValidationDecorator(environment, spacerImage, writer);
-
-                environment.push(ValidationDecorator.class, decorator);
-
-                renderer.renderMarkup(writer, reply);
-
-                environment.pop(ValidationDecorator.class);
-            }
-        };
-
-        configuration.add("DocumentLinker", documentLinker);
-        configuration.add("JavaScriptSupport", javascriptSupport, "after:DocumentLinker");
-        configuration.add("RenderSupport", renderSupport, "after:JavaScriptSupport");
-        configuration.add("ClientBehaviorSupport", clientBehaviorSupport, "after:JavaScriptSupport");
-        configuration.add("Heartbeat", heartbeat, "after:ClientBehaviorSupport");
-        configuration.add("DefaultValidationDecorator", defaultValidationDecorator, "after:Heartbeat");
-    }
-
-    /**
-     * Contributes several strategies:
-     * <dl>
-     * <dt>session
-     * <dd>Values are stored in the {@link Session}
-     * <dt>flash
-     * <dd>Values are stored in the {@link Session}, until the next request (for the page)
-     * <dt>client
-     * <dd>Values are encoded into URLs (or hidden form fields)
-     * </dl>
-     */
-    public void contributePersistentFieldManager(MappedConfiguration<String, PersistentFieldStrategy> configuration,
-
-    Request request,
-
-    @InjectService("ClientPersistentFieldStrategy")
-    PersistentFieldStrategy clientStrategy)
-    {
-        configuration.add(PersistenceConstants.SESSION, new SessionPersistentFieldStrategy(request));
-        configuration.add(PersistenceConstants.FLASH, new FlashPersistentFieldStrategy(request));
-        configuration.add(PersistenceConstants.CLIENT, clientStrategy);
-    }
-
-    /**
-     * Contributes org/apache/tapestry5/internal/ValidationMessages as
-     * "Default", ordered first.
-     */
-    public void contributeValidationMessagesSource(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Default", "org/apache/tapestry5/internal/ValidationMessages", "before:*");
-    }
-
-    public static ValueEncoderSource buildValueEncoderSource(Map<Class, ValueEncoderFactory> configuration,
-            @ComponentClasses
-            InvalidationEventHub hub)
-    {
-        ValueEncoderSourceImpl service = new ValueEncoderSourceImpl(configuration);
-
-        hub.addInvalidationListener(service);
-
-        return service;
-    }
-
-    /**
-     * Contributes {@link ValueEncoderFactory}s for types:
-     * <ul>
-     * <li>Object
-     * <li>String
-     * <li>Enum
-     * </ul>
-     */
-    @SuppressWarnings("unchecked")
-    public static void contributeValueEncoderSource(MappedConfiguration<Class, ValueEncoderFactory> configuration)
-    {
-        configuration.addInstance(Object.class, TypeCoercedValueEncoderFactory.class);
-        configuration.add(String.class, GenericValueEncoderFactory.create(new StringValueEncoder()));
-        configuration.add(Enum.class, new EnumValueEncoderFactory());
-    }
-
-    /**
-     * Contributes a single filter, "Secure", which checks for non-secure
-     * requests that access secure pages.
-     */
-    public void contributePageRenderRequestHandler(OrderedConfiguration<PageRenderRequestFilter> configuration,
-            final RequestSecurityManager securityManager)
-    {
-        PageRenderRequestFilter secureFilter = new PageRenderRequestFilter()
-        {
-            public void handle(PageRenderRequestParameters parameters, PageRenderRequestHandler handler)
-                    throws IOException
-            {
-
-                if (securityManager.checkForInsecurePageRenderRequest(parameters))
-                    return;
-
-                handler.handle(parameters);
-            }
-        };
-
-        configuration.add("Secure", secureFilter);
-    }
-
-    /**
-     * Configures the extensions that will require a digest to be downloaded via
-     * the asset dispatcher. Most resources
-     * are "safe", they don't require a digest. For unsafe resources, the digest
-     * is incorporated into the URL to ensure
-     * that the client side isn't just "fishing".
-     * <p/>
-     * The extensions must be all lower case.
-     * <p/>
-     * This contributes "class", "properties" and "tml" (the template extension).
-     * 
-     * @param configuration
-     *            collection of extensions
-     */
-    public static void contributeResourceDigestGenerator(Configuration<String> configuration)
-    {
-        // Java class files always require a digest.
-        configuration.add("class");
-
-        // Even though properties don't contain sensible data we should protect
-        // them.
-        configuration.add("properties");
-
-        // Likewise, we don't want people fishing for templates.
-        configuration.add(TapestryConstants.TEMPLATE_EXTENSION);
-    }
-
-    public static void contributeTemplateParser(MappedConfiguration<String, URL> config)
-    {
-        // Any class inside the internal module would do. Or we could move all
-        // these
-        // files to o.a.t.services.
-
-        Class c = TemplateParserImpl.class;
-
-        config.add("-//W3C//DTD XHTML 1.0 Strict//EN", c.getResource("xhtml1-strict.dtd"));
-        config.add("-//W3C//DTD XHTML 1.0 Transitional//EN", c.getResource("xhtml1-transitional.dtd"));
-        config.add("-//W3C//DTD XHTML 1.0 Frameset//EN", c.getResource("xhtml1-frameset.dtd"));
-        config.add("-//W3C//DTD HTML 4.01//EN", c.getResource("xhtml1-strict.dtd"));
-        config.add("-//W3C//DTD HTML 4.01 Transitional//EN", c.getResource("xhtml1-transitional.dtd"));
-        config.add("-//W3C//DTD HTML 4.01 Frameset//EN", c.getResource("xhtml1-frameset.dtd"));
-        config.add("-//W3C//ENTITIES Latin 1 for XHTML//EN", c.getResource("xhtml-lat1.ent"));
-        config.add("-//W3C//ENTITIES Symbols for XHTML//EN", c.getResource("xhtml-symbol.ent"));
-        config.add("-//W3C//ENTITIES Special for XHTML//EN", c.getResource("xhtml-special.ent"));
-    }
-
-    /**
-     * Contributes factory defaults that may be overridden.
-     */
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        // Remember this is request-to-request time, presumably it'll take the
-        // developer more than
-        // one second to make a change, save it, and switch back to the browser.
-
-        configuration.add(SymbolConstants.FILE_CHECK_INTERVAL, "1 s");
-        configuration.add(SymbolConstants.FILE_CHECK_UPDATE_TIMEOUT, "50 ms");
-
-        // This should be overridden for particular applications. These are the
-        // locales for which we have (at least some) localized messages.
-        configuration.add(SymbolConstants.SUPPORTED_LOCALES,
-                "en,it,es,zh_CN,pt_PT,de,ru,hr,fi_FI,sv_SE,fr_FR,da,pt_BR,ja,el,bg,no_NB");
-
-        configuration.add(SymbolConstants.TAPESTRY_VERSION,
-                VersionUtils.readVersionNumber("META-INF/maven/org.apache.tapestry/tapestry-core/pom.properties"));
-
-        configuration.add(SymbolConstants.COOKIE_MAX_AGE, "7 d");
-
-        configuration.add(SymbolConstants.START_PAGE_NAME, "start");
-
-        configuration.add(SymbolConstants.DEFAULT_JAVASCRIPT, "classpath:/org/apache/tapestry5/tapestry.js");
-
-        configuration.add(SymbolConstants.DEFAULT_STYLESHEET, "classpath:/org/apache/tapestry5/default.css");
-        configuration.add("tapestry.spacer-image", "classpath:/org/apache/tapestry5/spacer.gif");
-
-        configuration.add(SymbolConstants.PAGE_POOL_SOFT_LIMIT, "5");
-        configuration.add(SymbolConstants.PAGE_POOL_SOFT_WAIT, "10 ms");
-        configuration.add(SymbolConstants.PAGE_POOL_HARD_LIMIT, "20");
-        configuration.add(SymbolConstants.PAGE_POOL_ACTIVE_WINDOW, "10 m");
-        configuration.add(SymbolConstants.PAGE_POOL_ENABLED, "false");
-
-        configuration.add(SymbolConstants.SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS, "false");
-
-        configuration.add(SymbolConstants.FORCE_ABSOLUTE_URIS, "false");
-
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "true");
-
-        configuration.add(SymbolConstants.COMPRESS_WHITESPACE, "true");
-
-        configuration.add(MetaDataConstants.SECURE_PAGE, "false");
-
-        configuration.add(SymbolConstants.FORM_CLIENT_LOGIC_ENABLED, "true");
-
-        // This is designed to make it easy to keep synchronized with
-        // script.aculo.ous. As we
-        // support a new version, we create a new folder, and update the path
-        // entry. We can then
-        // delete the old version folder (or keep it around). This should be
-        // more manageable than
-        // overwriting the local copy with updates (it's too easy for files
-        // deleted between scriptaculous
-        // releases to be accidentally left lying around). There's also a
-        // ClasspathAliasManager
-        // contribution based on the path.
-
-        configuration.add(SymbolConstants.SCRIPTACULOUS, "classpath:${tapestry.scriptaculous.path}");
-        configuration.add("tapestry.scriptaculous.path", "org/apache/tapestry5/scriptaculous_1_9_0");
-
-        // Likewise for WebFX DatePicker, currently version 1.0.6
-
-        configuration.add("tapestry.datepicker.path", "org/apache/tapestry5/datepicker_106");
-        configuration.add(SymbolConstants.DATEPICKER, "classpath:${tapestry.datepicker.path}");
-
-        configuration.add("tapestry.blackbird.path", "org/apache/tapestry5/blackbird_1_0");
-        configuration.add(SymbolConstants.BLACKBIRD, "classpath:${tapestry.blackbird.path}");
-
-        configuration.add(SymbolConstants.PERSISTENCE_STRATEGY, PersistenceConstants.SESSION);
-
-        configuration.add(MetaDataConstants.RESPONSE_CONTENT_TYPE, "text/html");
-
-        configuration.add(SymbolConstants.CHARSET, "UTF-8");
-
-        configuration.add(SymbolConstants.APPLICATION_CATALOG,
-                String.format("context:WEB-INF/${%s}.properties", InternalSymbols.APP_NAME));
-
-        configuration.add(SymbolConstants.EXCEPTION_REPORT_PAGE, "ExceptionReport");
-
-        configuration.add(SymbolConstants.MIN_GZIP_SIZE, "100");
-
-        Random random = new Random(System.currentTimeMillis());
-
-        configuration.add(SymbolConstants.APPLICATION_VERSION, Long.toHexString(random.nextLong()));
-
-        configuration.add(SymbolConstants.OMIT_GENERATOR_META, "false");
-        configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "true");
-
-        configuration.add(SymbolConstants.SECURE_ENABLED, SymbolConstants.PRODUCTION_MODE_VALUE);
-        configuration.add(SymbolConstants.COMBINE_SCRIPTS, SymbolConstants.PRODUCTION_MODE_VALUE);
-        configuration.add(SymbolConstants.COMPACT_JSON, SymbolConstants.PRODUCTION_MODE_VALUE);
-
-        configuration.add(SymbolConstants.ENCODE_LOCALE_INTO_PATH, "true");
-
-        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "false");
-
-        configuration.add(InternalSymbols.PRE_SELECTED_FORM_NAMES, "reset,submit,select,id,method,action,onsubmit");
-
-        configuration.add(InternalSymbols.ALIAS_MODE, "servlet");
-    }
-
-    /**
-     * Adds content types:
-     * <dl>
-     * <dt>css</dt>
-     * <dd>text/css</dd>
-     * <dt>js</dt>
-     * <dd>text/javascript</dd>
-     * <dt>jpg, jpeg</dt>
-     * <dd>image/jpeg</dd>
-     * <dt>gif</dt>
-     * <dd>image/gif</dd>
-     * <dt>png</dt>
-     * <dd>image/png</dd>
-     * <dt>swf</dt>
-     * <dd>application/x-shockwave-flash</dd>
-     * </dl>
-     */
-    public void contributeResourceStreamer(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("css", "text/css");
-        configuration.add("js", "text/javascript");
-        configuration.add("gif", "image/gif");
-        configuration.add("jpg", "image/jpeg");
-        configuration.add("jpeg", "image/jpeg");
-        configuration.add("png", "image/png");
-        configuration.add("swf", "application/x-shockwave-flash");
-    }
-
-    /**
-     * Adds a listener to the {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSource} that clears the
-     * {@link PropertyAccess} and {@link TypeCoercer} caches on
-     * a class loader invalidation. In addition, forces the
-     * realization of {@link ComponentClassResolver} at startup.
-     */
-    public void contributeApplicationInitializer(OrderedConfiguration<ApplicationInitializerFilter> configuration,
-            final TypeCoercer typeCoercer, final ComponentClassResolver componentClassResolver, @ComponentClasses
-            final InvalidationEventHub invalidationEventHub, final @Autobuild
-            RestoreDirtySessionObjects restoreDirtySessionObjects)
-    {
-        final InvalidationListener listener = new InvalidationListener()
-        {
-            public void objectWasInvalidated()
-            {
-                propertyAccess.clearCache();
-
-                typeCoercer.clearCache();
-            }
-        };
-
-        ApplicationInitializerFilter clearCaches = new ApplicationInitializerFilter()
-        {
-            public void initializeApplication(Context context, ApplicationInitializer initializer)
-            {
-                // Snuck in here is the logic to clear the PropertyAccess
-                // service's cache whenever
-                // the component class loader is invalidated.
-
-                invalidationEventHub.addInvalidationListener(listener);
-
-                endOfRequestEventHub.addEndOfRequestListener(restoreDirtySessionObjects);
-
-                // Perform other pending initialization
-
-                initializer.initializeApplication(context);
-
-                // We don't care about the result, but this forces a load of the
-                // service
-                // at application startup, rather than on first request.
-
-                componentClassResolver.isPageName("ForceLoadAtStartup");
-            }
-        };
-
-        configuration.add("ClearCachesOnInvalidation", clearCaches);
-    }
-
-    /**
-     * Contributes filters:
-     * <dl>
-     * <dt>Ajax</dt>
-     * <dd>Determines if the request is Ajax oriented, and redirects to an alternative handler if so</dd>
-     * <dt>ImmediateRender</dt>
-     * <dd>When {@linkplain SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
-     * immediate action response rendering} is enabled, generates the markup response (instead of a page redirect
-     * response, which is the normal behavior)</dd>
-     * <dt>Secure</dt>
-     * <dd>Sends a redirect if an non-secure request accesses a secure page</dd>
-     * </dl>
-     */
-    public void contributeComponentEventRequestHandler(OrderedConfiguration<ComponentEventRequestFilter> configuration,
-            final RequestSecurityManager requestSecurityManager, @Ajax
-            ComponentEventRequestHandler ajaxHandler)
-    {
-        ComponentEventRequestFilter secureFilter = new ComponentEventRequestFilter()
-        {
-            public void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler)
-                    throws IOException
-            {
-                if (requestSecurityManager.checkForInsecureComponentEventRequest(parameters))
-                    return;
-
-                handler.handle(parameters);
-            }
-        };
-
-        configuration.add("Ajax", new AjaxFilter(request, ajaxHandler));
-
-        configuration.addInstance("ImmediateRender", ImmediateActionRenderResponseFilter.class);
-
-        configuration.add("Secure", secureFilter, "before:Ajax");
-    }
-
-    /**
-     * Contributes:
-     * <dl>
-     * <dt>AjaxFormUpdate</dt>
-     * <dd>{@link AjaxFormUpdateFilter}</dd>
-     * </dl>
-     * 
-     * @since 5.2.0
-     */
-    public static void contributeAjaxComponentEventRequestHandler(
-            OrderedConfiguration<ComponentEventRequestFilter> configuration)
-    {
-        configuration.addInstance("AjaxFormUpdate", AjaxFormUpdateFilter.class);
-    }
-
-    /**
-     * Contributes strategies accessible via the {@link NullFieldStrategySource} service.
-     * <p/>
-     * <dl>
-     * <dt>default</dt>
-     * <dd>Does nothing, nulls stay null.</dd>
-     * <dt>zero</dt>
-     * <dd>Null values are converted to zero.</dd>
-     * </dl>
-     */
-    public static void contributeNullFieldStrategySource(MappedConfiguration<String, NullFieldStrategy> configuration)
-    {
-        configuration.add("default", new DefaultNullFieldStrategy());
-        configuration.add("zero", new ZeroNullFieldStrategy());
-    }
-
-    /**
-     * Determines positioning of hidden fields relative to other elements (this
-     * is needed by {@link org.apache.tapestry5.corelib.components.FormFragment} and others.
-     * <p/>
-     * For elements input, select, textarea and label the hidden field is positioned after.
-     * <p/>
-     * For elements p, div, li and td, the hidden field is positioned inside.
-     */
-    public static void contributeHiddenFieldLocationRules(
-            MappedConfiguration<String, RelativeElementPosition> configuration)
-    {
-        configuration.add("input", RelativeElementPosition.AFTER);
-        configuration.add("select", RelativeElementPosition.AFTER);
-        configuration.add("textarea", RelativeElementPosition.AFTER);
-        configuration.add("label", RelativeElementPosition.AFTER);
-
-        configuration.add("p", RelativeElementPosition.INSIDE);
-        configuration.add("div", RelativeElementPosition.INSIDE);
-        configuration.add("td", RelativeElementPosition.INSIDE);
-        configuration.add("li", RelativeElementPosition.INSIDE);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public static LinkCreationHub buildLinkCreationHub(LinkSource source)
-    {
-        return source.getLinkCreationHub();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    @Marker(ComponentClasses.class)
-    public static InvalidationEventHub buildComponentClassesInvalidationEventHub(ComponentInstantiatorSource source)
-    {
-        return source.getInvalidationEventHub();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    @Marker(ComponentTemplates.class)
-    public static InvalidationEventHub buildComponentTemplatesInvalidationEventHub(
-            ComponentTemplateSource templateSource)
-    {
-        return templateSource.getInvalidationEventHub();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    @Marker(ComponentMessages.class)
-    public static InvalidationEventHub buildComponentMessagesInvalidationEventHub(ComponentMessagesSource messagesSource)
-    {
-        return messagesSource.getInvalidationEventHub();
-    }
-
-    @Scope(ScopeConstants.PERTHREAD)
-    public Environment buildEnvironment(PerthreadManager perthreadManager)
-    {
-        EnvironmentImpl service = new EnvironmentImpl();
-
-        perthreadManager.addThreadCleanupListener(service);
-
-        return service;
-    }
-
-    /**
-     * The master SessionPesistedObjectAnalyzer.
-     * 
-     * @since 5.1.0.0
-     */
-    @Marker(Primary.class)
-    public SessionPersistedObjectAnalyzer buildSessionPersistedObjectAnalyzer(
-            Map<Class, SessionPersistedObjectAnalyzer> configuration)
-    {
-        return strategyBuilder.build(SessionPersistedObjectAnalyzer.class, configuration);
-    }
-
-    /**
-     * Identifies String, Number and Boolean as immutable objects, a catch-all
-     * handler for Object (that understands
-     * the {@link org.apache.tapestry5.annotations.ImmutableSessionPersistedObject} annotation),
-     * and handlers for {@link org.apache.tapestry5.OptimizedSessionPersistedObject} and
-     * {@link org.apache.tapestry5.OptimizedApplicationStateObject}.
-     * 
-     * @since 5.1.0.0
-     */
-    public static void contributeSessionPersistedObjectAnalyzer(
-            MappedConfiguration<Class, SessionPersistedObjectAnalyzer> configuration)
-    {
-        configuration.add(Object.class, new DefaultSessionPersistedObjectAnalyzer());
-
-        SessionPersistedObjectAnalyzer<Object> immutable = new SessionPersistedObjectAnalyzer<Object>()
-        {
-            public boolean isDirty(Object object)
-            {
-                return false;
-            }
-        };
-
-        configuration.add(String.class, immutable);
-        configuration.add(Number.class, immutable);
-        configuration.add(Boolean.class, immutable);
-
-        configuration.add(OptimizedSessionPersistedObject.class, new OptimizedSessionPersistedObjectAnalyzer());
-        configuration.add(OptimizedApplicationStateObject.class, new OptimizedApplicationStateObjectAnalyzer());
-    }
-
-    /**
-     * Contributions are content types that do not benefit from compression. Adds
-     * the following content types:
-     * <ul>
-     * <li>image/jpeg</li>
-     * <li>image/gif</li>
-     * <li>image/png</li>
-     * <li>application/x-shockwave-flash</li>
-     * </ul>
-     * 
-     * @since 5.1.0.0
-     */
-    public static void contributeResponseCompressionAnalyzer(Configuration<String> configuration)
-    {
-        configuration.add("image/jpeg");
-        configuration.add("image/gif");
-        configuration.add("image/png");
-        configuration.add("application/x-shockwave-flash");
-    }
-
-    /**
-     * @since 5.1.1.0
-     */
-    @Marker(Primary.class)
-    public StackTraceElementAnalyzer buildMasterStackTraceElementAnalyzer(List<StackTraceElementAnalyzer> configuration)
-    {
-        return chainBuilder.build(StackTraceElementAnalyzer.class, configuration);
-    }
-
-    /**
-     * Contributes:
-     * <dl>
-     * <dt>Application</dt>
-     * <dd>Checks for classes in the application package</dd>
-     * <dt>Proxies</dt>
-     * <dd>Checks for classes that appear to be generated proxies.</dd>
-     * <dt>SunReflect</dt>
-     * <dd>Checks for <code>sun.reflect</code> (which are omitted)
-     * <dt>TapestryAOP</dt>
-     * <dd>Omits stack frames for classes related to Tapestry AOP (such as advice, etc.)</dd>
-     * </dl>
-     * 
-     * @since 5.1.0.0
-     */
-    public static void contributeMasterStackTraceElementAnalyzer(
-            OrderedConfiguration<StackTraceElementAnalyzer> configuration)
-    {
-        configuration.addInstance("Application", ApplicationStackTraceElementAnalyzer.class);
-        configuration.add("Proxies", new ProxiesStackTraceElementAnalyzer(), "before:Application");
-        configuration.add("Synthetic", new SyntheticStackTraceElementAnalyzer(), "before:Application");
-        configuration.add("SunReflect", new PrefixCheckStackTraceElementAnalyzer(
-                StackTraceElementClassConstants.OMITTED, "sun.reflect."));
-        configuration.addInstance("TapestryAOP", TapestryAOPStackFrameAnalyzer.class, "before:Application");
-    }
-
-    /**
-     * Advises the {@link org.apache.tapestry5.services.messages.ComponentMessagesSource} service so
-     * that the creation
-     * of {@link org.apache.tapestry5.ioc.Messages} instances can be deferred.
-     * 
-     * @since 5.1.0.0
-     */
-    @Match("ComponentMessagesSource")
-    public static void adviseLazy(LazyAdvisor advisor, MethodAdviceReceiver receiver)
-    {
-        advisor.addLazyMethodInvocationAdvice(receiver);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public ComponentRequestHandler buildComponentRequestHandler(List<ComponentRequestFilter> configuration,
-
-    @Autobuild
-    ComponentRequestHandlerTerminator terminator,
-
-    Logger logger)
-    {
-        return pipelineBuilder.build(logger, ComponentRequestHandler.class, ComponentRequestFilter.class,
-                configuration, terminator);
-    }
-
-    /**
-     * Contributes:
-     * <dl>
-     * <dt>InitializeActivePageName
-     * <dd>{@link InitializeActivePageName}
-     * </dl>
-     * 
-     * @since 5.2.0
-     */
-    public void contributeComponentRequestHandler(OrderedConfiguration<ComponentRequestFilter> configuration)
-    {
-        configuration.addInstance("InitializeActivePageName", InitializeActivePageName.class);
-    }
-
-    /**
-     * @throws Exception
-     * @since 5.1.0.2
-     */
-    public static ComponentEventLinkEncoder decorateComponentEventLinkEncoder(ComponentEventLinkEncoder encoder,
-            URLRewriter urlRewriter, Request request, Response response)
-    {
-        // no rules, no link rewriting.
-        if (!urlRewriter.hasLinkRules())
-            return null;
-
-        return new URLRewriterLinkEncoderInterceptor(urlRewriter, request, encoder);
-    }
-
-    /**
-     * Decorate FieldValidatorDefaultSource to setup the EnvironmentMessages
-     * object and place it in the environment.
-     * Although this could have been implemented directly in the default
-     * implementation of the service, doing it
-     * as service decoration ensures that the environment will be properly setup
-     * even if a user overrides the default
-     * service implementation.
-     * 
-     * @param defaultSource
-     *            The serivce to decorate
-     * @param environment
-     * @return
-     */
-    public static FieldValidatorDefaultSource decorateFieldValidatorDefaultSource(
-            final FieldValidatorDefaultSource defaultSource, final Environment environment)
-    {
-        return new FieldValidatorDefaultSource()
-        {
-
-            public FieldValidator createDefaultValidator(Field field, String overrideId, Messages overrideMessages,
-                    Locale locale, Class propertyType, AnnotationProvider propertyAnnotations)
-            {
-                environment.push(EnvironmentMessages.class, new EnvironmentMessages(overrideMessages, overrideId));
-                FieldValidator fieldValidator = defaultSource.createDefaultValidator(field, overrideId,
-                        overrideMessages, locale, propertyType, propertyAnnotations);
-                environment.pop(EnvironmentMessages.class);
-                return fieldValidator;
-            }
-
-            public FieldValidator createDefaultValidator(ComponentResources resources, String parameterName)
-            {
-
-                EnvironmentMessages em = new EnvironmentMessages(resources.getContainerMessages(), resources.getId());
-                environment.push(EnvironmentMessages.class, em);
-                FieldValidator fieldValidator = defaultSource.createDefaultValidator(resources, parameterName);
-                environment.pop(EnvironmentMessages.class);
-                return fieldValidator;
-            }
-        };
-    }
-
-    /**
-     * Exposes the Environmental {@link Heartbeat} as an injectable service.
-     * 
-     * @since 5.2.0
-     */
-    public Heartbeat buildHeartbeat()
-    {
-        return environmentalBuilder.build(Heartbeat.class);
-    }
-
-    /**
-     * Contributes the "core" and "core-datefield" {@link JavaScriptStack}s
-     * 
-     * @since 5.2.0
-     */
-    public static void contributeJavaScriptStackSource(MappedConfiguration<String, JavaScriptStack> configuration)
-    {
-        configuration.addInstance(InternalConstants.CORE_STACK_NAME, CoreJavaScriptStack.class);
-        configuration.addInstance("core-datefield", DateFieldStack.class);
-    }
-
-    public static ComponentMessagesSource buildComponentMessagesSource(UpdateListenerHub updateListenerHub, @Autobuild
-    ComponentMessagesSourceImpl service)
-    {
-        updateListenerHub.addUpdateListener(service);
-
-        return service;
-    }
-
-    /**
-     * Contributes "AppCatalog" as the Resource defined by {@link SymbolConstants#APPLICATION_CATALOG}.
-     * 
-     * @since 5.2.0
-     */
-    public static void contributeComponentMessagesSource(@Symbol(SymbolConstants.APPLICATION_CATALOG)
-    Resource applicationCatalog, OrderedConfiguration<Resource> configuration)
-    {
-        configuration.add("AppCatalog", applicationCatalog);
-    }
-
-    /**
-     * Contributes extractors for {@link Meta}, {@link Secure} and {@link ContentType} annotations.
-     * 
-     * @since 5.2.0
-     */
-    @SuppressWarnings("unchecked")
-    public static void contributeMetaWorker(MappedConfiguration<Class, MetaDataExtractor> configuration)
-    {
-        configuration.addInstance(Meta.class, MetaAnnotationExtractor.class);
-        configuration.add(Secure.class, new FixedExtractor(MetaDataConstants.SECURE_PAGE));
-        configuration.addInstance(ContentType.class, ContentTypeExtractor.class);
-    }
-
-    /**
-     * Builds the {@link ComponentTemplateLocator} as a chain of command.
-     * 
-     * @since 5.2.0
-     */
-    @Marker(Primary.class)
-    public ComponentTemplateLocator buildComponentTemplateLocator(List<ComponentTemplateLocator> configuration)
-    {
-        return chainBuilder.build(ComponentTemplateLocator.class, configuration);
-    }
-
-    /**
-     * Contributes two template locators:
-     * <dl>
-     * <dt>Default</dt>
-     * <dd>Searches for the template on the classpath ({@link DefaultTemplateLocator}</dd>
-     * <dt>Page (after:Default)</dt>
-     * <dd>Searches for <em>page</em> templates in the context ({@link PageTemplateLocator})</dd>
-     * </dl>
-     * 
-     * @since 5.2.0
-     */
-    public static void contributeComponentTemplateLocator(OrderedConfiguration<ComponentTemplateLocator> configuration,
-            @ContextProvider
-            AssetFactory contextAssetFactory, ComponentClassResolver componentClassResolver)
-    {
-        configuration.add("Default", new DefaultTemplateLocator());
-        configuration
-                .add("Page", new PageTemplateLocator(contextAssetFactory.getRootResource(), componentClassResolver),
-                        "after:Default");
-    }
-
-    /**
-     * Builds {@link ComponentEventLinkTransformer} service as a chain of command.
-     * 
-     * @since 5.2.0
-     */
-    @Marker(Primary.class)
-    public ComponentEventLinkTransformer buildComponentEventLinkTransformer(
-            List<ComponentEventLinkTransformer> configuration)
-    {
-        return chainBuilder.build(ComponentEventLinkTransformer.class, configuration);
-    }
-
-    /**
-     * Builds {@link PageRenderLinkTransformer} service as a chain of command.
-     * 
-     * @since 5.2.0
-     */
-    @Marker(Primary.class)
-    public PageRenderLinkTransformer buildPageRenderLinkTransformer(List<PageRenderLinkTransformer> configuration)
-    {
-        return chainBuilder.build(PageRenderLinkTransformer.class, configuration);
-    }
-
-    /**
-     * Provides the "LinkTransformer" interceptor for the {@link ComponentEventLinkEncoder} service. Other decorations
-     * should come after LinkTransformer.
-     * 
-     * @since 5.2.0
-     */
-    @Match("ComponentEventLinkEncoder")
-    public ComponentEventLinkEncoder decorateLinkTransformer(LinkTransformer linkTransformer,
-            ComponentEventLinkEncoder delegate)
-    {
-        return new LinkTransformerInterceptor(linkTransformer, delegate);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Traditional.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Traditional.java
deleted file mode 100644
index d833b5d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/Traditional.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation for a service that should be used for traditional page oriented requests, as opposed to Ajax
- * requests (that send ad-hoc or {@linkplain PartialMarkupRenderer partial page markup} responses.
- * 
- * @see ComponentEventRequestHandler
- */
-@Target(
-{ ElementType.PARAMETER, ElementType.FIELD, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface Traditional
-{
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformConstants.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformConstants.java
deleted file mode 100644
index f8a3b4c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformConstants.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.runtime.Event;
-
-import java.lang.reflect.Modifier;
-
-/**
- * Constants used by implementations of {@link org.apache.tapestry5.services.ComponentClassTransformWorker}.
- * <p/>
- * Note: methods on transformed components will not be invoked <em>unless</em> {@linkplain
- * org.apache.tapestry5.model.MutableComponentModel#addRenderPhase(Class) the component model is updated to identify the
- * use of the corresponding render phase}.
- */
-public final class TransformConstants
-{
-    // Shared parameters of a whole bunch of lifecycle methods, representing the different
-    // component render states.
-    private static final String[] RENDER_PHASE_METHOD_PARAMETERS = { MarkupWriter.class.getName(),
-            Event.class.getName() };
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#dispatchComponentEvent(org.apache.tapestry5.runtime.ComponentEvent)}.
-     *
-     * @see org.apache.tapestry5.annotations.OnEvent
-     */
-    public static final TransformMethodSignature DISPATCH_COMPONENT_EVENT = new TransformMethodSignature(
-            Modifier.PUBLIC, "boolean", "dispatchComponentEvent", new String[] { ComponentEvent.class.getName() },
-            null);
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidLoad()}.
-     */
-    public static final TransformMethodSignature CONTAINING_PAGE_DID_LOAD_SIGNATURE = new TransformMethodSignature(
-            "containingPageDidLoad");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#postRenderCleanup()}.
-     */
-    public static final TransformMethodSignature POST_RENDER_CLEANUP_SIGNATURE = new TransformMethodSignature(
-            "postRenderCleanup");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidDetach()}.
-     */
-    public static final TransformMethodSignature CONTAINING_PAGE_DID_DETACH_SIGNATURE = new TransformMethodSignature(
-            "containingPageDidDetach");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#containingPageDidAttach()}.
-     */
-    public static final TransformMethodSignature CONTAINING_PAGE_DID_ATTACH_SIGNATURE = new TransformMethodSignature(
-            "containingPageDidAttach");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.PageLifecycleListener#restoreStateBeforePageAttach()}
-     *
-     * @since 5.1.0.1
-     */
-    public static final TransformMethodSignature RESTORE_STATE_BEFORE_PAGE_ATTACH_SIGNATURE = new TransformMethodSignature(
-            "restoreStateBeforePageAttach");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#setupRender(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.SetupRender
-     */
-    public static final TransformMethodSignature SETUP_RENDER_SIGNATURE = renderPhaseSignature("setupRender");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#beginRender(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.BeginRender
-     */
-    public static final TransformMethodSignature BEGIN_RENDER_SIGNATURE = renderPhaseSignature("beginRender");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#beforeRenderTemplate(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
-     */
-    public static final TransformMethodSignature BEFORE_RENDER_TEMPLATE_SIGNATURE = renderPhaseSignature(
-            "beforeRenderTemplate");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#afterRenderTemplate(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.BeforeRenderTemplate
-     */
-    public static final TransformMethodSignature AFTER_RENDER_TEMPLATE_SIGNATURE = renderPhaseSignature(
-            "afterRenderTemplate");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#beforeRenderBody(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.BeforeRenderBody
-     */
-    public static final TransformMethodSignature BEFORE_RENDER_BODY_SIGNATURE = renderPhaseSignature(
-            "beforeRenderBody");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#afterRenderBody(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.AfterRenderBody
-     */
-    public static final TransformMethodSignature AFTER_RENDER_BODY_SIGNATURE = renderPhaseSignature("afterRenderBody");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#afterRender(MarkupWriter, Event)}
-     *
-     * @see org.apache.tapestry5.annotations.AfterRender
-     */
-    public static final TransformMethodSignature AFTER_RENDER_SIGNATURE = renderPhaseSignature("afterRender");
-
-    /**
-     * Signature for {@link org.apache.tapestry5.runtime.Component#cleanupRender(MarkupWriter, Event)}.
-     *
-     * @see org.apache.tapestry5.annotations.CleanupRender
-     */
-    public static final TransformMethodSignature CLEANUP_RENDER_SIGNATURE = renderPhaseSignature("cleanupRender");
-
-    private static TransformMethodSignature renderPhaseSignature(String name)
-    {
-        return new TransformMethodSignature(Modifier.PUBLIC, "void", name, RENDER_PHASE_METHOD_PARAMETERS, null);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformField.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformField.java
deleted file mode 100644
index a6d36d3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformField.java
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.reflect.Field;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.services.FieldValueConduit;
-
-/**
- * A field defined by (or created within) a {@link ClassTransformation},
- * allowing the details of the field to be
- * accessed or modified.
- * 
- * @since 5.2.0
- */
-public interface TransformField extends AnnotationProvider, Comparable<TransformField>
-{
-    /**
-     * Returns the name of the field.
-     */
-    String getName();
-
-    /**
-     * Returns the field's type, either a primitive name (such as "int" or "boolean")
-     * or a fully qualified class name, or an array type name
-     * (in Java source syntax, i.e., "java.lang.String[]").
-     */
-    String getType();
-
-    /**
-     * Claims the field so as to ensure that only a single annotation is applied to any single field.
-     * When a transformation occurs (driven by a field annotation), the field is claimed (using the
-     * annotation object as the tag). If a field has multiple conflicting annotations, this will be discovered when
-     * the code attempts to claim the field a second time.
-     * 
-     * @param tag
-     *            a non-null object that represents why the field is being tagged (this is typically
-     *            a specific annotation on the field)
-     * @throws IllegalStateException
-     *             if the field is already claimed for some other tag
-     */
-    void claim(Object tag);
-
-    /**
-     * Replaces read and write field access with a conduit.
-     * 
-     * @param conduitProvider
-     *            provides the actual conduit at class instantiation time
-     */
-    void replaceAccess(ComponentValueProvider<FieldValueConduit> conduitProvider);
-
-    /**
-     * Replaces read and write field access with a conduit.
-     * 
-     * @param conduitField
-     *            identifies the field containing (via injection) an instance of {@link FieldValueConduit}
-     */
-    void replaceAccess(TransformField conduitField);
-
-    /**
-     * Replaces read and write field access with a conduit. A new field is created for the conduit instance.
-     * 
-     * @param conduit
-     *            used to replace read and write access to the field
-     */
-    void replaceAccess(FieldValueConduit conduit);
-
-    /**
-     * Returns the modifiers for the field.
-     * 
-     * @see Field#getModifiers()
-     */
-    int getModifiers();
-
-    /**
-     * Converts this field into a read only field whose value is the provided
-     * value. This is used when converting an existing field into a read-only injected value.
-     * 
-     * @param value
-     *            the value provided by the field
-     */
-    void inject(Object value);
-
-    /**
-     * Like {@link #inject(Object)}, except that the value to be injected is obtained
-     * from a {@link ComponentValueProvider}. It is assumed that the provider will return an object
-     * assignable to the field.
-     * 
-     * @param <T>
-     *            type of field
-     * @param provider
-     *            provides the value to be assigned to the field
-     */
-    <T> void injectIndirect(ComponentValueProvider<T> provider);
-
-    /**
-     * Returns an object that can be used to access the value of the field for read and update.
-     * Changes to the field will honor any {@link FieldValueConduit} that has been applied to the field.
-     */
-    FieldAccess getAccess();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethod.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethod.java
deleted file mode 100644
index ea10e8f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethod.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.annotation.Annotation;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-/**
- * A method defined by (or created within) a {@link ClassTransformation}, allowing
- * for access and manipulation of the method.
- * <p>
- * The natural sorting order of TransformMethods is the same as {@link TransformMethodSignature}.
- * 
- * @since 5.2.0
- */
-public interface TransformMethod extends AnnotationProvider, Comparable<TransformMethod>
-{
-    /**
-     * @return the signature for the method, defining name, visibility, return type, parameter types and thrown
-     *         exceptions
-     */
-    TransformMethodSignature getSignature();
-
-    /** Returns just the name of the method. */
-    String getName();
-
-    /**
-     * Returns an object that can be used to invoke the method on an instance of the component class (regardless
-     * of the actual visibility of the method).
-     */
-    MethodAccess getAccess();
-
-    /**
-     * Add advice for the method; the advice will be threaded into method invocations of the indicated method.
-     * A method may be given multiple advice; each advice will receive control in turn (assuming
-     * the previous advice invokes {@link ComponentMethodInvocation#proceed()}) in the order the advice
-     * is added. The last advice will proceed to the original method implementation.
-     * 
-     * @param advice
-     *            to receive control when the method is invoked
-     * @see #addOperationAfter(ComponentInstanceOperation)
-     * @see #addOperationBefore(ComponentInstanceOperation)
-     */
-    void addAdvice(ComponentMethodAdvice advice);
-
-    /**
-     * Adds an operation that will execute before any
-     * further advice or operations. This is converted into
-     * advice that invokes the operation, then invokes {@link ComponentMethodInvocation#proceed()}.
-     */
-    void addOperationBefore(ComponentInstanceOperation operation);
-
-    /**
-     * Adds an operation that will execute after any
-     * further advice or operations. This is converted into
-     * advice that invokes {@link ComponentMethodInvocation#proceed()} before invoking the operation.
-     */
-    void addOperationAfter(ComponentInstanceOperation operation);
-
-    /**
-     * Converts a signature to a string used to identify the method; this consists of the
-     * {@link TransformMethodSignature#getMediumDescription()} appended with source file information
-     * and line number
-     * information (when available).
-     * 
-     * @param signature
-     * @return a string that identifies the class, method name, types of parameters, source file and
-     *         source line number
-     */
-    String getMethodIdentifier();
-
-    /**
-     * Returns true if the method is an override of a method from the parent class.
-     * 
-     * @return true if the parent class contains a method with the name signature
-     */
-    boolean isOverride();
-
-    /**
-     * Gets an annotation on a parameter of the method.
-     * 
-     * @param index
-     *            index of parameter
-     * @param annotationType
-     *            type of annotation to check for
-     * @return the annotation, if found, or null
-     */
-    <A extends Annotation> A getParameterAnnotation(int index, Class<A> annotationType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java
deleted file mode 100644
index 9f6cb5f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformMethodSignature.java
+++ /dev/null
@@ -1,252 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A representation of a method signature, which consists of its name, modifiers (primarily,
- * visibility), return type,
- * parameter types, and declared exception types.
- * <p/>
- * Types are stored as class names (or primitive names) because the signature is used with {@link ClassTransformation}
- * (which operates on as-yet unloaded classes).
- */
-public class TransformMethodSignature implements Comparable<TransformMethodSignature>
-{
-    private int hashCode = -1;
-
-    private final int modifiers;
-
-    private final String returnType, methodName;
-
-    private final String[] parameterTypes, exceptionTypes;
-
-    /**
-     * Convenience for adding a public void method with no parameters or exception types.
-     */
-
-    public TransformMethodSignature(String name)
-    {
-        this(Modifier.PUBLIC, "void", name, InternalConstants.EMPTY_STRING_ARRAY, InternalConstants.EMPTY_STRING_ARRAY);
-    }
-
-    public TransformMethodSignature(int modifiers, String type, String name, String[] parameterTypes,
-            String[] exceptionTypes)
-    {
-        assert InternalUtils.isNonBlank(name);
-        assert InternalUtils.isNonBlank(type);
-
-        this.modifiers = modifiers;
-
-        returnType = type;
-        methodName = name;
-
-        // TODO: Checks that no element within the two arrays
-        // is null or blank.
-
-        this.parameterTypes = typeNamesOrEmpty(parameterTypes);
-        this.exceptionTypes = typeNamesOrEmpty(exceptionTypes);
-    }
-
-    private String[] typeNamesOrEmpty(String[] types)
-    {
-        return types == null ? InternalConstants.EMPTY_STRING_ARRAY : types;
-    }
-
-    /**
-     * Returns a non-null array of the names of each declared exception type thrown by the method.
-     * Calling code should
-     * not modify the array.
-     */
-    public String[] getExceptionTypes()
-    {
-        return exceptionTypes;
-    }
-
-    /**
-     * Returns the name of the method.
-     */
-    public String getMethodName()
-    {
-        return methodName;
-    }
-
-    /**
-     * Returns the set of modifier flags for this method.
-     * 
-     * @see java.lang.reflect.Modifier
-     */
-    public int getModifiers()
-    {
-        return modifiers;
-    }
-
-    /**
-     * Returns an array of the type name for each parameter. Calling code should not modify the
-     * array.
-     */
-    public String[] getParameterTypes()
-    {
-        return parameterTypes;
-    }
-
-    /**
-     * Return the type name of the return type of the method.
-     */
-    public String getReturnType()
-    {
-        return returnType;
-    }
-
-    @Override
-    public int hashCode()
-    {
-        if (hashCode == -1)
-        {
-            hashCode = 17 * modifiers;
-            hashCode += 31 * returnType.hashCode();
-            hashCode += 31 * methodName.hashCode();
-
-            for (String parameterType : parameterTypes)
-            {
-                hashCode += 31 * parameterType.hashCode();
-            }
-
-            for (String exceptionType : exceptionTypes)
-            {
-                hashCode += 31 * exceptionType.hashCode();
-            }
-        }
-
-        return hashCode;
-    }
-
-    @Override
-    public boolean equals(Object other)
-    {
-        if (other == null || !(other instanceof TransformMethodSignature))
-            return false;
-
-        TransformMethodSignature ms = (TransformMethodSignature) other;
-
-        return modifiers == ms.modifiers && returnType.equals(ms.returnType) && methodName.equals(ms.methodName)
-                && matches(parameterTypes, ms.parameterTypes) && matches(exceptionTypes, ms.exceptionTypes);
-    }
-
-    private boolean matches(String[] values, String[] otherValues)
-    {
-        if (values.length != otherValues.length)
-            return false;
-
-        for (int i = 0; i < values.length; i++)
-        {
-            if (!values[i].equals(otherValues[i]))
-                return false;
-        }
-
-        return true;
-    }
-
-    /**
-     * Returns the long form description of the signature. This includes modifiers, return type,
-     * method name, parameters
-     * and thrown exceptions, formatted approximately as it would appear in Java source (except that
-     * parameter names,
-     * which are not known, do no appear).
-     */
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder();
-
-        // Package private is simply omitted.
-
-        if (modifiers != 0)
-        {
-            builder.append(Modifier.toString(modifiers));
-            builder.append(' ');
-        }
-
-        builder.append(returnType);
-        builder.append(' ');
-
-        addMethodNameAndParameters(builder);
-
-        for (int i = 0; i < exceptionTypes.length; i++)
-        {
-            if (i == 0)
-                builder.append(" throws ");
-            else
-                builder.append(", ");
-
-            builder.append(exceptionTypes[i]);
-        }
-
-        return builder.toString();
-    }
-
-    private void addMethodNameAndParameters(StringBuilder builder)
-    {
-        builder.append(methodName);
-        builder.append('(');
-
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            if (i > 0)
-                builder.append(", ");
-
-            builder.append(parameterTypes[i]);
-        }
-
-        builder.append(')');
-    }
-
-    /**
-     * Sorting is primarily via method name. For methods with the same name, the second level of
-     * sorting is by parameter
-     * count (descending).
-     */
-    public int compareTo(TransformMethodSignature o)
-    {
-        int result = methodName.compareTo(o.methodName);
-
-        // Sort descending
-        if (result == 0)
-            result = o.parameterTypes.length - parameterTypes.length;
-
-        return result;
-    }
-
-    /**
-     * Returns a shortened form of the string representation of the method. It lists just the name
-     * of the method and the
-     * types of any parameters, omitting return type, exceptions and modifiers.
-     * 
-     * @return
-     */
-    public String getMediumDescription()
-    {
-        StringBuilder builder = new StringBuilder();
-
-        addMethodNameAndParameters(builder);
-
-        return builder.toString();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java
deleted file mode 100644
index 84f8100..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TransformUtils.java
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import java.util.Map;
-
-/**
- * Support code for generating code (used when transforming component classes).
- */
-public final class TransformUtils
-{
-    private static final Map<String, PrimitiveTypeInfo> nameToInfo = newMap();
-
-    private static final Map<Class, PrimitiveTypeInfo> classToInfo = newMap();
-
-    static class PrimitiveTypeInfo
-    {
-        private final Class wrapperType;
-
-        private final String unwrapperMethodName;
-
-        private final String defaultValue;
-
-        public PrimitiveTypeInfo(Class wrapperType, String unwrapperMethodName, String defaultValue)
-        {
-            this.wrapperType = wrapperType;
-            this.unwrapperMethodName = unwrapperMethodName;
-            this.defaultValue = defaultValue;
-        }
-    }
-
-    static
-    {
-        add(boolean.class, Boolean.class, "booleanValue", "false");
-        add(byte.class, Byte.class, "byteValue", "0");
-        add(char.class, Character.class, "charValue", "0");
-        add(short.class, Short.class, "shortValue", "0");
-        add(int.class, Integer.class, "intValue", "0");
-        add(long.class, Long.class, "longValue", "0L");
-        add(float.class, Float.class, "floatValue", "0.0f");
-        add(double.class, Double.class, "doubleValue", "0.0d");
-    }
-
-    private TransformUtils()
-    {
-    }
-
-    private static void add(Class primitiveType, Class wrapperType, String unwrapperMethodName, String defaultValue)
-    {
-        PrimitiveTypeInfo info = new PrimitiveTypeInfo(wrapperType, unwrapperMethodName, defaultValue);
-
-        classToInfo.put(primitiveType, info);
-        nameToInfo.put(primitiveType.getName(), info);
-    }
-
-    /**
-     * Returns true if the specified type is a primitive type.
-     */
-    public static boolean isPrimitive(String type)
-    {
-        return nameToInfo.containsKey(type);
-    }
-
-    /**
-     * Returns the name of wrapper type for a given input type. For primitive types, returns the wrapper type. For other
-     * types, returns the input type name.
-     *
-     * @param type primitive type name, or fully qualified class name
-     */
-    public static String getWrapperTypeName(String type)
-    {
-        PrimitiveTypeInfo info = nameToInfo.get(type);
-
-        return info == null ? type : info.wrapperType.getName();
-    }
-
-    /**
-     * For primitive types, returns the method on the <em>wrapper type</em> that converts back to the primitive.
-     *
-     * @param type the primitive type
-     * @return the method of the corresponding wrapper type, or null if type is not a primitive type
-     */
-    public static String getUnwrapperMethodName(String type)
-    {
-        PrimitiveTypeInfo info = nameToInfo.get(type);
-
-        return info == null ? null : info.unwrapperMethodName;
-    }
-
-    /**
-     * Returns the wrapper type for a given input type. For primitive types, returns the wrapper type. For other types,
-     * returns the type itself.
-     *
-     * @param type primitive or object type
-     */
-    public static Class getWrapperType(Class type)
-    {
-        PrimitiveTypeInfo info = classToInfo.get(type);
-
-        return info == null ? type : info.wrapperType;
-    }
-
-    /**
-     * Returns the default value for a type. This is the string "null" for most types, or a literal value for primitive
-     * types.
-     */
-    public static String getDefaultValue(String type)
-    {
-        PrimitiveTypeInfo info = nameToInfo.get(type);
-
-        return info == null ? "null" : info.defaultValue;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorAlternatesSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorAlternatesSource.java
deleted file mode 100644
index 0aec87b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorAlternatesSource.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * This service is used by {@link TranslatorSource} to specify {@link Translator} <em>alternates</em>: translators that
- * are used when specified explicitly by name. These translators may overlap the standard translators
- * by type (thus requiring a separate configuration).
- * <p>
- * Translators contributed to this configuration must have names that do not overlap the standard translators. Further,
- * the contribution key must match the {@linkplain Translator#getName() translator name}.
- * 
- * @since 5.2.0
- */
-@UsesMappedConfiguration(Translator.class)
-public interface TranslatorAlternatesSource
-{
-    /**
-     * Get the mapping from name to Translator, based on the contributions to the service. It will be verified
-     * that the keys of the map corresponding to the names of the Translator values.
-     */
-    Map<String, Translator> getTranslatorAlternates();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java
deleted file mode 100644
index d53f1f6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/TranslatorSource.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-
-/**
- * A source for {@link org.apache.tapestry5.Translator}s, either by name or by property type. The source knows
- * about two sets of translators: the <em>standard</em> translators contributed directly to the service
- * and the <em>alternate</em> translators, contributed to the {@link TranslatorAlternatesSource} service.
- * <p/>
- * Each contributed translator must have a unique {@linkplain org.apache.tapestry5.Translator#getName() name}.
- * <p>
- * Generally, Translators are matched by type (i.e., the type matching a particular property that will be read or
- * updated). Contributions to this service use a {@link StrategyRegistry} to match by type. Translators can also be
- * selected by name. The {@link TranslatorAlternatesSource} service configuration is often used for this purpose.
- * <p>
- * The contribution key must match the {@linkplain Translator#getType() translator type}.
- */
-@UsesMappedConfiguration(key=Class.class, value=Translator.class)
-@SuppressWarnings("unchecked")
-public interface TranslatorSource
-{
-    /**
-     * Returns the translator with the given name (either a standard translator, or an alternate).
-     * 
-     * @param name
-     *            name of translator (as configured, but case is ignored)
-     * @return the shared translator instance
-     * @throws RuntimeException
-     *             if no translator is configured for the provided name
-     */
-    Translator get(String name);
-
-    /**
-     * Finds a {@link Translator} that is appropriate to the given type, which is usually obtained via
-     * {@link org.apache.tapestry5.Binding#getBindingType()}. Performs an inheritance-based search for the best match,
-     * among the <em>standard</em> translator (not alternates).
-     * 
-     * @param valueType
-     *            the type of value for which a default translator is needed
-     * @return the matching translator, or null if no match can be found
-     */
-    Translator findByType(Class valueType);
-
-    /**
-     * Finds a {@link Translator} that is appropriate to the given type, which is usually obtained via
-     * {@link org.apache.tapestry5.Binding#getBindingType()}. Performs an inheritance-based search for the best match,
-     * among the <em>standard</em> translators (not alternates).
-     * 
-     * @param valueType
-     *            the type of value for which a default translator is needed
-     * @return the matching translator
-     * @throws IllegalArgumentException
-     *             if no standard validator matches the provided type
-     */
-    Translator getByType(Class valueType);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/URLEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/URLEncoder.java
deleted file mode 100644
index 2bc0e63..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/URLEncoder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Service used to encode or decode strings that are placed into URLs.  This is used as an alternative to UUEncoding.
- * Alphabetics, numbers and some punctuation ("-", "_", ".", ":") are passed through as is, the "$" character is an
- * escape, followed by either another "$", or by a four digit hex unicode number.  A null input (not a blank input, but
- * actual null) has a special encoding, "$N". Likewise, the blank string has the special encoding "$B".
- */
-public interface URLEncoder
-{
-    /**
-     * Given an input value containing any characters, returns the input string, or an encoded version of the string (as
-     * outlined above).
-     *
-     * @param input string to be encoded, which may be null
-     * @return encoded version of input
-     */
-    String encode(String input);
-
-    /**
-     * Given a previously encoded string, returns the original input.
-     *
-     * @param input encoded string (may not be null)
-     * @return decoded input
-     */
-    String decode(String input);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/URLRewriter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/URLRewriter.java
deleted file mode 100644
index 4e035ee..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/URLRewriter.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-import org.apache.tapestry5.urlrewriter.URLRewriteContext;
-
-
-/**
- * Service that implements URL and link rewriting.
- *
- *
- * @since 5.1.0.2
- * @deprecated Use {@link LinkTransformer} instead
- */
-public interface URLRewriter
-{
-    /**
-     * Processes an incoming {@linkplain org.apache.tapestry5.services.Request}.
-     * This method must check if they need to rewrite this request. If no, it must return the received
-     * request unchanged. This method cannot return null.
-     * 
-     * @param request
-     *            a {@link org.apache.tapestry5.services.Request}.
-     * @return request a {@link org.apache.tapestry5.services.Request}. It cannot be null.
-     */
-    Request processRequest(Request request);
-
-    /**
-     * Processes rules for rewriting links.
-     * @param request the request to examine
-     * @param context the context providing additional information for rewriting
-     * @return the original request if the URLRewriter does nothing, a modified request otherwise, but never null
-     */
-    Request processLink(Request request, URLRewriteContext context);
-    
-    /**
-     *
-     * 
-     * @return true if the urlrewriter has any rules for rewriting inbound request urls
-     */
-    boolean hasRequestRules();
-
-
-    /**
-     * @return true if the URLRewriter has any rules for rewriting outbound links.
-     */
-    boolean hasLinkRules();
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java
deleted file mode 100644
index c9472b3..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationConstraintGenerator.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-import java.util.List;
-
-/**
- * Invoked to generate a list of validation constraint strings for a property. This typically involves scanning the
- * property for annotations or naming conventions that confer the desired validation. The constraint strings are
- * ultimately handed to {@link FieldValidatorSource#createValidator(org.apache.tapestry5.Field, String, String, String,
- * org.apache.tapestry5.ioc.Messages, java.util.Locale)}.
- */
-@UsesOrderedConfiguration(ValidationConstraintGenerator.class)
-public interface ValidationConstraintGenerator
-{
-    /**
-     * For a given property, identify all the approprite validation constraints. Each returned value is the name of a
-     * validator (i.e., "required") or a validator name and configuration (i.e., "minlength=5"). These contraints are
-     * exactly the individual terms in a {@link FieldValidatorSource#createValidators(org.apache.tapestry5.Field,
-     * String) validate specification}. These will ultimately be used to create {@link FieldValidator}s for the field
-     * that edits the property.
-     *
-     * @param propertyType       the type of the property for which constraints are needed
-     * @param annotationProvider provides access to any annotations concerning the property (for implementations that
-     *                           are based on analysis of property annotations)
-     * @return a list of constraints
-     * @see FieldValidatorSource
-     */
-    List<String> buildConstraints(Class propertyType, AnnotationProvider annotationProvider);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationMessagesSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationMessagesSource.java
deleted file mode 100644
index 540ea16..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValidationMessagesSource.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-
-import java.util.Locale;
-
-/**
- * Source for validation messages, within a particular locale.
- * <p/>
- * The service's configuration are paths, within the classpath, to bundles to load as part of the validation messages.
- * <p>
- * Starting with Tapestry 5.2, the returned Messages reflects all the contributed paths, with the
- * {@linkplain ComponentMessagesSource#getApplicationCatalog(java.util.Locale) global application catalog} ordered to
- * <em>override</em> any of the messages supplied by a contributed resource. This service will be elminated entirely in
- * Tapestry 5.3.
- * 
- * @deprecated Contribute to the {@link ComponentMessagesSource} service instead
- */
-@UsesOrderedConfiguration(String.class)
-public interface ValidationMessagesSource
-{
-    Messages getValidationMessages(Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValueEncoderFactory.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValueEncoderFactory.java
deleted file mode 100644
index db3a48e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValueEncoderFactory.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ValueEncoder;
-
-/**
- * A source for {@link ValueEncoder} instances of a given type.
- */
-public interface ValueEncoderFactory<V>
-{
-    /**
-     * For a given type, create an encoder.
-     *
-     * @param type type of object for which an encoder is needed
-     * @return the encoder for the object
-     */
-    ValueEncoder<V> create(Class<V> type);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValueEncoderSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValueEncoderSource.java
deleted file mode 100644
index 2c1de36..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ValueEncoderSource.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * A source for value encoders based on a property type.
- */
-@UsesMappedConfiguration(key=Class.class, value=ValueEncoderFactory.class)
-public interface ValueEncoderSource
-{
-    /**
-     * Gets or creates a value encoder for the indicated type.  ValueEncoders are cached.
-     *
-     * @param type type of value to be encoded and decoded
-     * @return the value encoder
-     */
-    <T> ValueEncoder<T> getValueEncoder(Class<T> type);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/CombinedRenderCommand.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/CombinedRenderCommand.java
deleted file mode 100644
index f575453..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/CombinedRenderCommand.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.ajax;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-
-/**
- * Combines exactly two render commands by pushing each onto the render queue.
- *
- * @since 5.1.0.1
- */
-public class CombinedRenderCommand implements RenderCommand
-{
-    private final RenderCommand first;
-
-    private final RenderCommand second;
-
-    public CombinedRenderCommand(RenderCommand first, RenderCommand second)
-    {
-        this.first = first;
-        this.second = second;
-    }
-
-    public void render(MarkupWriter writer, RenderQueue queue)
-    {
-        queue.push(second);
-
-        queue.push(first);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/MultiZoneUpdateEventResultProcessor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/MultiZoneUpdateEventResultProcessor.java
deleted file mode 100644
index cf05975..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/MultiZoneUpdateEventResultProcessor.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.ajax;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.internal.services.PageRenderQueue;
-import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-
-/**
- * Handler for {@link org.apache.tapestry5.ajax.MultiZoneUpdate} responses from a component event handler method. Works
- * by adding {@link org.apache.tapestry5.services.ajax.SingleZonePartialRendererFilter}s for each zone to the
- * {@linkplain org.apache.tapestry5.internal.services.PageRenderQueue#addPartialMarkupRendererFilter(org.apache.tapestry5.services.PartialMarkupRendererFilter)
- * filter stack}. Each zone writes its content as a string in the zones object of the reply, keyed on its id.
- * JavaScript and CSS are collected for all zones rendered in the request (not for each individual zone). The final
- * response will have some combination of "script", "scripts", "stylesheets", "content" (which is expected to be blank)
- * and "zones".
- * 
- * @since 5.1.0.1
- */
-public class MultiZoneUpdateEventResultProcessor implements ComponentEventResultProcessor<MultiZoneUpdate>
-{
-    private final PageRenderQueue queue;
-
-    private final TypeCoercer typeCoercer;
-
-    private final AjaxFormUpdateController ajaxFormUpdateController;
-
-    public MultiZoneUpdateEventResultProcessor(PageRenderQueue queue, TypeCoercer typeCoercer,
-            AjaxFormUpdateController ajaxFormUpdateController)
-    {
-        this.queue = queue;
-        this.typeCoercer = typeCoercer;
-        this.ajaxFormUpdateController = ajaxFormUpdateController;
-    }
-
-    public void processResultValue(final MultiZoneUpdate value) throws IOException
-    {
-        queue.forcePartialRenderInitialized();
-        queue.addPartialMarkupRendererFilter(new SetupZonesFilter());
-
-        Map<String, Object> map = value.getZoneToRenderMap();
-
-        for (String zoneId : map.keySet())
-        {
-            Object provided = map.get(zoneId);
-
-            RenderCommand zoneRenderCommand = toRenderer(zoneId, provided);
-
-            queue.addPartialMarkupRendererFilter(new SingleZonePartialRendererFilter(zoneId, zoneRenderCommand, queue,
-                    ajaxFormUpdateController));
-        }
-    }
-
-    private RenderCommand toRenderer(String zoneId, Object provided)
-    {
-        try
-        {
-            return typeCoercer.coerce(provided, RenderCommand.class);
-        }
-        catch (Exception ex)
-        {
-            throw new IllegalArgumentException(String.format("Failure converting renderer for zone '%s': %s", zoneId,
-                    InternalUtils.toMessage(ex)), ex);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/SetupZonesFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/SetupZonesFilter.java
deleted file mode 100644
index 79ef3c9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/SetupZonesFilter.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.ajax;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-
-/**
- * Creates a "zones" object in the JSON reply, ready for the
- * {@link org.apache.tapestry5.services.ajax.SingleZonePartialRendererFilter}s
- * to store values into.
- * 
- * @since 5.1.0.1
- */
-public class SetupZonesFilter implements PartialMarkupRendererFilter
-{
-    public void renderMarkup(MarkupWriter writer, JSONObject reply, PartialMarkupRenderer renderer)
-    {
-        reply.put("zones", new JSONObject());
-
-        renderer.renderMarkup(writer, reply);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/SingleZonePartialRendererFilter.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/SingleZonePartialRendererFilter.java
deleted file mode 100644
index aa71c2c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/SingleZonePartialRendererFilter.java
+++ /dev/null
@@ -1,101 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.ajax;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.services.PageRenderQueue;
-import org.apache.tapestry5.internal.services.ajax.AjaxFormUpdateController;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.PartialMarkupRenderer;
-import org.apache.tapestry5.services.PartialMarkupRendererFilter;
-
-/**
- * Responsible for capturing the content for a single zone and storing it into the JSON reply object.
- * 
- * @see org.apache.tapestry5.ajax.MultiZoneUpdate
- * @since 5.1.0.1
- */
-public class SingleZonePartialRendererFilter implements PartialMarkupRendererFilter
-{
-    private final String zoneId;
-
-    private final RenderCommand zoneRenderCommand;
-
-    private final PageRenderQueue queue;
-
-    private final AjaxFormUpdateController ajaxFormUpdateController;
-
-    public SingleZonePartialRendererFilter(String zoneId, RenderCommand zoneRenderCommand, PageRenderQueue queue,
-            AjaxFormUpdateController ajaxFormUpdateController)
-    {
-        this.zoneId = zoneId;
-        this.zoneRenderCommand = zoneRenderCommand;
-        this.queue = queue;
-        this.ajaxFormUpdateController = ajaxFormUpdateController;
-    }
-
-    public void renderMarkup(MarkupWriter writer, final JSONObject reply, PartialMarkupRenderer renderer)
-    {
-        RenderCommand forZone = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                // Create an element to contain the content for the zone. We give it a mnemonic
-                // element name and attribute just to help with debugging (the element itself is discarded).
-
-                final Element zoneContainer = writer.element("zone-update", "zoneId", zoneId);
-
-                ajaxFormUpdateController.setupBeforePartialZoneRender(writer);
-
-                queue.push(new RenderCommand()
-                {
-                    public void render(MarkupWriter writer, RenderQueue queue)
-                    {
-                        writer.end(); // the zoneContainer element
-
-                        // Need to do this Ajax Form-related cleanup here, before we extract the zone content.
-
-                        ajaxFormUpdateController.cleanupAfterPartialZoneRender();
-
-                        String zoneUpdateContent = zoneContainer.getChildMarkup();
-
-                        zoneContainer.remove();
-
-                        reply.getJSONObject("zones").put(zoneId, zoneUpdateContent);
-                    }
-                });
-
-                // Make sure the zone's actual rendering command is processed first, then the inline
-                // RenderCommand just above.
-
-                queue.push(zoneRenderCommand);
-            }
-        };
-
-        RenderCommand existing = queue.getRootRenderCommand();
-
-        queue.initializeForPartialPageRender(mergeRenderCommands(existing, forZone));
-
-        renderer.renderMarkup(writer, reply);
-    }
-
-    private RenderCommand mergeRenderCommands(RenderCommand existingCommand, RenderCommand newCommand)
-    {
-        return existingCommand == null ? newCommand : new CombinedRenderCommand(existingCommand, newCommand);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/package.html b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/package.html
deleted file mode 100644
index 545412b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/ajax/package.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<body>
-Utilities for handling Ajax-oriented requests, including partial render requests.
-</body>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java
deleted file mode 100644
index 74665d9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetPathConstructor.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.assets;
-
-/**
- * Encapslates the logic or creating the path portion of an asset URL, including
- * the application version.
- * 
- * @since 5.2.0
- */
-public interface AssetPathConstructor
-{
-    /**
-     * Constructs an asset URL path from the virtual folder and path (within the virtual folder).
-     * 
-     * @param virtualFolder
-     *            corresponds to a {@link AssetRequestHandler} contributed to the AssetDispatcher service
-     * @param path
-     *            within the virtual folder (should <em>not</em> start with a slash)
-     * @return path portion of asset URL, including the context path, the /assets/ virtual folder, the application
-     *         version number,
-     *         the virtual folder, and the path extension
-     */
-    String constructAssetPath(String virtualFolder, String path);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetRequestHandler.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetRequestHandler.java
deleted file mode 100644
index b737d22..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/assets/AssetRequestHandler.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.assets;
-
-import java.io.IOException;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.services.AssetDispatcher;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-
-/**
- * Handler for asset requests, which expose some kind of {@link Asset} to
- * the user agent (i.e., the client web browser). Starting in Tapestry 5.2,
- * asset paths are more structured, consisting of four parts:
- * <ul>
- * <li><code>/assets/</code> -- the root path for all assets
- * <li>
- * <em>application version</em> -- the application version, as defined by the
- * {@link SymbolConstants#APPLICATION_VERSION} symbol
- * <li><em>handler id</em> -- a handler for this part of the asset path (defined by contributions to the
- * <code>AssetDispatcher</code> service)
- * <li><em>extra path</em> -- additional path beyond the handler id, used to identify the specific resource
- * </ul>
- * <p>
- * So, an example path might be <code>/assets/1.0.1/corelib/components/select.png</code>. The handler id would be
- * <code>corelib</code>, and the extra path would be <code>components/select.png</code>.
- * 
- * @since 5.2.0
- * @see AssetDispatcher
- */
-public interface AssetRequestHandler
-{
-    /**
-     * Given a request targeted (via the handler id) to the specific handler, process the request.
-     * The handler is responsible for processing the request, sending back either a bytestream
-     * (via {@link Response#getOutputStream(String)}) or an error response
-     * (via {@link Response#sendError(int, String)}). It is the handler's responsibility to allow
-     * for client-side caching (possibly sending an {@link HttpServletResponse#SC_NOT_MODIFIED} response).
-     * <p>
-     * The handler should return true if it provided a response. If the handler returns false, this indicates that the
-     * extra path did not identify a known asset (virtual or otherwise) and the AssetDispatcher service should send a
-     * {@link HttpServletResponse#SC_NOT_FOUND} response.
-     * 
-     * @param request
-     *            incoming asset request
-     * @param response
-     *            used to send a response to client
-     * @param extraPath
-     *            additional path to identify the specific asset
-     * @return true if request handler, false if asset not found
-     */
-    boolean handleAssetRequest(Request request, Response response, String extraPath) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/InitializationPriority.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/InitializationPriority.java
deleted file mode 100644
index d2d94b6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/InitializationPriority.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.javascript;
-
-/**
- * Sets the priority for JavaScript initialization scripting. InitializationPriority allows coarse-grained control
- * over the order in which initialization occurs on the client. The default is normally {@link #NORMAL}.
- * 
- * @since 5.2.0
- */
-public enum InitializationPriority
-{
-    /**
-     * Provided JavaScript will be executed immediately (it is not deferred until the page loads). In an Ajax
-     * update, IMMEDIATE code executed after the DOM is updated and before EARLY.
-     */
-    IMMEDIATE,
-
-    /** Execution is deferred until the page loads. All early execution occurs before {@link #NORMAL}. */
-    EARLY,
-
-    /** Execution is deferred until the page loads. This is the typical priority. */
-    NORMAL,
-
-    /** Execution is deferred until the page loads. Execution occurs after {@link #NORMAL}. */
-    LATE
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
deleted file mode 100644
index 365cc5f..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStack.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.javascript;
-
-import java.util.List;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClientInfrastructure;
-
-/**
- * A high level description of a group of related JavaScript libraries and stylesheets. The built-in "core"
- * stack is used to define the core JavaScript libraries needed by Tapestry (currently, this includes
- * Prototype and Scriptaculous, as well as Tapestry-specific libraries). Other component libraries may
- * define additional stacks for related sets of resources, for example, to bundle together some portion
- * of the ExtJS or YUI libraries.
- * <p>
- * A JavaScriptStack can be thought of as a generalization of Tapestry 5.1's {@link ClientInfrastructure}, which exists
- * now to define the "core" JavaScript stack.
- * <p>
- * A JavaScript assets of a stack may (when {@linkplain SymbolConstants#COMBINE_SCRIPTS enabled}) be exposed to the
- * client as a single URL (identifying the stack by name). The individual assets are combined into a single virtual
- * asset, which is then streamed to the client.
- * <p>
- * Implementations may need to inject the {@link ThreadLocale} service in order to determine the current locale (if any
- * of the JavaScript library or stylesheet assets are localized). They will generally need to inject the
- * {@link AssetSource} service as well.
- * 
- * @since 5.2.0
- * @see ThreadLocale
- */
-public interface JavaScriptStack
-{
-    /**
-     * Returns a list of JavaScriptStack names that this stack depends on. Each stack will be processed before
-     * the current stack (thus a dependency stack's libraries, stylesheets and initialization is emitted before
-     * the dependent stack).
-     */
-    List<String> getStacks();
-
-    /**
-     * Returns a list of <em>localized</em> assets for JavaScript libraries that form the stack.
-     */
-    List<Asset> getJavaScriptLibraries();
-
-    /**
-     * Returns a list of <em>localized</em> links for stylesheets that form the stack.
-     */
-    List<StylesheetLink> getStylesheets();
-
-    /**
-     * Returns static JavaScript initialization for the stack. This block of JavaScript code will be added to the
-     * page that imports the stack. The code executes outside of any other function (i.e., the code is not deferred
-     * until the DOM is loaded). As with the other methods, if localization is a factor, the result of this method
-     * should be localized.
-     */
-    String getInitialization();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
deleted file mode 100644
index 54157de..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptStackSource.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.javascript;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-
-/**
- * Manages the available {@link JavaScriptStack}s, each of which has a unique name.
- * 
- * @since 5.2.0
- */
-@UsesMappedConfiguration(JavaScriptStack.class)
-public interface JavaScriptStackSource
-{
-    /**
-     * Gets a stack by name (ignoring case).
-     * 
-     * @return named stack
-     * @throws UnknownValueException
-     *             if no such stack
-     */
-    JavaScriptStack getStack(String name);
-
-    /**
-     * Returns the names of all stacks, in sorted order.
-     * 
-     * @since 5.2.1
-     */
-    List<String> getStackNames();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
deleted file mode 100644
index 11242da..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/JavaScriptSupport.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.javascript;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.IncludeJavaScriptLibrary;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
-
-/**
- * An environmental that acts as a replacement for the {@link RenderSupport} environmental, renaming and streamlining
- * the the key methods. JavaScriptSupport is very stateful, accumulating JavaScript stacks, libraries and initialization
- * code until the end of the main page render; it then updates the rendered DOM (adding &lt;script&gt; tags to the
- * &lt;head&gt; and &lt;body&gt;) before the document is streamed to the client.
- * <p>
- * JavaScriptSupport is normally accessed within a component by using the {@link Environmental} annotation on a
- * component field. In addition, JavaScriptSupport may also be accessed as a service (the service
- * {@linkplain EnvironmentalShadowBuilder internally delegates to the current environmental instance}), which is useful
- * for service-layer objects.
- * <p>
- * The term "import" is used on many methods to indicate that the indicated resource (stack, library or stylesheet) will
- * only be added to the final Document once.
- * <p>
- * The name is slightly a misnomer, since there's a side-line of
- * {@linkplain #importStylesheet(Asset, StylesheetOptions)
- * importing stylesheets} as well.
- * 
- * @since 5.2.0
- */
-public interface JavaScriptSupport
-{
-    /**
-     * Allocates a unique id based on the component's id. In some cases, the return value will not precisely match the
-     * input value (an underscore and a unique index value may be appended).
-     * 
-     * @param id
-     *            the component id from which a unique id will be generated
-     * @return a unique id for this rendering of the page
-     * @see org.apache.tapestry5.ioc.util.IdAllocator
-     */
-    String allocateClientId(String id);
-
-    /**
-     * As with {@link #allocateClientId(String)} but uses the id of the component extracted from the resources.
-     * 
-     * @param resources
-     *            of the component which requires an id
-     * @return a unique id for this rendering of the page
-     */
-    String allocateClientId(ComponentResources resources);
-
-    /**
-     * Adds initialization script at {@link InitializationPriority#NORMAL} priority.
-     * 
-     * @param format
-     *            format string (as per {@link String#format(String, Object...)}
-     * @param arguments
-     *            arguments referenced by format specifiers
-     */
-    void addScript(String format, Object... arguments);
-
-    /**
-     * Adds initialization script at the specified priority.
-     * 
-     * @param priority
-     *            priority to use when adding the script
-     * @param format
-     *            format string (as per {@link String#format(String, Object...)}
-     * @param arguments
-     *            arguments referenced by format specifiers
-     */
-    void addScript(InitializationPriority priority, String format, Object... arguments);
-
-    /**
-     * Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this
-     * method are aggregated into a call to the Tapestry.init() function. Initialization occurs at
-     * {@link InitializationPriority#NORMAL} priority.
-     * 
-     * @param functionName
-     *            name of client-side function (within Tapestry.Initializer namespace) to execute
-     * @param parameter
-     *            object to pass to the client-side function
-     */
-    void addInitializerCall(String functionName, JSONObject parameter);
-
-    /**
-     * Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this
-     * method are aggregated into a call to the Tapestry.init() function. Initialization occurs at
-     * the specified priority.
-     * 
-     * @param priority
-     *            priority to use when adding the script
-     * @param functionName
-     *            name of client-side function (within Tapestry.Initializer namespace) to execute
-     * @param parameter
-     *            object to pass to the client-side function
-     */
-    void addInitializerCall(InitializationPriority priority, String functionName, JSONObject parameter);
-
-    /**
-     * Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this
-     * method are aggregated into a call to the Tapestry.init() function. Initialization occurs at
-     * {@link InitializationPriority#NORMAL} priority.
-     * 
-     * @param functionName
-     *            name of client-side function (within Tapestry.Initializer namespace) to execute
-     * @param parameter
-     *            string to pass to function (typically, a client id)
-     */
-    void addInitializerCall(String functionName, String parameter);
-
-    /**
-     * Adds a call to a client-side function inside the Tapestry.Initializer namespace. Calls to this
-     * method are aggregated into a call to the Tapestry.init() function. Initialization occurs at
-     * the specified priority.
-     * 
-     * @param priority
-     *            priority to use when adding the script
-     * @param functionName
-     *            name of client-side function (within Tapestry.Initializer namespace) to execute
-     * @param parameter
-     *            string to pass to function (typically, a client id)
-     */
-    void addInitializerCall(InitializationPriority priority, String functionName, String parameter);
-
-    /**
-     * Imports a JavaScript library as part of the rendered page. Libraries are added in the order
-     * they are first imported; duplicate imports are ignored.
-     * 
-     * @see IncludeJavaScriptLibrary
-     */
-    void importJavaScriptLibrary(Asset asset);
-
-    /**
-     * A convenience method that wraps the Asset as a {@link StylesheetLink}.
-     * 
-     * @param stylesheet
-     *            asset for the stylesheet
-     * @see #importStylesheet(StylesheetLink)
-     */
-    void importStylesheet(Asset stylesheet);
-
-    /**
-     * Imports a Cascading Style Sheet file as part of the rendered page. Stylesheets are added in the
-     * order they are first imported; duplicate imports are ignored.
-     * 
-     * @param stylesheetLink
-     *            encapsulates the link URL plus any additional options
-     */
-    void importStylesheet(StylesheetLink stylesheetLink);
-
-    /**
-     * Imports a {@link JavaScriptStack} by name, a related set of JavaScript libraries and stylesheets.
-     * Stacks are contributions to the {@link JavaScriptStackSource} service. When
-     * {@linkplain SymbolConstants#COMBINE_SCRIPTS JavaScript aggregation} in enabled, the stack will be represented by
-     * a single virtual URL; otherwise the individual asset URLs of the stack
-     * will be added to the document.
-     * 
-     * @param stackName
-     *            the name of the stack (case is ignored); the stack must exist
-     */
-    void importStack(String stackName);
-
-    /**
-     * Import a Javascript library with an arbitrary URL.
-     */
-    void importJavaScriptLibrary(String libraryURL);
-
-    /**
-     * Invoked to set focus on a rendered field. Takes into account priority, meaning that a field with errors will take
-     * precedence over a merely required field, and over a field that is optional. The value
-     * {@link org.apache.tapestry5.FieldFocusPriority#OVERRIDE} can be used to force a particular field to receive
-     * focus.
-     * 
-     * @param priority
-     *            focus is set only if the provided priority is greater than the current priority
-     * @param fieldId
-     *            id of client-side element to take focus
-     */
-    void autofocus(FieldFocusPriority priority, String fieldId);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/StylesheetLink.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/StylesheetLink.java
deleted file mode 100644
index 5da3c37..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/StylesheetLink.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.javascript;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.DocumentLinker;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Captures the information needed to create a stylesheet link in the final {@link Document}, or
- * as part of a JSON partial page render response.
- * 
- * @see DocumentLinker
- * @see JavaScriptStack
- * @since 5.2.0
- */
-public final class StylesheetLink
-{
-    private final String url;
-
-    private final StylesheetOptions options;
-
-    private static final StylesheetOptions BLANK_OPTIONS = new StylesheetOptions(null);
-
-    public StylesheetLink(Asset asset)
-    {
-        this(asset, null);
-    }
-
-    public StylesheetLink(Asset asset, StylesheetOptions options)
-    {
-        this(asset.toClientURL(), options);
-    }
-
-    public StylesheetLink(String url)
-    {
-        this(url, null);
-    }
-
-    public StylesheetLink(String url, StylesheetOptions options)
-    {
-        assert InternalUtils.isNonBlank(url);
-        this.url = url;
-        this.options = options != null ? options : BLANK_OPTIONS;
-    }
-
-    public String getURL()
-    {
-        return url;
-    }
-
-    /**
-     * Returns an instance of {@link StylesheetOptions}. Never returns null (a blank options
-     * object is returned if null is passed to the constructor).
-     */
-    public StylesheetOptions getOptions()
-    {
-        return options;
-    }
-
-    /**
-     * Invoked to add the stylesheet link to a container element.
-     * 
-     * @param container
-     *            to add the new element to
-     */
-    public void add(Element container)
-    {
-        String condition = options.getCondition();
-        boolean hasCondition = InternalUtils.isNonBlank(condition);
-
-        if (hasCondition)
-            container.raw(String.format("\n<!--[if %s]>\n", condition));
-
-        container.element("link", "href", url, "rel", "stylesheet", "type", "text/css", "media", options.getMedia());
-
-        if (hasCondition)
-            container.raw("\n<![endif]-->\n");
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("StylesheetLink[%s %s]", url, options);
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == this)
-            return true;
-
-        if (obj == null || !(obj instanceof StylesheetLink))
-            return false;
-
-        StylesheetLink ssl = (StylesheetLink) obj;
-
-        return TapestryInternalUtils.isEqual(url, ssl.url) && TapestryInternalUtils.isEqual(options, ssl.options);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/StylesheetOptions.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/StylesheetOptions.java
deleted file mode 100644
index f9fe13a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/StylesheetOptions.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.javascript;
-
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-
-/**
- * Provides options to describe options associated with importing a stylesheet onto a page.
- * 
- * @since 5.2.0
- */
-public class StylesheetOptions
-{
-    private final String media, condition;
-
-    public StylesheetOptions(String media)
-    {
-        this(media, null);
-    }
-
-    public StylesheetOptions(String media, String condition)
-    {
-        this.media = media;
-        this.condition = condition;
-    }
-
-    /**
-     * The media associated with this stylesheet, i.e., "print". Becomes the media attribute
-     * of the &lt;link&gt; tag. May be null.
-     */
-    public String getMedia()
-    {
-        return media;
-    }
-
-    /**
-     * The Internet Explorer condition associated with the link. When non-blank, the
-     * &lt;link&gt; element will be written inside a specially formatted comment interpreted
-     * by Internet Explorer. Usually null.
-     * 
-     * @see http://en.wikipedia.org/wiki/Conditional_comment
-     */
-    public String getCondition()
-    {
-        return condition;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("StylesheetOptions[media=%s condition=%s]", media, condition);
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == this)
-            return true;
-
-        if (obj == null || !(obj instanceof StylesheetOptions))
-            return false;
-
-        StylesheetOptions sso = (StylesheetOptions) obj;
-
-        return TapestryInternalUtils.isEqual(media, sso.media)
-                && TapestryInternalUtils.isEqual(condition, sso.condition);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/package.html b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/package.html
deleted file mode 100644
index 3eeb33d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/javascript/package.html
+++ /dev/null
@@ -1,3 +0,0 @@
-<body>
-Support for dynamically generated Javascript on a page.
-</body>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
deleted file mode 100644
index c8d1df5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/ComponentEventLinkTransformer.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.linktransform;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.services.ComponentEventDispatcher;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Allows for selective replacement of the default {@link Link} used to represent a component event request.
- * This is a service, but also the contribution to the service, as a chain of command.
- * <p>
- * This transformer follows the same pattern as {@link PageRenderLinkTransformer}.
- * 
- * @since 5.2.0
- */
-@UsesOrderedConfiguration(ComponentEventLinkTransformer.class)
-public interface ComponentEventLinkTransformer
-{
-    /**
-     * Allows the default Link created for the component event request to be replaced.
-     * 
-     * @param defaultLink
-     *            the default Link generated for a component event request
-     * @param parameters
-     *            used to create the default Link
-     * @return a replacement Link, or null
-     */
-    Link transformComponentEventLink(Link defaultLink, ComponentEventRequestParameters parameters);
-
-    /**
-     * Attempts to decode the page render request, to perform the opposite action for
-     * {@link #transformComponentEventLink(Link, ComponentEventRequestParameters)}. The transformer
-     * is also responsible for identifying the locale in the request (as part of the path, or as a
-     * query parameter or cookie) and setting the locale for the request.
-     * <p>
-     * This method will be invoked from the {@link ComponentEventDispatcher} and a non-null value returned from this
-     * method will prevent the default {@link ComponentEventLinkEncoder#decodeComponentEventRequest(Request)} method
-     * from being invoked.
-     * 
-     * @return decoded parameters, or null to proceed normally
-     * @see LocalizationSetter#setLocaleFromLocaleName(String)
-     */
-    ComponentEventRequestParameters decodeComponentEventRequest(Request request);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
deleted file mode 100644
index 5f6184c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/LinkTransformer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.linktransform;
-
-/**
- * A facade around {@link ComponentEventLinkTransformer} and {@link PageRenderLinkTransformer}.
- * 
- * @since 5.2.0
- */
-public interface LinkTransformer extends ComponentEventLinkTransformer, PageRenderLinkTransformer
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
deleted file mode 100644
index 0f90d6b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/linktransform/PageRenderLinkTransformer.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.linktransform;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.services.PageRenderDispatcher;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Allows the default {@link Link} for a page render request to be replaced.
- * This is a service, but also the contribution to the service, as a chain of command.
- * <p>
- * A contributed implementation of this interface is expected to identify which requests it wants to transform. The
- * {@link #transformPageRenderLink(Link, PageRenderRequestParameters)} method can return a {@link Link} that is allowed
- * to differ from Tapestry normal default. Later, when that request is triggered,
- * {@link #decodePageRenderRequest(Request)} is required to reverse the operation, identifying the original parameters
- * so that request handling can continue.
- * 
- * @since 5.2.0
- */
-@UsesOrderedConfiguration(PageRenderLinkTransformer.class)
-public interface PageRenderLinkTransformer
-{
-    /**
-     * Transforms a page render link.
-     * 
-     * @param defaultLink
-     *            default Link for this request
-     * @param parameters
-     *            that define the request
-     * @return replacement Link, or null
-     */
-    Link transformPageRenderLink(Link defaultLink, PageRenderRequestParameters parameters);
-
-    /**
-     * Attempts to decode the page render request, to perform the opposite action for
-     * {@link #transformPageRenderLink(Link, PageRenderRequestParameters)}. The transformer
-     * is also responsible for identifying the locale in the request (as part of the path, or as a
-     * query parameter or cookie) and setting the locale for the request.
-     * <p>
-     * This method will be invoked from the {@link PageRenderDispatcher} and a non-null value returned from this method
-     * will prevent the default {@link ComponentEventLinkEncoder#decodePageRenderRequest(Request)} method from being
-     * invoked.
-     * 
-     * @return decoded parameters, or null to proceed normally
-     * @see LocalizationSetter#setLocaleFromLocaleName(String)
-     */
-    PageRenderRequestParameters decodePageRenderRequest(Request request);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java
deleted file mode 100644
index 1e1f92e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/ComponentMessagesSource.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.messages;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.NotLazy;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
-
-/**
- * Used to connect a Tapestry component to its message catalog, or to obtain the application catalog (that all
- * component message catalogs extend from). The application catalog is defined by the collection of {@link Resource}s
- * contributed to the service. In general, component libraries will contribute a Resource before the "AppCatalog" resource (representing
- * the application message catalog, WEB-INF/app.properties) so that the application can override messages of the component library.
- */
-@UsesOrderedConfiguration(Resource.class)
-public interface ComponentMessagesSource
-{
-    /**
-     * Used to obtain a {@link Messages} instance for a particular component, within a particular locale. If the
-     * component extends from another component, then its localized properties will merge with its parent's properties
-     * (with the subclass overriding the super class on any conflicts).
-     * 
-     * @param componentModel
-     * @param locale
-     * @return the message catalog for the component, in the indicated locale
-     */
-    Messages getMessages(ComponentModel componentModel, Locale locale);
-
-    /**
-     * Gets the Messages derived from the application's message catalog.
-     * 
-     * @since 5.2.0
-     */
-    Messages getApplicationCatalog(Locale locale);
-
-    /**
-     * Returns the event hub that allows listeners to be notified when any underlying message catalog file is changed.
-     * 
-     * @since 5.1.0.0
-     */
-    @NotLazy
-    InvalidationEventHub getInvalidationEventHub();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java
deleted file mode 100644
index 0639e3e..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/messages/PropertiesFileParser.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.messages;
-
-import java.io.IOException;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.util.CaseInsensitiveMap;
-
-/**
- * Used when constructing a component's {@link Messages} object. Responsible for reading the
- * contents of an individual {@link Resource}.
- * 
- * @since 5.2.0
- */
-public interface PropertiesFileParser
-{
-    /**
-     * Read the contents of the file (which is expected to exist) and return it as
-     * a Map of string keys and values (as {@link CaseInsensitiveMap} should be used. The implementation should not
-     * attempt to cache any values (caching occurs at a higher level, as does reload logic).
-     */
-    Map<String, String> parsePropertiesFile(Resource resource) throws IOException;
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/FixedExtractor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/FixedExtractor.java
deleted file mode 100644
index 20cc3d2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/FixedExtractor.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.meta;
-
-import java.lang.annotation.Annotation;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.model.MutableComponentModel;
-
-/**
- * Implementation of {@link MetaDataExtractor} that is used to set a fixed
- * value for a fixed meta-data key, when a given annotation is present.
- * 
- * @since 5.2.0
- */
-public class FixedExtractor<T extends Annotation> implements MetaDataExtractor<T>
-{
-    private final String key;
-
-    private final String value;
-
-    /** Defaults the value to "true". */
-    public FixedExtractor(String key)
-    {
-        this(key, "true");
-    }
-
-    public FixedExtractor(String key, String value)
-    {
-        assert InternalUtils.isNonBlank(key);
-        this.key = key;
-        assert InternalUtils.isNonBlank(value);
-        this.value = value;
-    }
-
-    public void extractMetaData(MutableComponentModel model, T annotation)
-    {
-        model.setMeta(key, value);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/MetaDataExtractor.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/MetaDataExtractor.java
deleted file mode 100644
index 288db50..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/MetaDataExtractor.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.meta;
-
-import java.lang.annotation.Annotation;
-
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.MetaDataLocator;
-
-/**
- * Used to extract a {@linkplain ComponentModel#getMeta(String) meta data value} from a component annotation. Instances
- * of this interface are contributed into the MetaWorker service.
- * 
- * @since 5.2.0
- * @see MetaWorker
- * @see MetaDataLocator
- */
-public interface MetaDataExtractor<T extends Annotation>
-{
-    /**
-     * Invoked on the extractor to extract the appropriate value for the annotation and
-     * {@linkplain MutableComponentModel#setMeta(String, String) set the meta data on the model}.
-     * 
-     * @param model
-     *            on which to set meta data
-     * @param annotation
-     *            class annotation, from whose attributes specific data may be extracted
-     */
-    void extractMetaData(MutableComponentModel model, T annotation);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/MetaWorker.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/MetaWorker.java
deleted file mode 100644
index 470410d..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/meta/MetaWorker.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.meta;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-
-/**
- * Service that makes it easy to identify a class annotation and use its presence, or the value of an attribute,
- * to set a meta-data key. The configuration map class annotation types to corresponding extractors who will be invoked
- * when the annotation is present. Most commonly, a {@link FixedExtractor} is used to set a fixed value to a fixed key,
- * triggered by the presence of the corresponding annotation.
- * 
- * @since 5.2.0
- */
-@UsesMappedConfiguration(key = Class.class, value = MetaDataExtractor.class)
-public interface MetaWorker extends ComponentClassTransformWorker
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
deleted file mode 100644
index bae00a9..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/services/templates/ComponentTemplateLocator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services.templates;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.model.ComponentModel;
-
-/**
- * Chain-of-command interface used to locate page and component templates. Contributions to this service support
- * alternate naming schemes for template files, or alternate locations in which to search for template files.
- * 
- * @see TapestryConstants#TEMPLATE_EXTENSION
- * @since 5.2.0
- */
-@UsesOrderedConfiguration(ComponentTemplateLocator.class)
-public interface ComponentTemplateLocator
-{
-    /**
-     * Locates the template for the given model as a {@link Resource}.
-     * 
-     * @param model
-     *            defines the component, especially its {@linkplain ComponentModel#getBaseResource() base resource}
-     * @param locale
-     *            to which the
-     * @return localized template resource if found, or null if not found
-     */
-    Resource locateTemplate(ComponentModel model, Locale locale);
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/test/PageTester.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/test/PageTester.java
deleted file mode 100644
index d46098b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/test/PageTester.java
+++ /dev/null
@@ -1,612 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import java.io.IOException;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.Visitor;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.SingleKeySymbolProvider;
-import org.apache.tapestry5.internal.TapestryAppInitializer;
-import org.apache.tapestry5.internal.test.PageTesterContext;
-import org.apache.tapestry5.internal.test.PageTesterModule;
-import org.apache.tapestry5.internal.test.TestableRequest;
-import org.apache.tapestry5.internal.test.TestableResponse;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.services.ApplicationGlobals;
-import org.apache.tapestry5.services.RequestHandler;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * This class is used to run a Tapestry app in a single-threaded, in-process testing environment.
- * You can ask it to
- * render a certain page and check the DOM object created. You can also ask it to click on a link
- * element in the DOM
- * object to get the next page. Because no servlet container is required, it is very fast and you
- * can directly debug
- * into your code in your IDE.
- */
-@SuppressWarnings("all")
-public class PageTester
-{
-    private final Logger logger = LoggerFactory.getLogger(PageTester.class);
-
-    private final Registry registry;
-
-    private final TestableRequest request;
-
-    private final TestableResponse response;
-
-    private final RequestHandler requestHandler;
-
-    public static final String DEFAULT_CONTEXT_PATH = "src/main/webapp";
-
-    private static final String DEFAULT_SUBMIT_VALUE_ATTRIBUTE = "Submit Query";
-
-    /**
-     * Initializes a PageTester without overriding any services and assuming that the context root
-     * is in
-     * src/main/webapp.
-     * 
-     * @see #PageTester(String, String, String, Class[])
-     */
-    public PageTester(String appPackage, String appName)
-    {
-        this(appPackage, appName, DEFAULT_CONTEXT_PATH);
-    }
-
-    /**
-     * Initializes a PageTester that acts as a browser and a servlet container to test drive your
-     * Tapestry pages.
-     * 
-     * @param appPackage
-     *            The same value you would specify using the tapestry.app-package context parameter.
-     *            As this
-     *            testing environment is not run in a servlet container, you need to specify it.
-     * @param appName
-     *            The same value you would specify as the filter name. It is used to form the name
-     *            of the
-     *            module class for your app. If you don't have one, pass an empty string.
-     * @param contextPath
-     *            The path to the context root so that Tapestry can find the templates (if they're
-     *            put
-     *            there).
-     * @param moduleClasses
-     *            Classes of additional modules to load
-     */
-    public PageTester(String appPackage, String appName, String contextPath, Class... moduleClasses)
-    {
-        assert InternalUtils.isNonBlank(appPackage);
-        assert appName != null;
-        assert InternalUtils.isNonBlank(contextPath);
-
-        SymbolProvider provider = new SingleKeySymbolProvider(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM, appPackage);
-
-        TapestryAppInitializer initializer = new TapestryAppInitializer(logger, provider, appName,
-                PageTesterModule.TEST_MODE, null);
-
-        initializer.addModules(PageTesterModule.class);
-        initializer.addModules(moduleClasses);
-        initializer.addModules(provideExtraModuleDefs());
-
-        registry = initializer.createRegistry();
-
-        request = registry.getService(TestableRequest.class);
-        response = registry.getService(TestableResponse.class);
-
-        ApplicationGlobals globals = registry.getObject(ApplicationGlobals.class, null);
-
-        globals.storeContext(new PageTesterContext(contextPath));
-
-        requestHandler = registry.getService("RequestHandler", RequestHandler.class);
-
-        request.setLocale(Locale.ENGLISH);
-    }
-
-    /**
-     * Overridden in subclasses to provide additional module definitions beyond those normally
-     * located. This
-     * implementation returns an empty array.
-     */
-    protected ModuleDef[] provideExtraModuleDefs()
-    {
-        return new ModuleDef[0];
-    }
-
-    /**
-     * Invoke this method when done using the PageTester; it shuts down the internal
-     * {@link org.apache.tapestry5.ioc.Registry} used by the tester.
-     */
-    public void shutdown()
-    {
-        registry.cleanupThread();
-
-        registry.shutdown();
-    }
-
-    /**
-     * Returns the Registry that was created for the application.
-     */
-    public Registry getRegistry()
-    {
-        return registry;
-    }
-
-    /**
-     * Allows a service to be retrieved via its service interface. Use {@link #getRegistry()} for
-     * more complicated
-     * queries.
-     * 
-     * @param serviceInterface
-     *            used to select the service
-     */
-    public <T> T getService(Class<T> serviceInterface)
-    {
-        return registry.getService(serviceInterface);
-    }
-
-    /**
-     * Renders a page specified by its name.
-     * 
-     * @param pageName
-     *            The name of the page to be rendered.
-     * @return The DOM created. Typically you will assert against it.
-     */
-    public Document renderPage(String pageName)
-    {
-        
-        renderPageAndReturnResponse(pageName);
-        
-        Document result = response.getRenderedDocument();
-
-        if (result == null)
-            throw new RuntimeException(String.format("Render of page '%s' did not result in a Document.",
-                    pageName));
-        
-        return result;
-
-    }
-    
-    /**
-     * Renders a page specified by its name and returns the response.
-     * 
-     * @since 5.2.3
-     * 
-     * @param pageName The name of the page to be rendered.
-     * @return The response object to assert against
-     */
-    public TestableResponse renderPageAndReturnResponse(String pageName)
-    {
-        request.clear().setPath("/" + pageName);
-
-        while (true)
-        {
-            try
-            {
-                response.clear();
-
-                boolean handled = requestHandler.service(request, response);
-
-                if (!handled) { throw new RuntimeException(String.format(
-                        "Request was not handled: '%s' may not be a valid page name.", pageName)); }
-
-                Link link = response.getRedirectLink();
-
-                if (link != null)
-                {
-                    setupRequestFromLink(link);
-                    continue;
-                }
-
-                return response;
-
-            }
-            catch (IOException ex)
-            {
-                throw new RuntimeException(ex);
-            }
-            finally
-            {
-                registry.cleanupThread();
-            }
-        }
-
-    }
-
-    /**
-     * Simulates a click on a link.
-     * 
-     * @param linkElement
-     *            The Link object to be "clicked" on.
-     * @return The DOM created. Typically you will assert against it.
-     */
-    public Document clickLink(Element linkElement)
-    {
-        clickLinkAndReturnResponse(linkElement);
-
-        return getDocumentFromResponse();
-    }
-    
-    /**
-     * Simulates a click on a link.
-     * 
-     * @since 5.2.3
-     * 
-     * @param linkElement
-     *            The Link object to be "clicked" on.
-     * @return The response object to assert against
-     */
-    public TestableResponse clickLinkAndReturnResponse(Element linkElement)
-    {
-        assert linkElement != null;
-
-        validateElementName(linkElement, "a");
-
-        String href = extractNonBlank(linkElement, "href");
-
-        setupRequestFromURI(href);
-
-        return runComponentEventRequest();
-    }
-
-    private String extractNonBlank(Element element, String attributeName)
-    {
-        String result = element.getAttribute(attributeName);
-
-        if (InternalUtils.isBlank(result))
-            throw new RuntimeException(String.format("The %s attribute of the <%s> element was blank or missing.",
-                    attributeName, element.getName()));
-
-        return result;
-    }
-
-    private void validateElementName(Element element, String expectedElementName)
-    {
-        if (!element.getName().equalsIgnoreCase(expectedElementName))
-            throw new RuntimeException(String.format("The element must be type '%s', not '%s'.", expectedElementName,
-                    element.getName()));
-    }
-    
-    private Document getDocumentFromResponse()
-    {
-        Document result = response.getRenderedDocument();
-        
-        if (result == null)
-            throw new RuntimeException(String.format("Render request '%s' did not result in a Document.", request.getPath()));
-    
-        return result;
-    }
-    
-    private TestableResponse runComponentEventRequest()
-    {
-        while (true)
-        {
-            response.clear();
-
-            try
-            {
-                boolean handled = requestHandler.service(request, response);
-
-                if (!handled)
-                    throw new RuntimeException(String.format("Request for path '%s' was not handled by Tapestry.",
-                            request.getPath()));
-
-                Link link = response.getRedirectLink();
-
-                if (link != null)
-                {
-                    setupRequestFromLink(link);
-                    continue;
-                }
-                
-                return response;
-            }
-            catch (IOException ex)
-            {
-                throw new RuntimeException(ex);
-            }
-            finally
-            {
-                registry.cleanupThread();
-            }
-        }
-
-    }
-
-    private void setupRequestFromLink(Link link)
-    {
-        setupRequestFromURI(link.toRedirectURI());
-    }
-
-    private void setupRequestFromURI(String URI)
-    {
-        String linkPath = stripContextFromPath(URI);
-
-        int comma = linkPath.indexOf('?');
-
-        String path = comma < 0 ? linkPath : linkPath.substring(0, comma);
-
-        request.clear().setPath(path);
-
-        if (comma > 0)
-            decodeParametersIntoRequest(linkPath.substring(comma + 1));
-    }
-
-    private void decodeParametersIntoRequest(String queryString)
-    {
-        if (InternalUtils.isBlank(queryString))
-            return;
-
-        for (String term : queryString.split("&"))
-        {
-            int eqx = term.indexOf("=");
-
-            String key = term.substring(0, eqx).trim();
-            String value = term.substring(eqx + 1).trim();
-
-            request.loadParameter(key, value);
-        }
-    }
-
-    private String stripContextFromPath(String path)
-    {
-        String contextPath = request.getContextPath();
-
-        if (contextPath.equals(""))
-            return path;
-
-        if (!path.startsWith(contextPath))
-            throw new RuntimeException(String.format("Path '%s' does not start with context path '%s'.", path,
-                    contextPath));
-
-        return path.substring(contextPath.length());
-    }
-
-    /**
-     * Simulates a submission of the form specified. The caller can specify values for the form
-     * fields, which act as
-     * overrides on the values stored inside the elements.
-     * 
-     * @param form
-     *            the form to be submitted.
-     * @param parameters
-     *            the query parameter name/value pairs
-     * @return The DOM created. Typically you will assert against it.
-     */
-    public Document submitForm(Element form, Map<String, String> parameters)
-    {
-        submitFormAndReturnResponse(form, parameters);
-
-        return getDocumentFromResponse();
-    }
-    
-    /**
-     * Simulates a submission of the form specified. The caller can specify values for the form
-     * fields, which act as
-     * overrides on the values stored inside the elements.
-     * 
-     * @since 5.2.3
-     * 
-     * @param form
-     *            the form to be submitted.
-     * @param parameters
-     *            the query parameter name/value pairs
-     * @return The response object to assert against.
-     */
-    public TestableResponse submitFormAndReturnResponse(Element form, Map<String, String> parameters)
-    {
-        assert form != null;
-
-        validateElementName(form, "form");
-
-        request.clear().setPath(stripContextFromPath(extractNonBlank(form, "action")));
-
-        pushFieldValuesIntoRequest(form);
-
-        overrideParameters(parameters);
-
-        // addHiddenFormFields(form);
-
-        // ComponentInvocation invocation = getInvocation(form);
-
-        return runComponentEventRequest();
-    }
-
-    private void overrideParameters(Map<String, String> fieldValues)
-    {
-        for (Map.Entry<String, String> e : fieldValues.entrySet())
-        {
-            request.overrideParameter(e.getKey(), e.getValue());
-        }
-    }
-
-    private void pushFieldValuesIntoRequest(Element form)
-    {
-        Visitor visitor = new Visitor()
-        {
-            public void visit(Element element)
-            {
-                if (InternalUtils.isNonBlank(element.getAttribute("disabled")))
-                    return;
-
-                String name = element.getName();
-
-                if (name.equals("input"))
-                {
-                    String type = extractNonBlank(element, "type");
-
-                    if (type.equals("radio") || type.equals("checkbox"))
-                    {
-                        if (InternalUtils.isBlank(element.getAttribute("checked")))
-                            return;
-                    }
-
-                    // Assume that, if the element is a button/submit, it wasn't clicked,
-                    // and therefore, is not part of the submission.
-
-                    if (type.equals("button") || type.equals("submit"))
-                        return;
-
-                    // Handle radio, checkbox, text, radio, hidden
-                    String value = element.getAttribute("value");
-
-                    if (InternalUtils.isNonBlank(value))
-                        request.loadParameter(extractNonBlank(element, "name"), value);
-
-                    return;
-                }
-
-                if (name.equals("option"))
-                {
-                    String value = element.getAttribute("value");
-
-                    // TODO: If value is blank do we use the content, or is the content only the
-                    // label?
-
-                    if (InternalUtils.isNonBlank(element.getAttribute("selected")))
-                    {
-                        String selectName = extractNonBlank(findAncestor(element, "select"), "name");
-
-                        request.loadParameter(selectName, value);
-                    }
-
-                    return;
-                }
-
-                if (name.equals("textarea"))
-                {
-                    String content = element.getChildMarkup();
-
-                    if (InternalUtils.isNonBlank(content))
-                        request.loadParameter(extractNonBlank(element, "name"), content);
-
-                    return;
-                }
-            }
-        };
-
-        form.visit(visitor);
-    }
-
-    /**
-     * Simulates a submission of the form by clicking the specified submit button. The caller can
-     * specify values for the
-     * form fields.
-     * 
-     * @param submitButton
-     *            the submit button to be clicked.
-     * @param fieldValues
-     *            the field values keyed on field names.
-     * @return The DOM created. Typically you will assert against it.
-     */
-    public Document clickSubmit(Element submitButton, Map<String, String> fieldValues)
-    {
-        clickSubmitAndReturnResponse(submitButton, fieldValues);
-
-        return getDocumentFromResponse();
-    }
-    
-    /**
-     * Simulates a submission of the form by clicking the specified submit button. The caller can
-     * specify values for the
-     * form fields.
-     * 
-     * @since 5.2.3
-     * 
-     * @param submitButton
-     *            the submit button to be clicked.
-     * @param fieldValues
-     *            the field values keyed on field names.
-     * @return The response object to assert against.
-     */
-    public TestableResponse clickSubmitAndReturnResponse(Element submitButton, Map<String, String> fieldValues)
-    {
-        assert submitButton != null;
-
-        assertIsSubmit(submitButton);
-
-        Element form = getFormAncestor(submitButton);
-
-        request.clear().setPath(stripContextFromPath(extractNonBlank(form, "action")));
-
-        pushFieldValuesIntoRequest(form);
-
-        overrideParameters(fieldValues);
-
-        String value = submitButton.getAttribute("value");
-
-        if (value == null)
-            value = DEFAULT_SUBMIT_VALUE_ATTRIBUTE;
-
-        request.overrideParameter(extractNonBlank(submitButton, "name"), value);
-
-        return runComponentEventRequest();
-    }
-
-    private void assertIsSubmit(Element element)
-    {
-        if (element.getName().equals("input"))
-        {
-            String type = element.getAttribute("type");
-
-            if ("submit".equals(type))
-                return;
-        }
-
-        throw new IllegalArgumentException("The specified element is not a submit button.");
-    }
-
-    private Element getFormAncestor(Element element)
-    {
-        return findAncestor(element, "form");
-    }
-
-    private Element findAncestor(Element element, String ancestorName)
-    {
-        Element e = element;
-
-        while (e != null)
-        {
-            if (e.getName().equalsIgnoreCase(ancestorName))
-                return e;
-
-            e = e.getContainer();
-        }
-
-        throw new RuntimeException(String.format("Could not locate an ancestor element of type '%s'.", ancestorName));
-
-    }
-
-    /**
-     * Sets the simulated browser's preferred language, i.e., the value returned from
-     * {@link org.apache.tapestry5.services.Request#getLocale()}.
-     * 
-     * @param preferedLanguage
-     *            preferred language setting
-     */
-    public void setPreferedLanguage(Locale preferedLanguage)
-    {
-        request.setLocale(preferedLanguage);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
deleted file mode 100644
index 79c7a61..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/test/TapestryTestCase.java
+++ /dev/null
@@ -1,1236 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.annotation.Annotation;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-import java.util.Properties;
-
-import javax.servlet.ServletOutputStream;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.http.HttpSession;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.Id;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.services.MapMessages;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.model.ParameterModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-
-/**
- * Base test case that adds a number of convenience factory and training methods for the public interfaces of
- * Tapestry.
- */
-@SuppressWarnings("all")
-public abstract class TapestryTestCase extends IOCTestCase
-{
-
-    /**
-     * Creates a new markup writer instance (not a markup writer mock). Output can be directed at the writer, which uses
-     * the default (HTML) markup model. The writer's toString() value represents all the collected markup in the
-     * writer.
-     */
-    protected final MarkupWriter createMarkupWriter()
-    {
-        return new MarkupWriterImpl();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_getAliasesForMode(AliasManager manager, String mode, Map<Class, Object> configuration)
-    {
-        expect(manager.getAliasesForMode(mode)).andReturn(configuration);
-    }
-
-    protected final ApplicationStateCreator mockApplicationStateCreator()
-    {
-        return newMock(ApplicationStateCreator.class);
-    }
-
-    protected final ApplicationStatePersistenceStrategy mockApplicationStatePersistenceStrategy()
-    {
-        return newMock(ApplicationStatePersistenceStrategy.class);
-    }
-
-    protected final ApplicationStatePersistenceStrategySource mockApplicationStatePersistenceStrategySource()
-    {
-        return newMock(ApplicationStatePersistenceStrategySource.class);
-    }
-
-    protected final Asset mockAsset()
-    {
-        return newMock(Asset.class);
-    }
-
-    protected final AssetFactory mockAssetFactory()
-    {
-        return newMock(AssetFactory.class);
-    }
-
-    protected final AssetSource mockAssetSource()
-    {
-        return newMock(AssetSource.class);
-    }
-
-    protected final Binding mockBinding()
-    {
-        return newMock(Binding.class);
-    }
-
-    protected final BindingFactory mockBindingFactory()
-    {
-        return newMock(BindingFactory.class);
-    }
-
-    protected final BindingSource mockBindingSource()
-    {
-        return newMock(BindingSource.class);
-    }
-
-    protected final Block mockBlock()
-    {
-        return newMock(Block.class);
-    }
-
-    protected final ClasspathAssetAliasManager mockClasspathAssetAliasManager()
-    {
-        return newMock(ClasspathAssetAliasManager.class);
-    }
-
-    protected final ClassTransformation mockClassTransformation()
-    {
-        return newMock(ClassTransformation.class);
-    }
-
-    protected final Component mockComponent()
-    {
-        return newMock(Component.class);
-    }
-
-    protected final ComponentClassResolver mockComponentClassResolver()
-    {
-        return newMock(ComponentClassResolver.class);
-    }
-
-    protected final ComponentEventCallback mockComponentEventHandler()
-    {
-        return newMock(ComponentEventCallback.class);
-    }
-
-    protected final ComponentModel mockComponentModel()
-    {
-        return newMock(ComponentModel.class);
-    }
-
-    protected final ComponentResources mockComponentResources()
-    {
-        return newMock(ComponentResources.class);
-    }
-
-    protected final Context mockContext()
-    {
-        return newMock(Context.class);
-    }
-
-    protected final Environment mockEnvironment()
-    {
-        return newMock(Environment.class);
-    }
-
-    protected final Field mockField()
-    {
-        return newMock(Field.class);
-    }
-
-    protected final FieldValidator mockFieldValidator()
-    {
-        return newMock(FieldValidator.class);
-    }
-
-    protected FieldValidatorSource mockFieldValidatorSource()
-    {
-        return newMock(FieldValidatorSource.class);
-    }
-
-    protected final Field mockFieldWithLabel(String label)
-    {
-        Field field = mockField();
-
-        train_getLabel(field, label);
-
-        return field;
-    }
-
-    protected final Heartbeat mockHeartbeat()
-    {
-        return newMock(Heartbeat.class);
-    }
-
-    protected final HttpServletRequest mockHttpServletRequest()
-    {
-        return newMock(HttpServletRequest.class);
-    }
-
-    protected final HttpServletResponse mockHttpServletResponse()
-    {
-        return newMock(HttpServletResponse.class);
-    }
-
-    protected final HttpSession mockHttpSession()
-    {
-        return newMock(HttpSession.class);
-    }
-
-    protected final Inject mockInject()
-    {
-        return newMock(Inject.class);
-    }
-
-    protected final Link mockLink()
-    {
-        return newMock(Link.class);
-    }
-
-    protected final MarkupWriter mockMarkupWriter()
-    {
-        return newMock(MarkupWriter.class);
-    }
-
-    protected final MutableComponentModel mockMutableComponentModel()
-    {
-        return newMock(MutableComponentModel.class);
-    }
-
-    protected final ParameterModel mockParameterModel()
-    {
-        return newMock(ParameterModel.class);
-    }
-
-    protected final Path mockPath()
-    {
-        return newMock(Path.class);
-    }
-
-    protected final PropertyConduit mockPropertyConduit()
-    {
-        return newMock(PropertyConduit.class);
-    }
-
-    protected final PropertyModel mockPropertyModel()
-    {
-        return newMock(PropertyModel.class);
-    }
-
-    protected final Request mockRequest()
-    {
-        return newMock(Request.class);
-    }
-
-    protected final RequestHandler mockRequestHandler()
-    {
-        return newMock(RequestHandler.class);
-    }
-
-    protected final ResourceDigestGenerator mockResourceDigestGenerator()
-    {
-        return newMock(ResourceDigestGenerator.class);
-    }
-
-    protected final Response mockResponse()
-    {
-        return newMock(Response.class);
-    }
-
-    protected final Session mockSession()
-    {
-        return newMock(Session.class);
-    }
-
-    protected final Translator mockTranslator()
-    {
-        return newMock(Translator.class);
-    }
-
-    protected final ValidationConstraintGenerator mockValidationConstraintGenerator()
-    {
-        return newMock(ValidationConstraintGenerator.class);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final ValidationMessagesSource mockValidationMessagesSource()
-    {
-        return newMock(ValidationMessagesSource.class);
-    }
-
-    protected final ValidationTracker mockValidationTracker()
-    {
-        return newMock(ValidationTracker.class);
-    }
-
-    protected final Validator mockValidator()
-    {
-        return newMock(Validator.class);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_addField(ClassTransformation transformation, int modifiers, String type,
-            String suggestedName, String actualName)
-    {
-        expect(transformation.addField(modifiers, type, suggestedName)).andReturn(actualName);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_addInjectedField(ClassTransformation ct, Class type, String suggestedName, Object value,
-            String fieldName)
-    {
-        expect(ct.addInjectedField(type, suggestedName, value)).andReturn(fieldName);
-    }
-
-    protected final void train_buildConstraints(ValidationConstraintGenerator generator, Class propertyType,
-            AnnotationProvider provider, String... constraints)
-    {
-        expect(generator.buildConstraints(propertyType, provider)).andReturn(Arrays.asList(constraints));
-    }
-
-    protected final <T> void train_create(ApplicationStateCreator<T> creator, T aso)
-    {
-        expect(creator.create()).andReturn(aso);
-    }
-
-    protected final void train_createAsset(AssetFactory factory, Resource resource, Asset asset)
-    {
-        expect(factory.createAsset(resource)).andReturn(asset);
-    }
-
-    protected final void train_createValidator(FieldValidatorSource source, Field field, String validatorType,
-            String constraintValue, String overrideId, Messages overrideMessages, Locale locale, FieldValidator result)
-    {
-        expect(source.createValidator(field, validatorType, constraintValue, overrideId, overrideMessages, locale))
-                .andReturn(result);
-    }
-
-    protected final void train_encodeRedirectURL(Response response, String URI, String encoded)
-    {
-        expect(response.encodeRedirectURL(URI)).andReturn(encoded);
-    }
-
-    protected final void train_encodeURL(Response response, String inputURL, String outputURL)
-    {
-        expect(response.encodeURL(inputURL)).andReturn(outputURL);
-    }
-
-    protected final <T> void train_exists(ApplicationStatePersistenceStrategy strategy, Class<T> asoClass,
-            boolean exists)
-    {
-        expect(strategy.exists(asoClass)).andReturn(exists);
-    }
-
-    protected final void train_getAsset(AssetSource source, Resource root, String path, Locale locale, Asset asset)
-    {
-        expect(source.getAsset(root, path, locale)).andReturn(asset);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_findFieldsWithAnnotation(ClassTransformation transformation,
-            Class<? extends Annotation> annotationClass, List<String> fieldNames)
-    {
-        expect(transformation.findFieldsWithAnnotation(annotationClass)).andReturn(fieldNames);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_findFieldsWithAnnotation(ClassTransformation transformation,
-            Class<? extends Annotation> annotationClass, String... fieldNames)
-    {
-        train_findFieldsWithAnnotation(transformation, annotationClass, Arrays.asList(fieldNames));
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_findMethods(ClassTransformation transformation,
-            final TransformMethodSignature... signatures)
-    {
-        IAnswer<List<TransformMethodSignature>> answer = new IAnswer<List<TransformMethodSignature>>()
-        {
-            public List<TransformMethodSignature> answer() throws Throwable
-            {
-                // Can't think of a way to do this without duplicating some code out of
-                // InternalClassTransformationImpl
-
-                List<TransformMethodSignature> result = newList();
-                MethodFilter filter = (MethodFilter) EasyMock.getCurrentArguments()[0];
-
-                for (TransformMethodSignature sig : signatures)
-                {
-                    if (filter.accept(sig))
-                        result.add(sig);
-                }
-
-                // We don't have to sort them for testing purposes. Usually there's just going to be
-                // one in there.
-
-                return result;
-            }
-        };
-
-        expect(transformation.findMethods(EasyMock.isA(MethodFilter.class))).andAnswer(answer);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_findMethodsWithAnnotation(ClassTransformation tf,
-            Class<? extends Annotation> annotationType, List<TransformMethodSignature> sigs)
-    {
-        expect(tf.findMethodsWithAnnotation(annotationType)).andReturn(sigs);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_findUnclaimedFields(ClassTransformation transformation, String... fieldNames)
-    {
-        expect(transformation.findUnclaimedFields()).andReturn(Arrays.asList(fieldNames));
-    }
-
-    protected final void train_generateChecksum(ResourceDigestGenerator generator, URL url, String digest)
-    {
-        expect(generator.generateDigest(url)).andReturn(digest);
-    }
-
-    protected final <T> void train_get(ApplicationStatePersistenceStrategy strategy, Class<T> asoClass,
-            ApplicationStateCreator<T> creator, T aso)
-    {
-        expect(strategy.get(asoClass, creator)).andReturn(aso);
-    }
-
-    protected final void train_get(ApplicationStatePersistenceStrategySource source, String strategyName,
-            ApplicationStatePersistenceStrategy strategy)
-    {
-        expect(source.get(strategyName)).andReturn(strategy).atLeastOnce();
-    }
-
-    protected final void train_get(Binding binding, Object value)
-    {
-        expect(binding.get()).andReturn(value);
-    }
-
-    protected void train_getAttribute(HttpSession session, String attributeName, Object value)
-    {
-        expect(session.getAttribute(attributeName)).andReturn(value);
-    }
-
-    protected final void train_getAttribute(Session session, String name, Object attribute)
-    {
-        expect(session.getAttribute(name)).andReturn(attribute);
-    }
-
-    protected final void train_getAttributeNames(Session session, String prefix, String... names)
-    {
-        expect(session.getAttributeNames(prefix)).andReturn(Arrays.asList(names));
-    }
-
-    protected final void train_getBaseResource(ComponentModel model, Resource resource)
-    {
-        expect(model.getBaseResource()).andReturn(resource).atLeastOnce();
-    }
-
-    protected final void train_getClassName(ClassTransformation transformation, String className)
-    {
-        expect(transformation.getClassName()).andReturn(className).atLeastOnce();
-    }
-
-    protected final void train_getClasspathAsset(AssetSource source, String path, Asset asset)
-    {
-        expect(source.getClasspathAsset(path)).andReturn(asset);
-    }
-
-    protected final void train_getClasspathAsset(AssetSource source, String path, Locale locale, Asset asset)
-    {
-        expect(source.getClasspathAsset(path, locale)).andReturn(asset);
-    }
-
-    protected final void train_getCompleteId(ComponentResourcesCommon resources, String completeId)
-    {
-        expect(resources.getCompleteId()).andReturn(completeId).atLeastOnce();
-    }
-
-    protected final void train_getComponent(ComponentResources resources, Component component)
-    {
-        expect(resources.getComponent()).andReturn(component).atLeastOnce();
-    }
-
-    protected final void train_getComponentClassName(ComponentModel model, String className)
-    {
-        expect(model.getComponentClassName()).andReturn(className).atLeastOnce();
-    }
-
-    protected final void train_getComponentResources(Component component, ComponentResources resources)
-    {
-        expect(component.getComponentResources()).andReturn(resources).atLeastOnce();
-    }
-
-    protected final void train_getConduit(PropertyModel model, PropertyConduit conduit)
-    {
-        expect(model.getConduit()).andReturn(conduit).atLeastOnce();
-    }
-
-    protected <C, T> void train_getConstraintType(Validator<C, T> validator, Class<C> constraintType)
-    {
-        expect(validator.getConstraintType()).andReturn(constraintType).atLeastOnce();
-    }
-
-    protected final void train_getContainer(ComponentResources resources, Component container)
-    {
-        expect(resources.getContainer()).andReturn(container).atLeastOnce();
-    }
-
-    protected final void train_getContainerMessages(ComponentResources resources, Messages containerMessages)
-    {
-        expect(resources.getContainerMessages()).andReturn(containerMessages).atLeastOnce();
-    }
-
-    protected final void train_getContainerResources(ComponentResources resources, ComponentResources containerResources)
-    {
-        expect(resources.getContainerResources()).andReturn(containerResources).atLeastOnce();
-    }
-
-    protected final void train_getDateHeader(Request request, String name, long value)
-    {
-        expect(request.getDateHeader(name)).andReturn(value).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final <T extends Annotation> void train_getFieldAnnotation(ClassTransformation transformation,
-            String fieldName, Class<T> annotationClass, T annotation)
-    {
-        expect(transformation.getFieldAnnotation(fieldName, annotationClass)).andReturn(annotation);
-    }
-
-    protected final void train_getFieldPersistenceStrategy(ComponentModel model, String fieldName, String fieldStrategy)
-    {
-        expect(model.getFieldPersistenceStrategy(fieldName)).andReturn(fieldStrategy).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_getFieldType(ClassTransformation transformation, String fieldName, String type)
-    {
-        expect(transformation.getFieldType(fieldName)).andReturn(type).atLeastOnce();
-    }
-
-    protected final void train_getId(ComponentResources resources, String id)
-    {
-        expect(resources.getId()).andReturn(id).atLeastOnce();
-    }
-
-    protected final void train_getLabel(Field field, String label)
-    {
-        expect(field.getLabel()).andReturn(label).atLeastOnce();
-    }
-
-    protected final void train_getLocale(ComponentResourcesCommon resources, Locale locale)
-    {
-        expect(resources.getLocale()).andReturn(locale).atLeastOnce();
-    }
-
-    protected final void train_getLocale(Request request, Locale locale)
-    {
-        expect(request.getLocale()).andReturn(locale).atLeastOnce();
-    }
-
-    protected void train_getMessageKey(Validator validator, String messageKey)
-    {
-        expect(validator.getMessageKey()).andReturn(messageKey).atLeastOnce();
-    }
-
-    protected final void train_getMessages(ComponentResources resources, Messages messages)
-    {
-        expect(resources.getMessages()).andReturn(messages).atLeastOnce();
-    }
-
-    protected final void train_getMeta(ComponentModel model, String key, String value)
-    {
-        expect(model.getMeta(key)).andReturn(value).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final <T extends Annotation> void train_getMethodAnnotation(ClassTransformation ct,
-            TransformMethodSignature signature, Class<T> annotationClass, T annotation)
-    {
-        expect(ct.getMethodAnnotation(signature, annotationClass)).andReturn(annotation).atLeastOnce();
-    }
-
-    protected final void train_getMethodIdentifier(ClassTransformation transformation,
-            TransformMethodSignature signature, String id)
-    {
-        expect(transformation.getMethodIdentifier(signature)).andReturn(id);
-    }
-
-    protected final void train_getOutputStream(HttpServletResponse response, ServletOutputStream stream)
-    {
-        try
-        {
-            expect(response.getOutputStream()).andReturn(stream);
-        }
-        catch (IOException e)
-        {
-            fail(e.getMessage(), e);
-        }
-    }
-
-    protected final void train_getPage(ComponentResources resources, Component page)
-    {
-        expect(resources.getPage()).andReturn(page).atLeastOnce();
-    }
-
-    protected final void train_getParameterModel(ComponentModel model, String parameterName,
-            ParameterModel parameterModel)
-    {
-        expect(model.getParameterModel(parameterName)).andReturn(parameterModel).atLeastOnce();
-    }
-
-    protected final void train_getParameterNames(ComponentModel model, String... names)
-    {
-        expect(model.getParameterNames()).andReturn(Arrays.asList(names));
-    }
-
-    protected final void train_getParentModel(ComponentModel model, ComponentModel parentModel)
-    {
-        expect(model.getParentModel()).andReturn(parentModel).atLeastOnce();
-    }
-
-    protected final void train_getPath(Request request, String path)
-    {
-        expect(request.getPath()).andReturn(path).atLeastOnce();
-    }
-
-    protected final void train_getPersistentFieldNames(ComponentModel model, String... names)
-    {
-        expect(model.getPersistentFieldNames()).andReturn(Arrays.asList(names)).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_getResourcesFieldName(ClassTransformation transformation, String name)
-    {
-        expect(transformation.getResourcesFieldName()).andReturn(name).atLeastOnce();
-    }
-
-    protected final void train_getRootResource(AssetFactory factory, Resource rootResource)
-    {
-        expect(factory.getRootResource()).andReturn(rootResource);
-    }
-
-    protected final void train_getSession(HttpServletRequest request, boolean create, HttpSession session)
-    {
-        expect(request.getSession(create)).andReturn(session);
-    }
-
-    protected void train_getSession(Request request, boolean create, Session session)
-    {
-        expect(request.getSession(create)).andReturn(session);
-    }
-
-    protected final void train_getSupportsInformalParameters(ComponentModel model, boolean supports)
-    {
-        expect(model.getSupportsInformalParameters()).andReturn(supports).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_getValidationMessages(ValidationMessagesSource messagesSource, Locale locale,
-            Messages messages)
-    {
-        expect(messagesSource.getValidationMessages(locale)).andReturn(messages).atLeastOnce();
-    }
-
-    protected final void train_getValueType(Validator validator, Class valueType)
-    {
-        expect(validator.getValueType()).andReturn(valueType).atLeastOnce();
-    }
-
-    @SuppressWarnings("unchecked")
-    protected final void train_handleResult(ComponentEventCallback handler, Object result, boolean abort)
-    {
-        expect(handler.handleResult(result)).andReturn(abort);
-    }
-
-    protected final void train_inError(ValidationTracker tracker, Field field, boolean inError)
-    {
-        expect(tracker.inError(field)).andReturn(inError);
-    }
-
-    protected final void train_isRequired(Validator validator, boolean isRequired)
-    {
-        expect(validator.isRequired()).andReturn(isRequired).atLeastOnce();
-    }
-
-    protected final void train_isInvariant(Binding binding, boolean isInvariant)
-    {
-        expect(binding.isInvariant()).andReturn(isInvariant);
-    }
-
-    protected final void train_isRequired(ParameterModel model, boolean isRequired)
-    {
-        expect(model.isRequired()).andReturn(isRequired);
-    }
-
-    protected final void train_isRootClass(MutableComponentModel model, boolean isRootClass)
-    {
-        expect(model.isRootClass()).andReturn(isRootClass);
-    }
-
-    protected final void train_name(Parameter parameter, String name)
-    {
-        expect(parameter.name()).andReturn(name).atLeastOnce();
-    }
-
-    protected final void train_newBinding(BindingFactory factory, String description, ComponentResources container,
-            ComponentResources component, String expression, Location l, Binding binding)
-    {
-        expect(factory.newBinding(description, container, component, expression, l)).andReturn(binding);
-    }
-
-    protected void train_newBinding(BindingSource bindingSource, String description,
-            ComponentResources componentResources, String defaultBindingPrefix, String expression, Binding binding)
-    {
-        expect(bindingSource.newBinding(description, componentResources, defaultBindingPrefix, expression)).andReturn(
-                binding);
-    }
-
-    protected final void train_newMemberName(ClassTransformation transformation, String suggested, String name)
-    {
-        expect(transformation.newMemberName(suggested)).andReturn(name);
-    }
-
-    protected final void train_newMemberName(ClassTransformation transformation, String prefix, String baseName,
-            String name)
-    {
-        expect(transformation.newMemberName(prefix, baseName)).andReturn(name);
-    }
-
-    protected final <T> void train_peek(Environment env, Class<T> type, T value)
-    {
-        expect(env.peek(type)).andReturn(value);
-    }
-
-    protected final <T> void train_peekRequired(Environment env, Class<T> type, T value)
-    {
-        expect(env.peekRequired(type)).andReturn(value);
-    }
-
-    protected final void train_provideInjection(InjectionProvider provider, String fieldName, Class fieldType,
-            ObjectLocator locator, ClassTransformation transformation, MutableComponentModel model, boolean result)
-    {
-        expect(provider.provideInjection(fieldName, fieldType, locator, transformation, model)).andReturn(result);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected final void train_renderInformalParameters(ComponentResources resources, final MarkupWriter writer,
-            final Object... informals)
-    {
-        resources.renderInformalParameters(writer);
-        IAnswer answer = new IAnswer()
-        {
-            public Object answer() throws Throwable
-            {
-                writer.attributes(informals);
-
-                return null;
-            }
-        };
-
-        setAnswer(answer);
-    }
-
-    protected final void train_requiresDigest(ResourceDigestGenerator generator, String path, boolean requiresDigest)
-    {
-        expect(generator.requiresDigest(path)).andReturn(requiresDigest);
-    }
-
-    protected final void train_service(RequestHandler handler, Request request, Response response, boolean result)
-            throws IOException
-    {
-        expect(handler.service(request, response)).andReturn(result);
-    }
-
-    protected final void train_setContentLength(HttpServletResponse response, int length)
-    {
-        response.setContentLength(length);
-    }
-
-    protected final void train_setContentType(HttpServletResponse response, String contentType)
-    {
-        response.setContentType(contentType);
-    }
-
-    protected final void train_setDateHeader(HttpServletResponse response, String headerName, long date)
-    {
-        response.setDateHeader(headerName, date);
-    }
-
-    protected final void train_toClass(ClassTransformation transformation, String type, Class classForType)
-    {
-        expect(transformation.toClass(type)).andReturn(classForType);
-    }
-
-    protected final void train_toClientURL(Asset asset, String URL)
-    {
-        expect(asset.toClientURL()).andReturn(URL).atLeastOnce();
-    }
-
-    protected final void train_toClientURL(ClasspathAssetAliasManager manager, String resourcePath, String clientURL)
-    {
-        expect(manager.toClientURL(resourcePath)).andReturn(clientURL);
-    }
-
-    protected final void train_toRedirectURI(Link link, String URI)
-    {
-        expect(link.toRedirectURI()).andReturn(URI).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_toResourcePath(ClasspathAssetAliasManager manager, String clientURL, String resourcePath)
-    {
-        expect(manager.toResourcePath(clientURL)).andReturn(resourcePath).atLeastOnce();
-    }
-
-    protected final void train_value(Id annotation, String value)
-    {
-        expect(annotation.value()).andReturn(value).atLeastOnce();
-    }
-
-    protected final void train_value(Path annotation, String value)
-    {
-        expect(annotation.value()).andReturn(value).atLeastOnce();
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final void train_create(BeanModelSource source, Class beanClass, boolean filterReadOnly,
-            Messages messages, BeanModel model)
-    {
-        expect(source.create(beanClass, filterReadOnly, messages)).andReturn(model);
-    }
-
-    protected final void train_getBoundType(ComponentResources resources, String parameterName, Class type)
-    {
-        expect(resources.getBoundType(parameterName)).andReturn(type);
-    }
-
-    protected final BeanModel mockBeanModel()
-    {
-        return newMock(BeanModel.class);
-    }
-
-    protected final BeanModelSource mockBeanModelSource()
-    {
-        return newMock(BeanModelSource.class);
-    }
-
-    public final void train_getLocation(Locatable locatable, Location location)
-    {
-        expect(locatable.getLocation()).andReturn(location).atLeastOnce();
-    }
-
-    public final void train_getResource(Location location, Resource resource)
-    {
-        expect(location.getResource()).andReturn(resource).atLeastOnce();
-    }
-
-    public final void train_getLine(Location location, int line)
-    {
-        expect(location.getLine()).andReturn(line).atLeastOnce();
-    }
-
-    protected final void train_getParameter(Request request, String elementName, String value)
-    {
-        expect(request.getParameter(elementName)).andReturn(value).atLeastOnce();
-    }
-
-    protected final void train_getPageName(ComponentResourcesCommon resources, String pageName)
-    {
-        expect(resources.getPageName()).andReturn(pageName).atLeastOnce();
-    }
-
-    protected final FormSupport mockFormSupport()
-    {
-        return newMock(FormSupport.class);
-    }
-
-    /**
-     * Provides access to component messages, suitable for testing. Reads the associated .properties file for the class
-     * (NOT any localization of it). Only the messages directly in the .properties file is available.
-     * 
-     * @param componentClass
-     *            component class whose messages are needed *
-     * @return the Messages instance
-     */
-    protected final Messages messagesFor(Class componentClass) throws IOException
-    {
-        String file = componentClass.getSimpleName() + ".properties";
-
-        Properties properties = new Properties();
-
-        InputStream is = null;
-
-        try
-        {
-            is = componentClass.getResourceAsStream(file);
-
-            if (is == null)
-                throw new RuntimeException(String.format("Class %s does not have a message catalog.",
-                        componentClass.getName()));
-
-            properties.load(is);
-        }
-        finally
-        {
-            InternalUtils.close(is);
-        }
-
-        Map<String, String> map = CollectionFactory.newCaseInsensitiveMap();
-
-        for (Object key : properties.keySet())
-        {
-
-            String skey = (String) key;
-
-            map.put(skey, properties.getProperty(skey));
-        }
-
-        return new MapMessages(Locale.ENGLISH, map);
-    }
-
-    protected final FieldValidationSupport mockFieldValidationSupport()
-    {
-        return newMock(FieldValidationSupport.class);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final RenderSupport mockRenderSupport()
-    {
-        return newMock(RenderSupport.class);
-    }
-
-    protected final void train_getInheritInformalParameters(EmbeddedComponentModel model, boolean inherits)
-    {
-        expect(model.getInheritInformalParameters()).andReturn(inherits).atLeastOnce();
-    }
-
-    protected final ApplicationStateManager mockApplicationStateManager()
-    {
-        return newMock(ApplicationStateManager.class);
-    }
-
-    protected final <T> void train_get(ApplicationStateManager manager, Class<T> asoClass, T aso)
-    {
-        expect(manager.get(asoClass)).andReturn(aso);
-    }
-
-    protected final void train_getInput(ValidationTracker tracker, Field field, String input)
-    {
-        expect(tracker.getInput(field)).andReturn(input);
-    }
-
-    protected final void train_isXHR(Request request, boolean isXHR)
-    {
-        expect(request.isXHR()).andReturn(isXHR).atLeastOnce();
-    }
-
-    protected void train_getPathInfo(HttpServletRequest request, String pathInfo)
-    {
-        expect(request.getPathInfo()).andReturn(pathInfo).atLeastOnce();
-    }
-
-    protected final void train_service(HttpServletRequestHandler handler, HttpServletRequest request,
-            HttpServletResponse response, boolean result) throws IOException
-    {
-        expect(handler.service(request, response)).andReturn(result);
-    }
-
-    protected final void train_getServletPath(HttpServletRequest request, String path)
-    {
-        expect(request.getServletPath()).andReturn(path).atLeastOnce();
-    }
-
-    protected final HttpServletRequestHandler mockHttpServletRequestHandler()
-    {
-        return newMock(HttpServletRequestHandler.class);
-    }
-
-    protected final NullFieldStrategy mockNullFieldStrategy()
-    {
-        return newMock(NullFieldStrategy.class);
-    }
-
-    protected final ValueEncoderSource mockValueEncoderSource()
-    {
-        return newMock(ValueEncoderSource.class);
-    }
-
-    protected final ValueEncoder mockValueEncoder()
-    {
-        return newMock(ValueEncoder.class);
-    }
-
-    protected final void train_toClient(ValueEncoder valueEncoder, Object value, String encoded)
-    {
-        expect(valueEncoder.toClient(value)).andReturn(encoded);
-    }
-
-    protected final void train_getValueEncoder(ValueEncoderSource source, Class type, ValueEncoder valueEncoder)
-    {
-        expect(source.getValueEncoder(type)).andReturn(valueEncoder).atLeastOnce();
-    }
-
-    protected final void train_toValue(ValueEncoder valueEncoder, String clientValue, Object value)
-    {
-        expect(valueEncoder.toValue(clientValue)).andReturn(value);
-    }
-
-    protected <T> void train_findMeta(MetaDataLocator locator, String key, ComponentResources resources,
-            Class<T> expectedType, T value)
-    {
-        expect(locator.findMeta(key, resources, expectedType)).andReturn(value).atLeastOnce();
-    }
-
-    protected MetaDataLocator mockMetaDataLocator()
-    {
-        return newMock(MetaDataLocator.class);
-    }
-
-    protected final void train_isSecure(Request request, boolean isSecure)
-    {
-        expect(request.isSecure()).andReturn(isSecure).atLeastOnce();
-    }
-
-    protected final void train_getBaseURL(BaseURLSource baseURLSource, boolean secure, String baseURL)
-    {
-        expect(baseURLSource.getBaseURL(secure)).andReturn(baseURL);
-    }
-
-    protected final BaseURLSource mockBaseURLSource()
-    {
-        return newMock(BaseURLSource.class);
-    }
-
-    protected final void train_getAttribute(Request request, String attibuteName, Object value)
-    {
-        expect(request.getAttribute(attibuteName)).andReturn(value);
-    }
-
-    protected final void train_getBlockParameter(ComponentResources resources, String name, Block block)
-    {
-        expect(resources.getBlockParameter(name)).andReturn(block).atLeastOnce();
-    }
-
-    protected final PropertyOverrides mockPropertyOverrides()
-    {
-        return newMock(PropertyOverrides.class);
-    }
-
-    protected void train_getOverrideBlock(PropertyOverrides overrides, String name, Block block)
-    {
-        expect(overrides.getOverrideBlock(name)).andReturn(block).atLeastOnce();
-    }
-
-    protected final void train_getOverrideMessages(PropertyOverrides overrides, Messages messages)
-    {
-        expect(overrides.getOverrideMessages()).andReturn(messages);
-    }
-
-    protected final void train_isDisabled(Field field, boolean disabled)
-    {
-        expect(field.isDisabled()).andReturn(disabled);
-    }
-
-    protected final ValidationDecorator mockValidationDecorator()
-    {
-        return newMock(ValidationDecorator.class);
-    }
-
-    protected final void train_isRequired(Field field, boolean required)
-    {
-        expect(field.isRequired()).andReturn(required);
-    }
-
-    protected final void train_getClientId(ClientElement element, String clientId)
-    {
-        expect(element.getClientId()).andReturn(clientId);
-    }
-
-    protected final FieldTranslator mockFieldTranslator()
-    {
-        return newMock(FieldTranslator.class);
-    }
-
-    protected final Translator mockTranslator(String name, Class type)
-    {
-        Translator translator = mockTranslator();
-
-        train_getName(translator, name);
-        train_getType(translator, type);
-
-        return translator;
-    }
-
-    protected final void train_getName(Translator translator, String name)
-    {
-        expect(translator.getName()).andReturn(name).atLeastOnce();
-    }
-
-    protected final void train_getType(Translator translator, Class type)
-    {
-        expect(translator.getType()).andReturn(type).atLeastOnce();
-    }
-
-    protected final void train_createDefaultTranslator(FieldTranslatorSource source, ComponentResources resources,
-            String parameterName, FieldTranslator translator)
-    {
-        expect(source.createDefaultTranslator(resources, parameterName)).andReturn(translator);
-    }
-
-    protected final TranslatorSource mockTranslatorSource()
-    {
-        return newMock(TranslatorSource.class);
-    }
-
-    protected final void train_get(TranslatorSource translatorSource, String name, Translator translator)
-    {
-        expect(translatorSource.get(name)).andReturn(translator).atLeastOnce();
-    }
-
-    protected final void train_getMessageKey(Translator translator, String messageKey)
-    {
-        expect(translator.getMessageKey()).andReturn(messageKey).atLeastOnce();
-    }
-
-    protected final void train_findByType(TranslatorSource ts, Class propertyType, Translator translator)
-    {
-        expect(ts.findByType(propertyType)).andReturn(translator);
-    }
-
-    protected final void train_toURI(Link link, String URI)
-    {
-        expect(link.toURI()).andReturn(URI);
-    }
-
-    protected final void train_createEditModel(BeanModelSource source, Class beanClass, Messages messages,
-            BeanModel model)
-    {
-        expect(source.createEditModel(beanClass, messages)).andReturn(model);
-    }
-
-    protected final ComponentEventResultProcessor mockComponentEventResultProcessor()
-    {
-        return newMock(ComponentEventResultProcessor.class);
-    }
-
-    protected final void train_getFormComponentId(FormSupport formSupport, String componentId)
-    {
-        expect(formSupport.getFormComponentId()).andReturn(componentId).atLeastOnce();
-    }
-
-    protected final void train_getFormValidationId(FormSupport formSupport, String validationId)
-    {
-        expect(formSupport.getFormValidationId()).andReturn(validationId).atLeastOnce();
-    }
-
-    protected final void train_isAllowNull(ParameterModel model, boolean allowNull)
-    {
-        expect(model.isAllowNull()).andReturn(allowNull).atLeastOnce();
-    }
-
-    protected final void train_isInvalidated(Session session, boolean invalidated)
-    {
-        expect(session.isInvalidated()).andReturn(invalidated);
-    }
-
-    protected final ComponentEventRequestHandler mockComponentEventRequestHandler()
-    {
-        return newMock(ComponentEventRequestHandler.class);
-    }
-
-    protected final ComponentRequestHandler mockComponentRequestHandler()
-    {
-        return newMock(ComponentRequestHandler.class);
-    }
-
-    protected final Asset2 mockAsset2()
-    {
-        return newMock(Asset2.class);
-    }
-
-    /** @since 5.2.0 */
-    protected final RequestGlobals mockRequestGlobals()
-    {
-        return newMock(RequestGlobals.class);
-    }
-
-    protected final PageRenderLinkSource mockPageRenderLinkSource()
-    {
-        return newMock(PageRenderLinkSource.class);
-    }
-
-    /** @deprecated May be removed in Tapestry 5.3 */
-    protected final ClientInfrastructure mockClientInfrastucture()
-    {
-        return newMock(ClientInfrastructure.class);
-    }
-
-    protected final JavaScriptSupport mockJavaScriptSupport()
-    {
-        return newMock(JavaScriptSupport.class);
-    }
-
-    protected final Asset mockAsset(String assetURL)
-    {
-        Asset asset = mockAsset();
-
-        train_toClientURL(asset, assetURL);
-
-        return asset;
-    }
-
-    protected final Link mockLink(String absoluteURI)
-    {
-        Link link = mockLink();
-
-        expect(link.toURI()).andReturn(absoluteURI).atLeastOnce();
-
-        return link;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/RewriteRuleApplicability.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/RewriteRuleApplicability.java
deleted file mode 100644
index b6297af..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/RewriteRuleApplicability.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.urlrewriter;
-
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-
-/**
- * Defines the situations to which a URLRewriterRule will be applied (inbound, outbound, or both)
- * 
- * @deprecated Use {@link LinkTransformer} instead
- */
-public enum RewriteRuleApplicability
-{
-    /** contributed rule applies to inbound requests only */
-    INBOUND,
-    /** contributed rule applies to "outbound" requests (link rewriting). */
-    OUTBOUND,
-    /** contributed rule applies to both inbound and outbound requests */
-    BOTH
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/SimpleRequestWrapper.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/SimpleRequestWrapper.java
deleted file mode 100644
index 226c55b..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/SimpleRequestWrapper.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.urlrewriter;
-
-import org.apache.tapestry5.services.DelegatingRequest;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-
-/**
- * Class that wraps a {@linkplain Request}. It delegates all methods except ones related to URL
- * rewriting.
- * 
- * @deprecated To be removed in 5.3.
- * @see LinkTransformer
- */
-public class SimpleRequestWrapper extends DelegatingRequest
-{
-
-    final private String path;
-
-    final private String serverName;
-
-    /**
-     * Constructor that receives a request, a server name and a path.
-     * 
-     * @param request
-     *            a {@link Request}. It cannot be null.
-     * @param serverName
-     *            a {@link String}.
-     * @param path
-     *            a {@link String}. It cannot be null.
-     */
-    public SimpleRequestWrapper(Request request, String serverName, String path)
-    {
-
-        super(request);
-        assert serverName != null;
-        assert path != null;
-        this.serverName = serverName;
-        this.path = path;
-
-    }
-
-    /**
-     * Constructor that receives a request and a path. The server name used is got
-     * from the request.
-     * 
-     * @param request
-     *            a {@link Request}. It cannot be null.
-     * @param path
-     *            a {@link String}. It cannot be null.
-     */
-    public SimpleRequestWrapper(Request request, String path)
-    {
-        super(request);
-        assert request != null;
-
-        assert path != null;
-
-        final String serverName = request.getServerName();
-        this.serverName = serverName;
-        this.path = path;
-
-    }
-
-    @Override
-    public String getPath()
-    {
-        return path;
-    }
-
-    @Override
-    public String getServerName()
-    {
-        return serverName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/URLRewriteContext.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/URLRewriteContext.java
deleted file mode 100644
index 917ce71..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/URLRewriteContext.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.urlrewriter;
-
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-
-/**
- * Context passed to the process method of URLRewriterRule implementations, providing additional
- * information that the rules might need to function.
- * 
- * @deprecated Use {@link LinkTransformer} instead
- */
-public interface URLRewriteContext
-{
-
-    /**
-     * @return true if the "process" method of URLRewriterRule is being called for an incoming request.
-     */
-    boolean isIncoming();
-
-    /**
-     * If the request being processed is processed in response to pagelink creation, the PageRenderRequestParameters
-     * associated with that creation will be available via this method. Otherwise, this method returns null.
-     * 
-     * @return the PageRenderRequestParameters associated with the link creation for this request, or null
-     */
-    PageRenderRequestParameters getPageParameters();
-
-    /**
-     * If the request being processed is processed in response to component event link creation, the
-     * ComponentEVentRequestParameters associated with that creation will be available via this method.
-     * Otherwise, this method returns null.
-     * 
-     * @return the ComponentEventRequestParameters associated with the link creation for this request, or null
-     */
-    ComponentEventRequestParameters getComponentEventParameters();
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/URLRewriterRule.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/URLRewriterRule.java
deleted file mode 100644
index 34e5e8c..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/urlrewriter/URLRewriterRule.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.urlrewriter;
-
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.linktransform.LinkTransformer;
-
-/**
- * Defines an URL rewriting rule. It is executed before any Tapestry request processing is done.
- * 
- * @deprecated Use {@link LinkTransformer} instead
- */
-public interface URLRewriterRule
-{
-
-    /**
-     * Processes a {@linkplain org.apache.tapestry5.services.Request}. Implementations of this
-     * method must check if they need to rewrite this request. If no, it must return the received
-     * request unchanged. This method cannot return null.
-     * 
-     * @param request
-     *            a {@link org.apache.tapestry5.services.Request}.
-     * @return request a {@link org.apache.tapestry5.services.Request}.
-     */
-    Request process(Request request, URLRewriteContext context);
-
-    RewriteRuleApplicability applicability();
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/AbstractSelectModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/AbstractSelectModel.java
deleted file mode 100644
index c8a4e6a..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/AbstractSelectModel.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.OptionGroupModel;
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.SelectModelVisitor;
-
-import java.util.List;
-
-/**
- * Base class for {@link SelectModel} implementations, whose primary job is to provide the {@link
- * #visit(SelectModelVisitor)} method.
- */
-public abstract class AbstractSelectModel implements SelectModel
-{
-    public final void visit(SelectModelVisitor visitor)
-    {
-        List<OptionGroupModel> groups = getOptionGroups();
-
-        if (groups != null)
-        {
-            for (OptionGroupModel groupModel : groups)
-            {
-                visitor.beginOptionGroup(groupModel);
-
-                visitOptions(groupModel.getOptions(), visitor);
-
-                visitor.endOptionGroup(groupModel);
-            }
-        }
-
-        visitOptions(getOptions(), visitor);
-    }
-
-    private void visitOptions(List<OptionModel> options, SelectModelVisitor vistor)
-    {
-        if (options != null)
-        {
-            for (OptionModel optionModel : options)
-                vistor.option(optionModel);
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java
deleted file mode 100644
index 528feb8..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoder.java
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import java.io.Serializable;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-/**
- * A default, extensible version of {@link org.apache.tapestry5.PrimaryKeyEncoder} that is based on loading known values
- * into an internal map. When there's a reasonable number (hundreds, perhaps thousands) of items to choose from, and
- * those items are fast and cheap to read and instantiate, this implementation is a good bet. For very large result
- * sets, you'll need to create your own implementation of {@link PrimaryKeyEncoder}.
- *
- * @param <K> the key type (which must be serializable)
- * @param <V> the value type
- * @deprecated See deprecation notes for {@link org.apache.tapestry5.PrimaryKeyEncoder}.
- */
-public class DefaultPrimaryKeyEncoder<K extends Serializable, V> implements PrimaryKeyEncoder<K, V>
-{
-    private final Map<K, V> keyToValue = new LinkedHashMap<K, V>();
-
-    private final Map<V, K> valueToKey = CollectionFactory.newMap();
-
-    private Set<K> deletedKeys;
-
-    private K currentKey;
-
-    private final Class<K> keyType;
-
-    /**
-     * Compatibility with 5.0: new encoder, key type unknown. You <em>will</em> want to use the other constructor and
-     * specify the key type.
-     */
-    public DefaultPrimaryKeyEncoder()
-    {
-        this(null);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public DefaultPrimaryKeyEncoder(Class<K> keyType)
-    {
-        this.keyType = keyType;
-    }
-
-
-    public Class<K> getKeyType()
-    {
-        return keyType;
-    }
-
-    /**
-     * Adds a new key/value pair to the encoder.
-     */
-    public final void add(K key, V value)
-    {
-        assert key != null;
-        assert value != null;
-        V existing = keyToValue.get(key);
-        if (existing != null) throw new IllegalArgumentException(PublicUtilMessages.duplicateKey(key, value, existing));
-
-        keyToValue.put(key, value);
-
-        // TODO: Ensure that the value is unique?
-
-        valueToKey.put(value, key);
-    }
-
-    /**
-     * Returns the values previously {@link #add(Serializable, Object) added to the encoder}, <em>in the order in which
-     * they were added</em>. Values that are deleted are not returned.
-     *
-     * @return ordered list of values
-     */
-    public final List<V> getValues()
-    {
-        return valuesNotInKeySet(deletedKeys);
-    }
-
-    /**
-     * Returns a list of all the values <em>except</em> those values whose keys are in the provided set. The set may be
-     * null, in which case all values are returned.
-     *
-     * @param keySet set of keys identifying values to exclude, or null to exclude no values
-     * @return values (not in the set) in order origionally added
-     */
-    protected final List<V> valuesNotInKeySet(Set<K> keySet)
-    {
-        if (keySet == null || keySet.isEmpty()) return getAllValues();
-
-        List<V> result = CollectionFactory.newList();
-
-        for (Map.Entry<K, V> entry : keyToValue.entrySet())
-        {
-
-            if (keySet.contains(entry.getKey())) continue;
-
-            result.add(entry.getValue());
-        }
-
-        return result;
-    }
-
-    public final List<V> getAllValues()
-    {
-        List<V> result = CollectionFactory.newList();
-
-        for (Map.Entry<K, V> entry : keyToValue.entrySet())
-        {
-            result.add(entry.getValue());
-        }
-
-        return result;
-    }
-
-    /**
-     * For a previously {@link #add(Serializable, Object) added key/value pair}, returns the key corresponding to the
-     * given value.
-     */
-    public final K toKey(V value)
-    {
-        assert value != null;
-        currentKey = valueToKey.get(value);
-
-        if (currentKey == null) throw new IllegalArgumentException(PublicUtilMessages.missingValue(value, valueToKey
-                .keySet()));
-
-        return currentKey;
-    }
-
-    public final V toValue(K key)
-    {
-        V result = keyToValue.get(key);
-
-        if (result == null)
-        {
-            result = provideMissingObject(key);
-
-            currentKey = key;
-        }
-        else
-        {
-            currentKey = key;
-        }
-
-        return result;
-    }
-
-    /**
-     * Invoked by {@link #toValue(Serializable)} whenever a key can not be converted to a value using the internal
-     * cache. This is an opportunity to record the fact that an error occured (they key was not valuable, possibly
-     * because it points to a deleted entity object) and provide a temporary object. This method may return null, but in
-     * a typical application, that will likely case NullPointerExceptions further down the processing chain.
-     * <p/>
-     * This implementation returns null, and is intended to be overriden in subclasses.
-     *
-     * @param key key for which a value is required
-     * @return a substitute value, or null
-     */
-    protected V provideMissingObject(K key)
-    {
-        return null;
-    }
-
-    public final boolean isDeleted()
-    {
-        return inKeySet(deletedKeys);
-    }
-
-    public final void setDeleted(boolean value)
-    {
-        deletedKeys = modifyKeySet(deletedKeys, value);
-    }
-
-    /**
-     * Returns true if the current key is in the provided set.
-     *
-     * @param keySet the set of keys to check, or null
-     * @return true if the key is in the set, false if it is missing (or if keySet is null)
-     */
-    protected final boolean inKeySet(Set<K> keySet)
-    {
-        return keySet != null && keySet.contains(currentKey);
-    }
-
-    /**
-     * Modifies a keySet to add or remove the current key. If necessary, a new Set is created.
-     * <p/>
-     * Useage: <code> private Set<K> myFlagKeys;
-     * <p/>
-     * public boolean void setMyFlag(boolean value) { myFlagKeys = modifySet(myFlagKeys, value); } </code>
-     *
-     * @param keySet the set of keys, or null
-     * @param value  true to add the current key, false to remove
-     * @return the provided key set, or a new one
-     */
-    protected final Set<K> modifyKeySet(Set<K> keySet, boolean value)
-    {
-        if (keySet == null)
-        {
-            if (!value) return null;
-
-            keySet = CollectionFactory.newSet();
-        }
-
-        if (value) keySet.add(currentKey);
-        else keySet.remove(currentKey);
-
-        return keySet;
-    }
-
-    /**
-     * Does nothing. Subclasses may override as necessary.
-     */
-    public void prepareForKeys(List<K> keys)
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
deleted file mode 100644
index 8b8e9c2..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumSelectModel.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import java.io.Serializable;
-import java.util.List;
-
-import org.apache.tapestry5.OptionGroupModel;
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-/**
- * A basic select model for a particular Enum type. The labels for each Enum are drawn from the Enum instance name and
- * the provides message catalog: <ul> <li>As key <em>ClassName</em>.<em>name</em> if present. The class name excludes
- * the package portion. Ex: "ElementType.LOCAL_VARIABLE" <li>As key <em>name</em> if present, i.e., "LOCAL_VARIABLE".
- * <li>As a user-presentable version of the name, i.e., "Local Variable". </ul>
- */
-public final class EnumSelectModel extends AbstractSelectModel implements Serializable
-{
-    private static final long serialVersionUID = -3590412082766899684L;
-
-    private final List<OptionModel> options = CollectionFactory.newList();
-
-    public <T extends Enum> EnumSelectModel(Class<T> enumClass, Messages messages)
-    {
-        this(enumClass, messages, enumClass.getEnumConstants());
-    }
-
-    public <T extends Enum> EnumSelectModel(Class<T> enumClass, Messages messages, T[] values)
-    {
-        assert enumClass != null;
-        assert messages != null;
-        String prefix = enumClass.getSimpleName();
-
-        for (T value : values)
-        {
-            String label = TapestryInternalUtils.getLabelForEnum(messages, prefix, value);
-
-            options.add(new OptionModelImpl(label, value));
-        }
-    }
-
-    /**
-     * Returns null.
-     */
-    public List<OptionGroupModel> getOptionGroups()
-    {
-        return null;
-    }
-
-    /**
-     * Returns the option groupos created in the constructor.
-     */
-    public List<OptionModel> getOptions()
-    {
-        return options;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java
deleted file mode 100644
index 0fc4441..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/EnumValueEncoder.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A value encoder that can be used for arbitrary Enum types. The enum name is stored as the client side value.
- */
-public class EnumValueEncoder<E extends Enum<E>> implements ValueEncoder<E>
-{
-    private final Class<E> enumType;
-
-    public EnumValueEncoder(final Class<E> enumType)
-    {
-        assert enumType != null;
-        this.enumType = enumType;
-    }
-
-    public String toClient(E value)
-    {
-        if (value == null)
-            return null;
-
-        return value.name();
-    }
-
-    public E toValue(String clientValue)
-    {
-        if (InternalUtils.isBlank(clientValue))
-            return null;
-
-        return Enum.valueOf(enumType, clientValue);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java
deleted file mode 100644
index aaa3480..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/PublicUtilMessages.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-import java.util.Collection;
-
-final class PublicUtilMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(PublicUtilMessages.class);
-
-    static String duplicateKey(Object key, Object newValue, Object existingValue)
-    {
-        return MESSAGES.format("duplicate-key", key, newValue, existingValue);
-    }
-
-    static <V> String missingValue(V value, Collection<V> values)
-    {
-        return MESSAGES.format("missing-value", value, InternalUtils.joinSorted(values));
-    }
-
-    static String missingEnumValue(String value, Class enumClass, Collection<String> values)
-    {
-        return MESSAGES.format("missing-enum-value", value, enumClass.getName(), InternalUtils.joinSorted(values));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java
deleted file mode 100644
index 0ed1e20..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/ResponseWrapper.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import java.io.IOException;
-import java.io.OutputStream;
-import java.io.PrintWriter;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.services.Response;
-
-/**
- * Implementation of {@link org.apache.tapestry5.services.Response} that delegates all method invocations to a delegate
- * instance. This is used as a base class for overriding just some behaviors of Response.
- */
-public class ResponseWrapper implements Response
-{
-    protected final Response response;
-
-    public ResponseWrapper(Response response)
-    {
-        assert response != null;
-        this.response = response;
-    }
-
-    public PrintWriter getPrintWriter(String contentType) throws IOException
-    {
-        return response.getPrintWriter(contentType);
-    }
-
-    public OutputStream getOutputStream(String contentType) throws IOException
-    {
-        return response.getOutputStream(contentType);
-    }
-
-    public void sendRedirect(String URL) throws IOException
-    {
-        response.sendRedirect(URL);
-    }
-
-    public void sendRedirect(Link link) throws IOException
-    {
-        response.sendRedirect(link);
-    }
-
-    public void setStatus(int sc)
-    {
-        response.setStatus(sc);
-    }
-
-    public void sendError(int sc, String message) throws IOException
-    {
-        response.sendError(sc, message);
-    }
-
-    public void setContentLength(int length)
-    {
-        response.setContentLength(length);
-    }
-
-    public void setDateHeader(String name, long date)
-    {
-        response.setDateHeader(name, date);
-    }
-
-    public void setHeader(String name, String value)
-    {
-        response.setHeader(name, value);
-    }
-
-    public void setIntHeader(String name, int value)
-    {
-        response.setIntHeader(name, value);
-    }
-
-    public String encodeURL(String URL)
-    {
-        return response.encodeURL(URL);
-    }
-
-    public String encodeRedirectURL(String URL)
-    {
-        return response.encodeRedirectURL(URL);
-    }
-
-    public boolean isCommitted()
-    {
-        return response.isCommitted();
-    }
-
-    public void disableCompression()
-    {
-        response.disableCompression();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/StringToEnumCoercion.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/StringToEnumCoercion.java
deleted file mode 100644
index d3524f0..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/StringToEnumCoercion.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-
-/**
- * A {@link org.apache.tapestry5.ioc.services.Coercion} for converting strings into an instance of a particular
- * enumerated type. The {@link Enum#name() name} is used as the key to identify the enum instance, in a case-insensitive
- * fashion.
- * 
- * @param <T>
- *            the type of enumeration
- */
-public final class StringToEnumCoercion<T extends Enum> implements Coercion<String, T>
-{
-    private final Class<T> enumClass;
-
-    private final Map<String, T> stringToEnum = CollectionFactory.newCaseInsensitiveMap();
-
-    public StringToEnumCoercion(Class<T> enumClass)
-    {
-        this(enumClass, enumClass.getEnumConstants());
-    }
-
-    public StringToEnumCoercion(Class<T> enumClass, T... values)
-    {
-        this.enumClass = enumClass;
-
-        for (T value : values)
-            stringToEnum.put(value.name(), value);
-    }
-
-    public T coerce(String input)
-    {
-        if (InternalUtils.isBlank(input))
-            return null;
-
-        T result = stringToEnum.get(input);
-
-        if (result == null)
-            throw new UnknownValueException(
-                    PublicUtilMessages.missingEnumValue(input, enumClass, stringToEnum.keySet()), new AvailableValues(
-                            enumClass.getName() + " enum constants", stringToEnum));
-
-        return result;
-    }
-
-    /**
-     * Allows an alias value (alternate) string to reference a value.
-     * 
-     * @since 5.2.2
-     */
-    public StringToEnumCoercion<T> addAlias(String alias, T value)
-    {
-        stringToEnum.put(alias, value);
-
-        return this;
-    }
-
-    public static <T extends Enum> StringToEnumCoercion<T> create(Class<T> enumClass)
-    {
-        return new StringToEnumCoercion<T>(enumClass);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java
deleted file mode 100644
index 75d22a7..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/util/TextStreamResponse.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import java.io.ByteArrayInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.StreamResponse;
-import org.apache.tapestry5.services.Response;
-
-public class TextStreamResponse implements StreamResponse
-{
-    private final ContentType contentType;
-
-    private final String text;
-
-    /**
-     * Constructor that defaults the character set to "utf-8".
-     */
-    public TextStreamResponse(String contentType, String text)
-    {
-        this(contentType, "UTF-8", text);
-    }
-
-    /**
-     * Constructor allowing the content type and character set to the specified.
-     * 
-     * @param contentType
-     *            type of content, often "text/xml"
-     * @param charset
-     *            character set of output, usually "UTF-8"
-     * @param text
-     *            text to be streamed in the response
-     * @see org.apache.tapestry5.SymbolConstants#CHARSET
-     */
-    public TextStreamResponse(String contentType, String charset, String text)
-    {
-        this(new ContentType(contentType, charset), text);
-    }
-
-    public TextStreamResponse(ContentType contentType, String text)
-    {
-        assert contentType != null;
-        assert text != null;
-
-        this.contentType = contentType;
-        this.text = text;
-    }
-
-    public String getContentType()
-    {
-        return contentType.toString();
-    }
-
-    /**
-     * Converts the text to a byte array (as per the character set, which is usually "UTF-8"), and returns a stream for
-     * that byte array.
-     * 
-     * @return the text as a byte array stram
-     * @throws IOException
-     */
-    public InputStream getStream() throws IOException
-    {
-        byte[] textBytes = text.getBytes(contentType.getCharset());
-
-        return new ByteArrayInputStream(textBytes);
-    }
-
-    /**
-     * Does nothing; subclasses may override.
-     */
-    public void prepareResponse(Response response)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/AbstractValidator.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/AbstractValidator.java
deleted file mode 100644
index 28ae1cd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/AbstractValidator.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Validator;
-
-/**
- * Base class for constructing a {@link org.apache.tapestry5.Validator}.
- */
-public abstract class AbstractValidator<C, T> implements Validator<C, T>
-{
-    private final Class<C> constraintType;
-
-    private final Class<T> valueType;
-
-    private final String messageKey;
-
-    protected AbstractValidator(Class<C> constraintType, Class<T> valueType, String messageKey)
-    {
-        this.constraintType = constraintType;
-        this.valueType = valueType;
-        this.messageKey = messageKey;
-    }
-
-    public final Class<C> getConstraintType()
-    {
-        return constraintType;
-    }
-
-    public final Class<T> getValueType()
-    {
-        return valueType;
-    }
-
-    public final String getMessageKey()
-    {
-        return messageKey;
-    }
-
-    /**
-     * Return false, which is correct for the vast majority of validators. {@link org.apache.tapestry5.validator.Required}
-     * overrides this to true.F
-     */
-    public boolean isRequired()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java
deleted file mode 100644
index 25d9698..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Email.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-import java.util.regex.Pattern;
-
-/**
- * A validator that checks if a given string is well-formed email address. This validator is not configurable.
- */
-public class Email extends AbstractValidator<Void, String>
-{
-    private static final String ATOM = "[^\\x00-\\x1F^\\(^\\)^\\<^\\>^\\@^\\,^\\;^\\:^\\\\^\\\"^\\.^\\[^\\]^\\s]";
-
-    private static final String DOMAIN = "(" + ATOM + "+(\\." + ATOM + "+)*";
-
-    private static final String IP_DOMAIN = "\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\]";
-
-    private static final Pattern PATTERN = Pattern
-            .compile("^" + ATOM + "+(\\." + ATOM + "+)*@" + DOMAIN + "|" + IP_DOMAIN + ")$", Pattern.CASE_INSENSITIVE);
-
-    public Email()
-    {
-        super(null, String.class, "invalid-email");
-    }
-
-    public void render(Field field, Void constraintValue, MessageFormatter formatter, MarkupWriter markupWriter,
-                       FormSupport formSupport)
-    {
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field)
-    {
-        return formatter.format(field.getLabel());
-    }
-
-    public void validate(Field field, Void constraintValue, MessageFormatter formatter, String value)
-            throws ValidationException
-    {
-        if (!PATTERN.matcher(value).matches()) throw new ValidationException(buildMessage(formatter, field));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java
deleted file mode 100644
index c314c80..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Max.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Enforces a maximum integer value.
- */
-public class Max extends AbstractValidator<Long, Number>
-{
-    public Max()
-    {
-        super(Long.class, Number.class, "max-integer");
-    }
-
-    public void validate(Field field, Long constraintValue, MessageFormatter formatter, Number value)
-            throws ValidationException
-    {
-        if (value.longValue() > constraintValue)
-            throw new ValidationException(buildMessage(formatter, field, constraintValue));
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field, Long constraintValue)
-    {
-        return formatter.format(constraintValue, field.getLabel());
-    }
-
-    public void render(Field field, Long constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                       FormSupport formSupport)
-    {
-        formSupport.addValidation(field, "max", buildMessage(formatter, field, constraintValue), constraintValue);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java
deleted file mode 100644
index a44ecf6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/MaxLength.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-public final class MaxLength extends AbstractValidator<Integer, String>
-{
-    public MaxLength()
-    {
-        super(Integer.class, String.class, "maximum-string-length");
-    }
-
-    public void validate(Field field, Integer constraintValue, MessageFormatter formatter, String value)
-            throws ValidationException
-    {
-        if (value.length() > constraintValue)
-            throw new ValidationException(buildMessage(formatter, field, constraintValue));
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field, Integer constraintValue)
-    {
-        return formatter.format(constraintValue, field.getLabel());
-    }
-
-    public void render(Field field, Integer constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                       FormSupport formSupport)
-    {
-        // TODO: write a maxlength attribute into the element?  But that's only for
-        // textfield, not for textarea.
-
-        formSupport.addValidation(field, "maxlength", buildMessage(formatter, field, constraintValue), constraintValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java
deleted file mode 100644
index 8ee7bb5..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Min.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-/* A vaidator that enforces that a number is greater than some minimum integer value. */
-public class Min extends AbstractValidator<Long, Number>
-{
-    public Min()
-    {
-        super(Long.class, Number.class, "min-integer");
-    }
-
-    public void validate(Field field, Long constraintValue, MessageFormatter formatter, Number value)
-            throws ValidationException
-    {
-        if (value.longValue() < constraintValue)
-            throw new ValidationException(buildMessage(formatter, field, constraintValue));
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field, Long constraintValue)
-    {
-        return formatter.format(constraintValue, field.getLabel());
-    }
-
-    public void render(Field field, Long constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                       FormSupport formSupport)
-    {
-        formSupport.addValidation(field, "min", buildMessage(formatter, field, constraintValue), constraintValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java
deleted file mode 100644
index c18a7cd..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/MinLength.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * Validates that a string value has a minimum length.
- */
-public final class MinLength extends AbstractValidator<Integer, String>
-{
-    public MinLength()
-    {
-        super(Integer.class, String.class, "minimum-string-length");
-    }
-
-    public void validate(Field field, Integer constraintValue, MessageFormatter formatter, String value)
-            throws ValidationException
-    {
-        if (value.length() < constraintValue)
-            throw new ValidationException(buildMessage(formatter, field, constraintValue));
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field, Integer constraintValue)
-    {
-        return formatter.format(constraintValue, field.getLabel());
-    }
-
-    public void render(Field field, Integer constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                       FormSupport formSupport)
-    {
-        formSupport.addValidation(field, "minlength", buildMessage(formatter, field, constraintValue), constraintValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java
deleted file mode 100644
index d7f7c75..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/None.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-public class None extends AbstractValidator<Void, Object>
-{
-    public None()
-    {
-        super(null, Object.class, "required");
-    }
-
-    /** Does nothing. */
-    public void render(Field field, Void constraintValue, MessageFormatter formatter, MarkupWriter writer,
-            FormSupport formSupport)
-    {
-    }
-
-    /** Does nothing. */
-    public void validate(Field field, Void constraintValue, MessageFormatter formatter, Object value)
-            throws ValidationException
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java
deleted file mode 100644
index 495ad43..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Regexp.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.services.FormSupport;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-public class Regexp extends AbstractValidator<Pattern, String>
-{
-    public Regexp()
-    {
-        super(Pattern.class, String.class, "regexp");
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field, Pattern constraintValue)
-    {
-        return formatter.format(constraintValue.toString(), field.getLabel());
-    }
-
-    public void render(Field field, Pattern constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                       FormSupport formSupport)
-    {
-        formSupport.addValidation(field, "regexp", buildMessage(formatter, field, constraintValue),
-                                  constraintValue.pattern());
-    }
-
-    public void validate(Field field, Pattern constraintValue, MessageFormatter formatter, String value)
-            throws ValidationException
-    {
-        Matcher matcher = constraintValue.matcher(value);
-
-        if (!matcher.matches()) throw new ValidationException(buildMessage(formatter, field, constraintValue));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java
deleted file mode 100644
index d21e5f6..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/Required.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.services.FormSupport;
-
-/**
- * A validator that enforces that the value is not null and not the empty string. This validator is not configurable.
- */
-public final class Required extends AbstractValidator<Void, Object>
-{
-    public Required()
-    {
-        super(null, Object.class, "required");
-    }
-
-    public void validate(Field field, Void constraintValue, MessageFormatter formatter, Object value)
-            throws ValidationException
-    {
-        if (value == null || InternalUtils.isEmptyCollection(value) || InternalUtils.isBlank(value.toString()))
-            throw new ValidationException(buildMessage(formatter, field));
-    }
-
-    private String buildMessage(MessageFormatter formatter, Field field)
-    {
-        return formatter.format(field.getLabel());
-    }
-
-    /**
-     * The exception to the rule.
-     */
-    public boolean isRequired()
-    {
-        return true;
-    }
-
-    public void render(Field field, Void constraintValue, MessageFormatter formatter, MarkupWriter writer,
-                       FormSupport formSupport)
-    {
-        formSupport.addValidation(field, "required", buildMessage(formatter, field), null);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/ValidatorMacro.java b/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/ValidatorMacro.java
deleted file mode 100644
index d192922..0000000
--- a/maint-5-2/tapestry-core/src/main/java/org/apache/tapestry5/validator/ValidatorMacro.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Allows support for "validator macros", a simple-minded way of combining several related valiations together under
- * a single name. The service's configuration maps string keys (macro names) to string values (validation constraints).
- * 
- * @since 5.2.0
- */
-@UsesMappedConfiguration(String.class)
-public interface ValidatorMacro
-{
-    /**
-     * Given a <em>potential</em> validator macro (a simple string name), returns the value for that macro, a
-     * comma-separated list of validation constraints.
-     * 
-     * @return constraints, or null if no such validator macro
-     */
-    String valueForMacro(String validatorMacro);
-}
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/ajax-loader.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/ajax-loader.gif
deleted file mode 100644
index e1cafab..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/ajax-loader.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird.css b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird.css
deleted file mode 100755
index 90032de..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird.css
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
-  Blackbird - Open Source JavaScript Logging Utility
-  Author: G Scott Olson
-  Web: http://blackbirdjs.googlecode.com/
-       http://www.gscottolson.com/blackbirdjs/
-  Version: 1.0
-
-  The MIT License - Copyright (c) 2008 Blackbird Project
-*/
-#t-console {
-    margin: 0;
-    padding: 0;
-    position: fixed;
-    _position: absolute;
-    font: 11px / 1.3 Consolas, 'Lucida Console', Monaco, monospace;
-    _border: 2px solid #BBB;
-    z-index: 999999;
-}
-
-#t-console.bbTopLeft {
-    top: 0;
-    left: 0;
-    _top: expression(eval(document.documentElement.scrollTop+8));
-    _left: expression(eval(document.documentElement.scrollLeft+8));
-}
-
-#t-console.bbTopRight {
-    top: 0;
-    right: 0;
-}
-
-* html .bbTopRight {
-    right: auto;
-    top: expression(eval(document.documentElement.scrollTop+8));
-    left: expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById('t-console').offsetWidth-8));
-}
-
-#t-console.bbBottomLeft {
-    bottom: 0;
-    left: 0;
-}
-
-* html .bbBottomLeft {
-    bottom: auto;
-    top: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById('t-console').offsetHeight-8));
-    left: expression(eval(document.documentElement.scrollLeft+8));
-}
-
-#t-console.bbBottomRight {
-    bottom: 0;
-    right: 0;
-}
-
-* html .bbBottomRight {
-    bottom: auto;
-    right: auto;
-    top: expression(eval(document.documentElement.scrollTop+document.documentElement.clientHeight-document.getElementById('t-console').offsetHeight-8));
-    left: expression(eval(document.documentElement.scrollLeft+document.documentElement.clientWidth-document.getElementById('t-console').offsetWidth-8));
-}
-
-#t-console.bbSmall {
-    width: 300px;
-    _width: 272px;
-}
-
-#t-console.bbSmall .t-header {
-    _width: 272px;
-}
-
-#t-console.bbSmall .t-header div.t-left, #t-console.bbSmall .t-footer div.t-left {
-    width: 150px;
-}
-
-#t-console.bbSmall .t-main {
-    _width: 272px;
-}
-
-#t-console.bbSmall .t-main div {
-    height: 200px;
-}
-
-#t-console.bbSmall .t-main div.t-mainBody {
-    width: 272px;
-}
-
-#t-console.bbSmall .t-footer {
-    _width: 272px;
-}
-
-#t-console.bbLarge {
-    width: 500px;
-    _width: 472px;
-}
-
-#t-console.bbLarge .t-header {
-    _width: 472px;
-}
-
-#t-console.bbLarge .t-header div.t-left, #t-console.bbLarge .t-footer div.t-left {
-    width: 350px;
-}
-
-#t-console.bbLarge .t-main {
-    _width: 472px;
-}
-
-#t-console.bbLarge .t-main div {
-    height: 500px;
-}
-
-#t-console.bbLarge .t-main div.t-mainBody {
-    width: 472px;
-}
-
-#t-console.bbLarge .t-footer {
-    _width: 472px;
-}
-
-#t-console .t-header span {
-    position: relative;
-    width: 16px;
-    height: 16px;
-    margin: 0 4px;
-    float: left;
-    background-image: url(blackbird_icons.png);
-    background-repeat: no-repeat;
-}
-
-#t-console .t-header span.error {
-    background-position: 0px 0px;
-}
-
-#t-console .t-header span.errorDisabled {
-    background-position: -16px 0px;
-}
-
-#t-console .t-header span.warn {
-    background-position: 0px -16px;
-}
-
-#t-console .t-header span.warnDisabled {
-    background-position: -16px -16px;
-}
-
-#t-console .t-header span.info {
-    background-position: 0px -32px;
-}
-
-#t-console .t-header span.infoDisabled {
-    background-position: -16px -32px;
-}
-
-#t-console .t-header span.debug {
-    background-position: 0px -48px;
-}
-
-#t-console .t-header span.debugDisabled {
-    background-position: -16px -48px;
-}
-
-#t-console .t-header span.profile {
-    background-position: 0px -64px;
-}
-
-#t-console .t-header span.profileDisabled {
-    background-position: -16px -64px;
-}
-
-#t-console .t-header span.t-close {
-    background-position: 0px -80px;
-}
-
-#t-console .t-header span.t-clear {
-    background-position: -16px -80px;
-}
-
-#t-console .t-header span.t-small {
-    background-position: 0px -96px;
-}
-
-#t-console .t-header span.t-large {
-    background-position: -16px -96px;
-}
-
-#t-console .t-header > div, #t-console .t-main > div, #t-console .t-footer > div {
-    background-image: url(blackbird_panel.png);
-    background-repeat: no-repeat;
-}
-
-#t-console .t-header div {
-    float: left;
-    _background-color: #000;
-}
-
-#t-console .t-header div.t-left {
-    background-position: top left;
-    height: 40px;
-    _height: 16px;
-}
-
-#t-console .t-header .t-left div.t-filters {
-    margin-left: -4px;
-    padding: 16px 0 0 19px;
-    float: left;
-    _padding: 6px 8px;
-}
-
-#t-console .t-header div.t-right {
-    background-position: top right;
-    height: 40px;
-    width: 150px;
-    _width: 122px;
-    _height: 16px;
-}
-
-#t-console .t-header .t-right div.t-controls {
-    padding: 16px 24px 0 0;
-    float: right;
-    _padding: 6px 8px;
-}
-
-#t-console .t-header .t-right .t-controls span {
-    margin: 0;
-}
-
-#t-console .t-header .t-right .t-controls span.t-clear {
-    margin-right: 8px;
-}
-
-#t-console .t-main div {
-    float: left;
-}
-
-#t-console .t-main div.t-left {
-    background-position: 0 -30px;
-    width: 11px;
-    _width: 0;
-}
-
-#t-console .t-main div.t-mainBody {
-    background-position: 40% -40px;
-    _background-color: #000;
-    _filter: alpha(opacity = '93');
-}
-
-#t-console .t-main .t-mainBody ol {
-    line-height: 1.45;
-    height: 100%;
-    overflow: auto;
-    width: 100%;
-    list-style-type: none;
-    margin: 0;
-    padding: 0;
-}
-
-#t-console .t-main .t-mainBody ol li {
-    padding: 1px 4px 1px 30px;
-    border-bottom: 1px solid #333;
-    color: #CCC;
-    margin: 2px 2px;
-    _text-indent: -2px;
-}
-
-#t-console .t-main .t-mainBody ol li span {
-    background: url(blackbird_icons.png) no-repeat 0 0;
-    border: 1px solid #333;
-    height: 16px;
-    width: 16px;
-    display: block;
-    float: left;
-    margin: -2px 0 1px -25px;
-    _display: inline;
-}
-
-#t-console .t-main .t-mainBody ol li.error span {
-    background-position: 0 0;
-}
-
-#t-console .t-main .t-mainBody ol li.warn span {
-    background-position: 0 -16px;
-}
-
-#t-console .t-main .t-mainBody ol li.info span {
-    background-position: 0 -32px;
-}
-
-#t-console .t-main .t-mainBody ol li.debug span {
-    background-position: 0 -48px;
-}
-
-#t-console .t-main .t-mainBody ol li.profile span {
-    background-position: 0 -64px;
-}
-
-#t-console .t-main .t-mainBody ol li.profile {
-    color: #DDD;
-    font-style: italic;
-}
-
-#t-console .errorHidden li.error, #t-console .warnHidden li.warn, #t-console .infoHidden li.info, #t-console .debugHidden li.debug, #t-console .profileHidden li.profile {
-    display: none;
-}
-
-#t-console .t-main div.t-right {
-    background: url(blackbird_panel.png) no-repeat 100% -30px;
-    width: 17px;
-    _width: 0;
-}
-
-#t-console .t-footer div {
-    height: 50px;
-    float: left;
-    _background-color: #000;
-    _height: 30px;
-}
-
-#t-console .t-footer div.t-left {
-    background-position: bottom left;
-    _width: 100% !important;
-}
-
-#t-console .t-footer div.t-left label {
-    display: block;
-    color: #BBB;
-    margin: 8px 0 0 16px;
-    position: relative;
-    font-family: Arial, sans-serif;
-    _margin: 4px 0 0 8px;
-}
-
-#t-console .t-footer div.t-left label input {
-    padding: 0;
-    vertical-align: middle;
-}
-
-#t-console .t-footer div.t-right {
-    background-position: bottom right;
-    width: 150px;
-    _width: 0;
-}
-
-body.t-fix-ie6-background {
-    background-image: url(spacer.gif);
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird.js
deleted file mode 100644
index 386e9e4..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird.js
+++ /dev/null
@@ -1,399 +0,0 @@
-/*
- Blackbird - Open Source JavaScript Logging Utility
- Author: G Scott Olson
- Web: http://blackbirdjs.googlecode.com/
- http://www.gscottolson.com/blackbirdjs/
- Version: 1.0
-
- The MIT License - Copyright (c) 2008 Blackbird Project
-
- Heavily modified for Tapestry to rename namespace, make use of Prototype: March 2009
- */
-( function()
-{
-    var IE6_POSITION_FIXED = true; // enable IE6 {position:fixed}
-
-    var bbird, checkbox, filters, controls, size;
-    var outputList;
-    var cache = [];
-
-    var state = { pos:null, size:null, load:null };
-    var classes = {};
-    var profiler = {};
-
-    var messageTypes = { //order of these properties imply render order of filter controls
-        debug: true,  // May be set to false based on Tapestry.DEBUG_ENABLED
-        info: true,
-        warn: true,
-        error: true,
-        profile: true
-    };
-
-    function constructUI()
-    {
-        bbird = new Element("div", { 'id': 't-console', 'title': 'F2 toggles / Shift-F2 moves' }).hide();
-        var header = new Element("div", { 'class': 't-header' });
-        var left = new Element("div", { 'class' : 't-left' });
-
-        left.insert(filters = new Element("div", { 'class': 't-filters' }));
-
-        for (var type in messageTypes)
-        {
-            var className = messageTypes[type] ? type : type + "Disabled";
-
-            filters.insert(new Element("span", {'class': className, 'title': "filter by " + type, 'type': type }));
-        }
-
-        var right = new Element("div", { 'class': 't-right'});
-
-        right.insert(controls = new Element("div", { 'class': 't-controls'}));
-
-        controls.insert(size = new Element("span", { 'title': 'contract', 'op': 'resize' }));
-
-        controls.insert(new Element("span", { 'class': 't-clear', 'title': 'clear', 'op': 'clear' }));
-        controls.insert(new Element("span", { 'class': 't-close', 'title': 'close', 'op': 'close' }));
-
-        header.insert(left);
-        header.insert(right);
-
-        bbird.insert(header);
-
-        var main = new Element("div", { 'class': 't-main' });
-        main.insert(new Element("div", {'class': 't-left'}));
-
-        var mainBody = new Element("div", { 'class': 't-mainBody' });
-
-        mainBody.insert(outputList = new Element("ol"));
-
-        $A(cache).each(function(element)
-        {
-            outputList.insert(element);
-        });
-
-        cache = undefined;
-
-        main.insert(mainBody);
-        main.insert(new Element("div", { 'class': 't-right' }));
-
-        bbird.insert(main);
-
-        var footer = new Element("div", { 'class': 't-footer'});
-
-        footer.insert(left = new Element("div", { 'class': 't-left' }));
-
-        left.insert();
-
-        footer.insert(new Element("div", { 'class': 't-right' }));
-
-        bbird.insert(footer);
-
-        $(document.body).insert(bbird);
-    }
-
-    function backgroundImage()
-    { //(IE6 only) change <BODY> tag's background to resolve {position:fixed} support
-        var bodyTag = $(document.body);
-
-        if (bodyTag.currentStyle && IE6_POSITION_FIXED)
-        {
-            if (bodyTag.currentStyle.backgroundImage == 'none')
-            {
-                bodyTag.addClassName('t-fix-ie6-background');
-            }
-            if (bodyTag.currentStyle.backgroundAttachment == 'scroll')
-            {
-                bodyTag.style.backgroundAttachment = 'fixed';
-            }
-        }
-    }
-
-    function addMessage(type, content)
-    { //adds a message to the output list
-
-        content = ( content.constructor == Array ) ? content.join('') : content;
-
-        var newMsg = new Element("li", { 'class': type});
-
-        newMsg.insert(new Element("span", { 'class': 'icon'}));
-        newMsg.insert(content);
-
-        if (outputList)
-        {
-            outputList.insert(newMsg);
-
-            // If the added message is not being filtered out, then
-            // make sure it is visible to the user.
-            if (messageTypes[type] && !isVisible())
-            {
-                scrollToBottom();
-                show();
-            }
-        }
-        else
-        {
-            cache.push(newMsg);
-        }
-
-    }
-
-    function clear()
-    { //clear list output
-        outputList.update();
-    }
-
-    function clickControl(evt)
-    {
-        var el = evt.element();
-
-        if (el.tagName == 'SPAN')
-        {
-            switch (el.getAttributeNode('op').nodeValue)
-                    {
-                case 'resize': resize(); break;
-                case 'clear':  clear();  break;
-                case 'close':  hide();   break;
-            }
-        }
-    }
-
-    function clickFilter(evt)
-    { //show/hide a specific message type
-        var span = evt.element();
-
-        if (span && span.tagName == 'SPAN')
-        {
-            var type = span.readAttribute('type');
-
-            if (evt.altKey)
-            {
-                var active = 0;
-                for (var entry in messageTypes)
-                {
-                    if (messageTypes[ entry ]) active++;
-                }
-
-                var oneActiveFilter = ( active == 1 && messageTypes[ type ] );
-
-                filters.childElements().each(function (child)
-                {
-                    var childType = child.readAttribute('type');
-
-                    var enabled = oneActiveFilter || (childType == type);
-
-                    messageTypes[ childType ] = enabled;
-
-                    child.className = enabled ? childType : childType + 'Disabled';
-                });
-            }
-            else
-            {
-                messageTypes[ type ] = ! messageTypes[ type ];
-                span.className = ( messageTypes[ type ] ) ? type : type + 'Disabled';
-            }
-
-            rebuildOutputListClassName();
-
-            scrollToBottom();
-        }
-    }
-
-    function rebuildOutputListClassName()
-    {
-        //build outputList's class from messageTypes object
-        var disabledTypes = [];
-        for (type in messageTypes)
-        {
-            if (! messageTypes[ type ]) disabledTypes.push(type);
-        }
-        disabledTypes.push('');
-        outputList.className = disabledTypes.join('Hidden ');
-    }
-
-
-    function scrollToBottom()
-    { //scroll list output to the bottom
-        outputList.scrollTop = outputList.scrollHeight;
-    }
-
-    function isVisible()
-    {
-        return bbird.visible();
-    }
-
-    function hide()
-    {
-        bbird.style.display = 'none';
-    }
-
-    function show()
-    {
-        var body = $(document.body);
-
-        body.removeChild(bbird);
-        body.appendChild(bbird);
-
-        bbird.style.display = 'block';
-    }
-
-    //sets the position
-    function reposition(position)
-    {
-        if (position === undefined || position == null)
-        {
-            position = ( state && state.pos === null ) ? 1 : ( state.pos + 1 ) % 4; //set to initial position ('topRight') or move to next position
-        }
-
-        switch (position)
-                {
-            case 0: classes[ 0 ] = 'bbTopLeft'; break;
-            case 1: classes[ 0 ] = 'bbTopRight'; break;
-            case 2: classes[ 0 ] = 'bbBottomLeft'; break;
-            case 3: classes[ 0 ] = 'bbBottomRight'; break;
-        }
-        state.pos = position;
-        saveState();
-    }
-
-    function resize(big)
-    {
-        if (big === undefined || big === null)
-        {
-            big = ( state && state.size == null ) ? 0 : ( state.size + 1 ) % 2;
-        }
-
-        classes[ 1 ] = ( big === 0 ) ? 'bbSmall' : 'bbLarge'
-
-        size.title = ( big === 1 ) ? 'small' : 'large';
-        size.className = "t-" + size.title;
-
-        state.size = big;
-
-        saveState();
-        scrollToBottom();
-    }
-
-    function saveState()
-    {
-        var newClass = [];
-        for (word in classes)
-        {
-            newClass.push(classes[ word ]);
-        }
-        bbird.className = newClass.join(' ');
-    }
-
-    //event handler for 'keyup' event for window
-    function readKey(evt)
-    {
-        var code = 113; //F2 key
-
-        if (evt && evt.keyCode == code)
-        {
-
-            var visible = isVisible();
-
-            if (visible && evt.shiftKey && evt.altKey) clear();
-            else if (visible && evt.shiftKey) reposition();
-            else if (!evt.shiftKey && !evt.altKey)
-                {
-                    ( visible ) ? hide() : show();
-                }
-        }
-    }
-
-
-    Tapestry.Logging = {
-        toggle:
-                function()
-                {
-                    ( isVisible() ) ? hide() : show();
-                },
-        hide:
-                function()
-                {
-                    hide();
-                },
-        resize:
-                function()
-                {
-                    resize();
-                },
-        clear:
-                function()
-                {
-                    clear();
-                },
-        move:
-                function()
-                {
-                    reposition();
-                },
-        debug:
-                function(msg)
-                {
-                    addMessage('debug', msg);
-                },
-        warn:
-                function(msg)
-                {
-                    addMessage('warn', msg);
-                },
-        info:
-                function(msg)
-                {
-                    addMessage('info', msg);
-                },
-        error:
-                function(msg)
-                {
-                    addMessage('error', msg);
-                },
-        profile:
-                function(label)
-                {
-                    var currentTime = new Date(); //record the current time when profile() is executed
-
-                    if (label == undefined || label == '')
-                    {
-                        addMessage('error', '<b>ERROR:</b> Please specify a label for your profile statement');
-                    }
-                    else if (profiler[ label ])
-                    {
-                        addMessage('profile', [ label, ': ', currentTime - profiler[ label ],    'ms' ].join(''));
-                        delete profiler[ label ];
-                    }
-                    else
-                    {
-                        profiler[ label ] = currentTime;
-                        addMessage('profile', label);
-                    }
-                    return currentTime;
-                }
-    }
-
-    Tapestry.onDOMLoaded(
-        /* initialize Blackbird when the page loads */
-            function()
-            {
-                messageTypes.debug = Tapestry.DEBUG_ENABLED;
-
-                constructUI();
-
-                rebuildOutputListClassName();
-
-                backgroundImage();
-
-                filters.observe("click", clickFilter.bindAsEventListener());
-                controls.observe("click", clickControl.bindAsEventListener());
-
-                document.observe("keyup", readKey.bindAsEventListener());
-
-                resize(state.size);
-                reposition(state.pos);              
-
-                scrollToBottom();
-
-                // The original Blackbird code would unregister the events, but I believe that's not
-                // necessary due to Prototype.
-            }.bind(this));
-})();
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird_icons.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird_icons.png
deleted file mode 100644
index f39bf62..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird_icons.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird_panel.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird_panel.png
deleted file mode 100644
index a8e4aef..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/blackbird_panel.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/spacer.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/spacer.gif
deleted file mode 100644
index 1ef86d5..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/blackbird_1_0/spacer.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/base/BaseStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/base/BaseStrings.properties
deleted file mode 100644
index 53ccbc3..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/base/BaseStrings.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-null-value-in-path=Property '%s' contains a null value in the path.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/AjaxFormLoop.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/AjaxFormLoop.tml
deleted file mode 100644
index 1900276..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/AjaxFormLoop.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:formfragment t:id="fragment" element="prop:element" visible="true">
-        <t:delegate to="block:ajaxResponse"/>
-    </t:formfragment>
-
-    <t:block id="tail">
-        <t:forminjector element="prop:element" t:id="rowInjector" show="inherit:show" context="inherit:context">
-            <t:delegate to="prop:addRow"/>
-            <t:block id="defaultAddRow">
-                <t:addrowlink>Add row</t:addrowlink>
-            </t:block>
-        </t:forminjector>
-
-        <t:block id="ajaxResponse">
-            <t:delegate to="beforeBody"/>
-            <t:body/>
-            <t:delegate to="afterBody"/>
-        </t:block>
-    </t:block>
-</t:container>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanDisplay.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanDisplay.tml
deleted file mode 100644
index 56b17a0..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanDisplay.tml
+++ /dev/null
@@ -1,15 +0,0 @@
-<dl class="t-beandisplay" xml:space="default"
-    xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:loop t:source="model.propertyNames" t:volatile="true" t:value="propertyName">
-
-        <dt class="${propertyClass}">${propertyModel.label}</dt>
-
-        <dd t:type="any" t:mixins="NotEmpty" class="${propertyClass}">
-            <t:propertydisplay model="propertyModel" overrides="overrides" object="object"/>
-        </dd>
-    </t:loop>
-</dl>
-        
-
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm.properties
deleted file mode 100644
index 29a6bc1..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2007, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Create/Update
-cancel-label=Cancel
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm.tml
deleted file mode 100644
index 1183b62..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<form t:id="form" validate="object"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <t:errors/>
-
-    <div class="t-beaneditor">
-
-        <t:beaneditor t:id="editor" object="object" model="model" overrides="this"/>
-
-        <div class="t-beaneditor-row">
-            <input type="submit" class="t-beaneditor-submit" value="${submitLabel}"/>
-            <t:if test="cancel">
-              <t:submit t:id="cancel" mode="cancel" value="message:cancel-label"/>
-            </t:if>
-        </div>
-    </div>
-
-</form>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_bg.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_bg.properties
deleted file mode 100644
index 28ae14c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_bg.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Създай/Промени
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_da.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_da.properties
deleted file mode 100644
index ef5fc22..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_da.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Opret/Opdatér
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_de.properties
deleted file mode 100644
index 50549a9..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_de.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Anlegen/Ändern
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_el.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_el.properties
deleted file mode 100644
index ca5d650..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_el.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=\u0394\u03b7\u03bc\u03b9\u03bf\u03c5\u03c1\u03b3\u03af\u03b1/\u0395\u03bd\u03b7\u03bc\u03ad\u03c1\u03c9\u03c3\u03b7
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_es.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_es.properties
deleted file mode 100755
index 8cbf595..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_es.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Crear/Actualizar
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_fi_FI.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_fi_FI.properties
deleted file mode 100644
index cb3054d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_fi_FI.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Tallenna
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_fr_FR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_fr_FR.properties
deleted file mode 100644
index 7e36fdd..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_fr_FR.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Créer/Mettre à jour
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_hr.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_hr.properties
deleted file mode 100644
index 75b8506..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_hr.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Spremi
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_ja.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_ja.properties
deleted file mode 100644
index 73f2561..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_ja.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=\u4f5c\u6210/\u66f4\u65b0
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_no_NB.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_no_NB.properties
deleted file mode 100644
index 687f8fc..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_no_NB.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Opprett/Oppdater
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_pt_BR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_pt_BR.properties
deleted file mode 100644
index 8d1800c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_pt_BR.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Criar/Atualizar
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_ru.properties
deleted file mode 100644
index bd12484..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_ru.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Создать/Изменить
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_sv_SE.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_sv_SE.properties
deleted file mode 100644
index 56ebe50..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditForm_sv_SE.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-submit-label=Skapa/Uppdatera
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditor.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditor.tml
deleted file mode 100644
index 9b6b4a7..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/BeanEditor.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<div xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="default"
-     class="t-beaneditor-row" t:type="loop" t:source="model.propertyNames"
-     t:volatile="true" t:value="propertyName">
-    <t:propertyEditor property="propertyName" object="object"
-                      model="model" overrides="overrides"/>
-</div>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField.properties
deleted file mode 100644
index d1f326f..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-date-value-not-parseable=Date value '%s' is not parseable.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_de.properties
deleted file mode 100644
index 27c7282..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_de.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-date-value-not-parseable=Datumswert '%s' kann nicht geparst werden.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_it.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_it.properties
deleted file mode 100644
index 015459c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_it.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-date-value-not-parseable=Il valore '%s' non è una data accettabile.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_ru.properties
deleted file mode 100644
index 7af4f0e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/DateField_ru.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-date-value-not-parseable='%s' недействительная дата.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors.properties
deleted file mode 100644
index 016b3d8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=You must correct the following errors before you may continue.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_bg.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_bg.properties
deleted file mode 100644
index 144e557..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_bg.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Трябва да поправите следните грешки преди да продължите.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_da.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_da.properties
deleted file mode 100644
index 2271486..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_da.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Du skal rette føgende fejl før du kan fortsætte:
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_de.properties
deleted file mode 100644
index c25df9a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_de.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Sie müssen folgende Fehler beheben, bevor Sie fortfahren können.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_el.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_el.properties
deleted file mode 100644
index 41e9b2a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_el.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b4\u03b9\u03bf\u03c1\u03b8\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03b1 \u03b1\u03ba\u03cc\u03bb\u03bf\u03c5\u03b8\u03b1 \u03c3\u03c6\u03ac\u03bb\u03bc\u03b1\u03c4\u03b1.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_es.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_es.properties
deleted file mode 100755
index 3eb166c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_es.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Debe corregir los siguientes errores antes de que pueda continuar.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fi_FI.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fi_FI.properties
deleted file mode 100644
index b49611b..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fi_FI.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Korjaa seuraavat virheet ja yrit\u00E4 uudelleen.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr_FR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr_FR.properties
deleted file mode 100644
index fdd1f91..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_fr_FR.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Vous devez corriger ces erreurs avant de poursuivre.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_hr.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_hr.properties
deleted file mode 100644
index fe032f1..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_hr.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Morate ispraviti slijdeæe greške prije nastavka.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_it.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_it.properties
deleted file mode 100644
index a81e384..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_it.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Per poter proseguire è necessario correggere gli errori seguenti.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_ja.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_ja.properties
deleted file mode 100644
index 6d35f91..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_ja.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=\u5148\u3078\u9032\u3080\u305f\u3081\u306b\u306f\u4ee5\u4e0b\u306e\u8aa4\u308a\u3092\u8a02\u6b63\u3059\u308b\u5fc5\u8981\u304c\u3042\u308a\u307e\u3059\u3002
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_no_NB.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_no_NB.properties
deleted file mode 100644
index 4144f56..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_no_NB.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Du må rette de følgende feilene før du kan fortsette
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_pt_BR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_pt_BR.properties
deleted file mode 100644
index 42665be..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_pt_BR.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Você deve corrigir os seguintes erros antes de continuar.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_pt_PT.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_pt_PT.properties
deleted file mode 100644
index d8f5575..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_pt_PT.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Tem de corrigir os seguintes erros antes de prosseguir.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_ru.properties
deleted file mode 100644
index 61f3941..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_ru.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Вы должны исправить следующие ошибки прежде, чем продолжить.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_sv_SE.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_sv_SE.properties
deleted file mode 100644
index 6580441..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_sv_SE.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner=Du m\u00E5ste r\u00E4tta f\u00F6ljande fel innan du kan forts\u00E4tta.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_zh_CN.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_zh_CN.properties
deleted file mode 100644
index 0348e3e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Errors_zh_CN.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-default-banner = \u5728\u4F60\u7EE7\u7EED\u4E4B\u524D\uFF0C\u5FC5\u987B\u7EA0\u6B63\u5982\u4E0B\u9519\u8BEF.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ExceptionDisplay.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ExceptionDisplay.tml
deleted file mode 100644
index 5efeadc..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ExceptionDisplay.tml
+++ /dev/null
@@ -1,36 +0,0 @@
-<div xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" class="t-exception-report">
-    <ul>
-        <t:loop source="stack" value="info">
-            <li>
-                <span class="t-exception-class-name">${info.className}</span>
-
-                <div t:type="if" test="info.message" class="t-exception-message">${info.message}</div>
-
-                <dl t:type="if" test="showPropertyList">
-                    <t:loop source="info.propertyNames" value="propertyName">
-                        <dt>${propertyName}</dt>
-                        <dd>
-                            <t:renderobject object="propertyValue"/>
-                        </dd>
-                    </t:loop>
-                    <t:if test="info.stackTrace">
-                        <dt>
-                            <span class="t-exception-stack-controls">
-                                <input type="checkbox" id="${toggleId}" checked="checked"/>
-                                <label for="${toggleId}">Hide uninteresting stack frames</label>
-                            </span>
-                            Stack trace
-                        </dt>
-                        <dd>
-                            <ul class="t-stack-trace">
-                                <li t:type="loop" source="info.stackTrace" value="frame" class="${frameClass}">
-                                    ${frame}
-                                </li>
-                            </ul>
-                        </dd>
-                    </t:if>
-                </dl>
-            </li>
-        </t:loop>
-    </ul>
-</div>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Form.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Form.properties
deleted file mode 100644
index 54dc2bd..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Form.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-invalid-request=Forms require that the request method be POST and that the %s query parameter have values.
-nesting-not-allowed=Form components may not be placed inside other Form components.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Grid.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Grid.properties
deleted file mode 100644
index 56e83ed..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Grid.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-no-grid-data-to-display=There is no data to display.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Grid.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Grid.tml
deleted file mode 100644
index b1ba0ff..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Grid.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<div class="t-data-grid" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <div t:id="pagerTop"/>
-
-    <table t:id="table">
-        <thead t:id="columns"/>
-        <tbody>
-            <tr t:id="rows"/>
-        </tbody>
-    </table>
-
-    <div t:id="pagerBottom"/>
-
-    <t:block>
-        <div t:id="pager"/>
-    </t:block>
-
-    <t:block id="empty">${message:no-grid-data-to-display}</t:block>
-
-</div>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns.properties
deleted file mode 100644
index b8f0636..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Asc]
-descending=[Desc]
-sortable=[Sortable]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns.tml
deleted file mode 100644
index 4111bac..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns.tml
+++ /dev/null
@@ -1,16 +0,0 @@
-<thead xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="default">
-    <tr>
-        <th t:type="Loop" source="columnNames" value="columnName" formstate="none" class="prop:headerClass"
-            index="index">
-            <t:delegate to="blockForColumn"/>
-            <t:block id="standardHeader">
-                <a t:id="sort">${columnModel.label}</a>
-                <t:if test="columnModel.sortable">
-                    <a t:id="sort2">
-                        <img src="${icon}" class="t-sort-icon" alt="${iconLabel}"/>
-                    </a>
-                </t:if>
-            </t:block>
-        </th>
-    </tr>
-</thead>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_bg.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_bg.properties
deleted file mode 100644
index c6ace3e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_bg.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Нарастващ]
-descending=[Намаляващ]
-sortable=[Подредим]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_da.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_da.properties
deleted file mode 100644
index 77cdaed..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_da.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Stigende]
-descending=[Faldende]
-sortable=[Sortérbar]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_de.properties
deleted file mode 100644
index 255ef22..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_de.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[aufw.]
-descending=[abw.]
-sortable=[sortierbar]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_el.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_el.properties
deleted file mode 100644
index 657d6b5..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_el.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[\u0391\u03c5\u03be]
-descending=[\u03a6\u03b8\u03b7\u03bd]
-sortable=[\u03a4\u03b1\u03be\u03b9\u03bd\u03cc\u03bc\u03b7\u03c3\u03b7]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_es.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_es.properties
deleted file mode 100644
index aa5fcd2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_es.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Asc]
-descending=[Desc]
-sortable=[Ordenable]
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_fi_FI.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_fi_FI.properties
deleted file mode 100644
index 90a1318..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_fi_FI.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Nouseva]
-descending=[Laskeva]
-sortable=[J\u00E4rjestett\u00E4v\u00E4]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_fr_FR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_fr_FR.properties
deleted file mode 100644
index 85461a1..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_fr_FR.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Asc]
-descending=[Desc]
-sortable=[Triable]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_hr.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_hr.properties
deleted file mode 100644
index 311b252..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_hr.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Uzlazno]
-descending=[Silazno]
-sortable=[Rasporedivo]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_ja.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_ja.properties
deleted file mode 100644
index cc67f7d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_ja.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[\u6607\u9806]
-descending=[\u964d\u9806]
-sortable=[\u4e26\u3079\u66ff\u3048]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_no_NB.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_no_NB.properties
deleted file mode 100644
index 9c11945..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_no_NB.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Økende]
-descending=[Synkende]
-sortable=[Sorterbar]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_pt_BR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_pt_BR.properties
deleted file mode 100644
index aea6707..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_pt_BR.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[Ascendente]
-descending=[Descendente]
-sortable=[Ordenável]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_ru.properties
deleted file mode 100644
index 764f1a1..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_ru.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=[По возрастанию]
-descending=[По убыванию]
-sortable=[Упорядочить]
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_sv_SE.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_sv_SE.properties
deleted file mode 100644
index 6667c79..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridColumns_sv_SE.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-ascending=Stigande ordning
-descending=Fallande ordning
-sortable=Sorterbar
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager.properties
deleted file mode 100644
index 4934c67..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Go to page %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_bg.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_bg.properties
deleted file mode 100644
index 5861f02..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_bg.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Към страница %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_da.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_da.properties
deleted file mode 100644
index b331eaa..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_da.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Gå til side %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_de.properties
deleted file mode 100644
index 3320623..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_de.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Gehe zu Seite %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_el.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_el.properties
deleted file mode 100644
index cc2eba7..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_el.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=\u03a3\u03b5\u03bb\u03af\u03b4\u03b1 %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_es.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_es.properties
deleted file mode 100755
index def2b0e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_es.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Ir a la p\u00e1gina %d
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_fi_FI.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_fi_FI.properties
deleted file mode 100644
index 93672f8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_fi_FI.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Siirry sivulle %d
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_fr_FR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_fr_FR.properties
deleted file mode 100644
index e27c080..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_fr_FR.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Aller page %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_hr.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_hr.properties
deleted file mode 100644
index 1fa967a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_hr.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Prijeði na stranicu %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_ja.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_ja.properties
deleted file mode 100644
index 40a5f4c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_ja.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=%d\u30da\u30fc\u30b8\u76ee\u3078
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_no_NB.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_no_NB.properties
deleted file mode 100644
index b58c21c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_no_NB.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Gå til side %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_pt_BR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_pt_BR.properties
deleted file mode 100644
index 4807144..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_pt_BR.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Ir para a página %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_ru.properties
deleted file mode 100644
index e07054a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_ru.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=На страницу %d
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_sv_SE.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_sv_SE.properties
deleted file mode 100644
index 5e3ff0e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridPager_sv_SE.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-goto-page=Navigera till sida %d
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridRows.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridRows.tml
deleted file mode 100644
index f4ece15..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/GridRows.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<tr class="${rowClass}" xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <t:loop source="propertyNames" value="propertyName" index="columnIndex" formstate="none">
-        <td class="${cellClass}" t:type="any" t:mixins="NotEmpty">
-            <t:gridcell model="columnModel" object="row" overrides="overrides"/>
-        </td>
-    </t:loop>
-</tr>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette.properties
deleted file mode 100644
index 88eddd8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Available
-selected-label=Selected
-
-select-label=Select >
-deselect-label=< Deselect
-up-label=Move Up
-down-label=Move Down
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette.tml
deleted file mode 100644
index 11d9cbd..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette.tml
+++ /dev/null
@@ -1,31 +0,0 @@
-<div class="t-palette" xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <div class="t-palette-available">
-        <div class="t-palette-title">
-            <t:delegate to="availableLabel"/>
-        </div>
-        <t:delegate to="availableRenderer"/>
-    </div>
-    <div class="t-palette-controls">
-        <button id="${clientId}-select" disabled="disabled">
-            <img src="${select}" alt="${message:select-label}"/>
-        </button>
-        <button id="${clientId}-deselect" disabled="disabled">
-            <img src="${deselect}" alt="${message:deselect-label}"/>
-        </button>
-        <t:if test="reorder">
-            <button id="${clientId}-up" disabled="disabled">
-                <img src="${moveUp}" alt="${message:up-label}"/>
-            </button>
-            <button id="${clientId}-down" disabled="disabled">
-                <img src="${moveDown}" alt="${message:down-label}"/>
-            </button>
-        </t:if>
-    </div>
-    <div class="t-palette-selected">
-        <div class="t-palette-title">
-            <t:delegate to="selectedLabel"/>
-        </div>
-        <t:delegate to="selectedRenderer"/>
-    </div>
-    <div class="t-palette-spacer"/>
-</div>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_bg.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_bg.properties
deleted file mode 100644
index 878a1cd..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_bg.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Налични
-selected-label=Избрани
-
-select-label=Избери >
-deselect-label=< Махни
-up-label=Нагоре
-down-label=Надолу
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_da.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_da.properties
deleted file mode 100644
index 4a56f4b..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_da.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Tilgængelige
-selected-label=Valgte
-
-select-label=Vælg >
-deselect-label=< Fravælg
-up-label=Flyt Op
-down-label=Flyt Ned
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_de.properties
deleted file mode 100644
index b5473b8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_de.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Verfügbar
-selected-label=Ausgewählt
-
-select-label=Auswählen >
-deselect-label=< Abwählen
-up-label=Aufwärts
-down-label=Abwärts
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_el.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_el.properties
deleted file mode 100644
index fa97e71..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_el.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=\u0394\u03b9\u03b1\u03b8\u03ad\u03c3\u03b9\u03bc\u03b1
-selected-label=\u0395\u03c0\u03b9\u03bb\u03b5\u03b3\u03bc\u03ad\u03bd\u03b1
-
-select-label=\u0395\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae >
-deselect-label=< \u0391\u03c0\u03bf\u03b5\u03c0\u03b9\u03bb\u03bf\u03b3\u03ae
-up-label=\u03a0\u03ac\u03bd\u03c9
-down-label=\u039a\u03ac\u03c4\u03c9
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_es.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_es.properties
deleted file mode 100755
index 9db3bd9..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_es.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Disponible
-selected-label=Seleccionado
-
-select-label=Seleccionar >
-deselect-label=< Deseleccionar
-up-label=Mover arriba
-down-label=Mover abajo
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_fi_FI.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_fi_FI.properties
deleted file mode 100644
index 1596f3c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_fi_FI.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Vaihtoehdot
-selected-label=Valitut
-
-select-label=Valitse >
-deselect-label=< Peruuta valinta
-up-label=Siirr\u00E4 yl\u00F6s
-down-label=Siirr\u00E4 alas
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_fr_FR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_fr_FR.properties
deleted file mode 100644
index 3113abd..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_fr_FR.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Disponible
-selected-label=Sélectionné
-
-select-label=Sélectionner >
-deselect-label=< Déselectionner
-up-label=Monter
-down-label=Descendre
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_hr.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_hr.properties
deleted file mode 100644
index 7d43a5c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_hr.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Dostupno
-selected-label=Odabrano
-
-select-label=Odaberi >
-deselect-label=< Vrati
-up-label=Pomjeri gore
-down-label=Pomjeri dolje
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_ja.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_ja.properties
deleted file mode 100644
index 286703f..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_ja.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=\u672a\u9078\u629e
-selected-label=\u9078\u629e\u6e08
-
-select-label=\u9078\u629e >
-deselect-label=< \u9078\u629e\u89e3\u9664
-up-label=\u4e0a\u3078
-down-label=\u4e0b\u3078
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_no_NB.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_no_NB.properties
deleted file mode 100644
index 08ba1cc..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_no_NB.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Tilgjengelige
-selected-label=Valgte
-
-select-label=Velg >
-deselect-label=< Fjern valg
-up-label=Flytt opp
-down-label=Flytt ned
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_pt_BR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_pt_BR.properties
deleted file mode 100644
index ccf54b1..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_pt_BR.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Disponíveis
-selected-label=Selecionados
-
-select-label=Selecionar >
-deselect-label=< Remover
-up-label=Para cima
-down-label=Para baixo
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_ru.properties
deleted file mode 100644
index 0731791..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_ru.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Существующие
-selected-label=Выбранные
-
-select-label=Выбрать >
-deselect-label=< Удалить
-up-label=Вверх
-down-label=Вниз
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_sv_SE.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_sv_SE.properties
deleted file mode 100644
index af016a1..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/Palette_sv_SE.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-available-label=Tillg\u00E4ngliga
-selected-label=Valda
-
-select-label=V\u00E4lj >
-deselect-label=< V\u00E4lj bort
-up-label=Flytta upp
-down-label=Flytta ner
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.js
deleted file mode 100644
index 9f5df69..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.js
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.Initializer.progressiveDisplay = function(spec)
-{
-    var mgr = new Tapestry.ZoneManager(spec);
-
-    mgr.updateFromURL.bind(mgr).defer(spec.url);
-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.properties
deleted file mode 100644
index 63b798d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.properties
+++ /dev/null
@@ -1 +0,0 @@
-progressive-display-loading=Loading ...
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.tml
deleted file mode 100644
index 109ecb4..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/ProgressiveDisplay.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-             xmlns:p="tapestry:parameter">
-    <t:block id="defaultInitial">
-        <div class="t-loading">${message:progressive-display-loading}</div>
-    </t:block>
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/PropertyEditor.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/PropertyEditor.properties
deleted file mode 100644
index a5aeb36..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/PropertyEditor.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-block-error=Unable to locate a block to edit property '%s' (with data type '%s') of object %s: %s
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/datefield.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/datefield.gif
deleted file mode 100644
index 8526cf5..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/datefield.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/datefield.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/datefield.js
deleted file mode 100644
index 0d11863..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/datefield.js
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.DateField = Class.create( {
-
-	// Initializes a DateField from a JSON specification.
-
-	initialize : function(spec) {
-		this.field = $(spec.field);
-		this.trigger = $(spec.field + "-trigger");
-		this.parseURL = spec.parseURL;
-		this.formatURL = spec.formatURL;
-
-		this.trigger.observe("click", this.triggerClicked.bind(this));
-
-		this.popup = null;
-	},
-
-	triggerClicked : function() {
-		if (this.field.disabled)
-			return;
-
-		if (this.popup == null) {
-			this.createPopup();
-
-		} else {
-			if (this.popup.visible()) {
-				this.hidePopup();
-				return;
-			}
-		}
-
-		var value = $F(this.field).escapeHTML();
-
-		if (value == "") {
-			this.datePicker.setDate(null);
-
-			this.positionPopup();
-
-			this.revealPopup();
-
-			return;
-		}
-
-		var resultHandler = function(result) {
-			var date = new Date();
-
-			date.setTime(result);
-
-			this.datePicker.setDate(date);
-
-			this.positionPopup();
-
-			this.revealPopup();
-		};
-
-		var errorHandler = function(message) {
-			this.field.showValidationMessage(message);
-			this.field.activate();
-		};
-
-		this.sendServerRequest(this.parseURL, value, resultHandler,
-				errorHandler);
-	},
-
-	sendServerRequest : function(url, input, resultHandler, errorHandler) {
-		var successHandler = function(response) {
-			var json = response.responseJSON;
-
-			var result = json.result;
-
-			if (result) {
-				resultHandler.call(this, result);
-				return;
-			}
-
-			errorHandler.call(this, json.error);
-		}.bind(this);
-
-		Tapestry.ajaxRequest(url, {
-			method : 'get',
-			parameters : {
-				input : input
-			},
-			onSuccess : successHandler
-		});
-	},
-
-	createPopup : function() {
-		this.datePicker = new DatePicker();
-
-		this.datePicker.setFirstWeekDay(this.firstDay);
-
-		this.popup = $(this.datePicker.create());
-
-		this.field.insert( {
-			after : this.popup
-		});
-
-		this.popup.absolutize().hide();
-
-		this.datePicker.onselect = function() {
-			var date = this.datePicker.getDate();
-
-			var resultHandler = function(result) {
-				this.field.value = result;
-
-				this.hidePopup();
-
-				new Effect.Highlight(this.field);
-			};
-
-			var errorHandler = function(message) {
-				this.field.showValidationMessage(message);
-				this.field.activate();
-
-				this.hidePopup();
-			};
-
-			// If the field is blank, don't bother going to the server to parse!
-
-			if (date == null) {
-				resultHandler.call(this, "");
-				return;
-			}
-
-			this.sendServerRequest(this.formatURL, date.getTime(),
-					resultHandler, errorHandler);
-		}.bind(this);
-	},
-
-	positionPopup : function() {
-		// The field may be a hidden field, in which csae, position the popup
-		// based on the trigger, not
-		// the hidden.
-
-		var reference = this.field.type == "text" ? this.field : this.trigger;
-
-		this.popup.clonePosition(reference, {
-			offsetTop : reference.getHeight() + 2
-		}).setStyle( {
-			width : "",
-			height : ""
-		});
-	},
-
-	/** Duration, in seconds, used when fading the popup in or out. */
-
-	FADE_DURATION : .20,
-
-	hidePopup : function() {
-		new Effect.Fade(this.popup, {
-			duration : this.FADE_DURATION
-		});
-	},
-
-	revealPopup : function() {
-
-		// Only show one DateField popup at a time.
-
-	if (Tapestry.DateField.activeDateField != undefined
-			&& Tapestry.DateField.activeDateField != this) {
-		Tapestry.DateField.activeDateField.hidePopup();
-	}
-
-	new Effect.Appear(this.popup, {
-		duration : this.FADE_DURATION
-	});
-
-	Tapestry.DateField.activeDateField = this;
-}
-});
-
-Tapestry.DateField.localized = false;
-
-Tapestry.DateField.initLocalization = function(localization) {
-	DatePicker.months = localization.months;
-	DatePicker.days = localization.days.toArray();
-
-	Tapestry.DateField.prototype.firstDay = localization.firstDay;
-};
-
-Tapestry.Initializer.dateField = function(spec) {
-	new Tapestry.DateField(spec);
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/deselect.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/deselect.png
deleted file mode 100644
index 97473a6..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/deselect.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/exceptiondisplay.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/exceptiondisplay.js
deleted file mode 100644
index fb11bc9..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/exceptiondisplay.js
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.stackFrameToggle = function(id)
-{
-    var checkbox = $(id);
-
-    checkbox.observe("click", function()
-    {
-        var newDisplay = checkbox.checked ? "none" : "list-item";
-
-        $$("LI.t-omitted-frame").each(function(e)
-        {
-            e.style.display = newDisplay;
-            e.style.listStyleType = "square";
-        });
-    });
-}
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/move_down.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/move_down.png
deleted file mode 100644
index 1f5c72a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/move_down.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/move_up.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/move_up.png
deleted file mode 100644
index 05a447b..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/move_up.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/palette.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/palette.js
deleted file mode 100644
index 45f58ac..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/palette.js
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.Palette = Class.create({
-
-    // id: of main select element                                                                                                 ˜
-    // reorder: true to enable extra controls for changing selection order
-    // naturalOrder: array of values, the proper order for the elements (needed when de-selecting items)
-    initialize : function(id, reorder, naturalOrder)
-    {
-        this.reorder = reorder;
-        // The SELECT elements
-
-        this.avail = $(id + "-avail");
-        this.selected = $(id);
-
-        this.hidden = $(id + "-values");
-
-        // The BUTTON elements
-        this.select = $(id + "-select");
-        this.deselect = $(id + "-deselect");
-
-        if (this.reorder)
-        {
-            this.up = $(id + "-up");
-            this.down = $(id + "-down");
-        }
-
-        this.valueToOrderIndex = {};
-
-        naturalOrder.each(function (value, i)
-        {
-            this.valueToOrderIndex[value] = i;
-        }.bind(this));
-
-        this.bindEvents();
-    },
-
-    bindEvents : function()
-    {
-        var updateButtons = this.updateButtons.bindAsEventListener(this);
-        this.avail.observe("change", updateButtons);
-        this.selected.observe("change", updateButtons);
-
-        var selectClicked = this.selectClicked.bindAsEventListener(this);
-        this.select.observe("click", selectClicked);
-        this.avail.observe("dblclick", selectClicked);
-
-        var deselectClicked = this.deselectClicked.bindAsEventListener(this);
-        this.deselect.observe("click", deselectClicked);
-        this.selected.observe("dblclick", deselectClicked);
-
-        if (this.reorder)
-        {
-            this.up.observe("click", this.moveUpClicked.bindAsEventListener(this));
-            this.down.observe("click", this.moveDownClicked.bindAsEventListener(this));
-        }
-    },
-
-    updateButtons: function()
-    {
-        this.select.disabled = this.avail.selectedIndex < 0;
-
-        var nothingSelected = this.selected.selectedIndex < 0;
-
-        this.deselect.disabled = nothingSelected;
-
-        if (this.reorder)
-        {
-            this.up.disabled = nothingSelected || this.allSelectionsAtTop();
-            this.down.disabled = nothingSelected || this.allSelectionsAtBottom();
-        }
-    },
-
-    indexOfLastSelection : function(select)
-    {
-        if (select.selectedIndex < 0) return -1;
-
-        for (var i = select.options.length - 1; i >= select.selectedIndex; i--)
-        {
-            if (select.options[i].selected) return i;
-        }
-
-        return -1;
-    },
-
-    allSelectionsAtTop: function()
-    {
-        var last = this.indexOfLastSelection(this.selected);
-        var options = $A(this.selected.options);
-
-        return ! options.slice(0, last).any(function (o)
-        {
-            return ! o.selected;
-        });
-    },
-
-    allSelectionsAtBottom : function()
-    {
-        var options = $A(this.selected.options);
-
-        // Make sure that all elements from the (first) selectedIndex to the end are also selected.
-        return options.slice(this.selected.selectedIndex).all(function(o)
-        {
-            return o.selected;
-        });
-    },
-
-    selectClicked : function(event)
-    {
-        this.transferOptions(this.avail, this.selected, this.reorder);
-
-        Event.stop(event);
-    },
-
-    deselectClicked : function(event)
-    {
-        this.transferOptions(this.selected, this.avail, false);
-
-        Event.stop(event);
-    },
-
-    transferOptions : function (from, to, atEnd)
-    {
-        // don't bother moving the options if nothing is selected. this can happen
-        // if you double-click a disabled option
-        if (from.selectedIndex == -1)
-            return;
-
-        // from: SELECT to move option(s) from (those that are selected)
-        // to: SELECT to add option(s) to
-        // atEnd : if true, add at end, otherwise by natural sort order
-        var toOptions = $A(to.options);
-
-        toOptions.each(function(option)
-        {
-            option.selected = false;
-        });
-
-        var movers = this.removeSelectedOptions(from);
-        this.moveOptions(movers, to, atEnd);
-
-    },
-
-    updateHidden : function()
-    {
-        // Every value in the selected list (whether enabled or not) is combined to form the value.
-        var values = $A(this.selected).map(function(o)
-        {
-            return o.value;
-        });
-
-        this.hidden.value = Object.toJSON(values);
-    },
-
-    moveUpClicked : function(event)
-    {
-        var pos = this.selected.selectedIndex - 1;
-        var movers = this.removeSelectedOptions(this.selected);
-
-        var before = pos < 0 ? this.selected.options[0] : this.selected.options[pos];
-
-        this.reorderSelected(movers, before);
-
-        Event.stop(event);
-    },
-
-    removeSelectedOptions : function(select)
-    {
-        var movers = [];
-        var options = select.options;
-
-        for (var i = select.selectedIndex; i < select.length; i++)
-        {
-            var option = options[i];
-            if (option.selected)
-            {
-                select.remove(i--);
-                movers.push(option);
-            }
-        }
-
-        return movers;
-    },
-
-    moveOptions : function(movers, to, atEnd)
-    {
-
-        movers.each(function(option)
-        {
-            this.moveOption(option, to, atEnd);
-        }.bind(this));
-
-        this.updateHidden();
-        this.updateButtons();
-    },
-
-    moveOption : function(option, to, atEnd)
-    {
-        var before = null;
-
-        if (!atEnd)
-        {
-            var optionOrder = this.valueToOrderIndex[option.value];
-            var candidate = $A(to.options).find(function (o)
-            {
-                return this.valueToOrderIndex[o.value] > optionOrder;
-            }.bind(this));
-            if (candidate) before = candidate;
-        }
-        this.addOption(to, option, before);
-    },
-
-    addOption : function(to, option, before)
-    {
-        try
-        {
-            to.add(option, before);
-        }
-        catch (ex)
-        {
-            //probably IE complaining about type mismatch for before argument;
-            if (before == null)
-            {
-                //just add to the end...
-                to.add(option);
-            }
-            else
-            {
-                //use option index property...
-                to.add(option, before.index);
-            }
-        }
-
-    },
-
-    moveDownClicked : function(event)
-    {
-        var lastSelected = $A(this.selected.options).reverse(true).find(function (option)
-        {
-            return option.selected;
-        });
-        var lastPos = lastSelected.index;
-        var before = this.selected.options[lastPos + 2];
-
-        // TODO: needs to be "reorder options"
-        this.reorderSelected(this.removeSelectedOptions(this.selected), before);
-
-        Event.stop(event);
-    },
-
-    reorderSelected : function(movers, before)
-    {
-        movers.each(function(option)
-        {
-            this.addOption(this.selected, option, before);
-        }.bind(this));
-
-        this.updateHidden();
-        this.updateButtons();
-    }
-});
-
-
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/select.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/select.png
deleted file mode 100644
index 78c78a4..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/select.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sort-asc.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sort-asc.png
deleted file mode 100644
index 8a539c5..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sort-asc.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sort-desc.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sort-desc.png
deleted file mode 100644
index b150dbb..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sort-desc.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sortable.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sortable.png
deleted file mode 100644
index 1e301ee..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/components/sortable.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/internal/InternalStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/internal/InternalStrings.properties
deleted file mode 100644
index 88323e4..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/internal/InternalStrings.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2006, 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-component-action-not-serializable=Error serializing component action for component %s: %s
-enclose-errors-in-form=The Errors component must be enclosed by a Form component.
-failure-instantitating-object=Exception instantiating instance of %s (for component '%s'): %s
-conflicting-encoding-type=Encoding type of form has already been set to '%s' and may not be changed to '%s'.
-to-client-should-return-string=Return value from 'parseClient' event handler method must be a string.
-form-field-outside-form=The %s component must be enclosed by a Form component.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/mixins/autocomplete.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/mixins/autocomplete.js
deleted file mode 100644
index ba8dd50..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/mixins/autocomplete.js
+++ /dev/null
@@ -1,18 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.Initializer.autocompleter = function(spec)
-{
-    $T(spec.elementId).autocompleter = new Ajax.Autocompleter(spec.elementId, spec.menuId, spec.url, spec.config);
-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ExceptionReport.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ExceptionReport.tml
deleted file mode 100644
index 19c9ff2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ExceptionReport.tml
+++ /dev/null
@@ -1,62 +0,0 @@
-<html xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
-    <head>
-        <title>Application Exception</title>
-    </head>
-    <body>
-        <h1 class="t-exception-report">An unexpected application exception has occurred.</h1>
-
-        <t:if test="productionMode">
-            <p>${rootException.message}</p>
-            <p:else>
-                <t:exceptiondisplay exception="rootException"/>
-
-                <div class="t-env-data">
-
-                    <h2>Tapestry Framework</h2>
-                    <dl>
-                        <dt>Tapestry Version</dt>
-                        <dd>${tapestryVersion}</dd>
-                        <dt>Application Version</dt>
-                        <dd>${applicationVersion}</dd>
-                    </dl>
-
-                    <h2>Request</h2>
-                    <t:renderobject object="request"/>
-
-                    <t:if test="hasSession">
-                        <h2>Session</h2>
-                        <dl>
-                            <t:loop source="session.attributeNames" value="attributeName">
-                                <dt>${attributeName}</dt>
-                                <dd>
-                                    <t:renderobject object="attributeValue"/>
-                                </dd>
-                            </t:loop>
-                        </dl>
-                    </t:if>
-
-                    <h2>System Properties</h2>
-                    <dl>
-                        <t:loop source="systemProperties" value="propertyName">
-                            <dt>${propertyName}</dt>
-                            <dd>
-                                <t:if test="! complexProperty">
-                                    ${propertyValue}
-                                    <p:else>
-                                        <ul>
-                                            <li t:type="loop" source="complexPropertyValue" value="var:path">
-                                                ${var:path}
-                                            </li>
-                                        </ul>
-                                    </p:else>
-                                </t:if>
-                            </dd>
-                        </t:loop>
-                    </dl>
-
-                </div>
-            </p:else>
-        </t:if>
-    </body>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml
deleted file mode 100644
index d2c1bef..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyDisplayBlocks.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<t:container xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:block id="enum">
-        ${convertedEnumValue}
-    </t:block>
-
-    <t:block id="date">
-        <t:output value="context.propertyValue" format="dateFormat"/>
-    </t:block>

-

-    <t:block id="calendar">

-        <t:output value="calendarDate" format="dateFormat"/>

-    </t:block>
-
-    <t:block id="password">
-        <t:delegate to="passwordRenderer"/>
-    </t:block>
-
-    <t:block id="longtext">
-        <t:textoutput value="context.propertyValue"/>
-    </t:block>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml
deleted file mode 100644
index b857675..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/PropertyEditBlocks.tml
+++ /dev/null
@@ -1,44 +0,0 @@
-<div xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:block id="text">
-        <t:label for="textField"/>
-        <input t:id="textField"/>
-    </t:block>
-
-    <t:block id="number">
-        <t:label for="numberField"/>
-        <input t:id="numberField" class="t-number"/>
-    </t:block>
-
-
-    <t:block id="enum">
-        <t:label for="select"/>
-        <input t:id="select"/>
-    </t:block>
-
-    <t:block id="boolean">
-        <t:label for="checkboxField"/>
-        <input t:id="checkboxField"/>
-    </t:block>
-
-    <t:block id="date">
-        <t:label for="dateField"/>
-        <input t:id="dateField"/>
-    </t:block>

-

-    <t:block id="calendar">

-        <t:label for="calendarField"/>

-        <input t:id="calendarField"/>

-    </t:block>
-
-    <t:block id="password">
-        <t:label for="passwordField"/>
-        <input t:id="passwordField"/>
-    </t:block>
-
-    <t:block id="longtext">
-        <t:label for="textarea"/>
-        <textarea t:id="textarea"/>
-    </t:block>
-
-</div>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ServiceStatus.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ServiceStatus.properties
deleted file mode 100644
index 58b9e72..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ServiceStatus.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-service-status-hidden=Detailed service status is only available in development mode.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ServiceStatus.tml b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ServiceStatus.tml
deleted file mode 100644
index 3f87f77..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/corelib/pages/ServiceStatus.tml
+++ /dev/null
@@ -1,79 +0,0 @@
-<html xml:space="default" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter">
-    <head>
-        <title>Tapestry IoC Services Status</title>
-        <style>
-            TR.defined {
-            color: #666666;
-            font-style: italic;
-            }
-
-            TR.virtual
-            {
-            color: blue;
-            }
-
-            TR.real
-            {
-            color: green;
-            }
-
-
-        </style>
-    </head>
-    <body>
-
-        <h1>Tapestry IoC Services Status</h1>
-
-        <p>${activity.size()} services defined in the IoC Registry.</p>
-
-        <t:unless test="productionMode">
-
-            <t:grid rowsperpage="100" model="model" rowClass="row.status" source="activity" row="row">
-
-                <p:serviceInterfaceCell>
-                    ${row.serviceInterface}
-                </p:serviceInterfaceCell>
-
-            </t:grid>
-
-            <p>
-                Explanation of status:
-                <dl>
-                    <dt>Builtin</dt>
-                    <dd>
-                        A fundamental service that exists even before the Registry is
-                        created.
-                    </dd>
-
-                    <dt>Defined</dt>
-                    <dd>
-                        The service is defined, but has not yet been referenced.
-                    </dd>
-
-                    <dt>Virtual</dt>
-                    <dd>
-                        The service has been referenced (usually for injection into
-                        another service) but has not yet been
-                        <em>realized</em>
-                        into an instantiated service. Realization occurs with the
-                        first method invocation on the proxy.
-                    </dd>
-
-                    <dt>Real</dt>
-                    <dd>
-                        The service has been realized: instantiated, dependencies
-                        injected, decorated with interceptors and is fully in
-                        operation.
-                    </dd>
-
-                </dl>
-            </p>
-
-            <p:else>
-                <p>
-                    <em>${message:service-status-hidden}</em>
-                </p>
-            </p:else>
-        </t:unless>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/css/datepicker.css b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/css/datepicker.css
deleted file mode 100644
index b91084d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/css/datepicker.css
+++ /dev/null
@@ -1,143 +0,0 @@
-.datePicker {

-    border: 1px solid WindowText;

-    background: Window;

-    width: 170px;

-    padding: 0px;

-    cursor: default;

-    -moz-user-focus: normal;

-}

-

-.datePicker td {

-    font: smallcaption;

-    font: small-caption;

-    text-align: center;

-    color: WindowText;

-    cursor: default;

-    font-weight: normal !important;

-    -moz-user-select: none;

-    padding: 0;

-}

-

-.datePicker td.red {

-    color: red;

-}

-

-.datePicker .header {

-    background: ActiveCaption;

-    padding: 3px;

-    border-bottom: 1px solid WindowText;

-}

-

-.datePicker .headerTable {

-    width: 100%;

-}

-

-.datePicker .footer {

-    padding: 3px;

-}

-

-.datePicker .footerTable {

-    width: 100%;

-}

-

-.datePicker .grid {

-    padding: 3px;

-}

-

-.datePicker .gridTable {

-    width: 100%;

-}

-

-.datePicker .gridTable td {

-    width: 14.3%;

-}

-

-.datePicker .gridTable .daysRow td {

-    font-weight: bold !important;

-    border-bottom: 1px solid ThreeDDarkShadow;

-}

-

-.datePicker .grid .gridTable .upperLine {

-    width: 100%;

-    height: 2px;

-    overflow: hidden;

-    background: transparent;

-}

-

-.datePicker td.today {

-    font-weight: bold !important;

-}

-

-.datePicker td.selected {

-    background: Highlight;

-    color: HighlightText !important;

-}

-

-.datePicker td.labelContainer {

-    width: 100%;

-}

-

-.datePicker td .topLabel {

-    color: CaptionText;

-    display: block;

-    font-weight: bold !important;

-    width: 100%;

-    text-decoration: none;

-

-}

-

-.datePicker td.filler {

-    width: 100%;

-}

-

-.datePicker button {

-    border-width: 1px;

-    font: Caption;

-    font-weight: normal !important;

-    display: block;

-}

-

-.datePicker .previousButton {

-    background: buttonface url( "../images/arrow.left.png" ) no-repeat center center;

-}

-

-.datePicker .nextButton {

-    background: buttonface url( "../images/arrow.right.png" ) no-repeat center center;

-}

-

-.datePicker .previousButton,

-    .datePicker .nextButton {

-    width: 14px;

-    height: 14px;

-}

-

-.datePicker .todayButton,

-    .datePicker .noneButton {

-    width: 50px;

-}

-

-.datePicker .labelPopup {

-    position: absolute;

-    min-width: 130px;

-    background: Window;

-    border: 1px solid WindowText;

-    padding: 1px;

-}

-

-.datePicker .labelPopup a {

-    width: 100%;

-    display: block;

-    color: WindowText;

-    text-decoration: none;

-    white-space: nowrap;

-}

-

-.datePicker .labelPopup a:hover {

-    background: Highlight;

-    color: HighlightText;

-}

-

-.datePicker .labelPopup a.selected {

-    font-weight: bold;

-}

-

diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/images/arrow.left.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/images/arrow.left.png
deleted file mode 100644
index 93085aa..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/images/arrow.left.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/images/arrow.right.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/images/arrow.right.png
deleted file mode 100644
index 79abee5..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/images/arrow.right.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/js/datepicker.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/js/datepicker.js
deleted file mode 100644
index 6e7b645..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/datepicker_106/js/datepicker.js
+++ /dev/null
@@ -1,691 +0,0 @@
-/*----------------------------------------------------------------------------\

-|                              Date Picker 1.06                               |

-|-----------------------------------------------------------------------------|

-|                         Created by Erik Arvidsson                           |

-|                  (http://webfx.eae.net/contact.html#erik)                   |

-|                      For WebFX (http://webfx.eae.net/)                      |

-|-----------------------------------------------------------------------------|

-|                            A DOM based Date Picker                          |

-|-----------------------------------------------------------------------------|

-|       Copyright (c) 1999, 2002, 2002, 2003, 2004, 2006 Erik Arvidsson       |

-|-----------------------------------------------------------------------------|

-| Licensed under the Apache License, Version 2.0 (the "License"); you may not |

-| use this file except in compliance with the License.  You may obtain a copy |

-| of the License at http://www.apache.org/licenses/LICENSE-2.0                |

-| - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - |

-| Unless  required  by  applicable law or  agreed  to  in  writing,  software |

-| distributed under the License is distributed on an  "AS IS" BASIS,  WITHOUT |

-| WARRANTIES OR  CONDITIONS OF ANY KIND,  either express or implied.  See the |

-| License  for the  specific language  governing permissions  and limitations |

-| under the License.                                                          |

-|-----------------------------------------------------------------------------|

-| Dependencies: datepicker.css      Date picker style declarations            |

-|-----------------------------------------------------------------------------|

-| 2002-02-10 | Changed _update method to only update the text nodes instead   |

-|            | rewriting the entire table. Also added support for mouse wheel |

-|            | in IE6.                                                        |

-| 2002-01-14 | Cleaned up for 1.0 public version                              |

-| 2002-01-15 | Replace all innerHTML calls with DOM1 methods                  |

-| 2002-01-18 | Minor IE6 bug that occured when dragging the mouse             |

-| 2002-01-19 | Added a popup that is shown when the user clicks on the month. |

-|            | This allows navigation to 6 adjacent months.                   |

-| 2002-04-10 | Fixed a bug that occured in the popup when a date was selected |

-|            | that caused surroundung months to "overflow"                   |

-|            | This had the effect that one could get two October months      |

-|            | listed.                                                        |

-| 2002-09-06 | I had missed one place were window was used instead of         |

-|            | doc.parentWindow                                               |

-| 2003-08-28 | Added support for ensurin no date overflow when changing       |

-|            | months.                                                        |

-| 2004-01-10 | Adding type on the buttons to ensure they are not submit       |

-|            | buttons. Minor CSS change for CSS2                             |

-| 2006-05-28 | Changed license to Apache Software License 2.0.                |

-|-----------------------------------------------------------------------------|

-| Created 2001-10-?? | All changes are in the log above. | Updated 2006-05-28 |

-\----------------------------------------------------------------------------*/

-

-// The DatePicker constructor

-// oDate : Date Optional argument representing the date to select

-// Note: some minor modifications for Tapestry, to work well as a popup.

-function DatePicker(oDate)

-{

-    // check arguments

-    if (arguments.length == 0)

-    {

-        this._selectedDate = new Date;

-        this._none = false;

-    }

-    else

-    {

-        this._selectedDate = oDate || new Date();

-        this._none = oDate == null;

-    }

-

-    this._matrix = [[],[],[],[],[],[],[]];

-    this._showNone = true;

-    this._showToday = true;

-    this._firstWeekDay = 0;	// start week with monday according to standards

-    this._redWeekDay = 6;	// sunday is the default red day.

-

-    this._dontChangeNone = false;

-}

-

-// two static fields describing the name of the months abd days

-DatePicker.months = [

-    "January", "February", "March", "April",

-    "May", "June", "July", "August",

-    "September", "October", "November", "December"];

-DatePicker.days = ["m", "t", "w", "t", "f", "s", "s"];

-

-

-// Function invoked whenever the selected date changes, whether by

-// navigation or when the user selects a date.

-DatePicker.prototype.onchange = function ()

-{

-};

-

-// onselect is more specified than onchange, and    is triggered only when the user makes a specific selection

-// using the calendar (rather than navigating to a new month). For Tapestry,

-// this will dismiss the popup.

-DatePicker.prototype.onselect = function()

-{

-}

-

-

-// create the nodes inside the date picker

-DatePicker.prototype.create = function (doc)

-{

-    if (doc == null) doc = document;

-

-    this._document = doc;

-

-	// create elements

-    this._el = doc.createElement("div");

-    this._el.className = "datePicker";

-

-	// header

-    var div = doc.createElement("div");

-    div.className = "header";

-    this._el.appendChild(div);

-

-    var headerTable = doc.createElement("table");

-    headerTable.className = "headerTable";

-    headerTable.cellSpacing = 0;

-    div.appendChild(headerTable);

-

-    var tBody = doc.createElement("tbody");

-    headerTable.appendChild(tBody);

-

-    var tr = doc.createElement("tr");

-    tBody.appendChild(tr);

-

-    var td = doc.createElement("td");

-    this._previousMonth = doc.createElement("button");

-    this._previousMonth.className = "previousButton";

-    this._previousMonth.setAttribute("type", "button");

-    td.appendChild(this._previousMonth);

-    tr.appendChild(td);

-

-    td = doc.createElement("td");

-    td.className = "labelContainer";

-    tr.appendChild(td);

-

-    this._topLabel = doc.createElement("a");

-    this._topLabel.className = "topLabel";

-    this._topLabel.href = "#";

-    this._topLabel.appendChild(doc.createTextNode(String.fromCharCode(160)));

-    td.appendChild(this._topLabel);

-

-    this._labelPopup = doc.createElement("div");

-    this._labelPopup.className = "labelPopup";

-	// no insertion

-

-    td = doc.createElement("td");

-    this._nextMonth = doc.createElement("button");

-    this._nextMonth.className = "nextButton";

-    this._nextMonth.setAttribute("type", "button");

-    td.appendChild(this._nextMonth);

-    tr.appendChild(td);

-

-	// grid

-    div = doc.createElement("div");

-    div.className = "grid";

-    this._el.appendChild(div);

-    this._table = div;

-

-	// footer

-    div = doc.createElement("div");

-    div.className = "footer";

-    this._el.appendChild(div);

-

-    var footerTable = doc.createElement("table");

-    footerTable.className = "footerTable";

-    footerTable.cellSpacing = 0;

-    div.appendChild(footerTable);

-

-    tBody = doc.createElement("tbody");

-    footerTable.appendChild(tBody);

-

-    tr = doc.createElement("tr");

-    tBody.appendChild(tr);

-

-    td = doc.createElement("td");

-    this._todayButton = doc.createElement("button");

-    this._todayButton.className = "todayButton";

-    this._todayButton.setAttribute("type", "button");

-    this._todayButton.appendChild(doc.createTextNode("Today"));

-    td.appendChild(this._todayButton);

-    tr.appendChild(td);

-

-    td = doc.createElement("td");

-    td.className = "filler";

-    td.appendChild(doc.createTextNode(String.fromCharCode(160)));

-    tr.appendChild(td);

-

-    td = doc.createElement("td");

-    this._noneButton = doc.createElement("button");

-    this._noneButton.className = "noneButton";

-    this._noneButton.setAttribute("type", "button");

-    this._noneButton.appendChild(doc.createTextNode("None"));

-    td.appendChild(this._noneButton);

-    tr.appendChild(td);

-

-

-    this._createTable(doc);

-

-    this._updateTable();

-    this._setTopLabel();

-

-    if (!this._showNone)

-        this._noneButton.style.visibility = "hidden";

-    if (!this._showToday)

-        this._todayButton.style.visibility = "hidden";

-

-	// IE55+ extension

-    this._previousMonth.hideFocus = true;

-    this._nextMonth.hideFocus = true;

-    this._todayButton.hideFocus = true;

-    this._noneButton.hideFocus = true;

-	// end IE55+ extension

-

-    // hook up events

-    var dp = this;

-	// buttons

-    this._previousMonth.onclick = function ()

-    {

-        dp._dontChangeNone = true;

-        dp.goToPreviousMonth();

-        dp._dontChangeNone = false;

-    };

-    this._nextMonth.onclick = function ()

-    {

-        dp._dontChangeNone = true;

-        dp.goToNextMonth();

-        dp._dontChangeNone = false;

-    };

-    this._todayButton.onclick = function ()

-    {

-        dp.goToToday();

-    };

-    this._noneButton.onclick = function ()

-    {

-        dp.setDate(null, true);

-    };

-

-    this._el.onselectstart = function ()

-    {

-        return false;

-    };

-

-    this._table.onclick = function (e)

-    {

-        // find event

-        if (e == null) e = doc.parentWindow.event;

-

-		// find td

-        var el = e.target != null ? e.target : e.srcElement;

-        while (el.nodeType != 1)

-            el = el.parentNode;

-        while (el != null && el.tagName && el.tagName.toLowerCase() != "td")

-            el = el.parentNode;

-

-		// if no td found, return

-        if (el == null || el.tagName == null || el.tagName.toLowerCase() != "td")

-            return;

-

-        var d = new Date(dp._selectedDate);

-        var n = Number(el.firstChild.data);

-        if (isNaN(n) || n <= 0 || n == null)

-            return;

-

-        d.setDate(n);

-        dp.setDate(d, true);

-    };

-

-	// show popup

-    this._topLabel.onclick = function (e)

-    {

-        dp._showLabelPopup();

-        return false;

-    };

-

-    this._el.onkeydown = function (e)

-    {

-        if (e == null) e = doc.parentWindow.event;

-        var kc = e.keyCode != null ? e.keyCode : e.charCode;

-

-        if (kc < 37 || kc > 40) return true;

-

-        var d = new Date(dp._selectedDate).valueOf();

-        if (kc == 37) // left

-            d -= 24 * 60 * 60 * 1000;

-        else if (kc == 39) // right

-            d += 24 * 60 * 60 * 1000;

-        else if (kc == 38) // up

-            d -= 7 * 24 * 60 * 60 * 1000;

-        else if (kc == 40) // down

-            d += 7 * 24 * 60 * 60 * 1000;

-

-        dp.setDate(new Date(d), false);

-        return false;

-    }

-

-	// ie6 extension

-    this._el.onmousewheel = function (e)

-    {

-        if (e == null) e = doc.parentWindow.event;

-        var n = - e.wheelDelta / 120;

-        var d = new Date(dp._selectedDate);

-        var m = d.getMonth() + n;

-        d.setMonth(m);

-

-

-        dp._dontChangeNone = true;

-        dp.setDate(d, false);

-        dp._dontChangeNone = false;

-

-        return false;

-    }

-

-    return this._el;

-};

-

-DatePicker.prototype.setDate = function (oDate, isSelection)

-{

-

-    this._hideLabelPopup();

-

-	// if null then set None

-    if (oDate == null)

-    {

-        if (!this._none)

-        {

-            this._none = true;

-            this._setTopLabel();

-            this._updateTable();

-

-            if (typeof this.onchange == "function")

-                this.onchange();

-        }

-

-        if (isSelection)

-            this.onselect();

-

-        return;

-    }

-

-	// if string or number create a Date object

-    if (typeof oDate == "string" || typeof oDate == "number")

-    {

-        oDate = new Date(oDate);

-    }

-

-

-	// do not update if not really changed

-    if (this._selectedDate.getDate() != oDate.getDate() ||

-        this._selectedDate.getMonth() != oDate.getMonth() ||

-        this._selectedDate.getFullYear() != oDate.getFullYear() ||

-        this._none)

-    {

-

-        if (!this._dontChangeNone)

-            this._none = false;

-

-        this._selectedDate = new Date(oDate);

-

-        this._setTopLabel();

-        this._updateTable();

-

-        if (typeof this.onchange == "function")

-            this.onchange();

-

-        if (isSelection)

-            this.onselect();

-    }

-

-    if (!this._dontChangeNone)

-        this._none = false;

-

-}

-

-

-DatePicker.prototype.getDate = function ()

-{

-    if (this._none) return null;

-    return new Date(this._selectedDate);	// create a new instance

-}

-

-// creates the table elements and inserts them into the date picker

-DatePicker.prototype._createTable = function (doc)

-{

-    var str, i;

-    var rows = 6;

-    var cols = 7;

-    var currentWeek = 0;

-

-    var table = doc.createElement("table");

-    table.className = "gridTable";

-    table.cellSpacing = 0;

-

-    var tBody = doc.createElement("tbody");

-    table.appendChild(tBody);

-

-	// days row

-    var tr = doc.createElement("tr");

-    tr.className = "daysRow";

-

-    var td, tn;

-    var nbsp = String.fromCharCode(160);

-    for (i = 0; i < cols; i++)

-    {

-        td = doc.createElement("td");

-        td.appendChild(doc.createTextNode(nbsp));

-        tr.appendChild(td);

-    }

-    tBody.appendChild(tr);

-

-	// upper line

-    tr = doc.createElement("tr");

-    td = doc.createElement("td");

-    td.className = "upperLine";

-    td.colSpan = 7;

-    tr.appendChild(td);

-    tBody.appendChild(tr);

-

-	// rest

-    for (i = 0; i < rows; i++)

-    {

-        tr = doc.createElement("tr");

-        for (var j = 0; j < cols; j++)

-        {

-            td = doc.createElement("td");

-            td.appendChild(doc.createTextNode(nbsp));

-            tr.appendChild(td);

-        }

-        tBody.appendChild(tr);

-    }

-    str += "</table>";

-

-    if (this._table != null)

-        this._table.appendChild(table)

-};

-// this method updates all the text nodes inside the table as well

-// as all the classNames on the tds

-DatePicker.prototype._updateTable = function ()

-{

-    // if no element no need to continue

-    if (this._table == null) return;

-

-    var i;

-    var str = "";

-    var rows = 6;

-    var cols = 7;

-    var currentWeek = 0;

-

-    var cells = new Array(rows);

-    this._matrix = new Array(rows)

-    for (i = 0; i < rows; i++)

-    {

-        cells[i] = new Array(cols);

-        this._matrix[i] = new Array(cols);

-    }

-

-	// Set the tmpDate to this month

-    var tmpDate = new Date(this._selectedDate.getFullYear(),

-            this._selectedDate.getMonth(), 1);

-    var today = new Date();

-	// go thorugh all days this month and store the text

-    // and the class name in the cells matrix

-    for (i = 1; i < 32; i++)

-    {

-        tmpDate.setDate(i);

-		// convert to ISO, Monday is 0 and 6 is Sunday

-        var weekDay = ( tmpDate.getDay() + 6 ) % 7;

-        var colIndex = ( weekDay - this._firstWeekDay + 7 ) % 7;

-        if (tmpDate.getMonth() == this._selectedDate.getMonth())

-        {

-

-            var isToday = tmpDate.getDate() == today.getDate() &&

-                          tmpDate.getMonth() == today.getMonth() &&

-                          tmpDate.getFullYear() == today.getFullYear();

-

-            cells[currentWeek][colIndex] = { text: "", className: "" };

-

-            if (this._selectedDate.getDate() == tmpDate.getDate() && !this._none)

-                cells[currentWeek][colIndex].className += "selected ";

-            if (isToday)

-                cells[currentWeek][colIndex].className += "today ";

-            if (( tmpDate.getDay() + 6 ) % 7 == this._redWeekDay) // ISO

-                cells[currentWeek][colIndex].className += "red";

-

-            cells[currentWeek][colIndex].text =

-            this._matrix[currentWeek][colIndex] = tmpDate.getDate();

-

-            if (colIndex == 6)

-                currentWeek++;

-        }

-    }

-

-	// fix day letter order if not standard

-    var weekDays = DatePicker.days;

-    if (this._firstWeekDay != 0)

-    {

-        weekDays = new Array(7);

-        for (i = 0; i < 7; i++)

-            weekDays[i] = DatePicker.days[ (i + this._firstWeekDay) % 7];

-    }

-

-	// update text in days row

-    var tds = this._table.firstChild.tBodies[0].rows[0].cells;

-    for (i = 0; i < cols; i++)

-        tds[i].firstChild.data = weekDays[i];

-

-	// update the text nodes and class names

-    var trs = this._table.firstChild.tBodies[0].rows;

-    var tmpCell;

-    var nbsp = String.fromCharCode(160);

-    for (var y = 0; y < rows; y++)

-    {

-        for (var x = 0; x < cols; x++)

-        {

-            tmpCell = trs[y + 2].cells[x];

-            if (typeof cells[y][x] != "undefined")

-            {

-                tmpCell.className = cells[y][x].className;

-                tmpCell.firstChild.data = cells[y][x].text;

-            }

-            else

-            {

-                tmpCell.className = "";

-                tmpCell.firstChild.data = nbsp;

-            }

-        }

-    }

-}

-

-// sets the label showing the year and selected month

-DatePicker.prototype._setTopLabel = function ()

-{

-    var str = this._selectedDate.getFullYear() + " " + DatePicker.months[ this._selectedDate.getMonth() ];

-    if (this._topLabel != null)

-        this._topLabel.lastChild.data = str;

-}

-

-DatePicker.prototype.goToNextMonth = function ()

-{

-    var d = new Date(this._selectedDate);

-    d.setDate(Math.min(d.getDate(), DatePicker.getDaysPerMonth(d.getMonth() + 1,

-            d.getFullYear()))); // no need to catch dec -> jan for the year

-    d.setMonth(d.getMonth() + 1);

-    this.setDate(d);

-}

-

-DatePicker.prototype.goToPreviousMonth = function ()

-{

-    var d = new Date(this._selectedDate);

-    d.setDate(Math.min(d.getDate(), DatePicker.getDaysPerMonth(d.getMonth() - 1,

-            d.getFullYear()))); // no need to catch jan -> dec for the year

-    d.setMonth(d.getMonth() - 1);

-    this.setDate(d);

-}

-

-DatePicker.prototype.goToToday = function ()

-{

-    if (this._none)

-        // change the selectedDate to force update if none was true

-        this._selectedDate = new Date(this._selectedDate + 10000000000);

-    this._none = false;

-    this.setDate(new Date(), true);

-}

-

-DatePicker.prototype.setShowToday = function (bShowToday)

-{

-    if (typeof bShowToday == "string")

-        bShowToday = !/false|0|no/i.test(bShowToday);

-

-    if (this._todayButton != null)

-        this._todayButton.style.visibility = bShowToday ? "visible" : "hidden";

-    this._showToday = bShowToday;

-}

-

-DatePicker.prototype.getShowToday = function ()

-{

-    return this._showToday;

-}

-

-DatePicker.prototype.setShowNone = function (bShowNone)

-{

-    if (typeof bShowNone == "string")

-        bShowNone = !/false|0|no/i.test(bShowNone);

-

-    if (this._noneButton != null)

-        this._noneButton.style.visibility = bShowNone ? "visible" : "hidden";

-    this._showNone = bShowNone;

-}

-

-DatePicker.prototype.getShowNone = function ()

-{

-    return this._showNone;

-}

-

-// 0 is monday and 6 is sunday as in the ISO standard

-DatePicker.prototype.setFirstWeekDay = function (nFirstWeekDay)

-{

-    if (this._firstWeekDay != nFirstWeekDay)

-    {

-        this._firstWeekDay = nFirstWeekDay;

-        this._updateTable();

-    }

-}

-

-DatePicker.prototype.getFirstWeekDay = function ()

-{

-    return this._firstWeekDay;

-}

-

-// 0 is monday and 6 is sunday as in the ISO standard

-DatePicker.prototype.setRedWeekDay = function (nRedWeekDay)

-{

-    if (this._redWeekDay != nRedWeekDay)

-    {

-        this._redWeekDay = nRedWeekDay;

-        this._updateTable();

-    }

-}

-

-DatePicker.prototype.getRedWeekDay = function ()

-{

-    return this._redWeekDay;

-}

-

-

-DatePicker.prototype._showLabelPopup = function ()

-{

-

-    /*

-     this._labelPopup document.createElement( "DIV" );

-     div.className = "month-popup";

-     div.noWrap = true;

-     el.unselectable = div.unselectable = "on";

-     el.onselectstart = div.onselectstart = function () { return false; };

-     */

-

-    var dateContext = function (dp, d)

-    {

-        return function (e)

-        {

-            dp._dontChangeNone = true;

-            dp._hideLabelPopup();

-            dp.setDate(d);

-            dp._dontChangeNone = false;

-            return false;

-        };

-    };

-

-    var dp = this;

-

-	// clear all old elements in the popup

-    while (this._labelPopup.hasChildNodes())

-        this._labelPopup.removeChild(this._labelPopup.firstChild);

-

-    var a, tmp, tmp2;

-    for (var i = -3; i < 4; i++)

-    {

-        tmp = new Date(this._selectedDate);

-        tmp2 = new Date(this._selectedDate);	// need another tmp to catch year change when checking leap

-        tmp2.setDate(1);

-        tmp2.setMonth(tmp2.getMonth() + i);

-        tmp.setDate(Math.min(tmp.getDate(), DatePicker.getDaysPerMonth(tmp.getMonth() + i,

-                tmp2.getFullYear())));

-        tmp.setMonth(tmp.getMonth() + i);

-

-        a = this._document.createElement("a");

-        a.href = "javascript:void 0;";

-        a.onclick = dateContext(dp, tmp);

-        a.appendChild(this._document.createTextNode(tmp.getFullYear() + " " +

-                                                    DatePicker.months[ tmp.getMonth() ]));

-        if (i == 0)

-            a.className = "selected";

-        this._labelPopup.appendChild(a);

-    }

-

-    this._topLabel.parentNode.insertBefore(this._labelPopup, this._topLabel.parentNode.firstChild);

-};

-

-DatePicker.prototype._hideLabelPopup = function ()

-{

-    if (this._labelPopup.parentNode)

-        this._labelPopup.parentNode.removeChild(this._labelPopup);

-};

-

-DatePicker._daysPerMonth = [31,28,31,30,31,30,31,31,30,31,30,31];

-DatePicker.getDaysPerMonth = function (nMonth, nYear)

-{

-    nMonth = (nMonth + 12) % 12;

-    var res = DatePicker._daysPerMonth[nMonth];

-    if (nMonth == 1)

-    {

-        res += nYear % 4 == 0 && !(nYear % 400 == 0) ? 1 : 0;

-    }

-    return res;

-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/default.css b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/default.css
deleted file mode 100644
index b5ad377..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/default.css
+++ /dev/null
@@ -1,478 +0,0 @@
-/* Tapestry styles all start with "t-" */
-DIV.t-error {
-    border: 1px solid red;
-    padding: 0px;
-    margin: 4px 0px;
-}
-
-DIV.t-error DIV {
-    padding: 2px;
-    display: block;
-    margin: 0px;
-    background-color: red;
-    color: white;
-    font-weight: bold;
-}
-
-DIV.t-error UL {
-    margin: 2px 0px;
-    background-color: white;
-    color: red;
-}
-
-DIV.t-error LI {
-    margin-left: 20px;
-}
-
-DIV.t-error-single {
-    padding: 2px;
-    display: block;
-    margin: 0px;
-    background-color: red;
-    color: white;
-}
-
-HTML>BODY DIV.t-error LI {
-    margin-left: -20px;
-}
-
-.t-invisible {
-    display: none;
-}
-
-LABEL.t-error {
-    color: red;
-}
-
-INPUT.t-error, TEXTAREA.t-error, SELECT.t-error {
-    border-color: red;
-    font-style: italic;
-    color: red;
-}
-
-IMG.t-error-icon {
-    margin-left: 4px;
-    width: 16px;
-    height: 16px;
-    background: url(field-error-marker.gif);
-}
-
-IMG.t-autoloader-icon {
-    margin-left: 4px;
-    width: 16px;
-    height: 16px;
-    background: url(ajax-loader.gif);
-}
-
-IMG.t-sort-icon {
-    margin-left: 4px;
-}
-
-DIV.t-exception-message {
-    font-style: italic;
-    font-size: 12pt;
-    border: thin dotted silver;
-    margin: 5px 0px;
-    padding: 3px;
-}
-
-DIV.t-exception-report, DIV.t-env-data {
-    font-family: "Trebuchet MS", Arial, sans-serif;
-}
-
-DIV.t-exception-report LI {
-    margin-left: -40px;
-}
-
-DIV.t-exception-report DT, DIV.t-env-data DT {
-    color: green;
-    padding-left: 2px;
-    background-color: #FFFFCF;
-}
-
-DIV.t-exception-report LI {
-    list-style: none;
-}
-
-SPAN.t-exception-class-name {
-    display: block;
-    margin-top: 15px;
-    font-size: 12pt;
-    background-color: #E1E1E1;
-    color: blue;
-    padding: 2px 3px;
-    font-weight: bold;
-}
-
-SPAN.t-exception-stack-controls {
-    display: block;
-    float: right;
-}
-
-UL.t-stack-trace LI {
-    font-family: Monaco, Times, monospace;
-    font-size: 10pt;
-    margin-left: -25px;
-    list-style: square;
-}
-
-LI.t-usercode-frame {
-    font-weight: bold;
-    color: blue;
-}
-
-LI.t-omitted-frame {
-    display: none;
-    color: gray;
-    list-style: square;
-}
-
-H1.t-exception-report {
-    font-family: "Trebuchet MS", Arial, sans-serif;
-    color: red;
-}
-
-DIV.t-exception-report DT:after {
-    content: ":";
-}
-
-DIV.t-exception-report DD, DIV.t-env-data DD {
-    margin-left: 10px;
-}
-
-TABLE.t-data-table {
-    border-collapse: collapse;
-    margin: 0px;
-    padding: 2px;
-}
-
-TABLE.t-data-table TH {
-    background-color: black;
-    color: white;
-}
-
-TABLE.t-data-table TD {
-    border: 1px solid silver;
-    margin: 0px;
-}
-
-DIV.t-beaneditor {
-    display: block;
-    background: #ffc;
-    border: 2px outset brown;
-    padding: 2px;
-    font-family: "Trebuchet MS", Arial, sans-serif;
-}
-
-DIV.t-beaneditor-row {
-    padding: 4px 0px 2px 0px;
-}
-
-DIV.t-beaneditor-row LABEL:after {
-    content: ":";
-}
-
-DL.t-beandisplay {
-    display: block;
-    padding: 2px;
-    font-family: "Trebuchet MS", Arial, sans-serif;
-    background: #CCBE99;
-    border: 2px outset black;
-    width: auto;
-}
-
-DL.t-beandisplay DT {
-    width: 250px;
-    display: inline;
-    float: left;
-    text-align: right;
-    clear: left;
-    padding-right: 3px;
-    vertical-align: middle;
-}
-
-DL.t-beandisplay DT:after {
-    content: ":";
-}
-
-DIV.t-beaneditor-row LABEL {
-    width: 250px;
-    display: block;
-    float: left;
-    text-align: right;
-    clear: left;
-    padding-right: 3px;
-    vertical-align: middle;
-}
-
-INPUT.t-number {
-    text-align: right;
-}
-
-DIV.t-beandisplay DIV.t-beandisplay-label {
-    padding-right: 5px;
-}
-
-TABLE.t-data-grid THEAD TR {
-    color: white;
-    background-color: #809FFF;
-}
-
-TABLE.t-data-grid THEAD TR TH {
-    text-align: left;
-    padding: 3px;
-    white-space: nowrap;
-    border-right: 1px solid silver;
-    border-bottom: 1px solid silver;
-}
-
-TABLE.t-data-grid {
-    border-collapse: collapse;
-    border-left: 1px solid silver;
-}
-
-TABLE.t-data-grid TBODY TR TD {
-    border-right: 1px solid silver;
-    border-bottom: 1px solid silver;
-    padding: 2px;
-}
-
-DIV.t-data-grid {
-    font-family: "Trebuchet MS", Arial, sans-serif;
-}
-
-DIV.t-data-grid-pager {
-    margin: 8px 0px;
-}
-
-DIV.t-data-grid-pager A, DIV.t-data-grid-pager SPAN.current {
-    text-decoration: none;
-    color: black;
-    padding: 2px 5px;
-    font-size: medium;
-    border: 1px solid silver;
-    margin-right: 5px;
-}
-
-DIV.t-data-grid-pager A:hover {
-    border: 1px solid black;
-}
-
-DIV.t-data-grid-pager SPAN.current {
-    color: white;
-    background-color: #809FFF;
-}
-
-TABLE.t-data-grid TR TH A {
-    color: white;
-}
-
-IMG {
-    border: none;
-}
-
-DIV.t-env-data-section {
-    padding-left: 5px;
-}
-
-DIV.t-env-data DD, DIV.t-exception-report DD {
-    margin-left: 25px;
-    margin-bottom: 10px;
-}
-
-DIV.t-env-data LI {
-    margin-left: -25px;
-}
-
-DIV.t-env-data-section {
-    font-size: 12pt;
-    background-color: #E1E1E1;
-    color: blue;
-    padding: 2px 3px;
-    font-weight: bold;
-}
-
-TABLE.t-location-outer {
-    padding: 5px;
-    border-collapse: collapse;
-    border: 1px solid black;
-    width: 100%;
-}
-
-TD.t-location-line {
-    width: 40px;
-    text-align: right;
-    padding: 0px;
-    background-color: #E1E1E1;
-    padding-right: 3px;
-    border-right: 1px solid black;
-}
-
-TD.t-location-content {
-    border-top: 1px solid silver;
-    border-right: 1px solid black;
-    white-space: pre;
-}
-
-TD.t-location-current {
-    background-color: #FFFFCF;
-}
-
-TD.t-location-content-first {
-    border-top: 1px solid black;
-}
-
-DIV.t-palette {
-    display: inline;
-}
-
-DIV.t-palette SELECT {
-    margin-bottom: 2px;
-    width: 200px;
-}
-
-DIV.t-palette-title {
-    color: white;
-    background-color: #809FFF;
-    text-align: center;
-    font-weight: bold;
-    margin-bottom: 3px;
-    display: block;
-}
-
-DIV.t-palette-available {
-    float: left;
-}
-
-DIV.t-palette-controls {
-    margin: 5px 5px;
-    float: left;
-    text-align: center;
-}
-
-DIV.t-palette-controls BUTTON {
-    display: block;
-    margin-bottom: 3px;
-}
-
-DIV.t-palette-controls BUTTON[disabled] IMG {
-    filter: alpha(opacity = 25);
-    -moz-opacity: .25;
-}
-
-DIV.t-palette-selected {
-    float: left;
-    clear: right;
-}
-
-DIV.t-palette-spacer {
-    clear: left;
-}
-
-IMG.t-calendar-trigger {
-    padding-left: 3px;
-    cursor: pointer;
-}
-
-DIV.t-autocomplete-menu {
-    z-index: 9999;
-}
-
-DIV.t-autocomplete-menu UL {
-    border: 2px outset #cc9933;
-    background-color: #cc9933;
-    padding: 4px 6px;
-    overflow: auto;
-}
-
-DIV.t-autocomplete-menu LI {
-    color: white;
-    list-style-type: none;
-    padding: 0px;
-    margin: 0px;
-    border-bottom: 1px solid black;
-    cursor: pointer;
-}
-
-DIV.t-autocomplete-menu LI.selected {
-    color: black;
-    font-weight: bold;
-}
-
-DIV.t-error-popup SPAN {
-    background: transparent url('error-bevel-left.gif') no-repeat;
-    display: block;
-    line-height: 28px;
-    margin-left: 0px;
-    padding: 0px 5px 10px 22px;
-}
-
-HTML>BODY DIV.t-error-popup SPAN {
-    background: transparent url('error-bevel-left.png') no-repeat;
-}
-
-DIV.t-error-popup {
-    background: transparent url('error-bevel-right.gif') no-repeat scroll top right;
-    cursor: pointer;
-    color: #FFF;
-    display: block;
-    float: left;
-    font: normal 12px arial, sans-serif;
-    height: 39px;
-    margin-right: 6px;
-    padding-right: 29px;
-    text-decoration: none;
-}
-
-HTML>BODY DIV.t-error-popup {
-    background: transparent url('error-bevel-right.png') no-repeat scroll top right;
-}
-
-UL.t-data-list LI {
-    list-style-type: square;
-}
-
-DIV.t-loading {
-    display: inline;
-    width: auto;
-    font-weight: bold;
-    padding-right: 20px;
-    background: transparent url(ajax-loader.gif) no-repeat right top;
-}
-
-DIV.t-dialog-overlay {
-    position: fixed;
-    margin: auto;
-    top: 0px;
-    left: 0px;
-    z-index: 9990;
-    width: 100%;
-    height: 100%;
-    background: transparent url("dialog-background.gif");
-}
-
-DIV.t-page-loading-banner {
-    position: absolute;
-    top: 5px;
-    left: 5px;
-    width: auto;
-    font-weight: bold;
-    padding: 2px 4px 2px 24px;
-    color: black;
-    background: white url(ajax-loader.gif) no-repeat 4px center;
-    border-right: 2px solid black;
-    border-bottom: 2px solid black;
-}
-
-SPAN.t-render-object-error
-{
-  font-weight: bold;
-  font: italic;
-  color: red;
-}
-
-DIV.t-available-values UL LI
-{
-  list-style-type : disc;
-  margin-left: 0px;
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/deselect.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/deselect.png
deleted file mode 100644
index 083612d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/deselect.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/dialog-background.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/dialog-background.gif
deleted file mode 100644
index ef98d9d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/dialog-background.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-left.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-left.gif
deleted file mode 100644
index 16d83d4..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-left.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-left.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-left.png
deleted file mode 100644
index 5a2d39d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-left.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-right.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-right.gif
deleted file mode 100644
index 31d6266..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-right.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-right.png b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-right.png
deleted file mode 100644
index 69fd960..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/error-bevel-right.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/field-error-marker.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/field-error-marker.gif
deleted file mode 100644
index 130b7e2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/field-error-marker.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/InternalStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/InternalStrings.properties
deleted file mode 100644
index a79aa2f..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/InternalStrings.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-bad-key-value=Key/value pair '%s' is not properly formatted (it does not contain an equals sign).
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages.properties
deleted file mode 100644
index 6ee6b42..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=You must provide a value for %s.
-minimum-string-length=You must provide at least %d characters for %s.
-maximum-string-length=You may provide at most %d characters for %s.
-min-integer=%2$s requires a value of at least %1$d. 
-max-integer=%2$s requires a value no larger than %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s does not match pattern '%1$s'.
-invalid-email='%s' is not a valid email address.
-
-# This is where the translator messages go.
-
-integer-format-exception=You must provide an integer value for %s.
-number-format-exception=You must provide a numeric value for %s.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_bg.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_bg.properties
deleted file mode 100644
index 2693a19..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_bg.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Трябва да попълните стойност за %s.
-minimum-string-length=Трябва да попълните поне %d символа за %s.
-maximum-string-length=Можете да попълните най-много %d символа за %s.
-min-integer=%2$s не може да е по-малко от %1$d. 
-max-integer=%2$s не може да е повече от %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s не пасва на нужния формат '%1$s'.
-invalid-email='%s' е невалиден имейл адрес.
-
-# This is where the translator messages go.
-
-integer-format-exception=Трябва да попълните цяло число за %s.
-number-format-exception=Трябва да попълните число за %s.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_da.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_da.properties
deleted file mode 100644
index eea8cc2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_da.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2006, 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=%s skal udfyldes.
-minimum-string-length=%2$s skal mindst være på %1$d tegn.
-maximum-string-length=%2$s må højst være på %1$d tegn.
-min-integer=%2$s skal være mindst %1$d.
-max-integer=%2$s må højst være %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s opfylder ikke mønstret '%1$s'.
-invalid-email='%s' er ikke en gyldig e-mail-adresse.
-
-# This is where the translator messages go.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_de.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_de.properties
deleted file mode 100644
index 5a7c02e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_de.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Sie müssen einen Wert für %s angeben.
-minimum-string-length=%2$s muss mindestens %1$d Zeichen lang sein.
-maximum-string-length=%2$s darf höchstens %1$d Zeichen lang sein.
-min-integer=Der Wert von %2$s muss mindestens %1$d betragen. 
-max-integer=Der Wert von %2$s darf höchstens %1$d betragen.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s stimmt nicht mit dem Muster '%1$s' überein.
-invalid-email='%1$s' ist keine gültige E-Mail Adresse.
-
-# This is where the translator messages go.
-
-integer-format-exception=Sie müssen für %s einen ganzzahligen Wert angeben.
-number-format-exception=Sie müssen für %s einen numerischen Wert angeben.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_el.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_el.properties
deleted file mode 100644
index 770d944..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_el.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %s.
-minimum-string-length=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd %d \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %s.
-maximum-string-length=\u039c\u03c0\u03bf\u03c1\u03b5\u03af\u03c4\u03b5 \u03bd\u03b1 \u03c3\u03c5\u03bc\u03c0\u03bb\u03b7\u03c1\u03ce\u03c3\u03b5\u03c4\u03b5 \u03c4\u03bf \u03c0\u03bf\u03bb\u03cd %d \u03c7\u03b1\u03c1\u03b1\u03ba\u03c4\u03ae\u03c1\u03b5\u03c2 \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %s.
-min-integer=\u03a4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %2$s \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf\u03c5\u03bb\u03ac\u03c7\u03b9\u03c3\u03c4\u03bf\u03bd %1$d.
-max-integer=\u03a4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %2$s \u03b1\u03c0\u03b1\u03b9\u03c4\u03b5\u03af \u03c4\u03b9\u03bc\u03ae \u03c4\u03bf \u03c0\u03bf\u03bb\u03cd %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=\u03a4\u03bf %2$s \u03b4\u03b5\u03bd \u03c4\u03b1\u03b9\u03c1\u03b9\u03ac\u03b6\u03b5\u03b9 \u03c3\u03c4\u03bf \u03c0\u03c1\u03cc\u03c4\u03c5\u03c0\u03bf '%1$s'.
-invalid-email=\u03a4\u03bf '%s' \u03b4\u03b5\u03bd \u03b5\u03af\u03bd\u03b1\u03b9 \u03c3\u03c9\u03c3\u03c4\u03ae \u03b4\u03b9\u03b5\u03cd\u03b8\u03c5\u03bd\u03c3\u03b7 email.
-
-# This is where the translator messages go.
-
-integer-format-exception=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b4\u03ce\u03c3\u03b5\u03c4\u03b5 \u03b1\u03ba\u03ad\u03c1\u03b1\u03b9\u03b1 \u03c4\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %s.
-number-format-exception=\u03a0\u03c1\u03ad\u03c0\u03b5\u03b9 \u03bd\u03b1 \u03b4\u03ce\u03c3\u03b5\u03c4\u03b5 \u03b1\u03c1\u03b9\u03b8\u03bc\u03b7\u03c4\u03b9\u03ba\u03ae \u03c4\u03b9\u03bc\u03ae \u03b3\u03b9\u03b1 \u03c4\u03bf \u03c0\u03b5\u03b4\u03af\u03bf %s.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_es.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_es.properties
deleted file mode 100755
index 2ccac4b..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_es.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2006, 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Tiene que ingresar un valor para %s.
-minimum-string-length=Tiene que ingresar al menos %d caracteres para %s.
-maximum-string-length=Tiene que ingresar como mucho %d caracteres para %s.
-min-integer=%2$s no puede ser menor que %1$d. 
-max-integer=%2$s no puede ser mayor que %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s no coincide con el patr\u00f3n '%1$s'.
-invalid-email='%s' no es una direcci\u00f3n de email v\u00e1lida.
-
-# This is where the translator messages go.
-
-integer-format-exception='%s' tiene que ser un valor entero.
-number-format-exception='%s' tiene que ser un valor num\u00e9rico.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_fi_FI.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_fi_FI.properties
deleted file mode 100644
index a282907..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_fi_FI.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2006, 2007, 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=\"%s\" -kent\u00E4st\u00E4 puuttu sy\u00F6te.
-minimum-string-length=Sy\u00F6t\u00E4 v\u00E4hint\u00E4\u00E4n %d merkki\u00E4 \"%s\" -kentt\u00E4\u00E4n.
-maximum-string-length=Voit sy\u00F6tt\u00E4\u00E4 enint\u00E4\u00E4n %d merkki\u00E4 \"%s\" -kentt\u00E4\u00E4n.
-min-integer=\"%2$s\" -kent\u00E4n arvo pit\u00E4\u00E4 olla v\u00E4hint\u00E4\u00E4n %1$d. 
-max-integer=\"%2$s\" -kent\u00E4n arvo saa olla enint\u00E4\u00E4n %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s ei vastaa merkkijonoa '%1$s'.
-invalid-email='%s' ei ole s\u00E4hk\u00F6postiosoite.
-
-integer-format-exception= \"%s\" -kentŠn syštteen pitŠŠ olla kokonaisluku.
-number-format-exception=\"%s\" -kentŠn syštteen pitŠŠ olla numero.
-
-# This is where the translator messages go.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_fr_FR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_fr_FR.properties
deleted file mode 100644
index fd35644..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_fr_FR.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Vous devez fournir une valeur pour %s.
-minimum-string-length=Vous devez donner au moins %d caractères pour %s.
-maximum-string-length=Vous ne pouvez donner que %d caractères maximum pour %s.
-min-integer=%2$s doit avoir la valeur minimale de %1$d. 
-max-integer=%2$s ne doit pas avoir une valeur supérieure à %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s ne correspond pas a l'expression '%1$s'.
-invalid-email='%s' n'est pas une adresse courriel valide.
-
-# This is where the translator messages go.
-
-integer-format-exception=Vous devez saisir un nombre entier pour %s.
-number-format-exception=Vous devez saisir un nombre pour %s.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_hr.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_hr.properties
deleted file mode 100644
index b5dffe2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_hr.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Morate upisati %s.
-minimum-string-length=Morate upisati barem %d znakova za %s.
-maximum-string-length=Možete upisati najviše %d znakova za %s.
-min-integer=Vrijednost %2$s ne smije biti manja od %1$d. 
-max-integer=Vrijednost %2$s ne mije biti veća od %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s je potrebno upisati u sljedećem obliku: '%1$s'.
-invalid-email='%s' nije valjana e-mail addresa.
-
-# This is where the translator messages go.
-
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_it.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_it.properties
deleted file mode 100644
index bfafa8d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_it.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Il valore di %s deve essere immesso.
-minimum-string-length=Il campo %2$s richiede almeno %1$d caratteri.
-maximum-string-length=Il campo %2$s può contenere al massimo %1$d caratteri.
-min-integer=%2$s deve essere maggiore di %1$d. 
-max-integer=%2$s deve essere minore di %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s non soddisfa la regola '%1$s'.
-
-# This is where the translator messages go.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_ja.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_ja.properties
deleted file mode 100644
index ef48b25..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_ja.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=%s\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-minimum-string-length=%2$s\u306b\u306f%1$d\u6587\u5b57\u4ee5\u4e0a\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-maximum-string-length=%2$s\u306f%1$d\u6587\u5b57\u4ee5\u4e0b\u3067\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-min-integer=%2$s\u306b\u306f%1$d\u4ee5\u4e0a\u306e\u6570\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-max-integer=%2$s\u306b\u306f%1$d\u4ee5\u4e0b\u306e\u6570\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s\u306f\u30d1\u30bf\u30fc\u30f3 '%1$s' \u306b\u30de\u30c3\u30c1\u3057\u307e\u305b\u3093\u3002
-invalid-email='%s' \u306fE\u30e1\u30fc\u30eb\u30a2\u30c9\u30ec\u30b9\u3068\u3057\u3066\u6b63\u3057\u304f\u3042\u308a\u307e\u305b\u3093\u3002
-
-# This is where the translator messages go.
-
-integer-format-exception=%s\u306b\u306f\u6574\u6570\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-number-format-exception=%s\u306b\u306f\u6570\u5024\u3092\u5165\u529b\u3057\u3066\u304f\u3060\u3055\u3044\u3002
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_no_NB.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_no_NB.properties
deleted file mode 100644
index 5b88f85..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_no_NB.properties
+++ /dev/null
@@ -1,34 +0,0 @@
-# Copyright 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Du må skrive noe i %s.
-minimum-string-length=Du må bruke minst %d tegn i %s.
-maximum-string-length=Du kan ikke bruke mer enn %d tegn i %s.
-min-integer=%2$s må være minst %1$d. 
-max-integer=%2$s må ikke være større enn %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s passer ikke til mønsteret '%1$s'.
-invalid-email='%s' er ikke en gyldig epost adresse.
-
-# This is where the translator messages go.
-
-integer-format-exception=Du må fylle inn et heltall i %s.
-number-format-exception=Du må sette inn et tall i %s.
-
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_pt_BR.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_pt_BR.properties
deleted file mode 100644
index a936bf8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_pt_BR.properties
+++ /dev/null
@@ -1,32 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Você deve fornecer um valor para %s.
-minimum-string-length=Você deve fornecer ao menos %d caracteres para %s.
-maximum-string-length=Você deve fornecer até %d caracteres para %s.
-min-integer=%2$s deve ser igual ou maior que %1$d.
-max-integer=%2$s deve ser menor ou igual a %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s não atende ao padrão '%1$s'.
-invalid-email='%s' não é um e-mail válido.
-
-# This is where the translator messages go.
-
-integer-format-exception=Você deve fornecer um número inteiro para %s.
-number-format-exception=Você deve fornecer um número para %s.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_pt_PT.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_pt_PT.properties
deleted file mode 100644
index 191e76d..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_pt_PT.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Tem de fornecer um valor para %s.
-minimum-string-length=Tem de inserir pelo meno %d characteres para %s.
-maximum-string-length=Pode inserir no m\u00e1ximo %d characteres para %s.
-min-integer=O campo %2$s requer um valor no m\u00ednimo de %1$d.
-max-integer=O campo %2$s requer um valor no m\u00e1ximo de %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s n\u00e3o corresponde ao padr\u00e3o '%1$s'.
-
-# This is where the translator messages go.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_ru.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_ru.properties
deleted file mode 100644
index 7f62a02..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_ru.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Вы должны указать значение для %s.
-minimum-string-length=Вы должны ввести не менее %d символов для %s.
-maximum-string-length=Вы можете ввести не более %d символов для %s.
-min-integer=%2$s не должно быть меньше чем %1$d. 
-max-integer=%2$s не должно быть больше чем %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s не соответствует требуемому шаблону '%1$s'.
-invalid-email='%s' недействительный адрес электронной почты.
-
-# This is where the translator messages go.
-
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_sv_SE.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_sv_SE.properties
deleted file mode 100644
index 03ef0e8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_sv_SE.properties
+++ /dev/null
@@ -1,30 +0,0 @@
-# Copyright 2006, 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-
-required=Du m\u00E5ste ange ett v\u00E4rde f\u00F6r %s.
-minimum-string-length=Du m\u00E5ste ange minst %d tecken f\u00F6r %s.
-maximum-string-length=Du f\u00E5r max ange %d tecken f\u00F6r %s.
-min-integer=%2$s m\u00E5ste vara st\u00F6rre eller lika med %1$d. 
-max-integer=%2$s f\u00E5r inte vara st\u00F6rre \u00E4n %1$d.
-# This is lousy as a default, since the pattern string is meaningless to the user. You should always override
-# this.
-regexp=%2$s matchar inte m\u00F6nstret '%1$s'.
-invalid-email='%s' \u00E4r inte en korrekt formad email-adress.
-
-# This is where the translator messages go.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_zh_CN.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_zh_CN.properties
deleted file mode 100644
index dcbaa79..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/ValidationMessages_zh_CN.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-# This is where the translator messages go.
-integer-format-exception = '%s'\u7684\u5185\u5BB9\u5FC5\u987B\u662F\u6574\u6570\u3002
-
-max-integer = %2$s\u7684\u6570\u503C\u4E0D\u80FD\u5927\u4E8E%1$d\u3002
-
-maximum-string-length = %2$s\u7684\u5185\u5BB9\u4E0D\u80FD\u8D85\u8FC7%1$d\u5B57\u7B26\u3002
-
-min-integer = %2$s\u7684\u6570\u503C\u4E0D\u80FD\u5C0F\u4E8E%1$d\u3002
-
-# We try to keep these consistent, with the constraint value (if applicable)
-# as the first parameter, and the field's label as the second parameter. Occasionally
-# we must use specific indexing when that's not the best order.
-required = \u8BF7\u8F93\u5165%s\u7684\u5185\u5BB9\u3002
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/bindings/BindingsStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/bindings/BindingsStrings.properties
deleted file mode 100644
index 26ae1e3..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/bindings/BindingsStrings.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2006, 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-binding-is-read-only=Binding %s is read-only.
-validate-binding-for-fields-only=Component '%s' is not a field (it does not implement the Field interface) and may not be used with the validate: binding prefix.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/model/ModelStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/model/ModelStrings.properties
deleted file mode 100644
index 950ff5a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/model/ModelStrings.properties
+++ /dev/null
@@ -1,19 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-duplicate-parameter=Parameter '%s' of component %s is already defined.
-duplicate-parameter-value=A value for parameter '%s' of embedded component %s (of component class %s) has already been provided.
-duplicate-component-id=Embedded component '%s' has already been defined for component class %s.
-duplicate-mixin=Mixin %s (for component %s) has already been defined.
-missing-persistent-field=No field persistence strategy has been defined for field '%s'.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/pageload/PageloadStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/pageload/PageloadStrings.properties
deleted file mode 100644
index 667e188..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/pageload/PageloadStrings.properties
+++ /dev/null
@@ -1,41 +0,0 @@
-#
-# Copyright 2009, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#      http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-#
-
-unique_mixin_required=Mixins applied to a component must be unique. Mixin '%s' has already been applied.
-mixinid_for_paramnotfound="Mixin id for parameter '%s' not found. Attached mixins: %s."
-missing_component_type=You must specify the type via t:type, the element, or @Component annotation.
-no_more_tokens=No more template tokens.
-could_not_find_override=Could not find an override for extension point '%s'.
-no_parent_for_extension=Component %s uses an extension template, but does not have a parent component.
-token_not_implemented=Not yet implemented: %s
-parameter_not_supported=Component %s does not include a formal parameter '%s' (and does not support informal parameters).
-redundant_embedded_component_types=Embedded component '%s' provides a type attribute in the template ('%s') \
-                                   as well as in the component class ('%s'). You should not provide a type attribute \
-                                   in the template when defining an embedded component within the component class.
-recursive_template=The template for component %s is recursive (contains another direct or indirect reference to \
-                   component %<s). This is not supported (components may not contain themselves).
-composite_render_command_method_not_implemented=RenderQueue method %s() is not implemented for composited render commands.
-exception_assembling_root_component=Exception assembling root component of page %s: %s
-exception_assembling_embedded_component=Exception assembling embedded component '%s' (of type %s, within %s): %s
-embedded_components_not_in_template=Embedded component(s) %s are defined within component class %s \
-                                    (or a super-class of %s), but are not present in the component template (%s).
-parameter_already_published=Parameter '%s' of embedded component '%s' can not be published as a parameter of component \
-                            %s, as it has previously been published by embedded component '%s'.
-failure_creating_embedded_component=Failure creating embedded component '%s' of %s: %s
-published_parameter_nonexistant=Parameter '%s' of component %s is improperly published from embedded component '%s' \
-                                (where it does not exist). This may be a typo in the publishParameters attribute of \
-                                the @Component annotation.
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties
deleted file mode 100644
index d97d753..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/ServicesStrings.properties
+++ /dev/null
@@ -1,82 +0,0 @@
-# Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-duplicate-contribution=Contribution %s (for type %s) conflicts with existing contribution %s and has been ignored.
-markup-writer-no-current-element=This markup writer does not have a current element. \
-  The current element is established with the first call to element() and is \
-  maintained across subsequent calls. 
-error-adding-method=Error adding method %s to class %s: %s 
-class-not-transformed=Class %s was not transformed for use as a component; this can happen if it is an interface, or was not in a package subject to component transformation.
-missing-template-resource=Template resource %s does not exist.
-content-inside-body-not-allowed=Content inside a Tapestry body element is not allowed (at %s). The content has been ignored.
-method-compile-error=Error compiling method %s (%s): %s
-render-queue-error=Render queue error in %s: %s
-read-only-field=Field %s.%s is read-only.
-non-private-fields=Class %s contains field(s) (%s) that are not private. \
-  You should change these fields to private, and add accessor methods if needed.  
-mixins-invalid-without-id-or-type=You may not specify mixins for element <%s> because it does not represent a component (which requires either an id attribute or a type attribute).
-binding-source-failure=Could not convert '%s' into a component parameter binding: %s
-page-name-unresolved=Unable to resolve class name %s to a logical page name.
-context-index-out-of-range=Method %s has more parameters than there are context values for this component event.
-exception-in-method-parameter=Exception in method %s, parameter #%d: %s
-component-event-is-aborted=Can not store result from invoking method %s, because an event result value has already been obtained from some other event handler method.
-could-not-canonicalize-page-name=Unable to resolve '%s' to a known page name. Available page names: %s.
-parameter-name-must-be-unique=Parameter names are required to be unique.  Parameter '%s' already has the value '%s'.
-page-is-dirty=Page %s is dirty, and will be discarded (rather than returned to the page pool).
-component-instance-is-not-a-page=Component %s was returned from an event handler method, but is not a page component. The page containing the component will render the client response.
-failure-reading-messages=Unable to read message catalog from %s: %s
-unknown-asset-prefix=Unknown prefix for asset path '%s'.
-asset-does-not-exist=Unable to locate asset '%s' (the file does not exist).
-wrong-asset-digest=The asset digest in the request does not match the actual digest for asset '%s'. This indicates that the content of the asset has changed between requests. 
-unknown-validator-type=Unknown validator type '%s'.  Configured validators are %s.
-validator-specification-parse-error=Unexpected character '%s' at position %d of input string: %s
-missing-from-environment=No object of type %s is available from the Environment.  Available types are %s.
-undefined-tapestry-attribute=Element <%s> does not support an attribute named '%s'. The only allowed attribute name is '%s'.
-attribute-not-allowed=Element <%s> does not support any attributes.
-parameter-element-name-required=The name attribute of the <parameter> element must be specified.
-missing-application-state-persistence-strategy=No application state persistence strategy is available with name '%s'. Available strategies: %s.
-request-exception=Processing of request failed with uncaught exception: %s
-component-recursion=The template for component %s is recursive (contains another direct or indirect reference to component %<s). \
-  This is not supported (components may not contain themselves).
-client-state-must-be-serializable=State persisted on the client must be serializable, but %s does not implement the Serializable interface.
-corrupt-client-state=Serialized client state was corrupted. \
-  This may indicate that too much state is being stored, which can cause the encoded string to be truncated by the client web browser.
-unclosed-attribute-expression=Attribute expression '%s' is missing a closing brace.
-no-display-for-data-type=There is no defined way to display data of type '%s'. Make a contribution to the BeanBlockSource service for this type.
-no-edit-for-data-type=There is no defined way to edit data of type '%s'.  Make a contribution to the BeanBlockSource service for this type.
-missing-validator-constraint=Validator '%s' requires a validation constraint (of type %s) but none was provided. \
-  The constraint may be provided inside the @Validator annotaton on the property, \
-  or in the associated component message catalog as key '%s' or key '%s'. 
-resource-access-forbidden=URI %s may not be accessed remotely.
-no-markup-from-page-render=Page %s did not generate any markup when rendered. This could be because its template file could not be located, or because a \
-  render phase method in the page prevented rendering.
-base-class-in-wrong-package=Base class %s (super class of %s) is not in a controlled package and is therefore not valid. You should try moving the class to package %s.
-invalid-component-id=Component id '%s' is not valid; component ids must be valid Java identifiers: start with a letter, and consist of letters, numbers and underscores.
-invalid-block-id=Block id '%s' is not valid; block ids must be valid Java identifiers: start with a letter, and consist of letters, numbers and underscores. 
-page-pool-exausted=The page pool for page '%s' (in locale %s) has been exausted: there are %d instances currently being used and no more can be created. \
-  Try increasing the hard limit (symbol tapestry.page-pool.hard-limit) to allow additional instances to be created, \
-  or increasing the soft wait (symbol tapestry.page-pool.soft-wait) to trade away some throughput for more efficient use of page instances.
-no-translator-for-type=No translator is defined for type %s.  Registered types: %s.
-parameter-binding-must-not-be-empty=Parameter '%s' must have a non-empty binding.
-no-such-method=Class %s does not contain a method named '%s()'.
-forbid-instantiate-component-class=Component class %s may not be instantiated directly.  You should use an @InjectPage or @InjectComponent annotation instead.
-event-not-handled=Request event '%s' (on component %s) was not handled; you must provide a matching event handler method in the component or in one of its containers.
-document-missing-html-root=The root element of the rendered document was <%s>, not <html>. A root element of <html> is needed when linking JavaScript and stylesheet resources.
-add-new-method-conflict=Unable to add new method %s as it already exists.
-parameter-element-does-not-allow-attributes=A block parameter element does not allow any additional attributes. The element name defines the parameter name.
-invalid-path-for-library-namespace=The path portion of library namespace URI '%s' is not valid: it must be a simple identifier, or a series of identifiers seperated by slashes.
-literal-conduit-not-updateable=Literal values are not updateable.
-request-rewrite-returned-null=URLRewriterRule.process returned null while processing incoming request
-link-rewrite-returned-null=URLRewriterRule.process returned null while processing outbound link.
-markup-writer-attribute-name-or-value-omitted=Writing attributes of the element '%s' failed. A attribute name or value is omitted [%s]. Please provide an even number of values, alternating names and values
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/tapestry_5_0_0.xsd b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/tapestry_5_0_0.xsd
deleted file mode 100644
index 5c732dd..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/tapestry_5_0_0.xsd
+++ /dev/null
@@ -1,60 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           xmlns="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-           targetNamespace="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <xs:element name="body">
-        <xs:annotation>
-            <xs:documentation>
-                Defines the position within the template that the body of the component (the portion of the container's
-                template
-                enclosed by the component) will be rendered. This is optional, and only applies to components that wish
-                to render
-                their body within their template.
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="container">
-        <xs:annotation>
-            <xs:documentation>
-                May be used as the root element of a template, but is not part of the template itself. Useful when
-                a component exists to emit a series of related elements that are not inside a containing element.
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="parameter">
-        <xs:annotation>
-            <xs:documentation>
-                A structured parameter passed to a component as a single object of type Block. The receiving component
-                can get the Block to render. A parameter should always be enclosed by a component element
-                (either an explicit comp element, or an ordinary element instrumented with a Tapestry type or id).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:attribute name="name" type="xs:string" use="required">
-                <xs:annotation>
-                    <xs:documentation>
-                        The name of the parameter to be bound to the Block.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <xs:element name="block">
-        <xs:annotation>
-            <xs:documentation>
-                A block is simply a container of other elements. Blocks do not render themselves or their bodies in the
-                normal flow; they
-                only get rendered when specifially directed to.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:attribute name="id" type="xs:ID">
-                <xs:annotation>
-                    <xs:documentation>
-                        An optional identifier that is used to reference the block from inside the Java class.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-</xs:schema>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/tapestry_5_1_0.xsd b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/tapestry_5_1_0.xsd
deleted file mode 100644
index b9c923c..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/tapestry_5_1_0.xsd
+++ /dev/null
@@ -1,117 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
-           xmlns="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-           targetNamespace="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <xs:element name="body">
-        <xs:annotation>
-            <xs:documentation>
-                Defines the position within the template that the body of the component (the portion of the container's
-                template
-                enclosed by the component) will be rendered. This is optional, and only applies to components that wish
-                to render
-                their body within their template.
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="extend">
-        <xs:annotation>
-            <xs:documentation>
-                Root element of a template that extends its parent template, replacing portions of the template.
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="extension-point">
-        <xs:annotation>
-            <xs:documentation>
-                Defines a portion of a parent component template that may be replaced in a child component.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:attribute name="name" type="xs:string" use="required">
-                <xs:annotation>
-                    <xs:documentation>
-                        Unique id for the replaceable block.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <xs:element name="replacement">
-        <xs:annotation>
-            <xs:documentation>
-                A replacement, in a child component template, for an extension-point in the parent component template.
-                This element must be an immediate child of the root element, which will be extend.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:attribute name="name" type="xs:string" use="required">
-                <xs:annotation>
-                    <xs:documentation>
-                        Unique id for the replaceable block, which must match an id of an inheritable extension-point
-                        block.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <xs:element name="content">
-        <xs:annotation>
-            <xs:documentation>
-                Marks a portion of the template as the relevant portion; anything outside of the element is discarded.
-                content elements may not be nested inside other content elements.
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="remove">
-        <xs:annotation>
-            <xs:documentation>
-                A block of the template to be removed. This can be used as a comment, or to temporarily
-                delete a portion of the template (including markup, expansions and embedded components).
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="container">
-        <xs:annotation>
-            <xs:documentation>
-                May be used as the root element of a template, but is not part of the template itself. Useful when
-                a component exists to emit a series of related elements that are not inside a containing element.
-            </xs:documentation>
-        </xs:annotation>
-    </xs:element>
-    <xs:element name="parameter">
-        <xs:annotation>
-            <xs:documentation>
-                A structured parameter passed to a component as a single object of type Block. The receiving component
-                can get the Block to render. A parameter should always be enclosed by a component element
-                (either an explicit comp element, or an ordinary element instrumented with a Tapestry type or id).
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:attribute name="name" type="xs:string" use="required">
-                <xs:annotation>
-                    <xs:documentation>
-                        The name of the parameter to be bound to the Block.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-    <xs:element name="block">
-        <xs:annotation>
-            <xs:documentation>
-                A block is simply a container of other elements. Blocks do not render themselves or their bodies in the
-                normal flow; they
-                only get rendered when specifially directed to.
-            </xs:documentation>
-        </xs:annotation>
-        <xs:complexType>
-            <xs:attribute name="id" type="xs:ID">
-                <xs:annotation>
-                    <xs:documentation>
-                        An optional identifier that is used to reference the block from inside the Java class.
-                    </xs:documentation>
-                </xs:annotation>
-            </xs:attribute>
-        </xs:complexType>
-    </xs:element>
-</xs:schema>
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-lat1.ent b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-lat1.ent
deleted file mode 100644
index ffee223..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-lat1.ent
+++ /dev/null
@@ -1,196 +0,0 @@
-<!-- Portions (C) International Organization for Standardization 1986
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-<!-- Character entity set. Typical invocation:
-    <!ENTITY % HTMLlat1 PUBLIC
-       "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-       "http://www.w3.org/TR/xhtml1/DTD/xhtml-lat1.ent">
-    %HTMLlat1;
--->
-
-<!ENTITY nbsp   "&#160;"> <!-- no-break space = non-breaking space,
-                                  U+00A0 ISOnum -->
-<!ENTITY iexcl  "&#161;"> <!-- inverted exclamation mark, U+00A1 ISOnum -->
-<!ENTITY cent   "&#162;"> <!-- cent sign, U+00A2 ISOnum -->
-<!ENTITY pound  "&#163;"> <!-- pound sign, U+00A3 ISOnum -->
-<!ENTITY curren "&#164;"> <!-- currency sign, U+00A4 ISOnum -->
-<!ENTITY yen    "&#165;"> <!-- yen sign = yuan sign, U+00A5 ISOnum -->
-<!ENTITY brvbar "&#166;"> <!-- broken bar = broken vertical bar,
-                                  U+00A6 ISOnum -->
-<!ENTITY sect   "&#167;"> <!-- section sign, U+00A7 ISOnum -->
-<!ENTITY uml    "&#168;"> <!-- diaeresis = spacing diaeresis,
-                                  U+00A8 ISOdia -->
-<!ENTITY copy   "&#169;"> <!-- copyright sign, U+00A9 ISOnum -->
-<!ENTITY ordf   "&#170;"> <!-- feminine ordinal indicator, U+00AA ISOnum -->
-<!ENTITY laquo  "&#171;"> <!-- left-pointing double angle quotation mark
-                                  = left pointing guillemet, U+00AB ISOnum -->
-<!ENTITY not    "&#172;"> <!-- not sign = angled dash,
-                                  U+00AC ISOnum -->
-<!ENTITY shy    "&#173;"> <!-- soft hyphen = discretionary hyphen,
-                                  U+00AD ISOnum -->
-<!ENTITY reg    "&#174;"> <!-- registered sign = registered trade mark sign,
-                                  U+00AE ISOnum -->
-<!ENTITY macr   "&#175;"> <!-- macron = spacing macron = overline
-                                  = APL overbar, U+00AF ISOdia -->
-<!ENTITY deg    "&#176;"> <!-- degree sign, U+00B0 ISOnum -->
-<!ENTITY plusmn "&#177;"> <!-- plus-minus sign = plus-or-minus sign,
-                                  U+00B1 ISOnum -->
-<!ENTITY sup2   "&#178;"> <!-- superscript two = superscript digit two
-                                  = squared, U+00B2 ISOnum -->
-<!ENTITY sup3   "&#179;"> <!-- superscript three = superscript digit three
-                                  = cubed, U+00B3 ISOnum -->
-<!ENTITY acute  "&#180;"> <!-- acute accent = spacing acute,
-                                  U+00B4 ISOdia -->
-<!ENTITY micro  "&#181;"> <!-- micro sign, U+00B5 ISOnum -->
-<!ENTITY para   "&#182;"> <!-- pilcrow sign = paragraph sign,
-                                  U+00B6 ISOnum -->
-<!ENTITY middot "&#183;"> <!-- middle dot = Georgian comma
-                                  = Greek middle dot, U+00B7 ISOnum -->
-<!ENTITY cedil  "&#184;"> <!-- cedilla = spacing cedilla, U+00B8 ISOdia -->
-<!ENTITY sup1   "&#185;"> <!-- superscript one = superscript digit one,
-                                  U+00B9 ISOnum -->
-<!ENTITY ordm   "&#186;"> <!-- masculine ordinal indicator,
-                                  U+00BA ISOnum -->
-<!ENTITY raquo  "&#187;"> <!-- right-pointing double angle quotation mark
-                                  = right pointing guillemet, U+00BB ISOnum -->
-<!ENTITY frac14 "&#188;"> <!-- vulgar fraction one quarter
-                                  = fraction one quarter, U+00BC ISOnum -->
-<!ENTITY frac12 "&#189;"> <!-- vulgar fraction one half
-                                  = fraction one half, U+00BD ISOnum -->
-<!ENTITY frac34 "&#190;"> <!-- vulgar fraction three quarters
-                                  = fraction three quarters, U+00BE ISOnum -->
-<!ENTITY iquest "&#191;"> <!-- inverted question mark
-                                  = turned question mark, U+00BF ISOnum -->
-<!ENTITY Agrave "&#192;"> <!-- latin capital letter A with grave
-                                  = latin capital letter A grave,
-                                  U+00C0 ISOlat1 -->
-<!ENTITY Aacute "&#193;"> <!-- latin capital letter A with acute,
-                                  U+00C1 ISOlat1 -->
-<!ENTITY Acirc  "&#194;"> <!-- latin capital letter A with circumflex,
-                                  U+00C2 ISOlat1 -->
-<!ENTITY Atilde "&#195;"> <!-- latin capital letter A with tilde,
-                                  U+00C3 ISOlat1 -->
-<!ENTITY Auml   "&#196;"> <!-- latin capital letter A with diaeresis,
-                                  U+00C4 ISOlat1 -->
-<!ENTITY Aring  "&#197;"> <!-- latin capital letter A with ring above
-                                  = latin capital letter A ring,
-                                  U+00C5 ISOlat1 -->
-<!ENTITY AElig  "&#198;"> <!-- latin capital letter AE
-                                  = latin capital ligature AE,
-                                  U+00C6 ISOlat1 -->
-<!ENTITY Ccedil "&#199;"> <!-- latin capital letter C with cedilla,
-                                  U+00C7 ISOlat1 -->
-<!ENTITY Egrave "&#200;"> <!-- latin capital letter E with grave,
-                                  U+00C8 ISOlat1 -->
-<!ENTITY Eacute "&#201;"> <!-- latin capital letter E with acute,
-                                  U+00C9 ISOlat1 -->
-<!ENTITY Ecirc  "&#202;"> <!-- latin capital letter E with circumflex,
-                                  U+00CA ISOlat1 -->
-<!ENTITY Euml   "&#203;"> <!-- latin capital letter E with diaeresis,
-                                  U+00CB ISOlat1 -->
-<!ENTITY Igrave "&#204;"> <!-- latin capital letter I with grave,
-                                  U+00CC ISOlat1 -->
-<!ENTITY Iacute "&#205;"> <!-- latin capital letter I with acute,
-                                  U+00CD ISOlat1 -->
-<!ENTITY Icirc  "&#206;"> <!-- latin capital letter I with circumflex,
-                                  U+00CE ISOlat1 -->
-<!ENTITY Iuml   "&#207;"> <!-- latin capital letter I with diaeresis,
-                                  U+00CF ISOlat1 -->
-<!ENTITY ETH    "&#208;"> <!-- latin capital letter ETH, U+00D0 ISOlat1 -->
-<!ENTITY Ntilde "&#209;"> <!-- latin capital letter N with tilde,
-                                  U+00D1 ISOlat1 -->
-<!ENTITY Ograve "&#210;"> <!-- latin capital letter O with grave,
-                                  U+00D2 ISOlat1 -->
-<!ENTITY Oacute "&#211;"> <!-- latin capital letter O with acute,
-                                  U+00D3 ISOlat1 -->
-<!ENTITY Ocirc  "&#212;"> <!-- latin capital letter O with circumflex,
-                                  U+00D4 ISOlat1 -->
-<!ENTITY Otilde "&#213;"> <!-- latin capital letter O with tilde,
-                                  U+00D5 ISOlat1 -->
-<!ENTITY Ouml   "&#214;"> <!-- latin capital letter O with diaeresis,
-                                  U+00D6 ISOlat1 -->
-<!ENTITY times  "&#215;"> <!-- multiplication sign, U+00D7 ISOnum -->
-<!ENTITY Oslash "&#216;"> <!-- latin capital letter O with stroke
-                                  = latin capital letter O slash,
-                                  U+00D8 ISOlat1 -->
-<!ENTITY Ugrave "&#217;"> <!-- latin capital letter U with grave,
-                                  U+00D9 ISOlat1 -->
-<!ENTITY Uacute "&#218;"> <!-- latin capital letter U with acute,
-                                  U+00DA ISOlat1 -->
-<!ENTITY Ucirc  "&#219;"> <!-- latin capital letter U with circumflex,
-                                  U+00DB ISOlat1 -->
-<!ENTITY Uuml   "&#220;"> <!-- latin capital letter U with diaeresis,
-                                  U+00DC ISOlat1 -->
-<!ENTITY Yacute "&#221;"> <!-- latin capital letter Y with acute,
-                                  U+00DD ISOlat1 -->
-<!ENTITY THORN  "&#222;"> <!-- latin capital letter THORN,
-                                  U+00DE ISOlat1 -->
-<!ENTITY szlig  "&#223;"> <!-- latin small letter sharp s = ess-zed,
-                                  U+00DF ISOlat1 -->
-<!ENTITY agrave "&#224;"> <!-- latin small letter a with grave
-                                  = latin small letter a grave,
-                                  U+00E0 ISOlat1 -->
-<!ENTITY aacute "&#225;"> <!-- latin small letter a with acute,
-                                  U+00E1 ISOlat1 -->
-<!ENTITY acirc  "&#226;"> <!-- latin small letter a with circumflex,
-                                  U+00E2 ISOlat1 -->
-<!ENTITY atilde "&#227;"> <!-- latin small letter a with tilde,
-                                  U+00E3 ISOlat1 -->
-<!ENTITY auml   "&#228;"> <!-- latin small letter a with diaeresis,
-                                  U+00E4 ISOlat1 -->
-<!ENTITY aring  "&#229;"> <!-- latin small letter a with ring above
-                                  = latin small letter a ring,
-                                  U+00E5 ISOlat1 -->
-<!ENTITY aelig  "&#230;"> <!-- latin small letter ae
-                                  = latin small ligature ae, U+00E6 ISOlat1 -->
-<!ENTITY ccedil "&#231;"> <!-- latin small letter c with cedilla,
-                                  U+00E7 ISOlat1 -->
-<!ENTITY egrave "&#232;"> <!-- latin small letter e with grave,
-                                  U+00E8 ISOlat1 -->
-<!ENTITY eacute "&#233;"> <!-- latin small letter e with acute,
-                                  U+00E9 ISOlat1 -->
-<!ENTITY ecirc  "&#234;"> <!-- latin small letter e with circumflex,
-                                  U+00EA ISOlat1 -->
-<!ENTITY euml   "&#235;"> <!-- latin small letter e with diaeresis,
-                                  U+00EB ISOlat1 -->
-<!ENTITY igrave "&#236;"> <!-- latin small letter i with grave,
-                                  U+00EC ISOlat1 -->
-<!ENTITY iacute "&#237;"> <!-- latin small letter i with acute,
-                                  U+00ED ISOlat1 -->
-<!ENTITY icirc  "&#238;"> <!-- latin small letter i with circumflex,
-                                  U+00EE ISOlat1 -->
-<!ENTITY iuml   "&#239;"> <!-- latin small letter i with diaeresis,
-                                  U+00EF ISOlat1 -->
-<!ENTITY eth    "&#240;"> <!-- latin small letter eth, U+00F0 ISOlat1 -->
-<!ENTITY ntilde "&#241;"> <!-- latin small letter n with tilde,
-                                  U+00F1 ISOlat1 -->
-<!ENTITY ograve "&#242;"> <!-- latin small letter o with grave,
-                                  U+00F2 ISOlat1 -->
-<!ENTITY oacute "&#243;"> <!-- latin small letter o with acute,
-                                  U+00F3 ISOlat1 -->
-<!ENTITY ocirc  "&#244;"> <!-- latin small letter o with circumflex,
-                                  U+00F4 ISOlat1 -->
-<!ENTITY otilde "&#245;"> <!-- latin small letter o with tilde,
-                                  U+00F5 ISOlat1 -->
-<!ENTITY ouml   "&#246;"> <!-- latin small letter o with diaeresis,
-                                  U+00F6 ISOlat1 -->
-<!ENTITY divide "&#247;"> <!-- division sign, U+00F7 ISOnum -->
-<!ENTITY oslash "&#248;"> <!-- latin small letter o with stroke,
-                                  = latin small letter o slash,
-                                  U+00F8 ISOlat1 -->
-<!ENTITY ugrave "&#249;"> <!-- latin small letter u with grave,
-                                  U+00F9 ISOlat1 -->
-<!ENTITY uacute "&#250;"> <!-- latin small letter u with acute,
-                                  U+00FA ISOlat1 -->
-<!ENTITY ucirc  "&#251;"> <!-- latin small letter u with circumflex,
-                                  U+00FB ISOlat1 -->
-<!ENTITY uuml   "&#252;"> <!-- latin small letter u with diaeresis,
-                                  U+00FC ISOlat1 -->
-<!ENTITY yacute "&#253;"> <!-- latin small letter y with acute,
-                                  U+00FD ISOlat1 -->
-<!ENTITY thorn  "&#254;"> <!-- latin small letter thorn,
-                                  U+00FE ISOlat1 -->
-<!ENTITY yuml   "&#255;"> <!-- latin small letter y with diaeresis,
-                                  U+00FF ISOlat1 -->
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-special.ent b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-special.ent
deleted file mode 100644
index ca358b2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-special.ent
+++ /dev/null
@@ -1,80 +0,0 @@
-<!-- Special characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLspecial PUBLIC
-        "-//W3C//ENTITIES Special for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-special.ent">
-     %HTMLspecial;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- C0 Controls and Basic Latin -->
-<!ENTITY quot    "&#34;"> <!--  quotation mark, U+0022 ISOnum -->
-<!ENTITY amp     "&#38;#38;"> <!--  ampersand, U+0026 ISOnum -->
-<!ENTITY lt      "&#38;#60;"> <!--  less-than sign, U+003C ISOnum -->
-<!ENTITY gt      "&#62;"> <!--  greater-than sign, U+003E ISOnum -->
-<!ENTITY apos	 "&#39;"> <!--  apostrophe = APL quote, U+0027 ISOnum -->
-
-<!-- Latin Extended-A -->
-<!ENTITY OElig   "&#338;"> <!--  latin capital ligature OE,
-                                    U+0152 ISOlat2 -->
-<!ENTITY oelig   "&#339;"> <!--  latin small ligature oe, U+0153 ISOlat2 -->
-<!-- ligature is a misnomer, this is a separate character in some languages -->
-<!ENTITY Scaron  "&#352;"> <!--  latin capital letter S with caron,
-                                    U+0160 ISOlat2 -->
-<!ENTITY scaron  "&#353;"> <!--  latin small letter s with caron,
-                                    U+0161 ISOlat2 -->
-<!ENTITY Yuml    "&#376;"> <!--  latin capital letter Y with diaeresis,
-                                    U+0178 ISOlat2 -->
-
-<!-- Spacing Modifier Letters -->
-<!ENTITY circ    "&#710;"> <!--  modifier letter circumflex accent,
-                                    U+02C6 ISOpub -->
-<!ENTITY tilde   "&#732;"> <!--  small tilde, U+02DC ISOdia -->
-
-<!-- General Punctuation -->
-<!ENTITY ensp    "&#8194;"> <!-- en space, U+2002 ISOpub -->
-<!ENTITY emsp    "&#8195;"> <!-- em space, U+2003 ISOpub -->
-<!ENTITY thinsp  "&#8201;"> <!-- thin space, U+2009 ISOpub -->
-<!ENTITY zwnj    "&#8204;"> <!-- zero width non-joiner,
-                                    U+200C NEW RFC 2070 -->
-<!ENTITY zwj     "&#8205;"> <!-- zero width joiner, U+200D NEW RFC 2070 -->
-<!ENTITY lrm     "&#8206;"> <!-- left-to-right mark, U+200E NEW RFC 2070 -->
-<!ENTITY rlm     "&#8207;"> <!-- right-to-left mark, U+200F NEW RFC 2070 -->
-<!ENTITY ndash   "&#8211;"> <!-- en dash, U+2013 ISOpub -->
-<!ENTITY mdash   "&#8212;"> <!-- em dash, U+2014 ISOpub -->
-<!ENTITY lsquo   "&#8216;"> <!-- left single quotation mark,
-                                    U+2018 ISOnum -->
-<!ENTITY rsquo   "&#8217;"> <!-- right single quotation mark,
-                                    U+2019 ISOnum -->
-<!ENTITY sbquo   "&#8218;"> <!-- single low-9 quotation mark, U+201A NEW -->
-<!ENTITY ldquo   "&#8220;"> <!-- left double quotation mark,
-                                    U+201C ISOnum -->
-<!ENTITY rdquo   "&#8221;"> <!-- right double quotation mark,
-                                    U+201D ISOnum -->
-<!ENTITY bdquo   "&#8222;"> <!-- double low-9 quotation mark, U+201E NEW -->
-<!ENTITY dagger  "&#8224;"> <!-- dagger, U+2020 ISOpub -->
-<!ENTITY Dagger  "&#8225;"> <!-- double dagger, U+2021 ISOpub -->
-<!ENTITY permil  "&#8240;"> <!-- per mille sign, U+2030 ISOtech -->
-<!ENTITY lsaquo  "&#8249;"> <!-- single left-pointing angle quotation mark,
-                                    U+2039 ISO proposed -->
-<!-- lsaquo is proposed but not yet ISO standardized -->
-<!ENTITY rsaquo  "&#8250;"> <!-- single right-pointing angle quotation mark,
-                                    U+203A ISO proposed -->
-<!-- rsaquo is proposed but not yet ISO standardized -->
-
-<!-- Currency Symbols -->
-<!ENTITY euro   "&#8364;"> <!--  euro sign, U+20AC NEW -->
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-symbol.ent b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-symbol.ent
deleted file mode 100644
index 63c2abf..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml-symbol.ent
+++ /dev/null
@@ -1,237 +0,0 @@
-<!-- Mathematical, Greek and Symbolic characters for XHTML -->
-
-<!-- Character entity set. Typical invocation:
-     <!ENTITY % HTMLsymbol PUBLIC
-        "-//W3C//ENTITIES Symbols for XHTML//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml-symbol.ent">
-     %HTMLsymbol;
--->
-
-<!-- Portions (C) International Organization for Standardization 1986:
-     Permission to copy in any form is granted for use with
-     conforming SGML systems and applications as defined in
-     ISO 8879, provided this notice is included in all copies.
--->
-
-<!-- Relevant ISO entity set is given unless names are newly introduced.
-     New names (i.e., not in ISO 8879 list) do not clash with any
-     existing ISO 8879 entity names. ISO 10646 character numbers
-     are given for each character, in hex. values are decimal
-     conversions of the ISO 10646 values and refer to the document
-     character set. Names are Unicode names. 
--->
-
-<!-- Latin Extended-B -->
-<!ENTITY fnof     "&#402;"> <!-- latin small letter f with hook = function
-                                    = florin, U+0192 ISOtech -->
-
-<!-- Greek -->
-<!ENTITY Alpha    "&#913;"> <!-- greek capital letter alpha, U+0391 -->
-<!ENTITY Beta     "&#914;"> <!-- greek capital letter beta, U+0392 -->
-<!ENTITY Gamma    "&#915;"> <!-- greek capital letter gamma,
-                                    U+0393 ISOgrk3 -->
-<!ENTITY Delta    "&#916;"> <!-- greek capital letter delta,
-                                    U+0394 ISOgrk3 -->
-<!ENTITY Epsilon  "&#917;"> <!-- greek capital letter epsilon, U+0395 -->
-<!ENTITY Zeta     "&#918;"> <!-- greek capital letter zeta, U+0396 -->
-<!ENTITY Eta      "&#919;"> <!-- greek capital letter eta, U+0397 -->
-<!ENTITY Theta    "&#920;"> <!-- greek capital letter theta,
-                                    U+0398 ISOgrk3 -->
-<!ENTITY Iota     "&#921;"> <!-- greek capital letter iota, U+0399 -->
-<!ENTITY Kappa    "&#922;"> <!-- greek capital letter kappa, U+039A -->
-<!ENTITY Lambda   "&#923;"> <!-- greek capital letter lamda,
-                                    U+039B ISOgrk3 -->
-<!ENTITY Mu       "&#924;"> <!-- greek capital letter mu, U+039C -->
-<!ENTITY Nu       "&#925;"> <!-- greek capital letter nu, U+039D -->
-<!ENTITY Xi       "&#926;"> <!-- greek capital letter xi, U+039E ISOgrk3 -->
-<!ENTITY Omicron  "&#927;"> <!-- greek capital letter omicron, U+039F -->
-<!ENTITY Pi       "&#928;"> <!-- greek capital letter pi, U+03A0 ISOgrk3 -->
-<!ENTITY Rho      "&#929;"> <!-- greek capital letter rho, U+03A1 -->
-<!-- there is no Sigmaf, and no U+03A2 character either -->
-<!ENTITY Sigma    "&#931;"> <!-- greek capital letter sigma,
-                                    U+03A3 ISOgrk3 -->
-<!ENTITY Tau      "&#932;"> <!-- greek capital letter tau, U+03A4 -->
-<!ENTITY Upsilon  "&#933;"> <!-- greek capital letter upsilon,
-                                    U+03A5 ISOgrk3 -->
-<!ENTITY Phi      "&#934;"> <!-- greek capital letter phi,
-                                    U+03A6 ISOgrk3 -->
-<!ENTITY Chi      "&#935;"> <!-- greek capital letter chi, U+03A7 -->
-<!ENTITY Psi      "&#936;"> <!-- greek capital letter psi,
-                                    U+03A8 ISOgrk3 -->
-<!ENTITY Omega    "&#937;"> <!-- greek capital letter omega,
-                                    U+03A9 ISOgrk3 -->
-
-<!ENTITY alpha    "&#945;"> <!-- greek small letter alpha,
-                                    U+03B1 ISOgrk3 -->
-<!ENTITY beta     "&#946;"> <!-- greek small letter beta, U+03B2 ISOgrk3 -->
-<!ENTITY gamma    "&#947;"> <!-- greek small letter gamma,
-                                    U+03B3 ISOgrk3 -->
-<!ENTITY delta    "&#948;"> <!-- greek small letter delta,
-                                    U+03B4 ISOgrk3 -->
-<!ENTITY epsilon  "&#949;"> <!-- greek small letter epsilon,
-                                    U+03B5 ISOgrk3 -->
-<!ENTITY zeta     "&#950;"> <!-- greek small letter zeta, U+03B6 ISOgrk3 -->
-<!ENTITY eta      "&#951;"> <!-- greek small letter eta, U+03B7 ISOgrk3 -->
-<!ENTITY theta    "&#952;"> <!-- greek small letter theta,
-                                    U+03B8 ISOgrk3 -->
-<!ENTITY iota     "&#953;"> <!-- greek small letter iota, U+03B9 ISOgrk3 -->
-<!ENTITY kappa    "&#954;"> <!-- greek small letter kappa,
-                                    U+03BA ISOgrk3 -->
-<!ENTITY lambda   "&#955;"> <!-- greek small letter lamda,
-                                    U+03BB ISOgrk3 -->
-<!ENTITY mu       "&#956;"> <!-- greek small letter mu, U+03BC ISOgrk3 -->
-<!ENTITY nu       "&#957;"> <!-- greek small letter nu, U+03BD ISOgrk3 -->
-<!ENTITY xi       "&#958;"> <!-- greek small letter xi, U+03BE ISOgrk3 -->
-<!ENTITY omicron  "&#959;"> <!-- greek small letter omicron, U+03BF NEW -->
-<!ENTITY pi       "&#960;"> <!-- greek small letter pi, U+03C0 ISOgrk3 -->
-<!ENTITY rho      "&#961;"> <!-- greek small letter rho, U+03C1 ISOgrk3 -->
-<!ENTITY sigmaf   "&#962;"> <!-- greek small letter final sigma,
-                                    U+03C2 ISOgrk3 -->
-<!ENTITY sigma    "&#963;"> <!-- greek small letter sigma,
-                                    U+03C3 ISOgrk3 -->
-<!ENTITY tau      "&#964;"> <!-- greek small letter tau, U+03C4 ISOgrk3 -->
-<!ENTITY upsilon  "&#965;"> <!-- greek small letter upsilon,
-                                    U+03C5 ISOgrk3 -->
-<!ENTITY phi      "&#966;"> <!-- greek small letter phi, U+03C6 ISOgrk3 -->
-<!ENTITY chi      "&#967;"> <!-- greek small letter chi, U+03C7 ISOgrk3 -->
-<!ENTITY psi      "&#968;"> <!-- greek small letter psi, U+03C8 ISOgrk3 -->
-<!ENTITY omega    "&#969;"> <!-- greek small letter omega,
-                                    U+03C9 ISOgrk3 -->
-<!ENTITY thetasym "&#977;"> <!-- greek theta symbol,
-                                    U+03D1 NEW -->
-<!ENTITY upsih    "&#978;"> <!-- greek upsilon with hook symbol,
-                                    U+03D2 NEW -->
-<!ENTITY piv      "&#982;"> <!-- greek pi symbol, U+03D6 ISOgrk3 -->
-
-<!-- General Punctuation -->
-<!ENTITY bull     "&#8226;"> <!-- bullet = black small circle,
-                                     U+2022 ISOpub  -->
-<!-- bullet is NOT the same as bullet operator, U+2219 -->
-<!ENTITY hellip   "&#8230;"> <!-- horizontal ellipsis = three dot leader,
-                                     U+2026 ISOpub  -->
-<!ENTITY prime    "&#8242;"> <!-- prime = minutes = feet, U+2032 ISOtech -->
-<!ENTITY Prime    "&#8243;"> <!-- double prime = seconds = inches,
-                                     U+2033 ISOtech -->
-<!ENTITY oline    "&#8254;"> <!-- overline = spacing overscore,
-                                     U+203E NEW -->
-<!ENTITY frasl    "&#8260;"> <!-- fraction slash, U+2044 NEW -->
-
-<!-- Letterlike Symbols -->
-<!ENTITY weierp   "&#8472;"> <!-- script capital P = power set
-                                     = Weierstrass p, U+2118 ISOamso -->
-<!ENTITY image    "&#8465;"> <!-- black-letter capital I = imaginary part,
-                                     U+2111 ISOamso -->
-<!ENTITY real     "&#8476;"> <!-- black-letter capital R = real part symbol,
-                                     U+211C ISOamso -->
-<!ENTITY trade    "&#8482;"> <!-- trade mark sign, U+2122 ISOnum -->
-<!ENTITY alefsym  "&#8501;"> <!-- alef symbol = first transfinite cardinal,
-                                     U+2135 NEW -->
-<!-- alef symbol is NOT the same as hebrew letter alef,
-     U+05D0 although the same glyph could be used to depict both characters -->
-
-<!-- Arrows -->
-<!ENTITY larr     "&#8592;"> <!-- leftwards arrow, U+2190 ISOnum -->
-<!ENTITY uarr     "&#8593;"> <!-- upwards arrow, U+2191 ISOnum-->
-<!ENTITY rarr     "&#8594;"> <!-- rightwards arrow, U+2192 ISOnum -->
-<!ENTITY darr     "&#8595;"> <!-- downwards arrow, U+2193 ISOnum -->
-<!ENTITY harr     "&#8596;"> <!-- left right arrow, U+2194 ISOamsa -->
-<!ENTITY crarr    "&#8629;"> <!-- downwards arrow with corner leftwards
-                                     = carriage return, U+21B5 NEW -->
-<!ENTITY lArr     "&#8656;"> <!-- leftwards double arrow, U+21D0 ISOtech -->
-<!-- Unicode does not say that lArr is the same as the 'is implied by' arrow
-    but also does not have any other character for that function. So lArr can
-    be used for 'is implied by' as ISOtech suggests -->
-<!ENTITY uArr     "&#8657;"> <!-- upwards double arrow, U+21D1 ISOamsa -->
-<!ENTITY rArr     "&#8658;"> <!-- rightwards double arrow,
-                                     U+21D2 ISOtech -->
-<!-- Unicode does not say this is the 'implies' character but does not have 
-     another character with this function so rArr can be used for 'implies'
-     as ISOtech suggests -->
-<!ENTITY dArr     "&#8659;"> <!-- downwards double arrow, U+21D3 ISOamsa -->
-<!ENTITY hArr     "&#8660;"> <!-- left right double arrow,
-                                     U+21D4 ISOamsa -->
-
-<!-- Mathematical Operators -->
-<!ENTITY forall   "&#8704;"> <!-- for all, U+2200 ISOtech -->
-<!ENTITY part     "&#8706;"> <!-- partial differential, U+2202 ISOtech  -->
-<!ENTITY exist    "&#8707;"> <!-- there exists, U+2203 ISOtech -->
-<!ENTITY empty    "&#8709;"> <!-- empty set = null set, U+2205 ISOamso -->
-<!ENTITY nabla    "&#8711;"> <!-- nabla = backward difference,
-                                     U+2207 ISOtech -->
-<!ENTITY isin     "&#8712;"> <!-- element of, U+2208 ISOtech -->
-<!ENTITY notin    "&#8713;"> <!-- not an element of, U+2209 ISOtech -->
-<!ENTITY ni       "&#8715;"> <!-- contains as member, U+220B ISOtech -->
-<!ENTITY prod     "&#8719;"> <!-- n-ary product = product sign,
-                                     U+220F ISOamsb -->
-<!-- prod is NOT the same character as U+03A0 'greek capital letter pi' though
-     the same glyph might be used for both -->
-<!ENTITY sum      "&#8721;"> <!-- n-ary summation, U+2211 ISOamsb -->
-<!-- sum is NOT the same character as U+03A3 'greek capital letter sigma'
-     though the same glyph might be used for both -->
-<!ENTITY minus    "&#8722;"> <!-- minus sign, U+2212 ISOtech -->
-<!ENTITY lowast   "&#8727;"> <!-- asterisk operator, U+2217 ISOtech -->
-<!ENTITY radic    "&#8730;"> <!-- square root = radical sign,
-                                     U+221A ISOtech -->
-<!ENTITY prop     "&#8733;"> <!-- proportional to, U+221D ISOtech -->
-<!ENTITY infin    "&#8734;"> <!-- infinity, U+221E ISOtech -->
-<!ENTITY ang      "&#8736;"> <!-- angle, U+2220 ISOamso -->
-<!ENTITY and      "&#8743;"> <!-- logical and = wedge, U+2227 ISOtech -->
-<!ENTITY or       "&#8744;"> <!-- logical or = vee, U+2228 ISOtech -->
-<!ENTITY cap      "&#8745;"> <!-- intersection = cap, U+2229 ISOtech -->
-<!ENTITY cup      "&#8746;"> <!-- union = cup, U+222A ISOtech -->
-<!ENTITY int      "&#8747;"> <!-- integral, U+222B ISOtech -->
-<!ENTITY there4   "&#8756;"> <!-- therefore, U+2234 ISOtech -->
-<!ENTITY sim      "&#8764;"> <!-- tilde operator = varies with = similar to,
-                                     U+223C ISOtech -->
-<!-- tilde operator is NOT the same character as the tilde, U+007E,
-     although the same glyph might be used to represent both  -->
-<!ENTITY cong     "&#8773;"> <!-- approximately equal to, U+2245 ISOtech -->
-<!ENTITY asymp    "&#8776;"> <!-- almost equal to = asymptotic to,
-                                     U+2248 ISOamsr -->
-<!ENTITY ne       "&#8800;"> <!-- not equal to, U+2260 ISOtech -->
-<!ENTITY equiv    "&#8801;"> <!-- identical to, U+2261 ISOtech -->
-<!ENTITY le       "&#8804;"> <!-- less-than or equal to, U+2264 ISOtech -->
-<!ENTITY ge       "&#8805;"> <!-- greater-than or equal to,
-                                     U+2265 ISOtech -->
-<!ENTITY sub      "&#8834;"> <!-- subset of, U+2282 ISOtech -->
-<!ENTITY sup      "&#8835;"> <!-- superset of, U+2283 ISOtech -->
-<!ENTITY nsub     "&#8836;"> <!-- not a subset of, U+2284 ISOamsn -->
-<!ENTITY sube     "&#8838;"> <!-- subset of or equal to, U+2286 ISOtech -->
-<!ENTITY supe     "&#8839;"> <!-- superset of or equal to,
-                                     U+2287 ISOtech -->
-<!ENTITY oplus    "&#8853;"> <!-- circled plus = direct sum,
-                                     U+2295 ISOamsb -->
-<!ENTITY otimes   "&#8855;"> <!-- circled times = vector product,
-                                     U+2297 ISOamsb -->
-<!ENTITY perp     "&#8869;"> <!-- up tack = orthogonal to = perpendicular,
-                                     U+22A5 ISOtech -->
-<!ENTITY sdot     "&#8901;"> <!-- dot operator, U+22C5 ISOamsb -->
-<!-- dot operator is NOT the same character as U+00B7 middle dot -->
-
-<!-- Miscellaneous Technical -->
-<!ENTITY lceil    "&#8968;"> <!-- left ceiling = APL upstile,
-                                     U+2308 ISOamsc  -->
-<!ENTITY rceil    "&#8969;"> <!-- right ceiling, U+2309 ISOamsc  -->
-<!ENTITY lfloor   "&#8970;"> <!-- left floor = APL downstile,
-                                     U+230A ISOamsc  -->
-<!ENTITY rfloor   "&#8971;"> <!-- right floor, U+230B ISOamsc  -->
-<!ENTITY lang     "&#9001;"> <!-- left-pointing angle bracket = bra,
-                                     U+2329 ISOtech -->
-<!-- lang is NOT the same character as U+003C 'less than sign' 
-     or U+2039 'single left-pointing angle quotation mark' -->
-<!ENTITY rang     "&#9002;"> <!-- right-pointing angle bracket = ket,
-                                     U+232A ISOtech -->
-<!-- rang is NOT the same character as U+003E 'greater than sign' 
-     or U+203A 'single right-pointing angle quotation mark' -->
-
-<!-- Geometric Shapes -->
-<!ENTITY loz      "&#9674;"> <!-- lozenge, U+25CA ISOpub -->
-
-<!-- Miscellaneous Symbols -->
-<!ENTITY spades   "&#9824;"> <!-- black spade suit, U+2660 ISOpub -->
-<!-- black here seems to mean filled as opposed to hollow -->
-<!ENTITY clubs    "&#9827;"> <!-- black club suit = shamrock,
-                                     U+2663 ISOpub -->
-<!ENTITY hearts   "&#9829;"> <!-- black heart suit = valentine,
-                                     U+2665 ISOpub -->
-<!ENTITY diams    "&#9830;"> <!-- black diamond suit, U+2666 ISOpub -->
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-frameset.dtd b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-frameset.dtd
deleted file mode 100644
index d128f2e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-frameset.dtd
+++ /dev/null
@@ -1,1235 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Frameset DTD
-
-   This is the same as HTML 4 Frameset except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"
-
-   $Revision: 1.2 $
-   $Date: 2002/08/01 18:37:55 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % MultiLengths "CDATA">
-    <!-- comma-separated list of MultiLength -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex | fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     sub, sup, font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, frameset)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- only one noframes element permitted per document -->
-
-<!ELEMENT frameset (frameset|frame|noframes)*>
-<!ATTLIST frameset
-  %coreattrs;
-  rows        %MultiLengths; #IMPLIED
-  cols        %MultiLengths; #IMPLIED
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  >
-
-<!-- reserved frame names start with "_" otherwise starts with letter -->
-
-<!-- tiled window within frameset -->
-
-<!ELEMENT frame EMPTY>
-<!ATTLIST frame
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  noresize    (noresize)     #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  >
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes (body)>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form |%inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=":"
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Pixels;       #IMPLIED
-  height      %Pixels;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Pixels;       #IMPLIED
-  height      %Pixels;       #IMPLIED
-  >
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-strict.dtd b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-strict.dtd
deleted file mode 100644
index 2927b9e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-strict.dtd
+++ /dev/null
@@ -1,978 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Strict DTD
-
-   This is the same as HTML 4 Strict except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
-
-   $Revision: 1.1 $
-   $Date: 2002/08/01 13:56:03 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.pre
-   "br | span | bdo | map">
-
-
-<!ENTITY % special
-   "%special.pre; | object | img ">
-
-<!ENTITY % fontstyle "tt | i | b | big | small ">
-
-<!ENTITY % phrase "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym | sub | sup ">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl">
-<!ENTITY % blocktext "pre | hr | blockquote | address">
-
-<!ENTITY % block
-     "p | %heading; | div | %lists; | %blocktext; | fieldset | table">
-
-<!ENTITY % Block "(%block; | form | %misc;)*">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding big, small, sup or sup -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %fontstyle; | %phrase; | %special.pre; | %misc.inline;
-      | %inline.forms;)*">
-
-<!-- form uses %Block; excluding form -->
-
-<!ENTITY % form.content "(%block; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form and form controls -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-    table | %special; | %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  href        %URI;          #REQUIRED
-  id          ID             #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Block;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Block;>
-<!ATTLIST body
-  %attrs;
-  onload          %Script;   #IMPLIED
-  onunload        %Script;   #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-   %attrs;
-   >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-   %attrs;
-   >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-   %attrs;
-   >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-   %attrs;
-   >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-   %attrs;
-   >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-   %attrs;
-   >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  >
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  >
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address %Inline;>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding "img|object|big|small|sub|sup" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  xml:space (preserve) #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Block;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
-   Note that in this DTD there is no name attribute. That
-   is only available in the transitional and frameset DTD.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  >
-
-<!--================ Forms ===============================================-->
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form and form controls
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  >
-
-<!ATTLIST caption
-  %attrs;
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  >
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-transitional.dtd b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-transitional.dtd
deleted file mode 100644
index 628f27a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/services/xhtml1-transitional.dtd
+++ /dev/null
@@ -1,1201 +0,0 @@
-<!--
-   Extensible HTML version 1.0 Transitional DTD
-
-   This is the same as HTML 4 Transitional except for
-   changes due to the differences between XML and SGML.
-
-   Namespace = http://www.w3.org/1999/xhtml
-
-   For further information, see: http://www.w3.org/TR/xhtml1
-
-   Copyright (c) 1998-2002 W3C (MIT, INRIA, Keio),
-   All Rights Reserved. 
-
-   This DTD module is identified by the PUBLIC and SYSTEM identifiers:
-
-   PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-   SYSTEM "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"
-
-   $Revision: 1.2 $
-   $Date: 2002/08/01 18:37:55 $
-
--->
-
-<!--================ Character mnemonic entities =========================-->
-
-<!ENTITY % HTMLlat1 PUBLIC
-   "-//W3C//ENTITIES Latin 1 for XHTML//EN"
-   "xhtml-lat1.ent">
-%HTMLlat1;
-
-<!ENTITY % HTMLsymbol PUBLIC
-   "-//W3C//ENTITIES Symbols for XHTML//EN"
-   "xhtml-symbol.ent">
-%HTMLsymbol;
-
-<!ENTITY % HTMLspecial PUBLIC
-   "-//W3C//ENTITIES Special for XHTML//EN"
-   "xhtml-special.ent">
-%HTMLspecial;
-
-<!--================== Imported Names ====================================-->
-
-<!ENTITY % ContentType "CDATA">
-    <!-- media type, as per [RFC2045] -->
-
-<!ENTITY % ContentTypes "CDATA">
-    <!-- comma-separated list of media types, as per [RFC2045] -->
-
-<!ENTITY % Charset "CDATA">
-    <!-- a character encoding, as per [RFC2045] -->
-
-<!ENTITY % Charsets "CDATA">
-    <!-- a space separated list of character encodings, as per [RFC2045] -->
-
-<!ENTITY % LanguageCode "NMTOKEN">
-    <!-- a language code, as per [RFC3066] -->
-
-<!ENTITY % Character "CDATA">
-    <!-- a single character, as per section 2.2 of [XML] -->
-
-<!ENTITY % Number "CDATA">
-    <!-- one or more digits -->
-
-<!ENTITY % LinkTypes "CDATA">
-    <!-- space-separated list of link types -->
-
-<!ENTITY % MediaDesc "CDATA">
-    <!-- single or comma-separated list of media descriptors -->
-
-<!ENTITY % URI "CDATA">
-    <!-- a Uniform Resource Identifier, see [RFC2396] -->
-
-<!ENTITY % UriList "CDATA">
-    <!-- a space separated list of Uniform Resource Identifiers -->
-
-<!ENTITY % Datetime "CDATA">
-    <!-- date and time information. ISO date format -->
-
-<!ENTITY % Script "CDATA">
-    <!-- script expression -->
-
-<!ENTITY % StyleSheet "CDATA">
-    <!-- style sheet data -->
-
-<!ENTITY % Text "CDATA">
-    <!-- used for titles etc. -->
-
-<!ENTITY % FrameTarget "NMTOKEN">
-    <!-- render in this frame -->
-
-<!ENTITY % Length "CDATA">
-    <!-- nn for pixels or nn% for percentage length -->
-
-<!ENTITY % MultiLength "CDATA">
-    <!-- pixel, percentage, or relative -->
-
-<!ENTITY % Pixels "CDATA">
-    <!-- integer representing length in pixels -->
-
-<!-- these are used for image maps -->
-
-<!ENTITY % Shape "(rect|circle|poly|default)">
-
-<!ENTITY % Coords "CDATA">
-    <!-- comma separated list of lengths -->
-
-<!-- used for object, applet, img, input and iframe -->
-<!ENTITY % ImgAlign "(top|middle|bottom|left|right)">
-
-<!-- a color using sRGB: #RRGGBB as Hex values -->
-<!ENTITY % Color "CDATA">
-
-<!-- There are also 16 widely known color names with their sRGB values:
-
-    Black  = #000000    Green  = #008000
-    Silver = #C0C0C0    Lime   = #00FF00
-    Gray   = #808080    Olive  = #808000
-    White  = #FFFFFF    Yellow = #FFFF00
-    Maroon = #800000    Navy   = #000080
-    Red    = #FF0000    Blue   = #0000FF
-    Purple = #800080    Teal   = #008080
-    Fuchsia= #FF00FF    Aqua   = #00FFFF
--->
-
-<!--=================== Generic Attributes ===============================-->
-
-<!-- core attributes common to most elements
-  id       document-wide unique id
-  class    space separated list of classes
-  style    associated style info
-  title    advisory title/amplification
--->
-<!ENTITY % coreattrs
- "id          ID             #IMPLIED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED"
-  >
-
-<!-- internationalization attributes
-  lang        language code (backwards compatible)
-  xml:lang    language code (as per XML 1.0 spec)
-  dir         direction for weak/neutral text
--->
-<!ENTITY % i18n
- "lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #IMPLIED"
-  >
-
-<!-- attributes for common UI events
-  onclick     a pointer button was clicked
-  ondblclick  a pointer button was double clicked
-  onmousedown a pointer button was pressed down
-  onmouseup   a pointer button was released
-  onmousemove a pointer was moved onto the element
-  onmouseout  a pointer was moved away from the element
-  onkeypress  a key was pressed and released
-  onkeydown   a key was pressed down
-  onkeyup     a key was released
--->
-<!ENTITY % events
- "onclick     %Script;       #IMPLIED
-  ondblclick  %Script;       #IMPLIED
-  onmousedown %Script;       #IMPLIED
-  onmouseup   %Script;       #IMPLIED
-  onmouseover %Script;       #IMPLIED
-  onmousemove %Script;       #IMPLIED
-  onmouseout  %Script;       #IMPLIED
-  onkeypress  %Script;       #IMPLIED
-  onkeydown   %Script;       #IMPLIED
-  onkeyup     %Script;       #IMPLIED"
-  >
-
-<!-- attributes for elements that can get the focus
-  accesskey   accessibility key character
-  tabindex    position in tabbing order
-  onfocus     the element got the focus
-  onblur      the element lost the focus
--->
-<!ENTITY % focus
- "accesskey   %Character;    #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED"
-  >
-
-<!ENTITY % attrs "%coreattrs; %i18n; %events;">
-
-<!-- text alignment for p, div, h1-h6. The default is
-     align="left" for ltr headings, "right" for rtl -->
-
-<!ENTITY % TextAlign "align (left|center|right|justify) #IMPLIED">
-
-<!--=================== Text Elements ====================================-->
-
-<!ENTITY % special.extra
-   "object | applet | img | map | iframe">
-	
-<!ENTITY % special.basic
-	"br | span | bdo">
-
-<!ENTITY % special
-   "%special.basic; | %special.extra;">
-
-<!ENTITY % fontstyle.extra "big | small | font | basefont">
-
-<!ENTITY % fontstyle.basic "tt | i | b | u
-                      | s | strike ">
-
-<!ENTITY % fontstyle "%fontstyle.basic; | %fontstyle.extra;">
-
-<!ENTITY % phrase.extra "sub | sup">
-<!ENTITY % phrase.basic "em | strong | dfn | code | q |
-                   samp | kbd | var | cite | abbr | acronym">
-
-<!ENTITY % phrase "%phrase.basic; | %phrase.extra;">
-
-<!ENTITY % inline.forms "input | select | textarea | label | button">
-
-<!-- these can occur at block or inline level -->
-<!ENTITY % misc.inline "ins | del | script">
-
-<!-- these can only occur at block level -->
-<!ENTITY % misc "noscript | %misc.inline;">
-
-<!ENTITY % inline "a | %special; | %fontstyle; | %phrase; | %inline.forms;">
-
-<!-- %Inline; covers inline or "text-level" elements -->
-<!ENTITY % Inline "(#PCDATA | %inline; | %misc.inline;)*">
-
-<!--================== Block level elements ==============================-->
-
-<!ENTITY % heading "h1|h2|h3|h4|h5|h6">
-<!ENTITY % lists "ul | ol | dl | menu | dir">
-<!ENTITY % blocktext "pre | hr | blockquote | address | center | noframes">
-
-<!ENTITY % block
-    "p | %heading; | div | %lists; | %blocktext; | isindex |fieldset | table">
-
-<!-- %Flow; mixes block and inline and is used for list items etc. -->
-<!ENTITY % Flow "(#PCDATA | %block; | form | %inline; | %misc;)*">
-
-<!--================== Content models for exclusions =====================-->
-
-<!-- a elements use %Inline; excluding a -->
-
-<!ENTITY % a.content
-   "(#PCDATA | %special; | %fontstyle; | %phrase; | %inline.forms; | %misc.inline;)*">
-
-<!-- pre uses %Inline excluding img, object, applet, big, small,
-     font, or basefont -->
-
-<!ENTITY % pre.content
-   "(#PCDATA | a | %special.basic; | %fontstyle.basic; | %phrase.basic; |
-	   %inline.forms; | %misc.inline;)*">
-
-<!-- form uses %Flow; excluding form -->
-
-<!ENTITY % form.content "(#PCDATA | %block; | %inline; | %misc;)*">
-
-<!-- button uses %Flow; but excludes a, form, form controls, iframe -->
-
-<!ENTITY % button.content
-   "(#PCDATA | p | %heading; | div | %lists; | %blocktext; |
-      table | br | span | bdo | object | applet | img | map |
-      %fontstyle; | %phrase; | %misc;)*">
-
-<!--================ Document Structure ==================================-->
-
-<!-- the namespace URI designates the document profile -->
-
-<!ELEMENT html (head, body)>
-<!ATTLIST html
-  %i18n;
-  id          ID             #IMPLIED
-  xmlns       %URI;          #FIXED 'http://www.w3.org/1999/xhtml'
-  >
-
-<!--================ Document Head =======================================-->
-
-<!ENTITY % head.misc "(script|style|meta|link|object|isindex)*">
-
-<!-- content model is %head.misc; combined with a single
-     title and an optional base element in any order -->
-
-<!ELEMENT head (%head.misc;,
-     ((title, %head.misc;, (base, %head.misc;)?) |
-      (base, %head.misc;, (title, %head.misc;))))>
-
-<!ATTLIST head
-  %i18n;
-  id          ID             #IMPLIED
-  profile     %URI;          #IMPLIED
-  >
-
-<!-- The title element is not considered part of the flow of text.
-       It should be displayed, for example as the page header or
-       window title. Exactly one title is required per document.
-    -->
-<!ELEMENT title (#PCDATA)>
-<!ATTLIST title 
-  %i18n;
-  id          ID             #IMPLIED
-  >
-
-<!-- document base URI -->
-
-<!ELEMENT base EMPTY>
-<!ATTLIST base
-  id          ID             #IMPLIED
-  href        %URI;          #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- generic metainformation -->
-<!ELEMENT meta EMPTY>
-<!ATTLIST meta
-  %i18n;
-  id          ID             #IMPLIED
-  http-equiv  CDATA          #IMPLIED
-  name        CDATA          #IMPLIED
-  content     CDATA          #REQUIRED
-  scheme      CDATA          #IMPLIED
-  >
-
-<!--
-  Relationship values can be used in principle:
-
-   a) for document specific toolbars/menus when used
-      with the link element in document head e.g.
-        start, contents, previous, next, index, end, help
-   b) to link to a separate style sheet (rel="stylesheet")
-   c) to make a link to a script (rel="script")
-   d) by stylesheets to control how collections of
-      html nodes are rendered into printed documents
-   e) to make a link to a printable version of this document
-      e.g. a PostScript or PDF version (rel="alternate" media="print")
--->
-
-<!ELEMENT link EMPTY>
-<!ATTLIST link
-  %attrs;
-  charset     %Charset;      #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  type        %ContentType;  #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  media       %MediaDesc;    #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!-- style info, which may include CDATA sections -->
-<!ELEMENT style (#PCDATA)>
-<!ATTLIST style
-  %i18n;
-  id          ID             #IMPLIED
-  type        %ContentType;  #REQUIRED
-  media       %MediaDesc;    #IMPLIED
-  title       %Text;         #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- script statements, which may include CDATA sections -->
-<!ELEMENT script (#PCDATA)>
-<!ATTLIST script
-  id          ID             #IMPLIED
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #REQUIRED
-  language    CDATA          #IMPLIED
-  src         %URI;          #IMPLIED
-  defer       (defer)        #IMPLIED
-  xml:space   (preserve)     #FIXED 'preserve'
-  >
-
-<!-- alternate content container for non script-based rendering -->
-
-<!ELEMENT noscript %Flow;>
-<!ATTLIST noscript
-  %attrs;
-  >
-
-<!--======================= Frames =======================================-->
-
-<!-- inline subwindow -->
-
-<!ELEMENT iframe %Flow;>
-<!ATTLIST iframe
-  %coreattrs;
-  longdesc    %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  src         %URI;          #IMPLIED
-  frameborder (1|0)          "1"
-  marginwidth %Pixels;       #IMPLIED
-  marginheight %Pixels;      #IMPLIED
-  scrolling   (yes|no|auto)  "auto"
-  align       %ImgAlign;     #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!-- alternate content container for non frame-based rendering -->
-
-<!ELEMENT noframes %Flow;>
-<!ATTLIST noframes
-  %attrs;
-  >
-
-<!--=================== Document Body ====================================-->
-
-<!ELEMENT body %Flow;>
-<!ATTLIST body
-  %attrs;
-  onload      %Script;       #IMPLIED
-  onunload    %Script;       #IMPLIED
-  background  %URI;          #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  text        %Color;        #IMPLIED
-  link        %Color;        #IMPLIED
-  vlink       %Color;        #IMPLIED
-  alink       %Color;        #IMPLIED
-  >
-
-<!ELEMENT div %Flow;>  <!-- generic language/style container -->
-<!ATTLIST div
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Paragraphs =======================================-->
-
-<!ELEMENT p %Inline;>
-<!ATTLIST p
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Headings =========================================-->
-
-<!--
-  There are six levels of headings from h1 (the most important)
-  to h6 (the least important).
--->
-
-<!ELEMENT h1  %Inline;>
-<!ATTLIST h1
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h2 %Inline;>
-<!ATTLIST h2
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h3 %Inline;>
-<!ATTLIST h3
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h4 %Inline;>
-<!ATTLIST h4
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h5 %Inline;>
-<!ATTLIST h5
-  %attrs;
-  %TextAlign;
-  >
-
-<!ELEMENT h6 %Inline;>
-<!ATTLIST h6
-  %attrs;
-  %TextAlign;
-  >
-
-<!--=================== Lists ============================================-->
-
-<!-- Unordered list bullet styles -->
-
-<!ENTITY % ULStyle "(disc|square|circle)">
-
-<!-- Unordered list -->
-
-<!ELEMENT ul (li)+>
-<!ATTLIST ul
-  %attrs;
-  type        %ULStyle;     #IMPLIED
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- Ordered list numbering style
-
-    1   arabic numbers      1, 2, 3, ...
-    a   lower alpha         a, b, c, ...
-    A   upper alpha         A, B, C, ...
-    i   lower roman         i, ii, iii, ...
-    I   upper roman         I, II, III, ...
-
-    The style is applied to the sequence number which by default
-    is reset to 1 for the first list item in an ordered list.
--->
-<!ENTITY % OLStyle "CDATA">
-
-<!-- Ordered (numbered) list -->
-
-<!ELEMENT ol (li)+>
-<!ATTLIST ol
-  %attrs;
-  type        %OLStyle;      #IMPLIED
-  compact     (compact)      #IMPLIED
-  start       %Number;       #IMPLIED
-  >
-
-<!-- single column list (DEPRECATED) --> 
-<!ELEMENT menu (li)+>
-<!ATTLIST menu
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- multiple column list (DEPRECATED) --> 
-<!ELEMENT dir (li)+>
-<!ATTLIST dir
-  %attrs;
-  compact     (compact)     #IMPLIED
-  >
-
-<!-- LIStyle is constrained to: "(%ULStyle;|%OLStyle;)" -->
-<!ENTITY % LIStyle "CDATA">
-
-<!-- list item -->
-
-<!ELEMENT li %Flow;>
-<!ATTLIST li
-  %attrs;
-  type        %LIStyle;      #IMPLIED
-  value       %Number;       #IMPLIED
-  >
-
-<!-- definition lists - dt for term, dd for its definition -->
-
-<!ELEMENT dl (dt|dd)+>
-<!ATTLIST dl
-  %attrs;
-  compact     (compact)      #IMPLIED
-  >
-
-<!ELEMENT dt %Inline;>
-<!ATTLIST dt
-  %attrs;
-  >
-
-<!ELEMENT dd %Flow;>
-<!ATTLIST dd
-  %attrs;
-  >
-
-<!--=================== Address ==========================================-->
-
-<!-- information on author -->
-
-<!ELEMENT address (#PCDATA | %inline; | %misc.inline; | p)*>
-<!ATTLIST address
-  %attrs;
-  >
-
-<!--=================== Horizontal Rule ==================================-->
-
-<!ELEMENT hr EMPTY>
-<!ATTLIST hr
-  %attrs;
-  align       (left|center|right) #IMPLIED
-  noshade     (noshade)      #IMPLIED
-  size        %Pixels;       #IMPLIED
-  width       %Length;       #IMPLIED
-  >
-
-<!--=================== Preformatted Text ================================-->
-
-<!-- content is %Inline; excluding 
-        "img|object|applet|big|small|sub|sup|font|basefont" -->
-
-<!ELEMENT pre %pre.content;>
-<!ATTLIST pre
-  %attrs;
-  width       %Number;      #IMPLIED
-  xml:space   (preserve)    #FIXED 'preserve'
-  >
-
-<!--=================== Block-like Quotes ================================-->
-
-<!ELEMENT blockquote %Flow;>
-<!ATTLIST blockquote
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!--=================== Text alignment ===================================-->
-
-<!-- center content -->
-<!ELEMENT center %Flow;>
-<!ATTLIST center
-  %attrs;
-  >
-
-<!--=================== Inserted/Deleted Text ============================-->
-
-<!--
-  ins/del are allowed in block and inline content, but its
-  inappropriate to include block content within an ins element
-  occurring in inline content.
--->
-<!ELEMENT ins %Flow;>
-<!ATTLIST ins
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!ELEMENT del %Flow;>
-<!ATTLIST del
-  %attrs;
-  cite        %URI;          #IMPLIED
-  datetime    %Datetime;     #IMPLIED
-  >
-
-<!--================== The Anchor Element ================================-->
-
-<!-- content is %Inline; except that anchors shouldn't be nested -->
-
-<!ELEMENT a %a.content;>
-<!ATTLIST a
-  %attrs;
-  %focus;
-  charset     %Charset;      #IMPLIED
-  type        %ContentType;  #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  href        %URI;          #IMPLIED
-  hreflang    %LanguageCode; #IMPLIED
-  rel         %LinkTypes;    #IMPLIED
-  rev         %LinkTypes;    #IMPLIED
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--===================== Inline Elements ================================-->
-
-<!ELEMENT span %Inline;> <!-- generic language/style container -->
-<!ATTLIST span
-  %attrs;
-  >
-
-<!ELEMENT bdo %Inline;>  <!-- I18N BiDi over-ride -->
-<!ATTLIST bdo
-  %coreattrs;
-  %events;
-  lang        %LanguageCode; #IMPLIED
-  xml:lang    %LanguageCode; #IMPLIED
-  dir         (ltr|rtl)      #REQUIRED
-  >
-
-<!ELEMENT br EMPTY>   <!-- forced line break -->
-<!ATTLIST br
-  %coreattrs;
-  clear       (left|all|right|none) "none"
-  >
-
-<!ELEMENT em %Inline;>   <!-- emphasis -->
-<!ATTLIST em %attrs;>
-
-<!ELEMENT strong %Inline;>   <!-- strong emphasis -->
-<!ATTLIST strong %attrs;>
-
-<!ELEMENT dfn %Inline;>   <!-- definitional -->
-<!ATTLIST dfn %attrs;>
-
-<!ELEMENT code %Inline;>   <!-- program code -->
-<!ATTLIST code %attrs;>
-
-<!ELEMENT samp %Inline;>   <!-- sample -->
-<!ATTLIST samp %attrs;>
-
-<!ELEMENT kbd %Inline;>  <!-- something user would type -->
-<!ATTLIST kbd %attrs;>
-
-<!ELEMENT var %Inline;>   <!-- variable -->
-<!ATTLIST var %attrs;>
-
-<!ELEMENT cite %Inline;>   <!-- citation -->
-<!ATTLIST cite %attrs;>
-
-<!ELEMENT abbr %Inline;>   <!-- abbreviation -->
-<!ATTLIST abbr %attrs;>
-
-<!ELEMENT acronym %Inline;>   <!-- acronym -->
-<!ATTLIST acronym %attrs;>
-
-<!ELEMENT q %Inline;>   <!-- inlined quote -->
-<!ATTLIST q
-  %attrs;
-  cite        %URI;          #IMPLIED
-  >
-
-<!ELEMENT sub %Inline;> <!-- subscript -->
-<!ATTLIST sub %attrs;>
-
-<!ELEMENT sup %Inline;> <!-- superscript -->
-<!ATTLIST sup %attrs;>
-
-<!ELEMENT tt %Inline;>   <!-- fixed pitch font -->
-<!ATTLIST tt %attrs;>
-
-<!ELEMENT i %Inline;>   <!-- italic font -->
-<!ATTLIST i %attrs;>
-
-<!ELEMENT b %Inline;>   <!-- bold font -->
-<!ATTLIST b %attrs;>
-
-<!ELEMENT big %Inline;>   <!-- bigger font -->
-<!ATTLIST big %attrs;>
-
-<!ELEMENT small %Inline;>   <!-- smaller font -->
-<!ATTLIST small %attrs;>
-
-<!ELEMENT u %Inline;>   <!-- underline -->
-<!ATTLIST u %attrs;>
-
-<!ELEMENT s %Inline;>   <!-- strike-through -->
-<!ATTLIST s %attrs;>
-
-<!ELEMENT strike %Inline;>   <!-- strike-through -->
-<!ATTLIST strike %attrs;>
-
-<!ELEMENT basefont EMPTY>  <!-- base font size -->
-<!ATTLIST basefont
-  id          ID             #IMPLIED
-  size        CDATA          #REQUIRED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!ELEMENT font %Inline;> <!-- local change to font -->
-<!ATTLIST font
-  %coreattrs;
-  %i18n;
-  size        CDATA          #IMPLIED
-  color       %Color;        #IMPLIED
-  face        CDATA          #IMPLIED
-  >
-
-<!--==================== Object ======================================-->
-<!--
-  object is used to embed objects as part of HTML pages.
-  param elements should precede other content. Parameters
-  can also be expressed as attribute/value pairs on the
-  object element itself when brevity is desired.
--->
-
-<!ELEMENT object (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST object
-  %attrs;
-  declare     (declare)      #IMPLIED
-  classid     %URI;          #IMPLIED
-  codebase    %URI;          #IMPLIED
-  data        %URI;          #IMPLIED
-  type        %ContentType;  #IMPLIED
-  codetype    %ContentType;  #IMPLIED
-  archive     %UriList;      #IMPLIED
-  standby     %Text;         #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Pixels;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--
-  param is used to supply a named property value.
-  In XML it would seem natural to follow RDF and support an
-  abbreviated syntax where the param elements are replaced
-  by attribute value pairs on the object start tag.
--->
-<!ELEMENT param EMPTY>
-<!ATTLIST param
-  id          ID             #IMPLIED
-  name        CDATA          #REQUIRED
-  value       CDATA          #IMPLIED
-  valuetype   (data|ref|object) "data"
-  type        %ContentType;  #IMPLIED
-  >
-
-<!--=================== Java applet ==================================-->
-<!--
-  One of code or object attributes must be present.
-  Place param elements before other content.
--->
-<!ELEMENT applet (#PCDATA | param | %block; | form | %inline; | %misc;)*>
-<!ATTLIST applet
-  %coreattrs;
-  codebase    %URI;          #IMPLIED
-  archive     CDATA          #IMPLIED
-  code        CDATA          #IMPLIED
-  object      CDATA          #IMPLIED
-  alt         %Text;         #IMPLIED
-  name        NMTOKEN        #IMPLIED
-  width       %Length;       #REQUIRED
-  height      %Length;       #REQUIRED
-  align       %ImgAlign;     #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!--=================== Images ===========================================-->
-
-<!--
-   To avoid accessibility problems for people who aren't
-   able to see the image, you should provide a text
-   description using the alt and longdesc attributes.
-   In addition, avoid the use of server-side image maps.
--->
-
-<!ELEMENT img EMPTY>
-<!ATTLIST img
-  %attrs;
-  src         %URI;          #REQUIRED
-  alt         %Text;         #REQUIRED
-  name        NMTOKEN        #IMPLIED
-  longdesc    %URI;          #IMPLIED
-  height      %Length;       #IMPLIED
-  width       %Length;       #IMPLIED
-  usemap      %URI;          #IMPLIED
-  ismap       (ismap)        #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  border      %Length;       #IMPLIED
-  hspace      %Pixels;       #IMPLIED
-  vspace      %Pixels;       #IMPLIED
-  >
-
-<!-- usemap points to a map element which may be in this document
-  or an external document, although the latter is not widely supported -->
-
-<!--================== Client-side image maps ============================-->
-
-<!-- These can be placed in the same document or grouped in a
-     separate document although this isn't yet widely supported -->
-
-<!ELEMENT map ((%block; | form | %misc;)+ | area+)>
-<!ATTLIST map
-  %i18n;
-  %events;
-  id          ID             #REQUIRED
-  class       CDATA          #IMPLIED
-  style       %StyleSheet;   #IMPLIED
-  title       %Text;         #IMPLIED
-  name        CDATA          #IMPLIED
-  >
-
-<!ELEMENT area EMPTY>
-<!ATTLIST area
-  %attrs;
-  %focus;
-  shape       %Shape;        "rect"
-  coords      %Coords;       #IMPLIED
-  href        %URI;          #IMPLIED
-  nohref      (nohref)       #IMPLIED
-  alt         %Text;         #REQUIRED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--================ Forms ===============================================-->
-
-<!ELEMENT form %form.content;>   <!-- forms shouldn't be nested -->
-
-<!ATTLIST form
-  %attrs;
-  action      %URI;          #REQUIRED
-  method      (get|post)     "get"
-  name        NMTOKEN        #IMPLIED
-  enctype     %ContentType;  "application/x-www-form-urlencoded"
-  onsubmit    %Script;       #IMPLIED
-  onreset     %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  accept-charset %Charsets;  #IMPLIED
-  target      %FrameTarget;  #IMPLIED
-  >
-
-<!--
-  Each label must not contain more than ONE field
-  Label elements shouldn't be nested.
--->
-<!ELEMENT label %Inline;>
-<!ATTLIST label
-  %attrs;
-  for         IDREF          #IMPLIED
-  accesskey   %Character;    #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  >
-
-<!ENTITY % InputType
-  "(text | password | checkbox |
-    radio | submit | reset |
-    file | hidden | image | button)"
-   >
-
-<!-- the name attribute is required for all but submit & reset -->
-
-<!ELEMENT input EMPTY>     <!-- form control -->
-<!ATTLIST input
-  %attrs;
-  %focus;
-  type        %InputType;    "text"
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  checked     (checked)      #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  size        CDATA          #IMPLIED
-  maxlength   %Number;       #IMPLIED
-  src         %URI;          #IMPLIED
-  alt         CDATA          #IMPLIED
-  usemap      %URI;          #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  accept      %ContentTypes; #IMPLIED
-  align       %ImgAlign;     #IMPLIED
-  >
-
-<!ELEMENT select (optgroup|option)+>  <!-- option selector -->
-<!ATTLIST select
-  %attrs;
-  name        CDATA          #IMPLIED
-  size        %Number;       #IMPLIED
-  multiple    (multiple)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  tabindex    %Number;       #IMPLIED
-  onfocus     %Script;       #IMPLIED
-  onblur      %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!ELEMENT optgroup (option)+>   <!-- option group -->
-<!ATTLIST optgroup
-  %attrs;
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #REQUIRED
-  >
-
-<!ELEMENT option (#PCDATA)>     <!-- selectable choice -->
-<!ATTLIST option
-  %attrs;
-  selected    (selected)     #IMPLIED
-  disabled    (disabled)     #IMPLIED
-  label       %Text;         #IMPLIED
-  value       CDATA          #IMPLIED
-  >
-
-<!ELEMENT textarea (#PCDATA)>     <!-- multi-line text field -->
-<!ATTLIST textarea
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  rows        %Number;       #REQUIRED
-  cols        %Number;       #REQUIRED
-  disabled    (disabled)     #IMPLIED
-  readonly    (readonly)     #IMPLIED
-  onselect    %Script;       #IMPLIED
-  onchange    %Script;       #IMPLIED
-  >
-
-<!--
-  The fieldset element is used to group form fields.
-  Only one legend element should occur in the content
-  and if present should only be preceded by whitespace.
--->
-<!ELEMENT fieldset (#PCDATA | legend | %block; | form | %inline; | %misc;)*>
-<!ATTLIST fieldset
-  %attrs;
-  >
-
-<!ENTITY % LAlign "(top|bottom|left|right)">
-
-<!ELEMENT legend %Inline;>     <!-- fieldset label -->
-<!ATTLIST legend
-  %attrs;
-  accesskey   %Character;    #IMPLIED
-  align       %LAlign;       #IMPLIED
-  >
-
-<!--
- Content is %Flow; excluding a, form, form controls, iframe
---> 
-<!ELEMENT button %button.content;>  <!-- push button -->
-<!ATTLIST button
-  %attrs;
-  %focus;
-  name        CDATA          #IMPLIED
-  value       CDATA          #IMPLIED
-  type        (button|submit|reset) "submit"
-  disabled    (disabled)     #IMPLIED
-  >
-
-<!-- single-line text input control (DEPRECATED) -->
-<!ELEMENT isindex EMPTY>
-<!ATTLIST isindex
-  %coreattrs;
-  %i18n;
-  prompt      %Text;         #IMPLIED
-  >
-
-<!--======================= Tables =======================================-->
-
-<!-- Derived from IETF HTML table standard, see [RFC1942] -->
-
-<!--
- The border attribute sets the thickness of the frame around the
- table. The default units are screen pixels.
-
- The frame attribute specifies which parts of the frame around
- the table should be rendered. The values are not the same as
- CALS to avoid a name clash with the valign attribute.
--->
-<!ENTITY % TFrame "(void|above|below|hsides|lhs|rhs|vsides|box|border)">
-
-<!--
- The rules attribute defines which rules to draw between cells:
-
- If rules is absent then assume:
-     "none" if border is absent or border="0" otherwise "all"
--->
-
-<!ENTITY % TRules "(none | groups | rows | cols | all)">
-  
-<!-- horizontal placement of table relative to document -->
-<!ENTITY % TAlign "(left|center|right)">
-
-<!-- horizontal alignment attributes for cell contents
-
-  char        alignment char, e.g. char=':'
-  charoff     offset for alignment char
--->
-<!ENTITY % cellhalign
-  "align      (left|center|right|justify|char) #IMPLIED
-   char       %Character;    #IMPLIED
-   charoff    %Length;       #IMPLIED"
-  >
-
-<!-- vertical alignment attributes for cell contents -->
-<!ENTITY % cellvalign
-  "valign     (top|middle|bottom|baseline) #IMPLIED"
-  >
-
-<!ELEMENT table
-     (caption?, (col*|colgroup*), thead?, tfoot?, (tbody+|tr+))>
-<!ELEMENT caption  %Inline;>
-<!ELEMENT thead    (tr)+>
-<!ELEMENT tfoot    (tr)+>
-<!ELEMENT tbody    (tr)+>
-<!ELEMENT colgroup (col)*>
-<!ELEMENT col      EMPTY>
-<!ELEMENT tr       (th|td)+>
-<!ELEMENT th       %Flow;>
-<!ELEMENT td       %Flow;>
-
-<!ATTLIST table
-  %attrs;
-  summary     %Text;         #IMPLIED
-  width       %Length;       #IMPLIED
-  border      %Pixels;       #IMPLIED
-  frame       %TFrame;       #IMPLIED
-  rules       %TRules;       #IMPLIED
-  cellspacing %Length;       #IMPLIED
-  cellpadding %Length;       #IMPLIED
-  align       %TAlign;       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!ENTITY % CAlign "(top|bottom|left|right)">
-
-<!ATTLIST caption
-  %attrs;
-  align       %CAlign;       #IMPLIED
-  >
-
-<!--
-colgroup groups a set of col elements. It allows you to group
-several semantically related columns together.
--->
-<!ATTLIST colgroup
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
- col elements define the alignment properties for cells in
- one or more columns.
-
- The width attribute specifies the width of the columns, e.g.
-
-     width=64        width in screen pixels
-     width=0.5*      relative width of 0.5
-
- The span attribute causes the attributes of one
- col element to apply to more than one column.
--->
-<!ATTLIST col
-  %attrs;
-  span        %Number;       "1"
-  width       %MultiLength;  #IMPLIED
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!--
-    Use thead to duplicate headers when breaking table
-    across page boundaries, or for static headers when
-    tbody sections are rendered in scrolling panel.
-
-    Use tfoot to duplicate footers when breaking table
-    across page boundaries, or for static footers when
-    tbody sections are rendered in scrolling panel.
-
-    Use multiple tbody sections when rules are needed
-    between groups of table rows.
--->
-<!ATTLIST thead
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tfoot
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tbody
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  >
-
-<!ATTLIST tr
-  %attrs;
-  %cellhalign;
-  %cellvalign;
-  bgcolor     %Color;        #IMPLIED
-  >
-
-<!-- Scope is simpler than headers attribute for common tables -->
-<!ENTITY % Scope "(row|col|rowgroup|colgroup)">
-
-<!-- th is for headers, td for data and for cells acting as both -->
-
-<!ATTLIST th
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
-<!ATTLIST td
-  %attrs;
-  abbr        %Text;         #IMPLIED
-  axis        CDATA          #IMPLIED
-  headers     IDREFS         #IMPLIED
-  scope       %Scope;        #IMPLIED
-  rowspan     %Number;       "1"
-  colspan     %Number;       "1"
-  %cellhalign;
-  %cellvalign;
-  nowrap      (nowrap)       #IMPLIED
-  bgcolor     %Color;        #IMPLIED
-  width       %Length;       #IMPLIED
-  height      %Length;       #IMPLIED
-  >
-
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/structure/StructureStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/structure/StructureStrings.properties
deleted file mode 100644
index 44d1d1f..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/structure/StructureStrings.properties
+++ /dev/null
@@ -1,35 +0,0 @@
-# Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-missing-parameters=Parameter(s) '%s' are required for %s, but have not been bound.
-unknown-mixin=Component %s does not contain a mixin of type %s.
-detach-failure=Listener %s failed during page detach: %s
-wrong-phase-result-type=The return value from a render phase event method was not compatible with the expected return type. Expected is a component, a block or an instance of %s. \
-  You should change the method to return the correct type. 
-block-not-found=Template for component %s does not contain a block with identifier '%s'.
-unbalanced-elements=Component %s has rendered unbalanced elements; \
-  either it has started an element with MarkupWriter.element() and not followed up with MarkupWriter.end(), or \
-  it has invoked MarkupWriter.end() without first invoking MarkupWriter.element().
-page-is-dirty=Page %s was stored into the page pool in a dirty state. This should never happen, \
-  and may indicate that a reference to the page (or component within the page) was retained past the end of a request.
-duplicate-child-component=Component %s already contains a child component with id '%s'. \
-  Embedded component ids must be unique (excluding case, which is ignored).
-original-child-component=Component %s declared original child component with id '%s' in %s on line %s.
-duplicate-block=Component %s already contains a block with id '%s'. \
-  Block ids must be unique (excluding case, which is ignored).
-field-persist-failure=Error persisting field %s:%s: %s
-missing-render-variable=Component %s does not contain a stored render variable with name '%s'.  Stored render variables: %s.
-render-variable-set-when-not-rendering=Component %s is not rendering, so render variable '%s' may not be updated.
-persist-change-before-load-complete=Persistent fields may not be updated until after the page has finished loading. \
-  This may be due to a persistent field with a default value. The default value should be removed.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/transform/TransformStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/transform/TransformStrings.properties
deleted file mode 100644
index 9586c5a..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/transform/TransformStrings.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2008, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-field-injection-error=Error obtaining injected value for field %s.%s: %s
-illegal-number-of-page-activation-context-handlers=Illegal number of fields annotated with @PageActivationContext: %s. Only one field is allowed.
-bad-mixin-constraint-length=%d mixins defined via @MixinClasses on field '%s', but %d ordering constraints \
- specified (expected 0 or %1$d).
-bind-parameter-only-on-mixin=@BindParameter was used on field '%s' of component class '%s', but @BindParameter should \
-  only be used in mixins.
- 
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/util/UtilStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/util/UtilStrings.properties
deleted file mode 100644
index a2163e9..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/internal/util/UtilStrings.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2006, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-no-return-value-accepted=Event '%s' from %s received an event handler method return value of %s. \
-  This type of event does not support return values from event handler methods.
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/builder.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/builder.js
deleted file mode 100644
index f6c63b2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/builder.js
+++ /dev/null
@@ -1,136 +0,0 @@
-// script.aculo.us builder.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-var Builder = {

-  NODEMAP: {

-    AREA: 'map',

-    CAPTION: 'table',

-    COL: 'table',

-    COLGROUP: 'table',

-    LEGEND: 'fieldset',

-    OPTGROUP: 'select',

-    OPTION: 'select',

-    PARAM: 'object',

-    TBODY: 'table',

-    TD: 'table',

-    TFOOT: 'table',

-    TH: 'table',

-    THEAD: 'table',

-    TR: 'table'

-  },

-  // note: For Firefox < 1.5, OPTION and OPTGROUP tags are currently broken,

-  //       due to a Firefox bug

-  node: function(elementName) {

-    elementName = elementName.toUpperCase();

-

-    // try innerHTML approach

-    var parentTag = this.NODEMAP[elementName] || 'div';

-    var parentElement = document.createElement(parentTag);

-    try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707

-      parentElement.innerHTML = "<" + elementName + "></" + elementName + ">";

-    } catch(e) {}

-    var element = parentElement.firstChild || null;

-

-    // see if browser added wrapping tags

-    if(element && (element.tagName.toUpperCase() != elementName))

-      element = element.getElementsByTagName(elementName)[0];

-

-    // fallback to createElement approach

-    if(!element) element = document.createElement(elementName);

-

-    // abort if nothing could be created

-    if(!element) return;

-

-    // attributes (or text)

-    if(arguments[1])

-      if(this._isStringOrNumber(arguments[1]) ||

-        (arguments[1] instanceof Array) ||

-        arguments[1].tagName) {

-          this._children(element, arguments[1]);

-        } else {

-          var attrs = this._attributes(arguments[1]);

-          if(attrs.length) {

-            try { // prevent IE "feature": http://dev.rubyonrails.org/ticket/2707

-              parentElement.innerHTML = "<" +elementName + " " +

-                attrs + "></" + elementName + ">";

-            } catch(e) {}

-            element = parentElement.firstChild || null;

-            // workaround firefox 1.0.X bug

-            if(!element) {

-              element = document.createElement(elementName);

-              for(attr in arguments[1])

-                element[attr == 'class' ? 'className' : attr] = arguments[1][attr];

-            }

-            if(element.tagName.toUpperCase() != elementName)

-              element = parentElement.getElementsByTagName(elementName)[0];

-          }

-        }

-

-    // text, or array of children

-    if(arguments[2])

-      this._children(element, arguments[2]);

-

-     return $(element);

-  },

-  _text: function(text) {

-     return document.createTextNode(text);

-  },

-

-  ATTR_MAP: {

-    'className': 'class',

-    'htmlFor': 'for'

-  },

-

-  _attributes: function(attributes) {

-    var attrs = [];

-    for(attribute in attributes)

-      attrs.push((attribute in this.ATTR_MAP ? this.ATTR_MAP[attribute] : attribute) +

-          '="' + attributes[attribute].toString().escapeHTML().gsub(/"/,'&quot;') + '"');

-    return attrs.join(" ");

-  },

-  _children: function(element, children) {

-    if(children.tagName) {

-      element.appendChild(children);

-      return;

-    }

-    if(typeof children=='object') { // array can hold nodes and text

-      children.flatten().each( function(e) {

-        if(typeof e=='object')

-          element.appendChild(e);

-        else

-          if(Builder._isStringOrNumber(e))

-            element.appendChild(Builder._text(e));

-      });

-    } else

-      if(Builder._isStringOrNumber(children))

-        element.appendChild(Builder._text(children));

-  },

-  _isStringOrNumber: function(param) {

-    return(typeof param=='string' || typeof param=='number');

-  },

-  build: function(html) {

-    var element = this.node('div');

-    $(element).update(html.strip());

-    return element.down();

-  },

-  dump: function(scope) {

-    if(typeof scope != 'object' && typeof scope != 'function') scope = window; //global scope

-

-    var tags = ("A ABBR ACRONYM ADDRESS APPLET AREA B BASE BASEFONT BDO BIG BLOCKQUOTE BODY " +

-      "BR BUTTON CAPTION CENTER CITE CODE COL COLGROUP DD DEL DFN DIR DIV DL DT EM FIELDSET " +

-      "FONT FORM FRAME FRAMESET H1 H2 H3 H4 H5 H6 HEAD HR HTML I IFRAME IMG INPUT INS ISINDEX "+

-      "KBD LABEL LEGEND LI LINK MAP MENU META NOFRAMES NOSCRIPT OBJECT OL OPTGROUP OPTION P "+

-      "PARAM PRE Q S SAMP SCRIPT SELECT SMALL SPAN STRIKE STRONG STYLE SUB SUP TABLE TBODY TD "+

-      "TEXTAREA TFOOT TH THEAD TITLE TR TT U UL VAR").split(/\s+/);

-

-    tags.each( function(tag){

-      scope[tag] = function() {

-        return Builder.node.apply(Builder, [tag].concat($A(arguments)));

-      };

-    });

-  }

-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/controls.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/controls.js
deleted file mode 100644
index 3928513..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/controls.js
+++ /dev/null
@@ -1,965 +0,0 @@
-// script.aculo.us controls.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-//           (c) 2005-2010 Ivan Krstic (http://blogs.law.harvard.edu/ivan)

-//           (c) 2005-2010 Jon Tirsen (http://www.tirsen.com)

-// Contributors:

-//  Richard Livsey

-//  Rahul Bhargava

-//  Rob Wills

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-// Autocompleter.Base handles all the autocompletion functionality

-// that's independent of the data source for autocompletion. This

-// includes drawing the autocompletion menu, observing keyboard

-// and mouse events, and similar.

-//

-// Specific autocompleters need to provide, at the very least,

-// a getUpdatedChoices function that will be invoked every time

-// the text inside the monitored textbox changes. This method

-// should get the text for which to provide autocompletion by

-// invoking this.getToken(), NOT by directly accessing

-// this.element.value. This is to allow incremental tokenized

-// autocompletion. Specific auto-completion logic (AJAX, etc)

-// belongs in getUpdatedChoices.

-//

-// Tokenized incremental autocompletion is enabled automatically

-// when an autocompleter is instantiated with the 'tokens' option

-// in the options parameter, e.g.:

-// new Ajax.Autocompleter('id','upd', '/url/', { tokens: ',' });

-// will incrementally autocomplete with a comma as the token.

-// Additionally, ',' in the above example can be replaced with

-// a token array, e.g. { tokens: [',', '\n'] } which

-// enables autocompletion on multiple tokens. This is most

-// useful when one of the tokens is \n (a newline), as it

-// allows smart autocompletion after linebreaks.

-

-if(typeof Effect == 'undefined')

-  throw("controls.js requires including script.aculo.us' effects.js library");

-

-var Autocompleter = { };

-Autocompleter.Base = Class.create({

-  baseInitialize: function(element, update, options) {

-    element          = $(element);

-    this.element     = element;

-    this.update      = $(update);

-    this.hasFocus    = false;

-    this.changed     = false;

-    this.active      = false;

-    this.index       = 0;

-    this.entryCount  = 0;

-    this.oldElementValue = this.element.value;

-

-    if(this.setOptions)

-      this.setOptions(options);

-    else

-      this.options = options || { };

-

-    this.options.paramName    = this.options.paramName || this.element.name;

-    this.options.tokens       = this.options.tokens || [];

-    this.options.frequency    = this.options.frequency || 0.4;

-    this.options.minChars     = this.options.minChars || 1;

-    this.options.onShow       = this.options.onShow ||

-      function(element, update){

-        if(!update.style.position || update.style.position=='absolute') {

-          update.style.position = 'absolute';

-          Position.clone(element, update, {

-            setHeight: false,

-            offsetTop: element.offsetHeight

-          });

-        }

-        Effect.Appear(update,{duration:0.15});

-      };

-    this.options.onHide = this.options.onHide ||

-      function(element, update){ new Effect.Fade(update,{duration:0.15}) };

-

-    if(typeof(this.options.tokens) == 'string')

-      this.options.tokens = new Array(this.options.tokens);

-    // Force carriage returns as token delimiters anyway

-    if (!this.options.tokens.include('\n'))

-      this.options.tokens.push('\n');

-

-    this.observer = null;

-

-    this.element.setAttribute('autocomplete','off');

-

-    Element.hide(this.update);

-

-    Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));

-    Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));

-  },

-

-  show: function() {

-    if(Element.getStyle(this.update, 'display')=='none') this.options.onShow(this.element, this.update);

-    if(!this.iefix &&

-      (Prototype.Browser.IE) &&

-      (Element.getStyle(this.update, 'position')=='absolute')) {

-      new Insertion.After(this.update,

-       '<iframe id="' + this.update.id + '_iefix" '+

-       'style="display:none;position:absolute;filter:progid:DXImageTransform.Microsoft.Alpha(opacity=0);" ' +

-       'src="javascript:false;" frameborder="0" scrolling="no"></iframe>');

-      this.iefix = $(this.update.id+'_iefix');

-    }

-    if(this.iefix) setTimeout(this.fixIEOverlapping.bind(this), 50);

-  },

-

-  fixIEOverlapping: function() {

-    Position.clone(this.update, this.iefix, {setTop:(!this.update.style.height)});

-    this.iefix.style.zIndex = 1;

-    this.update.style.zIndex = 2;

-    Element.show(this.iefix);

-  },

-

-  hide: function() {

-    this.stopIndicator();

-    if(Element.getStyle(this.update, 'display')!='none') this.options.onHide(this.element, this.update);

-    if(this.iefix) Element.hide(this.iefix);

-  },

-

-  startIndicator: function() {

-    if(this.options.indicator) Element.show(this.options.indicator);

-  },

-

-  stopIndicator: function() {

-    if(this.options.indicator) Element.hide(this.options.indicator);

-  },

-

-  onKeyPress: function(event) {

-    if(this.active)

-      switch(event.keyCode) {

-       case Event.KEY_TAB:

-       case Event.KEY_RETURN:

-         this.selectEntry();

-         Event.stop(event);

-       case Event.KEY_ESC:

-         this.hide();

-         this.active = false;

-         Event.stop(event);

-         return;

-       case Event.KEY_LEFT:

-       case Event.KEY_RIGHT:

-         return;

-       case Event.KEY_UP:

-         this.markPrevious();

-         this.render();

-         Event.stop(event);

-         return;

-       case Event.KEY_DOWN:

-         this.markNext();

-         this.render();

-         Event.stop(event);

-         return;

-      }

-     else

-       if(event.keyCode==Event.KEY_TAB || event.keyCode==Event.KEY_RETURN ||

-         (Prototype.Browser.WebKit > 0 && event.keyCode == 0)) return;

-

-    this.changed = true;

-    this.hasFocus = true;

-

-    if(this.observer) clearTimeout(this.observer);

-      this.observer =

-        setTimeout(this.onObserverEvent.bind(this), this.options.frequency*1000);

-  },

-

-  activate: function() {

-    this.changed = false;

-    this.hasFocus = true;

-    this.getUpdatedChoices();

-  },

-

-  onHover: function(event) {

-    var element = Event.findElement(event, 'LI');

-    if(this.index != element.autocompleteIndex)

-    {

-        this.index = element.autocompleteIndex;

-        this.render();

-    }

-    Event.stop(event);

-  },

-

-  onClick: function(event) {

-    var element = Event.findElement(event, 'LI');

-    this.index = element.autocompleteIndex;

-    this.selectEntry();

-    this.hide();

-  },

-

-  onBlur: function(event) {

-    // needed to make click events working

-    setTimeout(this.hide.bind(this), 250);

-    this.hasFocus = false;

-    this.active = false;

-  },

-

-  render: function() {

-    if(this.entryCount > 0) {

-      for (var i = 0; i < this.entryCount; i++)

-        this.index==i ?

-          Element.addClassName(this.getEntry(i),"selected") :

-          Element.removeClassName(this.getEntry(i),"selected");

-      if(this.hasFocus) {

-        this.show();

-        this.active = true;

-      }

-    } else {

-      this.active = false;

-      this.hide();

-    }

-  },

-

-  markPrevious: function() {

-    if(this.index > 0) this.index--;

-      else this.index = this.entryCount-1;

-    this.getEntry(this.index).scrollIntoView(true);

-  },

-

-  markNext: function() {

-    if(this.index < this.entryCount-1) this.index++;

-      else this.index = 0;

-    this.getEntry(this.index).scrollIntoView(false);

-  },

-

-  getEntry: function(index) {

-    return this.update.firstChild.childNodes[index];

-  },

-

-  getCurrentEntry: function() {

-    return this.getEntry(this.index);

-  },

-

-  selectEntry: function() {

-    this.active = false;

-    this.updateElement(this.getCurrentEntry());

-  },

-

-  updateElement: function(selectedElement) {

-    if (this.options.updateElement) {

-      this.options.updateElement(selectedElement);

-      return;

-    }

-    var value = '';

-    if (this.options.select) {

-      var nodes = $(selectedElement).select('.' + this.options.select) || [];

-      if(nodes.length>0) value = Element.collectTextNodes(nodes[0], this.options.select);

-    } else

-      value = Element.collectTextNodesIgnoreClass(selectedElement, 'informal');

-

-    var bounds = this.getTokenBounds();

-    if (bounds[0] != -1) {

-      var newValue = this.element.value.substr(0, bounds[0]);

-      var whitespace = this.element.value.substr(bounds[0]).match(/^\s+/);

-      if (whitespace)

-        newValue += whitespace[0];

-      this.element.value = newValue + value + this.element.value.substr(bounds[1]);

-    } else {

-      this.element.value = value;

-    }

-    this.oldElementValue = this.element.value;

-    this.element.focus();

-

-    if (this.options.afterUpdateElement)

-      this.options.afterUpdateElement(this.element, selectedElement);

-  },

-

-  updateChoices: function(choices) {

-    if(!this.changed && this.hasFocus) {

-      this.update.innerHTML = choices;

-      Element.cleanWhitespace(this.update);

-      Element.cleanWhitespace(this.update.down());

-

-      if(this.update.firstChild && this.update.down().childNodes) {

-        this.entryCount =

-          this.update.down().childNodes.length;

-        for (var i = 0; i < this.entryCount; i++) {

-          var entry = this.getEntry(i);

-          entry.autocompleteIndex = i;

-          this.addObservers(entry);

-        }

-      } else {

-        this.entryCount = 0;

-      }

-

-      this.stopIndicator();

-      this.index = 0;

-

-      if(this.entryCount==1 && this.options.autoSelect) {

-        this.selectEntry();

-        this.hide();

-      } else {

-        this.render();

-      }

-    }

-  },

-

-  addObservers: function(element) {

-    Event.observe(element, "mouseover", this.onHover.bindAsEventListener(this));

-    Event.observe(element, "click", this.onClick.bindAsEventListener(this));

-  },

-

-  onObserverEvent: function() {

-    this.changed = false;

-    this.tokenBounds = null;

-    if(this.getToken().length>=this.options.minChars) {

-      this.getUpdatedChoices();

-    } else {

-      this.active = false;

-      this.hide();

-    }

-    this.oldElementValue = this.element.value;

-  },

-

-  getToken: function() {

-    var bounds = this.getTokenBounds();

-    return this.element.value.substring(bounds[0], bounds[1]).strip();

-  },

-

-  getTokenBounds: function() {

-    if (null != this.tokenBounds) return this.tokenBounds;

-    var value = this.element.value;

-    if (value.strip().empty()) return [-1, 0];

-    var diff = arguments.callee.getFirstDifferencePos(value, this.oldElementValue);

-    var offset = (diff == this.oldElementValue.length ? 1 : 0);

-    var prevTokenPos = -1, nextTokenPos = value.length;

-    var tp;

-    for (var index = 0, l = this.options.tokens.length; index < l; ++index) {

-      tp = value.lastIndexOf(this.options.tokens[index], diff + offset - 1);

-      if (tp > prevTokenPos) prevTokenPos = tp;

-      tp = value.indexOf(this.options.tokens[index], diff + offset);

-      if (-1 != tp && tp < nextTokenPos) nextTokenPos = tp;

-    }

-    return (this.tokenBounds = [prevTokenPos + 1, nextTokenPos]);

-  }

-});

-

-Autocompleter.Base.prototype.getTokenBounds.getFirstDifferencePos = function(newS, oldS) {

-  var boundary = Math.min(newS.length, oldS.length);

-  for (var index = 0; index < boundary; ++index)

-    if (newS[index] != oldS[index])

-      return index;

-  return boundary;

-};

-

-Ajax.Autocompleter = Class.create(Autocompleter.Base, {

-  initialize: function(element, update, url, options) {

-    this.baseInitialize(element, update, options);

-    this.options.asynchronous  = true;

-    this.options.onComplete    = this.onComplete.bind(this);

-    this.options.defaultParams = this.options.parameters || null;

-    this.url                   = url;

-  },

-

-  getUpdatedChoices: function() {

-    this.startIndicator();

-

-    var entry = encodeURIComponent(this.options.paramName) + '=' +

-      encodeURIComponent(this.getToken());

-

-    this.options.parameters = this.options.callback ?

-      this.options.callback(this.element, entry) : entry;

-

-    if(this.options.defaultParams)

-      this.options.parameters += '&' + this.options.defaultParams;

-

-    new Ajax.Request(this.url, this.options);

-  },

-

-  onComplete: function(request) {

-    this.updateChoices(request.responseText);

-  }

-});

-

-// The local array autocompleter. Used when you'd prefer to

-// inject an array of autocompletion options into the page, rather

-// than sending out Ajax queries, which can be quite slow sometimes.

-//

-// The constructor takes four parameters. The first two are, as usual,

-// the id of the monitored textbox, and id of the autocompletion menu.

-// The third is the array you want to autocomplete from, and the fourth

-// is the options block.

-//

-// Extra local autocompletion options:

-// - choices - How many autocompletion choices to offer

-//

-// - partialSearch - If false, the autocompleter will match entered

-//                    text only at the beginning of strings in the

-//                    autocomplete array. Defaults to true, which will

-//                    match text at the beginning of any *word* in the

-//                    strings in the autocomplete array. If you want to

-//                    search anywhere in the string, additionally set

-//                    the option fullSearch to true (default: off).

-//

-// - fullSsearch - Search anywhere in autocomplete array strings.

-//

-// - partialChars - How many characters to enter before triggering

-//                   a partial match (unlike minChars, which defines

-//                   how many characters are required to do any match

-//                   at all). Defaults to 2.

-//

-// - ignoreCase - Whether to ignore case when autocompleting.

-//                 Defaults to true.

-//

-// It's possible to pass in a custom function as the 'selector'

-// option, if you prefer to write your own autocompletion logic.

-// In that case, the other options above will not apply unless

-// you support them.

-

-Autocompleter.Local = Class.create(Autocompleter.Base, {

-  initialize: function(element, update, array, options) {

-    this.baseInitialize(element, update, options);

-    this.options.array = array;

-  },

-

-  getUpdatedChoices: function() {

-    this.updateChoices(this.options.selector(this));

-  },

-

-  setOptions: function(options) {

-    this.options = Object.extend({

-      choices: 10,

-      partialSearch: true,

-      partialChars: 2,

-      ignoreCase: true,

-      fullSearch: false,

-      selector: function(instance) {

-        var ret       = []; // Beginning matches

-        var partial   = []; // Inside matches

-        var entry     = instance.getToken();

-        var count     = 0;

-

-        for (var i = 0; i < instance.options.array.length &&

-          ret.length < instance.options.choices ; i++) {

-

-          var elem = instance.options.array[i];

-          var foundPos = instance.options.ignoreCase ?

-            elem.toLowerCase().indexOf(entry.toLowerCase()) :

-            elem.indexOf(entry);

-

-          while (foundPos != -1) {

-            if (foundPos == 0 && elem.length != entry.length) {

-              ret.push("<li><strong>" + elem.substr(0, entry.length) + "</strong>" +

-                elem.substr(entry.length) + "</li>");

-              break;

-            } else if (entry.length >= instance.options.partialChars &&

-              instance.options.partialSearch && foundPos != -1) {

-              if (instance.options.fullSearch || /\s/.test(elem.substr(foundPos-1,1))) {

-                partial.push("<li>" + elem.substr(0, foundPos) + "<strong>" +

-                  elem.substr(foundPos, entry.length) + "</strong>" + elem.substr(

-                  foundPos + entry.length) + "</li>");

-                break;

-              }

-            }

-

-            foundPos = instance.options.ignoreCase ?

-              elem.toLowerCase().indexOf(entry.toLowerCase(), foundPos + 1) :

-              elem.indexOf(entry, foundPos + 1);

-

-          }

-        }

-        if (partial.length)

-          ret = ret.concat(partial.slice(0, instance.options.choices - ret.length));

-        return "<ul>" + ret.join('') + "</ul>";

-      }

-    }, options || { });

-  }

-});

-

-// AJAX in-place editor and collection editor

-// Full rewrite by Christophe Porteneuve <tdd@tddsworld.com> (April 2007).

-

-// Use this if you notice weird scrolling problems on some browsers,

-// the DOM might be a bit confused when this gets called so do this

-// waits 1 ms (with setTimeout) until it does the activation

-Field.scrollFreeActivate = function(field) {

-  setTimeout(function() {

-    Field.activate(field);

-  }, 1);

-};

-

-Ajax.InPlaceEditor = Class.create({

-  initialize: function(element, url, options) {

-    this.url = url;

-    this.element = element = $(element);

-    this.prepareOptions();

-    this._controls = { };

-    arguments.callee.dealWithDeprecatedOptions(options); // DEPRECATION LAYER!!!

-    Object.extend(this.options, options || { });

-    if (!this.options.formId && this.element.id) {

-      this.options.formId = this.element.id + '-inplaceeditor';

-      if ($(this.options.formId))

-        this.options.formId = '';

-    }

-    if (this.options.externalControl)

-      this.options.externalControl = $(this.options.externalControl);

-    if (!this.options.externalControl)

-      this.options.externalControlOnly = false;

-    this._originalBackground = this.element.getStyle('background-color') || 'transparent';

-    this.element.title = this.options.clickToEditText;

-    this._boundCancelHandler = this.handleFormCancellation.bind(this);

-    this._boundComplete = (this.options.onComplete || Prototype.emptyFunction).bind(this);

-    this._boundFailureHandler = this.handleAJAXFailure.bind(this);

-    this._boundSubmitHandler = this.handleFormSubmission.bind(this);

-    this._boundWrapperHandler = this.wrapUp.bind(this);

-    this.registerListeners();

-  },

-  checkForEscapeOrReturn: function(e) {

-    if (!this._editing || e.ctrlKey || e.altKey || e.shiftKey) return;

-    if (Event.KEY_ESC == e.keyCode)

-      this.handleFormCancellation(e);

-    else if (Event.KEY_RETURN == e.keyCode)

-      this.handleFormSubmission(e);

-  },

-  createControl: function(mode, handler, extraClasses) {

-    var control = this.options[mode + 'Control'];

-    var text = this.options[mode + 'Text'];

-    if ('button' == control) {

-      var btn = document.createElement('input');

-      btn.type = 'submit';

-      btn.value = text;

-      btn.className = 'editor_' + mode + '_button';

-      if ('cancel' == mode)

-        btn.onclick = this._boundCancelHandler;

-      this._form.appendChild(btn);

-      this._controls[mode] = btn;

-    } else if ('link' == control) {

-      var link = document.createElement('a');

-      link.href = '#';

-      link.appendChild(document.createTextNode(text));

-      link.onclick = 'cancel' == mode ? this._boundCancelHandler : this._boundSubmitHandler;

-      link.className = 'editor_' + mode + '_link';

-      if (extraClasses)

-        link.className += ' ' + extraClasses;

-      this._form.appendChild(link);

-      this._controls[mode] = link;

-    }

-  },

-  createEditField: function() {

-    var text = (this.options.loadTextURL ? this.options.loadingText : this.getText());

-    var fld;

-    if (1 >= this.options.rows && !/\r|\n/.test(this.getText())) {

-      fld = document.createElement('input');

-      fld.type = 'text';

-      var size = this.options.size || this.options.cols || 0;

-      if (0 < size) fld.size = size;

-    } else {

-      fld = document.createElement('textarea');

-      fld.rows = (1 >= this.options.rows ? this.options.autoRows : this.options.rows);

-      fld.cols = this.options.cols || 40;

-    }

-    fld.name = this.options.paramName;

-    fld.value = text; // No HTML breaks conversion anymore

-    fld.className = 'editor_field';

-    if (this.options.submitOnBlur)

-      fld.onblur = this._boundSubmitHandler;

-    this._controls.editor = fld;

-    if (this.options.loadTextURL)

-      this.loadExternalText();

-    this._form.appendChild(this._controls.editor);

-  },

-  createForm: function() {

-    var ipe = this;

-    function addText(mode, condition) {

-      var text = ipe.options['text' + mode + 'Controls'];

-      if (!text || condition === false) return;

-      ipe._form.appendChild(document.createTextNode(text));

-    };

-    this._form = $(document.createElement('form'));

-    this._form.id = this.options.formId;

-    this._form.addClassName(this.options.formClassName);

-    this._form.onsubmit = this._boundSubmitHandler;

-    this.createEditField();

-    if ('textarea' == this._controls.editor.tagName.toLowerCase())

-      this._form.appendChild(document.createElement('br'));

-    if (this.options.onFormCustomization)

-      this.options.onFormCustomization(this, this._form);

-    addText('Before', this.options.okControl || this.options.cancelControl);

-    this.createControl('ok', this._boundSubmitHandler);

-    addText('Between', this.options.okControl && this.options.cancelControl);

-    this.createControl('cancel', this._boundCancelHandler, 'editor_cancel');

-    addText('After', this.options.okControl || this.options.cancelControl);

-  },

-  destroy: function() {

-    if (this._oldInnerHTML)

-      this.element.innerHTML = this._oldInnerHTML;

-    this.leaveEditMode();

-    this.unregisterListeners();

-  },

-  enterEditMode: function(e) {

-    if (this._saving || this._editing) return;

-    this._editing = true;

-    this.triggerCallback('onEnterEditMode');

-    if (this.options.externalControl)

-      this.options.externalControl.hide();

-    this.element.hide();

-    this.createForm();

-    this.element.parentNode.insertBefore(this._form, this.element);

-    if (!this.options.loadTextURL)

-      this.postProcessEditField();

-    if (e) Event.stop(e);

-  },

-  enterHover: function(e) {

-    if (this.options.hoverClassName)

-      this.element.addClassName(this.options.hoverClassName);

-    if (this._saving) return;

-    this.triggerCallback('onEnterHover');

-  },

-  getText: function() {

-    return this.element.innerHTML.unescapeHTML();

-  },

-  handleAJAXFailure: function(transport) {

-    this.triggerCallback('onFailure', transport);

-    if (this._oldInnerHTML) {

-      this.element.innerHTML = this._oldInnerHTML;

-      this._oldInnerHTML = null;

-    }

-  },

-  handleFormCancellation: function(e) {

-    this.wrapUp();

-    if (e) Event.stop(e);

-  },

-  handleFormSubmission: function(e) {

-    var form = this._form;

-    var value = $F(this._controls.editor);

-    this.prepareSubmission();

-    var params = this.options.callback(form, value) || '';

-    if (Object.isString(params))

-      params = params.toQueryParams();

-    params.editorId = this.element.id;

-    if (this.options.htmlResponse) {

-      var options = Object.extend({ evalScripts: true }, this.options.ajaxOptions);

-      Object.extend(options, {

-        parameters: params,

-        onComplete: this._boundWrapperHandler,

-        onFailure: this._boundFailureHandler

-      });

-      new Ajax.Updater({ success: this.element }, this.url, options);

-    } else {

-      var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);

-      Object.extend(options, {

-        parameters: params,

-        onComplete: this._boundWrapperHandler,

-        onFailure: this._boundFailureHandler

-      });

-      new Ajax.Request(this.url, options);

-    }

-    if (e) Event.stop(e);

-  },

-  leaveEditMode: function() {

-    this.element.removeClassName(this.options.savingClassName);

-    this.removeForm();

-    this.leaveHover();

-    this.element.style.backgroundColor = this._originalBackground;

-    this.element.show();

-    if (this.options.externalControl)

-      this.options.externalControl.show();

-    this._saving = false;

-    this._editing = false;

-    this._oldInnerHTML = null;

-    this.triggerCallback('onLeaveEditMode');

-  },

-  leaveHover: function(e) {

-    if (this.options.hoverClassName)

-      this.element.removeClassName(this.options.hoverClassName);

-    if (this._saving) return;

-    this.triggerCallback('onLeaveHover');

-  },

-  loadExternalText: function() {

-    this._form.addClassName(this.options.loadingClassName);

-    this._controls.editor.disabled = true;

-    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);

-    Object.extend(options, {

-      parameters: 'editorId=' + encodeURIComponent(this.element.id),

-      onComplete: Prototype.emptyFunction,

-      onSuccess: function(transport) {

-        this._form.removeClassName(this.options.loadingClassName);

-        var text = transport.responseText;

-        if (this.options.stripLoadedTextTags)

-          text = text.stripTags();

-        this._controls.editor.value = text;

-        this._controls.editor.disabled = false;

-        this.postProcessEditField();

-      }.bind(this),

-      onFailure: this._boundFailureHandler

-    });

-    new Ajax.Request(this.options.loadTextURL, options);

-  },

-  postProcessEditField: function() {

-    var fpc = this.options.fieldPostCreation;

-    if (fpc)

-      $(this._controls.editor)['focus' == fpc ? 'focus' : 'activate']();

-  },

-  prepareOptions: function() {

-    this.options = Object.clone(Ajax.InPlaceEditor.DefaultOptions);

-    Object.extend(this.options, Ajax.InPlaceEditor.DefaultCallbacks);

-    [this._extraDefaultOptions].flatten().compact().each(function(defs) {

-      Object.extend(this.options, defs);

-    }.bind(this));

-  },

-  prepareSubmission: function() {

-    this._saving = true;

-    this.removeForm();

-    this.leaveHover();

-    this.showSaving();

-  },

-  registerListeners: function() {

-    this._listeners = { };

-    var listener;

-    $H(Ajax.InPlaceEditor.Listeners).each(function(pair) {

-      listener = this[pair.value].bind(this);

-      this._listeners[pair.key] = listener;

-      if (!this.options.externalControlOnly)

-        this.element.observe(pair.key, listener);

-      if (this.options.externalControl)

-        this.options.externalControl.observe(pair.key, listener);

-    }.bind(this));

-  },

-  removeForm: function() {

-    if (!this._form) return;

-    this._form.remove();

-    this._form = null;

-    this._controls = { };

-  },

-  showSaving: function() {

-    this._oldInnerHTML = this.element.innerHTML;

-    this.element.innerHTML = this.options.savingText;

-    this.element.addClassName(this.options.savingClassName);

-    this.element.style.backgroundColor = this._originalBackground;

-    this.element.show();

-  },

-  triggerCallback: function(cbName, arg) {

-    if ('function' == typeof this.options[cbName]) {

-      this.options[cbName](this, arg);

-    }

-  },

-  unregisterListeners: function() {

-    $H(this._listeners).each(function(pair) {

-      if (!this.options.externalControlOnly)

-        this.element.stopObserving(pair.key, pair.value);

-      if (this.options.externalControl)

-        this.options.externalControl.stopObserving(pair.key, pair.value);

-    }.bind(this));

-  },

-  wrapUp: function(transport) {

-    this.leaveEditMode();

-    // Can't use triggerCallback due to backward compatibility: requires

-    // binding + direct element

-    this._boundComplete(transport, this.element);

-  }

-});

-

-Object.extend(Ajax.InPlaceEditor.prototype, {

-  dispose: Ajax.InPlaceEditor.prototype.destroy

-});

-

-Ajax.InPlaceCollectionEditor = Class.create(Ajax.InPlaceEditor, {

-  initialize: function($super, element, url, options) {

-    this._extraDefaultOptions = Ajax.InPlaceCollectionEditor.DefaultOptions;

-    $super(element, url, options);

-  },

-

-  createEditField: function() {

-    var list = document.createElement('select');

-    list.name = this.options.paramName;

-    list.size = 1;

-    this._controls.editor = list;

-    this._collection = this.options.collection || [];

-    if (this.options.loadCollectionURL)

-      this.loadCollection();

-    else

-      this.checkForExternalText();

-    this._form.appendChild(this._controls.editor);

-  },

-

-  loadCollection: function() {

-    this._form.addClassName(this.options.loadingClassName);

-    this.showLoadingText(this.options.loadingCollectionText);

-    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);

-    Object.extend(options, {

-      parameters: 'editorId=' + encodeURIComponent(this.element.id),

-      onComplete: Prototype.emptyFunction,

-      onSuccess: function(transport) {

-        var js = transport.responseText.strip();

-        if (!/^\[.*\]$/.test(js)) // TODO: improve sanity check

-          throw('Server returned an invalid collection representation.');

-        this._collection = eval(js);

-        this.checkForExternalText();

-      }.bind(this),

-      onFailure: this.onFailure

-    });

-    new Ajax.Request(this.options.loadCollectionURL, options);

-  },

-

-  showLoadingText: function(text) {

-    this._controls.editor.disabled = true;

-    var tempOption = this._controls.editor.firstChild;

-    if (!tempOption) {

-      tempOption = document.createElement('option');

-      tempOption.value = '';

-      this._controls.editor.appendChild(tempOption);

-      tempOption.selected = true;

-    }

-    tempOption.update((text || '').stripScripts().stripTags());

-  },

-

-  checkForExternalText: function() {

-    this._text = this.getText();

-    if (this.options.loadTextURL)

-      this.loadExternalText();

-    else

-      this.buildOptionList();

-  },

-

-  loadExternalText: function() {

-    this.showLoadingText(this.options.loadingText);

-    var options = Object.extend({ method: 'get' }, this.options.ajaxOptions);

-    Object.extend(options, {

-      parameters: 'editorId=' + encodeURIComponent(this.element.id),

-      onComplete: Prototype.emptyFunction,

-      onSuccess: function(transport) {

-        this._text = transport.responseText.strip();

-        this.buildOptionList();

-      }.bind(this),

-      onFailure: this.onFailure

-    });

-    new Ajax.Request(this.options.loadTextURL, options);

-  },

-

-  buildOptionList: function() {

-    this._form.removeClassName(this.options.loadingClassName);

-    this._collection = this._collection.map(function(entry) {

-      return 2 === entry.length ? entry : [entry, entry].flatten();

-    });

-    var marker = ('value' in this.options) ? this.options.value : this._text;

-    var textFound = this._collection.any(function(entry) {

-      return entry[0] == marker;

-    }.bind(this));

-    this._controls.editor.update('');

-    var option;

-    this._collection.each(function(entry, index) {

-      option = document.createElement('option');

-      option.value = entry[0];

-      option.selected = textFound ? entry[0] == marker : 0 == index;

-      option.appendChild(document.createTextNode(entry[1]));

-      this._controls.editor.appendChild(option);

-    }.bind(this));

-    this._controls.editor.disabled = false;

-    Field.scrollFreeActivate(this._controls.editor);

-  }

-});

-

-//**** DEPRECATION LAYER FOR InPlace[Collection]Editor! ****

-//**** This only  exists for a while,  in order to  let ****

-//**** users adapt to  the new API.  Read up on the new ****

-//**** API and convert your code to it ASAP!            ****

-

-Ajax.InPlaceEditor.prototype.initialize.dealWithDeprecatedOptions = function(options) {

-  if (!options) return;

-  function fallback(name, expr) {

-    if (name in options || expr === undefined) return;

-    options[name] = expr;

-  };

-  fallback('cancelControl', (options.cancelLink ? 'link' : (options.cancelButton ? 'button' :

-    options.cancelLink == options.cancelButton == false ? false : undefined)));

-  fallback('okControl', (options.okLink ? 'link' : (options.okButton ? 'button' :

-    options.okLink == options.okButton == false ? false : undefined)));

-  fallback('highlightColor', options.highlightcolor);

-  fallback('highlightEndColor', options.highlightendcolor);

-};

-

-Object.extend(Ajax.InPlaceEditor, {

-  DefaultOptions: {

-    ajaxOptions: { },

-    autoRows: 3,                                // Use when multi-line w/ rows == 1

-    cancelControl: 'link',                      // 'link'|'button'|false

-    cancelText: 'cancel',

-    clickToEditText: 'Click to edit',

-    externalControl: null,                      // id|elt

-    externalControlOnly: false,

-    fieldPostCreation: 'activate',              // 'activate'|'focus'|false

-    formClassName: 'inplaceeditor-form',

-    formId: null,                               // id|elt

-    highlightColor: '#ffff99',

-    highlightEndColor: '#ffffff',

-    hoverClassName: '',

-    htmlResponse: true,

-    loadingClassName: 'inplaceeditor-loading',

-    loadingText: 'Loading...',

-    okControl: 'button',                        // 'link'|'button'|false

-    okText: 'ok',

-    paramName: 'value',

-    rows: 1,                                    // If 1 and multi-line, uses autoRows

-    savingClassName: 'inplaceeditor-saving',

-    savingText: 'Saving...',

-    size: 0,

-    stripLoadedTextTags: false,

-    submitOnBlur: false,

-    textAfterControls: '',

-    textBeforeControls: '',

-    textBetweenControls: ''

-  },

-  DefaultCallbacks: {

-    callback: function(form) {

-      return Form.serialize(form);

-    },

-    onComplete: function(transport, element) {

-      // For backward compatibility, this one is bound to the IPE, and passes

-      // the element directly.  It was too often customized, so we don't break it.

-      new Effect.Highlight(element, {

-        startcolor: this.options.highlightColor, keepBackgroundImage: true });

-    },

-    onEnterEditMode: null,

-    onEnterHover: function(ipe) {

-      ipe.element.style.backgroundColor = ipe.options.highlightColor;

-      if (ipe._effect)

-        ipe._effect.cancel();

-    },

-    onFailure: function(transport, ipe) {

-      alert('Error communication with the server: ' + transport.responseText.stripTags());

-    },

-    onFormCustomization: null, // Takes the IPE and its generated form, after editor, before controls.

-    onLeaveEditMode: null,

-    onLeaveHover: function(ipe) {

-      ipe._effect = new Effect.Highlight(ipe.element, {

-        startcolor: ipe.options.highlightColor, endcolor: ipe.options.highlightEndColor,

-        restorecolor: ipe._originalBackground, keepBackgroundImage: true

-      });

-    }

-  },

-  Listeners: {

-    click: 'enterEditMode',

-    keydown: 'checkForEscapeOrReturn',

-    mouseover: 'enterHover',

-    mouseout: 'leaveHover'

-  }

-});

-

-Ajax.InPlaceCollectionEditor.DefaultOptions = {

-  loadingCollectionText: 'Loading options...'

-};

-

-// Delayed observer, like Form.Element.Observer,

-// but waits for delay after last key input

-// Ideal for live-search fields

-

-Form.Element.DelayedObserver = Class.create({

-  initialize: function(element, delay, callback) {

-    this.delay     = delay || 0.5;

-    this.element   = $(element);

-    this.callback  = callback;

-    this.timer     = null;

-    this.lastValue = $F(this.element);

-    Event.observe(this.element,'keyup',this.delayedListener.bindAsEventListener(this));

-  },

-  delayedListener: function(event) {

-    if(this.lastValue == $F(this.element)) return;

-    if(this.timer) clearTimeout(this.timer);

-    this.timer = setTimeout(this.onTimerEvent.bind(this), this.delay * 1000);

-    this.lastValue = $F(this.element);

-  },

-  onTimerEvent: function() {

-    this.timer = null;

-    this.callback(this.element, $F(this.element));

-  }

-});
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/dragdrop.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/dragdrop.js
deleted file mode 100644
index da33ea8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/dragdrop.js
+++ /dev/null
@@ -1,974 +0,0 @@
-// script.aculo.us dragdrop.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-if(Object.isUndefined(Effect))

-  throw("dragdrop.js requires including script.aculo.us' effects.js library");

-

-var Droppables = {

-  drops: [],

-

-  remove: function(element) {

-    this.drops = this.drops.reject(function(d) { return d.element==$(element) });

-  },

-

-  add: function(element) {

-    element = $(element);

-    var options = Object.extend({

-      greedy:     true,

-      hoverclass: null,

-      tree:       false

-    }, arguments[1] || { });

-

-    // cache containers

-    if(options.containment) {

-      options._containers = [];

-      var containment = options.containment;

-      if(Object.isArray(containment)) {

-        containment.each( function(c) { options._containers.push($(c)) });

-      } else {

-        options._containers.push($(containment));

-      }

-    }

-

-    if(options.accept) options.accept = [options.accept].flatten();

-

-    Element.makePositioned(element); // fix IE

-    options.element = element;

-

-    this.drops.push(options);

-  },

-

-  findDeepestChild: function(drops) {

-    deepest = drops[0];

-

-    for (i = 1; i < drops.length; ++i)

-      if (Element.isParent(drops[i].element, deepest.element))

-        deepest = drops[i];

-

-    return deepest;

-  },

-

-  isContained: function(element, drop) {

-    var containmentNode;

-    if(drop.tree) {

-      containmentNode = element.treeNode;

-    } else {

-      containmentNode = element.parentNode;

-    }

-    return drop._containers.detect(function(c) { return containmentNode == c });

-  },

-

-  isAffected: function(point, element, drop) {

-    return (

-      (drop.element!=element) &&

-      ((!drop._containers) ||

-        this.isContained(element, drop)) &&

-      ((!drop.accept) ||

-        (Element.classNames(element).detect(

-          function(v) { return drop.accept.include(v) } ) )) &&

-      Position.within(drop.element, point[0], point[1]) );

-  },

-

-  deactivate: function(drop) {

-    if(drop.hoverclass)

-      Element.removeClassName(drop.element, drop.hoverclass);

-    this.last_active = null;

-  },

-

-  activate: function(drop) {

-    if(drop.hoverclass)

-      Element.addClassName(drop.element, drop.hoverclass);

-    this.last_active = drop;

-  },

-

-  show: function(point, element) {

-    if(!this.drops.length) return;

-    var drop, affected = [];

-

-    this.drops.each( function(drop) {

-      if(Droppables.isAffected(point, element, drop))

-        affected.push(drop);

-    });

-

-    if(affected.length>0)

-      drop = Droppables.findDeepestChild(affected);

-

-    if(this.last_active && this.last_active != drop) this.deactivate(this.last_active);

-    if (drop) {

-      Position.within(drop.element, point[0], point[1]);

-      if(drop.onHover)

-        drop.onHover(element, drop.element, Position.overlap(drop.overlap, drop.element));

-

-      if (drop != this.last_active) Droppables.activate(drop);

-    }

-  },

-

-  fire: function(event, element) {

-    if(!this.last_active) return;

-    Position.prepare();

-

-    if (this.isAffected([Event.pointerX(event), Event.pointerY(event)], element, this.last_active))

-      if (this.last_active.onDrop) {

-        this.last_active.onDrop(element, this.last_active.element, event);

-        return true;

-      }

-  },

-

-  reset: function() {

-    if(this.last_active)

-      this.deactivate(this.last_active);

-  }

-};

-

-var Draggables = {

-  drags: [],

-  observers: [],

-

-  register: function(draggable) {

-    if(this.drags.length == 0) {

-      this.eventMouseUp   = this.endDrag.bindAsEventListener(this);

-      this.eventMouseMove = this.updateDrag.bindAsEventListener(this);

-      this.eventKeypress  = this.keyPress.bindAsEventListener(this);

-

-      Event.observe(document, "mouseup", this.eventMouseUp);

-      Event.observe(document, "mousemove", this.eventMouseMove);

-      Event.observe(document, "keypress", this.eventKeypress);

-    }

-    this.drags.push(draggable);

-  },

-

-  unregister: function(draggable) {

-    this.drags = this.drags.reject(function(d) { return d==draggable });

-    if(this.drags.length == 0) {

-      Event.stopObserving(document, "mouseup", this.eventMouseUp);

-      Event.stopObserving(document, "mousemove", this.eventMouseMove);

-      Event.stopObserving(document, "keypress", this.eventKeypress);

-    }

-  },

-

-  activate: function(draggable) {

-    if(draggable.options.delay) {

-      this._timeout = setTimeout(function() {

-        Draggables._timeout = null;

-        window.focus();

-        Draggables.activeDraggable = draggable;

-      }.bind(this), draggable.options.delay);

-    } else {

-      window.focus(); // allows keypress events if window isn't currently focused, fails for Safari

-      this.activeDraggable = draggable;

-    }

-  },

-

-  deactivate: function() {

-    this.activeDraggable = null;

-  },

-

-  updateDrag: function(event) {

-    if(!this.activeDraggable) return;

-    var pointer = [Event.pointerX(event), Event.pointerY(event)];

-    // Mozilla-based browsers fire successive mousemove events with

-    // the same coordinates, prevent needless redrawing (moz bug?)

-    if(this._lastPointer && (this._lastPointer.inspect() == pointer.inspect())) return;

-    this._lastPointer = pointer;

-

-    this.activeDraggable.updateDrag(event, pointer);

-  },

-

-  endDrag: function(event) {

-    if(this._timeout) {

-      clearTimeout(this._timeout);

-      this._timeout = null;

-    }

-    if(!this.activeDraggable) return;

-    this._lastPointer = null;

-    this.activeDraggable.endDrag(event);

-    this.activeDraggable = null;

-  },

-

-  keyPress: function(event) {

-    if(this.activeDraggable)

-      this.activeDraggable.keyPress(event);

-  },

-

-  addObserver: function(observer) {

-    this.observers.push(observer);

-    this._cacheObserverCallbacks();

-  },

-

-  removeObserver: function(element) {  // element instead of observer fixes mem leaks

-    this.observers = this.observers.reject( function(o) { return o.element==element });

-    this._cacheObserverCallbacks();

-  },

-

-  notify: function(eventName, draggable, event) {  // 'onStart', 'onEnd', 'onDrag'

-    if(this[eventName+'Count'] > 0)

-      this.observers.each( function(o) {

-        if(o[eventName]) o[eventName](eventName, draggable, event);

-      });

-    if(draggable.options[eventName]) draggable.options[eventName](draggable, event);

-  },

-

-  _cacheObserverCallbacks: function() {

-    ['onStart','onEnd','onDrag'].each( function(eventName) {

-      Draggables[eventName+'Count'] = Draggables.observers.select(

-        function(o) { return o[eventName]; }

-      ).length;

-    });

-  }

-};

-

-/*--------------------------------------------------------------------------*/

-

-var Draggable = Class.create({

-  initialize: function(element) {

-    var defaults = {

-      handle: false,

-      reverteffect: function(element, top_offset, left_offset) {

-        var dur = Math.sqrt(Math.abs(top_offset^2)+Math.abs(left_offset^2))*0.02;

-        new Effect.Move(element, { x: -left_offset, y: -top_offset, duration: dur,

-          queue: {scope:'_draggable', position:'end'}

-        });

-      },

-      endeffect: function(element) {

-        var toOpacity = Object.isNumber(element._opacity) ? element._opacity : 1.0;

-        new Effect.Opacity(element, {duration:0.2, from:0.7, to:toOpacity,

-          queue: {scope:'_draggable', position:'end'},

-          afterFinish: function(){

-            Draggable._dragging[element] = false

-          }

-        });

-      },

-      zindex: 1000,

-      revert: false,

-      quiet: false,

-      scroll: false,

-      scrollSensitivity: 20,

-      scrollSpeed: 15,

-      snap: false,  // false, or xy or [x,y] or function(x,y){ return [x,y] }

-      delay: 0

-    };

-

-    if(!arguments[1] || Object.isUndefined(arguments[1].endeffect))

-      Object.extend(defaults, {

-        starteffect: function(element) {

-          element._opacity = Element.getOpacity(element);

-          Draggable._dragging[element] = true;

-          new Effect.Opacity(element, {duration:0.2, from:element._opacity, to:0.7});

-        }

-      });

-

-    var options = Object.extend(defaults, arguments[1] || { });

-

-    this.element = $(element);

-

-    if(options.handle && Object.isString(options.handle))

-      this.handle = this.element.down('.'+options.handle, 0);

-

-    if(!this.handle) this.handle = $(options.handle);

-    if(!this.handle) this.handle = this.element;

-

-    if(options.scroll && !options.scroll.scrollTo && !options.scroll.outerHTML) {

-      options.scroll = $(options.scroll);

-      this._isScrollChild = Element.childOf(this.element, options.scroll);

-    }

-

-    Element.makePositioned(this.element); // fix IE

-

-    this.options  = options;

-    this.dragging = false;

-

-    this.eventMouseDown = this.initDrag.bindAsEventListener(this);

-    Event.observe(this.handle, "mousedown", this.eventMouseDown);

-

-    Draggables.register(this);

-  },

-

-  destroy: function() {

-    Event.stopObserving(this.handle, "mousedown", this.eventMouseDown);

-    Draggables.unregister(this);

-  },

-

-  currentDelta: function() {

-    return([

-      parseInt(Element.getStyle(this.element,'left') || '0'),

-      parseInt(Element.getStyle(this.element,'top') || '0')]);

-  },

-

-  initDrag: function(event) {

-    if(!Object.isUndefined(Draggable._dragging[this.element]) &&

-      Draggable._dragging[this.element]) return;

-    if(Event.isLeftClick(event)) {

-      // abort on form elements, fixes a Firefox issue

-      var src = Event.element(event);

-      if((tag_name = src.tagName.toUpperCase()) && (

-        tag_name=='INPUT' ||

-        tag_name=='SELECT' ||

-        tag_name=='OPTION' ||

-        tag_name=='BUTTON' ||

-        tag_name=='TEXTAREA')) return;

-

-      var pointer = [Event.pointerX(event), Event.pointerY(event)];

-      var pos     = this.element.cumulativeOffset();

-      this.offset = [0,1].map( function(i) { return (pointer[i] - pos[i]) });

-

-      Draggables.activate(this);

-      Event.stop(event);

-    }

-  },

-

-  startDrag: function(event) {

-    this.dragging = true;

-    if(!this.delta)

-      this.delta = this.currentDelta();

-

-    if(this.options.zindex) {

-      this.originalZ = parseInt(Element.getStyle(this.element,'z-index') || 0);

-      this.element.style.zIndex = this.options.zindex;

-    }

-

-    if(this.options.ghosting) {

-      this._clone = this.element.cloneNode(true);

-      this._originallyAbsolute = (this.element.getStyle('position') == 'absolute');

-      if (!this._originallyAbsolute)

-        Position.absolutize(this.element);

-      this.element.parentNode.insertBefore(this._clone, this.element);

-    }

-

-    if(this.options.scroll) {

-      if (this.options.scroll == window) {

-        var where = this._getWindowScroll(this.options.scroll);

-        this.originalScrollLeft = where.left;

-        this.originalScrollTop = where.top;

-      } else {

-        this.originalScrollLeft = this.options.scroll.scrollLeft;

-        this.originalScrollTop = this.options.scroll.scrollTop;

-      }

-    }

-

-    Draggables.notify('onStart', this, event);

-

-    if(this.options.starteffect) this.options.starteffect(this.element);

-  },

-

-  updateDrag: function(event, pointer) {

-    if(!this.dragging) this.startDrag(event);

-

-    if(!this.options.quiet){

-      Position.prepare();

-      Droppables.show(pointer, this.element);

-    }

-

-    Draggables.notify('onDrag', this, event);

-

-    this.draw(pointer);

-    if(this.options.change) this.options.change(this);

-

-    if(this.options.scroll) {

-      this.stopScrolling();

-

-      var p;

-      if (this.options.scroll == window) {

-        with(this._getWindowScroll(this.options.scroll)) { p = [ left, top, left+width, top+height ]; }

-      } else {

-        p = Position.page(this.options.scroll).toArray();

-        p[0] += this.options.scroll.scrollLeft + Position.deltaX;

-        p[1] += this.options.scroll.scrollTop + Position.deltaY;

-        p.push(p[0]+this.options.scroll.offsetWidth);

-        p.push(p[1]+this.options.scroll.offsetHeight);

-      }

-      var speed = [0,0];

-      if(pointer[0] < (p[0]+this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[0]+this.options.scrollSensitivity);

-      if(pointer[1] < (p[1]+this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[1]+this.options.scrollSensitivity);

-      if(pointer[0] > (p[2]-this.options.scrollSensitivity)) speed[0] = pointer[0]-(p[2]-this.options.scrollSensitivity);

-      if(pointer[1] > (p[3]-this.options.scrollSensitivity)) speed[1] = pointer[1]-(p[3]-this.options.scrollSensitivity);

-      this.startScrolling(speed);

-    }

-

-    // fix AppleWebKit rendering

-    if(Prototype.Browser.WebKit) window.scrollBy(0,0);

-

-    Event.stop(event);

-  },

-

-  finishDrag: function(event, success) {

-    this.dragging = false;

-

-    if(this.options.quiet){

-      Position.prepare();

-      var pointer = [Event.pointerX(event), Event.pointerY(event)];

-      Droppables.show(pointer, this.element);

-    }

-

-    if(this.options.ghosting) {

-      if (!this._originallyAbsolute)

-        Position.relativize(this.element);

-      delete this._originallyAbsolute;

-      Element.remove(this._clone);

-      this._clone = null;

-    }

-

-    var dropped = false;

-    if(success) {

-      dropped = Droppables.fire(event, this.element);

-      if (!dropped) dropped = false;

-    }

-    if(dropped && this.options.onDropped) this.options.onDropped(this.element);

-    Draggables.notify('onEnd', this, event);

-

-    var revert = this.options.revert;

-    if(revert && Object.isFunction(revert)) revert = revert(this.element);

-

-    var d = this.currentDelta();

-    if(revert && this.options.reverteffect) {

-      if (dropped == 0 || revert != 'failure')

-        this.options.reverteffect(this.element,

-          d[1]-this.delta[1], d[0]-this.delta[0]);

-    } else {

-      this.delta = d;

-    }

-

-    if(this.options.zindex)

-      this.element.style.zIndex = this.originalZ;

-

-    if(this.options.endeffect)

-      this.options.endeffect(this.element);

-

-    Draggables.deactivate(this);

-    Droppables.reset();

-  },

-

-  keyPress: function(event) {

-    if(event.keyCode!=Event.KEY_ESC) return;

-    this.finishDrag(event, false);

-    Event.stop(event);

-  },

-

-  endDrag: function(event) {

-    if(!this.dragging) return;

-    this.stopScrolling();

-    this.finishDrag(event, true);

-    Event.stop(event);

-  },

-

-  draw: function(point) {

-    var pos = this.element.cumulativeOffset();

-    if(this.options.ghosting) {

-      var r   = Position.realOffset(this.element);

-      pos[0] += r[0] - Position.deltaX; pos[1] += r[1] - Position.deltaY;

-    }

-

-    var d = this.currentDelta();

-    pos[0] -= d[0]; pos[1] -= d[1];

-

-    if(this.options.scroll && (this.options.scroll != window && this._isScrollChild)) {

-      pos[0] -= this.options.scroll.scrollLeft-this.originalScrollLeft;

-      pos[1] -= this.options.scroll.scrollTop-this.originalScrollTop;

-    }

-

-    var p = [0,1].map(function(i){

-      return (point[i]-pos[i]-this.offset[i])

-    }.bind(this));

-

-    if(this.options.snap) {

-      if(Object.isFunction(this.options.snap)) {

-        p = this.options.snap(p[0],p[1],this);

-      } else {

-      if(Object.isArray(this.options.snap)) {

-        p = p.map( function(v, i) {

-          return (v/this.options.snap[i]).round()*this.options.snap[i] }.bind(this));

-      } else {

-        p = p.map( function(v) {

-          return (v/this.options.snap).round()*this.options.snap }.bind(this));

-      }

-    }}

-

-    var style = this.element.style;

-    if((!this.options.constraint) || (this.options.constraint=='horizontal'))

-      style.left = p[0] + "px";

-    if((!this.options.constraint) || (this.options.constraint=='vertical'))

-      style.top  = p[1] + "px";

-

-    if(style.visibility=="hidden") style.visibility = ""; // fix gecko rendering

-  },

-

-  stopScrolling: function() {

-    if(this.scrollInterval) {

-      clearInterval(this.scrollInterval);

-      this.scrollInterval = null;

-      Draggables._lastScrollPointer = null;

-    }

-  },

-

-  startScrolling: function(speed) {

-    if(!(speed[0] || speed[1])) return;

-    this.scrollSpeed = [speed[0]*this.options.scrollSpeed,speed[1]*this.options.scrollSpeed];

-    this.lastScrolled = new Date();

-    this.scrollInterval = setInterval(this.scroll.bind(this), 10);

-  },

-

-  scroll: function() {

-    var current = new Date();

-    var delta = current - this.lastScrolled;

-    this.lastScrolled = current;

-    if(this.options.scroll == window) {

-      with (this._getWindowScroll(this.options.scroll)) {

-        if (this.scrollSpeed[0] || this.scrollSpeed[1]) {

-          var d = delta / 1000;

-          this.options.scroll.scrollTo( left + d*this.scrollSpeed[0], top + d*this.scrollSpeed[1] );

-        }

-      }

-    } else {

-      this.options.scroll.scrollLeft += this.scrollSpeed[0] * delta / 1000;

-      this.options.scroll.scrollTop  += this.scrollSpeed[1] * delta / 1000;

-    }

-

-    Position.prepare();

-    Droppables.show(Draggables._lastPointer, this.element);

-    Draggables.notify('onDrag', this);

-    if (this._isScrollChild) {

-      Draggables._lastScrollPointer = Draggables._lastScrollPointer || $A(Draggables._lastPointer);

-      Draggables._lastScrollPointer[0] += this.scrollSpeed[0] * delta / 1000;

-      Draggables._lastScrollPointer[1] += this.scrollSpeed[1] * delta / 1000;

-      if (Draggables._lastScrollPointer[0] < 0)

-        Draggables._lastScrollPointer[0] = 0;

-      if (Draggables._lastScrollPointer[1] < 0)

-        Draggables._lastScrollPointer[1] = 0;

-      this.draw(Draggables._lastScrollPointer);

-    }

-

-    if(this.options.change) this.options.change(this);

-  },

-

-  _getWindowScroll: function(w) {

-    var T, L, W, H;

-    with (w.document) {

-      if (w.document.documentElement && documentElement.scrollTop) {

-        T = documentElement.scrollTop;

-        L = documentElement.scrollLeft;

-      } else if (w.document.body) {

-        T = body.scrollTop;

-        L = body.scrollLeft;

-      }

-      if (w.innerWidth) {

-        W = w.innerWidth;

-        H = w.innerHeight;

-      } else if (w.document.documentElement && documentElement.clientWidth) {

-        W = documentElement.clientWidth;

-        H = documentElement.clientHeight;

-      } else {

-        W = body.offsetWidth;

-        H = body.offsetHeight;

-      }

-    }

-    return { top: T, left: L, width: W, height: H };

-  }

-});

-

-Draggable._dragging = { };

-

-/*--------------------------------------------------------------------------*/

-

-var SortableObserver = Class.create({

-  initialize: function(element, observer) {

-    this.element   = $(element);

-    this.observer  = observer;

-    this.lastValue = Sortable.serialize(this.element);

-  },

-

-  onStart: function() {

-    this.lastValue = Sortable.serialize(this.element);

-  },

-

-  onEnd: function() {

-    Sortable.unmark();

-    if(this.lastValue != Sortable.serialize(this.element))

-      this.observer(this.element)

-  }

-});

-

-var Sortable = {

-  SERIALIZE_RULE: /^[^_\-](?:[A-Za-z0-9\-\_]*)[_](.*)$/,

-

-  sortables: { },

-

-  _findRootElement: function(element) {

-    while (element.tagName.toUpperCase() != "BODY") {

-      if(element.id && Sortable.sortables[element.id]) return element;

-      element = element.parentNode;

-    }

-  },

-

-  options: function(element) {

-    element = Sortable._findRootElement($(element));

-    if(!element) return;

-    return Sortable.sortables[element.id];

-  },

-

-  destroy: function(element){

-    element = $(element);

-    var s = Sortable.sortables[element.id];

-

-    if(s) {

-      Draggables.removeObserver(s.element);

-      s.droppables.each(function(d){ Droppables.remove(d) });

-      s.draggables.invoke('destroy');

-

-      delete Sortable.sortables[s.element.id];

-    }

-  },

-

-  create: function(element) {

-    element = $(element);

-    var options = Object.extend({

-      element:     element,

-      tag:         'li',       // assumes li children, override with tag: 'tagname'

-      dropOnEmpty: false,

-      tree:        false,

-      treeTag:     'ul',

-      overlap:     'vertical', // one of 'vertical', 'horizontal'

-      constraint:  'vertical', // one of 'vertical', 'horizontal', false

-      containment: element,    // also takes array of elements (or id's); or false

-      handle:      false,      // or a CSS class

-      only:        false,

-      delay:       0,

-      hoverclass:  null,

-      ghosting:    false,

-      quiet:       false,

-      scroll:      false,

-      scrollSensitivity: 20,

-      scrollSpeed: 15,

-      format:      this.SERIALIZE_RULE,

-

-      // these take arrays of elements or ids and can be

-      // used for better initialization performance

-      elements:    false,

-      handles:     false,

-

-      onChange:    Prototype.emptyFunction,

-      onUpdate:    Prototype.emptyFunction

-    }, arguments[1] || { });

-

-    // clear any old sortable with same element

-    this.destroy(element);

-

-    // build options for the draggables

-    var options_for_draggable = {

-      revert:      true,

-      quiet:       options.quiet,

-      scroll:      options.scroll,

-      scrollSpeed: options.scrollSpeed,

-      scrollSensitivity: options.scrollSensitivity,

-      delay:       options.delay,

-      ghosting:    options.ghosting,

-      constraint:  options.constraint,

-      handle:      options.handle };

-

-    if(options.starteffect)

-      options_for_draggable.starteffect = options.starteffect;

-

-    if(options.reverteffect)

-      options_for_draggable.reverteffect = options.reverteffect;

-    else

-      if(options.ghosting) options_for_draggable.reverteffect = function(element) {

-        element.style.top  = 0;

-        element.style.left = 0;

-      };

-

-    if(options.endeffect)

-      options_for_draggable.endeffect = options.endeffect;

-

-    if(options.zindex)

-      options_for_draggable.zindex = options.zindex;

-

-    // build options for the droppables

-    var options_for_droppable = {

-      overlap:     options.overlap,

-      containment: options.containment,

-      tree:        options.tree,

-      hoverclass:  options.hoverclass,

-      onHover:     Sortable.onHover

-    };

-

-    var options_for_tree = {

-      onHover:      Sortable.onEmptyHover,

-      overlap:      options.overlap,

-      containment:  options.containment,

-      hoverclass:   options.hoverclass

-    };

-

-    // fix for gecko engine

-    Element.cleanWhitespace(element);

-

-    options.draggables = [];

-    options.droppables = [];

-

-    // drop on empty handling

-    if(options.dropOnEmpty || options.tree) {

-      Droppables.add(element, options_for_tree);

-      options.droppables.push(element);

-    }

-

-    (options.elements || this.findElements(element, options) || []).each( function(e,i) {

-      var handle = options.handles ? $(options.handles[i]) :

-        (options.handle ? $(e).select('.' + options.handle)[0] : e);

-      options.draggables.push(

-        new Draggable(e, Object.extend(options_for_draggable, { handle: handle })));

-      Droppables.add(e, options_for_droppable);

-      if(options.tree) e.treeNode = element;

-      options.droppables.push(e);

-    });

-

-    if(options.tree) {

-      (Sortable.findTreeElements(element, options) || []).each( function(e) {

-        Droppables.add(e, options_for_tree);

-        e.treeNode = element;

-        options.droppables.push(e);

-      });

-    }

-

-    // keep reference

-    this.sortables[element.identify()] = options;

-

-    // for onupdate

-    Draggables.addObserver(new SortableObserver(element, options.onUpdate));

-

-  },

-

-  // return all suitable-for-sortable elements in a guaranteed order

-  findElements: function(element, options) {

-    return Element.findChildren(

-      element, options.only, options.tree ? true : false, options.tag);

-  },

-

-  findTreeElements: function(element, options) {

-    return Element.findChildren(

-      element, options.only, options.tree ? true : false, options.treeTag);

-  },

-

-  onHover: function(element, dropon, overlap) {

-    if(Element.isParent(dropon, element)) return;

-

-    if(overlap > .33 && overlap < .66 && Sortable.options(dropon).tree) {

-      return;

-    } else if(overlap>0.5) {

-      Sortable.mark(dropon, 'before');

-      if(dropon.previousSibling != element) {

-        var oldParentNode = element.parentNode;

-        element.style.visibility = "hidden"; // fix gecko rendering

-        dropon.parentNode.insertBefore(element, dropon);

-        if(dropon.parentNode!=oldParentNode)

-          Sortable.options(oldParentNode).onChange(element);

-        Sortable.options(dropon.parentNode).onChange(element);

-      }

-    } else {

-      Sortable.mark(dropon, 'after');

-      var nextElement = dropon.nextSibling || null;

-      if(nextElement != element) {

-        var oldParentNode = element.parentNode;

-        element.style.visibility = "hidden"; // fix gecko rendering

-        dropon.parentNode.insertBefore(element, nextElement);

-        if(dropon.parentNode!=oldParentNode)

-          Sortable.options(oldParentNode).onChange(element);

-        Sortable.options(dropon.parentNode).onChange(element);

-      }

-    }

-  },

-

-  onEmptyHover: function(element, dropon, overlap) {

-    var oldParentNode = element.parentNode;

-    var droponOptions = Sortable.options(dropon);

-

-    if(!Element.isParent(dropon, element)) {

-      var index;

-

-      var children = Sortable.findElements(dropon, {tag: droponOptions.tag, only: droponOptions.only});

-      var child = null;

-

-      if(children) {

-        var offset = Element.offsetSize(dropon, droponOptions.overlap) * (1.0 - overlap);

-

-        for (index = 0; index < children.length; index += 1) {

-          if (offset - Element.offsetSize (children[index], droponOptions.overlap) >= 0) {

-            offset -= Element.offsetSize (children[index], droponOptions.overlap);

-          } else if (offset - (Element.offsetSize (children[index], droponOptions.overlap) / 2) >= 0) {

-            child = index + 1 < children.length ? children[index + 1] : null;

-            break;

-          } else {

-            child = children[index];

-            break;

-          }

-        }

-      }

-

-      dropon.insertBefore(element, child);

-

-      Sortable.options(oldParentNode).onChange(element);

-      droponOptions.onChange(element);

-    }

-  },

-

-  unmark: function() {

-    if(Sortable._marker) Sortable._marker.hide();

-  },

-

-  mark: function(dropon, position) {

-    // mark on ghosting only

-    var sortable = Sortable.options(dropon.parentNode);

-    if(sortable && !sortable.ghosting) return;

-

-    if(!Sortable._marker) {

-      Sortable._marker =

-        ($('dropmarker') || Element.extend(document.createElement('DIV'))).

-          hide().addClassName('dropmarker').setStyle({position:'absolute'});

-      document.getElementsByTagName("body").item(0).appendChild(Sortable._marker);

-    }

-    var offsets = dropon.cumulativeOffset();

-    Sortable._marker.setStyle({left: offsets[0]+'px', top: offsets[1] + 'px'});

-

-    if(position=='after')

-      if(sortable.overlap == 'horizontal')

-        Sortable._marker.setStyle({left: (offsets[0]+dropon.clientWidth) + 'px'});

-      else

-        Sortable._marker.setStyle({top: (offsets[1]+dropon.clientHeight) + 'px'});

-

-    Sortable._marker.show();

-  },

-

-  _tree: function(element, options, parent) {

-    var children = Sortable.findElements(element, options) || [];

-

-    for (var i = 0; i < children.length; ++i) {

-      var match = children[i].id.match(options.format);

-

-      if (!match) continue;

-

-      var child = {

-        id: encodeURIComponent(match ? match[1] : null),

-        element: element,

-        parent: parent,

-        children: [],

-        position: parent.children.length,

-        container: $(children[i]).down(options.treeTag)

-      };

-

-      /* Get the element containing the children and recurse over it */

-      if (child.container)

-        this._tree(child.container, options, child);

-

-      parent.children.push (child);

-    }

-

-    return parent;

-  },

-

-  tree: function(element) {

-    element = $(element);

-    var sortableOptions = this.options(element);

-    var options = Object.extend({

-      tag: sortableOptions.tag,

-      treeTag: sortableOptions.treeTag,

-      only: sortableOptions.only,

-      name: element.id,

-      format: sortableOptions.format

-    }, arguments[1] || { });

-

-    var root = {

-      id: null,

-      parent: null,

-      children: [],

-      container: element,

-      position: 0

-    };

-

-    return Sortable._tree(element, options, root);

-  },

-

-  /* Construct a [i] index for a particular node */

-  _constructIndex: function(node) {

-    var index = '';

-    do {

-      if (node.id) index = '[' + node.position + ']' + index;

-    } while ((node = node.parent) != null);

-    return index;

-  },

-

-  sequence: function(element) {

-    element = $(element);

-    var options = Object.extend(this.options(element), arguments[1] || { });

-

-    return $(this.findElements(element, options) || []).map( function(item) {

-      return item.id.match(options.format) ? item.id.match(options.format)[1] : '';

-    });

-  },

-

-  setSequence: function(element, new_sequence) {

-    element = $(element);

-    var options = Object.extend(this.options(element), arguments[2] || { });

-

-    var nodeMap = { };

-    this.findElements(element, options).each( function(n) {

-        if (n.id.match(options.format))

-            nodeMap[n.id.match(options.format)[1]] = [n, n.parentNode];

-        n.parentNode.removeChild(n);

-    });

-

-    new_sequence.each(function(ident) {

-      var n = nodeMap[ident];

-      if (n) {

-        n[1].appendChild(n[0]);

-        delete nodeMap[ident];

-      }

-    });

-  },

-

-  serialize: function(element) {

-    element = $(element);

-    var options = Object.extend(Sortable.options(element), arguments[1] || { });

-    var name = encodeURIComponent(

-      (arguments[1] && arguments[1].name) ? arguments[1].name : element.id);

-

-    if (options.tree) {

-      return Sortable.tree(element, arguments[1]).children.map( function (item) {

-        return [name + Sortable._constructIndex(item) + "[id]=" +

-                encodeURIComponent(item.id)].concat(item.children.map(arguments.callee));

-      }).flatten().join('&');

-    } else {

-      return Sortable.sequence(element, arguments[1]).map( function(item) {

-        return name + "[]=" + encodeURIComponent(item);

-      }).join('&');

-    }

-  }

-};

-

-// Returns true if child is contained within element

-Element.isParent = function(child, element) {

-  if (!child.parentNode || child == element) return false;

-  if (child.parentNode == element) return true;

-  return Element.isParent(child.parentNode, element);

-};

-

-Element.findChildren = function(element, only, recursive, tagName) {

-  if(!element.hasChildNodes()) return null;

-  tagName = tagName.toUpperCase();

-  if(only) only = [only].flatten();

-  var elements = [];

-  $A(element.childNodes).each( function(e) {

-    if(e.tagName && e.tagName.toUpperCase()==tagName &&

-      (!only || (Element.classNames(e).detect(function(v) { return only.include(v) }))))

-        elements.push(e);

-    if(recursive) {

-      var grandchildren = Element.findChildren(e, only, recursive, tagName);

-      if(grandchildren) elements.push(grandchildren);

-    }

-  });

-

-  return (elements.length>0 ? elements.flatten() : []);

-};

-

-Element.offsetSize = function (element, type) {

-  return element['offset' + ((type=='vertical' || type=='height') ? 'Height' : 'Width')];

-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/effects.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/effects.js
deleted file mode 100644
index 2e469ab..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/effects.js
+++ /dev/null
@@ -1,1123 +0,0 @@
-// script.aculo.us effects.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-// Contributors:

-//  Justin Palmer (http://encytemedia.com/)

-//  Mark Pilgrim (http://diveintomark.org/)

-//  Martin Bialasinki

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-// converts rgb() and #xxx to #xxxxxx format,

-// returns self (or first argument) if not convertable

-String.prototype.parseColor = function() {

-  var color = '#';

-  if (this.slice(0,4) == 'rgb(') {

-    var cols = this.slice(4,this.length-1).split(',');

-    var i=0; do { color += parseInt(cols[i]).toColorPart() } while (++i<3);

-  } else {

-    if (this.slice(0,1) == '#') {

-      if (this.length==4) for(var i=1;i<4;i++) color += (this.charAt(i) + this.charAt(i)).toLowerCase();

-      if (this.length==7) color = this.toLowerCase();

-    }

-  }

-  return (color.length==7 ? color : (arguments[0] || this));

-};

-

-/*--------------------------------------------------------------------------*/

-

-Element.collectTextNodes = function(element) {

-  return $A($(element).childNodes).collect( function(node) {

-    return (node.nodeType==3 ? node.nodeValue :

-      (node.hasChildNodes() ? Element.collectTextNodes(node) : ''));

-  }).flatten().join('');

-};

-

-Element.collectTextNodesIgnoreClass = function(element, className) {

-  return $A($(element).childNodes).collect( function(node) {

-    return (node.nodeType==3 ? node.nodeValue :

-      ((node.hasChildNodes() && !Element.hasClassName(node,className)) ?

-        Element.collectTextNodesIgnoreClass(node, className) : ''));

-  }).flatten().join('');

-};

-

-Element.setContentZoom = function(element, percent) {

-  element = $(element);

-  element.setStyle({fontSize: (percent/100) + 'em'});

-  if (Prototype.Browser.WebKit) window.scrollBy(0,0);

-  return element;

-};

-

-Element.getInlineOpacity = function(element){

-  return $(element).style.opacity || '';

-};

-

-Element.forceRerendering = function(element) {

-  try {

-    element = $(element);

-    var n = document.createTextNode(' ');

-    element.appendChild(n);

-    element.removeChild(n);

-  } catch(e) { }

-};

-

-/*--------------------------------------------------------------------------*/

-

-var Effect = {

-  _elementDoesNotExistError: {

-    name: 'ElementDoesNotExistError',

-    message: 'The specified DOM element does not exist, but is required for this effect to operate'

-  },

-  Transitions: {

-    linear: Prototype.K,

-    sinoidal: function(pos) {

-      return (-Math.cos(pos*Math.PI)/2) + .5;

-    },

-    reverse: function(pos) {

-      return 1-pos;

-    },

-    flicker: function(pos) {

-      var pos = ((-Math.cos(pos*Math.PI)/4) + .75) + Math.random()/4;

-      return pos > 1 ? 1 : pos;

-    },

-    wobble: function(pos) {

-      return (-Math.cos(pos*Math.PI*(9*pos))/2) + .5;

-    },

-    pulse: function(pos, pulses) {

-      return (-Math.cos((pos*((pulses||5)-.5)*2)*Math.PI)/2) + .5;

-    },

-    spring: function(pos) {

-      return 1 - (Math.cos(pos * 4.5 * Math.PI) * Math.exp(-pos * 6));

-    },

-    none: function(pos) {

-      return 0;

-    },

-    full: function(pos) {

-      return 1;

-    }

-  },

-  DefaultOptions: {

-    duration:   1.0,   // seconds

-    fps:        100,   // 100= assume 66fps max.

-    sync:       false, // true for combining

-    from:       0.0,

-    to:         1.0,

-    delay:      0.0,

-    queue:      'parallel'

-  },

-  tagifyText: function(element) {

-    var tagifyStyle = 'position:relative';

-    if (Prototype.Browser.IE) tagifyStyle += ';zoom:1';

-

-    element = $(element);

-    $A(element.childNodes).each( function(child) {

-      if (child.nodeType==3) {

-        child.nodeValue.toArray().each( function(character) {

-          element.insertBefore(

-            new Element('span', {style: tagifyStyle}).update(

-              character == ' ' ? String.fromCharCode(160) : character),

-              child);

-        });

-        Element.remove(child);

-      }

-    });

-  },

-  multiple: function(element, effect) {

-    var elements;

-    if (((typeof element == 'object') ||

-        Object.isFunction(element)) &&

-       (element.length))

-      elements = element;

-    else

-      elements = $(element).childNodes;

-

-    var options = Object.extend({

-      speed: 0.1,

-      delay: 0.0

-    }, arguments[2] || { });

-    var masterDelay = options.delay;

-

-    $A(elements).each( function(element, index) {

-      new effect(element, Object.extend(options, { delay: index * options.speed + masterDelay }));

-    });

-  },

-  PAIRS: {

-    'slide':  ['SlideDown','SlideUp'],

-    'blind':  ['BlindDown','BlindUp'],

-    'appear': ['Appear','Fade']

-  },

-  toggle: function(element, effect, options) {

-    element = $(element);

-    effect  = (effect || 'appear').toLowerCase();

-    

-    return Effect[ Effect.PAIRS[ effect ][ element.visible() ? 1 : 0 ] ](element, Object.extend({

-      queue: { position:'end', scope:(element.id || 'global'), limit: 1 }

-    }, options || {}));

-  }

-};

-

-Effect.DefaultOptions.transition = Effect.Transitions.sinoidal;

-

-/* ------------- core effects ------------- */

-

-Effect.ScopedQueue = Class.create(Enumerable, {

-  initialize: function() {

-    this.effects  = [];

-    this.interval = null;

-  },

-  _each: function(iterator) {

-    this.effects._each(iterator);

-  },

-  add: function(effect) {

-    var timestamp = new Date().getTime();

-

-    var position = Object.isString(effect.options.queue) ?

-      effect.options.queue : effect.options.queue.position;

-

-    switch(position) {

-      case 'front':

-        // move unstarted effects after this effect

-        this.effects.findAll(function(e){ return e.state=='idle' }).each( function(e) {

-            e.startOn  += effect.finishOn;

-            e.finishOn += effect.finishOn;

-          });

-        break;

-      case 'with-last':

-        timestamp = this.effects.pluck('startOn').max() || timestamp;

-        break;

-      case 'end':

-        // start effect after last queued effect has finished

-        timestamp = this.effects.pluck('finishOn').max() || timestamp;

-        break;

-    }

-

-    effect.startOn  += timestamp;

-    effect.finishOn += timestamp;

-

-    if (!effect.options.queue.limit || (this.effects.length < effect.options.queue.limit))

-      this.effects.push(effect);

-

-    if (!this.interval)

-      this.interval = setInterval(this.loop.bind(this), 15);

-  },

-  remove: function(effect) {

-    this.effects = this.effects.reject(function(e) { return e==effect });

-    if (this.effects.length == 0) {

-      clearInterval(this.interval);

-      this.interval = null;

-    }

-  },

-  loop: function() {

-    var timePos = new Date().getTime();

-    for(var i=0, len=this.effects.length;i<len;i++)

-      this.effects[i] && this.effects[i].loop(timePos);

-  }

-});

-

-Effect.Queues = {

-  instances: $H(),

-  get: function(queueName) {

-    if (!Object.isString(queueName)) return queueName;

-

-    return this.instances.get(queueName) ||

-      this.instances.set(queueName, new Effect.ScopedQueue());

-  }

-};

-Effect.Queue = Effect.Queues.get('global');

-

-Effect.Base = Class.create({

-  position: null,

-  start: function(options) {

-    if (options && options.transition === false) options.transition = Effect.Transitions.linear;

-    this.options      = Object.extend(Object.extend({ },Effect.DefaultOptions), options || { });

-    this.currentFrame = 0;

-    this.state        = 'idle';

-    this.startOn      = this.options.delay*1000;

-    this.finishOn     = this.startOn+(this.options.duration*1000);

-    this.fromToDelta  = this.options.to-this.options.from;

-    this.totalTime    = this.finishOn-this.startOn;

-    this.totalFrames  = this.options.fps*this.options.duration;

-

-    this.render = (function() {

-      function dispatch(effect, eventName) {

-        if (effect.options[eventName + 'Internal'])

-          effect.options[eventName + 'Internal'](effect);

-        if (effect.options[eventName])

-          effect.options[eventName](effect);

-      }

-

-      return function(pos) {

-        if (this.state === "idle") {

-          this.state = "running";

-          dispatch(this, 'beforeSetup');

-          if (this.setup) this.setup();

-          dispatch(this, 'afterSetup');

-        }

-        if (this.state === "running") {

-          pos = (this.options.transition(pos) * this.fromToDelta) + this.options.from;

-          this.position = pos;

-          dispatch(this, 'beforeUpdate');

-          if (this.update) this.update(pos);

-          dispatch(this, 'afterUpdate');

-        }

-      };

-    })();

-

-    this.event('beforeStart');

-    if (!this.options.sync)

-      Effect.Queues.get(Object.isString(this.options.queue) ?

-        'global' : this.options.queue.scope).add(this);

-  },

-  loop: function(timePos) {

-    if (timePos >= this.startOn) {

-      if (timePos >= this.finishOn) {

-        this.render(1.0);

-        this.cancel();

-        this.event('beforeFinish');

-        if (this.finish) this.finish();

-        this.event('afterFinish');

-        return;

-      }

-      var pos   = (timePos - this.startOn) / this.totalTime,

-          frame = (pos * this.totalFrames).round();

-      if (frame > this.currentFrame) {

-        this.render(pos);

-        this.currentFrame = frame;

-      }

-    }

-  },

-  cancel: function() {

-    if (!this.options.sync)

-      Effect.Queues.get(Object.isString(this.options.queue) ?

-        'global' : this.options.queue.scope).remove(this);

-    this.state = 'finished';

-  },

-  event: function(eventName) {

-    if (this.options[eventName + 'Internal']) this.options[eventName + 'Internal'](this);

-    if (this.options[eventName]) this.options[eventName](this);

-  },

-  inspect: function() {

-    var data = $H();

-    for(property in this)

-      if (!Object.isFunction(this[property])) data.set(property, this[property]);

-    return '#<Effect:' + data.inspect() + ',options:' + $H(this.options).inspect() + '>';

-  }

-});

-

-Effect.Parallel = Class.create(Effect.Base, {

-  initialize: function(effects) {

-    this.effects = effects || [];

-    this.start(arguments[1]);

-  },

-  update: function(position) {

-    this.effects.invoke('render', position);

-  },

-  finish: function(position) {

-    this.effects.each( function(effect) {

-      effect.render(1.0);

-      effect.cancel();

-      effect.event('beforeFinish');

-      if (effect.finish) effect.finish(position);

-      effect.event('afterFinish');

-    });

-  }

-});

-

-Effect.Tween = Class.create(Effect.Base, {

-  initialize: function(object, from, to) {

-    object = Object.isString(object) ? $(object) : object;

-    var args = $A(arguments), method = args.last(),

-      options = args.length == 5 ? args[3] : null;

-    this.method = Object.isFunction(method) ? method.bind(object) :

-      Object.isFunction(object[method]) ? object[method].bind(object) :

-      function(value) { object[method] = value };

-    this.start(Object.extend({ from: from, to: to }, options || { }));

-  },

-  update: function(position) {

-    this.method(position);

-  }

-});

-

-Effect.Event = Class.create(Effect.Base, {

-  initialize: function() {

-    this.start(Object.extend({ duration: 0 }, arguments[0] || { }));

-  },

-  update: Prototype.emptyFunction

-});

-

-Effect.Opacity = Class.create(Effect.Base, {

-  initialize: function(element) {

-    this.element = $(element);

-    if (!this.element) throw(Effect._elementDoesNotExistError);

-    // make this work on IE on elements without 'layout'

-    if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))

-      this.element.setStyle({zoom: 1});

-    var options = Object.extend({

-      from: this.element.getOpacity() || 0.0,

-      to:   1.0

-    }, arguments[1] || { });

-    this.start(options);

-  },

-  update: function(position) {

-    this.element.setOpacity(position);

-  }

-});

-

-Effect.Move = Class.create(Effect.Base, {

-  initialize: function(element) {

-    this.element = $(element);

-    if (!this.element) throw(Effect._elementDoesNotExistError);

-    var options = Object.extend({

-      x:    0,

-      y:    0,

-      mode: 'relative'

-    }, arguments[1] || { });

-    this.start(options);

-  },

-  setup: function() {

-    this.element.makePositioned();

-    this.originalLeft = parseFloat(this.element.getStyle('left') || '0');

-    this.originalTop  = parseFloat(this.element.getStyle('top')  || '0');

-    if (this.options.mode == 'absolute') {

-      this.options.x = this.options.x - this.originalLeft;

-      this.options.y = this.options.y - this.originalTop;

-    }

-  },

-  update: function(position) {

-    this.element.setStyle({

-      left: (this.options.x  * position + this.originalLeft).round() + 'px',

-      top:  (this.options.y  * position + this.originalTop).round()  + 'px'

-    });

-  }

-});

-

-// for backwards compatibility

-Effect.MoveBy = function(element, toTop, toLeft) {

-  return new Effect.Move(element,

-    Object.extend({ x: toLeft, y: toTop }, arguments[3] || { }));

-};

-

-Effect.Scale = Class.create(Effect.Base, {

-  initialize: function(element, percent) {

-    this.element = $(element);

-    if (!this.element) throw(Effect._elementDoesNotExistError);

-    var options = Object.extend({

-      scaleX: true,

-      scaleY: true,

-      scaleContent: true,

-      scaleFromCenter: false,

-      scaleMode: 'box',        // 'box' or 'contents' or { } with provided values

-      scaleFrom: 100.0,

-      scaleTo:   percent

-    }, arguments[2] || { });

-    this.start(options);

-  },

-  setup: function() {

-    this.restoreAfterFinish = this.options.restoreAfterFinish || false;

-    this.elementPositioning = this.element.getStyle('position');

-

-    this.originalStyle = { };

-    ['top','left','width','height','fontSize'].each( function(k) {

-      this.originalStyle[k] = this.element.style[k];

-    }.bind(this));

-

-    this.originalTop  = this.element.offsetTop;

-    this.originalLeft = this.element.offsetLeft;

-

-    var fontSize = this.element.getStyle('font-size') || '100%';

-    ['em','px','%','pt'].each( function(fontSizeType) {

-      if (fontSize.indexOf(fontSizeType)>0) {

-        this.fontSize     = parseFloat(fontSize);

-        this.fontSizeType = fontSizeType;

-      }

-    }.bind(this));

-

-    this.factor = (this.options.scaleTo - this.options.scaleFrom)/100;

-

-    this.dims = null;

-    if (this.options.scaleMode=='box')

-      this.dims = [this.element.offsetHeight, this.element.offsetWidth];

-    if (/^content/.test(this.options.scaleMode))

-      this.dims = [this.element.scrollHeight, this.element.scrollWidth];

-    if (!this.dims)

-      this.dims = [this.options.scaleMode.originalHeight,

-                   this.options.scaleMode.originalWidth];

-  },

-  update: function(position) {

-    var currentScale = (this.options.scaleFrom/100.0) + (this.factor * position);

-    if (this.options.scaleContent && this.fontSize)

-      this.element.setStyle({fontSize: this.fontSize * currentScale + this.fontSizeType });

-    this.setDimensions(this.dims[0] * currentScale, this.dims[1] * currentScale);

-  },

-  finish: function(position) {

-    if (this.restoreAfterFinish) this.element.setStyle(this.originalStyle);

-  },

-  setDimensions: function(height, width) {

-    var d = { };

-    if (this.options.scaleX) d.width = width.round() + 'px';

-    if (this.options.scaleY) d.height = height.round() + 'px';

-    if (this.options.scaleFromCenter) {

-      var topd  = (height - this.dims[0])/2;

-      var leftd = (width  - this.dims[1])/2;

-      if (this.elementPositioning == 'absolute') {

-        if (this.options.scaleY) d.top = this.originalTop-topd + 'px';

-        if (this.options.scaleX) d.left = this.originalLeft-leftd + 'px';

-      } else {

-        if (this.options.scaleY) d.top = -topd + 'px';

-        if (this.options.scaleX) d.left = -leftd + 'px';

-      }

-    }

-    this.element.setStyle(d);

-  }

-});

-

-Effect.Highlight = Class.create(Effect.Base, {

-  initialize: function(element) {

-    this.element = $(element);

-    if (!this.element) throw(Effect._elementDoesNotExistError);

-    var options = Object.extend({ startcolor: '#ffff99' }, arguments[1] || { });

-    this.start(options);

-  },

-  setup: function() {

-    // Prevent executing on elements not in the layout flow

-    if (this.element.getStyle('display')=='none') { this.cancel(); return; }

-    // Disable background image during the effect

-    this.oldStyle = { };

-    if (!this.options.keepBackgroundImage) {

-      this.oldStyle.backgroundImage = this.element.getStyle('background-image');

-      this.element.setStyle({backgroundImage: 'none'});

-    }

-    if (!this.options.endcolor)

-      this.options.endcolor = this.element.getStyle('background-color').parseColor('#ffffff');

-    if (!this.options.restorecolor)

-      this.options.restorecolor = this.element.getStyle('background-color');

-    // init color calculations

-    this._base  = $R(0,2).map(function(i){ return parseInt(this.options.startcolor.slice(i*2+1,i*2+3),16) }.bind(this));

-    this._delta = $R(0,2).map(function(i){ return parseInt(this.options.endcolor.slice(i*2+1,i*2+3),16)-this._base[i] }.bind(this));

-  },

-  update: function(position) {

-    this.element.setStyle({backgroundColor: $R(0,2).inject('#',function(m,v,i){

-      return m+((this._base[i]+(this._delta[i]*position)).round().toColorPart()); }.bind(this)) });

-  },

-  finish: function() {

-    this.element.setStyle(Object.extend(this.oldStyle, {

-      backgroundColor: this.options.restorecolor

-    }));

-  }

-});

-

-Effect.ScrollTo = function(element) {

-  var options = arguments[1] || { },

-  scrollOffsets = document.viewport.getScrollOffsets(),

-  elementOffsets = $(element).cumulativeOffset();

-

-  if (options.offset) elementOffsets[1] += options.offset;

-

-  return new Effect.Tween(null,

-    scrollOffsets.top,

-    elementOffsets[1],

-    options,

-    function(p){ scrollTo(scrollOffsets.left, p.round()); }

-  );

-};

-

-/* ------------- combination effects ------------- */

-

-Effect.Fade = function(element) {

-  element = $(element);

-  var oldOpacity = element.getInlineOpacity();

-  var options = Object.extend({

-    from: element.getOpacity() || 1.0,

-    to:   0.0,

-    afterFinishInternal: function(effect) {

-      if (effect.options.to!=0) return;

-      effect.element.hide().setStyle({opacity: oldOpacity});

-    }

-  }, arguments[1] || { });

-  return new Effect.Opacity(element,options);

-};

-

-Effect.Appear = function(element) {

-  element = $(element);

-  var options = Object.extend({

-  from: (element.getStyle('display') == 'none' ? 0.0 : element.getOpacity() || 0.0),

-  to:   1.0,

-  // force Safari to render floated elements properly

-  afterFinishInternal: function(effect) {

-    effect.element.forceRerendering();

-  },

-  beforeSetup: function(effect) {

-    effect.element.setOpacity(effect.options.from).show();

-  }}, arguments[1] || { });

-  return new Effect.Opacity(element,options);

-};

-

-Effect.Puff = function(element) {

-  element = $(element);

-  var oldStyle = {

-    opacity: element.getInlineOpacity(),

-    position: element.getStyle('position'),

-    top:  element.style.top,

-    left: element.style.left,

-    width: element.style.width,

-    height: element.style.height

-  };

-  return new Effect.Parallel(

-   [ new Effect.Scale(element, 200,

-      { sync: true, scaleFromCenter: true, scaleContent: true, restoreAfterFinish: true }),

-     new Effect.Opacity(element, { sync: true, to: 0.0 } ) ],

-     Object.extend({ duration: 1.0,

-      beforeSetupInternal: function(effect) {

-        Position.absolutize(effect.effects[0].element);

-      },

-      afterFinishInternal: function(effect) {

-         effect.effects[0].element.hide().setStyle(oldStyle); }

-     }, arguments[1] || { })

-   );

-};

-

-Effect.BlindUp = function(element) {

-  element = $(element);

-  element.makeClipping();

-  return new Effect.Scale(element, 0,

-    Object.extend({ scaleContent: false,

-      scaleX: false,

-      restoreAfterFinish: true,

-      afterFinishInternal: function(effect) {

-        effect.element.hide().undoClipping();

-      }

-    }, arguments[1] || { })

-  );

-};

-

-Effect.BlindDown = function(element) {

-  element = $(element);

-  var elementDimensions = element.getDimensions();

-  return new Effect.Scale(element, 100, Object.extend({

-    scaleContent: false,

-    scaleX: false,

-    scaleFrom: 0,

-    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},

-    restoreAfterFinish: true,

-    afterSetup: function(effect) {

-      effect.element.makeClipping().setStyle({height: '0px'}).show();

-    },

-    afterFinishInternal: function(effect) {

-      effect.element.undoClipping();

-    }

-  }, arguments[1] || { }));

-};

-

-Effect.SwitchOff = function(element) {

-  element = $(element);

-  var oldOpacity = element.getInlineOpacity();

-  return new Effect.Appear(element, Object.extend({

-    duration: 0.4,

-    from: 0,

-    transition: Effect.Transitions.flicker,

-    afterFinishInternal: function(effect) {

-      new Effect.Scale(effect.element, 1, {

-        duration: 0.3, scaleFromCenter: true,

-        scaleX: false, scaleContent: false, restoreAfterFinish: true,

-        beforeSetup: function(effect) {

-          effect.element.makePositioned().makeClipping();

-        },

-        afterFinishInternal: function(effect) {

-          effect.element.hide().undoClipping().undoPositioned().setStyle({opacity: oldOpacity});

-        }

-      });

-    }

-  }, arguments[1] || { }));

-};

-

-Effect.DropOut = function(element) {

-  element = $(element);

-  var oldStyle = {

-    top: element.getStyle('top'),

-    left: element.getStyle('left'),

-    opacity: element.getInlineOpacity() };

-  return new Effect.Parallel(

-    [ new Effect.Move(element, {x: 0, y: 100, sync: true }),

-      new Effect.Opacity(element, { sync: true, to: 0.0 }) ],

-    Object.extend(

-      { duration: 0.5,

-        beforeSetup: function(effect) {

-          effect.effects[0].element.makePositioned();

-        },

-        afterFinishInternal: function(effect) {

-          effect.effects[0].element.hide().undoPositioned().setStyle(oldStyle);

-        }

-      }, arguments[1] || { }));

-};

-

-Effect.Shake = function(element) {

-  element = $(element);

-  var options = Object.extend({

-    distance: 20,

-    duration: 0.5

-  }, arguments[1] || {});

-  var distance = parseFloat(options.distance);

-  var split = parseFloat(options.duration) / 10.0;

-  var oldStyle = {

-    top: element.getStyle('top'),

-    left: element.getStyle('left') };

-    return new Effect.Move(element,

-      { x:  distance, y: 0, duration: split, afterFinishInternal: function(effect) {

-    new Effect.Move(effect.element,

-      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {

-    new Effect.Move(effect.element,

-      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {

-    new Effect.Move(effect.element,

-      { x: -distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {

-    new Effect.Move(effect.element,

-      { x:  distance*2, y: 0, duration: split*2,  afterFinishInternal: function(effect) {

-    new Effect.Move(effect.element,

-      { x: -distance, y: 0, duration: split, afterFinishInternal: function(effect) {

-        effect.element.undoPositioned().setStyle(oldStyle);

-  }}); }}); }}); }}); }}); }});

-};

-

-Effect.SlideDown = function(element) {

-  element = $(element).cleanWhitespace();

-  // SlideDown need to have the content of the element wrapped in a container element with fixed height!

-  var oldInnerBottom = element.down().getStyle('bottom');

-  var elementDimensions = element.getDimensions();

-  return new Effect.Scale(element, 100, Object.extend({

-    scaleContent: false,

-    scaleX: false,

-    scaleFrom: window.opera ? 0 : 1,

-    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},

-    restoreAfterFinish: true,

-    afterSetup: function(effect) {

-      effect.element.makePositioned();

-      effect.element.down().makePositioned();

-      if (window.opera) effect.element.setStyle({top: ''});

-      effect.element.makeClipping().setStyle({height: '0px'}).show();

-    },

-    afterUpdateInternal: function(effect) {

-      effect.element.down().setStyle({bottom:

-        (effect.dims[0] - effect.element.clientHeight) + 'px' });

-    },

-    afterFinishInternal: function(effect) {

-      effect.element.undoClipping().undoPositioned();

-      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom}); }

-    }, arguments[1] || { })

-  );

-};

-

-Effect.SlideUp = function(element) {

-  element = $(element).cleanWhitespace();

-  var oldInnerBottom = element.down().getStyle('bottom');

-  var elementDimensions = element.getDimensions();

-  return new Effect.Scale(element, window.opera ? 0 : 1,

-   Object.extend({ scaleContent: false,

-    scaleX: false,

-    scaleMode: 'box',

-    scaleFrom: 100,

-    scaleMode: {originalHeight: elementDimensions.height, originalWidth: elementDimensions.width},

-    restoreAfterFinish: true,

-    afterSetup: function(effect) {

-      effect.element.makePositioned();

-      effect.element.down().makePositioned();

-      if (window.opera) effect.element.setStyle({top: ''});

-      effect.element.makeClipping().show();

-    },

-    afterUpdateInternal: function(effect) {

-      effect.element.down().setStyle({bottom:

-        (effect.dims[0] - effect.element.clientHeight) + 'px' });

-    },

-    afterFinishInternal: function(effect) {

-      effect.element.hide().undoClipping().undoPositioned();

-      effect.element.down().undoPositioned().setStyle({bottom: oldInnerBottom});

-    }

-   }, arguments[1] || { })

-  );

-};

-

-// Bug in opera makes the TD containing this element expand for a instance after finish

-Effect.Squish = function(element) {

-  return new Effect.Scale(element, window.opera ? 1 : 0, {

-    restoreAfterFinish: true,

-    beforeSetup: function(effect) {

-      effect.element.makeClipping();

-    },

-    afterFinishInternal: function(effect) {

-      effect.element.hide().undoClipping();

-    }

-  });

-};

-

-Effect.Grow = function(element) {

-  element = $(element);

-  var options = Object.extend({

-    direction: 'center',

-    moveTransition: Effect.Transitions.sinoidal,

-    scaleTransition: Effect.Transitions.sinoidal,

-    opacityTransition: Effect.Transitions.full

-  }, arguments[1] || { });

-  var oldStyle = {

-    top: element.style.top,

-    left: element.style.left,

-    height: element.style.height,

-    width: element.style.width,

-    opacity: element.getInlineOpacity() };

-

-  var dims = element.getDimensions();

-  var initialMoveX, initialMoveY;

-  var moveX, moveY;

-

-  switch (options.direction) {

-    case 'top-left':

-      initialMoveX = initialMoveY = moveX = moveY = 0;

-      break;

-    case 'top-right':

-      initialMoveX = dims.width;

-      initialMoveY = moveY = 0;

-      moveX = -dims.width;

-      break;

-    case 'bottom-left':

-      initialMoveX = moveX = 0;

-      initialMoveY = dims.height;

-      moveY = -dims.height;

-      break;

-    case 'bottom-right':

-      initialMoveX = dims.width;

-      initialMoveY = dims.height;

-      moveX = -dims.width;

-      moveY = -dims.height;

-      break;

-    case 'center':

-      initialMoveX = dims.width / 2;

-      initialMoveY = dims.height / 2;

-      moveX = -dims.width / 2;

-      moveY = -dims.height / 2;

-      break;

-  }

-

-  return new Effect.Move(element, {

-    x: initialMoveX,

-    y: initialMoveY,

-    duration: 0.01,

-    beforeSetup: function(effect) {

-      effect.element.hide().makeClipping().makePositioned();

-    },

-    afterFinishInternal: function(effect) {

-      new Effect.Parallel(

-        [ new Effect.Opacity(effect.element, { sync: true, to: 1.0, from: 0.0, transition: options.opacityTransition }),

-          new Effect.Move(effect.element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition }),

-          new Effect.Scale(effect.element, 100, {

-            scaleMode: { originalHeight: dims.height, originalWidth: dims.width },

-            sync: true, scaleFrom: window.opera ? 1 : 0, transition: options.scaleTransition, restoreAfterFinish: true})

-        ], Object.extend({

-             beforeSetup: function(effect) {

-               effect.effects[0].element.setStyle({height: '0px'}).show();

-             },

-             afterFinishInternal: function(effect) {

-               effect.effects[0].element.undoClipping().undoPositioned().setStyle(oldStyle);

-             }

-           }, options)

-      );

-    }

-  });

-};

-

-Effect.Shrink = function(element) {

-  element = $(element);

-  var options = Object.extend({

-    direction: 'center',

-    moveTransition: Effect.Transitions.sinoidal,

-    scaleTransition: Effect.Transitions.sinoidal,

-    opacityTransition: Effect.Transitions.none

-  }, arguments[1] || { });

-  var oldStyle = {

-    top: element.style.top,

-    left: element.style.left,

-    height: element.style.height,

-    width: element.style.width,

-    opacity: element.getInlineOpacity() };

-

-  var dims = element.getDimensions();

-  var moveX, moveY;

-

-  switch (options.direction) {

-    case 'top-left':

-      moveX = moveY = 0;

-      break;

-    case 'top-right':

-      moveX = dims.width;

-      moveY = 0;

-      break;

-    case 'bottom-left':

-      moveX = 0;

-      moveY = dims.height;

-      break;

-    case 'bottom-right':

-      moveX = dims.width;

-      moveY = dims.height;

-      break;

-    case 'center':

-      moveX = dims.width / 2;

-      moveY = dims.height / 2;

-      break;

-  }

-

-  return new Effect.Parallel(

-    [ new Effect.Opacity(element, { sync: true, to: 0.0, from: 1.0, transition: options.opacityTransition }),

-      new Effect.Scale(element, window.opera ? 1 : 0, { sync: true, transition: options.scaleTransition, restoreAfterFinish: true}),

-      new Effect.Move(element, { x: moveX, y: moveY, sync: true, transition: options.moveTransition })

-    ], Object.extend({

-         beforeStartInternal: function(effect) {

-           effect.effects[0].element.makePositioned().makeClipping();

-         },

-         afterFinishInternal: function(effect) {

-           effect.effects[0].element.hide().undoClipping().undoPositioned().setStyle(oldStyle); }

-       }, options)

-  );

-};

-

-Effect.Pulsate = function(element) {

-  element = $(element);

-  var options    = arguments[1] || { },

-    oldOpacity = element.getInlineOpacity(),

-    transition = options.transition || Effect.Transitions.linear,

-    reverser   = function(pos){

-      return 1 - transition((-Math.cos((pos*(options.pulses||5)*2)*Math.PI)/2) + .5);

-    };

-

-  return new Effect.Opacity(element,

-    Object.extend(Object.extend({  duration: 2.0, from: 0,

-      afterFinishInternal: function(effect) { effect.element.setStyle({opacity: oldOpacity}); }

-    }, options), {transition: reverser}));

-};

-

-Effect.Fold = function(element) {

-  element = $(element);

-  var oldStyle = {

-    top: element.style.top,

-    left: element.style.left,

-    width: element.style.width,

-    height: element.style.height };

-  element.makeClipping();

-  return new Effect.Scale(element, 5, Object.extend({

-    scaleContent: false,

-    scaleX: false,

-    afterFinishInternal: function(effect) {

-    new Effect.Scale(element, 1, {

-      scaleContent: false,

-      scaleY: false,

-      afterFinishInternal: function(effect) {

-        effect.element.hide().undoClipping().setStyle(oldStyle);

-      } });

-  }}, arguments[1] || { }));

-};

-

-Effect.Morph = Class.create(Effect.Base, {

-  initialize: function(element) {

-    this.element = $(element);

-    if (!this.element) throw(Effect._elementDoesNotExistError);

-    var options = Object.extend({

-      style: { }

-    }, arguments[1] || { });

-

-    if (!Object.isString(options.style)) this.style = $H(options.style);

-    else {

-      if (options.style.include(':'))

-        this.style = options.style.parseStyle();

-      else {

-        this.element.addClassName(options.style);

-        this.style = $H(this.element.getStyles());

-        this.element.removeClassName(options.style);

-        var css = this.element.getStyles();

-        this.style = this.style.reject(function(style) {

-          return style.value == css[style.key];

-        });

-        options.afterFinishInternal = function(effect) {

-          effect.element.addClassName(effect.options.style);

-          effect.transforms.each(function(transform) {

-            effect.element.style[transform.style] = '';

-          });

-        };

-      }

-    }

-    this.start(options);

-  },

-

-  setup: function(){

-    function parseColor(color){

-      if (!color || ['rgba(0, 0, 0, 0)','transparent'].include(color)) color = '#ffffff';

-      color = color.parseColor();

-      return $R(0,2).map(function(i){

-        return parseInt( color.slice(i*2+1,i*2+3), 16 );

-      });

-    }

-    this.transforms = this.style.map(function(pair){

-      var property = pair[0], value = pair[1], unit = null;

-

-      if (value.parseColor('#zzzzzz') != '#zzzzzz') {

-        value = value.parseColor();

-        unit  = 'color';

-      } else if (property == 'opacity') {

-        value = parseFloat(value);

-        if (Prototype.Browser.IE && (!this.element.currentStyle.hasLayout))

-          this.element.setStyle({zoom: 1});

-      } else if (Element.CSS_LENGTH.test(value)) {

-          var components = value.match(/^([\+\-]?[0-9\.]+)(.*)$/);

-          value = parseFloat(components[1]);

-          unit = (components.length == 3) ? components[2] : null;

-      }

-

-      var originalValue = this.element.getStyle(property);

-      return {

-        style: property.camelize(),

-        originalValue: unit=='color' ? parseColor(originalValue) : parseFloat(originalValue || 0),

-        targetValue: unit=='color' ? parseColor(value) : value,

-        unit: unit

-      };

-    }.bind(this)).reject(function(transform){

-      return (

-        (transform.originalValue == transform.targetValue) ||

-        (

-          transform.unit != 'color' &&

-          (isNaN(transform.originalValue) || isNaN(transform.targetValue))

-        )

-      );

-    });

-  },

-  update: function(position) {

-    var style = { }, transform, i = this.transforms.length;

-    while(i--)

-      style[(transform = this.transforms[i]).style] =

-        transform.unit=='color' ? '#'+

-          (Math.round(transform.originalValue[0]+

-            (transform.targetValue[0]-transform.originalValue[0])*position)).toColorPart() +

-          (Math.round(transform.originalValue[1]+

-            (transform.targetValue[1]-transform.originalValue[1])*position)).toColorPart() +

-          (Math.round(transform.originalValue[2]+

-            (transform.targetValue[2]-transform.originalValue[2])*position)).toColorPart() :

-        (transform.originalValue +

-          (transform.targetValue - transform.originalValue) * position).toFixed(3) +

-            (transform.unit === null ? '' : transform.unit);

-    this.element.setStyle(style, true);

-  }

-});

-

-Effect.Transform = Class.create({

-  initialize: function(tracks){

-    this.tracks  = [];

-    this.options = arguments[1] || { };

-    this.addTracks(tracks);

-  },

-  addTracks: function(tracks){

-    tracks.each(function(track){

-      track = $H(track);

-      var data = track.values().first();

-      this.tracks.push($H({

-        ids:     track.keys().first(),

-        effect:  Effect.Morph,

-        options: { style: data }

-      }));

-    }.bind(this));

-    return this;

-  },

-  play: function(){

-    return new Effect.Parallel(

-      this.tracks.map(function(track){

-        var ids = track.get('ids'), effect = track.get('effect'), options = track.get('options');

-        var elements = [$(ids) || $$(ids)].flatten();

-        return elements.map(function(e){ return new effect(e, Object.extend({ sync:true }, options)) });

-      }).flatten(),

-      this.options

-    );

-  }

-});

-

-Element.CSS_PROPERTIES = $w(

-  'backgroundColor backgroundPosition borderBottomColor borderBottomStyle ' +

-  'borderBottomWidth borderLeftColor borderLeftStyle borderLeftWidth ' +

-  'borderRightColor borderRightStyle borderRightWidth borderSpacing ' +

-  'borderTopColor borderTopStyle borderTopWidth bottom clip color ' +

-  'fontSize fontWeight height left letterSpacing lineHeight ' +

-  'marginBottom marginLeft marginRight marginTop markerOffset maxHeight '+

-  'maxWidth minHeight minWidth opacity outlineColor outlineOffset ' +

-  'outlineWidth paddingBottom paddingLeft paddingRight paddingTop ' +

-  'right textIndent top width wordSpacing zIndex');

-

-Element.CSS_LENGTH = /^(([\+\-]?[0-9\.]+)(em|ex|px|in|cm|mm|pt|pc|\%))|0$/;

-

-String.__parseStyleElement = document.createElement('div');

-String.prototype.parseStyle = function(){

-  var style, styleRules = $H();

-  if (Prototype.Browser.WebKit)

-    style = new Element('div',{style:this}).style;

-  else {

-    String.__parseStyleElement.innerHTML = '<div style="' + this + '"></div>';

-    style = String.__parseStyleElement.childNodes[0].style;

-  }

-

-  Element.CSS_PROPERTIES.each(function(property){

-    if (style[property]) styleRules.set(property, style[property]);

-  });

-

-  if (Prototype.Browser.IE && this.include('opacity'))

-    styleRules.set('opacity', this.match(/opacity:\s*((?:0|1)?(?:\.\d*)?)/)[1]);

-

-  return styleRules;

-};

-

-if (document.defaultView && document.defaultView.getComputedStyle) {

-  Element.getStyles = function(element) {

-    var css = document.defaultView.getComputedStyle($(element), null);

-    return Element.CSS_PROPERTIES.inject({ }, function(styles, property) {

-      styles[property] = css[property];

-      return styles;

-    });

-  };

-} else {

-  Element.getStyles = function(element) {

-    element = $(element);

-    var css = element.currentStyle, styles;

-    styles = Element.CSS_PROPERTIES.inject({ }, function(results, property) {

-      results[property] = css[property];

-      return results;

-    });

-    if (!styles.opacity) styles.opacity = element.getOpacity();

-    return styles;

-  };

-}

-

-Effect.Methods = {

-  morph: function(element, style) {

-    element = $(element);

-    new Effect.Morph(element, Object.extend({ style: style }, arguments[2] || { }));

-    return element;

-  },

-  visualEffect: function(element, effect, options) {

-    element = $(element);

-    var s = effect.dasherize().camelize(), klass = s.charAt(0).toUpperCase() + s.substring(1);

-    new Effect[klass](element, options);

-    return element;

-  },

-  highlight: function(element, options) {

-    element = $(element);

-    new Effect.Highlight(element, options);

-    return element;

-  }

-};

-

-$w('fade appear grow shrink fold blindUp blindDown slideUp slideDown '+

-  'pulsate shake puff squish switchOff dropOut').each(

-  function(effect) {

-    Effect.Methods[effect] = function(element, options){

-      element = $(element);

-      Effect[effect.charAt(0).toUpperCase() + effect.substring(1)](element, options);

-      return element;

-    };

-  }

-);

-

-$w('getInlineOpacity forceRerendering setContentZoom collectTextNodes collectTextNodesIgnoreClass getStyles').each(

-  function(f) { Effect.Methods[f] = Element[f]; }

-);

-

-Element.addMethods(Effect.Methods);
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/prototype.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/prototype.js
deleted file mode 100644
index b0a5092..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/prototype.js
+++ /dev/null
@@ -1,6082 +0,0 @@
-/*  Prototype JavaScript framework, version 1.7

- *  (c) 2005-2010 Sam Stephenson

- *

- *  Prototype is freely distributable under the terms of an MIT-style license.

- *  For details, see the Prototype web site: http://www.prototypejs.org/

- *

- *--------------------------------------------------------------------------*/

-

-var Prototype = {

-

-  Version: '1.7',

-

-  Browser: (function(){

-    var ua = navigator.userAgent;

-    var isOpera = Object.prototype.toString.call(window.opera) == '[object Opera]';

-    return {

-      IE:             !!window.attachEvent && !isOpera,

-      Opera:          isOpera,

-      WebKit:         ua.indexOf('AppleWebKit/') > -1,

-      Gecko:          ua.indexOf('Gecko') > -1 && ua.indexOf('KHTML') === -1,

-      MobileSafari:   /Apple.*Mobile/.test(ua)

-    }

-  })(),

-

-  BrowserFeatures: {

-    XPath: !!document.evaluate,

-

-    SelectorsAPI: !!document.querySelector,

-

-    ElementExtensions: (function() {

-      var constructor = window.Element || window.HTMLElement;

-      return !!(constructor && constructor.prototype);

-    })(),

-    SpecificElementExtensions: (function() {

-      if (typeof window.HTMLDivElement !== 'undefined')

-        return true;

-

-      var div = document.createElement('div'),

-          form = document.createElement('form'),

-          isSupported = false;

-

-      if (div['__proto__'] && (div['__proto__'] !== form['__proto__'])) {

-        isSupported = true;

-      }

-

-      div = form = null;

-

-      return isSupported;

-    })()

-  },

-

-  ScriptFragment: '<script[^>]*>([\\S\\s]*?)<\/script>',

-  JSONFilter: /^\/\*-secure-([\s\S]*)\*\/\s*$/,

-

-  emptyFunction: function() { },

-

-  K: function(x) { return x }

-};

-

-if (Prototype.Browser.MobileSafari)

-  Prototype.BrowserFeatures.SpecificElementExtensions = false;

-

-

-var Abstract = { };

-

-

-var Try = {

-  these: function() {

-    var returnValue;

-

-    for (var i = 0, length = arguments.length; i < length; i++) {

-      var lambda = arguments[i];

-      try {

-        returnValue = lambda();

-        break;

-      } catch (e) { }

-    }

-

-    return returnValue;

-  }

-};

-

-/* Based on Alex Arnell's inheritance implementation. */

-

-var Class = (function() {

-

-  var IS_DONTENUM_BUGGY = (function(){

-    for (var p in { toString: 1 }) {

-      if (p === 'toString') return false;

-    }

-    return true;

-  })();

-

-  function subclass() {};

-  function create() {

-    var parent = null, properties = $A(arguments);

-    if (Object.isFunction(properties[0]))

-      parent = properties.shift();

-

-    function klass() {

-      this.initialize.apply(this, arguments);

-    }

-

-    Object.extend(klass, Class.Methods);

-    klass.superclass = parent;

-    klass.subclasses = [];

-

-    if (parent) {

-      subclass.prototype = parent.prototype;

-      klass.prototype = new subclass;

-      parent.subclasses.push(klass);

-    }

-

-    for (var i = 0, length = properties.length; i < length; i++)

-      klass.addMethods(properties[i]);

-

-    if (!klass.prototype.initialize)

-      klass.prototype.initialize = Prototype.emptyFunction;

-

-    klass.prototype.constructor = klass;

-    return klass;

-  }

-

-  function addMethods(source) {

-    var ancestor   = this.superclass && this.superclass.prototype,

-        properties = Object.keys(source);

-

-    if (IS_DONTENUM_BUGGY) {

-      if (source.toString != Object.prototype.toString)

-        properties.push("toString");

-      if (source.valueOf != Object.prototype.valueOf)

-        properties.push("valueOf");

-    }

-

-    for (var i = 0, length = properties.length; i < length; i++) {

-      var property = properties[i], value = source[property];

-      if (ancestor && Object.isFunction(value) &&

-          value.argumentNames()[0] == "$super") {

-        var method = value;

-        value = (function(m) {

-          return function() { return ancestor[m].apply(this, arguments); };

-        })(property).wrap(method);

-

-        value.valueOf = method.valueOf.bind(method);

-        value.toString = method.toString.bind(method);

-      }

-      this.prototype[property] = value;

-    }

-

-    return this;

-  }

-

-  return {

-    create: create,

-    Methods: {

-      addMethods: addMethods

-    }

-  };

-})();

-(function() {

-

-  var _toString = Object.prototype.toString,

-      NULL_TYPE = 'Null',

-      UNDEFINED_TYPE = 'Undefined',

-      BOOLEAN_TYPE = 'Boolean',

-      NUMBER_TYPE = 'Number',

-      STRING_TYPE = 'String',

-      OBJECT_TYPE = 'Object',

-      FUNCTION_CLASS = '[object Function]',

-      BOOLEAN_CLASS = '[object Boolean]',

-      NUMBER_CLASS = '[object Number]',

-      STRING_CLASS = '[object String]',

-      ARRAY_CLASS = '[object Array]',

-      DATE_CLASS = '[object Date]',

-      NATIVE_JSON_STRINGIFY_SUPPORT = window.JSON &&

-        typeof JSON.stringify === 'function' &&

-        JSON.stringify(0) === '0' &&

-        typeof JSON.stringify(Prototype.K) === 'undefined';

-

-  function Type(o) {

-    switch(o) {

-      case null: return NULL_TYPE;

-      case (void 0): return UNDEFINED_TYPE;

-    }

-    var type = typeof o;

-    switch(type) {

-      case 'boolean': return BOOLEAN_TYPE;

-      case 'number':  return NUMBER_TYPE;

-      case 'string':  return STRING_TYPE;

-    }

-    return OBJECT_TYPE;

-  }

-

-  function extend(destination, source) {

-    for (var property in source)

-      destination[property] = source[property];

-    return destination;

-  }

-

-  function inspect(object) {

-    try {

-      if (isUndefined(object)) return 'undefined';

-      if (object === null) return 'null';

-      return object.inspect ? object.inspect() : String(object);

-    } catch (e) {

-      if (e instanceof RangeError) return '...';

-      throw e;

-    }

-  }

-

-  function toJSON(value) {

-    return Str('', { '': value }, []);

-  }

-

-  function Str(key, holder, stack) {

-    var value = holder[key],

-        type = typeof value;

-

-    if (Type(value) === OBJECT_TYPE && typeof value.toJSON === 'function') {

-      value = value.toJSON(key);

-    }

-

-    var _class = _toString.call(value);

-

-    switch (_class) {

-      case NUMBER_CLASS:

-      case BOOLEAN_CLASS:

-      case STRING_CLASS:

-        value = value.valueOf();

-    }

-

-    switch (value) {

-      case null: return 'null';

-      case true: return 'true';

-      case false: return 'false';

-    }

-

-    type = typeof value;

-    switch (type) {

-      case 'string':

-        return value.inspect(true);

-      case 'number':

-        return isFinite(value) ? String(value) : 'null';

-      case 'object':

-

-        for (var i = 0, length = stack.length; i < length; i++) {

-          if (stack[i] === value) { throw new TypeError(); }

-        }

-        stack.push(value);

-

-        var partial = [];

-        if (_class === ARRAY_CLASS) {

-          for (var i = 0, length = value.length; i < length; i++) {

-            var str = Str(i, value, stack);

-            partial.push(typeof str === 'undefined' ? 'null' : str);

-          }

-          partial = '[' + partial.join(',') + ']';

-        } else {

-          var keys = Object.keys(value);

-          for (var i = 0, length = keys.length; i < length; i++) {

-            var key = keys[i], str = Str(key, value, stack);

-            if (typeof str !== "undefined") {

-               partial.push(key.inspect(true)+ ':' + str);

-             }

-          }

-          partial = '{' + partial.join(',') + '}';

-        }

-        stack.pop();

-        return partial;

-    }

-  }

-

-  function stringify(object) {

-    return JSON.stringify(object);

-  }

-

-  function toQueryString(object) {

-    return $H(object).toQueryString();

-  }

-

-  function toHTML(object) {

-    return object && object.toHTML ? object.toHTML() : String.interpret(object);

-  }

-

-  function keys(object) {

-    if (Type(object) !== OBJECT_TYPE) { throw new TypeError(); }

-    var results = [];

-    for (var property in object) {

-      if (object.hasOwnProperty(property)) {

-        results.push(property);

-      }

-    }

-    return results;

-  }

-

-  function values(object) {

-    var results = [];

-    for (var property in object)

-      results.push(object[property]);

-    return results;

-  }

-

-  function clone(object) {

-    return extend({ }, object);

-  }

-

-  function isElement(object) {

-    return !!(object && object.nodeType == 1);

-  }

-

-  function isArray(object) {

-    return _toString.call(object) === ARRAY_CLASS;

-  }

-

-  var hasNativeIsArray = (typeof Array.isArray == 'function')

-    && Array.isArray([]) && !Array.isArray({});

-

-  if (hasNativeIsArray) {

-    isArray = Array.isArray;

-  }

-

-  function isHash(object) {

-    return object instanceof Hash;

-  }

-

-  function isFunction(object) {

-    return _toString.call(object) === FUNCTION_CLASS;

-  }

-

-  function isString(object) {

-    return _toString.call(object) === STRING_CLASS;

-  }

-

-  function isNumber(object) {

-    return _toString.call(object) === NUMBER_CLASS;

-  }

-

-  function isDate(object) {

-    return _toString.call(object) === DATE_CLASS;

-  }

-

-  function isUndefined(object) {

-    return typeof object === "undefined";

-  }

-

-  extend(Object, {

-    extend:        extend,

-    inspect:       inspect,

-    toJSON:        NATIVE_JSON_STRINGIFY_SUPPORT ? stringify : toJSON,

-    toQueryString: toQueryString,

-    toHTML:        toHTML,

-    keys:          Object.keys || keys,

-    values:        values,

-    clone:         clone,

-    isElement:     isElement,

-    isArray:       isArray,

-    isHash:        isHash,

-    isFunction:    isFunction,

-    isString:      isString,

-    isNumber:      isNumber,

-    isDate:        isDate,

-    isUndefined:   isUndefined

-  });

-})();

-Object.extend(Function.prototype, (function() {

-  var slice = Array.prototype.slice;

-

-  function update(array, args) {

-    var arrayLength = array.length, length = args.length;

-    while (length--) array[arrayLength + length] = args[length];

-    return array;

-  }

-

-  function merge(array, args) {

-    array = slice.call(array, 0);

-    return update(array, args);

-  }

-

-  function argumentNames() {

-    var names = this.toString().match(/^[\s\(]*function[^(]*\(([^)]*)\)/)[1]

-      .replace(/\/\/.*?[\r\n]|\/\*(?:.|[\r\n])*?\*\//g, '')

-      .replace(/\s+/g, '').split(',');

-    return names.length == 1 && !names[0] ? [] : names;

-  }

-

-  function bind(context) {

-    if (arguments.length < 2 && Object.isUndefined(arguments[0])) return this;

-    var __method = this, args = slice.call(arguments, 1);

-    return function() {

-      var a = merge(args, arguments);

-      return __method.apply(context, a);

-    }

-  }

-

-  function bindAsEventListener(context) {

-    var __method = this, args = slice.call(arguments, 1);

-    return function(event) {

-      var a = update([event || window.event], args);

-      return __method.apply(context, a);

-    }

-  }

-

-  function curry() {

-    if (!arguments.length) return this;

-    var __method = this, args = slice.call(arguments, 0);

-    return function() {

-      var a = merge(args, arguments);

-      return __method.apply(this, a);

-    }

-  }

-

-  function delay(timeout) {

-    var __method = this, args = slice.call(arguments, 1);

-    timeout = timeout * 1000;

-    return window.setTimeout(function() {

-      return __method.apply(__method, args);

-    }, timeout);

-  }

-

-  function defer() {

-    var args = update([0.01], arguments);

-    return this.delay.apply(this, args);

-  }

-

-  function wrap(wrapper) {

-    var __method = this;

-    return function() {

-      var a = update([__method.bind(this)], arguments);

-      return wrapper.apply(this, a);

-    }

-  }

-

-  function methodize() {

-    if (this._methodized) return this._methodized;

-    var __method = this;

-    return this._methodized = function() {

-      var a = update([this], arguments);

-      return __method.apply(null, a);

-    };

-  }

-

-  return {

-    argumentNames:       argumentNames,

-    bind:                bind,

-    bindAsEventListener: bindAsEventListener,

-    curry:               curry,

-    delay:               delay,

-    defer:               defer,

-    wrap:                wrap,

-    methodize:           methodize

-  }

-})());

-

-

-

-(function(proto) {

-

-

-  function toISOString() {

-    return this.getUTCFullYear() + '-' +

-      (this.getUTCMonth() + 1).toPaddedString(2) + '-' +

-      this.getUTCDate().toPaddedString(2) + 'T' +

-      this.getUTCHours().toPaddedString(2) + ':' +

-      this.getUTCMinutes().toPaddedString(2) + ':' +

-      this.getUTCSeconds().toPaddedString(2) + 'Z';

-  }

-

-

-  function toJSON() {

-    return this.toISOString();

-  }

-

-  if (!proto.toISOString) proto.toISOString = toISOString;

-  if (!proto.toJSON) proto.toJSON = toJSON;

-

-})(Date.prototype);

-

-

-RegExp.prototype.match = RegExp.prototype.test;

-

-RegExp.escape = function(str) {

-  return String(str).replace(/([.*+?^=!:${}()|[\]\/\\])/g, '\\$1');

-};

-var PeriodicalExecuter = Class.create({

-  initialize: function(callback, frequency) {

-    this.callback = callback;

-    this.frequency = frequency;

-    this.currentlyExecuting = false;

-

-    this.registerCallback();

-  },

-

-  registerCallback: function() {

-    this.timer = setInterval(this.onTimerEvent.bind(this), this.frequency * 1000);

-  },

-

-  execute: function() {

-    this.callback(this);

-  },

-

-  stop: function() {

-    if (!this.timer) return;

-    clearInterval(this.timer);

-    this.timer = null;

-  },

-

-  onTimerEvent: function() {

-    if (!this.currentlyExecuting) {

-      try {

-        this.currentlyExecuting = true;

-        this.execute();

-        this.currentlyExecuting = false;

-      } catch(e) {

-        this.currentlyExecuting = false;

-        throw e;

-      }

-    }

-  }

-});

-Object.extend(String, {

-  interpret: function(value) {

-    return value == null ? '' : String(value);

-  },

-  specialChar: {

-    '\b': '\\b',

-    '\t': '\\t',

-    '\n': '\\n',

-    '\f': '\\f',

-    '\r': '\\r',

-    '\\': '\\\\'

-  }

-});

-

-Object.extend(String.prototype, (function() {

-  var NATIVE_JSON_PARSE_SUPPORT = window.JSON &&

-    typeof JSON.parse === 'function' &&

-    JSON.parse('{"test": true}').test;

-

-  function prepareReplacement(replacement) {

-    if (Object.isFunction(replacement)) return replacement;

-    var template = new Template(replacement);

-    return function(match) { return template.evaluate(match) };

-  }

-

-  function gsub(pattern, replacement) {

-    var result = '', source = this, match;

-    replacement = prepareReplacement(replacement);

-

-    if (Object.isString(pattern))

-      pattern = RegExp.escape(pattern);

-

-    if (!(pattern.length || pattern.source)) {

-      replacement = replacement('');

-      return replacement + source.split('').join(replacement) + replacement;

-    }

-

-    while (source.length > 0) {

-      if (match = source.match(pattern)) {

-        result += source.slice(0, match.index);

-        result += String.interpret(replacement(match));

-        source  = source.slice(match.index + match[0].length);

-      } else {

-        result += source, source = '';

-      }

-    }

-    return result;

-  }

-

-  function sub(pattern, replacement, count) {

-    replacement = prepareReplacement(replacement);

-    count = Object.isUndefined(count) ? 1 : count;

-

-    return this.gsub(pattern, function(match) {

-      if (--count < 0) return match[0];

-      return replacement(match);

-    });

-  }

-

-  function scan(pattern, iterator) {

-    this.gsub(pattern, iterator);

-    return String(this);

-  }

-

-  function truncate(length, truncation) {

-    length = length || 30;

-    truncation = Object.isUndefined(truncation) ? '...' : truncation;

-    return this.length > length ?

-      this.slice(0, length - truncation.length) + truncation : String(this);

-  }

-

-  function strip() {

-    return this.replace(/^\s+/, '').replace(/\s+$/, '');

-  }

-

-  function stripTags() {

-    return this.replace(/<\w+(\s+("[^"]*"|'[^']*'|[^>])+)?>|<\/\w+>/gi, '');

-  }

-

-  function stripScripts() {

-    return this.replace(new RegExp(Prototype.ScriptFragment, 'img'), '');

-  }

-

-  function extractScripts() {

-    var matchAll = new RegExp(Prototype.ScriptFragment, 'img'),

-        matchOne = new RegExp(Prototype.ScriptFragment, 'im');

-    return (this.match(matchAll) || []).map(function(scriptTag) {

-      return (scriptTag.match(matchOne) || ['', ''])[1];

-    });

-  }

-

-  function evalScripts() {

-    return this.extractScripts().map(function(script) { return eval(script) });

-  }

-

-  function escapeHTML() {

-    return this.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;');

-  }

-

-  function unescapeHTML() {

-    return this.stripTags().replace(/&lt;/g,'<').replace(/&gt;/g,'>').replace(/&amp;/g,'&');

-  }

-

-

-  function toQueryParams(separator) {

-    var match = this.strip().match(/([^?#]*)(#.*)?$/);

-    if (!match) return { };

-

-    return match[1].split(separator || '&').inject({ }, function(hash, pair) {

-      if ((pair = pair.split('='))[0]) {

-        var key = decodeURIComponent(pair.shift()),

-            value = pair.length > 1 ? pair.join('=') : pair[0];

-

-        if (value != undefined) value = decodeURIComponent(value);

-

-        if (key in hash) {

-          if (!Object.isArray(hash[key])) hash[key] = [hash[key]];

-          hash[key].push(value);

-        }

-        else hash[key] = value;

-      }

-      return hash;

-    });

-  }

-

-  function toArray() {

-    return this.split('');

-  }

-

-  function succ() {

-    return this.slice(0, this.length - 1) +

-      String.fromCharCode(this.charCodeAt(this.length - 1) + 1);

-  }

-

-  function times(count) {

-    return count < 1 ? '' : new Array(count + 1).join(this);

-  }

-

-  function camelize() {

-    return this.replace(/-+(.)?/g, function(match, chr) {

-      return chr ? chr.toUpperCase() : '';

-    });

-  }

-

-  function capitalize() {

-    return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();

-  }

-

-  function underscore() {

-    return this.replace(/::/g, '/')

-               .replace(/([A-Z]+)([A-Z][a-z])/g, '$1_$2')

-               .replace(/([a-z\d])([A-Z])/g, '$1_$2')

-               .replace(/-/g, '_')

-               .toLowerCase();

-  }

-

-  function dasherize() {

-    return this.replace(/_/g, '-');

-  }

-

-  function inspect(useDoubleQuotes) {

-    var escapedString = this.replace(/[\x00-\x1f\\]/g, function(character) {

-      if (character in String.specialChar) {

-        return String.specialChar[character];

-      }

-      return '\\u00' + character.charCodeAt().toPaddedString(2, 16);

-    });

-    if (useDoubleQuotes) return '"' + escapedString.replace(/"/g, '\\"') + '"';

-    return "'" + escapedString.replace(/'/g, '\\\'') + "'";

-  }

-

-  function unfilterJSON(filter) {

-    return this.replace(filter || Prototype.JSONFilter, '$1');

-  }

-

-  function isJSON() {

-    var str = this;

-    if (str.blank()) return false;

-    str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@');

-    str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');

-    str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, '');

-    return (/^[\],:{}\s]*$/).test(str);

-  }

-

-  function evalJSON(sanitize) {

-    var json = this.unfilterJSON(),

-        cx = /[\u0000\u00ad\u0600-\u0604\u070f\u17b4\u17b5\u200c-\u200f\u2028-\u202f\u2060-\u206f\ufeff\ufff0-\uffff]/g;

-    if (cx.test(json)) {

-      json = json.replace(cx, function (a) {

-        return '\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);

-      });

-    }

-    try {

-      if (!sanitize || json.isJSON()) return eval('(' + json + ')');

-    } catch (e) { }

-    throw new SyntaxError('Badly formed JSON string: ' + this.inspect());

-  }

-

-  function parseJSON() {

-    var json = this.unfilterJSON();

-    return JSON.parse(json);

-  }

-

-  function include(pattern) {

-    return this.indexOf(pattern) > -1;

-  }

-

-  function startsWith(pattern) {

-    return this.lastIndexOf(pattern, 0) === 0;

-  }

-

-  function endsWith(pattern) {

-    var d = this.length - pattern.length;

-    return d >= 0 && this.indexOf(pattern, d) === d;

-  }

-

-  function empty() {

-    return this == '';

-  }

-

-  function blank() {

-    return /^\s*$/.test(this);

-  }

-

-  function interpolate(object, pattern) {

-    return new Template(this, pattern).evaluate(object);

-  }

-

-  return {

-    gsub:           gsub,

-    sub:            sub,

-    scan:           scan,

-    truncate:       truncate,

-    strip:          String.prototype.trim || strip,

-    stripTags:      stripTags,

-    stripScripts:   stripScripts,

-    extractScripts: extractScripts,

-    evalScripts:    evalScripts,

-    escapeHTML:     escapeHTML,

-    unescapeHTML:   unescapeHTML,

-    toQueryParams:  toQueryParams,

-    parseQuery:     toQueryParams,

-    toArray:        toArray,

-    succ:           succ,

-    times:          times,

-    camelize:       camelize,

-    capitalize:     capitalize,

-    underscore:     underscore,

-    dasherize:      dasherize,

-    inspect:        inspect,

-    unfilterJSON:   unfilterJSON,

-    isJSON:         isJSON,

-    evalJSON:       NATIVE_JSON_PARSE_SUPPORT ? parseJSON : evalJSON,

-    include:        include,

-    startsWith:     startsWith,

-    endsWith:       endsWith,

-    empty:          empty,

-    blank:          blank,

-    interpolate:    interpolate

-  };

-})());

-

-var Template = Class.create({

-  initialize: function(template, pattern) {

-    this.template = template.toString();

-    this.pattern = pattern || Template.Pattern;

-  },

-

-  evaluate: function(object) {

-    if (object && Object.isFunction(object.toTemplateReplacements))

-      object = object.toTemplateReplacements();

-

-    return this.template.gsub(this.pattern, function(match) {

-      if (object == null) return (match[1] + '');

-

-      var before = match[1] || '';

-      if (before == '\\') return match[2];

-

-      var ctx = object, expr = match[3],

-          pattern = /^([^.[]+|\[((?:.*?[^\\])?)\])(\.|\[|$)/;

-

-      match = pattern.exec(expr);

-      if (match == null) return before;

-

-      while (match != null) {

-        var comp = match[1].startsWith('[') ? match[2].replace(/\\\\]/g, ']') : match[1];

-        ctx = ctx[comp];

-        if (null == ctx || '' == match[3]) break;

-        expr = expr.substring('[' == match[3] ? match[1].length : match[0].length);

-        match = pattern.exec(expr);

-      }

-

-      return before + String.interpret(ctx);

-    });

-  }

-});

-Template.Pattern = /(^|.|\r|\n)(#\{(.*?)\})/;

-

-var $break = { };

-

-var Enumerable = (function() {

-  function each(iterator, context) {

-    var index = 0;

-    try {

-      this._each(function(value) {

-        iterator.call(context, value, index++);

-      });

-    } catch (e) {

-      if (e != $break) throw e;

-    }

-    return this;

-  }

-

-  function eachSlice(number, iterator, context) {

-    var index = -number, slices = [], array = this.toArray();

-    if (number < 1) return array;

-    while ((index += number) < array.length)

-      slices.push(array.slice(index, index+number));

-    return slices.collect(iterator, context);

-  }

-

-  function all(iterator, context) {

-    iterator = iterator || Prototype.K;

-    var result = true;

-    this.each(function(value, index) {

-      result = result && !!iterator.call(context, value, index);

-      if (!result) throw $break;

-    });

-    return result;

-  }

-

-  function any(iterator, context) {

-    iterator = iterator || Prototype.K;

-    var result = false;

-    this.each(function(value, index) {

-      if (result = !!iterator.call(context, value, index))

-        throw $break;

-    });

-    return result;

-  }

-

-  function collect(iterator, context) {

-    iterator = iterator || Prototype.K;

-    var results = [];

-    this.each(function(value, index) {

-      results.push(iterator.call(context, value, index));

-    });

-    return results;

-  }

-

-  function detect(iterator, context) {

-    var result;

-    this.each(function(value, index) {

-      if (iterator.call(context, value, index)) {

-        result = value;

-        throw $break;

-      }

-    });

-    return result;

-  }

-

-  function findAll(iterator, context) {

-    var results = [];

-    this.each(function(value, index) {

-      if (iterator.call(context, value, index))

-        results.push(value);

-    });

-    return results;

-  }

-

-  function grep(filter, iterator, context) {

-    iterator = iterator || Prototype.K;

-    var results = [];

-

-    if (Object.isString(filter))

-      filter = new RegExp(RegExp.escape(filter));

-

-    this.each(function(value, index) {

-      if (filter.match(value))

-        results.push(iterator.call(context, value, index));

-    });

-    return results;

-  }

-

-  function include(object) {

-    if (Object.isFunction(this.indexOf))

-      if (this.indexOf(object) != -1) return true;

-

-    var found = false;

-    this.each(function(value) {

-      if (value == object) {

-        found = true;

-        throw $break;

-      }

-    });

-    return found;

-  }

-

-  function inGroupsOf(number, fillWith) {

-    fillWith = Object.isUndefined(fillWith) ? null : fillWith;

-    return this.eachSlice(number, function(slice) {

-      while(slice.length < number) slice.push(fillWith);

-      return slice;

-    });

-  }

-

-  function inject(memo, iterator, context) {

-    this.each(function(value, index) {

-      memo = iterator.call(context, memo, value, index);

-    });

-    return memo;

-  }

-

-  function invoke(method) {

-    var args = $A(arguments).slice(1);

-    return this.map(function(value) {

-      return value[method].apply(value, args);

-    });

-  }

-

-  function max(iterator, context) {

-    iterator = iterator || Prototype.K;

-    var result;

-    this.each(function(value, index) {

-      value = iterator.call(context, value, index);

-      if (result == null || value >= result)

-        result = value;

-    });

-    return result;

-  }

-

-  function min(iterator, context) {

-    iterator = iterator || Prototype.K;

-    var result;

-    this.each(function(value, index) {

-      value = iterator.call(context, value, index);

-      if (result == null || value < result)

-        result = value;

-    });

-    return result;

-  }

-

-  function partition(iterator, context) {

-    iterator = iterator || Prototype.K;

-    var trues = [], falses = [];

-    this.each(function(value, index) {

-      (iterator.call(context, value, index) ?

-        trues : falses).push(value);

-    });

-    return [trues, falses];

-  }

-

-  function pluck(property) {

-    var results = [];

-    this.each(function(value) {

-      results.push(value[property]);

-    });

-    return results;

-  }

-

-  function reject(iterator, context) {

-    var results = [];

-    this.each(function(value, index) {

-      if (!iterator.call(context, value, index))

-        results.push(value);

-    });

-    return results;

-  }

-

-  function sortBy(iterator, context) {

-    return this.map(function(value, index) {

-      return {

-        value: value,

-        criteria: iterator.call(context, value, index)

-      };

-    }).sort(function(left, right) {

-      var a = left.criteria, b = right.criteria;

-      return a < b ? -1 : a > b ? 1 : 0;

-    }).pluck('value');

-  }

-

-  function toArray() {

-    return this.map();

-  }

-

-  function zip() {

-    var iterator = Prototype.K, args = $A(arguments);

-    if (Object.isFunction(args.last()))

-      iterator = args.pop();

-

-    var collections = [this].concat(args).map($A);

-    return this.map(function(value, index) {

-      return iterator(collections.pluck(index));

-    });

-  }

-

-  function size() {

-    return this.toArray().length;

-  }

-

-  function inspect() {

-    return '#<Enumerable:' + this.toArray().inspect() + '>';

-  }

-

-

-

-

-

-

-

-

-

-  return {

-    each:       each,

-    eachSlice:  eachSlice,

-    all:        all,

-    every:      all,

-    any:        any,

-    some:       any,

-    collect:    collect,

-    map:        collect,

-    detect:     detect,

-    findAll:    findAll,

-    select:     findAll,

-    filter:     findAll,

-    grep:       grep,

-    include:    include,

-    member:     include,

-    inGroupsOf: inGroupsOf,

-    inject:     inject,

-    invoke:     invoke,

-    max:        max,

-    min:        min,

-    partition:  partition,

-    pluck:      pluck,

-    reject:     reject,

-    sortBy:     sortBy,

-    toArray:    toArray,

-    entries:    toArray,

-    zip:        zip,

-    size:       size,

-    inspect:    inspect,

-    find:       detect

-  };

-})();

-

-function $A(iterable) {

-  if (!iterable) return [];

-  if ('toArray' in Object(iterable)) return iterable.toArray();

-  var length = iterable.length || 0, results = new Array(length);

-  while (length--) results[length] = iterable[length];

-  return results;

-}

-

-

-function $w(string) {

-  if (!Object.isString(string)) return [];

-  string = string.strip();

-  return string ? string.split(/\s+/) : [];

-}

-

-Array.from = $A;

-

-

-(function() {

-  var arrayProto = Array.prototype,

-      slice = arrayProto.slice,

-      _each = arrayProto.forEach; // use native browser JS 1.6 implementation if available

-

-  function each(iterator, context) {

-    for (var i = 0, length = this.length >>> 0; i < length; i++) {

-      if (i in this) iterator.call(context, this[i], i, this);

-    }

-  }

-  if (!_each) _each = each;

-

-  function clear() {

-    this.length = 0;

-    return this;

-  }

-

-  function first() {

-    return this[0];

-  }

-

-  function last() {

-    return this[this.length - 1];

-  }

-

-  function compact() {

-    return this.select(function(value) {

-      return value != null;

-    });

-  }

-

-  function flatten() {

-    return this.inject([], function(array, value) {

-      if (Object.isArray(value))

-        return array.concat(value.flatten());

-      array.push(value);

-      return array;

-    });

-  }

-

-  function without() {

-    var values = slice.call(arguments, 0);

-    return this.select(function(value) {

-      return !values.include(value);

-    });

-  }

-

-  function reverse(inline) {

-    return (inline === false ? this.toArray() : this)._reverse();

-  }

-

-  function uniq(sorted) {

-    return this.inject([], function(array, value, index) {

-      if (0 == index || (sorted ? array.last() != value : !array.include(value)))

-        array.push(value);

-      return array;

-    });

-  }

-

-  function intersect(array) {

-    return this.uniq().findAll(function(item) {

-      return array.detect(function(value) { return item === value });

-    });

-  }

-

-

-  function clone() {

-    return slice.call(this, 0);

-  }

-

-  function size() {

-    return this.length;

-  }

-

-  function inspect() {

-    return '[' + this.map(Object.inspect).join(', ') + ']';

-  }

-

-  function indexOf(item, i) {

-    i || (i = 0);

-    var length = this.length;

-    if (i < 0) i = length + i;

-    for (; i < length; i++)

-      if (this[i] === item) return i;

-    return -1;

-  }

-

-  function lastIndexOf(item, i) {

-    i = isNaN(i) ? this.length : (i < 0 ? this.length + i : i) + 1;

-    var n = this.slice(0, i).reverse().indexOf(item);

-    return (n < 0) ? n : i - n - 1;

-  }

-

-  function concat() {

-    var array = slice.call(this, 0), item;

-    for (var i = 0, length = arguments.length; i < length; i++) {

-      item = arguments[i];

-      if (Object.isArray(item) && !('callee' in item)) {

-        for (var j = 0, arrayLength = item.length; j < arrayLength; j++)

-          array.push(item[j]);

-      } else {

-        array.push(item);

-      }

-    }

-    return array;

-  }

-

-  Object.extend(arrayProto, Enumerable);

-

-  if (!arrayProto._reverse)

-    arrayProto._reverse = arrayProto.reverse;

-

-  Object.extend(arrayProto, {

-    _each:     _each,

-    clear:     clear,

-    first:     first,

-    last:      last,

-    compact:   compact,

-    flatten:   flatten,

-    without:   without,

-    reverse:   reverse,

-    uniq:      uniq,

-    intersect: intersect,

-    clone:     clone,

-    toArray:   clone,

-    size:      size,

-    inspect:   inspect

-  });

-

-  var CONCAT_ARGUMENTS_BUGGY = (function() {

-    return [].concat(arguments)[0][0] !== 1;

-  })(1,2)

-

-  if (CONCAT_ARGUMENTS_BUGGY) arrayProto.concat = concat;

-

-  if (!arrayProto.indexOf) arrayProto.indexOf = indexOf;

-  if (!arrayProto.lastIndexOf) arrayProto.lastIndexOf = lastIndexOf;

-})();

-function $H(object) {

-  return new Hash(object);

-};

-

-var Hash = Class.create(Enumerable, (function() {

-  function initialize(object) {

-    this._object = Object.isHash(object) ? object.toObject() : Object.clone(object);

-  }

-

-

-  function _each(iterator) {

-    for (var key in this._object) {

-      var value = this._object[key], pair = [key, value];

-      pair.key = key;

-      pair.value = value;

-      iterator(pair);

-    }

-  }

-

-  function set(key, value) {

-    return this._object[key] = value;

-  }

-

-  function get(key) {

-    if (this._object[key] !== Object.prototype[key])

-      return this._object[key];

-  }

-

-  function unset(key) {

-    var value = this._object[key];

-    delete this._object[key];

-    return value;

-  }

-

-  function toObject() {

-    return Object.clone(this._object);

-  }

-

-

-

-  function keys() {

-    return this.pluck('key');

-  }

-

-  function values() {

-    return this.pluck('value');

-  }

-

-  function index(value) {

-    var match = this.detect(function(pair) {

-      return pair.value === value;

-    });

-    return match && match.key;

-  }

-

-  function merge(object) {

-    return this.clone().update(object);

-  }

-

-  function update(object) {

-    return new Hash(object).inject(this, function(result, pair) {

-      result.set(pair.key, pair.value);

-      return result;

-    });

-  }

-

-  function toQueryPair(key, value) {

-    if (Object.isUndefined(value)) return key;

-    return key + '=' + encodeURIComponent(String.interpret(value));

-  }

-

-  function toQueryString() {

-    return this.inject([], function(results, pair) {

-      var key = encodeURIComponent(pair.key), values = pair.value;

-

-      if (values && typeof values == 'object') {

-        if (Object.isArray(values)) {

-          var queryValues = [];

-          for (var i = 0, len = values.length, value; i < len; i++) {

-            value = values[i];

-            queryValues.push(toQueryPair(key, value));

-          }

-          return results.concat(queryValues);

-        }

-      } else results.push(toQueryPair(key, values));

-      return results;

-    }).join('&');

-  }

-

-  function inspect() {

-    return '#<Hash:{' + this.map(function(pair) {

-      return pair.map(Object.inspect).join(': ');

-    }).join(', ') + '}>';

-  }

-

-  function clone() {

-    return new Hash(this);

-  }

-

-  return {

-    initialize:             initialize,

-    _each:                  _each,

-    set:                    set,

-    get:                    get,

-    unset:                  unset,

-    toObject:               toObject,

-    toTemplateReplacements: toObject,

-    keys:                   keys,

-    values:                 values,

-    index:                  index,

-    merge:                  merge,

-    update:                 update,

-    toQueryString:          toQueryString,

-    inspect:                inspect,

-    toJSON:                 toObject,

-    clone:                  clone

-  };

-})());

-

-Hash.from = $H;

-Object.extend(Number.prototype, (function() {

-  function toColorPart() {

-    return this.toPaddedString(2, 16);

-  }

-

-  function succ() {

-    return this + 1;

-  }

-

-  function times(iterator, context) {

-    $R(0, this, true).each(iterator, context);

-    return this;

-  }

-

-  function toPaddedString(length, radix) {

-    var string = this.toString(radix || 10);

-    return '0'.times(length - string.length) + string;

-  }

-

-  function abs() {

-    return Math.abs(this);

-  }

-

-  function round() {

-    return Math.round(this);

-  }

-

-  function ceil() {

-    return Math.ceil(this);

-  }

-

-  function floor() {

-    return Math.floor(this);

-  }

-

-  return {

-    toColorPart:    toColorPart,

-    succ:           succ,

-    times:          times,

-    toPaddedString: toPaddedString,

-    abs:            abs,

-    round:          round,

-    ceil:           ceil,

-    floor:          floor

-  };

-})());

-

-function $R(start, end, exclusive) {

-  return new ObjectRange(start, end, exclusive);

-}

-

-var ObjectRange = Class.create(Enumerable, (function() {

-  function initialize(start, end, exclusive) {

-    this.start = start;

-    this.end = end;

-    this.exclusive = exclusive;

-  }

-

-  function _each(iterator) {

-    var value = this.start;

-    while (this.include(value)) {

-      iterator(value);

-      value = value.succ();

-    }

-  }

-

-  function include(value) {

-    if (value < this.start)

-      return false;

-    if (this.exclusive)

-      return value < this.end;

-    return value <= this.end;

-  }

-

-  return {

-    initialize: initialize,

-    _each:      _each,

-    include:    include

-  };

-})());

-

-

-

-var Ajax = {

-  getTransport: function() {

-    return Try.these(

-      function() {return new XMLHttpRequest()},

-      function() {return new ActiveXObject('Msxml2.XMLHTTP')},

-      function() {return new ActiveXObject('Microsoft.XMLHTTP')}

-    ) || false;

-  },

-

-  activeRequestCount: 0

-};

-

-Ajax.Responders = {

-  responders: [],

-

-  _each: function(iterator) {

-    this.responders._each(iterator);

-  },

-

-  register: function(responder) {

-    if (!this.include(responder))

-      this.responders.push(responder);

-  },

-

-  unregister: function(responder) {

-    this.responders = this.responders.without(responder);

-  },

-

-  dispatch: function(callback, request, transport, json) {

-    this.each(function(responder) {

-      if (Object.isFunction(responder[callback])) {

-        try {

-          responder[callback].apply(responder, [request, transport, json]);

-        } catch (e) { }

-      }

-    });

-  }

-};

-

-Object.extend(Ajax.Responders, Enumerable);

-

-Ajax.Responders.register({

-  onCreate:   function() { Ajax.activeRequestCount++ },

-  onComplete: function() { Ajax.activeRequestCount-- }

-});

-Ajax.Base = Class.create({

-  initialize: function(options) {

-    this.options = {

-      method:       'post',

-      asynchronous: true,

-      contentType:  'application/x-www-form-urlencoded',

-      encoding:     'UTF-8',

-      parameters:   '',

-      evalJSON:     true,

-      evalJS:       true

-    };

-    Object.extend(this.options, options || { });

-

-    this.options.method = this.options.method.toLowerCase();

-

-    if (Object.isHash(this.options.parameters))

-      this.options.parameters = this.options.parameters.toObject();

-  }

-});

-Ajax.Request = Class.create(Ajax.Base, {

-  _complete: false,

-

-  initialize: function($super, url, options) {

-    $super(options);

-    this.transport = Ajax.getTransport();

-    this.request(url);

-  },

-

-  request: function(url) {

-    this.url = url;

-    this.method = this.options.method;

-    var params = Object.isString(this.options.parameters) ?

-          this.options.parameters :

-          Object.toQueryString(this.options.parameters);

-

-    if (!['get', 'post'].include(this.method)) {

-      params += (params ? '&' : '') + "_method=" + this.method;

-      this.method = 'post';

-    }

-

-    if (params && this.method === 'get') {

-      this.url += (this.url.include('?') ? '&' : '?') + params;

-    }

-

-    this.parameters = params.toQueryParams();

-

-    try {

-      var response = new Ajax.Response(this);

-      if (this.options.onCreate) this.options.onCreate(response);

-      Ajax.Responders.dispatch('onCreate', this, response);

-

-      this.transport.open(this.method.toUpperCase(), this.url,

-        this.options.asynchronous);

-

-      if (this.options.asynchronous) this.respondToReadyState.bind(this).defer(1);

-

-      this.transport.onreadystatechange = this.onStateChange.bind(this);

-      this.setRequestHeaders();

-

-      this.body = this.method == 'post' ? (this.options.postBody || params) : null;

-      this.transport.send(this.body);

-

-      /* Force Firefox to handle ready state 4 for synchronous requests */

-      if (!this.options.asynchronous && this.transport.overrideMimeType)

-        this.onStateChange();

-

-    }

-    catch (e) {

-      this.dispatchException(e);

-    }

-  },

-

-  onStateChange: function() {

-    var readyState = this.transport.readyState;

-    if (readyState > 1 && !((readyState == 4) && this._complete))

-      this.respondToReadyState(this.transport.readyState);

-  },

-

-  setRequestHeaders: function() {

-    var headers = {

-      'X-Requested-With': 'XMLHttpRequest',

-      'X-Prototype-Version': Prototype.Version,

-      'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'

-    };

-

-    if (this.method == 'post') {

-      headers['Content-type'] = this.options.contentType +

-        (this.options.encoding ? '; charset=' + this.options.encoding : '');

-

-      /* Force "Connection: close" for older Mozilla browsers to work

-       * around a bug where XMLHttpRequest sends an incorrect

-       * Content-length header. See Mozilla Bugzilla #246651.

-       */

-      if (this.transport.overrideMimeType &&

-          (navigator.userAgent.match(/Gecko\/(\d{4})/) || [0,2005])[1] < 2005)

-            headers['Connection'] = 'close';

-    }

-

-    if (typeof this.options.requestHeaders == 'object') {

-      var extras = this.options.requestHeaders;

-

-      if (Object.isFunction(extras.push))

-        for (var i = 0, length = extras.length; i < length; i += 2)

-          headers[extras[i]] = extras[i+1];

-      else

-        $H(extras).each(function(pair) { headers[pair.key] = pair.value });

-    }

-

-    for (var name in headers)

-      this.transport.setRequestHeader(name, headers[name]);

-  },

-

-  success: function() {

-    var status = this.getStatus();

-    return !status || (status >= 200 && status < 300) || status == 304;

-  },

-

-  getStatus: function() {

-    try {

-      if (this.transport.status === 1223) return 204;

-      return this.transport.status || 0;

-    } catch (e) { return 0 }

-  },

-

-  respondToReadyState: function(readyState) {

-    var state = Ajax.Request.Events[readyState], response = new Ajax.Response(this);

-

-    if (state == 'Complete') {

-      try {

-        this._complete = true;

-        (this.options['on' + response.status]

-         || this.options['on' + (this.success() ? 'Success' : 'Failure')]

-         || Prototype.emptyFunction)(response, response.headerJSON);

-      } catch (e) {

-        this.dispatchException(e);

-      }

-

-      var contentType = response.getHeader('Content-type');

-      if (this.options.evalJS == 'force'

-          || (this.options.evalJS && this.isSameOrigin() && contentType

-          && contentType.match(/^\s*(text|application)\/(x-)?(java|ecma)script(;.*)?\s*$/i)))

-        this.evalResponse();

-    }

-

-    try {

-      (this.options['on' + state] || Prototype.emptyFunction)(response, response.headerJSON);

-      Ajax.Responders.dispatch('on' + state, this, response, response.headerJSON);

-    } catch (e) {

-      this.dispatchException(e);

-    }

-

-    if (state == 'Complete') {

-      this.transport.onreadystatechange = Prototype.emptyFunction;

-    }

-  },

-

-  isSameOrigin: function() {

-    var m = this.url.match(/^\s*https?:\/\/[^\/]*/);

-    return !m || (m[0] == '#{protocol}//#{domain}#{port}'.interpolate({

-      protocol: location.protocol,

-      domain: document.domain,

-      port: location.port ? ':' + location.port : ''

-    }));

-  },

-

-  getHeader: function(name) {

-    try {

-      return this.transport.getResponseHeader(name) || null;

-    } catch (e) { return null; }

-  },

-

-  evalResponse: function() {

-    try {

-      return eval((this.transport.responseText || '').unfilterJSON());

-    } catch (e) {

-      this.dispatchException(e);

-    }

-  },

-

-  dispatchException: function(exception) {

-    (this.options.onException || Prototype.emptyFunction)(this, exception);

-    Ajax.Responders.dispatch('onException', this, exception);

-  }

-});

-

-Ajax.Request.Events =

-  ['Uninitialized', 'Loading', 'Loaded', 'Interactive', 'Complete'];

-

-

-

-

-

-

-

-

-Ajax.Response = Class.create({

-  initialize: function(request){

-    this.request = request;

-    var transport  = this.transport  = request.transport,

-        readyState = this.readyState = transport.readyState;

-

-    if ((readyState > 2 && !Prototype.Browser.IE) || readyState == 4) {

-      this.status       = this.getStatus();

-      this.statusText   = this.getStatusText();

-      this.responseText = String.interpret(transport.responseText);

-      this.headerJSON   = this._getHeaderJSON();

-    }

-

-    if (readyState == 4) {

-      var xml = transport.responseXML;

-      this.responseXML  = Object.isUndefined(xml) ? null : xml;

-      this.responseJSON = this._getResponseJSON();

-    }

-  },

-

-  status:      0,

-

-  statusText: '',

-

-  getStatus: Ajax.Request.prototype.getStatus,

-

-  getStatusText: function() {

-    try {

-      return this.transport.statusText || '';

-    } catch (e) { return '' }

-  },

-

-  getHeader: Ajax.Request.prototype.getHeader,

-

-  getAllHeaders: function() {

-    try {

-      return this.getAllResponseHeaders();

-    } catch (e) { return null }

-  },

-

-  getResponseHeader: function(name) {

-    return this.transport.getResponseHeader(name);

-  },

-

-  getAllResponseHeaders: function() {

-    return this.transport.getAllResponseHeaders();

-  },

-

-  _getHeaderJSON: function() {

-    var json = this.getHeader('X-JSON');

-    if (!json) return null;

-    json = decodeURIComponent(escape(json));

-    try {

-      return json.evalJSON(this.request.options.sanitizeJSON ||

-        !this.request.isSameOrigin());

-    } catch (e) {

-      this.request.dispatchException(e);

-    }

-  },

-

-  _getResponseJSON: function() {

-    var options = this.request.options;

-    if (!options.evalJSON || (options.evalJSON != 'force' &&

-      !(this.getHeader('Content-type') || '').include('application/json')) ||

-        this.responseText.blank())

-          return null;

-    try {

-      return this.responseText.evalJSON(options.sanitizeJSON ||

-        !this.request.isSameOrigin());

-    } catch (e) {

-      this.request.dispatchException(e);

-    }

-  }

-});

-

-Ajax.Updater = Class.create(Ajax.Request, {

-  initialize: function($super, container, url, options) {

-    this.container = {

-      success: (container.success || container),

-      failure: (container.failure || (container.success ? null : container))

-    };

-

-    options = Object.clone(options);

-    var onComplete = options.onComplete;

-    options.onComplete = (function(response, json) {

-      this.updateContent(response.responseText);

-      if (Object.isFunction(onComplete)) onComplete(response, json);

-    }).bind(this);

-

-    $super(url, options);

-  },

-

-  updateContent: function(responseText) {

-    var receiver = this.container[this.success() ? 'success' : 'failure'],

-        options = this.options;

-

-    if (!options.evalScripts) responseText = responseText.stripScripts();

-

-    if (receiver = $(receiver)) {

-      if (options.insertion) {

-        if (Object.isString(options.insertion)) {

-          var insertion = { }; insertion[options.insertion] = responseText;

-          receiver.insert(insertion);

-        }

-        else options.insertion(receiver, responseText);

-      }

-      else receiver.update(responseText);

-    }

-  }

-});

-

-Ajax.PeriodicalUpdater = Class.create(Ajax.Base, {

-  initialize: function($super, container, url, options) {

-    $super(options);

-    this.onComplete = this.options.onComplete;

-

-    this.frequency = (this.options.frequency || 2);

-    this.decay = (this.options.decay || 1);

-

-    this.updater = { };

-    this.container = container;

-    this.url = url;

-

-    this.start();

-  },

-

-  start: function() {

-    this.options.onComplete = this.updateComplete.bind(this);

-    this.onTimerEvent();

-  },

-

-  stop: function() {

-    this.updater.options.onComplete = undefined;

-    clearTimeout(this.timer);

-    (this.onComplete || Prototype.emptyFunction).apply(this, arguments);

-  },

-

-  updateComplete: function(response) {

-    if (this.options.decay) {

-      this.decay = (response.responseText == this.lastText ?

-        this.decay * this.options.decay : 1);

-

-      this.lastText = response.responseText;

-    }

-    this.timer = this.onTimerEvent.bind(this).delay(this.decay * this.frequency);

-  },

-

-  onTimerEvent: function() {

-    this.updater = new Ajax.Updater(this.container, this.url, this.options);

-  }

-});

-

-

-function $(element) {

-  if (arguments.length > 1) {

-    for (var i = 0, elements = [], length = arguments.length; i < length; i++)

-      elements.push($(arguments[i]));

-    return elements;

-  }

-  if (Object.isString(element))

-    element = document.getElementById(element);

-  return Element.extend(element);

-}

-

-if (Prototype.BrowserFeatures.XPath) {

-  document._getElementsByXPath = function(expression, parentElement) {

-    var results = [];

-    var query = document.evaluate(expression, $(parentElement) || document,

-      null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);

-    for (var i = 0, length = query.snapshotLength; i < length; i++)

-      results.push(Element.extend(query.snapshotItem(i)));

-    return results;

-  };

-}

-

-/*--------------------------------------------------------------------------*/

-

-if (!Node) var Node = { };

-

-if (!Node.ELEMENT_NODE) {

-  Object.extend(Node, {

-    ELEMENT_NODE: 1,

-    ATTRIBUTE_NODE: 2,

-    TEXT_NODE: 3,

-    CDATA_SECTION_NODE: 4,

-    ENTITY_REFERENCE_NODE: 5,

-    ENTITY_NODE: 6,

-    PROCESSING_INSTRUCTION_NODE: 7,

-    COMMENT_NODE: 8,

-    DOCUMENT_NODE: 9,

-    DOCUMENT_TYPE_NODE: 10,

-    DOCUMENT_FRAGMENT_NODE: 11,

-    NOTATION_NODE: 12

-  });

-}

-

-

-

-(function(global) {

-  function shouldUseCache(tagName, attributes) {

-    if (tagName === 'select') return false;

-    if ('type' in attributes) return false;

-    return true;

-  }

-

-  var HAS_EXTENDED_CREATE_ELEMENT_SYNTAX = (function(){

-    try {

-      var el = document.createElement('<input name="x">');

-      return el.tagName.toLowerCase() === 'input' && el.name === 'x';

-    }

-    catch(err) {

-      return false;

-    }

-  })();

-

-  var element = global.Element;

-

-  global.Element = function(tagName, attributes) {

-    attributes = attributes || { };

-    tagName = tagName.toLowerCase();

-    var cache = Element.cache;

-

-    if (HAS_EXTENDED_CREATE_ELEMENT_SYNTAX && attributes.name) {

-      tagName = '<' + tagName + ' name="' + attributes.name + '">';

-      delete attributes.name;

-      return Element.writeAttribute(document.createElement(tagName), attributes);

-    }

-

-    if (!cache[tagName]) cache[tagName] = Element.extend(document.createElement(tagName));

-

-    var node = shouldUseCache(tagName, attributes) ?

-     cache[tagName].cloneNode(false) : document.createElement(tagName);

-

-    return Element.writeAttribute(node, attributes);

-  };

-

-  Object.extend(global.Element, element || { });

-  if (element) global.Element.prototype = element.prototype;

-

-})(this);

-

-Element.idCounter = 1;

-Element.cache = { };

-

-Element._purgeElement = function(element) {

-  var uid = element._prototypeUID;

-  if (uid) {

-    Element.stopObserving(element);

-    element._prototypeUID = void 0;

-    delete Element.Storage[uid];

-  }

-}

-

-Element.Methods = {

-  visible: function(element) {

-    return $(element).style.display != 'none';

-  },

-

-  toggle: function(element) {

-    element = $(element);

-    Element[Element.visible(element) ? 'hide' : 'show'](element);

-    return element;

-  },

-

-  hide: function(element) {

-    element = $(element);

-    element.style.display = 'none';

-    return element;

-  },

-

-  show: function(element) {

-    element = $(element);

-    element.style.display = '';

-    return element;

-  },

-

-  remove: function(element) {

-    element = $(element);

-    element.parentNode.removeChild(element);

-    return element;

-  },

-

-  update: (function(){

-

-    var SELECT_ELEMENT_INNERHTML_BUGGY = (function(){

-      var el = document.createElement("select"),

-          isBuggy = true;

-      el.innerHTML = "<option value=\"test\">test</option>";

-      if (el.options && el.options[0]) {

-        isBuggy = el.options[0].nodeName.toUpperCase() !== "OPTION";

-      }

-      el = null;

-      return isBuggy;

-    })();

-

-    var TABLE_ELEMENT_INNERHTML_BUGGY = (function(){

-      try {

-        var el = document.createElement("table");

-        if (el && el.tBodies) {

-          el.innerHTML = "<tbody><tr><td>test</td></tr></tbody>";

-          var isBuggy = typeof el.tBodies[0] == "undefined";

-          el = null;

-          return isBuggy;

-        }

-      } catch (e) {

-        return true;

-      }

-    })();

-

-    var LINK_ELEMENT_INNERHTML_BUGGY = (function() {

-      try {

-        var el = document.createElement('div');

-        el.innerHTML = "<link>";

-        var isBuggy = (el.childNodes.length === 0);

-        el = null;

-        return isBuggy;

-      } catch(e) {

-        return true;

-      }

-    })();

-

-    var ANY_INNERHTML_BUGGY = SELECT_ELEMENT_INNERHTML_BUGGY ||

-     TABLE_ELEMENT_INNERHTML_BUGGY || LINK_ELEMENT_INNERHTML_BUGGY;

-

-    var SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING = (function () {

-      var s = document.createElement("script"),

-          isBuggy = false;

-      try {

-        s.appendChild(document.createTextNode(""));

-        isBuggy = !s.firstChild ||

-          s.firstChild && s.firstChild.nodeType !== 3;

-      } catch (e) {

-        isBuggy = true;

-      }

-      s = null;

-      return isBuggy;

-    })();

-

-

-    function update(element, content) {

-      element = $(element);

-      var purgeElement = Element._purgeElement;

-

-      var descendants = element.getElementsByTagName('*'),

-       i = descendants.length;

-      while (i--) purgeElement(descendants[i]);

-

-      if (content && content.toElement)

-        content = content.toElement();

-

-      if (Object.isElement(content))

-        return element.update().insert(content);

-

-      content = Object.toHTML(content);

-

-      var tagName = element.tagName.toUpperCase();

-

-      if (tagName === 'SCRIPT' && SCRIPT_ELEMENT_REJECTS_TEXTNODE_APPENDING) {

-        element.text = content;

-        return element;

-      }

-

-      if (ANY_INNERHTML_BUGGY) {

-        if (tagName in Element._insertionTranslations.tags) {

-          while (element.firstChild) {

-            element.removeChild(element.firstChild);

-          }

-          Element._getContentFromAnonymousElement(tagName, content.stripScripts())

-            .each(function(node) {

-              element.appendChild(node)

-            });

-        } else if (LINK_ELEMENT_INNERHTML_BUGGY && Object.isString(content) && content.indexOf('<link') > -1) {

-          while (element.firstChild) {

-            element.removeChild(element.firstChild);

-          }

-          var nodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts(), true);

-          nodes.each(function(node) { element.appendChild(node) });

-        }

-        else {

-          element.innerHTML = content.stripScripts();

-        }

-      }

-      else {

-        element.innerHTML = content.stripScripts();

-      }

-

-      content.evalScripts.bind(content).defer();

-      return element;

-    }

-

-    return update;

-  })(),

-

-  replace: function(element, content) {

-    element = $(element);

-    if (content && content.toElement) content = content.toElement();

-    else if (!Object.isElement(content)) {

-      content = Object.toHTML(content);

-      var range = element.ownerDocument.createRange();

-      range.selectNode(element);

-      content.evalScripts.bind(content).defer();

-      content = range.createContextualFragment(content.stripScripts());

-    }

-    element.parentNode.replaceChild(content, element);

-    return element;

-  },

-

-  insert: function(element, insertions) {

-    element = $(element);

-

-    if (Object.isString(insertions) || Object.isNumber(insertions) ||

-        Object.isElement(insertions) || (insertions && (insertions.toElement || insertions.toHTML)))

-          insertions = {bottom:insertions};

-

-    var content, insert, tagName, childNodes;

-

-    for (var position in insertions) {

-      content  = insertions[position];

-      position = position.toLowerCase();

-      insert = Element._insertionTranslations[position];

-

-      if (content && content.toElement) content = content.toElement();

-      if (Object.isElement(content)) {

-        insert(element, content);

-        continue;

-      }

-

-      content = Object.toHTML(content);

-

-      tagName = ((position == 'before' || position == 'after')

-        ? element.parentNode : element).tagName.toUpperCase();

-

-      childNodes = Element._getContentFromAnonymousElement(tagName, content.stripScripts());

-

-      if (position == 'top' || position == 'after') childNodes.reverse();

-      childNodes.each(insert.curry(element));

-

-      content.evalScripts.bind(content).defer();

-    }

-

-    return element;

-  },

-

-  wrap: function(element, wrapper, attributes) {

-    element = $(element);

-    if (Object.isElement(wrapper))

-      $(wrapper).writeAttribute(attributes || { });

-    else if (Object.isString(wrapper)) wrapper = new Element(wrapper, attributes);

-    else wrapper = new Element('div', wrapper);

-    if (element.parentNode)

-      element.parentNode.replaceChild(wrapper, element);

-    wrapper.appendChild(element);

-    return wrapper;

-  },

-

-  inspect: function(element) {

-    element = $(element);

-    var result = '<' + element.tagName.toLowerCase();

-    $H({'id': 'id', 'className': 'class'}).each(function(pair) {

-      var property = pair.first(),

-          attribute = pair.last(),

-          value = (element[property] || '').toString();

-      if (value) result += ' ' + attribute + '=' + value.inspect(true);

-    });

-    return result + '>';

-  },

-

-  recursivelyCollect: function(element, property, maximumLength) {

-    element = $(element);

-    maximumLength = maximumLength || -1;

-    var elements = [];

-

-    while (element = element[property]) {

-      if (element.nodeType == 1)

-        elements.push(Element.extend(element));

-      if (elements.length == maximumLength)

-        break;

-    }

-

-    return elements;

-  },

-

-  ancestors: function(element) {

-    return Element.recursivelyCollect(element, 'parentNode');

-  },

-

-  descendants: function(element) {

-    return Element.select(element, "*");

-  },

-

-  firstDescendant: function(element) {

-    element = $(element).firstChild;

-    while (element && element.nodeType != 1) element = element.nextSibling;

-    return $(element);

-  },

-

-  immediateDescendants: function(element) {

-    var results = [], child = $(element).firstChild;

-    while (child) {

-      if (child.nodeType === 1) {

-        results.push(Element.extend(child));

-      }

-      child = child.nextSibling;

-    }

-    return results;

-  },

-

-  previousSiblings: function(element, maximumLength) {

-    return Element.recursivelyCollect(element, 'previousSibling');

-  },

-

-  nextSiblings: function(element) {

-    return Element.recursivelyCollect(element, 'nextSibling');

-  },

-

-  siblings: function(element) {

-    element = $(element);

-    return Element.previousSiblings(element).reverse()

-      .concat(Element.nextSiblings(element));

-  },

-

-  match: function(element, selector) {

-    element = $(element);

-    if (Object.isString(selector))

-      return Prototype.Selector.match(element, selector);

-    return selector.match(element);

-  },

-

-  up: function(element, expression, index) {

-    element = $(element);

-    if (arguments.length == 1) return $(element.parentNode);

-    var ancestors = Element.ancestors(element);

-    return Object.isNumber(expression) ? ancestors[expression] :

-      Prototype.Selector.find(ancestors, expression, index);

-  },

-

-  down: function(element, expression, index) {

-    element = $(element);

-    if (arguments.length == 1) return Element.firstDescendant(element);

-    return Object.isNumber(expression) ? Element.descendants(element)[expression] :

-      Element.select(element, expression)[index || 0];

-  },

-

-  previous: function(element, expression, index) {

-    element = $(element);

-    if (Object.isNumber(expression)) index = expression, expression = false;

-    if (!Object.isNumber(index)) index = 0;

-

-    if (expression) {

-      return Prototype.Selector.find(element.previousSiblings(), expression, index);

-    } else {

-      return element.recursivelyCollect("previousSibling", index + 1)[index];

-    }

-  },

-

-  next: function(element, expression, index) {

-    element = $(element);

-    if (Object.isNumber(expression)) index = expression, expression = false;

-    if (!Object.isNumber(index)) index = 0;

-

-    if (expression) {

-      return Prototype.Selector.find(element.nextSiblings(), expression, index);

-    } else {

-      var maximumLength = Object.isNumber(index) ? index + 1 : 1;

-      return element.recursivelyCollect("nextSibling", index + 1)[index];

-    }

-  },

-

-

-  select: function(element) {

-    element = $(element);

-    var expressions = Array.prototype.slice.call(arguments, 1).join(', ');

-    return Prototype.Selector.select(expressions, element);

-  },

-

-  adjacent: function(element) {

-    element = $(element);

-    var expressions = Array.prototype.slice.call(arguments, 1).join(', ');

-    return Prototype.Selector.select(expressions, element.parentNode).without(element);

-  },

-

-  identify: function(element) {

-    element = $(element);

-    var id = Element.readAttribute(element, 'id');

-    if (id) return id;

-    do { id = 'anonymous_element_' + Element.idCounter++ } while ($(id));

-    Element.writeAttribute(element, 'id', id);

-    return id;

-  },

-

-  readAttribute: function(element, name) {

-    element = $(element);

-    if (Prototype.Browser.IE) {

-      var t = Element._attributeTranslations.read;

-      if (t.values[name]) return t.values[name](element, name);

-      if (t.names[name]) name = t.names[name];

-      if (name.include(':')) {

-        return (!element.attributes || !element.attributes[name]) ? null :

-         element.attributes[name].value;

-      }

-    }

-    return element.getAttribute(name);

-  },

-

-  writeAttribute: function(element, name, value) {

-    element = $(element);

-    var attributes = { }, t = Element._attributeTranslations.write;

-

-    if (typeof name == 'object') attributes = name;

-    else attributes[name] = Object.isUndefined(value) ? true : value;

-

-    for (var attr in attributes) {

-      name = t.names[attr] || attr;

-      value = attributes[attr];

-      if (t.values[attr]) name = t.values[attr](element, value);

-      if (value === false || value === null)

-        element.removeAttribute(name);

-      else if (value === true)

-        element.setAttribute(name, name);

-      else element.setAttribute(name, value);

-    }

-    return element;

-  },

-

-  getHeight: function(element) {

-    return Element.getDimensions(element).height;

-  },

-

-  getWidth: function(element) {

-    return Element.getDimensions(element).width;

-  },

-

-  classNames: function(element) {

-    return new Element.ClassNames(element);

-  },

-

-  hasClassName: function(element, className) {

-    if (!(element = $(element))) return;

-    var elementClassName = element.className;

-    return (elementClassName.length > 0 && (elementClassName == className ||

-      new RegExp("(^|\\s)" + className + "(\\s|$)").test(elementClassName)));

-  },

-

-  addClassName: function(element, className) {

-    if (!(element = $(element))) return;

-    if (!Element.hasClassName(element, className))

-      element.className += (element.className ? ' ' : '') + className;

-    return element;

-  },

-

-  removeClassName: function(element, className) {

-    if (!(element = $(element))) return;

-    element.className = element.className.replace(

-      new RegExp("(^|\\s+)" + className + "(\\s+|$)"), ' ').strip();

-    return element;

-  },

-

-  toggleClassName: function(element, className) {

-    if (!(element = $(element))) return;

-    return Element[Element.hasClassName(element, className) ?

-      'removeClassName' : 'addClassName'](element, className);

-  },

-

-  cleanWhitespace: function(element) {

-    element = $(element);

-    var node = element.firstChild;

-    while (node) {

-      var nextNode = node.nextSibling;

-      if (node.nodeType == 3 && !/\S/.test(node.nodeValue))

-        element.removeChild(node);

-      node = nextNode;

-    }

-    return element;

-  },

-

-  empty: function(element) {

-    return $(element).innerHTML.blank();

-  },

-

-  descendantOf: function(element, ancestor) {

-    element = $(element), ancestor = $(ancestor);

-

-    if (element.compareDocumentPosition)

-      return (element.compareDocumentPosition(ancestor) & 8) === 8;

-

-    if (ancestor.contains)

-      return ancestor.contains(element) && ancestor !== element;

-

-    while (element = element.parentNode)

-      if (element == ancestor) return true;

-

-    return false;

-  },

-

-  scrollTo: function(element) {

-    element = $(element);

-    var pos = Element.cumulativeOffset(element);

-    window.scrollTo(pos[0], pos[1]);

-    return element;

-  },

-

-  getStyle: function(element, style) {

-    element = $(element);

-    style = style == 'float' ? 'cssFloat' : style.camelize();

-    var value = element.style[style];

-    if (!value || value == 'auto') {

-      var css = document.defaultView.getComputedStyle(element, null);

-      value = css ? css[style] : null;

-    }

-    if (style == 'opacity') return value ? parseFloat(value) : 1.0;

-    return value == 'auto' ? null : value;

-  },

-

-  getOpacity: function(element) {

-    return $(element).getStyle('opacity');

-  },

-

-  setStyle: function(element, styles) {

-    element = $(element);

-    var elementStyle = element.style, match;

-    if (Object.isString(styles)) {

-      element.style.cssText += ';' + styles;

-      return styles.include('opacity') ?

-        element.setOpacity(styles.match(/opacity:\s*(\d?\.?\d*)/)[1]) : element;

-    }

-    for (var property in styles)

-      if (property == 'opacity') element.setOpacity(styles[property]);

-      else

-        elementStyle[(property == 'float' || property == 'cssFloat') ?

-          (Object.isUndefined(elementStyle.styleFloat) ? 'cssFloat' : 'styleFloat') :

-            property] = styles[property];

-

-    return element;

-  },

-

-  setOpacity: function(element, value) {

-    element = $(element);

-    element.style.opacity = (value == 1 || value === '') ? '' :

-      (value < 0.00001) ? 0 : value;

-    return element;

-  },

-

-  makePositioned: function(element) {

-    element = $(element);

-    var pos = Element.getStyle(element, 'position');

-    if (pos == 'static' || !pos) {

-      element._madePositioned = true;

-      element.style.position = 'relative';

-      if (Prototype.Browser.Opera) {

-        element.style.top = 0;

-        element.style.left = 0;

-      }

-    }

-    return element;

-  },

-

-  undoPositioned: function(element) {

-    element = $(element);

-    if (element._madePositioned) {

-      element._madePositioned = undefined;

-      element.style.position =

-        element.style.top =

-        element.style.left =

-        element.style.bottom =

-        element.style.right = '';

-    }

-    return element;

-  },

-

-  makeClipping: function(element) {

-    element = $(element);

-    if (element._overflow) return element;

-    element._overflow = Element.getStyle(element, 'overflow') || 'auto';

-    if (element._overflow !== 'hidden')

-      element.style.overflow = 'hidden';

-    return element;

-  },

-

-  undoClipping: function(element) {

-    element = $(element);

-    if (!element._overflow) return element;

-    element.style.overflow = element._overflow == 'auto' ? '' : element._overflow;

-    element._overflow = null;

-    return element;

-  },

-

-  clonePosition: function(element, source) {

-    var options = Object.extend({

-      setLeft:    true,

-      setTop:     true,

-      setWidth:   true,

-      setHeight:  true,

-      offsetTop:  0,

-      offsetLeft: 0

-    }, arguments[2] || { });

-

-    source = $(source);

-    var p = Element.viewportOffset(source), delta = [0, 0], parent = null;

-

-    element = $(element);

-

-    if (Element.getStyle(element, 'position') == 'absolute') {

-      parent = Element.getOffsetParent(element);

-      delta = Element.viewportOffset(parent);

-    }

-

-    if (parent == document.body) {

-      delta[0] -= document.body.offsetLeft;

-      delta[1] -= document.body.offsetTop;

-    }

-

-    if (options.setLeft)   element.style.left  = (p[0] - delta[0] + options.offsetLeft) + 'px';

-    if (options.setTop)    element.style.top   = (p[1] - delta[1] + options.offsetTop) + 'px';

-    if (options.setWidth)  element.style.width = source.offsetWidth + 'px';

-    if (options.setHeight) element.style.height = source.offsetHeight + 'px';

-    return element;

-  }

-};

-

-Object.extend(Element.Methods, {

-  getElementsBySelector: Element.Methods.select,

-

-  childElements: Element.Methods.immediateDescendants

-});

-

-Element._attributeTranslations = {

-  write: {

-    names: {

-      className: 'class',

-      htmlFor:   'for'

-    },

-    values: { }

-  }

-};

-

-if (Prototype.Browser.Opera) {

-  Element.Methods.getStyle = Element.Methods.getStyle.wrap(

-    function(proceed, element, style) {

-      switch (style) {

-        case 'height': case 'width':

-          if (!Element.visible(element)) return null;

-

-          var dim = parseInt(proceed(element, style), 10);

-

-          if (dim !== element['offset' + style.capitalize()])

-            return dim + 'px';

-

-          var properties;

-          if (style === 'height') {

-            properties = ['border-top-width', 'padding-top',

-             'padding-bottom', 'border-bottom-width'];

-          }

-          else {

-            properties = ['border-left-width', 'padding-left',

-             'padding-right', 'border-right-width'];

-          }

-          return properties.inject(dim, function(memo, property) {

-            var val = proceed(element, property);

-            return val === null ? memo : memo - parseInt(val, 10);

-          }) + 'px';

-        default: return proceed(element, style);

-      }

-    }

-  );

-

-  Element.Methods.readAttribute = Element.Methods.readAttribute.wrap(

-    function(proceed, element, attribute) {

-      if (attribute === 'title') return element.title;

-      return proceed(element, attribute);

-    }

-  );

-}

-

-else if (Prototype.Browser.IE) {

-  Element.Methods.getStyle = function(element, style) {

-    element = $(element);

-    style = (style == 'float' || style == 'cssFloat') ? 'styleFloat' : style.camelize();

-    var value = element.style[style];

-    if (!value && element.currentStyle) value = element.currentStyle[style];

-

-    if (style == 'opacity') {

-      if (value = (element.getStyle('filter') || '').match(/alpha\(opacity=(.*)\)/))

-        if (value[1]) return parseFloat(value[1]) / 100;

-      return 1.0;

-    }

-

-    if (value == 'auto') {

-      if ((style == 'width' || style == 'height') && (element.getStyle('display') != 'none'))

-        return element['offset' + style.capitalize()] + 'px';

-      return null;

-    }

-    return value;

-  };

-

-  Element.Methods.setOpacity = function(element, value) {

-    function stripAlpha(filter){

-      return filter.replace(/alpha\([^\)]*\)/gi,'');

-    }

-    element = $(element);

-    var currentStyle = element.currentStyle;

-    if ((currentStyle && !currentStyle.hasLayout) ||

-      (!currentStyle && element.style.zoom == 'normal'))

-        element.style.zoom = 1;

-

-    var filter = element.getStyle('filter'), style = element.style;

-    if (value == 1 || value === '') {

-      (filter = stripAlpha(filter)) ?

-        style.filter = filter : style.removeAttribute('filter');

-      return element;

-    } else if (value < 0.00001) value = 0;

-    style.filter = stripAlpha(filter) +

-      'alpha(opacity=' + (value * 100) + ')';

-    return element;

-  };

-

-  Element._attributeTranslations = (function(){

-

-    var classProp = 'className',

-        forProp = 'for',

-        el = document.createElement('div');

-

-    el.setAttribute(classProp, 'x');

-

-    if (el.className !== 'x') {

-      el.setAttribute('class', 'x');

-      if (el.className === 'x') {

-        classProp = 'class';

-      }

-    }

-    el = null;

-

-    el = document.createElement('label');

-    el.setAttribute(forProp, 'x');

-    if (el.htmlFor !== 'x') {

-      el.setAttribute('htmlFor', 'x');

-      if (el.htmlFor === 'x') {

-        forProp = 'htmlFor';

-      }

-    }

-    el = null;

-

-    return {

-      read: {

-        names: {

-          'class':      classProp,

-          'className':  classProp,

-          'for':        forProp,

-          'htmlFor':    forProp

-        },

-        values: {

-          _getAttr: function(element, attribute) {

-            return element.getAttribute(attribute);

-          },

-          _getAttr2: function(element, attribute) {

-            return element.getAttribute(attribute, 2);

-          },

-          _getAttrNode: function(element, attribute) {

-            var node = element.getAttributeNode(attribute);

-            return node ? node.value : "";

-          },

-          _getEv: (function(){

-

-            var el = document.createElement('div'), f;

-            el.onclick = Prototype.emptyFunction;

-            var value = el.getAttribute('onclick');

-

-            if (String(value).indexOf('{') > -1) {

-              f = function(element, attribute) {

-                attribute = element.getAttribute(attribute);

-                if (!attribute) return null;

-                attribute = attribute.toString();

-                attribute = attribute.split('{')[1];

-                attribute = attribute.split('}')[0];

-                return attribute.strip();

-              };

-            }

-            else if (value === '') {

-              f = function(element, attribute) {

-                attribute = element.getAttribute(attribute);

-                if (!attribute) return null;

-                return attribute.strip();

-              };

-            }

-            el = null;

-            return f;

-          })(),

-          _flag: function(element, attribute) {

-            return $(element).hasAttribute(attribute) ? attribute : null;

-          },

-          style: function(element) {

-            return element.style.cssText.toLowerCase();

-          },

-          title: function(element) {

-            return element.title;

-          }

-        }

-      }

-    }

-  })();

-

-  Element._attributeTranslations.write = {

-    names: Object.extend({

-      cellpadding: 'cellPadding',

-      cellspacing: 'cellSpacing'

-    }, Element._attributeTranslations.read.names),

-    values: {

-      checked: function(element, value) {

-        element.checked = !!value;

-      },

-

-      style: function(element, value) {

-        element.style.cssText = value ? value : '';

-      }

-    }

-  };

-

-  Element._attributeTranslations.has = {};

-

-  $w('colSpan rowSpan vAlign dateTime accessKey tabIndex ' +

-      'encType maxLength readOnly longDesc frameBorder').each(function(attr) {

-    Element._attributeTranslations.write.names[attr.toLowerCase()] = attr;

-    Element._attributeTranslations.has[attr.toLowerCase()] = attr;

-  });

-

-  (function(v) {

-    Object.extend(v, {

-      href:        v._getAttr2,

-      src:         v._getAttr2,

-      type:        v._getAttr,

-      action:      v._getAttrNode,

-      disabled:    v._flag,

-      checked:     v._flag,

-      readonly:    v._flag,

-      multiple:    v._flag,

-      onload:      v._getEv,

-      onunload:    v._getEv,

-      onclick:     v._getEv,

-      ondblclick:  v._getEv,

-      onmousedown: v._getEv,

-      onmouseup:   v._getEv,

-      onmouseover: v._getEv,

-      onmousemove: v._getEv,

-      onmouseout:  v._getEv,

-      onfocus:     v._getEv,

-      onblur:      v._getEv,

-      onkeypress:  v._getEv,

-      onkeydown:   v._getEv,

-      onkeyup:     v._getEv,

-      onsubmit:    v._getEv,

-      onreset:     v._getEv,

-      onselect:    v._getEv,

-      onchange:    v._getEv

-    });

-  })(Element._attributeTranslations.read.values);

-

-  if (Prototype.BrowserFeatures.ElementExtensions) {

-    (function() {

-      function _descendants(element) {

-        var nodes = element.getElementsByTagName('*'), results = [];

-        for (var i = 0, node; node = nodes[i]; i++)

-          if (node.tagName !== "!") // Filter out comment nodes.

-            results.push(node);

-        return results;

-      }

-

-      Element.Methods.down = function(element, expression, index) {

-        element = $(element);

-        if (arguments.length == 1) return element.firstDescendant();

-        return Object.isNumber(expression) ? _descendants(element)[expression] :

-          Element.select(element, expression)[index || 0];

-      }

-    })();

-  }

-

-}

-

-else if (Prototype.Browser.Gecko && /rv:1\.8\.0/.test(navigator.userAgent)) {

-  Element.Methods.setOpacity = function(element, value) {

-    element = $(element);

-    element.style.opacity = (value == 1) ? 0.999999 :

-      (value === '') ? '' : (value < 0.00001) ? 0 : value;

-    return element;

-  };

-}

-

-else if (Prototype.Browser.WebKit) {

-  Element.Methods.setOpacity = function(element, value) {

-    element = $(element);

-    element.style.opacity = (value == 1 || value === '') ? '' :

-      (value < 0.00001) ? 0 : value;

-

-    if (value == 1)

-      if (element.tagName.toUpperCase() == 'IMG' && element.width) {

-        element.width++; element.width--;

-      } else try {

-        var n = document.createTextNode(' ');

-        element.appendChild(n);

-        element.removeChild(n);

-      } catch (e) { }

-

-    return element;

-  };

-}

-

-if ('outerHTML' in document.documentElement) {

-  Element.Methods.replace = function(element, content) {

-    element = $(element);

-

-    if (content && content.toElement) content = content.toElement();

-    if (Object.isElement(content)) {

-      element.parentNode.replaceChild(content, element);

-      return element;

-    }

-

-    content = Object.toHTML(content);

-    var parent = element.parentNode, tagName = parent.tagName.toUpperCase();

-

-    if (Element._insertionTranslations.tags[tagName]) {

-      var nextSibling = element.next(),

-          fragments = Element._getContentFromAnonymousElement(tagName, content.stripScripts());

-      parent.removeChild(element);

-      if (nextSibling)

-        fragments.each(function(node) { parent.insertBefore(node, nextSibling) });

-      else

-        fragments.each(function(node) { parent.appendChild(node) });

-    }

-    else element.outerHTML = content.stripScripts();

-

-    content.evalScripts.bind(content).defer();

-    return element;

-  };

-}

-

-Element._returnOffset = function(l, t) {

-  var result = [l, t];

-  result.left = l;

-  result.top = t;

-  return result;

-};

-

-Element._getContentFromAnonymousElement = function(tagName, html, force) {

-  var div = new Element('div'),

-      t = Element._insertionTranslations.tags[tagName];

-

-  var workaround = false;

-  if (t) workaround = true;

-  else if (force) {

-    workaround = true;

-    t = ['', '', 0];

-  }

-

-  if (workaround) {

-    div.innerHTML = '&nbsp;' + t[0] + html + t[1];

-    div.removeChild(div.firstChild);

-    for (var i = t[2]; i--; ) {

-      div = div.firstChild;

-    }

-  }

-  else {

-    div.innerHTML = html;

-  }

-  return $A(div.childNodes);

-};

-

-Element._insertionTranslations = {

-  before: function(element, node) {

-    element.parentNode.insertBefore(node, element);

-  },

-  top: function(element, node) {

-    element.insertBefore(node, element.firstChild);

-  },

-  bottom: function(element, node) {

-    element.appendChild(node);

-  },

-  after: function(element, node) {

-    element.parentNode.insertBefore(node, element.nextSibling);

-  },

-  tags: {

-    TABLE:  ['<table>',                '</table>',                   1],

-    TBODY:  ['<table><tbody>',         '</tbody></table>',           2],

-    TR:     ['<table><tbody><tr>',     '</tr></tbody></table>',      3],

-    TD:     ['<table><tbody><tr><td>', '</td></tr></tbody></table>', 4],

-    SELECT: ['<select>',               '</select>',                  1]

-  }

-};

-

-(function() {

-  var tags = Element._insertionTranslations.tags;

-  Object.extend(tags, {

-    THEAD: tags.TBODY,

-    TFOOT: tags.TBODY,

-    TH:    tags.TD

-  });

-})();

-

-Element.Methods.Simulated = {

-  hasAttribute: function(element, attribute) {

-    attribute = Element._attributeTranslations.has[attribute] || attribute;

-    var node = $(element).getAttributeNode(attribute);

-    return !!(node && node.specified);

-  }

-};

-

-Element.Methods.ByTag = { };

-

-Object.extend(Element, Element.Methods);

-

-(function(div) {

-

-  if (!Prototype.BrowserFeatures.ElementExtensions && div['__proto__']) {

-    window.HTMLElement = { };

-    window.HTMLElement.prototype = div['__proto__'];

-    Prototype.BrowserFeatures.ElementExtensions = true;

-  }

-

-  div = null;

-

-})(document.createElement('div'));

-

-Element.extend = (function() {

-

-  function checkDeficiency(tagName) {

-    if (typeof window.Element != 'undefined') {

-      var proto = window.Element.prototype;

-      if (proto) {

-        var id = '_' + (Math.random()+'').slice(2),

-            el = document.createElement(tagName);

-        proto[id] = 'x';

-        var isBuggy = (el[id] !== 'x');

-        delete proto[id];

-        el = null;

-        return isBuggy;

-      }

-    }

-    return false;

-  }

-

-  function extendElementWith(element, methods) {

-    for (var property in methods) {

-      var value = methods[property];

-      if (Object.isFunction(value) && !(property in element))

-        element[property] = value.methodize();

-    }

-  }

-

-  var HTMLOBJECTELEMENT_PROTOTYPE_BUGGY = checkDeficiency('object');

-

-  if (Prototype.BrowserFeatures.SpecificElementExtensions) {

-    if (HTMLOBJECTELEMENT_PROTOTYPE_BUGGY) {

-      return function(element) {

-        if (element && typeof element._extendedByPrototype == 'undefined') {

-          var t = element.tagName;

-          if (t && (/^(?:object|applet|embed)$/i.test(t))) {

-            extendElementWith(element, Element.Methods);

-            extendElementWith(element, Element.Methods.Simulated);

-            extendElementWith(element, Element.Methods.ByTag[t.toUpperCase()]);

-          }

-        }

-        return element;

-      }

-    }

-    return Prototype.K;

-  }

-

-  var Methods = { }, ByTag = Element.Methods.ByTag;

-

-  var extend = Object.extend(function(element) {

-    if (!element || typeof element._extendedByPrototype != 'undefined' ||

-        element.nodeType != 1 || element == window) return element;

-

-    var methods = Object.clone(Methods),

-        tagName = element.tagName.toUpperCase();

-

-    if (ByTag[tagName]) Object.extend(methods, ByTag[tagName]);

-

-    extendElementWith(element, methods);

-

-    element._extendedByPrototype = Prototype.emptyFunction;

-    return element;

-

-  }, {

-    refresh: function() {

-      if (!Prototype.BrowserFeatures.ElementExtensions) {

-        Object.extend(Methods, Element.Methods);

-        Object.extend(Methods, Element.Methods.Simulated);

-      }

-    }

-  });

-

-  extend.refresh();

-  return extend;

-})();

-

-if (document.documentElement.hasAttribute) {

-  Element.hasAttribute = function(element, attribute) {

-    return element.hasAttribute(attribute);

-  };

-}

-else {

-  Element.hasAttribute = Element.Methods.Simulated.hasAttribute;

-}

-

-Element.addMethods = function(methods) {

-  var F = Prototype.BrowserFeatures, T = Element.Methods.ByTag;

-

-  if (!methods) {

-    Object.extend(Form, Form.Methods);

-    Object.extend(Form.Element, Form.Element.Methods);

-    Object.extend(Element.Methods.ByTag, {

-      "FORM":     Object.clone(Form.Methods),

-      "INPUT":    Object.clone(Form.Element.Methods),

-      "SELECT":   Object.clone(Form.Element.Methods),

-      "TEXTAREA": Object.clone(Form.Element.Methods),

-      "BUTTON":   Object.clone(Form.Element.Methods)

-    });

-  }

-

-  if (arguments.length == 2) {

-    var tagName = methods;

-    methods = arguments[1];

-  }

-

-  if (!tagName) Object.extend(Element.Methods, methods || { });

-  else {

-    if (Object.isArray(tagName)) tagName.each(extend);

-    else extend(tagName);

-  }

-

-  function extend(tagName) {

-    tagName = tagName.toUpperCase();

-    if (!Element.Methods.ByTag[tagName])

-      Element.Methods.ByTag[tagName] = { };

-    Object.extend(Element.Methods.ByTag[tagName], methods);

-  }

-

-  function copy(methods, destination, onlyIfAbsent) {

-    onlyIfAbsent = onlyIfAbsent || false;

-    for (var property in methods) {

-      var value = methods[property];

-      if (!Object.isFunction(value)) continue;

-      if (!onlyIfAbsent || !(property in destination))

-        destination[property] = value.methodize();

-    }

-  }

-

-  function findDOMClass(tagName) {

-    var klass;

-    var trans = {

-      "OPTGROUP": "OptGroup", "TEXTAREA": "TextArea", "P": "Paragraph",

-      "FIELDSET": "FieldSet", "UL": "UList", "OL": "OList", "DL": "DList",

-      "DIR": "Directory", "H1": "Heading", "H2": "Heading", "H3": "Heading",

-      "H4": "Heading", "H5": "Heading", "H6": "Heading", "Q": "Quote",

-      "INS": "Mod", "DEL": "Mod", "A": "Anchor", "IMG": "Image", "CAPTION":

-      "TableCaption", "COL": "TableCol", "COLGROUP": "TableCol", "THEAD":

-      "TableSection", "TFOOT": "TableSection", "TBODY": "TableSection", "TR":

-      "TableRow", "TH": "TableCell", "TD": "TableCell", "FRAMESET":

-      "FrameSet", "IFRAME": "IFrame"

-    };

-    if (trans[tagName]) klass = 'HTML' + trans[tagName] + 'Element';

-    if (window[klass]) return window[klass];

-    klass = 'HTML' + tagName + 'Element';

-    if (window[klass]) return window[klass];

-    klass = 'HTML' + tagName.capitalize() + 'Element';

-    if (window[klass]) return window[klass];

-

-    var element = document.createElement(tagName),

-        proto = element['__proto__'] || element.constructor.prototype;

-

-    element = null;

-    return proto;

-  }

-

-  var elementPrototype = window.HTMLElement ? HTMLElement.prototype :

-   Element.prototype;

-

-  if (F.ElementExtensions) {

-    copy(Element.Methods, elementPrototype);

-    copy(Element.Methods.Simulated, elementPrototype, true);

-  }

-

-  if (F.SpecificElementExtensions) {

-    for (var tag in Element.Methods.ByTag) {

-      var klass = findDOMClass(tag);

-      if (Object.isUndefined(klass)) continue;

-      copy(T[tag], klass.prototype);

-    }

-  }

-

-  Object.extend(Element, Element.Methods);

-  delete Element.ByTag;

-

-  if (Element.extend.refresh) Element.extend.refresh();

-  Element.cache = { };

-};

-

-

-document.viewport = {

-

-  getDimensions: function() {

-    return { width: this.getWidth(), height: this.getHeight() };

-  },

-

-  getScrollOffsets: function() {

-    return Element._returnOffset(

-      window.pageXOffset || document.documentElement.scrollLeft || document.body.scrollLeft,

-      window.pageYOffset || document.documentElement.scrollTop  || document.body.scrollTop);

-  }

-};

-

-(function(viewport) {

-  var B = Prototype.Browser, doc = document, element, property = {};

-

-  function getRootElement() {

-    if (B.WebKit && !doc.evaluate)

-      return document;

-

-    if (B.Opera && window.parseFloat(window.opera.version()) < 9.5)

-      return document.body;

-

-    return document.documentElement;

-  }

-

-  function define(D) {

-    if (!element) element = getRootElement();

-

-    property[D] = 'client' + D;

-

-    viewport['get' + D] = function() { return element[property[D]] };

-    return viewport['get' + D]();

-  }

-

-  viewport.getWidth  = define.curry('Width');

-

-  viewport.getHeight = define.curry('Height');

-})(document.viewport);

-

-

-Element.Storage = {

-  UID: 1

-};

-

-Element.addMethods({

-  getStorage: function(element) {

-    if (!(element = $(element))) return;

-

-    var uid;

-    if (element === window) {

-      uid = 0;

-    } else {

-      if (typeof element._prototypeUID === "undefined")

-        element._prototypeUID = Element.Storage.UID++;

-      uid = element._prototypeUID;

-    }

-

-    if (!Element.Storage[uid])

-      Element.Storage[uid] = $H();

-

-    return Element.Storage[uid];

-  },

-

-  store: function(element, key, value) {

-    if (!(element = $(element))) return;

-

-    if (arguments.length === 2) {

-      Element.getStorage(element).update(key);

-    } else {

-      Element.getStorage(element).set(key, value);

-    }

-

-    return element;

-  },

-

-  retrieve: function(element, key, defaultValue) {

-    if (!(element = $(element))) return;

-    var hash = Element.getStorage(element), value = hash.get(key);

-

-    if (Object.isUndefined(value)) {

-      hash.set(key, defaultValue);

-      value = defaultValue;

-    }

-

-    return value;

-  },

-

-  clone: function(element, deep) {

-    if (!(element = $(element))) return;

-    var clone = element.cloneNode(deep);

-    clone._prototypeUID = void 0;

-    if (deep) {

-      var descendants = Element.select(clone, '*'),

-          i = descendants.length;

-      while (i--) {

-        descendants[i]._prototypeUID = void 0;

-      }

-    }

-    return Element.extend(clone);

-  },

-

-  purge: function(element) {

-    if (!(element = $(element))) return;

-    var purgeElement = Element._purgeElement;

-

-    purgeElement(element);

-

-    var descendants = element.getElementsByTagName('*'),

-     i = descendants.length;

-

-    while (i--) purgeElement(descendants[i]);

-

-    return null;

-  }

-});

-

-(function() {

-

-  function toDecimal(pctString) {

-    var match = pctString.match(/^(\d+)%?$/i);

-    if (!match) return null;

-    return (Number(match[1]) / 100);

-  }

-

-  function getPixelValue(value, property, context) {

-    var element = null;

-    if (Object.isElement(value)) {

-      element = value;

-      value = element.getStyle(property);

-    }

-

-    if (value === null) {

-      return null;

-    }

-

-    if ((/^(?:-)?\d+(\.\d+)?(px)?$/i).test(value)) {

-      return window.parseFloat(value);

-    }

-

-    var isPercentage = value.include('%'), isViewport = (context === document.viewport);

-

-    if (/\d/.test(value) && element && element.runtimeStyle && !(isPercentage && isViewport)) {

-      var style = element.style.left, rStyle = element.runtimeStyle.left;

-      element.runtimeStyle.left = element.currentStyle.left;

-      element.style.left = value || 0;

-      value = element.style.pixelLeft;

-      element.style.left = style;

-      element.runtimeStyle.left = rStyle;

-

-      return value;

-    }

-

-    if (element && isPercentage) {

-      context = context || element.parentNode;

-      var decimal = toDecimal(value);

-      var whole = null;

-      var position = element.getStyle('position');

-

-      var isHorizontal = property.include('left') || property.include('right') ||

-       property.include('width');

-

-      var isVertical =  property.include('top') || property.include('bottom') ||

-        property.include('height');

-

-      if (context === document.viewport) {

-        if (isHorizontal) {

-          whole = document.viewport.getWidth();

-        } else if (isVertical) {

-          whole = document.viewport.getHeight();

-        }

-      } else {

-        if (isHorizontal) {

-          whole = $(context).measure('width');

-        } else if (isVertical) {

-          whole = $(context).measure('height');

-        }

-      }

-

-      return (whole === null) ? 0 : whole * decimal;

-    }

-

-    return 0;

-  }

-

-  function toCSSPixels(number) {

-    if (Object.isString(number) && number.endsWith('px')) {

-      return number;

-    }

-    return number + 'px';

-  }

-

-  function isDisplayed(element) {

-    var originalElement = element;

-    while (element && element.parentNode) {

-      var display = element.getStyle('display');

-      if (display === 'none') {

-        return false;

-      }

-      element = $(element.parentNode);

-    }

-    return true;

-  }

-

-  var hasLayout = Prototype.K;

-  if ('currentStyle' in document.documentElement) {

-    hasLayout = function(element) {

-      if (!element.currentStyle.hasLayout) {

-        element.style.zoom = 1;

-      }

-      return element;

-    };

-  }

-

-  function cssNameFor(key) {

-    if (key.include('border')) key = key + '-width';

-    return key.camelize();

-  }

-

-  Element.Layout = Class.create(Hash, {

-    initialize: function($super, element, preCompute) {

-      $super();

-      this.element = $(element);

-

-      Element.Layout.PROPERTIES.each( function(property) {

-        this._set(property, null);

-      }, this);

-

-      if (preCompute) {

-        this._preComputing = true;

-        this._begin();

-        Element.Layout.PROPERTIES.each( this._compute, this );

-        this._end();

-        this._preComputing = false;

-      }

-    },

-

-    _set: function(property, value) {

-      return Hash.prototype.set.call(this, property, value);

-    },

-

-    set: function(property, value) {

-      throw "Properties of Element.Layout are read-only.";

-    },

-

-    get: function($super, property) {

-      var value = $super(property);

-      return value === null ? this._compute(property) : value;

-    },

-

-    _begin: function() {

-      if (this._prepared) return;

-

-      var element = this.element;

-      if (isDisplayed(element)) {

-        this._prepared = true;

-        return;

-      }

-

-      var originalStyles = {

-        position:   element.style.position   || '',

-        width:      element.style.width      || '',

-        visibility: element.style.visibility || '',

-        display:    element.style.display    || ''

-      };

-

-      element.store('prototype_original_styles', originalStyles);

-

-      var position = element.getStyle('position'),

-       width = element.getStyle('width');

-

-      if (width === "0px" || width === null) {

-        element.style.display = 'block';

-        width = element.getStyle('width');

-      }

-

-      var context = (position === 'fixed') ? document.viewport :

-       element.parentNode;

-

-      element.setStyle({

-        position:   'absolute',

-        visibility: 'hidden',

-        display:    'block'

-      });

-

-      var positionedWidth = element.getStyle('width');

-

-      var newWidth;

-      if (width && (positionedWidth === width)) {

-        newWidth = getPixelValue(element, 'width', context);

-      } else if (position === 'absolute' || position === 'fixed') {

-        newWidth = getPixelValue(element, 'width', context);

-      } else {

-        var parent = element.parentNode, pLayout = $(parent).getLayout();

-

-        newWidth = pLayout.get('width') -

-         this.get('margin-left') -

-         this.get('border-left') -

-         this.get('padding-left') -

-         this.get('padding-right') -

-         this.get('border-right') -

-         this.get('margin-right');

-      }

-

-      element.setStyle({ width: newWidth + 'px' });

-

-      this._prepared = true;

-    },

-

-    _end: function() {

-      var element = this.element;

-      var originalStyles = element.retrieve('prototype_original_styles');

-      element.store('prototype_original_styles', null);

-      element.setStyle(originalStyles);

-      this._prepared = false;

-    },

-

-    _compute: function(property) {

-      var COMPUTATIONS = Element.Layout.COMPUTATIONS;

-      if (!(property in COMPUTATIONS)) {

-        throw "Property not found.";

-      }

-

-      return this._set(property, COMPUTATIONS[property].call(this, this.element));

-    },

-

-    toObject: function() {

-      var args = $A(arguments);

-      var keys = (args.length === 0) ? Element.Layout.PROPERTIES :

-       args.join(' ').split(' ');

-      var obj = {};

-      keys.each( function(key) {

-        if (!Element.Layout.PROPERTIES.include(key)) return;

-        var value = this.get(key);

-        if (value != null) obj[key] = value;

-      }, this);

-      return obj;

-    },

-

-    toHash: function() {

-      var obj = this.toObject.apply(this, arguments);

-      return new Hash(obj);

-    },

-

-    toCSS: function() {

-      var args = $A(arguments);

-      var keys = (args.length === 0) ? Element.Layout.PROPERTIES :

-       args.join(' ').split(' ');

-      var css = {};

-

-      keys.each( function(key) {

-        if (!Element.Layout.PROPERTIES.include(key)) return;

-        if (Element.Layout.COMPOSITE_PROPERTIES.include(key)) return;

-

-        var value = this.get(key);

-        if (value != null) css[cssNameFor(key)] = value + 'px';

-      }, this);

-      return css;

-    },

-

-    inspect: function() {

-      return "#<Element.Layout>";

-    }

-  });

-

-  Object.extend(Element.Layout, {

-    PROPERTIES: $w('height width top left right bottom border-left border-right border-top border-bottom padding-left padding-right padding-top padding-bottom margin-top margin-bottom margin-left margin-right padding-box-width padding-box-height border-box-width border-box-height margin-box-width margin-box-height'),

-

-    COMPOSITE_PROPERTIES: $w('padding-box-width padding-box-height margin-box-width margin-box-height border-box-width border-box-height'),

-

-    COMPUTATIONS: {

-      'height': function(element) {

-        if (!this._preComputing) this._begin();

-

-        var bHeight = this.get('border-box-height');

-        if (bHeight <= 0) {

-          if (!this._preComputing) this._end();

-          return 0;

-        }

-

-        var bTop = this.get('border-top'),

-         bBottom = this.get('border-bottom');

-

-        var pTop = this.get('padding-top'),

-         pBottom = this.get('padding-bottom');

-

-        if (!this._preComputing) this._end();

-

-        return bHeight - bTop - bBottom - pTop - pBottom;

-      },

-

-      'width': function(element) {

-        if (!this._preComputing) this._begin();

-

-        var bWidth = this.get('border-box-width');

-        if (bWidth <= 0) {

-          if (!this._preComputing) this._end();

-          return 0;

-        }

-

-        var bLeft = this.get('border-left'),

-         bRight = this.get('border-right');

-

-        var pLeft = this.get('padding-left'),

-         pRight = this.get('padding-right');

-

-        if (!this._preComputing) this._end();

-

-        return bWidth - bLeft - bRight - pLeft - pRight;

-      },

-

-      'padding-box-height': function(element) {

-        var height = this.get('height'),

-         pTop = this.get('padding-top'),

-         pBottom = this.get('padding-bottom');

-

-        return height + pTop + pBottom;

-      },

-

-      'padding-box-width': function(element) {

-        var width = this.get('width'),

-         pLeft = this.get('padding-left'),

-         pRight = this.get('padding-right');

-

-        return width + pLeft + pRight;

-      },

-

-      'border-box-height': function(element) {

-        if (!this._preComputing) this._begin();

-        var height = element.offsetHeight;

-        if (!this._preComputing) this._end();

-        return height;

-      },

-

-      'border-box-width': function(element) {

-        if (!this._preComputing) this._begin();

-        var width = element.offsetWidth;

-        if (!this._preComputing) this._end();

-        return width;

-      },

-

-      'margin-box-height': function(element) {

-        var bHeight = this.get('border-box-height'),

-         mTop = this.get('margin-top'),

-         mBottom = this.get('margin-bottom');

-

-        if (bHeight <= 0) return 0;

-

-        return bHeight + mTop + mBottom;

-      },

-

-      'margin-box-width': function(element) {

-        var bWidth = this.get('border-box-width'),

-         mLeft = this.get('margin-left'),

-         mRight = this.get('margin-right');

-

-        if (bWidth <= 0) return 0;

-

-        return bWidth + mLeft + mRight;

-      },

-

-      'top': function(element) {

-        var offset = element.positionedOffset();

-        return offset.top;

-      },

-

-      'bottom': function(element) {

-        var offset = element.positionedOffset(),

-         parent = element.getOffsetParent(),

-         pHeight = parent.measure('height');

-

-        var mHeight = this.get('border-box-height');

-

-        return pHeight - mHeight - offset.top;

-      },

-

-      'left': function(element) {

-        var offset = element.positionedOffset();

-        return offset.left;

-      },

-

-      'right': function(element) {

-        var offset = element.positionedOffset(),

-         parent = element.getOffsetParent(),

-         pWidth = parent.measure('width');

-

-        var mWidth = this.get('border-box-width');

-

-        return pWidth - mWidth - offset.left;

-      },

-

-      'padding-top': function(element) {

-        return getPixelValue(element, 'paddingTop');

-      },

-

-      'padding-bottom': function(element) {

-        return getPixelValue(element, 'paddingBottom');

-      },

-

-      'padding-left': function(element) {

-        return getPixelValue(element, 'paddingLeft');

-      },

-

-      'padding-right': function(element) {

-        return getPixelValue(element, 'paddingRight');

-      },

-

-      'border-top': function(element) {

-        return getPixelValue(element, 'borderTopWidth');

-      },

-

-      'border-bottom': function(element) {

-        return getPixelValue(element, 'borderBottomWidth');

-      },

-

-      'border-left': function(element) {

-        return getPixelValue(element, 'borderLeftWidth');

-      },

-

-      'border-right': function(element) {

-        return getPixelValue(element, 'borderRightWidth');

-      },

-

-      'margin-top': function(element) {

-        return getPixelValue(element, 'marginTop');

-      },

-

-      'margin-bottom': function(element) {

-        return getPixelValue(element, 'marginBottom');

-      },

-

-      'margin-left': function(element) {

-        return getPixelValue(element, 'marginLeft');

-      },

-

-      'margin-right': function(element) {

-        return getPixelValue(element, 'marginRight');

-      }

-    }

-  });

-

-  if ('getBoundingClientRect' in document.documentElement) {

-    Object.extend(Element.Layout.COMPUTATIONS, {

-      'right': function(element) {

-        var parent = hasLayout(element.getOffsetParent());

-        var rect = element.getBoundingClientRect(),

-         pRect = parent.getBoundingClientRect();

-

-        return (pRect.right - rect.right).round();

-      },

-

-      'bottom': function(element) {

-        var parent = hasLayout(element.getOffsetParent());

-        var rect = element.getBoundingClientRect(),

-         pRect = parent.getBoundingClientRect();

-

-        return (pRect.bottom - rect.bottom).round();

-      }

-    });

-  }

-

-  Element.Offset = Class.create({

-    initialize: function(left, top) {

-      this.left = left.round();

-      this.top  = top.round();

-

-      this[0] = this.left;

-      this[1] = this.top;

-    },

-

-    relativeTo: function(offset) {

-      return new Element.Offset(

-        this.left - offset.left,

-        this.top  - offset.top

-      );

-    },

-

-    inspect: function() {

-      return "#<Element.Offset left: #{left} top: #{top}>".interpolate(this);

-    },

-

-    toString: function() {

-      return "[#{left}, #{top}]".interpolate(this);

-    },

-

-    toArray: function() {

-      return [this.left, this.top];

-    }

-  });

-

-  function getLayout(element, preCompute) {

-    return new Element.Layout(element, preCompute);

-  }

-

-  function measure(element, property) {

-    return $(element).getLayout().get(property);

-  }

-

-  function getDimensions(element) {

-    element = $(element);

-    var display = Element.getStyle(element, 'display');

-

-    if (display && display !== 'none') {

-      return { width: element.offsetWidth, height: element.offsetHeight };

-    }

-

-    var style = element.style;

-    var originalStyles = {

-      visibility: style.visibility,

-      position:   style.position,

-      display:    style.display

-    };

-

-    var newStyles = {

-      visibility: 'hidden',

-      display:    'block'

-    };

-

-    if (originalStyles.position !== 'fixed')

-      newStyles.position = 'absolute';

-

-    Element.setStyle(element, newStyles);

-

-    var dimensions = {

-      width:  element.offsetWidth,

-      height: element.offsetHeight

-    };

-

-    Element.setStyle(element, originalStyles);

-

-    return dimensions;

-  }

-

-  function getOffsetParent(element) {

-    element = $(element);

-

-    if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))

-      return $(document.body);

-

-    var isInline = (Element.getStyle(element, 'display') === 'inline');

-    if (!isInline && element.offsetParent) return $(element.offsetParent);

-

-    while ((element = element.parentNode) && element !== document.body && element !== document) {

-      if (Element.getStyle(element, 'position') !== 'static') {

-        return isHtml(element) ? $(document.body) : $(element);

-      }

-    }

-

-    return $(document.body);

-  }

-

-

-  function cumulativeOffset(element) {

-    element = $(element);

-    var valueT = 0, valueL = 0;

-    if (element.parentNode) {

-      do {

-        valueT += element.offsetTop  || 0;

-        valueL += element.offsetLeft || 0;

-        element = element.offsetParent;

-      } while (element);

-    }

-    return new Element.Offset(valueL, valueT);

-  }

-

-  function positionedOffset(element) {

-    element = $(element);

-

-    var layout = element.getLayout();

-

-    var valueT = 0, valueL = 0;

-    do {

-      valueT += element.offsetTop  || 0;

-      valueL += element.offsetLeft || 0;

-      element = element.offsetParent;

-      if (element) {

-        if (isBody(element)) break;

-        var p = Element.getStyle(element, 'position');

-        if (p !== 'static') break;

-      }

-    } while (element);

-

-    valueL -= layout.get('margin-top');

-    valueT -= layout.get('margin-left');

-

-    return new Element.Offset(valueL, valueT);

-  }

-

-  function cumulativeScrollOffset(element) {

-    var valueT = 0, valueL = 0;

-    do {

-      valueT += element.scrollTop  || 0;

-      valueL += element.scrollLeft || 0;

-      element = element.parentNode;

-    } while (element);

-    return new Element.Offset(valueL, valueT);

-  }

-

-  function viewportOffset(forElement) {

-    element = $(element);

-    var valueT = 0, valueL = 0, docBody = document.body;

-

-    var element = forElement;

-    do {

-      valueT += element.offsetTop  || 0;

-      valueL += element.offsetLeft || 0;

-      if (element.offsetParent == docBody &&

-        Element.getStyle(element, 'position') == 'absolute') break;

-    } while (element = element.offsetParent);

-

-    element = forElement;

-    do {

-      if (element != docBody) {

-        valueT -= element.scrollTop  || 0;

-        valueL -= element.scrollLeft || 0;

-      }

-    } while (element = element.parentNode);

-    return new Element.Offset(valueL, valueT);

-  }

-

-  function absolutize(element) {

-    element = $(element);

-

-    if (Element.getStyle(element, 'position') === 'absolute') {

-      return element;

-    }

-

-    var offsetParent = getOffsetParent(element);

-    var eOffset = element.viewportOffset(),

-     pOffset = offsetParent.viewportOffset();

-

-    var offset = eOffset.relativeTo(pOffset);

-    var layout = element.getLayout();

-

-    element.store('prototype_absolutize_original_styles', {

-      left:   element.getStyle('left'),

-      top:    element.getStyle('top'),

-      width:  element.getStyle('width'),

-      height: element.getStyle('height')

-    });

-

-    element.setStyle({

-      position: 'absolute',

-      top:    offset.top + 'px',

-      left:   offset.left + 'px',

-      width:  layout.get('width') + 'px',

-      height: layout.get('height') + 'px'

-    });

-

-    return element;

-  }

-

-  function relativize(element) {

-    element = $(element);

-    if (Element.getStyle(element, 'position') === 'relative') {

-      return element;

-    }

-

-    var originalStyles =

-     element.retrieve('prototype_absolutize_original_styles');

-

-    if (originalStyles) element.setStyle(originalStyles);

-    return element;

-  }

-

-  if (Prototype.Browser.IE) {

-    getOffsetParent = getOffsetParent.wrap(

-      function(proceed, element) {

-        element = $(element);

-

-        if (isDocument(element) || isDetached(element) || isBody(element) || isHtml(element))

-          return $(document.body);

-

-        var position = element.getStyle('position');

-        if (position !== 'static') return proceed(element);

-

-        element.setStyle({ position: 'relative' });

-        var value = proceed(element);

-        element.setStyle({ position: position });

-        return value;

-      }

-    );

-

-    positionedOffset = positionedOffset.wrap(function(proceed, element) {

-      element = $(element);

-      if (!element.parentNode) return new Element.Offset(0, 0);

-      var position = element.getStyle('position');

-      if (position !== 'static') return proceed(element);

-

-      var offsetParent = element.getOffsetParent();

-      if (offsetParent && offsetParent.getStyle('position') === 'fixed')

-        hasLayout(offsetParent);

-

-      element.setStyle({ position: 'relative' });

-      var value = proceed(element);

-      element.setStyle({ position: position });

-      return value;

-    });

-  } else if (Prototype.Browser.Webkit) {

-    cumulativeOffset = function(element) {

-      element = $(element);

-      var valueT = 0, valueL = 0;

-      do {

-        valueT += element.offsetTop  || 0;

-        valueL += element.offsetLeft || 0;

-        if (element.offsetParent == document.body)

-          if (Element.getStyle(element, 'position') == 'absolute') break;

-

-        element = element.offsetParent;

-      } while (element);

-

-      return new Element.Offset(valueL, valueT);

-    };

-  }

-

-

-  Element.addMethods({

-    getLayout:              getLayout,

-    measure:                measure,

-    getDimensions:          getDimensions,

-    getOffsetParent:        getOffsetParent,

-    cumulativeOffset:       cumulativeOffset,

-    positionedOffset:       positionedOffset,

-    cumulativeScrollOffset: cumulativeScrollOffset,

-    viewportOffset:         viewportOffset,

-    absolutize:             absolutize,

-    relativize:             relativize

-  });

-

-  function isBody(element) {

-    return element.nodeName.toUpperCase() === 'BODY';

-  }

-

-  function isHtml(element) {

-    return element.nodeName.toUpperCase() === 'HTML';

-  }

-

-  function isDocument(element) {

-    return element.nodeType === Node.DOCUMENT_NODE;

-  }

-

-  function isDetached(element) {

-    return element !== document.body &&

-     !Element.descendantOf(element, document.body);

-  }

-

-  if ('getBoundingClientRect' in document.documentElement) {

-    Element.addMethods({

-      viewportOffset: function(element) {

-        element = $(element);

-        if (isDetached(element)) return new Element.Offset(0, 0);

-

-        var rect = element.getBoundingClientRect(),

-         docEl = document.documentElement;

-        return new Element.Offset(rect.left - docEl.clientLeft,

-         rect.top - docEl.clientTop);

-      }

-    });

-  }

-})();

-window.$$ = function() {

-  var expression = $A(arguments).join(', ');

-  return Prototype.Selector.select(expression, document);

-};

-

-Prototype.Selector = (function() {

-

-  function select() {

-    throw new Error('Method "Prototype.Selector.select" must be defined.');

-  }

-

-  function match() {

-    throw new Error('Method "Prototype.Selector.match" must be defined.');

-  }

-

-  function find(elements, expression, index) {

-    index = index || 0;

-    var match = Prototype.Selector.match, length = elements.length, matchIndex = 0, i;

-

-    for (i = 0; i < length; i++) {

-      if (match(elements[i], expression) && index == matchIndex++) {

-        return Element.extend(elements[i]);

-      }

-    }

-  }

-

-  function extendElements(elements) {

-    for (var i = 0, length = elements.length; i < length; i++) {

-      Element.extend(elements[i]);

-    }

-    return elements;

-  }

-

-

-  var K = Prototype.K;

-

-  return {

-    select: select,

-    match: match,

-    find: find,

-    extendElements: (Element.extend === K) ? K : extendElements,

-    extendElement: Element.extend

-  };

-})();

-Prototype._original_property = window.Sizzle;

-/*!

- * Sizzle CSS Selector Engine - v1.0

- *  Copyright 2009, The Dojo Foundation

- *  Released under the MIT, BSD, and GPL Licenses.

- *  More information: http://sizzlejs.com/

- */

-(function(){

-

-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,

-	done = 0,

-	toString = Object.prototype.toString,

-	hasDuplicate = false,

-	baseHasDuplicate = true;

-

-[0, 0].sort(function(){

-	baseHasDuplicate = false;

-	return 0;

-});

-

-var Sizzle = function(selector, context, results, seed) {

-	results = results || [];

-	var origContext = context = context || document;

-

-	if ( context.nodeType !== 1 && context.nodeType !== 9 ) {

-		return [];

-	}

-

-	if ( !selector || typeof selector !== "string" ) {

-		return results;

-	}

-

-	var parts = [], m, set, checkSet, check, mode, extra, prune = true, contextXML = isXML(context),

-		soFar = selector;

-

-	while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {

-		soFar = m[3];

-

-		parts.push( m[1] );

-

-		if ( m[2] ) {

-			extra = m[3];

-			break;

-		}

-	}

-

-	if ( parts.length > 1 && origPOS.exec( selector ) ) {

-		if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {

-			set = posProcess( parts[0] + parts[1], context );

-		} else {

-			set = Expr.relative[ parts[0] ] ?

-				[ context ] :

-				Sizzle( parts.shift(), context );

-

-			while ( parts.length ) {

-				selector = parts.shift();

-

-				if ( Expr.relative[ selector ] )

-					selector += parts.shift();

-

-				set = posProcess( selector, set );

-			}

-		}

-	} else {

-		if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&

-				Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {

-			var ret = Sizzle.find( parts.shift(), context, contextXML );

-			context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];

-		}

-

-		if ( context ) {

-			var ret = seed ?

-				{ expr: parts.pop(), set: makeArray(seed) } :

-				Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );

-			set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;

-

-			if ( parts.length > 0 ) {

-				checkSet = makeArray(set);

-			} else {

-				prune = false;

-			}

-

-			while ( parts.length ) {

-				var cur = parts.pop(), pop = cur;

-

-				if ( !Expr.relative[ cur ] ) {

-					cur = "";

-				} else {

-					pop = parts.pop();

-				}

-

-				if ( pop == null ) {

-					pop = context;

-				}

-

-				Expr.relative[ cur ]( checkSet, pop, contextXML );

-			}

-		} else {

-			checkSet = parts = [];

-		}

-	}

-

-	if ( !checkSet ) {

-		checkSet = set;

-	}

-

-	if ( !checkSet ) {

-		throw "Syntax error, unrecognized expression: " + (cur || selector);

-	}

-

-	if ( toString.call(checkSet) === "[object Array]" ) {

-		if ( !prune ) {

-			results.push.apply( results, checkSet );

-		} else if ( context && context.nodeType === 1 ) {

-			for ( var i = 0; checkSet[i] != null; i++ ) {

-				if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {

-					results.push( set[i] );

-				}

-			}

-		} else {

-			for ( var i = 0; checkSet[i] != null; i++ ) {

-				if ( checkSet[i] && checkSet[i].nodeType === 1 ) {

-					results.push( set[i] );

-				}

-			}

-		}

-	} else {

-		makeArray( checkSet, results );

-	}

-

-	if ( extra ) {

-		Sizzle( extra, origContext, results, seed );

-		Sizzle.uniqueSort( results );

-	}

-

-	return results;

-};

-

-Sizzle.uniqueSort = function(results){

-	if ( sortOrder ) {

-		hasDuplicate = baseHasDuplicate;

-		results.sort(sortOrder);

-

-		if ( hasDuplicate ) {

-			for ( var i = 1; i < results.length; i++ ) {

-				if ( results[i] === results[i-1] ) {

-					results.splice(i--, 1);

-				}

-			}

-		}

-	}

-

-	return results;

-};

-

-Sizzle.matches = function(expr, set){

-	return Sizzle(expr, null, null, set);

-};

-

-Sizzle.find = function(expr, context, isXML){

-	var set, match;

-

-	if ( !expr ) {

-		return [];

-	}

-

-	for ( var i = 0, l = Expr.order.length; i < l; i++ ) {

-		var type = Expr.order[i], match;

-

-		if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {

-			var left = match[1];

-			match.splice(1,1);

-

-			if ( left.substr( left.length - 1 ) !== "\\" ) {

-				match[1] = (match[1] || "").replace(/\\/g, "");

-				set = Expr.find[ type ]( match, context, isXML );

-				if ( set != null ) {

-					expr = expr.replace( Expr.match[ type ], "" );

-					break;

-				}

-			}

-		}

-	}

-

-	if ( !set ) {

-		set = context.getElementsByTagName("*");

-	}

-

-	return {set: set, expr: expr};

-};

-

-Sizzle.filter = function(expr, set, inplace, not){

-	var old = expr, result = [], curLoop = set, match, anyFound,

-		isXMLFilter = set && set[0] && isXML(set[0]);

-

-	while ( expr && set.length ) {

-		for ( var type in Expr.filter ) {

-			if ( (match = Expr.match[ type ].exec( expr )) != null ) {

-				var filter = Expr.filter[ type ], found, item;

-				anyFound = false;

-

-				if ( curLoop == result ) {

-					result = [];

-				}

-

-				if ( Expr.preFilter[ type ] ) {

-					match = Expr.preFilter[ type ]( match, curLoop, inplace, result, not, isXMLFilter );

-

-					if ( !match ) {

-						anyFound = found = true;

-					} else if ( match === true ) {

-						continue;

-					}

-				}

-

-				if ( match ) {

-					for ( var i = 0; (item = curLoop[i]) != null; i++ ) {

-						if ( item ) {

-							found = filter( item, match, i, curLoop );

-							var pass = not ^ !!found;

-

-							if ( inplace && found != null ) {

-								if ( pass ) {

-									anyFound = true;

-								} else {

-									curLoop[i] = false;

-								}

-							} else if ( pass ) {

-								result.push( item );

-								anyFound = true;

-							}

-						}

-					}

-				}

-

-				if ( found !== undefined ) {

-					if ( !inplace ) {

-						curLoop = result;

-					}

-

-					expr = expr.replace( Expr.match[ type ], "" );

-

-					if ( !anyFound ) {

-						return [];

-					}

-

-					break;

-				}

-			}

-		}

-

-		if ( expr == old ) {

-			if ( anyFound == null ) {

-				throw "Syntax error, unrecognized expression: " + expr;

-			} else {

-				break;

-			}

-		}

-

-		old = expr;

-	}

-

-	return curLoop;

-};

-

-var Expr = Sizzle.selectors = {

-	order: [ "ID", "NAME", "TAG" ],

-	match: {

-		ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,

-		CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,

-		NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,

-		ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,

-		TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,

-		CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,

-		POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,

-		PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]*)((?:\([^\)]+\)|[^\2\(\)]*)+)\2\))?/

-	},

-	leftMatch: {},

-	attrMap: {

-		"class": "className",

-		"for": "htmlFor"

-	},

-	attrHandle: {

-		href: function(elem){

-			return elem.getAttribute("href");

-		}

-	},

-	relative: {

-		"+": function(checkSet, part, isXML){

-			var isPartStr = typeof part === "string",

-				isTag = isPartStr && !/\W/.test(part),

-				isPartStrNotTag = isPartStr && !isTag;

-

-			if ( isTag && !isXML ) {

-				part = part.toUpperCase();

-			}

-

-			for ( var i = 0, l = checkSet.length, elem; i < l; i++ ) {

-				if ( (elem = checkSet[i]) ) {

-					while ( (elem = elem.previousSibling) && elem.nodeType !== 1 ) {}

-

-					checkSet[i] = isPartStrNotTag || elem && elem.nodeName === part ?

-						elem || false :

-						elem === part;

-				}

-			}

-

-			if ( isPartStrNotTag ) {

-				Sizzle.filter( part, checkSet, true );

-			}

-		},

-		">": function(checkSet, part, isXML){

-			var isPartStr = typeof part === "string";

-

-			if ( isPartStr && !/\W/.test(part) ) {

-				part = isXML ? part : part.toUpperCase();

-

-				for ( var i = 0, l = checkSet.length; i < l; i++ ) {

-					var elem = checkSet[i];

-					if ( elem ) {

-						var parent = elem.parentNode;

-						checkSet[i] = parent.nodeName === part ? parent : false;

-					}

-				}

-			} else {

-				for ( var i = 0, l = checkSet.length; i < l; i++ ) {

-					var elem = checkSet[i];

-					if ( elem ) {

-						checkSet[i] = isPartStr ?

-							elem.parentNode :

-							elem.parentNode === part;

-					}

-				}

-

-				if ( isPartStr ) {

-					Sizzle.filter( part, checkSet, true );

-				}

-			}

-		},

-		"": function(checkSet, part, isXML){

-			var doneName = done++, checkFn = dirCheck;

-

-			if ( !/\W/.test(part) ) {

-				var nodeCheck = part = isXML ? part : part.toUpperCase();

-				checkFn = dirNodeCheck;

-			}

-

-			checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);

-		},

-		"~": function(checkSet, part, isXML){

-			var doneName = done++, checkFn = dirCheck;

-

-			if ( typeof part === "string" && !/\W/.test(part) ) {

-				var nodeCheck = part = isXML ? part : part.toUpperCase();

-				checkFn = dirNodeCheck;

-			}

-

-			checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);

-		}

-	},

-	find: {

-		ID: function(match, context, isXML){

-			if ( typeof context.getElementById !== "undefined" && !isXML ) {

-				var m = context.getElementById(match[1]);

-				return m ? [m] : [];

-			}

-		},

-		NAME: function(match, context, isXML){

-			if ( typeof context.getElementsByName !== "undefined" ) {

-				var ret = [], results = context.getElementsByName(match[1]);

-

-				for ( var i = 0, l = results.length; i < l; i++ ) {

-					if ( results[i].getAttribute("name") === match[1] ) {

-						ret.push( results[i] );

-					}

-				}

-

-				return ret.length === 0 ? null : ret;

-			}

-		},

-		TAG: function(match, context){

-			return context.getElementsByTagName(match[1]);

-		}

-	},

-	preFilter: {

-		CLASS: function(match, curLoop, inplace, result, not, isXML){

-			match = " " + match[1].replace(/\\/g, "") + " ";

-

-			if ( isXML ) {

-				return match;

-			}

-

-			for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {

-				if ( elem ) {

-					if ( not ^ (elem.className && (" " + elem.className + " ").indexOf(match) >= 0) ) {

-						if ( !inplace )

-							result.push( elem );

-					} else if ( inplace ) {

-						curLoop[i] = false;

-					}

-				}

-			}

-

-			return false;

-		},

-		ID: function(match){

-			return match[1].replace(/\\/g, "");

-		},

-		TAG: function(match, curLoop){

-			for ( var i = 0; curLoop[i] === false; i++ ){}

-			return curLoop[i] && isXML(curLoop[i]) ? match[1] : match[1].toUpperCase();

-		},

-		CHILD: function(match){

-			if ( match[1] == "nth" ) {

-				var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(

-					match[2] == "even" && "2n" || match[2] == "odd" && "2n+1" ||

-					!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);

-

-				match[2] = (test[1] + (test[2] || 1)) - 0;

-				match[3] = test[3] - 0;

-			}

-

-			match[0] = done++;

-

-			return match;

-		},

-		ATTR: function(match, curLoop, inplace, result, not, isXML){

-			var name = match[1].replace(/\\/g, "");

-

-			if ( !isXML && Expr.attrMap[name] ) {

-				match[1] = Expr.attrMap[name];

-			}

-

-			if ( match[2] === "~=" ) {

-				match[4] = " " + match[4] + " ";

-			}

-

-			return match;

-		},

-		PSEUDO: function(match, curLoop, inplace, result, not){

-			if ( match[1] === "not" ) {

-				if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {

-					match[3] = Sizzle(match[3], null, null, curLoop);

-				} else {

-					var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);

-					if ( !inplace ) {

-						result.push.apply( result, ret );

-					}

-					return false;

-				}

-			} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {

-				return true;

-			}

-

-			return match;

-		},

-		POS: function(match){

-			match.unshift( true );

-			return match;

-		}

-	},

-	filters: {

-		enabled: function(elem){

-			return elem.disabled === false && elem.type !== "hidden";

-		},

-		disabled: function(elem){

-			return elem.disabled === true;

-		},

-		checked: function(elem){

-			return elem.checked === true;

-		},

-		selected: function(elem){

-			elem.parentNode.selectedIndex;

-			return elem.selected === true;

-		},

-		parent: function(elem){

-			return !!elem.firstChild;

-		},

-		empty: function(elem){

-			return !elem.firstChild;

-		},

-		has: function(elem, i, match){

-			return !!Sizzle( match[3], elem ).length;

-		},

-		header: function(elem){

-			return /h\d/i.test( elem.nodeName );

-		},

-		text: function(elem){

-			return "text" === elem.type;

-		},

-		radio: function(elem){

-			return "radio" === elem.type;

-		},

-		checkbox: function(elem){

-			return "checkbox" === elem.type;

-		},

-		file: function(elem){

-			return "file" === elem.type;

-		},

-		password: function(elem){

-			return "password" === elem.type;

-		},

-		submit: function(elem){

-			return "submit" === elem.type;

-		},

-		image: function(elem){

-			return "image" === elem.type;

-		},

-		reset: function(elem){

-			return "reset" === elem.type;

-		},

-		button: function(elem){

-			return "button" === elem.type || elem.nodeName.toUpperCase() === "BUTTON";

-		},

-		input: function(elem){

-			return /input|select|textarea|button/i.test(elem.nodeName);

-		}

-	},

-	setFilters: {

-		first: function(elem, i){

-			return i === 0;

-		},

-		last: function(elem, i, match, array){

-			return i === array.length - 1;

-		},

-		even: function(elem, i){

-			return i % 2 === 0;

-		},

-		odd: function(elem, i){

-			return i % 2 === 1;

-		},

-		lt: function(elem, i, match){

-			return i < match[3] - 0;

-		},

-		gt: function(elem, i, match){

-			return i > match[3] - 0;

-		},

-		nth: function(elem, i, match){

-			return match[3] - 0 == i;

-		},

-		eq: function(elem, i, match){

-			return match[3] - 0 == i;

-		}

-	},

-	filter: {

-		PSEUDO: function(elem, match, i, array){

-			var name = match[1], filter = Expr.filters[ name ];

-

-			if ( filter ) {

-				return filter( elem, i, match, array );

-			} else if ( name === "contains" ) {

-				return (elem.textContent || elem.innerText || "").indexOf(match[3]) >= 0;

-			} else if ( name === "not" ) {

-				var not = match[3];

-

-				for ( var i = 0, l = not.length; i < l; i++ ) {

-					if ( not[i] === elem ) {

-						return false;

-					}

-				}

-

-				return true;

-			}

-		},

-		CHILD: function(elem, match){

-			var type = match[1], node = elem;

-			switch (type) {

-				case 'only':

-				case 'first':

-					while ( (node = node.previousSibling) )  {

-						if ( node.nodeType === 1 ) return false;

-					}

-					if ( type == 'first') return true;

-					node = elem;

-				case 'last':

-					while ( (node = node.nextSibling) )  {

-						if ( node.nodeType === 1 ) return false;

-					}

-					return true;

-				case 'nth':

-					var first = match[2], last = match[3];

-

-					if ( first == 1 && last == 0 ) {

-						return true;

-					}

-

-					var doneName = match[0],

-						parent = elem.parentNode;

-

-					if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {

-						var count = 0;

-						for ( node = parent.firstChild; node; node = node.nextSibling ) {

-							if ( node.nodeType === 1 ) {

-								node.nodeIndex = ++count;

-							}

-						}

-						parent.sizcache = doneName;

-					}

-

-					var diff = elem.nodeIndex - last;

-					if ( first == 0 ) {

-						return diff == 0;

-					} else {

-						return ( diff % first == 0 && diff / first >= 0 );

-					}

-			}

-		},

-		ID: function(elem, match){

-			return elem.nodeType === 1 && elem.getAttribute("id") === match;

-		},

-		TAG: function(elem, match){

-			return (match === "*" && elem.nodeType === 1) || elem.nodeName === match;

-		},

-		CLASS: function(elem, match){

-			return (" " + (elem.className || elem.getAttribute("class")) + " ")

-				.indexOf( match ) > -1;

-		},

-		ATTR: function(elem, match){

-			var name = match[1],

-				result = Expr.attrHandle[ name ] ?

-					Expr.attrHandle[ name ]( elem ) :

-					elem[ name ] != null ?

-						elem[ name ] :

-						elem.getAttribute( name ),

-				value = result + "",

-				type = match[2],

-				check = match[4];

-

-			return result == null ?

-				type === "!=" :

-				type === "=" ?

-				value === check :

-				type === "*=" ?

-				value.indexOf(check) >= 0 :

-				type === "~=" ?

-				(" " + value + " ").indexOf(check) >= 0 :

-				!check ?

-				value && result !== false :

-				type === "!=" ?

-				value != check :

-				type === "^=" ?

-				value.indexOf(check) === 0 :

-				type === "$=" ?

-				value.substr(value.length - check.length) === check :

-				type === "|=" ?

-				value === check || value.substr(0, check.length + 1) === check + "-" :

-				false;

-		},

-		POS: function(elem, match, i, array){

-			var name = match[2], filter = Expr.setFilters[ name ];

-

-			if ( filter ) {

-				return filter( elem, i, match, array );

-			}

-		}

-	}

-};

-

-var origPOS = Expr.match.POS;

-

-for ( var type in Expr.match ) {

-	Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );

-	Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source );

-}

-

-var makeArray = function(array, results) {

-	array = Array.prototype.slice.call( array, 0 );

-

-	if ( results ) {

-		results.push.apply( results, array );

-		return results;

-	}

-

-	return array;

-};

-

-try {

-	Array.prototype.slice.call( document.documentElement.childNodes, 0 );

-

-} catch(e){

-	makeArray = function(array, results) {

-		var ret = results || [];

-

-		if ( toString.call(array) === "[object Array]" ) {

-			Array.prototype.push.apply( ret, array );

-		} else {

-			if ( typeof array.length === "number" ) {

-				for ( var i = 0, l = array.length; i < l; i++ ) {

-					ret.push( array[i] );

-				}

-			} else {

-				for ( var i = 0; array[i]; i++ ) {

-					ret.push( array[i] );

-				}

-			}

-		}

-

-		return ret;

-	};

-}

-

-var sortOrder;

-

-if ( document.documentElement.compareDocumentPosition ) {

-	sortOrder = function( a, b ) {

-		if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {

-			if ( a == b ) {

-				hasDuplicate = true;

-			}

-			return 0;

-		}

-

-		var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;

-		if ( ret === 0 ) {

-			hasDuplicate = true;

-		}

-		return ret;

-	};

-} else if ( "sourceIndex" in document.documentElement ) {

-	sortOrder = function( a, b ) {

-		if ( !a.sourceIndex || !b.sourceIndex ) {

-			if ( a == b ) {

-				hasDuplicate = true;

-			}

-			return 0;

-		}

-

-		var ret = a.sourceIndex - b.sourceIndex;

-		if ( ret === 0 ) {

-			hasDuplicate = true;

-		}

-		return ret;

-	};

-} else if ( document.createRange ) {

-	sortOrder = function( a, b ) {

-		if ( !a.ownerDocument || !b.ownerDocument ) {

-			if ( a == b ) {

-				hasDuplicate = true;

-			}

-			return 0;

-		}

-

-		var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();

-		aRange.setStart(a, 0);

-		aRange.setEnd(a, 0);

-		bRange.setStart(b, 0);

-		bRange.setEnd(b, 0);

-		var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);

-		if ( ret === 0 ) {

-			hasDuplicate = true;

-		}

-		return ret;

-	};

-}

-

-(function(){

-	var form = document.createElement("div"),

-		id = "script" + (new Date).getTime();

-	form.innerHTML = "<a name='" + id + "'/>";

-

-	var root = document.documentElement;

-	root.insertBefore( form, root.firstChild );

-

-	if ( !!document.getElementById( id ) ) {

-		Expr.find.ID = function(match, context, isXML){

-			if ( typeof context.getElementById !== "undefined" && !isXML ) {

-				var m = context.getElementById(match[1]);

-				return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];

-			}

-		};

-

-		Expr.filter.ID = function(elem, match){

-			var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");

-			return elem.nodeType === 1 && node && node.nodeValue === match;

-		};

-	}

-

-	root.removeChild( form );

-	root = form = null; // release memory in IE

-})();

-

-(function(){

-

-	var div = document.createElement("div");

-	div.appendChild( document.createComment("") );

-

-	if ( div.getElementsByTagName("*").length > 0 ) {

-		Expr.find.TAG = function(match, context){

-			var results = context.getElementsByTagName(match[1]);

-

-			if ( match[1] === "*" ) {

-				var tmp = [];

-

-				for ( var i = 0; results[i]; i++ ) {

-					if ( results[i].nodeType === 1 ) {

-						tmp.push( results[i] );

-					}

-				}

-

-				results = tmp;

-			}

-

-			return results;

-		};

-	}

-

-	div.innerHTML = "<a href='#'></a>";

-	if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&

-			div.firstChild.getAttribute("href") !== "#" ) {

-		Expr.attrHandle.href = function(elem){

-			return elem.getAttribute("href", 2);

-		};

-	}

-

-	div = null; // release memory in IE

-})();

-

-if ( document.querySelectorAll ) (function(){

-	var oldSizzle = Sizzle, div = document.createElement("div");

-	div.innerHTML = "<p class='TEST'></p>";

-

-	if ( div.querySelectorAll && div.querySelectorAll(".TEST").length === 0 ) {

-		return;

-	}

-

-	Sizzle = function(query, context, extra, seed){

-		context = context || document;

-

-		if ( !seed && context.nodeType === 9 && !isXML(context) ) {

-			try {

-				return makeArray( context.querySelectorAll(query), extra );

-			} catch(e){}

-		}

-

-		return oldSizzle(query, context, extra, seed);

-	};

-

-	for ( var prop in oldSizzle ) {

-		Sizzle[ prop ] = oldSizzle[ prop ];

-	}

-

-	div = null; // release memory in IE

-})();

-

-if ( document.getElementsByClassName && document.documentElement.getElementsByClassName ) (function(){

-	var div = document.createElement("div");

-	div.innerHTML = "<div class='test e'></div><div class='test'></div>";

-

-	if ( div.getElementsByClassName("e").length === 0 )

-		return;

-

-	div.lastChild.className = "e";

-

-	if ( div.getElementsByClassName("e").length === 1 )

-		return;

-

-	Expr.order.splice(1, 0, "CLASS");

-	Expr.find.CLASS = function(match, context, isXML) {

-		if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {

-			return context.getElementsByClassName(match[1]);

-		}

-	};

-

-	div = null; // release memory in IE

-})();

-

-function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {

-	var sibDir = dir == "previousSibling" && !isXML;

-	for ( var i = 0, l = checkSet.length; i < l; i++ ) {

-		var elem = checkSet[i];

-		if ( elem ) {

-			if ( sibDir && elem.nodeType === 1 ){

-				elem.sizcache = doneName;

-				elem.sizset = i;

-			}

-			elem = elem[dir];

-			var match = false;

-

-			while ( elem ) {

-				if ( elem.sizcache === doneName ) {

-					match = checkSet[elem.sizset];

-					break;

-				}

-

-				if ( elem.nodeType === 1 && !isXML ){

-					elem.sizcache = doneName;

-					elem.sizset = i;

-				}

-

-				if ( elem.nodeName === cur ) {

-					match = elem;

-					break;

-				}

-

-				elem = elem[dir];

-			}

-

-			checkSet[i] = match;

-		}

-	}

-}

-

-function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {

-	var sibDir = dir == "previousSibling" && !isXML;

-	for ( var i = 0, l = checkSet.length; i < l; i++ ) {

-		var elem = checkSet[i];

-		if ( elem ) {

-			if ( sibDir && elem.nodeType === 1 ) {

-				elem.sizcache = doneName;

-				elem.sizset = i;

-			}

-			elem = elem[dir];

-			var match = false;

-

-			while ( elem ) {

-				if ( elem.sizcache === doneName ) {

-					match = checkSet[elem.sizset];

-					break;

-				}

-

-				if ( elem.nodeType === 1 ) {

-					if ( !isXML ) {

-						elem.sizcache = doneName;

-						elem.sizset = i;

-					}

-					if ( typeof cur !== "string" ) {

-						if ( elem === cur ) {

-							match = true;

-							break;

-						}

-

-					} else if ( Sizzle.filter( cur, [elem] ).length > 0 ) {

-						match = elem;

-						break;

-					}

-				}

-

-				elem = elem[dir];

-			}

-

-			checkSet[i] = match;

-		}

-	}

-}

-

-var contains = document.compareDocumentPosition ?  function(a, b){

-	return a.compareDocumentPosition(b) & 16;

-} : function(a, b){

-	return a !== b && (a.contains ? a.contains(b) : true);

-};

-

-var isXML = function(elem){

-	return elem.nodeType === 9 && elem.documentElement.nodeName !== "HTML" ||

-		!!elem.ownerDocument && elem.ownerDocument.documentElement.nodeName !== "HTML";

-};

-

-var posProcess = function(selector, context){

-	var tmpSet = [], later = "", match,

-		root = context.nodeType ? [context] : context;

-

-	while ( (match = Expr.match.PSEUDO.exec( selector )) ) {

-		later += match[0];

-		selector = selector.replace( Expr.match.PSEUDO, "" );

-	}

-

-	selector = Expr.relative[selector] ? selector + "*" : selector;

-

-	for ( var i = 0, l = root.length; i < l; i++ ) {

-		Sizzle( selector, root[i], tmpSet );

-	}

-

-	return Sizzle.filter( later, tmpSet );

-};

-

-

-window.Sizzle = Sizzle;

-

-})();

-

-;(function(engine) {

-  var extendElements = Prototype.Selector.extendElements;

-

-  function select(selector, scope) {

-    return extendElements(engine(selector, scope || document));

-  }

-

-  function match(element, selector) {

-    return engine.matches(selector, [element]).length == 1;

-  }

-

-  Prototype.Selector.engine = engine;

-  Prototype.Selector.select = select;

-  Prototype.Selector.match = match;

-})(Sizzle);

-

-window.Sizzle = Prototype._original_property;

-delete Prototype._original_property;

-

-var Form = {

-  reset: function(form) {

-    form = $(form);

-    form.reset();

-    return form;

-  },

-

-  serializeElements: function(elements, options) {

-    if (typeof options != 'object') options = { hash: !!options };

-    else if (Object.isUndefined(options.hash)) options.hash = true;

-    var key, value, submitted = false, submit = options.submit, accumulator, initial;

-

-    if (options.hash) {

-      initial = {};

-      accumulator = function(result, key, value) {

-        if (key in result) {

-          if (!Object.isArray(result[key])) result[key] = [result[key]];

-          result[key].push(value);

-        } else result[key] = value;

-        return result;

-      };

-    } else {

-      initial = '';

-      accumulator = function(result, key, value) {

-        return result + (result ? '&' : '') + encodeURIComponent(key) + '=' + encodeURIComponent(value);

-      }

-    }

-

-    return elements.inject(initial, function(result, element) {

-      if (!element.disabled && element.name) {

-        key = element.name; value = $(element).getValue();

-        if (value != null && element.type != 'file' && (element.type != 'submit' || (!submitted &&

-            submit !== false && (!submit || key == submit) && (submitted = true)))) {

-          result = accumulator(result, key, value);

-        }

-      }

-      return result;

-    });

-  }

-};

-

-Form.Methods = {

-  serialize: function(form, options) {

-    return Form.serializeElements(Form.getElements(form), options);

-  },

-

-  getElements: function(form) {

-    var elements = $(form).getElementsByTagName('*'),

-        element,

-        arr = [ ],

-        serializers = Form.Element.Serializers;

-    for (var i = 0; element = elements[i]; i++) {

-      arr.push(element);

-    }

-    return arr.inject([], function(elements, child) {

-      if (serializers[child.tagName.toLowerCase()])

-        elements.push(Element.extend(child));

-      return elements;

-    })

-  },

-

-  getInputs: function(form, typeName, name) {

-    form = $(form);

-    var inputs = form.getElementsByTagName('input');

-

-    if (!typeName && !name) return $A(inputs).map(Element.extend);

-

-    for (var i = 0, matchingInputs = [], length = inputs.length; i < length; i++) {

-      var input = inputs[i];

-      if ((typeName && input.type != typeName) || (name && input.name != name))

-        continue;

-      matchingInputs.push(Element.extend(input));

-    }

-

-    return matchingInputs;

-  },

-

-  disable: function(form) {

-    form = $(form);

-    Form.getElements(form).invoke('disable');

-    return form;

-  },

-

-  enable: function(form) {

-    form = $(form);

-    Form.getElements(form).invoke('enable');

-    return form;

-  },

-

-  findFirstElement: function(form) {

-    var elements = $(form).getElements().findAll(function(element) {

-      return 'hidden' != element.type && !element.disabled;

-    });

-    var firstByIndex = elements.findAll(function(element) {

-      return element.hasAttribute('tabIndex') && element.tabIndex >= 0;

-    }).sortBy(function(element) { return element.tabIndex }).first();

-

-    return firstByIndex ? firstByIndex : elements.find(function(element) {

-      return /^(?:input|select|textarea)$/i.test(element.tagName);

-    });

-  },

-

-  focusFirstElement: function(form) {

-    form = $(form);

-    var element = form.findFirstElement();

-    if (element) element.activate();

-    return form;

-  },

-

-  request: function(form, options) {

-    form = $(form), options = Object.clone(options || { });

-

-    var params = options.parameters, action = form.readAttribute('action') || '';

-    if (action.blank()) action = window.location.href;

-    options.parameters = form.serialize(true);

-

-    if (params) {

-      if (Object.isString(params)) params = params.toQueryParams();

-      Object.extend(options.parameters, params);

-    }

-

-    if (form.hasAttribute('method') && !options.method)

-      options.method = form.method;

-

-    return new Ajax.Request(action, options);

-  }

-};

-

-/*--------------------------------------------------------------------------*/

-

-

-Form.Element = {

-  focus: function(element) {

-    $(element).focus();

-    return element;

-  },

-

-  select: function(element) {

-    $(element).select();

-    return element;

-  }

-};

-

-Form.Element.Methods = {

-

-  serialize: function(element) {

-    element = $(element);

-    if (!element.disabled && element.name) {

-      var value = element.getValue();

-      if (value != undefined) {

-        var pair = { };

-        pair[element.name] = value;

-        return Object.toQueryString(pair);

-      }

-    }

-    return '';

-  },

-

-  getValue: function(element) {

-    element = $(element);

-    var method = element.tagName.toLowerCase();

-    return Form.Element.Serializers[method](element);

-  },

-

-  setValue: function(element, value) {

-    element = $(element);

-    var method = element.tagName.toLowerCase();

-    Form.Element.Serializers[method](element, value);

-    return element;

-  },

-

-  clear: function(element) {

-    $(element).value = '';

-    return element;

-  },

-

-  present: function(element) {

-    return $(element).value != '';

-  },

-

-  activate: function(element) {

-    element = $(element);

-    try {

-      element.focus();

-      if (element.select && (element.tagName.toLowerCase() != 'input' ||

-          !(/^(?:button|reset|submit)$/i.test(element.type))))

-        element.select();

-    } catch (e) { }

-    return element;

-  },

-

-  disable: function(element) {

-    element = $(element);

-    element.disabled = true;

-    return element;

-  },

-

-  enable: function(element) {

-    element = $(element);

-    element.disabled = false;

-    return element;

-  }

-};

-

-/*--------------------------------------------------------------------------*/

-

-var Field = Form.Element;

-

-var $F = Form.Element.Methods.getValue;

-

-/*--------------------------------------------------------------------------*/

-

-Form.Element.Serializers = (function() {

-  function input(element, value) {

-    switch (element.type.toLowerCase()) {

-      case 'checkbox':

-      case 'radio':

-        return inputSelector(element, value);

-      default:

-        return valueSelector(element, value);

-    }

-  }

-

-  function inputSelector(element, value) {

-    if (Object.isUndefined(value))

-      return element.checked ? element.value : null;

-    else element.checked = !!value;

-  }

-

-  function valueSelector(element, value) {

-    if (Object.isUndefined(value)) return element.value;

-    else element.value = value;

-  }

-

-  function select(element, value) {

-    if (Object.isUndefined(value))

-      return (element.type === 'select-one' ? selectOne : selectMany)(element);

-

-    var opt, currentValue, single = !Object.isArray(value);

-    for (var i = 0, length = element.length; i < length; i++) {

-      opt = element.options[i];

-      currentValue = this.optionValue(opt);

-      if (single) {

-        if (currentValue == value) {

-          opt.selected = true;

-          return;

-        }

-      }

-      else opt.selected = value.include(currentValue);

-    }

-  }

-

-  function selectOne(element) {

-    var index = element.selectedIndex;

-    return index >= 0 ? optionValue(element.options[index]) : null;

-  }

-

-  function selectMany(element) {

-    var values, length = element.length;

-    if (!length) return null;

-

-    for (var i = 0, values = []; i < length; i++) {

-      var opt = element.options[i];

-      if (opt.selected) values.push(optionValue(opt));

-    }

-    return values;

-  }

-

-  function optionValue(opt) {

-    return Element.hasAttribute(opt, 'value') ? opt.value : opt.text;

-  }

-

-  return {

-    input:         input,

-    inputSelector: inputSelector,

-    textarea:      valueSelector,

-    select:        select,

-    selectOne:     selectOne,

-    selectMany:    selectMany,

-    optionValue:   optionValue,

-    button:        valueSelector

-  };

-})();

-

-/*--------------------------------------------------------------------------*/

-

-

-Abstract.TimedObserver = Class.create(PeriodicalExecuter, {

-  initialize: function($super, element, frequency, callback) {

-    $super(callback, frequency);

-    this.element   = $(element);

-    this.lastValue = this.getValue();

-  },

-

-  execute: function() {

-    var value = this.getValue();

-    if (Object.isString(this.lastValue) && Object.isString(value) ?

-        this.lastValue != value : String(this.lastValue) != String(value)) {

-      this.callback(this.element, value);

-      this.lastValue = value;

-    }

-  }

-});

-

-Form.Element.Observer = Class.create(Abstract.TimedObserver, {

-  getValue: function() {

-    return Form.Element.getValue(this.element);

-  }

-});

-

-Form.Observer = Class.create(Abstract.TimedObserver, {

-  getValue: function() {

-    return Form.serialize(this.element);

-  }

-});

-

-/*--------------------------------------------------------------------------*/

-

-Abstract.EventObserver = Class.create({

-  initialize: function(element, callback) {

-    this.element  = $(element);

-    this.callback = callback;

-

-    this.lastValue = this.getValue();

-    if (this.element.tagName.toLowerCase() == 'form')

-      this.registerFormCallbacks();

-    else

-      this.registerCallback(this.element);

-  },

-

-  onElementEvent: function() {

-    var value = this.getValue();

-    if (this.lastValue != value) {

-      this.callback(this.element, value);

-      this.lastValue = value;

-    }

-  },

-

-  registerFormCallbacks: function() {

-    Form.getElements(this.element).each(this.registerCallback, this);

-  },

-

-  registerCallback: function(element) {

-    if (element.type) {

-      switch (element.type.toLowerCase()) {

-        case 'checkbox':

-        case 'radio':

-          Event.observe(element, 'click', this.onElementEvent.bind(this));

-          break;

-        default:

-          Event.observe(element, 'change', this.onElementEvent.bind(this));

-          break;

-      }

-    }

-  }

-});

-

-Form.Element.EventObserver = Class.create(Abstract.EventObserver, {

-  getValue: function() {

-    return Form.Element.getValue(this.element);

-  }

-});

-

-Form.EventObserver = Class.create(Abstract.EventObserver, {

-  getValue: function() {

-    return Form.serialize(this.element);

-  }

-});

-(function() {

-

-  var Event = {

-    KEY_BACKSPACE: 8,

-    KEY_TAB:       9,

-    KEY_RETURN:   13,

-    KEY_ESC:      27,

-    KEY_LEFT:     37,

-    KEY_UP:       38,

-    KEY_RIGHT:    39,

-    KEY_DOWN:     40,

-    KEY_DELETE:   46,

-    KEY_HOME:     36,

-    KEY_END:      35,

-    KEY_PAGEUP:   33,

-    KEY_PAGEDOWN: 34,

-    KEY_INSERT:   45,

-

-    cache: {}

-  };

-

-  var docEl = document.documentElement;

-  var MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED = 'onmouseenter' in docEl

-    && 'onmouseleave' in docEl;

-

-

-

-  var isIELegacyEvent = function(event) { return false; };

-

-  if (window.attachEvent) {

-    if (window.addEventListener) {

-      isIELegacyEvent = function(event) {

-        return !(event instanceof window.Event);

-      };

-    } else {

-      isIELegacyEvent = function(event) { return true; };

-    }

-  }

-

-  var _isButton;

-

-  function _isButtonForDOMEvents(event, code) {

-    return event.which ? (event.which === code + 1) : (event.button === code);

-  }

-

-  var legacyButtonMap = { 0: 1, 1: 4, 2: 2 };

-  function _isButtonForLegacyEvents(event, code) {

-    return event.button === legacyButtonMap[code];

-  }

-

-  function _isButtonForWebKit(event, code) {

-    switch (code) {

-      case 0: return event.which == 1 && !event.metaKey;

-      case 1: return event.which == 2 || (event.which == 1 && event.metaKey);

-      case 2: return event.which == 3;

-      default: return false;

-    }

-  }

-

-  if (window.attachEvent) {

-    if (!window.addEventListener) {

-      _isButton = _isButtonForLegacyEvents;

-    } else {

-      _isButton = function(event, code) {

-        return isIELegacyEvent(event) ? _isButtonForLegacyEvents(event, code) :

-         _isButtonForDOMEvents(event, code);

-      }

-    }

-  } else if (Prototype.Browser.WebKit) {

-    _isButton = _isButtonForWebKit;

-  } else {

-    _isButton = _isButtonForDOMEvents;

-  }

-

-  function isLeftClick(event)   { return _isButton(event, 0) }

-

-  function isMiddleClick(event) { return _isButton(event, 1) }

-

-  function isRightClick(event)  { return _isButton(event, 2) }

-

-  function element(event) {

-    event = Event.extend(event);

-

-    var node = event.target, type = event.type,

-     currentTarget = event.currentTarget;

-

-    if (currentTarget && currentTarget.tagName) {

-      if (type === 'load' || type === 'error' ||

-        (type === 'click' && currentTarget.tagName.toLowerCase() === 'input'

-          && currentTarget.type === 'radio'))

-            node = currentTarget;

-    }

-

-    if (node.nodeType == Node.TEXT_NODE)

-      node = node.parentNode;

-

-    return Element.extend(node);

-  }

-

-  function findElement(event, expression) {

-    var element = Event.element(event);

-

-    if (!expression) return element;

-    while (element) {

-      if (Object.isElement(element) && Prototype.Selector.match(element, expression)) {

-        return Element.extend(element);

-      }

-      element = element.parentNode;

-    }

-  }

-

-  function pointer(event) {

-    return { x: pointerX(event), y: pointerY(event) };

-  }

-

-  function pointerX(event) {

-    var docElement = document.documentElement,

-     body = document.body || { scrollLeft: 0 };

-

-    return event.pageX || (event.clientX +

-      (docElement.scrollLeft || body.scrollLeft) -

-      (docElement.clientLeft || 0));

-  }

-

-  function pointerY(event) {

-    var docElement = document.documentElement,

-     body = document.body || { scrollTop: 0 };

-

-    return  event.pageY || (event.clientY +

-       (docElement.scrollTop || body.scrollTop) -

-       (docElement.clientTop || 0));

-  }

-

-

-  function stop(event) {

-    Event.extend(event);

-    event.preventDefault();

-    event.stopPropagation();

-

-    event.stopped = true;

-  }

-

-

-  Event.Methods = {

-    isLeftClick:   isLeftClick,

-    isMiddleClick: isMiddleClick,

-    isRightClick:  isRightClick,

-

-    element:     element,

-    findElement: findElement,

-

-    pointer:  pointer,

-    pointerX: pointerX,

-    pointerY: pointerY,

-

-    stop: stop

-  };

-

-  var methods = Object.keys(Event.Methods).inject({ }, function(m, name) {

-    m[name] = Event.Methods[name].methodize();

-    return m;

-  });

-

-  if (window.attachEvent) {

-    function _relatedTarget(event) {

-      var element;

-      switch (event.type) {

-        case 'mouseover':

-        case 'mouseenter':

-          element = event.fromElement;

-          break;

-        case 'mouseout':

-        case 'mouseleave':

-          element = event.toElement;

-          break;

-        default:

-          return null;

-      }

-      return Element.extend(element);

-    }

-

-    var additionalMethods = {

-      stopPropagation: function() { this.cancelBubble = true },

-      preventDefault:  function() { this.returnValue = false },

-      inspect: function() { return '[object Event]' }

-    };

-

-    Event.extend = function(event, element) {

-      if (!event) return false;

-

-      if (!isIELegacyEvent(event)) return event;

-

-      if (event._extendedByPrototype) return event;

-      event._extendedByPrototype = Prototype.emptyFunction;

-

-      var pointer = Event.pointer(event);

-

-      Object.extend(event, {

-        target: event.srcElement || element,

-        relatedTarget: _relatedTarget(event),

-        pageX:  pointer.x,

-        pageY:  pointer.y

-      });

-

-      Object.extend(event, methods);

-      Object.extend(event, additionalMethods);

-

-      return event;

-    };

-  } else {

-    Event.extend = Prototype.K;

-  }

-

-  if (window.addEventListener) {

-    Event.prototype = window.Event.prototype || document.createEvent('HTMLEvents').__proto__;

-    Object.extend(Event.prototype, methods);

-  }

-

-  function _createResponder(element, eventName, handler) {

-    var registry = Element.retrieve(element, 'prototype_event_registry');

-

-    if (Object.isUndefined(registry)) {

-      CACHE.push(element);

-      registry = Element.retrieve(element, 'prototype_event_registry', $H());

-    }

-

-    var respondersForEvent = registry.get(eventName);

-    if (Object.isUndefined(respondersForEvent)) {

-      respondersForEvent = [];

-      registry.set(eventName, respondersForEvent);

-    }

-

-    if (respondersForEvent.pluck('handler').include(handler)) return false;

-

-    var responder;

-    if (eventName.include(":")) {

-      responder = function(event) {

-        if (Object.isUndefined(event.eventName))

-          return false;

-

-        if (event.eventName !== eventName)

-          return false;

-

-        Event.extend(event, element);

-        handler.call(element, event);

-      };

-    } else {

-      if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED &&

-       (eventName === "mouseenter" || eventName === "mouseleave")) {

-        if (eventName === "mouseenter" || eventName === "mouseleave") {

-          responder = function(event) {

-            Event.extend(event, element);

-

-            var parent = event.relatedTarget;

-            while (parent && parent !== element) {

-              try { parent = parent.parentNode; }

-              catch(e) { parent = element; }

-            }

-

-            if (parent === element) return;

-

-            handler.call(element, event);

-          };

-        }

-      } else {

-        responder = function(event) {

-          Event.extend(event, element);

-          handler.call(element, event);

-        };

-      }

-    }

-

-    responder.handler = handler;

-    respondersForEvent.push(responder);

-    return responder;

-  }

-

-  function _destroyCache() {

-    for (var i = 0, length = CACHE.length; i < length; i++) {

-      Event.stopObserving(CACHE[i]);

-      CACHE[i] = null;

-    }

-  }

-

-  var CACHE = [];

-

-  if (Prototype.Browser.IE)

-    window.attachEvent('onunload', _destroyCache);

-

-  if (Prototype.Browser.WebKit)

-    window.addEventListener('unload', Prototype.emptyFunction, false);

-

-

-  var _getDOMEventName = Prototype.K,

-      translations = { mouseenter: "mouseover", mouseleave: "mouseout" };

-

-  if (!MOUSEENTER_MOUSELEAVE_EVENTS_SUPPORTED) {

-    _getDOMEventName = function(eventName) {

-      return (translations[eventName] || eventName);

-    };

-  }

-

-  function observe(element, eventName, handler) {

-    element = $(element);

-

-    var responder = _createResponder(element, eventName, handler);

-

-    if (!responder) return element;

-

-    if (eventName.include(':')) {

-      if (element.addEventListener)

-        element.addEventListener("dataavailable", responder, false);

-      else {

-        element.attachEvent("ondataavailable", responder);

-        element.attachEvent("onlosecapture", responder);

-      }

-    } else {

-      var actualEventName = _getDOMEventName(eventName);

-

-      if (element.addEventListener)

-        element.addEventListener(actualEventName, responder, false);

-      else

-        element.attachEvent("on" + actualEventName, responder);

-    }

-

-    return element;

-  }

-

-  function stopObserving(element, eventName, handler) {

-    element = $(element);

-

-    var registry = Element.retrieve(element, 'prototype_event_registry');

-    if (!registry) return element;

-

-    if (!eventName) {

-      registry.each( function(pair) {

-        var eventName = pair.key;

-        stopObserving(element, eventName);

-      });

-      return element;

-    }

-

-    var responders = registry.get(eventName);

-    if (!responders) return element;

-

-    if (!handler) {

-      responders.each(function(r) {

-        stopObserving(element, eventName, r.handler);

-      });

-      return element;

-    }

-

-    var i = responders.length, responder;

-    while (i--) {

-      if (responders[i].handler === handler) {

-        responder = responders[i];

-        break;

-      }

-    }

-    if (!responder) return element;

-

-    if (eventName.include(':')) {

-      if (element.removeEventListener)

-        element.removeEventListener("dataavailable", responder, false);

-      else {

-        element.detachEvent("ondataavailable", responder);

-        element.detachEvent("onlosecapture", responder);

-      }

-    } else {

-      var actualEventName = _getDOMEventName(eventName);

-      if (element.removeEventListener)

-        element.removeEventListener(actualEventName, responder, false);

-      else

-        element.detachEvent('on' + actualEventName, responder);

-    }

-

-    registry.set(eventName, responders.without(responder));

-

-    return element;

-  }

-

-  function fire(element, eventName, memo, bubble) {

-    element = $(element);

-

-    if (Object.isUndefined(bubble))

-      bubble = true;

-

-    if (element == document && document.createEvent && !element.dispatchEvent)

-      element = document.documentElement;

-

-    var event;

-    if (document.createEvent) {

-      event = document.createEvent('HTMLEvents');

-      event.initEvent('dataavailable', bubble, true);

-    } else {

-      event = document.createEventObject();

-      event.eventType = bubble ? 'ondataavailable' : 'onlosecapture';

-    }

-

-    event.eventName = eventName;

-    event.memo = memo || { };

-

-    if (document.createEvent)

-      element.dispatchEvent(event);

-    else

-      element.fireEvent(event.eventType, event);

-

-    return Event.extend(event);

-  }

-

-  Event.Handler = Class.create({

-    initialize: function(element, eventName, selector, callback) {

-      this.element   = $(element);

-      this.eventName = eventName;

-      this.selector  = selector;

-      this.callback  = callback;

-      this.handler   = this.handleEvent.bind(this);

-    },

-

-    start: function() {

-      Event.observe(this.element, this.eventName, this.handler);

-      return this;

-    },

-

-    stop: function() {

-      Event.stopObserving(this.element, this.eventName, this.handler);

-      return this;

-    },

-

-    handleEvent: function(event) {

-      var element = Event.findElement(event, this.selector);

-      if (element) this.callback.call(this.element, event, element);

-    }

-  });

-

-  function on(element, eventName, selector, callback) {

-    element = $(element);

-    if (Object.isFunction(selector) && Object.isUndefined(callback)) {

-      callback = selector, selector = null;

-    }

-

-    return new Event.Handler(element, eventName, selector, callback).start();

-  }

-

-  Object.extend(Event, Event.Methods);

-

-  Object.extend(Event, {

-    fire:          fire,

-    observe:       observe,

-    stopObserving: stopObserving,

-    on:            on

-  });

-

-  Element.addMethods({

-    fire:          fire,

-

-    observe:       observe,

-

-    stopObserving: stopObserving,

-

-    on:            on

-  });

-

-  Object.extend(document, {

-    fire:          fire.methodize(),

-

-    observe:       observe.methodize(),

-

-    stopObserving: stopObserving.methodize(),

-

-    on:            on.methodize(),

-

-    loaded:        false

-  });

-

-  if (window.Event) Object.extend(window.Event, Event);

-  else window.Event = Event;

-})();

-

-(function() {

-  /* Support for the DOMContentLoaded event is based on work by Dan Webb,

-     Matthias Miller, Dean Edwards, John Resig, and Diego Perini. */

-

-  var timer;

-

-  function fireContentLoadedEvent() {

-    if (document.loaded) return;

-    if (timer) window.clearTimeout(timer);

-    document.loaded = true;

-    document.fire('dom:loaded');

-  }

-

-  function checkReadyState() {

-    if (document.readyState === 'complete') {

-      document.stopObserving('readystatechange', checkReadyState);

-      fireContentLoadedEvent();

-    }

-  }

-

-  function pollDoScroll() {

-    try { document.documentElement.doScroll('left'); }

-    catch(e) {

-      timer = pollDoScroll.defer();

-      return;

-    }

-    fireContentLoadedEvent();

-  }

-

-  if (document.addEventListener) {

-    document.addEventListener('DOMContentLoaded', fireContentLoadedEvent, false);

-  } else {

-    document.observe('readystatechange', checkReadyState);

-    if (window == top)

-      timer = pollDoScroll.defer();

-  }

-

-  Event.observe(window, 'load', fireContentLoadedEvent);

-})();

-

-Element.addMethods();

-

-/*------------------------------- DEPRECATED -------------------------------*/

-

-Hash.toQueryString = Object.toQueryString;

-

-var Toggle = { display: Element.toggle };

-

-Element.Methods.childOf = Element.Methods.descendantOf;

-

-var Insertion = {

-  Before: function(element, content) {

-    return Element.insert(element, {before:content});

-  },

-

-  Top: function(element, content) {

-    return Element.insert(element, {top:content});

-  },

-

-  Bottom: function(element, content) {

-    return Element.insert(element, {bottom:content});

-  },

-

-  After: function(element, content) {

-    return Element.insert(element, {after:content});

-  }

-};

-

-var $continue = new Error('"throw $continue" is deprecated, use "return" instead');

-

-var Position = {

-  includeScrollOffsets: false,

-

-  prepare: function() {

-    this.deltaX =  window.pageXOffset

-                || document.documentElement.scrollLeft

-                || document.body.scrollLeft

-                || 0;

-    this.deltaY =  window.pageYOffset

-                || document.documentElement.scrollTop

-                || document.body.scrollTop

-                || 0;

-  },

-

-  within: function(element, x, y) {

-    if (this.includeScrollOffsets)

-      return this.withinIncludingScrolloffsets(element, x, y);

-    this.xcomp = x;

-    this.ycomp = y;

-    this.offset = Element.cumulativeOffset(element);

-

-    return (y >= this.offset[1] &&

-            y <  this.offset[1] + element.offsetHeight &&

-            x >= this.offset[0] &&

-            x <  this.offset[0] + element.offsetWidth);

-  },

-

-  withinIncludingScrolloffsets: function(element, x, y) {

-    var offsetcache = Element.cumulativeScrollOffset(element);

-

-    this.xcomp = x + offsetcache[0] - this.deltaX;

-    this.ycomp = y + offsetcache[1] - this.deltaY;

-    this.offset = Element.cumulativeOffset(element);

-

-    return (this.ycomp >= this.offset[1] &&

-            this.ycomp <  this.offset[1] + element.offsetHeight &&

-            this.xcomp >= this.offset[0] &&

-            this.xcomp <  this.offset[0] + element.offsetWidth);

-  },

-

-  overlap: function(mode, element) {

-    if (!mode) return 0;

-    if (mode == 'vertical')

-      return ((this.offset[1] + element.offsetHeight) - this.ycomp) /

-        element.offsetHeight;

-    if (mode == 'horizontal')

-      return ((this.offset[0] + element.offsetWidth) - this.xcomp) /

-        element.offsetWidth;

-  },

-

-

-  cumulativeOffset: Element.Methods.cumulativeOffset,

-

-  positionedOffset: Element.Methods.positionedOffset,

-

-  absolutize: function(element) {

-    Position.prepare();

-    return Element.absolutize(element);

-  },

-

-  relativize: function(element) {

-    Position.prepare();

-    return Element.relativize(element);

-  },

-

-  realOffset: Element.Methods.cumulativeScrollOffset,

-

-  offsetParent: Element.Methods.getOffsetParent,

-

-  page: Element.Methods.viewportOffset,

-

-  clone: function(source, target, options) {

-    options = options || { };

-    return Element.clonePosition(target, source, options);

-  }

-};

-

-/*--------------------------------------------------------------------------*/

-

-if (!document.getElementsByClassName) document.getElementsByClassName = function(instanceMethods){

-  function iter(name) {

-    return name.blank() ? null : "[contains(concat(' ', @class, ' '), ' " + name + " ')]";

-  }

-

-  instanceMethods.getElementsByClassName = Prototype.BrowserFeatures.XPath ?

-  function(element, className) {

-    className = className.toString().strip();

-    var cond = /\s/.test(className) ? $w(className).map(iter).join('') : iter(className);

-    return cond ? document._getElementsByXPath('.//*' + cond, element) : [];

-  } : function(element, className) {

-    className = className.toString().strip();

-    var elements = [], classNames = (/\s/.test(className) ? $w(className) : null);

-    if (!classNames && !className) return elements;

-

-    var nodes = $(element).getElementsByTagName('*');

-    className = ' ' + className + ' ';

-

-    for (var i = 0, child, cn; child = nodes[i]; i++) {

-      if (child.className && (cn = ' ' + child.className + ' ') && (cn.include(className) ||

-          (classNames && classNames.all(function(name) {

-            return !name.toString().blank() && cn.include(' ' + name + ' ');

-          }))))

-        elements.push(Element.extend(child));

-    }

-    return elements;

-  };

-

-  return function(className, parentElement) {

-    return $(parentElement || document.body).getElementsByClassName(className);

-  };

-}(Element.Methods);

-

-/*--------------------------------------------------------------------------*/

-

-Element.ClassNames = Class.create();

-Element.ClassNames.prototype = {

-  initialize: function(element) {

-    this.element = $(element);

-  },

-

-  _each: function(iterator) {

-    this.element.className.split(/\s+/).select(function(name) {

-      return name.length > 0;

-    })._each(iterator);

-  },

-

-  set: function(className) {

-    this.element.className = className;

-  },

-

-  add: function(classNameToAdd) {

-    if (this.include(classNameToAdd)) return;

-    this.set($A(this).concat(classNameToAdd).join(' '));

-  },

-

-  remove: function(classNameToRemove) {

-    if (!this.include(classNameToRemove)) return;

-    this.set($A(this).without(classNameToRemove).join(' '));

-  },

-

-  toString: function() {

-    return $A(this).join(' ');

-  }

-};

-

-Object.extend(Element.ClassNames.prototype, Enumerable);

-

-/*--------------------------------------------------------------------------*/

-

-(function() {

-  window.Selector = Class.create({

-    initialize: function(expression) {

-      this.expression = expression.strip();

-    },

-

-    findElements: function(rootElement) {

-      return Prototype.Selector.select(this.expression, rootElement);

-    },

-

-    match: function(element) {

-      return Prototype.Selector.match(element, this.expression);

-    },

-

-    toString: function() {

-      return this.expression;

-    },

-

-    inspect: function() {

-      return "#<Selector: " + this.expression + ">";

-    }

-  });

-

-  Object.extend(Selector, {

-    matchElements: function(elements, expression) {

-      var match = Prototype.Selector.match,

-          results = [];

-

-      for (var i = 0, length = elements.length; i < length; i++) {

-        var element = elements[i];

-        if (match(element, expression)) {

-          results.push(Element.extend(element));

-        }

-      }

-      return results;

-    },

-

-    findElement: function(elements, expression, index) {

-      index = index || 0;

-      var matchIndex = 0, element;

-      for (var i = 0, length = elements.length; i < length; i++) {

-        element = elements[i];

-        if (Prototype.Selector.match(element, expression) && index === matchIndex++) {

-          return Element.extend(element);

-        }

-      }

-    },

-

-    findChildElements: function(element, expressions) {

-      var selector = expressions.toArray().join(', ');

-      return Prototype.Selector.select(selector, element || document);

-    }

-  });

-})();

diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/scriptaculous.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/scriptaculous.js
deleted file mode 100644
index 6c61b1f..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/scriptaculous.js
+++ /dev/null
@@ -1,70 +0,0 @@
-// script.aculo.us scriptaculous.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-//

-// Permission is hereby granted, free of charge, to any person obtaining

-// a copy of this software and associated documentation files (the

-// "Software"), to deal in the Software without restriction, including

-// without limitation the rights to use, copy, modify, merge, publish,

-// distribute, sublicense, and/or sell copies of the Software, and to

-// permit persons to whom the Software is furnished to do so, subject to

-// the following conditions:

-//

-// The above copyright notice and this permission notice shall be

-// included in all copies or substantial portions of the Software.

-//

-// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,

-// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF

-// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND

-// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE

-// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION

-// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION

-// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

-//

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-var Scriptaculous = {

-  Version: '1.9.0',

-  require: function(libraryName) {

-    try{

-      // inserting via DOM fails in Safari 2.0, so brute force approach

-      document.write('<script type="text/javascript" src="'+libraryName+'"><\/script>');

-    } catch(e) {

-      // for xhtml+xml served content, fall back to DOM methods

-      var script = document.createElement('script');

-      script.type = 'text/javascript';

-      script.src = libraryName;

-      document.getElementsByTagName('head')[0].appendChild(script);

-    }

-  },

-  REQUIRED_PROTOTYPE: '1.6.0.3',

-  load: function() {

-    function convertVersionString(versionString) {

-      var v = versionString.replace(/_.*|\./g, '');

-      v = parseInt(v + '0'.times(4-v.length));

-      return versionString.indexOf('_') > -1 ? v-1 : v;

-    }

-

-    if((typeof Prototype=='undefined') ||

-       (typeof Element == 'undefined') ||

-       (typeof Element.Methods=='undefined') ||

-       (convertVersionString(Prototype.Version) <

-        convertVersionString(Scriptaculous.REQUIRED_PROTOTYPE)))

-       throw("script.aculo.us requires the Prototype JavaScript framework >= " +

-        Scriptaculous.REQUIRED_PROTOTYPE);

-

-// Tapestry turns off this mechanism, and replaces it with RenderSupport.addScriptLink().

-

-//    var js = /scriptaculous\.js(\?.*)?$/;

-//    $$('head script[src]').findAll(function(s) {

-//      return s.src.match(js);

-//    }).each(function(s) {

-//      var path = s.src.replace(js, ''),

-//      includes = s.src.match(/\?.*load=([a-z,]*)/);

-//      (includes ? includes[1] : 'builder,effects,dragdrop,controls,slider,sound').split(',').each(

-//       function(include) { Scriptaculous.require(path+include+'.js') });

-//    });

-  }

-};

-

-Scriptaculous.load();
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/slider.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/slider.js
deleted file mode 100644
index a3506b2..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/slider.js
+++ /dev/null
@@ -1,275 +0,0 @@
-// script.aculo.us slider.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Marty Haught, Thomas Fuchs

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-if (!Control) var Control = { };

-

-// options:

-//  axis: 'vertical', or 'horizontal' (default)

-//

-// callbacks:

-//  onChange(value)

-//  onSlide(value)

-Control.Slider = Class.create({

-  initialize: function(handle, track, options) {

-    var slider = this;

-

-    if (Object.isArray(handle)) {

-      this.handles = handle.collect( function(e) { return $(e) });

-    } else {

-      this.handles = [$(handle)];

-    }

-

-    this.track   = $(track);

-    this.options = options || { };

-

-    this.axis      = this.options.axis || 'horizontal';

-    this.increment = this.options.increment || 1;

-    this.step      = parseInt(this.options.step || '1');

-    this.range     = this.options.range || $R(0,1);

-

-    this.value     = 0; // assure backwards compat

-    this.values    = this.handles.map( function() { return 0 });

-    this.spans     = this.options.spans ? this.options.spans.map(function(s){ return $(s) }) : false;

-    this.options.startSpan = $(this.options.startSpan || null);

-    this.options.endSpan   = $(this.options.endSpan || null);

-

-    this.restricted = this.options.restricted || false;

-

-    this.maximum   = this.options.maximum || this.range.end;

-    this.minimum   = this.options.minimum || this.range.start;

-

-    // Will be used to align the handle onto the track, if necessary

-    this.alignX = parseInt(this.options.alignX || '0');

-    this.alignY = parseInt(this.options.alignY || '0');

-

-    this.trackLength = this.maximumOffset() - this.minimumOffset();

-

-    this.handleLength = this.isVertical() ?

-      (this.handles[0].offsetHeight != 0 ?

-        this.handles[0].offsetHeight : this.handles[0].style.height.replace(/px$/,"")) :

-      (this.handles[0].offsetWidth != 0 ? this.handles[0].offsetWidth :

-        this.handles[0].style.width.replace(/px$/,""));

-

-    this.active   = false;

-    this.dragging = false;

-    this.disabled = false;

-

-    if (this.options.disabled) this.setDisabled();

-

-    // Allowed values array

-    this.allowedValues = this.options.values ? this.options.values.sortBy(Prototype.K) : false;

-    if (this.allowedValues) {

-      this.minimum = this.allowedValues.min();

-      this.maximum = this.allowedValues.max();

-    }

-

-    this.eventMouseDown = this.startDrag.bindAsEventListener(this);

-    this.eventMouseUp   = this.endDrag.bindAsEventListener(this);

-    this.eventMouseMove = this.update.bindAsEventListener(this);

-

-    // Initialize handles in reverse (make sure first handle is active)

-    this.handles.each( function(h,i) {

-      i = slider.handles.length-1-i;

-      slider.setValue(parseFloat(

-        (Object.isArray(slider.options.sliderValue) ?

-          slider.options.sliderValue[i] : slider.options.sliderValue) ||

-         slider.range.start), i);

-      h.makePositioned().observe("mousedown", slider.eventMouseDown);

-    });

-

-    this.track.observe("mousedown", this.eventMouseDown);

-    document.observe("mouseup", this.eventMouseUp);

-    document.observe("mousemove", this.eventMouseMove);

-

-    this.initialized = true;

-  },

-  dispose: function() {

-    var slider = this;

-    Event.stopObserving(this.track, "mousedown", this.eventMouseDown);

-    Event.stopObserving(document, "mouseup", this.eventMouseUp);

-    Event.stopObserving(document, "mousemove", this.eventMouseMove);

-    this.handles.each( function(h) {

-      Event.stopObserving(h, "mousedown", slider.eventMouseDown);

-    });

-  },

-  setDisabled: function(){

-    this.disabled = true;

-  },

-  setEnabled: function(){

-    this.disabled = false;

-  },

-  getNearestValue: function(value){

-    if (this.allowedValues){

-      if (value >= this.allowedValues.max()) return(this.allowedValues.max());

-      if (value <= this.allowedValues.min()) return(this.allowedValues.min());

-

-      var offset = Math.abs(this.allowedValues[0] - value);

-      var newValue = this.allowedValues[0];

-      this.allowedValues.each( function(v) {

-        var currentOffset = Math.abs(v - value);

-        if (currentOffset <= offset){

-          newValue = v;

-          offset = currentOffset;

-        }

-      });

-      return newValue;

-    }

-    if (value > this.range.end) return this.range.end;

-    if (value < this.range.start) return this.range.start;

-    return value;

-  },

-  setValue: function(sliderValue, handleIdx){

-    if (!this.active) {

-      this.activeHandleIdx = handleIdx || 0;

-      this.activeHandle    = this.handles[this.activeHandleIdx];

-      this.updateStyles();

-    }

-    handleIdx = handleIdx || this.activeHandleIdx || 0;

-    if (this.initialized && this.restricted) {

-      if ((handleIdx>0) && (sliderValue<this.values[handleIdx-1]))

-        sliderValue = this.values[handleIdx-1];

-      if ((handleIdx < (this.handles.length-1)) && (sliderValue>this.values[handleIdx+1]))

-        sliderValue = this.values[handleIdx+1];

-    }

-    sliderValue = this.getNearestValue(sliderValue);

-    this.values[handleIdx] = sliderValue;

-    this.value = this.values[0]; // assure backwards compat

-

-    this.handles[handleIdx].style[this.isVertical() ? 'top' : 'left'] =

-      this.translateToPx(sliderValue);

-

-    this.drawSpans();

-    if (!this.dragging || !this.event) this.updateFinished();

-  },

-  setValueBy: function(delta, handleIdx) {

-    this.setValue(this.values[handleIdx || this.activeHandleIdx || 0] + delta,

-      handleIdx || this.activeHandleIdx || 0);

-  },

-  translateToPx: function(value) {

-    return Math.round(

-      ((this.trackLength-this.handleLength)/(this.range.end-this.range.start)) *

-      (value - this.range.start)) + "px";

-  },

-  translateToValue: function(offset) {

-    return ((offset/(this.trackLength-this.handleLength) *

-      (this.range.end-this.range.start)) + this.range.start);

-  },

-  getRange: function(range) {

-    var v = this.values.sortBy(Prototype.K);

-    range = range || 0;

-    return $R(v[range],v[range+1]);

-  },

-  minimumOffset: function(){

-    return(this.isVertical() ? this.alignY : this.alignX);

-  },

-  maximumOffset: function(){

-    return(this.isVertical() ?

-      (this.track.offsetHeight != 0 ? this.track.offsetHeight :

-        this.track.style.height.replace(/px$/,"")) - this.alignY :

-      (this.track.offsetWidth != 0 ? this.track.offsetWidth :

-        this.track.style.width.replace(/px$/,"")) - this.alignX);

-  },

-  isVertical:  function(){

-    return (this.axis == 'vertical');

-  },

-  drawSpans: function() {

-    var slider = this;

-    if (this.spans)

-      $R(0, this.spans.length-1).each(function(r) { slider.setSpan(slider.spans[r], slider.getRange(r)) });

-    if (this.options.startSpan)

-      this.setSpan(this.options.startSpan,

-        $R(0, this.values.length>1 ? this.getRange(0).min() : this.value ));

-    if (this.options.endSpan)

-      this.setSpan(this.options.endSpan,

-        $R(this.values.length>1 ? this.getRange(this.spans.length-1).max() : this.value, this.maximum));

-  },

-  setSpan: function(span, range) {

-    if (this.isVertical()) {

-      span.style.top = this.translateToPx(range.start);

-      span.style.height = this.translateToPx(range.end - range.start + this.range.start);

-    } else {

-      span.style.left = this.translateToPx(range.start);

-      span.style.width = this.translateToPx(range.end - range.start + this.range.start);

-    }

-  },

-  updateStyles: function() {

-    this.handles.each( function(h){ Element.removeClassName(h, 'selected') });

-    Element.addClassName(this.activeHandle, 'selected');

-  },

-  startDrag: function(event) {

-    if (Event.isLeftClick(event)) {

-      if (!this.disabled){

-        this.active = true;

-

-        var handle = Event.element(event);

-        var pointer  = [Event.pointerX(event), Event.pointerY(event)];

-        var track = handle;

-        if (track==this.track) {

-          var offsets  = this.track.cumulativeOffset();

-          this.event = event;

-          this.setValue(this.translateToValue(

-           (this.isVertical() ? pointer[1]-offsets[1] : pointer[0]-offsets[0])-(this.handleLength/2)

-          ));

-          var offsets  = this.activeHandle.cumulativeOffset();

-          this.offsetX = (pointer[0] - offsets[0]);

-          this.offsetY = (pointer[1] - offsets[1]);

-        } else {

-          // find the handle (prevents issues with Safari)

-          while((this.handles.indexOf(handle) == -1) && handle.parentNode)

-            handle = handle.parentNode;

-

-          if (this.handles.indexOf(handle)!=-1) {

-            this.activeHandle    = handle;

-            this.activeHandleIdx = this.handles.indexOf(this.activeHandle);

-            this.updateStyles();

-

-            var offsets  = this.activeHandle.cumulativeOffset();

-            this.offsetX = (pointer[0] - offsets[0]);

-            this.offsetY = (pointer[1] - offsets[1]);

-          }

-        }

-      }

-      Event.stop(event);

-    }

-  },

-  update: function(event) {

-   if (this.active) {

-      if (!this.dragging) this.dragging = true;

-      this.draw(event);

-      if (Prototype.Browser.WebKit) window.scrollBy(0,0);

-      Event.stop(event);

-   }

-  },

-  draw: function(event) {

-    var pointer = [Event.pointerX(event), Event.pointerY(event)];

-    var offsets = this.track.cumulativeOffset();

-    pointer[0] -= this.offsetX + offsets[0];

-    pointer[1] -= this.offsetY + offsets[1];

-    this.event = event;

-    this.setValue(this.translateToValue( this.isVertical() ? pointer[1] : pointer[0] ));

-    if (this.initialized && this.options.onSlide)

-      this.options.onSlide(this.values.length>1 ? this.values : this.value, this);

-  },

-  endDrag: function(event) {

-    if (this.active && this.dragging) {

-      this.finishDrag(event, true);

-      Event.stop(event);

-    }

-    this.active = false;

-    this.dragging = false;

-  },

-  finishDrag: function(event, success) {

-    this.active = false;

-    this.dragging = false;

-    this.updateFinished();

-  },

-  updateFinished: function() {

-    if (this.initialized && this.options.onChange)

-      this.options.onChange(this.values.length>1 ? this.values : this.value, this);

-    this.event = null;

-  }

-});
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/sound.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/sound.js
deleted file mode 100644
index 60b710e..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/sound.js
+++ /dev/null
@@ -1,59 +0,0 @@
-// script.aculo.us sound.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-//

-// Based on code created by Jules Gravinese (http://www.webveteran.com/)

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-Sound = {

-  tracks: {},

-  _enabled: true,

-  template:

-    new Template('<embed style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>'),

-  enable: function(){

-    Sound._enabled = true;

-  },

-  disable: function(){

-    Sound._enabled = false;

-  },

-  play: function(url){

-    if(!Sound._enabled) return;

-    var options = Object.extend({

-      track: 'global', url: url, replace: false

-    }, arguments[1] || {});

-

-    if(options.replace && this.tracks[options.track]) {

-      $R(0, this.tracks[options.track].id).each(function(id){

-        var sound = $('sound_'+options.track+'_'+id);

-        sound.Stop && sound.Stop();

-        sound.remove();

-      });

-      this.tracks[options.track] = null;

-    }

-

-    if(!this.tracks[options.track])

-      this.tracks[options.track] = { id: 0 };

-    else

-      this.tracks[options.track].id++;

-

-    options.id = this.tracks[options.track].id;

-    $$('body')[0].insert(

-      Prototype.Browser.IE ? new Element('bgsound',{

-        id: 'sound_'+options.track+'_'+options.id,

-        src: options.url, loop: 1, autostart: true

-      }) : Sound.template.evaluate(options));

-  }

-};

-

-if(Prototype.Browser.Gecko && navigator.userAgent.indexOf("Win") > 0){

-  if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('QuickTime') != -1 }))

-    Sound.template = new Template('<object id="sound_#{track}_#{id}" width="0" height="0" type="audio/mpeg" data="#{url}"/>');

-  else if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('Windows Media') != -1 }))

-    Sound.template = new Template('<object id="sound_#{track}_#{id}" type="application/x-mplayer2" data="#{url}"></object>');

-  else if(navigator.plugins && $A(navigator.plugins).detect(function(p){ return p.name.indexOf('RealPlayer') != -1 }))

-    Sound.template = new Template('<embed type="audio/x-pn-realaudio-plugin" style="height:0" id="sound_#{track}_#{id}" src="#{url}" loop="false" autostart="true" hidden="true"/>');

-  else

-    Sound.play = function(){};

-} 
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/unittest.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/unittest.js
deleted file mode 100644
index e59d58f..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/scriptaculous_1_9_0/unittest.js
+++ /dev/null
@@ -1,568 +0,0 @@
-// script.aculo.us unittest.js v1.9.0, Thu Dec 23 16:54:48 -0500 2010

-

-// Copyright (c) 2005-2010 Thomas Fuchs (http://script.aculo.us, http://mir.aculo.us)

-//           (c) 2005-2010 Jon Tirsen (http://www.tirsen.com)

-//           (c) 2005-2010 Michael Schuerig (http://www.schuerig.de/michael/)

-//

-// script.aculo.us is freely distributable under the terms of an MIT-style license.

-// For details, see the script.aculo.us web site: http://script.aculo.us/

-

-// experimental, Firefox-only

-Event.simulateMouse = function(element, eventName) {

-  var options = Object.extend({

-    pointerX: 0,

-    pointerY: 0,

-    buttons:  0,

-    ctrlKey:  false,

-    altKey:   false,

-    shiftKey: false,

-    metaKey:  false

-  }, arguments[2] || {});

-  var oEvent = document.createEvent("MouseEvents");

-  oEvent.initMouseEvent(eventName, true, true, document.defaultView, 

-    options.buttons, options.pointerX, options.pointerY, options.pointerX, options.pointerY, 

-    options.ctrlKey, options.altKey, options.shiftKey, options.metaKey, 0, $(element));

-  

-  if(this.mark) Element.remove(this.mark);

-  this.mark = document.createElement('div');

-  this.mark.appendChild(document.createTextNode(" "));

-  document.body.appendChild(this.mark);

-  this.mark.style.position = 'absolute';

-  this.mark.style.top = options.pointerY + "px";

-  this.mark.style.left = options.pointerX + "px";

-  this.mark.style.width = "5px";

-  this.mark.style.height = "5px;";

-  this.mark.style.borderTop = "1px solid red;";

-  this.mark.style.borderLeft = "1px solid red;";

-  

-  if(this.step)

-    alert('['+new Date().getTime().toString()+'] '+eventName+'/'+Test.Unit.inspect(options));

-  

-  $(element).dispatchEvent(oEvent);

-};

-

-// Note: Due to a fix in Firefox 1.0.5/6 that probably fixed "too much", this doesn't work in 1.0.6 or DP2.

-// You need to downgrade to 1.0.4 for now to get this working

-// See https://bugzilla.mozilla.org/show_bug.cgi?id=289940 for the fix that fixed too much

-Event.simulateKey = function(element, eventName) {

-  var options = Object.extend({

-    ctrlKey: false,

-    altKey: false,

-    shiftKey: false,

-    metaKey: false,

-    keyCode: 0,

-    charCode: 0

-  }, arguments[2] || {});

-

-  var oEvent = document.createEvent("KeyEvents");

-  oEvent.initKeyEvent(eventName, true, true, window, 

-    options.ctrlKey, options.altKey, options.shiftKey, options.metaKey,

-    options.keyCode, options.charCode );

-  $(element).dispatchEvent(oEvent);

-};

-

-Event.simulateKeys = function(element, command) {

-  for(var i=0; i<command.length; i++) {

-    Event.simulateKey(element,'keypress',{charCode:command.charCodeAt(i)});

-  }

-};

-

-var Test = {};

-Test.Unit = {};

-

-// security exception workaround

-Test.Unit.inspect = Object.inspect;

-

-Test.Unit.Logger = Class.create();

-Test.Unit.Logger.prototype = {

-  initialize: function(log) {

-    this.log = $(log);

-    if (this.log) {

-      this._createLogTable();

-    }

-  },

-  start: function(testName) {

-    if (!this.log) return;

-    this.testName = testName;

-    this.lastLogLine = document.createElement('tr');

-    this.statusCell = document.createElement('td');

-    this.nameCell = document.createElement('td');

-    this.nameCell.className = "nameCell";

-    this.nameCell.appendChild(document.createTextNode(testName));

-    this.messageCell = document.createElement('td');

-    this.lastLogLine.appendChild(this.statusCell);

-    this.lastLogLine.appendChild(this.nameCell);

-    this.lastLogLine.appendChild(this.messageCell);

-    this.loglines.appendChild(this.lastLogLine);

-  },

-  finish: function(status, summary) {

-    if (!this.log) return;

-    this.lastLogLine.className = status;

-    this.statusCell.innerHTML = status;

-    this.messageCell.innerHTML = this._toHTML(summary);

-    this.addLinksToResults();

-  },

-  message: function(message) {

-    if (!this.log) return;

-    this.messageCell.innerHTML = this._toHTML(message);

-  },

-  summary: function(summary) {

-    if (!this.log) return;

-    this.logsummary.innerHTML = this._toHTML(summary);

-  },

-  _createLogTable: function() {

-    this.log.innerHTML =

-    '<div id="logsummary"></div>' +

-    '<table id="logtable">' +

-    '<thead><tr><th>Status</th><th>Test</th><th>Message</th></tr></thead>' +

-    '<tbody id="loglines"></tbody>' +

-    '</table>';

-    this.logsummary = $('logsummary');

-    this.loglines = $('loglines');

-  },

-  _toHTML: function(txt) {

-    return txt.escapeHTML().replace(/\n/g,"<br/>");

-  },

-  addLinksToResults: function(){ 

-    $$("tr.failed .nameCell").each( function(td){ // todo: limit to children of this.log

-      td.title = "Run only this test";

-      Event.observe(td, 'click', function(){ window.location.search = "?tests=" + td.innerHTML;});

-    });

-    $$("tr.passed .nameCell").each( function(td){ // todo: limit to children of this.log

-      td.title = "Run all tests";

-      Event.observe(td, 'click', function(){ window.location.search = "";});

-    });

-  }

-};

-

-Test.Unit.Runner = Class.create();

-Test.Unit.Runner.prototype = {

-  initialize: function(testcases) {

-    this.options = Object.extend({

-      testLog: 'testlog'

-    }, arguments[1] || {});

-    this.options.resultsURL = this.parseResultsURLQueryParameter();

-    this.options.tests      = this.parseTestsQueryParameter();

-    if (this.options.testLog) {

-      this.options.testLog = $(this.options.testLog) || null;

-    }

-    if(this.options.tests) {

-      this.tests = [];

-      for(var i = 0; i < this.options.tests.length; i++) {

-        if(/^test/.test(this.options.tests[i])) {

-          this.tests.push(new Test.Unit.Testcase(this.options.tests[i], testcases[this.options.tests[i]], testcases["setup"], testcases["teardown"]));

-        }

-      }

-    } else {

-      if (this.options.test) {

-        this.tests = [new Test.Unit.Testcase(this.options.test, testcases[this.options.test], testcases["setup"], testcases["teardown"])];

-      } else {

-        this.tests = [];

-        for(var testcase in testcases) {

-          if(/^test/.test(testcase)) {

-            this.tests.push(

-               new Test.Unit.Testcase(

-                 this.options.context ? ' -> ' + this.options.titles[testcase] : testcase, 

-                 testcases[testcase], testcases["setup"], testcases["teardown"]

-               ));

-          }

-        }

-      }

-    }

-    this.currentTest = 0;

-    this.logger = new Test.Unit.Logger(this.options.testLog);

-    setTimeout(this.runTests.bind(this), 1000);

-  },

-  parseResultsURLQueryParameter: function() {

-    return window.location.search.parseQuery()["resultsURL"];

-  },

-  parseTestsQueryParameter: function(){

-    if (window.location.search.parseQuery()["tests"]){

-        return window.location.search.parseQuery()["tests"].split(',');

-    };

-  },

-  // Returns:

-  //  "ERROR" if there was an error,

-  //  "FAILURE" if there was a failure, or

-  //  "SUCCESS" if there was neither

-  getResult: function() {

-    var hasFailure = false;

-    for(var i=0;i<this.tests.length;i++) {

-      if (this.tests[i].errors > 0) {

-        return "ERROR";

-      }

-      if (this.tests[i].failures > 0) {

-        hasFailure = true;

-      }

-    }

-    if (hasFailure) {

-      return "FAILURE";

-    } else {

-      return "SUCCESS";

-    }

-  },

-  postResults: function() {

-    if (this.options.resultsURL) {

-      new Ajax.Request(this.options.resultsURL, 

-        { method: 'get', parameters: 'result=' + this.getResult(), asynchronous: false });

-    }

-  },

-  runTests: function() {

-    var test = this.tests[this.currentTest];

-    if (!test) {

-      // finished!

-      this.postResults();

-      this.logger.summary(this.summary());

-      return;

-    }

-    if(!test.isWaiting) {

-      this.logger.start(test.name);

-    }

-    test.run();

-    if(test.isWaiting) {

-      this.logger.message("Waiting for " + test.timeToWait + "ms");

-      setTimeout(this.runTests.bind(this), test.timeToWait || 1000);

-    } else {

-      this.logger.finish(test.status(), test.summary());

-      this.currentTest++;

-      // tail recursive, hopefully the browser will skip the stackframe

-      this.runTests();

-    }

-  },

-  summary: function() {

-    var assertions = 0;

-    var failures = 0;

-    var errors = 0;

-    var messages = [];

-    for(var i=0;i<this.tests.length;i++) {

-      assertions +=   this.tests[i].assertions;

-      failures   +=   this.tests[i].failures;

-      errors     +=   this.tests[i].errors;

-    }

-    return (

-      (this.options.context ? this.options.context + ': ': '') + 

-      this.tests.length + " tests, " + 

-      assertions + " assertions, " + 

-      failures   + " failures, " +

-      errors     + " errors");

-  }

-};

-

-Test.Unit.Assertions = Class.create();

-Test.Unit.Assertions.prototype = {

-  initialize: function() {

-    this.assertions = 0;

-    this.failures   = 0;

-    this.errors     = 0;

-    this.messages   = [];

-  },

-  summary: function() {

-    return (

-      this.assertions + " assertions, " + 

-      this.failures   + " failures, " +

-      this.errors     + " errors" + "\n" +

-      this.messages.join("\n"));

-  },

-  pass: function() {

-    this.assertions++;

-  },

-  fail: function(message) {

-    this.failures++;

-    this.messages.push("Failure: " + message);

-  },

-  info: function(message) {

-    this.messages.push("Info: " + message);

-  },

-  error: function(error) {

-    this.errors++;

-    this.messages.push(error.name + ": "+ error.message + "(" + Test.Unit.inspect(error) +")");

-  },

-  status: function() {

-    if (this.failures > 0) return 'failed';

-    if (this.errors > 0) return 'error';

-    return 'passed';

-  },

-  assert: function(expression) {

-    var message = arguments[1] || 'assert: got "' + Test.Unit.inspect(expression) + '"';

-    try { expression ? this.pass() : 

-      this.fail(message); }

-    catch(e) { this.error(e); }

-  },

-  assertEqual: function(expected, actual) {

-    var message = arguments[2] || "assertEqual";

-    try { (expected == actual) ? this.pass() :

-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) + 

-        '", actual "' + Test.Unit.inspect(actual) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertInspect: function(expected, actual) {

-    var message = arguments[2] || "assertInspect";

-    try { (expected == actual.inspect()) ? this.pass() :

-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) + 

-        '", actual "' + Test.Unit.inspect(actual) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertEnumEqual: function(expected, actual) {

-    var message = arguments[2] || "assertEnumEqual";

-    try { $A(expected).length == $A(actual).length && 

-      expected.zip(actual).all(function(pair) { return pair[0] == pair[1] }) ?

-        this.pass() : this.fail(message + ': expected ' + Test.Unit.inspect(expected) + 

-          ', actual ' + Test.Unit.inspect(actual)); }

-    catch(e) { this.error(e); }

-  },

-  assertNotEqual: function(expected, actual) {

-    var message = arguments[2] || "assertNotEqual";

-    try { (expected != actual) ? this.pass() : 

-      this.fail(message + ': got "' + Test.Unit.inspect(actual) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertIdentical: function(expected, actual) { 

-    var message = arguments[2] || "assertIdentical"; 

-    try { (expected === actual) ? this.pass() : 

-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  

-        '", actual "' + Test.Unit.inspect(actual) + '"'); } 

-    catch(e) { this.error(e); } 

-  },

-  assertNotIdentical: function(expected, actual) { 

-    var message = arguments[2] || "assertNotIdentical"; 

-    try { !(expected === actual) ? this.pass() : 

-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  

-        '", actual "' + Test.Unit.inspect(actual) + '"'); } 

-    catch(e) { this.error(e); } 

-  },

-  assertNull: function(obj) {

-    var message = arguments[1] || 'assertNull';

-    try { (obj==null) ? this.pass() : 

-      this.fail(message + ': got "' + Test.Unit.inspect(obj) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertMatch: function(expected, actual) {

-    var message = arguments[2] || 'assertMatch';

-    var regex = new RegExp(expected);

-    try { (regex.exec(actual)) ? this.pass() :

-      this.fail(message + ' : regex: "' +  Test.Unit.inspect(expected) + ' did not match: ' + Test.Unit.inspect(actual) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertHidden: function(element) {

-    var message = arguments[1] || 'assertHidden';

-    this.assertEqual("none", element.style.display, message);

-  },

-  assertNotNull: function(object) {

-    var message = arguments[1] || 'assertNotNull';

-    this.assert(object != null, message);

-  },

-  assertType: function(expected, actual) {

-    var message = arguments[2] || 'assertType';

-    try { 

-      (actual.constructor == expected) ? this.pass() : 

-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  

-        '", actual "' + (actual.constructor) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertNotOfType: function(expected, actual) {

-    var message = arguments[2] || 'assertNotOfType';

-    try { 

-      (actual.constructor != expected) ? this.pass() : 

-      this.fail(message + ': expected "' + Test.Unit.inspect(expected) +  

-        '", actual "' + (actual.constructor) + '"'); }

-    catch(e) { this.error(e); }

-  },

-  assertInstanceOf: function(expected, actual) {

-    var message = arguments[2] || 'assertInstanceOf';

-    try { 

-      (actual instanceof expected) ? this.pass() : 

-      this.fail(message + ": object was not an instance of the expected type"); }

-    catch(e) { this.error(e); } 

-  },

-  assertNotInstanceOf: function(expected, actual) {

-    var message = arguments[2] || 'assertNotInstanceOf';

-    try { 

-      !(actual instanceof expected) ? this.pass() : 

-      this.fail(message + ": object was an instance of the not expected type"); }

-    catch(e) { this.error(e); } 

-  },

-  assertRespondsTo: function(method, obj) {

-    var message = arguments[2] || 'assertRespondsTo';

-    try {

-      (obj[method] && typeof obj[method] == 'function') ? this.pass() : 

-      this.fail(message + ": object doesn't respond to [" + method + "]"); }

-    catch(e) { this.error(e); }

-  },

-  assertReturnsTrue: function(method, obj) {

-    var message = arguments[2] || 'assertReturnsTrue';

-    try {

-      var m = obj[method];

-      if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)];

-      m() ? this.pass() : 

-      this.fail(message + ": method returned false"); }

-    catch(e) { this.error(e); }

-  },

-  assertReturnsFalse: function(method, obj) {

-    var message = arguments[2] || 'assertReturnsFalse';

-    try {

-      var m = obj[method];

-      if(!m) m = obj['is'+method.charAt(0).toUpperCase()+method.slice(1)];

-      !m() ? this.pass() : 

-      this.fail(message + ": method returned true"); }

-    catch(e) { this.error(e); }

-  },

-  assertRaise: function(exceptionName, method) {

-    var message = arguments[2] || 'assertRaise';

-    try { 

-      method();

-      this.fail(message + ": exception expected but none was raised"); }

-    catch(e) {

-      ((exceptionName == null) || (e.name==exceptionName)) ? this.pass() : this.error(e); 

-    }

-  },

-  assertElementsMatch: function() {

-    var expressions = $A(arguments), elements = $A(expressions.shift());

-    if (elements.length != expressions.length) {

-      this.fail('assertElementsMatch: size mismatch: ' + elements.length + ' elements, ' + expressions.length + ' expressions');

-      return false;

-    }

-    elements.zip(expressions).all(function(pair, index) {

-      var element = $(pair.first()), expression = pair.last();

-      if (element.match(expression)) return true;

-      this.fail('assertElementsMatch: (in index ' + index + ') expected ' + expression.inspect() + ' but got ' + element.inspect());

-    }.bind(this)) && this.pass();

-  },

-  assertElementMatches: function(element, expression) {

-    this.assertElementsMatch([element], expression);

-  },

-  benchmark: function(operation, iterations) {

-    var startAt = new Date();

-    (iterations || 1).times(operation);

-    var timeTaken = ((new Date())-startAt);

-    this.info((arguments[2] || 'Operation') + ' finished ' + 

-       iterations + ' iterations in ' + (timeTaken/1000)+'s' );

-    return timeTaken;

-  },

-  _isVisible: function(element) {

-    element = $(element);

-    if(!element.parentNode) return true;

-    this.assertNotNull(element);

-    if(element.style && Element.getStyle(element, 'display') == 'none')

-      return false;

-    

-    return this._isVisible(element.parentNode);

-  },

-  assertNotVisible: function(element) {

-    this.assert(!this._isVisible(element), Test.Unit.inspect(element) + " was not hidden and didn't have a hidden parent either. " + ("" || arguments[1]));

-  },

-  assertVisible: function(element) {

-    this.assert(this._isVisible(element), Test.Unit.inspect(element) + " was not visible. " + ("" || arguments[1]));

-  },

-  benchmark: function(operation, iterations) {

-    var startAt = new Date();

-    (iterations || 1).times(operation);

-    var timeTaken = ((new Date())-startAt);

-    this.info((arguments[2] || 'Operation') + ' finished ' + 

-       iterations + ' iterations in ' + (timeTaken/1000)+'s' );

-    return timeTaken;

-  }

-};

-

-Test.Unit.Testcase = Class.create();

-Object.extend(Object.extend(Test.Unit.Testcase.prototype, Test.Unit.Assertions.prototype), {

-  initialize: function(name, test, setup, teardown) {

-    Test.Unit.Assertions.prototype.initialize.bind(this)();

-    this.name           = name;

-    

-    if(typeof test == 'string') {

-      test = test.gsub(/(\.should[^\(]+\()/,'#{0}this,');

-      test = test.gsub(/(\.should[^\(]+)\(this,\)/,'#{1}(this)');

-      this.test = function() {

-        eval('with(this){'+test+'}');

-      }

-    } else {

-      this.test = test || function() {};

-    }

-    

-    this.setup          = setup || function() {};

-    this.teardown       = teardown || function() {};

-    this.isWaiting      = false;

-    this.timeToWait     = 1000;

-  },

-  wait: function(time, nextPart) {

-    this.isWaiting = true;

-    this.test = nextPart;

-    this.timeToWait = time;

-  },

-  run: function() {

-    try {

-      try {

-        if (!this.isWaiting) this.setup.bind(this)();

-        this.isWaiting = false;

-        this.test.bind(this)();

-      } finally {

-        if(!this.isWaiting) {

-          this.teardown.bind(this)();

-        }

-      }

-    }

-    catch(e) { this.error(e); }

-  }

-});

-

-// *EXPERIMENTAL* BDD-style testing to please non-technical folk

-// This draws many ideas from RSpec http://rspec.rubyforge.org/

-

-Test.setupBDDExtensionMethods = function(){

-  var METHODMAP = {

-    shouldEqual:     'assertEqual',

-    shouldNotEqual:  'assertNotEqual',

-    shouldEqualEnum: 'assertEnumEqual',

-    shouldBeA:       'assertType',

-    shouldNotBeA:    'assertNotOfType',

-    shouldBeAn:      'assertType',

-    shouldNotBeAn:   'assertNotOfType',

-    shouldBeNull:    'assertNull',

-    shouldNotBeNull: 'assertNotNull',

-    

-    shouldBe:        'assertReturnsTrue',

-    shouldNotBe:     'assertReturnsFalse',

-    shouldRespondTo: 'assertRespondsTo'

-  };

-  var makeAssertion = function(assertion, args, object) { 

-   	this[assertion].apply(this,(args || []).concat([object]));

-  };

-  

-  Test.BDDMethods = {};   

-  $H(METHODMAP).each(function(pair) { 

-    Test.BDDMethods[pair.key] = function() { 

-       var args = $A(arguments); 

-       var scope = args.shift(); 

-       makeAssertion.apply(scope, [pair.value, args, this]); }; 

-  });

-  

-  [Array.prototype, String.prototype, Number.prototype, Boolean.prototype].each(

-    function(p){ Object.extend(p, Test.BDDMethods) }

-  );

-};

-

-Test.context = function(name, spec, log){

-  Test.setupBDDExtensionMethods();

-  

-  var compiledSpec = {};

-  var titles = {};

-  for(specName in spec) {

-    switch(specName){

-      case "setup":

-      case "teardown":

-        compiledSpec[specName] = spec[specName];

-        break;

-      default:

-        var testName = 'test'+specName.gsub(/\s+/,'-').camelize();

-        var body = spec[specName].toString().split('\n').slice(1);

-        if(/^\{/.test(body[0])) body = body.slice(1);

-        body.pop();

-        body = body.map(function(statement){ 

-          return statement.strip()

-        });

-        compiledSpec[testName] = body.join('\n');

-        titles[testName] = specName;

-    }

-  }

-  new Test.Unit.Runner(compiledSpec, { titles: titles, testLog: log || 'testlog', context: name });

-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/spacer.gif b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/spacer.gif
deleted file mode 100644
index 1ef86d5..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/spacer.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-console.css b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-console.css
deleted file mode 100644
index b92f360..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-console.css
+++ /dev/null
@@ -1,27 +0,0 @@
-/* The console is used to show debugging messages. */
-DIV.t-console {
-    position: fixed;
-    z-index: 1;
-    top: 2px;
-    left: 2px;
-}
-
-DIV.t-console DIV {
-    font-weight: bold;
-    padding: 0px 2px;
-}
-
-DIV.t-console DIV.t-err {
-    background-color: red;
-    color: white;
-}
-
-DIV.t-console DIV.t-warn {
-    background-color: yellow;
-    color: black;
-}
-
-DIV.t-console DIV.t-debug {
-    background-color: silver;
-    color: black;
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-console.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-console.js
deleted file mode 100644
index df46aba..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-console.js
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-Tapestry.Logging = {
-		
-		debug: function(msg)
-        {
-			if (Tapestry.DEBUG_ENABLED)
-				Tapestry.Logging.updateConsole("t-debug", msg);
-        },
-        
-        warn: function(msg)
-        {
-			Tapestry.Logging.updateConsole("t-warn", msg);
-        },
-        
-        error: function(msg)
-        {
-    		Tapestry.Logging.updateConsole("t-err", msg);
-        },
-        
-        /** Formats a message and updates the console. The console is virtual
-         *  when FireBug is not present, the messages float in the upper-left corner
-         *  of the page and fade out after a short period.  The background color identifies
-         *  the severity of the message (red for error, yellow for warnings, grey for debug).
-         *  Messages can be clicked, which removes the immediately.
-         *
-         * When FireBug is present, the error(), warn() and debug() methods do not invoke
-         * this; instead those functions are rewritten to write entries into the FireBug console.
-         *
-         * @param className to use for the div element in the console
-         * @param message message template
-         */
-        updateConsole : function (className, message)
-        {
-
-            if (Tapestry.Logging.console == undefined)
-            	Tapestry.Logging.console = Tapestry.Logging.createConsole("t-console");
-
-            Tapestry.Logging.writeToConsole(Tapestry.Logging.console, className, message);
-        },
-
-        createConsole : function(className)
-        {
-            var body = $$("BODY").first();
-
-            var console = new Element("div", { 'class': className });
-
-            body.insert({ top: console });
-
-            return console;
-        },
-
-        writeToConsole : function(console, className, message, slideDown)
-        {
-            var div = new Element("div", { 'class': className }).update(message).hide();
-
-            console.insert({ top: div });
-
-            new Effect.Appear(div, { duration: .25 });
-
-            var effect = new Effect.Fade(div, { delay: Tapestry.CONSOLE_DURATION,
-                afterFinish: function()
-                {
-            		Tapestry.remove(div);
-                }});
-
-            div.observe("click", function()
-            {
-                effect.cancel();
-        		Tapestry.remove(div);
-            });
-        }
-                
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-messages.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-messages.js
deleted file mode 100644
index 3a930ca..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-messages.js
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.Messages = {
-
-    pageIsLoading : "Please wait for the page to finish loading ...",
-
-    missingInitializer : "Function Tapestry.Initializer.#{name}() does not exist.",
-
-    missingValidator :      "Function Tapestry.Validator.#{name}() does not exist for field '#{fieldName}'.",
-
-    ajaxFailure : "Ajax failure: Status #{status} for #{request.url}: ",
-
-    ajaxRequestUnsuccessful : "Server request was unsuccessful. There may be a problem accessing the server.",
-
-    clientException :     "Client exception processing response: ",
-
-    missingZone :   "Unable to locate Ajax Zone '#{id}' for dynamic update.",
-
-    noZoneManager :   "Element '#{id}' does not have an associated Tapestry.ZoneManager object." ,
-
-    pathDoesNotStartWithSlash : "External path #{path} does not start with a leading slash.",
-
-    notAnInteger : "Not an integer",
-
-    invalidCharacter : "Invalid character",
-
-    communicationFailed : "Communication with the server failed: ",
-    
-    invocationException : "Exception invoking function #{fname} with parameters #{params}: #{exception}"
-};
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-messages_de.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-messages_de.js
deleted file mode 100644
index e3b06de..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry-messages_de.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-Tapestry.Messages = {
-
-    pageIsLoading : "Bitte warten während die Seite zu Ende lädt ...",
-
-    missingInitializer : "Die Funktion Tapestry.Initializer.#{name}() existiert nicht.",
-
-    missingValidator :      "Die Funktion Tapestry.Validator.#{name}() existiert nicht für das Feld '#{fieldName}'.",
-
-    ajaxFailure : "Ajax Fehler: Status #{status} für #{request.url}: ",
-
-    ajaxRequestUnsuccessful : "Die Serveranfrage schlug fehl. Es gibt womöglich ein Problem beim Zugriff auf den Server.",
-
-    clientException :     "Client exception beim Verarbeiten der Antwort: ",
-
-    missingZone :   "Ajax Zone '#{id}' konnte für ein dynamisches Update nicht gefunden werden.",
-
-    noZoneManager :   "Element '#{id}' ist nicht mit einem Tapestry.ZoneManager Objekt verknüpft." ,
-
-    pathDoesNotStartWithSlash : "Der externe Pfad #{path} beginnt nicht mit einem führenden '/'.",
-
-    notAnInteger : "Kein ganzzahliger Wert",
-
-    invalidCharacter : "Ungültiges Zeichen",
-
-    communicationFailed : "Kommunikation mit dem Server ist fehlgeschlagen: "
-};
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
deleted file mode 100644
index b9717c8..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/tapestry.js
+++ /dev/null
@@ -1,2220 +0,0 @@
-/* Copyright 2007, 2008, 2009, 2010, 2011 The Apache Software Foundation
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- *     http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-var Tapestry = {
-
-	/**
-	 * Event that allows observers to perform cross-form validation after
-	 * individual fields have performed their validation. The form element is
-	 * passed as the event memo. Observers may set the validationError property
-	 * of the Form's Tapestry object to true (which will prevent form
-	 * submission).
-	 */
-	FORM_VALIDATE_EVENT : "tapestry:formvalidate",
-
-	/**
-	 * Event fired just before the form submits, to allow observers to make
-	 * final preparations for the submission, such as updating hidden form
-	 * fields. The form element is passed as the event memo.
-	 */
-	FORM_PREPARE_FOR_SUBMIT_EVENT : "tapestry:formprepareforsubmit",
-
-	/**
-	 * Form event fired after prepare.
-	 */
-	FORM_PROCESS_SUBMIT_EVENT : "tapestry:formprocesssubmit",
-
-	/**
-	 * Event, fired on a field element, to cause observers to validate the
-	 * input. Passes a memo object with two keys: "value" (the raw input value)
-	 * and "translated" (the parsed value, usually meaning a number parsed from
-	 * a string). Observers may invoke Element.showValidationMessage() to
-	 * identify that the field is in error (and decorate the field and show a
-	 * popup error message).
-	 */
-	FIELD_VALIDATE_EVENT : "tapestry:fieldvalidate",
-
-	/**
-	 * Event notification, on a form object, that is used to trigger validation
-	 * on all fields within the form (observed by each field's
-	 * Tapestry.FieldEventManager).
-	 */
-	FORM_VALIDATE_FIELDS_EVENT : "tapestry:validatefields",
-
-	/**
-	 * Event, fired on the document object, which identifies the current focus
-	 * input element.
-	 */
-	FOCUS_CHANGE_EVENT : "tapestry:focuschange",
-
-	/** Event, fired on a zone element when the zone is updated with new content. */
-	ZONE_UPDATED_EVENT : "tapestry:zoneupdated",
-
-	/**
-	 * Event fired on a form fragment element to change the visibility of the
-	 * fragment. The event memo object includes a key, visible, that should be
-	 * true or false.
-	 */
-	CHANGE_VISIBILITY_EVENT : "tapestry:changevisibility",
-
-	/**
-	 * Event fired on a form fragment element to hide the element and remove it
-	 * from the DOM.
-	 */
-	HIDE_AND_REMOVE_EVENT : "tapestry:hideandremove",
-
-	/**
-	 * Event fired on a link or submit to request that it request that the
-	 * correct ZoneManager update from a provided URL.
-	 */
-	TRIGGER_ZONE_UPDATE_EVENT : "tapestry:triggerzoneupdate",
-
-	/** Event used when intercepting and canceling the normal click event. */
-	ACTION_EVENT : "tapestry:action",
-
-	/** When false, the default, the Tapestry.debug() function will be a no-op. */
-	DEBUG_ENABLED : false,
-
-	/** Time, in seconds, that console messages are visible. */
-	CONSOLE_DURATION : 10,
-
-	/**
-	 * CSS Class added to a <form> element that directs Tapestry to prevent
-	 * normal (HTTP POST) form submission, in favor of Ajax (XmlHttpRequest)
-	 * submission.
-	 */
-	PREVENT_SUBMISSION : "t-prevent-submission",
-
-	/** Initially, false, set to true once the page is fully loaded. */
-	pageLoaded : false,
-
-	/**
-	 * Invoked from onclick event handlers built into links and forms. Raises a
-	 * dialog if the page is not yet fully loaded.
-	 */
-	waitForPage : function(event) {
-		if (Tapestry.pageLoaded)
-			return true;
-
-		Event.extend(event || window.event).stop();
-
-		var body = $(document.body);
-
-		/*
-		 * The overlay is stretched to cover the full screen (including
-		 * scrolling areas) and is used to fade out the background ... and
-		 * prevent keypresses (its z-order helps there).
-		 */
-		var overlay = new Element("div", {
-			'class' : 't-dialog-overlay'
-		});
-		overlay.setOpacity(0.0);
-
-		body.insert( {
-			top : overlay
-		});
-
-		new Effect.Appear(overlay, {
-			duration : 0.2,
-			from : 0.0
-		});
-
-		var messageDiv = new Element("div", {
-			'class' : 't-page-loading-banner'
-		}).update(Tapestry.Messages.pageIsLoading);
-		overlay.insert( {
-			top : messageDiv
-		});
-
-		var hideDialog = function() {
-			new Effect.Fade(overlay, {
-				duration : 0.2,
-				afterFinish : function() {
-					Tapestry.remove(overlay);
-				}
-			});
-		};
-
-		document.observe("dom:loaded", hideDialog);
-
-		/* A rare race condition. */
-
-		if (Tapestry.pageLoaded) {
-			hideDialog.call(null);
-
-			return true;
-		} else {
-			return false;
-		}
-
-	},
-
-	/**
-	 * Adds a callback function that will be invoked when the DOM is loaded
-	 * (which occurs *before* window.onload, which has to wait for images and
-	 * such to load first. This simply observes the dom:loaded event on the
-	 * document object (support for which is provided by Prototype).
-	 */
-	onDOMLoaded : function(callback) {
-		document.observe("dom:loaded", callback);
-	},
-
-	/**
-	 * Find all elements marked with the "t-invisible" CSS class and hide()s
-	 * them, so that Prototype's visible() method operates correctly. In
-	 * addition, finds form control elements and adds additional listeners to
-	 * them to support form field input validation.
-	 * 
-	 * <p>
-	 * This is invoked when the DOM is first loaded, and AGAIN whenever dynamic
-	 * content is loaded via the Zone mechanism.
-	 */
-	onDomLoadedCallback : function() {
-
-		Tapestry.pageLoaded = true;
-
-		Tapestry.ScriptManager.initialize();
-
-		$$(".t-invisible").each(function(element) {
-			element.hide();
-			element.removeClassName("t-invisible");
-		});
-
-		/*
-		 * Adds a focus observer that fades all error popups except for the
-		 * field in question.
-		 */
-		$$("INPUT", "SELECT", "TEXTAREA").each(function(element) {
-			/*
-			 * Due to Ajax, we may execute the callback multiple times, and we
-			 * don't want to add multiple listeners to the same element.
-			 */
-			var t = $T(element);
-
-			if (!t.observingFocusChange) {
-				element.observe("focus", function() {
-					if (element != Tapestry.currentFocusField) {
-						document.fire(Tapestry.FOCUS_CHANGE_EVENT, element);
-
-						Tapestry.currentFocusField = element;
-					}
-				});
-
-				t.observingFocusChange = true;
-			}
-		});
-
-		/*
-		 * When a submit element is clicked, record the name of the element into
-		 * the associated form. This is necessary for some Ajax processing, see
-		 * TAPESTRY-2324.
-		 */
-		$$("INPUT[type=submit]").each(function(element) {
-			var t = $T(element);
-
-			if (!t.trackingClicks) {
-				element.observe("click", function() {
-					$(element.form).setSubmittingElement(element);
-				});
-
-				t.trackingClicks = true;
-			}
-		});
-	},
-
-	/*
-	 * Generalized initialize function for Tapestry, used to help minimize the
-	 * amount of JavaScript for the page by removing redundancies such as
-	 * repeated Object and method names. The spec is a hash whose keys are the
-	 * names of methods of the Tapestry.Initializer object. The value is an
-	 * array of arrays. The outer arrays represent invocations of the method.
-	 * The inner array are the parameters for each invocation. As an
-	 * optimization, the inner value may not be an array but instead a single
-	 * value.
-	 */
-	init : function(spec) {
-		$H(spec).each(function(pair) {
-			var functionName = pair.key;
-
-			var initf = Tapestry.Initializer[functionName];
-
-			if (initf == undefined) {
-				Tapestry.error(Tapestry.Messages.missingInitializer, {
-					name : functionName
-				});
-				return;
-			}
-
-			pair.value.each(function(parameterList) {
-				if (!Object.isArray(parameterList)) {
-					parameterList = [ parameterList ];
-				}
-
-				try {
-					initf.apply(this, parameterList);
-				} catch (e) {
-					Tapestry.error(Tapestry.Messages.invocationException, {
-						fname : "Tapestry.Initializer." + functionName,
-						params : Object.toJSON(parameterList),
-						exception : e
-					});
-				}
-			});
-		});
-	},
-
-	/** Formats and displays an error message on the console. */
-	error : function(message, substitutions) {
-		Tapestry.invokeLogger(message, substitutions, Tapestry.Logging.error);
-	},
-
-	/** Formats and displays a warning on the console. */
-	warn : function(message, substitutions) {
-		Tapestry.invokeLogger(message, substitutions, Tapestry.Logging.warn);
-	},
-
-	/** Formats and displays a debug message on the console. */
-	debug : function(message, substitutions) {
-		Tapestry.invokeLogger(message, substitutions, Tapestry.Logging.debug);
-	},
-
-	invokeLogger : function(message, substitutions, loggingFunction) {
-		if (substitutions != undefined)
-			message = message.interpolate(substitutions);
-
-		loggingFunction.call(this, message);
-	},
-
-	/**
-	 * Passed the JSON content of a Tapestry partial markup response, extracts
-	 * the script and stylesheet information. JavaScript libraries and
-	 * stylesheets are loaded, then the callback is invoked. All three keys are
-	 * optional:
-	 * <dl>
-	 * <dt>redirectURL</dt>
-	 * <dd>URL to redirect to (in which case, the callback is not invoked)</dd>
-	 * <dt>inits</dt>
-	 * <dd>Defines a set of calls to Tapestry.init() to perform initialization
-	 * after the DOM has been updated.</dd>
-	 * <dt>stylesheets</dt>
-	 * <dd>Array of hashes, each hash has key href and optional key media</dd>
-	 * 
-	 * @param reply
-	 *            JSON response object from the server
-	 * @param callback
-	 *            function invoked after the scripts have all loaded
-	 *            (presumably, to update the DOM)
-	 */
-	loadScriptsInReply : function(reply, callback) {
-		var redirectURL = reply.redirectURL;
-
-		if (redirectURL) {
-			window.location.href = redirectURL;
-
-			/* Don't bother loading scripts or invoking the callback. */
-
-			return;
-		}
-
-		Tapestry.ScriptManager.addStylesheets(reply.stylesheets);
-
-		Tapestry.ScriptManager.addScripts(reply.scripts, function() {
-			/* Let the caller do its thing first (i.e., modify the DOM). */
-			callback.call(this);
-
-			/* And handle the scripts after the DOM is updated. */
-			Tapestry.executeInits(reply.inits);
-		});
-	},
-
-	/**
-	 * Called from Tapestry.loadScriptsInReply to load any initializations from
-	 * the Ajax partial page render response. Calls
-	 * Tapestry.onDomLoadedCallback() last. This logic must be deferred until
-	 * after the DOM is fully updated, as initialization often refer to DOM
-	 * elements.
-	 * 
-	 * @param initializations
-	 *            array of parameters to pass to Tapestry.init(), one invocation
-	 *            per element (may be null)
-	 */
-	executeInits : function(initializations) {
-
-		$A(initializations).each(function(spec) {
-			Tapestry.init(spec);
-		});
-
-		Tapestry.onDomLoadedCallback();
-	},
-
-	/**
-	 * Default function for handling a communication error during an Ajax
-	 * request.
-	 */
-	ajaxExceptionHander : function(response, exception) {
-		Tapestry.error(Tapestry.Messages.communicationFailed + exception);
-
-		Tapestry.debug(Tapestry.Messages.ajaxFailure + exception, response);
-		
-		throw exception;
-	},
-
-	/**
-	 * Default function for handling Ajax-related failures.
-	 */
-	ajaxFailureHandler : function(response) {
-		var rawMessage = response.getHeader("X-Tapestry-ErrorMessage");
-
-		var message = unescape(rawMessage).escapeHTML();
-
-		Tapestry.error(Tapestry.Messages.communicationFailed + message);
-
-		Tapestry.debug(Tapestry.Messages.ajaxFailure + message, response);
-	},
-
-	/**
-	 * Processes a typical Ajax request for a URL. In the simple case, a success
-	 * handler is provided (as options). In a more complex case, an options
-	 * object is provided, with keys as per Ajax.Request. The onSuccess key will
-	 * be overwritten, and defaults for onException and onFailure will be
-	 * provided. The handler should take up-to two parameters: the
-	 * XMLHttpRequest object itself, and the JSON Response (from the X-JSON
-	 * response header, usually null).
-	 * 
-	 * @param url
-	 *            of Ajax request
-	 * @param options
-	 *            either a success handler
-	 * @return the Ajax.Request object
-	 */
-	ajaxRequest : function(url, options) {
-
-		if (Object.isFunction(options)) {
-			return Tapestry.ajaxRequest(url, {
-				onSuccess : options
-			});
-		}
-
-		var successHandler = options.onSuccess || Prototype.emptyFunction;
-
-		var finalOptions = $H( {
-			onException : Tapestry.ajaxExceptionHandler,
-			onFailure : Tapestry.ajaxFailureHandler
-		}).update(options).update( {
-			onSuccess : function(response, jsonResponse) {
-				/*
-				 * When the page is unloaded, pending Ajax requests appear to
-				 * terminate as successful (but with no reply value). Since
-				 * we're trying to navigate to a new page anyway, we just ignore
-				 * those false success callbacks. We have a listener for the
-				 * window's "beforeunload" event that sets this flag.
-				 */
-				if (Tapestry.windowUnloaded)
-					return;
-
-				/*
-				 * Prototype treats status == 0 as success, even though it seems
-				 * to mean the server didn't respond.
-				 */
-				if (!response.getStatus() || !response.request.success()) {
-					finalOptions.onFailure.call(this, response);
-					return;
-				}
-
-				try {
-					/* Re-invoke the success handler, capturing any exceptions. */
-					successHandler.call(this, response, jsonResponse);
-				} catch (e) {
-					finalOptions.onException.call(this, ajaxRequest, e);
-				}
-			}
-		});
-
-		var ajaxRequest = new Ajax.Request(url, finalOptions.toObject());
-
-		return ajaxRequest;
-	},
-
-	/**
-	 * Obtains the Tapestry.ZoneManager object associated with a triggering
-	 * element (an <a> or <form>) configured to update a zone. Writes errors to
-	 * the AjaxConsole if the zone and ZoneManager can not be resolved.
-	 * 
-	 * @param element
-	 *            triggering element (id or instance)
-	 * @return Tapestry.ZoneManager instance for updated zone, or null if not
-	 *         found.
-	 */
-	findZoneManager : function(element) {
-		var zoneId = $T(element).zoneId;
-
-		return Tapestry.findZoneManagerForZone(zoneId);
-	},
-
-	/**
-	 * Obtains the Tapestry.ZoneManager object associated with a zone element
-	 * (usually a <div>). Writes errors to the Ajax console if the element or
-	 * manager can not be resolved.
-	 * 
-	 * @param zoneElement
-	 *            zone element (id or instance)
-	 * @return Tapestry.ZoneManager instance for zone, or null if not found
-	 */
-	findZoneManagerForZone : function(zoneElement) {
-		var element = $(zoneElement);
-
-		if (!element) {
-			Tapestry.error(Tapestry.Messages.missingZone, {
-				id : zoneElement
-			});
-			return null;
-		}
-
-		var manager = $T(element).zoneManager;
-
-		if (!manager) {
-			Tapestry.error(Tapestry.Messages.noZoneManager, element);
-			return null;
-		}
-
-		return manager;
-	},
-
-	/**
-	 * Used to reconstruct a complete URL from a path that is (or may be)
-	 * relative to window.location. This is used when determining if a
-	 * JavaScript library or CSS stylesheet has already been loaded. Recognizes
-	 * complete URLs (which are returned unchanged), otherwise the URLs are
-	 * expected to be absolute paths.
-	 * 
-	 * @param path
-	 * @return complete URL as string
-	 */
-	rebuildURL : function(path) {
-		if (path.match(/^https?:/)) {
-			return path;
-		}
-
-		if (!path.startsWith("/")) {
-			Tapestry.error(Tapestry.Messages.pathDoesNotStartWithSlash, {
-				path : path
-			});
-
-			return path;
-		}
-
-    if (! Tapestry.buildURL) {
-      var l = window.location;
-      Tapestry.buildURL = l.protocol + "//" + l.host;
-    }
-    
-    return Tapestry.buildURL + path;
-	},
-
-	stripToLastSlash : function(URL) {
-		var slashx = URL.lastIndexOf("/");
-
-		return URL.substring(0, slashx + 1);
-	},
-
-	/**
-	 * Convert a user-provided localized number to an ordinary number (not a
-	 * string). Removes seperators and leading/trailing whitespace. Disallows
-	 * the decimal point if isInteger is true.
-	 * 
-	 * @param number
-	 *            string provided by user
-	 * @param isInteger
-	 *            if true, disallow decimal point
-	 */
-	formatLocalizedNumber : function(number, isInteger) {
-		/*
-		 * We convert from localized string to a canonical string, stripping out
-		 * group seperators (normally commas). If isInteger is true, we don't
-		 * allow a decimal point.
-		 */
-
-		var minus = Tapestry.decimalFormatSymbols.minusSign;
-		var grouping = Tapestry.decimalFormatSymbols.groupingSeparator;
-		var decimal = Tapestry.decimalFormatSymbols.decimalSeparator;
-
-		var canonical = "";
-
-		number.strip().toArray().each(function(ch) {
-			if (ch == minus) {
-				canonical += "-";
-				return;
-			}
-
-			if (ch == grouping) {
-				return;
-			}
-
-			if (ch == decimal) {
-				if (isInteger)
-					throw Tapestry.Messages.notAnInteger;
-
-				ch = ".";
-			} else if (ch < "0" || ch > "9")
-				throw Tapestry.Messages.invalidCharacter;
-
-			canonical += ch;
-		});
-
-		return Number(canonical);
-	},
-
-	/**
-	 * Marks a number of script libraries as loaded; this is used with virtual
-	 * scripts (which combine multiple actual scripts). This is necessary so
-	 * that subsequent Ajax requests do not load scripts that have already been
-	 * loaded
-	 * 
-	 * @param scripts
-	 *            array of script paths
-	 */
-	markScriptLibrariesLoaded : function(scripts) {
-		$(scripts).each(function(script) {
-			var complete = Tapestry.rebuildURL(script);
-			Tapestry.ScriptManager.virtualScripts.push(complete);
-		});
-	},
-
-	/**
-	 * Creates a clone of the indicated element, but with the alternate tag
-	 * name. Attributes of the original node are copied to the new node. Tag
-	 * names should be all upper-case. The content of the original element is
-	 * copied to the new element and the original element is removed. Event
-	 * observers on the original element will be lost.
-	 * 
-	 * @param element
-	 *            element or element id
-	 * @since 5.2.0
-	 */
-	replaceElementTagName : function(element, newTagName) {
-
-		element = $(element);
-
-		var tag = element.tagName;
-
-		/* outerHTML is IE only; this simulates it on any browser. */
-
-		var dummy = document.createElement('html');
-		dummy.appendChild(element.cloneNode(true));
-		var outerHTML = dummy.innerHTML;
-
-		var replaceHTML = outerHTML.replace(new RegExp("^<" + tag, "i"),
-				"<" + newTagName).replace(new RegExp("</" + tag + ">$", "i"),
-				"</" + newTagName + ">");
-
-		element.insert( {
-			before : replaceHTML
-		});
-
-		Tapestry.remove(element);
-	},
-
-	/**
-	 * Removes an element and all of its direct and indirect children. The
-	 * element is first purged, to ensure that Internet Explorer doesn't leak
-	 * memory if event handlers associated with the element (or its children)
-	 * have references back to the element.
-	 * 
-	 * @since 5.2.0
-	 */
-	remove : function(element) {
-		Tapestry.purge(element);
-
-		Element.remove(element);
-	},
-
-	/**
-	 * Purges the element of any event handlers (necessary in IE to ensure that
-	 * memory leaks do not occur, and harmless in other browsers). The element
-	 * is purged, then any children of the element are purged.
-	 */
-	purge : function(element) {
-
-		/* Adapted from http://javascript.crockford.com/memory/leak.html */
-		var attrs = element.attributes;
-		if (attrs) {
-			var i, name;
-			for (i = attrs.length - 1; i >= 0; i--) {
-				if (attrs[i]) {
-					name = attrs[i].name;
-					/* Looking for onclick, etc. */
-					if (typeof element[name] == 'function') {
-						element[name] = null;
-					}
-				}
-			}
-		}
-
-		/* Get rid of any Prototype event handlers as well. */
-		Event.stopObserving(element);
-
-		Tapestry.purgeChildren(element);
-	},
-
-	/**
-	 * Invokes purge() on all the children of the element.
-	 */
-	purgeChildren : function(element) {
-
-		var children = element.childNodes;
-
-		if (children) {
-			var l = children.length, i, child;
-
-			for (i = 0; i < l; i++) {
-				var child = children[i];
-
-				/* Just purge element nodes, not text, etc. */
-				if (child.nodeType == 1)
-					Tapestry.purge(children[i]);
-			}
-		}
-	}
-};
-
-Element.addMethods( {
-
-	/**
-	 * Works upward from the element, checking to see if the element is visible.
-	 * Returns false if it finds an invisible container. Returns true if it
-	 * makes it as far as a (visible) FORM element.
-	 * 
-	 * Note that this only applies to the CSS definition of visible; it doesn't
-	 * check that the element is scrolled into view.
-	 * 
-	 * @param element
-	 *            to search up from
-	 * @return true if visible (and containers visible), false if it or
-	 *         container are not visible
-	 */
-	isDeepVisible : function(element) {
-		var current = $(element);
-
-		while (true) {
-			if (!current.visible())
-				return false;
-
-			if (current.tagName == "FORM")
-				break;
-
-			current = $(current.parentNode);
-		}
-
-		return true;
-	},
-
-	/**
-	 * Observes an event and turns it into a Tapestry.ACTION_EVENT. The original
-	 * event is stopped. The original event object is passed as the memo when
-	 * the action event is fired. This allows the logic for clicking an element
-	 * to be separated from the logic for processing that click event, which is
-	 * often useful when the click logic needs to be intercepted, or when the
-	 * action logic needs to be triggered outside the context of a DOM event.
-	 * 
-	 * $T(element).hasAction will be true after invoking this method.
-	 * 
-	 * @param element
-	 *            to observe events from
-	 * @param eventName
-	 *            name of event to observer, typically "click"
-	 * @param handler
-	 *            function to be invoked; it will be registered as a observer of
-	 *            the Tapestry.ACTION_EVENT.
-	 */
-	observeAction : function(element, eventName, handler) {
-		element.observe(eventName, function(event) {
-
-			event.stop();
-
-			element.fire(Tapestry.ACTION_EVENT, event);
-		});
-
-		element.observe(Tapestry.ACTION_EVENT, handler);
-
-		$T(element).hasAction = true;
-	}
-});
-
-Element
-		.addMethods(
-				'FORM',
-				{
-					/**
-					 * Gets the Tapestry.FormEventManager for the form.
-					 * 
-					 * @param form
-					 *            form element
-					 */
-					getFormEventManager : function(form) {
-						form = $(form);
-
-						var manager = $T(form).formEventManager;
-
-						if (manager == undefined) {
-
-							throw "No Tapestry.FormEventManager object has been created for form '#{id}'."
-									.interpolate(form);
-						}
-
-						return manager;
-					},
-
-					/**
-					 * Identifies in the form what is the cause of the
-					 * submission. The element's id is stored into the t:submit
-					 * hidden field (created as needed).
-					 * 
-					 * @param form
-					 *            to update
-					 * @param element
-					 *            id or element that is the cause of the submit
-					 *            (a Submit or LinkSubmit)
-					 */
-					setSubmittingElement : function(form, element) {
-						form.getFormEventManager()
-								.setSubmittingElement(element);
-					},
-
-					/**
-					 * Turns off client validation for the next submission of
-					 * the form.
-					 */
-					skipValidation : function(form) {
-						$T(form).skipValidation = true;
-					},
-
-					/**
-					 * Programmatically perform a submit, invoking the onsubmit
-					 * event handler (if present) before calling form.submit().
-					 */
-					performSubmit : function(form, event) {
-						if (form.onsubmit == undefined
-								|| form.onsubmit.call(window.document, event)) {
-							form.submit();
-						}
-					},
-
-					/**
-					 * Sends an Ajax request to the Form's action. This
-					 * encapsulates a few things, such as a default onFailure
-					 * handler, and working around bugs/features in Prototype
-					 * concerning how submit buttons are processed.
-					 * 
-					 * @param form
-					 *            used to define the data to be sent in the
-					 *            request
-					 * @param options
-					 *            standard Prototype Ajax Options
-					 * @return Ajax.Request the Ajax.Request created for the
-					 *         request
-					 */
-					sendAjaxRequest : function(form, url, options) {
-						form = $(form);
-
-						/*
-						 * Generally, options should not be null or missing,
-						 * because otherwise there's no way to provide any
-						 * callbacks!
-						 */
-						options = Object.clone(options || {});
-
-						/*
-						 * Find the elements, skipping over any submit buttons.
-						 * This works around bugs in Prototype 1.6.0.2.
-						 */
-						var elements = form.getElements().reject(function(e) {
-							return e.tagName == "INPUT" && e.type == "submit";
-						});
-
-						var hash = Form.serializeElements(elements, true);
-
-						/*
-						 * Copy the parameters in, overwriting field values,
-						 * because Prototype 1.6.0.2 does not.
-						 */
-						Object.extend(hash, options.parameters);
-
-						options.parameters = hash;
-
-						/*
-						 * Ajax.Request will convert the hash into a query
-						 * string and post it.
-						 */
-
-						return Tapestry.ajaxRequest(url, options);
-					}
-				});
-
-Element.addMethods( [ 'INPUT', 'SELECT', 'TEXTAREA' ], {
-	/**
-	 * Invoked on a form element (INPUT, SELECT, etc.), gets or creates the
-	 * Tapestry.FieldEventManager for that field.
-	 * 
-	 * @param field
-	 *            field element
-	 */
-	getFieldEventManager : function(field) {
-		field = $(field);
-		var t = $T(field);
-
-		var manager = t.fieldEventManager;
-
-		if (manager == undefined) {
-			manager = new Tapestry.FieldEventManager(field);
-			t.fieldEventManager = manager;
-		}
-
-		return manager;
-	},
-
-	/**
-	 * Obtains the Tapestry.FieldEventManager and asks it to show the validation
-	 * message. Sets the validationError property of the elements tapestry
-	 * object to true.
-	 * 
-	 * @param element
-	 * @param message
-	 *            to display
-	 */
-	showValidationMessage : function(element, message) {
-		element = $(element);
-
-		element.getFieldEventManager().showValidationMessage(message);
-
-		return element;
-	},
-
-	/**
-	 * Removes any validation decorations on the field, and hides the error
-	 * popup (if any) for the field.
-	 */
-	removeDecorations : function(element) {
-		$(element).getFieldEventManager().removeDecorations();
-
-		return element;
-	},
-
-	/**
-	 * Adds a standard validator for the element, an observer of
-	 * Tapestry.FIELD_VALIDATE_EVENT. The validator function will be passed the
-	 * current field value and should throw an error message if the field's
-	 * value is not valid.
-	 * 
-	 * @param element
-	 *            field element to validate
-	 * @param validator
-	 *            function to be passed the field value
-	 */
-	addValidator : function(element, validator) {
-		element.observe(Tapestry.FIELD_VALIDATE_EVENT, function(event) {
-			try {
-				validator.call(this, event.memo.translated);
-			} catch (message) {
-				element.showValidationMessage(message);
-			}
-		});
-
-		return element;
-	}
-});
-
-/** Container of functions that may be invoked by the Tapestry.init() function. */
-Tapestry.Initializer = {
-
-	/** Make the given field the active field (focus on the field). */
-	activate : function(id) {
-		$(id).activate();
-	},
-
-	/**
-	 * evalScript is a synonym for the JavaScript eval function. It is used in
-	 * Ajax requests to handle any setup code that does not fit into a standard
-	 * Tapestry.Initializer call.
-	 */
-	evalScript : eval,
-
-	ajaxFormLoop : function(spec) {
-		var rowInjector = $(spec.rowInjector);
-
-		$(spec.addRowTriggers).each(function(triggerId) {
-			$(triggerId).observeAction("click", function(event) {
-				$(rowInjector).trigger();
-			});
-		});
-	},
-
-	formLoopRemoveLink : function(spec) {
-		var link = $(spec.link);
-		var fragmentId = spec.fragment;
-
-		link.observeAction("click", function(event) {
-			var successHandler = function(transport) {
-				var container = $(fragmentId);
-
-				var effect = Tapestry.ElementEffect.fade(container);
-
-				effect.options.afterFinish = function() {
-					Tapestry.remove(container);
-				}
-			};
-
-			Tapestry.ajaxRequest(spec.url, successHandler);
-		});
-	},
-
-	/**
-	 * Convert a form or link into a trigger of an Ajax update that updates the
-	 * indicated Zone.
-	 * 
-	 * @param spec.linkId
-	 *            id or instance of <form> or <a> element
-	 * @param spec.zoneId
-	 *            id of the element to update when link clicked or form
-	 *            submitted
-	 * @param spec.url
-	 *            absolute component event request URL
-	 */
-	linkZone : function(spec) {
-		Tapestry.Initializer.updateZoneOnEvent("click", spec.linkId,
-				spec.zoneId, spec.url);
-	},
-
-	/**
-	 * Converts a link into an Ajax update of a Zone. The url includes the
-	 * information to reconnect with the server-side Form.
-	 * 
-	 * @param spec.selectId
-	 *            id or instance of <select>
-	 * @param spec.zoneId
-	 *            id of element to update when select is changed
-	 * @param spec.url
-	 *            component event request URL
-	 */
-	linkSelectToZone : function(spec) {
-		Tapestry.Initializer.updateZoneOnEvent("change", spec.selectId,
-				spec.zoneId, spec.url);
-	},
-
-	linkSubmit : function(spec) {
-
-		Tapestry.replaceElementTagName(spec.clientId, "A");
-
-		$(spec.clientId).writeAttribute("href", "#");
-
-		$(spec.clientId).observeAction("click", function(event) {
-
-			var form = $(spec.form);
-
-			if (!spec.validate)
-				form.skipValidation();
-
-			form.setSubmittingElement(this);
-
-			form.performSubmit(event);
-		});
-	},
-
-	/**
-	 * Used by other initializers to connect an element (either a link or a
-	 * form) to a zone.
-	 * 
-	 * @param eventName
-	 *            the event on the element to observe
-	 * @param element
-	 *            the element to observe for events
-	 * @param zoneId
-	 *            identified a Zone by its clientId. Alternately, the special
-	 *            value '^' indicates that the Zone is a container of the
-	 *            element (the first container with the 't-zone' CSS class).
-	 * @param url
-	 *            The request URL to be triggered when the event is observed.
-	 *            Ultimately, a partial page update JSON response will be passed
-	 *            to the Zone's ZoneManager.
-	 */
-	updateZoneOnEvent : function(eventName, element, zoneId, url) {
-		element = $(element);
-
-		$T(element).zoneUpdater = true;
-
-		var zoneElement = zoneId == '^' ? $(element).up('.t-zone') : $(zoneId);
-
-		if (!zoneElement) {
-			Tapestry
-					.error(
-							"Could not find zone element '#{zoneId}' to update on #{eventName} of element '#{elementId}",
-							{
-								zoneId : zoneId,
-								eventName : eventName,
-								elementId : element.id
-							});
-			return;
-		}
-
-		/*
-		 * Update the element with the id of zone div. This may be changed
-		 * dynamically on the client side.
-		 */
-
-		$T(element).zoneId = zoneElement.id;
-
-		if (element.tagName == "FORM") {
-
-			// Create the FEM if necessary.
-			element.addClassName(Tapestry.PREVENT_SUBMISSION);
-
-			/*
-			 * After the form is validated and prepared, this code will process
-			 * the form submission via an Ajax call. The original submit event
-			 * will have been cancelled.
-			 */
-
-			element.observe(Tapestry.FORM_PROCESS_SUBMIT_EVENT, function() {
-				var zoneManager = Tapestry.findZoneManager(element);
-
-				if (!zoneManager)
-					return;
-
-				var successHandler = function(transport) {
-					zoneManager.processReply(transport.responseJSON);
-				};
-
-				element.sendAjaxRequest(url, {
-					parameters : {
-						"t:zoneid" : zoneId
-					},
-					onSuccess : successHandler
-				});
-			});
-
-			return;
-		}
-
-		/* Otherwise, assume it's just an ordinary link or input field. */
-
-		element.observeAction(eventName, function(event) {
-			element.fire(Tapestry.TRIGGER_ZONE_UPDATE_EVENT);
-		});
-
-		element.observe(Tapestry.TRIGGER_ZONE_UPDATE_EVENT, function() {
-
-			var zoneObject = Tapestry.findZoneManager(element);
-
-			if (!zoneObject)
-				return;
-
-			/*
-			 * A hack related to allowing a Select to perform an Ajax update of
-			 * the page.
-			 */
-
-			var parameters = {};
-
-			if (element.tagName == "SELECT" && element.value) {
-				parameters["t:selectvalue"] = element.value;
-			}
-
-			zoneObject.updateFromURL(url, parameters);
-		});
-	},
-
-	/**
-	 * Sets up a Tapestry.FormEventManager for the form, and enables events for
-	 * validations. This is executed with InitializationPriority.EARLY, to
-	 * ensure that the FormEventManager exists vefore any validations are added
-	 * for fields within the Form.
-	 * 
-	 * @since 5.2.2
-	 */
-	formEventManager : function(spec) {
-		$T(spec.formId).formEventManager = new Tapestry.FormEventManager(spec);
-	},
-
-	/**
-	 * Keys in the masterSpec are ids of field control elements. Value is a list
-	 * of validation specs. Each validation spec is a 2 or 3 element array.
-	 */
-	validate : function(masterSpec) {
-		$H(masterSpec)
-				.each(
-						function(pair) {
-
-							var field = $(pair.key);
-
-							/*
-							 * Force the creation of the field event manager.
-							 */
-
-							$(field).getFieldEventManager();
-
-							$A(pair.value)
-									.each(
-											function(spec) {
-												/*
-												 * Each pair value is an array
-												 * of specs, each spec is a 2 or
-												 * 3 element array. validator
-												 * function name, message,
-												 * optional constraint
-												 */
-
-												var name = spec[0];
-												var message = spec[1];
-												var constraint = spec[2];
-
-												var vfunc = Tapestry.Validator[name];
-
-												if (vfunc == undefined) {
-													Tapestry
-															.error(
-																	Tapestry.Messages.missingValidator,
-																	{
-																		name : name,
-																		fieldName : field.id
-																	});
-													return;
-												}
-
-												/*
-												 * Pass the extended field, the
-												 * provided message, and the
-												 * constraint object to the
-												 * Tapestry.Validator function,
-												 * so that it can, typically,
-												 * invoke field.addValidator().
-												 */
-												try {
-													vfunc
-															.call(this, field,
-																	message,
-																	constraint);
-												} catch (e) {
-													Tapestry
-															.error(
-																	Tapestry.Messages.invocationException,
-																	{
-																		fname : "Tapestry.Validator."
-																				+ functionName,
-																		params : Object
-																				.toJSON( [
-																						field.id,
-																						message,
-																						constraint ]),
-																		exception : e
-																	});
-												}
-											});
-						});
-	},
-
-	zone : function(spec) {
-		new Tapestry.ZoneManager(spec);
-	},
-
-	formFragment : function(spec) {
-
-		var element = $(spec.element);
-
-		var hidden = $(spec.element + "-hidden");
-		var form = $(hidden.form);
-
-		function runAnimation(makeVisible) {
-			var effect = makeVisible ? Tapestry.ElementEffect[spec.show]
-					|| Tapestry.ElementEffect.slidedown
-					: Tapestry.ElementEffect[spec.hide]
-							|| Tapestry.ElementEffect.slideup;
-			return effect(element);
-		}
-
-		element.observe(Tapestry.CHANGE_VISIBILITY_EVENT, function(event) {
-			//since events propogate up, you have you call event.stop() here to prevent hiding
-			//container formFragments.
-			event.stop();
-			var makeVisible = event.memo.visible;
-
-			if (makeVisible == element.visible())
-				return;
-
-			runAnimation(makeVisible);
-		});
-
-		element.observe(Tapestry.HIDE_AND_REMOVE_EVENT, function(event) {
-			event.stop();
-			var effect = runAnimation(false);
-
-			effect.options.afterFinish = function() {
-				Tapestry.remove(element);
-			};
-		});
-
-		if (!spec.alwaysSubmit) {
-			form.observe(Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT, function() {
-
-				/*
-				 * On a submission, if the fragment is not visible, then
-				 * disabled its form submission data, so that no processing or
-				 * validation occurs on the server.
-				 */
-				hidden.disabled = !element.isDeepVisible();
-			});
-		}
-	},
-
-	formInjector : function(spec) {
-		new Tapestry.FormInjector(spec);
-	},
-
-	/*
-	 * Links a FormFragment to a trigger (a radio or a checkbox), such that
-	 * changing the trigger will hide or show the FormFragment. Care should be
-	 * taken to render the page with the checkbox and the FormFragment's
-	 * visibility in agreement.
-	 */
-	linkTriggerToFormFragment : function(spec) {
-		var trigger = $(spec.triggerId);
-
-		var update = function() {
-			var checked = trigger.checked;
-			var makeVisible = checked == !spec.invert;
-
-			$(spec.fragmentId).fire(Tapestry.CHANGE_VISIBILITY_EVENT, {
-				visible : makeVisible
-			}, true);
-		}
-
-		/* Let the event bubble up to the form level. */
-		if (trigger.type == "radio") {
-			$(trigger.form).observe("click", update);
-			return;
-		}
-
-		/* Normal trigger is a checkbox; listen just to it. */
-		trigger.observe("click", update);
-
-	},
-
-	cancelButton : function(clientId) {
-
-		/*
-		 * Set the form's skipValidation property and allow the event to
-		 * continue, which will ultimately submit the form.
-		 */
-		$(clientId).observeAction("click", function(event) {
-			$(this.form).skipValidation();
-			$(this.form).setSubmittingElement(clientId);
-			$(this.form).performSubmit(event);
-		});
-	}
-};
-
-/*
- * Collection of field based functions related to validation. Each function
- * takes a field, a message and an optional constraint value. Some functions are
- * related to Translators and work on the format event, other's are from
- * Validators and work on the validate event.
- */
-
-Tapestry.Validator = {
-
-	required : function(field, message) {
-		$(field).getFieldEventManager().requiredCheck = function(value) {
-			if ((Object.isString(value) && value.strip() == '')
-					|| value == null)
-				$(field).showValidationMessage(message);
-		};
-	},
-
-	/** Supplies a client-side numeric translator for the field. */
-	numericformat : function(field, message, isInteger) {
-		$(field).getFieldEventManager().translator = function(input) {
-			try {
-				return Tapestry.formatLocalizedNumber(input, isInteger);
-			} catch (e) {
-				$(field).showValidationMessage(message);
-			}
-		};
-	},
-
-	minlength : function(field, message, length) {
-		field.addValidator(function(value) {
-			if (value.length < length)
-				throw message;
-		});
-	},
-
-	maxlength : function(field, message, maxlength) {
-		field.addValidator(function(value) {
-			if (value.length > maxlength)
-				throw message;
-		});
-	},
-
-	min : function(field, message, minValue) {
-		field.addValidator(function(value) {
-			if (value < minValue)
-				throw message;
-		});
-	},
-
-	max : function(field, message, maxValue) {
-		field.addValidator(function(value) {
-			if (value > maxValue)
-				throw message;
-		});
-	},
-
-	regexp : function(field, message, pattern) {
-		var regexp = new RegExp(pattern);
-
-		field.addValidator(function(value) {
-			if (!regexp.test(value))
-				throw message;
-		});
-	}
-};
-
-Tapestry.ErrorPopup = Class.create( {
-
-	/*
-	 * If the images associated with the error popup are overridden (by
-	 * overriding Tapestry's default.css stylesheet), then some of these values
-	 * may also need to be adjusted.
-	 */
-	BUBBLE_VERT_OFFSET : -34,
-
-	BUBBLE_HORIZONTAL_OFFSET : -20,
-
-	BUBBLE_WIDTH : "auto",
-
-	BUBBLE_HEIGHT : "39px",
-
-	initialize : function(field) {
-		this.field = $(field);
-
-		this.innerSpan = new Element("span");
-		this.outerDiv = $(new Element("div", {
-			'id' : this.field.id + ":errorpopup",
-			'class' : 't-error-popup'
-		})).update(this.innerSpan).hide();
-
-		var body = $(document.body);
-
-		body.insert( {
-			bottom : this.outerDiv
-		});
-
-		this.outerDiv.absolutize();
-
-		this.outerDiv.observe("click", function(event) {
-			this.ignoreNextFocus = true;
-
-			this.stopAnimation();
-
-			this.outerDiv.hide();
-
-			this.field.activate();
-
-			event.stop();
-		}.bindAsEventListener(this));
-
-		this.queue = {
-			position : 'end',
-			scope : this.field.id
-		};
-
-		Event.observe(window, "resize", this.repositionBubble.bind(this));
-
-		document.observe(Tapestry.FOCUS_CHANGE_EVENT, function(event) {
-			if (this.ignoreNextFocus) {
-				this.ignoreNextFocus = false;
-				return;
-			}
-
-			if (event.memo == this.field) {
-				this.fadeIn();
-				return;
-			}
-
-			/*
-			 * If this field is not the focus field after a focus change, then
-			 * it's bubble, if visible, should fade out. This covers tabbing
-			 * from one form to another.
-			 */
-			this.fadeOut();
-
-		}.bind(this));
-	},
-
-	showMessage : function(message) {
-		this.stopAnimation();
-
-		this.innerSpan.update(message);
-
-		this.hasMessage = true;
-
-		this.fadeIn();
-	},
-
-	repositionBubble : function() {
-		var fieldPos = this.field.cumulativeOffset();
-
-		this.outerDiv.setStyle( {
-			top : (fieldPos[1] + this.BUBBLE_VERT_OFFSET) + "px",
-			left : (fieldPos[0] + this.BUBBLE_HORIZONTAL_OFFSET) + "px",
-			width : this.BUBBLE_WIDTH,
-			height : this.BUBBLE_HEIGHT
-		});
-	},
-
-	fadeIn : function() {
-		if (!this.hasMessage)
-			return;
-
-		this.repositionBubble();
-
-		if (this.animation)
-			return;
-
-		this.animation = new Effect.Appear(this.outerDiv, {
-			queue : this.queue,
-			afterFinish : function() {
-				this.animation = null;
-
-				if (this.field != Tapestry.currentFocusField)
-					this.fadeOut();
-			}.bind(this)
-		});
-	},
-
-	stopAnimation : function() {
-		if (this.animation)
-			this.animation.cancel();
-
-		this.animation = null;
-	},
-
-	fadeOut : function() {
-		if (this.animation)
-			return;
-
-		this.animation = new Effect.Fade(this.outerDiv, {
-			queue : this.queue,
-			afterFinish : function() {
-				this.animation = null;
-			}.bind(this)
-		});
-	},
-
-	hide : function() {
-		this.hasMessage = false;
-
-		this.stopAnimation();
-
-		this.outerDiv.hide();
-	}
-});
-
-Tapestry.FormEventManager = Class.create( {
-
-	initialize : function(spec) {
-		this.form = $(spec.formId);
-		this.validateOnBlur = spec.validate.blur;
-		this.validateOnSubmit = spec.validate.submit;
-
-		this.form.onsubmit = this.handleSubmit.bindAsEventListener(this);
-	},
-
-	/**
-	 * Identifies in the form what is the cause of the submission. The element's
-	 * id is stored into the t:submit hidden field (created as needed).
-	 * 
-	 * @param element
-	 *            id or element that is the cause of the submit (a Submit or
-	 *            LinkSubmit)
-	 */
-	setSubmittingElement : function(element) {
-
-		if (!this.submitHidden) {
-			// skip if this is not a tapestry controlled form
-			if (this.form.getInputs("hidden", "t:formdata").size() == 0)
-				return;
-
-			var hiddens = this.form.getInputs("hidden", "t:submit");
-
-			if (hiddens.size() == 0) {
-
-				/**
-				 * Create a new hidden field directly after the first hidden
-				 * field in the form.
-				 */
-				var firstHidden = this.form.getInputs("hidden").first();
-
-				this.submitHidden = new Element("input", {
-					type : "hidden",
-					name : "t:submit"
-				});
-
-				firstHidden.insert( {
-					after : this.submitHidden
-				});
-			} else
-				this.submitHidden = hiddens.first();
-		}
-
-		this.submitHidden.value = element == null ? null : $(element).id;
-	},
-
-	handleSubmit : function(domevent) {
-
-		/*
-		 * Necessary because we set the onsubmit property of the form, rather
-		 * than observing the event. But that's because we want to specfically
-		 * overwrite any other handlers.
-		 */
-		Event.extend(domevent);
-
-		var t = $T(this.form);
-
-		t.validationError = false;
-
-		if (!t.skipValidation) {
-
-			t.skipValidation = false;
-
-			/* Let all the fields do their validations first. */
-
-			this.form.fire(Tapestry.FORM_VALIDATE_FIELDS_EVENT, this.form);
-
-			/*
-			 * Allow observers to validate the form as a whole. The FormEvent
-			 * will be visible as event.memo. The Form will not be submitted if
-			 * event.result is set to false (it defaults to true). Still trying
-			 * to figure out what should get focus from this kind of event.
-			 */
-			if (!t.validationError)
-				this.form.fire(Tapestry.FORM_VALIDATE_EVENT, this.form);
-
-			if (t.validationError) {
-				domevent.stop();
-
-				/*
-				 * Because the submission failed, the last submit element is
-				 * cleared, since the form may be submitted for some other
-				 * reason later.
-				 */
-				this.setSubmittingElement(null);
-
-				return false;
-			}
-		}
-
-		this.form.fire(Tapestry.FORM_PREPARE_FOR_SUBMIT_EVENT, this.form);
-
-		/*
-		 * This flag can be set to prevent the form from submitting normally.
-		 * This is used for some Ajax cases where the form submission must run
-		 * via Ajax.Request.
-		 */
-
-		if (this.form.hasClassName(Tapestry.PREVENT_SUBMISSION)) {
-			domevent.stop();
-
-			/*
-			 * Instead fire the event (a listener will then trigger the Ajax
-			 * submission). This is really a hook for the ZoneManager.
-			 */
-			this.form.fire(Tapestry.FORM_PROCESS_SUBMIT_EVENT);
-
-			return false;
-		}
-
-		/* Validation is OK, not doing Ajax, continue as planned. */
-
-		return true;
-	}
-});
-
-Tapestry.FieldEventManager = Class.create( {
-
-	initialize : function(field) {
-		this.field = $(field);
-
-		this.translator = Prototype.K;
-
-		var fem = $(this.field.form).getFormEventManager();
-
-		if (fem.validateOnBlur) {
-
-			document.observe(Tapestry.FOCUS_CHANGE_EVENT, function(event) {
-				/*
-				 * If changing focus *within the same form* then perform
-				 * validation. Note that Tapestry.currentFocusField does not
-				 * change until after the FOCUS_CHANGE_EVENT notification.
-				 */
-				if (Tapestry.currentFocusField == this.field
-						&& this.field.form == event.memo.form)
-					this.validateInput();
-
-			}.bindAsEventListener(this));
-		}
-
-		if (fem.validateOnSubmit) {
-			$(this.field.form).observe(Tapestry.FORM_VALIDATE_FIELDS_EVENT,
-					this.validateInput.bindAsEventListener(this));
-		}
-	},
-
-	getLabel : function() {
-		if (!this.label) {
-			var selector = "label[for='" + this.field.id + "']";
-			this.label = this.field.form.down(selector);
-		}
-
-		return this.label;
-	},
-
-	getIcon : function() {
-		if (!this.icon) {
-			this.com = $(this.field.id + "_icon");
-		}
-
-		return this.icon;
-	},
-
-	/**
-	 * Removes validation decorations if present. Hides the ErrorPopup, if it
-	 * exists.
-	 */
-	removeDecorations : function() {
-		this.field.removeClassName("t-error");
-
-		this.getLabel() && this.getLabel().removeClassName("t-error");
-
-		this.getIcon() && this.getIcon().hide();
-
-		if (this.errorPopup)
-			this.errorPopup.hide();
-	},
-
-	/**
-	 * Show a validation error message, which will add decorations to the field
-	 * and it label, make the icon visible, and raise the field's
-	 * Tapestry.ErrorPopup to show the message.
-	 * 
-	 * @param message
-	 *            validation message to display
-	 */
-	showValidationMessage : function(message) {
-		$T(this.field).validationError = true;
-		$T(this.field.form).validationError = true;
-
-		this.field.addClassName("t-error");
-
-		this.getLabel() && this.getLabel().addClassName("t-error");
-
-		var icon = this.getIcon();
-
-		if (icon && !icon.visible()) {
-			new Effect.Appear(this.icon);
-		}
-
-		if (this.errorPopup == undefined)
-			this.errorPopup = new Tapestry.ErrorPopup(this.field);
-
-		this.errorPopup.showMessage(message);
-	},
-
-	/**
-	 * Invoked when a form is submitted, or when leaving a field, to perform
-	 * field validations. Field validations are skipped for disabled fields. If
-	 * all validations are succesful, any decorations are removed. If any
-	 * validation fails, an error popup is raised for the field, to display the
-	 * validation error message.
-	 * 
-	 * @return true if the field has a validation error
-	 */
-	validateInput : function() {
-		if (this.field.disabled)
-			return false;
-
-		if (!this.field.isDeepVisible())
-			return false;
-
-		var t = $T(this.field);
-
-		var value = $F(this.field);
-
-		t.validationError = false;
-
-		if (this.requiredCheck)
-			this.requiredCheck.call(this, value);
-
-		/*
-		 * Don't try to validate blank values; if the field is required, that
-		 * error is already noted and presented to the user.
-		 */
-
-		if (!t.validationError && !(Object.isString(value) && value.blank())) {
-			var translated = this.translator(value);
-
-			/*
-			 * If Format went ok, perhaps do the other validations.
-			 */
-			if (!t.validationError) {
-				this.field.fire(Tapestry.FIELD_VALIDATE_EVENT, {
-					value : value,
-					translated : translated
-				});
-			}
-		}
-
-		/* Lastly, if no validation errors were found, remove the decorations. */
-
-		if (!t.validationError)
-			this.field.removeDecorations();
-
-		return t.validationError;
-	}
-});
-
-/*
- * Wrappers around Prototype and Scriptaculous effects. All the functions of
- * this object should have all-lowercase names. The methods all return the
- * Effect object they create.
- */
-Tapestry.ElementEffect = {
-
-	/** Fades in the element. */
-	show : function(element) {
-		return new Effect.Appear(element);
-	},
-
-	/** The classic yellow background fade. */
-	highlight : function(element, color) {
-		if (color)
-			return new Effect.Highlight(element, {
-				endcolor : color,
-				restorecolor : color
-			});
-
-		return new Effect.Highlight(element);
-	},
-
-	/** Scrolls the content down. */
-	slidedown : function(element) {
-		return new Effect.SlideDown(element);
-	},
-
-	/** Slids the content back up (opposite of slidedown). */
-	slideup : function(element) {
-		return new Effect.SlideUp(element);
-	},
-
-	/** Fades the content out (opposite of show). */
-	fade : function(element) {
-		return new Effect.Fade(element);
-	}
-};
-
-/**
- * Manages a &lt;div&lt; (or other element) for dynamic updates.
- * 
- */
-Tapestry.ZoneManager = Class.create( {
-	/*
-	 * spec are the parameters for the Zone: trigger: required -- name or
-	 * instance of link. element: required -- name or instance of div element to
-	 * be shown, hidden and updated show: name of Tapestry.ElementEffect
-	 * function used to reveal the zone if hidden update: name of
-	 * Tapestry.ElementEffect function used to highlight the zone after it is
-	 * updated
-	 */
-	initialize : function(spec) {
-		this.element = $(spec.element);
-		this.showFunc = Tapestry.ElementEffect[spec.show]
-				|| Tapestry.ElementEffect.show;
-		this.updateFunc = Tapestry.ElementEffect[spec.update]
-				|| Tapestry.ElementEffect.highlight;
-		this.specParameters = spec.parameters;
-
-		/*
-		 * TAP5-707: store the old background color of the element or take white
-		 * as a default
-		 */
-		this.endcolor = this.element.getStyle('background-color').parseColor(
-				'#ffffff');
-
-		/* Link the div back to this zone. */
-
-		$T(this.element).zoneManager = this;
-
-		/*
-		 * Look inside the managed element for another element with the CSS
-		 * class "t-zone-update". If present, then this is the element whose
-		 * content will be changed, rather then the entire zone's element. This
-		 * allows a Zone element to contain "wrapper" markup (borders and such).
-		 * Typically, such a Zone element will initially be invisible. The show
-		 * and update functions apply to the Zone element, not the update
-		 * element.
-		 */
-		var updates = this.element.select(".t-zone-update");
-
-		this.updateElement = updates.first() || this.element;
-	},
-
-	/*
-	 * Updates the content of the div controlled by this Zone, then invokes the
-	 * show function (if not visible) or the update function (if visible)
-	 */
-
-	/**
-	 * Updates the zone's content, and invokes either the update function (to
-	 * highlight the change) or the show function (to reveal a hidden element).
-	 * Lastly, fires the Tapestry.ZONE_UPDATED_EVENT to let listeners know that
-	 * the zone was updated.
-	 * 
-	 * @param content
-	 */
-	show : function(content) {
-
-		Tapestry.purgeChildren(this.updateElement);
-
-		this.updateElement.update(content);
-
-		var func = this.element.visible() ? this.updateFunc : this.showFunc;
-
-		func.call(this, this.element, this.endcolor);
-
-		this.element.fire(Tapestry.ZONE_UPDATED_EVENT);
-	},
-
-	/**
-	 * Invoked with a reply (i.e., transport.responseJSON), this updates the
-	 * managed element and processes any JavaScript in the reply. The response
-	 * should have a content key, and may have script, scripts and stylesheets
-	 * keys.
-	 * 
-	 * @param reply
-	 *            response in JSON format appropriate to a Tapestry.Zone
-	 */
-	processReply : function(reply) {
-		Tapestry.loadScriptsInReply(reply, function() {
-			/*
-			 * In a multi-zone update, the reply.content may be missing, in
-			 * which case, leave the curent content in place. TAP5-1177
-			 */
-			reply.content != undefined && this.show(reply.content);
-
-			/*
-			 * zones is an object of zone ids and zone content that will be
-			 * present in a multi-zone update response.
-			 */
-			reply.zones && Object.keys(reply.zones).each(function(zoneId) {
-				var manager = Tapestry.findZoneManagerForZone(zoneId);
-
-				if (manager) {
-					var zoneContent = reply.zones[zoneId];
-					manager.show(zoneContent);
-				}
-			});
-		}.bind(this));
-	},
-
-	/**
-	 * Initiates an Ajax request to update this zone by sending a request to the
-	 * URL. Expects the correct JSON reply (wth keys content, etc.).
-	 * 
-	 * @param URL
-	 *            component event request URL
-	 * @param parameters
-	 *            object containing additional key/value pairs (optional)
-	 */
-	updateFromURL : function(URL, parameters) {
-
-		var finalParameters = $H( {
-			"t:zoneid" : this.element.id
-		}).update(this.specParameters);
-
-		/* If parameters were supplied, merge them in with the zone id */
-		if (!Object.isUndefined(parameters))
-			finalParameters.update(parameters);
-
-		Tapestry.ajaxRequest(URL, {
-			parameters : finalParameters.toObject(),
-			onSuccess : function(transport) {
-				this.processReply(transport.responseJSON);
-			}.bind(this)
-		});
-	}
-});
-
-Tapestry.FormInjector = Class.create( {
-
-	initialize : function(spec) {
-		this.element = $(spec.element);
-		this.url = spec.url;
-		this.below = spec.below;
-
-		this.showFunc = Tapestry.ElementEffect[spec.show]
-				|| Tapestry.ElementEffect.highlight;
-
-		this.element.trigger = function() {
-
-			var successHandler = function(transport) {
-
-				var reply = transport.responseJSON;
-
-				/*
-				 * Clone the FormInjector element (usually a div) to create the
-				 * new element, that gets inserted before or after the
-				 * FormInjector's element.
-				 */
-				var newElement = new Element(this.element.tagName, {
-					'class' : this.element.className
-				});
-
-				/* Insert the new element before or after the existing element. */
-
-				var param = {};
-				param[this.below ? "after" : "before"] = newElement;
-
-				Tapestry.loadScriptsInReply(reply, function() {
-					/* Add the new element with the downloaded content. */
-
-					this.element.insert(param);
-
-					/*
-					 * Update the empty element with the content from the server
-					 */
-
-					newElement.update(reply.content);
-
-					newElement.id = reply.elementId;
-
-					/*
-					 * Add some animation to reveal it all.
-					 */
-
-					this.showFunc(newElement);
-
-				}.bind(this));
-			}.bind(this);
-
-			Tapestry.ajaxRequest(this.url, successHandler);
-
-			return false;
-
-		}.bind(this);
-	}
-});
-
-Tapestry.ScriptManager = {
-
-	/**
-	 * Complete URLs of virtually loaded scripts (combined scripts loaded as a
-	 * single virtual asset).
-	 */
-	virtualScripts : $A( []),
-
-	initialize : function() {
-
-		/*
-		 * Check to see if document.scripts is supported; if not (for example,
-		 * FireFox), we can fake it.
-		 */
-		this.emulated = false;
-
-		if (!document.scripts) {
-			this.emulated = true;
-
-			document.scripts = new Array();
-
-			$$('script').each(function(s) {
-				document.scripts.push(s);
-			});
-		}
-	},
-
-	loadScript : function(scriptURL, callback) {
-		/* IE needs the type="text/javascript" as well. */
-		var element = new Element('script', {
-			src : scriptURL,
-			type : 'text/javascript'
-		});
-
-		$$("head").first().insert( {
-			bottom : element
-		});
-
-		if (this.emulated)
-			document.scripts.push(element);
-
-		if (Prototype.Browser.IE) {
-			var loaded = false;
-
-			element.onreadystatechange = function() {
-				/* IE may fire either 'loaded' or 'complete', or possibly both. */
-				if (!loaded && this.readyState == 'loaded'
-						|| this.readyState == 'complete') {
-					loaded = true;
-
-					callback.call(this);
-				}
-			};
-
-			return;
-		}
-
-		/* Safari, Firefox, etc. are easier. */
-
-		element.onload = callback.bindAsEventListener(this);
-	},
-
-	/**
-	 * Checks to see if the given collection (of <script> or <style> elements)
-	 * contains the given asset URL.
-	 * 
-	 * @param collection
-	 * @param prop
-	 *            property to check ('src' for script, 'href' to style).
-	 * @param assetURL
-	 *            complete URL (i.e., with protocol, host and port) to the asset
-	 */
-	contains : function(collection, prop, assetURL) {
-		return $A(collection).any(
-				function(element) {
-					var existing = element[prop];
-
-					if (!existing || existing.blank())
-						return false;
-
-					var complete = Prototype.Browser.IE ? Tapestry
-							.rebuildURL(existing) : existing;
-
-					return complete == assetURL;
-				});
-
-		return false;
-	},
-
-	/**
-	 * Add scripts, as needed, to the document, then waits for them all to load,
-	 * and finally, calls the callback function.
-	 * 
-	 * @param scripts
-	 *            Array of scripts to load
-	 * @param callback
-	 *            invoked after scripts are loaded
-	 */
-	addScripts : function(scripts, callback) {
-
-		var scriptsToLoad = [];
-
-		/* scripts may be null or undefined */
-		(scripts || []).each(function(s) {
-			var assetURL = Tapestry.rebuildURL(s);
-
-			/*
-			 * Check to see if the script is already loaded, either as a virtual
-			 * script, or as an individual script src="" element.
-			 */
-			if (Tapestry.ScriptManager.virtualScripts.member(assetURL))
-				return;
-
-			if (Tapestry.ScriptManager.contains(document.scripts, "src",
-					assetURL))
-				return;
-
-			scriptsToLoad.push(assetURL);
-		});
-
-		/*
-		 * Set it up last script to first script. The last script's callback is
-		 * the main callback (the code to execute after all scripts are loaded).
-		 * The 2nd to last script's callback loads the last script. Prototype's
-		 * Array.inject() is effectively the same as Clojure's reduce().
-		 */
-		scriptsToLoad.reverse();
-
-		var topCallback = scriptsToLoad.inject(callback, function(nextCallback,
-				scriptURL) {
-			return function() {
-				Tapestry.ScriptManager.loadScript(scriptURL, nextCallback);
-			};
-		});
-
-		/* Kick it off with the callback that loads the first script. */
-		topCallback.call();
-	},
-
-	addStylesheets : function(stylesheets) {
-		if (!stylesheets)
-			return;
-
-		var head = $$('head').first();
-
-		$(stylesheets).each(
-				function(s) {
-					var assetURL = Tapestry.rebuildURL(s.href);
-
-					if (Tapestry.ScriptManager.contains(document.styleSheets,
-							'href', assetURL))
-						return;
-					var element = new Element('link', {
-						type : 'text/css',
-						rel : 'stylesheet',
-						href : assetURL
-					});
-
-					/*
-					 * Careful about media types, some browser will break if it
-					 * ends up as 'null'.
-					 */
-					if (s.media != undefined)
-						element.writeAttribute('media', s.media);
-
-					head.insert( {
-						bottom : element
-					});
-
-				});
-	}
-};
-
-/**
- * In the spirit of $(), $T() exists to access a hash of extra data about an
- * element. In release 5.1 and prior, a hash attached to the element by Tapestry
- * was returned. In 5.2, Prototype's storage object is returned, which is less
- * likely to cause memory leaks in IE.
- * 
- * @deprecated With no specific replacement. To be removed after Tapestry 5.2.
- * @param element
- *            an element instance or element id
- * @return object Prototype storage object for the element
- */
-function $T(element) {
-	return $(element).getStorage();
-}
-
-Tapestry.onDOMLoaded(Tapestry.onDomLoadedCallback);
-
-/* Ajax code needs to know to do nothing after the window is unloaded. */
-Event.observe(window, "beforeunload", function() {
-	Tapestry.windowUnloaded = true;
-});
diff --git a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/util/PublicUtilStrings.properties b/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/util/PublicUtilStrings.properties
deleted file mode 100644
index e7664eb..0000000
--- a/maint-5-2/tapestry-core/src/main/resources/org/apache/tapestry5/util/PublicUtilStrings.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-duplicate-key=Key %s may not be added with value %s, as an existing value, %s, is already present.
-missing-value=Key for value %s not found. Available values: %s
-missing-enum-value=Input '%s' does not identify a value from enumerated type %s. Available values: %s.
diff --git a/maint-5-2/tapestry-core/src/site/apt/index.apt b/maint-5-2/tapestry-core/src/site/apt/index.apt
deleted file mode 100644
index b485092..0000000
--- a/maint-5-2/tapestry-core/src/site/apt/index.apt
+++ /dev/null
@@ -1,15 +0,0 @@
- ----
- tapestry-core
- ----
- 
-Tapestry Core
-
-  The tapestry-core module provides the interfaces and annotations that form the Tapestry API.
-  
-  tapestry-core is built upon the {{{../tapestry-ioc/index.html}Tapestry IoC Container}}.
-
-
-* Documentation Has Moved
-
-  Most documentation that used to live at this level has {{{../}moved up to the main Tapestry project}}.
-  
diff --git a/maint-5-2/tapestry-core/src/site/site.xml b/maint-5-2/tapestry-core/src/site/site.xml
deleted file mode 100644
index 3cf3a60..0000000
--- a/maint-5-2/tapestry-core/src/site/site.xml
+++ /dev/null
@@ -1,62 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2006, 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Core">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-
-    <version/>
-
-    <body>
-
-
-        <menu ref="parent"/>
-        <!--
-
-       This is probably useful but it drives me crazy whenever I reload a page.
-
-                <head>
-                   <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
-                   <script type="text/javascript">_uacct = "UA-400821-1"; urchinTracker();</script>
-               </head>
-        -->
-        <menu name="Tapestry Core">
-            <item name="Introduction" href="/index.html"/>
-            <item name="Component Reference" href="ref/index.html"/>
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-core/src/tapestry-formatting.xml b/maint-5-2/tapestry-core/src/tapestry-formatting.xml
deleted file mode 100644
index 45401d0..0000000
--- a/maint-5-2/tapestry-core/src/tapestry-formatting.xml
+++ /dev/null
@@ -1,267 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2006 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<profiles version="10">
-<profile name="Tapestry Project" version="10">
-<setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="48"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="next_line"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_comments" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="100"/>
-<setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
-<setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
-<setting id="org.eclipse.jdt.core.formatter.lineSplit" value="100"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
-<setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
-<setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
-<setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
-<setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
-</profile>
-</profiles>
diff --git a/maint-5-2/tapestry-core/src/test/app1/AbstractComponentDemo.tml b/maint-5-2/tapestry-core/src/test/app1/AbstractComponentDemo.tml
deleted file mode 100644
index b84a06d..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/AbstractComponentDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <t:abstractcomponent/>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ActionViaLinkDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ActionViaLinkDemo.tml
deleted file mode 100644
index ac798e4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ActionViaLinkDemo.tml
+++ /dev/null
@@ -1,22 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-
-    <t:if test="message">
-        <p>
-            <strong>
-                <span id="message">${message}</span>
-            </strong>
-        </p>
-    </t:if>
-
-    <p>
-        Update the message:
-
-        <ul>
-            <li>
-                <a href="${actionURL}">via explicit Link creation</a>
-            </li>
-        </ul>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
deleted file mode 100644
index ad877da..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ActivationRequestParameterDemo.tml
+++ /dev/null
@@ -1,35 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>@ActivationRequestParameter Demo</h1>
-
-  <dl>
-    <dt>Click count:</dt>
-    <dd id="click-count">${clickCount}</dd>
-    <dt>Click count set:</dt>
-    <dd id="click-count-set">${clickCountSet}</dd>
-    <dt>Selected click count (via form):</dt>
-    <dd id="selected-click-count">${selectedClickCount}</dd>
-    <dt>Message:</dt>
-    <dd id="message">${message}</dd>
-  </dl>
-
-  <ul>
-    <li>
-      <t:actionlink t:id="increment">increment count</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="setMessage">set message</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="reset">reset</t:actionlink>
-    </li>
-  </ul>
-  
-  <t:form>
-    <t:label for="clickCount">
-    <!-- See, it matches the query parameter name. -->
-    <t:select t:id="clickCount" value="selectedClickCount" model="clickCountModel"/>
-    <input type="submit" value="Update"/>
-    </t:label>
-  </t:form>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/AddedGridColumnsDemo.tml b/maint-5-2/tapestry-core/src/test/app1/AddedGridColumnsDemo.tml
deleted file mode 100644
index 206ee3e..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/AddedGridColumnsDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Added Columns Grid Demo</h1>
-
-    <table t:id="grid">
-        <t:parameter name="viewlinkcell">
-            <t:actionlink t:id="view" context="track.title">view</t:actionlink>
-        </t:parameter>
-    </table>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/AssetProtectionDemo.tml b/maint-5-2/tapestry-core/src/test/app1/AssetProtectionDemo.tml
deleted file mode 100644
index bee9c10..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/AssetProtectionDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <a href="${asset:context:availablefile.txt}">Available File</a>
-    <a href="${asset:context:WEB-INF/unavailable.css}">Unavailable CSS</a>
-    <a href="${asset:context:WEB-INF}">WEB-INF</a>
-    <a href="${asset:context:WEB-INF/}">WEB-INF/</a>
-    <a href="${asset:classpath:/org/apache/tapestry5/integration/app1/pages/unavailablefile.txt}">Unavailable File</a>
-    <a href="${asset:classpath:/org/apache/tapestry5/integration/app1/pages/availablefile2.txt}">Available File2</a>
-    <a href="${asset:context:META-INF}">META-INF</a>
-    <a href="${asset:context:META-INF/}">META-INF/</a>
-    <a href="${asset:context:META-INF/unavailable2.txt}">unavailable2.txt</a>
-    <a href="${asset:context:AssetProtectionDemo.tml}">tml file</a>
-    <a href="${asset:context:music/MusicDetails.tml}">nested tml file</a>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/AttributeExpansionsDemo.tml b/maint-5-2/tapestry-core/src/test/app1/AttributeExpansionsDemo.tml
deleted file mode 100644
index 51eabaa..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/AttributeExpansionsDemo.tml
+++ /dev/null
@@ -1,25 +0,0 @@
-<t:border  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  
-  <h1>Expansions in Attributes</h1>
-  
-  <style>
-    DIV.red { font-weight: bold; color: red; }
-    
-    DIV.goober-red { font-style: italic; color: #FF9F2F; }
- 
-    DIV.goober-green { font-size: x-large; color: green; }
-    
-  </style>
-  
-  <div id="mixed-expansion" style="color: ${colorscheme}">This text is blue, thanks to property colorscheme.</div>
-  
-  <div id="single" class="${styleClass}">This text is red and bold, thanks to the class attribute, set from property styleClass.</div>
-  
-  <div id="consecutive" class="${message:cssclassprefix}${styleClass}">And this text is italic and orange, from a complex CSS class attribute, built from multiple expansions.</div>
-  
-  <div id="trailer" class="${message:cssclassprefix}green">This text is green and large, and tests a trailing literal string within an attribute with an expansion.</div>
-  
-  <div id="formal"><t:echo value="${prefix}${message:alert}"/></div>
-  
-  <!-- A comment! -->
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/AutocompleteDemo.tml b/maint-5-2/tapestry-core/src/test/app1/AutocompleteDemo.tml
deleted file mode 100644
index 8dfdfee..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/AutocompleteDemo.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Autocomplete Mixin Demo</h1>
-
-    <t:form>
-        <t:errors/>
-
-        <div class="t-beaneditor">
-            <div class="t-beaneditor-row">
-                <t:label for="title"/>
-                <t:textfield t:id="title" t:mixins="autocomplete" tokens=",;" size="60"/>
-            </div>
-
-            <div class="t-beaneditor-row">
-                <input type="submit" value="Show Track"/>
-            </div>
-        </div>
-    </t:form>
-
-
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BadMixinIdDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BadMixinIdDemo.tml
deleted file mode 100644
index 1220ce2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BadMixinIdDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <t:form unknownmixinid.foo="bar"/>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanDisplayEnumDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BeanDisplayEnumDemo.tml
deleted file mode 100644
index e914752..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanDisplayEnumDemo.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <h1>BeanDisplay Enum Demo</h1>
-    
-    <t:beandisplay object="prop:object" />
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml
deleted file mode 100644
index 79696a3..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanEditCalendarDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border"
-  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
-  <h1>BeanEditor Calendar Demo</h1>
-
-  <t:beaneditform t:id="holder" />
-
-  <hr />
-
-  <t:actionlink t:id="clear">clear</t:actionlink>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanEditDateDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BeanEditDateDemo.tml
deleted file mode 100644
index d0cee64..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanEditDateDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border"
-  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>BeanEditor Date Demo</h1>
-
-  <t:beaneditform t:id="reminder" />
-
-  <hr />
-
-  <t:actionlink t:id="clear">clear</t:actionlink>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanEditRemoveReorder.tml b/maint-5-2/tapestry-core/src/test/app1/BeanEditRemoveReorder.tml
deleted file mode 100644
index f5100f4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanEditRemoveReorder.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <h1>${pageTitle}</h1>
-
-  <form t:id="registrationData" submitlabel="Register" exclude="birthYear" reorder="lastname,firstname">
-
-    <t:parameter name="firstName">
-      <t:label for="firstName"/>
-      <input t:type="TextField" t:id="firstName" value="registrationData.firstName" size="40"/>
-      (First Name is Required) </t:parameter>
-
-  </form>
-
-  <p>[<a t:type="ActionLink" t:id="clear">Clear Data</a>]</p>
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanEditorBeanEditContext.tml b/maint-5-2/tapestry-core/src/test/app1/BeanEditorBeanEditContext.tml
deleted file mode 100644
index c698295..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanEditorBeanEditContext.tml
+++ /dev/null
@@ -1,25 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>BeanEditor Override Demo</h1>
-
-    <p>Demonstrates that the BeanEditor places a BeanEditContext into the environment.</p>
-
-    <form t:id="form">
-        <t:errors/>
-
-        <div class="t-beaneditor">
-            <div t:id="editor">
-                <t:parameter name="firstName">
-                    <t:BeanEditContextVerifier/>
-                    [FirstName Property Editor Override]
-                </t:parameter>
-            </div>
-        </div>
-
-        <input type="submit" value="Register"/>
-    </form>
-
-    <p>[<t:actionlink t:id="clear">Clear Data</t:actionlink>]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanEditorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BeanEditorDemo.tml
deleted file mode 100644
index 7bc1a28..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanEditorDemo.tml
+++ /dev/null
@@ -1,39 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <h1>${pageTitle}</h1>
-
-  <p id="message">
-    <strong>${message}</strong>
-  </p>
-
-  <form t:id="registrationData" submitlabel="Register" cancel="true">
-
-    <t:parameter name="firstName">
-      <t:label for="firstName"/>
-      <input t:type="TextField" t:id="firstName" value="registrationData.firstName" size="40"/>
-      (First Name is Required)
-    </t:parameter>
-
-  </form>
-
-  <p>
-    [
-    <a t:type="ActionLink" t:id="clear">Clear Data</a>
-    ]
-  </p>
-
-  <h2>Second Form</h2>
-
-  <p>
-    Used to test tabbing
-    <em>between</em>
-    forms.
-  </p>
-
-  <p>
-    <t:form t:id="search">
-      <t:label for="searchTerm"/>
-      <t:textfield t:id="searchTerm"/>
-      <input type="submit"/>
-    </t:form>
-  </p>
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BeanEditorOverride.tml b/maint-5-2/tapestry-core/src/test/app1/BeanEditorOverride.tml
deleted file mode 100644
index 6e7df53..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BeanEditorOverride.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>BeanEditor Override Demo</h1>
-
-    <p>Demonstrates that the BeanEditor properly supports overrides of its property editors.</p>
-
-    <form t:id="form">
-        <t:errors/>
-
-        <div class="t-beaneditor">
-            <div t:id="editor">
-                <t:parameter name="firstName">
-                    <t:label for="firstName"/>
-                    <t:textfield t:id="firstName" value="registrationData.firstName"/>
-                    [FirstName Property Editor Override]
-                </t:parameter>
-            </div>
-        </div>
-
-        <input type="submit" value="Register"/>
-    </form>
-
-    <p>[<t:actionlink t:id="clear">Clear Data</t:actionlink>]
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/BlankPasswordDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BlankPasswordDemo.tml
deleted file mode 100644
index 05566fe..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BlankPasswordDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-
-    <h1>Blank Password Demo</h1>
-
-    <p>
-        The password is:
-        <span id="visiblepassword">${password}</span>
-    </p>
-
-    <t:form>
-        <t:errors/>
-        <t:label for="password"/>
-        <t:passwordfield t:id="password"/>
-        <input type="submit" value="Update"/>
-    </t:form>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/BlockCaller.tml b/maint-5-2/tapestry-core/src/test/app1/BlockCaller.tml
deleted file mode 100644
index 975515c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BlockCaller.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Block Caller Demo</h1>
-
-    <p>This page demonstrates how action links can work correctly even when located outside the
-        active page.
-    </p>
-
-    <p>
-        Page activation context:
-        <span id="context">${activationContext}</span>
-    </p>
-
-
-    <t:delegate to="block"/>
-
-    <p>
-        [<t:pagelink page="blockcaller">refresh</t:pagelink>]
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BlockDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BlockDemo.tml
deleted file mode 100644
index eb0b234..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BlockDemo.tml
+++ /dev/null
@@ -1,30 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Block Demo</h1>
-
-    <p>This page demonstrates how blocks may be used to contain text and other elements and control
-        when and if they are rendered.
-    </p>
-
-    <t:form>
-        <t:select t:id="blockName" model="',fred,barney'" onchange="this.form.submit();"/>
-        <t:label for="blockName">Block to display</t:label>
-    </t:form>
-
-    <p>The block: [<t:render value="blockToRender"/>]
-    </p>
-    <p>
-        The block (as string):
-        <span id="blockAsString">${blockToRender}</span>
-    </p>
-
-    <t:block id="fred">Block fred.</t:block>
-    <t:block id="barney">Block barney.</t:block>
-
-    <hr/>
-
-    You can also render a block before it is defined: [<t:delegate to="block:wilma"/>].
-
-    <t:block id="wilma">Block wilma</t:block>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/BlockHolder.tml b/maint-5-2/tapestry-core/src/test/app1/BlockHolder.tml
deleted file mode 100644
index dfb1962..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BlockHolder.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:block id="links">
-        <ul>
-            <li t:type="loop" t:source="1..3" value="index">
-                <t:actionlink t:id="link" context="index">${index}</t:actionlink>
-            </li>
-        </ul>
-    </t:block>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/BooleanDemo.tml b/maint-5-2/tapestry-core/src/test/app1/BooleanDemo.tml
deleted file mode 100644
index 4e5c434..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/BooleanDemo.tml
+++ /dev/null
@@ -1,27 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Boolean Property Access Demo</h1>
-
-    <p>
-        Both
-        <code>is</code>
-        and
-        <code>get</code>
-        prefixes work.
-    </p>
-
-    <dl>
-        <dt>flagUsingGet</dt>
-        <dd id="usingGet">${flagUsingGet}</dd>
-        <dt>flagUsingIs</dt>
-        <dd id="usingIs">${flagUsingIs}</dd>
-    </dl>
-
-    <p>
-        <t:actionlink t:id="set">set</t:actionlink>
-        |
-        <t:actionlink t:id="clear">clear</t:actionlink>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/CancelDemo.tml b/maint-5-2/tapestry-core/src/test/app1/CancelDemo.tml
deleted file mode 100644
index 33fe400..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/CancelDemo.tml
+++ /dev/null
@@ -1,16 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Cancel Demo</h1>
-
-  <t:form t:id="form">
-    <t:errors/>
-    <t:label for="requiredText"/>
-    <t:textfield t:id="requiredText"/>
-
-    <br/>
-
-    <t:submit mode="cancel" t:id="cancel" value="Cancel Form"/>
-    <t:linksubmit mode="cancel" t:id="cancelLink">Cancel Form</t:linksubmit>
-
-  </t:form>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/CancelDemoMessage.tml b/maint-5-2/tapestry-core/src/test/app1/CancelDemoMessage.tml
deleted file mode 100644
index 687ee69..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/CancelDemoMessage.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Cancel Demo Message</h1>
-
-  <p>
-    <strong id="message">${message}</strong>
-  </p>
-
-  <p>
-    <t:pagelink page="canceldemo">back</t:pagelink>
-  </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ClassLoaderInspect.tml b/maint-5-2/tapestry-core/src/test/app1/ClassLoaderInspect.tml
deleted file mode 100644
index 253d6b3..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ClassLoaderInspect.tml
+++ /dev/null
@@ -1,70 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Class Loader Inspection</h1>
-
-
-  <dl>
-    <dt>Context ClassLoader</dt>
-    <dd>${classLoader} [${classLoader.class.name}]</dd>
-
-    <dt> Instance ClassLoader </dt>
-    <dd>${class.classLoader}</dd>
-
-  </dl>
-
-  <h2>Class Loader Hierarchy</h2>
-
-  <ul>
-    <t:loop source="loaders" value="loader">
-      <li>${loader}</li>
-    </t:loop>
-  </ul>
-
-  <h2> Find Resources </h2>
-
-  <form t:id="search">
-    <t:errors/>
-    <t:label for="resource"/>: <input t:id="resource" t:type="TextField" size="50"
-      validate="required"/>
-    <br/>
-    <input type="submit"/>
-  </form>
-
-  <t:if test="showMatches">
-
-    <h3>${listSize} Matches</h3>
-
-    <ul>
-      <t:loop source="URLs" value="URL">
-        <li>${URL} <dl>
-
-            <dt>Connection</dt>
-            <dd>${URLConnection} [${URLConnection.class.name}]</dd>
-            <dt>Content</dt>
-            <dd>${URL.content}</dd>
-
-            <dt>Stream </dt>
-            <dd>
-              <pre>
-${contentStreamContents}
-</pre>
-            </dd>
-
-            <dt> JAR Entries </dt>
-
-            <dd>
-              <ul>
-                <t:loop source="jarEntries" value="jarEntry">
-                  <li>${jarEntry}</li>
-                </t:loop>
-              </ul>
-            </dd>
-
-          </dl>
-        </li>
-      </t:loop>
-    </ul>
-
-  </t:if>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/CleanCacheDemo.tml b/maint-5-2/tapestry-core/src/test/app1/CleanCacheDemo.tml
deleted file mode 100644
index 379ec4e..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/CleanCacheDemo.tml
+++ /dev/null
@@ -1,24 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-
-    <p>
-        The following two numbers will be identical, due to @Cache:
-    </p>
-
-    <div t:type="zone" t:id="aZone">
-        <ul>
-            <li id="time1">${timeNanos}</li>
-            <li id="time2">${timeNanos}</li>
-        </ul>
-
-
-    </div>
-
-    <p>
-        Clicking
-        <a t:type="actionlink" t:id="updateZone" href="#" t:zone="aZone">update</a>
-        will refresh the numbers.
-    </p>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ClientFormatDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ClientFormatDemo.tml
deleted file mode 100644
index 236bc26..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ClientFormatDemo.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:beaneditform object="this"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ClientNumericValidationDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ClientNumericValidationDemo.tml
deleted file mode 100644
index 1880d00..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ClientNumericValidationDemo.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <h1>Client-Side Locale-specific Numeric Validation</h1>
-
-    <t:beaneditform t:id="form" object="this"/>
-
-    <hr/>
-
-    <dl>
-        <dt>longValue</dt>
-        <dd id="outputLongValue">${longValue}</dd>
-        <dt>doubleValue</dt>
-        <dd id="outputDoubleValue">${doubleValue}</dd>
-    </dl>
-
-    <p>
-        <t:actionlink t:id="reset">reset</t:actionlink>
-        |
-        <t:actionlink t:id="german">switch to German</t:actionlink>
-    </p>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ClientPersistenceDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ClientPersistenceDemo.tml
deleted file mode 100644
index f9fb94b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ClientPersistenceDemo.tml
+++ /dev/null
@@ -1,32 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-<h1>Client Persistence Demo</h1>
-
-
-  <p>
-    Persisted value: [${persistedValue}]
-  </p>
-  
-  <p>
-    Session: [${sessionExists}]
-  </p>
-
-
-  <p>
-    <t:actionlink t:id="nixSession">nix session</t:actionlink>
-  </p>
-
-  <p>
-    <t:actionlink t:id="storeString">store string</t:actionlink>
-  </p>
-  
-  <p>
-    <t:actionlink t:id="storeBad">store non-serializable</t:actionlink>
-  </p>
-  
-  <p>
-    <t:pagelink page="clientpersistencedemo">refresh</t:pagelink>
-  </p>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ComponentParameter.tml b/maint-5-2/tapestry-core/src/test/app1/ComponentParameter.tml
deleted file mode 100644
index f244118..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ComponentParameter.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Component as Parameter</h1>
-
-    <p>Tests the ability to use a component type as a parameter.</p>
-
-    <t:if test="message">
-        <p>${message}</p>
-    </t:if>
-
-    <t:block>
-        <t:actionlink t:id="blockAction">click me</t:actionlink>
-    </t:block>
-
-    <t:actionlinkindirect component="blockAction"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml
deleted file mode 100644
index 561023a..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ComponentsNotInTemplateDemo.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Components Not In Template Demo</h1>
-
-    <p>
-        This is a very common example where there's an @Component BeanEditForm on field form, and a t:form
-        here.
-    </p>
-
-    <!-- This will get an id of "form_0" -->
-    <t:form/>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml b/maint-5-2/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
deleted file mode 100644
index 00882bc..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DateFieldAjaxFormLoop.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>DateField in AjaxFormLoop</h1>
-
-    <t:form>
-
-        <div t:type="ajaxformloop" t:id="loop" source="dateHolders" value="current" encoder="dateHolderConverter">
-
-            <t:datefield value="current.date"/>
-            <t:removerowlink>remove</t:removerowlink>
-
-        </div>
-
-        <p>
-            <input type="submit" value="Go"/>
-        </p>
-    </t:form>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/DateFieldDemo.tml b/maint-5-2/tapestry-core/src/test/app1/DateFieldDemo.tml
deleted file mode 100644
index f57945f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DateFieldDemo.tml
+++ /dev/null
@@ -1,47 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>DateField Demo</h1>
-
-    <t:form>
-        <t:errors/>
-
-        <div class="t-beaneditor">
-
-            <div class="t-beaneditor-row">
-                <t:label for="birthday"/>
-                <t:datefield format="d MMM yyyy" hidetextfield="true" t:id="birthday"/>
-            </div>
-
-            <div class="t-beaneditor-row">
-                <t:label for="asteroidImpact"/>
-                <t:datefield t:id="asteroidImpact"/>
-            </div>
-
-
-            <div class="t-beaneditor-row">
-                <input type="submit" value="Go"/>
-            </div>
-
-        </div>
-    </t:form>
-
-    <p>
-        <t:actionlink t:id="clear">clear</t:actionlink>
-        <t:actionlink t:id="english">english</t:actionlink>
-        <t:actionlink t:id="french">french</t:actionlink>
-    </p>
-
-    <t:if test="birthday">
-        <hr/>
-        <p>
-            Birthday: [<t:output value="birthday" format="dateFormat"/>]
-        </p>
-
-        <p>
-            Impact: [<t:output value="asteroidImpact" format="dateFormat"/>]
-        </p>
-    </t:if>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/DecorateComponentEventLinkDemo.tml b/maint-5-2/tapestry-core/src/test/app1/DecorateComponentEventLinkDemo.tml
deleted file mode 100644
index ad26225..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DecorateComponentEventLinkDemo.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Decorate Component Event Link Demo</h1>
-
-	<p>Component Event Link Decorated: ${decorated}</p>
-    
-    <p><t:actionlink>refresh</t:actionlink></p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/DecoratePageRenderLinkDemo.tml b/maint-5-2/tapestry-core/src/test/app1/DecoratePageRenderLinkDemo.tml
deleted file mode 100644
index bb01c0e..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DecoratePageRenderLinkDemo.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Decorate Page Render Link Demo</h1>
-
-    <p>Page Render Link Decorated: ${decorated}</p>
-	
-    <p><t:pageLink page="decoratepagerenderlinkdemo">refresh</t:pageLink></p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/DeleteFromGridDemo.tml b/maint-5-2/tapestry-core/src/test/app1/DeleteFromGridDemo.tml
deleted file mode 100644
index b9e667e..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DeleteFromGridDemo.tml
+++ /dev/null
@@ -1,15 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>ToDo Listing</h1>
-
-    <t:grid rowsperpage="5" source="items" row="item">
-        <t:parameter name="titlecell">
-            <t:actionlink t:id="delete" context="item.id">${item.title}</t:actionlink>
-        </t:parameter>
-    </t:grid>
-
-    <p>
-        <t:actionlink t:id="setup">setup the database</t:actionlink>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/DisabledFields.tml b/maint-5-2/tapestry-core/src/test/app1/DisabledFields.tml
deleted file mode 100644
index 82ce557..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DisabledFields.tml
+++ /dev/null
@@ -1,47 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-
-    <h1>Disabled Fields Demo</h1>
-
-    <t:form>
-
-        <t:textfield t:id="textfield" value="stringValue" disabled="true"/>
-        <br/>
-        <t:passwordfield t:id="passwordfield" value="stringValue" disabled="true"/>
-        <br/>
-        <t:textarea t:id="textarea" value="stringValue" disabled="true"/>
-        <br/>
-        <t:checkbox t:id="checkbox" value="flag" disabled="true"/>
-        <br/>
-        <t:select t:id="select" value="stringValue" disabled="true" model="literal:Up,Down,Strange,Charm,Bottom,Top"/>
-        <br/>
-        <t:radiogroup t:id="group1" value="stringValue" disabled="true">
-            <t:radio t:id="radio1" value="literal:Right"/>
-        </t:radiogroup>
-
-        <br/>
-
-        <t:radiogroup t:id="group2" value="stringValue">
-            <t:radio t:id="radio2" disabled="true" value="literal:Left"/>
-        </t:radiogroup>
-
-        <br/>
-
-        <t:datefield t:id="datefield" value="date" disabled="true"/>
-
-        <br/>
-
-        <t:palette t:id="palette" selected="values" disabled="true" encoder="encoder"
-                   model="literal:Fred,Barney,Wilma,Betty"/>
-
-        <br/>
-
-        <t:submit t:id="submit" disabled="true" value="Disabled Submit"/>
-        <input type="submit" value="Continue"/>
-    </t:form>
-
-    <p>
-        Submit id: ${submit.clientId}
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/DiscardAfterDemo.tml b/maint-5-2/tapestry-core/src/test/app1/DiscardAfterDemo.tml
deleted file mode 100644
index 9bfb2b6..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DiscardAfterDemo.tml
+++ /dev/null
@@ -1,19 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-
-    <h1>@DiscardAfter Demo</h1>
-
-    <t:form>
-
-        <t:textfield t:id="stringValue"/>
-
-        <t:submit t:id="keep" value="Keep Values"/>
-        <t:submit t:id="discard" value="Discard Values"/>
-        <t:submit t:id="discardWithCheckedException" value="Discard Values With Checked Exception"/>
-    </t:form>
-
-    <p>
-        Value is: '${stringValue}'
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/DupeMixinDemo.tml b/maint-5-2/tapestry-core/src/test/app1/DupeMixinDemo.tml
deleted file mode 100644
index d2088c2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DupeMixinDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <t:form t:mixins="renderInformals"/>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/DuplicateIds.tml b/maint-5-2/tapestry-core/src/test/app1/DuplicateIds.tml
deleted file mode 100644
index 63296a2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/DuplicateIds.tml
+++ /dev/null
@@ -1,19 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Duplicate IDs Demo</h1>
-
-    <p>
-        <t:pagelink t:id="index" page="index">Contrived link to index.</t:pagelink>
-    </p>
-
-    <p>
-      Some spacer text to separate the second link with
-      the same ID from the original.  This will help
-      illustrate the value in highlighting both locations
-      where a given ID is used.
-    </p>
-
-    <p>
-        <t:pagelink t:id="index" page="index">Link with duplicate ID.</t:pagelink>
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/EmbeddedComponentTypeConflict.tml b/maint-5-2/tapestry-core/src/test/app1/EmbeddedComponentTypeConflict.tml
deleted file mode 100644
index 05d3dbc..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/EmbeddedComponentTypeConflict.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <input t:type="passwordfield" t:id="input"/>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/EmptyLoopDemo.tml b/maint-5-2/tapestry-core/src/test/app1/EmptyLoopDemo.tml
deleted file mode 100644
index dca426c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/EmptyLoopDemo.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Empty Loop Demo</h1>
-
-
-    <div id="first">
-        <t:loop source="null"/>
-    </div>
-
-    <div id="second">
-        <t:loop source="null" empty="Source is null."/>
-    </div>
-
-    <t:loop source="emptyList">
-        <t:parameter name="empty">
-            <div id="third">Source is the empty list.</div>
-        </t:parameter>
-    </t:loop>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/EventHandlerDemo.tml b/maint-5-2/tapestry-core/src/test/app1/EventHandlerDemo.tml
deleted file mode 100644
index eafceb9..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/EventHandlerDemo.tml
+++ /dev/null
@@ -1,32 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>EventHandler Demo</h1>
-
-    <t:if test="methodNames">
-        <p>Event method names:
-            <span id="methodNames">${methodNames}</span>
-        </p>
-    </t:if>
-
-
-    <p>[<t:pagelink page="eventhandlerdemo" context="'anything'">clear</t:pagelink>]
-    </p>
-
-
-    <ul>
-        <li>
-            <t:actionlink t:id="wilma">No Context</t:actionlink>
-        </li>
-        <li>
-            <t:actionlink t:id="barney" context="literal:one">Single context value</t:actionlink>
-        </li>
-        <li>
-            <t:actionlink t:id="betty" context="twoContext">Two value context</t:actionlink>
-        </li>
-        <li>
-            <t:actionlink context="'two'" t:id="fred">Two value context (from fred)</t:actionlink>
-        </li>
-    </ul>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/EventMethodTranslate.tml b/maint-5-2/tapestry-core/src/test/app1/EventMethodTranslate.tml
deleted file mode 100644
index 8049ff2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/EventMethodTranslate.tml
+++ /dev/null
@@ -1,28 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Event Handler Method Translate</h1>
-
-    <t:form clientvalidation="false">
-
-        <t:errors/>
-
-        <div class="t-beaneditor">
-
-            <div class="t-beaneditor-row">
-                <t:label for="count"/>
-                <t:textfield t:id="count"/>
-
-            </div>
-
-            <div class="t-beaneditor-row">
-                <input type="submit" value="Update"/>
-            </div>
-        </div>
-    </t:form>
-
-    <hr/>
-
-    <p>
-        Count: [${count}]
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/ExceptionEventDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ExceptionEventDemo.tml
deleted file mode 100644
index 6f2795a..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ExceptionEventDemo.tml
+++ /dev/null
@@ -1,28 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Exception Event Demo</h1>
-
-    <t:if test="message">
-        <p id="message">
-            ${message}
-        </p>
-    </t:if>
-
-
-    <t:pagelink page="ExceptionEventDemo" context="invalidContext">force invalid activation context</t:pagelink>
-
-    <br/>
-
-    <t:actionlink t:id="fail" context="invalidContext">force invalid event context</t:actionlink>
-
-
-    <br/>
-
-    <p>
-        Exception interception: ${intercept} --
-        <t:actionlink t:id="enable">enable</t:actionlink>
-        /
-        <t:actionlink t:id="disable">disable</t:actionlink>
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/FlashDemo.tml b/maint-5-2/tapestry-core/src/test/app1/FlashDemo.tml
deleted file mode 100644
index fb25ef5..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FlashDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Flash Demo</h1>
-
-    <p>
-        The message: [${message}]
-    </p>
-
-    <p>
-        <a t:type="ActionLink" t:id="show">show the message</a>
-    </p>
-
-    <p>
-        <a t:id="refresh" t:type="PageLink" page="FlashDemo">refresh the page</a>
-    </p>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/FormEncodingType.tml b/maint-5-2/tapestry-core/src/test/app1/FormEncodingType.tml
deleted file mode 100644
index e76a3a1..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FormEncodingType.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  
-  <h1>Form Encoding Type Demo</h1>
-
-  
-  <t:form>
-
-    <p>
-      Not much to see here, unless you check the DOM.
-    </p>
-
-    <t:delegate to="forceEncodingType"/>
-    
-  </t:form>
-
-  
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/FormFieldOutsideForm.tml b/maint-5-2/tapestry-core/src/test/app1/FormFieldOutsideForm.tml
deleted file mode 100644
index 3ed5946..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FormFieldOutsideForm.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Form Field Outside Form</h1>
-
-    <t:textfield value="quantity" size="3"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/FormFragmentDemo.tml b/maint-5-2/tapestry-core/src/test/app1/FormFragmentDemo.tml
deleted file mode 100644
index ec568c8..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FormFragmentDemo.tml
+++ /dev/null
@@ -1,70 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <h1>Form Fragment Demo</h1>
-
-  <form t:id="form">
-
-    <t:errors/>
-
-    <div class="t-beaneditor">
-
-      <div class="t-beaneditor-row">
-        <t:label for="name"/>
-        <t:textfield t:id="name" value="subscribe.name"/>
-      </div>
-
-      <t:checkbox t:id="subscribeToEmail" t:mixins="triggerfragment" fragment="showEmail"/>
-      <t:label for="subscribeToEmail">Subscribe to Email?</t:label>
-
-      <t:formfragment t:id="showEmail" visible="subscribeToEmail" hide="fade">
-        <div class="t-beaneditor-row">
-          <t:label for="email"/>
-          <t:textfield t:id="email" value="subscribe.email"/>
-        </div>
-      </t:formfragment>
-
-      <br/>
-
-      <t:radiogroup value="codeVisible">
-        <t:radio t:id="on" label="On" value="true"/>
-        <t:label for="on"/>
-        <t:radio t:id="off" label="Off" t:mixins="triggerfragment" fragment="codeFragment"
-          invert="true" value="false"/>
-        <t:label for="off"/>
-      </t:radiogroup>
-
-
-      <t:formfragment t:id="codeFragment" visible="codeVisible">
-        <div class="t-beaneditor-row">
-          <t:label for="code"/>
-          <t:textfield t:id="code" value="subscribe.code"/>
-        </div>
-      </t:formfragment>
-
-
-      <br/>
-
-      <t:checkbox t:id="subVisible" t:mixins="triggerfragment" fragment="editSub"/>
-      <t:label for="subVisible">
-        Edit Sub? (whatever that is)</t:label>
-
-      <t:formfragment t:id="editSub" visible="subVisible" alwayssubmit="true" hide="fade">
-        <div class="t-beaneditor-row">
-          <t:label for="sub"/>
-          <t:textfield t:id="sub" value="subscribe.sub"/>
-        </div>
-      </t:formfragment>
-
-
-      <div class="t-beaneditor-row">
-        <input type="submit" value="Subscribe"/>
-      </div>
-
-    </div>
-
-
-    <p>
-      <t:actionlink t:id="clear">Clear</t:actionlink>
-    </p>
-
-  </form>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/FormFragmentOutput.tml b/maint-5-2/tapestry-core/src/test/app1/FormFragmentOutput.tml
deleted file mode 100644
index bc0cf26..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FormFragmentOutput.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Form Fragment Demo</h1>
-
-
-    <dl>
-        <dt>Name</dt>
-        <dd id="name">${subscribe.name}</dd>
-        <dt>Email</dt>
-        <dd id="email">${subscribe.email}</dd>
-        <dt>Code</dt>
-        <dd id="code">${subscribe.code}</dd>
-        <dt>Sub</dt>
-        <dd id="sub">${subscribe.sub}</dd>
-    </dl>
-
-
-    <p>
-        <t:pagelink page="formfragmentdemo">Back</t:pagelink>
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/FormInjectorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/FormInjectorDemo.tml
deleted file mode 100644
index 3656ee4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FormInjectorDemo.tml
+++ /dev/null
@@ -1,36 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>FormInjector Demo (now including AjaxFormLoop)</h1>
-
-    <t:form>
-
-        <ul>
-            <li t:id="loop" t:type="AjaxFormLoop" source="doubleItems" value="item" encoder="encoder"
-                context="demoContextValue">
-                <t:submitnotifier>
-                    <t:textfield t:id="value" value="item.value"/>
-                    <t:removerowlink>remove</t:removerowlink>
-                </t:submitnotifier>
-                <t:parameter name="addRow">
-                    <t:addrowlink>Add a row</t:addrowlink>
-                </t:parameter>
-            </li>
-        </ul>
-
-        <div class="t-beaneditor-row">
-            <input type="submit" value="Sum up the values"/>
-        </div>
-
-    </t:form>
-
-    <p>
-        Current sum:
-        <span id="sum">${sum}</span>
-    </p>
-
-    <h2>Data</h2>
-
-    <t:grid source="doubleItems"/>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/FormZoneDemo.tml b/maint-5-2/tapestry-core/src/test/app1/FormZoneDemo.tml
deleted file mode 100644
index 0e6692b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/FormZoneDemo.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="default">
-    <h1>Form Zone Demo</h1>
-
-    <t:form zone="valueZone">
-
-        <t:textfield t:id="longValue"/>
-        <br/>
-        <input type="submit" value="Submit"/>
-
-        <t:zone t:id="valueZone">
-            <t:if test="longValue">
-                <p>Submitted value:
-                    <span id="outputvalue">
-                        <t:outputraw value="longValue"/>
-                    </span>
-                </p>
-            </t:if>
-        </t:zone>
-    </t:form>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/GridDemo.tml b/maint-5-2/tapestry-core/src/test/app1/GridDemo.tml
deleted file mode 100644
index 05a60f6..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/GridDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Grid Demo</h1>
-
-    <table t:id="grid" source="tracks" row="track">
-        <t:parameter name="ratingheader">
-            <t:actionlink t:id="sortRating">Sort Rating</t:actionlink>
-        </t:parameter>
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-    </table>
-
-    <p>
-        [<t:actionlink t:id="reset">reset the Grid</t:actionlink>]
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/GridEnumDemo.tml b/maint-5-2/tapestry-core/src/test/app1/GridEnumDemo.tml
deleted file mode 100644
index 4d959e8..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/GridEnumDemo.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <h1>Grid Enum Demo</h1>
-    
-    <table t:type="Grid" source="database.findAll()"/>
-    
-    <p>
-        [<a t:type="ActionLink" t:id="reset">reset</a>]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/GridFormDemo.tml b/maint-5-2/tapestry-core/src/test/app1/GridFormDemo.tml
deleted file mode 100644
index abadb39..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/GridFormDemo.tml
+++ /dev/null
@@ -1,38 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Grid Form Demo</h1>
-
-
-    <t:form>
-
-        <t:errors/>
-
-        <table t:type="Grid" source="items" row="item" pagerposition="top"
-               add="id" reorder="id,title,urgency"
-               rowsperpage="5">
-
-            <t:parameter name="idCell">${item.id}</t:parameter>
-
-            <t:parameter name="titleCell">
-                <t:textfield t:id="title" value="item.title"/>
-            </t:parameter>
-
-            <t:parameter name="urgencyCell">
-                <t:select t:id="urgency" value="item.urgency"/>
-            </t:parameter>
-
-        </table>
-
-        <p>
-            <input type="submit" value="Update Items"/>
-        </p>
-    </t:form>
-
-
-    <p>
-        [
-        <a t:type="ActionLink" t:id="reset">reset</a>
-        ]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/GridFormEncoderDemo.tml b/maint-5-2/tapestry-core/src/test/app1/GridFormEncoderDemo.tml
deleted file mode 100644
index ebb714f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/GridFormEncoderDemo.tml
+++ /dev/null
@@ -1,38 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Grid Form Encoder Demo</h1>
-
-
-    <t:form>
-
-        <t:errors/>
-
-        <table t:id="grid" t:type="Grid" source="items" row="item" pagerposition="top"
-               add="id" reorder="id,title,urgency"
-               rowsperpage="5">
-
-            <t:parameter name="idCell">${item.id}</t:parameter>
-
-            <t:parameter name="titleCell">
-                <t:textfield t:id="title" value="item.title"/>
-            </t:parameter>
-
-            <t:parameter name="urgencyCell">
-                <t:select t:id="urgency" value="item.urgency"/>
-            </t:parameter>
-
-        </table>
-
-        <p>
-            <input type="submit" value="Update Items"/>
-        </p>
-    </t:form>
-
-
-    <p>
-        [
-        <a t:type="ActionLink" t:id="reset">reset</a>
-        ]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/GridRemoveReorderDemo.tml b/maint-5-2/tapestry-core/src/test/app1/GridRemoveReorderDemo.tml
deleted file mode 100644
index 7164142..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/GridRemoveReorderDemo.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Grid Remove/Reorder Demo</h1>
-
-    <table t:id="grid" source="tracks" row="track" remove="playCount" reorder="rating,title">
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-    </table>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/GridSetDemo.tml b/maint-5-2/tapestry-core/src/test/app1/GridSetDemo.tml
deleted file mode 100644
index 61fa314..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/GridSetDemo.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Grid Set Demo</h1>
-
-    <table t:type="Grid" source="tracks" row="track" informal="supported">
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-    </table>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/HasBodyDemo.tml b/maint-5-2/tapestry-core/src/test/app1/HasBodyDemo.tml
deleted file mode 100644
index ff7d104..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/HasBodyDemo.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Has Body Demo</h1>
-
-    <p>
-        <span t:type="any" t:id="nobody"/>
-
-        <span t:type="any" t:id="somebody">Body inside component 'somebody'.</span>
-    </p>
-
-    <dl>
-        <dt>Component nobody</dt>
-        <dd id="nobody">${nobody.componentResources.hasBody()}</dd>
-        <dt>Component somebody</dt>
-        <dd id="somebody">${somebody.componentResources.hasBody()}</dd>
-    </dl>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/HiddenDemo.tml b/maint-5-2/tapestry-core/src/test/app1/HiddenDemo.tml
deleted file mode 100644
index 99a80d0..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/HiddenDemo.tml
+++ /dev/null
@@ -1,19 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <h1>Hidden Demo</h1>
-
-    <p>
-        <t:pagelink page="hiddendemo" context="12345">setup</t:pagelink>
-    </p>
-
-    <t:if test="stored">
-
-        <t:form t:id="form">
-            <t:hidden t:id="stored"/>
-            <input type="submit" value="Submit"/>
-        </t:form>
-
-    </t:if>
-
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/HiddenDemoOutput.tml b/maint-5-2/tapestry-core/src/test/app1/HiddenDemoOutput.tml
deleted file mode 100644
index 7b96684..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/HiddenDemoOutput.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <h1>Hidden Demo (Output)</h1>
-
-    <p>Stored value:
-        <span id="stored">${stored}</span>
-    </p>
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ImageSubmitDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ImageSubmitDemo.tml
deleted file mode 100644
index ec2932b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ImageSubmitDemo.tml
+++ /dev/null
@@ -1,22 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <h1>Submit with an image</h1>
-
-    <t:if test="value">
-        <p>You entered
-            <span id="outputvalue">${value}</span>
-        </p>
-        <p>"selected" event was fired: <span id="eventfired">${eventfired}</span>
-        </p>
-    </t:if>
-
-
-    <t:form>
-        <t:errors/>
-        <t:textfield t:id="value"/>
-        <br/>
-        <t:submit t:id="mySubmit" t:image="context:images/tapestry_banner.gif" />
-    </t:form>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/Index.tml b/maint-5-2/tapestry-core/src/test/app1/Index.tml
deleted file mode 100644
index 30fa9b5..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/Index.tml
+++ /dev/null
@@ -1,170 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Tapestry 5 Integration Application 1</h1>
-
-  <t:if test="alert">
-    <p>
-      Alert:
-      <em id="alert">${alert}</em>
-    </p>
-  </t:if>
-
-  <p>${items.size()} standard test pages</p>
-
-  <ul>
-    <li t:type="loop" source="items" value="item">
-      <t:pagelink page="prop:item.pageName">${item.label}</t:pagelink>
-      -- ${item.description}
-    </li>
-  </ul>
-
-  <h2>Special Pages</h2>
-
-  <p>These are often pages which can't load due to errors.</p>
-
-  <ul>
-    <li>
-      <a href="${injectDemoLink}">PageLink via Class Demo</a>
-      -- use ComponentResources to generate a link to a page using target
-      page class, not logical
-      page name
-    </li>
-
-    <li>
-      <a href="BadTemplate">BadTemplate Page</a>
-      -- More exception reporting
-    </li>
-    <li>
-      <t:pagelink page="eventhandlerdemo" context="'clear'">
-        EventHandler Demo
-            </t:pagelink>
-      -- Tests for event handling method order and matching
-    </li>
-
-    <li>
-      <a href="InjectContainerMismatch">
-        InjectContainerMismatch
-            </a>
-      -- check error reporting when @InjectContainer doesn't match
-      the actual field type
-    </li>
-
-    <li>
-      <a href="injectcomponentmismatch">InjectComponentMismatch</a>
-      -- check error reporting when @InjectComponent
-      doesn't match actual field type
-    </li>
-
-    <li>
-      <a href="recursivedemo">Recursive Demo</a>
-      -- check for handling of recursive components
-    </li>
-
-    <li>
-      <t:actionlink t:id="securepage">Secure Page Demo</t:actionlink>
-      -- transition to HTTPS
-    </li>
-
-    <li>
-      <t:pagelink page="listeventcontextdemo" context="demoContext">List Event Context Demo
-      </t:pagelink>
-      -- using a List for catch-all event context parameters
-    </li>
-
-    <li>
-      <a href="datumeditor">Class Transformation Exception Demo</a>
-      -- demo proper reporting of exceptions during class transformation
-    </li>
-
-    <li>
-      <t:actionlink t:id="instantiatePage">Instantiate Page</t:actionlink>
-      --
-      attempt to instantiate (and return) a page instance
-    </li>
-    <li>
-      <a href="fieldannotationconflict">Field Annotation Conflict</a>
-      -- demo failure behavior when a field contains conflicting annotations
-    </li>
-    <li>
-      <a href="failedinjectdemo">Failed Field Injection Demo</a>
-      -- demo failure when attempting to inject into a field
-    </li>
-    <li>
-      <a href="pageAttachFailure">Page Attach Failure</a>
-      -- demo failure when attaching a page
-    </li>
-
-    <li>
-      <a href="componentsNotInTemplateDemo">Components Not In Template Demo</a>
-      -- demo exception when a component is defined in the class but not present in the template
-    </li>
-    <li>
-      <a href="GetterMethodAlreadyExists">Getter Method Already Exists</a>
-      -- demo @Property attempting to overwrite an existing getter method
-    </li>
-    <li>
-      <a href="DuplicateIds">Duplicate IDs</a>
-      -- demo two components declared with the same ID
-    </li>
-    <li>
-      <a href="PublishDuplicateNameDemo">Duplicate Published Parameter Name</a>
-      -- demo error checking for the same parameter name published from two different
-      embedded
-      components
-    </li>
-    <li>
-      <a href="EmbeddedComponentTypeConflict">Embedded Component Type Conflict
-            </a>
-      -- error checking for conflict between @Component.type and t:type.
-    </li>
-    <li>
-      <a href="PublishUnknownParameterDemo">Publish Unknown Parameter Demo</a>
-      -- publishing a parameter which does not exist
-    </li>
-    <li>
-      <a href="BadMixinIdDemo">Bad Mixin Id Demo</a>
-      -- error reporting when a parameter specifies a mixin id that does not exist
-    </li>
-    <li>
-      <a href="DupeMixinDemo">Duplicate Mixin Demo</a>
-      -- error reporting for adding a duplicate mixin to a component
-    </li>
-    <li>
-      <a href="UnsupportedParameterBlockDemo">Unsupported Parameter Block Demo</a>
-      -- informal block parameter to a component that does not support informal parameters
-    </li>
-    <li>
-      <a href="InvalidTemplateExtend">Invalid Template Extend Demo</a>
-      -- template uses extend, but component doesn't have a super-class
-    </li>
-
-    <li>
-      <a href="PageResetFailure">PageReset Annotation Failure</a>
-      -- error when @PageReset is on a method with parameters
-    </li>
-
-    <li>
-      <a href="VoidMethodWithCached">@Cached on void method</a>
-      -- error when @Cached is used on a method that returns void
-    </li>
-
-    <li>
-      <a href="ParamsMethodWithCached">@Cached on method with parameters</a>
-      -- error when @cached is used on a method that has parameters
-    </li>
-    <li>
-      <a href="InvalidComponentTypeDemo">Invalid Component Type</a>
-      -- unknown type of component in template
-    </li>
-    <li>
-      <a href="NoTypeProvidedDemo">No Component Type Provided</a>
-      --
-      component type not defined.
-    </li>
-    <li>
-      <a href="music/details2">Missing page activation context</a>
-    </li>
-  </ul>
-
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/IndirectProtectedFields.tml b/maint-5-2/tapestry-core/src/test/app1/IndirectProtectedFields.tml
deleted file mode 100644
index c20393a..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/IndirectProtectedFields.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Protected Fields Demo</h1>
-
-    <p>
-        <t:actionlink t:id="go">Trigger the Exception</t:actionlink>
-    </p>
-
-
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/InformalParametersDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InformalParametersDemo.tml
deleted file mode 100644
index 01e4389..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InformalParametersDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Informal Parameters Demo</h1>
-
-    <t:listinformals fred="flintstone" barney="rubble" pageName="prop:componentResources.pageName"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/InheritInformalsDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InheritInformalsDemo.tml
deleted file mode 100644
index bbd650f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InheritInformalsDemo.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Inherit Informals Demo</h1>
-
-    <t:outerany id="target" class="inherit">Should be italic</t:outerany>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/InheritedBindingsDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InheritedBindingsDemo.tml
deleted file mode 100644
index 232449b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InheritedBindingsDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <h1>Inherited Bindings Demo</h1>
-  
-  <h1>Bound</h1>
-  
-  Bound: <t:outer outerValue="the-bound-value"/>
-
-  <h1>Unbound</h1>
-  
-  Unbound: <t:outer/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/InjectComponentDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InjectComponentDemo.tml
deleted file mode 100644
index cf90957..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InjectComponentDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Inject Component Demo</h1>
-
-    <t:form t:id="form"/>
-
-    ${injectComponentId}
-
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/app1/InjectMessagesDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InjectMessagesDemo.tml
deleted file mode 100644
index 8998c89..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InjectMessagesDemo.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Inject Application Messages Demo</h1>
-
-  <p>
-    Status (from message catalog is):
-    <strong id="status">${access.statusMessage}</strong>
-  </p>
-
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/InplaceGridDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InplaceGridDemo.tml
deleted file mode 100644
index da63033..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InplaceGridDemo.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>In-Place Grid Demo</h1>
-
-    <p>
-        Last full page refresh at:
-        <span id="lastupdate">${date}</span>
-    </p>
-
-    <table t:id="grid" source="tracks" row="track" inplace="true">
-        <t:parameter name="ratingheader">
-            <t:actionlink t:id="sortRating">Sort Rating</t:actionlink>
-        </t:parameter>
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-    </table>
-
-    <p>
-        [<t:actionlink t:id="reset">reset the Grid</t:actionlink>]
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/InvalidComponentTypeDemo.tml b/maint-5-2/tapestry-core/src/test/app1/InvalidComponentTypeDemo.tml
deleted file mode 100644
index 1155281..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InvalidComponentTypeDemo.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Invalid Component Type Demo</h1>
-
-  <span t:type="unknownType"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/InvalidTemplateExtend.tml b/maint-5-2/tapestry-core/src/test/app1/InvalidTemplateExtend.tml
deleted file mode 100644
index 1ad1719..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/InvalidTemplateExtend.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:replace id="exentsion">
-        This component does not extend from another component, so it is not valid for it to use the &lt;t:extend&gt;
-        element.
-    </t:replace>
-</t:extend>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/Kicker.tml b/maint-5-2/tapestry-core/src/test/app1/Kicker.tml
deleted file mode 100644
index dff3550..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/Kicker.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-<h1>Kicker</h1>    
-
-[<a t:type="actionlink">kick target</a>]
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/LeanGridDemo.tml b/maint-5-2/tapestry-core/src/test/app1/LeanGridDemo.tml
deleted file mode 100644
index c478e01..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/LeanGridDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Lean Grid Demo</h1>
-
-    <table t:id="grid" source="tracks" row="track" rowIndex="rowIndex" columnIndex="columnIndex" add="indexes"
-           lean="true">
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-        <t:parameter name="indexesheader">
-            Indexes (${columnIndex})
-        </t:parameter>
-        <t:parameter name="indexescell">
-            ${rowIndex},${columnIndex}
-        </t:parameter>
-    </table>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/LibraryMessagesDemo.tml b/maint-5-2/tapestry-core/src/test/app1/LibraryMessagesDemo.tml
deleted file mode 100644
index 24ee01b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/LibraryMessagesDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Library Messages Demo</h1>
-
-  <dl>
-    <dt>Library Message</dt>
-    <dd id="no-override">${message:pre-app}</dd>
-    <dt>Overriden Message</dt>
-    <dd id="override">${message:overridden-by-app}</dd>
-  </dl>
-
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/LinkSubmitDemo.tml b/maint-5-2/tapestry-core/src/test/app1/LinkSubmitDemo.tml
deleted file mode 100644
index 4a45cba..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/LinkSubmitDemo.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <h1>Link Submit Demo</h1>
-
-  <p>Result: ${result}.</p>
-
-  <t:form>
-    <t:errors/>
-
-    <t:textfield t:id="name"/>
-    <br/>
-    <t:linksubmit t:id="fred" context="formContext" alt="f">Fred</t:linksubmit>
-    <t:linksubmit t:id="barney" defer="true" event="neighbor" alt="b">Barney</t:linksubmit>
-
-  </t:form>
-
-  <dl>
-    <dt>Name</dt>
-    <dd id="name-value">${name}</dd>
-    <dt>Last Clicked</dt>
-    <dd id="last-clicked">${lastClicked}</dd>
-  </dl>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/LinkSubmitInZoneDemo.tml b/maint-5-2/tapestry-core/src/test/app1/LinkSubmitInZoneDemo.tml
deleted file mode 100644
index c5394a8..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/LinkSubmitInZoneDemo.tml
+++ /dev/null
@@ -1,29 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <h1>LinkSubmit inside Zone</h1>
-
-    <p>Current time:
-        <span id="now">${now}</span>
-    </p>
-
-
-    <t:zone t:id="output">
-        <t:if test="value">
-            <p>You entered
-                <span id="outputvalue">${value}</span>
-            </p>
-            <p>"selected" event was fired: <span id="eventfired">${eventfired}</span>
-            </p>
-        </t:if>
-    </t:zone>
-
-
-    <t:form zone="output">
-        <t:errors/>
-        <t:textfield t:id="value"/>
-        <br/>
-        <t:linksubmit t:id="mySubmit">submit</t:linksubmit>
-    </t:form>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/LinkSubmitWithoutValidatorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/LinkSubmitWithoutValidatorDemo.tml
deleted file mode 100644
index 53164b2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/LinkSubmitWithoutValidatorDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Link Submit Without Validator Demo</h1>
-
-    <t:form t:id="searchForm">
-        <t:label for="searchField"/>:
-        <t:textField t:id="searchField" label="literal:Search string" value="searchString"/>
-        <t:linksubmit t:id="searchLink">Search</t:linksubmit>
-    </t:form>
-    <hr/>
-    Result: ${result}
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ListEventContextDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ListEventContextDemo.tml
deleted file mode 100644
index a4e5b2c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ListEventContextDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>List Event Context</h1>
-
-
-    <ul id="eventcontext">
-        <li t:type="loop" source="eventContext" value="var:value">${var:value}</li>
-    </ul>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/META-INF/unavailable2.txt b/maint-5-2/tapestry-core/src/test/app1/META-INF/unavailable2.txt
deleted file mode 100644
index a685ba8..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/META-INF/unavailable2.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file is in META-INF so it should not be available.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/MagicValueEncoder.tml b/maint-5-2/tapestry-core/src/test/app1/MagicValueEncoder.tml
deleted file mode 100644
index 31f0dd3..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MagicValueEncoder.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Magic Value Encoder</h1>
-
-    <p>Ok, Magic is too strong a word. This is really based on the TypeCoercer, which is not quite magic (but close).
-    </p>
-
-
-    <t:form>
-        <t:select t:id="number" model="options"/>
-        <br/>
-        <input type="submit" value="Update"/>
-    </t:form>
-
-    <hr/>
-
-    <p>
-        Selected number:
-        <span id="selectednumber">${number}</span>
-    </p>
-
-</html>    
diff --git a/maint-5-2/tapestry-core/src/test/app1/MessageConstraintGeneratorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/MessageConstraintGeneratorDemo.tml
deleted file mode 100644
index 0baacb4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MessageConstraintGeneratorDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <h1>Validators specified in message catalog</h1>
-
-    <t:beaneditform t:id="form" object="pet">
-        <p:age>
-            <t:label for="age"/> <t:textfield t:id="age" value="pet.age"/>
-        </p:age>
-    </t:beaneditform>
-
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/app1/MethodAdviceDemo.tml b/maint-5-2/tapestry-core/src/test/app1/MethodAdviceDemo.tml
deleted file mode 100644
index e40b1c0..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MethodAdviceDemo.tml
+++ /dev/null
@@ -1,33 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Method Advice Demo</h1>
-
-    <p>
-        Greetings and salutations:
-        <span id="message">${message}</span>.
-    </p>
-
-
-    <p>
-        The current Major version of Tapestry is:
-        <span id="version">${version}</span>
-    </p>
-
-
-    <t:beaneditform object="this"/>
-
-    <t:if test="text">
-        <p>
-            Stored text:
-            <span id="output-text">${text}</span>
-        </p>
-    </t:if>
-
-    <p>
-        Cranky:
-        <span id="cranky">${cranky}</span>
-    </p>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/MultiBeanDemoResult.tml b/maint-5-2/tapestry-core/src/test/app1/MultiBeanDemoResult.tml
deleted file mode 100644
index 02cea18..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MultiBeanDemoResult.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border"
-  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>MultiBean Edit Demo</h1>
-
-  <ul>
-    <li>First Name: [${credentials.firstName}]</li>
-    <li>Last Name: [${credentials.lastName}]</li>
-    <li>Path: [${rolePath.path}]</li>
-    <li>Role: [${rolePath.role}]</li>
-  </ul>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/MultiBeanEditDemo.tml b/maint-5-2/tapestry-core/src/test/app1/MultiBeanEditDemo.tml
deleted file mode 100644
index 994255f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MultiBeanEditDemo.tml
+++ /dev/null
@@ -1,32 +0,0 @@
-<html t:type="Border"
-  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>MultiBean Edit</h1>
-
-  <form t:id="form">
-
-    <t:errors />
-
-    <div class="t-beaneditor">
-
-      <!--  Demonstrate default object binding from component id -->
-      <t:beaneditor t:id="credentials" />
-      <t:beaneditor t:id="rolePath" />
-
-      <div class="t-beaneditor-row">
-        <input type="submit" value="Set Access" />
-      </div>
-
-
-    </div>
-
-
-  </form>
-
-  <p>
-    [
-    <t:actionlink t:id="clear">Clear Data</t:actionlink>
-    ]
-  </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/MultiLevelInheritDemo.tml b/maint-5-2/tapestry-core/src/test/app1/MultiLevelInheritDemo.tml
deleted file mode 100644
index eab9c5c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MultiLevelInheritDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-      xmlns:p="tapestry:parameter">
-
-    <h1>Multi-Level Binding Inheritance Demo</h1>
-
-    <h2>Inherit a property</h2>
-
-    <dl id="viaproperty">
-        <t:inherittop t:id="prop" value="boundValue"/>
-    </dl>
-
-    <h2>Inherit a literal</h2>
-
-    <dl id="vialiteral">
-        <t:inherittop t:id="literal" value="literal:some text"/>
-    </dl>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml b/maint-5-2/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml
deleted file mode 100644
index bd48c77..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MultiZoneUpdateDemo.tml
+++ /dev/null
@@ -1,54 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-
-  <h1>Multi-Zone Update Demo</h1>
-
-
-  <span id="now">${now}</span>
-
-  <div class="t-data-grid" style="{width: 100%;}">
-
-    <table class="t-data-grid">
-      <thead>
-
-        <tr>
-          <th>Fred</th>
-          <th>Barney</th>
-          <th>Dino</th>
-          <th>Wilma</th>
-        </tr>
-      </thead>
-      <tbody>
-
-        <tr>
-          <td t:type="zone" t:id="fredZone" id="fred">
-            Placeholder
-                    </td>
-          <td t:type="zone" t:id="barneyZone" id="barney">
-            Placeholder
-                    </td>
-          <td t:type="zone" t:id="dinoZone" id="dino">
-            Placeholder
-                    </td>
-          <td t:type="zone" t:id="wilmaZone" id="wilma">
-            ${wilmaMessage}
-                    </td>
-        </tr>
-      </tbody>
-    </table>
-  </div>
-
-  <t:actionlink t:id="update" zone="fred">update</t:actionlink>
-
-  <t:block id="fredBlock">
-    <span id="fredName">Fred Flintstone</span>
-  </t:block>
-
-  <t:block id="barneyBlock">
-    <t:form>
-      <t:palette t:id="options" model="options" encoder="encoder"/>
-      <input type="submit"/>
-
-    </t:form>
-  </t:block>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/MultiZoneUpdateInsideForm.tml b/maint-5-2/tapestry-core/src/test/app1/MultiZoneUpdateInsideForm.tml
deleted file mode 100644
index a3c6472..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/MultiZoneUpdateInsideForm.tml
+++ /dev/null
@@ -1,16 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-
-  <h1>Multi Zone Update Inside Form Demo</h1>
-
-  <form t:type="Form" t:id="form" t:clientValidation="false" action="#">
-    <t:label for="selectValue1"/>
-    <select t:type="Select" t:id="selectValue1" t:validate="required" t:zone="select1ValueZone"/>
-    <t:zone t:id="select1ValueZone" visible="false">Show</t:zone>
-    <t:zone t:id="select2ValueZone">
-      <t:label for="selectValue2"/>
-      <select t:type="Select" t:id="selectValue2" t:validate="required"/>
-    </t:zone>
-    <br/>
-    <input type="submit" value="Upate Form"/>
-  </form>
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/Music.tml b/maint-5-2/tapestry-core/src/test/app1/Music.tml
deleted file mode 100644
index cddebac..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/Music.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Music Library</h1>
-
-    <t:grid source="tracks" row="track" remove="genre,artist,playcount" add="titleCopy">
-        <t:parameter name="titleCell">
-            <t:pagelink page="music/details" context="track">${track.title}</t:pagelink>
-        </t:parameter>
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-        <t:parameter name="titleCopyCell">
-            <t:pagelink page="music/details2" context="track">${track.title} (Copy)</t:pagelink>
-        </t:parameter>
-    </t:grid>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/NestedBeanDisplay.tml b/maint-5-2/tapestry-core/src/test/app1/NestedBeanDisplay.tml
deleted file mode 100644
index 1c984aa..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NestedBeanDisplay.tml
+++ /dev/null
@@ -1,15 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Nested BeanDisplay</h1>
-
-    <p>Demonstrates a BeanEditor as the property editor inside a BeanEditForm.</p>
-
-    <t:beandisplay object="parent" add="child">
-
-        <t:parameter name="child">
-            <t:beandisplay object="parent.child"/>
-        </t:parameter>
-
-    </t:beandisplay>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/NestedBeanEditor.tml b/maint-5-2/tapestry-core/src/test/app1/NestedBeanEditor.tml
deleted file mode 100644
index eece94b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NestedBeanEditor.tml
+++ /dev/null
@@ -1,19 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Nested BeanEditor</h1>
-
-    <p>Demonstrates a BeanEditor as the property editor inside a BeanEditForm.</p>
-
-    <t:beaneditform object="parent" add="child">
-
-        <t:parameter name="child">
-
-            <div class="t-beaneditor" style="margin-left: 45px;">
-                <h2>Child</h2>
-                <t:beaneditor object="parent.child"/>
-            </div>
-        </t:parameter>
-
-    </t:beaneditform>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/NestedForm.tml b/maint-5-2/tapestry-core/src/test/app1/NestedForm.tml
deleted file mode 100644
index 203ebe8..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NestedForm.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Nested Form Demo</h1>
-
-    <t:form t:id="outer">
-        <t:form t:id="inner"/>
-    </t:form>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/NestedFormFragment.tml b/maint-5-2/tapestry-core/src/test/app1/NestedFormFragment.tml
deleted file mode 100644
index ab19fa2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NestedFormFragment.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-<!-- note that since we won't be submitting the form, we can just bind visible parameters to literal values -->
-    <t:form>
-        <div t:type="formfragment" t:id="outerhide" visible="true">
-            <span id="outertext1">Outer Text</span>
-            <div t:type="formfragment" t:id="innerhide" visible="true">
-                <span id="innertext1">Inner Text</span>
-                <t:checkbox t:id="innertrigger1" value="true" t:mixins="triggerfragment" fragment="innerhide"/>
-            </div>
-        </div>
-
-        <div t:type="formfragment" t:id="outerremove" visible="true">
-            <span id="outertext2">Outer Text</span>
-            <div t:type="formfragment" t:id="innerremove" visible="true">
-                <span id="innertext2">Inner Text</span>
-                <t:checkbox t:id="innertrigger2" value="true"/>
-            </div>
-        </div>
-        
-    </t:form>
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/app1/NoTypeProvidedDemo.tml b/maint-5-2/tapestry-core/src/test/app1/NoTypeProvidedDemo.tml
deleted file mode 100644
index b8ae293..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NoTypeProvidedDemo.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
-  <span t:id="noTypeProvided"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/NullGrid.tml b/maint-5-2/tapestry-core/src/test/app1/NullGrid.tml
deleted file mode 100644
index bb85b90..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NullGrid.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <h1>Null Grid Demo</h1>
-    
-    <p>Default behavior for when a Grid is passed null for source.</p>
-    
-    <table t:type="Grid" source="null"/>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/NullParameterDemo.tml b/maint-5-2/tapestry-core/src/test/app1/NullParameterDemo.tml
deleted file mode 100644
index 21c6268..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NullParameterDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:beandisplay object="null"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/NullStrategyDemo.tml b/maint-5-2/tapestry-core/src/test/app1/NullStrategyDemo.tml
deleted file mode 100644
index e3d213f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NullStrategyDemo.tml
+++ /dev/null
@@ -1,24 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Null Field Strategy Demo</h1>
-
-    <p>
-        Demonstrates the use of the nulls parameter of TextField to change how null values are treated.
-    </p>
-
-
-    <t:form>
-        <t:errors/>
-        <t:textfield t:id="number" nulls="zero"/>
-        <br/>
-        <input type="submit" value="Update"/>
-    </t:form>
-
-    <hr/>
-
-    <p>
-        Number property value:
-        <span id="value">${number}</span>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/NumberBeanDisplayDemo.tml b/maint-5-2/tapestry-core/src/test/app1/NumberBeanDisplayDemo.tml
deleted file mode 100644
index 23c4203..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NumberBeanDisplayDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:beandisplay object="holder"/>
-
-    <p>
-        <t:pagelink page="numberbeaneditordemo">Back to form</t:pagelink>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/NumberBeanEditorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/NumberBeanEditorDemo.tml
deleted file mode 100644
index 06d7b7a..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/NumberBeanEditorDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Number BeanEditor Demo</h1>
-
-    <p>
-        Demonstrates that BeanEditor can handle null properties.
-    </p>
-
-
-    <t:beaneditform t:id="holder"/>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/OverrideDateFieldMessageCatalogDemo.tml b/maint-5-2/tapestry-core/src/test/app1/OverrideDateFieldMessageCatalogDemo.tml
deleted file mode 100644
index 6a78a04..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/OverrideDateFieldMessageCatalogDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <h1>Override DateField Message Catalog</h1>
-    
-    <p>
-        <t:form>
-        	<t:errors/>
-        	<t:datefield t:id="birthday" messages="messages" />
-        	<input type="submit" value="Go"/>
-        </t:form>
-    </p>
-
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/OverrideValidationDecorator.tml b/maint-5-2/tapestry-core/src/test/app1/OverrideValidationDecorator.tml
deleted file mode 100644
index 04116e1..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/OverrideValidationDecorator.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Override Validation Decorator</h1>
-
-    <p>
-        Demonstrates how to override the default Validation Decorator for a page or a component (this is often
-        done inside a layout component). In addition, used to verify that the Label component
-        invokes Validation Decorator methods at the correct time.
-    </p>
-
-    <t:beaneditform t:id="form" object="this"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PACAnnotationDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PACAnnotationDemo.tml
deleted file mode 100644
index 73d6b98..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PACAnnotationDemo.tml
+++ /dev/null
@@ -1,16 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>@PageActivationContext Demo</h1>
-
-  <dl>
-    <dt>count</dt>
-    <dd id="count">${count}</dd>
-
-    <dt>count set</dt>
-    <dd id="count-set">${countSet}</dd>
-  </dl>
-
-  <p>
-    <t:pagelink page="pacannotationdemo" context="99">activate page with context</t:pagelink>
-  </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/PageContextInForm.tml b/maint-5-2/tapestry-core/src/test/app1/PageContextInForm.tml
deleted file mode 100644
index 1eda2a4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PageContextInForm.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Page Context in Form</h1>
-
-    <h2>Activation Context</h2>
-    <t:if test="activationContext">
-        <ul>
-            <li t:type="loop" source="activationContext" value="object">${object}</li>
-        </ul>
-        <t:parameter name="else">No activation context.</t:parameter>
-    </t:if>
-
-    <t:form>
-        <input type="submit"/>
-    </t:form>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PageLinkContext.tml b/maint-5-2/tapestry-core/src/test/app1/PageLinkContext.tml
deleted file mode 100644
index a45f82d..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PageLinkContext.tml
+++ /dev/null
@@ -1,24 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>PageLink Context Demo</h1>
-
-    <p>
-        Demonstrates how to supply explicit context is a page link. This is often used in pages with a master/detail
-        relationship,
-        with the master page providing links to the detail page, configured via the explicit context.
-    </p>
-
-    <a t:type="pagelink" page="target">no context</a>
-    <br/>
-    <a t:type="pagelink" page="target" context="literal:literal context">literal context</a>
-    <br/>
-    <a t:type="pagelink" page="target" context="computedContext">computed context</a>
-    <br/>
-    <a t:type="pagelink" page="target" context="unsafeCharacters">unsafe characters</a>
-    <br/>
-    <a t:type="pagelink" page="target" context="japaneseKanji">japanese kanji</a>
-    <br/>
-    <t:actionlink t:id="nullContext">Null in context</t:actionlink>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PageLoadedDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PageLoadedDemo.tml
deleted file mode 100644
index a4864e5..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PageLoadedDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <h1>Page Loaded Demo</h1>
-
-    <p>
-        The message: [${message}]
-    </p>    
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PageResetDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PageResetDemo.tml
deleted file mode 100644
index 3dafbbe..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PageResetDemo.tml
+++ /dev/null
@@ -1,19 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>PageReset Annotation Demo</h1>
-
-  <p>
-    The current click count is:
-    <span id="current">${count}</span>
-  </p>
-
-  <ul>
-    <li>
-      <t:actionlink t:id="increment">increment</t:actionlink>
-    </li>
-    <li>
-      <t:pagelink page="pageResetDemo">refresh</t:pagelink>
-    </li>
-  </ul>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/PaletteDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PaletteDemo.tml
deleted file mode 100644
index 7cdbf6c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PaletteDemo.tml
+++ /dev/null
@@ -1,33 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Palette Demo</h1>
-
-
-    <t:form>
-        <div>
-            <t:checkbox t:id="reorder" label="Enable Reorder"/>
-            <t:label for="reorder"/>
-        </div>
-
-        <div class="t-beaneditor">
-
-
-            <t:palette t:id="languages" model="languageModel" reorder="reorder" encoder="languageEncoder"
-                       availableLabel="Languages Offered" validate="required">
-                <t:parameter name="selectedLabel" xml:space="default">
-                    Selected <t:if test="reorder">/ Ranked</t:if> Languages
-                </t:parameter>
-            </t:palette>
-            <br/>
-            <input type="submit"/>
-        </div>
-    </t:form>
-
-    <p>Selected Languages: ${languages}</p>
-
-    <p>
-        [
-        <t:actionlink t:id="reset">reset</t:actionlink>
-        ]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PasswordFieldDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PasswordFieldDemo.tml
deleted file mode 100644
index 242c731..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PasswordFieldDemo.tml
+++ /dev/null
@@ -1,30 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Simple Form</h1>
-
-    <p> This is the <em>very early</em> start to Tapestry 5 form support. </p>
-
-    <form t:id="form">
-
-        <t:errors/>
-
-        <t:label  for="userName"/>
-        <input t:type="TextField" t:id="userName" t:validate="required" size="30"/>
-        <br/>
-        <t:label for="password"/>
-        <input t:id="password" t:validate="required" size="30"/>
-        <br/>
-        <input type="submit" value="Login"/>
-    </form>
-
-    <hr/>
-
-    <p> Entered data: </p>
-
-    <ul>
-        <li>userName: [${userName}]</li>
-        <li>password: [${password}]</li>
-    </ul>
-
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PerFormValidationMessageDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PerFormValidationMessageDemo.tml
deleted file mode 100644
index da15f78..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PerFormValidationMessageDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Per-Form Validation Message Demo</h1>
-
-
-    <h1>Login</h1>
-    <t:beaneditform t:id="login" object="this" submitLabel="Login" clientValidation="false"/>
-
-    <h1>Register</h1>
-    <t:beaneditform t:id="register" object="this" submitLabel="Register" clientValidation="false"/>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/PersistentDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PersistentDemo.tml
deleted file mode 100644
index cb1d77f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PersistentDemo.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <p>
-        Message:
-        <span id="message">${message}</span>
-    </p>
-
-    <ul>
-        <li>
-            <t:actionlink t:id="updateMessage" context="literal:updated">Update the message field</t:actionlink>
-        </li>
-        <li>
-            <t:actionlink t:id="discardChanges">Discard persistent field changes</t:actionlink>
-        </li>
-        <li>
-            <t:pagelink page="persistentdemo">Refresh page</t:pagelink>
-        </li>
-    </ul>
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/PostLogin.tml b/maint-5-2/tapestry-core/src/test/app1/PostLogin.tml
deleted file mode 100644
index 63a72df..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PostLogin.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-<h1>Post Login</h1>
-    
-    <p>
-        You have provided the correct user name and password.
-    </p>    
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PrimitiveArrayParameterDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PrimitiveArrayParameterDemo.tml
deleted file mode 100644
index 4a17e58..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PrimitiveArrayParameterDemo.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Primitive Array Parameter Demo</h1>
-
-
-    <t:intarraywriter array="values"/>
-
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/PrimitiveDefaultDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PrimitiveDefaultDemo.tml
deleted file mode 100644
index 16c05d7..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PrimitiveDefaultDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Primitive Default Demo</h1>
-
-    <p>
-        Here it is:
-        <t:primitivedefault/>
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/ProgressiveDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ProgressiveDemo.tml
deleted file mode 100644
index 1dbae23..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ProgressiveDemo.tml
+++ /dev/null
@@ -1,32 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <t:actionlink t:id="refresh">refresh</t:actionlink>
-
-    <t:progressiveDisplay t:id="disp1">
-        <p id="content1">
-            Progressive Display content #1.
-        </p>
-    </t:progressiveDisplay>
-
-    <t:progressivedisplay t:id="disp2" context="literal:Music Library">
-
-        <p>
-            Progressive display content #2.
-        </p>
-
-        <h3 id="content2">${context2}</h3>
-
-        <p>Time is ${now}.</p>
-
-        <t:progressivedisplay t:id="progressiveGrid" update="slidedown">
-
-        </t:progressivedisplay>
-    </t:progressivedisplay>
-
-
-    <t:block>
-        <t:grid inplace="true" t:id="music" source="musicLibrary.tracks"/>
-    </t:block>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/Protected.tml b/maint-5-2/tapestry-core/src/test/app1/Protected.tml
deleted file mode 100644
index ac6d7c9..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/Protected.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-<h1>Protected Page</h1>
-
-<p>It should never be possible to see this, as the onActivate() event handler method prevents it.</p>
-    
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PublicFieldAccessDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PublicFieldAccessDemo.tml
deleted file mode 100644
index 17efbea..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PublicFieldAccessDemo.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-
-  <h1>Public Field Access Demo</h1>
-
-  <p>
-    Result is:
-    <span id="message">${message}</span>
-  </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/PublishDuplicateNameDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PublishDuplicateNameDemo.tml
deleted file mode 100644
index ef7c03a..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PublishDuplicateNameDemo.tml
+++ /dev/null
@@ -1,4 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:badPublishDuplicate/>
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/PublishParametersDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PublishParametersDemo.tml
deleted file mode 100644
index 5e4dba7..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PublishParametersDemo.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="Border"
-      xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Publish Parameters Demo</h1>
-
-    <t:publish1 value="{passed to publish1.value}"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/PublishUnknownParameterDemo.tml b/maint-5-2/tapestry-core/src/test/app1/PublishUnknownParameterDemo.tml
deleted file mode 100644
index 749e00c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/PublishUnknownParameterDemo.tml
+++ /dev/null
@@ -1,4 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:badpublishunknown xyzzyx="whatever"/>
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/RadioDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RadioDemo.tml
deleted file mode 100644
index 085b84e..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RadioDemo.tml
+++ /dev/null
@@ -1,52 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Radio Demo</h1>
-
-  <p>Choose a department and position:</p>
-
-  <t:form>
-    <t:errors/>
-
-    <t:radiogroup t:id="department" t:validate="required">
-      <t:loop source="departments" value="loopValue">
-        <p>
-          <t:radio t:id="radio" value="loopValue" label="prop:label"/>
-          <t:label for="radio"/>
-        </p>
-      </t:loop>
-    </t:radiogroup>
-
-    <br/>
-
-    <t:radiogroup t:id="position">
-      <p>
-        <t:radio t:id="radio1" value="literal:TEMP" label="Temp"/>
-        <t:label for="radio1"/>
-      </p>
-      <p>
-        <t:radio t:id="radio2" value="literal:LIFER" label="Lifer"/>
-        <t:label for="radio2"/>
-      </p>
-    </t:radiogroup>
-
-    <p>
-      <input type="submit" value="Update"/>
-    </p>
-  </t:form>
-
-
-  <t:if test="department">
-    <hr/>
-    Selected department: ${department}
-  </t:if>
-
-  <t:if test="position">
-    <hr/>
-    Selected position: ${position}
-  </t:if>
-
-  <p>
-    <t:actionlink t:id="reset">reset</t:actionlink>
-  </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/RecursiveDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RecursiveDemo.tml
deleted file mode 100644
index ff71df5..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RecursiveDemo.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  This page contains a <t:recursive>Recursive component</t:recursive>, so it will never be able to render itself.
-  
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/RegexpDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RegexpDemo.tml
deleted file mode 100644
index acfd914..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RegexpDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Regexp Validation Demo</h1>
-
-    <t:beaneditform object="this"/>
-
-    <hr/>
-
-    <t:if test="zipCode">
-        Zip code: [${zipCode}]
-    </t:if>
-
-</html>  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ReloadDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ReloadDemo.tml
deleted file mode 100644
index 1320b23..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ReloadDemo.tml
+++ /dev/null
@@ -1,16 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Service Implementation Reload Demo</h1>
-
-
-  <p>
-    Reloadable service status:
-    <strong id="status">${reloadable.status}</strong>
-  </p>
-
-  <p>
-    <t:pagelink page="reloaddemo">reload page</t:pagelink>
-  </p>
-
-</html>
-
diff --git a/maint-5-2/tapestry-core/src/test/app1/RenderComponentDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RenderComponentDemo.tml
deleted file mode 100644
index 69dbb26..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RenderComponentDemo.tml
+++ /dev/null
@@ -1,22 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Render Component Demo</h1>
-
-  <p> This page demonstrates how a component may return a component instance from one of its render
-    phase methods to allow that object to render. </p>
-
-  <t:block id="optional"> <span>Optional Text</span> </t:block>
-
-  <t:form>
-    <input t:type="Checkbox" t:id="enabled" onchange="this.form.submit();"/>
-    <label t:type="Label" for="enabled">Enable optional text</label>
-  </t:form>
-
-  <t:if test="enabled"> Should now show up: <t:parameter name="else"> Should be blank:
-    </t:parameter>
-  </t:if>
-
-  <span id="container">[<t:render value="thing"/>]</span>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/RenderErrorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RenderErrorDemo.tml
deleted file mode 100644
index 0c4b28b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RenderErrorDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Render Error Demo</h1>
-
-    <p>This page will not completely render, it gets an exception.</p>
-
-    <t:Echo value="value"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/RenderNotificationDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RenderNotificationDemo.tml
deleted file mode 100644
index 7f10fa6..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RenderNotificationDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>RenderNotification Mixin Demo</h1>
-
-  <ul id="list">
-    <li t:type="any" t:id="item" t:mixins="rendernotification">item body in template</li>
-  </ul>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml
deleted file mode 100644
index cb4ff40..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RenderObjectExceptionDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <span id="container">
-    <t:renderobject object="badboy"/>
-  </span>
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/RenderableDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RenderableDemo.tml
deleted file mode 100644
index 7389b2b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RenderableDemo.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  
-  <h1>Renderable Demo</h1>
-  
-  <p>
-    The following text is provided by a Renderable: [<t:delegate to="renderable"/>]
-  </p>
-  
-  
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/RequestParameterDemo.tml b/maint-5-2/tapestry-core/src/test/app1/RequestParameterDemo.tml
deleted file mode 100644
index 17e64c7..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/RequestParameterDemo.tml
+++ /dev/null
@@ -1,25 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>@RequestParameter Annotation Demo</h1>
-
-  <p>
-    The current value is:
-    <span id="current">${value}</span>
-    .
-  </p>
-
-  <ul>
-    <li>
-      <a href="${workingLink}">Working Link</a>
-    </li>
-    <li>
-      <a href="${brokenLink}">Broken Link</a>
-    </li>
-    <li>
-      <a href="${nullLink}">Null Link</a>
-    </li>
-    <li>
-      <a href="${nullAllowedLink}">Null Allowed Link</a>
-    </li>
-  </ul>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ReturnTypes.tml b/maint-5-2/tapestry-core/src/test/app1/ReturnTypes.tml
deleted file mode 100644
index f63cd53..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ReturnTypes.tml
+++ /dev/null
@@ -1,74 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Return Type Tests</h1>
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="NullReturnValue">null</a>
-        return values.
-    </p>
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="StringReturnValue">string</a>
-        return values.
-    </p>
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="ClassReturnValue">class</a>
-        return values.
-    </p>
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="PageReturnValue">page</a>
-        return values.
-    </p>
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="LinkReturnValue">link</a>
-        return values.
-    </p>
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="StreamReturnValue">stream</a>
-        return values.
-    </p>
-
-    <p>
-        Test
-        <t:actionlink t:id="url">URL</t:actionlink>
-        return values.
-    </p>
-
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="BadReturnValue">bad</a>
-        return values.
-    </p>
-    
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="StreamPageContent">stream page content</a>
-        return values.
-    </p>
-    
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="StreamPageContentWithContext">stream page content with context</a>
-        return values.
-    </p>
-
-
-    <p>
-        Test
-        <a t:type="ActionLink" t:id="HttpError">http error</a>
-        return values.
-    </p>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/SecurityAlert.tml b/maint-5-2/tapestry-core/src/test/app1/SecurityAlert.tml
deleted file mode 100644
index 7bb0b03..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SecurityAlert.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1 id="pagetitle">Security Alert</h1>
-
-    <p>
-        Security exception: ${message}
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/SelectDemo.tml b/maint-5-2/tapestry-core/src/test/app1/SelectDemo.tml
deleted file mode 100644
index 796762c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SelectDemo.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-	<t:form clientValidation="false">
-		<p>
-			<t:errors />
-		</p>
-		<p>
-			<t:label for="color" />
-			:
-			<t:select t:id="color" validate="required" blankOption="always"
-				model="literal:Red,Green,Blue" />
-
-		</p>
-
-		<p>
-			<t:submit value="literal:Submit" />
-		</p>
-	</t:form>
-
-	<p> Selected color: ${color}</p>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/SelectModelFromObjectsAndPropertyNameDemo.tml b/maint-5-2/tapestry-core/src/test/app1/SelectModelFromObjectsAndPropertyNameDemo.tml
deleted file mode 100644
index 3a3dac2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SelectModelFromObjectsAndPropertyNameDemo.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-	<t:form clientValidation="false">
-		<p>
-			<t:errors />
-		</p>
-		<p>
-			<t:select t:id="track" model="model" />
-
-		</p>
-
-		<p>
-			<t:submit value="literal:Submit" />
-		</p>
-	</t:form>
-	
-	<t:if test="track">
-		<p> Selected track: ${track.title}, ${track.album}</p>
-	</t:if>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/SelectZoneDemo.tml b/maint-5-2/tapestry-core/src/test/app1/SelectZoneDemo.tml
deleted file mode 100644
index a94cdbd..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SelectZoneDemo.tml
+++ /dev/null
@@ -1,30 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-	<p>Car Maker: ${carMaker}</p>
-	<p>Car Model: ${carModel}</p>
-	<t:form>
-		<p>
-			<t:errors />
-		</p>
-		<p>
-			<t:select t:id="carMaker" validate="required"
-				model="makeModel" zone="modelZone" encoder="makeEncoder" />
-		</p>
-
-		<t:zone t:id="modelZone">
-			<t:if test="carMaker">
-				<t:delegate to="modelBlock" />
-			</t:if>
-		</t:zone>
-
-		<t:block id="modelBlock">
-			<p id="carModelContainer">
-				<t:select t:id="carModel" model="availableModels" validate="required" blankOption="always" />
-			</p>
-		</t:block>
-		
-		<p>
-			<t:submit value="literal:Submit" />
-		</p>
-	</t:form>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ShortGrid.tml b/maint-5-2/tapestry-core/src/test/app1/ShortGrid.tml
deleted file mode 100644
index fc24f5b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ShortGrid.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Short Grid</h1>
-
-    <p>
-        Only items with index 0 to 5 should appear. After that, the GridDataSource returns null.
-    </p>
-
-    <t:grid id="grid" source="data"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ShowBirthdayReminder.tml b/maint-5-2/tapestry-core/src/test/app1/ShowBirthdayReminder.tml
deleted file mode 100644
index cc77281..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ShowBirthdayReminder.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="Border"
-  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>BeanEditor Date Demo</h1>
-
-  <t:beandisplay object="reminder" />
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/ShowCalendarHolder.tml b/maint-5-2/tapestry-core/src/test/app1/ShowCalendarHolder.tml
deleted file mode 100644
index 3562013..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ShowCalendarHolder.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border"
-  xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
-  <h1>BeanEditor Calendar Demo</h1>
-
-  <t:beandisplay object="holder" />
-  
-  <t:actionlink t:id="clear">clear</t:actionlink>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/SimpleForm.tml b/maint-5-2/tapestry-core/src/test/app1/SimpleForm.tml
deleted file mode 100644
index ddff25a..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SimpleForm.tml
+++ /dev/null
@@ -1,54 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Simple Form</h1>
-
-    <p>This is the
-        <em>very early</em>
-        start to Tapestry 5 form support.
-    </p>
-
-    <t:form clientvalidation="false">
-
-        <t:errors/>
-        
-        <input t:type="Checkbox" t:id="disabled"/>
-        <t:label for="disabled"/>
-        <br/>
-
-        <div class="t-beaneditor">
-
-            <t:label for="email">User Email</t:label>
-            <input t:type="TextField" t:id="email" value="incident.email" size="50" disabled="disabled"/>
-            <br/>
-            <t:label for="message" ignorebody="true">This label body is ignored.</t:label>
-            <input t:type="TextArea" t:id="message" label="Incident Message" value="incident.message"
-                   cols="50" rows="10" disabled="disabled">You can put text here, but it isn't used.
-            </input>
-            <br/>
-            <t:label for="operatingSystem"/>
-            <select t:type="Select" t:id="operatingSystem" value="incident.operatingSystem"
-                    model="message:os-values" disabled="disabled"/>
-            <br/>
-            <t:label for="department"/>
-            <select t:type="Select" t:id="department" value="incident.department" disabled="disabled"/>
-            <br/>
-            <t:label for="urgent"/>
-            <input t:type="Checkbox" t:id="urgent" value="incident.urgent" disabled="disabled"/>
-            <br/>
-            <input type="submit"/>
-        </div>
-    </t:form>
-
-    <hr/>
-
-    <p>Entered data:</p>
-
-    <ul>
-        <li>email: [${incident.email}]</li>
-        <li>message: [${incident.message}]</li>
-        <li>OS: [${incident.operatingSystem}]</li>
-        <li>urgent: [${incident.urgent}]</li>
-        <li>department: [${incident.department}]</li>
-    </ul>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/SimpleTrackGridDemo.tml b/maint-5-2/tapestry-core/src/test/app1/SimpleTrackGridDemo.tml
deleted file mode 100644
index 88a92e7..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SimpleTrackGridDemo.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <h1>Grid Demo</h1>
-    
-    <table t:type="Grid" source="tracks" row="track" model="simpleTrackModel">
-        <t:parameter name="ratingcell">
-            <t:outputRating rating="track.rating"/>
-        </t:parameter>
-    </table>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/SingleErrorDemo.tml b/maint-5-2/tapestry-core/src/test/app1/SingleErrorDemo.tml
deleted file mode 100644
index 5c061b7..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SingleErrorDemo.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Error Demo</h1>
-
-    <t:form clientvalidation="false">
-        
-        <t:error for="username"/>
-        <input t:type="TextField" t:id="username" validate="required"/>
-        <t:label for="username"/>
-        <br/>
-        
-        <t:error for="password"/>
-        <input t:type="PasswordField" t:id="password" validate="required"/>
-        <t:label for="password"/>
-        <br/>
-
-        <input type="submit"/>
-    </t:form>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/SlowAjaxDemo.tml b/maint-5-2/tapestry-core/src/test/app1/SlowAjaxDemo.tml
deleted file mode 100644
index 1950eaf..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/SlowAjaxDemo.tml
+++ /dev/null
@@ -1,29 +0,0 @@
-<t:border title="Slow Ajax Demo" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-
-    <t:zone t:id="zone">
-        <t:if test="zoneMessage">
-            <p id="zoneOutput">${zoneMessage}</p>
-        </t:if>
-    </t:zone>
-
-    <ul>
-        <li>
-            <t:pagelink page="slowajaxdemo">refresh</t:pagelink>
-        </li>
-        <li>
-            <t:actionlink t:id="link" zone="zone">action</t:actionlink>
-        </li>
-        <li>
-            <t:form zone="zone">
-                <t:linksubmit>link submit</t:linksubmit>
-                <input type="submit" value="Ordinary Submit"/>
-            </t:form>
-        </li>
-    </ul>
-
-
-    <script src="${slowScriptLink}"/>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/Target.tml b/maint-5-2/tapestry-core/src/test/app1/Target.tml
deleted file mode 100644
index f7fea49..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/Target.tml
+++ /dev/null
@@ -1,35 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Target</h1>
-    <h2>Activation Context</h2>
-    <t:if test="activationContext">
-
-        <ul>
-            <li t:type="loop" source="activationContext" value="object">
-                <t:if test="object" else="NULL">${object}</t:if>
-            </li>
-        </ul>
-        <t:parameter name="else">No activation context.</t:parameter>
-    </t:if>
-    <h2>Component Context</h2>
-    <t:if test="componentContext">
-
-        <ul>
-            <li t:type="loop" source="componentContext" value="object">${object}</li>
-        </ul>
-
-        <t:parameter name="else">No component context.</t:parameter>
-    </t:if>
-    <h2>Setup Component Context</h2>
-    [<a t:type="actionlink" context="contextToEncode">go</a>]
-
-    <h2>Navigation</h2>
-
-    <p>[<a t:type="pagelink" page="pagelinkcontext">PageLink Context Demo</a>]
-    </p>
-
-    <p>
-        [<t:pagelink t:id="nocontext" page="target" context="null">Target base, no context</t:pagelink>]
-    </p>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/TemplateOverrideDemo.tml b/maint-5-2/tapestry-core/src/test/app1/TemplateOverrideDemo.tml
deleted file mode 100644
index 04efaf4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/TemplateOverrideDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:replace id="content">
-        <p id="pagecontent">Content from TemplateOverrideDemo.tml</p>
-    </t:replace>
-</t:extend>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/TestOnlyServiceDemo.tml b/maint-5-2/tapestry-core/src/test/app1/TestOnlyServiceDemo.tml
deleted file mode 100644
index 6d5752c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/TestOnlyServiceDemo.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Test only message</h1>
-
-  <span id="message">${service.message}</span>
-
-</html>  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/TextFieldWrapperTypeDemo.tml b/maint-5-2/tapestry-core/src/test/app1/TextFieldWrapperTypeDemo.tml
deleted file mode 100644
index f52b831..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/TextFieldWrapperTypeDemo.tml
+++ /dev/null
@@ -1,35 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>TextField Wrapper Types Demo</h1>
-
-    <p>
-        Demonstrates the use of wrapper types (i.e. java.lang.Integer) with a TextField.
-    </p>
-
-    <t:form>
-        <t:errors/>
-
-        <t:textfield t:id="count" nulls="default"/>
-
-        <br/>
-
-        <input type="submit" value="Continue"/>
-
-    </t:form>
-
-    <hr/>
-
-    <p>
-        Count:
-        <t:if test="countNull">
-            <em id="value">null</em>
-            <t:parameter name="else">
-                <span id="value">${count}</span>
-            </t:parameter>
-        </t:if>
-
-        [<t:actionlink t:id="clear">clear</t:actionlink>]
-
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ToDoList.tml b/maint-5-2/tapestry-core/src/test/app1/ToDoList.tml
deleted file mode 100644
index 24935f9..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ToDoList.tml
+++ /dev/null
@@ -1,36 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <h1>ToDo List</h1>
-    
-    <form t:id="form">
-        
-        <t:errors/>
-        
-        <table class="t-data-table">
-            <tr>
-                <th> Title </th>
-                <th> Reorder </th>
-            </tr>
-            <tr t:type="Loop" source="items" value="item" encoder="encoder">
-                <td>
-                    <input t:type="TextField" t:id="title" value="item.title" size="30"
-                        validate="required"/>
-                </td>
-                <td> NOT YET </td>            
-            </tr>
-            <tr>
-                <td colspan="2">
-                    <input type="submit" value="Update ToDos"/>
-                    <input t:type="Submit" t:id="addNew" value="Add new ToDo"/>
-                </td>
-            </tr>
-            
-        </table>
-    </form>
-    
-    
-    <p>
-        <a t:type="ActionLink" t:id="reset">reset the database</a>
-    </p>
-    
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ToDoListVolatile.tml b/maint-5-2/tapestry-core/src/test/app1/ToDoListVolatile.tml
deleted file mode 100644
index 1519ca8..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ToDoListVolatile.tml
+++ /dev/null
@@ -1,36 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>ToDo List</h1>
-
-    <form t:id="form">
-
-        <t:errors/>
-
-        <table class="t-data-table">
-            <tr>
-                <th> Title </th>
-                <th> Reorder </th>
-            </tr>
-            <tr t:type="Loop" source="items" value="item" volatile="true">
-                <td>
-                    <input t:type="TextField" t:id="title" value="item.title" size="30"
-                        validate="required"/>
-                </td>
-                <td> NOT YET </td>            
-            </tr>
-            <tr>
-                <td colspan="2">
-                   <input type="submit" value="Update ToDos"/>
-                   <input t:type="Submit" t:id="addNew" value="Add new ToDo"/>
-                                   </td>
-            </tr>
- 
-        </table>
-    </form>
-    
-
-    <p>
-        <a t:type="ActionLink" t:id="reset">reset the database</a>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/UnavailableComponentDemo.tml b/maint-5-2/tapestry-core/src/test/app1/UnavailableComponentDemo.tml
deleted file mode 100644
index 0e52246..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/UnavailableComponentDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-	<t:textoutput value="foo"/>
-	
-	<t:unavailablecomponent/>
-	
-	<t:textoutput value="bar"/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/UnhandledEventDemo.tml b/maint-5-2/tapestry-core/src/test/app1/UnhandledEventDemo.tml
deleted file mode 100644
index 2d2758f..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/UnhandledEventDemo.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Unhandled Event Demo</h1>
-
-    <t:zone id="update">
-
-    </t:zone>
-
-    <ul>
-        <li id="traditional">
-            <t:actionlink t:id="traditional">traditional</t:actionlink>
-        </li>
-        <li>
-            <t:actionlink t:id="ajax" zone="update">ajax</t:actionlink>
-        </li>
-    </ul>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/UnlessDemo.tml b/maint-5-2/tapestry-core/src/test/app1/UnlessDemo.tml
deleted file mode 100644
index 105b2df..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/UnlessDemo.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <p id="false">
-        <t:unless test="false">
-            false is rendered
-        </t:unless>
-    </p>
-
-    <p id="true">
-        <t:unless test="true">true is not rendered</t:unless>
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/Unreachable.tml b/maint-5-2/tapestry-core/src/test/app1/Unreachable.tml
deleted file mode 100644
index 4a0b0d3..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/Unreachable.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html>
-    <h1>This page should not be reachable, due to IgnoredPathsFilter.</h1>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/UnsupportedParameterBlockDemo.tml b/maint-5-2/tapestry-core/src/test/app1/UnsupportedParameterBlockDemo.tml
deleted file mode 100644
index 15c2bc5..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/UnsupportedParameterBlockDemo.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-    <t:outputraw>
-        <p:unexpected>Informal parameter to component that does not support them.</p:unexpected>
-    </t:outputraw>
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ValidateFormValidationExceptionDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ValidateFormValidationExceptionDemo.tml
deleted file mode 100644
index eefd5b2..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ValidateFormValidationExceptionDemo.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>ValidateForm ValidationException Demo</h1>
-
-
-    <t:form t:id="form">
-        <t:errors/>
-        <input type="submit"/>
-    </t:form>
-
-    <p>
-        Last event:
-        <span id="event">${event}</span>
-    </p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ValidatorMacroDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ValidatorMacroDemo.tml
deleted file mode 100644
index be56223..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ValidatorMacroDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-	<h1>Validator Macro Demo</h1>
-	<t:form clientValidation="false">
-		<t:errors />
-		<p>
-			<label t:type="label" for="password"/>
-			<input t:type="passwordfield" t:id="password" validate="password"/>
-		</p>
-		<p>
-			<label t:type="label" for="password2"/>
-			<input t:type="passwordfield" t:id="password2" />
-		</p>
-		<input type="submit" />
-	</t:form>
-	
-	<p> Password: ${password}</p>
-	<p> Password2: ${password2}</p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ViewRegistration.tml b/maint-5-2/tapestry-core/src/test/app1/ViewRegistration.tml
deleted file mode 100644
index e6b9856..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ViewRegistration.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>BeanEdit Component Demo</h1>
-    
-<t:beandisplay t:id="registrationdata">
-  <t:parameter name="citizen">
-    <t:if test="registrationdata.citizen">U.S. Citizen
-      <t:parameter name="else">
-        Resident Alien
-      </t:parameter>
-    </t:if>
-  </t:parameter>
-</t:beandisplay>
-    
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/app.properties b/maint-5-2/tapestry-core/src/test/app1/WEB-INF/app.properties
deleted file mode 100644
index 17192b6..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/app.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-app-catalog-status=Application Catalog Working
-
-viewlink-label=View
-overridden-by-app=[app]
diff --git a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/pre-app.properties b/maint-5-2/tapestry-core/src/test/app1/WEB-INF/pre-app.properties
deleted file mode 100644
index 1d71c57..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/pre-app.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-overridden-by-app=[pre-app]
-pre-app=[pre-app]
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/unavailable.css b/maint-5-2/tapestry-core/src/test/app1/WEB-INF/unavailable.css
deleted file mode 100644
index 96351bb..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/unavailable.css
+++ /dev/null
@@ -1,3 +0,0 @@
-/*the originally contributed regex to open up context assets resulted in
- * .css, .jpeg, etc. files in WEB-INF being accessible. This css file is just here for 
- * integration testing purposes to make sure that's not the case now.*/
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/web.xml b/maint-5-2/tapestry-core/src/test/app1/WEB-INF/web.xml
deleted file mode 100644
index be157cc..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/WEB-INF/web.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2006, 2010 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Integration Test App 1</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.apache.tapestry5.integration.app1</param-value>
-    </context-param>
-    <context-param>
-      <param-name>tapestry.production-modules</param-name>
-      <param-value>org.apache.tapestry5.integration.app1.services.TestOnlyModule</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-core/src/test/app1/XMLContent.tml b/maint-5-2/tapestry-core/src/test/app1/XMLContent.tml
deleted file mode 100644
index 4a4836d..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/XMLContent.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
-        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>XML Content</h1>
-
-    <p>
-        <![CDATA[< & >]]>
-    </p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ZoneFormUpdateDemo.tml b/maint-5-2/tapestry-core/src/test/app1/ZoneFormUpdateDemo.tml
deleted file mode 100644
index c14801c..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ZoneFormUpdateDemo.tml
+++ /dev/null
@@ -1,42 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
-  <h1>Zone/Form Update Demo</h1>
-
-  <h2>Form</h2>
-
-  <t:form t:id="form">
-
-    <t:zone t:id="zone" id="zone">
-
-      <p id="initial">
-        Initial content.
-      </p>
-
-    </t:zone>
-
-    <br/>
-    <input type="submit" value="Submit Form"/>
-
-  </t:form>
-
-  <p>
-    <t:actionlink t:id="update" zone="zone">Update the form</t:actionlink>
-  </p>
-
-  <h2>Data</h2>
-
-  <p>
-    Entered value:
-    <strong id="output">${value}</strong>
-  </p>
-
-  <t:block id="fields">
-
-    <p id="updated">Updated content:</p>
-
-    <label for="value"/>
-    <t:textfield t:id="value"/>
-
-  </t:block>
-
-</html>    
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/ZoneUpdateNamespace.tml b/maint-5-2/tapestry-core/src/test/app1/ZoneUpdateNamespace.tml
deleted file mode 100644
index 47fdf14..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/ZoneUpdateNamespace.tml
+++ /dev/null
@@ -1,31 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-
-        <h1>Outside of zone</h1>
-
-        <p>Current time is
-            <span id="outernow">${now}</span>
-        </p>
-
-
-        <h2>Inside of zone</h2>
-        <t:zone t:id="zone">
-
-            <p>Current time is
-                <span id="innernow">${now}</span>
-            </p>
-
-            <t:if test="message">
-                <p id="message">${message}</p>
-            </t:if>
-
-            <t:form zone="zone">
-                <input type="submit" value="Update Zone"/>
-            </t:form>
-        </t:zone>
-    </body>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/availablefile.txt b/maint-5-2/tapestry-core/src/test/app1/availablefile.txt
deleted file mode 100644
index 8abde56..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/availablefile.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should be available to clients.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/css/app.css b/maint-5-2/tapestry-core/src/test/app1/css/app.css
deleted file mode 100644
index 13a916b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/css/app.css
+++ /dev/null
@@ -1,40 +0,0 @@
-SPAN.inherit {
-    font-style: italic;
-}
-
-A.selected {
-    font-size: large;
-    font-weight: bold;
-}
-
-DIV#topspread {
-    padding: 0px 5px;
-}
-
-DIV.menu {
-    margin-bottom: 10px;
-}
-
-/** Copy of "#right h3" */
-
-DIV#left H3 {
-    background: #4A1605 url( ../layout/images/rightbig.gif ) no-repeat;
-    height: 30px;
-    line-height: 30px;
-    color: #fff;
-    padding-left: 10px;
-    font-size: 13px;
-    font-weight: 600;
-}
-
-/* Copy of ".menu h4" */
-DIV.t-env-data-section {
-    background: #4A1605 url( ../layout/images/rightsmall.gif ) no-repeat;
-    height: 20px;
-    line-height: 20px;
-    color: #fff;
-    padding-left: 10px;
-    font-size: 12px;
-    font-weight: 600;
-    width: 170px;
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/css/ie-only.css b/maint-5-2/tapestry-core/src/test/app1/css/ie-only.css
deleted file mode 100644
index 531d7fa..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/css/ie-only.css
+++ /dev/null
@@ -1,6 +0,0 @@
-DIV.ie-big-blue
-{
-    color: blue;
-    font-weight: bold;
-    size: x-large;
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/css/via-import.css b/maint-5-2/tapestry-core/src/test/app1/css/via-import.css
deleted file mode 100644
index 71bc846..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/css/via-import.css
+++ /dev/null
@@ -1,5 +0,0 @@
-DIV.via-import
-{
-  color: red;
-}  
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/images/asf_logo_wide.gif b/maint-5-2/tapestry-core/src/test/app1/images/asf_logo_wide.gif
deleted file mode 100644
index b240328..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/images/asf_logo_wide.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/images/tapestry_banner.gif b/maint-5-2/tapestry-core/src/test/app1/images/tapestry_banner.gif
deleted file mode 100644
index 42118f9..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/images/tapestry_banner.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/images/bg.gif b/maint-5-2/tapestry-core/src/test/app1/layout/images/bg.gif
deleted file mode 100755
index aed0647..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/images/bg.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/images/bottom.gif b/maint-5-2/tapestry-core/src/test/app1/layout/images/bottom.gif
deleted file mode 100755
index faa631b..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/images/bottom.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/images/footer.gif b/maint-5-2/tapestry-core/src/test/app1/layout/images/footer.gif
deleted file mode 100755
index 6d820a4..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/images/footer.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/images/header.gif b/maint-5-2/tapestry-core/src/test/app1/layout/images/header.gif
deleted file mode 100755
index 62133bc..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/images/header.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/images/rightbig.gif b/maint-5-2/tapestry-core/src/test/app1/layout/images/rightbig.gif
deleted file mode 100755
index 9a378f5..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/images/rightbig.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/images/rightsmall.gif b/maint-5-2/tapestry-core/src/test/app1/layout/images/rightsmall.gif
deleted file mode 100755
index 9766528..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/images/rightsmall.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/index.html b/maint-5-2/tapestry-core/src/test/app1/layout/index.html
deleted file mode 100755
index f1b2f5e..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/index.html
+++ /dev/null
@@ -1,108 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

-<html xmlns="http://www.w3.org/1999/xhtml">

-<head>

-    <title>Professional</title>

-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

-    <meta http-equiv="Content-Language" content="English"/>

-    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

-    <link rel="stylesheet" type="text/css" href="style.css" media="screen"/>

-</head>

-<body>

-<div id="wrap">

-

-    <div id="header">

-        <h1><a href="#">Your Website Title</a></h1>

-

-        <h2>Slogan of your website - H2</h2>

-    </div>

-

-    <div id="content">

-

-        <div id="intro">

-            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla imperdiet aliquet orci.

-            Sed quis nibh. Mauris ac elit sed velit scelerisque nonummy. Class aptent taciti sociosqu

-            ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus quis ipsum

-            ac mauris vulputate ullamcorper. Praesent nonummy urna a es. Consectetuer adipiscing elit.

-            Mauris ac elit sed velit scelerisque nonummy.Sed quis nibh. Mauris ac elit sed velit scelerisque nonummy.

-            Nulla imperdiet aliquet orci. Sed quis nibh. Mauris ac elit sed velit scelerisque.

-        </div>

-

-        <div id="left">

-

-            <h2><a href="#">Lorem Ipsum dolor sit amet</a></h2>

-

-            <img src="images/pic.gif" alt="Example pic" style="border: 3px solid #eee;"/>

-            <br/>

-            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla imperdiet aliquet orci.

-            Sed quis nibh. Mauris ac elit sed velit scelerisque nonummy. Class aptent taciti sociosqu

-            ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus quis ipsum

-            ac mauris vulputate ullamcorper. Praesent nonummy urna a es. Consectetuer adipiscing elit.

-            Mauris ac elit sed velit scelerisque nonummy.Sed quis nibh. Mauris ac elit sed velit scelerisque nonummy.

-            Nulla imperdiet aliquet orci. Sed quis nibh. Mauris ac elit sed velit scelerisque.

-            <br/><br/>

-            Consectetuer adipiscing elit.

-            Mauris ac elit sed velit scelerisque nonummy.Sed quis nibh. Mauris ac elit sed velit scelerisque nonummy.

-            Nulla imperdiet aliquet orci. Sed quis nibh. Mauris ac elit sed velit scelerisque.

-            Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla imperdiet aliquet orci.

-            Sed quis nibh. Mauris ac elit sed velit scelerisque nonummy. Class aptent taciti sociosqu

-            ad litora torquent per conubia nostra, per inceptos hymenaeos. Phasellus quis ipsum

-            ac mauris vulputate ullamcorper. Praesent nonummy urna a es.

-            <br/><br/>

-            Mauris ac elit sed velit scelerisque.

-            Lorem ipsum dolor sit amet, consectetuer adipiscing.

-

-        </div>

-

-        <div id="right">

-

-            <h3>Advertisments or Latest Articles</h3>

-

-            <div class="rightads">

-                <img src="images/ads.gif" alt="Ads"/>

-            </div>

-

-            <div class="menu">

-                <h4>Categories</h4>

-                <ul>

-                    <li><a href="#">Home</a></li>

-                    <li><a href="#">Art and Humanities</a></li>

-                    <li><a href="#">World Politics</a></li>

-                    <li><a href="#">World Sports</a></li>

-                    <li><a href="#">Categories</a></li>

-                    <li><a href="#">Your Category</a></li>

-                    <li><a href="#">Something Goes Here</a></li>

-                    <li><a href="#">Example Categories</a></li>

-                    <li><a href="#">Surfing</a></li>

-                </ul>

-            </div>

-

-            <div class="menu1">

-                <h4>Archives</h4>

-                <ul>

-                    <li><a href="#">January 2007</a></li>

-                    <li><a href="#">February 2007</a></li>

-                    <li><a href="#">March 2007</a></li>

-                    <li><a href="#">April 2007</a></li>

-                    <li><a href="#">May 2007</a></li>

-                    <li><a href="#">June 2007</a></li>

-                    <li><a href="#">July 2007</a></li>

-                    <li><a href="#">August 2007</a></li>

-                    <li><a href="#">September 2007</a></li>

-                </ul>

-            </div>

-

-        </div>

-

-        <div style="clear: both;"></div>

-    </div>

-

-    <div id="footer">

-        &copy; Copyright by <a href="#">You</a> | Design by <a href="http://www.minimalistic-design.net">Minimalistic

-        Design</a>

-    </div>

-

-    <div id="bottom"></div>

-

-</div>

-</body>

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/layout/style.css b/maint-5-2/tapestry-core/src/test/app1/layout/style.css
deleted file mode 100755
index 3d7c449..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/layout/style.css
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/app1/music/MusicDetails.tml b/maint-5-2/tapestry-core/src/test/app1/music/MusicDetails.tml
deleted file mode 100644
index f4d7d36..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/music/MusicDetails.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Track Details</h1>
-
-    <t:beandisplay object="track"/>
-
-    <p>
-        <t:pagelink page="music">Back to music library</t:pagelink>
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/music/MusicDetails2.tml b/maint-5-2/tapestry-core/src/test/app1/music/MusicDetails2.tml
deleted file mode 100644
index f4d7d36..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/music/MusicDetails2.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Track Details</h1>
-
-    <t:beandisplay object="track"/>
-
-    <p>
-        <t:pagelink page="music">Back to music library</t:pagelink>
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/app1/nested/ActionDemo.tml b/maint-5-2/tapestry-core/src/test/app1/nested/ActionDemo.tml
deleted file mode 100644
index 044c374..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/nested/ActionDemo.tml
+++ /dev/null
@@ -1,23 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-

-    <t:if test="number">

-        <p>

-            <strong>

-                <span id="message">Number: ${number}</span>

-            </strong>

-        </p>

-    </t:if>

-

-    <p>

-        Choose a number:

-

-        <ul>

-            <t:loop source="1..3" value="var:currentNumber">

-                <li>

-                    <t:actionlink t:id="actionlink" context="var:currentNumber">${var:currentNumber}</t:actionlink>

-                </li>

-            </t:loop>

-        </ul>

-    </p>

-

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app1/nested/ZoneDemo.tml b/maint-5-2/tapestry-core/src/test/app1/nested/ZoneDemo.tml
deleted file mode 100644
index 528e897..0000000
--- a/maint-5-2/tapestry-core/src/test/app1/nested/ZoneDemo.tml
+++ /dev/null
@@ -1,106 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="default">
-  <h1>Zone/Ajax Demo</h1>
-
-
-  <h2>Last update: ${currentTime}</h2>
-
-
-  <t:zone t:id="output" style="float:right; width: 800px;" update="slidedown">
-    <span class="t-zone-update">
-      <t:if test="name" else="No name has been selected.">
-        Selected: ${name}
-            </t:if>
-    </span>
-  </t:zone>
-
-  <t:block id="registrationForm">
-
-
-    <t:beaneditform t:id="registrationForm" object="registration" zone="^" add="roles">
-
-      <t:parameter name="roles">
-        <t:palette selected="registration.roles" encoder="encoder" model="literal:guest,user,admin"/>
-      </t:parameter>
-
-    </t:beaneditform>
-
-    <t:actionlink t:id="clear" zone="output">clear</t:actionlink>
-
-  </t:block>
-
-  <t:block id="registrationOutput">
-    <t:beandisplay object="registration" add="roles">
-      <t:parameter name="roles">
-        ${registration.roles}
-            </t:parameter>
-    </t:beandisplay>
-  </t:block>
-
-  <t:block id="voteForm">
-    <t:form t:id="vote" zone="^">
-      Vote:
-      <input type="submit" name="abstain" value="Abstain"/>
-      <t:submit t:id="voteYes" value="Yes"/>
-      <t:submit t:id="voteNo" value="No"/>
-    </t:form>
-  </t:block>
-
-  <t:block id="voteOutput">
-    You voted: ${vote}
-    </t:block>
-
-
-  <ul>
-    <li t:type="loop" source="names" value="name">
-      <t:actionlink t:id="select" context="name" zone="output">Select "${name}"</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="JSON" zone="output">Direct JSON response</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="fail" zone="output">Failure on the server side</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="redirect" zone="output">Perform a redirect to another page
-      </t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="secureRedirect" zone="output">Perform secure redirect to another page
-      </t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="blankUpdate" zone="output">Blank the zone</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="poorlyFormattedFail" zone="output">Poorly formatted server-side
-        failure</t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="badZone" zone="output">
-        MultiZone update with unknown id
-      </t:actionlink>
-    </li>
-    <li>
-      <t:actionlink t:id="nonZoneUpdate" zone="output">
-        MultiZone update with id of non-Zone
-        element
-      </t:actionlink>
-    </li>
-  </ul>
-
-  <div id="notAZone"/>
-
-  <t:block id="empty"/>
-
-  <t:block id="forUnknownZone">
-    <p>Content for the unknown zone.</p>
-  </t:block>
-
-  <t:block id="forNotAZone">
-    <p>Content for zone update for a non-Zone element.</p>
-  </t:block>
-
-  <div id="zone-update-message"/>
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app2/Final.tml b/maint-5-2/tapestry-core/src/test/app2/Final.tml
deleted file mode 100644
index efb8406..0000000
--- a/maint-5-2/tapestry-core/src/test/app2/Final.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <p>
-            Arrived on page<span id="page-name">${componentResources.pageName}</span>.
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app2/Launch.tml b/maint-5-2/tapestry-core/src/test/app2/Launch.tml
deleted file mode 100644
index 710f429..0000000
--- a/maint-5-2/tapestry-core/src/test/app2/Launch.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-
-        <t:form t:id="form">
-            <input type="submit" value="Launch"/>
-        </t:form>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app2/OpaqueResource.txt b/maint-5-2/tapestry-core/src/test/app2/OpaqueResource.txt
deleted file mode 100644
index 525c208..0000000
--- a/maint-5-2/tapestry-core/src/test/app2/OpaqueResource.txt
+++ /dev/null
@@ -1 +0,0 @@
-some opaque resource. This file is needed by a unit test. Do not delete it.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app2/TestPageForTemplateInContext.tml b/maint-5-2/tapestry-core/src/test/app2/TestPageForTemplateInContext.tml
deleted file mode 100644
index 72dc401..0000000
--- a/maint-5-2/tapestry-core/src/test/app2/TestPageForTemplateInContext.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-<p>
-${msg}
-</p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app2/css/test.css b/maint-5-2/tapestry-core/src/test/app2/css/test.css
deleted file mode 100644
index 7fcdff9..0000000
--- a/maint-5-2/tapestry-core/src/test/app2/css/test.css
+++ /dev/null
@@ -1,3 +0,0 @@
-.foo {
-    display: none;
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/BeanDisplayOverrideDemo.tml b/maint-5-2/tapestry-core/src/test/app3/BeanDisplayOverrideDemo.tml
deleted file mode 100644
index 126f2ec..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/BeanDisplayOverrideDemo.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>BeanDisplay Global Override Demo</title>
-    </head>
-    <body>
-        <h1>BeanDisplay Global Override Demo</h1>
-
-        <t:beandisplay object="this"/>
-
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/ConsoleDemo.tml b/maint-5-2/tapestry-core/src/test/app3/ConsoleDemo.tml
deleted file mode 100644
index 3d68b0a..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/ConsoleDemo.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-	<head>
-		<title>Console Demo</title>
-	</head>
-	<body>
-		<h1>Demonstrates Tapestry console</h1>
-		
-	    <p><t:zone t:id="output"/></p>
-		<p>
-			<t:actionlink t:id="fail" zone="output">Failure on the server side</t:actionlink>
-		</p>
-	</body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/ContentPage.tml b/maint-5-2/tapestry-core/src/test/app3/ContentPage.tml
deleted file mode 100644
index 75c8dd8..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/ContentPage.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Content Page</title>
-    </head>
-    <body>
-        <div id="link">
-            <p>
-                Included link:
-                <t:pagelink page="login">login</t:pagelink>
-            </p>
-        </div>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/Index.tml b/maint-5-2/tapestry-core/src/test/app3/Index.tml
deleted file mode 100644
index 95d0cbf..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/Index.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Index</title>
-    </head>
-    <body>
-        <h1>Index</h1>
-
-        <p>
-            Message:
-            <span id="message">${message}</span>
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/Login.tml b/maint-5-2/tapestry-core/src/test/app3/Login.tml
deleted file mode 100644
index cfb459b..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/Login.tml
+++ /dev/null
@@ -1,25 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Login</title>
-    </head>
-    <body>
-        <h1>Login Page</h1>
-
-        <p>
-            You have reached this page via a redirect from the Index page's onActivate() event handler method.
-        </p>
-
-        <ul>
-            <li>
-                <t:pagelink page="beandisplayoverridedemo">BeanDisplay Override Demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="renderpagedemo">PageDocumentGenerator demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="consoledemo">Console demo</t:pagelink>
-            </li>
-        </ul>
-
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/PropertyDisplayBlockOverrides.tml b/maint-5-2/tapestry-core/src/test/app3/PropertyDisplayBlockOverrides.tml
deleted file mode 100644
index 95ef04a..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/PropertyDisplayBlockOverrides.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:block id="boolean">
-        <t:if test="context.propertyValue">
-            Yea
-            <t:parameter name="else">
-                Nay
-            </t:parameter>
-        </t:if>
-    </t:block>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/RenderPageDemo.tml b/maint-5-2/tapestry-core/src/test/app3/RenderPageDemo.tml
deleted file mode 100644
index 422653c..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/RenderPageDemo.tml
+++ /dev/null
@@ -1,22 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Demo</title>
-    </head>
-    <body>
-
-        <p>
-            Content from page "ContentPage":
-        </p>
-
-        <blockquote id="content">
-            <t:outputraw value="pageContent"/>
-        </blockquote>
-
-        <p>
-            Normal link to login page:
-            <span id="link2">
-                <t:pagelink page="login">login</t:pagelink>
-            </span>
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app3/WEB-INF/web.xml b/maint-5-2/tapestry-core/src/test/app3/WEB-INF/web.xml
deleted file mode 100644
index 4bb39e2..0000000
--- a/maint-5-2/tapestry-core/src/test/app3/WEB-INF/web.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2006 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Integration Test App 3</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.apache.tapestry5.integration.app3</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-core/src/test/app4/Destination.tml b/maint-5-2/tapestry-core/src/test/app4/Destination.tml
deleted file mode 100644
index eebcb38..0000000
--- a/maint-5-2/tapestry-core/src/test/app4/Destination.tml
+++ /dev/null
@@ -1,27 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Destination</title>
-    </head>
-
-    <body>
-
-
-        <dl>
-            <dt>message</dt>
-            <dd>${message}</dd>
-
-            <dt>value</dt>
-            <dd>${value}</dd>
-        </dl>
-
-        <hr/>
-
-        <t:pagelink page="destination">refresh page</t:pagelink>
-
-        <hr/>
-
-        <t:actionlink t:id="refresh">refresh via action</t:actionlink>
-
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app4/Start.tml b/maint-5-2/tapestry-core/src/test/app4/Start.tml
deleted file mode 100644
index aa8d439..0000000
--- a/maint-5-2/tapestry-core/src/test/app4/Start.tml
+++ /dev/null
@@ -1,24 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Start</title>
-    </head>
-
-    <body>
-
-        <h1>Start Page</h1>
-        
-        <p>Index Page Exists: ${indexPageExists}</p>
-        <p>Start Page Exists: ${startPageExists}</p>
-
-        <t:beaneditform object="this"/>
-
-        <hr/>
-
-        <p>
-            Click
-            <t:actionlink t:id="bypass">here</t:actionlink>
-            to bypass the form.
-        </p>
-    </body>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app4/WEB-INF/web.xml b/maint-5-2/tapestry-core/src/test/app4/WEB-INF/web.xml
deleted file mode 100644
index bea3287..0000000
--- a/maint-5-2/tapestry-core/src/test/app4/WEB-INF/web.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Integration Test App 4</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.apache.tapestry5.integration.app4</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-core/src/test/app5/Dummy.tml b/maint-5-2/tapestry-core/src/test/app5/Dummy.tml
deleted file mode 100644
index b83eb87..0000000
--- a/maint-5-2/tapestry-core/src/test/app5/Dummy.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Index</title>
-    </head>
-    <body>
-        <h1>Index</h1>
-        <p>
-        	Dummy template.
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app5/Index.tml b/maint-5-2/tapestry-core/src/test/app5/Index.tml
deleted file mode 100644
index 24ce82e..0000000
--- a/maint-5-2/tapestry-core/src/test/app5/Index.tml
+++ /dev/null
@@ -1,24 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Index</title>
-    </head>
-    <body>
-        <h1>Index</h1>
-        <p>
-        	<a href="#" t:type="PageLink" t:page="urlrewritesuccess" t:context="literal:login"
-        		class="subdomain">
-        		Link to subdomain (must be rewritten)
-        	</a>
-        </p>
-        <p>
-        	<a href="#" t:type="PageLink" t:page="index" class="self">
-        		Link to self (must not be rewritten)
-        	</a>
-        </p>
-        <p>
-        	<a href="#" t:type="PageLink" t:page="dummy" class="dummy">
-        		Link to dummy
-        	</a>
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app5/RewriteSuccess2.tml b/maint-5-2/tapestry-core/src/test/app5/RewriteSuccess2.tml
deleted file mode 100644
index 11c123b..0000000
--- a/maint-5-2/tapestry-core/src/test/app5/RewriteSuccess2.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <head>
-        <title>
-            Rewrite Success, 2
-        </title>
-    </head>
-    <body>
-        URL Rewriting that relies on the RewriteContext evidently works.
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app5/RewriteWithContext.tml b/maint-5-2/tapestry-core/src/test/app5/RewriteWithContext.tml
deleted file mode 100644
index 2fc2ef3..0000000
--- a/maint-5-2/tapestry-core/src/test/app5/RewriteWithContext.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <head>
-        <title>
-            Rewrite With Context
-        </title>
-    </head>
-    <body>
-        <a t:type="pagelink" t:id="thePageLink" page="RewriteSuccess2" class="page">Rewrite Page Link</a>
-        <a t:type="eventlink" t:id="theEventLink" event="click" class="event">Rewrite Component Event Link</a>
-        <a t:type="actionlink" t:id="theActingLink" class="action">Rewrite Action Link</a>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app5/URLRewriteSuccess.tml b/maint-5-2/tapestry-core/src/test/app5/URLRewriteSuccess.tml
deleted file mode 100644
index 772c837..0000000
--- a/maint-5-2/tapestry-core/src/test/app5/URLRewriteSuccess.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Demo</title>
-    </head>
-    <body>
-        <p>
-            End of maze. URL rewriting works :).
-        </p>
-        <p>
-        	Login: ${login}
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/app5/WEB-INF/web.xml b/maint-5-2/tapestry-core/src/test/app5/WEB-INF/web.xml
deleted file mode 100644
index 4a4dc73..0000000
--- a/maint-5-2/tapestry-core/src/test/app5/WEB-INF/web.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2006 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Integration Test App 3</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.apache.tapestry5.integration.app5</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-core/src/test/conf/ff_profile_template/cert8.db b/maint-5-2/tapestry-core/src/test/conf/ff_profile_template/cert8.db
deleted file mode 100644
index 7f27249..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/ff_profile_template/cert8.db
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt b/maint-5-2/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt
deleted file mode 100644
index 77c0d0b..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/ff_profile_template/cert_override.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-# PSM Certificate Override Settings file

-# This is a generated file!  Do not edit.

-localhost:8443	OID.2.16.840.1.101.3.4.2.1	AC:9D:B3:A8:70:15:50:D6:51:69:4D:48:70:00:91:53:88:44:A5:EB:12:23:EC:2D:E1:87:40:88:5B:55:E8:26	MUT	AAAAAAAAAAAAAAAEAAAAkknlCnYwgY8xCzAJBgNVBAYTAlVTMQ8wDQYDVQQIEwZP  cmVnb24xETAPBgNVBAcTCFBvcnRsYW5kMSMwIQYDVQQKExpBcGFjaGUgU29mdHdh  cmUgRm91bmRhdGlvbjEYMBYGA1UECxMPQXBhY2hlIFRhcGVzdHJ5MR0wGwYDVQQD  ExRIb3dhcmQgTS4gTGV3aXMgU2hpcA==

diff --git a/maint-5-2/tapestry-core/src/test/conf/keystore b/maint-5-2/tapestry-core/src/test/conf/keystore
deleted file mode 100644
index 5a41df5..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/keystore
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/conf/keystore-password.txt b/maint-5-2/tapestry-core/src/test/conf/keystore-password.txt
deleted file mode 100644
index 268c8f4..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/keystore-password.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-The password for this keystore is "tapestry".
-
-Regenerate with:
-
-keytool -keystore keystore -alias jetty -genkey -keyalg RSA
-
diff --git a/maint-5-2/tapestry-core/src/test/conf/testng-limited.xml b/maint-5-2/tapestry-core/src/test/conf/testng-limited.xml
deleted file mode 100644
index 6375c3e..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/testng-limited.xml
+++ /dev/null
@@ -1,15 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-  <!--
-    A stripped-down version of testng.xml that is frequently edited to allow specific integration
-    test classes to be run. That saves a lot of time.
-  -->
-<suite name="Tapestry Core - Limited" annotations="1.5" verbose="2">
-  <test name="Limited  Integration Tests">
-    <parameter name="tapestry.web-app-folder" value="src/test/app1"/>
-
-    <packages>
-      <package name="org.apache.tapestry5.integration.app1"/>
-    </packages>
-  </test>
-
-</suite>
diff --git a/maint-5-2/tapestry-core/src/test/conf/testng.xml b/maint-5-2/tapestry-core/src/test/conf/testng.xml
deleted file mode 100644
index 6eece65..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/testng.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!-- Copyright 2008, 2009 The Apache Software Foundation Licensed under the Apache License, Version 2.0 
-  (the "License"); you may not use this file except in compliance with the License. You may obtain a copy 
-  of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable law or agreed 
-  to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES 
-  OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing 
-  permissions and limitations under the License. -->
-
-<!-- The suite may no longer be run in parallel, because of some tricky issues related to locking of 
-  class loaders. Running in parallel causes thread deadlocks, when unmanaged tests run at the same time 
-  as Selenium-based integration tests. See TAPESTRY-2561. -->
-<suite name="Tapestry Core" annotations="1.5" verbose="2">
-  <test name="Component Unit Tests" enabled="true">
-    <packages>
-      <package name="org.apache.tapestry5.integration.pagelevel"/>
-      <package name="org.apache.tapestry5.corelib.base"/>
-      <package name="org.apache.tapestry5.corelib.components"/>
-      <package name="org.apache.tapestry5.corelib.internal"/>
-    </packages>
-  </test>
-
-  <test name="Service Unit Tests" enabled="true">
-    <packages>
-      <package name="org.apache.tapestry5.root"/>
-      <package name="org.apache.tapestry5.dom"/>
-      <package name="org.apache.tapestry5.runtime"/>
-      <package name="org.apache.tapestry5.services"/>
-      <package name="org.apache.tapestry5.util"/>
-      <package name="org.apache.tapestry5.validator"/>
-      <package name="org.apache.tapestry5.internal"/>
-      <package name="org.apache.tapestry5.internal.beaneditor"/>
-      <package name="org.apache.tapestry5.internal.bindings"/>
-      <package name="org.apache.tapestry5.internal.grid"/>
-      <package name="org.apache.tapestry5.internal.model"/>
-      <package name="org.apache.tapestry5.internal.pageload"/>
-      <package name="org.apache.tapestry5.internal.services"/>
-      <package name="org.apache.tapestry5.internal.services.assets"/>
-      <package name="org.apache.tapestry5.internal.services.messages"/>
-      <package name="org.apache.tapestry5.internal.services.meta"/>
-      <package name="org.apache.tapestry5.internal.services.templates"/>
-      <package name="org.apache.tapestry5.internal.structure"/>
-      <package name="org.apache.tapestry5.internal.test"/>
-      <package name="org.apache.tapestry5.internal.transform"/>
-      <package name="org.apache.tapestry5.internal.translator"/>
-      <package name="org.apache.tapestry5.internal.util"/>
-      <package name="org.apache.tapestry5.internal.services.ajax"/>
-    </packages>
-  </test>
-
-  <!-- We break these out by which of the test applications they apply to. We have a bunch. -->
-  <test name="Core Integration Tests" enabled="true">
-    <parameter name="tapestry.web-app-folder" value="src/test/app1"/>
-
-    <packages>
-      <package name="org.apache.tapestry5.integration.app1"/>
-    </packages>
-  </test>
-
-  <test name="Additional Integration Tests" enabled="true">
-    <parameter name="tapestry.web-app-folder" value="src/test/app3"/>
-
-    <packages>
-      <package name="org.apache.tapestry5.integration.app3"/>
-    </packages>
-  </test>
-
-  <test name="Immediate Mode Integration Tests" enabled="true">
-    <parameter name="tapestry.web-app-folder" value="src/test/app4"/>
-
-    <packages>
-      <package name="org.apache.tapestry5.integration.app4"/>
-    </packages>
-  </test>
-
-  <test name="URL Rewriter Tests" enabled="true">
-    <parameter name="tapestry.web-app-folder" value="src/test/app5"/>
-
-    <packages>
-      <package name="org.apache.tapestry5.urlrewriter"/>
-    </packages>
-  </test>
-
-  <test name="Live Reload Tests" enabled="true">
-    <packages>
-      <package name="org.apache.tapestry5.integration.reload"/>
-    </packages>
-  </test>
-
-  <test name="LinkTransformer Tests" enabled="true">
-    <parameter name="tapestry.web-app-folder" value="src/test/linktrans"/>
-    <packages>
-      <package name="org.apache.tapestry5.integration.linktrans"/>
-    </packages>
-  </test>
-
-  <test name="PageTester Tests" enabled="true">
-    <packages>
-      <package name="org.apache.tapestry5.integration.pagetester"/>
-    </packages>
-  </test>
-</suite>
diff --git a/maint-5-2/tapestry-core/src/test/conf/webdefault.xml b/maint-5-2/tapestry-core/src/test/conf/webdefault.xml
deleted file mode 100644
index 3267baa..0000000
--- a/maint-5-2/tapestry-core/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2006 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy b/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
deleted file mode 100644
index d2f7ace..0000000
--- a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ActivationRequestParameterTests.groovy
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.components.Submit;
-import org.apache.tapestry5.integration.TapestryCoreTestCase 
-import org.testng.annotations.Test 
-
-class ActivationRequestParameterTests extends TapestryCoreTestCase
-{
-    @Test
-    void basic_links() {
-        clickThru "ActivationRequestParameter Annotation Demo"
-        
-        assertText "click-count", ""
-        assertText "click-count-set", "false"
-        assertText "message", ""
-        
-        clickAndWait "link=increment count"
-        
-        assertText "click-count", "1"
-        assertText "click-count-set", "true"
-        
-        clickAndWait "link=set message"
-        
-        assertText "click-count", "1"
-        assertText "click-count-set", "true"
-        assertText "message", "Link clicked!"        
-    }
-    
-    @Test
-    public void form_components_do_not_conflict_with_mapped_field_names() {
-        
-        clickThru "ActivationRequestParameter Annotation Demo"
-        
-        clickAndWait "link=increment count"
-        
-        select "clickCount", "two"
-        
-        clickAndWait SUBMIT
-        
-        assertText "click-count", "1"
-        assertText "selected-click-count", "2"        
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ClassTransformationTests.groovy b/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ClassTransformationTests.groovy
deleted file mode 100644
index 2377e25..0000000
--- a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/ClassTransformationTests.groovy
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-class ClassTransformationTests extends TapestryCoreTestCase
-{
-    /** TAP5-1222 */
-    @Test
-    void access_to_public_field_of_data_object_with_name_that_conflicts_with_component_field() {
-        clickThru "Public Field Access Demo"
-        
-        assertText "message", "success"
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/MissingPageActivationContext.groovy b/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/MissingPageActivationContext.groovy
deleted file mode 100644
index bb25bad..0000000
--- a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/MissingPageActivationContext.groovy
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-class MissingPageActivationContext extends TapestryCoreTestCase
-{
-    @Test
-    void page_activation_context_omitted_from_url() {
-        clickThru "Missing page activation context"
-        
-        // Back to Index page, with alert message.
-        
-        assertText "alert", "Track not specified in URL."
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/PageActivationContextAnnotationTests.groovy b/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/PageActivationContextAnnotationTests.groovy
deleted file mode 100644
index 800ba3c..0000000
--- a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/integration/app1/PageActivationContextAnnotationTests.groovy
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test 
-
-class PageActivationContextAnnotationTests extends TapestryCoreTestCase
-{
-    @Test
-    void pac_fields_set_before_activate_event_handler_method_invoked()
-    {
-        clickThru "PageActivationContext Demo"
-        
-        assertText "count", ""
-        assertText "count-set", "false"
-        
-        clickAndWait "link=activate page with context"
-        
-        assertText "count", "99"
-        assertText "count-set", "true"
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportAutofocusTests.groovy b/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportAutofocusTests.groovy
deleted file mode 100644
index 9b62bc3..0000000
--- a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportAutofocusTests.groovy
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.ajax
-
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase 
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.JavaScriptStack 
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource 
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.testng.annotations.Test;
-
-/** 
- * Tests {@link JavaScriptSupport#autofocus(org.apache.tapestry5.FieldFocusPriority, String)}
- * 
- */
-class JavaScriptSupportAutofocusTests extends InternalBaseTestCase
-{
-    private autofocus_template(expectedFieldId, cls) {
-        def linker = mockDocumentLinker()
-        def stackSource = newMock(JavaScriptStackSource.class)
-        def stackPathConstructor = newMock(JavaScriptStackPathConstructor.class)
-        def coreStack = newMock(JavaScriptStack.class)
-        
-        // Adding the autofocus will drag in the core stack
-        
-        expect(stackSource.getStack("core")).andReturn coreStack
-        
-        expect(stackPathConstructor.constructPathsForJavaScriptStack("core")).andReturn([])
-        
-        expect(coreStack.getStacks()).andReturn([])
-        expect(coreStack.getStylesheets()).andReturn([])
-        expect(coreStack.getInitialization()).andReturn(null)
-        
-        JSONObject expected = new JSONObject("{\"activate\":[\"$expectedFieldId\"]}")
-        
-        linker.setInitialization(InitializationPriority.NORMAL, expected)
-        
-        replay()
-        
-        def jss = new JavaScriptSupportImpl(linker, stackSource, stackPathConstructor)
-        
-        cls jss
-        
-        jss.commit()
-        
-        verify()
-    }
-    
-    @Test
-    void simple_autofocus() {
-        
-        autofocus_template "fred", { 
-            it.autofocus FieldFocusPriority.OPTIONAL, "fred"
-        }
-    }
-    
-    @Test
-    void first_focus_field_at_priority_wins() {
-        autofocus_template "fred", {
-            it.autofocus FieldFocusPriority.OPTIONAL, "fred"
-            it.autofocus FieldFocusPriority.OPTIONAL, "barney"
-        }
-    }
-    
-    @Test
-    void higher_priority_wins_focus() {
-        autofocus_template "barney", {
-            it.autofocus FieldFocusPriority.OPTIONAL, "fred"
-            it.autofocus FieldFocusPriority.REQUIRED, "barney"
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy b/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy
deleted file mode 100644
index 6f0b6e8..0000000
--- a/maint-5-2/tapestry-core/src/test/groovy/org/apache/tapestry5/internal/services/templates/PageTemplateLocatorTest.groovy
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.templates;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test 
-
-class PageTemplateLocatorTest extends InternalBaseTestCase
-{
-    void execute(root, resolver, closure) {
-        
-        replay()
-        
-        closure.call(new PageTemplateLocator(root, resolver))
-        
-        verify()
-    }
-    
-    @Test
-    void not_a_page_class() {
-        def model = mockComponentModel()
-        def root = mockResource()
-        def resolver = mockComponentClassResolver()
-        
-        train_getComponentClassName(model, "foo.bar.Baz")
-        
-        execute (root, resolver) { 
-            
-            assert it.locateTemplate (model, Locale.FRENCH) == null
-        }        
-    }
-    
-    @Test
-    void template_found() {
-        def model = mockComponentModel()
-        def root = mockResource()
-        def withExtension = mockResource()
-        def forLocale = mockResource()
-        def resolver = mockComponentClassResolver()
-        def locale = Locale.FRENCH
-        def className = "myapp.pages.Foo"
-        
-        train_getComponentClassName(model, className)
-        
-        train_resolvePageClassNameToPageName(resolver, className, "Foo")
-        
-        train_forFile(root, "Foo.tml", withExtension)
-        train_forLocale(withExtension, locale, forLocale)
-        
-        execute (root, resolver) {
-            
-            assertSame it.locateTemplate(model, locale), forLocale
-        }
-    }
-    
-    /**
-     * Because of how Tapestry maps class names to logical page names, part of the name may be have been stripped off
-     * and we want to make sure we get it back.
-     */
-    @Test
-    void uses_simple_class_name_in_folders() {
-        
-        def model = mockComponentModel()
-        def root = mockResource()
-        def withExtension = mockResource()
-        def forLocale = mockResource()
-        def resolver = mockComponentClassResolver()
-        
-        def locale = Locale.FRENCH
-        def className = "myapp.pages.foo.CreateFoo"
-        
-        
-        train_getComponentClassName(model, className)
-        train_resolvePageClassNameToPageName (resolver, className, "foo/Create")
-        
-        train_forFile(root, "foo/CreateFoo.tml", withExtension)
-        train_forLocale(withExtension, locale, forLocale)
-        
-        execute (root, resolver){
-            
-            assertSame it.locateTemplate (model, locale), forLocale
-        }
-    }
-    
-    @Test
-    void template_not_found() {
-        def model = mockComponentModel()
-        def root = mockResource()
-        def withExtension = mockResource()
-        def resolver = mockComponentClassResolver()
-        def locale= Locale.GERMAN;
-        def className = "myapp.pages.bar.Baz"
-        
-        train_getComponentClassName (model, className)
-        train_resolvePageClassNameToPageName (resolver, className, "bar/Baz")
-        
-        train_forFile(root, "bar/Baz.tml", withExtension)
-        train_forLocale(withExtension, locale, null)
-        
-        execute (root, resolver)  {
-            
-            assertNull it.locateTemplate(model, locale)
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractLinkTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractLinkTest.java
deleted file mode 100644
index 833fa9e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractLinkTest.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-public class AbstractLinkTest extends InternalBaseTestCase
-{
-    private final static String LINK_URI = "/foo/bar.baz";
-
-    private final AbstractLink linkFixture = new AbstractLink()
-    {
-    };
-
-    @Test
-    public void no_anchor()
-    {
-        Link link = mockLink();
-        ComponentResources resources = mockComponentResources();
-        MarkupWriter writer = new MarkupWriterImpl();
-
-        train_toURI(link, LINK_URI);
-
-        resources.renderInformalParameters(writer);
-
-        replay();
-
-        linkFixture.inject(null, resources);
-
-        linkFixture.writeLink(writer, link);
-
-        verify();
-
-        Element e = writer.getElement();
-
-        writer.write("link text");
-        writer.end();
-
-        assertEquals(writer.toString(), "<a href=\"/foo/bar.baz\">link text</a>");
-    }
-
-    @Test
-    public void with_anchor()
-    {
-        Link link = mockLink();
-        ComponentResources resources = mockComponentResources();
-        MarkupWriter writer = new MarkupWriterImpl();
-
-        train_toURI(link, LINK_URI);
-
-        resources.renderInformalParameters(writer);
-
-        replay();
-
-        linkFixture.inject("wilma", resources);
-
-        linkFixture.writeLink(writer, link);
-
-        verify();
-
-        writer.write("link text");
-        writer.end();
-
-        assertEquals(writer.toString(), "<a href=\"/foo/bar.baz#wilma\">link text</a>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
deleted file mode 100644
index d599511..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/base/AbstractPropertyOutputTest.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.base;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-public class AbstractPropertyOutputTest extends InternalBaseTestCase
-{
-    private final AbstractPropertyOutput propertyOutputFixture = new AbstractPropertyOutput()
-    {
-    };
-
-    @Test
-    // Tests TAPESTRY-2182.
-    public void test_null_pointer_exception_message()
-    {
-        final PropertyConduit conduit = mockPropertyConduit();
-        final PropertyModel model = mockPropertyModel();
-        final Object object = new Object();
-
-        propertyOutputFixture.inject(model, object);
-
-        expect(model.getConduit()).andReturn(conduit);
-        expect(conduit.get(object)).andThrow(new NullPointerException());
-        expect(model.getPropertyName()).andReturn("wilma.occupation.address");
-
-        replay();
-
-        try
-        {
-            propertyOutputFixture.readPropertyForObject();
-
-            fail("Expected a NullPointerException to be thrown.");
-        }
-        catch (final NullPointerException ex)
-        {
-            assertEquals(ex.getMessage(), "Property 'wilma.occupation.address' contains a null value in the path.");
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/AnyTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/AnyTest.java
deleted file mode 100644
index 4c7e31c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/AnyTest.java
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.DefaultMarkupModel;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class AnyTest extends TapestryTestCase
-{
-    @Test
-    public void render_simple()
-    {
-        ComponentResources resources = mockComponentResources();
-        JavaScriptSupport support = mockJavaScriptSupport();
-
-        MarkupWriter writer = new MarkupWriterImpl(new DefaultMarkupModel());
-
-        resources.renderInformalParameters(writer);
-
-        replay();
-
-        Any component = new Any();
-        component.inject(support, resources, "span", "foo");
-
-        component.beginRender(writer);
-        writer.write("content");
-        component.afterRender(writer);
-
-        assertEquals(writer.toString(), "<span>content</span>");
-
-        verify();
-    }
-
-    @Test
-    public void render_with_id()
-    {
-        ComponentResources resources = mockComponentResources();
-        JavaScriptSupport support = mockJavaScriptSupport();
-
-        MarkupWriter writer = new MarkupWriterImpl(new DefaultMarkupModel());
-
-        resources.renderInformalParameters(writer);
-
-        String clientId = "bar";
-        String uniqueId = "bar_0";
-
-        expect(support.allocateClientId(clientId)).andReturn(uniqueId);
-
-        replay();
-
-        Any component = new Any();
-        component.inject(support, resources, "div", clientId);
-
-        component.beginRender(writer);
-        writer.write("content");
-        component.afterRender(writer);
-
-        assertEquals(writer.toString(), "<div>content</div>");
-
-        assertEquals(component.getClientId(), uniqueId);
-
-        assertEquals(writer.toString(), "<div id=\"bar_0\">content</div>");
-
-        assertEquals(component.getClientId(), uniqueId);
-
-        verify();
-    }
-
-    @Test
-    public void attempt_to_get_client_id_before_render()
-    {
-        ComponentResources resources = mockComponentResources();
-        JavaScriptSupport support = mockJavaScriptSupport();
-
-        train_getCompleteId(resources, "Foo/bar.baz");
-
-        replay();
-
-        Any component = new Any();
-
-        component.inject(support, resources, "div", null);
-
-        try
-        {
-            component.getClientId();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Unable to provide client id for component Foo/bar.baz as it has not yet rendered.");
-        }
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
deleted file mode 100644
index b335868..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/BeanEditorTest.java
+++ /dev/null
@@ -1,265 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import static org.easymock.EasyMock.isA;
-
-import static org.easymock.EasyMock.eq;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-import org.apache.tapestry5.internal.BeanValidationContext;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BeanEditContext;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.easymock.EasyMock;
-import org.easymock.IArgumentMatcher;
-import org.testng.annotations.Test;
-
-import java.lang.annotation.Annotation;
-
-public class BeanEditorTest extends TapestryTestCase
-{
-    @Test
-    public void object_created_as_needed()
-    {
-        ComponentResources resources = mockComponentResources();
-        BeanModelSource source = mockBeanModelSource();
-        BeanModel model = mockBeanModel();
-        RegistrationData data = new RegistrationData();
-        Messages messages = mockMessages();
-        PropertyOverrides overrides = mockPropertyOverrides();
-        Environment env = EasyMock.createNiceMock(Environment.class);
-
-        train_getBoundType(resources, "object", RegistrationData.class);
-
-        train_createEditModel(source, RegistrationData.class, messages, model);
-
-        train_getOverrideMessages(overrides, messages);
-
-        expect(model.newInstance()).andReturn(data);
-
-        replay();
-        EasyMock.replay(env);
-
-        BeanEditor component = new BeanEditor();
-
-        component.inject(resources, overrides, source, env);
-
-        component.doPrepare();
-
-        assertSame(component.getObject(), data);
-
-        verify();
-    }
-
-
-    @Test
-    public void object_can_not_be_instantiated()
-    {
-        ComponentResources resources = mockComponentResources();
-        BeanModelSource source = mockBeanModelSource();
-        BeanModel model = mockBeanModel();
-        Location l = mockLocation();
-        Throwable exception = new RuntimeException("Fall down go boom.");
-        PropertyOverrides overrides = mockPropertyOverrides();
-        Messages messages = mockMessages();
-        Environment env = EasyMock.createNiceMock(Environment.class);
-
-        train_getOverrideMessages(overrides, messages);
-
-        train_getBoundType(resources, "object", Runnable.class);
-
-        train_createEditModel(source, Runnable.class, messages, model);
-
-        expect(model.newInstance()).andThrow(exception);
-
-        train_getCompleteId(resources, "Foo.bar");
-
-        train_getLocation(resources, l);
-
-        expect(model.getBeanType()).andReturn(Runnable.class);
-
-        replay();
-        EasyMock.replay(env);
-
-        BeanEditor component = new BeanEditor();
-
-        component.inject(resources, overrides, source, env);
-
-        try
-        {
-            component.doPrepare();
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Exception instantiating instance of java.lang.Runnable (for component \'Foo.bar\'):");
-
-            assertSame(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    private static BeanEditContext contextEq()
-    {
-        EasyMock.reportMatcher(new IArgumentMatcher()
-        {
-            public void appendTo(StringBuffer buf)
-            {
-                buf.append("BeanEditContextEq(RegistrationData.class)");
-            }
-
-            public boolean matches(Object argument)
-            {
-                return (argument instanceof BeanEditContext) &&
-                        ((BeanEditContext) argument).getBeanClass() == RegistrationData.class;
-            }
-        });
-
-        return null;
-    }
-
-    @Test
-    public void beaneditcontext_pushed_to_environment()
-    {
-        ComponentResources resources = mockComponentResources();
-        BeanModelSource source = mockBeanModelSource();
-        BeanModel model = mockBeanModel();
-        Environment env = mockEnvironment();
-        RegistrationData data = new RegistrationData();
-        Messages messages = mockMessages();
-        PropertyOverrides overrides = mockPropertyOverrides();
-
-        train_getBoundType(resources, "object", RegistrationData.class);
-
-        train_createEditModel(source, RegistrationData.class, messages, model);
-
-        train_getOverrideMessages(overrides, messages);
-
-        expect(model.newInstance()).andReturn(data);
-        
-        expect(env.peek(eq(BeanValidationContext.class))).andReturn(null);
-        
-        expect(model.getBeanType()).andReturn(RegistrationData.class);
-
-        BeanEditContext ctxt = new BeanEditContext()
-        {
-            public Class<?> getBeanClass()
-            {
-                return RegistrationData.class;
-            }
-
-            public <T extends Annotation> T getAnnotation(Class<T> type)
-            {
-                return null;
-            }
-        };
-
-        expect(env.push(eq(BeanEditContext.class), contextEq())).andReturn(ctxt);
-        replay();
-
-        BeanEditor component = new BeanEditor();
-
-        component.inject(resources, overrides, source, env);
-
-        component.doPrepare();
-
-        verify();
-    }
-    
-    @Test
-    public void refresh_bean_validation_context()
-    {
-        ComponentResources resources = mockComponentResources();
-        BeanModelSource source = mockBeanModelSource();
-        BeanModel model = mockBeanModel();
-        Environment env = mockEnvironment();
-        RegistrationData data = new RegistrationData();
-        Messages messages = mockMessages();
-        PropertyOverrides overrides = mockPropertyOverrides();
-        BeanValidationContext beanValidationContext = newMock(BeanValidationContext.class);
-
-        train_getBoundType(resources, "object", RegistrationData.class);
-
-        train_createEditModel(source, RegistrationData.class, messages, model);
-
-        train_getOverrideMessages(overrides, messages);
-
-        expect(model.newInstance()).andReturn(data);
-        
-        expect(env.peek(eq(BeanValidationContext.class))).andReturn(beanValidationContext);
-        
-        expect(env.pop(eq(BeanValidationContext.class))).andReturn(beanValidationContext);
-        
-        expect(env.push(eq(BeanValidationContext.class), isA(BeanValidationContext.class))).andReturn(beanValidationContext);
-        
-        expect(model.getBeanType()).andReturn(RegistrationData.class);
-
-        BeanEditContext ctxt = new BeanEditContext()
-        {
-            public Class<?> getBeanClass()
-            {
-                return RegistrationData.class;
-            }
-
-            public <T extends Annotation> T getAnnotation(Class<T> type)
-            {
-                return null;
-            }
-        };
-
-        expect(env.push(eq(BeanEditContext.class), contextEq())).andReturn(ctxt);
-        replay();
-
-        BeanEditor component = new BeanEditor();
-
-        component.inject(resources, overrides, source, env);
-
-        component.doPrepare();
-
-        verify();
-    }
-
-    @Test
-    public void beaneditcontext_popped_from_environment()
-    {
-        ComponentResources resources = mockComponentResources();
-        BeanModelSource source = mockBeanModelSource();
-        Environment env = mockEnvironment();
-        PropertyOverrides overrides = mockPropertyOverrides();
-
-        expect(env.pop(BeanEditContext.class)).andReturn(null);
-
-        replay();
-
-        BeanEditor component = new BeanEditor();
-
-        component.inject(resources, overrides, source, env);
-
-        component.cleanupEnvironment();
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/FormTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/FormTest.java
deleted file mode 100644
index b0026af..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/FormTest.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class FormTest extends TapestryTestCase
-{
-    @Test
-    public void record_error()
-    {
-        ValidationTracker tracker = mockValidationTracker();
-        String message = "A recorded message.";
-
-        tracker.recordError(message);
-
-        replay();
-
-        Form form = new Form();
-
-        form.setTracker(tracker);
-
-        form.recordError(message);
-
-        verify();
-    }
-
-    @Test
-    public void record_error_for_field()
-    {
-        ValidationTracker tracker = mockValidationTracker();
-        String message = "A recorded message.";
-        Field field = mockField();
-
-        tracker.recordError(field, message);
-
-        replay();
-
-        Form form = new Form();
-
-        form.setTracker(tracker);
-
-        form.recordError(field, message);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/HiddenTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/HiddenTest.java
deleted file mode 100644
index 8913437..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/HiddenTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-public class HiddenTest extends InternalBaseTestCase
-{
-    @Test
-    public void no_form()
-    {
-        Hidden hidden = new Hidden();
-
-        try
-        {
-            hidden.beginRender(null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "The Hidden component must be enclosed by a Form component.");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/LoopTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/LoopTest.java
deleted file mode 100644
index e25ffbf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/LoopTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.Heartbeat;
-import org.easymock.EasyMock;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-public class LoopTest extends InternalBaseTestCase
-{
-    @Test
-    public void non_empty_iterator()
-    {
-        Heartbeat hb = mockHeartbeat();
-        MarkupWriter writer = mockMarkupWriter();
-
-        // Really hard to test the exact timing of all this; it will have to
-        // be "proven" by integration tests.
-
-        hb.begin();
-        EasyMock.expectLastCall().times(3);
-
-        hb.end();
-        EasyMock.expectLastCall().times(3);
-
-        replay();
-
-        Loop loop = new Loop();
-
-        loop.setHeartbeat(hb);
-
-        loop.setSource(Arrays.asList("alpha", "beta", "gamma"));
-
-        assertTrue(loop.setup());
-        assertEquals(loop.getIndex(), 0);
-
-        loop.begin(writer);
-        assertEquals(loop.getValue(), "alpha");
-        assertEquals(loop.getIndex(), 0);
-
-        assertFalse(loop.after(writer));
-        loop.begin(writer);
-        assertEquals(loop.getValue(), "beta");
-        assertEquals(loop.getIndex(), 1);
-
-        assertFalse(loop.after(writer));
-        loop.begin(writer);
-        assertEquals(loop.getValue(), "gamma");
-        assertEquals(loop.getIndex(), 2);
-
-        assertTrue(loop.after(writer));
-
-        verify();
-    }
-
-    @Test
-    public void iterator_is_null()
-    {
-        Loop loop = new Loop();
-
-        loop.setSource(null);
-
-        assertFalse(loop.setup());
-    }
-
-    @Test
-    public void iterator_is_empty()
-    {
-        Loop loop = new Loop();
-
-        loop.setSource(Collections.EMPTY_LIST);
-
-        assertFalse(loop.setup());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/OutputRawTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/OutputRawTest.java
deleted file mode 100644
index 61ef597..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/OutputRawTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class OutputRawTest extends TapestryTestCase
-{
-    @Test
-    public void value_is_null()
-    {
-        MarkupWriter writer = mockMarkupWriter();
-
-        replay();
-
-        OutputRaw component = new OutputRaw();
-
-        assertFalse(component.beginRender(writer));
-
-        verify();
-    }
-
-    @Test
-    public void value_is_empty_string()
-    {
-        MarkupWriter writer = mockMarkupWriter();
-
-        replay();
-
-        OutputRaw component = new OutputRaw();
-
-        component.setValue("");
-
-        assertFalse(component.beginRender(writer));
-
-        verify();
-    }
-
-    @Test
-    public void value_is_non_blank()
-    {
-        String value = "&nbsp;";
-
-        MarkupWriter writer = mockMarkupWriter();
-
-        writer.writeRaw(value);
-
-        replay();
-
-        OutputRaw component = new OutputRaw();
-
-        component.setValue(value);
-
-        assertFalse(component.beginRender(writer));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/OutputTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/OutputTest.java
deleted file mode 100644
index ca59b08..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/OutputTest.java
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.text.DecimalFormat;
-import java.text.FieldPosition;
-import java.text.Format;
-import java.text.ParsePosition;
-import java.util.Locale;
-
-public class OutputTest extends TapestryTestCase
-{
-    private final Number value = 22.7d;
-
-    private final DecimalFormat format = (DecimalFormat) DecimalFormat.getInstance(Locale.US);
-
-    private final DecimalFormat filterFormat = (DecimalFormat) DecimalFormat.getInstance(Locale.US);
-
-    @BeforeClass
-    public void setup()
-    {
-        format.applyPattern("0.00");
-        filterFormat.applyPattern("<0.00>");
-    }
-
-    @Test
-    public void simple_output()
-    {
-        MarkupWriter writer = createMarkupWriter();
-        ComponentResources resources = mockComponentResources();
-
-        replay();
-
-        Output component = new Output();
-
-        component.setup(value, format, true, null, resources);
-
-        writer.element("root");
-        assertFalse(component.beginRender(writer));
-        writer.end();
-
-        verify();
-
-        assertEquals(writer.toString(), "<root>22.70</root>");
-    }
-
-    @Test
-    public void simple_output_with_filter()
-    {
-        MarkupWriter writer = createMarkupWriter();
-        ComponentResources resources = mockComponentResources();
-
-        replay();
-
-        Output component = new Output();
-
-        component.setup(value, filterFormat, true, null, resources);
-
-        writer.element("root");
-        assertFalse(component.beginRender(writer));
-        writer.end();
-
-        verify();
-
-        assertEquals(writer.toString(), "<root>&lt;22.70&gt;</root>");
-    }
-
-    @Test
-    public void simple_output_with_filter_disabled()
-    {
-        MarkupWriter writer = createMarkupWriter();
-        ComponentResources resources = mockComponentResources();
-
-        replay();
-
-        Output component = new Output();
-
-        component.setup(value, filterFormat, false, null, resources);
-
-        writer.element("root");
-        assertFalse(component.beginRender(writer));
-        writer.end();
-
-        verify();
-
-        // It's not valid XML output, but that's why it's called programmer error :-)
-
-        assertEquals(writer.toString(), "<root><22.70></root>");
-    }
-
-    @Test
-    public void null_output()
-    {
-        MarkupWriter writer = createMarkupWriter();
-        ComponentResources resources = mockComponentResources();
-
-        replay();
-
-        Output component = new Output();
-
-        component.setup(null, format, true, null, resources);
-
-        writer.element("root");
-        assertFalse(component.beginRender(writer));
-        writer.end();
-
-        verify();
-
-        assertEquals(writer.toString(), "<root></root>");
-    }
-
-    @Test
-    public void output_with_element_and_informals()
-    {
-        String elementName = "span";
-
-        MarkupWriter writer = createMarkupWriter();
-
-        ComponentResources resources = mockComponentResources();
-
-        train_renderInformalParameters(resources, writer, "foo", "bar");
-
-        replay();
-
-        Output component = new Output();
-
-        component.setup(value, format, true, elementName, resources);
-
-        assertFalse(component.beginRender(writer));
-
-        verify();
-
-        assertEquals(writer.toString(), "<span foo=\"bar\">22.70</span>");
-    }
-
-    @Test
-    public void null_format_is_a_noop()
-    {
-        String elementName = "span";
-
-        MarkupWriter writer = createMarkupWriter();
-
-        ComponentResources resources = mockComponentResources();
-
-        Format format = new Format()
-        {
-            private static final long serialVersionUID = -4360045992642727894L;
-
-            @Override
-            public StringBuffer format(Object obj, StringBuffer toAppendTo, FieldPosition pos)
-            {
-                return toAppendTo;
-            }
-
-            @Override
-            public Object parseObject(String source, ParsePosition pos)
-            {
-                return null;
-            }
-        };
-
-        replay();
-
-        Output component = new Output();
-
-        component.setup(value, format, true, elementName, resources);
-
-        writer.element("root");
-        assertFalse(component.beginRender(writer));
-        writer.end();
-
-        verify();
-
-        assertEquals(writer.toString(), "<root></root>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
deleted file mode 100644
index f786651..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/PropertyEditorTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BeanBlockSource;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests an error case for the PropertyEditor component. The success cases are mixed into the BeanEditForm component's
- * integration tests.
- */
-public class PropertyEditorTest extends TapestryTestCase
-{
-    @Test
-    public void no_editor_block_available()
-    {
-        PropertyModel model = mockPropertyModel();
-        PropertyOverrides overrides = mockPropertyOverrides();
-        ComponentResources resources = mockComponentResources();
-        BeanBlockSource source = newMock(BeanBlockSource.class);
-        RuntimeException exception = new RuntimeException("Simulated failure.");
-        Messages messages = mockMessages();
-        Location l = mockLocation();
-
-        String propertyId = "foo";
-        String dataType = "unk";
-        String propertyName = "fooProp";
-        Object object = "[OBJECT]";
-        String formattedMessage = "formatted-message";
-
-        expect(model.getId()).andReturn(propertyId);
-
-        train_getOverrideBlock(overrides, propertyId, null);
-
-        expect(model.getDataType()).andReturn(dataType);
-
-        expect(source.getEditBlock(dataType)).andThrow(exception);
-        expect(model.getPropertyName()).andReturn(propertyName);
-
-        train_getLocation(resources, l);
-
-        expect(messages.format("block-error", propertyName, dataType, object, exception))
-                .andReturn(formattedMessage);
-
-        replay();
-
-        PropertyEditor pe = new PropertyEditor();
-
-        pe.inject(resources, overrides, model, source, messages, object);
-
-        try
-        {
-            pe.beginRender();
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(ex.getMessage(), formattedMessage);
-            assertSame(ex.getLocation(), l);
-        }
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
deleted file mode 100644
index 224df14..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SelectTest.java
+++ /dev/null
@@ -1,382 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.corelib.data.BlankOption;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.OptionGroupModelImpl;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.annotations.Test;
-
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Mostly, this is about how the Select component renders its {@link SelectModel}. The real nuts and bolts are tested in
- * the integration tests.
- */
-public class SelectTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void empty_model()
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-
-        select.setModel(new SelectModelImpl(null, null));
-        select.setValidationTracker(tracker);
-
-        select.options(null);
-
-        verify();
-    }
-
-    private String read(String file) throws Exception
-    {
-        InputStream is = getClass().getResourceAsStream(file);
-        Reader reader = new InputStreamReader(new BufferedInputStream(is));
-
-        StringBuilder builder = new StringBuilder();
-        char[] buffer = new char[1000];
-
-        while (true)
-        {
-            int length = reader.read(buffer);
-
-            if (length < 0) break;
-
-            builder.append(buffer, 0, length);
-        }
-
-        reader.close();
-
-        return builder.toString();
-    }
-
-    @Test
-    public void just_options() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        List<OptionModel> options = TapestryInternalUtils
-                .toOptionModels("fred=Fred Flintstone,barney=Barney Rubble");
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-
-        select.setModel(new SelectModelImpl(null, options));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("barney");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("just_options.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void just_options_with_blank_label_enabled() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        List<OptionModel> options = TapestryInternalUtils
-                .toOptionModels("fred=Fred Flintstone,barney=Barney Rubble");
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-
-        select.setModel(new SelectModelImpl(null, options));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("barney");
-        select.setValidationTracker(tracker);
-        select.setBlankOption(BlankOption.ALWAYS, "Make a selection");
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("blank_label.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void current_selection_from_validation_tracker() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        List<OptionModel> options = TapestryInternalUtils
-                .toOptionModels("fred=Fred Flintstone,barney=Barney Rubble");
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, "fred");
-
-        replay();
-
-
-        select.setModel(new SelectModelImpl(null, options));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("barney");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        // fred will be selected, not barney, because the validation tracker
-        // takes precendence.
-
-        assertEquals(writer.toString(), read("current_selection_from_validation_tracker.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void option_attributes() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        // Extra cast needed for Sun compiler, not Eclipse compiler.
-
-        List<OptionModel> options = Arrays.asList(
-                (OptionModel) new OptionModelImpl("Fred", "fred")
-                {
-                    @Override
-                    public Map<String, String> getAttributes()
-                    {
-                        return Collections.singletonMap("class", "pixie");
-                    }
-                });
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-        select.setModel(new SelectModelImpl(null, options));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("barney");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("option_attributes.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void disabled_option() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        // Extra cast needed for Sun compiler, not Eclipse compiler.
-
-        List<OptionModel> options = Arrays.asList(
-                (OptionModel) new OptionModelImpl("Fred", "fred")
-                {
-                    @Override
-                    public boolean isDisabled()
-                    {
-                        return true;
-                    }
-
-                    @Override
-                    public Map<String, String> getAttributes()
-                    {
-                        return Collections.singletonMap("class", "pixie");
-                    }
-                });
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-        select.setModel(new SelectModelImpl(null, options));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("barney");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("disabled_option.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void option_groups() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        OptionGroupModel husbands = new OptionGroupModelImpl("Husbands", false,
-                                                             TapestryInternalUtils.toOptionModels("Fred,Barney"));
-        OptionGroupModel wives = new OptionGroupModelImpl("Wives", true, TapestryInternalUtils
-                .toOptionModels("Wilma,Betty"));
-        List<OptionGroupModel> groupModels = CollectionFactory.newList(husbands, wives);
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-        select.setModel(new SelectModelImpl(groupModels, null));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("Fred");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("option_groups.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void option_groups_precede_ungroup_options() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        OptionGroupModel husbands = new OptionGroupModelImpl("Husbands", false,
-                                                             TapestryInternalUtils.toOptionModels("Fred,Barney"));
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-        select.setModel(new SelectModelImpl(Collections.singletonList(husbands),
-                                            TapestryInternalUtils.toOptionModels("Wilma,Betty")));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("Fred");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("option_groups_precede_ungroup_options.txt"));
-
-        verify();
-    }
-
-    @Test
-    public void option_group_attributes() throws Exception
-    {
-        ValidationTracker tracker = mockValidationTracker();
-
-        Map<String, String> attributes = Collections.singletonMap("class", "pixie");
-
-        OptionGroupModel husbands = new OptionGroupModelImpl("Husbands", false,
-                                                             TapestryInternalUtils.toOptionModels("Fred,Barney"),
-                                                             attributes);
-
-        Select select = new Select();
-
-        train_getInput(tracker, select, null);
-
-        replay();
-
-        select.setModel(new SelectModelImpl(Collections.singletonList(husbands), null));
-        select.setValueEncoder(new StringValueEncoder());
-        select.setValue("Fred");
-        select.setValidationTracker(tracker);
-
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("select");
-
-        select.options(writer);
-
-        writer.end();
-
-        assertEquals(writer.toString(), read("option_group_attributes.txt"));
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SubmitTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SubmitTest.java
deleted file mode 100644
index 5eca6b2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/SubmitTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import static org.easymock.EasyMock.isA;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.corelib.internal.FormSupportImpl;
-import org.apache.tapestry5.internal.services.HeartbeatImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Heartbeat;
-import org.apache.tapestry5.services.Request;
-import org.testng.annotations.Test;
-
-public class SubmitTest extends InternalBaseTestCase
-{
-    @Test
-    public void not_trigger_of_submission()
-    {
-        Request request = mockRequest();
-
-        String elementName = "myname";
-
-        train_getParameter(request, Form.SUBMITTING_ELEMENT_ID, null);
-        train_getParameter(request, elementName, null);
-
-        replay();
-
-        Submit submit = new Submit(request);
-
-        submit.processSubmission("xyz", elementName);
-
-        verify();
-    }
-
-    @Test
-    public void trigger_deferred()
-    {
-        Request request = mockRequest();
-        ComponentResources resources = mockComponentResources();
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        String elementName = "myname";
-
-        // Also: test for the alternate, JavaScript oriented way, of determining the
-        // element/component that triggered the submission.
-        train_getParameter(request, Form.SUBMITTING_ELEMENT_ID, "xyz");
-
-        replay();
-
-        Submit submit = new Submit(request);
-
-        TestBase.set(submit, "resources", resources, "formSupport", support);
-
-        submit.processSubmission("xyz", elementName);
-
-        verify();
-
-        expect(resources.triggerEvent(EventConstants.SELECTED, null, null)).andReturn(false);
-
-        replay();
-
-        support.executeDeferred();
-
-        verify();
-    }
-
-    @Test
-    public void trigger_immediate()
-    {
-        FormSupport support = mockFormSupport();
-        ComponentResources resources = mockComponentResources();
-        Heartbeat heartbeat = new HeartbeatImpl();
-        Request request = mockRequest();
-
-        String elementName = "myname";
-
-        train_getParameter(request, Form.SUBMITTING_ELEMENT_ID, null);
-        train_getParameter(request, elementName, "login");
-
-        replay();
-
-        heartbeat.begin();
-
-        Submit submit = new Submit(request);
-
-        TestBase.set(submit, "resources", resources, "formSupport", support, "heartbeat", heartbeat, "defer", false);
-
-        submit.processSubmission("xyz", elementName);
-
-        verify();
-
-        expect(resources.triggerEvent(EventConstants.SELECTED, null, null)).andReturn(false);
-
-        replay();
-
-        heartbeat.end();
-
-        verify();
-    }
-
-    @Test
-    public void test_imagesubmit_event_fired()
-    {
-        Request request = mockRequest();
-        final ComponentResources resources = mockComponentResources();
-        FormSupport formSupport = mockFormSupport();
-        Asset image = mockAsset();
-
-        String elementName = "myname";
-
-        train_getParameter(request, Form.SUBMITTING_ELEMENT_ID, null);
-        train_getParameter(request, elementName + ".x", "15");
-
-        formSupport.defer(isA(Runnable.class));
-
-        replay();
-
-        Submit submit = new Submit(request);
-
-        TestBase.set(submit, "resources", resources, "formSupport", formSupport, "image", image);
-
-        submit.processSubmission("xyz", elementName);
-
-        verify();
-    }
-
-    @Test
-    public void test_submit_event_fired()
-    {
-        Request request = mockRequest();
-        final ComponentResources resources = mockComponentResources();
-        FormSupport formSupport = mockFormSupport();
-
-        String elementName = "myname";
-
-        train_getParameter(request, Form.SUBMITTING_ELEMENT_ID, null);
-        train_getParameter(request, elementName, "login");
-
-        formSupport.defer(isA(Runnable.class));
-
-        replay();
-
-        Submit submit = new Submit(request);
-
-        TestBase.set(submit, "resources", resources, "formSupport", formSupport);
-
-        submit.processSubmission("xyz", elementName);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/TextOutputTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/TextOutputTest.java
deleted file mode 100644
index c542b1d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/components/TextOutputTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-public class TextOutputTest extends InternalBaseTestCase
-{
-    @Test
-    public void null_value_is_noop()
-    {
-        MarkupWriter writer = mockMarkupWriter();
-
-        replay();
-
-        TextOutput component = new TextOutput();
-
-        component.beginRender(writer);
-
-        verify();
-    }
-
-    @Test
-    public void normal_output()
-    {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        TextOutput component = new TextOutput();
-
-        component.injectValue("Fred\nBarney\rWilma\r\nBetty\nBam-Bam\n");
-
-        writer.element("div");
-        component.beginRender(writer);
-        writer.end();
-
-        assertEquals(writer.toString(),
-                     "<?xml version=\"1.0\"?>\n" + "<div><p>Fred</p><p>Barney</p><p>Wilma</p><p>Betty</p><p>Bam-Bam</p></div>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/internal/FormSupportImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/internal/FormSupportImplTest.java
deleted file mode 100644
index e663134..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/corelib/internal/FormSupportImplTest.java
+++ /dev/null
@@ -1,166 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.corelib.internal;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.testng.annotations.Test;
-
-public class FormSupportImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void execute_deferred_with_no_commands()
-    {
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        support.executeDeferred();
-    }
-
-    @Test
-    public void execute_deferred_execute_in_added_order()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        getMocksControl().checkOrder(true);
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        support.defer(r1);
-        support.defer(r2);
-
-        support.executeDeferred();
-
-        verify();
-    }
-
-    @Test
-    public void deferred_commands_execute_once()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-        Runnable r3 = mockRunnable();
-
-        getMocksControl().checkOrder(true);
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        support.defer(r1);
-        support.defer(r2);
-
-        support.executeDeferred();
-
-        verify();
-
-        r3.run();
-
-        replay();
-
-        support.defer(r3);
-
-        support.executeDeferred();
-
-        verify();
-    }
-
-    @Test
-    public void set_encoding_type()
-    {
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        String encodingType = "foo/bar";
-
-        support.setEncodingType(encodingType);
-
-        assertSame(support.getEncodingType(), encodingType);
-    }
-
-    @Test
-    public void set_encoding_type_to_same_value_is_allowed()
-    {
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        String encodingType = "foo/bar";
-
-        support.setEncodingType(encodingType);
-        support.setEncodingType(new String(encodingType));
-
-        assertEquals(support.getEncodingType(), encodingType);
-    }
-
-    @Test
-    public void set_encoding_type_conflict()
-    {
-
-        FormSupportImpl support = new FormSupportImpl(null, null);
-
-        support.setEncodingType("foo");
-        try
-        {
-            support.setEncodingType("bar");
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Encoding type of form has already been set to \'foo\' and may not be changed to \'bar\'.");
-        }
-    }
-
-    @Test
-    public void add_validations()
-    {
-        Field barney = mockField();
-        ClientBehaviorSupport clientBehaviorSupport = mockClientBehaviorSupport();
-
-        clientBehaviorSupport.addValidation(barney, "required", "Who can live without Barney?", null);
-
-        replay();
-
-        FormSupportImpl support = new FormSupportImpl(null, null, null, clientBehaviorSupport, true, null,
-                                                      null);
-
-        support.addValidation(barney, "required", "Who can live without Barney?", null);
-
-        verify();
-    }
-
-    @Test
-    public void add_validation_when_client_validation_is_disabled()
-    {
-        Field barney = mockField();
-        ClientBehaviorSupport clientBehaviorSupport = mockClientBehaviorSupport();
-
-        replay();
-
-        FormSupportImpl support = new FormSupportImpl(null, null, null, clientBehaviorSupport, false, null,
-                                                      null);
-
-        support.addValidation(barney, "required", "Who can live without Barney?", null);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java
deleted file mode 100644
index 9fff09b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/dom/DOMTest.java
+++ /dev/null
@@ -1,942 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.dom;
-
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.annotations.Test;
-
-/**
- * Tests for a number of DOM node classes, including {@link org.apache.tapestry5.dom.Element} and {@link
- * org.apache.tapestry5.dom.Document}.
- */
-public class DOMTest extends InternalBaseTestCase
-{
-    @Test
-    public void document_with_empty_root_element()
-    {
-        Document d = new Document();
-
-        d.newRootElement("empty");
-
-        assertEquals(d.toString(), "<empty></empty>");
-    }
-
-    @Test
-    public void xml_style_empty_element()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        d.newRootElement("empty");
-
-        assertEquals(d.toString(), "<?xml version=\"1.0\"?>\n<empty/>");
-    }
-
-    @Test
-    public void namespaced_elements() throws Exception
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("fredns", "root");
-
-        root.defineNamespace("fredns", "f");
-        root.defineNamespace("barneyns", "b");
-
-        Element nested = root.elementNS("fredns", "nested");
-
-        nested.elementNS("barneyns", "deepest");
-
-        assertEquals(d.toString(), readFile("namespaced_elements.txt"));
-    }
-
-    @Test
-    public void quote_using_apostrophes() throws Exception
-    {
-        Document d = new Document(new XMLMarkupModel(true));
-
-        Element root = d.newRootElement("fredns", "root");
-
-        root.defineNamespace("fredns", "f");
-        root.defineNamespace("barneyns", "b");
-
-        Element nested = root.elementNS("fredns", "nested");
-
-        nested.attribute("attribute", "value");
-
-        nested.elementNS("barneyns", "deepest");
-
-        assertEquals(d.toString(), readFile("quote_using_apostrophes.txt"));
-    }
-
-    @Test
-    public void namespace_element_without_a_prefix() throws Exception
-    {
-
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("fredns", "root");
-
-        Element child = root.element("child");
-
-        Element barney = child.elementNS("barneyns", "barney");
-
-        barney.attribute("simple", "a");
-        barney.defineNamespace("bettyns", "betty");
-        barney.attribute("bettyns", "betty", "b");
-        barney.attribute("wilmans", "wilma", "c");
-
-        assertEquals(d.toString(), readFile("namespace_element_without_a_prefix.txt"));
-    }
-
-    @Test
-    public void default_namespace()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        String namespaceURI = "http://foo.com";
-
-        Element root = d.newRootElement(namespaceURI, "root");
-
-        root.defineNamespace(namespaceURI, "");
-        root.attribute(namespaceURI, "gnip", "gnop");
-
-
-        assertEquals(d.toString(), "<?xml version=\"1.0\"?>\n<root gnip=\"gnop\" xmlns=\"http://foo.com\"/>");
-    }
-
-    /**
-     * Also demonstrates that attributes are provided in alphabetical order.
-     */
-    @Test
-    public void document_with_root_element_and_attributes() throws Exception
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("has-attributes");
-
-        e.attribute("fred", "flintstone");
-        e.attribute("barney", "rubble");
-
-        assertEquals(d.toString(), readFile("document_with_root_element_and_attributes.txt"));
-    }
-
-    @Test
-    public void nested_elements() throws Exception
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("population");
-
-        Element p = e.element("person");
-        p.attribute("first-name", "Fred");
-        p.attribute("last-name", "Flintstone");
-
-        assertSame(p.getParent(), e);
-
-        p = e.element("person");
-        p.attribute("first-name", "Barney");
-        p.attribute("last-name", "Rubble");
-
-        assertSame(p.getParent(), e);
-
-        assertEquals(d.toString(), readFile("nested_elements.txt"));
-    }
-
-    @Test(expectedExceptions = AssertionError.class)
-    public void attribute_names_may_not_be_blank()
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("fred");
-
-        e.attribute("", "value");
-    }
-
-    @Test
-    public void element_name_may_not_be_blank()
-    {
-        Document d = new Document();
-
-        d.newRootElement("");
-    }
-
-    @Test
-    public void attribute_value_null_is_no_op()
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("root");
-
-        e.attribute("foo", "bar");
-
-        final String expected = "<root foo=\"bar\"></root>";
-
-        assertEquals(d.toString(), expected);
-
-        e.attribute("foo", null);
-
-        assertEquals(d.toString(), expected);
-
-        e.attribute("gnip", null);
-
-        assertEquals(d.toString(), expected);
-    }
-
-    @Test
-    public void comments() throws Exception
-    {
-        Document d = new Document();
-
-        // Can't add comments to the document, not yet.
-
-        Element e = d.newRootElement("html");
-
-        e.comment(" Created by Tapestry 5.0 ");
-
-        assertEquals(d.toString(), "<html><!-- Created by Tapestry 5.0 --></html>");
-    }
-
-    @Test
-    public void text()
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("body");
-
-        e.text("Tapestry does DOM.");
-
-        assertEquals(d.toString(), "<body>Tapestry does DOM.</body>");
-    }
-
-    @Test
-    public void text_with_control_characters()
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("root");
-
-        e.text("<this> & <that>");
-
-        assertEquals(d.toString(), "<root>&lt;this&gt; &amp; &lt;that&gt;</root>");
-    }
-
-    @Test
-    public void specify_attributes_with_new_element()
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("root");
-
-        e.element("foo", "alpha", "legion");
-
-        assertEquals(d.toString(), "<root><foo alpha=\"legion\"></foo></root>");
-    }
-
-    @Test
-    public void writef_with_text()
-    {
-        Document d = new Document();
-
-        Element e = d.newRootElement("root");
-
-        Text t = e.text("Start: ");
-
-        t.writef("** %s: %d **", "foo", 5);
-
-        assertEquals(d.toString(), "<root>Start: ** foo: 5 **</root>");
-    }
-
-    @Test
-    public void get_element_by_id()
-    {
-        Document d = new Document();
-        Element e = d.newRootElement("root");
-        Element e1 = e.element("e1", "id", "x");
-        Element e2 = e.element("e2", "id", "y");
-        assertSame(e1.getElementById("x"), e1);
-        assertSame(e.getElementById("y"), e2);
-        assertNull(e.getElementById("z"));
-    }
-
-    @Test
-    public void get_child_markup()
-    {
-        Document d = new Document();
-        Element e0 = d.newRootElement("root");
-        Element e1 = e0.element("e1");
-        e1.text("123");
-        assertEquals(e1.getChildMarkup(), "123");
-        assertEquals(e0.getChildMarkup(), "<e1>123</e1>");
-    }
-
-    @Test
-    public void document_find_no_root_element()
-    {
-        Document d = new Document();
-
-        assertNull(d.find("does/not/matter"));
-    }
-
-    @Test
-    public void document_find_not_a_match()
-    {
-        Document d = new Document();
-
-        d.newRootElement("fred");
-
-        assertNull(d.find("barney"));
-        assertNull(d.find("wilma/betty"));
-    }
-
-    @Test
-    public void document_find_root_is_match()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("fred");
-
-        assertSame(d.find("fred"), root);
-    }
-
-    @Test
-    public void document_find_match()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("fred");
-
-        root.text("text");
-        Element barney = root.element("barney");
-        Element bambam = barney.element("bambam");
-
-        assertSame(d.find("fred/barney/bambam"), bambam);
-        assertSame(root.find("barney/bambam"), bambam);
-    }
-
-    @Test
-    public void document_find_no_match()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("fred");
-
-        root.text("text");
-        Element barney = root.element("barney");
-        barney.element("bambam");
-
-        assertNull(d.find("fred/barney/pebbles"));
-        assertNull(root.find("barney/pebbles"));
-    }
-
-    @Test
-    public void insert_element_at()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("fred");
-
-        root.element("start");
-        root.element("end");
-
-        root.elementAt(1, "one").element("tiny");
-        root.elementAt(2, "two").element("bubbles");
-
-        assertEquals(d.toString(),
-                     "<?xml version=\"1.0\"?>\n<fred><start/><one><tiny/></one><two><bubbles/></two><end/></fred>");
-    }
-
-    @Test
-    public void force_attributes_overrides_existing()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("fred");
-
-        root.attributes("hi", "ho", "gnip", "gnop");
-
-        assertEquals(root.toString(), "<fred gnip=\"gnop\" hi=\"ho\"/>");
-
-        root.forceAttributes("hi", "bit", "gnip", null);
-
-        assertEquals(root.toString(), "<fred hi=\"bit\"/>");
-    }
-
-    /**
-     * TAP5-708
-     */
-    @Test
-    public void namespace_element_force_attributes_overrides_existing() 
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("fredns", "fred");
-
-        root.attributes("hi", "ho", "gnip", "gnop");
-
-        assertEquals(root.toString(), "<fred gnip=\"gnop\" hi=\"ho\" xmlns=\"fredns\"/>");
-
-        root.forceAttributes("hi", "bit", "gnip", null);
-
-        assertEquals(root.toString(), "<fred hi=\"bit\" xmlns=\"fredns\"/>");
-    }
-
-
-
-    @Test
-    public void raw_output()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("fred");
-
-        Element em = root.element("em");
-
-        em.text("<");
-        em.raw("&nbsp;");
-        em.text(">");
-
-        // The '<' and '>' are filtered into entities, but the '&' in &nbsp; is left alone (left
-        // raw).
-
-        assertEquals(root.toString(), "<fred><em>&lt;&nbsp;&gt;</em></fred>");
-    }
-
-    @Test
-    public void dtd_with_markup()
-    {
-        Document d = new Document(new XMLMarkupModel());
-        Element root = d.newRootElement("prime");
-        root.element("slag");
-        d.dtd("prime", "-//TF", "tf");
-        String expected = "<?xml version=\"1.0\"?>\n<!DOCTYPE prime PUBLIC \"-//TF\" \"tf\"><prime><slag/></prime>";
-        assertEquals(d.toString(), expected);
-    }
-
-    @Test
-    public void dtd_with_nullids()
-    {
-        Document d = new Document(new XMLMarkupModel());
-        d.newRootElement("prime");
-        d.dtd("prime", null, null);
-        assertEquals(d.toString(), "<?xml version=\"1.0\"?>\n<!DOCTYPE prime><prime/>");
-        d.dtd("prime", "-//TF", null);
-        assertEquals(d.toString(), "<?xml version=\"1.0\"?>\n<!DOCTYPE prime PUBLIC \"-//TF\"><prime/>");
-
-        d.dtd("prime", null, "tf");
-        assertEquals(d.toString(), "<?xml version=\"1.0\"?>\n<!DOCTYPE prime SYSTEM \"tf\"><prime/>");
-    }
-
-    @Test
-    public void markup_characters_inside_attributes_are_escaped()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("prime");
-
-        root.attribute("alpha-only", "abcdef");
-        root.attribute("entities", "\"<>&");
-
-        assertEquals(root.toString(), "<prime entities=\"&quot;&lt;&gt;&amp;\" alpha-only=\"abcdef\"/>");
-    }
-
-    @Test
-    public void apostrophes_are_escaped() {
-        Document d = new Document(new XMLMarkupModel(true));
-
-        Element root = d.newRootElement("prime");
-
-        root.attribute("apostrophie", "some'thing");
-
-        assertEquals(root.toString(), "<prime apostrophie='some&#39;thing'/>");
-    }
-
-    @Test
-    public void add_class_names()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        Element root = d.newRootElement("div");
-
-        assertSame(root.addClassName("fred"), root);
-
-        assertEquals(root.toString(), "<div class=\"fred\"/>");
-
-        assertSame(root.addClassName("barney", "wilma"), root);
-
-        assertEquals(root.toString(), "<div class=\"fred barney wilma\"/>");
-    }
-
-    /**
-     * TAP5-804
-     */
-    @Test
-    public void namespace_add_class_name()
-    {
-        Document document = new Document(new DefaultMarkupModel());
-
-        Element element = document.newRootElement("fredns", "e");
-
-        element.attribute("class", "a");
-
-        assertEquals(element.toString(), "<e class=\"a\" xmlns=\"fredns\"></e>");
-
-        element.addClassName("b");
-
-        assertEquals(element.toString(), "<e class=\"a b\" xmlns=\"fredns\"></e>");
-    }
-
-    @Test
-    public void cdata_in_HTML_document()
-    {
-        Document d = new Document();
-
-        d.newRootElement("root").cdata("This & That");
-
-        // The '&' is expanded to an entity:
-
-        assertEquals(d.toString(), "<root>This &amp; That</root>");
-    }
-
-    @Test
-    public void cdata_in_XML_document()
-    {
-        Document d = new Document(new XMLMarkupModel());
-
-        d.newRootElement("root").cdata("This & That");
-
-        // The '&' is expanded to an entity:
-
-        assertEquals(d.toString(), "<?xml version=\"1.0\"?>\n<root><![CDATA[This & That]]></root>");
-    }
-
-    @Test
-    public void encoding_specified()
-    {
-        Document d = new Document(new XMLMarkupModel(), "utf-8");
-        d.newRootElement("root");
-
-        assertEquals(d.toString(), "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n<root/>");
-    }
-
-    @Test
-    public void move_before()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        root.element("placeholder");
-
-        Element target = root.element("target");
-        Element mobile = root.element("source").element("mobile");
-
-        mobile.text("On the move");
-
-        assertEquals(d.toString(),
-                     "<doc><placeholder></placeholder><target></target><source><mobile>On the move</mobile></source></doc>");
-
-
-        mobile.moveBefore(target);
-
-        assertEquals(d.toString(),
-                     "<doc><placeholder></placeholder><mobile>On the move</mobile><target></target><source></source></doc>");
-    }
-
-    @Test
-    public void move_after()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-        root.element("placeholder");
-
-        Element target = root.element("target");
-        Element mobile = root.element("source").element("mobile");
-
-        mobile.text("On the move");
-
-        assertEquals(d.toString(),
-                     "<doc><placeholder></placeholder><target></target><source><mobile>On the move</mobile></source></doc>");
-
-
-        mobile.moveAfter(target);
-
-        assertEquals(d.toString(),
-                     "<doc><placeholder></placeholder><target></target><mobile>On the move</mobile><source></source></doc>");
-    }
-
-    @Test
-    public void move_to_top()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        Element target = root.element("target");
-        target.element("placeholder");
-        Element mobile = root.element("source").element("mobile");
-
-        mobile.text("On the move");
-
-        assertEquals(d.toString(),
-                     "<doc><target><placeholder></placeholder></target><source><mobile>On the move</mobile></source></doc>");
-
-        mobile.moveToTop(target);
-
-        assertEquals(d.toString(),
-                     "<doc><target><mobile>On the move</mobile><placeholder></placeholder></target><source></source></doc>");
-    }
-
-    @Test
-    public void move_to_bottom()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        Element target = root.element("target");
-        target.element("placeholder");
-        Element mobile = root.element("source").element("mobile");
-
-        mobile.text("On the move");
-
-        assertEquals(d.toString(),
-                     "<doc><target><placeholder></placeholder></target><source><mobile>On the move</mobile></source></doc>");
-
-        mobile.moveToBottom(target);
-
-        assertEquals(d.toString(),
-                     "<doc><target><placeholder></placeholder><mobile>On the move</mobile></target><source></source></doc>");
-    }
-
-    @Test
-    public void remove_children()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        root.element("before");
-        Element source = root.element("source");
-        Element mobile = source.element("mobile");
-        source.element("grok");
-        root.element("after");
-
-        mobile.text("On the move");
-
-        assertEquals(d.toString(),
-                     "<doc><before></before><source><mobile>On the move</mobile><grok></grok></source><after></after></doc>");
-
-        source.removeChildren();
-
-        assertEquals(d.toString(),
-                     "<doc><before></before><source></source><after></after></doc>");
-    }
-
-    @Test
-    public void pop()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        Element source = root.element("source");
-        source.element("mobile").text("On the move");
-        source.element("grok");
-
-        assertEquals(d.toString(),
-                     "<doc><source><mobile>On the move</mobile><grok></grok></source></doc>");
-
-        source.pop();
-
-        assertEquals(d.toString(),
-                     "<doc><mobile>On the move</mobile><grok></grok></doc>");
-    }
-
-    @Test
-    public void move_an_node_into_itself()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        Element target = root.element("target");
-        target.element("placeholder");
-        Element mobile = root.element("source").element("mobile");
-        mobile.text("On the move");
-        Element inside = mobile.element("inside");
-
-        try
-        {
-            mobile.moveToTop(inside);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Unable to move a node relative to itself.");
-        }
-    }
-
-    @Test
-    public void wrap()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        Element target = root.element("target");
-        target.element("placeholder");
-        Element mobile = root.element("source").element("mobile");
-
-        Node text = mobile.text("On the move");
-
-        assertEquals(d.toString(),
-                     "<doc><target><placeholder></placeholder></target><source><mobile>On the move</mobile></source></doc>");
-
-        text.wrap("em", "class", "bold");
-
-        assertEquals(d.toString(),
-                     "<doc><target><placeholder></placeholder></target><source><mobile><em class=\"bold\">On the move</em></mobile></source></doc>");
-    }
-
-    /**
-     * TAP5-385
-     */
-    @Test
-    public void empty_html_elements()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("doc");
-
-        root.element("hr");
-        root.element("br");
-        root.element("img");
-
-        assertEquals(d.toString(), "<doc><hr/><br/><img/></doc>");
-    }
-
-    /**
-     * TAP5-402
-     */
-    @Test
-    public void is_empty()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("root");
-
-        assertTrue(root.isEmpty());
-
-        root.text("");
-
-        assertTrue(root.isEmpty());
-
-        root.text("  ");
-
-        assertTrue(root.isEmpty());
-
-        Element child = root.element("child");
-
-        assertFalse(root.isEmpty());
-
-        assertTrue(child.isEmpty());
-
-        child.text("not empty");
-
-        assertFalse(child.isEmpty());
-    }
-
-    /**
-     * TAP5-457
-     */
-    @Test
-    public void defaults_for_xml_defined_namespaces() throws Exception
-    {
-        Document d = new Document();
-
-        String XHTML_NAMESPACE = "http://www.w3.org/1999/xhtml";
-
-        Element root = d.newRootElement(XHTML_NAMESPACE, "html");
-
-        root.attribute(Document.XML_NAMESPACE_URI, "lang", "de");
-
-        // Before TAP5-457, it would be ns0: not xml:
-
-        assertEquals(d.toString(), readFile("defaults_for_xml_defined_namespaces.txt"));
-    }
-
-    @Test
-    public void visit_order()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("parent");
-
-        Element child1 = root.element("child1");
-        Element child2 = root.element("child2");
-
-        child1.element("child1a");
-        child1.text("Does not affect traversal");
-        child1.element("child1b");
-
-        child2.element("child2a");
-        child2.element("child2b");
-        child2.element("child2c");
-
-        final List<String> elementNames = CollectionFactory.newList();
-
-        d.visit(new Visitor()
-        {
-            public void visit(Element element)
-            {
-                elementNames.add(element.getName());
-            }
-        });
-
-        assertListsEquals(elementNames, "parent", "child1", "child1a", "child1b", "child2", "child2a", "child2b",
-                          "child2c");
-    }
-
-    /**
-     * TAP5-559
-     */
-    @Test
-    public void later_updates_to_same_attribute_are_ignored()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("parent");
-
-        root.attribute("baggins", "bilbo");
-
-        // This will be ignored.
-
-        root.attribute("baggins", "frodo");
-
-
-        assertEquals(d.toString(), "<parent baggins=\"bilbo\"></parent>");
-    }
-
-    @Test
-    public void force_attributes_changes_attribute_value()
-    {
-        Document d = new Document();
-
-
-        Element root = d.newRootElement("parent");
-
-        root.attribute("baggins", "bilbo");
-
-        // This will be ignored.
-
-        root.forceAttributes("baggins", "frodo");
-
-
-        assertEquals(d.toString(), "<parent baggins=\"frodo\"></parent>");
-    }
-
-    @Test
-    public void force_attributes_to_null_removes_attribute()
-    {
-        Document d = new Document();
-
-
-        Element root = d.newRootElement("parent");
-
-        root.attributes("baggins", "frodo",
-                        "friend", "sam");
-
-        root.forceAttributes("friend", null);
-
-        assertEquals(root.toString(), "<parent baggins=\"frodo\"></parent>");
-
-        root.forceAttributes("baggins", null,
-                             "enemy", "gollum");
-
-        assertEquals(root.toString(), "<parent enemy=\"gollum\"></parent>");
-    }
-
-    @Test
-    public void get_attributes()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("parent");
-
-        assertTrue(root.getAttributes().isEmpty());
-
-        root.attribute("fred", "flintstone");
-
-        Collection<Attribute> attributes = root.getAttributes();
-
-        assertEquals(attributes.size(), 1);
-
-        Attribute attribute = attributes.iterator().next();
-
-        assertEquals(attribute.getName(), "fred");
-        assertEquals(attribute.getValue(), "flintstone");
-    }
-
-    /**
-     * TAP5-636
-     */
-    @Test
-    public void force_null_for_first_attribute_is_noop()
-    {
-        Document d = new Document();
-
-        Element root = d.newRootElement("root");
-
-        root.forceAttributes("null", null);
-
-        assertEquals(root.toString(), "<root></root>");
-    }
-
-    @Test
-    public void remove_while_rendering()
-    {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-
-        writer.element("ul");
-
-        for (int i = 0; i < 4; i++)
-        {
-            Element e = writer.element("li");
-
-            if (i != 2)
-            {
-                writer.write(String.valueOf(i));
-            }
-
-            writer.end();
-
-            if (e.getChildren().isEmpty())
-            {
-                e.remove();
-            }
-        }
-
-        writer.end();
-
-        assertEquals(writer.toString(), "<?xml version=\"1.0\"?>\n" +
-                "<ul><li>0</li><li>1</li><li>3</li></ul>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java
deleted file mode 100644
index 93f1097..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/RunJetty.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration;
-
-import org.apache.tapestry5.test.Jetty7Runner;
-
-/**
- * A "shim" to run Demo App #1 inside IntelliJ.  I still haven't found a way to get IntelliJ to export test classes and
- * resources into a web facet.
- */
-public class RunJetty
-{
-    public static void main(String[] args) throws Exception
-    {
-        String contextName = args[0];
-        String path = args[1];
-        
-        new Jetty7Runner(path, contextName, 9090, 8443);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
deleted file mode 100644
index 0afeee4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/TapestryCoreTestCase.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration;
-
-import org.apache.tapestry5.test.SeleniumTestCase;
-
-public abstract class TapestryCoreTestCase extends SeleniumTestCase
-{
-    public static final String SUBMIT = "//input[@type='submit']";
-
-    /**
-     * Opens the base URL, then clicks through a series of links to get to a desired application
-     * state.
-     */
-    protected final void clickThru(String... linkText)
-    {
-        openBaseURL();
-
-        for (String text : linkText)
-        {
-            click("link=" + text);
-            waitForPageToLoad();
-        }
-    }
-
-    protected final void assertTextSeries(String idFormat, int startIndex, String... values)
-    {
-        for (int i = 0; i < values.length; i++)
-        {
-            String id = String.format(idFormat, startIndex + i);
-
-            assertText(id, values[i]);
-        }
-    }
-
-    protected final void sleep(long millis)
-    {
-        try
-        {
-            Thread.sleep(millis);
-        }
-        catch (InterruptedException ex)
-        {
-            // Ignore.
-        }
-    }
-
-    protected void waitForCSSSelectedElementToAppear(String cssRule)
-    {
-        String condition = String.format("window.$$(\"%s\").size() > 0", cssRule);
-
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-    }
-
-    protected final void waitForElementToAppear(String elementId)
-    {
-
-        String condition = String.format("window.$(\"%s\")", elementId);
-
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-    }
-
-    protected final void waitForElementToDisappear(String elementId)
-    {
-        String condition = String.format("window.$(\"%s\").hide()", elementId);
-
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-    }
-
-    protected final void assertBubbleMessage(String fieldId, String expected)
-    {
-        String popupId = fieldId + ":errorpopup";
-
-        waitForElementToAppear(popupId);
-
-        assertText(String.format("//div[@id='%s']/span", popupId), expected);
-    }
-
-    protected final void assertFieldValueSeries(String idFormat, int startIndex, String... values)
-    {
-        for (int i = 0; i < values.length; i++)
-        {
-            String id = String.format(idFormat, startIndex + i);
-
-            assertFieldValue(id, values[i]);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app0/services/FooModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app0/services/FooModule.java
deleted file mode 100644
index c3c771c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app0/services/FooModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app0.services;
-
-import org.apache.tapestry5.util.Transformer;
-import org.apache.tapestry5.util.UppercaseTransformer;
-
-public class FooModule
-{
-    public static Transformer buildService1()
-    {
-        return new UppercaseTransformer();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java
deleted file mode 100644
index 6d97f92..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AjaxTests.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests for various Ajax related components, mixins and behaviors.
- */
-public class AjaxTests extends TapestryCoreTestCase
-{
-    @Test
-    public void autocomplete_mixin()
-    {
-        clickThru("Autocomplete Mixin Demo");
-
-        // And that's as far as we can go currently, because
-        // of limitations in Selenium 0.8.3 and bugs in Selenium 0.9.2.
-    }
-
-    @Test
-    public void form_fragment()
-    {
-        clickThru("Form Fragment Demo", "Clear");
-
-        type("name", "Fred");
-
-        // Put a value into the sub field, then hide it ...
-        type("sub", "subvalue");
-
-        // Really, you can't type in the field because it is not visible, but
-        // this checks that invisible fields are not processed.
-        type("email", "this field is ignored");
-
-        clickAndWait(SUBMIT);
-
-        assertText("name", "Fred");
-        assertText("email", "");
-
-        clickAndWait("link=Back");
-        clickAndWait("link=Clear");
-
-        click("subscribeToEmail");
-        click("on");
-
-        type("sub", "subvalue");
-
-        waitForCondition("selenium.browserbot.getCurrentWindow().$('code').isDeepVisible() == true", PAGE_LOAD_TIMEOUT);
-
-        type("name", "Barney");
-        type("email", "rubble@bedrock.gov");
-        type("code", "ABC123");
-
-        click("off");
-
-        click("subVisible");
-        
-        waitForCondition("selenium.browserbot.getCurrentWindow().$('code').isDeepVisible() == false", PAGE_LOAD_TIMEOUT);
-
-        clickAndWait(SUBMIT);
-
-        assertText("name", "Barney");
-        assertText("email", "rubble@bedrock.gov");
-        assertText("code", "");
-        
-        // .. but it still gets submitted, thanks to alwyassubmit=true
-        assertText("sub", "subvalue");
-    }
-
-    //TAP5-1551 - triggering hide on the inner fragment was also hiding the outer fragment
-    @Test
-    public void nested_form_fragment()
-    {
-        clickThru("Nested Form Fragment Demo");
-        assertTrue(isVisible("outertext1"));
-        assertTrue(isVisible("innertext1"));
-        assertTrue(isChecked("innertrigger1"));
-        click("innertrigger1");
-        String condition = "selenium.browserbot.getCurrentWindow().$('innertrigger1').isDeepVisible() == false";
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-        assertTrue(isVisible("outertext1"));
-
-        //now make sure that hide_and_remove is properly handled, as well...
-        assertTrue(isVisible("outertext2"));
-        assertTrue(isVisible("innertext2"));
-        click("innertrigger2");
-        condition="!(selenium.browserbot.getCurrentWindow().$('innertrigger2'))";
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-        assertFalse(isElementPresent("innertext2"));
-        assertTrue(isElementPresent("outertext2"));
-    }
-
-    @Test
-    public void form_injector()
-    {
-        clickThru("FormInjector Demo");
-
-        assertText("sum", "0.0");
-
-        click("link=Add a row");
-
-        sleep(1000);
-
-        type("//input[@type='text'][1]", "5.1");
-
-        // I wanted to add two rows, but Selenium didn't want to play.
-
-        clickAndWait(SUBMIT);
-
-        assertText("sum", "5.1");
-
-        click("link=remove");
-
-        sleep(2000);
-
-        clickAndWait(SUBMIT);
-
-        assertText("sum", "0.0");
-    }
-
-    /**
-     * TAP5-240
-     */
-    @Test
-    public void ajax_server_side_exception()
-    {
-        clickThru("Zone Demo");
-
-        click("link=Failure on the server side");
-
-        // Wait for the console to appear
-
-        waitForCSSSelectedElementToAppear("#t-console li");
-
-        assertTextPresent("Communication with the server failed: Server-side exception.");
-    }
-
-    /**
-     * TAP5-544
-     */
-    @Test
-    public void slow_ajax_load_warning()
-    {
-        clickThru("Slow Ajax Demo");
-
-        // ActionLink
-
-        click("//a[@id='link']");
-
-        waitForElementToAppear("slow");
-
-        click("//a[@id='link']");
-
-        waitForElementToAppear("zoneOutput");
-
-        assertText("zoneOutput", "Updated via an ActionLink");
-
-        clickAndWait("link=refresh");
-
-        click(SUBMIT);
-
-        waitForElementToAppear("slow");
-
-        click(SUBMIT);
-
-        waitForElementToAppear("zoneOutput");
-
-        assertText("zoneOutput", "Updated via form submission.");
-    }
-
-    /**
-     * TAP5-236
-     */
-    @Test
-    public void progressive_display()
-    {
-        clickThru("ProgressiveDisplay Demo");
-
-        waitForElementToAppear("content1");
-        assertText("content1", "Progressive Display content #1.");
-
-        waitForElementToAppear("content2");
-        assertText("content2", "Music Library");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AssetTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AssetTests.java
deleted file mode 100644
index 2f5f14b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/AssetTests.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import java.io.BufferedInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.File;
-import java.io.InputStream;
-import java.net.URL;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.test.TapestryTestConstants;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class AssetTests extends TapestryCoreTestCase
-{
-    @DataProvider
-    private Object[][] asset_data()
-    {
-        return new Object[][]
-        {
-                { "icon", "src/test/app1/images/tapestry_banner.gif" },
-                { "button",
-                        "src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/tapestry-button.png" },
-                { "viaContext", "src/test/app1/images/asf_logo_wide.gif" } };
-    }
-
-    @Test(dataProvider = "asset_data")
-    public void assets(String id, String localPath) throws Exception
-    {
-        clickThru("AssetDemo");
-
-        // Test for https://issues.apache.org/jira/browse/TAPESTRY-1935
-
-        // assertSourcePresent("<link href=\"/css/app.css\" rel=\"stylesheet\" type=\"text/css\">");
-
-        // Read the byte stream for the asset and compare to the real copy.
-
-        String assetURL = getAttribute(String.format("//img[@id='%s']/@src", id));
-
-        compareDownloadedAsset(assetURL, localPath);
-    }
-
-    private void compareDownloadedAsset(String assetURL, String localPath) throws Exception
-    {
-        System.out.printf("compare %s to %s\n", assetURL, localPath);
-
-        // Strip off the leading slash
-        
-        URL url = new URL(getBaseURL() + assetURL.substring(1));
-
-        byte[] downloaded = readContent(url);
-
-        File local = new File(TapestryTestConstants.MODULE_BASE_DIR, localPath);
-
-        System.out.printf("Remote URL %s, Local file: %s\n", url, local);
-
-        byte[] actual = readContent(local.toURL());
-
-        assertEquals(downloaded, actual);
-    }
-
-    private byte[] readContent(URL url) throws Exception
-    {
-        InputStream is = new BufferedInputStream(url.openStream());
-
-        ByteArrayOutputStream os = new ByteArrayOutputStream();
-
-        TapestryInternalUtils.copy(is, os);
-
-        os.close();
-        is.close();
-
-        return os.toByteArray();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/BeanEditorTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/BeanEditorTests.java
deleted file mode 100644
index 809accb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/BeanEditorTests.java
+++ /dev/null
@@ -1,209 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.corelib.components.BeanEditor;
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-import org.testng.annotations.Test;
-
-/**
- * Tests for the {@link BeanEditor} component, often embedded inside
- * a {@link BeanEditForm} component.
- */
-public class BeanEditorTests extends TapestryCoreTestCase
-{
-    /**
-     * Tests the bean editor. Along the way, tests a bunch about validation,
-     * loops, blocks, and application state
-     * objects.
-     */
-    @Test
-    public void bean_editor()
-    {
-        clickThru("BeanEditor Demo", "Clear Data");
-
-        clickAndWait(SUBMIT);
-
-        // Part of the override for the firstName property
-
-        assertAttribute("//input[@id='firstName']/@size", "40");
-
-        // Check that the @Width annotation works
-
-        assertAttribute("//input[@id='birthYear']/@size", "4");
-
-        // Check override of the submit label
-
-        assertAttribute("//input[@type='submit']/@value", "Register");
-
-        type("firstName", "a");
-        type("lastName", "b");
-        type("birthYear", "");
-        select("sex", "label=Martian");
-        click("citizen");
-        type("password", "abracadabra");
-        type("notes", "line1\nline2\nline3");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("You must provide at least 3 characters for First Name.",
-                "You must provide at least 5 characters for Last Name.",
-                "You must provide a value for Year of Birth.");
-
-        type("firstName", "Howard");
-        type("lastName", "Lewis Ship");
-        type("birthYear", "1966");
-        type("password", "supersecret");
-
-        clickAndWait(SUBMIT);
-
-        // The XPath support is too weak for
-        // //div[@class='t-beandisplay-value'][%d], so we
-        // just look for the text itself.
-
-        assertTextPresent("Howard", "Lewis Ship", "1966", "Martian", "U.S. Citizen", "***********",
-                "line1", "line2", "line3");
-    }
-
-    @Test
-    public void bean_editor_property_reorder_remove()
-    {
-        clickThru("BeanEdit Remove/Reorder", "Clear Data");
-
-        // Looks like a bug in Selenium; we can see //label[1] but not
-        // //label[2].
-        // assertTextSeries("//label[%d]", 1, "Last Name", "First Name", "Sex",
-        // "U.S. Citizen");
-
-        type("firstName", "Howard");
-        type("lastName", "Lewis Ship");
-        type("password", "supersecret");
-        check("citizen");
-
-        clickAndWait("//input[@type=\'submit\']");
-
-        assertTextPresent("Howard", "Lewis Ship", "0", "100% He-Man", "U.S. Citizen");
-    }
-
-    @Test
-    public void multiple_beaneditor_components()
-    {
-        clickThru("MultiBeanEdit Demo", "Clear Data");
-
-        type("firstName", "Howard");
-        type("lastName", "Lewis Ship");
-        type("path", "/var/www");
-        clickAndWait("//input[@value='Set Access']");
-
-        assertTextSeries("//li[%d]", 1, "First Name: [Howard]", "Last Name: [Lewis Ship]",
-                "Path: [/var/www]", "Role: [GRANT]");
-    }
-
-    /**
-     * This also checks that the date type is displayed correctly by BeanDisplay
-     * and Grid.
-     */
-    @Test
-    public void date_field_inside_bean_editor()
-    {
-        clickThru("BeanEditor / Date Demo", "clear");
-
-        type("name", "Howard Lewis Ship");
-        type("date", "12/24/1966");
-
-        clickAndWait(SUBMIT);
-
-        // Notice the date output format; that is controlled by the date Block
-        // on the
-        // PropertyDisplayBlocks page.
-
-        assertTextPresent("Howard Lewis Ship", "Dec 24, 1966");
-    }
-
-    /**
-     * TAPESTRY-2013
-     */
-    @Test
-    public void bean_editor_overrides()
-    {
-        clickThru("BeanEditor Override", "Clear Data");
-
-        assertTextPresent("[FirstName Property Editor Override]");
-    }
-
-    /**
-     * TAPESTRY-1869
-     */
-    @Test
-    public void null_fields_and_bean_editor()
-    {
-        clickThru("Number BeanEditor Demo");
-
-        clickAndWait(SUBMIT);
-
-        // Hard to check for anything here.
-
-        clickAndWait("link=Back to form");
-
-        type("value", "237");
-
-        clickAndWait(SUBMIT);
-
-        assertText("//dd[@class='value']", "237");
-    }
-
-    // TAPESTRY-2460
-
-    @Test
-    public void nested_bean_editor_and_bean_display()
-    {
-        clickThru("Nested BeanEditor");
-
-        type("name", "Parent");
-        type("age", "60");
-
-        type("name_0", "Child");
-        type("age_0", "40");
-
-        clickAndWait(SUBMIT);
-
-        assertText("//div[@id='content']//h1", "Nested BeanDisplay");
-
-        // As usual, Selenium is fighting me in terms of extracting data, so the
-        // above check just ensures
-        // we made it past the form submit without error.
-    }
-
-    /**
-     * TAPESTRY-2592
-     */
-    @Test
-    public void bean_editor_pushes_bean_edit_context()
-    {
-        clickThru("BeanEditor BeanEditContext");
-
-        assertTextPresent("Bean class from context is: " + RegistrationData.class.getName());
-    }
-    
-    /** TAP5-991 */
-    public void bean_display_enum_value_from_messages()
-    {
-        start("BeanDisplay Enum Demo");
-        
-        assertText("//dd[2]", "Ultra Important");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CacheTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CacheTests.java
deleted file mode 100644
index 031e8ed..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CacheTests.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-public class CacheTests extends TapestryCoreTestCase
-{
-    /**
-     * TAPESTRY-2338
-     */
-    @Test
-    public void cached_properties_cleared_at_end_of_request()
-    {
-        clickThru("Clean Cache Demo");
-
-        String time1_1 = getText("time1");
-        String time1_2 = getText("time1");
-
-        // Don't know what they are but they should be the same.
-
-        assertEquals(time1_2, time1_1);
-
-        click("link=update");
-
-        sleep(250);
-
-        String time2_1 = getText("time1");
-        String time2_2 = getText("time1");
-
-        // Check that @Cache is still working
-
-        assertEquals(time2_2, time2_1);
-
-        assertFalse(time2_1.equals(time1_1),
-                "After update the nanoseconds time did not change, meaning @Cache was broken.");
-    }
-
-    @Test
-    public void void_method_is_error_with_cached()
-    {
-        clickThru("@Cached on void method");
-
-        assertTextPresent("Method org.apache.tapestry5.integration.app1.pages.VoidMethodWithCached.invalidMethod()",
-                "may not be used with @Cached because it returns void.");
-    }
-
-    @Test
-    public void parameters_not_allowed_with_cached_method()
-    {
-        clickThru("@Cached on method with parameters");
-
-        assertTextPresent(
-                "Method org.apache.tapestry5.integration.app1.pages.ParamsMethodWithCached.invalidMethod(java.lang.String)",
-                "may not be used with @Cached because it has parameters.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ChattyValidationDecorator.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ChattyValidationDecorator.java
deleted file mode 100644
index 8960eab..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ChattyValidationDecorator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.dom.Element;
-
-public class ChattyValidationDecorator implements ValidationDecorator
-{
-    private final MarkupWriter writer;
-
-    private final ValidationDecorator delegate;
-
-    public ChattyValidationDecorator(MarkupWriter writer, ValidationDecorator delegate)
-    {
-        this.writer = writer;
-        this.delegate = delegate;
-    }
-
-    public void beforeLabel(Field field)
-    {
-        writer.writef("[Before label for %s]", field.getLabel());
-    }
-
-    public void afterLabel(Field field)
-    {
-        writer.writef("[After label for %s]", field.getLabel());
-    }
-
-    public void beforeField(Field field)
-    {
-        writer.writef("[Before field %s]", field.getLabel());
-
-        delegate.beforeField(field);
-    }
-
-    public void insideField(Field field)
-    {
-        delegate.insideField(field);
-    }
-
-    public void afterField(Field field)
-    {
-        delegate.afterField(field);
-
-        writer.writef("[After field %s (%s)]", field.getLabel(),
-                      field.isRequired() ? "required" : "optional"
-        );
-    }
-
-    public void insideLabel(Field field, Element labelElement)
-    {
-        delegate.insideLabel(field, labelElement);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
deleted file mode 100644
index ab31c38..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/CoreBehaviorsTests.java
+++ /dev/null
@@ -1,1531 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.apache.tapestry5.integration.app1.pages.RenderErrorDemo;
-import org.testng.annotations.Test;
-
-public class CoreBehaviorsTests extends TapestryCoreTestCase
-{
-
-    @Test
-    public void access_to_page_name()
-    {
-        openBaseURL();
-
-        assertText("activePageName", "Index");
-
-        clickAndWait("link=Grid Demo");
-
-        assertText("activePageName", "GridDemo");
-    }
-
-    /**
-     * also verifies the use of meta data to set the default strategy.
-     */
-    @Test
-    public void flash_persistence()
-    {
-        clickThru("FlashDemo");
-
-        assertTextPresent("[]");
-
-        clickAndWait("link=show the message");
-
-        assertTextPresent("[You clicked the link!]");
-
-        clickAndWait("link=refresh the page");
-
-        assertTextPresent("[]");
-    }
-
-    @Test
-    public void component_parameter_default_from_method() throws Exception
-    {
-        clickThru("ParameterDefault");
-
-        assertTextPresent("Echo component default: [ParameterDefault:echo]");
-    }
-
-    @Test
-    public void embedded_components()
-    {
-        clickThru("Countdown Page");
-
-        assertTextPresent("regexp:\\s+5\\s+4\\s+3\\s+2\\s+1\\s+");
-
-        assertTextPresent("Brought to you by the org.apache.tapestry5.integration.app1.components.Count");
-    }
-
-    /**
-     * Tests the ability to inject a Block, and the ability to use the block to
-     * control rendering.
-     */
-    @Test
-    public void block_rendering() throws Exception
-    {
-        clickThru("BlockDemo");
-
-        assertTextPresent("[]");
-
-        select("//select[@id='blockName']", "fred");
-        waitForPageToLoad(PAGE_LOAD_TIMEOUT);
-
-        assertTextPresent("[Block fred.]");
-
-        select("//select[@id='blockName']", "barney");
-        waitForPageToLoad(PAGE_LOAD_TIMEOUT);
-
-        assertTextPresent("[Block barney.]");
-
-        // TAPESTRY-1583
-
-        assertTextPresent("before it is defined: [Block wilma].");
-    }
-
-    @Test
-    public void environmental()
-    {
-        clickThru("Environmental Annotation Usage");
-
-        assertSourcePresent("[<strong>A message provided by the RenderableProvider component.</strong>]");
-    }
-
-    @Test
-    public void exception_report()
-    {
-        // mismatched tag.
-        clickThru("BadTemplate Page");
-
-        assertTextPresent("org.apache.tapestry5.ioc.internal.OperationException",
-                "Failure parsing template classpath:org/apache/tapestry5/integration/app1/pages/BadTemplate.tml",
-                "The element type \"t:foobar\" must be terminated by the matching end-tag \"</t:foobar>\"",
-                "classpath:org/apache/tapestry5/integration/app1/pages/BadTemplate.tml, line 6",
-                "<t:foobar>content from template</foobar>");
-    }
-
-    @Test
-    public void expansion()
-    {
-        clickThru("Expansion Page");
-
-        assertTextPresent("[value provided by a template expansion]");
-    }
-
-    /**
-     * {@link org.apache.tapestry5.internal.transform.InjectContainerWorker} is
-     * largely tested by the forms tests
-     * ({@link RenderDisabled} is built on it). test is for the failure case,
-     * where a mixin class is used with the wrong
-     * type of component.
-     */
-    @Test
-    public void inject_container_failure() throws Exception
-    {
-        clickThru("InjectContainerMismatch");
-
-        // And exception message:
-
-        assertTextPresent("Component InjectContainerMismatch is not assignable to field org.apache.tapestry5.corelib.mixins.RenderDisabled.field (of type org.apache.tapestry5.Field).");
-    }
-
-    @Test
-    public void inject_component_failure() throws Exception
-    {
-        clickThru("InjectComponentMismatch");
-
-        assertTextPresent("Unable to inject component 'form' into field form of component InjectComponentMismatch. Class org.apache.tapestry5.corelib.components.BeanEditForm is not assignable to a field of type org.apache.tapestry5.corelib.components.Form.");
-    }
-
-    @Test
-    public void injection() throws Exception
-    {
-        clickThru("Inject Demo");
-
-        // is a test for a named @Inject:
-        assertTextPresent("<Proxy for Request(org.apache.tapestry5.services.Request)>");
-
-        // is a test for an anonymous @Inject and
-        // ComponentResourcesInjectionProvider
-        assertTextPresent("ComponentResources[InjectDemo]");
-
-        // Another test, DefaultInjectionProvider
-        assertTextPresent("<Proxy for BindingSource(org.apache.tapestry5.services.BindingSource)>");
-
-        // Prove that injection using a marker annotation (to match against a
-        // marked service) works.
-
-        assertTextPresent("Injection via Marker: Bonjour!");
-
-        assertText("viaInjectService", "1722 tracks in music library");
-    }
-
-    @Test
-    public void instance_mixin()
-    {
-        clickThru("InstanceMixin");
-
-        final String[] dates =
-        { "Jun 13, 1999", "Jul 15, 2001", "Dec 4, 2005" };
-
-        for (String date : dates)
-        {
-            String snippet = String.format("[%s]", date);
-
-            assertSourcePresent(snippet);
-        }
-
-        clickAndWait("link=Toggle emphasis");
-
-        for (String date : dates)
-        {
-            String snippet = String.format("[<em>%s</em>]", date);
-            assertSourcePresent(snippet);
-        }
-    }
-
-    @Test
-    public void localization()
-    {
-        clickThru("Localization");
-
-        assertTextPresent("Via injected Messages property: [Accessed via injected Messages]");
-        assertTextPresent("Via message: binding prefix: [Accessed via message: binding prefix]");
-        assertTextPresent("From Application Message Catalog: [Application Catalog Working]");
-        assertTextPresent("Page locale: [en]");
-        clickAndWait("link=French");
-        assertTextPresent("Page locale: [fr]");
-        clickAndWait("link=English");
-        assertTextPresent("Page locale: [en]");
-    }
-
-    @Test
-    public void page_injection() throws Exception
-    {
-        clickThru("Inject Demo");
-
-        clickAndWait("link=Fred");
-
-        assertTextPresent("You clicked Fred.");
-
-        clickAndWait("link=Back");
-        clickAndWait("link=Barney");
-
-        assertTextPresent("You clicked Barney.");
-
-        clickAndWait("link=Back");
-        clickAndWait("link=Wilma");
-        assertTextPresent("You clicked Wilma.");
-    }
-
-    @Test
-    public void passivate_activate() throws Exception
-    {
-        clickThru("NumberSelect");
-
-        clickAndWait("link=5");
-
-        assertTextPresent("You chose 5.");
-    }
-
-    @Test
-    public void render_phase_method_returns_a_component() throws Exception
-    {
-        clickThru("RenderComponentDemo");
-
-        assertText("//span[@id='container']", "[]");
-
-        // Sneak in a little test for If and parameter else:
-
-        assertTextPresent("Should be blank:");
-
-        clickAndWait("enabled");
-
-        // After clicking the link (which submits the form), the page re-renders
-        // and shows us
-        // the optional component from inside the NeverRender, resurrected to
-        // render on the page
-        // after all.
-
-        assertText("//span[@id='container']/span", "Optional Text");
-
-        assertTextPresent("Should now show up:");
-    }
-
-    @Test
-    public void render_phase_order()
-    {
-        clickThru("RenderPhaseOrder");
-
-        assertTextPresent("[BEGIN-TRACER-MIXIN BEGIN-ABSTRACT-TRACER BEGIN-TRACER BODY AFTER-TRACER AFTER-ABSTRACT-TRACER AFTER-TRACER-MIXIN]");
-    }
-
-    @Test
-    public void simple_component_event()
-    {
-        final String YOU_CHOSE = "You chose: ";
-
-        clickThru("Action Page");
-
-        assertFalse(isTextPresent(YOU_CHOSE));
-
-        for (int i = 2; i < 5; i++)
-        {
-            clickAndWait("link=" + i);
-
-            assertTextPresent(YOU_CHOSE + i);
-        }
-    }
-
-    @Test
-    public void subclass_inherits_parent_template()
-    {
-        clickThru("ExpansionSubclass");
-
-        assertTextPresent("[value provided, in the subclass, via a template expansion]");
-    }
-
-    @Test
-    public void template_overridden()
-    {
-        clickThru("Template Overridden by Class Page");
-
-        assertTextPresent("Output: ClassValue");
-    }
-
-    @Test
-    public void pageloaded_lifecycle_method_invoked()
-    {
-        clickThru("PageLoaded Demo");
-
-        assertTextPresent("[pageLoaded() was invoked.]");
-    }
-
-    @Test
-    public void navigation_response_from_page_activate() throws Exception
-    {
-        clickThru("Protected Page");
-
-        assertText("pagetitle", "Security Alert");
-
-        // The message is set by Protected, but is rendered by SecurityAlert.
-
-        assertTextPresent("Access to Protected page is denied");
-    }
-
-    @Test
-    public void mixed_page_activation_context_and_component_context()
-    {
-        clickThru("Kicker");
-
-        clickAndWait("link=kick target");
-
-        assertTextSeries("//li[%d]", 1, "betty", "wilma", "betty/wilma", "\u82B1\u5B50");
-        assertTextPresent("No component context.");
-
-        clickAndWait("link=go");
-
-        assertTextSeries("//li[%d]", 1, "betty", "wilma", "betty/wilma", "\u82B1\u5B50");
-        assertTextSeries("//ul[2]/li[%d]", 1, "fred", "barney", "clark kent", "fred/barney", "\u592A\u90CE");
-    }
-
-    @Test
-    public void page_link_with_explicit_empty_context()
-    {
-        clickThru("Kicker");
-
-        clickAndWait("link=kick target");
-
-        assertTextSeries("//li[%d]", 1, "betty", "wilma", "betty/wilma", "\u82B1\u5B50");
-
-        clickAndWait("link=Target base, no context");
-
-        assertTextPresent("No activation context.");
-    }
-
-    @Test
-    public void page_link_with_explicit_activation_context()
-    {
-        clickThru("PageLink Context Demo", "no context");
-
-        assertTextPresent("No activation context.");
-
-        clickAndWait("link=PageLink Context Demo");
-
-        clickAndWait("link=literal context");
-
-        assertText("//li[1]", "literal context");
-
-        clickAndWait("link=PageLink Context Demo");
-
-        clickAndWait("link=computed context");
-
-        assertTextSeries("//li[%d]", 1, "fred", "7", "true");
-
-        clickAndWait("link=PageLink Context Demo");
-
-        clickAndWait("link=unsafe characters");
-
-        assertText("//li[1]", "unsafe characters: !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~");
-
-        clickAndWait("link=PageLink Context Demo");
-
-        clickAndWait("link=japanese kanji");
-
-        assertText("//li[1]", "japanese kanji: \u65E5\u672C\u8A9E");
-
-        // TAPESTRY-2221
-
-        clickAndWait("link=PageLink Context Demo");
-
-        clickAndWait("link=Null in context");
-
-        assertText("//li[1]", "NULL");
-    }
-
-    @Test
-    public void recursive_components_are_identified_as_errors()
-    {
-        clickThru("Recursive Demo");
-
-        assertTextPresent(
-                "An unexpected application exception has occurred.",
-                "The template for component org.apache.tapestry5.integration.app1.components.Recursive is recursive (contains another direct or indirect reference to component org.apache.tapestry5.integration.app1.components.Recursive). This is not supported (components may not contain themselves).",
-                "component is <t:recursive>recursive</t:recursive>, so we\'ll see a failure.");
-    }
-
-    @Test
-    public void render_phase_method_may_return_renderable()
-    {
-        clickThru("Renderable Demo");
-
-        assertTextPresent("Renderable Demo", "[This proves it works.]");
-    }
-
-    @Test
-    public void verify_event_handler_invocation_order_and_circumstance()
-    {
-        String clear = "link=clear";
-
-        clickThru("EventHandler Demo");
-
-        clickAndWait(clear);
-
-        clickAndWait("link=No Context");
-        assertText("methodNames", "[parent.eventHandlerZero(), parent.onAction(), child.eventHandlerZeroChild()]");
-
-        clickAndWait(clear);
-        clickAndWait("link=Single context value");
-
-        assertText(
-                "methodNames",
-                "[parent.eventHandlerOne(String), parent.eventHandlerZero(), parent.onAction(String), parent.onAction(), child.eventHandlerOneChild(), child.eventHandlerZeroChild()]");
-
-        clickAndWait(clear);
-        clickAndWait("link=Two value context");
-
-        assertText(
-                "methodNames",
-                "[parent.eventHandlerOne(String), parent.eventHandlerZero(), parent.onAction(String), parent.onAction(), child.eventHandlerOneChild(), child.eventHandlerZeroChild()]");
-
-        clickAndWait(clear);
-        clickAndWait("link=Two value context (from fred)");
-
-        assertText(
-                "methodNames",
-                "[parent.eventHandlerOne(String), parent.eventHandlerZero(), parent.onAction(String), parent.onAction(), child.eventHandlerForFred(), child.eventHandlerOneChild(), child.eventHandlerZeroChild(), child.onActionFromFred(String), child.onActionFromFred()]");
-    }
-
-    @Test
-    public void inherited_bindings()
-    {
-        clickThru("Inherited Bindings Demo");
-
-        assertTextPresent("Bound: [ value: the-bound-value, bound: true ]", "Unbound: [ value: null, bound: false ]");
-    }
-
-    @Test
-    public void client_persistence()
-    {
-        clickThru("Client Persistence Demo");
-        // can't assume session won't exist because other tests use form
-        // components w/ defaults, which means
-        // session creation to store the ValidationTracker. So we explicitly
-        // clear the session here.
-        clickAndWait("link=nix session");
-
-        assertTextPresent("Persisted value: []", "Session: [false]");
-
-        clickAndWait("link=store string");
-
-        assertTextPresent("Persisted value: [A String]", "Session: [false]");
-    }
-
-    @Test
-    public void attribute_expansions()
-    {
-        clickThru("Attribute Expansions Demo");
-
-        assertAttribute("//div[@id='mixed-expansion']/@style", "color: blue;");
-        assertAttribute("//div[@id='single']/@class", "red");
-        assertAttribute("//div[@id='consecutive']/@class", "goober-red");
-        assertAttribute("//div[@id='trailer']/@class", "goober-green");
-        assertText("//div[@id='formal']", "ALERT-expansions work inside formal component parameters as well");
-
-        // An unrelated test, but fills in a bunch of minor gaps.
-
-        assertSourcePresent("<!-- A comment! -->");
-    }
-
-    @Test
-    public void event_handler_return_types()
-    {
-        openBaseURL();
-
-        assertTextPresent("Tapestry 5 Integration Application 1");
-
-        clickAndWait("link=Return Types");
-        assertTextPresent("Return Type Tests");
-
-        clickAndWait("link=null");
-        assertTextPresent("Return Type Tests");
-
-        clickAndWait("link=string");
-        assertTextPresent("Tapestry 5 Integration Application 1");
-        goBack();
-        waitForPageToLoad();
-
-        clickAndWait("link=class");
-        assertTextPresent("Tapestry 5 Integration Application 1");
-        goBack();
-        waitForPageToLoad();
-
-        clickAndWait("link=page");
-        assertTextPresent("Tapestry 5 Integration Application 1");
-        goBack();
-        waitForPageToLoad();
-
-        clickAndWait("link=link");
-        assertTextPresent("Tapestry 5 Integration Application 1");
-        goBack();
-        waitForPageToLoad();
-
-        clickAndWait("link=stream");
-        assertTextPresent("Success!");
-        goBack();
-        waitForPageToLoad();
-        
-        clickAndWait("link=stream page content");
-        assertTextPresent("Tapestry 5 Integration Application 1");
-        goBack();
-        waitForPageToLoad();
-
-        clickAndWait("link=stream page content with context");
-        assertTextPresent("music/Details", "Track Details");
-        assertTextPresent("Bug Juice", "Late Lounge", "Electronica");
-        goBack();
-        waitForPageToLoad();
-
-        /*
-         * clickAndWait("link=URL");
-         * assertTextPresent("Google>");
-         * goBack();
-         * waitForPageToLoad();
-         */
-
-        clickAndWait("link=bad");
-        assertTextPresent(
-                "An unexpected application exception has occurred.",
-                "A component event handler method returned the value 20. Return type java.lang.Integer can not be handled.",
-                "context:ReturnTypes.tml, line 50");
-        goBack();
-        waitForPageToLoad();
-        
-        clickAndWait("link=http error");
-        assertTextPresent(
-                "HTTP ERROR 410",
-                "Oups! Resource disappeared!");
-    }
-
-    @Test
-    public void missing_template_for_page()
-    {
-        clickThru("Missing Template Demo");
-
-        assertTextPresent("Page MissingTemplate did not generate any markup when rendered. This could be because its template file could not be located, or because a render phase method in the page prevented rendering.");
-    }
-
-    /**
-     * This basically checks that the services status page does not error.
-     */
-    @Test
-    public void services_status()
-    {
-        open(getBaseURL() + "servicestatus");
-
-        assertTextPresent("Tapestry IoC Services Status");
-    }
-
-    /**
-     * Tests TAPESTRY-1934.
-     */
-    @Test
-    public void base_class_must_be_in_controlled_package() throws Exception
-    {
-        open(getBaseURL() + "invalidsuperclass", "true");
-
-        assertTextPresent("Base class org.apache.tapestry5.integration.app1.WrongPackageForBaseClass (super class of org.apache.tapestry5.integration.app1.pages.InvalidSuperClass) is not in a controlled package and is therefore not valid. You should try moving the class to package org.apache.tapestry5.integration.app1.base.");
-    }
-
-    /**
-     * Tests TAPESTRY-2005.
-     */
-    @Test
-    public void components_passed_as_parameters() throws Exception
-    {
-        clickThru("ComponentParameter Demo");
-
-        // This component is inside a block, and is only rendered because it is
-        // passed as a parameter, of type ActionLink,
-        // to an ActionLinkIndirect component.
-
-        clickAndWait("link=click me");
-
-        assertTextPresent("Link was clicked.");
-    }
-
-    /**
-     * Tests TAPESTRY-1546
-     */
-    @Test
-    public void inherit_informals() throws Exception
-    {
-        clickThru("Inherit Informal Parameters Demo");
-
-        assertAttribute("//span[@id='target']/@class", "inherit");
-    }
-
-    /**
-     * TAPESTRY-1830
-     */
-    @Test
-    public void var_binding()
-    {
-        clickThru("Var Binding Demo");
-
-        assertTextSeries("//li[%d]", 1, "1", "2", "3");
-    }
-
-    /**
-     * TAPESTRY-1724
-     */
-    @Test
-    public void component_event_errors()
-    {
-        clickThru("Exception Event Demo", "enable", "force invalid activation context");
-
-        assertTextPresent("Exception: Exception in method org.apache.tapestry5.integration.app1.pages.ExceptionEventDemo.onActivate(float)");
-
-        clickAndWait("link=force invalid event context");
-
-        assertTextPresent("Exception: Exception in method org.apache.tapestry5.integration.app1.pages.ExceptionEventDemo.onActionFromFail(float)");
-
-        // Revert to normal handling: return null from the onException() event
-        // handler method.
-
-        clickAndWait("link=disable");
-
-        clickAndWait("link=force invalid event context");
-
-        assertTextPresent("An unexpected application exception has occurred.",
-                "org.apache.tapestry5.runtime.ComponentEventException", "java.lang.NumberFormatException");
-    }
-
-    /**
-     * TAPESTRY-1518
-     */
-    @Test
-    public void generic_page_type()
-    {
-        clickThru("Generic Page Class Demo");
-
-        assertTextPresent("Editor for org.apache.tapestry5.integration.app1.data.Track");
-
-        assertText("//label[@for='title']", "Title");
-    }
-
-    /**
-     * TAPESTRY-2097
-     */
-    @Test
-    public void render_queue_exception()
-    {
-        clickThru("Render Error Demo");
-
-        assertTextPresent("An unexpected application exception has occurred");
-
-        // Just sample a smattering of the vast amount of data in the exception
-        // report.
-
-        assertTextPresent("RenderErrorDemo", "class " + RenderErrorDemo.class.getName(), "RenderErrorDemo:border",
-                "RenderErrorDemo:echo");
-    }
-
-    /**
-     * TAPESTRY-2088
-     */
-    @Test
-    public void primitive_array_as_parameter_type()
-    {
-        clickThru("Primitive Array Parameter Demo");
-
-        assertSourcePresent("<ul><li>1</li><li>3</li><li>5</li><li>7</li><li>9</li></ul>");
-    }
-
-    /**
-     * TAPESTRY-1594
-     */
-    @Test
-    public void ignored_paths_filter()
-    {
-        clickThru("Unreachable Page");
-
-        // This message changes from one release of Jetty to the next sometimes
-        assertText("//title", "Error 404 Not Found");
-    }
-
-    /**
-     * TAPESTRY-2085
-     */
-    @Test
-    public void render_phase_methods_may_throw_checked_exceptions()
-    {
-        clickThru("Render Phase Method Exception Demo");
-
-        assertTextPresent("Render queue error in BeginRender[RenderPhaseMethodExceptionDemo]: java.sql.SQLException: Simulated JDBC exception while rendering.");
-    }
-
-    /**
-     * TAPESTRY-2114
-     */
-    @Test
-    public void boolean_properties_can_use_get_or_is_as_method_name_prefix()
-    {
-        clickThru("Boolean Property Demo", "clear");
-
-        assertText("usingGet", "false");
-        assertText("usingIs", "false");
-
-        clickAndWait("link=set");
-
-        assertText("usingGet", "true");
-        assertText("usingIs", "true");
-    }
-
-    /**
-     * TAPESTRY-1475
-     */
-    @Test
-    public void discard_persistent_field_changes()
-    {
-        clickThru("Persistent Demo");
-
-        assertText("message", "");
-
-        clickAndWait("link=Update the message field");
-
-        assertText("message", "updated");
-
-        clickAndWait("link=Refresh page");
-
-        assertText("message", "updated");
-
-        clickAndWait("link=Discard persistent field changes");
-
-        assertText("message", "");
-    }
-
-    /**
-     * TAPESTRY-2150. Also demonstrates how to add a ValueEncoder for an entity
-     * object, to allow seamless encoding of
-     * the entity's id into the URL.
-     */
-    @Test
-    public void nested_page_names()
-    {
-        clickThru("Music Page", "2");
-
-        assertText("activePageName", "Music");
-
-        clickAndWait("link=The Gift");
-
-        assertText("activePageName", "music/Details");
-    }
-
-    /**
-     * TAPESTRY-2235
-     */
-    @Test
-    public void generated_activation_context_handlers()
-    {
-        clickThru("Music Page", "69");
-
-        assertText("activePageName", "Music");
-
-        clickAndWait("link=Wake Me Up (Copy)");
-
-        assertText("activePageName", "music/Details2");
-
-        assertText("//dd[@class='title']", "Wake Me Up");
-
-        assertText("//dd[@class='artist']", "Norah Jones");
-    }
-
-    /**
-     * TAPESTRY-1999
-     */
-    @Test
-    public void list_as_event_context()
-    {
-        clickThru("List Event Context Demo");
-
-        assertTextSeries("//ul[@id='eventcontext']/li[%d]", 1, "1", "2", "3");
-    }
-
-    /**
-     * TAPESTRY-2196
-     */
-    @Test
-    public void protected_field_in_page_class()
-    {
-        clickThru("Protected Fields Demo", "Trigger the Exception");
-
-        assertTextPresent(
-                "An unexpected application exception has occurred.",
-                "Class org.apache.tapestry5.integration.app1.pages.ProtectedFields contains field(s) (_field) that are not private. You should change these fields to private, and add accessor methods if needed.");
-    }
-
-    /**
-     * TAPESTRY-2078
-     */
-    @Test
-    public void noclassdeffound_exception_is_linked_to_underlying_cause()
-    {
-        clickThru("Class Transformation Exception Demo");
-
-        assertTextPresent("Class org.apache.tapestry5.integration.app1.pages.Datum contains field(s) (_value) that are not private. You should change these fields to private, and add accessor methods if needed.");
-    }
-
-    @Test
-    public void method_advice()
-    {
-        clickThru("Method Advice Demo");
-
-        // @ReverseStrings intercepted and reversed the result:
-        assertText("message", "!olleH");
-
-        // @ReverseStrings doesn't do anything for non-Strings
-        assertText("version", "5");
-
-        // @ReverseStrings filtered the checked exception to a string result
-        assertText("cranky",
-                "Invocation of method getCranky() failed with org.apache.tapestry5.integration.app1.services.DearGodWhyMeException.");
-
-        // Now to check advice on a setter that manipulates parameters
-
-        type("text", "Tapestry");
-        clickAndWait(SUBMIT);
-
-        assertText("output-text", "yrtsepaT");
-    }
-
-    @Test
-    public void component_classes_may_not_be_directly_instantiated()
-    {
-        clickThru("Instantiate Page");
-
-        assertTextPresent("Component class org.apache.tapestry5.integration.app1.pages.Music may not be instantiated directly.");
-    }
-
-    /**
-     * TAPESTRY-2567
-     */
-    @Test
-    public void field_annotation_conflict()
-    {
-        clickThru("Field Annotation Conflict");
-
-        assertTextPresent("Field flashDemo of class org.apache.tapestry5.integration.app1.pages.FieldAnnotationConflict is already claimed by @org.apache.tapestry5.annotations.InjectPage and can not be claimed by @org.apache.tapestry5.annotations.Parameter.");
-    }
-
-    /**
-     * TAPESTRY-2610
-     */
-    @Test
-    public void access_to_informal_parameters()
-    {
-        clickThru("Informal Parameters Demo");
-
-        assertTextSeries("//dl[@id='informals']/dt[%d]", 1, "barney", "fred", "pageName");
-        assertTextSeries("//dl[@id='informals']/dd[%d]", 1, "rubble", "flintstone", "InformalParametersDemo");
-    }
-
-    /**
-     * TAPESTRY-2517
-     */
-    @Test
-    public void cached_exception_for_loading_failed_page()
-    {
-        clickThru("Failed Field Injection Demo");
-
-        assertTextPresent("Error obtaining injected value for field org.apache.tapestry5.integration.app1.pages.FailedInjectDemo.buffer: No service implements the interface java.lang.StringBuffer.");
-
-        refresh();
-        waitForPageToLoad(PAGE_LOAD_TIMEOUT);
-
-        // Before this bug was fixed, this message would not appear; instead on
-        // complaining about _$resources would appear which was very confusing.
-
-        assertTextPresent("Error obtaining injected value for field org.apache.tapestry5.integration.app1.pages.FailedInjectDemo.buffer: No service implements the interface java.lang.StringBuffer.");
-    }
-
-    /**
-     * TAPESTRTY-2644
-     */
-    @Test
-    public void create_page_link_via_page_class()
-    {
-        clickThru("PageLink via Class Demo");
-
-        assertTextPresent("Demonstrates the use of the @Inject annotation.");
-    }
-
-    /**
-     * TAP5-256
-     */
-    @Test
-    public void exception_when_attaching_page()
-    {
-        clickThru("Page Attach Failure");
-
-        assertTextPresent("Failure inside pageAttached().");
-    }
-
-    /**
-     * TAP5-284
-     */
-    @Test
-    public void default_method_for_parameter_returns_primitive()
-    {
-        clickThru("Primitive Default Demo");
-
-        assertText("value", "99");
-    }
-
-    /**
-     * TAP5-285
-     */
-    @Test
-    public void unhandled_client_events_throw_exceptions()
-    {
-        clickThru("Unhandled Event Demo", "traditional");
-
-        assertTextPresent("Request event 'action' (on component UnhandledEventDemo:traditional) was not handled; you must provide a matching event handler method in the component or in one of its containers.");
-
-        clickThru("Unhandled Event Demo");
-
-        click("link=ajax");
-
-        waitForCSSSelectedElementToAppear("#t-console li");
-
-        assertTextPresent("Communication with the server failed: Request event 'action' (on component UnhandledEventDemo:ajax) was not handled; you must provide a matching event handler method in the component or in one of its containers.");
-    }
-
-    /**
-     * TAP5-105
-     */
-    @Test
-    public void component_in_class_but_not_template_is_an_exception()
-    {
-        clickThru("Components Not In Template Demo");
-
-        assertTextPresent("Embedded component(s) form are defined within component class org.apache.tapestry5.integration.app1.pages.ComponentsNotInTemplateDemo");
-    }
-
-    /**
-     * TAP5-309
-     */
-    @Test
-    public void conflict_between_property_annotation_and_existing_method()
-    {
-        clickThru("Getter Method Already Exists");
-
-        assertTextPresent("Unable to create new method public java.lang.String getName() as it already exists in class org.apache.tapestry5.integration.app1.pages.GetterMethodAlreadyExists.");
-    }
-
-    /**
-     * TAP5-181
-     */
-    @Test
-    public void duplicate_ids_highlight_both_locations()
-    {
-        clickThru("Duplicate IDs");
-
-        assertTextPresent("Component DuplicateIds already contains a child component with id 'index'. Embedded component ids must be unique (excluding case, which is ignored).");
-        assertTextPresent("Component DuplicateIds declared original child component with id 'index' in DuplicateIds.tml on line 6.");
-    }
-
-    /**
-     * TAP5-487
-     */
-    @Test
-    public void published_parameters()
-    {
-        clickThru("Publish Parameters Demo");
-
-        assertText("p3-where", "PublishParametersDemo:publish1.publish2.publish3");
-        assertText("p3-number", "6");
-        assertText("p3-value", "{passed to publish1.value}");
-    }
-
-    /**
-     * TAP5-487
-     */
-    @Test
-    public void conflicting_published_parameter_names_within_same_component()
-    {
-        clickThru("Duplicate Published Parameter Name");
-
-        assertTextPresent("Parameter 'value' of embedded component 'passwordfield' can not be published as a parameter of "
-                + "component org.apache.tapestry5.integration.app1.components.BadPublishDuplicate, "
-                + "as it has previously been published by embedded component 'textfield'.");
-    }
-
-    @Test
-    public void embedded_type_conflict()
-    {
-        clickThru("Embedded Component Type Conflict");
-
-        assertTextPresent("Embedded component 'input' provides a type attribute in the template ('passwordfield') "
-                + "as well as in the component class ('textfield'). You should not provide a type attribute in "
-                + "the template when defining an embedded component within the component class.");
-    }
-
-    @Test
-    public void publish_unknown_parameter()
-    {
-        clickThru("Publish Unknown Parameter Demo");
-
-        assertTextPresent("Parameter 'xyzzyx' of component org.apache.tapestry5.integration.app1.components.BadPublishUnknown "
-                + "is improperly published from embedded component 'publish1' (where it does not exist). "
-                + "This may be a typo in the publishParameters attribute of the @Component annotation.");
-    }
-
-    @Test
-    public void unknown_mixin_id()
-    {
-        clickThru("Bad Mixin Id Demo");
-
-        assertTextPresent("Mixin id for parameter 'unknownmixinid.foo' not found. Attached mixins: RenderInformals.");
-    }
-
-    @Test
-    public void duplicate_mixin()
-    {
-        clickThru("Duplicate Mixin Demo");
-
-        assertTextPresent("Failure creating embedded component 'form' of "
-                + "org.apache.tapestry5.integration.app1.pages.DupeMixinDemo: "
-                + "Mixins applied to a component must be unique. Mixin 'RenderInformals' has already been applied.");
-    }
-
-    @Test
-    public void unsupported_informal_block_parameter()
-    {
-        clickThru("Unsupported Parameter Block Demo");
-
-        assertTextPresent(
-                "Exception assembling root component of page UnsupportedParameterBlockDemo:",
-                "Component UnsupportedParameterBlockDemo:outputraw does not include a formal parameter 'unexpected' (and does not support informal parameters).");
-    }
-
-    /**
-     * TAP5-74
-     */
-    @Test
-    public void component_extends_parent_template()
-    {
-        clickThru("Template Override Demo");
-
-        // From the parent template (could be overridden, but is not).
-
-        assertText("title", "Template Override Demo");
-
-        // Overriden by <t:replace> in the child component
-
-        assertText("pagecontent", "Content from TemplateOverrideDemo.tml");
-    }
-
-    @Test
-    public void extend_without_base_template()
-    {
-        clickThru("Invalid Template Extend Demo");
-
-        assertTextPresent("Component org.apache.tapestry5.integration.app1.pages.InvalidTemplateExtend uses an extension template, but does not have a parent component.");
-    }
-
-    /**
-     * TAP5-578
-     */
-    @Test
-    public void abstract_component_class()
-    {
-        clickThru("Abstract Component Demo");
-
-        assertTextPresent(
-                "java.lang.RuntimeException",
-                "Component class org.apache.tapestry5.integration.app1.components.AbstractComponent is abstract and can not be instantiated.");
-    }
-
-    @Test
-    public void multi_level_parameter_inheritance()
-    {
-        clickThru("Multi-Level Inherit Demo");
-
-        assertText("prop.middle.bottom", "bound value");
-        assertText("literal.middle.bottom", "some text");
-    }
-
-    @Test
-    public void bindparameter()
-    {
-        clickThru("BindParameter mixin annotation");
-        // implicit parameter name
-        assertEchoMixins("testmixin", "mypropertyvalue", 0, -1, -1, 1, true);
-        assertText("mypropertyoutput", "mypropertyvalue");
-
-        // explicit parameter name
-        assertEchoMixins("testmixin2", "10", -1, 0, -1, 2, true);
-        assertText("mypropertyoutput2", "10");
-
-        // multiple parameter names; first one found wins.
-        assertEchoMixins("testmixin3", "hello", -1, -1, 0, 3, true);
-
-        // multiple mixins
-        assertEchoMixins("multimixins", "supervalue", 0, 1, 2, 3, true);
-        assertText("mypropertyoutput4", "supervalue");
-
-        // finally, binding to default bindings (which is tricky because of page
-        // load invocation order)
-        assertEchoMixins("defaultbinding", "goodbye", 0, -1, -1, 1, false);
-        assertText("mypropertyoutput5", "goodbye");
-    }
-
-    /**
-     * asserts that the "echo value" mixins are properly functioning (ie
-     * 
-     * @BindParameter, and mixin ordering).
-     *                 each integer value specifies the echo mixin number (echovalue => 1,
-     *                 echovalue2 => 2, echovalue3 => 3; 0 is the original value)
-     *                 from which the specified echo mixin is expected to "receive" its value.
-     *                 So if echo1From is 2, then the "original value"
-     *                 printed by echo1 is expected to be the value set by echo2. If a given
-     *                 "from" is < 0, checking the corresponding mixin values is disabled.
-     */
-
-    private void assertEchoMixins(String fieldName, String originalValue, int echo1From, int echo2From, int echo3From,
-            int fieldFrom, boolean isField)
-    {
-        String[] vals =
-        { originalValue, "temporaryvaluefromechovaluemixin", "3", "world" };
-        String before = fieldName + "_before";
-        String after = fieldName + "_after";
-        if (echo1From > -1)
-        {
-            assertText(before, vals[echo1From] + "-before");
-            assertText(after, vals[echo1From] + "-after");
-        }
-        if (echo2From > -1)
-        {
-            assertText(before + "2", "echo2-" + vals[echo2From] + "-before");
-            assertText(after + "2", "echo2-" + vals[echo2From] + "-after");
-        }
-        if (echo3From > -1)
-        {
-            assertText(before + "3", "echo3-" + vals[echo3From] + "-before");
-            assertText(after + "3", "echo3-" + vals[echo3From] + "-after");
-        }
-        if (isField)
-            assertFieldValue(fieldName, vals[fieldFrom]);
-        else
-            assertText(fieldName, vals[fieldFrom]);
-    }
-
-    @Test
-    public void missing_componentclass()
-    {
-        clickThru("Missing Component Class Exception");
-        assertTextPresent(
-                "An unexpected application exception has occurred",
-                "Failure creating embedded component 'componentwithnotype' of org.apache.tapestry5.integration.app1.pages.MissingComponentClassException: You must specify the type via t:type, the element, or @Component");
-    }
-
-    @Test
-    public void session_attribute()
-    {
-        clickThru("SessionAttribute Demo");
-
-        assertTextPresent("Foo");
-        assertTextPresent("Bar");
-
-        clickAndWait("link=Read SessionAttribute");
-
-        assertTextPresent("read Foo");
-        assertTextPresent("read Bar");
-    }
-
-    /**
-     * TAPESTRY-1598
-     */
-    @Test
-    public void value_encoder_via_type_coercer()
-    {
-        clickThru("Magic ValueEncoder Demo");
-
-        select("number", "25");
-
-        clickAndWait(SUBMIT);
-
-        String locator = "//span[@id='selectednumber']";
-
-        assertText(locator, "25");
-
-        select("number", "100");
-        clickAndWait(SUBMIT);
-
-        assertText(locator, "100");
-    }
-
-    /**
-     * TAPESTRY-2184
-     */
-    @Test
-    public void create_action_link_while_not_rendering()
-    {
-        clickThru("Action via Link Demo", "via explicit Link creation");
-
-        assertText("message", "from getActionURL()");
-    }
-
-    /**
-     * TAPESTRY-2244
-     */
-    @Test
-    public void cached()
-    {
-        clickThru("Cached Annotation");
-
-        assertText("value", "000");
-        assertText("value2size", "111");
-
-        assertText("//span[@class='watch'][1]", "0");
-        assertText("//span[@class='watch'][2]", "0");
-        assertText("//span[@class='watch'][3]", "1");
-
-        clickAndWait("link=Back to index");
-
-        // TAPESTRY-2338: Make sure the data is cleared.
-
-        clickAndWait("link=Cached Annotation");
-
-        assertText("value", "000");
-        assertText("value2size", "111");
-
-        assertText("//span[@class='watch'][1]", "0");
-        assertText("//span[@class='watch'][2]", "0");
-        assertText("//span[@class='watch'][3]", "1");
-    }
-
-    /**
-     * TAPESTRY-2244
-     */
-    @Test
-    public void override_method_with_cached()
-    {
-        clickThru("Cached Annotation2");
-
-        assertText("value", "111");
-
-        clickAndWait("link=Back to index");
-
-        // TAPESTRY-2338: Make sure the data is cleared.
-
-        clickAndWait("link=Cached Annotation2");
-
-        assertText("value", "111");
-    }
-
-    /**
-     * TAPESTRY-2542
-     */
-    @Test
-    public void has_body()
-    {
-        clickThru("Has Body Demo");
-
-        assertText("nobody", "false");
-        assertText("somebody", "true");
-    }
-
-    @Test
-    public void bindparameter_nomatchingparameter()
-    {
-        clickThru("BindParameter error handling");
-
-        assertTextPresent(
-                "An unexpected application exception has occurred.",
-
-                "Failure binding parameter field 'boundParameter' of mixin BindParameterNoSuchParameter:throwexception$echovalue2 (type org.apache.tapestry5.integration.app1.mixins.EchoValue2)",
-
-                "Containing component org.apache.tapestry5.corelib.components.Any does not contain a formal parameter matching any of boundParameter, value.");
-    }
-
-    @Test
-    public void bindparameter_on_componentfield_throws_exception()
-    {
-        clickThru("BindParameter on component");
-
-        assertTextPresent(
-                "An unexpected application exception has occurred.",
-                "@BindParameter was used on field 'value' of component class 'org.apache.tapestry5.integration.app1.components.BindParameterComponent', but @BindParameter should only be used in mixins.");
-    }
-
-    @Test
-    public void trigger_demo()
-    {
-        clickThru("Trigger Demo");
-
-        assertTextPresent("Event 'provideAdditionalMarkup' handled.");
-    }
-
-    @Test
-    public void xml_content() throws Exception
-    {
-        open(getBaseURL() + "xmlcontent");
-
-        // Commented out ... Selenium can't seem to handle an XML response.
-
-        // assertSourcePresent("<![CDATA[< & >]]>");
-    }
-
-    @Test
-    public void secure_page_access()
-    {
-        clickThru("Secure Page Demo");
-
-        assertText("secure", "secure");
-
-        assertText("message", "Triggered from Index");
-
-        clickAndWait("link=click");
-
-        assertText("secure", "secure");
-
-        assertText("message", "Link clicked");
-
-        clickAndWait(SUBMIT);
-
-        assertText("secure", "secure");
-        assertText("message", "Form submitted");
-
-        clickAndWait("link=Back to index");
-
-        // Back to the insecure home page.
-
-        assertText("//h1", "Tapestry Integration Test Application");
-    }
-
-    /** TAP5-815 */
-    @Test
-    public void test_asset_protection()
-    {
-        // Have to watch out for minor differences in error messages from one version of Jetty to
-        // the next.
-
-        // context resources should be available by default.
-        clickThru("Asset Protection Demo");
-        clickAndWait("link=Available File");
-        assertTextPresent("This file should be available to clients.");
-
-        clickThru("Asset Protection Demo");
-        clickAndWait("link=Unavailable CSS");
-        assertTextPresent("HTTP ERROR 404");
-
-        clickThru("Asset Protection Demo");
-        clickAndWait("link=WEB-INF");
-        assertTextPresent("HTTP ERROR 404");
-
-        clickThru("Asset Protection Demo");
-        clickAndWait("link=WEB-INF/");
-        assertTextPresent("HTTP ERROR 404");
-
-        clickThru("Asset Protection Demo");
-        clickAndWait("link=Available File2");
-        assertTextPresent("This file should be available to clients.");
-    }
-
-    /** TAP5-964 */
-    @Test
-    public void failure_inside_default_object_renderer()
-    {
-        clickThru("RenderObject Exception Demo");
-
-        assertText(
-                "container",
-                "Exception rendering description for object of type org.apache.tapestry5.integration.app1.data.NullToString: (java.lang.NullPointerException) NPE from NullToString");
-    }
-
-    /** TAP5-966 */
-
-    @Test
-    public void module_loading()
-    {
-        clickThru("Test Only Service Demo");
-
-        assertText("message", "TestOnly service message");
-    }
-
-    /** TAP5-948 */
-    @Test
-    public void page_reset_annotation()
-    {
-        clickThru("PageReset Annotation Demo");
-
-        assertText("current", "0");
-
-        clickAndWait("link=increment");
-
-        assertText("current", "1");
-
-        clickAndWait("link=increment");
-
-        assertText("current", "2");
-
-        clickAndWait("link=refresh");
-
-        assertText("current", "2");
-
-        clickAndWait("link=Back to index");
-        clickAndWait("link=PageReset Annotation Demo");
-
-        assertText("current", "0");
-    }
-
-    /** TAP5-948 */
-    @Test
-    public void page_reset_annotation_on_bad_method()
-    {
-        clickThru("PageReset Annotation Failure");
-
-        assertTextPresent(
-                "Method org.apache.tapestry5.integration.app1.pages.PageResetFailure.reset(java.lang.String)",
-                "is invalid: methods with the @PageReset annotation must return void, and have no parameters.");
-    }
-
-    /** TAP5-1056 */
-    @Test
-    public void injection_of_application_message_catalog_into_service()
-    {
-        clickThru("Inject Global Messages into Service Demo");
-
-        assertText("status", "Application Catalog Working");
-    }
-
-    /** TAP5-1121 */
-    @Test
-    public void discard_after()
-    {
-        clickThru("@DiscardAfter Demo");
-
-        type("stringValue", "foo bar baz");
-
-        clickAndWait("//input[@id='keep']");
-
-        assertTextPresent("Value is: 'foo bar baz'");
-
-        clickAndWait("//input[@id='discard']");
-
-        assertTextPresent("Value is: ''");
-
-        // Once again
-
-        type("stringValue", "barney quux");
-
-        clickAndWait("//input[@id='keep']");
-
-        assertTextPresent("Value is: 'barney quux'");
-
-        clickAndWait("//input[@id='discardWithCheckedException']");
-
-        assertTextPresent("Oops! Error occured");
-
-        clickThru("@DiscardAfter Demo");
-
-        assertTextPresent("Value is: 'barney quux'");
-    }
-
-    /** TAP5-1080 */
-    @Test
-    public void context_lost_on_secure_page_redirect()
-    {
-        open("/securepage/mycontext");
-
-        assertText("context", "mycontext");
-    }
-
-    /** TAP5-424 */
-    @Test
-    public void multiple_resources_contributed_to_global_message_catalog()
-    {
-        clickThru("Library Messages Demo");
-
-        assertText("id=no-override", "[pre-app]");
-        assertText("id=override", "[app]");
-    }
-    
-    /** TAP5-1254 */
-    @Test
-    public void decorate_page_render_link()
-    {
-        clickThru("Decorate Page Render Link Demo");
-
-        clickAndWait("link=refresh");
-        
-        assertTextPresent("Page Render Link Decorated: true");
-    }
-    
-    /** TAP5-1254 */
-    @Test
-    public void decorate_component_event_link()
-    {
-        clickThru("Decorate Component Event Link Demo");
-
-        clickAndWait("link=refresh");
-        
-        assertTextPresent("Component Event Link Decorated: true");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FailureTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FailureTests.java
deleted file mode 100644
index 5ff0d8b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FailureTests.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests for various kinds of failure conditions. Generally, what's being tested is that the exception
- * is being reported correctly.
- */
-public class FailureTests extends TapestryCoreTestCase
-{
-    /**
-     * With lt;span t:id="foo"/&gt; in the template, there should be an @Component
-     * in the Java class. When there's not, it's an error.
-     */
-    @Test
-    public void component_id_in_template_with_no_type()
-    {
-        clickThru("No Component Type Provided");
-
-        assertTextPresent("org.apache.tapestry5.integration.app1.pages.NoTypeProvidedDemo",
-                "You must specify the type via t:type, the element, or @Component annotation.");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FormTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FormTests.java
deleted file mode 100644
index acb0938..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/FormTests.java
+++ /dev/null
@@ -1,940 +0,0 @@
-// Copyright 2009, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests for the {@link Form} component as well as many form control components.
- */
-public class FormTests extends TapestryCoreTestCase
-{
-
-    @Test
-    public void form_encoding_type()
-    {
-        clickThru("Form Encoding Type");
-
-        assertAttribute("//form/@enctype", "x-override");
-    }
-
-    @Test
-    public void page_context_in_form()
-    {
-        clickThru("Page Context in Form");
-
-        assertTextSeries("//li[%d]", 1, "betty", "wilma", "context with spaces", "context/with/slashes");
-        assertFieldValue("t:ac", "betty/wilma/context$0020with$0020spaces/context$002fwith$002fslashes");
-
-        clickAndWait(SUBMIT);
-
-        assertTextSeries("//li[%d]", 1, "betty", "wilma", "context with spaces", "context/with/slashes");
-        assertFieldValue("t:ac", "betty/wilma/context$0020with$0020spaces/context$002fwith$002fslashes");
-    }
-
-    @Test
-    public void password_field()
-    {
-        clickThru("PasswordFieldDemo");
-
-        type("userName", "howard");
-        type("password", "wrong-password");
-
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("userName", "howard");
-        // Verify that password fields do not render a non-blank password, even
-        // when it is known.
-        assertFieldValue("password", "");
-
-        assertTextPresent("[howard]");
-        assertTextPresent("[wrong-password]");
-
-        type("password", "tapestry");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("You have provided the correct user name and password.");
-    }
-
-    @Test
-    public void server_side_validation_for_textfield_and_textarea() throws Exception
-    {
-        clickThru("ValidForm");
-
-        clickAndWait(SUBMIT);
-        assertTextPresent("You must provide a value for Email.");
-        // is an overridden validation error message:
-        assertTextPresent("Please provide a detailed description of the incident.");
-
-        // Check on decorations via the default validation decorator:
-
-        assertAttribute("//label[1]/@class", "t-error");
-        assertAttribute("//label[2]/@class", "t-error");
-        assertAttribute("//input[@id='email']/@class", "t-error");
-        assertAttribute("//textarea[@id='message']/@class", "t-error");
-
-        type("email", "foo@bar.baz");
-        type("message", "Show me the money!");
-        type("hours", "foo");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("[false]");
-        assertTextPresent("You must provide an integer value for Hours.");
-
-        assertAttribute("//input[@id='hours']/@value", "foo");
-
-        type("hours", " 19 ");
-        click("//input[@id='urgent']");
-        clickAndWait(SUBMIT);
-
-        // Make sure the decoration went away.
-
-        // Sorry, not sure how to do that, since the attributes don't exist, we
-        // get xpath errors.
-
-        // assertText("//label[1]/@class", "");
-        // assertText("//label[2]/@class", "");
-        // assertText("//input[@id='email']/@class", "");
-        // assertText("//textarea[@id='message']/@class", "");
-
-        assertTextPresent("[foo@bar.baz]");
-        assertTextPresent("[Show me the money!]");
-        assertTextPresent("[true]");
-        assertTextPresent("[19]");
-    }
-
-    @Test
-    public void client_side_validation()
-    {
-        clickThru("Client Validation Demo");
-
-        // Used to ensure that the <script> tag was present, but that's hard to
-        // do with script combining enabled.
-
-        clickAndWait("link=Clear Data");
-
-        // Notice: click, not click and wait.
-
-        click(SUBMIT);
-
-        assertTextPresent("You must provide a value for First Name.");
-
-        type("firstName", "Howard");
-        type("lastName", "Lewis Ship");
-        type("birthYear", "1000");
-        type("password", "supersecret");
-
-        click(SUBMIT);
-
-        type("birthYear", "1966");
-        click("citizen");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Howard", "Lewis Ship", "1966", "U.S. Citizen");
-    }
-
-    @Test
-    public void cancel_button()
-    {
-        clickThru("Client Validation Demo");
-
-        // Used to ensure that the <script> tag was present, but that's hard to
-        // do with script combining enabled.
-
-        clickAndWait("link=Clear Data");
-
-        clickAndWait("//input[@value='Cancel']");
-
-        assertText("message", "Form was cancelled.");
-    }
-
-    @Test
-    public void radio_group_validator()
-    {
-        clickThru("RadioDemo", "reset");
-
-        // Verify that the "required" validator works.
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("You must provide a value for Department.");
-    }
-
-    @Test
-    public void regexp_validator()
-    {
-        clickThru("Regexp Demo");
-
-        String update = SUBMIT;
-
-        type("zipCode", "abc");
-
-        click(update); // but don't wait
-
-        waitForCondition("selenium.browserbot.getCurrentWindow().document.getElementById('zipCode:errorpopup')", "5000");
-
-        assertTextPresent("A zip code consists of five or nine digits, eg: 02134 or 90125-4472.");
-
-        type("zipCode", "12345");
-
-        clickAndWait(update);
-
-        assertTextPresent("Zip code: [12345]");
-
-        type("zipCode", "12345-9876");
-
-        clickAndWait(update);
-
-        assertTextPresent("Zip code: [12345-9876]");
-    }
-
-    @Test
-    public void basic_datefield()
-    {
-        clickThru("DateField Demo", "clear", "english");
-
-        type("birthday", "24 dec 1966");
-        type("asteroidImpact", "05/28/2046");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Birthday: [12/24/1966]");
-        assertTextPresent("Impact: [05/28/2046]");
-
-        assertFieldValue("birthday", "24 Dec 1966");
-        assertFieldValue("asteroidImpact", "5/28/2046");
-
-        clickAndWait("link=french");
-
-        click("birthday-trigger");
-
-        waitForCondition("selenium.browserbot.getCurrentWindow().$$('DIV.datePicker').first().isDeepVisible() == true",
-                PAGE_LOAD_TIMEOUT);
-
-        assertText("//A[@class='topLabel']", "1966 d\u00e9cembre");
-
-        clickAndWait("link=english");
-    }
-
-    // TAP5-1057
-    @Test
-    public void xss_datefield()
-    {
-        clickThru("DateField Demo", "clear", "english");
-
-        type("asteroidImpact", "<script>alert('T5 is great'); </script>");
-
-        click("id=asteroidImpact-trigger");
-
-        assertBubbleMessage("asteroidImpact", "Unparseable date: \"<script>alert('T5 is great'); </script>\"");
-    }
-
-    @Test
-    public void event_based_translate() throws Exception
-    {
-        clickThru("EventMethod Translator");
-
-        type("count", "123");
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Count: [123]");
-
-        type("count", "0");
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Count: [0]");
-
-        assertFieldValue("count", "zero");
-
-        type("count", "456");
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Count: [456]");
-
-        assertFieldValue("count", "456");
-
-        type("count", "ZERO");
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Count: [0]");
-
-        assertFieldValue("count", "zero");
-
-        // Try the server-side custom exception reporting.
-
-        type("count", "13");
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Event Handler Method Translate", "Thirteen is an unlucky number.");
-
-        type("count", "i");
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Event Handler Method Translate", "Rational numbers only, please.");
-    }
-
-    @Test
-    public void radio_button_and_group()
-    {
-        clickThru("RadioDemo");
-
-        String update = SUBMIT;
-
-        // in a loop ...
-        click("//label[.='Accounting']");
-        clickAndWait(update);
-        assertTextPresent("Selected department: ACCOUNTING");
-
-        click("//label[.='Sales And Marketing']");
-        clickAndWait(update);
-        assertTextPresent("Selected department: SALES_AND_MARKETING");
-
-        // not in a loop ...
-        click("//label[.='Temp']");
-        clickAndWait(update);
-        assertTextPresent("Selected position: TEMP");
-
-        click("//label[.='Lifer']");
-        clickAndWait(update);
-        assertTextPresent("Selected position: LIFER");
-    }
-
-    @Test
-    public void disabled_fields() throws Exception
-    {
-        clickThru("Disabled Fields");
-
-        String[] paths = new String[]
-        { "//input[@id='textfield']",
-
-        "//input[@id='passwordfield']",
-
-        "//textarea[@id='textarea']",
-
-        "//input[@id='checkbox']",
-
-        "//select[@id='select']",
-
-        "//input[@id='radio1']",
-
-        "//input[@id='radio2']",
-
-        "//input[@id='datefield']",
-
-        "//select[@id='palette-avail']",
-
-        "//button[@id='palette-select']",
-
-        "//button[@id='palette-deselect']",
-
-        "//select[@id='palette']",
-
-        "//input[@id='submit']" };
-
-        for (String path : paths)
-        {
-            String locator = String.format("%s/@disabled", path);
-
-            assertAttribute(locator, "disabled");
-        }
-    }
-
-    /**
-     * TAPESTRY-2056
-     */
-    @Test
-    public void null_field_strategy()
-    {
-        clickThru("Null Field Strategy Demo");
-
-        String locator = "//span[@id='value']";
-
-        assertText(locator, "");
-
-        assertAttribute("//input[@id='number']/@value", "0");
-
-        type("number", "");
-
-        clickAndWait(SUBMIT);
-
-        assertText(locator, "0");
-    }
-
-    /**
-     * TAPESTRY-1647
-     */
-    @Test
-    public void label_invokes_validation_decorator_at_correct_time()
-    {
-        clickThru("Override Validation Decorator");
-
-        // This is sub-optimal, as it doesn't esnure that the before/after field
-        // values really do wrap around
-        // the field (they do, but that's hard to prove!).
-
-        // Along the way we are also testing:
-        // - primitive types are automatically required
-        // - AbstractTextField.isRequired() and the logic inside
-        // ComponentFieldValidator.isRequired()
-
-        assertSourcePresent(
-                "[Before label for Value]<label for=\"value\">Value</label>[After label for Value]",
-                "[Before field Value]",
-                "[After field Value (optional)]",
-                "[Before label for Required Value]<label for=\"requiredValue\">Required Value</label>[After label for Required Value]",
-                "[Before field Required Value]", "[After field Required Value (required)]");
-    }
-
-    /**
-     * TAPESTRY-2085
-     */
-    @Test
-    public void wrapper_types_with_text_field()
-    {
-        clickThru("TextField Wrapper Types", "clear");
-
-        assertFieldValue("count", "");
-        assertText("value", "null");
-
-        type("count", "0");
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("count", "0");
-        assertText("value", "0");
-
-        type("count", "1");
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("count", "1");
-        assertText("value", "1");
-
-        clickAndWait("link=clear");
-
-        assertFieldValue("count", "");
-        assertText("value", "null");
-    }
-
-    @Test
-    public void submit_with_context()
-    {
-        clickThru("Submit With Context");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Result: 10.14159");
-    }
-
-    /**
-     * TAPESTRY-2563
-     */
-    @Test
-    public void form_action_via_get()
-    {
-        open(getBaseURL() + "validform.form", "true");
-
-        assertTextPresent("Forms require that the request method be POST and that the t:formdata query parameter have values.");
-    }
-
-    /**
-     * TAPESTRY-2352
-     */
-    @Test
-    public void client_field_format_validation()
-    {
-        clickThru("Client Format Validation");
-
-        type("amount", "abc");
-        type("quantity", "abc");
-
-        click(SUBMIT);
-
-        waitForElementToAppear("amount:errorpopup");
-        waitForElementToAppear("quantity:errorpopup");
-
-        assertText("//div[@id='amount:errorpopup']/span", "You must provide a numeric value for Amount.");
-        assertText("//div[@id='quantity:errorpopup']/span", "Provide quantity as a number.");
-    }
-
-    /**
-     * TAPESTRY-2438
-     */
-    @Test
-    public void validation_exception_thrown_from_validate_form_event_handler()
-    {
-        clickThru("ValidationForm ValidationException Demo");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("From event handler method.");
-
-        assertText("event", "failure");
-    }
-
-    @Test
-    public void form_field_outside_form()
-    {
-        clickThru("Form Field Outside Form");
-
-        assertTextPresent(
-                "org.apache.tapestry5.internal.services.RenderQueueException",
-                "Render queue error in SetupRender[FormFieldOutsideForm:textfield]: The Textfield component must be enclosed by a Form component.",
-                "context:FormFieldOutsideForm.tml, line 5");
-    }
-
-    /**
-     * TAP5-281
-     */
-    @Test
-    public void nested_form_check()
-    {
-        clickThru("Nested Form Demo");
-
-        assertTextPresent("Form components may not be placed inside other Form components.");
-    }
-
-    /**
-     * TAP5-87
-     */
-    @Test
-    public void blank_password_does_not_update()
-    {
-        clickThru("Blank Password Demo");
-
-        type("password", "secret");
-
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("password", "");
-
-        assertText("visiblepassword", "secret");
-
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("password", "");
-
-        assertText("visiblepassword", "secret");
-    }
-
-    /**
-     * TAP5-228: And to think I almost blew off the integration tests!
-     */
-    @Test
-    public void per_form_validation_messages_and_constraints()
-    {
-        clickThru("Per-Form Validation Messages");
-
-        clickAndWait("//input[@type='submit' and @value='Login']");
-
-        assertTextPresent("Enter the unique user id you provided when you registerred.");
-
-        type("userId", "aaa");
-
-        clickAndWait("//input[@type='submit' and @value='Login']");
-
-        assertTextPresent("You must provide at least 10 characters for User Id.");
-
-        clickAndWait("//input[@type='submit' and @value='Register']");
-
-        assertTextPresent("Enter a unique user id, such as your initials.");
-
-        type("userId_0", "aaa");
-
-        clickAndWait("//input[@type='submit' and @value='Register']");
-
-        assertTextPresent("You must provide at least 20 characters for User Id.");
-    }
-
-    /**
-     * TAP5-719
-     */
-    @Test
-    public void link_submit_without_validator()
-    {
-        clickThru("LinkSubmit Without Validator Demo");
-
-        type("searchField", "Anders Haraldsson");
-
-        clickAndWait("//a[@id='searchLink']");
-
-        assertTextPresent("Result: Anders Haraldsson not found!");
-    }
-
-    /**
-     * TAP5-211
-     */
-    @Test
-    public void client_side_numeric_validation()
-    {
-        clickThru("Client-Side Numeric Validation", "reset");
-
-        assertText("outputLongValue", "1000");
-        assertText("outputDoubleValue", "1234.67");
-
-        assertFieldValue("longValue", "1000");
-        assertFieldValue("doubleValue", "1,234.67");
-
-        type("longValue", "2,000 ");
-        type("doubleValue", " -456,789.12");
-
-        clickAndWait(SUBMIT);
-
-        assertText("outputLongValue", "2000");
-        assertText("outputDoubleValue", "-456789.12");
-
-        assertFieldValue("longValue", "2000");
-        assertFieldValue("doubleValue", "-456,789.12");
-
-        clickAndWait("link=switch to German");
-
-        assertText("outputLongValue", "2000");
-        assertText("outputDoubleValue", "-456789.12");
-
-        assertFieldValue("longValue", "2000");
-        assertFieldValue("doubleValue", "-456.789,12");
-
-        type("longValue", "3.000");
-        type("doubleValue", "5.444.333,22");
-
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("longValue", "3000");
-        assertFieldValue("doubleValue", "5.444.333,22");
-
-        assertText("outputLongValue", "3000");
-        assertText("outputDoubleValue", "5444333.22");
-
-        clickAndWait("link=reset");
-
-        type("longValue", "4000.");
-        click(SUBMIT);
-
-        assertBubbleMessage("longValue", "You must provide an integer value for Long Value.");
-
-        type("doubleValue", "abc");
-
-        click(SUBMIT);
-
-        assertBubbleMessage("doubleValue", "You must provide a numeric value for Double Value.");
-    }
-
-    @Test
-    public void client_validation_for_numeric_fields_that_are_not_required()
-    {
-        clickThru("Form Zone Demo");
-
-        type("longValue", "alpha");
-
-        click(SUBMIT);
-
-        waitForElementToAppear("longValue:errorpopup");
-
-        assertText("//div[@id='longValue:errorpopup']/span", "You must provide an integer value for Long Value.");
-
-        type("longValue", "37");
-
-        click(SUBMIT);
-
-        waitForElementToAppear("outputvalue");
-
-        assertText("outputvalue", "37");
-    }
-
-    @Test
-    public void hidden_field()
-    {
-        clickThru("Hidden Demo", "setup");
-
-        clickAndWait(SUBMIT);
-
-        assertText("stored", "12345");
-    }
-
-    @Test
-    public void validation_constraints_from_messages()
-    {
-        clickThru("Validation Constraints From Messages");
-
-        click(SUBMIT);
-
-        assertBubbleMessage("name", "You must provide a value for Name.");
-        assertBubbleMessage("age", "You must provide a value for Age.");
-
-        type("name", "behemoth");
-        type("age", "0");
-        select("type", "label=Snake");
-
-        click(SUBMIT);
-        assertBubbleMessage("age", "Age requires a value of at least 1.");
-
-        type("age", "121");
-        click(SUBMIT);
-        assertBubbleMessage("age", "Age requires a value no larger than 120.");
-
-        type("age", "5");
-        clickAndWait(SUBMIT);
-    }
-
-    /**
-     * TAP5-157
-     */
-    @Test
-    public void link_submit_component()
-    {
-        clickThru("LinkSubmit Demo");
-
-        // Wait a moment for the page to initialize.
-
-        waitForElementToAppear("fred");
-
-        click("//a[@id='fred']");
-
-        waitForElementToAppear("name:errorpopup");
-
-        assertTextPresent("You must provide a value for Name.");
-
-        type("name", "Wilma");
-
-        clickAndWait("link=Fred");
-
-        assertText("name-value", "Wilma");
-        assertText("last-clicked", "Fred");
-        assertTextPresent("Result: 10.14159");
-
-        type("name", "Betty");
-        clickAndWait("link=Barney");
-
-        assertText("name-value", "Betty");
-        assertText("last-clicked", "Barney");
-    }
-
-    @Test
-    public void calendar_field_inside_bean_editor()
-    {
-        clickThru("BeanEditor / Calendar Demo", "clear");
-
-        type("calendar", "04/06/1978");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Apr 6, 1978");
-
-        // TAP5-1043
-        clickAndWait("link=clear");
-    }
-
-    @Test
-    public void image_submit_triggers_selected_event()
-    {
-        clickThru("Submit with an Image Demo");
-
-        type("value", "barney gumble");
-
-        clickAndWait("//input[@type='image']");
-
-        assertText("outputvalue", "barney gumble");
-
-        assertText("eventfired", "true");
-    }
-
-    /**
-     * Tests for forms and form submissions and basic form control components.
-     * also tests a few other things, such as
-     * computed default bindings and invisible instrumentation.
-     */
-    @Test
-    public void simple_form()
-    {
-        clickThru("SimpleForm");
-
-        assertText("//label[@for='disabled']", "Disabled");
-
-        // This demonstrates TAPESTRY-1642:
-        assertText("//label[@for='email']", "User Email");
-
-        assertText("//label[@for='message']", "Incident Message");
-        assertText("//label[@for='operatingSystem']", "Operating System");
-        assertText("//label[@for='department']", "Department");
-        assertText("//label[@for='urgent']", "Urgent Processing Requested");
-
-        assertFieldValue("email", "");
-        assertFieldValue("message", "");
-        assertFieldValue("operatingSystem", "osx");
-        assertFieldValue("department", "");
-        assertFieldValue("urgent", "on");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("department: []");
-
-        type("email", "foo@bar.baz");
-        type("message", "Message for you, sir!");
-        select("operatingSystem", "Windows NT");
-        select("department", "R&D");
-        click("urgent");
-
-        clickAndWait(SUBMIT);
-
-        assertFieldValue("email", "foo@bar.baz");
-        assertFieldValue("message", "Message for you, sir!");
-        assertFieldValue("urgent", "off");
-
-        // Tried to use "email:" and "exact:email:" but Selenium 0.8.1 doesn't
-        // seem to accept that.
-
-        assertTextPresent("[foo@bar.baz]", "[Message for you, sir!]", "[false]", "[winnt]", "[RESEARCH_AND_DESIGN]");
-
-        // Haven't figured out how to get selenium to check that fields are
-        // disabled.
-    }
-
-    /**
-     * TAP5-915
-     */
-    @Test
-    public void override_datefield_message_catalog()
-    {
-        open(getBaseURL() + "overridedatefieldmessagecatalogdemo");
-
-        type("birthday", "aaaaa");
-
-        clickAndWait("//input[@type='submit' and @value='Go']");
-
-        assertTextPresent("The input 'aaaaa' is not a valid date");
-    }
-
-    /**
-     * TAP5-52.
-     */
-    @Test
-    public void single_error_message()
-    {
-        open(getBaseURL() + "singleerrordemo");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("You must provide a value for Username");
-        assertTextPresent("You must provide a value for Password");
-
-        type("username", "Igor");
-
-        clickAndWait(SUBMIT);
-
-        assertFalse(isTextPresent("You must provide a value for Username"));
-        assertTextPresent("You must provide a value for Password");
-
-        type("password", "secret");
-
-        clickAndWait(SUBMIT);
-
-        assertFalse(isTextPresent("You must provide a value for Username"));
-        assertFalse(isTextPresent("You must provide a value for Password"));
-    }
-
-    /** TAP5-1024 */
-    @Test
-    public void use_of_cancel_mode_on_submit_button()
-    {
-        clickThru("Cancel Demo");
-
-        clickAndWait("//input[@type='submit']");
-
-        assertText("message", "onSelectedFromCancel() invoked.");
-    }
-
-    @Test
-    public void use_of_cancel_mode_with_submitlink()
-    {
-        clickThru("Cancel Demo");
-
-        clickAndWait("//a[@id='cancelLink']");
-
-        assertText("message", "onSelectedFromCancelLink() invoked.");
-    }
-    
-    @Test
-    public void validation_decoration_for_select() throws Exception
-    {
-        clickThru("Select Demo");
-
-        clickAndWait(SUBMIT);
-        assertTextPresent("You must provide a value for Color.");
-
-        // Check on decorations via the default validation decorator:
-
-        assertAttribute("//label[@for='color']/@class", "t-error");
-        assertAttribute("//select[@id='color']/@class", "t-error");
-        assertAttribute("//img[@id='color_icon']/@class", "t-error-icon");
-
-        select("color", "label=Green");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Selected color: Green");
-    }
-    
-    /**
-     * TAP5-1098.
-     */
-    @Test
-    public void create_select_model_from_objects_and_property_name() throws Exception
-    {
-        clickThru("SelectModel from objects and property name");
-
-        select("track", "label=The Calling");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Selected track: The Calling, Synaesthetic");
-    }
-    
-    @Test
-    public void validation_macro() throws Exception
-    {
-        clickThru("Validator Macro Demo");
-
-        clickAndWait(SUBMIT);
-        
-        assertTextPresent("You must provide a value for Password.");
-        assertTextPresent("You must provide a value for Password2.");
-
-        type("password", "abcdefg");
-        type("password2", "x");
-
-        clickAndWait(SUBMIT);
-        
-        assertTextPresent("You may provide at most 3 characters for Password.");
-        assertTextPresent("You must provide at least 2 characters for Password2.");
-        
-        type("password", "a");
-        type("password2", "wxyz");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("You must provide at least 2 characters for Password.");
-        assertTextPresent("You may provide at most 3 characters for Password2.");
-        
-        type("password", "ab");
-        type("password2", "xyz");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Password: ab");
-        assertTextPresent("Password2: xyz");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/GeneralComponentTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/GeneralComponentTests.java
deleted file mode 100644
index 52b4a53..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/GeneralComponentTests.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-public class GeneralComponentTests extends TapestryCoreTestCase
-{
-    @Test
-    public void unless_component()
-    {
-        clickThru("Unless Demo");
-
-        assertText("//p[@id='false']", "false is rendered");
-
-        assertText("//p[@id='true']", "");
-    }
-
-    /**
-     * TAPESTRY-2044
-     */
-    @Test
-    public void action_links_on_non_active_page()
-    {
-        clickThru("Action Links off of Active Page");
-
-        String contextSpan = "//span[@id='context']";
-
-        assertText(contextSpan, "0");
-
-        clickAndWait("link=3");
-
-        assertText(contextSpan, "3");
-
-        clickAndWait("link=refresh");
-
-        assertText(contextSpan, "3");
-
-        clickAndWait("link=1");
-
-        assertText(contextSpan, "1");
-
-        clickAndWait("link=refresh");
-
-        assertText(contextSpan, "1");
-    }
-
-    /**
-     * TAPESTRY-2333
-     */
-    @Test
-    public void action_links_on_custom_url()
-    {
-        open(getBaseURL() + "nested/actiondemo/");
-
-        clickAndWait("link=2");
-
-        assertTextPresent("Number: 2");
-    }
-    
-    /**
-     * TAP5-1075
-     */
-    @Test
-    public void report_location_of_unavailable_component_in_error()
-    {
-        clickThru("Report Location of Unavailable Component");
-
-        assertText("//td[@class='t-location-content t-location-current']", "<t:unavailablecomponent/>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/GridTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/GridTests.java
deleted file mode 100644
index e3020a0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/GridTests.java
+++ /dev/null
@@ -1,310 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests for the {@link Grid} component.
- */
-public class GridTests extends TapestryCoreTestCase
-{
-    /**
-     * Basic Grid rendering, with a column render override. Also tests sorting.
-     */
-    @Test
-    public void basic_grid()
-    {
-        clickThru("Grid Demo");
-
-        // "Sort Rating" via the header cell override (TAPESTRY-2081)
-
-        assertTextSeries("//th[%d]", 1, "Title", "Album", "Artist", "Genre", "Play Count", "Sort Rating");
-
-        // Strange: I thought tr[1] was the header row ???
-
-        assertTextSeries("//tr[1]/td[%d]", 1, "Bug Juice", "Late Lounge (2 of 2)", "45 Dip", "Electronica", "4", "-");
-
-        // Here were checking that the page splits are correct
-
-        clickAndWait("link=3");
-
-        // Last on page 3:
-        assertText("//tr[25]/td[1]", "Blood Red River");
-
-        clickAndWait("link=4");
-        assertText("//tr[1]/td[1]", "Devil Song");
-
-        clickAndWait("link=7");
-        clickAndWait("link=10");
-
-        // Here's one with a customized rating cell
-
-        assertTextSeries("//tr[25]/td[%d]", 1, "Smoked", "London (Original Motion Picture Soundtrack)",
-                "The Crystal Method", "Soundtrack", "30", "****");
-
-        clickAndWait("link=69");
-
-        assertText("//tr[22]/td[1]", "radioioAmbient");
-
-        // Sort ascending (and we're on the last page, with the highest
-        // ratings).
-
-        clickAndWait("link=Sort Rating");
-
-        assertTextSeries("//tr[22]/td[%d]", 1, "Mona Lisa Overdrive", "Labyrinth", "Juno Reactor", "Dance", "31",
-                "*****");
-
-        // Toggle to sort descending
-
-        clickAndWait("link=Sort Rating");
-
-        assertTextSeries("//tr[1]/td[%d]", 1, "Hey Blondie", "Out from Out Where");
-
-        clickAndWait("link=Title");
-
-        assertAttributeValueEndsWith("//img[@class='t-sort-icon']/@src", "/sort-asc.png");
-
-        assertAttribute("//img[@class='t-sort-icon']/@alt", "[Asc]");
-
-        clickAndWait("link=1");
-
-        assertText("//tr[1]/td[1]", "(untitled hidden track)");
-
-        clickAndWait("link=Title");
-
-        assertAttributeValueEndsWith("//img[@class='t-sort-icon']/@src", "/sort-desc.png");
-        assertAttribute("//img[@class='t-sort-icon']/@alt", "[Desc]");
-
-        clickAndWait("link=reset the Grid");
-
-        // Back to where we started.
-
-        assertTextSeries("//tr[1]/td[%d]", 1, "Bug Juice", "Late Lounge (2 of 2)", "45 Dip", "Electronica", "4", "-");
-    }
-
-    private void assertAttributeValueEndsWith(String attributeLocator, String suffix)
-    {
-        String value = getAttribute(attributeLocator);
-
-        assertTrue(value.endsWith(suffix), String.format("Value for attribute %s (%s) should end with '%s'.", 
-                attributeLocator, value, suffix));
-    }
-
-    @Test
-    public void grid_remove_reorder()
-    {
-        clickThru("Grid Remove/Reorder Demo");
-
-        assertTextSeries("//th[%d]", 1, "Rating", "Title", "Album", "Artist", "Genre");
-    }
-
-    @Test
-    public void grid_set() throws Exception
-    {
-        clickThru("Grid Set Demo");
-
-        assertFalse(isTextPresent("Exception"));
-
-        // Also check for TAPESTRY-2228
-
-        assertAttribute("//table/@informal", "supported");
-    }
-
-    @Test
-    public void grid_from_explicit_interface_model()
-    {
-        clickThru("SimpleTrack Grid Demo");
-
-        assertTextSeries("//th[%d]", 1, "Title", "Album", "Rating");
-
-        assertTextSeries("//tr[1]/td[%d]", 1, "Bug Juice", "Late Lounge (2 of 2)", "-");
-    }
-
-    @Test
-    public void grid_enum_display()
-    {
-        clickThru("Grid Enum Demo", "reset");
-
-        assertTextSeries("//tr[1]/td[%d]", 1, "End World Hunger", "Medium");
-        assertTextSeries("//tr[2]/td[%d]", 1, "Develop Faster-Than-Light Travel", "Ultra Important");
-        assertTextSeries("//tr[3]/td[%d]", 1, "Cure Common Cold", "Low");
-    }
-
-    @Test
-    public void null_grid() throws Exception
-    {
-        clickThru("Null Grid");
-
-        assertTextPresent("There is no data to display.");
-    }
-
-    @Test
-    public void grid_inside_form()
-    {
-        clickThru("Grid Form Demo", "reset", "2");
-
-        // The first input field is the form's hidden field.
-
-        assertFieldValue("title", "ToDo # 6");
-        assertFieldValueSeries("title_%d", 0, "ToDo # 7", "ToDo # 8", "ToDo # 9", "ToDo # 10");
-
-        type("title_0", "Cure Cancer");
-        select("urgency_0", "Top Priority");
-
-        type("title_1", "Pay Phone Bill");
-        select("urgency_1", "Low");
-
-        clickAndWait(SUBMIT);
-
-        assertFieldValueSeries("title_%d", 0, "Cure Cancer", "Pay Phone Bill");
-        assertFieldValueSeries("urgency_%d", 0, "HIGH", "LOW");
-    }
-
-    @Test
-    public void grid_inside_form_with_encoder()
-    {
-        clickThru("Grid Form Encoder Demo", "reset", "2");
-
-        // The first input field is the form's hidden field.
-
-        // Note the difference: same data sorted differently (there's a default
-        // sort).
-
-        assertFieldValue("title", "ToDo # 14");
-        assertFieldValueSeries("title_%d", 0, "ToDo # 15", "ToDo # 16", "ToDo # 17", "ToDo # 18");
-
-        type("title_0", "Cure Cancer");
-        select("urgency_0", "Top Priority");
-
-        type("title_1", "Pay Phone Bill");
-        select("urgency_1", "Low");
-
-        clickAndWait(SUBMIT);
-
-        // Because of the sort, the updated items shift to page #1
-
-        clickAndWait("link=1");
-
-        assertFieldValue("title", "Cure Cancer");
-        assertFieldValue("title_0", "Pay Phone Bill");
-
-        assertFieldValue("urgency", "HIGH");
-        assertFieldValue("urgency_0", "LOW");
-    }
-
-    /**
-     * TAPESTRY-2021
-     */
-    @Test
-    public void lean_grid()
-    {
-        clickThru("Lean Grid Demo");
-
-        assertTextSeries("//th[%d]", 1, "Title", "Album", "Artist", "Genre", "Play Count", "Rating");
-
-        // Selenium makes it pretty hard to check for a missing class.
-
-        // assertText("//th[1]/@class", "");
-    }
-
-    /**
-     * TAPESTRY-1310
-     */
-    @Test
-    public void grid_row_and_column_indexes()
-    {
-        clickThru("Lean Grid Demo", "2");
-
-        // Use page 2 to ensure that the row index is the row in the Grid, not
-        // the row index of the data
-
-        assertText("//th[7]", "Indexes (6)");
-        assertText("//tr[1]/td[7]", "0,6");
-        assertText("//tr[2]/td[7]", "1,6");
-    }
-
-    /**
-     * TAPESTRY-1416
-     */
-
-    @Test
-    public void adding_new_columns_to_grid_programattically()
-    {
-        clickThru("Added Grid Columns Demo", "Title Length");
-
-        assertTextSeries("//th[%d]", 1, "Title", "View", "Title Length", "Dummy");
-
-        // The rendered &nbsp; becomes just a blank string.
-        assertTextSeries("//tr[1]/td[%d]", 1, "7", "view", "1", "");
-    }
-
-    @Test
-    public void inplace_grid()
-    {
-        clickThru("In-Place Grid Demo");
-
-        String timestamp = getText("lastupdate");
-
-        click("link=2");
-        sleep(100);
-        click("link=Album");
-        sleep(100);
-
-        assertEquals(getText("lastupdate"), timestamp,
-                "Timestamp should not have changed because updates are in-place.");
-    }
-
-    /**
-     * TAPESTRY-2502
-     */
-    @Test
-    public void short_grid()
-    {
-        clickThru("Short Grid");
-
-        for (int i = 0; i < 6; i++)
-        {
-            String locator = String.format("grid.%d.0", i + 1);
-            String expected = String.format("Index #%d", i);
-
-            assertEquals(getTable(locator), expected);
-        }
-
-        String count = getEval("window.document.getElementById('grid').rows.length");
-
-        assertEquals(count, "7", "Expected seven rows: the header and six data rows.");
-    }
-
-    /**
-     * TAPESTRY-1901
-     */
-    @Test
-    public void delete_rows_from_grid()
-    {
-        clickThru("Delete From Grid", "setup the database", "2");
-
-        for (int i = 6; i <= 10; i++)
-            clickAndWait("link=ToDo #" + i);
-
-        // A rather clumsy way to ensure we're back on the first page.
-
-        for (int i = 1; i <= 5; i++)
-            assertTextPresent("ToDo #" + i);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/LoopTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/LoopTests.java
deleted file mode 100644
index d42976b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/LoopTests.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-public class LoopTests extends TapestryCoreTestCase
-{
-    /**
-     * TAP5-205
-     */
-    @Test
-    public void handling_of_empty_loop()
-    {
-        clickThru("Empty Loop Demo");
-
-        assertText("first", "");
-        assertText("second", "Source is null.");
-        assertText("third", "Source is the empty list.");
-    }
-
-    @Test
-    public void encoded_loop_inside_a_form()
-    {
-        test_loop_inside_form("ToDo List");
-    }
-
-    @Test
-    public void volatile_loop_inside_a_form()
-    {
-        test_loop_inside_form("ToDo List (Volatile)");
-    }
-
-    private void test_loop_inside_form(String linkLabel)
-    {
-        clickThru(linkLabel);
-
-        clickAndWait("link=reset the database");
-
-        assertFieldValue("title", "End World Hunger");
-        assertFieldValue("title_0", "Develop Faster-Than-Light Travel");
-        assertFieldValue("title_1", "Cure Common Cold");
-
-        type("title", "End World Hunger - today");
-        type("title_0", "Develop Faster-Than-Light Travel - immediately");
-        type("title_1", "Cure Common Cold - post haste");
-
-        clickAndWait("//input[@value='Update ToDos']");
-
-        assertFieldValue("title", "End World Hunger - today");
-        assertFieldValue("title_0", "Develop Faster-Than-Light Travel - immediately");
-        assertFieldValue("title_1", "Cure Common Cold - post haste");
-
-        clickAndWait("//input[@value='Add new ToDo']");
-
-        type("title_2", "Conquer World");
-
-        clickAndWait("//input[@value='Update ToDos']");
-
-        assertFieldValue("title", "End World Hunger - today");
-        assertFieldValue("title_0", "Develop Faster-Than-Light Travel - immediately");
-        assertFieldValue("title_1", "Cure Common Cold - post haste");
-        assertFieldValue("title_2", "Conquer World");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/MixinTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/MixinTests.java
deleted file mode 100644
index 7428bf5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/MixinTests.java
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-public class MixinTests extends TapestryCoreTestCase
-{
-    @Test
-    public void render_notification_mixin()
-    {
-        clickThru("RenderNotification Demo");
-
-        assertTextSeries("//ul[@id='list']//li[%d]", 1, "before item render", "item body in template",
-                "after item render");
-    }
-
-    @Test
-    public void renderclientid_mixin()
-    {
-        clickThru("RenderClientId Mixin");
-
-        assertText("divwithid", "Div Content");
-    }
-
-    @Test
-    public void mixin_ordering()
-    {
-        // echo => <original>-before, temporaryvaluefromechovaluemixin,
-        // <original>-after
-        // echo2 => echo2-<original>-before, "3", echo2-<original>-after
-        // echo3 => echo3-<original>-before, "world", echo3-<original>-after
-        // order1: echo, echo2, echo3
-        clickThru("Mixin Ordering Demo");
-
-        assertMixinOrder(1, 0, 1, 2, 3, true);
-        // order2: echo3, echo2, echo
-        assertMixinOrder(2, 2, 3, 0, 1, true);
-        // order3: echo2, echo3, echo
-        assertMixinOrder(3, 3, 0, 2, 1, true);
-        // order4: echo3, echo, echo2
-        assertMixinOrder(4, 3, 1, 0, 2, true);
-        // order5: echo2, echo, echo3
-        assertMixinOrder(5, 2, 0, 1, 3, true);
-        // order6: echo, echo3, echo2, TextOnlyOnDisabled
-        assertMixinOrder(6, 0, 3, 1, 2, false);
-        // make sure mixin after and mixin before constraints don't interfere...
-        // order7: echo, echo2 <corecomponent> echoafter2, echoafter
-        assertMixinOrder(7, 0, 1, -1, 2, true);
-        assertText("order7_before_but_after",
-                "afterrender_for_mixinafter_isreally_justbefore_corecomponent_afterrender-before");
-        assertText("order7_after_but_before",
-                "afterrender_for_mixinafter_isreally_justbefore_corecomponent_afterrender-after");
-        // echoafter2 should have for its value at the point it renders
-        // the value that echo2 sets, since the core component isn't changing
-        // its value.
-        assertText("order7_before_but_after2", "3-before");
-        assertText("order7_after_but_before2", "3-after");
-    }
-
-    private void assertMixinOrder(int orderNum, int echo1From, int echo2From, int echo3From, int fieldFrom,
-            boolean isField)
-    {
-        assertEchoMixins("order" + orderNum, "batman", echo1From, echo2From, echo3From, fieldFrom, isField);
-    }
-
-    /**
-     * asserts that the "echo value" mixins are properly functioning (ie
-     * 
-     * @BindParameter, and mixin ordering).
-     *                 each integer value specifies the echo mixin number (echovalue => 1,
-     *                 echovalue2 => 2, echovalue3 => 3; 0 is the original value)
-     *                 from which the specified echo mixin is expected to "receive" its value.
-     *                 So if echo1From is 2, then the "original value"
-     *                 printed by echo1 is expected to be the value set by echo2. If a given
-     *                 "from" is < 0, checking the corresponding mixin values is disabled.
-     */
-
-    private void assertEchoMixins(String fieldName, String originalValue, int echo1From, int echo2From, int echo3From,
-            int fieldFrom, boolean isField)
-    {
-        String[] vals =
-        { originalValue, "temporaryvaluefromechovaluemixin", "3", "world" };
-        String before = fieldName + "_before";
-        String after = fieldName + "_after";
-        if (echo1From > -1)
-        {
-            assertText(before, vals[echo1From] + "-before");
-            assertText(after, vals[echo1From] + "-after");
-        }
-        if (echo2From > -1)
-        {
-            assertText(before + "2", "echo2-" + vals[echo2From] + "-before");
-            assertText(after + "2", "echo2-" + vals[echo2From] + "-after");
-        }
-        if (echo3From > -1)
-        {
-            assertText(before + "3", "echo3-" + vals[echo3From] + "-before");
-            assertText(after + "3", "echo3-" + vals[echo3From] + "-after");
-        }
-        if (isField)
-            assertFieldValue(fieldName, vals[fieldFrom]);
-        else
-            assertText(fieldName, vals[fieldFrom]);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/PaletteTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/PaletteTests.java
deleted file mode 100644
index 97b7f6f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/PaletteTests.java
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.components.Palette;
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests for the {@link Palette} component.
- */
-public class PaletteTests extends TapestryCoreTestCase
-{
-    @Test
-    public void palette_component()
-    {
-        clickThru("Palette Demo", "reset");
-
-        assertText("//div[@class='t-palette-available']/div[@class='t-palette-title']",
-                "Languages Offered");
-        assertText("//div[@class='t-palette-selected']/div[@class='t-palette-title']",
-                "Selected Languages");
-
-        addSelection("languages-avail", "label=Haskell");
-        addSelection("languages-avail", "label=Javascript");
-        click("languages-select");
-
-        clickAndWait(SUBMIT);
-        assertTextPresent("Selected Languages: [HASKELL, JAVASCRIPT]");
-
-        addSelection("languages", "label=Javascript");
-        click("languages-deselect");
-
-        addSelection("languages-avail", "label=Perl");
-        removeSelection("languages-avail", "label=Javascript");
-        addSelection("languages-avail", "label=Erlang");
-        addSelection("languages-avail", "label=Java");
-        addSelection("languages-avail", "label=Lisp");
-        addSelection("languages-avail", "label=Ml");
-        addSelection("languages-avail", "label=Python");
-        addSelection("languages-avail", "label=Ruby");
-
-        click("languages-select");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("[ERLANG, HASKELL, JAVA, LISP, ML, PERL, PYTHON, RUBY]");
-
-        check("reorder");
-        clickAndWait(SUBMIT);
-
-        assertText("//div[@class='t-palette-selected']/div[@class='t-palette-title']",
-                "Selected / Ranked Languages");
-
-        addSelection("languages", "label=Ruby");
-
-        for (int i = 0; i < 6; i++)
-            click("languages-up");
-
-        removeSelection("languages", "label=Ruby");
-        addSelection("languages", "label=Perl");
-
-        click("languages-down");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("[ERLANG, RUBY, HASKELL, JAVA, LISP, ML, PYTHON, PERL]");
-    }
-
-    /**
-     * TAP5-298
-     */
-    @Test
-    public void palette_component_disabled_options()
-    {
-        clickThru("Palette Demo", "reset");
-
-        /*
-         * force of the options to be disabled rather than creating the model
-         * with it disabled in the page.
-         * it is possible to get into this state by creating a model with
-         * disabled options.
-         */
-        getEval("this.browserbot.findElement('//select[@id=\"languages-avail\"]/option[1]').disabled = 'disabled';");
-
-        // causes an error in the js console but does not throw an exception
-        // here. optimally, this would make the test case fail.
-        doubleClick("//select[@id=\"languages-avail\"]/option[1]");
-    }
-
-    @Test
-    public void palette_component_client_validation()
-    {
-        clickThru("Palette Demo", "reset");
-
-        click(SUBMIT);
-
-        assertBubbleMessage("languages", "You must provide a value for Languages.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/RequestParameterTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/RequestParameterTests.java
deleted file mode 100644
index cbcd9e5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/RequestParameterTests.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-public class RequestParameterTests extends TapestryCoreTestCase
-{
-    @Test
-    public void successful_use_of_query_parameter_annotation()
-    {
-        clickThru("RequestParameter Annotation Demo", "Working Link");
-
-        assertText("id=current", "97");
-    }
-
-    @Test
-    public void null_value_when_not_allowed()
-    {
-        clickThru("RequestParameter Annotation Demo", "Null Link");
-
-        assertTextPresent(
-                "Unable process query parameter 'gnip' as parameter #1 of event handler method void onFrob(int) (in class org.apache.tapestry5.integration.app1.pages.RequestParameterDemo)",
-                "The value for query parameter 'gnip' was blank, but a non-blank value is needed.");
-    }
-
-    @Test
-    public void null_for_primitive_when_allowed()
-    {
-        clickThru("RequestParameter Annotation Demo", "Null Allowed Link");
-
-        assertTextPresent(
-                "Unable process query parameter 'gnip' as parameter #1 of event handler method void onFrobNullAllowed(int) (in class org.apache.tapestry5.integration.app1.pages.RequestParameterDemo)",
-                "Query parameter 'gnip' evaluates to null, but the event method parameter is type int, a primitive.");
-    }
-
-    @Test
-    public void type_mismatch_for_method_parameter()
-    {
-        clickThru("RequestParameter Annotation Demo", "Broken Link");
-
-        assertTextPresent(
-                "Unable process query parameter 'gnip' as parameter #1 of event handler method void onFrob(int) (in class org.apache.tapestry5.integration.app1.pages.RequestParameterDemo)",
-                "Coercion of frodo to type java.lang.Integer");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/WrongPackageForBaseClass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/WrongPackageForBaseClass.java
deleted file mode 100644
index 3bbdbc4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/WrongPackageForBaseClass.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-/**
- * Used in a test for TAPESTRY-1934; base classes should be in the .base package.
- */
-public class WrongPackageForBaseClass
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java
deleted file mode 100644
index ff845a0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/ZoneTests.java
+++ /dev/null
@@ -1,264 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1;
-
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests related to the {@link Zone} component.
- */
-public class ZoneTests extends TapestryCoreTestCase
-{
-    /**
-     * TAP5-138
-     */
-    @Test
-    public void select_zone()
-    {
-        clickThru("Select Zone Demo");
-
-        select("carMaker", "Bmw");
-
-        waitForElementToAppear("carModelContainer");
-
-        click(SUBMIT);
-
-        String condition = String.format("window.$$(\"%s\")", "t-error-popup");
-
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-
-        assertText(String.format("//div[@class='%s']/span", "t-error-popup"), "You must provide a value for Car Model.");
-
-        String selectLocator = "//div[@id='modelZone']//select";
-
-        select(selectLocator, "7 Series");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Car Maker: BMW");
-
-        assertTextPresent("Car Model: 7 Series");
-
-        select("carMaker", "Mercedes");
-
-        waitForElementToAppear("carModelContainer");
-
-        select(selectLocator, "E-Class");
-
-        clickAndWait(SUBMIT);
-
-        assertTextPresent("Car Maker: MERCEDES");
-
-        assertTextPresent("Car Model: E-Class");
-    }
-
-    @Test
-    public void zone_updates()
-    {
-        clickThru("Zone Demo");
-
-        assertTextPresent("No name has been selected.");
-
-        // Hate doing this, but selecting by the text isn't working, perhaps
-        // because of the
-        // HTML entities.
-        click("select_0");
-
-        // And that's as far as we can go currently, because
-        // of limitations in Selenium 0.8.3 and bugs in Selenium 0.9.2.
-
-        // assertTextPresent("Selected: Mr. &lt;Roboto&gt;");
-
-        click("link=Direct JSON response");
-    }
-
-    /**
-     * TAP5-187
-     */
-    @Test
-    public void zone_redirect_by_class()
-    {
-        clickThru("Zone Demo");
-
-        clickAndWait("link=Perform a redirect to another page");
-
-        assertText("activePageName", "nested/AssetDemo");
-    }
-
-    /**
-     * TAP5-108
-     */
-    @Test
-    public void update_multiple_zones_at_once()
-    {
-        clickThru("Multiple Zone Update Demo");
-
-        String now = getText("now");
-
-        assertText("wilma", "Wilma Flintstone");
-
-        click("update");
-
-        waitForElementToAppear("fredName");
-
-        assertText("fredName", "Fred Flintstone");
-        assertText("dino", "His dog, Dino.");
-        assertText("wilma", "His Wife, Wilma.");
-
-        // Ideally, we'd add checks that the JavaScript for the Palette in the
-        // Barney Zone was
-        // updated.
-
-        // Make sure it was a partial update
-        assertText("now", now);
-    }
-
-    /**
-     * TAP5-573
-     */
-    @Test
-    public void zone_namespace_interaction_fixed()
-    {
-        clickThru("Zone/Namespace Interaction");
-
-        String outerNow = getText("outernow");
-        String innerNow = getText("innernow");
-
-        // If we're too fast that innernow doesn't change because its all within
-        // a single second.
-
-        sleep(1050);
-
-        click(SUBMIT);
-
-        waitForElementToAppear("message");
-
-        // Make sure it was just an Ajax update.
-        assertEquals(getText("outernow"), outerNow);
-
-        assertFalse(getText("innernow").equals(innerNow));
-    }
-
-    @Test
-    public void zone_updated_event_triggered_on_client()
-    {
-        clickThru("Zone Demo");
-
-        assertText("zone-update-message", "");
-
-        click("link=Direct JSON response");
-
-        // Give it some time to process.
-
-        sleep(100);
-
-        assertText("zone-update-message", "Zone updated.");
-    }
-
-    /**
-     * TAP5-389
-     */
-    @Test
-    public void link_submit_inside_form_that_updates_a_zone()
-    {
-        clickThru("LinkSubmit inside Zone");
-
-        String now = getText("now");
-
-        waitForElementToAppear("mySubmit");
-
-        click("//a[@id='mySubmit']");
-
-        waitForElementToAppear("value:errorpopup");
-
-        type("value", "robot chicken");
-
-        click("//a[@id='mySubmit']");
-
-        waitForElementToAppear("outputvalue");
-
-        assertText("outputvalue", "robot chicken");
-
-        assertText("eventfired", "true");
-
-        // Make sure it was a partial update
-        assertText("now", now);
-    }
-
-    @Test
-    public void zone_inject_component_from_template()
-    {
-        clickThru("Inject Component Demo");
-
-        assertTextPresent(Form.class.getName() + "[form--form]");
-    }
-
-    /**
-     * TAP5-707
-     */
-    @Test
-    public void zone_fade_back_backgroundcolor()
-    {
-        clickThru("Form Zone Demo");
-
-        type("longValue", "12");
-
-        click(SUBMIT);
-
-        click(SUBMIT);
-
-        // wait some time to let the fade go away
-        sleep(4050);
-
-        // will only work in firefox.
-        String color = getEval("selenium.browserbot.getCurrentWindow().getComputedStyle(this.page().findElement(\"xpath=//div[@id='valueZone']\"),'').getPropertyValue('background-color').toLowerCase()");
-
-        assertEquals(color, "rgb(255, 255, 255)");
-    }
-
-    /** TAP5-1084 */
-    @Test
-    public void update_zone_inside_form()
-    {
-        clickThru("Zone/Form Update Demo");
-
-        click("link=Update the form");
-
-        waitForElementToAppear("updated");
-
-        type("//INPUT[@type='text']", "Tapestry 5.2");
-
-        clickAndWait(SUBMIT);
-
-        assertText("output", "Tapestry 5.2");
-    }
-
-    /** TAP5-1109 */
-    @Test
-    public void update_to_zone_inside_form()
-    {
-        clickThru("MultiZone Update inside a Form");
-
-        select("selectValue1", "3 pre ajax");
-
-        waitForElementToAppear("select2ValueZone");
-
-        select("//div[@id='select2ValueZone']//select", "4 post ajax");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
deleted file mode 100644
index 6e1da0c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseComponent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.base;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.IncidentData;
-
-public class BaseComponent
-{
-    @ApplicationState
-    @Property
-    private IncidentData incidentData;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java
deleted file mode 100644
index 3ebe5ee..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseEventHandlerDemo.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.base;
-
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.List;
-
-public abstract class BaseEventHandlerDemo
-{
-    @Persist
-    @Property
-    private List<String> methodNames;
-
-    protected final void addMethodName(String name)
-    {
-        List<String> methodNames = this.methodNames;
-
-        if (methodNames == null) methodNames = CollectionFactory.newList();
-
-        methodNames.add(name);
-
-        this.methodNames = methodNames;
-    }
-
-    void onActivate(String placeholder)
-    {
-        methodNames = null;
-    }
-
-    @SuppressWarnings("unused")
-    private void onAction()
-    {
-        addMethodName("parent.onAction()");
-    }
-
-    @SuppressWarnings("unused")
-    private void onAction(String value)
-    {
-        addMethodName("parent.onAction(String)");
-
-    }
-
-    @OnEvent("action")
-    void eventHandlerZero()
-    {
-        addMethodName("parent.eventHandlerZero()");
-    }
-
-    @OnEvent(value = "action")
-    void eventHandlerOne(String value)
-    {
-        addMethodName("parent.eventHandlerOne(String)");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseLayoutPage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseLayoutPage.java
deleted file mode 100644
index 3ca2dd1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/BaseLayoutPage.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.base;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.Delegate;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class BaseLayoutPage
-{
-    @Inject
-    private ComponentResources resources;
-
-    @Component(parameters = "to=titleRenderer")
-    private Delegate titleDelegate;
-
-    public Renderable getTitleRenderer()
-    {
-        return new Renderable()
-        {
-            public void render(MarkupWriter writer)
-            {
-                writer.write(TapestryInternalUtils.toUserPresentable(resources.getPageName()));
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/EmptyExtendTemplate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/EmptyExtendTemplate.java
deleted file mode 100644
index bb35a83..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/EmptyExtendTemplate.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.base;
-
-public class EmptyExtendTemplate extends BaseLayoutPage
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
deleted file mode 100644
index 19eeee7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/base/GenericEditor.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.base;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PropertyConduitSource;
-
-/**
- * For testing TAPESTRY-1518.
- */
-public class GenericEditor<T>
-{
-    @Persist
-    private T bean;
-
-    @Component(parameters = { "object=bean" })
-    private BeanEditForm form;
-
-    @Inject
-    private PropertyConduitSource conduit;
-
-    @Retain
-    private String beanType;
-
-    {
-        // Use getClass(), not GenericEditor.class, to determine the correct type for the bean.
-        // Otherwise, it would be Object.
-
-        PropertyConduit conduit = this.conduit.create(getClass(), "bean");
-
-        beanType = conduit.getPropertyType().getName();
-    }
-
-    public String getBeanType()
-    {
-        return beanType;
-    }
-
-    public T getBean()
-    {
-        return bean;
-    }
-
-    public void setBean(T bean)
-    {
-        this.bean = bean;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/AbstractComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/AbstractComponent.java
deleted file mode 100644
index 0f87ee7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/AbstractComponent.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-public abstract class AbstractComponent
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/AbstractTracer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/AbstractTracer.java
deleted file mode 100644
index f9bf87c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/AbstractTracer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.BeginRender;
-
-public abstract class AbstractTracer
-{
-    @BeginRender
-    void begin(MarkupWriter writer)
-    {
-        writer.write("BEGIN-ABSTRACT-TRACER ");
-    }
-
-    @AfterRender
-    void after(MarkupWriter writer)
-    {
-        writer.write("AFTER-ABSTRACT-TRACER ");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/ActionLinkIndirect.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/ActionLinkIndirect.java
deleted file mode 100644
index 558cd43..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/ActionLinkIndirect.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.corelib.components.ActionLink;
-
-public class ActionLinkIndirect
-{
-    /**
-     * The component to be rendered.
-     */
-    @Parameter(required = true, defaultPrefix = BindingConstants.COMPONENT)
-    private ActionLink component;
-
-    Object beginRender(MarkupWriter writer)
-    {
-        writer.element("p");
-
-        return component;
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end(); // p
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BadPublishDuplicate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BadPublishDuplicate.java
deleted file mode 100644
index 4ae8651..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BadPublishDuplicate.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.PasswordField;
-import org.apache.tapestry5.corelib.components.TextField;
-
-public class BadPublishDuplicate
-{
-    @Component(publishParameters = "value")
-    private TextField textField;
-
-    // Can't do this: have a duplicate published parameter:
-
-    @Component(publishParameters = "value")
-    private PasswordField passwordField;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BadPublishUnknown.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BadPublishUnknown.java
deleted file mode 100644
index 5e555c1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BadPublishUnknown.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Component;
-
-public class BadPublishUnknown
-{
-    @Component(publishParameters = "xyzzyx")
-    private Publish1 publish1;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BeanEditContextVerifier.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BeanEditContextVerifier.java
deleted file mode 100644
index 1cbb5aa..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BeanEditContextVerifier.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.services.BeanEditContext;
-
-/**
- * Used to check to make sure that the BeanEditor is properly pushing a BeanEditContext into the environment.
- */
-public class BeanEditContextVerifier 
-{
-    @Environmental
-    private BeanEditContext context;
-
-    void beginRender(MarkupWriter writer)
-    {
-        writer.write("Bean class from context is: " + context.getBeanClass().getName());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BindParameterComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BindParameterComponent.java
deleted file mode 100644
index 311b5ab..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BindParameterComponent.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.BindParameter;
-import org.apache.tapestry5.MarkupWriter;
-
-/**
- * @BindParameter should only be used inside a mixin; should get an intelligible exception when trying to use this component.
- */
-public class BindParameterComponent
-{
-
-    @BindParameter
-    private Object value;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BindParameterComponentContainer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BindParameterComponentContainer.java
deleted file mode 100644
index 688b532..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/BindParameterComponentContainer.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.MixinAfter;
-
-/**
- * Used to help prove that BindParameter on a component field throws an intelligible exception, even if the containing
- * resources actually do contain a declared parameter of the appropriate name.
- */
-public class BindParameterComponentContainer
-{
-
-    @Parameter("literal:testvalue")
-    private String value;
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
deleted file mode 100644
index 0769838..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Border.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.IncludeStylesheet;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.services.ComponentLayer;
-import org.apache.tapestry5.services.Request;
-
-/**
- * Here's a component with a template, including a t:body element.   Really should rename this to "Layout" as that's the
- * T5 naming.
- */
-@IncludeStylesheet({ "context:layout/style.css", "context:css/app.css" })
-public class Border
-{
-    @Inject
-    @Builtin
-    private ClassFactory iocClassFactory;
-
-    @Inject
-    @ComponentLayer
-    private ClassFactory componentClassFactory;
-
-    @Inject
-    private Request request;
-
-    public ClassFactory getComponentClassFactory()
-    {
-        return componentClassFactory;
-    }
-
-    public ClassFactory getIocClassFactory()
-    {
-        return iocClassFactory;
-    }
-
-    public Request getRequest()
-    {
-        return request;
-    }
-
-    public String getSecure()
-    {
-        return request.isSecure() ? "secure" : "insecure";
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java
deleted file mode 100644
index e337d1b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Count.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.internal.util.IntegerRange;
-
-/**
- * A component that can count up or count down.
- * <p/>
- * This is useful as a demonstration; now that the prop binding supports {@link IntegerRange integer ranges}, it's much
- * less necessary.
- */
-public class Count
-{
-    @Parameter
-    private int start = 1;
-
-    @Parameter(required = true)
-    private int end;
-
-    @Parameter
-    private int value;
-
-    private boolean increment;
-
-    @SetupRender
-    void initializeValue()
-    {
-        value = start;
-
-        increment = start < end;
-    }
-
-    @AfterRender
-    boolean next()
-    {
-        if (increment)
-        {
-            int newValue = value + 1;
-
-            if (newValue <= end)
-            {
-                value = newValue;
-                return false; // re-render body
-            }
-        }
-        else
-        {
-            int newValue = value - 1;
-
-            if (newValue >= end)
-            {
-                value = newValue;
-                return false; // re-render body
-            }
-        }
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Echo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Echo.java
deleted file mode 100644
index a650e0b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Echo.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.Parameter;
-
-/**
- * Echos out its value parameter. Uused to test parameter overrides between component annoation and template. Also, used
- * to test parameter defaulter methods.
- */
-public class Echo
-{
-    @Parameter("componentResources.completeId")
-    private String value;
-
-    @BeginRender
-    void render(MarkupWriter writer)
-    {
-        writer.write(value);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/HelloWorld.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/HelloWorld.java
deleted file mode 100644
index e6c0128..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/HelloWorld.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.BeginRender;
-
-public class HelloWorld
-{
-    @BeginRender
-    void renderMessage(MarkupWriter writer)
-    {
-        writer.write("Why wait?  Make changes here and see them immediately!");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritBottom.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritBottom.java
deleted file mode 100644
index 0c1432b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritBottom.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-
-public class InheritBottom
-{
-    @Parameter
-    @Property
-    private Object bvalue;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritMiddle.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritMiddle.java
deleted file mode 100644
index 617b6e9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritMiddle.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-
-public class InheritMiddle
-{
-    @Parameter
-    @Property
-    private Object mvalue;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritTop.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritTop.java
deleted file mode 100644
index b520c2a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/InheritTop.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-
-public class InheritTop
-{
-    @Parameter
-    @Property
-    private Object value;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Inner.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Inner.java
deleted file mode 100644
index dc49a03..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Inner.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class Inner
-{
-    @Parameter
-    private String innerValue;
-
-    @Inject
-    private ComponentResources resources;
-
-    void beginRender(MarkupWriter writer)
-    {
-        writer.writef("[ value: %s, bound: %s ]", innerValue, resources.isBound("innerValue"));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/IntArrayWriter.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/IntArrayWriter.java
deleted file mode 100644
index fa5a73a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/IntArrayWriter.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-
-public class IntArrayWriter
-{
-    @Parameter
-    private int[] array;
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        writer.element("ul");
-
-        for (int x : array)
-        {
-            writer.element("li");
-            writer.write(String.valueOf(x));
-            writer.end();
-        }
-
-        writer.end();
-
-        return false; // don't render body, etc.
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/ListInformals.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/ListInformals.java
deleted file mode 100644
index 52a07e6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/ListInformals.java
+++ /dev/null
@@ -1,45 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-@SupportsInformalParameters
-public class ListInformals
-{
-    @Inject
-    private ComponentResources resources;
-
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("dl", "id", "informals");
-
-        for (String name : resources.getInformalParameterNames())
-        {
-            writer.element("dt");
-            writer.write(name);
-            writer.end();
-
-            writer.element("dd");
-            writer.write(resources.getInformalParameter(name, String.class));
-            writer.end();
-        }
-
-        writer.end(); // dl
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Outer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Outer.java
deleted file mode 100644
index 532b996..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Outer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.annotations.Parameter;
-
-public class Outer
-{
-    @SuppressWarnings("unused")
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String outerValue;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OuterAny.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OuterAny.java
deleted file mode 100644
index ecf310f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OuterAny.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.corelib.components.Any;
-
-@SupportsInformalParameters
-public class OuterAny
-{
-    // Also, leave a few parameters here and there in the old naming style, with a
-    // leading underscore.
-
-    @Component(inheritInformalParameters = true)
-    private Any innerAny;
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OutputDate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OutputDate.java
deleted file mode 100644
index 9f4b166..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OutputDate.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-
-import java.text.Format;
-
-/**
- * component that formats a value and outputs it.
- */
-public class OutputDate
-{
-    @Parameter(required = true)
-    private Object value;
-
-    @Parameter(required = true)
-    private Format format;
-
-    void beginRender(MarkupWriter writer)
-    {
-        String formatted = format.format(value);
-
-        writer.write(formatted);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OutputRating.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OutputRating.java
deleted file mode 100644
index 56f2d6e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/OutputRating.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-
-public class OutputRating
-{
-    @Parameter
-    private int rating;
-
-    void beginRender(MarkupWriter writer)
-    {
-        if (rating <= 0)
-        {
-            writer.write("-");
-            return;
-        }
-
-        // Want 1 - 5 stars
-        int stars = ((rating - 1) / 20) + 1;
-
-        for (int i = 0; i < stars; i++)
-            writer.write("*");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/PrimitiveDefault.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/PrimitiveDefault.java
deleted file mode 100644
index a6be5a3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/PrimitiveDefault.java
+++ /dev/null
@@ -1,37 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.Parameter;
-
-public class PrimitiveDefault
-{
-    @Parameter
-    private int value;
-
-    int defaultValue() { return 99; }
-
-    boolean beginRender(MarkupWriter writer)
-    {
-        writer.element("div", "id", "value");
-
-        writer.write(String.valueOf(value));
-
-        writer.end();
-
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish1.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish1.java
deleted file mode 100644
index e1d3de2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish1.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Component;
-
-public class Publish1
-{
-    @Component(publishParameters = "value", parameters = "number=6")
-    private Publish2 publish2;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish2.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish2.java
deleted file mode 100644
index d24d2d3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish2.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Component;
-
-public class Publish2
-{
-    @Component(publishParameters = "value,number")
-    private Publish3 publish3;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish3.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish3.java
deleted file mode 100644
index 1abbbc2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Publish3.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.annotations.Parameter;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class Publish3
-{
-    @Property
-    @Parameter
-    private int number;
-
-    @Property
-    @Parameter(defaultPrefix = BindingConstants.LITERAL)
-    private String value;
-
-    @Property
-    @Inject
-    private String id;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Recursive.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Recursive.java
deleted file mode 100644
index 9df84ca..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Recursive.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-public class Recursive
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Render.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Render.java
deleted file mode 100644
index 6733120..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Render.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-
-public class Render
-{
-    @Parameter(required = true)
-    private Object value;
-
-    /**
-     * Returns the value parameter, which allows another object (presumably, a component) to render first.
-     *
-     * @return
-     */
-    Object beginRender()
-    {
-        return value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/RenderableProvider.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/RenderableProvider.java
deleted file mode 100644
index aa4422f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/RenderableProvider.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.annotations.CleanupRender;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Environment;
-
-public class RenderableProvider
-{
-    @Inject
-    private Environment environment;
-
-    @SetupRender
-    void setup()
-    {
-        Renderable r = new Renderable()
-        {
-            public void render(MarkupWriter writer)
-            {
-                writer.element("strong");
-                writer.write("A message provided by the RenderableProvider component.");
-                writer.end();
-            }
-        };
-
-        environment.push(Renderable.class, r);
-    }
-
-    @CleanupRender
-    void cleanup()
-    {
-        environment.pop(Renderable.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/RenderableUser.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/RenderableUser.java
deleted file mode 100644
index 650910c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/RenderableUser.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.Environmental;
-
-/**
- * Used, with {@link RenderableProvider}, to test the {@link Environmental} annotation.
- */
-public class RenderableUser
-{
-    @Environmental
-    private Renderable renderable;
-
-    @BeginRender
-    void render(MarkupWriter writer)
-    {
-        renderable.render(writer);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Strong.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Strong.java
deleted file mode 100644
index 68576da..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Strong.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-
-public class Strong
-{
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("strong");
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/TextOnlyOnDisabledTextField.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/TextOnlyOnDisabledTextField.java
deleted file mode 100644
index 253a401..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/TextOnlyOnDisabledTextField.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.corelib.components.TextField;
-
-public class TextOnlyOnDisabledTextField extends TextField
-{
-    @SuppressWarnings("unused")
-    @Mixin(value = "textonlyondisabled", order = "after:*")
-    private Object theMixin;
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Tracer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Tracer.java
deleted file mode 100644
index 586ae58..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/components/Tracer.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.components;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.BeginRender;
-
-public class Tracer extends AbstractTracer
-{
-    @BeginRender
-    void beginChild(MarkupWriter writer)
-    {
-        writer.write("BEGIN-TRACER ");
-    }
-
-    @AfterRender
-    void afterChild(MarkupWriter writer)
-    {
-        writer.write("AFTER-TRACER ");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/BirthdayReminder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/BirthdayReminder.java
deleted file mode 100644
index cd7f618..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/BirthdayReminder.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-import java.util.Date;
-
-public class BirthdayReminder
-{
-    private String name;
-
-    private Date date;
-
-    @Validate("required")
-    public String getName()
-    {
-        return name;
-    }
-
-    @Validate("required")
-    public Date getDate()
-    {
-        return date;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public void setDate(Date date)
-    {
-        this.date = date;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java
deleted file mode 100644
index feb82e6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CalendarHolder.java
+++ /dev/null
@@ -1,35 +0,0 @@
-//  Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import java.util.Calendar;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class CalendarHolder
-{
-    private Calendar calendar;
-
-    @Validate("required")
-    public Calendar getCalendar()
-    {
-        return calendar;
-    }
-
-    public void setCalendar(Calendar calendar)
-    {
-        this.calendar = calendar;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CarMaker.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CarMaker.java
deleted file mode 100644
index 6a68992..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/CarMaker.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.data;
-
-public enum CarMaker
-{
-    MERCEDES, AUDI, BMW;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/DateHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/DateHolder.java
deleted file mode 100644
index a3555f8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/DateHolder.java
+++ /dev/null
@@ -1,47 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-
-import java.util.Date;
-
-public class DateHolder
-{
-    @NonVisual
-    private int id;
-
-    private Date date;
-
-    public int getId()
-    {
-        return id;
-    }
-
-    public void setId(int id)
-    {
-        this.id = id;
-    }
-
-    public Date getDate()
-    {
-        return date;
-    }
-
-    public void setDate(Date date)
-    {
-        this.date = date;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Department.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Department.java
deleted file mode 100644
index ac0a703..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Department.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public enum Department
-{
-
-    ACCOUNTING, RESEARCH_AND_DESIGN, IT, SALES_AND_MARKETING
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/DoubleItem.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/DoubleItem.java
deleted file mode 100644
index 47a2846..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/DoubleItem.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-/**
- * Used for tests involving {@link org.apache.tapestry5.corelib.components.AjaxFormLoop} (and indirectly, {@link
- * org.apache.tapestry5.corelib.components.FormInjector}).
- */
-public class DoubleItem
-{
-    private long id;
-
-    private double value;
-
-    public long getId()
-    {
-        return id;
-    }
-
-    public void setId(long id)
-    {
-        this.id = id;
-    }
-
-    public double getValue()
-    {
-        return value;
-    }
-
-    public void setValue(double value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/IncidentData.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/IncidentData.java
deleted file mode 100644
index 33feee6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/IncidentData.java
+++ /dev/null
@@ -1,98 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-import java.io.Serializable;
-
-public class IncidentData implements Serializable
-{
-    private static final long serialVersionUID = -321606932140181054L;
-
-    private String email;
-
-    private String message;
-
-    private boolean urgent;
-
-    private String operatingSystem;
-
-    private int hours;
-
-    private Department department;
-
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    @Validate("required")
-    public void setMessage(String message)
-    {
-        this.message = message;
-    }
-
-    public boolean isUrgent()
-    {
-        return urgent;
-    }
-
-    public void setUrgent(boolean urgent)
-    {
-        this.urgent = urgent;
-    }
-
-    public String getOperatingSystem()
-    {
-        return operatingSystem;
-    }
-
-    public void setOperatingSystem(String os)
-    {
-        operatingSystem = os;
-    }
-
-    public int getHours()
-    {
-        return hours;
-    }
-
-    public void setHours(int hours)
-    {
-        this.hours = hours;
-    }
-
-    public Department getDepartment()
-    {
-        return department;
-    }
-
-    public void setDepartment(Department department)
-    {
-        this.department = department;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/IntegerHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/IntegerHolder.java
deleted file mode 100644
index 5b75432..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/IntegerHolder.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public class IntegerHolder
-{
-    private Integer value;
-
-    public Integer getValue()
-    {
-        return value;
-    }
-
-    public void setValue(Integer value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java
deleted file mode 100644
index c4ff931..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/NullToString.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public class NullToString
-{
-    public String toString()
-    {
-        throw new NullPointerException("NPE from NullToString");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Person.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Person.java
deleted file mode 100644
index 45a0c0f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Person.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class Person
-{
-    @Validate("required , minlength=5")
-    private String name;
-
-    @Validate("required,min=1")
-    private int age;
-
-    private Person child;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public int getAge()
-    {
-        return age;
-    }
-
-    public void setAge(int age)
-    {
-        this.age = age;
-    }
-
-    public Person getChild()
-    {
-        return child;
-    }
-
-    public void setChild(Person child)
-    {
-        this.child = child;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Pet.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Pet.java
deleted file mode 100644
index 37107b3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Pet.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public class Pet
-{
-
-    private String name;
-    private Integer age;
-    private PetType type;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public Integer getAge()
-    {
-        return age;
-    }
-
-    public void setAge(Integer age)
-    {
-        this.age = age;
-    }
-
-    public PetType getType()
-    {
-        return type;
-    }
-
-    public void setType(PetType type)
-    {
-        this.type = type;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/PetType.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/PetType.java
deleted file mode 100644
index 75f3d70..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/PetType.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public enum PetType
-{
-    DOG,CAT,FISH,SNAKE,TARANTULA;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ProgrammingLanguage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ProgrammingLanguage.java
deleted file mode 100644
index 4c485a2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ProgrammingLanguage.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public enum ProgrammingLanguage
-{
-    ADA, ASSEMBLY, C, ERLANG, HASKELL, JAVA, JAVASCRIPT, LISP, ML, PERL, PYTHON, RUBY, SCALA, SCHEME
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java
deleted file mode 100644
index 1fad57c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RegistrationData.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import java.util.List;
-
-import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.beaneditor.Width;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-@ReorderProperties("firstname,lastname,birthyear,sex")
-public class RegistrationData
-{
-    private String lastName;
-
-    private String firstName;
-
-    private int birthYear;
-
-    public Sex sex = Sex.MALE;
-
-    private boolean citizen;
-
-    private String password;
-
-    private String notes;
-
-    private List<String> roles = CollectionFactory.newList();
-
-    @Validate("min=1900,max=2007")
-    @Width(4)
-    public int getBirthYear()
-    {
-        return birthYear;
-    }
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    @Validate("required,minlength=5")
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    @Validate("required,minlength=6")
-    @DataType("password")
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public boolean isCitizen()
-    {
-        return citizen;
-    }
-
-    public void setBirthYear(int birthYear)
-    {
-        this.birthYear = birthYear;
-    }
-
-    @Validate("required,minlength=3")
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-
-    public void setCitizen(boolean citizen)
-    {
-        this.citizen = citizen;
-    }
-
-    @DataType("longtext")
-    @Width(50)
-    public String getNotes()
-    {
-        return notes;
-    }
-
-    public void setNotes(String notes)
-    {
-        this.notes = notes;
-    }
-
-    public List<String> getRoles()
-    {
-        return roles;
-    }
-
-    public void setRoles(List<String> roles)
-    {
-        this.roles = roles;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ResourcesHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ResourcesHolder.java
deleted file mode 100644
index 6864d56..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ResourcesHolder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public class ResourcesHolder
-{
-    // Name chosen to conflict with PublicFieldAccessDemo.resources
-    public final String resources;
-
-    public ResourcesHolder(String resources)
-    {
-        this.resources = resources;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RoleAccess.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RoleAccess.java
deleted file mode 100644
index c53721d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RoleAccess.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public enum RoleAccess
-{
-    GRANT, DENY;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RolePath.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RolePath.java
deleted file mode 100644
index 5bd993d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/RolePath.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class RolePath
-{
-    private String path;
-
-    private RoleAccess role = RoleAccess.GRANT;
-
-    @Validate("required")
-    public String getPath()
-    {
-        return path;
-    }
-
-    @Validate("required")
-    public RoleAccess getRole()
-    {
-        return role;
-    }
-
-    public void setPath(String path)
-    {
-        this.path = path;
-    }
-
-    public void setRole(RoleAccess role)
-    {
-        this.role = role;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Sex.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Sex.java
deleted file mode 100644
index 52a743c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Sex.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public enum Sex
-{
-    MALE, FEMALE, TRANSGENDERED, MARTIAN
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/SimpleTrack.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/SimpleTrack.java
deleted file mode 100644
index 5a299b3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/SimpleTrack.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-
-@ReorderProperties("title,album")
-public interface SimpleTrack
-{
-    String getTitle();
-
-    String getAlbum();
-
-    int getRating();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/SubscribeData.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/SubscribeData.java
deleted file mode 100644
index 2404fbd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/SubscribeData.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class SubscribeData
-{
-    // Only really required if visible!
-    @Validate("required")
-    private String name, email, code, sub;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public String getCode()
-    {
-        return code;
-    }
-
-    public void setCode(String code)
-    {
-        this.code = code;
-    }
-
-    public String getSub()
-    {
-        return sub;
-    }
-
-    public void setSub(String sub)
-    {
-        this.sub = sub;
-    }
-    
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ToDoItem.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ToDoItem.java
deleted file mode 100644
index 91e9d9a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/ToDoItem.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.Validate;
-
-import java.io.Serializable;
-
-public class ToDoItem implements Serializable, Cloneable
-{
-    private static final long serialVersionUID = 329624498668043734L;
-
-    private long id;
-
-    private String title;
-
-    private int order;
-
-    private Urgency urgency = Urgency.MEDIUM;
-
-    @Override
-    public String toString()
-    {
-        return String.format("ToDoItem[%d %s]", id, title);
-    }
-
-    @Override
-    public ToDoItem clone()
-    {
-        try
-        {
-            return (ToDoItem) super.clone();
-        }
-        catch (CloneNotSupportedException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    @NonVisual
-    public long getId()
-    {
-        return id;
-    }
-
-    public void setId(long id)
-    {
-        this.id = id;
-    }
-
-    @Validate("required")
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-
-    public Urgency getUrgency()
-    {
-        return urgency;
-    }
-
-    public void setUrgency(Urgency urgency)
-    {
-        this.urgency = urgency;
-    }
-
-    @NonVisual
-    public int getOrder()
-    {
-        return order;
-    }
-
-    public void setOrder(int order)
-    {
-        this.order = order;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Track.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Track.java
deleted file mode 100644
index 49d00de..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Track.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-
-/**
- * One track from a music library.
- */
-public class Track implements SimpleTrack
-{
-    private Long id;
-
-    private String album, artist, genre, title;
-
-    private int playCount, rating;
-
-    @NonVisual
-    public Long getId()
-    {
-        return id;
-    }
-
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public String getAlbum()
-    {
-        return album;
-    }
-
-    public String getArtist()
-    {
-        return artist;
-    }
-
-    public String getGenre()
-    {
-        return genre;
-    }
-
-    public int getPlayCount()
-    {
-        return playCount;
-    }
-
-    /**
-     * Rating as a value between 0 and 100.
-     */
-    public int getRating()
-    {
-        return rating;
-    }
-
-    public void setAlbum(String album)
-    {
-        this.album = album;
-    }
-
-    public void setArtist(String artist)
-    {
-        this.artist = artist;
-    }
-
-    public void setGenre(String genre)
-    {
-        this.genre = genre;
-    }
-
-    public void setPlayCount(int playCount)
-    {
-        this.playCount = playCount;
-    }
-
-    public void setRating(int rating)
-    {
-        this.rating = rating;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Urgency.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Urgency.java
deleted file mode 100644
index 2199eab..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/Urgency.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-public enum Urgency
-{
-    LOW, MEDIUM, HIGH
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/UserCredentials.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/UserCredentials.java
deleted file mode 100644
index 93a6648..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/data/UserCredentials.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.data;
-
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class UserCredentials
-{
-    private String lastName, firstName;
-
-    @Validate("required")
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    @Validate("required")
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoAfter.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoAfter.java
deleted file mode 100644
index 9796f62..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoAfter.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Mixin demonstrating the use of the BindParameter annotation, using implicit parent-parameter naming.
- * It echos the current value, changes said value for the duration of the component
- * render, then changes it back and re-echos it.
- */
-@MixinAfter
-public class EchoAfter
-{
-    @BindParameter
-    private String value;
-
-    private String temp;
-
-    @InjectContainer
-    private Field field;
-
-    @BeginRender
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("div","id",field.getClientId() + "_before_but_after");
-        writer.writeRaw(value + "-before");
-        writer.end();
-        temp = value;
-        value = "beginrender_for_mixinafter_isreally_justafter_corecomponent_render";
-    }
-
-    @AfterRender
-    void afterRender(MarkupWriter writer) {
-        value = temp;
-        writer.element("div","id",field.getClientId() + "_after_but_before");
-        writer.writeRaw(value + "-after");
-        writer.end();
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoAfter2.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoAfter2.java
deleted file mode 100644
index b27fb8f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoAfter2.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Mixin demonstrating the use of the BindParameter annotation, using implicit parent-parameter naming.
- * It echos the current value, changes said value for the duration of the component
- * render, then changes it back and re-echos it.
- */
-@MixinAfter
-public class EchoAfter2
-{
-    @BindParameter
-    private String value;
-
-    private String temp;
-
-    @InjectContainer
-    private Field field;
-
-    @BeginRender
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("div","id",field.getClientId() + "_before_but_after2");
-        writer.writeRaw(value + "-before");
-        writer.end();
-        temp = value;
-        value = "afterrender_for_mixinafter_isreally_justbefore_corecomponent_afterrender";
-    }
-
-    @AfterRender
-    void afterRender(MarkupWriter writer) {
-        value = temp;
-        writer.element("div","id",field.getClientId() + "_after_but_before2");
-        writer.writeRaw(value + "-after");
-        writer.end();
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue.java
deleted file mode 100644
index 9c885e3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Mixin demonstrating the use of the BindParameter annotation, using implicit parent-parameter naming.
- * It echos the current value, changes said value for the duration of the component
- * render, then changes it back and re-echos it.
- */
-public class EchoValue
-{
-    @BindParameter
-    private String value;
-
-    private String temp;
-
-    @InjectContainer
-    private Field field;
-
-    @BeginRender
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("div","id",field.getClientId() + "_before");
-        writer.writeRaw(value + "-before");
-        writer.end();
-        temp = value;
-        value = "temporaryvaluefromechovaluemixin";
-    }
-
-    @AfterRender
-    void afterRender(MarkupWriter writer) {
-        value = temp;
-        writer.element("div","id",field.getClientId() + "_after");
-        writer.writeRaw(value + "-after");
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue2.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue2.java
deleted file mode 100644
index 1b8a313..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue2.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.annotations.BindParameter;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ClientElement;
-
-/**
- * Mixin demonstrating the use of BindParameter, using explicit naming of the parent parameter.
- */
-public class EchoValue2
-{
-    @BindParameter(value = "value")
-    private Object boundParameter;
-
-    @InjectContainer
-    private ClientElement element;
-
-    private Object temp;
-
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("div","id",element.getClientId() + "_before2");
-        writer.writeRaw("echo2-" + boundParameter + "-before");
-        writer.end();
-        temp = boundParameter;
-        boundParameter = "3";
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        boundParameter = temp;
-        writer.element("div","id",element.getClientId() + "_after2");
-        writer.writeRaw("echo2-" + boundParameter + "-after");
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue3.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue3.java
deleted file mode 100644
index 02365ad..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/EchoValue3.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.annotations.BindParameter;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ClientElement;
-
-/**
- * Mixin demonstrating the use of BindParameter, using explicit naming of the parent parameter.
- */
-public class EchoValue3
-{
-    @BindParameter(value = {"object","value"})
-    private Object boundParameter;
-
-    @InjectContainer
-    private ClientElement element;
-
-    private Object temp;
-
-    void beginRender(MarkupWriter writer)
-    {
-        writer.element("div","id",element.getClientId() + "_before3");
-        writer.writeRaw("echo3-" + boundParameter + "-before");
-        writer.end();
-        temp = boundParameter;
-        boundParameter = "world";
-    }
-
-    void afterRender(MarkupWriter writer)
-    {
-        boundParameter = temp;
-        writer.element("div","id",element.getClientId() + "_after3");
-        writer.writeRaw("echo3-" + boundParameter + "-after");
-        writer.end();
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/Emphasis.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/Emphasis.java
deleted file mode 100644
index 24b0b2f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/Emphasis.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.annotations.Parameter;
-
-/**
- * Mixin that adds emphasis to a component if a test is true.
- */
-public class Emphasis
-{
-    @Parameter(required = true)
-    private boolean test;
-
-    @BeginRender
-    void begin(MarkupWriter writer)
-    {
-        if (test)
-            writer.element("em");
-    }
-
-    @AfterRender
-    void after(MarkupWriter writer)
-    {
-        if (test)
-            writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java
deleted file mode 100644
index c1800d3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TextOnlyOnDisabled.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.BindParameter;
-import org.apache.tapestry5.annotations.InjectContainer;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-/**
- * Renders a plain-text version of a value where
- */
-public class TextOnlyOnDisabled
-{
-    @BindParameter
-    private Object value;
-
-    @BindParameter
-    private boolean disabled;
-
-    @BindParameter
-    private FieldTranslator translate;
-
-    @Inject
-    private TypeCoercer coercer;
-
-    @InjectContainer
-    private ClientElement field;
-
-    @Inject
-    private ComponentResources resources;
-
-    Boolean beginRender(MarkupWriter writer)
-    {
-        if (disabled)
-        {
-            // We can short-circuit the text field's beginRender phase, but
-            // not it's afterRender phase, and TextField calls writer.end()
-            // in end render. So we add a dummy element to provide an element to end.
-            writer.element("span", "id", field.getClientId());
-            writer.write(translate.toClient(value));
-
-            return false;
-        }
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TracerMixin.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TracerMixin.java
deleted file mode 100644
index bd4d998..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/mixins/TracerMixin.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.mixins;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.AfterRender;
-import org.apache.tapestry5.annotations.BeginRender;
-
-public class TracerMixin
-{
-    @BeginRender
-    void begin(MarkupWriter writer)
-    {
-        writer.write("BEGIN-TRACER-MIXIN ");
-    }
-
-    @AfterRender
-    void after(MarkupWriter writer)
-    {
-        writer.write("AFTER-TRACER-MIXIN");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AbstractComponentDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AbstractComponentDemo.java
deleted file mode 100644
index 79d9cdf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AbstractComponentDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class AbstractComponentDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActionPage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActionPage.java
deleted file mode 100644
index b5992b5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActionPage.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class ActionPage
-{
-    private int index;
-
-    // Must be persistent, to survive from one request to the next.
-    // An action request is always followed by a redirect request.
-    @Persist
-    private int value;
-
-    void onActionFromChoose(int value)
-    {
-        this.value = value;
-    }
-
-    public int getIndex()
-    {
-        return index;
-    }
-
-    public void setIndex(int index)
-    {
-        this.index = index;
-    }
-
-    public int getValue()
-    {
-        return value;
-    }
-
-    public String getLinkClass()
-    {
-        return index == value ? "selected" : null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActionViaLinkDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActionViaLinkDemo.java
deleted file mode 100644
index a8033e7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActionViaLinkDemo.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class ActionViaLinkDemo
-{
-    @Persist(PersistenceConstants.FLASH)
-    private String message;
-
-    @Inject
-    private ComponentResources resources;
-
-    Object[]
-    onPassivate()
-    {
-        return new Object[] { };
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    void onUpdateMessage(String message)
-    {
-        getActionURL();
-
-        this.message = message;
-    }
-
-    public String getActionURL()
-    {
-        // This could be shifted to createEventLink(), but leaving it alone verifys backwards
-        // compatibility to 5.0.14.
-
-        Link link = resources.createActionLink("UpdateMessage", false, "from getActionURL()");
-
-        return link.toURI();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
deleted file mode 100644
index 0fb5763..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ActivationRequestParameterDemo.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.ActivationRequestParameter;
-import org.apache.tapestry5.internal.OptionModelImpl;
-import org.apache.tapestry5.internal.SelectModelImpl;
-
-public class ActivationRequestParameterDemo
-{
-
-    @Property
-    @Persist(PersistenceConstants.FLASH)
-    private Integer selectedClickCount;
-
-    @Property
-    private boolean clickCountSet;
-
-    @Property
-    @ActivationRequestParameter
-    private Integer clickCount;
-
-    @Property
-    @ActivationRequestParameter("status-message")
-    private String message;
-
-    void onActivate()
-    {
-        clickCountSet = clickCount != null;
-    }
-
-    void onActionFromIncrement()
-    {
-        clickCount = clickCount == null ? 1 : clickCount + 1;
-    }
-
-    void onActionFromSetMessage()
-    {
-        message = "Link clicked!";
-    }
-
-    void onActionFromReset()
-    {
-        clickCount = null;
-        message = null;
-    }
-
-    public SelectModel getClickCountModel()
-    {
-        OptionModel one = new OptionModelImpl("one", 1);
-        OptionModel two = new OptionModelImpl("two", 2);
-        OptionModel three = new OptionModelImpl("three", 3);
-
-        return new SelectModelImpl(one, two, three);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
deleted file mode 100644
index 8e58b25..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AddedGridColumnsDemo.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
-
-import java.util.List;
-
-public class AddedGridColumnsDemo
-{
-    @Component(parameters = {"source=tracks", "row=track", "model=model"})
-    private Grid grid;
-
-    @Inject
-    private MusicLibrary library;
-
-    private Track track;
-
-    @Inject
-    private BeanModelSource source;
-
-    private final BeanModel model;
-
-    @Inject
-    private Messages messages;
-
-    {
-        model = source.create(Track.class, true, messages);
-
-        model.exclude("album", "artist", "genre", "playcount", "rating");
-
-        model.add("viewlink", null);
-
-        model.add("title.length()").label("Title Length");
-
-        // This is to test the case where there's no property conduit or override block.
-
-        model.add("dummy", null);
-    }
-
-    public Track getTrack()
-    {
-        return track;
-    }
-
-    public void setTrack(Track track)
-    {
-        this.track = track;
-    }
-
-    public List<Track> getTracks()
-    {
-        return library.getTracks();
-    }
-
-    public BeanModel getModel()
-    {
-        return model;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AssetProtectionDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AssetProtectionDemo.java
deleted file mode 100644
index 0d325cf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AssetProtectionDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class AssetProtectionDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AttributeExpansionsDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AttributeExpansionsDemo.java
deleted file mode 100644
index 47e8d8c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AttributeExpansionsDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class AttributeExpansionsDemo
-{
-    public String getColorScheme()
-    {
-        return "blue";
-    }
-
-    public String getStyleClass()
-    {
-        return "red";
-    }
-
-    public String getPrefix()
-    {
-        return "ALERT-";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java
deleted file mode 100644
index 83bf9e4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/AutocompleteDemo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Collections;
-import java.util.List;
-
-public class AutocompleteDemo
-{
-    @Inject
-    private MusicLibrary library;
-
-    @Persist
-    private String title;
-
-    List onProvideCompletionsFromTitle(String partialTitle) throws Exception
-    {
-        List<Track> matches = library.findByMatchingTitle(partialTitle);
-
-        List<String> result = CollectionFactory.newList();
-
-        for (Track t : matches)
-            result.add(t.getTitle());
-
-        Collections.sort(result);
-
-        // Thread.sleep(1000);
-
-        return result;
-    }
-
-    public String getTitle()
-    {
-        return title;
-    }
-
-    public void setTitle(String title)
-    {
-        this.title = title;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java
deleted file mode 100644
index 5f5cba5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadMixinIdDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class BadMixinIdDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadTemplate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadTemplate.java
deleted file mode 100644
index 7c9d2f8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BadTemplate.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class BadTemplate
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Barney.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Barney.java
deleted file mode 100644
index 5c9ffbd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Barney.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class Barney implements Runnable
-{
-    public void run()
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanDisplayEnumDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanDisplayEnumDemo.java
deleted file mode 100644
index a3c3f9d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanDisplayEnumDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation

-//

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-//

-//     http://www.apache.org/licenses/LICENSE-2.0

-//

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-

-package org.apache.tapestry5.integration.app1.pages;

-

-import org.apache.tapestry5.integration.app1.data.ToDoItem;

-import org.apache.tapestry5.integration.app1.data.Urgency;

-

-/**

- * Used to demonstrate the built-in support for enum types.

- */

-public class BeanDisplayEnumDemo

-{

-    public ToDoItem getObject()

-    {

-        ToDoItem item = new ToDoItem();

-        

-        item.setId(1);

-        item.setOrder(1);

-        item.setTitle("Develop Faster-Than-Light Travel");

-        item.setUrgency(Urgency.HIGH);

-        

-        return item;

-    }

-}

diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java
deleted file mode 100644
index d3aa170..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditCalendarDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.integration.app1.data.CalendarHolder;
-
-public class BeanEditCalendarDemo
-{
-    @SessionState
-    @Property
-    private CalendarHolder holder;
-
-    void onActionFromClear()
-    {
-        holder = null;
-    }
-
-    Object onSuccess()
-    {
-        return ShowCalendarHolder.class;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditDateDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditDateDemo.java
deleted file mode 100644
index 44fda30..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditDateDemo.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.integration.app1.data.BirthdayReminder;
-
-public class BeanEditDateDemo
-{
-    @SessionState
-    private BirthdayReminder reminder;
-
-    public BirthdayReminder getReminder()
-    {
-        return reminder;
-    }
-
-    void onActionFromClear()
-    {
-        reminder = null;
-    }
-
-    Object onSuccess()
-    {
-        return ShowBirthdayReminder.class;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java
deleted file mode 100644
index b57a8f8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditRemoveReorder.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.corelib.ClientValidation;
-
-public class BeanEditRemoveReorder extends BeanEditorDemo
-{
-
-    @Override
-    public ClientValidation getClientValidation()
-    {
-        return ClientValidation.BLUR;
-    }
-
-    @Override
-    public String getPageTitle()
-    {
-        return "BeanEditForm: Remove and Reorder";
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
deleted file mode 100644
index 764b64b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorBeanEditContext.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.BeanEditor;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-
-public class BeanEditorBeanEditContext
-{
-    @Component
-    private Form form;
-
-    @Component(parameters = { "object=registrationData" })
-    private BeanEditor editor;
-
-    @ApplicationState
-    private RegistrationData data;
-
-
-    public RegistrationData getRegistrationData()
-    {
-        return data;
-    }
-
-    Object onSuccess()
-    {
-        return ViewRegistration.class;
-    }
-
-    void onActionFromClear()
-    {
-        data = null;
-        form.clearErrors();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
deleted file mode 100644
index 38c31ef..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.corelib.ClientValidation;
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-
-public class BeanEditorDemo
-{
-    @Persist(PersistenceConstants.FLASH)
-    private String message;
-
-    @Component(id = "registrationData", parameters =
-    { "clientValidation=prop:clientValidation" })
-    private BeanEditForm form;
-
-    @ApplicationState
-    @Property
-    private RegistrationData registrationData;
-
-    @Property
-    @Validate("required")
-    private String searchTerm;
-
-    Object onSuccess()
-    {
-        return ViewRegistration.class;
-    }
-
-    void onActionFromClear()
-    {
-        registrationData = null;
-        form.clearErrors();
-    }
-
-    public ClientValidation getClientValidation()
-    {
-        return ClientValidation.NONE;
-    }
-
-    public String getPageTitle()
-    {
-        return "BeanEditor Component Demo";
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public void setMessage(String message)
-    {
-        this.message = message;
-    }
-
-    protected void clearErrors()
-    {
-        form.clearErrors();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
deleted file mode 100644
index f56a422..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BeanEditorOverride.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.BeanEditor;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-
-public class BeanEditorOverride
-{
-    @Component
-    private Form form;
-
-    @Component(parameters = { "object=registrationData" })
-    private BeanEditor editor;
-
-    @ApplicationState
-    private RegistrationData data;
-
-    public RegistrationData getRegistrationData()
-    {
-        return data;
-    }
-
-    Object onSuccess()
-    {
-        return ViewRegistration.class;
-    }
-
-    void onActionFromClear()
-    {
-        data = null;
-        form.clearErrors();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterDemo.java
deleted file mode 100644
index 97d3a84..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterDemo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SetupRender;
-
-/**
- * Page for demonstrating/testing the use of the BindParameter mixin demonstration.
- */
-public class BindParameterDemo
-{
-
-    @Property
-    private String myproperty;
-
-    @Property
-    private Integer myproperty2;
-
-    @Property
-    private String myproperty3;
-
-    @Property
-    private String myproperty4;
-
-    @Property
-    private String myproperty5;
-    
-    @SetupRender
-    void initMyprop()
-    {
-        myproperty="mypropertyvalue";
-        myproperty2=10;
-        myproperty3="hello";
-        myproperty4="supervalue";
-        myproperty5="goodbye";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterNoSuchParameter.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterNoSuchParameter.java
deleted file mode 100644
index d325c05..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterNoSuchParameter.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-/**
- *
- */
-public class BindParameterNoSuchParameter
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterOnComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterOnComponent.java
deleted file mode 100644
index 21d175a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BindParameterOnComponent.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-
-/**
- *
- */
-public class BindParameterOnComponent
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlankPasswordDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlankPasswordDemo.java
deleted file mode 100644
index be9df68..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlankPasswordDemo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class BlankPasswordDemo
-{
-    @Persist
-    @Property
-    private String password;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockCaller.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockCaller.java
deleted file mode 100644
index 67ad15c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockCaller.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.annotations.InjectPage;
-
-/**
- * Part of testing for TAPESTRY-2044
- */
-public class BlockCaller
-{
-    @InjectPage
-    private BlockHolder blockHolder;
-
-    private int activationContext;
-
-    public void setActivationContext(int value)
-    {
-        activationContext = value;
-    }
-
-    public int getActivationContext()
-    {
-        return activationContext;
-    }
-
-    void onActivate(int activationContext)
-    {
-        this.activationContext = activationContext;
-    }
-
-    int onPassivate()
-    {
-        return activationContext;
-    }
-
-    public Block getBlock()
-    {
-        return blockHolder.getLinks();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java
deleted file mode 100644
index 893cd4a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockDemo.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.annotations.Id;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Map;
-
-public class BlockDemo
-{
-    @Inject @Id("fred")
-    private Block fredBlock;
-
-    @Inject
-    private Block barney;
-
-    // Blocks not injected until page load, so must lazily initialize the map.
-    @Retain
-    private Map<String, Block> blocks = null;
-
-    @Persist
-    private String blockName;
-
-    public Block getBlockToRender()
-    {
-        if (blocks == null)
-        {
-            blocks = CollectionFactory.newMap();
-            blocks.put("fred", fredBlock);
-            blocks.put("barney", barney);
-        }
-
-        return blocks.get(blockName);
-    }
-
-    public String getBlockName()
-    {
-        return blockName;
-    }
-
-    public void setBlockName(String blockName)
-    {
-        this.blockName = blockName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockHolder.java
deleted file mode 100644
index 5717eb8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BlockHolder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class BlockHolder
-{
-    @InjectPage
-    private BlockCaller blockCaller;
-
-
-    @Inject
-    private Block links;
-
-    private int index;
-
-    public int getIndex()
-    {
-        return index;
-    }
-
-    public void setIndex(int index)
-    {
-        this.index = index;
-    }
-
-    void onActionFromLink(int eventContext)
-    {
-        blockCaller.setActivationContext(eventContext);
-    }
-
-    Block getLinks()
-    {
-        return links;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BooleanDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BooleanDemo.java
deleted file mode 100644
index 9374e7b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/BooleanDemo.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class BooleanDemo
-{
-    @Persist
-    private boolean flag;
-
-    public boolean getFlagUsingGet()
-    {
-        return flag;
-    }
-
-    public boolean isFlagUsingIs()
-    {
-        return flag;
-    }
-
-    public void onActionFromSet()
-    {
-        flag = true;
-    }
-
-    public void onActionFromClear()
-    {
-        flag = false;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CachedPage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CachedPage.java
deleted file mode 100644
index 6c8aa29..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CachedPage.java
+++ /dev/null
@@ -1,58 +0,0 @@
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Cached;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class CachedPage
-{
-    private int value;
-    private List<String> value2;
-    private int value3;
-
-    private Integer watchValue;
-
-    void beginRender()
-    {
-        value = 0;
-        value2 = new ArrayList<String>();
-        value3 = 0;
-        watchValue = 0;
-    }
-
-    @Cached
-    public int getValue()
-    {
-        return value++;
-    }
-
-    @Cached
-    public List<String> getValue2()
-    {
-        value2.add("a");
-        return value2;
-    }
-
-    @Cached(watch = "watchValue")
-    public int getValue3()
-    {
-        return value3++;
-    }
-
-    public Integer getWatchValue()
-    {
-        return watchValue;
-    }
-
-    public void setWatchValue(Integer watchValue)
-    {
-        this.watchValue = watchValue;
-    }
-
-    public Object incrWatchValue()
-    {
-        watchValue++;
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CachedPage2.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CachedPage2.java
deleted file mode 100644
index cce5aed..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CachedPage2.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class CachedPage2 extends CachedPage
-{
-
-    @Override
-    public int getValue()
-    {
-        return super.getValue() + 1;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CancelDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CancelDemo.java
deleted file mode 100644
index 3c4f0b4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CancelDemo.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.corelib.components.Form;
-
-/**
- * Demo the use of the cancel option on Submit.
- */
-public class CancelDemo
-{
-    @Property
-    @Validate("required")
-    private String requiredText;
-
-    @InjectPage
-    private CancelDemoMessage page;
-
-    @InjectComponent
-    private Form form;
-
-    Object onSelectedFromCancel()
-    {
-        form.clearErrors();
-
-        page.setMessage("onSelectedFromCancel() invoked.");
-
-        return page;
-    }
-
-    Object onSelectedFromCancelLink()
-    {
-        form.clearErrors();
-
-        page.setMessage("onSelectedFromCancelLink() invoked.");
-
-        return page;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CancelDemoMessage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CancelDemoMessage.java
deleted file mode 100644
index 351e124..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CancelDemoMessage.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.Persist;
-
-public class CancelDemoMessage
-{
-    @Persist(PersistenceConstants.FLASH)
-    private String message;
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public void setMessage(String message)
-    {
-        this.message = message;
-    }
-    
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java
deleted file mode 100644
index 97c5f8a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClassLoaderInspect.java
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.jar.JarEntry;
-
-public class ClassLoaderInspect
-{
-    private static final ClassLoader CLASS_LOADER = Thread.currentThread().getContextClassLoader();
-
-    private ClassLoader loader;
-
-    @Persist
-    private String resource;
-
-    @Component
-    private Form search;
-
-    @Persist
-    private List<URL> URLs;
-
-    @Persist
-    private boolean showMatches;
-
-    private URL URL;
-
-    private JarEntry jarEntry;
-
-    public URL getURL()
-    {
-        return URL;
-    }
-
-    public void setURL(URL url)
-    {
-        URL = url;
-    }
-
-    public ClassLoader getClassLoader()
-    {
-        return CLASS_LOADER;
-    }
-
-    public ClassLoader getLoader()
-    {
-        return loader;
-    }
-
-    public void setLoader(ClassLoader loader)
-    {
-        this.loader = loader;
-    }
-
-    public List<ClassLoader> getLoaders()
-    {
-        List<ClassLoader> result = CollectionFactory.newList();
-
-        ClassLoader current = getClass().getClassLoader();
-
-        while (current != null)
-        {
-            result.add(0, current);
-
-            current = current.getParent();
-        }
-
-        return result;
-    }
-
-    public int getListSize()
-    {
-        return URLs == null ? 0 : URLs.size();
-    }
-
-    void onFailure()
-    {
-        showMatches = false;
-        URLs = null;
-    }
-
-    void onSuccess()
-    {
-        showMatches = false;
-
-        URLs = null;
-
-        try
-        {
-            List<URL> urls = CollectionFactory.newList();
-
-            Enumeration<URL> e = CLASS_LOADER.getResources(resource);
-
-            while (e.hasMoreElements())
-                urls.add(e.nextElement());
-
-            URLs = urls;
-
-            showMatches = true;
-        }
-        catch (Exception ex)
-        {
-            String message = ex.getMessage();
-
-            if (InternalUtils.isBlank(message))
-                message = ex.getClass().getName();
-
-            search.recordError(message);
-        }
-    }
-
-    public String getResource()
-    {
-        return resource;
-    }
-
-    public void setResource(String resource)
-    {
-        this.resource = resource;
-    }
-
-    public List<URL> getURLs()
-    {
-        return URLs;
-    }
-
-    public boolean getShowMatches()
-    {
-        return showMatches;
-    }
-
-    public String getContentStreamContents()
-    {
-        StringBuilder builder = new StringBuilder();
-
-        try
-        {
-            InputStream is = URL.openStream();
-            InputStreamReader reader = new InputStreamReader(is);
-
-            char[] buffer = new char[1000];
-
-            while (true)
-            {
-                int length = reader.read(buffer);
-
-                if (length < 0)
-                    break;
-
-                builder.append(buffer, 0, length);
-            }
-
-            reader.close();
-
-            return builder.toString();
-        }
-        catch (Exception ex)
-        {
-            return ex.getMessage();
-        }
-    }
-
-    public List<JarEntry> getJarEntries()
-    {
-        try
-        {
-            URLConnection rawConnection = URL.openConnection();
-
-            JarURLConnection jarConnection = (JarURLConnection) rawConnection;
-
-            JarEntry rootEntry = jarConnection.getJarEntry();
-
-            List<JarEntry> result = CollectionFactory.newList();
-
-            if (rootEntry.isDirectory())
-            {
-                Enumeration<JarEntry> e = jarConnection.getJarFile().entries();
-
-                while (e.hasMoreElements())
-                    result.add(e.nextElement());
-            }
-            else
-            {
-                result.add(rootEntry);
-            }
-
-            return result;
-        }
-        catch (Exception ex)
-        {
-            return null;
-        }
-
-    }
-
-    public URLConnection getURLConnection()
-    {
-        try
-        {
-            return URL.openConnection();
-        }
-        catch (IOException ex)
-        {
-            return null;
-        }
-    }
-
-    public JarEntry getJarEntry()
-    {
-        return jarEntry;
-    }
-
-    public void setJarEntry(JarEntry jarEntry)
-    {
-        this.jarEntry = jarEntry;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CleanCacheDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CleanCacheDemo.java
deleted file mode 100644
index 0bc3b42..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/CleanCacheDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Cached;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.Zone;
-
-public class CleanCacheDemo
-{
-    @Component
-    private Zone aZone;
-
-    Object onActionFromUpdateZone()
-    {
-        return aZone;
-    }
-
-    @Cached
-    public long getTimeNanos()
-    {
-        return System.nanoTime();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.java
deleted file mode 100644
index 0fb1471..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-
-/**
- * Demonstrates client-side field format validation.
- */
-public class ClientFormatDemo
-{
-    @Property
-    @Validate("required,min=1")
-    private int quantity;
-
-    @Property
-    @Validate("required,min=0")
-    private float amount;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientNumericValidationDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientNumericValidationDemo.java
deleted file mode 100644
index 78683fb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientNumericValidationDemo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PersistentLocale;
-
-import java.util.Locale;
-
-public class ClientNumericValidationDemo
-{
-    @Persist
-    @Property
-    private long longValue;
-
-    @Persist
-    @Property
-    private double doubleValue;
-
-    @Inject
-    private PersistentLocale persistentLocale;
-
-    void onActionFromReset()
-    {
-        longValue = 1000;
-        doubleValue = 1234.67;
-
-        persistentLocale.set(Locale.ENGLISH);
-    }
-
-    void onActionFromGerman()
-    {
-        persistentLocale.set(Locale.GERMAN);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientPersistenceDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientPersistenceDemo.java
deleted file mode 100644
index f047851..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ClientPersistenceDemo.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-
-public class ClientPersistenceDemo
-{
-    @Persist("client")
-    private Object persistedValue;
-
-    @Inject
-    private Request request;
-
-    public Object getPersistedValue()
-    {
-        return persistedValue;
-    }
-
-    public boolean getSessionExists()
-    {
-        return session() != null;
-    }
-
-    void onActionFromStoreString()
-    {
-        persistedValue = "A String";
-    }
-
-    void onActionFromStoreBad()
-    {
-        persistedValue = new Runnable()
-        {
-            public void run()
-            {
-            }
-        };
-    }
-
-    void onActionFromNixSession()
-    {
-        if (getSessionExists() && !session().isInvalidated())
-        {
-            session().invalidate();
-        }
-    }
-
-    private Session session()
-    {
-        return request.getSession(false);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentParameter.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentParameter.java
deleted file mode 100644
index b7d3d76..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentParameter.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class ComponentParameter
-{
-    @Persist("flash")
-    private String message;
-
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    void onActionFromBlockAction()
-    {
-        message = "Link was clicked.";
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java
deleted file mode 100644
index 83beec6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ComponentsNotInTemplateDemo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-
-public class ComponentsNotInTemplateDemo
-{
-    @Component
-    private BeanEditForm form;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Countdown.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Countdown.java
deleted file mode 100644
index 2f555a2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Countdown.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.integration.app1.components.Count;
-
-public class Countdown
-{
-    @SuppressWarnings("unused")
-    @Component(parameters =
-            { "start=10", "end=1", "value=countValue" })
-    private Count count;
-
-    private int countValue;
-
-    public int getCountValue()
-    {
-        return countValue;
-    }
-
-    public void setCountValue(int countValue)
-    {
-        this.countValue = countValue;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
deleted file mode 100644
index 4af588c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldAjaxFormLoop.java
+++ /dev/null
@@ -1,87 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.DateHolder;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-public class DateFieldAjaxFormLoop
-{
-    @Persist
-    private Map<Integer, DateHolder> database;
-
-    @Property
-    private DateHolder current;
-
-    void beginRender()
-    {
-        if (database == null)
-            database = CollectionFactory.newMap();
-    }
-
-
-    public List<DateHolder> getDateHolders()
-    {
-        List<DateHolder> result = CollectionFactory.newList(database.values());
-
-        Collections.sort(result, new Comparator<DateHolder>()
-        {
-            public int compare(DateHolder o1, DateHolder o2)
-            {
-                return o1.getId() - o2.getId();
-            }
-        });
-
-        return result;
-    }
-
-    public PrimaryKeyEncoder<Integer, DateHolder> getDateHolderConverter()
-    {
-        DefaultPrimaryKeyEncoder<Integer, DateHolder> result =
-                new DefaultPrimaryKeyEncoder<Integer, DateHolder>(Integer.class);
-
-        for (DateHolder dh : getDateHolders())
-        {
-            result.add(dh.getId(), dh);
-        }
-
-        return result;
-    }
-
-    DateHolder onAddRowFromLoop()
-    {
-        DateHolder dh = new DateHolder();
-
-        dh.setId(database.size() + 1);
-
-        database.put(dh.getId(), dh);
-
-        return dh;
-    }
-
-    void onRemoveRowFromLoop(DateHolder holder)
-    {
-        database.remove(holder.getId());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java
deleted file mode 100644
index 5e5156c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DateFieldDemo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PersistentLocale;
-
-import java.text.DateFormat;
-import java.text.SimpleDateFormat;
-import java.util.Date;
-import java.util.Locale;
-
-public class DateFieldDemo
-{
-    @Persist
-    private Date birthday;
-
-    @Persist
-    private Date asteroidImpact;
-
-    @Inject
-    private PersistentLocale persistentLocale;
-
-    @Validate("required")
-    public Date getBirthday()
-    {
-        return birthday;
-    }
-
-    public void setBirthday(Date birthday)
-    {
-        this.birthday = birthday;
-    }
-
-    public DateFormat getDateFormat()
-    {
-        return new SimpleDateFormat("MM/dd/yyyy");
-    }
-
-    @Validate("required")
-    public Date getAsteroidImpact()
-    {
-        return asteroidImpact;
-    }
-
-    public void setAsteroidImpact(Date asteroidImpact)
-    {
-        this.asteroidImpact = asteroidImpact;
-    }
-
-    void onActionFromClear()
-    {
-        birthday = null;
-        asteroidImpact = null;
-    }
-
-    void onActionFromEnglish() { persistentLocale.set(Locale.ENGLISH); }
-
-    void onActionFromFrench() { persistentLocale.set(Locale.FRENCH); }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Datum.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Datum.java
deleted file mode 100644
index 904512a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Datum.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-/**
- * This isn't a page class and doesn't belong here.
- */
-public class Datum
-{
-    protected int _value;
-
-    public int getValue()
-    {
-        return _value;
-    }
-
-    public void setValue(int value)
-    {
-        _value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DatumEditor.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DatumEditor.java
deleted file mode 100644
index 85d48b7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DatumEditor.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.Retain;
-
-public class DatumEditor
-{
-    @Retain
-    @Property(write = false)
-    private Datum datum = new Datum();
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DecorateComponentEventLinkDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DecorateComponentEventLinkDemo.java
deleted file mode 100644
index 35b66b0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DecorateComponentEventLinkDemo.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-
-
-public class DecorateComponentEventLinkDemo
-{
-    
-    @Property
-    @Persist
-    private boolean decorated;
-    
-    void onDecorateComponentEventLink(Link link, ComponentEventRequestParameters params)
-    {
-        link.addParameter("decorated", "true");
-    }
-   
-    
-    void onAction(@RequestParameter("decorated") boolean decorated)
-    {
-        this.decorated = decorated;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DecoratePageRenderLinkDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DecoratePageRenderLinkDemo.java
deleted file mode 100644
index 2bd8099..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DecoratePageRenderLinkDemo.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-
-
-public class DecoratePageRenderLinkDemo
-{
-    @Property
-    @Persist
-    private boolean decorated;
-
-    void onDecoratePageRenderLink(Link link, PageRenderRequestParameters params)
-    {
-        link.addParameter("decorated", "true");
-    }
-    
-    void onActivate(@RequestParameter(value="decorated", allowBlank=true) boolean decorated)
-    {
-        this.decorated = decorated;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DeleteFromGridDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DeleteFromGridDemo.java
deleted file mode 100644
index 4caee22..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DeleteFromGridDemo.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.List;
-
-public class DeleteFromGridDemo
-{
-    @Inject
-    private ToDoDatabase database;
-
-    private ToDoItem item;
-
-    void onActionFromSetup()
-    {
-        database.clear();
-
-        for (int i = 1; i <= 10; i++)
-        {
-            ToDoItem item = new ToDoItem();
-            item.setTitle(String.format("ToDo #%d", i));
-            item.setOrder(i);
-
-            database.add(item);
-        }
-    }
-
-    void onActionFromDelete(long id)
-    {
-        database.remove(id);
-    }
-
-    public List<ToDoItem> getItems()
-    {
-        return database.findAll();
-    }
-
-    public ToDoItem getItem()
-    {
-        return item;
-    }
-
-    public void setItem(ToDoItem item)
-    {
-        this.item = item;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DisabledFields.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DisabledFields.java
deleted file mode 100644
index a8061af..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DisabledFields.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.corelib.components.Submit;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-
-import java.util.Date;
-import java.util.List;
-
-public class DisabledFields
-{
-    private String stringValue;
-
-    private boolean flag;
-
-    private Date date;
-
-    private List<String> values;
-
-    @InjectComponent
-    @Property
-    private Submit submit;
-
-    @Validate("required")
-    public String getStringValue()
-    {
-        return stringValue;
-    }
-
-
-    public void setStringValue(String stringValue)
-    {
-        this.stringValue = stringValue;
-    }
-
-    public boolean isFlag()
-    {
-        return flag;
-    }
-
-    public void setFlag(boolean flag)
-    {
-        this.flag = flag;
-    }
-
-    public Date getDate()
-    {
-        return date;
-    }
-
-    public void setDate(Date date)
-    {
-        this.date = date;
-    }
-
-    public List<String> getValues()
-    {
-        return values;
-    }
-
-    public void setValues(List<String> values)
-    {
-        this.values = values;
-    }
-
-    public ValueEncoder getEncoder()
-    {
-        return new StringValueEncoder();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DiscardAfterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DiscardAfterDemo.java
deleted file mode 100644
index 1997487..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DiscardAfterDemo.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.annotations.DiscardAfter;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-
-public class DiscardAfterDemo
-{
-    @Property
-    @Persist
-    private String stringValue;
-    
-    @DiscardAfter
-    void onSelectedFromDiscard()
-    {
-        
-    }
-    
-    @DiscardAfter
-    void onSelectedFromDiscardWithCheckedException() throws IOException
-    {
-        throw new IOException("Oops! Error occured");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java
deleted file mode 100644
index 3184f10..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DupeMixinDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class DupeMixinDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DuplicateIds.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DuplicateIds.java
deleted file mode 100644
index 8375c15..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/DuplicateIds.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class DuplicateIds
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmbeddedComponentTypeConflict.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmbeddedComponentTypeConflict.java
deleted file mode 100644
index 7515cbc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmbeddedComponentTypeConflict.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.annotations.Component;
-
-public class EmbeddedComponentTypeConflict
-{
-    @Component(type = "textfield")
-    private Field input;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyLoopDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyLoopDemo.java
deleted file mode 100644
index 0256576..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EmptyLoopDemo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.Collections;
-import java.util.List;
-
-public class EmptyLoopDemo
-{
-    public List getEmptyList() { return Collections.emptyList(); }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EnvironmentalDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EnvironmentalDemo.java
deleted file mode 100644
index 71c76d7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EnvironmentalDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class EnvironmentalDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EventHandlerDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EventHandlerDemo.java
deleted file mode 100644
index ddb86c5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EventHandlerDemo.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.integration.app1.base.BaseEventHandlerDemo;
-
-public class EventHandlerDemo extends BaseEventHandlerDemo
-{
-    @SuppressWarnings("unused")
-    private void onAction()
-    {
-        addMethodName("child.onAction()");
-    }
-
-    @SuppressWarnings("unused")
-    private void onAction(String value)
-    {
-        addMethodName("child.onAction(String)");
-    }
-
-    @SuppressWarnings("unused")
-    private void onActionFromFred()
-    {
-        addMethodName("child.onActionFromFred()");
-    }
-
-    @SuppressWarnings("unused")
-    private void onActionFromFred(String value)
-    {
-        addMethodName("child.onActionFromFred(String)");
-    }
-
-    @OnEvent(value = "action")
-    void eventHandlerZeroChild()
-    {
-        addMethodName("child.eventHandlerZeroChild()");
-    }
-
-    @OnEvent(value = "action")
-    void eventHandlerOneChild(String value)
-    {
-        addMethodName("child.eventHandlerOneChild()");
-    }
-
-    @OnEvent(component = "fred")
-    void eventHandlerForFred()
-    {
-        addMethodName("child.eventHandlerForFred()");
-    }
-
-    public Object[] getTwoContext()
-    {
-        return new Object[] { 1, 2 };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EventMethodTranslate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EventMethodTranslate.java
deleted file mode 100644
index 21894e4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/EventMethodTranslate.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.annotations.Persist;
-
-public class EventMethodTranslate
-{
-    @Persist
-    private int count;
-
-    public int getCount()
-    {
-        return count;
-    }
-
-    public void setCount(int count)
-    {
-        this.count = count;
-    }
-
-    String onToClientFromCount()
-    {
-        if (count == 0) return "zero";
-
-        // Get the default behavior
-        return null;
-    }
-
-    Object onParseClientFromCount(String input) throws ValidationException
-    {
-        if (input == null || input.equals("")) return null;
-
-        // And it gets tricky because we probably should trim spaces!
-
-        if (input.equalsIgnoreCase("zero")) return 0;
-
-        if (input.equalsIgnoreCase("i")) throw new ValidationException("Rational numbers only, please.");
-
-        // Get the default behavior.
-
-        return null;
-    }
-
-    void onValidateFromCount(Integer count) throws ValidationException
-    {
-        // count may be null
-        if (count == null) return;
-
-        if (count.equals(13)) throw new ValidationException("Thirteen is an unlucky number.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ExceptionEventDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ExceptionEventDemo.java
deleted file mode 100644
index 53183a8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ExceptionEventDemo.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class ExceptionEventDemo
-{
-    @Persist("flash")
-    private String message;
-
-    @Persist
-    private boolean intercept;
-
-    public Object getInvalidContext()
-    {
-        return "abc";
-    }
-
-    void onActivate(float context)
-    {
-        message = "Activation context: " + context;
-    }
-
-    void onActionFromFail(float context)
-    {
-        message = "Event context: " + context;
-    }
-
-    Object onException(Throwable exception)
-    {
-        if (!intercept) return null;
-
-        message = "Exception: " + exception.getMessage();
-
-        return this;
-    }
-
-
-    void onActionFromEnable()
-    {
-        intercept = true;
-    }
-
-    void onActionFromDisable()
-    {
-        intercept = false;
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public boolean isIntercept()
-    {
-        return intercept;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Expansion.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Expansion.java
deleted file mode 100644
index 47e3176..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Expansion.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class Expansion
-{
-    public String getExpansionValue()
-    {
-        return "value provided by a template expansion";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ExpansionSubclass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ExpansionSubclass.java
deleted file mode 100644
index aee5145..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ExpansionSubclass.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class ExpansionSubclass extends Expansion
-{
-    @Override
-    public String getExpansionValue()
-    {
-        return "value provided, in the subclass, via a template expansion";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FailedInjectDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FailedInjectDemo.java
deleted file mode 100644
index 44406bf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FailedInjectDemo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class FailedInjectDemo
-{
-    @Inject
-    private StringBuffer buffer;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FieldAnnotationConflict.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FieldAnnotationConflict.java
deleted file mode 100644
index 0a4747a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FieldAnnotationConflict.java
+++ /dev/null
@@ -1,25 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Parameter;
-
-public class FieldAnnotationConflict
-{
-    @InjectPage
-    @Parameter
-    private FlashDemo flashDemo;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FlashDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FlashDemo.java
deleted file mode 100644
index a39990c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FlashDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Meta;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.base.BaseComponent;
-
-@Meta("tapestry.persistence-strategy=flash")
-public class FlashDemo extends BaseComponent
-{
-    @Persist
-    private String message;
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    void onAction()
-    {
-        message = "You clicked the link!";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormEncodingType.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormEncodingType.java
deleted file mode 100644
index 1f4ec49..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormEncodingType.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.services.FormSupport;
-
-public class FormEncodingType
-{
-    @Environmental
-    private FormSupport support;
-
-    public Renderable getForceEncodingType()
-    {
-        return new Renderable()
-        {
-            public void render(MarkupWriter writer)
-            {
-                support.setEncodingType("x-override");
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFieldOutsideForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFieldOutsideForm.java
deleted file mode 100644
index a9bef65..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFieldOutsideForm.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-
-public class FormFieldOutsideForm
-{
-    @Property
-    private int quantity;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFragmentDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFragmentDemo.java
deleted file mode 100644
index 6e880c6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFragmentDemo.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.app1.data.SubscribeData;
-
-public class FormFragmentDemo
-{
-    @Property
-    private SubscribeData subscribe;
-
-    @Property
-    private boolean subscribeToEmail, codeVisible, subVisible = true;
-
-    @Component(parameters =
-    { "clientValidation=false" })
-    private Form form;
-
-    @InjectPage
-    private FormFragmentOutput outputPage;
-
-    void onPrepare()
-    {
-        subscribe = new SubscribeData();
-    }
-
-    void onActionFromClear()
-    {
-        form.clearErrors();
-    }
-
-    Object onFailure()
-    {
-        throw new RuntimeException("Show me the Request!");
-    }
-
-    Object onSuccess()
-    {
-        return outputPage.initialize(subscribe);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFragmentOutput.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFragmentOutput.java
deleted file mode 100644
index d9ae92c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormFragmentOutput.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.SubscribeData;
-
-public class FormFragmentOutput
-{
-    @Persist
-    private SubscribeData subscribe;
-
-    FormFragmentOutput initialize(SubscribeData subscribe)
-    {
-        this.subscribe = subscribe;
-        return this;
-    }
-
-    public SubscribeData getSubscribe()
-    {
-        return subscribe;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
deleted file mode 100644
index 299c231..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormInjectorDemo.java
+++ /dev/null
@@ -1,138 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.annotations.Log;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.DoubleItem;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.Assert;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-public class FormInjectorDemo
-{
-    private static final long DEMO_CONTEXT_VALUE = System.currentTimeMillis();
-
-    @Property
-    private DoubleItem item;
-
-    @Persist
-    @Property(write = false)
-    private double sum;
-
-    private static final Map<Long, DoubleItem> DB = CollectionFactory.newConcurrentMap();
-
-    private static final AtomicLong ID_ALLOCATOR = new AtomicLong(System.currentTimeMillis());
-
-    private static class DoubleItemComparator implements Comparator<DoubleItem>
-    {
-        public int compare(DoubleItem o1, DoubleItem o2)
-        {
-            return (int) (o1.getId() - o2.getId());
-        }
-    }
-
-    public PrimaryKeyEncoder getEncoder()
-    {
-        return new PrimaryKeyEncoder<Long, DoubleItem>()
-        {
-            public Long toKey(DoubleItem value)
-            {
-                return value.getId();
-            }
-
-            public void prepareForKeys(List<Long> keys)
-            {
-            }
-
-            public DoubleItem toValue(Long key)
-            {
-                return DB.get(key);
-            }
-
-            public Class<Long> getKeyType()
-            {
-                return Long.class;
-            }
-        };
-    }
-
-    public long getDemoContextValue()
-    {
-        return DEMO_CONTEXT_VALUE;
-    }
-
-    @Log
-    public List<DoubleItem> getDoubleItems()
-    {
-        List<DoubleItem> items = CollectionFactory.newList(DB.values());
-
-        Collections.sort(items, new DoubleItemComparator());
-
-        return items;
-    }
-
-    Object onAddRow(long context)
-    {
-        Assert.assertEquals(context, DEMO_CONTEXT_VALUE,
-                            "Context value provided to AjaxFormLoop must be provided to the event handler method.");
-
-        DoubleItem item = new DoubleItem();
-        item.setId(ID_ALLOCATOR.incrementAndGet());
-
-        DB.put(item.getId(), item);
-
-        return item;
-    }
-
-    void onRemoveRow(DoubleItem item)
-    {
-        DB.remove(item.getId());
-    }
-
-    void onPrepareForSubmit()
-    {
-        sum = 0;
-    }
-
-    void onAfterSubmit()
-    {
-        sum += item.getValue();
-    }
-
-
-    void onActionFromReset()
-    {
-        DB.clear();
-    }
-
-    Object onPassivate()
-    {
-        return "FakePageActivationContextValue";
-    }
-
-    void onActivate(String context)
-    {
-        Assert.assertEquals(context, "FakePageActivationContextValue",
-                            "Page activation context was not passed through correctly.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormZoneDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormZoneDemo.java
deleted file mode 100644
index 8ad56f2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/FormZoneDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Zone;
-
-public class FormZoneDemo
-{
-    @Property
-    private Long longValue;
-
-    @InjectComponent
-    private Zone valueZone;
-
-    Object onSuccess()
-    {
-        return valueZone.getBody();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Fred.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Fred.java
deleted file mode 100644
index cdc7236..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Fred.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class Fred
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GetterMethodAlreadyExists.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GetterMethodAlreadyExists.java
deleted file mode 100644
index b55f5b8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GetterMethodAlreadyExists.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-
-public class GetterMethodAlreadyExists
-{
-    @Property
-    private String name;
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridDemo.java
deleted file mode 100644
index 00f6e48..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridDemo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.List;
-
-public class GridDemo
-{
-    @Inject
-    private MusicLibrary library;
-
-    private Track track;
-
-    @Component
-    private Grid grid;
-
-    public Track getTrack()
-    {
-        return track;
-    }
-
-    public void setTrack(Track track)
-    {
-        this.track = track;
-    }
-
-    public List<Track> getTracks()
-    {
-        return library.getTracks();
-    }
-
-    void onActionFromSortRating()
-    {
-        grid.getSortModel().updateSort("rating");
-    }
-
-    void onActionFromReset()
-    {
-        grid.reset();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridEnumDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridEnumDemo.java
deleted file mode 100644
index 72875b1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridEnumDemo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-/**
- * Used to demonstrate the built-in support for enum types.
- */
-public class GridEnumDemo
-{
-    @Inject
-    private ToDoDatabase database;
-
-    void onActionFromReset()
-    {
-        database.reset();
-    }
-
-    public ToDoDatabase getDatabase()
-    {
-        return database;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridFormDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridFormDemo.java
deleted file mode 100644
index de49f97..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridFormDemo.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.List;
-
-public class GridFormDemo
-{
-    @Inject
-    private ToDoDatabase database;
-
-    private ToDoItem item;
-
-    private List<ToDoItem> items;
-
-    void onSuccess()
-    {
-        // Here's the down side: we don't have a good way of identifying just what changed.
-        // If we provided our own GridDataSource, we would be able to update just the items
-        // currently visible. But as is, we have to update each one!
-
-        for (ToDoItem item : items)
-            database.update(item);
-    }
-
-    public List<ToDoItem> getItems()
-    {
-        if (items == null)
-            items = database.findAll();
-
-        return items;
-    }
-
-    public ToDoItem getItem()
-    {
-        return item;
-    }
-
-    public void setItem(ToDoItem item)
-    {
-        this.item = item;
-    }
-
-    void onActionFromReset()
-    {
-        database.clear();
-
-        for (int i = 0; i < 20; i++)
-        {
-            ToDoItem item = new ToDoItem();
-            item.setTitle("ToDo # " + (i + 1));
-            item.setOrder(i);
-
-            database.add(item);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridFormEncoderDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridFormEncoderDemo.java
deleted file mode 100644
index f129117..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridFormEncoderDemo.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.corelib.components.Grid;
-
-public class GridFormEncoderDemo extends GridFormDemo
-{
-    @InjectComponent
-    private Grid grid;
-
-    void setupRender()
-    {
-        if (grid.getSortModel().getSortConstraints().isEmpty())
-            grid.getSortModel().updateSort("title");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridRemoveReorderDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridRemoveReorderDemo.java
deleted file mode 100644
index 3a82b1f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridRemoveReorderDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class GridRemoveReorderDemo extends GridDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java
deleted file mode 100644
index 9b924a6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/GridSetDemo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Set;
-
-public class GridSetDemo
-{
-    @Inject
-    private MusicLibrary library;
-
-    private Track track;
-
-    public Track getTrack()
-    {
-        return track;
-    }
-
-    public void setTrack(Track track)
-    {
-        this.track = track;
-    }
-
-    public Set<Track> getTracks()
-    {
-        return CollectionFactory.newSet(library.getTracks());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HasBodyDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HasBodyDemo.java
deleted file mode 100644
index 11d7d6a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HasBodyDemo.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.runtime.Component;
-
-public class HasBodyDemo
-{
-
-    @InjectComponent
-    @Property
-    private Component nobody;
-
-    @InjectComponent
-    @Property
-    private Component somebody;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HiddenDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HiddenDemo.java
deleted file mode 100644
index 451fa5c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HiddenDemo.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Property;
-
-public class HiddenDemo
-{
-    @Property
-    private int stored;
-
-    @InjectPage
-    private HiddenDemoOutput hiddenDemoOutput;
-
-    void onActivate(int stored)
-    {
-        this.stored = stored;
-    }
-
-    Object onSuccessFromForm()
-    {
-        hiddenDemoOutput.setStored(stored);
-
-        return hiddenDemoOutput;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HiddenDemoOutput.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HiddenDemoOutput.java
deleted file mode 100644
index 4ef615f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/HiddenDemoOutput.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.Persist;
-
-public class HiddenDemoOutput
-{
-    @Persist(PersistenceConstants.FLASH)
-    private Object stored;
-
-    public Object getStored()
-    {
-        return stored;
-    }
-
-    public void setStored(Object stored)
-    {
-        this.stored = stored;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ImageSubmitDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ImageSubmitDemo.java
deleted file mode 100644
index 4d57177..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ImageSubmitDemo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class ImageSubmitDemo
-{
-    @Property
-    @Validate("required")
-    @Persist(PersistenceConstants.FLASH)
-    private String value;
-    
-    @Property
-    @Persist(PersistenceConstants.FLASH)
-    private boolean eventfired;
-    
-    void onSelectedFromMySubmit()
-    {
-        eventfired = true;
-    }
-    
-    Object onSuccess()
-    {
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
deleted file mode 100644
index 5407466..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Index.java
+++ /dev/null
@@ -1,519 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-/**
- * Have to start somewhere!
- */
-public class Index
-{
-    @Persist(PersistenceConstants.FLASH)
-    private String alert;
-
-    public static class Item implements Comparable<Item>
-    {
-        private final String pageName;
-        private final String label;
-        private final String description;
-
-        public Item(String pageName, String label, String description)
-        {
-            this.pageName = pageName;
-            this.label = label;
-            this.description = description;
-        }
-
-        public String getPageName()
-        {
-            return pageName;
-        }
-
-        public String getLabel()
-        {
-            return label;
-        }
-
-        public String getDescription()
-        {
-            return description;
-        }
-
-        public int compareTo(Item o)
-        {
-            return label.compareTo(o.label);
-        }
-    }
-
-    private static final List<Item> ITEMS = CollectionFactory
-            .newList(
-
-                    new Item("PACAnnotationDemo", "PageActivationContext Demo",
-                            "Shows that @PageActivationContext fields are set before calls to the activate event handler."),
-
-                    new Item("PublicFieldAccessDemo", "Public Field Access Demo", "Demonstrates TAP5-1222 fix"),
-
-                    new Item("ActivationRequestParameterDemo", "ActivationRequestParameter Annotation Demo",
-                            "Use of @ActivationRequestParameter to encode page state into query parameters"),
-
-                    new Item("LibraryMessagesDemo", "Library Messages Demo",
-                            "Demo ability to contribute additional message catalog resources to the application global catalog."),
-
-                    new Item("MultiZoneUpdateInsideForm", "MultiZone Update inside a Form",
-                            "Update multiple zones within a single Form."),
-
-                    new Item("ZoneFormUpdateDemo", "Zone/Form Update Demo", "Updating a Zone inside a Form"),
-
-                    new Item("RenderNotificationDemo", "RenderNotification Demo", "Use of RenderNotification mixin"),
-
-                    new Item("InjectMessagesDemo", "Inject Global Messages into Service Demo",
-                            "Ensure that it is possible to inject the application global message catalog into a service"),
-
-                    new Item("ReloadDemo", "Reloadable Service Implementation Demo",
-                            "Used when manually testing service reloads"),
-
-                    new Item("RequestParameterDemo", "RequestParameter Annotation Demo",
-                            "Use of @RequestParameter annotation on event handler method parameters"),
-
-                    new Item("CancelDemo", "Cancel Demo", "Use of the cancel option with Submit"),
-
-                    new Item("PageResetDemo", "PageReset Annotation Demo",
-                            "Use of PageReset annotation to re-initialize page state"),
-
-                    new Item("TestOnlyServiceDemo", "Test Only Service Demo",
-                            "IoC module available via web.xml configuration"),
-
-                    new Item("RenderObjectExceptionDemo", "RenderObject Exception Demo",
-                            "Demonstrate how exceptions when rendering default objects are displayed."),
-
-                    new Item("MultiLevelInheritDemo", "Multi-Level Inherit Demo",
-                            "Use of inherit: binding prefix across three levels"),
-
-                    new Item("HiddenDemo", "Hidden Demo", "Demo the use of the Hidden component."),
-
-                    new Item("FormZoneDemo", "Form Zone Demo", "Use a form to update a zone."),
-
-                    new Item("ZoneUpdateNamespace", "Zone/Namespace Interaction", "Prove that TAP5-573 is fixed"),
-
-                    new Item("AbstractComponentDemo", "Abstract Component Demo", "Error when a component is abstract"),
-
-                    new Item("TemplateOverrideDemo", "Template Override Demo",
-                            "Child component extends and overrides parent template."),
-
-                    new Item("MultiZoneUpdateDemo", "Multiple Zone Update Demo",
-                            "A single request can now update multiple Zones"),
-
-                    new Item("LinkSubmitInZoneDemo", "LinkSubmit inside Zone",
-                            "Ensure that a LinkSubmit works correctly when its containing Form updates a Zone"),
-
-                    new Item("SlowAjaxDemo", "Slow Ajax Demo",
-                            "Handling of client-side Ajax before the page is fully loaded"),
-
-                    new Item("ProgressiveDemo", "ProgressiveDisplay Demo", "Progressive Enhancement via a component"),
-
-                    new Item("ClientNumericValidationDemo", "Client-Side Numeric Validation",
-                            "Client-side locale-specific validation"),
-
-                    new Item("PublishParametersDemo", "Publish Parameters Demo",
-                            "Use of @Component.publishParameters attribute."),
-
-                    new Item("LinkSubmitDemo", "LinkSubmit Demo", "JavaScript LinkSubmit component"),
-
-                    new Item("LinkSubmitWithoutValidatorDemo", "LinkSubmit Without Validator Demo",
-                            "Demonstrates that the LinkSubmit component is working without a validator on any of fields in the form"),
-
-                    new Item("PerFormValidationMessageDemo", "Per-Form Validation Messages",
-                            "Per-form configuration of validation messages and constraints."),
-
-                    new Item("EmptyLoopDemo", "Empty Loop Demo", "Use of empty parameter with the Loop component."),
-
-                    new Item("BlankPasswordDemo", "Blank Password Demo",
-                            "Show that a blank value in a PasswordField does not update the server side value."),
-
-                    new Item("GridFormEncoderDemo", "Grid Form Encoder Demo",
-                            "Grid inside a Form using the PrimaryKeyEncoder option"),
-
-                    new Item("DateFieldAjaxFormLoop", "DateField inside AjaxFormLoop",
-                            "Show that DateField component works correctly inside AjaxFormLoop"),
-
-                    new Item("NestedForm", "Nested Form Demo", "Error when a Form is nested inside another Form."),
-
-                    new Item("UnhandledEventDemo", "Unhandled Event Demo",
-                            "Events that don't have matching event handlers cause exceptions"),
-
-                    new Item("PrimitiveDefaultDemo", "Primitive Default Demo",
-                            "Primitive value returned from parameter default method"),
-
-                    new Item("ValidateFormValidationExceptionDemo", "ValidationForm ValidationException Demo",
-                            "Throwing a ValidationException from the validateForm event handler."),
-
-                    new Item("ClientFormatDemo", "Client Format Validation", "Client-side input format validation"),
-
-                    new Item("ShortGrid", "Short Grid",
-                            "Grid where the number of claimed rows is less than the number of actual rows"),
-
-                    new Item("NullParameterDemo", "Null Parameter Demo", "Binding a not-null parameter to null."),
-
-                    new Item("nestedbeaneditor", "Nested BeanEditor",
-                            "BeanEditor as override for property editor in BeanEditForm"),
-
-                    new Item("actionpage", "Action Page", "tests fixture for ActionLink component"),
-
-                    new Item("cleancachedemo", "Clean Cache Demo", "cache cleared properly during Ajax calls"),
-
-                    new Item("numberbeaneditordemo", "Number BeanEditor Demo",
-                            "use of nulls and wrapper types with BeanEditor"),
-
-                    new Item("forminjectordemo", "FormInjector Demo", "extending a form dynamically via Ajax"),
-
-                    new Item("music", "Music Page", "demo handling of edge cases of page naming"),
-
-                    new Item("PersistentDemo", "Persistent Demo", "storing and clearing persistent properties"),
-
-                    new Item("ActionViaLinkDemo", "Action via Link Demo", "tests creating an action link explicitly"),
-
-                    new Item("FormFragmentDemo", "Form Fragment Demo", "page with dynamic form sections"),
-
-                    new Item("BooleanDemo", "Boolean Property Demo",
-                            "demo boolean properties using both is and get prefixes"),
-
-                    new Item("DeleteFromGridDemo", "Delete From Grid", "demo deleting items form a Grid"),
-
-                    new Item("RenderErrorDemo", "Render Error Demo", "reporting of errors while rendering"),
-
-                    new Item("nested/AssetDemo", "AssetDemo", "declaring an image using Assets"),
-
-                    new Item("nested/ActionDemo", "Action With Context Demo",
-                            "using action links with context on page with activation context"),
-
-                    new Item("blockdemo", "BlockDemo", "use of blocks to control rendering"),
-
-                    new Item("countdown", "Countdown Page", "defining component using @Component annotation"),
-
-                    new Item("injectdemo", "Inject Demo", "use of various kinds of injection"),
-
-                    new Item("instancemixin", "InstanceMixin", "mixin added to a particular component instance"),
-
-                    new Item("TextFieldWrapperTypeDemo", "TextField Wrapper Types",
-                            "use of TextField to edit numeric wrapper types (not primitives) "),
-
-                    new Item("EnvironmentalDemo", "Environmental Annotation Usage",
-                            "Storing and retrieving Environmental values"),
-
-                    new Item("Expansion", "Expansion Page", "Use of expansions in templates"),
-
-                    new Item("ExpansionSubclass", "ExpansionSubclass",
-                            "components can inherit templates from base classes"),
-
-                    new Item("Localization", "Localization", "access localized messages from the component catalog"),
-
-                    new Item("NumberSelect", "NumberSelect", "passivate/activate page context demo"),
-
-                    new Item("ParameterConflict", "Template Overridden by Class Page",
-                            "Parameters in the class override those in the template"),
-
-                    new Item("ParameterDefault", "ParameterDefault", "defaulter methods for component parameters"),
-
-                    new Item("passwordfielddemo", "PasswordFieldDemo", "test for the PasswordField component"),
-
-                    new Item("rendercomponentdemo", "RenderComponentDemo",
-                            "components that \"nominate\" other components to render"),
-
-                    new Item("renderphaseorder", "RenderPhaseOrder",
-                            "order of operations when invoking render phase methods"),
-
-                    new Item("simpleform", "SimpleForm", "first pass at writing Form and TextField components"),
-
-                    new Item("validform", "ValidForm", "server-side input validation"),
-
-                    new Item("ToDoListVolatile", "ToDo List (Volatile)", "Loops and Submit inside Form, volatile mode"),
-
-                    new Item("MissingTemplate", "Missing Template Demo",
-                            "Demo for what happens when a template is not found for a page"),
-
-                    new Item("nested/zonedemo", "Zone Demo", "dynamic updates within a page"),
-
-                    new Item("todolist", "ToDo List", "Loops and Submit inside Form using primary key encoder"),
-
-                    new Item("flashdemo", "FlashDemo", "demonstrate 'flash' persistence"),
-
-                    new Item("beaneditordemo", "BeanEditor Demo", "demonstrate the BeanEditor mega-component"),
-
-                    new Item("pageloadeddemo", "PageLoaded Demo", "shows that page lifecycle methods are invoked"),
-
-                    new Item("griddemo", "Grid Demo", "default Grid component"),
-
-                    new Item("nullgrid", "Null Grid", "handling of null source for Grid"),
-
-                    new Item("gridsetdemo", "Grid Set Demo", "handling of Set sources for Grid"),
-
-                    new Item("gridenumdemo", "Grid Enum Demo", "handling of enum types in the Grid"),
-
-                    new Item("GridRemoveReorderDemo", "Grid Remove/Reorder Demo",
-                            "handling of remove and reorder parameters"),
-
-                    new Item("protected", "Protected Page",
-                            "Demonstrate result of non-void return from a page's activate method"),
-
-                    new Item("Kicker", "Kicker", "demos complex page and component context in links"),
-
-                    new Item("simpletrackgriddemo", "SimpleTrack Grid Demo",
-                            "customizing the model for a Grid around an interface"),
-
-                    new Item("pagelinkcontext", "PageLink Context Demo",
-                            "passing explicit context in a page render link"),
-
-                    new Item("pagecontextinform", "Page Context in Form", "passivate/activate page context in Form"),
-
-                    new Item("ValidBeanEditorDemo", "Client Validation Demo", "BeanEditor with validation enabled"),
-
-                    new Item("Unreachable", "Unreachable Page", "page not reachable due to IgnoredPathsFilter"),
-
-                    new Item("renderabledemo", "Renderable Demo",
-                            "shows that render phase methods can return a Renderable"),
-
-                    new Item("inheritedbindingsdemo", "Inherited Bindings Demo",
-                            "Tests for components that inherit bindings from containing components"),
-
-                    new Item("ClientPersistenceDemo", "Client Persistence Demo",
-                            "component field values persisted on the client side"),
-
-                    new Item("attributeExpansionsDemo", "Attribute Expansions Demo",
-                            "use expansions inside attributes of ordinary elements"),
-
-                    new Item("PaletteDemo", "Palette Demo", "multiple selection component"),
-
-                    new Item("ReturnTypes", "Return Types", "tests various event handler return types"),
-
-                    new Item("FormEncodingType", "Form Encoding Type",
-                            "Test ability to set an encoding type for a Form"),
-
-                    new Item("RadioDemo", "RadioDemo", "Use of the RadioGroup and Radio components"),
-
-                    new Item("RegexpDemo", "Regexp Demo", "Use of the Regexp validator"),
-
-                    new Item("BeanEditRemoveReorder", "BeanEdit Remove/Reorder",
-                            "Use of the remove and reorder parameters with BeanEditForm"),
-
-                    new Item("MultiBeanEditDemo", "MultiBeanEdit Demo",
-                            "Multiple BeanEditor components in a single form"),
-
-                    new Item("GridFormDemo", "Grid Form Demo", "Grid operating inside a Form"),
-
-                    new Item("DateFieldDemo", "DateField Demo", "using DateField by itself on a page"),
-
-                    new Item("BeanEditDateDemo", "BeanEditor / Date Demo",
-                            "Use of date properties inside BeanEditor and BeanDisplay"),
-
-                    new Item("eventmethodtranslate", "EventMethod Translator",
-                            "Demo ability to provide toclient and parseclient event handler methods"),
-
-                    new Item("autocompletedemo", "Autocomplete Mixin Demo",
-                            "Demo the autocomplete mixin for text fields"),
-
-                    new Item("componentparameter", "ComponentParameter Demo",
-                            " Demo using a component type as a parameter type and succesfuly passing a component"),
-
-                    new Item("inheritinformalsdemo", "Inherit Informal Parameters Demo",
-                            "Demo a component which inherits informal parameters from its container"),
-
-                    new Item("disabledfields", "Disabled Fields",
-                            "Demonstrate a bunch of disabled fields, to verify that the RenderDisabled mixin works and is being used properly"),
-
-                    new Item("BeanEditorOverride", "BeanEditor Override",
-                            "Property editor overrides work for the BeanEditor component itself (not just the BeanEditForm component)"),
-
-                    new Item("varbindingdemo", "Var Binding Demo", "use of the var: binding prefix"),
-
-                    new Item("leangriddemo", "Lean Grid Demo",
-                            "Grid component with lean parameter turned on, to eliminate CSS class attributes in TD and TH elements"),
-
-                    new Item("blockcaller", "Action Links off of Active Page",
-                            "Actions can exist on pages other than the active page, via Blocks."),
-
-                    new Item("unlessdemo", "Unless Demo", "use of the Unless component"),
-
-                    new Item("MagicValueEncoder", "Magic ValueEncoder Demo",
-                            "Automatic creation of ValueEncoder using the TypeCoercer"),
-
-                    new Item("NullStrategyDemo", "Null Field Strategy Demo", "use of the nulls parameter of TextField"),
-
-                    new Item("OverrideValidationDecorator", "Override Validation Decorator",
-                            "override the default validation decorator"),
-
-                    new Item("ExceptionEventDemo", "Exception Event Demo", "handling component event exceptions"),
-
-                    new Item("AddedGridColumnsDemo", "Added Grid Columns Demo", "programatically adding grid columns"),
-
-                    new Item("PrimitiveArrayParameterDemo", "Primitive Array Parameter Demo",
-                            "use primitive array as parameter type"),
-
-                    new Item("RenderPhaseMethodExceptionDemo", "Render Phase Method Exception Demo",
-                            "render phase methods may throw checked exceptions"),
-
-                    new Item("TrackEditor", "Generic Page Class Demo",
-                            "demo use of generics with component classes and, particularily, with property types"),
-
-                    new Item("IndirectProtectedFields", "Protected Fields Demo",
-                            "demo exception when component class contains protected fields"),
-
-                    new Item("injectcomponentdemo", "Inject Component Demo", "inject component defined in template"),
-
-                    new Item("cachedpage", "Cached Annotation", "Caching method return values"),
-
-                    new Item("cachedpage2", "Cached Annotation2", "Caching method return values w/ inheritence"),
-
-                    new Item("inplacegriddemo", "In-Place Grid Demo", "Grid that updates in-place using Ajax"),
-
-                    new Item("methodadvicedemo", "Method Advice Demo", "Advising component methods."),
-
-                    new Item("HasBodyDemo", "Has Body Demo", "Verify the hasBody() method of ComponentResources"),
-
-                    new Item("BeanEditorBeanEditContext", "BeanEditor BeanEditContext",
-                            "BeanEditContext is pushed into enviroment by BeanEditor."),
-
-                    new Item("InformalParametersDemo", "Informal Parameters Demo",
-                            "Access to informal parameters names and values"),
-
-                    new Item("FormFieldOutsideForm", "Form Field Outside Form",
-                            "Nice exception message for common problem of form fields outside forms"),
-
-                    new Item("SubmitWithContext", "Submit With Context", "Providing a context for Submit component"),
-
-                    new Item("MessageConstraintGeneratorDemo", "Validation Constraints From Messages",
-                            "Providing validators to apply from a properties file"),
-
-                    new Item("RenderClientIdDemo", "RenderClientId Mixin",
-                            "Force render of client-side id of a client element via the RenderClientId mixin"),
-
-                    new Item("BindParameterDemo", "BindParameter mixin annotation",
-                            "Accessing component parameter values from a mixin"),
-
-                    new Item("BindParameterNoSuchParameter", "BindParameter error handling",
-                            "BindParameter throws exception if the containing component doesn't have a matching parameter"),
-
-                    new Item("BindParameterOnComponent", "BindParameter on component",
-                            "Verify that BindParameter can only be used on mixin fields"),
-
-                    new Item("MixinOrderingDemo", "Mixin Ordering Demo", "Various mixin-ordering scenarios"),
-
-                    new Item(
-                            "MissingComponentClassException",
-                            "Missing Component Class Exception",
-                            "Meaningful exception message thrown when component class can't be determined from template or field in containing component."),
-
-                    new Item("SessionAttributeDemo", "SessionAttribute Demo",
-                            "Annotation to map a field to a specific session attribute"),
-
-                    new Item("BeanEditCalendarDemo", "BeanEditor / Calendar Demo",
-                            "Use of calendar properties inside BeanEditor and BeanDisplay"),
-
-                    new Item("TriggerDemo", "Trigger Demo", "Use of Trigger component"),
-
-                    new Item("ImageSubmitDemo", "Submit with an Image Demo",
-                            "Make sure that submit with the image parameter set triggers the 'selected' event."),
-
-                    new Item("SelectZoneDemo", "Select Zone Demo", "Use a Select component to update a zone."),
-
-                    new Item("AssetProtectionDemo", "Asset Protection Demo",
-                            "AssetProtectionDispatcher is properly contributed and functioning"),
-
-                    new Item("BeanDisplayEnumDemo", "BeanDisplay Enum Demo",
-                            "User represenation of enum values is correctly read from messages"),
-
-                    new Item("unavailablecomponentdemo", "Report Location of Unavailable Component",
-                            "Report Location of Unavailable Component"),
-
-                    new Item("discardafterdemo", "@DiscardAfter Demo", "Demo using @DiscardAfter annotation"),
-
-                    new Item("SelectDemo", "Select Demo", "Validation decoration for Select"),
-
-                    new Item("SelectModelFromObjectsAndPropertyNameDemo", "SelectModel from objects and property name",
-                            "Creating a SelectModel from a list of objects and a label property name"),
-
-                    new Item("DecoratePageRenderLinkDemo", "Decorate Page Render Link Demo",
-                            "Decorating page render links"),
-
-                    new Item("DecorateComponentEventLinkDemo", "Decorate Component Event Link Demo",
-                            "Decorating event links"),
-
-                    new Item("ValidatorMacroDemo", "Validator Macro Demo", "Using validator macros"),
-    
-                    new Item("NestedFormFragment","Nested Form Fragment Demo","Nesting Form Fragments work properly")
-
-            );
-
-    static
-    {
-        Collections.sort(ITEMS);
-    }
-
-    @Property
-    private Item item;
-
-    @InjectPage
-    private SecurePage securePage;
-
-    @Inject
-    private ComponentResources resources;
-
-    public List<Item> getItems()
-    {
-        return ITEMS;
-    }
-
-    Object onActionFromSecurePage()
-    {
-        return securePage.initialize("Triggered from Index");
-    }
-
-    public Link getInjectDemoLink()
-    {
-        return resources.createPageLink(InjectDemo.class, false);
-    }
-
-    public List getDemoContext()
-    {
-        return Arrays.asList(1, 2, 3);
-    }
-
-    /* This will fail, because component classes are not instantiable. */
-    public Object onActionFromInstantiatePage()
-    {
-        return new Music();
-    }
-
-    public void setAlert(String alert)
-    {
-        this.alert = alert;
-    }
-
-    public String getAlert()
-    {
-        return alert;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/IndirectProtectedFields.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/IndirectProtectedFields.java
deleted file mode 100644
index 2282d60..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/IndirectProtectedFields.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-
-public class IndirectProtectedFields
-{
-    @InjectPage
-    private ProtectedFields protectedFields;
-
-    Object onActionFromGo()
-    {
-        return protectedFields;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InformalParametersDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InformalParametersDemo.java
deleted file mode 100644
index fdf158b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InformalParametersDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class InformalParametersDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InheritInformalsDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InheritInformalsDemo.java
deleted file mode 100644
index 2b0e217..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InheritInformalsDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class InheritInformalsDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InheritedBindingsDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InheritedBindingsDemo.java
deleted file mode 100644
index 33ba2da..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InheritedBindingsDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class InheritedBindingsDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectComponentDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectComponentDemo.java
deleted file mode 100644
index 9df247e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectComponentDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.corelib.components.Form;
-
-public class InjectComponentDemo
-{
-
-    @InjectComponent
-    private Form form;
-
-    @InjectComponent("form")
-    private Form form2;
-
-    public String getInjectComponentId()
-    {
-        return Form.class.getName() + "[" + form.getClientId() + "--" + form2.getClientId() + "]";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectComponentMismatch.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectComponentMismatch.java
deleted file mode 100644
index 93cc014..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectComponentMismatch.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright  2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.corelib.components.Form;
-
-public class InjectComponentMismatch
-{
-    @InjectComponent
-    private Form form;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectContainerMismatch.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectContainerMismatch.java
deleted file mode 100644
index b3bc15b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectContainerMismatch.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.annotations.Mixin;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-
-public class InjectContainerMismatch
-{
-    /**
-     * This mixin only works with components of type {@link Field}. That's the mismatch right there.
-     */
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderDisabled renderDisabled;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectDemo.java
deleted file mode 100644
index 907e5f4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectDemo.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.services.French;
-import org.apache.tapestry5.integration.app1.services.Greeter;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.services.BindingSource;
-import org.apache.tapestry5.services.Request;
-
-public class InjectDemo
-{
-    // Named --- now demonstrating case insensitivity
-    // Now vestigial!
-    @Inject
-    private Request request;
-
-    @Inject
-    @Symbol("app.injected-symbol")
-    private String injectedSymbol;
-
-    // Via ComponentResourcesInjectionProvider
-    @Inject
-    private ComponentResources resources;
-
-    // Via ??? -- have to ensure that BindingSource
-    // stays unique.
-    @Inject
-    private BindingSource bindingSource;
-
-    @InjectPage
-    private Fred fred;
-
-    // Again, demonstrates case insensitivity
-    @InjectPage("barney")
-    private Runnable barney;
-
-    @Inject
-    @French
-    private Greeter greeter;
-
-    @Property
-    @InjectService("MusicLibrary")
-    private MusicLibrary musicLibrary;
-
-    public String getGreeting()
-    {
-        return greeter.getGreeting();
-    }
-
-    public BindingSource getBindingSource()
-    {
-        return bindingSource;
-    }
-
-    public Request getRequest()
-    {
-        return request;
-    }
-
-    public ComponentResources getResources()
-    {
-        return resources;
-    }
-
-    @OnEvent(component = "fred")
-    Object clickFred()
-    {
-        return fred;
-    }
-
-    @OnEvent(component = "barney")
-    Object clickBarney()
-    {
-        return barney;
-    }
-
-    @OnEvent(component = "wilma")
-    String clickWilma()
-    {
-        return "Wilma";
-    }
-
-    public String getInjectedSymbol()
-    {
-        return injectedSymbol;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectMessagesDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectMessagesDemo.java
deleted file mode 100644
index d0300a5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InjectMessagesDemo.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.services.MessageAccess;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class InjectMessagesDemo
-{
-    @Property
-    @Inject
-    private MessageAccess access;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InplaceGridDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InplaceGridDemo.java
deleted file mode 100644
index b702492..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InplaceGridDemo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.Date;
-
-public class InplaceGridDemo extends GridDemo
-{
-    public Date getDate()
-    {
-        return new Date();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InstanceMixin.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InstanceMixin.java
deleted file mode 100644
index 0e963f0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InstanceMixin.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.integration.app1.components.OutputDate;
-import org.apache.tapestry5.integration.app1.mixins.Emphasis;
-
-import java.sql.Date;
-import java.text.DateFormat;
-import java.text.Format;
-import java.util.Calendar;
-import java.util.GregorianCalendar;
-import java.util.Locale;
-
-public class InstanceMixin
-{
-    @SuppressWarnings("unused")
-    @Component(parameters =
-            { "value=date2", "format=format", "test=showEmphasis" })
-    @Mixins("Emphasis")
-    private OutputDate output2;
-
-    @SuppressWarnings("unused")
-    @Component(parameters =
-            { "value=date3", "format=format", "test=showEmphasis" })
-    @MixinClasses(Emphasis.class)
-    private OutputDate output3;
-
-    @Retain
-    private final Format format = DateFormat.getDateInstance(DateFormat.MEDIUM, Locale.US);
-
-    @Retain
-    private final Date date1 = newDate(99, Calendar.JUNE, 13);
-
-    @Retain
-    private final Date date2 = newDate(101, Calendar.JULY, 15);
-
-    @Retain
-    private final Date date3 = newDate(105, Calendar.DECEMBER, 4);
-
-    @Persist
-    private boolean showEmphasis;
-
-    public Format getFormat()
-    {
-        return format;
-    }
-
-    private static Date newDate(int yearSince1900, int month, int day)
-    {
-        return new Date(new GregorianCalendar(1900 + yearSince1900, month, day).getTimeInMillis());
-    }
-
-    public Date getDate1()
-    {
-        return date1;
-    }
-
-    public Date getDate2()
-    {
-        return date2;
-    }
-
-    public Date getDate3()
-    {
-        return date3;
-    }
-
-    public boolean getShowEmphasis()
-    {
-        return showEmphasis;
-    }
-
-    @OnEvent(component = "toggle")
-    void toggle()
-    {
-        showEmphasis = !showEmphasis;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidComponentTypeDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidComponentTypeDemo.java
deleted file mode 100644
index c6e2ecc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidComponentTypeDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class InvalidComponentTypeDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidSuperClass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidSuperClass.java
deleted file mode 100644
index d0f7207..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidSuperClass.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.WrongPackageForBaseClass;
-
-/**
- * TAPESTRY-1934: Check for invalid base classes.
- */
-public class InvalidSuperClass extends WrongPackageForBaseClass
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidTemplateExtend.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidTemplateExtend.java
deleted file mode 100644
index f7bb2b5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/InvalidTemplateExtend.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class InvalidTemplateExtend
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Kicker.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Kicker.java
deleted file mode 100644
index 8545b33..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Kicker.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-
-public class Kicker
-{
-    @InjectPage
-    private Target target;
-
-    Object onAction()
-    {
-        target.setActivationContext(new String[] { "betty", "wilma", "betty/wilma", "\u82B1\u5B50" });
-
-        return target;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LeanGridDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LeanGridDemo.java
deleted file mode 100644
index 0a959ea..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LeanGridDemo.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// package org.apache.tapestry5.integration.app1.pages;
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-
-public class LeanGridDemo extends GridDemo
-{
-    @Property
-    private int rowIndex;
-
-    @Property
-    private int columnIndex;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LibraryMessagesDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LibraryMessagesDemo.java
deleted file mode 100644
index 3377ff8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LibraryMessagesDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class LibraryMessagesDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitDemo.java
deleted file mode 100644
index 9299619..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitDemo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class LinkSubmitDemo
-{
-    @Property
-    @Persist
-    @Validate("required,minlength=5")
-    private String name;
-
-    @Property
-    @Persist
-    private String lastClicked;
-    
-    @Persist
-    @Property
-    private Double result;
-    
-    public Object[] getFormContext()
-    {
-        return new Object[]{new Integer(7), new Double(3.14159)};
-     }
-
-    void onSelectedFromFred(Integer first, Double second) 
-    { 
-        lastClicked = "Fred"; 
-        
-        result = first + second;
-    }
-
-    void onNeighbor() { lastClicked = "Barney"; }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitInZoneDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitInZoneDemo.java
deleted file mode 100644
index f0a7433..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitInZoneDemo.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.corelib.components.Zone;
-
-import java.util.Date;
-
-public class LinkSubmitInZoneDemo
-{
-    @Property
-    @Validate("required")
-    private String value;
-    
-    @Property
-    @Persist(PersistenceConstants.FLASH)
-    private boolean eventfired;
-
-    @InjectComponent
-    private Zone output;
-    
-    void onSelectedFromMySubmit()
-    {
-        eventfired = true;
-    }
-
-    Object onSuccess()
-    {
-        return output.getBody();
-    }
-
-    public Date getNow()
-    {
-        return new Date();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitWithoutValidatorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitWithoutValidatorDemo.java
deleted file mode 100644
index 8f9ca8c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/LinkSubmitWithoutValidatorDemo.java
+++ /dev/null
@@ -1,35 +0,0 @@
-//  Copyright 2009 The Apache Software Foundation

-//

-// Licensed under the Apache License, Version 2.0 (the "License");

-// you may not use this file except in compliance with the License.

-// You may obtain a copy of the License at

-//

-//     http://www.apache.org/licenses/LICENSE-2.0

-//

-// Unless required by applicable law or agreed to in writing, software

-// distributed under the License is distributed on an "AS IS" BASIS,

-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-// See the License for the specific language governing permissions and

-// limitations under the License.

-

-package org.apache.tapestry5.integration.app1.pages;

-

-import org.apache.tapestry5.annotations.Property;

-import org.apache.tapestry5.annotations.Persist;

-import org.apache.tapestry5.annotations.OnEvent;

-import org.apache.tapestry5.EventConstants;

-

-public class LinkSubmitWithoutValidatorDemo {

-    @Property

-    private String searchString;

-

-    @Property

-    @Persist

-    private String result;

-

-    @OnEvent(component = "searchForm", value = EventConstants.SUCCESS)

-    void onSearchSuccess()

-    {

-        result = "" + searchString + " not found!";

-    }

-}

diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ListEventContextDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ListEventContextDemo.java
deleted file mode 100644
index b3c80c2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ListEventContextDemo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.List;
-
-public class ListEventContextDemo
-{
-    private List eventContext;
-
-    public List getEventContext()
-    {
-        return eventContext;
-    }
-
-    void onActivate(List context)
-    {
-        eventContext = context;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java
deleted file mode 100644
index 94754b0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Localization.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PersistentLocale;
-import org.apache.tapestry5.services.Request;
-
-import java.util.Locale;
-
-public class Localization
-{
-    @Inject
-    private Messages messages;
-
-
-    @Inject
-    private Locale locale;
-
-    @Inject
-    private Request request;
-
-    @Inject
-    private PersistentLocale persistentLocale;
-
-    public Locale getLocale()
-    {
-        return locale;
-    }
-
-    public Request getRequest()
-    {
-        return request;
-    }
-
-    public String getInjectedMessage()
-    {
-        return messages.get("via-inject");
-    }
-
-
-    public void onActionFromFrench()
-    {
-        persistentLocale.set(Locale.FRENCH);
-    }
-
-    public void onActionFromEnglish()
-    {
-        persistentLocale.set(Locale.ENGLISH);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MagicValueEncoder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MagicValueEncoder.java
deleted file mode 100644
index ca02ef5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MagicValueEncoder.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class MagicValueEncoder
-{
-    @Persist("flash")
-    private int number;
-
-    private static final int[] OPTIONS = { 5, 10, 25, 100 };
-
-    public int getNumber()
-    {
-        return number;
-    }
-
-    public void setNumber(int number)
-    {
-        this.number = number;
-    }
-
-    public int[] getOptions()
-    {
-        return OPTIONS;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MessageConstraintGeneratorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MessageConstraintGeneratorDemo.java
deleted file mode 100644
index fb24f97..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MessageConstraintGeneratorDemo.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.Pet;
-
-public class MessageConstraintGeneratorDemo
-{
-
-    @Property
-    private Pet pet;
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MethodAdviceDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MethodAdviceDemo.java
deleted file mode 100644
index 9c88d7a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MethodAdviceDemo.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.integration.app1.services.DearGodWhyMeException;
-import org.apache.tapestry5.integration.app1.services.ReverseStrings;
-
-public class MethodAdviceDemo
-{
-    @Persist
-    private String text;
-
-    @Validate("required")
-    public String getText()
-    {
-        return text;
-    }
-
-    @ReverseStrings
-    public void setText(String text)
-    {
-        this.text = text;
-    }
-
-    @ReverseStrings
-    public String getMessage()
-    {
-        return "Hello!";
-    }
-
-    @ReverseStrings
-    public int getVersion()
-    {
-        return 5;
-    }
-
-    @ReverseStrings
-    public int[] getIntArray()
-    {
-        return null;
-    }
-
-    @ReverseStrings
-    public void setIntArray(int[] array)
-    {
-    }
-
-    @ReverseStrings
-    public String[] getStringArray()
-    {
-        return null;
-    }
-
-    @ReverseStrings
-    public void setStringArray(String[] array)
-    {
-    }
-
-    @ReverseStrings
-    public String getCranky() throws DearGodWhyMeException
-    {
-        throw new DearGodWhyMeException();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MissingComponentClassException.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MissingComponentClassException.java
deleted file mode 100644
index 6ecf00a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MissingComponentClassException.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-/**
- *
- */
-public class MissingComponentClassException
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MissingTemplate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MissingTemplate.java
deleted file mode 100644
index 53772f1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MissingTemplate.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-/**
- * A page that simple doesn't have a template.
- */
-public class MissingTemplate
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MixinOrderingDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MixinOrderingDemo.java
deleted file mode 100644
index d30c80b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MixinOrderingDemo.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.corelib.components.TextField;
-import org.apache.tapestry5.integration.app1.mixins.EchoValue;
-import org.apache.tapestry5.integration.app1.mixins.EchoValue2;
-import org.apache.tapestry5.integration.app1.components.TextOnlyOnDisabledTextField;
-
-/**
- * Page for demonstrating/testing the use of the BindParameter mixin demonstration.
- */
-public class MixinOrderingDemo
-{
-
-    @Property
-    private String myproperty;
-
-    @Component
-    @Mixins("echovalue2::before:echovalue3")
-    @MixinClasses(value={EchoValue.class},order={"after:echovalue2;after:echovalue3"})
-    private TextField order3;
-
-    @Component
-    @Mixins("echovalue2::after:echovalue")
-    @MixinClasses(EchoValue.class)
-    private TextField order4;
-
-    @Component
-    @Mixins("echovalue2")
-    @MixinClasses(value=EchoValue.class,order={"after:echovalue2"})
-    private TextField order5;
-
-
-    @Component
-    @Mixins("echovalue3::before:echovalue2")
-    @MixinClasses(value=EchoValue2.class,order="after:echovalue")
-    private TextOnlyOnDisabledTextField order6;
-
-    @SetupRender
-    void initMyprop()
-    {
-        myproperty="batman";
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
deleted file mode 100644
index 186bda2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanDemoResult.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.integration.app1.data.RolePath;
-import org.apache.tapestry5.integration.app1.data.UserCredentials;
-
-public class MultiBeanDemoResult
-{
-    @ApplicationState
-    private UserCredentials credentials;
-
-    @ApplicationState
-    private RolePath rolePath;
-
-    public UserCredentials getCredentials()
-    {
-        return credentials;
-    }
-
-    public RolePath getRolePath()
-    {
-        return rolePath;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
deleted file mode 100644
index 3968d09..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiBeanEditDemo.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.app1.data.RolePath;
-import org.apache.tapestry5.integration.app1.data.UserCredentials;
-
-public class MultiBeanEditDemo
-{
-    @ApplicationState
-    private UserCredentials credentials;
-
-    @ApplicationState
-    private RolePath rolePath;
-
-    @InjectPage
-    private MultiBeanDemoResult resultPage;
-
-    @Component
-    private Form form;
-
-    public UserCredentials getCredentials()
-    {
-        return credentials;
-    }
-
-    public RolePath getRolePath()
-    {
-        return rolePath;
-    }
-
-    public void setCredentials(UserCredentials credentials)
-    {
-        this.credentials = credentials;
-    }
-
-    public void setRolePath(RolePath rolePath)
-    {
-        this.rolePath = rolePath;
-    }
-
-    Object onSuccess()
-    {
-        return resultPage;
-    }
-
-    void onActionFromClear()
-    {
-        // Force these to be re-created.
-        credentials = null;
-        rolePath = null;
-
-        form.clearErrors();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiLevelInheritDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiLevelInheritDemo.java
deleted file mode 100644
index 5f0d0af..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiLevelInheritDemo.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class MultiLevelInheritDemo
-{
-    public String getBoundValue()
-    {
-        return "bound value";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java
deleted file mode 100644
index ea4c01f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateDemo.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.Date;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class MultiZoneUpdateDemo
-{
-    @Inject
-    private Block fredBlock, barneyBlock;
-
-    @Property
-    private String wilmaMessage = "Wilma Flintstone";
-
-    @InjectComponent
-    private Zone wilmaZone;
-
-    public Date getNow()
-    {
-        return new Date();
-    }
-
-    Object onActionFromUpdate()
-    {
-        wilmaMessage = "His Wife, Wilma.";
-
-        return new MultiZoneUpdate("fred", fredBlock).add("barney", barneyBlock).add("dino", "His dog, Dino.")
-                .add(wilmaZone);
-    }
-
-    public String[] getOptions()
-    {
-        return new String[]
-        { "Red", "Green", "Blue" };
-    }
-
-    public ValueEncoder getEncoder()
-    {
-        return new StringValueEncoder();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java
deleted file mode 100644
index 21c53a9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/MultiZoneUpdateInsideForm.java
+++ /dev/null
@@ -1,186 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tapestry5.AbstractOptionModel;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.OptionGroupModel;
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Log;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Select;
-import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.util.AbstractSelectModel;
-
-public class MultiZoneUpdateInsideForm
-{
-    @Inject
-    private Request request;
-
-    @Component(id = "selectValue1", parameters =
-    { "model=select1Model", "encoder=select1Model" })
-    private Select select1;
-
-    @Property
-    private SelectModel select1Model;
-
-    @Property
-    private SelectObj selectValue1;
-
-    @Component(id = "selectValue2", parameters =
-    { "model=select2Model", "encoder=select2Model" })
-    private Select select2;
-
-    @Property
-    private SelectModel select2Model;
-
-    @Property
-    private SelectObj selectValue2;
-
-    @Component(id = "select1ValueZone")
-    private Zone select1ValueZone;
-
-    @Component(id = "select2ValueZone")
-    private Zone select2ValueZone;
-
-    public class SelectObj
-    {
-        final int id;
-        final String label;
-
-        public SelectObj(int id, String label)
-        {
-            this.id = id;
-            this.label = label;
-        }
-
-        public int getId()
-        {
-            return id;
-        }
-
-        public String getLabel()
-        {
-            return label;
-        }
-    }
-
-    public class SelectObjModel extends AbstractSelectModel implements ValueEncoder<SelectObj>
-    {
-        private final List<SelectObj> options;
-
-        public SelectObjModel(List<SelectObj> options)
-        {
-            this.options = options;
-        }
-
-        public List<OptionGroupModel> getOptionGroups()
-        {
-            return null;
-        }
-
-        public List<OptionModel> getOptions()
-        {
-            assert options != null;
-            return F.flow(options).map(new Mapper<SelectObj, OptionModel>()
-                        {
-                            public OptionModel map(final SelectObj input)
-                            {
-                                return new AbstractOptionModel()
-                                {
-                                    public Object getValue()
-                                    {
-                                        return input;
-                                    }
-            
-                                    public String getLabel()
-                                    {
-                                        return input.getLabel();
-                                    }
-                                };
-                            }
-                        }).toList();
-        }
-
-        public String toClient(SelectObj value)
-        {
-            return String.valueOf(value.getId());
-        }
-
-        public SelectObj toValue(String clientValue)
-        {
-            int id = Integer.parseInt(clientValue);
-
-            for (SelectObj so : options)
-            {
-                if (so.id == id)
-                    return so;
-            }
-
-            return null;
-        }
-    }
-
-    void onActivate(EventContext ctx)
-    {
-        List<SelectObj> select1List = new ArrayList();
-        select1List.add(new SelectObj(0, "0 pre ajax"));
-        select1List.add(new SelectObj(1, "1 pre ajax"));
-        select1List.add(new SelectObj(2, "2 pre ajax"));
-        select1List.add(new SelectObj(3, "3 pre ajax"));
-        select1List.add(new SelectObj(4, "4 pre ajax"));
-        select1Model = new SelectObjModel(select1List);
-
-        List<SelectObj> select2List = new ArrayList();
-        select2List.add(new SelectObj(0, "0 pre ajax"));
-        select2List.add(new SelectObj(1, "1 pre ajax"));
-        select2List.add(new SelectObj(2, "2 pre ajax"));
-        select2List.add(new SelectObj(3, "3 pre ajax"));
-        select2Model = new SelectObjModel(select2List);
-    }
-
-    @Log
-    public Object onValueChangedFromSelectValue1(SelectObj selectObj)
-    {
-        List<SelectObj> select2List = new ArrayList();
-        select2List.add(new SelectObj(4, "4 post ajax"));
-        select2List.add(new SelectObj(5, "5 post ajax"));
-        select2List.add(new SelectObj(6, "6 post ajax"));
-        select2List.add(new SelectObj(7, "7 post ajax"));
-        select2Model = new SelectObjModel(select2List);
-
-        if (request.isXHR())
-        {
-            return new MultiZoneUpdate("select1ValueZone", select1ValueZone.getBody()).add("select2ValueZone",
-                    select2ValueZone.getBody());
-        }
-        else
-        {
-            return this;
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Music.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Music.java
deleted file mode 100644
index 5f31d65..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Music.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.List;
-
-public class Music
-{
-    @Inject
-    private MusicLibrary library;
-
-    @Property
-    private Track track;
-
-    public List<Track> getTracks()
-    {
-        return library.getTracks();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedBeanDisplay.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedBeanDisplay.java
deleted file mode 100644
index 157ef7d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedBeanDisplay.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.Person;
-
-public class NestedBeanDisplay
-{
-    @Persist
-    @Property
-    private Person parent;
-
-    Object initialize(Person person)
-    {
-        parent = person;
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedBeanEditor.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedBeanEditor.java
deleted file mode 100644
index 66b5571..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedBeanEditor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.Person;
-
-public class NestedBeanEditor
-{
-    @Property
-    private Person parent;
-
-    @InjectPage
-    private NestedBeanDisplay display;
-
-    void onPrepare()
-    {
-        parent = new Person();
-        parent.setChild(new Person());
-    }
-
-    Object onSuccess()
-    {
-        return display.initialize(parent);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedForm.java
deleted file mode 100644
index 76dbbcb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedForm.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class NestedForm
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedFormFragment.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedFormFragment.java
deleted file mode 100644
index f5d6f5f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NestedFormFragment.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Checkbox;
-import org.apache.tapestry5.corelib.components.FormFragment;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-
-public class NestedFormFragment 
-{
-
-    @InjectComponent
-    private FormFragment innerremove;
-
-    @InjectComponent
-    private Checkbox innertrigger2;
-
-    @Inject
-    private JavaScriptSupport jsSupport;
-
-    void afterRender() 
-    {
-        jsSupport.addScript("$('%s').observe('click', function() { $('%s').fire(Tapestry.HIDE_AND_REMOVE_EVENT); });", innertrigger2.getClientId(), innerremove.getClientId()); 
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NoTypeProvidedDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NoTypeProvidedDemo.java
deleted file mode 100644
index c677f0d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NoTypeProvidedDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class NoTypeProvidedDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullGrid.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullGrid.java
deleted file mode 100644
index cb70277..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullGrid.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class NullGrid
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullParameterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullParameterDemo.java
deleted file mode 100644
index b6bb0c0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullParameterDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class NullParameterDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullStrategyDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullStrategyDemo.java
deleted file mode 100644
index 2f6577a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NullStrategyDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright  2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class NullStrategyDemo
-{
-    @Persist
-    private Long number;
-
-    public Long getNumber()
-    {
-        return number;
-    }
-
-    public void setNumber(Long number)
-    {
-        this.number = number;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberBeanDisplayDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberBeanDisplayDemo.java
deleted file mode 100644
index ddb09bc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberBeanDisplayDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.IntegerHolder;
-
-public class NumberBeanDisplayDemo
-{
-    @Persist
-    private IntegerHolder holder;
-
-    Object initialize(IntegerHolder holder)
-    {
-        this.holder = holder;
-
-        return this;
-    }
-
-    public IntegerHolder getHolder()
-    {
-        return holder;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberBeanEditorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberBeanEditorDemo.java
deleted file mode 100644
index 889b869..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberBeanEditorDemo.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.integration.app1.data.IntegerHolder;
-
-public class NumberBeanEditorDemo
-{
-    private IntegerHolder holder;
-
-    @InjectPage
-    private NumberBeanDisplayDemo page;
-
-    public IntegerHolder getHolder()
-    {
-        return holder;
-    }
-
-    public void setHolder(IntegerHolder holder)
-    {
-        this.holder = holder;
-    }
-
-    Object onSuccess()
-    {
-        return page.initialize(holder);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberSelect.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberSelect.java
deleted file mode 100644
index b63d930..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/NumberSelect.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-
-public class NumberSelect
-{
-    private int index;
-
-    @InjectPage
-    private ShowSelection showSelection;
-
-    public int getIndex()
-    {
-        return index;
-    }
-
-    public void setIndex(int index)
-    {
-        this.index = index;
-    }
-
-    public boolean isNotFirst()
-    {
-        return index != 1;
-    }
-
-    Object onActionFromSelect(int index)
-    {
-        showSelection.setSelected(index);
-
-        return showSelection;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java
deleted file mode 100644
index dfb7d7b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.Date;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class OverrideDateFieldMessageCatalogDemo
-{
-    @Inject
-    @Property
-    private Messages messages;
-    
-    @Persist
-    @Property
-    private Date birthday;
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideValidationDecorator.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideValidationDecorator.java
deleted file mode 100644
index c0aa233..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/OverrideValidationDecorator.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.integration.app1.ChattyValidationDecorator;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Environment;
-
-public class OverrideValidationDecorator
-{
-    private String value;
-
-    private long requiredValue;
-
-    @Inject
-    private Environment environment;
-
-    void beginRender(MarkupWriter writer)
-    {
-        ValidationDecorator existing = environment.peekRequired(ValidationDecorator.class);
-
-        environment.push(ValidationDecorator.class, new ChattyValidationDecorator(writer, existing));
-    }
-
-    void afterRender()
-    {
-        environment.pop(ValidationDecorator.class);
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    public long getRequiredValue()
-    {
-        return requiredValue;
-    }
-
-    public void setRequiredValue(long requiredValue)
-    {
-        this.requiredValue = requiredValue;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PACAnnotationDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PACAnnotationDemo.java
deleted file mode 100644
index 3e060d7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PACAnnotationDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.PageActivationContext;
-import org.apache.tapestry5.annotations.Property;
-
-public class PACAnnotationDemo
-{
-    @Property
-    @PageActivationContext
-    private Integer count;
-
-    @Property
-    private boolean countSet;
-
-    void onActivate()
-    {
-        countSet = count != null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageAttachFailure.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageAttachFailure.java
deleted file mode 100644
index d618463..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageAttachFailure.java
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PageAttachFailure
-{
-    void pageAttached()
-    {
-        throw new RuntimeException("Failure inside pageAttached().");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageContextInForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageContextInForm.java
deleted file mode 100644
index b42f14a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageContextInForm.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PageContextInForm
-{
-    private Object[] activationContext;
-
-    private Object object;
-
-    void onActivate(Object[] context)
-    {
-        activationContext = context;
-    }
-
-    Object[] onPassivate()
-    {
-        if (activationContext != null)
-        {
-            return activationContext;
-        }
-        else
-        {
-            return new Object[] { "betty", "wilma", "context with spaces", "context/with/slashes" };
-        }
-    }
-
-    public Object[] getActivationContext()
-    {
-        return activationContext;
-    }
-
-    public Object getObject()
-    {
-        return object;
-    }
-
-    public void setObject(Object object)
-    {
-        this.object = object;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageLinkContext.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageLinkContext.java
deleted file mode 100644
index 0681984..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageLinkContext.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class PageLinkContext
-{
-    @Inject
-    private ComponentResources resources;
-
-    public List getComputedContext()
-    {
-        return Arrays.asList("fred", 7, true);
-    }
-
-    public String getUnsafeCharacters()
-    {
-        return "unsafe characters: !\"#$%&'()*+,-./:;<=>?@[\\]^_`{|}~";
-    }
-
-    public String getJapaneseKanji()
-    {
-        return "japanese kanji: \u65E5\u672C\u8A9E";
-    }
-
-    Object onActionFromNullContext()
-    {
-        return resources.createPageLink("target", true, new Object[] {null});
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageLoadedDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageLoadedDemo.java
deleted file mode 100644
index 345c250..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageLoadedDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Retain;
-
-public class PageLoadedDemo
-{
-    @Retain
-    private String message;
-
-    void pageLoaded()
-    {
-        message = "pageLoaded() was invoked.";
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java
deleted file mode 100644
index 1f92e7a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetDemo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.PageReset;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class PageResetDemo
-{
-    @Property
-    @Persist
-    private int count;
-
-    void onActionFromIncrement()
-    {
-        count++;
-    }
-
-    @PageReset
-    void reset()
-    {
-        count = 0;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java
deleted file mode 100644
index 6eb3e90..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PageResetFailure.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.PageReset;
-
-public class PageResetFailure
-{
-    @PageReset
-    void reset(String whatGoesHere)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java
deleted file mode 100644
index 686483e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PaletteDemo.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.ProgrammingLanguage;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.util.EnumSelectModel;
-import org.apache.tapestry5.util.EnumValueEncoder;
-
-import java.util.List;
-
-public class PaletteDemo
-{
-    @Inject
-    private ComponentResources resources;
-
-    @Persist
-    private List<ProgrammingLanguage> languages;
-
-    @Persist
-    private boolean reorder;
-
-    public boolean isReorder()
-    {
-        return reorder;
-    }
-
-    public void setReorder(boolean reorder)
-    {
-        this.reorder = reorder;
-    }
-
-    public List<ProgrammingLanguage> getLanguages()
-    {
-        return languages;
-    }
-
-    public void setLanguages(List<ProgrammingLanguage> selected)
-    {
-        languages = selected;
-    }
-
-    public SelectModel getLanguageModel()
-    {
-        return new EnumSelectModel(ProgrammingLanguage.class, resources.getMessages());
-    }
-
-    @SuppressWarnings("unchecked")
-    public ValueEncoder getLanguageEncoder()
-    {
-        return new EnumValueEncoder(ProgrammingLanguage.class);
-    }
-
-    void onActionFromReset()
-    {
-        reorder = false;
-        languages = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParameterConflict.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParameterConflict.java
deleted file mode 100644
index ab9dca4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParameterConflict.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.integration.app1.components.Echo;
-
-public class ParameterConflict
-{
-    @SuppressWarnings("unused")
-    @Component(parameters = "value=literal:ClassValue")
-    private Echo echo;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParameterDefault.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParameterDefault.java
deleted file mode 100644
index 2ca3725..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParameterDefault.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class ParameterDefault
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParamsMethodWithCached.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParamsMethodWithCached.java
deleted file mode 100644
index 789cbff..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ParamsMethodWithCached.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Cached;
-
-public class ParamsMethodWithCached
-{
-    @Cached
-    public int invalidMethod(String parameter)
-    {
-        return 0;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PasswordFieldDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PasswordFieldDemo.java
deleted file mode 100644
index 9ed7254..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PasswordFieldDemo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.corelib.components.PasswordField;
-import org.apache.tapestry5.integration.app1.services.UserAuthenticator;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class PasswordFieldDemo
-{
-    @Persist
-    private String userName;
-
-    // Normally not retained, just want to prove that the output value is always the blank string.
-    @Persist
-    private String password;
-
-    @Inject
-    private UserAuthenticator authenticator;
-
-    @Component(id = "password")
-    private PasswordField passwordField;
-
-    @Component
-    private Form form;
-
-    String onSuccess()
-    {
-        if (!authenticator.isValid(userName, password))
-        {
-            form.recordError(passwordField, "Invalid user name or password.");
-            return null;
-        }
-
-        return "PostLogin";
-    }
-
-    public String getPassword()
-    {
-        return password;
-    }
-
-    public void setPassword(String password)
-    {
-        this.password = password;
-    }
-
-    public String getUserName()
-    {
-        return userName;
-    }
-
-    public void setUserName(String userName)
-    {
-        this.userName = userName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PerFormValidationMessageDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PerFormValidationMessageDemo.java
deleted file mode 100644
index 633142b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PerFormValidationMessageDemo.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-import org.apache.tapestry5.beaneditor.Validate;
-
-@ReorderProperties("userId,password")
-public class PerFormValidationMessageDemo
-{
-    @Validate("required,minlength")
-    @Property
-    private String userId;
-
-    @Validate("required")
-    @DataType("password")
-    @Property
-    private String password;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PersistentDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PersistentDemo.java
deleted file mode 100644
index 0c6fc9e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PersistentDemo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class PersistentDemo
-{
-    @Persist
-    private String message;
-
-    @Inject
-    private ComponentResources resources;
-
-    void onActionFromUpdateMessage(String message)
-    {
-        this.message = message;
-    }
-
-    void onActionFromDiscardChanges()
-    {
-        resources.discardPersistentFieldChanges();
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PostLogin.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PostLogin.java
deleted file mode 100644
index 63740b8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PostLogin.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PostLogin
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PrimitiveArrayParameterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PrimitiveArrayParameterDemo.java
deleted file mode 100644
index b85a5ce..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PrimitiveArrayParameterDemo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.package org.apache.tapestry5.integration.app1.pages;
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PrimitiveArrayParameterDemo
-{
-
-    public int[] getValues()
-    {
-        return new int[] { 1, 3, 5, 7, 9 };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PrimitiveDefaultDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PrimitiveDefaultDemo.java
deleted file mode 100644
index 3c69f42..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PrimitiveDefaultDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PrimitiveDefaultDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProgressiveDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProgressiveDemo.java
deleted file mode 100644
index f4b7cbb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProgressiveDemo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Grid;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.Date;
-
-public class ProgressiveDemo
-{
-    @Inject
-    @Property
-    private MusicLibrary musicLibrary;
-
-    @Property
-    private String context2;
-
-    @InjectComponent
-    private Grid music;
-
-    public Date getNow()
-    {
-        return new Date();
-    }
-
-
-    void onProgressiveDisplayFromDisp2(String context)
-    {
-        context2 = context;
-    }
-
-    Object onProgressiveDisplayFromProgressiveGrid()
-    {
-
-        // sleep(1000);
-
-        return music;
-    }
-
-    public static void sleep(int millis)
-    {
-        try
-        {
-            Thread.sleep(millis);
-        }
-        catch (Exception ex)
-        {
-        }
-    }
-
-
-    Object onActionFromRefresh()
-    {
-        // sleep(100);
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Protected.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Protected.java
deleted file mode 100644
index 0434693..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Protected.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-
-public class Protected
-{
-    @InjectPage
-    private SecurityAlert alertPage;
-
-    Object onActivate()
-    {
-        alertPage.setMessage("Access to Protected page is denied.");
-
-        return alertPage;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProtectedFields.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProtectedFields.java
deleted file mode 100644
index dc9a756..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ProtectedFields.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-/**
- * TAPESTRY-2196
- */
-public class ProtectedFields
-{
-    protected String _field;
-
-    public String getField()
-    {
-        return _field;
-    }
-
-    public void setField(String field)
-    {
-        _field = field;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublicFieldAccessDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublicFieldAccessDemo.java
deleted file mode 100644
index 6d795c8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublicFieldAccessDemo.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.integration.app1.data.ResourcesHolder;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class PublicFieldAccessDemo
-{
-    @Inject
-    private ComponentResources resources;
-
-    private ResourcesHolder holder;
-
-    void setupRender()
-    {
-        holder = new ResourcesHolder("success");
-    }
-
-    public String getMessage()
-    {
-        return holder.resources;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishDuplicateNameDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishDuplicateNameDemo.java
deleted file mode 100644
index 058fbcc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishDuplicateNameDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PublishDuplicateNameDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishParametersDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishParametersDemo.java
deleted file mode 100644
index bd3c792..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishParametersDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PublishParametersDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishUnknownParameterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishUnknownParameterDemo.java
deleted file mode 100644
index a3634d5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/PublishUnknownParameterDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class PublishUnknownParameterDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java
deleted file mode 100644
index ecdeffe..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RadioDemo.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.Department;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class RadioDemo
-{
-    @Persist
-    private Department department;
-
-    @Persist
-    private String position;
-
-    private Department loopValue;
-
-    @Inject
-    private Messages messages;
-
-    @Inject
-    private ComponentResources resources;
-
-    void onActionFromReset()
-    {
-        resources.discardPersistentFieldChanges();
-    }
-
-    public Department[] getDepartments()
-    {
-        return Department.values();
-    }
-
-    public Department getDepartment()
-    {
-        return department;
-    }
-
-    public String getPosition()
-    {
-        return position;
-    }
-
-    public Department getLoopValue()
-    {
-        return loopValue;
-    }
-
-    public void setDepartment(Department department)
-    {
-        this.department = department;
-    }
-
-    public void setPosition(String position)
-    {
-        this.position = position;
-    }
-
-    public void setLoopValue(Department loopValue)
-    {
-        this.loopValue = loopValue;
-    }
-
-    public String getLabel()
-    {
-        return TapestryInternalUtils.getLabelForEnum(messages, loopValue);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReadSessionAttribute.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReadSessionAttribute.java
deleted file mode 100644
index 454a844..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReadSessionAttribute.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SessionAttribute;
-import org.apache.tapestry5.integration.app1.data.Track;
-
-public class ReadSessionAttribute
-{
-
-    @SessionAttribute
-    @Property
-    private Track favoriteTrack;
-
-    @SessionAttribute("track_in_session")
-    @Property
-    private Track anotherTrack;
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RecursiveDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RecursiveDemo.java
deleted file mode 100644
index 30232a7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RecursiveDemo.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class RecursiveDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RegexpDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RegexpDemo.java
deleted file mode 100644
index 435221c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RegexpDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class RegexpDemo
-{
-    @Persist
-    private String zipCode;
-
-    // regexp requires a constraint, that'll come from the message catalog
-    @Validate("required,regexp")
-    public String getZipCode()
-    {
-        return zipCode;
-    }
-
-    public void setZipCode(String zipCode)
-    {
-        this.zipCode = zipCode;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReloadDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReloadDemo.java
deleted file mode 100644
index 5a366f4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReloadDemo.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.services.Reloadable;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class ReloadDemo
-{
-    @Property
-    @Inject
-    private Reloadable reloadable;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderClientIdDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderClientIdDemo.java
deleted file mode 100644
index 1b74077..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderClientIdDemo.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-//  Licensed under the Apache License, Version 2.0 (the "License");
-//  you may not use this file except in compliance with the License.
-//  You may obtain a copy of the License at
-//
-//      http://www.apache.org/licenses/LICENSE-2.0
-//
-//  Unless required by applicable law or agreed to in writing, software
-//  distributed under the License is distributed on an "AS IS" BASIS,
-//  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-//  See the License for the specific language governing permissions and
-//  limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-/**
- *
- */
-public class RenderClientIdDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderComponentDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderComponentDemo.java
deleted file mode 100644
index e568b5f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderComponentDemo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class RenderComponentDemo
-{
-    @Persist
-    private boolean enabled;
-
-    @Inject
-    private Block optional;
-
-    public boolean isEnabled()
-    {
-        return enabled;
-    }
-
-    public void setEnabled(boolean enable)
-    {
-        enabled = enable;
-    }
-
-    public Object getThing()
-    {
-        return enabled ? optional : null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderErrorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderErrorDemo.java
deleted file mode 100644
index 89ff703..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderErrorDemo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class RenderErrorDemo
-{
-    public Object getValue()
-    {
-        throw new RuntimeException("Exception thrown from getValue().");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderNotificationDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderNotificationDemo.java
deleted file mode 100644
index 39e4ecc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderNotificationDemo.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.MarkupWriter;
-
-public class RenderNotificationDemo
-{
-    void onBeginRenderFromItem(MarkupWriter writer)
-    {
-        writer.element("li");
-        writer.write("before item render");
-        writer.end();
-    }
-
-    void onAfterRender(MarkupWriter writer)
-    {
-        writer.element("li");
-        writer.write("after item render");
-        writer.end();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java
deleted file mode 100644
index b0fc95a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderObjectExceptionDemo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.data.NullToString;
-
-public class RenderObjectExceptionDemo
-{
-    public Object getBadBoy()
-    {
-        return new NullToString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderPhaseMethodExceptionDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderPhaseMethodExceptionDemo.java
deleted file mode 100644
index e074f29..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderPhaseMethodExceptionDemo.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.sql.SQLException;
-
-public class RenderPhaseMethodExceptionDemo
-{
-    void beginRender() throws SQLException
-    {
-        throw new SQLException("Simulated JDBC exception while rendering.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderPhaseOrder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderPhaseOrder.java
deleted file mode 100644
index 58140c1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderPhaseOrder.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class RenderPhaseOrder
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderableDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderableDemo.java
deleted file mode 100644
index 2d7f2bd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RenderableDemo.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.Renderable;
-
-public class RenderableDemo
-{
-    public Renderable getRenderable()
-    {
-        return new Renderable()
-        {
-            public void render(MarkupWriter writer)
-            {
-                writer.write("This proves it works.");
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RequestParameterDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RequestParameterDemo.java
deleted file mode 100644
index 69c235c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/RequestParameterDemo.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.RequestParameter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class RequestParameterDemo
-{
-    private static final String PARAMETER_NAME = "gnip";
-
-    private static final String EVENT_NAME = "frob";
-
-    @Property
-    @Persist
-    private int value;
-
-    @Inject
-    private ComponentResources resources;
-
-    public Link getWorkingLink()
-    {
-        Link link = resources.createEventLink(EVENT_NAME);
-        link.addParameter(PARAMETER_NAME, "97");
-
-        return link;
-    }
-
-    public Link getBrokenLink()
-    {
-        Link link = resources.createEventLink(EVENT_NAME);
-        link.addParameter(PARAMETER_NAME, "frodo");
-
-        return link;
-    }
-
-    public Link getNullLink()
-    {
-        return resources.createEventLink(EVENT_NAME);
-    }
-
-    public Link getNullAllowedLink()
-    {
-        return resources.createEventLink("frobNullAllowed");
-    }
-
-    void onFrob(@RequestParameter(PARAMETER_NAME)
-    int value)
-    {
-        this.value = value;
-    }
-
-    void onFrobNullAllowed(@RequestParameter(value = PARAMETER_NAME, allowBlank = true)
-    int value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReturnTypes.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReturnTypes.java
deleted file mode 100644
index e876d3d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ReturnTypes.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.pages.music.MusicDetails;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.HttpError;
-import org.apache.tapestry5.services.StreamPageContent;
-import org.apache.tapestry5.util.TextStreamResponse;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Tests the various event handler method return types.
- *
- * @see ComponentEventResultProcessor
- */
-public class ReturnTypes
-{
-    @InjectPage
-    private Index index;
-
-    @Inject
-    private ComponentResources resources;
-    
-    @Inject
-    private MusicLibrary library;
-
-    Object onActionFromNullReturnValue()
-    {
-        return null;
-    }
-
-    Object onActionFromStringReturnValue()
-    {
-        return "index";
-    }
-
-    Object onActionFromClassReturnValue()
-    {
-        return Index.class;
-    }
-
-    Object onActionFromPageReturnValue()
-    {
-        return index;
-    }
-
-    Object onActionFromLinkReturnValue()
-    {
-        return resources.createPageLink("index", false);
-    }
-
-    Object onActionFromStreamReturnValue()
-    {
-        String text = "<html><body>Success!</body></html>";
-        return new TextStreamResponse("text/html", text);
-    }
-
-    Object onActionFromBadReturnValue()
-    {
-        // What is Tapestry supposed to do with this? Let's see that Exception Report page.
-        return 20;
-    }
-
-    Object onActionFromURL() throws MalformedURLException
-    {
-        return new URL("http://google.com");
-    }
-    
-    Object onActionFromStreamPageContent()
-    {   
-        return new StreamPageContent(Index.class);
-    }
-    
-    Object onActionFromStreamPageContentWithContext()
-    {
-        Track track = library.getById(294L);
-        
-        return new StreamPageContent(MusicDetails.class, track);
-    }
-    
-
-    Object onActionFromHttpError()
-    {
-        return new HttpError(HttpServletResponse.SC_GONE, "Oups! Resource disappeared!");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SecurePage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SecurePage.java
deleted file mode 100644
index f2a1cc0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SecurePage.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.Secure;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-@Secure
-public class SecurePage
-{
-
-    @Persist("flash")
-    private String message;
-
-    @Inject
-    @Path("context:images/tapestry_banner.gif")
-    private Asset icon;
-
-    @Inject
-    @Path("nested/tapestry-button.png")
-    private Asset button;
-    
-    @Property
-    private String context;
-
-    public void onActivate(String context) {
-        this.context = context;
-    }
-
-    public String onPassivate() {
-        return context;
-    } 
-
-    public Asset getIcon()
-    {
-        return icon;
-    }
-
-    public Asset getButton()
-    {
-        return button;
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    void onActionFromSecureLink()
-    {
-        message = "Link clicked";
-    }
-
-    void onSubmit()
-    {
-        message = "Form submitted";
-    }
-
-    SecurePage initialize(String message)
-    {
-        this.message = message;
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SecurityAlert.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SecurityAlert.java
deleted file mode 100644
index 2d26291..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SecurityAlert.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class SecurityAlert
-{
-    @Persist("flash")
-    private String message;
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public void setMessage(String mesasge)
-    {
-        message = mesasge;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectDemo.java
deleted file mode 100644
index 518b623..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectDemo.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class SelectDemo
-{
-
-    @Property
-    @Persist
-    private String color;
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectModelFromObjectsAndPropertyNameDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectModelFromObjectsAndPropertyNameDemo.java
deleted file mode 100644
index d58582b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectModelFromObjectsAndPropertyNameDemo.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.SelectModelFactory;
-
-public class SelectModelFromObjectsAndPropertyNameDemo
-{
-    @Inject
-    private MusicLibrary library;
-    
-    @Inject
-    private SelectModelFactory modelFactory;
-    
-    @Property
-    private SelectModel model;
-    
-    @Property
-    @Persist
-    private Track track;
-    
-    void onPrepare()
-    {
-        model = modelFactory.create(library.getTracks(), "title");
-    }
-    
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java
deleted file mode 100644
index 003d880..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SelectZoneDemo.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.CarMaker;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.util.EnumSelectModel;
-import org.apache.tapestry5.util.EnumValueEncoder;
-
-public class SelectZoneDemo
-{
-
-    @Inject
-    private Messages messages;
-
-    @Property
-    @Persist
-    private CarMaker carMaker;
-
-    @Property
-    @Persist
-    private String carModel;
-
-    @Inject
-    @Property
-    private Block modelBlock;
-
-    @Property
-    @Persist
-    private List<String> availableModels;
-
-    public Object onValueChanged(final CarMaker maker)
-    {
-        availableModels = findAvailableModels(maker);
-
-        return this.modelBlock;
-    }
-
-    public List<String> findAvailableModels(final CarMaker maker)
-    {
-        switch (maker)
-        {
-            case AUDI:
-                return Arrays.asList("A4", "A6", "A8");
-            case BMW:
-                return Arrays.asList("3 Series", "5 Series", "7 Series");
-            case MERCEDES:
-                return Arrays.asList("C-Class", "E-Class", "S-Class");
-            default:
-                return Arrays.asList();
-        }
-    }
-
-    public SelectModel getMakeModel()
-    {
-        return new EnumSelectModel(CarMaker.class, this.messages);
-    }
-
-    public ValueEncoder<CarMaker> getMakeEncoder()
-    {
-        return new EnumValueEncoder<CarMaker>(CarMaker.class);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SessionAttributeDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SessionAttributeDemo.java
deleted file mode 100644
index a860a32..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SessionAttributeDemo.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.SessionAttribute;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Request;
-
-public class SessionAttributeDemo
-{
-    @Inject
-    private Request request;
-    
-    @SessionAttribute
-    private Track favoriteTrack;
-    
-    @SessionAttribute("track_in_session")
-    private Track anotherTrack;
-
-    void onActivate()
-    {
-        favoriteTrack = new Track();
-        favoriteTrack.setTitle("Foo");
-        
-        anotherTrack = new Track();
-        anotherTrack.setTitle("Bar");
-    }
-    
-    public Track getFavoriteTrack(){
-        return (Track) request.getSession(true).getAttribute("favoriteTrack");
-    }
-    
-    public Track getAnotherTrack(){
-        return (Track) request.getSession(true).getAttribute("track_in_session");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShortGrid.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShortGrid.java
deleted file mode 100644
index bb0e23c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShortGrid.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.grid.SortConstraint;
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-
-import java.util.List;
-
-public class ShortGrid
-{
-    public GridDataSource getData()
-    {
-        return new GridDataSource()
-        {
-            public int getAvailableRows()
-            {
-                return 50;
-            }
-
-            public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints)
-            {
-            }
-
-            public Object getRowValue(int index)
-            {
-                if (index > 5) return null;
-
-
-                ToDoItem item = new ToDoItem();
-
-                item.setTitle("Index #" + index);
-
-                return item;
-
-            }
-
-            public Class getRowType()
-            {
-                return ToDoItem.class;
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
deleted file mode 100644
index 9d00bf8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowBirthdayReminder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.integration.app1.data.BirthdayReminder;
-
-public class ShowBirthdayReminder
-{
-    @ApplicationState
-    private BirthdayReminder reminder;
-
-    public BirthdayReminder getReminder()
-    {
-        return reminder;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java
deleted file mode 100644
index fa9ddfc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowCalendarHolder.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.integration.app1.data.CalendarHolder;
-
-public class ShowCalendarHolder
-{
-    @SessionState
-    @Property
-    private CalendarHolder holder;
-    
-    void onActionFromClear()
-    {
-        holder = null;
-    }
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowSelection.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowSelection.java
deleted file mode 100644
index 9084004..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ShowSelection.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-
-public class ShowSelection
-{
-    private int selected;
-
-    public int getSelected()
-    {
-        return selected;
-    }
-
-    public void setSelected(int selected)
-    {
-        this.selected = selected;
-    }
-
-    @OnEvent("passivate")
-    int passivate()
-    {
-        return selected;
-    }
-
-    @OnEvent("activate")
-    void activate(int selected)
-    {
-        this.selected = selected;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleForm.java
deleted file mode 100644
index 05a136f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleForm.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.IncidentData;
-
-public class SimpleForm
-{
-    @Persist
-    private IncidentData incident;
-
-    @Persist
-    private boolean disabled;
-
-    public boolean isDisabled()
-    {
-        return disabled;
-    }
-
-    public void setDisabled(boolean disable)
-    {
-        disabled = disable;
-    }
-
-    public IncidentData getIncident()
-    {
-        return incident;
-    }
-
-    void onPrepare()
-    {
-        if (incident == null)
-        {
-            incident = new IncidentData();
-            incident.setUrgent(true);
-            incident.setOperatingSystem("osx");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
deleted file mode 100644
index 563fc46..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SimpleTrackGridDemo.java
+++ /dev/null
@@ -1,59 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.integration.app1.data.SimpleTrack;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.services.MusicLibrary;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.BeanModelSource;
-
-import java.util.List;
-
-public class SimpleTrackGridDemo
-{
-    @Inject
-    private MusicLibrary library;
-
-    @Inject
-    private BeanModelSource beanModelSource;
-
-    @Inject
-    private Messages messages;
-
-    private SimpleTrack track;
-
-    public SimpleTrack getTrack()
-    {
-        return track;
-    }
-
-    public void setTrack(SimpleTrack track)
-    {
-        this.track = track;
-    }
-
-    public List<Track> getTracks()
-    {
-        return library.getTracks();
-    }
-
-    public BeanModel getSimpleTrackModel()
-    {
-        return beanModelSource.create(SimpleTrack.class, false, messages);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SingleErrorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SingleErrorDemo.java
deleted file mode 100644
index 2bb049c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SingleErrorDemo.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class SingleErrorDemo 
-{
-	@Persist
-	@Property
-	private String username;
-	
-	@Persist
-	@Property
-	private String password;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SlowAjaxDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SlowAjaxDemo.java
deleted file mode 100644
index 1d55cf7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SlowAjaxDemo.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.util.TextStreamResponse;
-
-public class SlowAjaxDemo
-{
-    @Property
-    private String zoneMessage;
-
-    @InjectComponent
-    private Zone zone;
-
-    @Inject
-    private ComponentResources resources;
-
-    Object onActionFromLink()
-    {
-        zoneMessage = "Updated via an ActionLink";
-
-        return zone.getBody();
-    }
-
-    Object onSuccessFromForm()
-    {
-        zoneMessage = "Updated via form submission.";
-
-        return zone.getBody();
-    }
-
-    public Link getSlowScriptLink()
-    {
-        return resources.createEventLink("slowScript");
-    }
-
-    Object onSlowScript()
-    {
-        try
-        {
-            Thread.sleep(2 * 1000);
-        }
-        catch (Exception ex)
-        {
-        }
-
-        return new TextStreamResponse("text/javascript",
-                                      "document.write(\"<p id='slow'>Slow script loaded.</p>\");");
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SubmitWithContext.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SubmitWithContext.java
deleted file mode 100644
index 8fe8f34..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/SubmitWithContext.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class SubmitWithContext
-{
-    @Persist
-    @Property
-    private Double result;
-    
-    public Object[] getFormContext()
-    {
-        return new Object[]{new Integer(7), new Double(3.14159)};
-     }
-
-    void onSelected(Integer first, Double second)
-    {
-        result = first + second;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Target.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Target.java
deleted file mode 100644
index b46693f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Target.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.Persist;
-
-public class Target
-{
-    private Object[] activationContext;
-
-    @Persist("flash")
-    private Object[] componentContext;
-
-    private Object object;
-
-    @OnEvent("passivate")
-    public Object[] getActivationContext()
-    {
-        return activationContext;
-    }
-
-    public Object[] getComponentContext()
-    {
-        return componentContext;
-    }
-
-    @OnEvent("activate")
-    public void setActivationContext(Object[] activationContext)
-    {
-        this.activationContext = activationContext;
-    }
-
-    void onAction(Object[] componentContext)
-    {
-        this.componentContext = componentContext;
-    }
-
-    public Object[] getContextToEncode()
-    {
-        return new Object[] { "fred", "barney", "clark kent", "fred/barney", "\u592A\u90CE" };
-    }
-
-    public Object getObject()
-    {
-        return object;
-    }
-
-    public void setObject(Object object)
-    {
-        this.object = object;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TemplateOverrideDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TemplateOverrideDemo.java
deleted file mode 100644
index 26ef6ad..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TemplateOverrideDemo.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.base.EmptyExtendTemplate;
-
-public class TemplateOverrideDemo extends EmptyExtendTemplate
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TestOnlyServiceDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TestOnlyServiceDemo.java
deleted file mode 100644
index 1e0052b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TestOnlyServiceDemo.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.services.TestOnly;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class TestOnlyServiceDemo
-{
-    @Property
-    @Inject
-    private TestOnly service;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TextFieldWrapperTypeDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TextFieldWrapperTypeDemo.java
deleted file mode 100644
index 8fe5c30..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TextFieldWrapperTypeDemo.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class TextFieldWrapperTypeDemo
-{
-    @Persist
-    private Integer count;
-
-    public Integer getCount()
-    {
-        return count;
-    }
-
-    public void setCount(Integer count)
-    {
-        this.count = count;
-    }
-
-    public boolean isCountNull()
-    {
-        return count == null;
-    }
-
-    void onActionFromClear()
-    {
-        count = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
deleted file mode 100644
index 6f4de9f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoList.java
+++ /dev/null
@@ -1,103 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
-
-import java.util.List;
-
-public class ToDoList
-{
-    @Inject
-    private ToDoDatabase database;
-
-    private ToDoItem item;
-
-    private DefaultPrimaryKeyEncoder<Long, ToDoItem> encoder;
-
-    @Component
-    private Form form;
-
-    public List<ToDoItem> getItems()
-    {
-        return encoder.getValues();
-    }
-
-    public ToDoItem getItem()
-    {
-        return item;
-    }
-
-    public void setItem(ToDoItem item)
-    {
-        this.item = item;
-    }
-
-    public ToDoDatabase getDatabase()
-    {
-        return database;
-    }
-
-    public PrimaryKeyEncoder getEncoder()
-    {
-        return encoder;
-    }
-
-    void onPrepare()
-    {
-        List<ToDoItem> items = database.findAll();
-
-        encoder = new DefaultPrimaryKeyEncoder<Long, ToDoItem>(long.class);
-
-        for (ToDoItem item : items)
-        {
-            encoder.add(item.getId(), item);
-        }
-    }
-
-    void onSuccess()
-    {
-        int order = 0;
-
-        for (ToDoItem item : encoder.getValues())
-        {
-            item.setOrder(order++);
-            database.update(item);
-        }
-    }
-
-    void onSelectedFromAddNew()
-    {
-        if (form.isValid())
-        {
-            ToDoItem item = new ToDoItem();
-            item.setTitle("<New To Do>");
-            item.setOrder(encoder.getValues().size());
-
-            database.add(item);
-        }
-    }
-
-    void onActionFromReset()
-    {
-        database.reset();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoListVolatile.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoListVolatile.java
deleted file mode 100644
index 52472f4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ToDoListVolatile.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-import org.apache.tapestry5.integration.app1.services.ToDoDatabase;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-import java.util.List;
-
-public class ToDoListVolatile
-{
-    @Inject
-    private ToDoDatabase database;
-
-    private ToDoItem item;
-
-    private List<ToDoItem> items;
-
-    @Component
-    private Form form;
-
-    public List<ToDoItem> getItems()
-    {
-        return items;
-    }
-
-    public ToDoItem getItem()
-    {
-        return item;
-    }
-
-    public void setItem(ToDoItem item)
-    {
-        this.item = item;
-    }
-
-    public ToDoDatabase getDatabase()
-    {
-        return database;
-    }
-
-    void onPrepare()
-    {
-        items = database.findAll();
-    }
-
-    void onSuccess()
-    {
-        int order = 0;
-
-        for (ToDoItem item : items)
-        {
-            item.setOrder(order++);
-            database.update(item);
-        }
-    }
-
-    void onSelectedFromAddNew()
-    {
-        if (form.isValid())
-        {
-            ToDoItem item = new ToDoItem();
-            item.setTitle("<New To Do>");
-            item.setOrder(items.size());
-
-            database.add(item);
-        }
-    }
-
-    void onActionFromReset()
-    {
-        database.reset();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TrackEditor.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TrackEditor.java
deleted file mode 100644
index 6abff93..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TrackEditor.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.integration.app1.base.GenericEditor;
-import org.apache.tapestry5.integration.app1.data.Track;
-
-public class TrackEditor extends GenericEditor<Track>
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TriggerDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TriggerDemo.java
deleted file mode 100644
index c5db70e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/TriggerDemo.java
+++ /dev/null
@@ -1,17 +0,0 @@
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.annotations.Environmental;
-
-public class TriggerDemo
-{
-    @Environmental
-    private RenderSupport renderSupport;
-
-    public void onProvideAdditionalMarkup(MarkupWriter writer)
-    {
-        writer.writeRaw("Event 'provideAdditionalMarkup' handled.");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnavailableComponentDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnavailableComponentDemo.java
deleted file mode 100644
index ef4d780..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnavailableComponentDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-public class UnavailableComponentDemo
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnhandledEventDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnhandledEventDemo.java
deleted file mode 100644
index a506398..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnhandledEventDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class UnhandledEventDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnlessDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnlessDemo.java
deleted file mode 100644
index f0307c6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnlessDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class UnlessDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Unreachable.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Unreachable.java
deleted file mode 100644
index 698ac23..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Unreachable.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class Unreachable
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java
deleted file mode 100644
index e844fe1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/UnsupportedParameterBlockDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class UnsupportedParameterBlockDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java
deleted file mode 100644
index 49604cd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidBeanEditorDemo.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.corelib.ClientValidation;
-
-public class ValidBeanEditorDemo extends BeanEditorDemo
-{
-
-    @Override
-    public ClientValidation getClientValidation()
-    {
-        return ClientValidation.BLUR;
-    }
-
-    @Override
-    public String getPageTitle()
-    {
-        return "Client Validation / BeanEditor Demo";
-    }
-
-    Object onCanceledFromRegistrationData()
-    {
-        setMessage("Form was cancelled.");
-
-        clearErrors();
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidForm.java
deleted file mode 100644
index de9c3aa..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidForm.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.integration.app1.data.IncidentData;
-
-public class ValidForm
-{
-    @Persist
-    private IncidentData incident;
-
-    public IncidentData getIncident()
-    {
-        return incident;
-    }
-
-    void onPrepare()
-    {
-        if (incident == null)
-            incident = new IncidentData();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateFormValidationExceptionDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateFormValidationExceptionDemo.java
deleted file mode 100644
index 1e29949..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidateFormValidationExceptionDemo.java
+++ /dev/null
@@ -1,35 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class ValidateFormValidationExceptionDemo
-{
-    @Property
-    @Persist
-    private String event;
-
-    void onValidateFormFromForm() throws ValidationException
-    {
-        throw new ValidationException("From event handler method.");
-    }
-
-    void onSuccessFromForm() { event = "success"; }
-
-    void onFailureFromForm() { event = "failure"; }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidatorMacroDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidatorMacroDemo.java
deleted file mode 100644
index bde2023..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ValidatorMacroDemo.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-
-public class ValidatorMacroDemo 
-{
-	@Property 
-	@Persist
-	private String password;
-	
-	@Property
-	@Persist
-	@Validate("password")
-	private String password2;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/VarBindingDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/VarBindingDemo.java
deleted file mode 100644
index 75617c4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/VarBindingDemo.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class VarBindingDemo
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java
deleted file mode 100644
index fa78816..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ViewRegistration.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-
-public class ViewRegistration
-{
-    @ApplicationState
-    private RegistrationData data;
-
-    public RegistrationData getRegistrationData()
-    {
-        return data;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/VoidMethodWithCached.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/VoidMethodWithCached.java
deleted file mode 100644
index dfa9b52..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/VoidMethodWithCached.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Cached;
-
-public class VoidMethodWithCached
-{
-    @Cached
-    public void invalidMethod()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Wilma.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Wilma.java
deleted file mode 100644
index d3aad35..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/Wilma.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-public class Wilma
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/XMLContent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/XMLContent.java
deleted file mode 100644
index e9fbfdf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/XMLContent.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.Meta;
-
-@Meta("tapestry.response-content-type=text/xml")
-public class XMLContent
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneFormUpdateDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneFormUpdateDemo.java
deleted file mode 100644
index 8deeea7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneFormUpdateDemo.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class ZoneFormUpdateDemo
-{
-    @Property
-    @Persist(PersistenceConstants.FLASH)
-    private String value;
-
-    @Inject
-    private Block fields;
-
-    Object onActionFromUpdate()
-    {
-        return fields;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneUpdateNamespace.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneUpdateNamespace.java
deleted file mode 100644
index e2bc4fb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/ZoneUpdateNamespace.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009 Formos
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages;
-
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Zone;
-
-import java.util.Date;
-
-public class ZoneUpdateNamespace
-{
-    @InjectComponent
-    private Zone zone;
-
-    @Property
-    private String message;
-
-    Object onSuccess()
-    {
-        message = "Zone updated";
-
-        return zone.getBody();
-    }
-
-    public Date getNow()
-    {
-        return new Date();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/music/MusicDetails.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/music/MusicDetails.java
deleted file mode 100644
index c89ba9a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/music/MusicDetails.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright  2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages.music;
-
-import org.apache.tapestry5.integration.app1.data.Track;
-
-public class MusicDetails
-{
-    private Track track;
-
-    void onActivate(Track track)
-    {
-        this.track = track;
-    }
-
-    Object onPassivate()
-    {
-        return track;
-    }
-
-    public Track getTrack()
-    {
-        return track;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/music/MusicDetails2.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/music/MusicDetails2.java
deleted file mode 100644
index 6556f43..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/music/MusicDetails2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages.music;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.PageActivationContext;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.integration.app1.pages.Index;
-
-public class MusicDetails2
-{
-    @Property
-    @PageActivationContext
-    private Track track;
-
-    @InjectPage
-    private Index index;
-
-    Object onActivate()
-    {
-        if (track == null)
-        {
-            index.setAlert("Track not specified in URL.");
-            return index;
-        }
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ActionDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ActionDemo.java
deleted file mode 100644
index 773b346..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ActionDemo.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages.nested;
-
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.Property;
-
-public class ActionDemo
-{
-    @Property
-    private Long number;
-
-    @OnEvent(component = "actionlink", value = "action")
-    public void onAction(Long number)
-    {
-        this.number = number;
-    }
-
-    public void onActivate(Long number)
-    {
-        this.number = number;
-    }
-
-    public Long onPassivate()
-    {
-        return number;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/AssetDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/AssetDemo.java
deleted file mode 100644
index 0b45825..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/AssetDemo.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages.nested;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.Import;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.javascript.StylesheetOptions;
-
-/**
- * Primarily used to demonstrate that assets can be localized and exposed to the client, this has grown to also
- * demonstrate the use of the {@link Import} annotation.
- */
-public class AssetDemo
-{
-    @Inject
-    @Path("context:images/tapestry_banner.gif")
-    private Asset icon;
-
-    @Inject
-    @Path("tapestry-button.png")
-    private Asset button;
-
-    @Inject
-    @Path("context:css/ie-only.css")
-    private Asset ieOnly;
-
-    @Environmental
-    private JavaScriptSupport javascriptSupport;
-
-    @Import(stylesheet = "context:css/via-import.css")
-    void afterRender()
-    {
-        javascriptSupport.importStylesheet(new StylesheetLink(ieOnly, new StylesheetOptions(null, "IE")));
-    }
-
-    public Asset getIcon()
-    {
-        return icon;
-    }
-
-    public Asset getButton()
-    {
-        return button;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java
deleted file mode 100644
index 462c1a3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/pages/nested/ZoneDemo.java
+++ /dev/null
@@ -1,188 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.pages.nested;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.QueryParameterConstants;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ajax.MultiZoneUpdate;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.corelib.components.BeanEditForm;
-import org.apache.tapestry5.corelib.components.Zone;
-import org.apache.tapestry5.integration.app1.data.RegistrationData;
-import org.apache.tapestry5.integration.app1.pages.SecurePage;
-import org.apache.tapestry5.internal.services.StringValueEncoder;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.json.JSONObject;
-
-import java.util.Date;
-
-public class ZoneDemo
-{
-    @Component(id = "registrationForm")
-    private BeanEditForm regform;
-
-    private String name;
-
-    @ApplicationState
-    private RegistrationData registration;
-
-    private static final String[] NAMES =
-    { "Fred & Wilma", "Mr. <Roboto>", "Grim Fandango", "Registration", "Vote" };
-
-    @Inject
-    private Block registrationForm, registrationOutput, voteForm, voteOutput, empty, forUnknownZone, forNotAZone;
-
-    @Property
-    private String vote;
-
-    @InjectComponent
-    private Zone output;
-
-    @InjectPage
-    private SecurePage securePage;
-
-    @Environmental
-    private RenderSupport renderSupport;
-
-    public String[] getNames()
-    {
-        return NAMES;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-
-    @Log
-    Object onActionFromSelect(String name, @RequestParameter(QueryParameterConstants.ZONE_ID)
-    String zoneId)
-    {
-        if (!zoneId.equals("output"))
-            throw new AssertionError("Expected zoneId 'output' to be passed up in request.");
-
-        this.name = name;
-
-        if (name.equals("Registration"))
-            return registrationForm;
-
-        if (name.equals("Vote"))
-            return voteForm;
-
-        return output.getBody();
-    }
-
-    void onActionFromFail()
-    {
-        throw new RuntimeException("Server-side exception.");
-    }
-
-    void onActionFromPoorlyFormattedFail()
-    {
-        throw new RuntimeException("Failure &\n\n<Stuff>!");
-    }
-
-    Object onSuccessFromRegistrationForm()
-    {
-        return registrationOutput;
-    }
-
-    Object onActionFromClear()
-    {
-        regform.clearErrors();
-        registration = null;
-
-        return registrationForm;
-    }
-
-    public RegistrationData getRegistration()
-    {
-        return registration;
-    }
-
-    Object onActionFromJSON()
-    {
-        JSONObject response = new JSONObject();
-
-        response.put("content", "Directly coded JSON content");
-
-        return response;
-    }
-
-    public Date getCurrentTime()
-    {
-        return new Date();
-    }
-
-    public ValueEncoder<String> getEncoder()
-    {
-        return new StringValueEncoder();
-    }
-
-    void onSelectedFromVoteYes()
-    {
-        vote = "Yes";
-    }
-
-    void onSelectedFromVoteNo()
-    {
-        vote = "No";
-    }
-
-    Object onSuccessFromVote()
-    {
-        return voteOutput;
-    }
-
-    Object onActionFromRedirect()
-    {
-        return AssetDemo.class;
-    }
-
-    Object onActionFromSecureRedirect()
-    {
-        return securePage;
-    }
-
-    Object onActionFromBlankUpdate()
-    {
-        return empty;
-    }
-
-    void afterRender()
-    {
-        renderSupport
-                .addScript(
-                        "$('%s').observe(Tapestry.ZONE_UPDATED_EVENT, function() { $('zone-update-message').update('Zone updated.'); });",
-                        output.getClientId());
-    }
-
-    Object onActionFromBadZone()
-    {
-        return new MultiZoneUpdate("unknownZone", forUnknownZone);
-    }
-
-    Object onActionFromNonZoneUpdate()
-    {
-        return new MultiZoneUpdate("notAZone", forNotAZone);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
deleted file mode 100644
index c0b7fbe..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/AppModule.java
+++ /dev/null
@@ -1,288 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.io.IOException;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.net.URL;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.internal.services.GenericValueEncoderFactory;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Value;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.AliasContribution;
-import org.apache.tapestry5.services.BaseURLSource;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-import org.slf4j.Logger;
-
-/**
- * I was just dying to see how fast requests are!
- */
-public class AppModule
-{
-    /**
-     * Used to disambiguate services in this module from services in other modules that share the same service
-     * interface.
-     */
-    @Target(
-    { PARAMETER, FIELD })
-    @Retention(RUNTIME)
-    @Documented
-    public @interface Local
-    {
-
-    }
-
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Reloadable.class);
-        binder.bind(MessageAccess.class);
-    }
-    
-    public static void contributeValidatorMacro(MappedConfiguration<String,String> configuration)
-    {
-    	configuration.add("password", "required,lengthBetweenTwoAndThree");
-    	configuration.add("lengthBetweenTwoAndThree", "minlength=2,maxlength=3");
-    }
-
-    public void contributeAlias(Configuration<AliasContribution> configuration)
-    {
-        BaseURLSource source = new BaseURLSource()
-        {
-            public String getBaseURL(boolean secure)
-            {
-                String protocol = secure ? "https" : "http";
-
-                // This is all a bit jury-rigged together. This is for running the app
-                // interactively; Selenium doesn't seem to handle the transition to https.
-                int port = secure ? 8443 : 9090;
-
-                return String.format("%s://localhost:%d", protocol, port);
-            }
-        };
-
-        configuration.add(AliasContribution.create(BaseURLSource.class, source));
-    }
-
-    @Marker(Local.class)
-    public RequestFilter buildTimingFilter(final Logger log)
-    {
-        return new RequestFilter()
-        {
-            public boolean service(Request request, Response response, RequestHandler handler) throws IOException
-            {
-                long startTime = System.nanoTime();
-
-                try
-                {
-                    return handler.service(request, response);
-                }
-                finally
-                {
-                    long elapsed = System.nanoTime() - startTime;
-
-                    log.info(String.format("Request time: %5.2f s -- %s", elapsed * 10E-10d, request.getPath()));
-                }
-            }
-        };
-    }
-
-    public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration,
-
-    @Local
-    RequestFilter filter)
-    {
-        configuration.add("Timing", filter);
-    }
-
-    public UserAuthenticator buildUserAuthenticator()
-    {
-        return new UserAuthenticator()
-        {
-            public boolean isValid(String userName, String plaintextPassword)
-            {
-                return plaintextPassword.equals("tapestry");
-            }
-        };
-    }
-
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en,fr,de");
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-        configuration.add(SymbolConstants.COMPRESS_WHITESPACE, "false");
-        configuration.add(SymbolConstants.COMBINE_SCRIPTS, "true");
-
-        configuration.add(SymbolConstants.SECURE_ENABLED, "true");
-
-        configuration.add("app.injected-symbol", "Symbol contributed to ApplicationDefaults");
-
-        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
-    }
-
-    public static void contributeIgnoredPathsFilter(Configuration<String> configuration)
-    {
-        configuration.add("/unreachable");
-    }
-
-    public ToDoDatabase buildToDoDatabase()
-    {
-        return new ToDoDatabaseImpl();
-    }
-
-    public MusicLibrary buildMusicLibrary(Logger log)
-    {
-        URL library = getClass().getResource("iTunes.xml");
-
-        final List<Track> tracks = new MusicLibraryParser(log).parseTracks(library);
-
-        final Map<Long, Track> idToTrack = CollectionFactory.newMap();
-
-        for (Track t : tracks)
-        {
-            idToTrack.put(t.getId(), t);
-        }
-
-        return new MusicLibrary()
-        {
-            public Track getById(long id)
-            {
-                Track result = idToTrack.get(id);
-
-                if (result != null)
-                    return result;
-
-                throw new IllegalArgumentException(String.format("No track with id #%d.", id));
-            }
-
-            public List<Track> getTracks()
-            {
-                return tracks;
-            }
-
-            public List<Track> findByMatchingTitle(String title)
-            {
-                String titleLower = title.toLowerCase();
-
-                List<Track> result = CollectionFactory.newList();
-
-                for (Track t : tracks)
-                {
-                    if (t.getTitle().toLowerCase().contains(titleLower))
-                        result.add(t);
-                }
-
-                return result;
-            }
-        };
-    }
-
-    @Marker(French.class)
-    public Greeter buildFrenchGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-
-            {
-                return "Bonjour!";
-            }
-        };
-    }
-
-    public Greeter buildDefaultGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-
-            {
-                return "Hello";
-            }
-        };
-    }
-
-    public static void contributeValueEncoderSource(MappedConfiguration<Class, ValueEncoderFactory> configuration,
-            final MusicLibrary library, final ToDoDatabase todoDatabase)
-    {
-        ValueEncoder<Track> trackEncoder = new ValueEncoder<Track>()
-        {
-            public String toClient(Track value)
-            {
-                return Long.toString(value.getId());
-            }
-
-            public Track toValue(String clientValue)
-            {
-                long id = Long.parseLong(clientValue);
-
-                return library.getById(id);
-            }
-        };
-
-        configuration.add(Track.class, GenericValueEncoderFactory.create(trackEncoder));
-
-        ValueEncoder<ToDoItem> todoEncoder = new ValueEncoder<ToDoItem>()
-        {
-            public String toClient(ToDoItem value)
-            {
-                return String.valueOf(value.getId());
-            }
-
-            public ToDoItem toValue(String clientValue)
-            {
-                long id = Long.parseLong(clientValue);
-
-                return todoDatabase.get(id);
-            }
-        };
-
-        configuration.add(ToDoItem.class, GenericValueEncoderFactory.create(todoEncoder));
-    }
-
-    public static void contributeComponentClassTransformWorker(
-            OrderedConfiguration<ComponentClassTransformWorker> configuration)
-    {
-        configuration.add("ReverseStringsWorker", new ReverseStringsWorker());
-    }
-
-    public static void contributeComponentMessagesSource(@Value("context:WEB-INF/pre-app.properties")
-    Resource preappResource, OrderedConfiguration<Resource> configuration)
-    {
-        configuration.add("PreApp", preappResource, "before:AppCatalog");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/DearGodWhyMeException.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/DearGodWhyMeException.java
deleted file mode 100644
index 57d3d8a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/DearGodWhyMeException.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public class DearGodWhyMeException extends Exception
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/French.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/French.java
deleted file mode 100644
index 44504f9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/French.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Marker interface.
- */
-@Target(
-        { PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface French
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/Greeter.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/Greeter.java
deleted file mode 100644
index 308708a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/Greeter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public interface Greeter
-{
-    String getGreeting();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccess.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccess.java
deleted file mode 100644
index 641cb77..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccess.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public interface MessageAccess
-{
-    String getStatusMessage();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java
deleted file mode 100644
index 9a3eda1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MessageAccessImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class MessageAccessImpl implements MessageAccess
-{
-    @Inject
-    private Messages messages;
-
-    public String getStatusMessage()
-    {
-        return messages.get("app-catalog-status");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibrary.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibrary.java
deleted file mode 100644
index 08f3024..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibrary.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import org.apache.tapestry5.integration.app1.data.Track;
-
-import java.util.List;
-
-public interface MusicLibrary
-{
-    /**
-     * Gets a track by its unique id.
-     *
-     * @param id of track to retrieve
-     * @return the Track
-     * @throws IllegalArgumentException if no such track exists
-     */
-    Track getById(long id);
-
-    /**
-     * Provides a list of all tracks in an indeterminate order.
-     */
-    List<Track> getTracks();
-
-    /**
-     * Performs a case-insensitive search, finding all tracks whose title contains the input string (ignoring case).
-     *
-     * @param title a partial title
-     * @return a list of all matches
-     */
-    List<Track> findByMatchingTitle(String title);
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java
deleted file mode 100644
index 504b0ba..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/MusicLibraryParser.java
+++ /dev/null
@@ -1,394 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import org.apache.tapestry5.integration.app1.data.Track;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.slf4j.Logger;
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.SAXException;
-import org.xml.sax.XMLReader;
-import org.xml.sax.helpers.DefaultHandler;
-import org.xml.sax.helpers.XMLReaderFactory;
-
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import static java.lang.String.format;
-import java.net.URL;
-import java.util.List;
-
-/**
- * Reads an iTunes music library file into a list of {@link org.apache.tapestry5.integration.app1.data.Track} elements.
- */
-public class MusicLibraryParser
-{
-    private final Logger logger;
-
-    private static final int STATE_START = 0;
-
-    private static final int STATE_PLIST = 1;
-
-    private static final int STATE_DICT1 = 2;
-
-    private static final int STATE_IGNORE = 3;
-
-    private static final int STATE_DICT2 = 4;
-
-    private static final int STATE_DICT_TRACK = 5;
-
-    private static final int STATE_COLLECT_KEY = 6;
-
-    private static final int STATE_COLLECT_VALUE = 7;
-
-    private static class Item
-    {
-        StringBuilder _buffer;
-
-        boolean _ignoreCharacterData;
-
-        int _priorState;
-
-        void addContent(char buffer[], int start, int length)
-        {
-            if (_ignoreCharacterData) return;
-
-            if (_buffer == null) _buffer = new StringBuilder(length);
-
-            _buffer.append(buffer, start, length);
-        }
-
-        String getContent()
-        {
-            if (_buffer != null)
-                return _buffer.toString().trim();
-            else
-                return null;
-        }
-
-        Item(int priorState, boolean ignoreCharacterData)
-        {
-            _priorState = priorState;
-            _ignoreCharacterData = ignoreCharacterData;
-        }
-    }
-
-    private class Handler extends DefaultHandler
-    {
-        private final List<Track> tracks = CollectionFactory.newList();
-
-        private Stack<Item> stack = CollectionFactory.newStack();
-
-        private int state = STATE_START;
-
-        /**
-         * Most recently seen key.
-         */
-        private String key;
-
-        /**
-         * Currently building Track.
-         */
-        private Track track;
-
-        public List<Track> getTracks()
-        {
-            return tracks;
-        }
-
-        private Item peek()
-        {
-            return stack.peek();
-        }
-
-        private void pop()
-        {
-            state = stack.pop()._priorState;
-        }
-
-        private void push(int newState)
-        {
-            push(newState, true);
-        }
-
-        protected void push(int newState, boolean ignoreCharacterData)
-        {
-            Item item = new Item(state, ignoreCharacterData);
-
-            stack.push(item);
-
-            state = newState;
-        }
-
-        @Override
-        public void endElement(String uri, String localName, String qName) throws SAXException
-        {
-            end(getElementName(localName, qName));
-        }
-
-        @Override
-        public void startElement(String uri, String localName, String qName, Attributes attributes)
-                throws SAXException
-        {
-            String elementName = getElementName(localName, qName);
-            begin(elementName);
-        }
-
-        private String getElementName(String localName, String qName)
-        {
-            return qName == null ? localName : qName;
-        }
-
-        @Override
-        public void characters(char ch[], int start, int length) throws SAXException
-        {
-            peek().addContent(ch, start, length);
-        }
-
-        private void begin(String element)
-        {
-            switch (state)
-            {
-                case STATE_START:
-                    enterStart(element);
-                    return;
-
-                case STATE_PLIST:
-                    enterPlist(element);
-                    return;
-
-                case STATE_DICT1:
-                    enterDict1(element);
-                    return;
-
-                case STATE_DICT2:
-                    enterDict2(element);
-                    return;
-
-                case STATE_IGNORE:
-                    push(STATE_IGNORE);
-                    return;
-
-                case STATE_DICT_TRACK:
-                    enterDictTrack(element);
-                    return;
-            }
-        }
-
-        private void enterStart(String element)
-        {
-            if (element.equals("plist"))
-            {
-                push(STATE_PLIST);
-                return;
-            }
-        }
-
-        private void enterPlist(String element)
-        {
-            if (element.equals("dict"))
-            {
-                push(STATE_DICT1);
-                return;
-            }
-
-            push(STATE_IGNORE);
-        }
-
-        private void enterDict1(String element)
-        {
-            if (element.equals("dict"))
-            {
-                push(STATE_DICT2);
-                return;
-            }
-
-            push(STATE_IGNORE);
-        }
-
-        private void enterDict2(String element)
-        {
-            if (element.equals("dict"))
-            {
-                beginDictTrack(element);
-                return;
-            }
-
-            push(STATE_IGNORE);
-        }
-
-        private void beginDictTrack(String element)
-        {
-            track = new Track();
-
-            tracks.add(track);
-
-            push(STATE_DICT_TRACK);
-        }
-
-        private void enterDictTrack(String element)
-        {
-            if (element.equals("key"))
-            {
-                beginCollectKey(element);
-                return;
-            }
-
-            beginCollectValue(element);
-        }
-
-        private void beginCollectKey(String element)
-        {
-            push(STATE_COLLECT_KEY, false);
-        }
-
-        private void beginCollectValue(String element)
-        {
-            push(STATE_COLLECT_VALUE, false);
-
-        }
-
-        private void end(String element)
-        {
-            switch (state)
-            {
-                case STATE_COLLECT_KEY:
-
-                    endCollectKey(element);
-                    return;
-
-                case STATE_COLLECT_VALUE:
-                    endCollectValue(element);
-                    return;
-
-                default:
-                    pop();
-            }
-        }
-
-        private void endCollectKey(String element)
-        {
-            key = peek().getContent();
-
-            pop();
-        }
-
-        private void endCollectValue(String element)
-        {
-            String value = peek().getContent();
-
-            pop();
-
-            if (key.equals("Track ID"))
-            {
-                track.setId(Long.parseLong(value));
-            }
-
-            if (key.equals("Name"))
-            {
-                track.setTitle(value);
-                return;
-            }
-
-            if (key.equals("Artist"))
-            {
-                track.setArtist(value);
-                return;
-            }
-
-            if (key.equals("Album"))
-            {
-                track.setAlbum(value);
-                return;
-            }
-
-            if (key.equals("Genre"))
-            {
-                track.setGenre(value);
-                return;
-            }
-
-            if (key.equals("Play Count"))
-            {
-                track.setPlayCount(Integer.parseInt(value));
-                return;
-            }
-
-            if (key.equals("Rating"))
-            {
-                track.setRating(Integer.parseInt(value));
-                return;
-            }
-
-            // Many other keys are just ignored.
-        }
-
-        @Override
-        public InputSource resolveEntity(String publicId, String systemId) throws SAXException
-        {
-            if (publicId.equals("-//Apple Computer//DTD PLIST 1.0//EN"))
-            {
-                InputStream local = new BufferedInputStream(getClass().getResourceAsStream(
-                        "PropertyList-1.0.dtd"));
-
-                return new InputSource(local);
-            }
-
-            // Perform normal processing, such as accessing via system id. That's
-            // what we want to avoid, since presentations are often given when there
-            // is no Internet connection.
-
-            return null;
-        }
-    }
-
-    public MusicLibraryParser(final Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    public List<Track> parseTracks(URL resource)
-    {
-        logger.info(format("Parsing music library %s", resource));
-
-        long start = System.currentTimeMillis();
-
-        Handler handler = new Handler();
-
-        try
-        {
-            XMLReader reader = XMLReaderFactory.createXMLReader();
-
-            reader.setContentHandler(handler);
-            reader.setEntityResolver(handler);
-
-            InputSource source = new InputSource(resource.openStream());
-
-            reader.parse(source);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        List<Track> result = handler.getTracks();
-        long elapsed = System.currentTimeMillis() - start;
-
-        logger.info(format("Parsed %d tracks in %d ms", result.size(), elapsed));
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/Reloadable.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/Reloadable.java
deleted file mode 100644
index c06fbf2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/Reloadable.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public interface Reloadable
-{
-    String getStatus();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReloadableImpl.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReloadableImpl.java
deleted file mode 100644
index 88ae069..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReloadableImpl.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public class ReloadableImpl implements Reloadable
-{
-    public String getStatus()
-    {
-        return "Initial Value";
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReverseStrings.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReverseStrings.java
deleted file mode 100644
index 04f7412..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReverseStrings.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation used with {@link org.apache.tapestry5.integration.app1.services.StringReversalAdvice}.
- */
-@Target(METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface ReverseStrings
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReverseStringsWorker.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReverseStringsWorker.java
deleted file mode 100644
index f674356..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ReverseStringsWorker.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.*;
-
-public class ReverseStringsWorker implements ComponentClassTransformWorker
-{
-    private final ComponentMethodAdvice advice = new ComponentMethodAdvice()
-    {
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            for (int i = 0; i < invocation.getParameterCount(); i++)
-            {
-                if (invocation.getParameterType(i).equals(String.class))
-                {
-                    String value = (String) invocation.getParameter(i);
-
-                    invocation.override(i, reverse(value));
-                }
-            }
-
-            invocation.proceed();
-
-            if (invocation.getResultType().equals(String.class))
-            {
-                if (invocation.isFail())
-                {
-                    Exception thrown = invocation.getThrown(Exception.class);
-
-                    invocation.overrideResult(
-                            String.format("Invocation of method %s() failed with %s.",
-                                          invocation.getMethodName(),
-                                          thrown.getClass().getName()));
-
-                    return;
-                }
-
-                String value = (String) invocation.getResult();
-
-                invocation.overrideResult(reverse(value));
-            }
-        }
-
-        private String reverse(String input)
-        {
-            char[] inputArray = input.toCharArray();
-            char[] outputArray = new char[inputArray.length];
-
-            for (int i = 0; i < inputArray.length; i++)
-            {
-                outputArray[inputArray.length - i - 1] = inputArray[i];
-            }
-
-            return new String(outputArray);
-        }
-    };
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformMethodSignature sig : transformation.findMethodsWithAnnotation(ReverseStrings.class))
-        {
-            transformation.advise(sig, advice);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/TestOnly.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/TestOnly.java
deleted file mode 100644
index 53c54a1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/TestOnly.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public interface TestOnly
-{
-    String getMessage();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/TestOnlyModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/TestOnlyModule.java
deleted file mode 100644
index 1a53ace..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/TestOnlyModule.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-/**
- * This module is available only due to configuration inside web.xml, as part of the default
- * ("production") execution mode.
- */
-public class TestOnlyModule
-{
-    public TestOnly build()
-    {
-        return new TestOnly()
-        {
-            public String getMessage()
-            {
-                return "TestOnly service message";
-            }
-        };
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabase.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabase.java
deleted file mode 100644
index fdce54f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabase.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-
-import java.util.List;
-
-public interface ToDoDatabase
-{
-    /**
-     * Adds an item to the database, first assigning a unique id to the item.
-     */
-    void add(ToDoItem item);
-
-    /**
-     * Finds all items, sorted ascending by each item's order property.
-     */
-    List<ToDoItem> findAll();
-
-    /**
-     * Updates an existing item.
-     *
-     * @param item
-     * @throws RuntimeException if the item does not exist
-     */
-    void update(ToDoItem item);
-
-    /**
-     * Resets the database, clearing out all data, re-adding base data.
-     */
-    void reset();
-
-    /**
-     * Deletes all items from the database.
-     */
-    void clear();
-
-    /**
-     * Removes an existing item
-     *
-     * @param itemId item to remove
-     * @throws RuntimeException if the item does not exist
-     */
-    void remove(long itemId);
-
-    /**
-     * Gets the item, or returns null.
-     */
-    ToDoItem get(long itemId);
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java
deleted file mode 100644
index 36ea3a3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/ToDoDatabaseImpl.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-import org.apache.tapestry5.integration.app1.data.ToDoItem;
-import org.apache.tapestry5.integration.app1.data.Urgency;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Map;
-
-/**
- * We clone everything that comes in or goes out. This does a reasonable job of simulating an external database. We just
- * use cloned copies of objects to represent data that's been marshalled into tables and columns.
- */
-public class ToDoDatabaseImpl implements ToDoDatabase
-{
-    private long nextId = 1000;
-
-    private final Map<Long, ToDoItem> items = CollectionFactory.newMap();
-
-    public ToDoDatabaseImpl()
-    {
-        // A couple of items to get us started:
-
-        reset();
-    }
-
-    public void clear()
-    {
-        items.clear();
-    }
-
-
-    public void reset()
-    {
-        items.clear();
-
-        add("End World Hunger", Urgency.MEDIUM, 1);
-        add("Develop Faster-Than-Light Travel", Urgency.HIGH, 2);
-        add("Cure Common Cold", Urgency.LOW, 3);
-    }
-
-    private void add(String title, Urgency urgency, int order)
-    {
-        ToDoItem item = new ToDoItem();
-
-        item.setTitle(title);
-        item.setUrgency(urgency);
-        item.setOrder(order);
-
-        add(item);
-    }
-
-    public void add(ToDoItem item)
-    {
-        long id = nextId++;
-
-        item.setId(id);
-
-        items.put(id, item.clone());
-    }
-
-    public List<ToDoItem> findAll()
-    {
-        List<ToDoItem> result = newList();
-
-        for (ToDoItem item : items.values())
-            result.add(item.clone());
-
-        Comparator<ToDoItem> comparator = new Comparator<ToDoItem>()
-        {
-            public int compare(ToDoItem o1, ToDoItem o2)
-            {
-                return o1.getOrder() - o2.getOrder();
-            }
-        };
-
-        Collections.sort(result, comparator);
-
-        return result;
-    }
-
-    public void update(ToDoItem item)
-    {
-        long id = item.getId();
-
-        if (!items.containsKey(id))
-            throw new RuntimeException(String.format("ToDoItem #%d not found.", id));
-
-        items.put(id, item.clone());
-    }
-
-    public void remove(long itemId)
-    {
-        ToDoItem item = items.remove(itemId);
-
-        if (item == null)
-            throw new RuntimeException(String.format("ToDoItem #%d not found.", itemId));
-    }
-
-    public ToDoItem get(long itemId)
-    {
-        ToDoItem item = items.get(itemId);
-
-        return item == null ? null : item.clone();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/UserAuthenticator.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/UserAuthenticator.java
deleted file mode 100644
index 40129f4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app1/services/UserAuthenticator.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app1.services;
-
-public interface UserAuthenticator
-{
-    boolean isValid(String userName, String plaintextPassword);
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/SimpleASO.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/SimpleASO.java
deleted file mode 100644
index 6833bf3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/SimpleASO.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2;
-
-public class SimpleASO
-{
-    private String foo = "bar";
-
-    public void setFoo(String foo)
-    {
-        this.foo = foo;
-    }
-
-    public String getFoo()
-    {
-        return foo;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/components/SimpleLayout.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/components/SimpleLayout.java
deleted file mode 100644
index 40a7cf1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/components/SimpleLayout.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.components;
-
-public class SimpleLayout
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/mixins/ForceId.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/mixins/ForceId.java
deleted file mode 100644
index da59bf3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/mixins/ForceId.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.mixins;
-
-import org.apache.tapestry5.ClientElement;
-import org.apache.tapestry5.annotations.InjectContainer;
-
-public class ForceId
-{
-    @InjectContainer
-    private ClientElement container;
-
-    void afterRender()
-    {
-        container.getClientId();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/DTDFromComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/DTDFromComponent.java
deleted file mode 100644
index d82564d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/DTDFromComponent.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class DTDFromComponent
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/DTDFromPage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/DTDFromPage.java
deleted file mode 100644
index dcafc2b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/DTDFromPage.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class DTDFromPage
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Final.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Final.java
deleted file mode 100644
index 5323459..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Final.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class Final
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Intermediate.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Intermediate.java
deleted file mode 100644
index 3925288..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Intermediate.java
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class Intermediate
-{
-    Object onActivate()
-    {
-        return Final.class;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Launch.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Launch.java
deleted file mode 100644
index 804a454..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/Launch.java
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class Launch
-{
-    Object onSuccess()
-    {
-        return Intermediate.class;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/MultipleDTD.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/MultipleDTD.java
deleted file mode 100644
index f314fbb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/MultipleDTD.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class MultipleDTD
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/NoDTD.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/NoDTD.java
deleted file mode 100644
index f978d1b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/NoDTD.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class NoDTD
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/ResultPageForActionLink.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/ResultPageForActionLink.java
deleted file mode 100644
index 2c0b67e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/ResultPageForActionLink.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-
-public class ResultPageForActionLink
-{
-    private int number;
-
-    @OnEvent("passivate")
-    public int getNumber()
-    {
-        return number;
-    }
-
-    @OnEvent("activate")
-    public void setNumber(int number)
-    {
-        this.number = number;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java
deleted file mode 100644
index b75ceea..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForASO.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.integration.app2.SimpleASO;
-
-public class TestPageForASO
-{
-    @ApplicationState
-    private SimpleASO aso;
-
-    public String getFooString()
-    {
-        return aso.getFoo();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForActionLink.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForActionLink.java
deleted file mode 100644
index 84f343e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForActionLink.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.OnEvent;
-
-public class TestPageForActionLink
-{
-    @InjectPage("ResultPageForActionLink")
-    private ResultPageForActionLink resultPage;
-
-    @OnEvent(component = "link1")
-    public ResultPageForActionLink onClick(int number)
-    {
-        resultPage.setNumber(number);
-        return resultPage;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForActionLinkWithStream.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForActionLinkWithStream.java
deleted file mode 100644
index 30c1924..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForActionLinkWithStream.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.util.TextStreamResponse;
-
-public class TestPageForActionLinkWithStream
-{
-
-    public Object onAction()
-    {
-        return new TextStreamResponse("text/html",
-                "<html><body>Rendered with TextStreamResponse</body></html>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForAsset.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForAsset.java
deleted file mode 100644
index 1722fb1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForAsset.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class TestPageForAsset
-{
-    @Inject
-    @Path("context:css/test.css")
-    private Asset asset;
-
-    public String getStylePath()
-    {
-        return asset.toClientURL();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForForm.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForForm.java
deleted file mode 100644
index be2741f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForForm.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-
-public class TestPageForForm
-{
-    @Persist
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHead.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHead.java
deleted file mode 100644
index a7ffc3c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHead.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-
-public class TestPageForHead
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHttpError.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHttpError.java
deleted file mode 100644
index 2ad8929..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHttpError.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app2.pages;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.services.HttpError;
-
-public class TestPageForHttpError
-{
-
-    Object onActivate()
-    {
-        return new HttpError(HttpServletResponse.SC_MOVED_TEMPORARILY, "Oups! Resource moved. Try again later.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHttpHeaders.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHttpHeaders.java
deleted file mode 100644
index 079ba8b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForHttpHeaders.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Response;
-
-public class TestPageForHttpHeaders
-{
-    public static final String STRING_HEADER_NAME = "test-string-header";
-    public static final String INT_HEADER_NAME = "test-int-header";
-    public static final String DATE_HEADER_NAME = "test-date-header";
-    
-    @Inject
-    private Response response;
-
-    void onActivate()
-    {
-        response.setDateHeader(DATE_HEADER_NAME, 12345L);
-        response.setIntHeader(INT_HEADER_NAME, 6789);
-        response.setHeader(STRING_HEADER_NAME, "foo-bar-baz-barney");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForIf.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForIf.java
deleted file mode 100644
index f493051..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForIf.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class TestPageForIf
-{
-    private boolean property1 = true;
-
-    private boolean property2 = false;
-
-    public boolean isProperty1()
-    {
-        return property1;
-    }
-
-    public boolean isProperty2()
-    {
-        return property2;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForLocale.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForLocale.java
deleted file mode 100644
index ac8d7c8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForLocale.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PersistentLocale;
-
-import java.util.Locale;
-
-public class TestPageForLocale
-{
-    @Inject
-    private PersistentLocale persistentLocale;
-
-    @OnEvent(component = "changeLocale")
-    public void changeLocaleToFrench()
-    {
-        persistentLocale.set(Locale.FRENCH);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForLoop.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForLoop.java
deleted file mode 100644
index 85d854f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForLoop.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class TestPageForLoop
-{
-    private String[] array =
-            { "x", "y", "z" };
-
-    private String value;
-
-    public String[] getArray()
-    {
-        return array;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForRedirectURL.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForRedirectURL.java
deleted file mode 100644
index db5a408..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForRedirectURL.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app2.pages;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-
-public class TestPageForRedirectURL
-{
-
-    public static final String REDIRECT_URL = "http://localhost:8080/foo/bar/baz";
-
-    Object onActivate() throws MalformedURLException
-    {
-        return new URL(REDIRECT_URL);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForServletOutputStream.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForServletOutputStream.java
deleted file mode 100644
index e150ced..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForServletOutputStream.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.util.TextStreamResponse;
-
-public class TestPageForServletOutputStream
-{
-    Object onActivate()
-    {
-        return new TextStreamResponse("text/html",
-                "<html><body>Rendered with TextStreamResponse</body></html>");
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForSubmit.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForSubmit.java
deleted file mode 100644
index 82467ba..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForSubmit.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.Component;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.corelib.components.Form;
-import org.apache.tapestry5.corelib.components.Submit;
-import org.apache.tapestry5.corelib.components.TextField;
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class TestPageForSubmit
-{
-    @SuppressWarnings("unused")
-    @Component
-    private Form form1;
-
-    @SuppressWarnings("unused")
-    @Component
-    private Form form2;
-
-    @SuppressWarnings("unused")
-    @Component
-    private Submit capitalize1;
-
-    @SuppressWarnings("unused")
-    @Component
-    private Submit capitalize2;
-
-    @SuppressWarnings("unused")
-    @Component(parameters = "value=value")
-    private TextField t1;
-
-    @SuppressWarnings("unused")
-    @Component(parameters = "value=value")
-    private TextField t2;
-    
-    @Property
-    @Inject
-    @Path("${tapestry.spacer-image}")
-    private Asset spacerImage;
-
-    @Persist
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    void onSelectedFromCapitalize1()
-    {
-        value = value.toUpperCase();
-    }
-
-    void onSelectedFromCapitalize2()
-    {
-        onSelectedFromCapitalize1();
-    }
-
-    void afterRender()
-    {
-        // Force the generation of client ids.
-        capitalize1.getClientId();
-        capitalize2.getClientId();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForTemplateInContext.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForTemplateInContext.java
deleted file mode 100644
index 6ae0709..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForTemplateInContext.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class TestPageForTemplateInContext
-{
-    public String getMsg()
-    {
-        return "How are you?";
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForUnless.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForUnless.java
deleted file mode 100644
index 79e7923..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/pages/TestPageForUnless.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.pages;
-
-public class TestPageForUnless
-{
-    private boolean property1 = true;
-
-    private boolean property2 = false;
-
-    public boolean isProperty1()
-    {
-        return property1;
-    }
-
-    public boolean isProperty2()
-    {
-        return property2;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java
deleted file mode 100644
index de317e2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app2/services/LocaleAppModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app2.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-
-public class LocaleAppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en,fr,de");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/AdditionalIntegrationTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/AdditionalIntegrationTests.java
deleted file mode 100644
index db1a0be..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/AdditionalIntegrationTests.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Additional integration tests that do not fit with the main group due to the need for special
- * configuration.
- */
-public class AdditionalIntegrationTests extends TapestryCoreTestCase
-{
-    /**
-     * Test to prove that a redirect from the start page works correctly.
-     * 
-     * @see https://issues.apache.org/jira/browse/TAPESTRY-1627
-     */
-    @Test
-    public void redirect_for_root() throws Exception
-    {
-        openBaseURL();
-
-        assertText("//h1", "Login Page");
-    }
-
-    @Test
-    public void bean_block_overrides()
-    {
-        clickThru("BeanDisplay Override Demo");
-
-        assertText("//dd[@class='no']", "Nay");
-        assertText("//dd[@class='yes']", "Yea");
-    }
-
-    /**
-     * TAPESTRY-2226
-     */
-    @Test
-    public void activation_context_for_root_index_page()
-    {
-        open(getBaseURL() + "it$0020worked");
-
-        assertText("//h1", "Index");
-
-        assertText("message", "it worked");
-    }
-
-    /**
-     * TAPESTRY-2217
-     */
-    @Test
-    public void page_document_generator()
-    {
-        clickThru("PageDocumentGenerator demo");
-
-        // In generated document: not optimized
-        assertAttribute("//a[1]/@href", "/login");
-
-        // In normal render: optimized
-        // Fuckin Selenium
-        // assertAttribute("//a[2]/@href", "login");
-    }
-
-    public void ajax_server_side_exception()
-    {
-        clickThru("Console demo");
-
-        assertTextPresent("Demonstrates Tapestry console");
-
-        click("link=Failure on the server side");
-
-        // Wait for the console to appear
-
-        waitForCSSSelectedElementToAppear(".t-console div.t-err");
-
-        assertTextPresent("Communication with the server failed: Server-side exception.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/BeanDisplayOverrideDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/BeanDisplayOverrideDemo.java
deleted file mode 100644
index 7523348..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/BeanDisplayOverrideDemo.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.pages;
-
-public class BeanDisplayOverrideDemo
-{
-    public boolean getYes()
-    {
-        return true;
-    }
-
-    public boolean getNo()
-    {
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/ConsoleDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/ConsoleDemo.java
deleted file mode 100644
index 099075a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/ConsoleDemo.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app3.pages;
-
-public class ConsoleDemo
-{
-    void onActionFromFail()
-    {
-        throw new RuntimeException("Server-side exception.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/ContentPage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/ContentPage.java
deleted file mode 100644
index f01737b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/ContentPage.java
+++ /dev/null
@@ -1,19 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.pages;
-
-public class ContentPage
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/Index.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/Index.java
deleted file mode 100644
index b1cb4a9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/Index.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class Index
-{
-    @InjectPage
-    private Login login;
-
-    @Persist
-    @Property
-    private String message;
-
-    boolean onActivate(String message)
-    {
-        this.message = message;
-
-        // Terminate the event before it gets to the no-args onActivate().
-
-        return true;
-    }
-
-    Object onActivate()
-    {
-
-        // Perform a redirect to the login page.
-        return login;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/Login.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/Login.java
deleted file mode 100644
index b29b26c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/Login.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.pages;
-
-public class Login
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/PropertyDisplayBlockOverrides.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/PropertyDisplayBlockOverrides.java
deleted file mode 100644
index 53d6e39..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/PropertyDisplayBlockOverrides.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.pages;
-
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.services.PropertyOutputContext;
-
-public class PropertyDisplayBlockOverrides
-{
-    @Environmental
-    private PropertyOutputContext context;
-
-    public PropertyOutputContext getContext()
-    {
-        return context;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/RenderPageDemo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/RenderPageDemo.java
deleted file mode 100644
index 5d20cdc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/pages/RenderPageDemo.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.pages;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.PageDocumentGenerator;
-
-public class RenderPageDemo
-{
-    @Inject
-    private PageDocumentGenerator generator;
-
-    public String getPageContent()
-    {
-        return generator.render("contentpage").toString();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
deleted file mode 100644
index 816e766..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app3/services/AppModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app3.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.services.BeanBlockContribution;
-
-public class AppModule
-{
-    public static void contributeBeanBlockOverrideSource(Configuration<BeanBlockContribution> configuration)
-    {
-        configuration.add(new BeanBlockContribution("boolean", "PropertyDisplayBlockOverrides", "boolean", false));
-    }
-
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.GZIP_COMPRESSION_ENABLED, "false");
-        
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-    }
-    
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java
deleted file mode 100644
index 317ec70..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/ImmediateModeTests.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app4;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Tests for immediate mode (aka T4 mode, aka
- * {@linkplain org.apache.tapestry5.SymbolConstants#SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS
- * redirects suppressed} mode).
- */
-public class ImmediateModeTests extends TapestryCoreTestCase
-{
-    @Test
-    public void action_link()
-    {
-        clickThru("here");
-
-        assertTextSeries("//dd[%d]", 1, "onActivate() invoked", "automatic value");
-
-        clickAndWait("link=refresh page");
-
-        assertTextSeries("//dd[%d]", 1, "onActivate(String) invoked - onActivate() invoked",
-                "automatic value");
-
-        clickAndWait("link=refresh via action");
-
-        // The last onActivate() is due to the "default" rendering of the page for the action link
-        // (on the same page).
-
-        assertTextSeries("//dd[%d]", 1,
-                "onActivate(String) invoked - onActivate() invoked - onActivate() invoked",
-                "automatic value");
-    }
-
-    @Test
-    public void form_submission()
-    {
-        openBaseURL();
-
-        type("input", "immediate mode");
-
-        clickAndWait(SUBMIT);
-
-        assertTextSeries("//dd[%d]", 1, "onActivate() invoked", "immediate mode");
-
-        clickAndWait("link=refresh page");
-
-        assertTextSeries("//dd[%d]", 1, "onActivate(String) invoked - onActivate() invoked",
-                "immediate mode");
-
-        clickAndWait("link=refresh via action");
-
-        // The last onActivate() is due to the "default" rendering of the page for the action link
-        // (on the same page).
-
-        assertTextSeries("//dd[%d]", 1,
-                "onActivate(String) invoked - onActivate() invoked - onActivate() invoked",
-                "immediate mode");
-
-    }
-    
-    /** TAP5-1086 */
-    @Test
-    public void localized_root_path_no_index_page()
-    {
-       openBaseURL();
-       assertTextPresent("Start Page");
-       
-       // This test relies on the fact that no 'Index' page is available 
-       // Following checks ensure that a refactoring (rename of Start to Index) breaks the test
-       assertTextPresent("Index Page Exists: false");
-       assertTextPresent("Start Page Exists: true");
-       
-       open(getBaseURL()+"en");
-       assertTextPresent("Start Page");
-       
-       open(getBaseURL()+"start");
-       assertTextPresent("Start Page");
-       
-       open(getBaseURL()+"start/en");
-       assertTextPresent("Start Page");
-       
-       open(getBaseURL()+"index");
-       assertTextPresent("Start Page");
-       
-       open(getBaseURL()+"index/en");
-       assertTextPresent("Start Page");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/pages/Destination.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/pages/Destination.java
deleted file mode 100644
index 1248d22..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/pages/Destination.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app4.pages;
-
-public class Destination
-{
-    private String message;
-
-    private String value;
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    String onPassivate()
-    {
-        return value;
-    }
-
-    void onActivate(String value)
-    {
-        addMessage("onActivate(String) invoked");
-
-        this.value = value;
-    }
-
-    void onActivate()
-    {
-        addMessage("onActivate() invoked");
-    }
-
-    private void addMessage(String text)
-    {
-        if (message == null)
-        {
-            message = text;
-            return;
-        }
-
-        message += " - " + text;
-    }
-
-    void onActionFromRefresh() { }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/pages/Start.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/pages/Start.java
deleted file mode 100644
index 885012d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/pages/Start.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app4.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentClassResolver;
-
-public class Start
-{
-    @InjectPage
-    private Destination destination;
-    
-    @Inject
-    private ComponentClassResolver componentClassResolver;
-
-    private String input;
-    
-    
-    public boolean getIndexPageExists()
-    {
-        return componentClassResolver.isPageName("Index");
-    }
-    
-    public boolean getStartPageExists()
-    {
-        return componentClassResolver.isPageName("Start");
-    }
-
-    public String getInput()
-    {
-        return input;
-    }
-
-    public void setInput(String input)
-    {
-        this.input = input;
-    }
-
-    Object onSuccess()
-    {
-        destination.setValue(input);
-
-        return destination;
-    }
-
-    Object onActionFromBypass()
-    {
-        destination.setValue("automatic value");
-
-        return destination;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/services/AppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/services/AppModule.java
deleted file mode 100644
index 943e450..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app4/services/AppModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app4.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-
-/**
- * A module that exists for testing the immediate response mode: sending markup in response to action requests, rather
- * than sending a redirect.
- */
-public class AppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.SUPPRESS_REDIRECT_FROM_ACTION_REQUESTS, "true");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/Dummy.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/Dummy.java
deleted file mode 100644
index e6f73cf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/Dummy.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app5.pages;
-
-
-public class Dummy
-{
-  
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/Index.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/Index.java
deleted file mode 100644
index 71d2a78..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/Index.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app5.pages;
-
-
-public class Index
-{
-  
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/RewriteSuccess2.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/RewriteSuccess2.java
deleted file mode 100644
index 51d67dd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/RewriteSuccess2.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app5.pages;
-
-public class RewriteSuccess2
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/RewriteWithContext.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/RewriteWithContext.java
deleted file mode 100644
index 99b32b1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/RewriteWithContext.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app5.pages;
-
-public class RewriteWithContext
-{
-
-    public String onClick() {
-        return "RewriteSuccess2";
-    }
-
-    public String onActionFromTheActingLink() {
-        return "RewriteSuccess2";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/URLRewriteSuccess.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/URLRewriteSuccess.java
deleted file mode 100644
index c0f4810..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/pages/URLRewriteSuccess.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.integration.app5.pages;
-
-import org.apache.tapestry5.annotations.Property;
-
-
-public class URLRewriteSuccess
-{
-
-    @Property
-    @SuppressWarnings("unused")
-    private String login;
-
-    public void onActivate(String string)
-    {
-        this.login = string;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/services/AppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/services/AppModule.java
deleted file mode 100644
index 139ec2b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app5/services/AppModule.java
+++ /dev/null
@@ -1,320 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app5.services;
-
-import org.apache.tapestry5.integration.app5.pages.URLRewriteSuccess;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.urlrewriter.*;
-
-public class AppModule
-{
-    private static final String SUCCESS_PAGE_NAME = URLRewriteSuccess.class.getSimpleName().toLowerCase();
-
-    public static void contributeURLRewriter(OrderedConfiguration<URLRewriterRule> configuration) {
-        
-        URLRewriterRule rule1 = new URLRewriterRule()
-        {
-
-            public Request process(Request request, URLRewriteContext context)
-            {
-                final String path = request.getPath();
-                if (path.equals("/struts")) 
-                {
-                    request = new SimpleRequestWrapper(request, "/jsf");
-                }
-                return request;
-                
-            }
-
-            public RewriteRuleApplicability applicability() {
-                return RewriteRuleApplicability.INBOUND;
-            }
-
-        };
-        
-        URLRewriterRule rule2 = new URLRewriterRule()
-        {
-
-            public Request process(Request request, URLRewriteContext context)
-            {
-                final String path = request.getPath();
-                if (path.equals("/jsf")) 
-                {
-                    request = new SimpleRequestWrapper(request, "/tapestry");
-                }
-                return request;
-                
-            }
-
-            public RewriteRuleApplicability applicability() {
-                return RewriteRuleApplicability.INBOUND;
-            }
-
-        };
-
-
-        URLRewriterRule rule3 = new URLRewriterRule()
-        {
-
-            public Request process(Request request,URLRewriteContext context)
-            {
-                String path = request.getPath();
-                if (path.equals("/tapestry")) 
-                {
-                    path = "/" + SUCCESS_PAGE_NAME;
-                    request = new SimpleRequestWrapper(request, path);
-                }
-                return request;
-                
-            }
-
-            public RewriteRuleApplicability applicability()
-            {
-                return RewriteRuleApplicability.INBOUND;
-            }
-
-        };
-        
-        URLRewriterRule rule4 = new URLRewriterRule()
-        {
-
-            public Request process(Request request, URLRewriteContext context)
-            {
-                String serverName = request.getServerName();
-                String path = request.getPath();
-                if (serverName.equals(IntegrationTests.SUBDOMAIN) && path.equals("/")) 
-                {
-                    path = String.format("/%s/%s", SUCCESS_PAGE_NAME, IntegrationTests.LOGIN);
-                    request = new SimpleRequestWrapper(request, path);
-                }
-                return request;
-                
-            }
-
-            public RewriteRuleApplicability applicability()
-            {
-                return RewriteRuleApplicability.INBOUND;
-            }
-
-        };
-        
-        URLRewriterRule rule5 = new URLRewriterRule() 
-        {
-
-            public Request process(Request request, URLRewriteContext context)
-            {
-                String serverName = request.getServerName();
-                String path = request.getPath();
-                final String pathToRewrite = "/" + SUCCESS_PAGE_NAME + "/login";
-                if (serverName.equals("localhost") && path.equalsIgnoreCase(pathToRewrite)) 
-                {
-                    request = new SimpleRequestWrapper(request, IntegrationTests.SUBDOMAIN, "/");
-                }
-                return request;
-                
-            }
-
-            public RewriteRuleApplicability applicability()
-            {
-                return RewriteRuleApplicability.OUTBOUND;
-            }
-
-        };
-        
-        URLRewriterRule rule6 = new URLRewriterRule()
-        {
-
-            public Request process(Request request, URLRewriteContext context)
-            {
-                String serverName = request.getServerName();
-                String path = request.getPath().toLowerCase();
-                if (serverName.equals("localhost") && path.equals("/dummy"))
-                {
-                    request = new SimpleRequestWrapper(request, "/notdummy");
-                }
-                return request;
-                
-            }
-
-            public RewriteRuleApplicability applicability()
-            {
-                return RewriteRuleApplicability.OUTBOUND;
-            }
-
-        };
-
-        URLRewriterRule rule7 = new Rule7();
-
-
-        configuration.add("rule1", rule1);
-        configuration.add("rule2", rule2, "after:rule1");
-        configuration.add("rule3", rule3, "after:rule2");
-        configuration.add("rule4", rule4);
-        configuration.add("rule5", rule5);
-        configuration.add("rule6", rule6);
-        configuration.add("rule7", rule7);
-        
-    }
-
-    //note that as this is a test, there are a lot of shortcuts employed in the url processing.
-    //and the example is entirely contrived.
-    //But it does illustrate the sorts of things that are possible.
-    static class Rule7 implements URLRewriterRule
-    {
-
-        private Request decodePage(Request request)
-        {
-            //want to skip first slash plus the slash trailing rpage.
-            int idx =request.getPath().indexOf('/',7);
-
-            String pageName;
-            String pathRemainder;
-            if (idx == -1) {
-                pageName = request.getPath().substring(7);
-                pathRemainder = "";
-            } else {
-                pageName = request.getPath().substring(7,idx);
-                pathRemainder = request.getPath().substring(idx);
-            }
-
-            String newPath = "/" + reverse(pageName)
-                    + pathRemainder;
-            return new SimpleRequestWrapper(request,newPath);
-        }
-
-        private Request decodeEventLink(Request request, String path,int idx)
-        {
-            String event = null;
-            //do we have a slash after?
-            int slashIdx = path.indexOf('/',idx);
-            if (slashIdx == -1) {
-                event = reverse(path.substring(idx+1));
-                path = path.substring(0,idx) ;
-            } else {
-                event = reverse(path.substring(idx+1,slashIdx));
-                path = path.substring(0,idx) + path.substring(slashIdx);
-            }
-            return decodeComponentLink(request,path,event);
-        }
-
-        private Request decodeComponentLink(Request request, String path, String event)
-        {
-            int idx = path.indexOf('.');
-            String pageName;
-            String componentName=null;//idea complains about componentName might not be initialized otherwise.
-            if (idx == -1)
-            {
-                idx = path.indexOf('/');
-                if (idx < 1)
-                {
-                    pageName = reverse(path);
-                    path = "";
-                } else {
-                    pageName = reverse(path.substring(0,idx));
-                    path = path.substring(idx);
-
-                }
-            }
-            else
-            {
-                int slashIdx = path.indexOf('/',idx);
-                pageName = reverse(path.substring(0,idx));
-                if (slashIdx < 1) {
-                    componentName = reverse(path.substring(idx+1));
-                    path = "";
-                } else {
-                    componentName = reverse(path.substring(idx+1,slashIdx));
-                    path = path.substring(slashIdx);
-                }
-            }
-            path = "/" + pageName + (componentName==null?"":"."+componentName)
-                    + (event==null?"":":" + event) + path;
-            return new SimpleRequestWrapper(request,path);
-        }
-
-        public Request process(Request request, URLRewriteContext context)
-        {
-            if (context.isIncoming()) {
-                if (request.getPath().startsWith("/rpage/"))
-                {
-                    return decodePage(request);
-                }
-                else if (request.getPath().startsWith("/cevent/"))
-                {
-                    String path = request.getPath().substring(8);
-                    //check for event presence first.
-                    int idx = path.indexOf(':');
-                    if (idx != -1)
-                    {
-                        return decodeEventLink(request,path,idx);
-                    }
-                    return decodeComponentLink(request,path,null);
-
-                }
-            }
-            else if (context.getPageParameters() != null)
-            {
-                //page link reversing is just to illustrate the fact that we can manipulate paths without caring about
-                //the precise details of the path. Except, we don't want to mess with index, URLRewriteSuccess,
-                //or dummy because that messes up the rest of the tests.
-                String pageName = context.getPageParameters().getLogicalPageName().toLowerCase();
-                if (pageName.equals("index") || pageName.equals("urlrewritesuccess") || pageName.equals("dummy")) {
-                    return request;
-                }
-                String newPath = "/rpage" + request.getPath().replaceAll(pageName,reverse(pageName));
-                return new SimpleRequestWrapper(request,newPath);
-            }
-            else
-            {
-                //mangle the event details.
-                String pageName = context.getComponentEventParameters().getActivePageName().toLowerCase();
-                if (pageName.equals("index") || pageName.equals("urlrewritesuccess") || pageName.equals("dummy")) {
-                    return request;
-                }
-                String eventName = context.getComponentEventParameters().getEventType().toLowerCase();
-                String componentId = context.getComponentEventParameters().getNestedComponentId().toLowerCase();
-
-                String newPath = "/cevent" +
-                        request.getPath().replaceAll(pageName,reverse(pageName))
-                                .replaceAll(eventName,reverse(eventName))
-                                .replaceAll(componentId,reverse(componentId));
-                return new SimpleRequestWrapper(request, newPath);
-            }
-            return request;
-        }
-
-        private String reverse(String input) {
-
-            if (input == null) return null;
-
-            StringBuilder rev = new StringBuilder(input.length());
-
-            for(int i=input.length();i>0;i--)
-            {
-                rev.append(input.charAt(i-1));
-            }
-
-            return rev.toString();
-        }
-
-        public RewriteRuleApplicability applicability()
-        {
-            return RewriteRuleApplicability.BOTH;
-        }
-    };
-}
-
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java
deleted file mode 100644
index 05729d3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/app6/CutomAppPackageIntegrationTests.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.app6;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Additional integration tests that do not fit with the main group due to the need for special configuration.
- */
-public class CutomAppPackageIntegrationTests extends TapestryCoreTestCase
-{
-
-
-    /** TAP5-815 */
-    @Test
-    public void asset_protection()
-    {
-       clickThru("Asset Protection Demo");
-       clickAndWait("link=Show CSS");
-       assertTextPresent("//Some CSS");       
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java
deleted file mode 100644
index 9241b22..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/LinkTransformerIntegrationTest.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-public class LinkTransformerIntegrationTest extends TapestryCoreTestCase
-{
-    @Test
-    public void page_render_links()
-    {
-        open(getBaseURL());
-
-        clickAndWait("link=View Toys");
-
-        assertText("content", "toys");
-        assertText("count", "0");
-
-        clickAndWait("link=back to index");
-        clickAndWait("link=View Games");
-
-        assertText("content", "games");
-    }
-    
-    @Test
-    public void component_event_links()
-    {
-        open(getBaseURL());
-        
-        clickAndWait("link=en");
-        
-        assertText("currentLocale", "en");
-        
-        clickAndWait("link=View Games");
-        assertText("content", "games");
-        
-        clickAndWait("link=increment");
-        
-        assertText("content", "games");
-        assertText("count", "1");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/components/Layout.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/components/Layout.java
deleted file mode 100644
index 0276261..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/components/Layout.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans.components;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Flow;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.LocalizationSetter;
-
-public class Layout
-{
-    @Inject
-    private LocalizationSetter ls;
-
-    @Property
-    private String localeName;
-
-    public Flow<String> getLocaleNames()
-    {
-        return F.flow(ls.getSupportedLocales()).map(F.<Locale> stringValueOf());
-    }
-
-    void onLocale(String localeName)
-    {
-        ls.setLocaleFromLocaleName(localeName);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/pages/Index.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/pages/Index.java
deleted file mode 100644
index 3edaabc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/pages/Index.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans.pages;
-
-public class Index
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/pages/View.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/pages/View.java
deleted file mode 100644
index 3261a36..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/pages/View.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans.pages;
-
-import org.apache.tapestry5.annotations.PageActivationContext;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class View
-{
-    @PageActivationContext
-    @Property
-    private String content;
-
-    @Persist
-    @Property
-    private int count;
-
-    void pageReset()
-    {
-        count = 0;
-    }
-
-    void onActionFromIncrement()
-    {
-        count++;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java
deleted file mode 100644
index 6822f6e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppComponentEventLinkTransformer.java
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans.services;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.services.ArrayEventContext;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ComponentEventRequestParameters;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.PersistentLocale;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
-
-public class AppComponentEventLinkTransformer implements ComponentEventLinkTransformer
-{
-    @Inject
-    private PersistentLocale persistentLocale;
-
-    @Inject
-    private TypeCoercer typeCoercer;
-
-    @Inject
-    private LocalizationSetter localizationSetter;
-
-    public ComponentEventRequestParameters decodeComponentEventRequest(Request request)
-    {
-        if (!request.getPath().equals("/event"))
-            return null;
-
-        String localeName = request.getParameter("x:locale");
-        String pageName = request.getParameter("x:page");
-        String container = request.getParameter("x:container");
-        String id = request.getParameter("x:id");
-        String pac = request.getParameter("x:pac");
-        String ec = request.getParameter("x:ec");
-        String type = request.getParameter("x:type");
-
-        if (localeName != null)
-            localizationSetter.setLocaleFromLocaleName(localeName);
-
-        return new ComponentEventRequestParameters(pageName, container == null ? pageName : container, id, type,
-                toContext(pac), toContext(ec));
-    }
-
-    private EventContext toContext(String value)
-    {
-        if (value == null)
-            return new EmptyEventContext();
-
-        return new ArrayEventContext(typeCoercer, (Object[]) value.split("/"));
-    }
-
-    public Link transformComponentEventLink(Link defaultLink, ComponentEventRequestParameters parameters)
-    {
-        Link link = defaultLink.copyWithBasePath("/event");
-
-        for (String name : defaultLink.getParameterNames())
-        {
-            link.removeParameter(name);
-        }
-
-        Locale locale = persistentLocale.get();
-
-        if (locale != null)
-        {
-            link.addParameter("x:locale", locale.toString());
-        }
-
-        link.addParameter("x:type", parameters.getEventType());
-
-        addEventContext(link, "x:ec", parameters.getEventContext());
-        addEventContext(link, "x:pac", parameters.getPageActivationContext());
-
-        link.addParameter("x:page", parameters.getActivePageName());
-        link.addParameter("x:id", parameters.getNestedComponentId());
-
-        if (!parameters.getActivePageName().equals(parameters.getContainingPageName()))
-            link.addParameter("x:container", parameters.getContainingPageName());
-
-        return link;
-
-    }
-
-    private void addEventContext(Link link, String parameterName, EventContext eventContext)
-    {
-        int count = eventContext.getCount();
-
-        if (count == 0)
-            return;
-
-        StringBuilder builder = new StringBuilder();
-        String sep = "";
-
-        for (int i = 0; i < count; i++)
-        {
-            builder.append(sep);
-            builder.append(eventContext.get(String.class, i));
-            sep = "/";
-        }
-
-        link.addParameter(parameterName, builder.toString());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java
deleted file mode 100644
index 3bae9b0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppModule.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.services.linktransform.ComponentEventLinkTransformer;
-import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
-
-public class AppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en,fr,de");
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-        configuration.add(SymbolConstants.COMPRESS_WHITESPACE, "false");
-        configuration.add(SymbolConstants.COMBINE_SCRIPTS, "true");
-        configuration.add(SymbolConstants.BLACKBIRD_ENABLED, "true");
-    }
-
-    public static void contributePageRenderLinkTransformer(OrderedConfiguration<PageRenderLinkTransformer> configuration)
-    {
-        configuration.addInstance("App", AppPageRenderLinkTransformer.class);
-    }
-
-    public static void contributeComponentEventLinkTransformer(
-            OrderedConfiguration<ComponentEventLinkTransformer> configuration)
-    {
-        configuration.addInstance("App", AppComponentEventLinkTransformer.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java
deleted file mode 100644
index ed80d7c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/linktrans/services/AppPageRenderLinkTransformer.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.linktrans.services;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.internal.services.ArrayEventContext;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.PersistentLocale;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.linktransform.PageRenderLinkTransformer;
-
-public class AppPageRenderLinkTransformer implements PageRenderLinkTransformer
-{
-    @Inject
-    private LocalizationSetter localizationSetter;
-
-    @Inject
-    private PersistentLocale persistentLocale;
-
-    @Inject
-    private TypeCoercer typeCoercer;
-
-    public PageRenderRequestParameters decodePageRenderRequest(Request request)
-    {
-        String path = request.getPath();
-
-        String[] split = path.substring(1).split("/");
-
-        if (split.length == 1 && split[0].equals("")) return null;
-        
-        int pacx = 0;
-
-        String possibleLocaleName = split[0];
-
-        // Might be just the page activation context, or it might be locale then page
-        // activation context
-
-        boolean localeSpecified = localizationSetter.isSupportedLocaleName(possibleLocaleName);
-
-        if (localeSpecified)
-        {
-            pacx++;
-        }
-
-        if (pacx >= split.length)
-            return null;
-
-        if (localeSpecified)
-            localizationSetter.setLocaleFromLocaleName(possibleLocaleName);
-
-        boolean isLoopback = request.getParameter(TapestryConstants.PAGE_LOOPBACK_PARAMETER_NAME) != null;
-
-        return new PageRenderRequestParameters("View", new ArrayEventContext(typeCoercer, split[pacx]), isLoopback);
-    }
-
-    public Link transformPageRenderLink(Link defaultLink, PageRenderRequestParameters parameters)
-    {
-        if (!parameters.getLogicalPageName().equals("View"))
-            return null;
-
-        StringBuilder path = new StringBuilder();
-
-        Locale locale = persistentLocale.get();
-
-        if (locale != null)
-            path.append("/").append(locale.toString());
-
-        path.append("/");
-
-        // Cheating: we know there's exactly one value in the context.
-
-        path.append(parameters.getActivationContext().get(String.class, 0));
-
-        return defaultLink.copyWithBasePath(path.toString());
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/ASOTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/ASOTest.java
deleted file mode 100644
index 79ba571..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/ASOTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class ASOTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void submit_aso()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForASO");
-        assertTrue(doc.toString().contains("bar"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/ActionLinkTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/ActionLinkTest.java
deleted file mode 100644
index 34ad693..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/ActionLinkTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class ActionLinkTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void click_link()
-    {
-
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForActionLink");
-        Element link = doc.getElementById("link1");
-        doc = tester.clickLink(link);
-        assertTrue(doc.toString().contains("You chose: 123"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/AssetTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/AssetTest.java
deleted file mode 100644
index 75ce314..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/AssetTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class AssetTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void submit_context_asset()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME, "src/test/app2");
-
-        Document doc = tester.renderPage("TestPageForAsset");
-
-        assertTrue(doc.toString().contains("test.css"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/DTDTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/DTDTest.java
deleted file mode 100644
index cfa35f3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/DTDTest.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class DTDTest extends Assert
-{
-    private static final String FRAMESET = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Frameset//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd\">";
-
-    private static final String TRANSITIONAL = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">";
-
-    private static final String STRICT = "<!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Strict//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd\">";
-
-    @DataProvider
-    public Object[][] dtd_page_provider()
-    {
-        return new Object[][]
-                {
-                        { "DTDFromPage", FRAMESET, "slagheap", },
-                        { "DTDFromComponent", TRANSITIONAL, "flubber", },
-                        { "MultipleDTD", STRICT, "blubber", },
-                        { "NoDTD", "", "no_dtd_loser", } };
-    }
-
-    @Test(dataProvider = "dtd_page_provider")
-    public void verify_correct_dtds(String pageName, String expectedDTD, String checkText)
-    {
-        PageTester tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage(pageName);
-        String txt = doc.toString();
-        // use startsWith to make sure the DTD is getting into the right spot.
-        assertTrue(txt.startsWith(expectedDTD));
-        // we should also make sure that the other DTD's don't appear anywhere else...
-        checkOtherDTD(txt, expectedDTD);
-        // spot check the body of the pages to make sure they correctly rendered...
-        // they should have, based on the unit tests for template rendering, but...
-        assertTrue(txt.contains(checkText));
-
-    }
-
-    private void checkOtherDTD(String txt, String expected)
-    {
-        if (expected.equals(TRANSITIONAL))
-        {
-            check(txt, FRAMESET, STRICT);
-        }
-        else if (expected.equals(FRAMESET))
-        {
-            check(txt, STRICT, TRANSITIONAL);
-            ;
-        }
-        else if (expected.equals(STRICT))
-        {
-            check(txt, FRAMESET, TRANSITIONAL);
-        }
-        else if (expected.equals(""))
-        {
-            check(txt, FRAMESET, STRICT, TRANSITIONAL);
-        }
-        else
-        {
-            throw new RuntimeException("Unknown expected string: " + expected);
-        }
-    }
-
-    private void check(String txt, String... invalids)
-    {
-        for (String invalid : invalids)
-        {
-            assertFalse(txt.contains(invalid));
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java
deleted file mode 100644
index 9defed4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/FormTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class FormTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void submit_form()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForForm");
-        Element form = doc.getElementById("form1");
-        Map<String, String> fieldValues = CollectionFactory.newMap();
-        fieldValues.put("t1", "hello");
-        doc = tester.submitForm(form, fieldValues);
-        assertTrue(doc.toString().contains("You entered: hello"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/HeadTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/HeadTest.java
deleted file mode 100644
index 1405707..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/HeadTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class HeadTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void display()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForHead");
-        assertTrue(doc.toString().contains("OK"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/IfTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/IfTest.java
deleted file mode 100644
index dd573c1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/IfTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class IfTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void render()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForIf");
-        assertNotNull(doc.getElementById("1"));
-        assertNotNull(doc.getElementById("3"));
-        assertNotNull(doc.getElementById("5"));
-        assertNotNull(doc.getElementById("8"));
-        assertNull(doc.getElementById("2"));
-        assertNull(doc.getElementById("4"));
-        assertNull(doc.getElementById("6"));
-        assertNull(doc.getElementById("7"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/LocaleTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/LocaleTest.java
deleted file mode 100644
index 2762c9a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/LocaleTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class LocaleTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void no_preferred_language()
-    {
-        Document doc = tester.renderPage("TestPageForLocale");
-        assertEquals(doc.getElementById("id1").getChildMarkup(), "English page");
-    }
-
-    @Test
-    public void prefer_canada_french()
-    {
-        tester.setPreferedLanguage(Locale.CANADA_FRENCH);
-        Document doc = tester.renderPage("TestPageForLocale");
-        assertEquals(doc.getElementById("id1").getChildMarkup(), "French page");
-    }
-
-    @Test
-    public void change_language_in_browser()
-    {
-        tester.setPreferedLanguage(Locale.ENGLISH);
-
-        Document doc = tester.renderPage("TestPageForLocale");
-
-        assertEquals(doc.getElementById("id1").getChildMarkup(), "English page");
-
-        tester.setPreferedLanguage(Locale.CANADA_FRENCH);
-
-        doc = tester.renderPage("TestPageForLocale");
-
-        assertEquals(doc.getElementById("id1").getChildMarkup(), "French page");
-    }
-
-    @BeforeMethod
-    public void before()
-    {
-        // LocaleAppModule.java has configured support for a certain locales.
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/LoopTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/LoopTest.java
deleted file mode 100644
index daf0368..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/LoopTest.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class LoopTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void render()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForLoop");
-        assertTrue(doc.toString().contains("abcabcabc"));
-        assertEquals(doc.getElementById("1").getChildMarkup(), "xyz");
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java
deleted file mode 100644
index f863d03..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/SubmitTest.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class SubmitTest extends Assert
-{
-    private PageTester tester;
-
-    private Document doc;
-
-    private Map<String, String> fieldValues;
-
-    @Test
-    public void submit_form()
-    {
-        Element submitButton = doc.getElementById("capitalize1");
-        assertEquals("submit", submitButton.getAttribute("type"));
-        
-        fieldValues.put("t1", "hello");
-        doc = tester.clickSubmit(submitButton, fieldValues);
-        assertTrue(doc.toString().contains("Value is: HELLO"));
-    }
-
-    @Test
-    public void access_following_fields()
-    {
-        Element submitButton = doc.getElementById("capitalize2");
-        fieldValues.put("t2", "world");
-        doc = tester.clickSubmit(submitButton, fieldValues);
-        assertTrue(doc.toString().contains("Value is: WORLD"));
-    }
-
-    @Test(expectedExceptions = IllegalArgumentException.class)
-    public void not_a_submit()
-    {
-        Element submitButton = doc.getElementById("t1");
-
-        tester.clickSubmit(submitButton, fieldValues);
-    }
-
-    @Test
-    public void not_in_form()
-    {
-        try
-        {
-            Element submitButton = doc.getElementById("orphanedSubmit");
-
-            tester.clickSubmit(submitButton, fieldValues);
-
-            throw new RuntimeException("Should not be reachable.");
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Could not locate an ancestor element of type 'form'.");
-        }
-    }
-    
-    @Test
-    public void render_image_type()
-    {
-        Element submitButton = doc.getElementById("submitImage");
-        
-        assertEquals("image", submitButton.getAttribute("type"));
-        
-        SymbolSource service = tester.getService(SymbolSource.class);
-        
-        String symbolValue = service.valueForSymbol("tapestry.spacer-image");
-        
-        String iconName = symbolValue.substring(symbolValue.lastIndexOf("/"));
-        
-        assertTrue(submitButton.getAttribute("src").contains(iconName));
-
-    }
-
-    @BeforeMethod
-    public void before()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        doc = tester.renderPage("TestPageForSubmit");
-        fieldValues = CollectionFactory.newMap();
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/TemplateInContextTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/TemplateInContextTest.java
deleted file mode 100644
index 1f75c2e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/TemplateInContextTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class TemplateInContextTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void template_in_web_context()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME, "src/test/app2");
-
-        Document doc = tester.renderPage("TestPageForTemplateInContext");
-        assertTrue(doc.toString().contains("How are you?"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/TestConstants.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/TestConstants.java
deleted file mode 100644
index d35b63d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/TestConstants.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-/**
- * Constants for application name and package used by many of the unit tests.
- */
-public class TestConstants
-{
-    /**
-     * @see org.apache.tapestry5.integration.app2.services.LocaleAppModule
-     */
-    public static final String APP2_NAME = "LocaleApp";
-
-    public static final String APP2_PACKAGE = "org.apache.tapestry5.integration.app2";
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/UnlessTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/UnlessTest.java
deleted file mode 100644
index 10de551..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagelevel/UnlessTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagelevel;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.Test;
-
-public class UnlessTest extends Assert
-{
-    private PageTester tester;
-
-    @Test
-    public void render()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-
-        Document doc = tester.renderPage("TestPageForUnless");
-        assertNotNull(doc.getElementById("2"));
-        assertNotNull(doc.getElementById("4"));
-        assertNotNull(doc.getElementById("6"));
-        assertNotNull(doc.getElementById("7"));
-        assertNull(doc.getElementById("1"));
-        assertNull(doc.getElementById("3"));
-        assertNull(doc.getElementById("5"));
-        assertNull(doc.getElementById("8"));
-    }
-
-    @AfterMethod
-    public void after()
-    {
-        if (tester != null)
-        {
-            tester.shutdown();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagetester/PageTesterTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagetester/PageTesterTest.java
deleted file mode 100644
index 2604c48..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/pagetester/PageTesterTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.pagetester;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.integration.pagelevel.TestConstants;
-import org.apache.tapestry5.internal.InternalSymbols;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Map;
-
-/**
- * Tests on PageTester itself.
- */
-public class PageTesterTest extends Assert
-{
-    private PageTester nonEmptyAppNameTester;
-    
-    private PageTester emptyAppNameTester;
-    
-    @BeforeClass
-    public void setup()
-    {
-        nonEmptyAppNameTester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME, "src/test/app2");
-        
-        emptyAppNameTester = new PageTester(TestConstants.APP2_PACKAGE, "", "src/test/app2");
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        nonEmptyAppNameTester.shutdown();
-
-        nonEmptyAppNameTester = null;
-        
-        emptyAppNameTester.shutdown();
-
-        emptyAppNameTester = null;
-    }
-    
-    @DataProvider(name = "testers")
-    public Object[][] getTesters()
-    {
-        return new Object[][] { { nonEmptyAppNameTester }, { emptyAppNameTester } };
-    }
-
-    @Test(dataProvider = "testers")
-    public void on_activate_chain_is_followed(PageTester tester)
-    {
-        Document launchDoc = tester.renderPage("Launch");
-
-        Map<String, String> parameters = Collections.emptyMap();
-
-        // Submit the form, which will then skip through Intermediate and
-        // arrive at Final.
-
-        Document finalDoc = tester.submitForm(launchDoc.getElementById("form"), parameters);
-
-        assertEquals(finalDoc.getElementById("page-name").getChildMarkup(), "Final");
-    }
-
-    @Test(dataProvider = "testers")
-    public void application_path_is_defined_as_a_symbol(PageTester tester)
-    {
-        SymbolSource source = tester.getRegistry().getService(SymbolSource.class);
-
-        assertEquals(source.valueForSymbol(InternalSymbols.APP_PACKAGE_PATH), "org/apache/tapestry5/integration/app2");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/ReloadTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/ReloadTests.java
deleted file mode 100644
index 411c7a5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/ReloadTests.java
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.reload;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.io.InputStream;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.NotFoundException;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.apache.tapestry5.internal.TapestryInternalUtils;
-import org.apache.tapestry5.test.TapestryTestConstants;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-import org.testng.xml.XmlTest;
-
-/**
- * Integration tests designed to test Tapestry's ability to dynamically reload component classes,
- * templates and message catalogs.
- */
-public class ReloadTests extends TapestryCoreTestCase
-{
-    private File webappDir;
-    private File webinfDir;
-    private File classesDir;
-    private File pagesDir;
-
-    private static final String PACKAGE = "org.apache.tapestry5.integration.reload.pages";
-    
-    @BeforeTest(groups = { "beforeStartup" })
-    public void beforeStartup(XmlTest xmlTest) throws Exception
-    {
-        String uid = Long.toHexString(System.currentTimeMillis());
-
-        webappDir = new File(System.getProperty("java.io.tmpdir"), uid);
-
-        webinfDir = new File(webappDir, "WEB-INF");
-
-        classesDir = new File(webinfDir, "classes");
-
-        pagesDir = new File(classesDir, PACKAGE.replace('.', '/'));
-
-        pagesDir.mkdirs();
-
-        copy("web.xml", webinfDir, "web.xml");
-        copy("Index.1.tml", webappDir, "Index.tml");
-        copy("Index.1.properties", pagesDir, "Index.properties");
-
-        createIndexClass(100);
-        
-        // overwrite the web-app-folder parameter
-        xmlTest.addParameter(TapestryTestConstants.WEB_APP_FOLDER_PARAMETER, webappDir.getAbsolutePath());
-
-        System.err.println("Created: " + webappDir);
-    }
-
-    private void createIndexClass(int number) throws NotFoundException, CannotCompileException,
-            IOException
-    {
-        ClassPool pool = new ClassPool(null);
-
-        pool.appendSystemPath();
-
-        CtClass ctClass = pool.makeClass(PACKAGE + ".Index");
-
-        CtMethod method = new CtMethod(pool.get("int"), "getNumber", null, ctClass);
-
-        method.setBody("return " + number + ";");
-
-        ctClass.addMethod(method);
-
-        ctClass.writeFile(classesDir.getAbsolutePath());
-    }
-
-    /**
-     * Copies a source file (from the classpath) to a directory as a new file name.
-     * 
-     * @param sourceFile
-     *            source file (within in the reload package)
-     * @param dir
-     *            directory to copy to
-     * @param targetFile
-     *            name of file to be created or overwritten
-     */
-    private void copy(String sourceFile, File dir, String targetFile) throws IOException
-    {
-        File output = new File(dir, targetFile);
-
-        FileOutputStream fos = new FileOutputStream(output);
-
-        InputStream in = getClass().getResourceAsStream(sourceFile);
-
-        copy(in, fos);
-
-        in.close();
-        fos.close();
-    }
-
-    private void copy(InputStream in, FileOutputStream fos) throws IOException
-    {
-        BufferedInputStream bis = new BufferedInputStream(in);
-        BufferedOutputStream bos = new BufferedOutputStream(fos);
-
-        TapestryInternalUtils.copy(bis, bos);
-    }
-
-    @Test
-    public void reload_class() throws Exception
-    {
-        openBaseURL();
-
-        assertText("property", "100");
-
-        createIndexClass(200);
-
-        openBaseURL();
-
-        assertText("property", "200");
-    }
-
-    @Test
-    public void reload_template() throws Exception
-    {
-        openBaseURL();
-
-        assertText("template", "Initial Template Version");
-
-        copy("Index.2.tml", webappDir, "Index.tml");
-
-        openBaseURL();
-
-        assertText("template", "Updated Template Version");
-    }
-
-    @Test
-    public void reload_message_catalog() throws Exception
-    {
-        openBaseURL();
-
-        assertText("message", "Initial Message");
-
-        copy("Index.2.properties", pagesDir, "Index.properties");
-
-        openBaseURL();
-
-        assertText("message", "Updated Message");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java
deleted file mode 100644
index b42a4b7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/integration/reload/services/AppModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.integration.reload.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-
-public class AppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> conf)
-    {
-        conf.add(SymbolConstants.FILE_CHECK_INTERVAL, "0ms");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/ContextResourceSymbolProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/ContextResourceSymbolProviderTest.java
deleted file mode 100644
index 483658e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/ContextResourceSymbolProviderTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.Context;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.io.FileOutputStream;
-
-public class ContextResourceSymbolProviderTest extends InternalBaseTestCase
-{
-    private static final String CONTENT = "homer=simpson\r\nmonty=burns";
-
-    private static final String PATH = "bar/foo.properties";
-
-    @Test
-    public void access() throws Exception
-    {
-        File f = File.createTempFile("foo", ".properties");
-
-        setupFile(f);
-
-        Context context = mockContext();
-
-        expect(context.getRealFile("/" + PATH)).andReturn(f);
-
-        replay();
-
-        ContextResourceSymbolProvider provider = new ContextResourceSymbolProvider(context, PATH);
-
-        /* test general access */
-        assertEquals(provider.valueForSymbol("homer"), "simpson");
-        assertEquals(provider.valueForSymbol("monty"), "burns");
-
-        /* check for case-insensitivity */
-        assertEquals(provider.valueForSymbol("HOMER"), "simpson");
-
-        /* non-existent keys should return null */
-        assertNull(provider.valueForSymbol("marge"));
-
-        verify();
-
-        f.delete();
-    }
-
-    private void setupFile(File f) throws Exception
-    {
-        FileOutputStream fos = new FileOutputStream(f);
-
-        fos.write(CONTENT.getBytes());
-
-        fos.close();
-
-        fos = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
deleted file mode 100644
index e279da7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBean.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-/**
- * Used as test when setting the order of properties via {@link TapestryInternalUtils#orderProperties(org.apache.tapestry5.ioc.services.ClassPropertyAdapter,
- * ClassFactory, java.util.List)}.
- */
-public class DataBean
-{
-    private String firstName;
-
-    private String lastName;
-
-    private int age;
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public int getAge()
-    {
-        return age;
-    }
-
-    public void setAge(int age)
-    {
-        this.age = age;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBeanSubclass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBeanSubclass.java
deleted file mode 100644
index 9495e20..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DataBeanSubclass.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-public class DataBeanSubclass extends DataBean
-{
-    private String street;
-
-    private String city;
-
-    private String state;
-
-    private String zip;
-
-    public String getStreet()
-    {
-        return street;
-    }
-
-    public String getCity()
-    {
-        return city;
-    }
-
-    public String getState()
-    {
-        return state;
-    }
-
-    public String getZip()
-    {
-        return zip;
-    }
-
-    public void setCity(String city)
-    {
-        this.city = city;
-    }
-
-    public void setStreet(String street)
-    {
-        this.street = street;
-    }
-
-    public void setState(String state)
-    {
-        this.state = state;
-    }
-
-    public void setZip(String zip)
-    {
-        this.zip = zip;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DefaultValidationDecoratorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DefaultValidationDecoratorTest.java
deleted file mode 100644
index aa10245..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/DefaultValidationDecoratorTest.java
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.services.MarkupWriterImpl;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class DefaultValidationDecoratorTest extends TapestryTestCase
-{
-    @Test
-    public void label_has_no_field()
-    {
-        Environment env = mockEnvironment();
-
-        replay();
-
-        ValidationDecorator decorator = new DefaultValidationDecorator(env, null, null);
-
-        decorator.insideLabel(null, null);
-
-        verify();
-    }
-
-    @Test
-    public void label_error_no_existing_class_attribute()
-    {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-        Environment env = mockEnvironment();
-        Field field = mockField();
-        ValidationTracker tracker = mockValidationTracker();
-
-        train_peekRequired(env, ValidationTracker.class, tracker);
-        train_inError(tracker, field, true);
-
-        replay();
-
-        Element e = writer.element("label", "accesskey", "f");
-
-        ValidationDecorator decorator = new DefaultValidationDecorator(env, null, null);
-
-        decorator.insideLabel(field, e);
-
-        assertEquals(writer.toString(),
-                     "<?xml version=\"1.0\"?>\n" +
-                             "<label class=\"t-error\" accesskey=\"f\"/>");
-
-        verify();
-    }
-
-    @Test
-    public void label_error_with_existing_class_attribute()
-    {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-        Environment env = mockEnvironment();
-        Field field = mockField();
-        ValidationTracker tracker = mockValidationTracker();
-
-        train_peekRequired(env, ValidationTracker.class, tracker);
-        train_inError(tracker, field, true);
-
-        replay();
-
-        Element e = writer.element("label", "accesskey", "f", "class", "foo");
-
-        ValidationDecorator decorator = new DefaultValidationDecorator(env, null, null);
-
-        decorator.insideLabel(field, e);
-
-        assertEquals(writer.toString(), "<?xml version=\"1.0\"?>\n" +
-                "<label class=\"foo t-error\" accesskey=\"f\"/>");
-
-        verify();
-    }
-
-    @Test
-    public void field_error()
-    {
-        MarkupWriter writer = new MarkupWriterImpl(new XMLMarkupModel());
-        Environment env = mockEnvironment();
-        Field field = mockField();
-        ValidationTracker tracker = mockValidationTracker();
-
-        train_peekRequired(env, ValidationTracker.class, tracker);
-        train_inError(tracker, field, true);
-
-        replay();
-
-        writer.element("input", "type", "text", "name", "ex", "class", "foo", "value", "freddy", "size", "30");
-
-        ValidationDecorator decorator = new DefaultValidationDecorator(env, null, writer);
-
-        decorator.insideField(field);
-
-        assertEquals(writer.toString(), "<?xml version=\"1.0\"?>\n" +
-                "<input size=\"30\" value=\"freddy\" class=\"foo t-error\" name=\"ex\" type=\"text\"/>");
-
-        verify();
-    }
-
-    @Test
-    public void field_ok()
-    {
-        Environment env = mockEnvironment();
-        Field field = mockField();
-        ValidationTracker tracker = mockValidationTracker();
-
-        train_peekRequired(env, ValidationTracker.class, tracker);
-        train_inError(tracker, field, false);
-
-        replay();
-
-        ValidationDecorator decorator = new DefaultValidationDecorator(env, null, null);
-
-        decorator.insideField(field);
-
-        verify();
-    }
-
-    @Test
-    public void label_when_field_not_in_error()
-    {
-        Environment env = mockEnvironment();
-        Field field = mockField();
-        ValidationTracker tracker = mockValidationTracker();
-
-        train_peekRequired(env, ValidationTracker.class, tracker);
-        train_inError(tracker, field, false);
-
-        replay();
-
-        ValidationDecorator decorator = new DefaultValidationDecorator(env, null, null);
-
-        decorator.insideLabel(field, null);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/OptionGroupModelImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/OptionGroupModelImplTest.java
deleted file mode 100644
index 01cfe1d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/OptionGroupModelImplTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.OptionGroupModel;
-import org.apache.tapestry5.OptionModel;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-public class OptionGroupModelImplTest extends Assert
-{
-    @Test
-    public void basics()
-    {
-        List<OptionModel> options = Collections.emptyList();
-
-        OptionGroupModel group = new OptionGroupModelImpl("Label", true, options);
-
-        assertEquals(group.toString(), "OptionGroupModel[Label]");
-        assertTrue(group.isDisabled());
-        assertNull(group.getAttributes());
-        assertSame(group.getOptions(), options);
-    }
-
-    @Test
-    public void map_contructor_retains_map()
-    {
-        List<OptionModel> options = Collections.emptyList();
-        Map<String, String> attributes = Collections.emptyMap();
-
-        OptionGroupModel group = new OptionGroupModelImpl("Label", true, options, attributes);
-
-        assertSame(group.getAttributes(), attributes);
-    }
-
-    @Test
-    public void strings_contructor_builds_map()
-    {
-        List<OptionModel> options = Collections.emptyList();
-
-        OptionGroupModel group = new OptionGroupModelImpl("Label", true, options, "fred",
-                                                          "flintstone", "barney", "rubble");
-
-        Map<String, String> attributes = group.getAttributes();
-
-        assertEquals(attributes.size(), 2);
-        assertEquals(attributes.get("fred"), "flintstone");
-        assertEquals(attributes.get("barney"), "rubble");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/OptionModelImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/OptionModelImplTest.java
deleted file mode 100644
index 3148809..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/OptionModelImplTest.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.OptionModel;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class OptionModelImplTest extends Assert
-{
-    @Test
-    public void basics()
-    {
-        OptionModel model = new OptionModelImpl("Label", this);
-
-        assertEquals(model.getLabel(), "Label");
-        assertFalse(model.isDisabled());
-        assertSame(model.getValue(), this);
-        assertNull(model.getAttributes());
-
-        model = new OptionModelImpl("Fred", "fred");
-
-
-        assertEquals(model.toString(), "OptionModel[Fred fred]");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOrderBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOrderBean.java
deleted file mode 100644
index 4ed18cf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOrderBean.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-
-@ReorderProperties("third")
-public class PropertyOrderBean
-{
-    private String first;
-
-    private String second;
-
-    private String third;
-
-    public String getFirst()
-    {
-        return first;
-    }
-
-    public String getSecond()
-    {
-        return second;
-    }
-
-    public String getThird()
-    {
-        return third;
-    }
-
-    public void setFirst(String first)
-    {
-        this.first = first;
-    }
-
-    public void setSecond(String second)
-    {
-        this.second = second;
-    }
-
-    public void setThird(String third)
-    {
-        this.third = third;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java
deleted file mode 100644
index 1aa950a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/PropertyOverridesImplTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PropertyOverrides;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.testng.annotations.Test;
-
-public class PropertyOverridesImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void block_found()
-    {
-        Messages messages = mockMessages();
-        ComponentResources resources = mockInternalComponentResources();
-        Block block = mockBlock();
-
-        String name = "alfred";
-
-        train_getContainerMessages(resources, messages);
-
-        train_getBlockParameter(resources, name, block);
-
-        replay();
-
-        PropertyOverrides po = new PropertyOverridesImpl(resources);
-
-        assertSame(po.getOverrideBlock(name), block);
-
-        verify();
-    }
-
-    @Test
-    public void block_not_found()
-    {
-        Messages messages = mockMessages();
-        ComponentResources resources = mockInternalComponentResources();
-
-        String name = "alfred";
-
-        train_getContainerMessages(resources, messages);
-
-        train_getBlockParameter(resources, name, null);
-
-        replay();
-
-        PropertyOverrides po = new PropertyOverridesImpl(resources);
-
-        assertNull(po.getOverrideBlock(name));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/ServletContextSymbolProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/ServletContextSymbolProviderTest.java
deleted file mode 100644
index ef5d94a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/ServletContextSymbolProviderTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-import javax.servlet.ServletContext;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-
-public class ServletContextSymbolProviderTest extends TestBase
-{
-    @Test
-    public void access_of_keys_is_case_insensitive()
-    {
-        ServletContext context = newMock(ServletContext.class);
-
-        String key1 = "fred";
-        String value1 = "Fred Flintstone";
-        String key2 = "barney";
-        String value2 = "Barney Rubble";
-
-        expect(context.getInitParameterNames()).andReturn(toEnumeration(key1, key2));
-
-        expect(context.getInitParameter(key1)).andReturn(value1);
-        expect(context.getInitParameter(key2)).andReturn(value2);
-
-        replay();
-
-        SymbolProvider p = new ServletContextSymbolProvider(context);
-
-        assertEquals(p.valueForSymbol(key1), value1);
-        assertEquals(p.valueForSymbol(key2), value2);
-
-        // Not in config is null
-        assertNull(p.valueForSymbol("wilma"));
-
-        // Check for case insensitivity
-        assertEquals(p.valueForSymbol("FRED"), value1);
-
-        verify();
-    }
-
-    protected final <T> Enumeration<T> toEnumeration(T... values)
-    {
-        return Collections.enumeration(Arrays.asList(values));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/SingleKeySymbolProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/SingleKeySymbolProviderTest.java
deleted file mode 100644
index 8de4967..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/SingleKeySymbolProviderTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class SingleKeySymbolProviderTest extends Assert
-{
-    private final SymbolProvider provider = new SingleKeySymbolProvider("fred", "flintstone");
-
-    @Test
-    public void exact_match()
-    {
-        assertEquals(provider.valueForSymbol("fred"), "flintstone");
-    }
-
-    @Test
-    public void case_insensitive()
-    {
-        assertEquals(provider.valueForSymbol("FRED"), "flintstone");
-    }
-
-    @Test
-    public void non_match()
-    {
-        assertNull(provider.valueForSymbol("barney"));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryAppInitializerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryAppInitializerTest.java
deleted file mode 100644
index ed005ba..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryAppInitializerTest.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.util.Transformer;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-@Test
-public class TapestryAppInitializerTest extends Assert
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void testLoadAppModule()
-    {
-        Registry registry = new TapestryAppInitializer(null, "org.apache.tapestry5.integration.app0",
-                                                       "foo", "").createRegistry();
-
-        Transformer<String> s1 = registry.getService("Service1", Transformer.class);
-        assertEquals(s1.transform("a"), "A");
-    }
-
-    @Test
-    public void testNoAppModule()
-    {
-        // Apparently just checking to see that it doesn't fail.
-
-        new TapestryAppInitializer(null, "non_existing.package", "foo", "").createRegistry();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
deleted file mode 100644
index 70f9816..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/TapestryInternalUtilsTest.java
+++ /dev/null
@@ -1,479 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.beaneditor.Width;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.ComponentResourcesAware;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.*;
-import java.util.regex.Pattern;
-
-public class TapestryInternalUtilsTest extends InternalBaseTestCase
-{
-    private ClassFactory classFactory;
-
-    private PropertyAccess access;
-
-    private BeanModelSource beanModelSource;
-
-    @BeforeClass
-    public void setup()
-    {
-        classFactory = getService("ClassFactory", ClassFactory.class);
-        access = getService("PropertyAccess", PropertyAccess.class);
-        beanModelSource = getService(BeanModelSource.class);
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        access = null;
-        classFactory = null;
-        beanModelSource = null;
-    }
-
-
-    @Test(dataProvider = "to_user_presentable_data")
-    public void to_user_presentable(String input, String expected)
-    {
-        assertEquals(TapestryInternalUtils.toUserPresentable(input), expected);
-    }
-
-    @DataProvider
-    public Object[][] to_user_presentable_data()
-    {
-        return new Object[][] { { "hello", "Hello" }, { "userId", "User Id" }, { "useHTML", "Use HTML" },
-                { "underscored_name", "Underscored Name" }, };
-    }
-
-    @Test
-    public void map_from_keys_and_values()
-    {
-        Map<String, String> map = TapestryInternalUtils.mapFromKeysAndValues("fred", "flintstone", "barney", "rubble");
-
-        assertEquals(map.size(), 2);
-        assertEquals(map.get("fred"), "flintstone");
-        assertEquals(map.get("barney"), "rubble");
-    }
-
-    @Test
-    public void string_to_option_model_just_label()
-    {
-        OptionModel model = TapestryInternalUtils.toOptionModel("Just A Label");
-
-        assertEquals(model.getLabel(), "Just A Label");
-        assertEquals(model.getValue(), "Just A Label");
-    }
-
-    @Test
-    public void string_to_option_model()
-    {
-        OptionModel model = TapestryInternalUtils.toOptionModel("my-value=Some Label");
-
-        assertEquals(model.getLabel(), "Some Label");
-        assertEquals(model.getValue(), "my-value");
-    }
-
-    @Test
-    public void string_to_option_models()
-    {
-        List<OptionModel> options = TapestryInternalUtils.toOptionModels("UK,USA,DE=Germany");
-
-        assertEquals(options.size(), 3);
-
-        assertEquals(options.get(0).getLabel(), "UK");
-        assertEquals(options.get(0).getValue(), "UK");
-
-        assertEquals(options.get(1).getLabel(), "USA");
-        assertEquals(options.get(1).getValue(), "USA");
-
-        assertEquals(options.get(2).getLabel(), "Germany");
-        assertEquals(options.get(2).getValue(), "DE");
-    }
-
-    @Test
-    public void map_entry_to_option_model()
-    {
-        Map<String, String> map = Collections.singletonMap("key", "value");
-        Map.Entry entry = map.entrySet().iterator().next();
-        OptionModel model = TapestryInternalUtils.toOptionModel(entry);
-
-        assertEquals(model.getLabel(), "value");
-        assertEquals(model.getValue(), "key");
-    }
-
-    @Test
-    public void map_to_option_models()
-    {
-        Map<Integer, String> map = new TreeMap<Integer, String>();
-        map.put(1, "A");
-        map.put(2, null);
-        map.put(3, "C");
-
-        List<OptionModel> options = TapestryInternalUtils.toOptionModels(map);
-
-        assertEquals(options.size(), 3);
-
-        assertEquals(options.get(0).getLabel(), "A");
-        assertEquals(options.get(0).getValue(), 1);
-
-        assertEquals(options.get(1).getLabel(), "");
-        assertEquals(options.get(1).getValue(), 2);
-
-        assertEquals(options.get(2).getLabel(), "C");
-        assertEquals(options.get(2).getValue(), 3);
-    }
-
-    @Test
-    public void null_map_key_is_null_option_value()
-    {
-
-        Map<Integer, String> map = new HashMap<Integer, String>();
-        map.put(null, "Label");
-
-        List<OptionModel> options = TapestryInternalUtils.toOptionModels(map);
-
-        assertEquals(options.size(), 1);
-
-        assertEquals(options.get(0).getLabel(), "Label");
-        assertEquals(options.get(0).getValue(), null);
-    }
-
-    @Test
-    public void object_to_option_model()
-    {
-        Object object = new Integer(27);
-        OptionModel model = TapestryInternalUtils.toOptionModel(object);
-
-        assertEquals(model.getLabel(), "27");
-        assertEquals(model.getValue(), object);
-    }
-
-    @Test
-    public void list_to_option_models()
-    {
-        List<String> list = new ArrayList<String>();
-        list.add("A");
-        list.add(null);
-        list.add("C");
-
-        List<OptionModel> options = TapestryInternalUtils.toOptionModels(list);
-
-        assertEquals(options.size(), 3);
-
-        assertEquals(options.get(0).getLabel(), "A");
-        assertEquals(options.get(0).getValue(), "A");
-
-        assertEquals(options.get(1).getLabel(), "");
-        assertEquals(options.get(1).getValue(), null);
-
-        assertEquals(options.get(2).getLabel(), "C");
-        assertEquals(options.get(2).getValue(), "C");
-    }
-
-    @Test
-    public void whitespace_around_terms_is_trimmed()
-    {
-        List<OptionModel> options = TapestryInternalUtils.toOptionModels(" UK , USA , DE=Germany ");
-
-        assertEquals(options.size(), 3);
-
-        assertEquals(options.get(0).getLabel(), "UK");
-        assertEquals(options.get(0).getValue(), "UK");
-
-        assertEquals(options.get(1).getLabel(), "USA");
-        assertEquals(options.get(1).getValue(), "USA");
-
-        assertEquals(options.get(2).getLabel(), "Germany");
-        assertEquals(options.get(2).getValue(), "DE");
-    }
-
-    @Test
-    public void string_to_select_model_type_coercion_integration()
-    {
-        TypeCoercer coercer = getService(TypeCoercer.class);
-
-        SelectModel selectModel = coercer.coerce(" UK , USA , DE=Germany ", SelectModel.class);
-
-        assertNull(selectModel.getOptionGroups());
-        assertEquals(selectModel.getOptions().size(), 3);
-
-        // Waste of effort to re-test each individual option model.
-    }
-
-    @Test
-    public void parse_key_value()
-    {
-        KeyValue kv = TapestryInternalUtils.parseKeyValue("foo=bar");
-
-        assertEquals(kv.getKey(), "foo");
-        assertEquals(kv.getValue(), "bar");
-    }
-
-    @Test
-    public void bad_format_key_value_pair()
-    {
-        String input = "abraxas";
-
-        try
-        {
-            TapestryInternalUtils.parseKeyValue(input);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), InternalMessages.badKeyValue(input));
-        }
-    }
-
-    @Test
-    public void whitespace_trimmed_for_key_value()
-    {
-        KeyValue kv = TapestryInternalUtils.parseKeyValue("  mykey = myvalue ");
-
-        assertEquals(kv.getKey(), "mykey");
-        assertEquals(kv.getValue(), "myvalue");
-    }
-
-    @Test
-    public void extract_id_from_property_expression()
-    {
-        assertEquals(TapestryInternalUtils.extractIdFromPropertyExpression("simpleName"), "simpleName");
-        assertEquals(TapestryInternalUtils.extractIdFromPropertyExpression("complex.name().withStuff"),
-                     "complexnamewithStuff");
-        assertEquals(TapestryInternalUtils.extractIdFromPropertyExpression("number99.withABullet"),
-                     "number99withABullet");
-    }
-
-    @Test
-    public void default_label_key_found()
-    {
-        Messages messages = mockMessages();
-        train_contains(messages, "myid-label", true);
-        train_get(messages, "myid-label", "My Id");
-
-        replay();
-
-        assertEquals(TapestryInternalUtils.defaultLabel("myid", messages, "myid-name-not-used"), "My Id");
-
-        verify();
-    }
-
-    @Test
-    public void default_label_from_name()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        assertEquals(TapestryInternalUtils.defaultLabel("foobarbazbiff", messages, "foo.bar().baz.biff()"), "Biff");
-
-        verify();
-    }
-
-    @Test
-    public void null_equals_null()
-    {
-        assertTrue(TapestryInternalUtils.isEqual(null, null));
-    }
-
-    @Test
-    public void non_null_never_equals_null()
-    {
-        assertFalse(TapestryInternalUtils.isEqual(this, null));
-    }
-
-    @Test
-    public void same_is_equal()
-    {
-        assertTrue(TapestryInternalUtils.isEqual(this, this));
-    }
-
-    @Test
-    public void is_equal_with_objects()
-    {
-        String left = "left";
-        String right = "right";
-
-        assertFalse(TapestryInternalUtils.isEqual(left, right));
-        assertTrue(TapestryInternalUtils.isEqual(left, new String(left)));
-    }
-
-    @Test
-    public void type_coersion_string_to_pattern()
-    {
-        TypeCoercer coercer = getObject(TypeCoercer.class, null);
-
-        String input = "\\s+";
-
-        Pattern pattern = coercer.coerce(input, Pattern.class);
-
-        assertEquals(pattern.toString(), input);
-    }
-
-    @Test
-    public void type_coersion_from_component_resources_aware_to_component_resources()
-    {
-        ComponentResourcesAware input = newMock(ComponentResourcesAware.class);
-        ComponentResources resources = mockComponentResources();
-
-        expect(input.getComponentResources()).andReturn(resources);
-
-        TypeCoercer coercer = getObject(TypeCoercer.class, null);
-
-        replay();
-
-        ComponentResources actual = coercer.coerce(input, ComponentResources.class);
-
-        assertSame(actual, resources);
-
-        verify();
-    }
-
-    @Test
-    public void to_class_attribute_value_empty()
-    {
-        List<String> classes = Collections.emptyList();
-
-        assertNull(TapestryInternalUtils.toClassAttributeValue(classes));
-    }
-
-    @Test
-    public void to_class_attribute_value_normal()
-    {
-        List<String> classes = CollectionFactory.newList("fred", "barney", "wilma");
-
-        assertEquals(TapestryInternalUtils.toClassAttributeValue(classes), "fred barney wilma");
-    }
-
-    @DataProvider
-    public Object[][] split_at_commas_data()
-    {
-        return new Object[][]
-                {
-                        { "foo", new String[] { "foo" } },
-                        { "foo, bar", new String[] { "foo", "bar" } },
-                        { "  foo, \nbar\t\t", new String[] { "foo", "bar" } },
-                        { "", new String[0] },
-                        { null, new String[0] }
-                };
-    }
-
-
-    @Test(dataProvider = "split_at_commas_data")
-    public void split_at_commas(String input, String[] output)
-    {
-        assertArraysEqual(TapestryInternalUtils.splitAtCommas(input), output);
-
-    }
-
-    @DataProvider
-    public Object[][] to_base64_data()
-    {
-        return new Object[][] {
-                { 0L, "AA" },
-                { 1L, "AQ" },
-                { 0xab54a98ceb1f0ad2L, "q1SpjOsfCtI" }
-        };
-    }
-
-    @Test
-    public void to_asset2_no_wrapper_needed()
-    {
-        Asset2 asset2 = mockAsset2();
-
-        replay();
-
-        assertSame(TapestryInternalUtils.toAsset2(asset2), asset2);
-
-        verify();
-    }
-
-    @Test
-    public void asset_to_asset2_wrapper()
-    {
-        Asset asset = mockAsset();
-        Resource resource = mockResource();
-        String clientURL = "clientURL";
-
-        train_toClientURL(asset, clientURL);
-
-        expect(asset.getResource()).andReturn(resource);
-
-        replay();
-
-        Asset2 asset2 = TapestryInternalUtils.toAsset2(asset);
-
-        assertFalse(asset2.isInvariant());
-
-        assertSame(asset2.toClientURL(), clientURL);
-        assertSame(asset2.toString(), asset.toString());
-        assertSame(asset2.getResource(), resource);
-
-        verify();
-    }
-    
-    
-    @Test
-    public void to_internal_property_conduit_no_wrapper_needed()
-    {
-    	InternalPropertyConduit conduit2 = newMock(InternalPropertyConduit.class);
-    	
-    	assertSame(TapestryInternalUtils.toInternalPropertyConduit(conduit2), conduit2);
-    }
-    
-    @Test
-    public void to_internal_property_conduit_wrapper()
-    {
-    	PropertyConduit conduit = mockPropertyConduit();
-    	
-    	Integer result = 123;
-    	Width width = newMock(Width.class);
-    	
-    	
-    	expect(conduit.get("")).andReturn(result);
-    	expect(conduit.getAnnotation(Width.class)).andReturn(width);
-    	expect(conduit.getPropertyType()).andReturn(Integer.class);
-    	conduit.set("", 345);
-    	
-    	replay();
-    	
-    	InternalPropertyConduit conduit2 = TapestryInternalUtils.toInternalPropertyConduit(conduit);
-    	
-    	assertNull(conduit2.getPropertyName());
-    	
-    	assertSame(conduit2.get(""), result);
-    	assertSame(conduit2.getAnnotation(Width.class), width);
-    	assertSame(conduit2.getPropertyType(), Integer.class);
-    	conduit2.set("", 345);
-    	
-    	verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
deleted file mode 100644
index c424b1a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/BeanModelUtilsTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.easymock.EasyMock;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class BeanModelUtilsTest extends InternalBaseTestCase
-{
-    @Test(dataProvider = "split_inputs")
-    public void split(String propertyNames, String[] expected)
-    {
-        assertEquals(BeanModelUtils.split(propertyNames), expected);
-    }
-
-    private Object[] build(String propertyNames, String... expected)
-    {
-        return new Object[]
-                { propertyNames, expected };
-    }
-
-    @DataProvider
-    public Object[][] split_inputs()
-    {
-        return new Object[][]
-                { build("fred", "fred"), build("fred,barney", "fred", "barney"),
-                        build(" fred, barney, wilma, betty ", "fred", "barney", "wilma", "betty"),
-                        new Object[]
-                                { "   ", new String[0] } };
-    }
-
-    @Test
-    public void exclude()
-    {
-        BeanModel model = mockBeanModel();
-
-        expect(model.exclude("fred", "barney")).andReturn(model);
-
-        replay();
-
-        BeanModelUtils.exclude(model, "fred,barney");
-
-        verify();
-    }
-
-    @Test
-    public void reorder()
-    {
-        BeanModel model = mockBeanModel();
-
-        expect(model.reorder("fred", "barney")).andReturn(model);
-
-        replay();
-
-        BeanModelUtils.reorder(model, "fred,barney");
-
-        verify();
-    }
-
-    @Test
-    public void add()
-    {
-        BeanModel model = mockBeanModel();
-        PropertyModel fred = mockPropertyModel();
-        PropertyModel barney = mockPropertyModel();
-
-        expect(model.add("fred", null)).andReturn(fred);
-        expect(model.add("barney", null)).andReturn(barney);
-
-        replay();
-
-        BeanModelUtils.add(model, "fred,barney");
-
-        verify();
-    }
-
-    /**
-     * TAP5-478
-     */
-    @Test
-    public void include_before_add()
-    {
-        BeanModel model = mockBeanModel();
-        PropertyModel fred = mockPropertyModel();
-
-        EasyMock.checkOrder(model, true);
-
-        expect(model.add("fred", null)).andReturn(fred);
-
-        expect(model.include("sam", "fred")).andReturn(model);
-
-        replay();
-
-        BeanModelUtils.modify(model, "fred", "sam", null, null);
-
-        verify();
-    }
-
-    @Test
-    public void modify_no_work()
-    {
-        BeanModel model = mockBeanModel();
-
-        replay();
-
-        BeanModelUtils.modify(model, null, null, null, null);
-
-        verify();
-    }
-
-    @Test
-    public void modify_full()
-    {
-        BeanModel model = mockBeanModel();
-        PropertyModel fred = mockPropertyModel();
-        PropertyModel barney = mockPropertyModel();
-
-        expect(model.add("fred", null)).andReturn(fred);
-        expect(model.add("barney", null)).andReturn(barney);
-
-        expect(model.exclude("pebbles", "bambam")).andReturn(model);
-
-        expect(model.reorder("wilma", "betty")).andReturn(model);
-
-        replay();
-
-        BeanModelUtils.modify(model, "fred,barney", null, "pebbles,bambam", "wilma,betty");
-
-        verify();
-    }
-
-    @Test
-    public void modify_include()
-    {
-        BeanModel model = mockBeanModel();
-
-        expect(model.include("fred", "wilma")).andReturn(model);
-
-        replay();
-
-        BeanModelUtils.modify(model, null, "fred,wilma", null, null);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java
deleted file mode 100644
index d5e737d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/MessagesAnnotationConstraintGeneratorTest.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.PropertyEditContext;
-import org.apache.tapestry5.ioc.Messages;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-public class MessagesAnnotationConstraintGeneratorTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void no_environment()
-    {
-        Environment e = getService(Environment.class);
-        MessagesConstraintGenerator gen = new MessagesConstraintGenerator(e);
-        assertNull(gen.buildConstraints(null,null));
-    }
-
-    @Test
-    public void no_property()
-    {
-        Environment e = getService(Environment.class);
-
-        pushAndTrainEnvironmentalObjects(e,false,null);
-
-        MessagesConstraintGenerator gen = new MessagesConstraintGenerator(e);
-        assertNull(gen.buildConstraints(null,null));
-
-        pop(e);
-        verify();
-    }
-
-    @Test
-    public void empty_message()
-    {
-        Environment e = getService(Environment.class);
-
-        pushAndTrainEnvironmentalObjects(e,true,"");
-
-        MessagesConstraintGenerator gen = new MessagesConstraintGenerator(e);
-        assertNull(gen.buildConstraints(null,null));
-
-        pop(e);
-        verify();
-    }
-
-    @Test
-    public void single_constraint()
-    {
-        Environment e = getService(Environment.class);
-
-        pushAndTrainEnvironmentalObjects(e,true,"required");
-
-        MessagesConstraintGenerator gen = new MessagesConstraintGenerator(e);
-
-        assertEquals(gen.buildConstraints(null,null), Arrays.asList("required"));
-    }
-
-    @Test
-    public void multiple_constraints()
-    {
-        Environment e = getService(Environment.class);
-
-        pushAndTrainEnvironmentalObjects(e,true,"required,minlength=3,regexp=^([a-zA-Z0-9]{2,4})+@(\\p{Lower})*$");
-
-        MessagesConstraintGenerator gen = new MessagesConstraintGenerator(e);
-
-        assertEquals(gen.buildConstraints(null,null),
-                Arrays.asList("required","minlength=3","regexp=^([a-zA-Z0-9]{2,4})+@(\\p{Lower})*$"));
-
-    }
-
-    private void pushAndTrainEnvironmentalObjects(Environment e, boolean hasProperty, String propertyValue) {
-        Messages messages = mockMessages();
-        train_contains(messages,"testProperty-validate",hasProperty);
-
-        if (hasProperty) {
-            train_get(messages,"testProperty-validate",propertyValue);
-        }
-
-        EnvironmentMessages em = new EnvironmentMessages(messages,"testProperty");
-        e.push(EnvironmentMessages.class,em);
-        replay();
-    }
-
-    private void pop(Environment e) {
-        e.pop(EnvironmentMessages.class);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
deleted file mode 100644
index f0968ca..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/beaneditor/ValidateAnnotationConstraintGeneratorTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.beaneditor;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-public class ValidateAnnotationConstraintGeneratorTest extends InternalBaseTestCase
-{
-    @Test
-    public void no_annotation()
-    {
-        PropertyConduit conduit = mockPropertyConduit();
-
-        train_getAnnotation(conduit, Validate.class, null);
-
-        replay();
-
-        ValidationConstraintGenerator gen = new ValidateAnnotationConstraintGenerator();
-
-        assertNull(gen.buildConstraints(Object.class, conduit));
-
-        verify();
-    }
-
-    @Test
-    public void single_constraint()
-    {
-        PropertyConduit conduit = mockPropertyConduit();
-        Validate validate = newValidate("required");
-
-        train_getAnnotation(conduit, Validate.class, validate);
-
-        replay();
-
-        ValidationConstraintGenerator gen = new ValidateAnnotationConstraintGenerator();
-
-        assertEquals(gen.buildConstraints(Object.class, conduit), Arrays.asList("required"));
-
-        verify();
-    }
-
-    @Test
-    public void multiple_constraints()
-    {
-        PropertyConduit conduit = mockPropertyConduit();
-        Validate validate = newValidate("required,minlength=3,regexp=^([a-zA-Z0-9]{2,4})+$");
-
-        train_getAnnotation(conduit, Validate.class, validate);
-
-        replay();
-
-        ValidationConstraintGenerator gen = new ValidateAnnotationConstraintGenerator();
-
-        assertEquals(gen.buildConstraints(null, conduit), Arrays.asList("required", "minlength=3", "regexp=^([a-zA-Z0-9]{2,4})+$"));
-
-        verify();
-    }
-    
-
-    @Test
-    public void regex_ranges_constraints()
-    {
-        PropertyConduit conduit = mockPropertyConduit();
-        Validate validate = newValidate("regexp=^([a]{50,125}[0-9]{2,4})+$,required,567matcher,regexp=a\\,b,regexp=a{1,}");
-
-        train_getAnnotation(conduit, Validate.class, validate);
-
-        replay();
-
-        ValidationConstraintGenerator gen = new ValidateAnnotationConstraintGenerator();
-
-        assertEquals(gen.buildConstraints(null, conduit), 
-                Arrays.asList("regexp=^([a]{50,125}[0-9]{2,4})+$","required", "567matcher", "regexp=a\\,b", "regexp=a{1,}"));
-
-        verify();
-    }
-
-    private Validate newValidate(String value)
-    {
-        Validate annotation = newMock(Validate.class);
-
-        expect(annotation.value()).andReturn(value).atLeastOnce();
-
-        return annotation;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java
deleted file mode 100644
index 8367e26..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.services.StringInternerImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.FieldTranslatorSource;
-import org.testng.annotations.Test;
-
-/**
- * Tests for several of the simpler binding factories.
- */
-public class BindingFactoryTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void literal_binding()
-    {
-        ComponentResources res = mockInternalComponentResources();
-        Location l = mockLocation();
-
-        replay();
-
-        BindingFactory factory = new LiteralBindingFactory();
-
-        Binding b = factory.newBinding("test binding", res, null, "Tapestry5", l);
-
-        assertSame(InternalUtils.locationOf(b), l);
-
-        assertEquals(b.get(), "Tapestry5");
-        assertTrue(b.isInvariant());
-        assertSame(b.getBindingType(), String.class);
-
-        try
-        {
-            b.set(null);
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertSame(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void translate_binding()
-    {
-        FieldTranslator translator = mockFieldTranslator();
-        FieldTranslatorSource source = newMock(FieldTranslatorSource.class);
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        String description = "foo bar";
-        String expression = "mock";
-
-        expect(source.createTranslator(resources, expression)).andReturn(translator);
-
-        replay();
-
-        BindingFactory factory = new TranslateBindingFactory(source, new StringInternerImpl());
-
-        Binding binding = factory.newBinding(description, resources, resources, expression, l);
-
-        assertSame(binding.get(), translator);
-
-        assertSame(InternalUtils.locationOf(binding), l);
-
-        verify();
-    }
-    
-    @Test
-    public void symbol_binding()
-    {
-        ComponentResources res = mockInternalComponentResources();
-        Location l = mockLocation();
-
-        replay();
-        
-        BindingFactory factory = getService("SymbolBindingFactory", BindingFactory.class);
-        
-        Binding binding = factory.newBinding("Test binding", res, null, SymbolConstants.START_PAGE_NAME, l);
-        
-        assertEquals(binding.get(), "start");
-        
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/DefaultComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/DefaultComponent.java
deleted file mode 100644
index 67a64f9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/DefaultComponent.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.apache.tapestry5.runtime.Event;
-
-/**
- * For use in places where we don't want to have to transform a class just for testing purposes.
- */
-public class DefaultComponent implements Component
-{
-
-    public void afterRender(MarkupWriter writer, Event event)
-    {
-    }
-
-    public void afterRenderBody(MarkupWriter writer, Event event)
-    {
-    }
-
-    public void afterRenderTemplate(MarkupWriter writer, Event event)
-    {
-    }
-
-    public void beforeRenderBody(MarkupWriter writer, Event event)
-    {
-    }
-
-    public void beforeRenderTemplate(MarkupWriter writer, Event event)
-    {
-    }
-
-    public void beginRender(MarkupWriter writer, Event event)
-    {
-    }
-
-    public void cleanupRender(MarkupWriter writer, Event event)
-    {
-    }
-
-    public boolean dispatchComponentEvent(ComponentEvent event)
-    {
-        return false;
-    }
-
-    public void postRenderCleanup()
-    {
-    }
-
-    public void setupRender(MarkupWriter writer, Event event)
-    {
-    }
-
-    public ComponentResources getComponentResources()
-    {
-        return null;
-    }
-
-    public void containingPageDidAttach()
-    {
-    }
-
-    public void containingPageDidDetach()
-    {
-    }
-
-    public void containingPageDidLoad()
-    {
-    }
-
-    public void restoreStateBeforePageAttach()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java
deleted file mode 100644
index 3fa0977..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/PropBindingFactoryTest.java
+++ /dev/null
@@ -1,566 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.annotations.BeforeRenderBody;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.util.IntegerRange;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.BindingFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class PropBindingFactoryTest extends InternalBaseTestCase
-{
-    private BindingFactory factory;
-
-    @BeforeClass
-    public void setup_factory()
-    {
-        factory = getService("PropBindingFactory", BindingFactory.class);
-    }
-
-    @AfterClass
-    public void cleanup_factory()
-    {
-        factory = null;
-    }
-
-    private ComponentResources newComponentResources(Component component)
-    {
-        ComponentResources resources = mockComponentResources();
-        train_getComponent(resources, component);
-
-        train_getCompleteId(resources, "foo.Bar:baz");
-
-        return resources;
-    }
-
-    @Test
-    public void object_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "objectValue", l);
-
-        assertSame(binding.getBindingType(), String.class);
-
-        bean.setObjectValue("first");
-
-        assertEquals(binding.get(), "first");
-
-        binding.set("second");
-
-        assertEquals(bean.getObjectValue(), "second");
-        assertEquals(InternalUtils.locationOf(binding), l);
-
-        assertEquals(binding.toString(), "PropBinding[test binding foo.Bar:baz(objectValue)]");
-
-        verify();
-    }
-
-    @Test
-    public void annotation_from_read_only_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "readOnly", l);
-
-        assertEquals(binding.getAnnotation(Validate.class).value(), "readonly");
-
-        verify();
-    }
-
-    @Test
-    public void annotation_from_write_only_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "writeOnly", l);
-
-        assertEquals(binding.getAnnotation(Validate.class).value(), "writeonly");
-
-        verify();
-    }
-
-    @Test
-    public void annotation_does_not_exist()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "intValue", l);
-
-        assertNull(binding.getAnnotation(Validate.class));
-
-        verify();
-    }
-
-    @Test
-    public void annotation_on_named_method()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "stringHolderMethod()", l);
-
-        assertNotNull(binding.getAnnotation(BeforeRenderBody.class));
-
-        verify();
-    }
-
-    @Test
-    public void annnotation_on_read_method_takes_precedence_over_write_method()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "objectValue", l);
-
-        assertEquals(binding.getAnnotation(Validate.class).value(), "getObjectValue");
-
-        verify();
-    }
-
-    @Test
-    public void property_path()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "stringHolder.value", l);
-
-        assertSame(binding.getBindingType(), String.class);
-
-        bean.getStringHolder().setValue("first");
-
-        assertEquals(binding.get(), "first");
-
-        binding.set("second");
-
-        assertEquals(bean.getStringHolder().getValue(), "second");
-
-        assertEquals(binding.toString(), "PropBinding[test binding foo.Bar:baz(stringHolder.value)]");
-
-        verify();
-    }
-
-    /**
-     * The "preamble" are the non-terminal property or method names.
-     */
-    @Test
-    public void property_path_with_explicit_method_in_preamble()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "stringHolderMethod().value", l);
-
-        assertSame(binding.getBindingType(), String.class);
-
-        bean.getStringHolder().setValue("first");
-
-        assertEquals(binding.get(), "first");
-
-        assertEquals(binding.toString(), "PropBinding[test binding foo.Bar:baz(stringHolderMethod().value)]");
-
-        verify();
-    }
-
-    @Test
-    public void method_call_as_terminal()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "stringHolderMethod().stringValue()", l);
-
-        assertSame(binding.getBindingType(), String.class);
-
-        bean.getStringHolder().setValue("first");
-
-        assertEquals(binding.get(), "first");
-
-        try
-        {
-            binding.set("read-only");
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Expression 'stringHolderMethod().stringValue()' for class org.apache.tapestry5.internal.bindings.TargetBean is read-only.");
-            assertSame(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void method_not_found_in_preamble()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, "isThatRealBlood().value", l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "No public method \'isThatRealBlood()\' in class org.apache.tapestry5.internal.bindings.TargetBean");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void method_not_found_in_terminal()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, "stringHolder.isThatRealBlood()", l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "No public method \'isThatRealBlood()\' in class org.apache.tapestry5.internal.bindings.StringHolder");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void void_method_in_preamble()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, "voidMethod().value", l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Method org.apache.tapestry5.internal.bindings.TargetBean.voidMethod() returns void");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void void_method_as_terminal()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, "stringHolder.voidMethod()", l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Method org.apache.tapestry5.internal.bindings.StringHolder.voidMethod() returns void");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void property_path_through_missing_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        String propertyPath = "stringHolder.missingProperty.terminalProperty";
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, propertyPath, l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Class org.apache.tapestry5.internal.bindings.StringHolder does not contain a property",
-                    "\'missingProperty\'");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void property_path_through_write_only_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        String propertyPath = "writeOnly.terminalProperty";
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, propertyPath, l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Property \'writeOnly\' of class org.apache.tapestry5.internal.bindings.TargetBean",
-                    "is not readable (it has no read accessor method).");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void primitive_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "intValue", l);
-
-        assertSame(binding.getBindingType(), int.class);
-
-        bean.setIntValue(1);
-
-        assertEquals(binding.get(), 1);
-
-        binding.set(2);
-
-        assertEquals(bean.getIntValue(), 2);
-
-        verify();
-    }
-
-    @Test
-    public void read_only_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "readOnly", l);
-
-        assertEquals(binding.get(), "ReadOnly");
-
-        try
-        {
-            binding.set("fail");
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Expression 'readOnly' for class org.apache.tapestry5.internal.bindings.TargetBean is read-only.");
-            assertEquals(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void write_only_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = newComponentResources(bean);
-        Location l = mockLocation();
-
-        replay();
-
-        Binding binding = factory.newBinding("test binding", resources, null, "writeOnly", l);
-
-        binding.set("updated");
-
-        assertEquals(bean.writeOnly, "updated");
-
-        try
-        {
-            assertEquals(binding.get(), "ReadOnly");
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Expression writeOnly for class org.apache.tapestry5.internal.bindings.TargetBean is write-only.");
-            assertEquals(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void unknown_property()
-    {
-        TargetBean bean = new TargetBean();
-        ComponentResources resources = mockComponentResources();
-        Location l = mockLocation();
-
-        train_getComponent(resources, bean);
-
-        replay();
-
-        try
-        {
-            factory.newBinding("test binding", resources, null, "missingProperty", l);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Class org.apache.tapestry5.internal.bindings.TargetBean does not contain a property",
-                    "\'missingProperty\'");
-        }
-
-        verify();
-    }
-
-    @Test(dataProvider = "values")
-    public void special_prop_binding_values(String expression, Object expected)
-    {
-        Location l = mockLocation();
-        String description = "my description";
-        ComponentResources resources = mockComponentResources();
-        Component component = mockComponent();
-
-        train_getComponent(resources, component);
-        train_getCompleteId(resources, "Does.not.matter");
-
-        replay();
-
-        Binding binding = factory.newBinding(description, resources, null, expression, l);
-
-        assertEquals(binding.get(), expected);
-
-        // All of these are invariatns, even though they are generated from the PropertyConduit.
-
-        assertTrue(binding.isInvariant());
-
-        verify();
-    }
-
-    @DataProvider
-    public Object[][] values()
-    {
-        return new Object[][]
-        {
-        { "true", true, },
-        { "True", true, },
-        { " true ", true, },
-        { "false", false },
-        { "null", null },
-        { "3", 3l },
-        { " 37 ", 37l },
-        { " -227", -227l },
-        { " 5.", 5d },
-        { " -100.", -100d },
-        { " -0.0 ", -0d },
-        { "+50", 50l },
-        { "+7..+20", new IntegerRange(7, 20) },
-        { "+5.5", 5.5d },
-        { "1..10", new IntegerRange(1, 10) },
-        { " -20 .. -30 ", new IntegerRange(-20, -30) },
-        { "0.", 0d },
-        { " 227.75", 227.75d },
-        { " -10123.67", -10123.67d },
-        { "'Hello World'", "Hello World" },
-        { " 'Whitespace Ignored' ", "Whitespace Ignored" },
-        { " ' Inside ' ", " Inside " } };
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/StringHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/StringHolder.java
deleted file mode 100644
index b4602ea..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/StringHolder.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-public interface StringHolder
-{
-    void setValue(String value);
-
-    String getValue();
-
-    String stringValue();
-
-    void voidMethod();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/StringHolderImpl.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/StringHolderImpl.java
deleted file mode 100644
index 839d9a7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/StringHolderImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-public class StringHolderImpl implements StringHolder
-{
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    public String stringValue()
-    {
-        return value;
-    }
-
-    public void voidMethod()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/TargetBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/TargetBean.java
deleted file mode 100644
index 26aa877..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/TargetBean.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.annotations.BeforeRenderBody;
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-import org.apache.tapestry5.beaneditor.Validate;
-
-@ReorderProperties("readonly,foobar,writeonly,objectvalue")
-public class TargetBean extends DefaultComponent
-{
-    private String objectValue;
-
-    private int intValue;
-
-    String writeOnly;
-
-    private StringHolder stringHolder = new StringHolderImpl();
-
-    public StringHolder getStringHolder()
-    {
-        return stringHolder;
-    }
-
-    @BeforeRenderBody
-    public StringHolder stringHolderMethod()
-    {
-        return stringHolder;
-    }
-
-    public void voidMethod()
-    {
-
-    }
-
-    public int getIntValue()
-    {
-        return intValue;
-    }
-
-    public void setIntValue(int intValue)
-    {
-        this.intValue = intValue;
-    }
-
-    @Validate("getObjectValue")
-    public String getObjectValue()
-    {
-        return objectValue;
-    }
-
-    @Validate("setObjectValue")
-    public void setObjectValue(String objectValue)
-    {
-        this.objectValue = objectValue;
-    }
-
-    @Validate("writeonly")
-    public void setWriteOnly(String value)
-    {
-        writeOnly = value;
-    }
-
-    @Validate("readonly")
-    public String getReadOnly()
-    {
-        return "ReadOnly";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java
deleted file mode 100644
index b438f46..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/ValidateBindingFactoryTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.bindings;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.internal.services.StringInterner;
-import org.apache.tapestry5.internal.services.StringInternerImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.root.FieldComponent;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.FieldValidatorSource;
-import org.testng.annotations.Test;
-
-public class ValidateBindingFactoryTest extends InternalBaseTestCase
-{
-    private StringInterner interner = new StringInternerImpl();
-
-    @Test
-    public void not_a_field()
-    {
-        FieldValidatorSource source = mockFieldValidatorSource();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        Component instance = mockComponent();
-        Location l = mockLocation();
-
-        train_getComponent(component, instance);
-        train_getCompleteId(component, "foo.Bar:baz");
-
-        replay();
-
-        BindingFactory factory = new ValidateBindingFactory(source, interner);
-
-        try
-        {
-            factory.newBinding("descrip", container, component, "zip,zoom", l);
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Component 'foo.Bar:baz' is not a field (it does not implement the Field interface) and may not be used with the validate: binding prefix.");
-            assertSame(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void success()
-    {
-
-        FieldValidatorSource source = mockFieldValidatorSource();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        FieldComponent instance = mockFieldComponent();
-        Location l = mockLocation();
-        FieldValidator validator = mockFieldValidator();
-
-        String expression = "required,minLength=5";
-
-        train_getComponent(component, instance);
-
-        expect(source.createValidators(instance, expression)).andReturn(validator);
-
-        replay();
-
-        BindingFactory factory = new ValidateBindingFactory(source, interner);
-
-        Binding binding = factory.newBinding("descrip", container, component, expression, l);
-
-        assertSame(binding.get(), validator);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
deleted file mode 100644
index 3305ff4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/CollectionGridDataSourceTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.grid;
-
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.grid.ColumnSort;
-import org.apache.tapestry5.grid.SortConstraint;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class CollectionGridDataSourceTest extends InternalBaseTestCase
-{
-    // Just arbitrary numbers ...
-
-    private static final int FRED = 99;
-
-    private static final int BARNEY = 23;
-
-    private static final int WILMA = 107;
-
-    private static final int BETTY = 298;
-
-    // Arrays.asList returns an unmodifiable list
-
-    private final List raw = Arrays.asList(new Datum(FRED, "Fred"), new Datum(BARNEY, "Barney"),
-                                           new Datum(WILMA, "Wilma"), new Datum(BETTY, null));
-
-    private final CollectionGridDataSource source = new CollectionGridDataSource(raw);
-
-    private BeanModel model;
-
-    @BeforeClass
-    public void setup()
-    {
-        BeanModelSource source = getService(BeanModelSource.class);
-
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        model = source.create(Datum.class, false, messages);
-
-        verify();
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        model = null;
-    }
-
-    @Test
-    public void sort_on_number_ascending()
-    {
-        sort("id", true, BARNEY, FRED, WILMA, BETTY);
-    }
-
-    @Test
-    public void sort_on_number_descending()
-    {
-        sort("id", false, BETTY, WILMA, FRED, BARNEY);
-    }
-
-    @Test
-    public void sort_on_string_value_ascending()
-    {
-        // Nulls sort first
-
-        // Without a secondary sort column, it's kind of arbitrary whether WILMA or BETTY is sorted
-        // first.
-
-        sort("value", true, BETTY, BARNEY, FRED, WILMA);
-    }
-
-    @Test
-    public void sort_on_string_value_descending()
-    {
-        sort("value", false, WILMA, FRED, BARNEY, BETTY);
-    }
-
-    private void sort(String propertyName, boolean ascending, int... ids)
-    {
-        PropertyModel propertyModel = model.get(propertyName);
-
-        int availableRows = source.getAvailableRows();
-
-        SortConstraint constraint = new SortConstraint(propertyModel,
-                                                       ascending ? ColumnSort.ASCENDING : ColumnSort.DESCENDING);
-        List<SortConstraint> constraints = Collections.singletonList(constraint);
-
-        source.prepare(0, availableRows - 1, constraints);
-
-        for (int i = 0; i < ids.length; i++)
-        {
-            Datum row = (Datum) source.getRowValue(i);
-
-            assertEquals(row.getId(), ids[i], "Id for Datum #" + i);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/Datum.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/Datum.java
deleted file mode 100644
index 44d6181..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/grid/Datum.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.grid;
-
-public class Datum
-{
-    private final int id;
-
-    private final String value;
-
-    public Datum(final int id, final String value)
-    {
-        this.id = id;
-        this.value = value;
-    }
-
-    public int getId()
-    {
-        return id;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
deleted file mode 100644
index 96edac5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/model/MutableComponentModelImplTest.java
+++ /dev/null
@@ -1,786 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.model;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.annotations.BeginRender;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.model.MutableEmbeddedComponentModel;
-import org.apache.tapestry5.model.ParameterModel;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-/**
- * Tests {@link org.apache.tapestry5.internal.model.MutableComponentModelImpl} and {@link
- * org.apache.tapestry5.internal.model.MutableEmbeddedComponentModelImpl}.
- */
-public class MutableComponentModelImplTest extends InternalBaseTestCase
-{
-    private static final String COMPONENT_CLASS_NAME = "org.example.components.Fred";
-
-    private static final String CLASS_NAME = "org.example.components.Foo";
-
-    @Test
-    public void root_class_vs_sub_class()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertTrue(model.isRootClass());
-
-        MutableComponentModel subModel = new MutableComponentModelImpl(CLASS_NAME, logger, r, model);
-
-        assertFalse(subModel.isRootClass());
-
-        verify();
-    }
-
-    @Test
-    public void add_new_parameter()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertTrue(model.getParameterNames().isEmpty());
-
-        String parameterName = "value";
-
-        model.addParameter(parameterName, true, true, BindingConstants.PROP);
-
-        ParameterModel pm = model.getParameterModel(parameterName);
-
-        assertEquals(pm.getName(), parameterName);
-        assertEquals(true, pm.isRequired());
-        assertEquals(pm.getDefaultBindingPrefix(), BindingConstants.PROP);
-
-        assertEquals(model.getDeclaredParameterNames(), Arrays.asList(parameterName));
-
-        // Verify that the binding prefix is actually stored:
-
-        model.addParameter("fred", true, true, "flint");
-
-        // Checks that parameter names are case insensitive
-
-        assertEquals(model.getParameterModel("Fred").getDefaultBindingPrefix(), "flint");
-
-        verify();
-    }
-
-    @Test
-    public void parameter_names_are_sorted()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.addParameter("fred", true, true, BindingConstants.PROP);
-        model.addParameter("wilma", true, true, BindingConstants.PROP);
-        model.addParameter("barney", true, true, BindingConstants.PROP);
-
-        assertEquals(model.getDeclaredParameterNames(), Arrays.asList("barney", "fred", "wilma"));
-
-        verify();
-    }
-
-    @Test
-    public void declared_parameter_names_does_not_include_superclass_parameters()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-        ComponentModel parent = mockComponentModel();
-
-        train_getPersistentFieldNames(parent);
-        train_getParameterNames(parent, "betty");
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        model.addParameter("fred", true, true, BindingConstants.PROP);
-        model.addParameter("wilma", true, true, BindingConstants.PROP);
-        model.addParameter("barney", true, true, BindingConstants.PROP);
-
-        assertEquals(model.getDeclaredParameterNames(), Arrays.asList("barney", "fred", "wilma"));
-        assertEquals(model.getParameterNames(), Arrays.asList("barney", "betty", "fred", "wilma"));
-
-        verify();
-    }
-
-    @Test
-    public void add_duplicate_parameter()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.addParameter("fred", true, true, BindingConstants.PROP);
-
-        try
-        {
-            // This also helps check that the comparison is caseless!
-
-            model.addParameter("Fred", true, true, BindingConstants.PROP);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Parameter 'Fred' of component org.example.components.Foo is already defined.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_parameter_by_name_with_no_parameters_defined()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertNull(model.getParameterModel("foo"));
-
-        verify();
-    }
-
-    @Test
-    public void get_unknown_parameter()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        model.addParameter("fred", true, true, BindingConstants.PROP);
-
-        assertNull(model.getParameterModel("barney"));
-
-        verify();
-    }
-
-    @Test
-    public void add_embedded()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-        Location l = mockLocation();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertTrue(model.getEmbeddedComponentIds().isEmpty());
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false, l);
-
-        assertEquals(fred.getId(), "fred");
-        assertEquals(fred.getComponentType(), "Fred");
-        assertFalse(fred.getInheritInformalParameters());
-        assertSame(fred.getLocation(), l);
-
-        MutableEmbeddedComponentModel barney = model.addEmbeddedComponent("barney", "Barney", COMPONENT_CLASS_NAME,
-                                                                          false, null);
-
-        assertEquals(model.getEmbeddedComponentIds(), Arrays.asList("barney", "fred"));
-
-        assertSame(model.getEmbeddedComponentModel("fred"), fred);
-        assertSame(model.getEmbeddedComponentModel("barney"), barney);
-
-        // Access by id is case insensitive
-
-        assertSame(model.getEmbeddedComponentModel("FRED"), fred);
-        assertSame(model.getEmbeddedComponentModel("BARNEY"), barney);
-
-        assertEquals(fred.toString(),
-                     "EmbeddedComponentModel[id=fred type=Fred class=org.example.components.Fred inheritInformals=false]");
-
-        verify();
-    }
-
-    @Test
-    public void add_embedded_component_with_duplicate_id()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.addEmbeddedComponent("fred", "Fred1", COMPONENT_CLASS_NAME, false, null);
-
-        try
-        {
-            model.addEmbeddedComponent("fred", "Fred2", COMPONENT_CLASS_NAME, false, null);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Embedded component 'fred' has already been defined for component class org.example.components.Foo.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void add_embedded_with_inherit_informal_parameters()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-        Location l = mockLocation();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertTrue(model.getEmbeddedComponentIds().isEmpty());
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, true, l);
-
-        assertTrue(fred.getInheritInformalParameters());
-
-        assertEquals(fred.toString(),
-                     "EmbeddedComponentModel[id=fred type=Fred class=org.example.components.Fred inheritInformals=true]");
-
-        verify();
-    }
-
-
-    @Test
-    public void add_embedded_is_case_insensitive()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.addEmbeddedComponent("fred", "Fred1", COMPONENT_CLASS_NAME, false, null);
-
-        try
-        {
-            model.addEmbeddedComponent("FRED", "Fred2", COMPONENT_CLASS_NAME, false, null);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Embedded component 'FRED' has already been defined for component class org.example.components.Foo.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void add_parameters_to_embedded()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false,
-                                                                        null);
-
-        assertTrue(fred.getParameterNames().isEmpty());
-
-        fred.addParameter("city", "bedrock");
-        fred.addParameter("job", "crane operator");
-
-        assertEquals(fred.getParameterNames(), Arrays.asList("city", "job"));
-
-        assertEquals(fred.getParameterValue("city"), "bedrock");
-
-        verify();
-    }
-
-    @Test
-    public void add_duplicate_parameters_to_embedded()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false,
-                                                                        null);
-
-        fred.addParameter("city", "bedrock");
-
-        try
-        {
-            fred.addParameter("city", "slateville");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "A value for parameter 'city' of embedded component fred (of component class org.example.components.Foo) has already been provided.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void mixin_names_is_initially_empty_list()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false,
-                                                                        null);
-
-        assertTrue(fred.getMixinClassNames().isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void mixin_class_names_remembered_in_order_added()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false,
-                                                                        null);
-
-        fred.addMixin("zip.zop.Zoom");
-        fred.addMixin("foo.bar.Baz");
-
-        assertEquals(fred.getMixinClassNames(), Arrays.asList("zip.zop.Zoom", "foo.bar.Baz"));
-
-        verify();
-    }
-
-    @Test
-    public void mixin_name_conflict()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        MutableEmbeddedComponentModel fred = model.addEmbeddedComponent("fred", "Fred", COMPONENT_CLASS_NAME, false,
-                                                                        null);
-
-        fred.addMixin("zip.zop.Zoom");
-
-        try
-        {
-            fred.addMixin("zip.zop.Zoom");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Mixin zip.zop.Zoom (for component fred) has already been defined.");
-        }
-
-        // Make sure it wasn't actually added.
-
-        assertEquals(fred.getMixinClassNames(), Arrays.asList("zip.zop.Zoom"));
-
-        verify();
-    }
-
-    @Test
-    public void get_persistent_field_names_when_none_defined()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertTrue(model.getPersistentFieldNames().isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void get_persistent_field_names_are_sorted()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertEquals(model.setFieldPersistenceStrategy("fred", "session"), "fred");
-        assertEquals(model.setFieldPersistenceStrategy("barney", "client"), "barney");
-
-        assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", "fred"));
-
-        verify();
-    }
-
-    @Test
-    public void get_persistent_field_names_reflects_parent_model()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertEquals(parent.setFieldPersistenceStrategy("wilma", "session"), "wilma");
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        assertEquals(model.setFieldPersistenceStrategy("fred", "session"), "fred");
-        assertEquals(model.setFieldPersistenceStrategy("barney", "client"), "barney");
-
-        assertEquals(model.getPersistentFieldNames(), Arrays.asList("barney", "fred", "wilma"));
-
-        verify();
-    }
-
-    @Test
-    public void persistent_field_names_allocated_in_subclasses_are_unique()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        assertEquals(parent.setFieldPersistenceStrategy("wilma", "session"), "wilma");
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        assertEquals(model.setFieldPersistenceStrategy("wilma", "session"), "wilma_0");
-
-        assertEquals(model.getPersistentFieldNames(), Arrays.asList("wilma", "wilma_0"));
-
-        verify();
-    }
-
-    @Test
-    public void get_persistent_field_defined_in_model()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.setFieldPersistenceStrategy("fred", "session");
-        model.setFieldPersistenceStrategy("barney", "client");
-
-        assertEquals(model.getFieldPersistenceStrategy("fred"), "session");
-        assertEquals(model.getFieldPersistenceStrategy("barney"), "client");
-
-        verify();
-    }
-
-    @Test
-    public void no_persistence_defined_for_field()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        try
-        {
-            model.getFieldPersistenceStrategy("someField");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "No field persistence strategy has been defined for field \'someField\'.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_persistent_field_defined_in_parent()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        parent.setFieldPersistenceStrategy("wilma", "parent");
-
-        model.setFieldPersistenceStrategy("fred", "session");
-
-        assertEquals(model.getFieldPersistenceStrategy("wilma"), "parent");
-
-        verify();
-    }
-
-    @Test
-    public void default_for_supports_informal_parameters_is_false()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertFalse(model.getSupportsInformalParameters());
-
-        model.enableSupportsInformalParameters();
-
-        assertTrue(model.getSupportsInformalParameters());
-
-        verify();
-    }
-
-    @Test
-    public void get_mixin_class_names_with_no_mixins()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-        ComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        assertTrue(model.getMixinClassNames().isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void get_mixin_class_names_mixes_with_parent_model()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        parent.addMixinClassName("Wilma");
-
-        MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        child.addMixinClassName("Fred");
-        child.addMixinClassName("Barney");
-
-        assertEquals(child.getMixinClassNames(), Arrays.asList("Barney", "Fred", "Wilma"));
-
-        verify();
-    }
-
-    @Test
-    public void get_parent_from_subclass()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        assertSame(child.getParentModel(), parent);
-        assertNull(parent.getParentModel());
-
-        verify();
-    }
-
-    @Test
-    public void set_and_get_meta()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.setMeta("fred", "flintstone");
-        model.setMeta("barney", "rubble");
-
-        assertEquals(model.getMeta("fred"), "flintstone");
-        assertEquals(model.getMeta("barney"), "rubble");
-
-        // Ensure case insensitive:
-
-        assertEquals(model.getMeta("FRED"), "flintstone");
-        assertEquals(model.getMeta("BARNEY"), "rubble");
-
-        verify();
-    }
-
-    @Test
-    public void get_meta_from_parent()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        parent.setMeta("fred", "flintstone");
-
-        assertEquals(child.getMeta("fred"), "flintstone");
-
-        verify();
-    }
-
-    @Test
-    public void parent_does_not_have_meta()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        parent.setMeta("fred", "flintstone");
-
-        assertNull(child.getMeta("wilma"));
-
-        verify();
-    }
-
-    @Test
-    public void child_meta_overrides_parent_meta()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        parent.setMeta("fred", "flintstone");
-        child.setMeta("fred", "mcmurray");
-
-        assertEquals(parent.getMeta("fred"), "flintstone");
-        assertEquals(child.getMeta("fred"), "mcmurray");
-
-        verify();
-    }
-
-    /**
-     * @since 5.0.19
-     */
-    @Test
-    public void does_not_handle_render_phase_and_no_parent()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-
-        assertFalse(model.getHandledRenderPhases().contains(BeginRender.class));
-
-        verify();
-    }
-
-    /**
-     * @since 5.0.19
-     */
-    @Test
-    public void handles_render_phase()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel model = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-
-        model.addRenderPhase(BeginRender.class);
-
-        assertTrue(model.getHandledRenderPhases().contains(BeginRender.class));
-
-        verify();
-    }
-
-    /**
-     * @since 5.0.19
-     */
-    @Test
-    public void parent_handles_render_phase()
-    {
-        Resource r = mockResource();
-        Logger logger = mockLogger();
-
-        replay();
-
-        MutableComponentModel parent = new MutableComponentModelImpl(CLASS_NAME, logger, r, null);
-        MutableComponentModel child = new MutableComponentModelImpl(CLASS_NAME, logger, r, parent);
-
-        parent.addRenderPhase(BeginRender.class);
-
-
-        assertTrue(child.getHandledRenderPhases().contains(BeginRender.class));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/pageload/CompositeRenderCommandTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/pageload/CompositeRenderCommandTest.java
deleted file mode 100644
index d95990b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/pageload/CompositeRenderCommandTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.pageload;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class CompositeRenderCommandTest extends InternalBaseTestCase
-{
-    @DataProvider
-    public Object[][] nyi_data()
-    {
-        RenderCommand push = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                queue.push(null);
-            }
-        };
-
-        RenderCommand startComponent = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                queue.startComponent(null);
-            }
-        };
-
-        RenderCommand endComponent = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                queue.endComponent();
-            }
-        };
-
-
-        return new Object[][] {
-                {
-                        push
-                },
-                {
-                        startComponent
-                },
-                {
-                        endComponent
-                }
-        };
-    }
-
-    @Test(dataProvider = "nyi_data")
-    public void render_queue_commands_nyi
-            (RenderCommand
-                    rc)
-    {
-        MarkupWriter writer = mockMarkupWriter();
-        RenderQueue queue = mockRenderQueue();
-
-        try
-        {
-            new CompositeRenderCommand(new RenderCommand[] { rc }).render(writer, queue);
-
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            // Don't care about the message.
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AjaxComponentInstanceEventResultProcessorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AjaxComponentInstanceEventResultProcessorTest.java
deleted file mode 100644
index 00f08e3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AjaxComponentInstanceEventResultProcessorTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.testng.annotations.Test;
-
-import java.io.IOException;
-
-public class AjaxComponentInstanceEventResultProcessorTest extends InternalBaseTestCase
-{
-    @Test
-    public void render_component_within_page() throws IOException
-    {
-        String nestedId = "foo.bar.baz";
-        String pageName = "Biff";
-
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        ComponentResources resources = mockComponentResources();
-        Component component = mockComponent();
-        Component pageComponent = mockComponent();
-
-        ComponentPageElement element = mockComponentPageElement();
-        ComponentEventResultProcessor master = mockComponentEventResultProcessor();
-
-        train_getComponentResources(component, resources);
-        train_getPage(resources, pageComponent);
-        train_getPageName(resources, pageName);
-        train_get(cache, pageName, page);
-        train_getNestedId(resources, nestedId);
-        train_getComponentElementByNestedId(page, nestedId, element);
-
-        master.processResultValue(element);
-
-        replay();
-
-        ComponentEventResultProcessor<Component> processor = new AjaxComponentInstanceEventResultProcessor(
-                cache, master);
-
-        processor.processResultValue(component);
-
-        verify();
-    }
-
-    @Test
-    public void render_complete_page_as_partial() throws IOException
-    {
-        String pageName = "Biff";
-
-        RequestPageCache cache = mockRequestPageCache();
-        ComponentResources resources = mockComponentResources();
-        Component component = mockComponent();
-        PageRenderQueue queue = mockPageRenderQueue();
-        ComponentEventResultProcessor master = mockComponentEventResultProcessor();
-
-        train_getComponentResources(component, resources);
-        train_getPage(resources, component);
-        train_getPageName(resources, pageName);
-
-        master.processResultValue(pageName);
-
-        replay();
-
-        ComponentEventResultProcessor<Component> processor = new AjaxComponentInstanceEventResultProcessor(
-                cache,
-                master);
-
-        processor.processResultValue(component);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AliasImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AliasImplTest.java
deleted file mode 100644
index 10500af..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AliasImplTest.java
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import org.apache.tapestry5.services.Alias;
-import org.apache.tapestry5.services.AliasManager;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class AliasImplTest extends InternalBaseTestCase
-{
-    private Map<Class, Object> emptyMap = Collections.emptyMap();
-
-    protected final AliasManager newAliasManager()
-    {
-        return newMock(AliasManager.class);
-    }
-
-    @Test
-    public void resolve_object_within_mode()
-    {
-        String mode = "papyrus";
-
-        AliasManager manager = newAliasManager();
-        AliasManager overridesManager = newAliasManager();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-
-        ObjectLocator locator = mockObjectLocator();
-        Runnable r = mockRunnable();
-
-        Map<Class, Object> configuration = newMap();
-        configuration.put(Runnable.class, r);
-
-        train_getAliasesForMode(manager, mode, configuration);
-        train_getAliasesForMode(overridesManager, mode, emptyMap);
-
-        replay();
-
-        Alias alias = new AliasImpl(manager, mode, overridesManager);
-
-        // Do not assume that infra and provider are the same;
-        // that's an implementation choice.
-
-        ObjectProvider provider = alias.getObjectProvider();
-
-        // Run through a couple of times to ensure that values are cached.
-        for (int i = 0; i < 2; i++)
-        {
-            Runnable actual = provider.provide(Runnable.class, annotationProvider, locator);
-
-            assertSame(actual, r);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void overrides_manager_has_precendence()
-    {
-        String mode = "papyrus";
-
-        AliasManager manager = newAliasManager();
-        AliasManager overridesManager = newAliasManager();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-
-        ObjectLocator locator = mockObjectLocator();
-        Runnable r = mockRunnable();
-        Runnable override = mockRunnable();
-
-        Map<Class, Object> configuration = newMap();
-        configuration.put(Runnable.class, r);
-
-        train_getAliasesForMode(manager, mode, configuration);
-
-        Map<Class, Object> overrideConfiguration = newMap();
-        configuration.put(Runnable.class, override);
-
-        train_getAliasesForMode(overridesManager, mode, overrideConfiguration);
-
-        replay();
-
-        Alias alias = new AliasImpl(manager, mode, overridesManager);
-
-        ObjectProvider provider = alias.getObjectProvider();
-
-        Runnable actual = provider.provide(Runnable.class, annotationProvider, locator);
-
-        assertSame(actual, override);
-
-        verify();
-    }
-
-    @Test
-    public void type_not_found_in_configuration()
-    {
-        String mode = "papyrus";
-
-        AliasManager manager = newAliasManager();
-        AliasManager overridesManager = newAliasManager();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-
-        ObjectLocator locator = mockObjectLocator();
-
-        train_getAliasesForMode(manager, mode, emptyMap);
-        train_getAliasesForMode(overridesManager, mode, emptyMap);
-
-        replay();
-
-        Alias alias = new AliasImpl(manager, mode, overridesManager);
-
-        // Do not assume that infra and provider are the same;
-        // that's an implementation choice.
-
-        ObjectProvider provider = alias.getObjectProvider();
-
-        assertNull(provider.provide(Runnable.class, annotationProvider, locator));
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AliasManagerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AliasManagerImplTest.java
deleted file mode 100644
index 57aaec5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AliasManagerImplTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.AliasContribution;
-import org.apache.tapestry5.services.AliasManager;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Map;
-
-public class AliasManagerImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void no_conflict()
-    {
-        Logger logger = mockLogger();
-        Runnable r = mockRunnable();
-
-        replay();
-
-        AliasContribution[] contributions =
-                { AliasContribution.create(String.class, "FRED"),
-                        AliasContribution.create(Runnable.class, r) };
-        Collection<AliasContribution> configuration = Arrays.asList(contributions);
-
-        AliasManager manager = new AliasManagerImpl(logger, configuration);
-
-        Map<Class, Object> map = manager.getAliasesForMode("foo");
-
-        assertEquals(map.size(), 2);
-        assertEquals(map.get(String.class), "FRED");
-        assertSame(map.get(Runnable.class), r);
-
-        verify();
-    }
-
-    @Test
-    public void first_entry_wins_on_conflict()
-    {
-        Logger logger = mockLogger();
-        Runnable r = mockRunnable();
-
-        logger
-                .error("Contribution FRED-CONFLICT (for type java.lang.String) conflicts with existing contribution FRED and has been ignored.");
-
-        replay();
-
-        AliasContribution[] contributions =
-                { AliasContribution.create(String.class, "FRED"),
-                        AliasContribution.create(String.class, "FRED-CONFLICT"),
-                        AliasContribution.create(Runnable.class, r) };
-        Collection<AliasContribution> configuration = Arrays.asList(contributions);
-
-        AliasManager manager = new AliasManagerImpl(logger, configuration);
-
-        Map<Class, Object> map = manager.getAliasesForMode("foo");
-
-        assertEquals(map.size(), 2);
-        assertEquals(map.get(String.class), "FRED");
-        assertSame(map.get(Runnable.class), r);
-
-        verify();
-    }
-
-    @Test
-    public void contributions_to_other_modes_are_ignored()
-    {
-        Logger logger = mockLogger();
-        Runnable r = mockRunnable();
-
-        replay();
-
-        AliasContribution[] contributions =
-                { AliasContribution.create(String.class, "FRED"),
-                        AliasContribution.create(String.class, "bar", "FRED-NON-CONFLICT"),
-                        AliasContribution.create(Runnable.class, r) };
-        Collection<AliasContribution> configuration = Arrays.asList(contributions);
-
-        AliasManager manager = new AliasManagerImpl(logger, configuration);
-
-        Map<Class, Object> map = manager.getAliasesForMode("foo");
-
-        assertEquals(map.size(), 2);
-        assertEquals(map.get(String.class), "FRED");
-        assertSame(map.get(Runnable.class), r);
-
-        verify();
-    }
-
-    @Test
-    public void mode_specific_contribution_overrides_general_contribution()
-    {
-        Logger logger = mockLogger();
-        Runnable r = mockRunnable();
-
-        replay();
-
-        AliasContribution[] contributions =
-                { AliasContribution.create(String.class, "FRED"),
-                        AliasContribution.create(String.class, "bar", "FRED-NON-CONFLICT"),
-                        AliasContribution.create(Runnable.class, r) };
-        Collection<AliasContribution> configuration = Arrays.asList(contributions);
-
-        AliasManager manager = new AliasManagerImpl(logger, configuration);
-
-        Map<Class, Object> map = manager.getAliasesForMode("BAR");
-
-        assertEquals(map.size(), 2);
-        assertEquals(map.get(String.class), "FRED-NON-CONFLICT");
-        assertSame(map.get(Runnable.class), r);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotatedPage.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotatedPage.java
deleted file mode 100644
index 85c45a5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotatedPage.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.annotations.SetupRender;
-
-public class AnnotatedPage
-{
-
-    @SetupRender
-    void beforeRender()
-    {
-    }
-
-    @SetupRender
-    boolean earlyRender(MarkupWriter writer)
-    {
-        return true;
-    }
-
-    void methodWithoutAnnotation()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java
deleted file mode 100644
index 8f17dc5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AnnotationDataTypeAnalyzerTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.services.DataTypeAnalyzer;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class AnnotationDataTypeAnalyzerTest extends TapestryTestCase
-{
-    private DataType mockDataType(String annotationValue)
-    {
-        DataType annotation = newMock(DataType.class);
-
-        expect(annotation.value()).andReturn(annotationValue).atLeastOnce();
-
-        return annotation;
-    }
-
-    @Test
-    public void annotation_absent()
-    {
-        PropertyAdapter adapter = mockPropertyAdapter();
-
-        train_getAnnotation(adapter, DataType.class, null);
-
-        replay();
-
-        DataTypeAnalyzer analyzer = new AnnotationDataTypeAnalyzer();
-
-        assertNull(analyzer.identifyDataType(adapter));
-
-        verify();
-    }
-
-    @Test
-    public void value_from_annotation()
-    {
-        String value = "password";
-        PropertyAdapter adapter = mockPropertyAdapter();
-
-        train_getAnnotation(adapter, DataType.class, mockDataType(value));
-
-        replay();
-
-        DataTypeAnalyzer analyzer = new AnnotationDataTypeAnalyzer();
-
-        assertEquals(analyzer.identifyDataType(adapter), value);
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
deleted file mode 100644
index df27034..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStateManagerImplTest.java
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.services.*;
-import org.easymock.EasyMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-import org.easymock.IAnswer;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class ApplicationStateManagerImplTest extends InternalBaseTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void get_from_configured_aso()
-    {
-        String strategyName = "ethereal";
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        ApplicationStateCreator<ReadOnlyBean> creator = mockApplicationStateCreator();
-        ReadOnlyBean aso = new ReadOnlyBean();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.singletonMap(asoClass,
-                new ApplicationStateContribution(strategyName, creator));
-
-        train_get(source, strategyName, strategy);
-
-        train_get(strategy, asoClass, creator, aso);
-
-        replay();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                null);
-
-        assertSame(manager.get(asoClass), aso);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void check_exists_when_null()
-    {
-        String strategyName = "ethereal";
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        ApplicationStateCreator<ReadOnlyBean> creator = mockApplicationStateCreator();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.singletonMap(asoClass,
-                new ApplicationStateContribution(strategyName, creator));
-
-        train_get(source, strategyName, strategy);
-        train_exists(strategy, asoClass, false);
-
-        replay();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                null);
-
-        assertFalse(manager.exists(asoClass));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void check_exists_when_true()
-    {
-        String strategyName = "ethereal";
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        ApplicationStateCreator<ReadOnlyBean> creator = mockApplicationStateCreator();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.singletonMap(asoClass,
-                new ApplicationStateContribution(strategyName, creator));
-
-        train_get(source, strategyName, strategy);
-        train_exists(strategy, asoClass, true);
-
-        replay();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                null);
-
-        assertTrue(manager.exists(asoClass));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void set_configured_aso()
-    {
-        String strategyName = "ethereal";
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        Object aso = new ReadOnlyBean();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.singletonMap(asoClass,
-                new ApplicationStateContribution(strategyName));
-
-        train_get(source, strategyName, strategy);
-
-        strategy.set(asoClass, aso);
-
-        replay();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                null);
-
-        manager.set(asoClass, aso);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void get_from_unconfigured_aso()
-    {
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        final Holder holder = new Holder();
-        ObjectLocator locator = mockObjectLocator();
-
-        train_get(source, ApplicationStateManagerImpl.DEFAULT_STRATEGY, strategy);
-
-        IAnswer answer = new IAnswer()
-        {
-            public Object answer() throws Throwable
-            {
-                ApplicationStateCreator creator = (ApplicationStateCreator) EasyMock
-                        .getCurrentArguments()[1];
-
-                Object aso = creator.create();
-
-                holder.put(aso);
-
-                return aso;
-            }
-        };
-
-        expect(strategy.get(eq(asoClass), isA(ApplicationStateCreator.class))).andAnswer(answer);
-
-        expect(locator.autobuild(EasyMock.isA(String.class), EasyMock.eq(asoClass))).andReturn(
-                new ReadOnlyBean());
-
-        replay();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.emptyMap();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                locator);
-
-        Object actual = manager.get(asoClass);
-
-        assertSame(actual, holder.get());
-
-        verify();
-    }
-
-    @Test
-    public void get_if_exists_and_it_doesnt()
-    {
-        String strategyName = "ethereal";
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        ApplicationStateCreator<ReadOnlyBean> creator = mockApplicationStateCreator();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.singletonMap(asoClass,
-                new ApplicationStateContribution(strategyName, creator));
-
-        train_get(source, strategyName, strategy);
-        train_exists(strategy, asoClass, false);
-
-        replay();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                null);
-
-        assertNull(manager.getIfExists(asoClass));
-
-        verify();
-    }
-
-    @Test
-    public void get_if_exists_when_it_does_exist()
-    {
-        String strategyName = "ethereal";
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-        ApplicationStatePersistenceStrategySource source = mockApplicationStatePersistenceStrategySource();
-        Class asoClass = ReadOnlyBean.class;
-        ApplicationStateCreator<ReadOnlyBean> creator = mockApplicationStateCreator();
-        ReadOnlyBean aso = new ReadOnlyBean();
-
-        Map<Class, ApplicationStateContribution> configuration = Collections.singletonMap(asoClass,
-                new ApplicationStateContribution(strategyName, creator));
-
-        train_get(source, strategyName, strategy);
-        train_exists(strategy, asoClass, true);
-        train_get(strategy, asoClass, creator, aso);
-
-        replay();
-
-        ApplicationStateManager manager = new ApplicationStateManagerImpl(configuration, source,
-                null);
-
-        assertSame(manager.getIfExists(asoClass), aso);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java
deleted file mode 100644
index 6556790..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ApplicationStatePersistenceStrategySourceImplTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategySource;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class ApplicationStatePersistenceStrategySourceImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void strategy_found()
-    {
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-
-        Map<String, ApplicationStatePersistenceStrategy> configuration = Collections.singletonMap(
-                "session",
-                strategy);
-
-        replay();
-
-        ApplicationStatePersistenceStrategySource source = new ApplicationStatePersistenceStrategySourceImpl(
-                configuration);
-
-        assertSame(strategy, source.get("session"));
-
-        verify();
-    }
-
-    @Test
-    public void not_found()
-    {
-        ApplicationStatePersistenceStrategy strategy = mockApplicationStatePersistenceStrategy();
-
-        Map<String, ApplicationStatePersistenceStrategy> configuration = newMap();
-
-        configuration.put("session", strategy);
-        configuration.put("application", strategy);
-
-        replay();
-
-        ApplicationStatePersistenceStrategySource source = new ApplicationStatePersistenceStrategySourceImpl(
-                configuration);
-
-        try
-        {
-            source.get("aether");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "No application state persistence strategy is available with name 'aether'. Available strategies: application, session.");
-        }
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetDispatcherTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetDispatcherTest.java
deleted file mode 100644
index 428a55f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetDispatcherTest.java
+++ /dev/null
@@ -1,305 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.apache.tapestry5.services.Dispatcher;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import static org.easymock.EasyMock.contains;
-import static org.easymock.EasyMock.eq;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletResponse;
-
-public class AssetDispatcherTest extends InternalBaseTestCase
-{
-    private static final String SMILEY_CLIENT_URL = "/assets/app1/pages/smiley.png";
-
-    private static final String SMILEY_PATH = "org/apache/tapestry5/integration/app1/pages/smiley.png";
-
-    private static final Resource SMILEY = new ClasspathResource(SMILEY_PATH);
-    private static final String APPLICATION_VERSION = "1.2.3";
-
-//    @Test
-//    public void not_an_asset_request() throws Exception
-//    {
-//        Request request = mockRequest();
-//
-//        train_getPath(request, "/foo/bar/Baz.gif");
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(null, null, null);
-//
-//        assertFalse(d.dispatch(request, null));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void unprotected_asset() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        train_getPath(request, SMILEY_CLIENT_URL);
-//
-//        train_toResourcePath(aliasManager, SMILEY_CLIENT_URL, SMILEY_PATH);
-//
-//        train_requiresDigest(cache, SMILEY, false);
-//
-//        train_getDateHeader(request, AssetDispatcher.IF_MODIFIED_SINCE_HEADER, -1);
-//
-//        streamer.streamResource(SMILEY);
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void protected_asset_without_an_extension() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        String clientURL = "/assets/app1/pages/smiley_png";
-//        String resourcePath = "org/apache/tapestry5/integration/app1/pages/smiley_png";
-//
-//        train_getPath(request, clientURL);
-//
-//        train_toResourcePath(aliasManager, clientURL, resourcePath);
-//
-//        train_requiresDigest(cache, new ClasspathResource(resourcePath), true);
-//
-//        response.sendError(eq(HttpServletResponse.SC_FORBIDDEN), contains(resourcePath));
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void protected_asset_with_incorrect_digest_in_url() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        String clientURL = "/assets/app1/pages/smiley.WRONG.png";
-//        String resourcePath = "org/apache/tapestry5/integration/app1/pages/smiley.WRONG.png";
-//
-//        train_getPath(request, clientURL);
-//
-//        train_toResourcePath(aliasManager, clientURL, resourcePath);
-//
-//        train_requiresDigest(cache, new ClasspathResource(resourcePath), true);
-//
-//        train_getDigest(cache, SMILEY, "RIGHT");
-//
-//        response.sendError(eq(HttpServletResponse.SC_FORBIDDEN), contains(SMILEY_PATH));
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void protected_asset_wth_correct_digest_in_url() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        String clientURL = RequestConstants.ASSET_PATH_PREFIX + "app1/pages/smiley.RIGHT.png";
-//        String resourcePath = "org/apache/tapestry5/integration/app1/pages/smiley.RIGHT.png";
-//
-//        train_getPath(request, clientURL);
-//
-//        train_toResourcePath(aliasManager, clientURL, resourcePath);
-//
-//        train_requiresDigest(cache, new ClasspathResource(resourcePath), true);
-//
-//        train_getDigest(cache, SMILEY, "RIGHT");
-//
-//        train_getDateHeader(request, AssetDispatcher.IF_MODIFIED_SINCE_HEADER, -1);
-//
-//        streamer.streamResource(SMILEY);
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    protected final void train_getDigest(ResourceCache cache, Resource resource, String digest)
-//    {
-//        expect(cache.getDigest(resource)).andReturn(digest).atLeastOnce();
-//    }
-//
-//    @Test
-//    public void protected_asset_without_digest() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        train_getPath(request, SMILEY_CLIENT_URL);
-//
-//        train_toResourcePath(aliasManager, SMILEY_CLIENT_URL, SMILEY_PATH);
-//
-//        train_requiresDigest(cache, SMILEY, true);
-//
-//        response.sendError(eq(HttpServletResponse.SC_FORBIDDEN), contains(SMILEY_PATH));
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void client_cache_upto_date() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        long now = System.currentTimeMillis();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        train_getPath(request, SMILEY_CLIENT_URL);
-//
-//        train_toResourcePath(aliasManager, SMILEY_CLIENT_URL, SMILEY_PATH);
-//
-//        train_requiresDigest(cache, SMILEY, false);
-//
-//        train_getDateHeader(request, AssetDispatcher.IF_MODIFIED_SINCE_HEADER, now);
-//
-//        train_getTimeModified(cache, SMILEY, now - 1000);
-//
-//        response.sendError(HttpServletResponse.SC_NOT_MODIFIED, "");
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void if_modified_since_header_not_readable() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        train_getPath(request, SMILEY_CLIENT_URL);
-//
-//        train_toResourcePath(aliasManager, SMILEY_CLIENT_URL, SMILEY_PATH);
-//
-//        train_requiresDigest(cache, SMILEY, false);
-//
-//        expect(request.getDateHeader(AssetDispatcher.IF_MODIFIED_SINCE_HEADER)).andThrow(
-//                new IllegalArgumentException("For testing."));
-//
-//        streamer.streamResource(SMILEY);
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-//
-//    @Test
-//    public void client_cache_out_of_date() throws Exception
-//    {
-//        Request request = mockRequest();
-//        Response response = mockResponse();
-//        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-//        ResourceCache cache = mockResourceCache();
-//        ResourceStreamer streamer = mockResourceStreamer();
-//        long now = System.currentTimeMillis();
-//        AssetResourceLocator locator = new AssetResourceLocatorImpl(aliasManager, cache, APPLICATION_VERSION, null, response);
-//
-//        train_getPath(request, SMILEY_CLIENT_URL);
-//
-//        train_toResourcePath(aliasManager, SMILEY_CLIENT_URL, SMILEY_PATH);
-//
-//        train_requiresDigest(cache, SMILEY, false);
-//
-//        train_getDateHeader(request, AssetDispatcher.IF_MODIFIED_SINCE_HEADER, now - 1000);
-//
-//        train_getTimeModified(cache, SMILEY, now + 1000);
-//
-//        streamer.streamResource(SMILEY);
-//
-//        replay();
-//
-//        Dispatcher d = new AssetDispatcher(streamer, cache, locator);
-//
-//        assertTrue(d.dispatch(request, response));
-//
-//        verify();
-//    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetInjectionProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetInjectionProviderTest.java
deleted file mode 100644
index f7686e5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetInjectionProviderTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.TransformField;
-import org.testng.annotations.Test;
-
-public class AssetInjectionProviderTest extends InternalBaseTestCase
-{
-    @Test
-    public void no_path_annotation()
-    {
-        SymbolSource symbolSource = mockSymbolSource();
-        AssetSource assetSource = mockAssetSource();
-        ObjectLocator locator = mockObjectLocator();
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-        TransformField field = newMock(TransformField.class);
-
-        String fieldName = "myField";
-
-        expect(ct.getField(fieldName)).andReturn(field);
-        expect(field.getAnnotation(Path.class)).andReturn(null);
-
-        replay();
-
-        InjectionProvider provider = new AssetInjectionProvider(symbolSource, assetSource);
-
-        assertFalse(provider.provideInjection(fieldName, String.class, locator, ct, model));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java
deleted file mode 100644
index 9ed0d6a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetObjectProviderTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.annotations.Path;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.AssetSource;
-import org.testng.annotations.Test;
-
-public class AssetObjectProviderTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void no_path_annotation()
-    {
-        AssetSource source = mockAssetSource();
-        ObjectLocator locator = mockObjectLocator();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        TypeCoercer typeCoercer = mockTypeCoercer();
-        SymbolSource symbolSource = mockSymbolSource();
-
-        train_getAnnotation(annotationProvider, Path.class, null);
-
-        replay();
-
-        ObjectProvider provider = new AssetObjectProvider(source, typeCoercer, symbolSource);
-
-        assertNull(provider.provide(Asset.class, annotationProvider, locator));
-
-        verify();
-    }
-
-    @Test
-    public void normal_conversion()
-    {
-        AssetSource source = mockAssetSource();
-        ObjectLocator locator = mockObjectLocator();
-        Asset asset = mockAsset();
-        String path = "${foo}";
-        String expanded = "foo/bar/baz.gif";
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        TypeCoercer typeCoercer = mockTypeCoercer();
-        Path pathAnnotation = mockPath();
-        SymbolSource symbolSource = mockSymbolSource();
-
-        train_getAnnotation(annotationProvider, Path.class, pathAnnotation);
-        train_value(pathAnnotation, path);
-        train_expandSymbols(symbolSource, path, expanded);
-        train_getAsset(source, null, expanded, null, asset);
-        train_coerce(typeCoercer, asset, Asset.class, asset);
-
-        replay();
-
-        ObjectProvider provider = new AssetObjectProvider(source, typeCoercer, symbolSource);
-
-        Asset result = provider.provide(Asset.class, annotationProvider, locator);
-
-        assertSame(result, asset);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java
deleted file mode 100644
index a435c59..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/AssetSourceImplTest.java
+++ /dev/null
@@ -1,235 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.AssetFactory;
-import org.apache.tapestry5.services.AssetSource;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Locale;
-import java.util.Map;
-
-public class AssetSourceImplTest extends InternalBaseTestCase
-{
-    private final Resource baseResource = new ClasspathResource(
-            "org/apache/tapestry5/internal/services/SimpleComponent.class");
-
-    private final Resource rootResource = new ClasspathResource("/");
-
-    @Test
-    public void relative_asset()
-    {
-        AssetFactory factory = mockAssetFactory();
-        ThreadLocale threadLocale = mockThreadLocale();
-        Asset asset = mockAsset();
-
-        Resource expectedResource = baseResource.forFile("SimpleComponent_en_GB.properties");
-
-        train_getRootResource(factory, rootResource);
-
-        train_createAsset(factory, expectedResource, asset);
-
-        Map<String, AssetFactory> configuration = Collections.singletonMap("classpath", factory);
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(threadLocale, configuration, null);
-
-        // First try creates it:
-
-        assertSame(source.getAsset(baseResource, "SimpleComponent.properties", Locale.UK), asset);
-
-        // Second try shows that it is cached
-
-        assertSame(source.getAsset(baseResource, "SimpleComponent.properties", Locale.UK), asset);
-
-        verify();
-    }
-
-    @Test
-    public void get_classpath_asset()
-    {
-        AssetFactory factory = mockAssetFactory();
-        ThreadLocale threadLocale = mockThreadLocale();
-        Asset asset = mockAsset();
-
-        Resource expectedResource = baseResource.forFile("SimpleComponent_en_GB.properties");
-
-        train_getRootResource(factory, rootResource);
-
-        train_createAsset(factory, expectedResource, asset);
-
-        Map<String, AssetFactory> configuration = Collections.singletonMap("classpath", factory);
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(threadLocale, configuration, null);
-
-        // First try creates it:
-
-        assertSame(source.getClasspathAsset("org/apache/tapestry5/internal/services/SimpleComponent.properties",
-                Locale.UK), asset);
-
-        verify();
-    }
-
-    @Test
-    public void get_expanded_asset()
-    {
-        AssetFactory factory = mockAssetFactory();
-        Asset asset = mockAsset();
-        SymbolSource symbolSource = mockSymbolSource();
-
-        Resource expectedResource = baseResource.forFile("SimpleComponent.properties");
-
-        train_getRootResource(factory, rootResource);
-
-        train_createAsset(factory, expectedResource, asset);
-
-        train_expandSymbols(symbolSource, "${path}/SimpleComponent.properties",
-                "org/apache/tapestry5/internal/services/SimpleComponent.properties");
-
-        Map<String, AssetFactory> configuration = Collections.singletonMap("classpath", factory);
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(null, configuration, symbolSource);
-
-        // First try creates it:
-
-        assertSame(source.getExpandedAsset("${path}/SimpleComponent.properties"), asset);
-
-        verify();
-
-    }
-
-    @Test
-    public void get_classpath_asset_for_unspecified_locale()
-    {
-        AssetFactory factory = mockAssetFactory();
-        ThreadLocale threadLocale = mockThreadLocale();
-        Asset asset = mockAsset();
-        Locale locale = Locale.UK;
-
-        Resource expectedResource = baseResource.forFile("SimpleComponent_en_GB.properties");
-
-        train_getRootResource(factory, rootResource);
-
-        train_createAsset(factory, expectedResource, asset);
-
-        Map<String, AssetFactory> configuration = Collections.singletonMap("classpath", factory);
-
-        train_getLocale(threadLocale, locale);
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(threadLocale, configuration, null);
-
-        assertSame(source.getClasspathAsset("org/apache/tapestry5/internal/services/SimpleComponent.properties"), asset);
-
-        verify();
-    }
-
-    @Test
-    public void absolute_asset_with_known_prefix()
-    {
-        AssetFactory factory = mockAssetFactory();
-        ThreadLocale threadLocale = mockThreadLocale();
-        Asset asset = mockAsset();
-
-        Resource expectedResource = rootResource
-                .forFile("org/apache/tapestry5/internal/services/SimpleComponent_en_GB.properties");
-
-        train_getRootResource(factory, rootResource);
-
-        train_createAsset(factory, expectedResource, asset);
-
-        Map<String, AssetFactory> configuration = Collections.singletonMap("classpath", factory);
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(threadLocale, configuration, null);
-
-        assertSame(source.getAsset(baseResource,
-                "classpath:org/apache/tapestry5/internal/services/SimpleComponent.properties", Locale.UK), asset);
-
-        // Check that a leading slash is not a problem:
-
-        assertSame(source.getAsset(baseResource,
-                "classpath:/org/apache/tapestry5/internal/services/SimpleComponent.properties", Locale.UK), asset);
-
-        verify();
-    }
-
-    @Test
-    public void unknown_asset_prefix()
-    {
-        ThreadLocale threadLocale = mockThreadLocale();
-
-        Map<String, AssetFactory> configuration = Collections.emptyMap();
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(threadLocale, configuration, null);
-
-        try
-        {
-            source.getAsset(baseResource,
-                    "classpath:org/apache/tapestry5/internal/services/SimpleComponent.properties", Locale.UK);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Unknown prefix for asset path 'classpath:org/apache/tapestry5/internal/services/SimpleComponent.properties'.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void missing_resource()
-    {
-        ThreadLocale threadLocale = mockThreadLocale();
-
-        Map<String, AssetFactory> configuration = Collections.emptyMap();
-
-        replay();
-
-        AssetSource source = new AssetSourceImpl(threadLocale, configuration, null);
-
-        try
-        {
-            source.getAsset(baseResource, "DoesNotExist.properties", Locale.UK);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Unable to locate asset 'classpath:org/apache/tapestry5/internal/services/DoesNotExist.properties' (the file does not exist).");
-        }
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BarInterface.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BarInterface.java
deleted file mode 100644
index 8eca5b5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BarInterface.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public interface BarInterface
-{
-    void bar();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
deleted file mode 100644
index e865662..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanBlockSourceImplTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.services.BeanBlockContribution;
-import org.apache.tapestry5.services.BeanBlockOverrideSource;
-import org.apache.tapestry5.services.BeanBlockSource;
-import org.testng.annotations.Test;
-
-import java.util.Collection;
-import java.util.Collections;
-
-public class BeanBlockSourceImplTest extends InternalBaseTestCase
-{
-    private static final Collection<BeanBlockContribution> EMPTY_CONFIGURATION = Collections.emptyList();
-
-    @Test
-    public void found_display_block()
-    {
-        Block block = mockBlock();
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        BeanBlockContribution contribution = new BeanBlockContribution("mydata", "MyPage",
-                                                                       "mydisplay", false);
-        Collection<BeanBlockContribution> configuration = newList(contribution);
-
-        train_get(cache, "MyPage", page);
-        train_getBlock(page, "mydisplay", block);
-
-        replay();
-
-        BeanBlockSource source = new BeanBlockSourceImpl(cache, createBeanBlockOverrideSource(cache), configuration);
-
-        // Check case insensitivity while we are at it.
-        assertTrue(source.hasDisplayBlock("MyData"));
-        Block actual = source.getDisplayBlock("MyData");
-
-        assertSame(actual, block);
-
-        verify();
-    }
-
-    @Test
-    public void found_display_block_in_override()
-    {
-        Block block = mockBlock();
-        RequestPageCache cache = mockRequestPageCache();
-        BeanBlockOverrideSource overrideSource = mockBeanBlockOverrideSource();
-        String datatype = "MyData";
-
-        expect(overrideSource.hasDisplayBlock(datatype)).andReturn(true);
-        expect(overrideSource.getDisplayBlock(datatype)).andReturn(block);
-
-        replay();
-
-        BeanBlockSource source = new BeanBlockSourceImpl(cache, overrideSource, EMPTY_CONFIGURATION);
-
-        // Check case insensitivity while we are at it.
-        assertTrue(source.hasDisplayBlock(datatype));
-        Block actual = source.getDisplayBlock(datatype);
-
-        assertSame(actual, block);
-
-        verify();
-    }
-
-    protected final BeanBlockOverrideSource mockBeanBlockOverrideSource()
-    {
-        return newMock(BeanBlockOverrideSource.class);
-    }
-
-    private BeanBlockOverrideSource createBeanBlockOverrideSource(RequestPageCache cache)
-    {
-        return new BeanBlockOverrideSourceImpl(cache, EMPTY_CONFIGURATION);
-    }
-
-    @Test
-    public void display_block_not_found()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Collection<BeanBlockContribution> configuration = newList();
-
-        replay();
-
-        BeanBlockSource source = new BeanBlockSourceImpl(cache, createBeanBlockOverrideSource(cache), configuration);
-
-        try
-        {
-            assertFalse(source.hasDisplayBlock("MyData"));
-            source.getDisplayBlock("MyData");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "There is no defined way to display data of type \'MyData\'. Make a contribution to the BeanBlockSource service for this type.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void edit_block_not_found()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Collection<BeanBlockContribution> configuration = newList();
-
-        replay();
-
-        BeanBlockSource source = new BeanBlockSourceImpl(cache, createBeanBlockOverrideSource(cache), configuration);
-
-        try
-        {
-            source.getEditBlock("MyData");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "There is no defined way to edit data of type \'MyData\'.  Make a contribution to the BeanBlockSource service for this type.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void found_edit_block()
-    {
-        Block block = mockBlock();
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        BeanBlockContribution contribution = new BeanBlockContribution("mydata", "MyPage",
-                                                                       "mydisplay", true);
-        Collection<BeanBlockContribution> configuration = newList(contribution);
-
-        train_get(cache, "MyPage", page);
-        train_getBlock(page, "mydisplay", block);
-
-        replay();
-
-        BeanBlockSource source = new BeanBlockSourceImpl(cache, createBeanBlockOverrideSource(cache), configuration);
-
-        // Check case insensitivity while we are at it.
-        Block actual = source.getEditBlock("MyData");
-
-        assertSame(actual, block);
-
-        verify();
-    }
-
-    @Test
-    public void found_edit_block_in_override()
-    {
-        Block block = mockBlock();
-        RequestPageCache cache = mockRequestPageCache();
-        BeanBlockOverrideSource overrideSource = mockBeanBlockOverrideSource();
-        String datatype = "MyData";
-
-        expect(overrideSource.getEditBlock(datatype)).andReturn(block);
-
-        replay();
-
-        BeanBlockSource source = new BeanBlockSourceImpl(cache, overrideSource, EMPTY_CONFIGURATION);
-
-        Block actual = source.getEditBlock(datatype);
-
-        assertSame(actual, block);
-
-        verify();
-    }
-
-    protected final void train_getBlock(Page page, String blockId, Block block)
-    {
-        ComponentPageElement element = mockComponentPageElement();
-        train_getRootElement(page, element);
-
-        expect(element.getBlock(blockId)).andReturn(block);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
deleted file mode 100644
index 85aecbe..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BeanModelSourceImplTest.java
+++ /dev/null
@@ -1,683 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.BeanModel;
-import org.apache.tapestry5.beaneditor.PropertyModel;
-import org.apache.tapestry5.beaneditor.RelativePosition;
-import org.apache.tapestry5.internal.PropertyOrderBean;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.BeanModelSource;
-import org.easymock.EasyMock;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-/**
- * Tests for the bean editor model source itself, as well as the model classes.
- */
-public class BeanModelSourceImplTest extends InternalBaseTestCase
-{
-    private BeanModelSource source;
-
-    @BeforeClass
-    public void setup()
-    {
-        source = getObject(BeanModelSource.class, null);
-    }
-
-    /**
-     * Tests defaults for property names, labels and conduits.
-     */
-    @Test
-    public void default_model_for_bean()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertSame(model.getBeanType(), SimpleBean.class);
-
-        // Based on order of the getter methods (no longer alphabetical)
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
-
-        assertEquals(model.toString(),
-                "BeanModel[org.apache.tapestry5.internal.services.SimpleBean properties:firstName, lastName, age]");
-
-        PropertyModel age = model.get("age");
-
-        assertEquals(age.getLabel(), "Age");
-        assertSame(age.getPropertyType(), int.class);
-        assertEquals(age.getDataType(), "number");
-
-        PropertyModel firstName = model.get("firstName");
-
-        assertEquals(firstName.getLabel(), "First Name");
-        assertEquals(firstName.getPropertyType(), String.class);
-        assertEquals(firstName.getDataType(), "text");
-
-        assertEquals(model.get("lastName").getLabel(), "Last Name");
-
-        PropertyConduit conduit = model.get("lastName").getConduit();
-
-        SimpleBean instance = new SimpleBean();
-
-        instance.setLastName("Lewis Ship");
-
-        assertEquals(conduit.get(instance), "Lewis Ship");
-
-        conduit.set(instance, "TapestryDude");
-
-        assertEquals(instance.getLastName(), "TapestryDude");
-
-        // Now, one with some type coercion.
-
-        age.getConduit().set(instance, "40");
-
-        assertEquals(instance.getAge(), 40);
-
-        verify();
-    }
-
-    @Test
-    public void include_properties()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertSame(model.getBeanType(), SimpleBean.class);
-
-        model.include("lastname", "firstname");
-
-        // Based on order of the getter methods (no longer alphabetical)
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("lastName", "firstName"));
-
-        verify();
-    }
-
-    @Test
-    public void add_before()
-    {
-        Messages messages = mockMessages();
-        PropertyConduit conduit = mockPropertyConduit();
-
-        Class propertyType = String.class;
-
-        stub_contains(messages, false);
-
-        expect(conduit.getPropertyType()).andReturn(propertyType).atLeastOnce();
-        expect(conduit.getAnnotation(EasyMock.isA(Class.class))).andStubReturn(null);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
-
-        // Note the use of case insensitivity here.
-
-        PropertyModel property = model.add(RelativePosition.BEFORE, "lastname", "middleInitial", conduit);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "middleInitial", "lastName", "age"));
-
-        assertEquals(property.getPropertyName(), "middleInitial");
-        assertSame(property.getConduit(), conduit);
-        assertSame(property.getPropertyType(), propertyType);
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-2202
-     */
-    @Test
-    public void new_instance()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel<SimpleBean> model = source.create(SimpleBean.class, true, messages);
-
-        SimpleBean s1 = model.newInstance();
-
-        assertNotNull(s1);
-
-        SimpleBean s2 = model.newInstance();
-
-        assertNotNull(s2);
-        assertNotSame(s1, s2);
-
-        verify();
-    }
-
-    @Test
-    public void add_before_using_default_conduit()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        model.exclude("firstname");
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("lastName", "age"));
-
-        // Note the use of case insensitivity here.
-
-        PropertyModel property = model.add(RelativePosition.BEFORE, "lastname", "firstName");
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
-
-        assertEquals(property.getPropertyName(), "firstName");
-        assertSame(property.getPropertyType(), String.class);
-
-        verify();
-    }
-
-    @Test
-    public void add_after()
-    {
-        Messages messages = mockMessages();
-        PropertyConduit conduit = mockPropertyConduit();
-
-        Class propertyType = String.class;
-
-        stub_contains(messages, false);
-
-        expect(conduit.getPropertyType()).andReturn(propertyType).atLeastOnce();
-
-        expect(conduit.getAnnotation(EasyMock.isA(Class.class))).andStubReturn(null);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
-
-        PropertyModel property = model.add(RelativePosition.AFTER, "firstname", "middleInitial", conduit);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "middleInitial", "lastName", "age"));
-
-        assertEquals(property.getPropertyName(), "middleInitial");
-        assertSame(property.getConduit(), conduit);
-        assertSame(property.getPropertyType(), propertyType);
-
-        verify();
-    }
-
-    @Test
-    public void filtering_out_read_only_properties()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(ReadOnlyBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("value"));
-
-        model = source.create(ReadOnlyBean.class, false, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("value", "readOnly"));
-
-        verify();
-    }
-
-    @Test
-    public void non_text_property()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(EnumBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("token"));
-
-        assertEquals(model.get("token").getDataType(), "enum");
-
-        verify();
-    }
-
-    @Test
-    public void add_duplicate_property_name_is_failure()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        try
-        {
-            model.add("age");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Bean editor model for org.apache.tapestry5.internal.services.SimpleBean already contains a property model for property \'age\'.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void unknown_property_name()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        try
-        {
-            model.get("frobozz");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Bean editor model for org.apache.tapestry5.internal.services.SimpleBean does not contain a property named \'frobozz\'.");
-
-            assertListsEquals(ex.getAvailableValues().getValues(), "age", "firstName", "lastName");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void unknown_property_id()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        model.add("shrub.foo()", null);
-
-        try
-        {
-            model.getById("frobozz");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Bean editor model for org.apache.tapestry5.internal.services.SimpleBean does not contain a property with id \'frobozz\'.");
-
-            assertListsEquals(ex.getAvailableValues().getValues(), "age", "firstName", "lastName", "shrubfoo");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_added_property_by_name()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        PropertyModel pm = model.add("shrub.foo()", null);
-
-        assertSame(model.get("Shrub.Foo()"), pm);
-
-        verify();
-    }
-
-    @Test
-    public void get_added_property_by_id()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        PropertyModel pm = model.add("shrub.foo()", null);
-
-        assertSame(model.getById("ShrubFoo"), pm);
-
-        verify();
-
-    }
-
-    @Test
-    public void order_via_annotation()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(StoogeBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("larry", "moe", "shemp", "curly"));
-
-        verify();
-    }
-
-    @Test
-    public void edit_property_label()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages).get("age").label("Decrepitude").model();
-
-        assertEquals(model.get("age").getLabel(), "Decrepitude");
-
-        verify();
-    }
-
-    @Test
-    public void label_from_component_messages()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        train_contains(messages, "age-label", true);
-        train_get(messages, "age-label", "Decrepitude");
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertEquals(model.get("age").getLabel(), "Decrepitude");
-
-        verify();
-    }
-
-    @Test
-    public void array_type_bean()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(StringArrayBean.class, true, messages);
-
-        // There's not editor for string arrays yet, so it won't show up normally.
-
-        PropertyModel propertyModel = model.add("array");
-
-        assertSame(propertyModel.getPropertyType(), String[].class);
-
-        String[] value =
-        { "foo", "bar" };
-
-        StringArrayBean bean = new StringArrayBean();
-
-        PropertyConduit conduit = propertyModel.getConduit();
-
-        conduit.set(bean, value);
-
-        assertSame(bean.getArray(), value);
-
-        assertSame(conduit.get(bean), value);
-
-        verify();
-    }
-
-    @Test
-    public void composite_bean()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        train_contains(messages, "simpleage-label", true);
-        train_get(messages, "simpleage-label", "Years of Age");
-
-        replay();
-
-        BeanModel model = source.create(CompositeBean.class, true, messages);
-
-        // No editor for CompositeBean, so this will be empty.
-
-        assertEquals(model.getPropertyNames(), Collections.emptyList());
-
-        // There's not editor for string arrays yet, so it won't show up normally.
-
-        PropertyModel firstName = model.add("simple.firstName");
-
-        assertEquals(firstName.getLabel(), "First Name");
-
-        PropertyModel age = model.add("simple.age");
-        assertEquals(age.getLabel(), "Years of Age");
-
-        CompositeBean bean = new CompositeBean();
-
-        firstName.getConduit().set(bean, "Fred");
-        age.getConduit().set(bean, "97");
-
-        assertEquals(bean.getSimple().getFirstName(), "Fred");
-        assertEquals(bean.getSimple().getAge(), 97);
-
-        bean.getSimple().setAge(24);
-
-        assertEquals(age.getConduit().get(bean), new Integer(24));
-
-        verify();
-    }
-
-    @Test
-    public void default_properties_exclude_write_only()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(WriteOnlyBean.class, false, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("readOnly", "readWrite"));
-
-        verify();
-    }
-
-    @Test
-    public void add_synthetic_property()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        PropertyModel property = model.add("placeholder", null);
-
-        assertFalse(property.isSortable());
-        assertSame(property.getPropertyType(), Object.class);
-        assertEquals(property.getLabel(), "Placeholder");
-
-        verify();
-    }
-
-    @Test
-    public void add_missing_property_is_failure()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        try
-        {
-            model.add("doesNotExist");
-            unreachable();
-        }
-        catch (PropertyExpressionException ex)
-        {
-            assertMessageContains(ex, "does not contain", "doesNotExist");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void exclude_property()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertSame(model.exclude("age"), model);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName"));
-
-        verify();
-    }
-
-    @Test
-    public void exclude_unknown_property_is_noop()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertSame(model.exclude("frobozz"), model);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
-
-        verify();
-    }
-
-    @Test
-    public void nonvisual_properties_are_excluded()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(NonVisualBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("name"));
-
-        verify();
-    }
-
-    @Test
-    public void reorder()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(SimpleBean.class, true, messages);
-
-        assertSame(model.getBeanType(), SimpleBean.class);
-
-        // Based on order of the getter methods (no longer alphabetical)
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("firstName", "lastName", "age"));
-
-        // Testing a couple of things here:
-        // 1) case insensitive
-        // 2) unreferenced property names added to the end.
-
-        model.reorder("lastname", "AGE");
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("lastName", "age", "firstName"));
-
-        verify();
-    }
-
-    @Test
-    public void reoder_from_annotation()
-    {
-        Messages messages = mockMessages();
-
-        stub_contains(messages, false);
-
-        replay();
-
-        BeanModel model = source.create(PropertyOrderBean.class, true, messages);
-
-        assertEquals(model.getPropertyNames(), Arrays.asList("third", "first", "second"));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Bedrock.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Bedrock.java
deleted file mode 100644
index 9493a1e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Bedrock.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class Bedrock
-{
-    public String toName(boolean fred)
-    {
-        return fred ? "Fred" : "Barney";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java
deleted file mode 100644
index 69ecbe1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BindingSourceImplTest.java
+++ /dev/null
@@ -1,214 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.services.BindingFactory;
-import org.apache.tapestry5.services.BindingSource;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class BindingSourceImplTest extends InternalBaseTestCase
-{
-    private final StringInterner interner = new StringInternerImpl();
-
-    @Test
-    public void expression_has_no_prefix()
-    {
-        BindingFactory factory = mockBindingFactory();
-        Binding binding = mockBinding();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        Location l = mockLocation();
-
-        String defaultPrefix = "def";
-        String description = "descrip";
-        String expression = "full expression";
-
-        train_newBinding(factory, description, container, component, expression, l, binding);
-
-        replay();
-
-        Map<String, BindingFactory> map = newMap();
-
-        map.put(defaultPrefix, factory);
-
-        BindingSource source = new BindingSourceImpl(map, interner);
-
-        Binding actual = source.newBinding(
-                description,
-                container,
-                component,
-                defaultPrefix,
-                expression,
-                l);
-
-        assertSame(actual, binding);
-
-        verify();
-    }
-
-    @Test
-    public void expression_prefix_not_in_configuration()
-    {
-        BindingFactory factory = mockBindingFactory();
-        Binding binding = mockBinding();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        Location l = mockLocation();
-
-        String defaultPrefix = "def";
-        String description = "descrip";
-        String expression = "javascript:not-a-known-prefix";
-
-        train_newBinding(factory, description, container, component, expression, l, binding);
-
-        replay();
-
-        Map<String, BindingFactory> map = newMap();
-
-        map.put(defaultPrefix, factory);
-
-        BindingSource source = new BindingSourceImpl(map, interner);
-
-        Binding actual = source.newBinding(
-                description,
-                container,
-                component,
-                defaultPrefix,
-                expression,
-                l);
-
-        assertSame(actual, binding);
-
-        verify();
-    }
-
-    @Test
-    public void known_prefix()
-    {
-        BindingFactory factory = mockBindingFactory();
-        Binding binding = mockBinding();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        Location l = mockLocation();
-
-        String defaultPrefix = "literal";
-        String description = "descrip";
-
-        // The "prop:" prefix is stripped off ...
-        train_newBinding(factory, description, container, component, "myproperty", l, binding);
-
-        replay();
-
-        Map<String, BindingFactory> map = newMap();
-
-        map.put("prop", factory);
-
-        BindingSource source = new BindingSourceImpl(map, interner);
-
-        Binding actual = source.newBinding(
-                description,
-                container,
-                component,
-                defaultPrefix,
-                "prop:myproperty",
-                l);
-
-        assertSame(actual, binding);
-
-        verify();
-    }
-
-    @Test
-    public void factory_throws_exception()
-    {
-        BindingFactory factory = mockBindingFactory();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        Location l = mockLocation();
-        Throwable t = new RuntimeException("Simulated failure.");
-
-        String defaultPrefix = "def";
-        String description = "descrip";
-        String expression = "full expression";
-
-        factory.newBinding(description, container, component, expression, l);
-        setThrowable(t);
-
-        replay();
-
-        Map<String, BindingFactory> map = newMap();
-
-        map.put(defaultPrefix, factory);
-
-        BindingSource source = new BindingSourceImpl(map, interner);
-
-        try
-        {
-            source.newBinding(description, container, component, defaultPrefix, expression, l);
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertTrue(ex.getMessage().contains(
-                    "Could not convert 'full expression' into a component parameter binding"));
-            assertTrue(ex.getMessage().contains(t.getMessage()));
-            assertSame(ex.getLocation(), l);
-            assertSame(ex.getCause(), t);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void empty_parameter_binding()
-    {
-        BindingFactory factory = mockBindingFactory();
-        ComponentResources container = mockComponentResources();
-        ComponentResources component = mockComponentResources();
-        Location l = mockLocation();
-
-        String defaultPrefix = "def";
-        String description = "wilma";
-        String expression = "";
-
-        replay();
-
-        Map<String, BindingFactory> map = newMap();
-
-        map.put(defaultPrefix, factory);
-
-        BindingSource source = new BindingSourceImpl(map, interner);
-
-        try
-        {
-            source.newBinding(description, container, component, defaultPrefix, expression, l);
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(ex.getMessage(), "Parameter 'wilma' must have a non-empty binding.");
-            assertSame(ex.getLocation(), l);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BlockInjectionProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BlockInjectionProviderTest.java
deleted file mode 100644
index b511c82..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/BlockInjectionProviderTest.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.annotations.Id;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class BlockInjectionProviderTest extends TapestryTestCase
-{
-    @Test
-    public void not_type_block()
-    {
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-        ObjectLocator locator = mockObjectLocator();
-
-        replay();
-
-        InjectionProvider provider = new BlockInjectionProvider();
-
-        assertFalse(provider.provideInjection("myfield", Object.class, locator, ct, model));
-
-        verify();
-    }
-
-    protected final Id newId()
-    {
-        return newMock(Id.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CheckFieldType.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CheckFieldType.java
deleted file mode 100644
index e9371a7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CheckFieldType.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-public class CheckFieldType
-{
-    private boolean _privateField;
-
-    private final Map _map = null;
-
-    public boolean isPrivateField()
-    {
-        return _privateField;
-    }
-
-    public void setPrivateField(boolean privateField)
-    {
-        _privateField = privateField;
-    }
-
-    public Map getMap()
-    {
-        return _map;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
deleted file mode 100644
index 44468d4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetAliasManagerImplTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.services.assets.AssetPathConstructorImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.apache.tapestry5.services.Request;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class ClasspathAssetAliasManagerImplTest extends InternalBaseTestCase
-{
-    private static final String APP_VERSION = "1.2.3";
-
-    public Map<String, String> configuration()
-    {
-        Map<String, String> configuration = CollectionFactory.newMap();
-
-        configuration.put("tapestry", "org/apache/tapestry5/");
-        configuration.put("tapestry-internal", "org/apache/tapestry5/internal/");
-        configuration.put("mylib/", "com/example/mylib/");
-
-        return configuration;
-    }
-
-    @Test
-    public void slash_not_allowed_as_alias()
-    {
-        Map<String, String> configuration = CollectionFactory.newMap();
-
-        configuration.put("old/style", "com/myco/old/style/library");
-
-        try
-        {
-            new ClasspathAssetAliasManagerImpl(null, configuration);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "change the ComponentClassAsssetAliasManager contribution for 'old/style'.");
-        }
-    }
-
-    @Test
-    public void get_mappings()
-    {
-        // Notice how all the trailing slashes (which are tolerated but not wanted)
-        // have been removed.
-
-        Map<String, String> expected = CollectionFactory.newCaseInsensitiveMap();
-
-        expected.put("tapestry", "org/apache/tapestry5");
-        expected.put("tapestry-internal", "org/apache/tapestry5/internal");
-        expected.put("mylib", "com/example/mylib");
-
-        ClasspathAssetAliasManager manager = new ClasspathAssetAliasManagerImpl(null, configuration());
-
-        assertEquals(manager.getMappings(), expected);
-    }
-
-    @Test(dataProvider = "to_client_url_data")
-    public void to_client_url(String resourcePath, String expectedClientURL)
-    {
-        Request request = mockRequest();
-
-        train_getContextPath(request, "/ctx");
-
-        replay();
-
-        ClasspathAssetAliasManager manager = new ClasspathAssetAliasManagerImpl(new AssetPathConstructorImpl(request,
-                APP_VERSION), configuration());
-
-        String expectedPath = "/ctx" + RequestConstants.ASSET_PATH_PREFIX + APP_VERSION + "/" + expectedClientURL;
-        assertEquals(manager.toClientURL(resourcePath), expectedPath);
-
-        verify();
-    }
-
-    @Test
-    public void failure_if_path_not_in_mapped_alias_folder()
-    {
-        ClasspathAssetAliasManager manager = new ClasspathAssetAliasManagerImpl(null, configuration());
-
-        try
-        {
-            manager.toClientURL("org/example/icons/flag.gif");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertMessageContains(ex, "Unable to create a client URL for classpath resource org/example/icons/flag.gif");
-
-            assertListsEquals(ex.getAvailableValues().getValues(), "com/example/mylib", "org/apache/tapestry5",
-                    "org/apache/tapestry5/internal");
-        }
-    }
-
-    @DataProvider
-    public Object[][] to_client_url_data()
-    {
-        return new Object[][]
-        {
-        { "com/example/mylib/Foo.bar", "mylib/Foo.bar" },
-        { "com/example/mylib/nested/Foo.bar", "mylib/nested/Foo.bar" },
-        { "org/apache/tapestry5/internal/Foo.bar", "tapestry-internal/Foo.bar" },
-        { "org/apache/tapestry5/Foo.bar", "tapestry/Foo.bar" }, };
-    }
-
-    @Test(dataProvider = "to_resource_path_data")
-    public void to_resource_path(String clientURL, String expectedResourcePath)
-    {
-        ClasspathAssetAliasManager manager = new ClasspathAssetAliasManagerImpl(null, configuration());
-
-        assertEquals(manager.toResourcePath(clientURL), expectedResourcePath);
-    }
-
-    @DataProvider
-    public Object[][] to_resource_path_data()
-    {
-        Object[][] data = to_client_url_data();
-
-        for (Object[] pair : data)
-        {
-            Object buffer = pair[0];
-            pair[0] = RequestConstants.ASSET_PATH_PREFIX + pair[1];
-            pair[1] = buffer;
-        }
-
-        return data;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java
deleted file mode 100644
index a010e84..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClasspathAssetFactoryTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.services.AssetFactory;
-import org.apache.tapestry5.services.ClasspathAssetAliasManager;
-import org.testng.annotations.Test;
-
-public class ClasspathAssetFactoryTest extends InternalBaseTestCase
-{
-    private final IdentityAssetPathConverter converter = new IdentityAssetPathConverter();
-
-    @Test
-    public void asset_client_URL_is_cached()
-    {
-        ResourceCache cache = mockResourceCache();
-
-        Resource r = new ClasspathResource("foo/Bar.txt");
-
-        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-
-        train_requiresDigest(cache, r, false);
-
-        String expectedClientURL = "/context/asset/foo/Bar.txt";
-
-        train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
-
-        replay();
-
-        ClasspathAssetFactory factory = new ClasspathAssetFactory(cache, aliasManager,
-                                                                  converter);
-
-        Asset asset = factory.createAsset(r);
-
-        assertEquals(asset.toClientURL(), expectedClientURL);
-
-        // Now, to check the cache:
-
-        assertEquals(asset.toClientURL(), expectedClientURL);
-
-        verify();
-
-        // Now, to test cache clearing:
-        train_requiresDigest(cache, r, false);
-
-        train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
-
-        replay();
-
-        factory.objectWasInvalidated();
-
-        assertEquals(asset.toClientURL(), expectedClientURL);
-
-        verify();
-    }
-
-    @Test
-    public void simple_asset_client_URL()
-    {
-        ResourceCache cache = mockResourceCache();
-        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-
-        Resource r = new ClasspathResource("foo/Bar.txt");
-
-        train_requiresDigest(cache, r, false);
-
-        String expectedClientURL = "/context/asset/foo/Bar.txt";
-
-        train_toClientURL(aliasManager, "foo/Bar.txt", expectedClientURL);
-
-        replay();
-
-        AssetFactory factory = new ClasspathAssetFactory(cache, aliasManager, new IdentityAssetPathConverter());
-
-        Asset asset = factory.createAsset(r);
-
-        assertSame(asset.getResource(), r);
-        assertEquals(asset.toClientURL(), expectedClientURL);
-        assertEquals(asset.toString(), expectedClientURL);
-
-        verify();
-    }
-
-    @Test
-    public void protected_asset_client_URL()
-    {
-        ResourceCache cache = mockResourceCache();
-        ClasspathAssetAliasManager aliasManager = mockClasspathAssetAliasManager();
-
-        Resource r = new ClasspathResource("foo/Bar.txt");
-
-        train_requiresDigest(cache, r, true);
-
-        expect(cache.getDigest(r)).andReturn("ABC123");
-
-        String expectedClientURL = "/context/asset/foo/Bar.ABC123.txt";
-
-        train_toClientURL(aliasManager, "foo/Bar.ABC123.txt", expectedClientURL);
-
-        replay();
-
-        AssetFactory factory = new ClasspathAssetFactory(cache, aliasManager, new IdentityAssetPathConverter());
-
-        Asset asset = factory.createAsset(r);
-
-        assertSame(asset.getResource(), r);
-        assertEquals(asset.toClientURL(), expectedClientURL);
-        assertEquals(asset.toString(), expectedClientURL);
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientBehaviorSupportImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientBehaviorSupportImplTest.java
deleted file mode 100644
index 0df21d6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientBehaviorSupportImplTest.java
+++ /dev/null
@@ -1,143 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class ClientBehaviorSupportImplTest extends TapestryTestCase
-{
-    @Test
-    public void no_changes()
-    {
-        ClientBehaviorSupportImpl setup = new ClientBehaviorSupportImpl(null, null);
-
-        setup.commit();
-    }
-
-    @Test
-    public void add_links()
-    {
-        Link link1 = mockLink("/link1");
-        JavaScriptSupport js = mockJavaScriptSupport();
-
-        js.addInitializerCall("linkZone", new JSONObject("linkId", "client1", "zoneId", "zone1", "url", "/link1"));
-
-        replay();
-
-        ClientBehaviorSupportImpl setup = new ClientBehaviorSupportImpl(js, null);
-
-        setup.linkZone("client1", "zone1", link1);
-
-        setup.commit();
-
-        verify();
-    }
-
-    @Test
-    public void add_zones()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-        Environment environment = mockEnvironment();
-
-        expect(environment.peek(FormSupport.class)).andReturn(null).atLeastOnce();
-
-        js.addInitializerCall("zone", new JSONObject("element", "client1"));
-        js.addInitializerCall("zone", new JSONObject("element", "client2"));
-
-        replay();
-
-        ClientBehaviorSupportImpl setup = new ClientBehaviorSupportImpl(js, environment);
-
-        setup.addZone("client1", null, null);
-        setup.addZone("client2", null, null);
-
-        verify();
-    }
-
-    @Test
-    public void add_zone_inside_form()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-        Environment environment = mockEnvironment();
-        FormSupport fs = mockFormSupport();
-
-        expect(environment.peek(FormSupport.class)).andReturn(fs).atLeastOnce();
-
-        expect(fs.getClientId()).andReturn("myform");
-        expect(fs.getFormComponentId()).andReturn("MyPage.myform");
-
-        JSONObject expected = new JSONObject(String.format(
-                "{element:'client1', parameters:{'%s': 'myform', '%s': 'MyPage.myform' }}",
-                RequestConstants.FORM_CLIENTID_PARAMETER, RequestConstants.FORM_COMPONENTID_PARAMETER));
-
-        js.addInitializerCall("zone", expected);
-
-        replay();
-
-        ClientBehaviorSupportImpl setup = new ClientBehaviorSupportImpl(js, environment);
-
-        setup.addZone("client1", null, null);
-
-        verify();
-    }
-
-    @Test
-    public void zones_with_functions()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-        Environment environment = mockEnvironment();
-
-        expect(environment.peek(FormSupport.class)).andReturn(null).atLeastOnce();
-
-        js.addInitializerCall("zone", new JSONObject("{'element':'client1', 'show':'showme' }"));
-        js.addInitializerCall("zone", new JSONObject("{'element':'client2', 'update':'updateme' }"));
-
-        replay();
-
-        ClientBehaviorSupportImpl setup = new ClientBehaviorSupportImpl(js, environment);
-
-        setup.addZone("client1", "showme", null);
-        setup.addZone("client2", null, "updateme");
-
-        verify();
-    }
-
-    @Test
-    public void zone_function_names_are_converted_to_lower_case()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-        Environment environment = mockEnvironment();
-
-        expect(environment.peek(FormSupport.class)).andReturn(null).atLeastOnce();
-
-        js.addInitializerCall("zone", new JSONObject("{'element':'client1', 'show':'showme' }"));
-        js.addInitializerCall("zone", new JSONObject("{'element':'client2', 'update':'updateme' }"));
-
-        replay();
-
-        ClientBehaviorSupportImpl setup = new ClientBehaviorSupportImpl(js, environment);
-
-        setup.addZone("client1", "ShowMe", null);
-        setup.addZone("client2", null, "UpdateMe");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientDataEncoderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientDataEncoderTest.java
deleted file mode 100644
index ac3ff49..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientDataEncoderTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.ClientDataSink;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.io.EOFException;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.Map;
-
-public class ClientDataEncoderTest extends InternalBaseTestCase
-{
-    private ClientDataEncoder encoder;
-
-    @BeforeClass
-    public void setup()
-    {
-        encoder = getService(ClientDataEncoder.class);
-    }
-
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void round_trip_is_equal() throws Exception
-    {
-        Map input = CollectionFactory.newMap();
-
-        input.put("fred", "flintstone");
-        input.put("barney", "rubble");
-
-        ClientDataSink sink = encoder.createSink();
-
-        sink.getObjectOutputStream().writeObject(input);
-
-        String clientData = sink.getClientData();
-
-        ObjectInputStream ois = encoder.decodeClientData(clientData);
-
-        Map output = (Map) ois.readObject();
-
-        assertEquals(output, input);
-        assertNotSame(output, input);
-    }
-
-    @Test
-    public void checks_for_eof() throws Exception
-    {
-        String[] values = { "fred", "barney", "wilma" };
-
-        ClientDataSink sink = encoder.createSink();
-
-        ObjectOutputStream os = sink.getObjectOutputStream();
-
-        for (String value : values)
-            os.writeObject(value);
-
-        os.close();
-
-        String clientData = sink.getClientData();
-
-        ObjectInputStream ois = encoder.decodeClientData(clientData);
-
-        for (int i = 0; i < 3; i++)
-        {
-            String value = (String) ois.readObject();
-
-            assertEquals(value, values[i]);
-        }
-
-        try
-        {
-            ois.readObject();
-            fail("Unreachable.");
-        }
-        catch (EOFException ex)
-        {
-            // Expected.
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java
deleted file mode 100644
index 46a7db8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ClientPersistentFieldStorageImplTest.java
+++ /dev/null
@@ -1,283 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.util.Holder;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.services.ClientDataEncoder;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.Request;
-import org.easymock.EasyMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-import org.easymock.IAnswer;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class ClientPersistentFieldStorageImplTest extends InternalBaseTestCase
-{
-    private ClientDataEncoder clientDataEncoder;
-
-    @BeforeClass
-    public void setup()
-    {
-        clientDataEncoder = getService(ClientDataEncoder.class);
-    }
-
-    @Test
-    public void no_client_data_in_request()
-    {
-        Request request = mockRequest(null);
-        Link link = mockLink();
-
-        replay();
-
-        ClientPersistentFieldStorage storage = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        // Should do nothing.
-
-        storage.updateLink(link);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void store_and_restore_a_change()
-    {
-        Request request = mockRequest(null);
-        Link link = mockLink();
-        final Holder<String> holder = Holder.create();
-
-        String pageName = "Foo";
-        String componentId = "bar.baz";
-        String fieldName = "biff";
-        Object value = 99;
-
-        // Use an IAnswer to capture the value.
-
-        link.addParameter(eq(ClientPersistentFieldStorageImpl.PARAMETER_NAME), isA(String.class));
-        setAnswer(new IAnswer<Void>()
-        {
-            public Void answer() throws Throwable
-            {
-                String base64 = (String) EasyMock.getCurrentArguments()[1];
-
-                holder.put(base64);
-
-                return null;
-            }
-        });
-
-        replay();
-
-        ClientPersistentFieldStorage storage1 = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        storage1.postChange(pageName, componentId, fieldName, value);
-
-        List<PersistentFieldChange> changes1 = newList(storage1.gatherFieldChanges(pageName));
-
-        storage1.updateLink(link);
-
-        verify();
-
-        System.out.println(holder.get());
-
-        assertEquals(changes1.size(), 1);
-        PersistentFieldChange change1 = changes1.get(0);
-
-        assertEquals(change1.getComponentId(), componentId);
-        assertEquals(change1.getFieldName(), fieldName);
-        assertEquals(change1.getValue(), value);
-
-        // Now more training ...
-
-        train_getParameter(request, ClientPersistentFieldStorageImpl.PARAMETER_NAME, holder.get());
-
-        replay();
-
-        ClientPersistentFieldStorage storage2 = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        List<PersistentFieldChange> changes2 = newList(storage2.gatherFieldChanges(pageName));
-
-        verify();
-
-        assertEquals(changes2.size(), 1);
-        PersistentFieldChange change2 = changes2.get(0);
-
-        assertEquals(change2.getComponentId(), componentId);
-        assertEquals(change2.getFieldName(), fieldName);
-        assertEquals(change2.getValue(), value);
-
-        assertNotSame(change1, change2);
-    }
-
-    @Test
-    public void multiple_changes()
-    {
-        Request request = mockRequest(null);
-        Link link = mockLink();
-
-        String pageName = "Foo";
-        String componentId = "bar.baz";
-
-        link.addParameter(eq(ClientPersistentFieldStorageImpl.PARAMETER_NAME), isA(String.class));
-
-        replay();
-
-        ClientPersistentFieldStorage storage = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        for (int k = 0; k < 3; k++)
-        {
-            for (int i = 0; i < 20; i++)
-            {
-                // Force some cache collisions ...
-
-                storage.postChange(pageName, componentId, "field" + i, i * k);
-            }
-        }
-
-        storage.postChange(pageName, null, "field", "foo");
-        storage.postChange(pageName, null, "field", "bar");
-
-        storage.updateLink(link);
-
-        verify();
-    }
-
-    @Test
-    public void null_value_is_a_remove()
-    {
-        Request request = mockRequest(null);
-        Link link = mockLink();
-
-        String pageName = "Foo";
-        String componentId = "bar.baz";
-        String fieldName = "woops";
-
-        replay();
-
-        ClientPersistentFieldStorage storage = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        storage.postChange(pageName, componentId, fieldName, 99);
-        storage.postChange(pageName, componentId, fieldName, null);
-
-        storage.updateLink(link);
-
-        assertTrue(storage.gatherFieldChanges(pageName).isEmpty());
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1475
-     */
-    @Test
-    public void discard_changes()
-    {
-        Request request = mockRequest(null);
-        Link link = mockLink();
-
-        String pageName = "Foo";
-        String componentId = "bar.baz";
-        String fieldName = "woops";
-
-        replay();
-
-        ClientPersistentFieldStorage storage = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        storage.postChange(pageName, componentId, fieldName, 99);
-
-        storage.discardChanges(pageName);
-
-        storage.updateLink(link);
-
-        assertTrue(storage.gatherFieldChanges(pageName).isEmpty());
-
-        verify();
-    }
-
-
-    @Test
-    public void value_not_serializable()
-    {
-        Request request = mockRequest(null);
-
-        Object badBody = new Object()
-        {
-            @Override
-            public String toString()
-            {
-                return "<BadBoy>";
-            }
-        };
-
-        replay();
-
-        ClientPersistentFieldStorage storage = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        try
-        {
-            storage.postChange("Foo", "bar.baz", "woops", badBody);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "State persisted on the client must be serializable, but <BadBoy> does not implement the Serializable interface.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void corrupt_client_data()
-    {
-        // A cut-n-paste from some previous output, with the full value significantly truncated.
-        Request request = mockRequest("H4sIAAAAAAAAAEWQsUoDQRCGJxdDTEwRU2hlZ71pBQ");
-
-        replay();
-
-        ClientPersistentFieldStorage storage = new ClientPersistentFieldStorageImpl(request, clientDataEncoder);
-
-        try
-        {
-            storage.postChange("Foo", "bar.baz", "woops", 99);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), ServicesMessages.corruptClientState());
-            assertNotNull(ex.getCause());
-        }
-
-        verify();
-    }
-
-    protected final Request mockRequest(String clientData)
-    {
-        Request request = mockRequest();
-
-        train_getParameter(request, ClientPersistentFieldStorageImpl.PARAMETER_NAME, clientData);
-
-        return request;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComplexObject.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComplexObject.java
deleted file mode 100644
index f56a45c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComplexObject.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class ComplexObject
-{
-    private int nestedIndex;
-
-    public NestedObject get(int index)
-    {
-        switch (index)
-        {
-            case 0:
-                return new NestedObject("zero");
-
-            default:
-                return new NestedObject("one");
-        }
-    }
-
-    public int getNestedIndex()
-    {
-        return nestedIndex;
-    }
-
-    public void setNestedIndex(int nestedIndex)
-    {
-        this.nestedIndex = nestedIndex;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java
deleted file mode 100644
index 42c15c0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentClassResolverImplTest.java
+++ /dev/null
@@ -1,905 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassNameLocator;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.LibraryMapping;
-import org.easymock.EasyMock;
-import static org.easymock.EasyMock.isA;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-public class ComponentClassResolverImplTest extends InternalBaseTestCase
-{
-    private static final String APP_ROOT_PACKAGE = "org.example.app";
-
-    private static final String CORE_PREFIX = "core";
-
-    private static final String CORE_ROOT_PACKAGE = "org.apache.tapestry5.corelib";
-
-    private static final String LIB_PREFIX = "lib";
-
-    private static final String LIB_ROOT_PACKAGE = "org.example.lib";
-
-    private ComponentClassResolverImpl create(Logger logger, ComponentInstantiatorSource source,
-            ClassNameLocator locator, LibraryMapping... mappings)
-    {
-        List<LibraryMapping> list = Arrays.asList(mappings);
-
-        return new ComponentClassResolverImpl(logger, source, locator, APP_ROOT_PACKAGE, "Start", list);
-    }
-
-    private Logger compliantLogger()
-    {
-        Logger logger = mockLogger();
-
-        logger.info(EasyMock.isA(String.class));
-
-        EasyMock.expectLastCall().atLeastOnce();
-
-        return logger;
-    }
-
-    @Test
-    public void simple_page_name()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.SimplePage";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("SimplePage"), className);
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1923
-     */
-    @Test
-    public void get_page_names()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", APP_ROOT_PACKAGE + ".pages.SimplePage",
-                APP_ROOT_PACKAGE + ".pages.nested.Other", APP_ROOT_PACKAGE + ".pages.nested.NestedPage",
-                APP_ROOT_PACKAGE + ".pages.nested.NestedIndex");
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        List<String> pageNames = resolver.getPageNames();
-
-        assertListsEquals(pageNames, "SimplePage", "nested/Index", "nested/Other", "nested/Page");
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1541
-     */
-    @Test
-    public void page_name_matches_containing_folder_name()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.admin.product.ProductAdmin";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("admin/product/ProductAdmin"), className);
-
-        verify();
-    }
-
-    @Test
-    public void canonicalize_existing_page_name()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.SimplePage";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.canonicalizePageName("simplepage"), "SimplePage");
-
-        verify();
-    }
-
-    @Test
-    public void canonicalize_start_page()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.HomePage";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        List<LibraryMapping> mappings = Arrays.asList();
-
-        ComponentClassResolver resolver = new ComponentClassResolverImpl(logger, source, locator, APP_ROOT_PACKAGE,
-                "HomePage", mappings);
-
-        assertEquals(resolver.canonicalizePageName("HomePage"), "HomePage");
-        assertEquals(resolver.canonicalizePageName(""), "HomePage");
-        assertTrue(resolver.isPageName("HomePage"));
-
-        verify();
-    }
-
-    @Test
-    public void page_name_in_subfolder()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.subfolder.NestedPage";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("subfolder/NestedPage"), className);
-
-        verify();
-    }
-
-    @Test
-    public void lots_of_prefixes_and_suffixes_stripped()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.admin.edit.AdminUserEdit";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("admin/edit/User"), className);
-        assertEquals(resolver.resolvePageNameToClassName("admin/edit/AdminUserEdit"), className);
-
-        verify();
-    }
-
-    @Test
-    public void page_in_subfolder()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.subfolder.NestedPage";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("subfolder/NestedPage"), className);
-
-        verify();
-    }
-
-    @Test
-    public void subfolder_name_as_classname_prefix_is_stripped()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.foo.FooBar";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("foo/Bar"), className);
-
-        verify();
-    }
-
-    @Test
-    public void core_prefix_stripped_from_exception_message()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, CORE_ROOT_PACKAGE + ".pages", CORE_ROOT_PACKAGE + ".pages.Fred",
-                CORE_ROOT_PACKAGE + ".pages.Barney");
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", APP_ROOT_PACKAGE + ".pages.Wilma",
-                APP_ROOT_PACKAGE + ".pages.Betty");
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        try
-        {
-            resolver.resolvePageNameToClassName("Unknown");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertEquals(ex.getMessage(), "Unable to resolve \'Unknown\' to a page class name.");
-            assertEquals(ex.getAvailableValues().toString(), "AvailableValues[Page names: Barney, Betty, Fred, Wilma]");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void is_page_name()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.SimplePage";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertTrue(resolver.isPageName("SimplePage"));
-        assertTrue(resolver.isPageName("simplepage"));
-        assertFalse(resolver.isPageName("UnknownPage"));
-
-        verify();
-    }
-
-    @Test
-    public void index_page_name_at_root()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        String className = APP_ROOT_PACKAGE + ".pages.Index";
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertTrue(resolver.isPageName("Index"));
-        assertTrue(resolver.isPageName(""));
-
-        verify();
-    }
-
-    @Test
-    public void is_page_name_for_core_page()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-
-        String className = CORE_ROOT_PACKAGE + ".pages.MyCorePage";
-
-        train_locateComponentClassNames(locator, CORE_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        // Can look like an application page, but still resolves to the core library class name.
-
-        assertTrue(resolver.isPageName("MyCorePage"));
-
-        // Or we can give it its true name
-
-        assertTrue(resolver.isPageName("core/mycorepage"));
-
-        assertFalse(resolver.isPageName("UnknownPage"));
-
-        verify();
-    }
-
-    protected final ClassNameLocator newClassNameLocator()
-    {
-        ClassNameLocator locator = newMock(ClassNameLocator.class);
-
-        stub_locateComponentClassNames(locator);
-
-        return locator;
-    }
-
-    private void stub_locateComponentClassNames(ClassNameLocator locator)
-    {
-        Collection<String> noMatches = Collections.emptyList();
-
-        expect(locator.locateClassNames(isA(String.class))).andStubReturn(noMatches);
-    }
-
-    protected final void train_locateComponentClassNames(ClassNameLocator locator, String packageName,
-            String... classNames)
-    {
-        expect(locator.locateClassNames(packageName)).andReturn(Arrays.asList(classNames));
-    }
-
-    @Test
-    public void class_name_to_simple_page_name()
-    {
-        String className = APP_ROOT_PACKAGE + ".pages.SimplePage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageClassNameToPageName(className), "SimplePage");
-
-        verify();
-    }
-
-    /**
-     * All of the caches are handled identically, so we just test the pages for caching.
-     */
-    @Test
-    public void resolved_page_names_are_cached()
-    {
-        String pageClassName = APP_ROOT_PACKAGE + ".pages.SimplePage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", pageClassName);
-
-        replay();
-
-        ComponentClassResolverImpl resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolvePageNameToClassName("SimplePage"), pageClassName);
-
-        verify();
-
-        // No more training, because it's already cached.
-
-        replay();
-
-        assertEquals(resolver.resolvePageNameToClassName("SimplePage"), pageClassName);
-
-        verify();
-
-        // After clearing the cache, redoes the work.
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", pageClassName);
-        stub_locateComponentClassNames(locator);
-
-        replay();
-
-        resolver.objectWasInvalidated();
-
-        assertEquals(resolver.resolvePageNameToClassName("SimplePage"), pageClassName);
-
-        verify();
-    }
-
-    @Test
-    public void page_found_in_core_lib()
-    {
-        String className = CORE_ROOT_PACKAGE + ".pages.MyCorePage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, CORE_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageNameToClassName("MyCorePage"), className);
-
-        verify();
-    }
-
-    @Test
-    public void page_class_name_resolved_to_core_page()
-    {
-        String className = CORE_ROOT_PACKAGE + ".pages.MyCorePage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, CORE_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageClassNameToPageName(className), "core/MyCorePage");
-
-        verify();
-    }
-
-    @Test
-    public void page_found_in_library()
-    {
-        String className = LIB_ROOT_PACKAGE + ".pages.MyLibPage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, LIB_ROOT_PACKAGE);
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, LIB_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(LIB_PREFIX,
-                LIB_ROOT_PACKAGE), new LibraryMapping(CORE_PREFIX, CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageNameToClassName("lib/MyLibPage"), className);
-
-        verify();
-    }
-
-    @Test
-    public void slashes_trimmed_from_library_prefix()
-    {
-        String className = LIB_ROOT_PACKAGE + ".pages.MyLibPage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, LIB_ROOT_PACKAGE);
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, LIB_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(LIB_PREFIX,
-                LIB_ROOT_PACKAGE), new LibraryMapping(CORE_PREFIX, CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageNameToClassName("lib/MyLibPage"), className);
-
-        verify();
-    }
-
-    @Test
-    public void lookup_by_logical_name_is_case_insensitive()
-    {
-        String className = LIB_ROOT_PACKAGE + ".pages.MyLibPage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, LIB_ROOT_PACKAGE);
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, LIB_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(LIB_PREFIX,
-                LIB_ROOT_PACKAGE), new LibraryMapping(CORE_PREFIX, CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageNameToClassName("lib/MyLibPage"), className);
-
-        verify();
-    }
-
-    @Test
-    public void name_stripping_includes_library_folder()
-    {
-        String className = LIB_ROOT_PACKAGE + ".pages.LibPage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, LIB_ROOT_PACKAGE);
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, LIB_ROOT_PACKAGE + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(LIB_PREFIX,
-                LIB_ROOT_PACKAGE), new LibraryMapping(CORE_PREFIX, CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageNameToClassName("lib/Page"), className);
-
-        verify();
-    }
-
-    @Test
-    public void class_name_does_not_resolve_to_page_name()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = mockLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        String className = LIB_ROOT_PACKAGE + ".pages.LibPage";
-
-        try
-        {
-            resolver.resolvePageClassNameToPageName(className);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Unable to resolve class name " + className + " to a logical page name.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void page_name_to_canonicalize_does_not_exist()
-    {
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".pages", APP_ROOT_PACKAGE + ".pages.Start");
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        try
-        {
-            resolver.canonicalizePageName("MissingPage");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertEquals(ex.getMessage(), "Unable to resolve 'MissingPage' to a known page name.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void class_name_not_in_a_pages_package()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = mockLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        String className = CORE_ROOT_PACKAGE + ".foo.CorePage";
-
-        try
-        {
-            resolver.resolvePageClassNameToPageName(className);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Unable to resolve class name " + className + " to a logical page name.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void multiple_mappings_for_same_prefix()
-    {
-        String secondaryLibPackage = "org.examples.addon.lib";
-        String className = secondaryLibPackage + ".pages.MyLibPage";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_packages(source, LIB_ROOT_PACKAGE);
-        train_for_packages(source, secondaryLibPackage);
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, secondaryLibPackage + ".pages", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(LIB_PREFIX,
-                LIB_ROOT_PACKAGE), new LibraryMapping(LIB_PREFIX, secondaryLibPackage), new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        assertEquals(resolver.resolvePageNameToClassName("lib/MyLibPage"), className);
-
-        verify();
-    }
-
-    private void train_for_packages(ComponentInstantiatorSource source, String packageName)
-    {
-        source.addPackage(packageName + ".pages");
-        source.addPackage(packageName + ".components");
-        source.addPackage(packageName + ".mixins");
-        source.addPackage(packageName + ".base");
-    }
-
-    /**
-     * The logic for searching is pretty much identical for both components and pages, so even a cursory test of
-     * component types should nail it.
-     */
-    @Test
-    public void simple_component_type()
-    {
-        String className = APP_ROOT_PACKAGE + ".components.SimpleComponent";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".components", className);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolveComponentTypeToClassName("SimpleComponent"), className);
-
-        verify();
-    }
-
-    /**
-     * Likewise for mixins; it's all just setup for a particular method.
-     */
-
-    @Test
-    public void simple_mixin_type()
-    {
-        String expectedClassName = APP_ROOT_PACKAGE + ".mixins.SimpleMixin";
-
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = compliantLogger();
-
-        train_for_app_packages(source);
-
-        train_locateComponentClassNames(locator, APP_ROOT_PACKAGE + ".mixins", expectedClassName);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator);
-
-        assertEquals(resolver.resolveMixinTypeToClassName("SimpleMixin"), expectedClassName);
-
-        verify();
-    }
-
-    @Test
-    public void mixin_type_not_found()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = mockLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        try
-        {
-            resolver.resolveMixinTypeToClassName("SimpleMixin");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertMessageContains(ex, "Unable to resolve 'SimpleMixin' to a mixin class name.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void component_type_not_found()
-    {
-        ComponentInstantiatorSource source = mockComponentInstantiatorSource();
-        ClassNameLocator locator = newClassNameLocator();
-        Logger logger = mockLogger();
-
-        train_for_packages(source, CORE_ROOT_PACKAGE);
-        train_for_app_packages(source);
-
-        replay();
-
-        ComponentClassResolver resolver = create(logger, source, locator, new LibraryMapping(CORE_PREFIX,
-                CORE_ROOT_PACKAGE));
-
-        try
-        {
-            resolver.resolveComponentTypeToClassName("SimpleComponent");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertTrue(ex.getMessage().contains("Unable to resolve 'SimpleComponent' to a component class name."));
-        }
-
-        verify();
-    }
-
-    private void train_for_app_packages(ComponentInstantiatorSource source)
-    {
-        train_for_packages(source, APP_ROOT_PACKAGE);
-    }
-
-    @Test
-    public void common_package_name()
-    {
-        List<String> packageNames = CollectionFactory.newList("org.example.app.main", "org.example.app.sub");
-
-        assertEquals(ComponentClassResolverImpl.findCommonPackageName(packageNames), "org.example.app");
-    }
-
-    @Test
-    public void common_package_name_for_single_package()
-    {
-        List<String> packageNames = CollectionFactory.newList("org.example.app.main");
-
-        assertEquals(ComponentClassResolverImpl.findCommonPackageName(packageNames), "org.example.app.main");
-    }
-
-    @Test
-    public void expect_failure_when_no_common_package()
-    {
-        List<String> packageNames = CollectionFactory.newList("org.example.app.main", "org.demo.app.sub");
-
-        // "org" isn't good enough, we expect at least two terms.
-
-        try
-        {
-
-            ComponentClassResolverImpl.findCommonPackageNameForFolder("fred", packageNames);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Package names for library folder 'fred' (org.demo.app.sub, org.example.app.main) can not be reduced to a common base package (of at least two terms).");
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImplTest.java
deleted file mode 100644
index f757915..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentDefaultProviderImplTest.java
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.FieldTranslator;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.BindingSource;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.FieldTranslatorSource;
-import org.testng.annotations.Test;
-
-public class ComponentDefaultProviderImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void default_label_key_exists()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentResources container = mockComponentResources();
-        Messages messages = mockMessages();
-
-        String componentId = "myfield";
-        String key = componentId + "-label";
-        String message = "My Lovely Field";
-
-        train_getId(resources, componentId);
-        train_getContainerResources(resources, container);
-        train_getMessages(container, messages);
-        train_contains(messages, key, true);
-        train_get(messages, key, message);
-
-        replay();
-
-        ComponentDefaultProvider provider = new ComponentDefaultProviderImpl(null, null, null, null, null);
-
-        assertSame(provider.defaultLabel(resources), message);
-
-        verify();
-    }
-
-    @Test
-    public void default_label_key_missing()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentResources container = mockComponentResources();
-        Messages messages = mockMessages();
-
-        String componentId = "myField";
-        String key = componentId + "-label";
-
-        train_getId(resources, componentId);
-        train_getContainerResources(resources, container);
-        train_getMessages(container, messages);
-        train_contains(messages, key, false);
-
-        replay();
-
-        ComponentDefaultProvider provider = new ComponentDefaultProviderImpl(null, null, null, null, null);
-
-        assertEquals(provider.defaultLabel(resources), "My Field");
-
-        verify();
-    }
-
-    @Test
-    public void no_matching_property_for_default()
-    {
-        String parameterName = "myparam";
-
-        String id = "mycomponentid";
-
-        ComponentResources resources = mockComponentResources();
-        Component container = mockComponent();
-        PropertyAccess access = mockPropertyAccess();
-        ClassPropertyAdapter classPropertyAdapter = mockClassPropertyAdapter();
-        BindingSource bindingSource = mockBindingSource();
-
-        train_getId(resources, id);
-        train_getContainer(resources, container);
-
-        train_getAdapter(access, container, classPropertyAdapter);
-        train_getPropertyAdapter(classPropertyAdapter, id, null);
-
-        replay();
-
-        ComponentDefaultProvider source = new ComponentDefaultProviderImpl(access, bindingSource, null,
-                                                                           null, null);
-
-        assertNull(source.defaultBinding(parameterName, resources));
-
-        verify();
-    }
-
-    @Test
-    public void default_property_exists()
-    {
-        String parameterName = "myparam";
-
-        String id = "mycomponentid";
-
-        ComponentResources resources = mockComponentResources();
-        Component container = mockComponent();
-        PropertyAccess access = mockPropertyAccess();
-        ClassPropertyAdapter classPropertyAdapter = mockClassPropertyAdapter();
-        PropertyAdapter propertyAdapter = mockPropertyAdapter();
-        BindingSource bindingSource = mockBindingSource();
-        Binding binding = mockBinding();
-        ComponentResources containerResources = mockComponentResources();
-
-        train_getId(resources, id);
-        train_getContainer(resources, container);
-
-        train_getAdapter(access, container, classPropertyAdapter);
-        train_getPropertyAdapter(classPropertyAdapter, id, propertyAdapter);
-
-        train_getContainerResources(resources, containerResources);
-
-        train_newBinding(
-                bindingSource,
-                "default myparam",
-                containerResources,
-                BindingConstants.PROP,
-                id,
-                binding);
-
-        replay();
-
-        ComponentDefaultProvider source = new ComponentDefaultProviderImpl(access, bindingSource, null,
-                                                                           null, null);
-
-        assertSame(source.defaultBinding(parameterName, resources), binding);
-
-        verify();
-    }
-
-    @Test
-    public void default_translator_property_type_is_null()
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslatorSource source = newMock(FieldTranslatorSource.class);
-
-        train_createDefaultTranslator(source, resources, "object", null);
-
-        replay();
-
-        ComponentDefaultProvider provider = new ComponentDefaultProviderImpl(null, null, null, source, null);
-
-        assertNull(provider.defaultTranslator("object", resources));
-
-        verify();
-    }
-
-    @Test
-    public void default_translator()
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        FieldTranslatorSource source = newMock(FieldTranslatorSource.class);
-
-        train_createDefaultTranslator(source, resources, "object", translator);
-
-        replay();
-
-        ComponentDefaultProvider provider = new ComponentDefaultProviderImpl(null, null, null, source, null);
-
-        assertSame(provider.defaultTranslator("object", resources), translator);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
deleted file mode 100644
index b75e566..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventDispatcherTest.java
+++ /dev/null
@@ -1,271 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.URLEventContext;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.io.IOException;
-
-public class ComponentEventDispatcherTest extends InternalBaseTestCase
-{
-    private ContextValueEncoder contextValueEncoder;
-
-    private ContextPathEncoder contextPathEncoder;
-
-    @BeforeClass
-    public void setup()
-    {
-        contextValueEncoder = getService(ContextValueEncoder.class);
-        contextPathEncoder = getService(ContextPathEncoder.class);
-    }
-
-    @Test
-    public void no_dot_or_colon_in_path() throws Exception
-    {
-        Request request = mockRequest();
-        Response response = mockResponse();
-
-        train_getPath(request, "/foo/bar/baz");
-
-        replay();
-
-        Dispatcher dispatcher = new ComponentEventDispatcher(null,
-                new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
-                        response, null, null, null, true));
-
-        assertFalse(dispatcher.dispatch(request, response));
-
-        verify();
-    }
-
-    @Test
-    public void event_on_page() throws Exception
-    {
-        test("/foo/MyPage:anevent", "foo", "foo/MyPage", "", "anevent");
-    }
-
-    /**
-     * @see {@link https://issues.apache.org/jira/browse/TAPESTRY-1949}
-     */
-    @Test
-    public void event_on_page_with_name_and_dotted_parameters() throws Exception
-    {
-        test("/foo/MyPage:myevent/1.2.3/4.5.6", "foo", "foo/MyPage", "", "myevent", "1.2.3",
-                "4.5.6");
-    }
-
-    /**
-     * @see https://issues.apache.org/jira/browse/TAPESTRY-1949
-     */
-    @Test
-    public void event_on_page_dotted_parameters() throws Exception
-    {
-        test("/foo/MyPage:action/1.2.3/4.5.6", "foo", "foo/MyPage", "", EventConstants.ACTION,
-                "1.2.3", "4.5.6");
-    }
-
-    @Test
-    public void event_on_component_within_page() throws Exception
-    {
-        test("/foo/MyPage.fred:anevent", "foo", "foo/MyPage", "fred", "anevent");
-    }
-
-    @Test
-    public void default_event_with_nested_id() throws Exception
-    {
-        test("/foo/MyPage.fred", "foo", "foo/MyPage", "fred", EventConstants.ACTION);
-    }
-
-    @Test
-    public void default_event_with_nested_id_and_context() throws Exception
-    {
-        test("/foo/MyPage.fred/fee/fie/foe/fum", "foo", "foo/MyPage", "fred",
-                EventConstants.ACTION, "fee", "fie", "foe", "fum");
-    }
-
-    @Test
-    public void default_event_with_context_that_includes_a_colon() throws Exception
-    {
-        test("/foo/MyPage.underdog/a:b:c/d", "foo", "foo/MyPage", "underdog",
-                EventConstants.ACTION, "a:b:c", "d");
-    }
-
-    @Test
-    public void event_on_nested_component_within_page() throws Exception
-    {
-        test("/foo/MyPage.barney.fred:anevent", "foo", "foo/MyPage", "barney.fred", "anevent");
-    }
-
-    @Test
-    public void page_event_with_context() throws Exception
-    {
-        test("/foo/MyPage:trigger/foo", "foo", "foo/MyPage", "", "trigger", "foo");
-    }
-
-    @Test
-    public void nested_component_event_with_context() throws Exception
-    {
-        test("/foo/MyPage.nested:trigger/foo/bar/baz", "foo", "foo/MyPage", "nested", "trigger",
-                "foo", "bar", "baz");
-    }
-
-    @Test
-    public void page_activation_context_in_request() throws Exception
-    {
-        ComponentRequestHandler handler = mockComponentRequestHandler();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(
-                "mypage", "mypage", "", "eventname", new URLEventContext(contextValueEncoder,
-                        new String[]
-                        { "alpha", "beta" }), new EmptyEventContext());
-
-        train_getPath(request, "/mypage:eventname");
-
-        train_setLocaleFromLocaleName(ls, "", false);
-
-        train_isPageName(resolver, "mypage", true);
-
-        train_canonicalizePageName(resolver, "mypage", "mypage");
-
-        train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, "alpha/beta");
-
-        train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null);
-
-        handler.handleComponentEvent(expectedParameters);
-
-        replay();
-
-        Dispatcher dispatcher = new ComponentEventDispatcher(handler,
-                new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
-                        response, null, null, null, true));
-
-        assertTrue(dispatcher.dispatch(request, response));
-
-        verify();
-    }
-
-    @Test
-    public void different_active_and_containing_pages() throws Exception
-    {
-        ComponentRequestHandler handler = mockComponentRequestHandler();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(
-                "activepage", "mypage", "", "eventname", new EmptyEventContext(),
-                new EmptyEventContext());
-
-        train_getPath(request, "/activepage:eventname");
-
-        train_setLocaleFromLocaleName(ls, "", false);
-
-        train_isPageName(resolver, "activepage", true);
-
-        train_canonicalizePageName(resolver, "activepage", "activepage");
-
-        train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null);
-
-        train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, "mypage");
-
-        train_canonicalizePageName(resolver, "mypage", "mypage");
-
-        handler.handleComponentEvent(expectedParameters);
-
-        replay();
-
-        Dispatcher dispatcher = new ComponentEventDispatcher(handler,
-                new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
-                        response, null, null, null, true));
-
-        assertTrue(dispatcher.dispatch(request, response));
-
-        verify();
-    }
-
-    @Test
-    public void request_path_reference_non_existent_page() throws Exception
-    {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        train_getPath(request, "/en/mypage.foo");
-
-        train_setLocaleFromLocaleName(ls, "en", true);
-        train_isPageName(resolver, "mypage", false);
-
-        replay();
-
-        Dispatcher dispatcher = new ComponentEventDispatcher(null,
-                new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls, request,
-                        response, null, null, null, true));
-
-        assertFalse(dispatcher.dispatch(request, response));
-
-        verify();
-    }
-
-    private void test(String requestPath, String localeName, String containerPageName,
-            String nestedComponentId, String eventType, String... eventContext) throws IOException
-    {
-        ComponentRequestHandler handler = mockComponentRequestHandler();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        LocalizationSetter localizationSetter = mockLocalizationSetter();
-
-        ComponentEventRequestParameters expectedParameters = new ComponentEventRequestParameters(
-                containerPageName, containerPageName, nestedComponentId, eventType,
-                new EmptyEventContext(), new URLEventContext(contextValueEncoder, eventContext));
-
-        train_getPath(request, requestPath);
-
-        train_setLocaleFromLocaleName(localizationSetter, localeName, false);
-
-        train_isPageName(resolver, containerPageName, true);
-
-        train_canonicalizePageName(resolver, containerPageName, containerPageName);
-
-        train_getParameter(request, InternalConstants.PAGE_CONTEXT_NAME, null);
-
-        train_getParameter(request, InternalConstants.CONTAINER_PAGE_NAME, null);
-
-        handler.handleComponentEvent(expectedParameters);
-
-        replay();
-
-        Dispatcher dispatcher = new ComponentEventDispatcher(handler,
-                new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, localizationSetter,
-                        request, response, null, null, null, true));
-
-        assertTrue(dispatcher.dispatch(request, response));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
deleted file mode 100644
index 2a72979..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventImplTest.java
+++ /dev/null
@@ -1,367 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.TapestryMarkers;
-import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.ComponentEvent;
-import org.easymock.EasyMock;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ComponentEventImplTest extends InternalBaseTestCase
-{
-    private TypeCoercer coercer;
-
-    @BeforeClass
-    public void setup_coercer()
-    {
-        coercer = getObject(TypeCoercer.class, null);
-    }
-
-    @AfterClass
-    public void cleanup_coercer()
-    {
-        coercer = null;
-    }
-
-    @Test
-    public void matches_on_event_type()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, false);
-
-        train_getCount(context, 0);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
-
-        assertTrue(event.matches("eventType", "someId", 0));
-        assertFalse(event.matches("foo", "someId", 0));
-
-        verify();
-    }
-
-    /** @since 5.2.0 */
-    @Test
-    public void no_match_one_event_is_aborted()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        Logger logger = mockLogger();
-        Object result = new Object();
-
-        train_isDebugEnabled(logger, false);
-
-        train_handleResult(handler, result, true);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
-
-        event.storeResult(result);
-
-        assertFalse(event.matches("eventType", "someId", 0));
-
-        verify();
-
-    }
-
-    @Test
-    public void event_type_match_is_case_insensitive()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, false);
-
-        train_getCount(context, 0);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
-
-        assertTrue(event.matches("EVENTTYPE", "someid", 0));
-
-        verify();
-    }
-
-    @Test
-    public void matches_on_component_id()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, false);
-
-        train_getCount(context, 0);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
-
-        assertTrue(event.matches("eventType", "someId", 0));
-
-        assertFalse(event.matches("eventtype", "bar", 0));
-
-        verify();
-    }
-
-    @Test
-    public void component_id_matches_are_case_insensitive()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, false);
-
-        train_getCount(context, 0);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
-
-        assertTrue(event.matches("eventtype", "SOMEID", 0));
-
-        verify();
-    }
-
-    @Test
-    public void coerce_context()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        ComponentPageElementResources resources = mockComponentPageElementResources();
-        EventContext context = mockEventContext();
-        Integer value = new Integer(27);
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, false);
-
-        train_toClass(resources, "java.lang.Integer", Integer.class);
-
-        train_getCount(context, 2);
-        train_get(context, Integer.class, 0, value);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
-
-        assertSame(event.coerceContext(0, "java.lang.Integer"), value);
-
-        verify();
-    }
-
-    @Test
-    public void coerce_when_not_enough_context()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, true);
-        logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
-
-        train_getCount(context, 0);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, null, logger);
-
-        event.setMethodDescription("foo.Bar.baz()");
-
-        try
-        {
-            event.coerceContext(1, "java.lang.Integer");
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Method foo.Bar.baz() has more parameters than there are context values for this component event.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void unable_to_coerce()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        EventContext context = mockEventContext();
-        ComponentPageElementResources resources = mockComponentPageElementResources();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, true);
-        logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
-
-        train_toClass(resources, Integer.class.getName(), Integer.class);
-
-        train_getCount(context, 1);
-
-        expect(context.get(Integer.class, 0)).andThrow(new NumberFormatException("Not so easy, is it?"));
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", context, handler, resources, logger);
-
-        event.setMethodDescription("foo.Bar.baz()");
-
-        try
-        {
-            event.coerceContext(0, "java.lang.Integer");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            // Different JVMs will report the conversion error slightly differently,
-            // so we don't try to check that part of the error message.
-
-            assertTrue(ex.getMessage().startsWith("Exception in method foo.Bar.baz(), parameter #1:"));
-        }
-
-        verify();
-    }
-
-    @Test
-    public void store_result_and_abort()
-    {
-        Object result = new Object();
-        String methodDescription = "foo.Bar.baz()";
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, true);
-        EasyMock.expectLastCall().atLeastOnce();
-
-        logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
-
-        ComponentEventCallback handler = mockComponentEventHandler();
-
-        train_handleResult(handler, result, true);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, logger);
-
-        event.setMethodDescription(methodDescription);
-
-        assertFalse(event.isAborted());
-
-        assertTrue(event.storeResult(result));
-
-        assertTrue(event.isAborted());
-
-        verify();
-    }
-
-    @Test
-    public void store_result_and_continue()
-    {
-        Object result = new Object();
-        String methodDescription = "foo.Bar.baz()";
-        ComponentEventCallback handler = mockComponentEventHandler();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, true);
-        logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
-
-        train_handleResult(handler, result, false);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, logger);
-
-        event.setMethodDescription(methodDescription);
-
-        assertFalse(event.storeResult(result));
-
-        assertFalse(event.isAborted());
-
-        verify();
-    }
-
-    @Test
-    public void store_null_result_does_not_abort_or_invoke_handler()
-    {
-        ComponentEventCallback handler = mockComponentEventHandler();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, true);
-        logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, logger);
-
-        event.setMethodDescription("foo.Bar.baz()");
-
-        assertFalse(event.storeResult(null));
-
-        assertFalse(event.isAborted());
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void store_result_when_aborted_is_failure()
-    {
-        Object result = new Object();
-        ComponentEventCallback handler = mockComponentEventHandler();
-        Logger logger = mockLogger();
-
-        train_isDebugEnabled(logger, true);
-        EasyMock.expectLastCall().atLeastOnce();
-
-        logger.debug(eq(TapestryMarkers.EVENT_HANDLER_METHOD), isA(String.class));
-
-        EasyMock.expectLastCall().atLeastOnce();
-
-        expect(handler.handleResult(result)).andReturn(true);
-
-        replay();
-
-        ComponentEvent event = new ComponentEventImpl("eventType", "someId", null, handler, null, logger);
-
-        event.setMethodDescription("foo.Bar.baz()");
-        event.storeResult(result);
-
-        try
-        {
-            event.setMethodDescription("foo.Bar.biff()");
-            event.storeResult(null);
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertEquals(ex.getMessage(), ServicesMessages.componentEventIsAborted("foo.Bar.biff()"));
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
deleted file mode 100644
index 20bad49..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentEventLinkEncoderImplTest.java
+++ /dev/null
@@ -1,337 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.ContextPathEncoder;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Most of the testing is implemented through legacy tests against code that uses CELE.
- * 
- * @since 5.1.0.1
- */
-public class ComponentEventLinkEncoderImplTest extends InternalBaseTestCase
-{
-    private TypeCoercer typeCoercer;
-
-    private ContextPathEncoder contextPathEncoder;
-
-    @BeforeClass
-    public void setup()
-    {
-        typeCoercer = getService(TypeCoercer.class);
-        contextPathEncoder = getService(ContextPathEncoder.class);
-    }
-
-    @Test
-    public void locale_not_encoded()
-    {
-        RequestSecurityManager manager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ContextPathEncoder contextPathEncoder = getService(ContextPathEncoder.class);
-
-        expect(manager.checkPageSecurity("MyPage")).andReturn(LinkSecurity.INSECURE);
-        train_getContextPath(request, "/myapp");
-
-        train_encodeURL(response, "/myapp/mypage", "MAGIC");
-
-        replay();
-
-        ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
-                response, manager, null, null, false);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters("MyPage", new EmptyEventContext());
-
-        Link link = encoder.createPageRenderLink(parameters);
-
-        assertEquals(link.toURI(), "MAGIC");
-
-        verify();
-    }
-
-    @Test
-    public void index_stripped_off()
-    {
-        RequestSecurityManager manager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ContextPathEncoder contextPathEncoder = getService(ContextPathEncoder.class);
-
-        expect(manager.checkPageSecurity("admin/Index")).andReturn(LinkSecurity.INSECURE);
-        train_getContextPath(request, "");
-
-        train_encodeURL(response, "/admin/abc", "MAGIC");
-
-        replay();
-
-        ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
-                response, manager, null, null, false);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters("admin/Index", new ArrayEventContext(
-                typeCoercer, "abc"));
-
-        Link link = encoder.createPageRenderLink(parameters);
-
-        assertEquals(link.toURI(), "MAGIC");
-
-        verify();
-    }
-
-    @Test
-    public void root_index_page_gone()
-    {
-        RequestSecurityManager manager = mockRequestSecurityManager();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        ContextPathEncoder contextPathEncoder = getService(ContextPathEncoder.class);
-
-        expect(manager.checkPageSecurity("Index")).andReturn(LinkSecurity.INSECURE);
-        train_getContextPath(request, "");
-
-        train_encodeURL(response, "/", "MAGIC");
-
-        replay();
-
-        ComponentEventLinkEncoder encoder = new ComponentEventLinkEncoderImpl(null, contextPathEncoder, null, request,
-                response, manager, null, null, false);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters("Index", new EmptyEventContext());
-
-        Link link = encoder.createPageRenderLink(parameters);
-
-        assertEquals(link.toURI(), "MAGIC");
-
-        verify();
-    }
-
-    @Test
-    public void empty_path() throws Exception
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        train_getPath(request, "");
-
-        train_setLocaleFromLocaleName(ls, "", false);
-
-        train_isPageName(resolver, "", false);
-
-        replay();
-
-        ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
-                request, response, null, null, null, true);
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        assertNull(parameters);
-
-        verify();
-    }
-
-    @Test
-    public void not_a_page_request() throws Exception
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        stub_isPageName(resolver, false);
-
-        train_setLocaleFromLocaleName(ls, "foo", false);
-        train_getPath(request, "/foo/Bar.baz");
-
-        replay();
-
-        ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
-                request, response, null, null, null, true);
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        assertNull(parameters);
-
-        verify();
-    }
-
-    @Test
-    public void just_the_locale_name() throws Exception
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        Request request = mockRequest();
-        Response response = mockResponse();
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        train_getPath(request, "/en");
-
-        train_setLocaleFromLocaleName(ls, "en", true);
-
-        train_isPageName(resolver, "", false);
-
-        replay();
-
-        ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
-                request, response, null, null, null, true);
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        assertNull(parameters);
-
-        verify();
-    }
-
-    private Request mockRequest(boolean isLoopback)
-    {
-        Request request = mockRequest();
-
-        train_getParameter(request, TapestryConstants.PAGE_LOOPBACK_PARAMETER_NAME, isLoopback ? "t" : null);
-
-        return request;
-    }
-
-    /**
-     * TAPESTRY-2226
-     */
-    @Test
-    public void page_activation_context_for_root_index_page() throws Exception
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        Request request = mockRequest(false);
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        train_getPath(request, "/foo/bar");
-
-        train_setLocaleFromLocaleName(ls, "foo", false);
-
-        train_isPageName(resolver, "foo/bar", false);
-        train_isPageName(resolver, "foo", false);
-        train_isPageName(resolver, "", true);
-
-        train_canonicalizePageName(resolver, "", "index");
-
-        replay();
-
-        ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
-                request, null, null, null, null, true);
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        assertEquals(parameters.getLogicalPageName(), "index");
-        assertArraysEqual(parameters.getActivationContext().toStrings(), "foo", "bar");
-        assertFalse(parameters.isLoopback());
-
-        verify();
-    }
-
-    @Test
-    public void no_extra_context_without_final_slash() throws Exception
-    {
-        no_extra_context(false);
-    }
-
-    @Test
-    public void no_extra_context_with_final_slash() throws Exception
-    {
-        no_extra_context(true);
-    }
-
-    private void no_extra_context(boolean finalSlash) throws Exception
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        Request request = mockRequest(false);
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        String path = "/foo/Bar" + (finalSlash ? "/" : "");
-        train_getPath(request, path);
-
-        train_setLocaleFromLocaleName(ls, "foo", false);
-
-        train_isPageName(resolver, "foo/Bar", true);
-
-        train_canonicalizePageName(resolver, "foo/Bar", "foo/bar");
-
-        replay();
-
-        ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
-                request, null, null, null, null, true);
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        assertEquals(parameters.getLogicalPageName(), "foo/bar");
-        assertEquals(parameters.getActivationContext().getCount(), 0);
-        assertFalse(parameters.isLoopback());
-
-        verify();
-    }
-
-    @Test
-    public void context_passed_in_path_without_final_slash() throws Exception
-    {
-        context_passed_in_path(false);
-    }
-
-    @Test
-    public void context_passed_in_path_with_final_slash() throws Exception
-    {
-        context_passed_in_path(true);
-    }
-
-    private void context_passed_in_path(boolean finalSlash) throws Exception
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        Request request = mockRequest(true);
-        LocalizationSetter ls = mockLocalizationSetter();
-
-        String path = "/foo/Bar/zip/zoom" + (finalSlash ? "/" : "");
-        train_getPath(request, path);
-
-        train_setLocaleFromLocaleName(ls, "foo", false);
-
-        train_isPageName(resolver, "foo/Bar/zip/zoom", false);
-
-        train_isPageName(resolver, "foo/Bar/zip", false);
-
-        train_isPageName(resolver, "foo/Bar", true);
-
-        train_canonicalizePageName(resolver, "foo/Bar", "foo/bar");
-
-        replay();
-
-        ComponentEventLinkEncoderImpl linkEncoder = new ComponentEventLinkEncoderImpl(resolver, contextPathEncoder, ls,
-                request, null, null, null, null, true);
-
-        PageRenderRequestParameters parameters = linkEncoder.decodePageRenderRequest(request);
-
-        assertEquals(parameters.getLogicalPageName(), "foo/bar");
-        assertArraysEqual(parameters.getActivationContext().toStrings(), "zip", "zoom");
-        assertTrue(parameters.isLoopback());
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessorTest.java
deleted file mode 100644
index 803df21..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstanceResultProcessorTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-public class ComponentInstanceResultProcessorTest extends InternalBaseTestCase
-{
-    private static final String PAGE_NAME = "Zoop";
-
-    private static final String METHOD_DESCRIPTION = "foo.bar.Baz.biff()";
-
-    @Test
-    public void result_is_root_component() throws Exception
-    {
-        Component result = mockComponent();
-        Component source = mockComponent();
-        ComponentResources resources = mockComponentResources();
-        Logger logger = mockLogger();
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        ActionRenderResponseGenerator generator = mockActionRenderResponseGenerator();
-
-        train_getComponentResources(result, resources);
-        train_getContainer(resources, null);
-
-        train_getPageName(resources, PAGE_NAME);
-        train_get(cache, PAGE_NAME, page);
-
-        generator.generateResponse(page);
-
-        replay();
-
-        ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, cache,
-                                                                                                  generator);
-
-        processor.processResultValue(result);
-
-        verify();
-    }
-
-    @Test
-    public void warning_for_component_is_not_root_component() throws Exception
-    {
-        Component value = mockComponent();
-        Component containerResources = mockComponent();
-        ComponentResources valueResources = mockComponentResources();
-        Logger logger = mockLogger();
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        ActionRenderResponseGenerator generator = mockActionRenderResponseGenerator();
-
-
-        train_getComponentResources(value, valueResources);
-
-        train_getContainer(valueResources, containerResources);
-
-        train_getCompleteId(valueResources, PAGE_NAME + ":child");
-
-        logger
-                .warn("Component Zoop:child was returned from an event handler method, but is not a page component. The page containing the component will render the client response.");
-
-        train_getPageName(valueResources, PAGE_NAME);
-        train_get(cache, PAGE_NAME, page);
-
-        generator.generateResponse(page);
-
-        replay();
-
-        ComponentEventResultProcessor<Component> processor = new ComponentInstanceResultProcessor(logger, cache,
-                                                                                                  generator);
-
-        processor.processResultValue(value);
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java
deleted file mode 100644
index e1974a4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentInstantiatorSourceImplTest.java
+++ /dev/null
@@ -1,245 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.net.URLConnection;
-import java.util.UUID;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.CtNewMethod;
-import javassist.LoaderClassPath;
-import javassist.NotFoundException;
-
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.transform.pages.BasicComponent;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.RegistryBuilder;
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.TapestryModule;
-import org.apache.tapestry5.services.UpdateListenerHub;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * Tests for {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImpl}. Several of these tests are
- * more of the form of integration tests that instantiate the Tapestry IoC Registry.
- */
-public class ComponentInstantiatorSourceImplTest extends InternalBaseTestCase
-{
-    private static final ClassLoader contextLoader = Thread.currentThread().getContextClassLoader();
-
-    private static final String SYNTH_COMPONENT_CLASSNAME = "org.apache.tapestry5.internal.transform.pages.SynthComponent";
-
-    private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
-
-    private File extraClasspath;
-
-    private ComponentInstantiatorSource source;
-
-    private Registry registry;
-
-    private PropertyAccess access;
-
-    private ClassLoader extraLoader;
-
-    private String tempDir;
-
-    @Test
-    public void controlled_packages() throws Exception
-    {
-        ComponentClassTransformer transformer = newMock(ComponentClassTransformer.class);
-        Logger logger = mockLogger();
-
-        replay();
-
-        ComponentInstantiatorSourceImpl e = new ComponentInstantiatorSourceImpl(logger, contextLoader, transformer,
-                                                                                null, converter);
-
-        assertEquals(e.inControlledPackage("foo.bar.Baz"), false);
-
-        // Check that classes in the default package are never controlled
-
-        assertEquals(e.inControlledPackage("Biff"), false);
-
-        // Now add a controlled package
-
-        e.addPackage("foo.bar");
-
-        assertEquals(e.inControlledPackage("foo.bar.Baz"), true);
-
-        // Sub-packages of controlled packages are controlled as well
-
-        assertEquals(e.inControlledPackage("foo.bar.biff.Pop"), true);
-
-        // Parents of controlled packages are not controlled
-
-        assertEquals(e.inControlledPackage("foo.Gloop"), false);
-
-        verify();
-    }
- 
-
-    /**
-     * This allows tests the exists() method.
-     */
-    @Test
-    public void component_class_reload() throws Exception
-    {
-        // Ensure it doesn't already exist:
-
-        assertFalse(source.exists(SYNTH_COMPONENT_CLASSNAME));
-
-        // Create the class on the fly.
-
-        createSynthComponentClass("Original");
-
-        assertTrue(source.exists(SYNTH_COMPONENT_CLASSNAME));
-
-        getMocksControl().resetToNice();
-        
-        Named named = (Named) createComponent(SYNTH_COMPONENT_CLASSNAME);
-
-        assertEquals(named.getName(), "Original");
-
-        String path = tempDir + "/" + SYNTH_COMPONENT_CLASSNAME.replace('.', '/') + ".class";
-        URL url = new File(path).toURL();
-
-        long dtm = readDTM(url);
-
-        while (true)
-        {
-            if (readDTM(url) != dtm) break;
-
-            // Keep re-writing the file until we see the DTM change.
-
-            createSynthComponentClass("Updated");
-        }
-
-        // Detect the change and clear out the internal caches
-
-        UpdateListenerHub hub = registry.getService("UpdateListenerHub", UpdateListenerHub.class);
-
-        hub.fireCheckForUpdates();
-
-        // This will be the new version of the class
-
-        named = (Named) createComponent(SYNTH_COMPONENT_CLASSNAME);
-
-        assertEquals(named.getName(), "Updated");
-    }
-
-    private long readDTM(URL url) throws Exception
-    {
-        URLConnection connection = url.openConnection();
-
-        connection.connect();
-
-        return connection.getLastModified();
-    }
-
-    private void createSynthComponentClass(String name) throws CannotCompileException, NotFoundException, IOException
-    {
-        ClassPool pool = new ClassPool();
-        // Inside Maven Surefire, the system classpath is not sufficient to find all
-        // the necessary files.
-        pool.appendClassPath(new LoaderClassPath(extraLoader));
-
-        CtClass ctClass = pool.makeClass(SYNTH_COMPONENT_CLASSNAME);
-
-        ctClass.setSuperclass(pool.get(BasicComponent.class.getName()));
-
-        // Implement method getName()
-
-        CtMethod method = CtNewMethod.make("public String getName() { return \"" + name + "\"; }", ctClass);
-        ctClass.addMethod(method);
-
-        ctClass.addInterface(pool.get(Named.class.getName()));
-
-        ctClass.writeFile(extraClasspath.getAbsolutePath());
-    }
-
-    private Component createComponent(Class componentClass)
-    {
-        String classname = componentClass.getName();
-
-        return createComponent(classname);
-    }
-
-    private Component createComponent(String classname)
-    {
-        InternalComponentResources resources = mockInternalComponentResources();
-
-        replay();
-
-        Instantiator inst = source.getInstantiator(classname);
-
-        Component target = inst.newInstance(resources);
-
-        verify();
-
-        return target;
-    }
-
-    @BeforeClass
-    public void setup_tests() throws Exception
-    {
-        String tempdir = System.getProperty("java.io.tmpdir");
-        String uid = UUID.randomUUID().toString();
-
-        tempDir = tempdir + "/tapestry-test-classpath/" + uid;
-        extraClasspath = new File(tempDir);
-
-        System.out.println("Creating dir: " + extraClasspath);
-
-        extraClasspath.mkdirs();
-
-        URL url = extraClasspath.toURL();
-
-        extraLoader = new URLClassLoader(new URL[] { url }, contextLoader);
-        RegistryBuilder builder = new RegistryBuilder(extraLoader);
-
-        builder.add(TapestryModule.class);
-
-        registry = builder.build();
-
-        source = registry.getService(ComponentInstantiatorSource.class);
-        access = registry.getService(PropertyAccess.class);
-
-        source.addPackage("org.apache.tapestry5.internal.transform.pages");
-    }
-
-    @AfterClass
-    public void cleanup_tests()
-    {
-        registry.shutdown();
-
-        registry = null;
-        source = null;
-        access = null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java
deleted file mode 100644
index 9733d84..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentMessagesSourceImplTest.java
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import org.testng.annotations.Test;
-
-/**
- * Tests {@link ComponentMessagesSourceImpl} as well as {@link MessagesSourceImpl} (which contains code refactored out
- * of CMSI).
- */
-@Test
-public class ComponentMessagesSourceImplTest extends InternalBaseTestCase
-{
-    // With control of the tracker, we can force changes as if underlying files were changed.
-
-    private static final String SIMPLE_COMPONENT_CLASS_NAME = "org.apache.tapestry5.internal.services.SimpleComponent";
-
-    private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
-
-    private final URLChangeTracker tracker = new URLChangeTracker(converter);
-
-    private final Resource simpleComponentResource = new ClasspathResource(
-            "org/apache/tapestry5/internal/services/SimpleComponent.class");
-
-    private final ComponentMessagesSourceImpl source = new ComponentMessagesSourceImpl(simpleComponentResource
-            .forFile("AppCatalog.properties"), new PropertiesFileParserImpl(), tracker);
-
-    @Test
-    public void simple_component()
-    {
-        ComponentModel model = mockComponentModel();
-
-        train_getComponentClassName(model, SIMPLE_COMPONENT_CLASS_NAME);
-
-        train_getBaseResource(model, simpleComponentResource);
-
-        train_getParentModel(model, null);
-
-        replay();
-
-        forceCacheClear();
-
-        Messages messages = source.getMessages(model, Locale.ENGLISH);
-
-        assertEquals(messages.get("color"), "color");
-        assertEquals(messages.get("framework"), "Tapestry");
-
-        // Check normal caching
-
-        assertSame(source.getMessages(model, Locale.ENGLISH), messages);
-
-        // Now, force a cache clear and retry.
-
-        forceCacheClear();
-
-        Messages messages2 = source.getMessages(model, Locale.ENGLISH);
-
-        // Check that a new Messages was created
-
-        assertNotSame(messages2, messages);
-
-        assertEquals(messages2.get("color"), "color");
-        assertEquals(messages2.get("framework"), "Tapestry");
-
-        verify();
-    }
-
-    private void forceCacheClear()
-    {
-        tracker.forceChange();
-        source.checkForUpdates();
-    }
-
-    @Test
-    public void per_language_messages_override()
-    {
-        ComponentModel model = mockComponentModel();
-
-        train_getComponentClassName(model, SIMPLE_COMPONENT_CLASS_NAME);
-
-        train_getBaseResource(model, simpleComponentResource);
-
-        train_getParentModel(model, null);
-
-        replay();
-
-        forceCacheClear();
-
-        Messages messages = source.getMessages(model, Locale.UK);
-
-        assertEquals(messages.get("color"), "colour");
-        assertEquals(messages.get("framework"), "Tapestry");
-
-        verify();
-    }
-
-    @Test
-    public void messages_keys_are_case_insensitive()
-    {
-        ComponentModel model = mockComponentModel();
-
-        train_getComponentClassName(model, SIMPLE_COMPONENT_CLASS_NAME);
-
-        train_getBaseResource(model, simpleComponentResource);
-
-        train_getParentModel(model, null);
-
-        replay();
-
-        forceCacheClear();
-
-        Messages messages = source.getMessages(model, Locale.UK);
-
-        assertEquals(messages.get("COlor"), "colour");
-        assertEquals(messages.get("Framework"), "Tapestry");
-
-        verify();
-    }
-
-    @Test
-    public void subclass_inherits_base_class_messages()
-    {
-        ComponentModel model = mockComponentModel();
-        ComponentModel parent = mockComponentModel();
-
-        train_getComponentClassName(model, "org.apache.tapestry5.internal.services.SubclassComponent");
-
-        train_getBaseResource(model, new ClasspathResource(
-                "org/apache/tapestry5/internal/services/SubclassComponent.class"));
-
-        train_getParentModel(model, parent);
-
-        train_getComponentClassName(parent, SIMPLE_COMPONENT_CLASS_NAME);
-
-        train_getBaseResource(parent, simpleComponentResource);
-
-        train_getParentModel(parent, null);
-
-        replay();
-
-        forceCacheClear();
-
-        Messages messages = source.getMessages(model, Locale.ENGLISH);
-
-        assertEquals(messages.get("color"), "color");
-        assertEquals(messages.get("framework"), "Tapestry");
-        assertEquals(messages.get("source"), "SubclassComponent");
-        assertEquals(messages.get("metal"), "steel");
-        assertEquals(messages.get("app-catalog-source"), "AppCatalog");
-        assertEquals(messages.get("app-catalog-overridden"), "Overridden by Component");
-
-        messages = source.getMessages(model, Locale.UK);
-
-        assertEquals(messages.get("color"), "colour");
-        assertEquals(messages.get("framework"), "Tapestry");
-        assertEquals(messages.get("source"), "SubclassComponent");
-        assertEquals(messages.get("metal"), "aluminium");
-
-        verify();
-    }
-
-    @Test
-    public void no_app_catalog()
-    {
-        ComponentModel model = mockComponentModel();
-        ComponentModel parent = mockComponentModel();
-
-        train_getComponentClassName(model, "org.apache.tapestry5.internal.services.SubclassComponent");
-
-        train_getBaseResource(model, new ClasspathResource(
-                "org/apache/tapestry5/internal/services/SubclassComponent.class"));
-
-        train_getParentModel(model, parent);
-
-        train_getComponentClassName(parent, SIMPLE_COMPONENT_CLASS_NAME);
-
-        train_getBaseResource(parent, simpleComponentResource);
-
-        train_getParentModel(parent, null);
-
-        replay();
-
-        forceCacheClear();
-
-        Resource resource = simpleComponentResource.forFile("NoSuchAppCatalog.properties");
-        List<Resource> resources = Arrays.asList(resource);
-
-        ComponentMessagesSource source = new ComponentMessagesSourceImpl(resources, new PropertiesFileParserImpl(),
-                converter);
-
-        Messages messages = source.getMessages(model, Locale.ENGLISH);
-
-        assertEquals(messages.get("color"), "color");
-        assertEquals(messages.get("app-catalog-source"), "[[missing key: app-catalog-source]]");
-        assertEquals(messages.get("app-catalog-overridden"), "Overridden by Component");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentSourceImplTest.java
deleted file mode 100644
index d33f5cc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentSourceImplTest.java
+++ /dev/null
@@ -1,159 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.ComponentSource;
-import org.apache.tapestry5.services.RequestGlobals;
-import org.testng.annotations.Test;
-
-public class ComponentSourceImplTest extends InternalBaseTestCase
-{
-    private static final String PAGE_NAME = "Bar";
-
-    private static final String NESTED_ELEMENT_ID = "zip.zoom";
-
-    @Test
-    public void root_element_of_page()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        Component component = mockComponent();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-
-        train_get(cache, PAGE_NAME, page);
-
-        train_getRootComponent(page, component);
-
-        replay();
-
-        ComponentSource source = new ComponentSourceImpl(cache, resolver, null);
-
-        assertSame(source.getComponent(PAGE_NAME), component);
-
-        verify();
-    }
-
-    @Test
-    public void nested_element_within_page()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        ComponentPageElement element = mockComponentPageElement();
-        Component component = mockComponent();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-
-        train_get(cache, PAGE_NAME, page);
-
-        train_getComponentElementByNestedId(page, NESTED_ELEMENT_ID, element);
-
-        train_getComponent(element, component);
-
-        replay();
-
-        ComponentSource source = new ComponentSourceImpl(cache, resolver, null);
-
-        assertSame(source.getComponent(PAGE_NAME + ":" + NESTED_ELEMENT_ID), component);
-
-        verify();
-    }
-
-    @Test
-    public void get_page_by_logical_name()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        Component component = mockComponent();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-
-        train_get(cache, PAGE_NAME, page);
-        train_getRootComponent(page, component);
-
-        replay();
-
-        ComponentSource source = new ComponentSourceImpl(cache, resolver, null);
-
-        assertSame(source.getPage(PAGE_NAME), component);
-
-        verify();
-    }
-
-    @Test
-    public void get_page_by_class()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        Component component = mockComponent();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-
-        train_resolvePageClassNameToPageName(resolver, ComponentSourceImplTest.class.getName(), PAGE_NAME);
-
-        train_get(cache, PAGE_NAME, page);
-        train_getRootComponent(page, component);
-
-        replay();
-
-        ComponentSource source = new ComponentSourceImpl(cache, resolver, null);
-
-        assertSame(source.getPage(ComponentSourceImplTest.class), component);
-
-        verify();
-    }
-
-    @Test
-    public void get_active_page()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        Page page = mockPage();
-        Component component = mockComponent();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        RequestGlobals globals = mockRequestGlobals();
-        String pageName = "Active";
-
-        expect(globals.getActivePageName()).andReturn(pageName);
-
-        train_get(cache, pageName, page);
-        train_getRootComponent(page, component);
-
-        replay();
-
-        ComponentSource source = new ComponentSourceImpl(cache, resolver, globals);
-
-        assertSame(source.getActivePage(), component);
-
-        verify();
-    }
-
-    @Test
-    public void get_active_page_before_known()
-    {
-        RequestGlobals globals = mockRequestGlobals();
-
-        expect(globals.getActivePageName()).andReturn(null);
-
-        replay();
-
-        ComponentSource source = new ComponentSourceImpl(null, null, globals);
-
-        assertNull(source.getActivePage());
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
deleted file mode 100644
index eaff3d8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ComponentTemplateSourceImplTest.java
+++ /dev/null
@@ -1,297 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.io.File;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Locale;
-import java.util.UUID;
-
-import org.apache.tapestry5.TapestryConstants;
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.templates.ComponentTemplateLocator;
-import org.testng.annotations.Test;
-
-public class ComponentTemplateSourceImplTest extends InternalBaseTestCase
-{
-    private static final String PACKAGE = "org.apache.tapestry5.internal.pageload";
-
-    static public final String PATH = "org/apache/tapestry5/internal/pageload";
-
-    private final ClassLoader loader = Thread.currentThread().getContextClassLoader();
-
-    private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
-
-    /**
-     * Creates a new class loader, whose parent is the thread's context class loader, but adds a single classpath root
-     * from the filesystem.
-     * 
-     * @see #createClasspathRoot()
-     */
-    protected final URLClassLoader newLoaderWithClasspathRoot(File rootDir) throws MalformedURLException
-    {
-        String urlPath = rootDir.toURL().toString();
-        // URLs for folders must end with a slash to make URLClassLoader happy.
-        URL url = new URL(urlPath + "/");
-
-        return new URLClassLoader(new URL[]
-        { url }, loader);
-    }
-
-    /**
-     * Creates a new temporary directory which can act as a classpath root.
-     * 
-     * @see #newLoaderWithClasspathRoot(File)
-     */
-    protected final File createClasspathRoot()
-    {
-        String temp = System.getProperty("java.io.tmpdir");
-        String rootDirPath = temp + "/" + UUID.randomUUID().toString();
-
-        return new File(rootDirPath);
-    }
-
-    @Test
-    public void caching()
-    {
-        TemplateParser parser = mockTemplateParser();
-        ComponentTemplate template = mockComponentTemplate();
-        ComponentModel model = mockComponentModel();
-        Resource resource = mockResource();
-        ComponentTemplateLocator locator = mockComponentTemplateLocator();
-
-        train_getComponentClassName(model, PACKAGE + ".Fred");
-
-        expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(resource);
-
-        expect(resource.exists()).andReturn(true);
-        expect(resource.toURL()).andReturn(null);
-
-        train_parseTemplate(parser, resource, template);
-
-        replay();
-
-        ComponentTemplateSource source = new ComponentTemplateSourceImpl(parser, locator, converter);
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        // A second pass will test the caching (the
-        // parser is not invoked).
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        verify();
-    }
-
-    protected final ComponentTemplateLocator mockComponentTemplateLocator()
-    {
-        return newMock(ComponentTemplateLocator.class);
-    }
-
-    /**
-     * Tests resource invalidation.
-     */
-    @Test
-    public void invalidation() throws Exception
-    {
-        File rootDir = createClasspathRoot();
-        URLClassLoader loader = newLoaderWithClasspathRoot(rootDir);
-        ComponentModel model = mockComponentModel();
-
-        File packageDir = new File(rootDir, "baz");
-        packageDir.mkdirs();
-
-        File f = new File(packageDir, "Biff.tml");
-
-        f.createNewFile();
-
-        Resource baseResource = new ClasspathResource(loader, "baz/Biff.class");
-        Resource localized = baseResource.withExtension(TapestryConstants.TEMPLATE_EXTENSION);
-
-        TemplateParser parser = mockTemplateParser();
-        ComponentTemplate template = mockComponentTemplate();
-        InvalidationListener listener = mockInvalidationListener();
-        ComponentTemplateLocator locator = mockComponentTemplateLocator();
-
-        train_getComponentClassName(model, "baz.Biff");
-
-        expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(localized);
-
-        train_parseTemplate(parser, localized, template);
-
-        replay();
-
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, locator, converter);
-        source.addInvalidationListener(listener);
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        // Check for updates (which won't be found).
-        source.checkForUpdates();
-
-        // A second pass will test the caching (the
-        // parser is not invoked).
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        verify();
-
-        // Now, change the file and processInbound an UpdateEvent.
-
-        touch(f);
-
-        listener.objectWasInvalidated();
-
-        replay();
-
-        // Check for updates (which will be found).
-        source.checkForUpdates();
-
-        verify();
-
-        // Check that the cache really is cleared.
-
-        train_getComponentClassName(model, "baz.Biff");
-
-        expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(localized);
-
-        train_parseTemplate(parser, localized, template);
-
-        replay();
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        verify();
-    }
-
-    /**
-     * Checks that localization to the same resource works (w/ caching).
-     */
-    @Test
-    public void localization_to_same()
-    {
-        Resource resource = mockResource();
-        TemplateParser parser = mockTemplateParser();
-        ComponentTemplate template = mockComponentTemplate();
-        ComponentModel model = mockComponentModel();
-        ComponentTemplateLocator locator = mockComponentTemplateLocator();
-
-        train_getComponentClassName(model, PACKAGE + ".Fred");
-
-        expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(resource);
-
-        expect(resource.exists()).andReturn(true).anyTimes();
-        expect(resource.toURL()).andReturn(null).anyTimes();
-
-        expect(locator.locateTemplate(model, Locale.FRENCH)).andReturn(resource);
-
-        train_parseTemplate(parser, resource, template);
-
-        replay();
-
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, locator, converter);
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        // A second pass finds the same resource, but using a different
-        // path/locale combination.
-
-        assertSame(source.getTemplate(model, Locale.FRENCH), template);
-
-        // A third pass should further demonstrate the caching.
-
-        assertSame(source.getTemplate(model, Locale.FRENCH), template);
-
-        verify();
-    }
-
-    @Test
-    public void no_template_found()
-    {
-        TemplateParser parser = mockTemplateParser();
-        ComponentModel model = mockComponentModel();
-        ComponentTemplateLocator locator = mockComponentTemplateLocator();
-        Resource baseResource = mockResource();
-        Resource missingResource = mockResource();
-
-        train_getComponentClassName(model, PACKAGE + ".Barney");
-
-        expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(null);
-
-        train_getParentModel(model, null);
-
-        train_getBaseResource(model, baseResource);
-
-        expect(baseResource.withExtension(TapestryConstants.TEMPLATE_EXTENSION)).andReturn(missingResource);
-
-        expect(missingResource.exists()).andReturn(false);
-
-        replay();
-
-        ComponentTemplateSourceImpl source = new ComponentTemplateSourceImpl(parser, locator, converter);
-
-        ComponentTemplate template = source.getTemplate(model, Locale.ENGLISH);
-
-        assertTrue(template.isMissing());
-
-        verify();
-    }
-
-    @Test
-    public void child_component_inherits_parent_template()
-    {
-        TemplateParser parser = mockTemplateParser();
-        ComponentTemplate template = mockComponentTemplate();
-        ComponentModel model = mockComponentModel();
-        ComponentModel parentModel = mockComponentModel();
-        Resource resource = mockResource();
-        ComponentTemplateLocator locator = mockComponentTemplateLocator();
-
-        train_getComponentClassName(model, "foo.Bar");
-
-        expect(locator.locateTemplate(model, Locale.ENGLISH)).andReturn(null);
-
-        train_getParentModel(model, parentModel);
-
-        expect(locator.locateTemplate(parentModel, Locale.ENGLISH)).andReturn(resource);
-
-        expect(resource.exists()).andReturn(true);
-        expect(resource.toURL()).andReturn(null);
-
-        train_parseTemplate(parser, resource, template);
-
-        replay();
-
-        ComponentTemplateSource source = new ComponentTemplateSourceImpl(parser, locator, converter);
-
-        assertSame(source.getTemplate(model, Locale.ENGLISH), template);
-
-        verify();
-    }
-
-    private Resource newResource(String name)
-    {
-        return new ClasspathResource(loader, PATH + "/" + name);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CompositeBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CompositeBean.java
deleted file mode 100644
index 22112fd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CompositeBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class CompositeBean
-{
-    private SimpleBean simple = new SimpleBean();
-
-    public SimpleBean getSimple()
-    {
-        return simple;
-    }
-
-    public void setSimple(SimpleBean simple)
-    {
-        this.simple = simple;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextAssetFactoryTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextAssetFactoryTest.java
deleted file mode 100644
index 27447fc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextAssetFactoryTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.internal.services.assets.AssetPathConstructorImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.AssetFactory;
-import org.apache.tapestry5.services.Context;
-import org.apache.tapestry5.services.Request;
-import org.testng.annotations.Test;
-
-public class ContextAssetFactoryTest extends InternalBaseTestCase
-{
-    private final IdentityAssetPathConverter converter = new IdentityAssetPathConverter();
-
-    @Test
-    public void root_resource()
-    {
-        Context context = mockContext();
-        Request request = mockRequest();
-
-        replay();
-
-        AssetFactory factory = new ContextAssetFactory(null, context, converter);
-
-        assertEquals(factory.getRootResource().toString(), "context:/");
-
-        verify();
-    }
-
-    @Test
-    public void asset_client_URL()
-    {
-        Context context = mockContext();
-        Request request = mockRequest();
-
-        Resource r = new ContextResource(context, "foo/Bar.txt");
-
-        train_getContextPath(request, "/context");
-
-        replay();
-
-        AssetFactory factory = new ContextAssetFactory(new AssetPathConstructorImpl(request, "4.5.6"), context,
-                new IdentityAssetPathConverter());
-
-        Asset asset = factory.createAsset(r);
-
-        assertSame(asset.getResource(), r);
-        assertEquals(asset.toClientURL(), "/context/assets/4.5.6/ctx/foo/Bar.txt");
-
-        // In real life, toString() is the same as toClientURL(), but we're testing
-        // that the optimize method is getting called, basically.
-
-        assertEquals(asset.toString(), "/context/assets/4.5.6/ctx/foo/Bar.txt");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java
deleted file mode 100644
index 15d4750..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextImplTest.java
+++ /dev/null
@@ -1,193 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.Context;
-import org.testng.annotations.Test;
-
-import javax.servlet.ServletContext;
-import java.io.File;
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-
-public class ContextImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void get_resource_exists() throws Exception
-    {
-        String path = "/foo";
-        URL url = getClass().getResource("ContextImplTest.class");
-
-        ServletContext servletContext = newServletContext();
-
-        expect(servletContext.getResource(path)).andReturn(url);
-
-        replay();
-
-        URL result = new ContextImpl(servletContext).getResource(path);
-
-        assertSame(result, url);
-
-        verify();
-    }
-
-    @Test
-    public void get_resource_exception() throws Exception
-    {
-        String path = "/foo";
-        Throwable t = new MalformedURLException("/foo is not a URL.");
-
-        ServletContext servletContext = newServletContext();
-
-        expect(servletContext.getResource(path)).andThrow(t);
-
-        replay();
-
-        try
-        {
-            new ContextImpl(servletContext).getResource(path);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "java.net.MalformedURLException: /foo is not a URL.");
-            assertSame(ex.getCause(), t);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_resource_paths() throws Exception
-    {
-        ServletContext servletContext = newServletContext();
-
-        train_getResourcePaths(servletContext, "/foo", "/foo/alpha.tml", "/foo/beta/", "/foo/gamma.tml");
-        train_getResourcePaths(servletContext, "/foo/beta/", "/foo/beta/b.tml", "/foo/beta/a.tml", "/foo/beta/c/");
-        train_getResourcePaths(servletContext, "/foo/beta/c/", "/foo/beta/c/c.tml");
-
-        replay();
-
-        List<String> actual = new ContextImpl(servletContext).getResourcePaths("/foo");
-
-        assertEquals(actual, Arrays.asList("/foo/alpha.tml", "/foo/beta/a.tml", "/foo/beta/b.tml", "/foo/beta/c/c.tml",
-                                           "/foo/gamma.tml"));
-
-        verify();
-    }
-
-    @Test
-    public void get_attribute()
-    {
-        String name = "foo";
-        Object value = new Object();
-
-        ServletContext servletContext = newServletContext();
-
-        expect(servletContext.getAttribute(name)).andReturn(value);
-
-        replay();
-
-        Context context = new ContextImpl(servletContext);
-
-        assertSame(context.getAttribute(name), value);
-
-        verify();
-    }
-
-    /**
-     * Tomcat 5.5.20 appears to sometimes return null if it can't find a match.
-     */
-    @Test
-    public void ignore_null_from_get_resource_paths() throws Exception
-    {
-        ServletContext servletContext = newServletContext();
-
-        expect(servletContext.getResourcePaths("/foo")).andReturn(null);
-
-        replay();
-
-        List<String> actual = new ContextImpl(servletContext).getResourcePaths("/foo");
-
-        assertTrue(actual.isEmpty());
-
-        verify();
-
-    }
-
-    @Test
-    public void get_real_file_exists() throws IOException
-    {
-        String path = "/foo.gif";
-        File file = File.createTempFile("foo", "gif");
-        String realPath = file.getPath();
-
-        ServletContext servletContext = newServletContext();
-
-        train_getRealPath(servletContext, path, realPath);
-
-        replay();
-
-        Context c = new ContextImpl(servletContext);
-
-        File f = c.getRealFile(path);
-
-        assertEquals(f, file);
-
-
-        verify();
-    }
-
-    @Test
-    public void get_real_file_missing()
-    {
-        String path = "/foo.gif";
-
-        ServletContext servletContext = newServletContext();
-
-        train_getRealPath(servletContext, path, null);
-
-        replay();
-
-        Context c = new ContextImpl(servletContext);
-
-        assertNull(c.getRealFile(path));
-
-        verify();
-    }
-
-    private void train_getRealPath(ServletContext servletContext, String path, String realPath)
-    {
-        expect(servletContext.getRealPath(path)).andReturn(realPath);
-    }
-
-    protected final ServletContext newServletContext()
-    {
-        return newMock(ServletContext.class);
-    }
-
-    protected final void train_getResourcePaths(ServletContext context, String path, String... paths)
-    {
-        Set<String> set = CollectionFactory.newSet(Arrays.asList(paths));
-
-        expect(context.getResourcePaths(path)).andReturn(set);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java
deleted file mode 100644
index 08a032b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextResourceTest.java
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.services.Context;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.net.URL;
-
-public class ContextResourceTest extends InternalBaseTestCase
-{
-    @Test
-    public void get_url_no_real_file() throws Exception
-    {
-        String path = "/foo/Bar.txt";
-        URL url = getClass().getResource("ContextResourceTest.class");
-
-        Context context = mockContext();
-
-        expect(context.getRealFile(path)).andReturn(null);
-
-        expect(context.getResource("/foo/Bar.txt")).andReturn(url);
-
-        replay();
-
-        Resource r = new ContextResource(context, "foo/Bar.txt");
-
-        assertSame(r.toURL(), url);
-
-        verify();
-    }
-
-    @Test
-    public void get_url_file_exists() throws Exception
-    {
-        File f = File.createTempFile("Bar", ".txt");
-
-        String path = "/foo/Bar.txt";
-
-        Context context = mockContext();
-
-        expect(context.getRealFile(path)).andReturn(f);
-
-        replay();
-
-        Resource r = new ContextResource(context, "foo/Bar.txt");
-
-        assertEquals(r.toURL(), f.toURL());
-
-        verify();
-    }
-
-    @Test
-    public void to_string()
-    {
-        Context context = mockContext();
-
-        replay();
-
-        Resource r = new ContextResource(context, "foo/Bar.txt");
-
-        assertEquals(r.toString(), "context:foo/Bar.txt");
-
-        verify();
-    }
-
-    @Test
-    public void hash_code()
-    {
-        Context context1 = mockContext();
-        Context context2 = mockContext();
-
-        replay();
-
-        Resource r1 = new ContextResource(context1, "foo");
-        Resource r2 = new ContextResource(context1, "foo");
-        Resource r3 = new ContextResource(context2, "foo");
-        Resource r4 = new ContextResource(context1, "bar");
-
-        assertTrue(r1.hashCode() == r2.hashCode());
-        assertFalse(r1.hashCode() == r3.hashCode());
-        assertFalse(r1.hashCode() == r4.hashCode());
-
-        verify();
-    }
-
-    @Test
-    public void equals()
-    {
-        Context context1 = mockContext();
-        Context context2 = mockContext();
-        Resource r = mockResource();
-
-        replay();
-
-        Resource r1 = new ContextResource(context1, "foo");
-        Resource r2 = new ContextResource(context1, "foo");
-        Resource r3 = new ContextResource(context2, "foo");
-        Resource r4 = new ContextResource(context1, "bar");
-
-        assertTrue(r1.equals(r2));
-        assertFalse(r1.equals(r3));
-        assertFalse(r1.equals(r4));
-
-        assertFalse(r1.equals(null));
-        assertTrue(r1.equals(r1));
-
-        assertFalse(r1.equals(r));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextValueEncoderImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextValueEncoderImplTest.java
deleted file mode 100644
index e51ce69..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ContextValueEncoderImplTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ContextValueEncoder;
-import org.apache.tapestry5.services.ValueEncoderSource;
-import org.testng.annotations.Test;
-
-public class ContextValueEncoderImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void to_client()
-    {
-        ValueEncoder valueEncoder = mockValueEncoder();
-        ValueEncoderSource source = mockValueEncoderSource();
-
-        Long value = 23L;
-        String encoded = "twentythree";
-
-
-        train_getValueEncoder(source, Long.class, valueEncoder);
-        train_toClient(valueEncoder, value, encoded);
-
-        replay();
-
-        ContextValueEncoder cve = new ContextValueEncoderImpl(source);
-
-        assertSame(cve.toClient(value), encoded);
-
-        verify();
-    }
-
-
-    @Test
-    public void to_value()
-    {
-        ValueEncoder valueEncoder = mockValueEncoder();
-        ValueEncoderSource source = mockValueEncoderSource();
-
-        Long value = 23L;
-        String clientValue = "twentythree";
-
-
-        train_getValueEncoder(source, Long.class, valueEncoder);
-        train_toValue(valueEncoder, clientValue, value);
-
-        replay();
-
-        ContextValueEncoder cve = new ContextValueEncoderImpl(source);
-
-        assertSame(cve.toValue(Long.class, clientValue), value);
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java
deleted file mode 100644
index 844119c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/CookiesImplTest.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.TestableRequestImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.Cookie;
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Tests for {@link org.apache.tapestry5.internal.services.CookiesImpl}.
- */
-@Test
-public class CookiesImplTest extends Assert
-{
-    private static class ComparableCookie extends Cookie
-    {
-        public ComparableCookie(String name, String value, int maxAge)
-        {
-            super(name, value);
-            setMaxAge(maxAge);
-        }
-
-        @Override
-        public boolean equals(Object obj)
-        {
-            Cookie c = (Cookie) obj;
-
-            return equals(getName(), c.getName()) && equals(getValue(), c.getValue())
-                    && equals(getPath(), c.getPath()) && getMaxAge() == c.getMaxAge()
-                    && equals(getDomain(), c.getDomain());
-        }
-
-        private boolean equals(Object value, Object other)
-        {
-            return value == other || (value != null && value.equals(other));
-        }
-    }
-
-    private CookieSource newCookieSource(final String[] nameValues)
-    {
-        return new CookieSource()
-        {
-            public Cookie[] getCookies()
-            {
-
-                Cookie[] cookies = null;
-
-                if (nameValues != null)
-                {
-
-                    List<Cookie> l = new ArrayList<Cookie>();
-
-                    for (int i = 0; i < nameValues.length; i += 2)
-                    {
-                        String name = nameValues[i];
-                        String value = nameValues[i + 1];
-
-                        Cookie c = new Cookie(name, value);
-
-                        l.add(c);
-                    }
-
-                    cookies = l.toArray(new Cookie[l.size()]);
-                }
-                return cookies;
-            }
-        };
-    }
-
-    private void attempt(String name, String expected, String[] nameValues)
-    {
-        // In seconds
-        final int ONE_WEEK = 7 * 24 * 60 * 60;
-        CookiesImpl cs = new CookiesImpl(null, newCookieSource(nameValues), null, ONE_WEEK);
-        String actual = cs.readCookieValue(name);
-        assertEquals(actual, expected);
-    }
-
-    public void test_No_Cookies()
-    {
-        attempt("foo", null, null);
-    }
-
-    public void test_Match()
-    {
-        attempt("fred", "flintstone", new String[] {"barney", "rubble", "fred", "flintstone"});
-    }
-
-    public void test_No_Match()
-    {
-        attempt("foo", null, new String[] {"bar", "baz"});
-    }
-
-    public void test_Write_Cookie_Domain()
-    {
-        List<Cookie> cookies = CollectionFactory.newList();
-        CookiesImpl cs = createCookiesFixture("/context", cookies);
-
-        cs.writeDomainCookieValue("foo", "bar", "fobar.com", 1234);
-        Cookie expectedCookie = new ComparableCookie("foo", "bar", 1234);
-        expectedCookie.setPath("/context/");
-        expectedCookie.setDomain("fobar.com");
-        assertEquals(cookies.size(), 1);
-        assertEquals(cookies.get(0), expectedCookie);
-    }
-
-    private CookiesImpl createCookiesFixture(String contextPath, final List<Cookie> cookies)
-    {
-        return new CookiesImpl(new TestableRequestImpl(contextPath), null, new CookieSink()
-        {
-            public void addCookie(Cookie cookie)
-            {
-                cookies.add(cookie);
-            }
-        }, 1000l * 1000l);
-    }
-
-    public void test_Write_Cookie_With_Max_Age()
-    {
-        final List<Cookie> cookies = CollectionFactory.newList();
-        CookiesImpl cs = createCookiesFixture("/ctx", cookies);
-
-        cs.writeCookieValue("foo", "bar", -1);
-        Cookie expectedCookie = new ComparableCookie("foo", "bar", -1);
-        expectedCookie.setPath("/ctx/");
-        assertEquals(cookies.size(), 1);
-        assertEquals(cookies.get(0), expectedCookie);
-    }
-
-    public void test_Write_Cookie()
-    {
-        final List<Cookie> cookies = CollectionFactory.newList();
-        CookiesImpl cs = createCookiesFixture("/ctx", cookies);
-
-        cs.writeCookieValue("foo", "bar");
-        Cookie expectedCookie = new ComparableCookie("foo", "bar", 1000);
-        expectedCookie.setPath("/ctx/");
-        assertEquals(cookies.size(), 1);
-        assertEquals(cookies.get(0), expectedCookie);
-    }
-
-    public void test_Remove_Cookie()
-    {
-        final List<Cookie> cookies = CollectionFactory.newList();
-        CookiesImpl cs = createCookiesFixture("/ctx", cookies);
-
-        cs.removeCookieValue("foo");
-        Cookie expectedCookie = new ComparableCookie("foo", null, 0);
-        expectedCookie.setPath("/ctx/");
-        assertEquals(cookies.size(), 1);
-        assertEquals(cookies.get(0), expectedCookie);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DocumentLinkerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DocumentLinkerImplTest.java
deleted file mode 100644
index 335f7cd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/DocumentLinkerImplTest.java
+++ /dev/null
@@ -1,390 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.javascript.StylesheetOptions;
-import org.testng.annotations.Test;
-
-public class DocumentLinkerImplTest extends InternalBaseTestCase
-{
-    private void check(Document document, String file) throws Exception
-    {
-        assertEquals(document.toString(), readFile(file));
-    }
-
-    @Test
-    public void exception_if_missing_html_root_element_and_javascript()
-    {
-        Document document = new Document();
-
-        document.newRootElement("not-html").text("not an HTML document");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        // Only checked if there's something to link.
-
-        linker.addScriptLink("foo.js");
-        linker.addScript(InitializationPriority.NORMAL, "doSomething();");
-
-        try
-        {
-            linker.updateDocument(document);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "The root element of the rendered document was <not-html>, not <html>. A root element of <html> is needed when linking JavaScript and stylesheet resources.");
-        }
-    }
-
-    @Test
-    public void logged_error_if_missing_html_element_and_css()
-    {
-        Document document = new Document();
-
-        document.newRootElement("not-html").text("not an HTML document");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        // Only checked if there's something to link.
-
-        linker.addStylesheetLink(new StylesheetLink("style.css"));
-
-        replay();
-
-        linker.updateDocument(document);
-
-        // Check that document is unchanged.
-
-        assertEquals(document.toString(), "<not-html>not an HTML document</not-html>");
-
-        verify();
-    }
-
-    @Test
-    public void missing_root_element_is_a_noop()
-    {
-        Document document = new Document();
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScriptLink("foo.js");
-        linker.addScript(InitializationPriority.NORMAL, "doSomething();");
-
-        // No root element is not an error, even though there's work to do.
-        // The failure to render is reported elsewhere.
-        linker.updateDocument(document);
-    }
-
-    @Test
-    public void add_script_links() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be updated with scripts.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScriptLink("foo.js");
-        linker.addScriptLink("bar/baz.js");
-        linker.addScript(InitializationPriority.NORMAL, "pageInitialization();");
-
-        linker.updateDocument(document);
-
-        check(document, "add_script_links.txt");
-    }
-
-    /**
-     * TAP5-446
-     */
-    @Test
-    public void include_generator_meta() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be marked with generator meta.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(false, "1.2.3", true);
-
-        linker.updateDocument(document);
-
-        check(document, "include_generator_meta.txt");
-    }
-
-    /**
-     * TAP5-584
-     */
-    @Test
-    public void omit_generator_meta_on_no_html_root() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("no_html").text("Generator meta only added if root is html tag.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(false, "1.2.3", true);
-
-        linker.updateDocument(document);
-
-        check(document, "omit_generator_meta_on_no_html_root.txt");
-    }
-
-    @Test
-    public void empty_document_with_scripts_at_top() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addStylesheetLink(new StylesheetLink("style.css", new StylesheetOptions("print")));
-        linker.addScriptLink("foo.js");
-        linker.addScriptLink("bar/baz.js");
-        linker.addScript(InitializationPriority.IMMEDIATE, "pageInitialization();");
-
-        linker.updateDocument(document);
-
-        check(document, "empty_document_with_scripts_at_top.txt");
-    }
-
-    @Test
-    public void add_script_links_at_top() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be updated with scripts at top.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScriptLink("foo.js");
-        linker.addScriptLink("bar/baz.js");
-        linker.addScript(InitializationPriority.NORMAL, "pageInitialization();");
-
-        linker.updateDocument(document);
-
-        check(document, "add_script_links_at_top.txt");
-    }
-
-    @Test
-    public void add_style_links() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be updated with styles.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addStylesheetLink(new StylesheetLink("foo.css"));
-        linker.addStylesheetLink(new StylesheetLink("bar/baz.css", new StylesheetOptions("print")));
-
-        linker.updateDocument(document);
-
-        check(document, "add_style_links.txt");
-    }
-
-    @Test
-    public void existing_head_used_if_present() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html").element("head").comment(" existing head ").getParent().element("body").text(
-                "body content");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addStylesheetLink(new StylesheetLink("foo.css"));
-
-        linker.updateDocument(document);
-
-        check(document, "existing_head_used_if_present.txt");
-    }
-
-    @Test
-    public void add_script() throws Exception
-    {
-        Document document = new Document();
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be updated with scripts.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScript(InitializationPriority.IMMEDIATE, "doSomething();");
-        linker.addScript(InitializationPriority.IMMEDIATE, "doSomethingElse();");
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("add_script.txt").trim());
-    }
-
-    /**
-     * Perhaps the linker should create the &lt;body&gt; element in this case? In the meantime,
-     */
-    @Test
-    public void no_body_element() throws Exception
-    {
-        Document document = new Document(new XMLMarkupModel());
-
-        document.newRootElement("html").element("notbody").element("p").text("Ready to be updated with scripts.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScriptLink("foo.js");
-
-        linker.updateDocument(document);
-
-        check(document, "no_body_element.txt");
-    }
-
-    @Test
-    public void script_written_raw() throws Exception
-    {
-        Document document = new Document();
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be updated with scripts.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScript(InitializationPriority.IMMEDIATE, "for (var i = 0; i < 5; i++)  { doIt(i); }");
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("script_written_raw.txt").trim());
-    }
-
-    @Test
-    public void non_asset_script_link_disables_aggregation() throws Exception
-    {
-        Document document = new Document();
-
-        document.newRootElement("html").element("body").element("p").text("Ready to be updated with scripts.");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScriptLink("/context/foo.js");
-
-        linker.updateDocument(document);
-
-        Element script = document.getRootElement().find("head/script");
-
-        String assetURL = script.getAttribute("src");
-
-        assertEquals(assetURL, "/context/foo.js");
-    }
-
-    @Test
-    public void added_scripts_go_before_existing_script() throws Exception
-    {
-        Document document = new Document();
-
-        Element head = document.newRootElement("html").element("head");
-
-        head.element("meta");
-        head.element("script");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addScriptLink("/foo.js");
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("added_scripts_go_before_existing_script.txt"));
-    }
-
-    @Test
-    public void immediate_initialization() throws Exception
-    {
-        Document document = new Document();
-
-        Element head = document.newRootElement("html").element("head");
-
-        head.element("meta");
-        head.element("script");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.setInitialization(InitializationPriority.IMMEDIATE, new JSONObject("fred", "barney"));
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("immediate_initialization.txt"));
-    }
-
-    @Test
-    public void pretty_print_initialization() throws Exception
-    {
-        Document document = new Document();
-
-        Element head = document.newRootElement("html").element("head");
-
-        head.element("meta");
-        head.element("script");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", false);
-
-        linker.setInitialization(InitializationPriority.IMMEDIATE, new JSONObject().put("fred", new JSONArray("barney",
-                "wilma", "betty")));
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("pretty_print_initialization.txt"));
-    }
-
-    @Test
-    public void other_initialization() throws Exception
-    {
-        Document document = new Document();
-
-        Element head = document.newRootElement("html").element("head");
-
-        head.element("meta");
-        head.element("script");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.setInitialization(InitializationPriority.NORMAL, new JSONObject("fred", "barney"));
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("other_initialization.txt"));
-    }
-
-    @Test
-    public void ie_conditional_stylesheet() throws Exception
-    {
-        Document document = new Document();
-
-        document.newRootElement("html");
-
-        DocumentLinkerImpl linker = new DocumentLinkerImpl(true, "1.2.3", true);
-
-        linker.addStylesheetLink(new StylesheetLink("everybody.css"));
-        linker.addStylesheetLink(new StylesheetLink("just_ie.css", new StylesheetOptions(null, "IE")));
-
-        linker.updateDocument(document);
-
-        assertEquals(document.toString(), readFile("ie_conditional_stylesheet.txt"));
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EchoBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EchoBean.java
deleted file mode 100644
index feeb0d6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EchoBean.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.List;
-
-public class EchoBean
-{
-    public int storedInt;
-
-    private double storedDouble;
-
-    private String storedString;
-
-    private StringSource stringSource;
-    
-    private Number[][] storedArray;
-
-    public StringSource getStringSource()
-    {
-        return stringSource;
-    }
-
-    public void setStringSource(StringSource stringSource)
-    {
-        this.stringSource = stringSource;
-    }
-
-    public int echoInt(int value, int multiplyBy)
-    {
-        return value * multiplyBy;
-    }
-
-    public double echoDouble(double value, double multiplyBy)
-    {
-        return value * multiplyBy;
-    }
-
-    public int getStoredInt()
-    {
-        return storedInt;
-    }
-
-    public void setStoredInt(int storedInt)
-    {
-        this.storedInt = storedInt;
-    }
-
-    public double getStoredDouble()
-    {
-        return storedDouble;
-    }
-
-    public void setStoredDouble(double storedDouble)
-    {
-        this.storedDouble = storedDouble;
-    }
-
-    public String getStoredString()
-    {
-        return storedString;
-    }
-
-    public void setStoredString(String storedString)
-    {
-        this.storedString = storedString;
-    }
-    
-
-    public Number[][] getStoredArray()
-    {
-        return storedArray;
-    }
-
-    public void setStoredArray(Number[][] storedArray)
-    {
-        this.storedArray = storedArray;
-    }
-
-    public String echoString(String value, String before, String after)
-    {
-        return String.format("%s - %s - %s", before, value, after);
-    }
-
-    public List echoList(List input)
-    {
-        return input;
-    }
-    
-    public Number[][] echoArray(Number[][] input)
-    {
-        return input;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImplTest.java
deleted file mode 100644
index b910d97..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EndOfRequestEventHubImplTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.events.EndOfRequestListener;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-public class EndOfRequestEventHubImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void add_and_notify()
-    {
-        EndOfRequestEventHub hub = new EndOfRequestEventHubImpl();
-
-        EndOfRequestListener listener = newMock(EndOfRequestListener.class);
-
-        listener.requestDidComplete();
-
-        replay();
-
-        hub.addEndOfRequestListener(listener);
-
-        hub.fire();
-
-        verify();
-    }
-
-
-    @Test
-    public void add_remove_notify()
-    {
-        EndOfRequestEventHub hub = new EndOfRequestEventHubImpl();
-
-        EndOfRequestListener listener = newMock(EndOfRequestListener.class);
-
-        replay();
-
-        hub.addEndOfRequestListener(listener);
-        hub.removeEndOfRequestListener(listener);
-
-        hub.fire();
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnumBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnumBean.java
deleted file mode 100644
index 655e417..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnumBean.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.parser.TokenType;
-
-public class EnumBean
-{
-    private TokenType token;
-
-    public TokenType getToken()
-    {
-        return token;
-    }
-
-    public void setToken(TokenType token)
-    {
-        this.token = token;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
deleted file mode 100644
index 81b8a717..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentImplTest.java
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import java.util.List;
-import java.util.Map;
-import java.util.NoSuchElementException;
-
-public class EnvironmentImplTest extends TapestryTestCase
-{
-    @Test
-    public void peek_when_empty_returns_null()
-    {
-        Environment e = new EnvironmentImpl();
-
-        assertNull(e.peek(Runnable.class));
-        assertNull(e.peek(Map.class));
-    }
-
-    @Test
-    public void push_and_pop()
-    {
-        Environment e = new EnvironmentImpl();
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        assertNull(e.push(Runnable.class, r1));
-
-        assertSame(r1, e.peek(Runnable.class));
-
-        assertSame(r1, e.push(Runnable.class, r2));
-
-        assertSame(r2, e.peek(Runnable.class));
-
-        assertSame(r2, e.pop(Runnable.class));
-        assertSame(r1, e.pop(Runnable.class));
-
-        verify();
-    }
-
-    @Test
-    public void clear()
-    {
-        Environment e = new EnvironmentImpl();
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        e.push(Runnable.class, r1);
-        e.push(Runnable.class, r2);
-
-        e.clear();
-
-        assertNull(e.peek(Runnable.class));
-
-        verify();
-    }
-
-    @Test
-    public void pop_when_empty_is_error()
-    {
-        Environment e = new EnvironmentImpl();
-
-        try
-        {
-            e.pop(Runnable.class);
-            unreachable();
-        }
-        catch (NoSuchElementException ex)
-        {
-        }
-    }
-
-    @Test
-    public void peek_required_when_available()
-    {
-        Environment e = new EnvironmentImpl();
-        Location l = mockLocation();
-
-        replay();
-
-        e.push(Location.class, l);
-
-        assertSame(l, e.peekRequired(Location.class));
-
-        verify();
-    }
-
-    @Test
-    public void peek_required_without_value_is_error()
-    {
-        Environment e = new EnvironmentImpl();
-        Location l = mockLocation();
-        Component c = mockComponent();
-
-        replay();
-
-        e.push(Location.class, l);
-        e.push(Component.class, c);
-
-        try
-        {
-            e.peekRequired(List.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "No object of type java.util.List is available from the Environment.  Available types are org.apache.tapestry5.ioc.Location, org.apache.tapestry5.runtime.Component.");
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java
deleted file mode 100644
index ea41dea..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EnvironmentalShadowBuilderImplTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.services.Environment;
-import org.apache.tapestry5.services.EnvironmentalShadowBuilder;
-import org.testng.annotations.Test;
-
-public class EnvironmentalShadowBuilderImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void proxy_class()
-    {
-        RenderSupport delegate = newMock(RenderSupport.class);
-        ClassFactory factory = new ClassFactoryImpl();
-        Environment env = mockEnvironment();
-
-        train_peekRequired(env, RenderSupport.class, delegate);
-
-        expect(delegate.allocateClientId("fred")).andReturn("barney");
-
-        replay();
-
-        EnvironmentalShadowBuilder builder = new EnvironmentalShadowBuilderImpl(factory, env);
-
-        RenderSupport proxy = builder.build(RenderSupport.class);
-
-        assertEquals(proxy.allocateClientId("fred"), "barney");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java
deleted file mode 100644
index 78e77ff..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/EventContextTests.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class EventContextTests extends InternalBaseTestCase
-{
-    private TypeCoercer typeCoercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        typeCoercer = getService(TypeCoercer.class);
-    }
-
-    @Test
-    public void array_event_context_to_strings()
-    {
-        EventContext ec = new ArrayEventContext(typeCoercer, 1, 2.3);
-
-        assertEquals(ec.toStrings(), new String[]
-        { "1", "2.3" });
-    }
-
-    @Test
-    public void empty_event_context_to_strings()
-    {
-        assertEquals(new EmptyEventContext().toStrings(), new String[0]);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java
deleted file mode 100644
index fb448ca..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldTranslatorSourceImplTest.java
+++ /dev/null
@@ -1,293 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.beaneditor.Translate;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.root.FieldComponent;
-import org.apache.tapestry5.services.FieldTranslatorSource;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.TranslatorSource;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Fills in some gaps that are not currently tested by the integration tests.
- */
-@SuppressWarnings("unchecked")
-public class FieldTranslatorSourceImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void create_default_property_type_null()
-    {
-        Field field = mockField();
-        Messages messages = mockMessages();
-        Locale locale = Locale.ENGLISH;
-
-        replay();
-
-        FieldTranslatorSource source = new FieldTranslatorSourceImpl(null, null, null);
-
-        assertNull(source.createDefaultTranslator(field, "override", messages, locale, null, null));
-
-        verify();
-    }
-
-    @Test
-    public void create_default_translator_not_found_for_type()
-    {
-        Field field = mockField();
-        Messages messages = mockMessages();
-        Locale locale = Locale.ENGLISH;
-        Class propertyType = Map.class;
-        TranslatorSource ts = mockTranslatorSource();
-        AnnotationProvider ap = mockAnnotationProvider(null);
-
-        train_findByType(ts, propertyType, null);
-
-        replay();
-
-        FieldTranslatorSource source = new FieldTranslatorSourceImpl(ts, null, null);
-
-        assertNull(source.createDefaultTranslator(field, "override", messages, locale, propertyType, ap));
-
-        verify();
-    }
-
-    @Test
-    public void create_default_translator_with_annotation()
-    {
-        TranslatorSource ts = mockTranslatorSource();
-        AnnotationProvider ap = mockAnnotationProvider("fred");
-        Translator t = mockTranslator();
-
-        expect(ts.get("fred")).andReturn(t);
-
-        replay();
-
-        FieldTranslatorSourceImpl source = new FieldTranslatorSourceImpl(ts, null, null);
-
-        assertSame(source.findTranslator(Map.class, ap), t);
-
-        verify();
-    }
-
-    private AnnotationProvider mockAnnotationProvider(String translatorName)
-    {
-        AnnotationProvider ap = mockAnnotationProvider();
-
-        if (translatorName == null)
-        {
-            train_getAnnotation(ap, Translate.class, null);
-        }
-        else
-        {
-            Translate t = newMock(Translate.class);
-            expect(t.value()).andReturn(translatorName).atLeastOnce();
-            train_getAnnotation(ap, Translate.class, t);
-        }
-
-        return ap;
-    }
-
-    @Test
-    public void create_default_translator_with_name()
-    {
-        Field field = mockField();
-        Messages messages = mockMessages();
-        Locale locale = Locale.ENGLISH;
-        Class propertyType = Map.class;
-        TranslatorSource ts = mockTranslatorSource();
-        ValidationMessagesSource vms = mockValidationMessagesSource();
-        FormSupport fs = mockFormSupport();
-        Translator translator = mockTranslator("maptrans", Map.class);
-        Messages validationMessages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        MarkupWriter writer = mockMarkupWriter();
-        String label = "Field Label";
-        String message = "Woops, did it again.";
-        AnnotationProvider ap = mockAnnotationProvider(null);
-
-        train_findByType(ts, propertyType, translator);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_contains(messages, "myform-myfield-maptrans-message", false);
-        train_contains(messages, "myfield-maptrans-message", false);
-        train_getValidationMessages(vms, locale, validationMessages);
-
-        train_getMessageKey(translator, "mykey");
-        train_getMessageFormatter(validationMessages, "mykey", formatter);
-        train_getLabel(field, label);
-        train_format(formatter, message, label);
-
-        translator.render(field, message, writer, fs);
-
-        replay();
-
-        FieldTranslatorSource source = new FieldTranslatorSourceImpl(ts, vms, fs);
-
-        FieldTranslator ft = source.createDefaultTranslator(field, "myfield", messages, locale, propertyType, ap);
-
-        assertEquals(ft.getType(), Map.class);
-
-        ft.render(writer);
-
-        verify();
-    }
-
-    @Test
-    public void create_default_translator_with_override_message()
-    {
-        Field field = mockField();
-        Messages messages = mockMessages();
-        Locale locale = Locale.ENGLISH;
-        Class propertyType = Map.class;
-        TranslatorSource ts = mockTranslatorSource();
-        ValidationMessagesSource vms = mockValidationMessagesSource();
-        FormSupport fs = mockFormSupport();
-        Translator translator = mockTranslator("maptrans", Map.class);
-        MessageFormatter formatter = mockMessageFormatter();
-        MarkupWriter writer = mockMarkupWriter();
-        String label = "My Label";
-        String message = "Formatted Message";
-        AnnotationProvider ap = mockAnnotationProvider(null);
-
-        train_findByType(ts, propertyType, translator);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_contains(messages, "myform-myfield-maptrans-message", false);
-        train_contains(messages, "myfield-maptrans-message", true);
-        train_getMessageFormatter(messages, "myfield-maptrans-message", formatter);
-
-        train_getLabel(field, label);
-        train_format(formatter, message, label);
-
-        translator.render(field, message, writer, fs);
-
-        replay();
-
-        FieldTranslatorSource source = new FieldTranslatorSourceImpl(ts, vms, fs);
-
-        FieldTranslator ft = source.createDefaultTranslator(field, "myfield", messages, locale, propertyType, ap);
-
-        assertEquals(ft.getType(), Map.class);
-
-        ft.render(writer);
-
-        verify();
-    }
-
-    @Test
-    public void create_default_translator_with_per_form_override_message()
-    {
-        Field field = mockField();
-        Messages messages = mockMessages();
-        Locale locale = Locale.ENGLISH;
-        Class propertyType = Map.class;
-        TranslatorSource ts = mockTranslatorSource();
-        ValidationMessagesSource vms = mockValidationMessagesSource();
-        FormSupport fs = mockFormSupport();
-        Translator translator = mockTranslator("maptrans", Map.class);
-        MessageFormatter formatter = mockMessageFormatter();
-        MarkupWriter writer = mockMarkupWriter();
-        String label = "My Label";
-        String message = "Formatted Message";
-        AnnotationProvider ap = mockAnnotationProvider(null);
-
-        train_findByType(ts, propertyType, translator);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_contains(messages, "myform-myfield-maptrans-message", true);
-        train_getMessageFormatter(messages, "myform-myfield-maptrans-message", formatter);
-
-        train_getLabel(field, label);
-        train_format(formatter, message, label);
-
-        translator.render(field, message, writer, fs);
-
-        replay();
-
-        FieldTranslatorSource source = new FieldTranslatorSourceImpl(ts, vms, fs);
-
-        FieldTranslator ft = source.createDefaultTranslator(field, "myfield", messages, locale, propertyType, ap);
-
-        assertEquals(ft.getType(), Map.class);
-
-        ft.render(writer);
-
-        verify();
-    }
-
-    @Test
-    public void create_translator_from_translator_name()
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldComponent field = mockFieldComponent();
-        Messages messages = mockMessages();
-        Locale locale = Locale.ENGLISH;
-        TranslatorSource ts = mockTranslatorSource();
-        ValidationMessagesSource vms = mockValidationMessagesSource();
-        FormSupport fs = mockFormSupport();
-        Translator translator = mockTranslator("map", Map.class);
-        Messages validationMessages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        MarkupWriter writer = mockMarkupWriter();
-        String label = "My Label";
-        String message = "Formatted Message";
-
-        train_getComponent(resources, field);
-        train_getId(resources, "myfield");
-        train_getContainerMessages(resources, messages);
-        train_getLocale(resources, locale);
-
-        train_get(ts, "map", translator);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_contains(messages, "myform-myfield-map-message", false);
-        train_contains(messages, "myfield-map-message", false);
-        train_getValidationMessages(vms, locale, validationMessages);
-
-        train_getMessageKey(translator, "mykey");
-        train_getMessageFormatter(validationMessages, "mykey", formatter);
-
-        train_getLabel(field, label);
-        train_format(formatter, message, label);
-
-        translator.render(field, message, writer, fs);
-
-        replay();
-
-        FieldTranslatorSource source = new FieldTranslatorSourceImpl(ts, vms, fs);
-
-        FieldTranslator ft = source.createTranslator(resources, "map");
-
-        assertEquals(ft.getType(), Map.class);
-
-        ft.render(writer);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java
deleted file mode 100644
index adcfa0b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidationSupportImplTest.java
+++ /dev/null
@@ -1,395 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.corelib.internal.InternalMessages;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-import org.easymock.EasyMock;
-import static org.easymock.EasyMock.eq;
-import org.easymock.IAnswer;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class FieldValidationSupportImplTest extends InternalBaseTestCase
-{
-    private TypeCoercer typeCoercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        typeCoercer = getService(TypeCoercer.class);
-    }
-
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void parse_client_via_event() throws ValidationException
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        String clientValue = "abracadabra";
-
-        IAnswer answer = new IAnswer()
-        {
-            @SuppressWarnings({"unchecked"})
-            public Object answer() throws Throwable
-            {
-                Object[] args = EasyMock.getCurrentArguments();
-                Object[] context = (Object[]) args[1];
-                ComponentEventCallback handler = (ComponentEventCallback) args[2];
-
-                // Pretend that the parser event handler converted it to upper case.
-
-                return handler.handleResult(context[0].toString().toUpperCase());
-            }
-        };
-
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(EventConstants.PARSE_CLIENT),
-                                               EasyMock.isA(Object[].class),
-                                               EasyMock.isA(ComponentEventCallback.class))).andAnswer(answer);
-
-
-        replay();
-
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        Object actual = support.parseClient(clientValue, resources, translator, nullFieldStrategy);
-
-        assertEquals(actual, clientValue.toUpperCase());
-
-        verify();
-    }
-
-    @Test
-    public void parse_client_for_null_value_returns_null_and_bypasses_events_and_translator() throws Exception
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        String clientValue = "";
-
-        train_replaceFromClient(nullFieldStrategy, "");
-
-        ignoreEvent(resources, EventConstants.PARSE_CLIENT, clientValue);
-
-        expect(translator.parse(clientValue)).andReturn("");
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        Object actual = support.parseClient(clientValue, resources, translator, nullFieldStrategy);
-
-        assertEquals(actual, "");
-
-        verify();
-    }
-
-    private void ignoreEvent(ComponentResources resources, String event, Object... context)
-    {
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(event),
-                                               EasyMock.aryEq(context),
-                                               EasyMock.isA(ComponentEventCallback.class))).andReturn(false);
-    }
-
-    protected final void train_replaceFromClient(NullFieldStrategy nullFieldStrategy, String value)
-    {
-        expect(nullFieldStrategy.replaceFromClient()).andReturn(value).atLeastOnce();
-    }
-
-    @SuppressWarnings({"ThrowableInstanceNeverThrown"})
-    @Test
-    public void parse_client_event_handler_throws_validation_exception() throws Exception
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        ValidationException ve = new ValidationException("Just didn't feel right.");
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        String clientValue = "abracadabra";
-
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(EventConstants.PARSE_CLIENT),
-                                               EasyMock.isA(Object[].class),
-                                               EasyMock.isA(ComponentEventCallback.class))).andThrow(
-                new RuntimeException(ve));
-
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        try
-        {
-            support.parseClient(clientValue, resources, translator, nullFieldStrategy);
-
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertSame(ex, ve);
-        }
-
-
-        verify();
-    }
-
-    @SuppressWarnings({"ThrowableInstanceNeverThrown"})
-    @Test
-    public void parse_client_event_handler_fails_with_other_exception() throws Exception
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        RuntimeException re = new RuntimeException("Just didn't feel right.");
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        String clientValue = "abracadabra";
-
-
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(EventConstants.PARSE_CLIENT),
-                                               EasyMock.isA(Object[].class),
-                                               EasyMock.isA(ComponentEventCallback.class))).andThrow(re);
-
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        try
-        {
-            support.parseClient(clientValue, resources, translator, nullFieldStrategy);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertSame(ex, re);
-        }
-
-
-        verify();
-    }
-
-    @Test
-    public void parse_client_via_translator() throws ValidationException
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        ValidationMessagesSource source = mockValidationMessagesSource();
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        String clientValue = "abracadabra";
-
-        ignoreEvent(resources, EventConstants.PARSE_CLIENT, clientValue);
-
-        expect(translator.parse(clientValue)).andReturn("foobar");
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        Object actual = support.parseClient(clientValue, resources, translator, nullFieldStrategy);
-
-        assertEquals(actual, "foobar");
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void to_client_via_translator()
-    {
-        Object value = new Integer(99);
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        expect(translator.getType()).andReturn(Integer.class);
-
-        String clientValue = "abracadabra";
-
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(EventConstants.TO_CLIENT),
-                                               EasyMock.aryEq(new Object[] {value}),
-                                               EasyMock.isA(ComponentEventCallback.class))).andReturn(false);
-
-        expect(translator.toClient(value)).andReturn(clientValue);
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        String actual = support.toClient(value, resources, translator, nullFieldStrategy);
-
-        assertEquals(actual, clientValue);
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void to_client_via_event_handler() throws Exception
-    {
-        Object value = new Object();
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-        NullFieldStrategy nullFieldStrategy = mockNullFieldStrategy();
-
-        final String clientValue = "abracadabra";
-
-        IAnswer answer = new IAnswer()
-        {
-            @SuppressWarnings({"unchecked"})
-            public Object answer() throws Throwable
-            {
-                Object[] args = EasyMock.getCurrentArguments();
-                ComponentEventCallback handler = (ComponentEventCallback) args[2];
-
-                return handler.handleResult(clientValue);
-            }
-        };
-
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(EventConstants.TO_CLIENT),
-                                               EasyMock.aryEq(new Object[] {value}),
-                                               EasyMock.isA(ComponentEventCallback.class))).andAnswer(answer);
-
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(null);
-
-        String actual = support.toClient(value, resources, translator, nullFieldStrategy);
-
-        assertEquals(actual, clientValue);
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked"})
-    public void to_client_via_event_handler_returns_non_string() throws Exception
-    {
-        Object value = new Object();
-        ComponentResources resources = mockComponentResources();
-        FieldTranslator translator = mockFieldTranslator();
-
-        IAnswer answer = new IAnswer()
-        {
-            @SuppressWarnings({"unchecked"})
-            public Object answer() throws Throwable
-            {
-                Object[] args = EasyMock.getCurrentArguments();
-                ComponentEventCallback handler = (ComponentEventCallback) args[2];
-
-                // Return an innappropriate value.
-
-                return handler.handleResult(this);
-            }
-        };
-
-        EasyMock.expect(resources.triggerEvent(EasyMock.eq(EventConstants.TO_CLIENT),
-                                               EasyMock.aryEq(new Object[] {value}),
-                                               EasyMock.isA(ComponentEventCallback.class))).andAnswer(answer);
-
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(null);
-
-        try
-        {
-
-            support.toClient(value, resources, translator, null);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), InternalMessages.toClientShouldReturnString());
-        }
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void event_triggered_after_delegate_invoked() throws Exception
-    {
-        getMocksControl().checkOrder(true);
-
-        ComponentResources resources = mockComponentResources();
-        FieldValidator fv = mockFieldValidator();
-
-        Object value = new Object();
-
-        fv.validate(value);
-
-        ComponentEventCallback handler = null;
-
-        expect(resources.triggerEvent(EasyMock.eq(EventConstants.VALIDATE),
-                                      EasyMock.aryEq(new Object[] {value}), EasyMock.eq(handler))).andReturn(true);
-
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-        support.validate(value, resources, fv);
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked", "ThrowableInstanceNeverThrown"})
-    @Test
-    public void event_trigger_throws_validation_exception() throws Exception
-    {
-        ComponentResources resources = mockComponentResources();
-        FieldValidator fv = mockFieldValidator();
-
-        Object value = new Object();
-
-        ValidationException ve = new ValidationException("Bah!");
-        RuntimeException re = new RuntimeException(ve);
-
-        ComponentEventCallback handler = null;
-
-        fv.validate(value);
-
-        expect(resources.triggerEvent(eq(EventConstants.VALIDATE),
-                                      EasyMock.aryEq(new Object[] {value}), eq(handler))).andThrow(re);
-
-
-        replay();
-
-        FieldValidationSupport support = new FieldValidationSupportImpl(typeCoercer);
-
-
-        try
-        {
-            support.validate(value, resources, fv);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertSame(ex, ve);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImplTest.java
deleted file mode 100644
index 09a253b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorDefaultSourceImplTest.java
+++ /dev/null
@@ -1,161 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.FieldValidatorSource;
-import org.apache.tapestry5.services.ValidationConstraintGenerator;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class FieldValidatorDefaultSourceImplTest extends InternalBaseTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void invokes_all_constraint_generators() throws Exception
-    {
-        getMocksControl().checkOrder(true);
-
-        ValidationConstraintGenerator gen = mockValidationConstraintGenerator();
-        FieldValidator fv1 = mockFieldValidator();
-        FieldValidator fv2 = mockFieldValidator();
-        FieldValidatorSource source = mockFieldValidatorSource();
-        Class propertyType = Integer.class;
-        AnnotationProvider provider = mockAnnotationProvider();
-        String overrideId = "overrideId";
-        Messages overrideMessages = mockMessages();
-        Field field = mockField();
-        Locale locale = Locale.ENGLISH;
-        String value = "*VALUE*";
-
-        train_buildConstraints(gen, propertyType, provider, "cons1", "cons2");
-
-        train_createValidator(
-                source,
-                field,
-                "cons1",
-                null,
-                overrideId,
-                overrideMessages,
-                locale,
-                fv1);
-
-        train_createValidator(
-                source,
-                field,
-                "cons2",
-                null,
-                overrideId,
-                overrideMessages,
-                locale,
-                fv2);
-
-        fv1.validate(value);
-        fv2.validate(value);
-
-        replay();
-
-        FieldValidatorDefaultSource fieldValidatorSource = new FieldValidatorDefaultSourceImpl(gen,
-                                                                                               source);
-
-        FieldValidator composite = fieldValidatorSource.createDefaultValidator(
-                field,
-                overrideId,
-                overrideMessages,
-                locale,
-                propertyType,
-                provider);
-
-        composite.validate(value);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void validator_with_constraint() throws Exception
-    {
-        ValidationConstraintGenerator gen = mockValidationConstraintGenerator();
-        FieldValidator fv = mockFieldValidator();
-        FieldValidatorSource source = mockFieldValidatorSource();
-        Class propertyType = Integer.class;
-        AnnotationProvider provider = mockAnnotationProvider();
-        String overrideId = "overrideId";
-        Messages overrideMessages = mockMessages();
-        Field field = mockField();
-        Locale locale = Locale.ENGLISH;
-
-        train_buildConstraints(gen, propertyType, provider, "foo=bar");
-
-        train_createValidator(source, field, "foo", "bar", overrideId, overrideMessages, locale, fv);
-
-        replay();
-
-        FieldValidatorDefaultSource fieldValidatorSource = new FieldValidatorDefaultSourceImpl(gen,
-                                                                                               source);
-
-        FieldValidator composite = fieldValidatorSource.createDefaultValidator(
-                field,
-                overrideId,
-                overrideMessages,
-                locale,
-                propertyType,
-                provider);
-
-        assertSame(composite, fv);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void no_validators_at_all() throws Exception
-    {
-        ValidationConstraintGenerator gen = mockValidationConstraintGenerator();
-        FieldValidatorSource source = mockFieldValidatorSource();
-        Class propertyType = Integer.class;
-        AnnotationProvider provider = mockAnnotationProvider();
-        String overrideId = "overrideId";
-        Messages overrideMessages = mockMessages();
-        Field field = mockField();
-        Locale locale = Locale.ENGLISH;
-        String value = "*VALUE*";
-
-        train_buildConstraints(gen, propertyType, provider);
-
-        replay();
-
-        FieldValidatorDefaultSource fieldValidatorSource = new FieldValidatorDefaultSourceImpl(gen,
-                                                                                               source);
-
-        FieldValidator composite = fieldValidatorSource.createDefaultValidator(
-                field,
-                overrideId,
-                overrideMessages,
-                locale,
-                propertyType,
-                provider);
-
-        composite.validate(value);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorImplTest.java
deleted file mode 100644
index b6c4cdc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorImplTest.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.Validator;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-/**
- * Tests a few outlier cases not covered by {@link FieldValidatorSourceImplTest}.
- */
-public class FieldValidatorImplTest extends InternalBaseTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void null_value_skipped() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Validator validator = mockValidator();
-
-        train_isRequired(validator, false);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator, null);
-
-        fv.validate(null);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void blank_value_skipped() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Validator validator = mockValidator();
-
-        train_isRequired(validator, false);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator, null);
-
-        fv.validate("");
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void nonmatching_value_type_skipped() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Validator validator = mockValidator();
-        Integer value = 15;
-
-        train_isRequired(validator, true);
-        train_getValueType(validator, String.class);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator, null);
-
-        fv.validate(value);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void value_type_check_skipped_for_null_values() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Validator validator = mockValidator();
-
-        train_isRequired(validator, true);
-
-        validator.validate(field, null, formatter, null);
-
-        replay();
-
-        FieldValidator fv = new FieldValidatorImpl(field, null, formatter, validator, null);
-
-        fv.validate(null);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImplTest.java
deleted file mode 100644
index 4392182..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FieldValidatorSourceImplTest.java
+++ /dev/null
@@ -1,801 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldValidator;
-import org.apache.tapestry5.Validator;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.FieldValidatorSource;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-import org.apache.tapestry5.validator.ValidatorMacro;
-import org.easymock.EasyMock;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import static java.util.Collections.singletonMap;
-import java.util.List;
-import java.util.Locale;
-import java.util.Map;
-
-public class FieldValidatorSourceImplTest extends InternalBaseTestCase
-{
-    public interface FieldComponent extends Field, Component
-    {
-
-    }
-
-    @Test
-    public void unknown_validator_type()
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        Map<String, Validator> map = newMap();
-        ValidatorMacro macro = mockValidatorMacro();
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getLocale(resources, Locale.ENGLISH);
-        train_getContainerMessages(resources, containerMessages);
-        
-        train_alwaysNull(macro);
-
-        map.put("alpha", validator);
-        map.put("beta", validator);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, null, map, macro);
-
-        try
-        {
-            source.createValidator(field, "foo", null);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Unknown validator type 'foo'.  Configured validators are alpha, beta.");
-        }
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void validator_with_no_constraint() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-        ValidatorMacro macro = mockValidatorMacro();
-
-        Map<String, Validator> map = singletonMap("required", validator);
-
-        train_getConstraintType(validator, null);
-
-        train_getFormValidationId(fs, "form");
-
-        train_getComponentResources(field, resources);
-        
-
-        train_getId(resources, "fred");
-        train_getContainerMessages(resources, containerMessages);
-        
-        train_alwaysNull(macro);
-        
-        train_contains(containerMessages, "form-fred-required-message", false);
-        train_contains(containerMessages, "fred-required-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(validator, "key");
-        train_getMessageFormatter(messages, "key", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, null, formatter, inputValue);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidator(field, "required", null);
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void component_messages_overrides_validator_messages() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-        ValidatorMacro macro = mockValidatorMacro();
-
-        Map<String, Validator> map = singletonMap("required", validator);
-
-        train_getConstraintType(validator, null);
-
-        train_getFormValidationId(fs, "form");
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getLocale(resources, Locale.ENGLISH);
-        train_getContainerMessages(resources, containerMessages);
-        
-        train_alwaysNull(macro);
-
-        train_contains(containerMessages, "form-fred-required-message", false);
-        train_contains(containerMessages, "fred-required-message", true);
-
-        train_getMessageFormatter(containerMessages, "fred-required-message", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, null, formatter, inputValue);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidator(field, "required", null);
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    @Test
-    public void component_messages_overrides_validator_messages_per_form() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-        ValidatorMacro macro = mockValidatorMacro();
-
-        Map<String, Validator> map = singletonMap("required", validator);
-
-        train_getConstraintType(validator, null);
-
-        train_getFormValidationId(fs, "form");
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getLocale(resources, Locale.ENGLISH);
-        train_getContainerMessages(resources, containerMessages);
-        
-        train_alwaysNull(macro);
-
-        train_contains(containerMessages, "form-fred-required-message", true);
-
-        train_getMessageFormatter(containerMessages, "form-fred-required-message", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, null, formatter, inputValue);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidator(field, "required", null);
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void constraint_value_from_message_catalog_per() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-
-        Map<String, Validator> map = singletonMap("minlength", validator);
-
-        train_getConstraintType(validator, Integer.class);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-
-        train_contains(containerMessages, "myform-fred-minlength", false);
-        train_contains(containerMessages, "fred-minlength", true);
-        train_get(containerMessages, "fred-minlength", "5");
-
-        train_coerce(coercer, "5", Integer.class, 5);
-
-        train_getContainerMessages(resources, containerMessages);
-        train_contains(containerMessages, "myform-fred-minlength-message", false);
-        train_contains(containerMessages, "fred-minlength-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(validator, "key");
-        train_getMessageFormatter(messages, "key", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, 5, formatter, inputValue);
-
-        ValidatorMacro macro = mockValidatorMacro();
-        train_alwaysNull(macro);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidators(field, "minlength");
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void constraint_value_from_message_catalog_per_form() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-
-        Map<String, Validator> map = singletonMap("minlength", validator);
-
-        train_getConstraintType(validator, Integer.class);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-
-        train_contains(containerMessages, "myform-fred-minlength", true);
-        train_get(containerMessages, "myform-fred-minlength", "5");
-
-        train_coerce(coercer, "5", Integer.class, 5);
-
-        train_getContainerMessages(resources, containerMessages);
-        train_contains(containerMessages, "myform-fred-minlength-message", false);
-        train_contains(containerMessages, "fred-minlength-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(validator, "key");
-        train_getMessageFormatter(messages, "key", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, 5, formatter, inputValue);
-
-        ValidatorMacro macro = mockValidatorMacro();
-        train_alwaysNull(macro);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidators(field, "minlength");
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void missing_field_validator_constraint() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-
-        Map<String, Validator> map = singletonMap("minlength", validator);
-
-        train_getConstraintType(validator, Integer.class);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getLocale(resources, Locale.GERMAN);
-        train_getContainerMessages(resources, containerMessages);
-
-        train_contains(containerMessages, "myform-fred-minlength", false);
-        train_contains(containerMessages, "fred-minlength", false);
-
-        ValidatorMacro macro = mockValidatorMacro();
-        train_alwaysNull(macro);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        try
-        {
-            source.createValidators(field, "minlength");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Validator 'minlength' requires a validation constraint (of type java.lang.Integer) but none was provided. The constraint may be provided inside the @Validator annotaton on the property, or in the associated component message catalog as key 'myform-fred-minlength' or key 'fred-minlength'. ");
-        }
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void single_validator_via_specification() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        FormSupport fs = mockFormSupport();
-
-        Map<String, Validator> map = singletonMap("required", validator);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_getConstraintType(validator, null);
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getContainerMessages(resources, containerMessages);
-
-        train_contains(containerMessages, "myform-fred-required-message", false);
-        train_contains(containerMessages, "fred-required-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(validator, "key");
-        train_getMessageFormatter(messages, "key", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, null, formatter, inputValue);
-
-        ValidatorMacro macro = mockValidatorMacro();
-        train_alwaysNull(macro);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidators(field, "required");
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    private void train_alwaysNull(ValidatorMacro macro)
-    {
-        expect(macro.valueForMacro(EasyMock.isA(String.class))).andReturn(null).anyTimes();
-    }
-
-    private ValidatorMacro mockValidatorMacro()
-    {
-        return newMock(ValidatorMacro.class);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void simple_macro_expansion() throws Exception
-    {
-
-        ValidatorMacro macro = mockValidatorMacro();
-        expect(macro.valueForMacro("combo")).andReturn("required,minlength=5");
-        expect(macro.valueForMacro("required")).andReturn(null);
-        expect(macro.valueForMacro("minlength")).andReturn(null);
-
-        replay();
-
-        FieldValidatorSourceImpl source = new FieldValidatorSourceImpl(null, null, null, null, macro);
-
-        List<ValidatorSpecification> specs = source.toValidatorSpecifications("combo");
-
-        assertListsEquals(specs, new ValidatorSpecification("required"), new ValidatorSpecification("minlength", "5"));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void macros_can_not_have_constraints() throws Exception
-    {
-
-        ValidatorMacro macro = mockValidatorMacro();
-        expect(macro.valueForMacro("combo")).andReturn("required,minlength=5");
-
-        replay();
-
-        FieldValidatorSourceImpl source = new FieldValidatorSourceImpl(null, null, null, null, macro);
-
-        try
-        {
-            source.toValidatorSpecifications("combo=3");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "'combo' is a validator macro, not a validator, and can not have a constraint value.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void recursive_macros_are_caught()
-    {
-
-        ValidatorMacro macro = mockValidatorMacro();
-        expect(macro.valueForMacro("combo")).andReturn("required,combo");
-        expect(macro.valueForMacro("required")).andReturn(null);
-        expect(macro.valueForMacro("combo")).andReturn("required,combo");
-
-        replay();
-
-        FieldValidatorSourceImpl source = new FieldValidatorSourceImpl(null, null, null, null, macro);
-
-        try
-        {
-            source.toValidatorSpecifications("combo");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Validator macro 'combo' appears more than once.");
-        }
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void multiple_validators_via_specification() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator required = mockValidator();
-        Validator minLength = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter requiredFormatter = mockMessageFormatter();
-        MessageFormatter minLengthFormatter = mockMessageFormatter();
-        Object inputValue = "input value";
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        Integer fifteen = 15;
-        FormSupport fs = mockFormSupport();
-
-        Map<String, Validator> map = newMap();
-
-        map.put("required", required);
-        map.put("minLength", minLength);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_getConstraintType(required, null);
-        train_getConstraintType(minLength, Integer.class);
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getContainerMessages(resources, containerMessages);
-        train_contains(containerMessages, "myform-fred-required-message", false);
-        train_contains(containerMessages, "fred-required-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(required, "required");
-        train_getMessageFormatter(messages, "required", requiredFormatter);
-
-        train_contains(containerMessages, "myform-fred-minLength-message", false);
-        train_contains(containerMessages, "fred-minLength-message", false);
-
-        train_getMessageKey(minLength, "min-length");
-        train_getMessageFormatter(messages, "min-length", minLengthFormatter);
-
-        train_coerce(coercer, "15", Integer.class, fifteen);
-
-        train_isRequired(required, true);
-        train_getValueType(required, Object.class);
-        required.validate(field, null, requiredFormatter, inputValue);
-
-        train_isRequired(minLength, false);
-        train_getValueType(minLength, String.class);
-        minLength.validate(field, fifteen, minLengthFormatter, inputValue);
-
-        ValidatorMacro macro = mockValidatorMacro();
-        train_alwaysNull(macro);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidators(field, "required,minLength=15");
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void validator_with_constraint() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        Integer five = 5;
-        FormSupport fs = mockFormSupport();
-        ValidatorMacro macro = mockValidatorMacro();
-
-        Map<String, Validator> map = singletonMap("minLength", validator);
-
-        train_getConstraintType(validator, Integer.class);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_coerce(coercer, "5", Integer.class, five);
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getContainerMessages(resources, containerMessages);
-        
-        train_alwaysNull(macro);
-        
-        train_contains(containerMessages, "myform-fred-minLength-message", false);
-        train_contains(containerMessages, "fred-minLength-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(validator, "key");
-        train_getMessageFormatter(messages, "key", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, five, formatter, inputValue);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidator(field, "minLength", "5");
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-    
-    @SuppressWarnings("unchecked")
-    @Test
-    public void validator_with_constraint_and_macro() throws Exception
-    {
-        ValidationMessagesSource messagesSource = mockValidationMessagesSource();
-        Validator validator = mockValidator();
-        TypeCoercer coercer = mockTypeCoercer();
-        FieldComponent field = newFieldComponent();
-        Messages messages = mockMessages();
-        MessageFormatter formatter = mockMessageFormatter();
-        Object inputValue = new Object();
-        ComponentResources resources = mockComponentResources();
-        Messages containerMessages = mockMessages();
-        Integer five = 5;
-        FormSupport fs = mockFormSupport();
-        ValidatorMacro macro = mockValidatorMacro();
-
-        Map<String, Validator> map = singletonMap("minLength", validator);
-
-        train_getConstraintType(validator, Integer.class);
-
-        train_getFormValidationId(fs, "myform");
-
-        train_coerce(coercer, "77", Integer.class, five);
-
-        train_getComponentResources(field, resources);
-        train_getId(resources, "fred");
-        train_getContainerMessages(resources, containerMessages);
-        
-        expect(macro.valueForMacro("foo-bar-baz")).andReturn("minLength=77");
-        expect(macro.valueForMacro("minLength")).andReturn(null);
-        
-        train_contains(containerMessages, "myform-fred-minLength-message", false);
-        train_contains(containerMessages, "fred-minLength-message", false);
-
-        train_getLocale(resources, Locale.FRENCH);
-
-        train_getValidationMessages(messagesSource, Locale.FRENCH, messages);
-
-        train_getMessageKey(validator, "key");
-        train_getMessageFormatter(messages, "key", formatter);
-
-        train_isRequired(validator, false);
-        train_getValueType(validator, Object.class);
-        validator.validate(field, five, formatter, inputValue);
-
-        replay();
-
-        FieldValidatorSource source = new FieldValidatorSourceImpl(messagesSource, coercer, fs, map, macro);
-
-        FieldValidator fieldValidator = source.createValidator(field, "foo-bar-baz", null);
-
-        fieldValidator.validate(inputValue);
-
-        verify();
-    }
-
-    private FieldComponent newFieldComponent()
-    {
-        return newMock(FieldComponent.class);
-    }
-
-    private void test(String specification, ValidatorSpecification... expected)
-    {
-        List<ValidatorSpecification> specs = FieldValidatorSourceImpl.parse(specification);
-
-        assertEquals(specs, Arrays.asList(expected));
-    }
-
-    @Test
-    public void parse_simple_type_list()
-    {
-        test("required,email", new ValidatorSpecification("required", null), new ValidatorSpecification("email", null));
-    }
-
-    @Test
-    public void parse_single_type()
-    {
-        test("required", new ValidatorSpecification("required", null));
-    }
-
-    @Test
-    public void ignore_whitespace_around_type_name()
-    {
-        test("  required  ,  email  ", new ValidatorSpecification("required", null), new ValidatorSpecification(
-                "email", null));
-    }
-
-    @Test
-    public void parse_simple_type_with_value()
-    {
-        test("minLength=5,sameAs=otherComponentId", new ValidatorSpecification("minLength", "5"),
-                new ValidatorSpecification("sameAs", "otherComponentId"));
-    }
-
-    @Test
-    public void whitespace_ignored_around_value()
-    {
-        test("minLength=  5 , sameAs  = otherComponentId ", new ValidatorSpecification("minLength", "5"),
-                new ValidatorSpecification("sameAs", "otherComponentId"));
-    }
-
-    @Test
-    public void dangling_equals_sign_is_empty_string_value()
-    {
-        test("minLength=  ", new ValidatorSpecification("minLength", ""));
-    }
-
-    @Test
-    public void unexpected_character_not_a_comma()
-    {
-        try
-        {
-            test("required.email");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Unexpected character '.' at position 9 of input string: required.email");
-        }
-    }
-
-    @Test
-    public void unexpected_character_after_constraint_value()
-    {
-        try
-        {
-            test("minLength=3 . email");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Unexpected character '.' at position 13 of input string: minLength=3 . email");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FlashPersistentFieldStrategyTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FlashPersistentFieldStrategyTest.java
deleted file mode 100644
index 1bf4377..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FlashPersistentFieldStrategyTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.testng.annotations.Test;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * A more minimal test, since common behavior is already tested by {@link SessionPersistentFieldStrategyTest}.
- */
-public class FlashPersistentFieldStrategyTest extends InternalBaseTestCase
-{
-    @Test
-    public void post_change_to_root_component()
-    {
-        Session session = mockSession();
-        Request request = mockRequest();
-        Object value = new Object();
-
-        train_getSession(request, true, session);
-
-        session.setAttribute("flash:foo.Bar::field", value);
-
-        replay();
-
-        PersistentFieldStrategy strategy = new FlashPersistentFieldStrategy(request);
-
-        strategy.postChange("foo.Bar", null, "field", value);
-
-        verify();
-    }
-
-    @Test
-    public void gather_changes_with_active_session()
-    {
-        Session session = mockSession();
-        Request request = mockRequest();
-
-        train_getSession(request, false, session);
-        train_getAttributeNames(
-                session,
-                "flash:foo.Bar:",
-                "flash:foo.Bar::root",
-                "flash:foo.Bar:nested:down");
-
-        train_getAttribute(session, "flash:foo.Bar::root", "ROOT");
-        session.setAttribute("flash:foo.Bar::root", null);
-
-        train_getAttribute(session, "flash:foo.Bar:nested:down", "DOWN");
-        session.setAttribute("flash:foo.Bar:nested:down", null);
-
-        replay();
-
-        PersistentFieldStrategy strategy = new FlashPersistentFieldStrategy(request);
-
-        Collection<PersistentFieldChange> changes = strategy.gatherFieldChanges("foo.Bar");
-
-        assertEquals(changes.size(), 2);
-
-        Iterator<PersistentFieldChange> i = changes.iterator();
-
-        PersistentFieldChange change1 = i.next();
-
-        assertEquals(change1.getComponentId(), "");
-        assertEquals(change1.getFieldName(), "root");
-        assertEquals(change1.getValue(), "ROOT");
-
-        PersistentFieldChange change2 = i.next();
-
-        assertEquals(change2.getComponentId(), "nested");
-        assertEquals(change2.getFieldName(), "down");
-        assertEquals(change2.getValue(), "DOWN");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FooBarInterface.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FooBarInterface.java
deleted file mode 100644
index 9e96b50..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FooBarInterface.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public interface FooBarInterface extends FooInterface, BarInterface
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FooInterface.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FooInterface.java
deleted file mode 100644
index d749741..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/FooInterface.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- *
- */
-public interface FooInterface
-{
-    void foo();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/GenericBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/GenericBean.java
deleted file mode 100644
index efeec94..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/GenericBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class GenericBean<T>
-{
-    private T value;
-
-    public T getValue()
-    {
-        return value;
-    }
-
-    public void setValue(T value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/GetterMethodsInterface.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/GetterMethodsInterface.java
deleted file mode 100644
index 930081c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/GetterMethodsInterface.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public interface GetterMethodsInterface
-{
-    boolean getBoolean();
-
-    byte getByte();
-
-    short getShort();
-
-    int getInt();
-
-    long getLong();
-
-    float getFloat();
-
-    double getDouble();
-
-    String getString();
-
-    int[] getIntArray();
-
-    Object[] getObjectArray();
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/HeartbeatImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/HeartbeatImplTest.java
deleted file mode 100644
index f8f03c2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/HeartbeatImplTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.Heartbeat;
-import org.testng.annotations.Test;
-
-public class HeartbeatImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void single_heartbeat()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        Heartbeat hb = new HeartbeatImpl();
-
-        hb.begin();
-
-        hb.defer(r1);
-        hb.defer(r2);
-
-        verify();
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        hb.end();
-
-        verify();
-    }
-
-    @Test
-    public void nested_heartbeats()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-        Runnable r3 = mockRunnable();
-
-        replay();
-
-        Heartbeat hb = new HeartbeatImpl();
-
-        hb.begin();
-
-        hb.defer(r1);
-        hb.defer(r2);
-
-        hb.begin();
-
-        hb.defer(r3);
-
-        verify();
-
-        r3.run();
-
-        replay();
-
-        hb.end();
-
-        verify();
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        hb.end();
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/IgnoredPathsFilterTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/IgnoredPathsFilterTest.java
deleted file mode 100644
index ae16daf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/IgnoredPathsFilterTest.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.HttpServletRequestFilter;
-import org.apache.tapestry5.services.HttpServletRequestHandler;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.util.List;
-
-public class IgnoredPathsFilterTest extends TapestryTestCase
-{
-    @Test
-    public void no_match() throws IOException
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        HttpServletResponse response = mockHttpServletResponse();
-        HttpServletRequestHandler handler = mockHttpServletRequestHandler();
-
-        train_getServletPath(request, "/");
-        train_getPathInfo(request, "barney");
-
-        train_service(handler, request, response, true);
-
-        List<String> configuration = CollectionFactory.newList("/fred");
-
-
-        replay();
-
-        HttpServletRequestFilter filter = new IgnoredPathsFilter(configuration);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void no_path_info() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        HttpServletResponse response = mockHttpServletResponse();
-        HttpServletRequestHandler handler = mockHttpServletRequestHandler();
-
-        train_getServletPath(request, "/");
-        train_getPathInfo(request, null);
-
-        train_service(handler, request, response, true);
-
-        List<String> configuration = CollectionFactory.newList("/fred");
-
-
-        replay();
-
-        HttpServletRequestFilter filter = new IgnoredPathsFilter(configuration);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void path_excluded() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        HttpServletResponse response = mockHttpServletResponse();
-        HttpServletRequestHandler handler = mockHttpServletRequestHandler();
-
-        train_getServletPath(request, "/");
-        train_getPathInfo(request, "barney/rubble");
-
-        List<String> configuration = CollectionFactory.newList("/barney.*");
-
-        replay();
-
-        HttpServletRequestFilter filter = new IgnoredPathsFilter(configuration);
-
-        assertFalse(filter.service(request, response, handler));
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java
deleted file mode 100644
index e6d320d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/InternalClassTransformationImplTest.java
+++ /dev/null
@@ -1,1157 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import static java.lang.Thread.currentThread;
-import static java.util.Arrays.asList;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Target;
-import java.lang.reflect.Modifier;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.sql.SQLException;
-import java.util.List;
-import java.util.Map;
-
-import javassist.CtClass;
-import javassist.CtMethod;
-import javassist.Loader;
-import javassist.LoaderClassPath;
-import javassist.NotFoundException;
-
-import org.apache.tapestry5.annotations.Meta;
-import org.apache.tapestry5.annotations.OnEvent;
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.annotations.SetupRender;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.model.MutableComponentModelImpl;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.transform.InheritedAnnotation;
-import org.apache.tapestry5.internal.transform.TestPackageAwareLoader;
-import org.apache.tapestry5.internal.transform.pages.AbstractFoo;
-import org.apache.tapestry5.internal.transform.pages.BarImpl;
-import org.apache.tapestry5.internal.transform.pages.ChildClassInheritsAnnotation;
-import org.apache.tapestry5.internal.transform.pages.ClaimedFields;
-import org.apache.tapestry5.internal.transform.pages.EventHandlerTarget;
-import org.apache.tapestry5.internal.transform.pages.FieldAccessBean;
-import org.apache.tapestry5.internal.transform.pages.MethodAccessSubject;
-import org.apache.tapestry5.internal.transform.pages.MethodIdentifier;
-import org.apache.tapestry5.internal.transform.pages.ParentClass;
-import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
-import org.apache.tapestry5.internal.transform.pages.TargetObject;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryClassPool;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.internal.services.CtClassSourceImpl;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.ComponentResourcesAware;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.ComponentMethodAdvice;
-import org.apache.tapestry5.services.ComponentMethodInvocation;
-import org.apache.tapestry5.services.MethodAccess;
-import org.apache.tapestry5.services.MethodFilter;
-import org.apache.tapestry5.services.MethodInvocationResult;
-import org.apache.tapestry5.services.TransformMethod;
-import org.apache.tapestry5.services.TransformMethodSignature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-/**
- * The tests share a number of resources, and so are run sequentially.
- */
-@Test
-public class InternalClassTransformationImplTest extends InternalBaseTestCase
-{
-    private static final String STRING_CLASS_NAME = "java.lang.String";
-
-    private PropertyAccess access;
-
-    private final ClassLoader contextClassLoader = currentThread().getContextClassLoader();
-
-    private ClassFactory classFactory;
-
-    private Loader loader;
-
-    private ClassFactoryClassPool classFactoryClassPool;
-
-    private CtClassSourceImpl classSource;
-
-    @BeforeClass
-    public void setup_access()
-    {
-        access = getService("PropertyAccess", PropertyAccess.class);
-    }
-
-    @AfterClass
-    public void cleanup_access()
-    {
-        access = null;
-    }
-
-    /**
-     * We need a new ClassPool for each individual test, since many of the tests will end up modifying one or more
-     * CtClass instances.
-     */
-    @BeforeMethod
-    public void setup_classpool()
-    {
-        ClassLoader threadDeadlockBuffer = new URLClassLoader(new URL[0], contextClassLoader);
-
-        classFactoryClassPool = new ClassFactoryClassPool(threadDeadlockBuffer);
-
-        loader = new TestPackageAwareLoader(threadDeadlockBuffer, classFactoryClassPool);
-
-        // Inside Maven Surefire, the system classpath is not sufficient to find all
-        // the necessary files.
-        classFactoryClassPool.appendClassPath(new LoaderClassPath(loader));
-
-        Logger logger = LoggerFactory.getLogger(InternalClassTransformationImplTest.class);
-
-        classFactory = new ClassFactoryImpl(loader, classFactoryClassPool, logger);
-
-        classSource = new CtClassSourceImpl(classFactoryClassPool, loader);
-    }
-
-    private Object transform(Class componentClass, ComponentClassTransformWorker worker) throws Exception
-    {
-        InternalComponentResources resources = mockInternalComponentResources();
-
-        CtClass targetObjectCtClass = findCtClass(componentClass);
-
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel(logger);
-
-        replay();
-
-        InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass,
-                new ComponentClassCacheImpl(classFactory, null), model, classSource, false);
-
-        worker.transform(ct, model);
-
-        ct.finish();
-
-        Instantiator instantiator = ct.createInstantiator();
-
-        Component instance = instantiator.newInstance(resources);
-
-        verify();
-
-        expect(resources.getComponent()).andReturn(instance).anyTimes();
-
-        replay();
-
-        // Return the instance for further testing
-
-        return instance;
-    }
-
-    private CtClass findCtClass(Class targetClass) throws NotFoundException
-    {
-        return classFactoryClassPool.get(targetClass.getName());
-    }
-
-    private Class toClass(CtClass ctClass) throws Exception
-    {
-        return classFactoryClassPool.toClass(ctClass, loader, null);
-    }
-
-    @Test
-    public void new_member_name() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        assertEquals(ct.newMemberName("fred"), "_$fred");
-        assertEquals(ct.newMemberName("fred"), "_$fred_0");
-
-        // Here we're exposing a bit of the internal algorithm, which strips
-        // off '$' and '_' before tacking "_$" in front.
-
-        assertEquals(ct.newMemberName("_fred"), "_$fred_1");
-        assertEquals(ct.newMemberName("_$fred"), "_$fred_2");
-        assertEquals(ct.newMemberName("__$___$____$_fred"), "_$fred_3");
-
-        // Here we're trying to force conflicts with existing declared
-        // fields and methods of the class.
-
-        assertEquals(ct.newMemberName("_parentField"), "_$parentField");
-        assertEquals(ct.newMemberName("conflictField"), "_$conflictField_0");
-        assertEquals(ct.newMemberName("conflictMethod"), "_$conflictMethod_0");
-
-        verify();
-    }
-
-    @Test
-    public void new_member_name_with_prefix() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        assertEquals(ct.newMemberName("prefix", "fred"), "_$prefix_fred");
-        assertEquals(ct.newMemberName("prefix", "fred"), "_$prefix_fred_0");
-
-        // Here we're exposing a bit of the internal algorithm, which strips
-        // off '$' and '_' before tacking "_$" in front.
-
-        assertEquals(ct.newMemberName("prefix", "_fred"), "_$prefix_fred_1");
-        assertEquals(ct.newMemberName("prefix", "_$fred"), "_$prefix_fred_2");
-        assertEquals(ct.newMemberName("prefix", "__$___$____$_fred"), "_$prefix_fred_3");
-
-        verify();
-    }
-
-    private InternalClassTransformation createClassTransformation(Class targetClass, Logger logger)
-            throws NotFoundException
-    {
-        CtClass ctClass = findCtClass(targetClass);
-
-        MutableComponentModel model = stubMutableComponentModel(logger);
-
-        return new InternalClassTransformationImpl(classFactory, ctClass, null, model, null, false);
-    }
-
-    private MutableComponentModel stubMutableComponentModel(Logger logger)
-    {
-        return new MutableComponentModelImpl("unknown-class", logger, null, null);
-    }
-
-    @Test
-    public void find_annotation_on_unknown_field() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        try
-        {
-            ct.getFieldAnnotation("unknownField", Retain.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Class org.apache.tapestry5.internal.transform.pages.ParentClass does not contain a field named 'unknownField'.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void find_field_annotation() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        Retain retain = ct.getFieldAnnotation("_annotatedField", Retain.class);
-
-        assertNotNull(retain);
-
-        verify();
-    }
-
-    @Test
-    public void field_does_not_contain_requested_annotation() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        // Field with annotation, but not that annotation
-        assertNull(ct.getFieldAnnotation("_annotatedField", Override.class));
-
-        // Field with no annotation
-        assertNull(ct.getFieldAnnotation("_parentField", Override.class));
-
-        verify();
-    }
-
-    @Test
-    public void find_fields_with_annotation() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        List<String> fields = ct.findFieldsWithAnnotation(Retain.class);
-
-        assertEquals(fields.size(), 1);
-        assertEquals(fields.get(0), "_annotatedField");
-
-        verify();
-    }
-
-    @Test
-    public void get_field_modifiers() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(CheckFieldType.class, logger);
-
-        assertEquals(ct.getFieldModifiers("_privateField"), Modifier.PRIVATE);
-        assertEquals(ct.getFieldModifiers("_map"), Modifier.PRIVATE + Modifier.FINAL);
-    }
-
-    @Test
-    public void get_field_exists() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(CheckFieldType.class, logger);
-
-        assertTrue(ct.isField("_privateField"));
-        assertFalse(ct.isField("_doesNotExist"));
-
-        verify();
-    }
-
-    @Test
-    public void no_fields_contain_requested_annotation() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        List<String> fields = ct.findFieldsWithAnnotation(Documented.class);
-
-        assertTrue(fields.isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void claim_fields() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ClaimedFields.class, logger);
-
-        List<String> unclaimed = ct.findUnclaimedFields();
-
-        assertEquals(unclaimed, asList("_field1", "_field4", "_zzfield"));
-
-        ct.claimField("_field4", "Fred");
-
-        unclaimed = ct.findUnclaimedFields();
-
-        assertEquals(unclaimed, asList("_field1", "_zzfield"));
-
-        try
-        {
-            ct.claimField("_field4", "Barney");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Field _field4 of class org.apache.tapestry5.internal.transform.pages.ClaimedFields is already claimed by Fred and can not be claimed by Barney.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void added_fields_are_not_listed_as_unclaimed_fields() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ClaimedFields.class, logger);
-
-        ct.addField(Modifier.PRIVATE, "int", "newField");
-
-        List<String> unclaimed = ct.findUnclaimedFields();
-
-        assertEquals(unclaimed, asList("_field1", "_field4", "_zzfield"));
-
-        verify();
-    }
-
-    @Test
-    public void find_class_annotations() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ParentClass.class, logger);
-
-        Meta meta = ct.getAnnotation(Meta.class);
-
-        assertNotNull(meta);
-
-        // Try again (the annotation will be cached). Use an annotation
-        // that will not be present.
-
-        Target t = ct.getAnnotation(Target.class);
-
-        assertNull(t);
-
-        verify();
-    }
-
-    /**
-     * More a test of how Javassist works. Javassist does not honor the Inherited annotation for classes (this kind of
-     * makes sense, since it won't necessarily have the super-class in memory).
-     */
-    @Test
-    public void ensure_subclasses_inherit_parent_class_annotations() throws Exception
-    {
-        // The Java runtime does honor @Inherited
-        assertNotNull(ChildClassInheritsAnnotation.class.getAnnotation(InheritedAnnotation.class));
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ChildClassInheritsAnnotation.class, logger);
-
-        InheritedAnnotation ia = ct.getAnnotation(InheritedAnnotation.class);
-
-        // Javassist does not, but ClassTransformation patches around that.
-
-        assertNotNull(ia);
-
-        verify();
-    }
-
-    // TAPESTRY-2481
-    @Test
-    public void ensure_only_inherited_annotations_from_parent_class_are_visible() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(ChildClassInheritsAnnotation.class, logger);
-
-        Meta meta = ct.getAnnotation(Meta.class);
-
-        assertNull(meta);
-
-        verify();
-    }
-
-    /**
-     * These tests are really to assert my understanding of Javassist's API. I guess we should keep them around to make
-     * sure that future versions of Javassist work the same as our expectations.
-     */
-    @Test
-    public void ensure_javassist_still_does_not_show_inherited_interfaces() throws Exception
-    {
-        CtClass ctClass = findCtClass(BarImpl.class);
-
-        CtClass[] interfaces = ctClass.getInterfaces();
-
-        // Just the interfaces implemented by this particular class, not
-        // inherited interfaces.
-
-        assertEquals(interfaces.length, 1);
-
-        assertEquals(interfaces[0].getName(), BarInterface.class.getName());
-
-        CtClass parentClass = ctClass.getSuperclass();
-
-        interfaces = parentClass.getInterfaces();
-
-        assertEquals(interfaces.length, 1);
-
-        assertEquals(interfaces[0].getName(), FooInterface.class.getName());
-    }
-
-    @Test
-    public void ensure_javassist_does_not_show_interface_methods_on_abstract_class() throws Exception
-    {
-        CtClass ctClass = findCtClass(AbstractFoo.class);
-
-        CtClass[] interfaces = ctClass.getInterfaces();
-
-        assertEquals(interfaces.length, 1);
-
-        assertEquals(interfaces[0].getName(), FooInterface.class.getName());
-
-        // In some cases, Java reflection on an abstract class implementing an interface
-        // will show the interface methods as abstract methods on the class. This seems
-        // to vary from JVM to JVM. I believe Javassist is more consistent here.
-
-        CtMethod[] methods = ctClass.getDeclaredMethods();
-
-        assertEquals(methods.length, 0);
-    }
-
-    @Test
-    public void ensure_javassist_does_not_show_extended_interface_methods_on_interface() throws Exception
-    {
-        CtClass ctClass = findCtClass(FooBarInterface.class);
-
-        // Just want to check that an interface that extends other interfaces
-        // doesn't show those other interface's methods.
-
-        CtMethod[] methods = ctClass.getDeclaredMethods();
-
-        assertEquals(methods.length, 0);
-    }
-
-    public static final TransformMethodSignature RUN = new TransformMethodSignature("run");
-
-    @Test
-    public void access_to_protected_void_no_args_method() throws Exception
-    {
-        Object instance = transform(MethodAccessSubject.class, new ComponentClassTransformWorker()
-        {
-            public void transform(ClassTransformation transformation, MutableComponentModel model)
-            {
-                transformation.addImplementedInterface(Runnable.class);
-
-                TransformMethodSignature targetMethodSignature = new TransformMethodSignature(Modifier.PROTECTED,
-                        "void", "protectedVoidNoArgs", null, null);
-                TransformMethod pvna = transformation.getOrCreateMethod(targetMethodSignature);
-
-                final MethodAccess pvnaAccess = pvna.getAccess();
-
-                transformation.getOrCreateMethod(RUN).addAdvice(new ComponentMethodAdvice()
-                {
-                    public void advise(ComponentMethodInvocation invocation)
-                    {
-                        invocation.proceed();
-
-                        MethodInvocationResult invocationResult = pvnaAccess.invoke(invocation.getInstance());
-
-                        assertFalse(invocationResult.isFail(), "fail should be false, no checked exception thrown");
-                    }
-                });
-            }
-        });
-
-        Runnable r = (Runnable) instance;
-
-        r.run();
-
-        assertEquals(access.get(r, "marker"), "protectedVoidNoArgs");
-    }
-
-    @Test
-    public void access_to_public_void_throws_exception() throws Exception
-    {
-        Object instance = transform(MethodAccessSubject.class, new ComponentClassTransformWorker()
-        {
-            public void transform(ClassTransformation transformation, MutableComponentModel model)
-            {
-                transformation.addImplementedInterface(Runnable.class);
-
-                TransformMethodSignature targetMethodSignature = new TransformMethodSignature(Modifier.PUBLIC, "void",
-                        "publicVoidThrowsException", null, new String[]
-                        { SQLException.class.getName() });
-                TransformMethod targetMethod = transformation.getOrCreateMethod(targetMethodSignature);
-
-                final MethodAccess targetAccess = targetMethod.getAccess();
-
-                transformation.getOrCreateMethod(RUN).addAdvice(new ComponentMethodAdvice()
-                {
-                    public void advise(ComponentMethodInvocation invocation)
-                    {
-                        invocation.proceed();
-
-                        MethodInvocationResult invocationResult = targetAccess.invoke(invocation.getInstance());
-
-                        assertTrue(invocationResult.isFail(), "fail should be true; checked exception thrown");
-
-                        SQLException ex = invocationResult.getThrown(SQLException.class);
-
-                        assertNotNull(ex);
-                        assertEquals(ex.getMessage(), "From publicVoidThrowsException()");
-                    }
-                });
-            }
-        });
-
-        Runnable r = (Runnable) instance;
-
-        r.run();
-
-        assertEquals(access.get(r, "marker"), "publicVoidThrowsException");
-    }
-
-    public interface ProcessInteger
-    {
-        int operate(int input);
-    }
-
-    @Test
-    public void access_to_public_method_with_argument_and_return_value() throws Exception
-    {
-        Object instance = transform(MethodAccessSubject.class, new ComponentClassTransformWorker()
-        {
-            public void transform(ClassTransformation transformation, MutableComponentModel model)
-            {
-                transformation.addImplementedInterface(ProcessInteger.class);
-
-                TransformMethod incrementer = transformation.getOrCreateMethod(new TransformMethodSignature(
-                        Modifier.PUBLIC, "int", "incrementer", new String[]
-                        { "int" }, null));
-
-                final MethodAccess incrementerAccess = incrementer.getAccess();
-
-                TransformMethodSignature operateSig = new TransformMethodSignature(Modifier.PUBLIC, "int", "operate",
-                        new String[]
-                        { "int" }, null);
-
-                TransformMethod operate = transformation.getOrCreateMethod(operateSig);
-
-                operate.addAdvice(new ComponentMethodAdvice()
-                {
-                    public void advise(ComponentMethodInvocation invocation)
-                    {
-                        // This advice *replaces* the original do-nothing method, because
-                        // it never calls invocation.proceed().
-
-                        // This kind of advice always needs some special knowledge of
-                        // the parameters to the original method, so that they can be mapped
-                        // to some other method (including a MethodAccess).
-
-                        Integer parameter = (Integer) invocation.getParameter(0);
-
-                        MethodInvocationResult result = incrementerAccess.invoke(invocation.getInstance(), parameter);
-
-                        invocation.overrideResult(result.getReturnValue());
-                    }
-                });
-            }
-        });
-
-        ProcessInteger pi = (ProcessInteger) instance;
-
-        assertEquals(pi.operate(99), 100);
-
-        assertEquals(access.get(instance, "marker"), "incrementer(99)");
-    }
-
-    public interface ProcessStringAndInteger
-    {
-        String process(String input, int value);
-    }
-
-    @Test
-    public void access_to_private_method() throws Exception
-    {
-        Object instance = transform(MethodAccessSubject.class, new ComponentClassTransformWorker()
-        {
-            public void transform(ClassTransformation transformation, MutableComponentModel model)
-            {
-                transformation.addImplementedInterface(ProcessStringAndInteger.class);
-
-                TransformMethod targetMethod = transformation.getOrCreateMethod(new TransformMethodSignature(
-                        Modifier.PRIVATE, "java.lang.String", "privateMethod", new String[]
-                        { "java.lang.String", "int" }, null));
-
-                final MethodAccess targetMethodAccess = targetMethod.getAccess();
-
-                TransformMethodSignature processSig = new TransformMethodSignature(Modifier.PUBLIC, "java.lang.String",
-                        "process", new String[]
-                        { "java.lang.String", "int" }, null);
-
-                TransformMethod process = transformation.getOrCreateMethod(processSig);
-
-                process.addAdvice(new ComponentMethodAdvice()
-                {
-                    public void advise(ComponentMethodInvocation invocation)
-                    {
-                        // Don't even bother with proceed() this time, which is OK (but
-                        // somewhat rare).
-
-                        MethodInvocationResult result = targetMethodAccess.invoke(invocation.getInstance(), invocation
-                                .getParameter(0), invocation.getParameter(1));
-
-                        invocation.overrideResult(result.getReturnValue());
-                    }
-                });
-            }
-        });
-
-        ProcessStringAndInteger p = (ProcessStringAndInteger) instance;
-
-        assertEquals(p.process("Tapestry!", 2), "Tapestry!Tapestry!");
-
-        assertEquals(access.get(instance, "marker"), "privateMethod");
-    }
-
-    @Test
-    public void add_injected_field() throws Exception
-    {
-        InternalComponentResources resources = mockInternalComponentResources();
-
-        CtClass targetObjectCtClass = findCtClass(TargetObject.class);
-
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel(logger);
-
-        replay();
-
-        InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
-                model, null, false);
-
-        // Default behavior is to add an injected field for the InternalComponentResources object,
-        // so we'll just check that.
-
-        ct.finish();
-
-        Instantiator instantiator = ct.createInstantiator();
-
-        ComponentResourcesAware instance = instantiator.newInstance(resources);
-
-        assertSame(instance.getComponentResources(), resources);
-
-        verify();
-    }
-
-    @Test
-    public void make_field_read_only() throws Exception
-    {
-        InternalComponentResources resources = mockInternalComponentResources();
-
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel(logger);
-
-        replay();
-
-        CtClass targetObjectCtClass = findCtClass(ReadOnlyBean.class);
-
-        InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
-                model, null, false);
-
-        ct.makeReadOnly("_value");
-
-        ct.finish();
-
-        Object target = instantiate(ReadOnlyBean.class, ct, resources);
-
-        try
-        {
-            access.set(target, "value", "anything");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // The PropertyAccess layer adds a wrapper exception around the real one.
-
-            assertEquals(ex.getCause().getMessage(),
-                    "Field org.apache.tapestry5.internal.transform.pages.ReadOnlyBean._value is read-only.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void inject_field() throws Exception
-    {
-        InternalComponentResources resources = mockInternalComponentResources();
-
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel(logger);
-
-        replay();
-
-        CtClass targetObjectCtClass = findCtClass(ReadOnlyBean.class);
-
-        InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
-                model, null, false);
-
-        ct.injectField("_value", "Tapestry");
-
-        ct.finish();
-
-        Object target = instantiate(ReadOnlyBean.class, ct, resources);
-
-        assertEquals(access.get(target, "value"), "Tapestry");
-
-        try
-        {
-            access.set(target, "value", "anything");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // The PropertyAccess layer adds a wrapper exception around the real one.
-
-            assertEquals(ex.getCause().getMessage(),
-                    "Field org.apache.tapestry5.internal.transform.pages.ReadOnlyBean._value is read-only.");
-        }
-
-        verify();
-    }
-
-    /**
-     * Tests the basic functionality of overriding read and write; also tests the case for multiple field read/field
-     * write substitions.
-     */
-    @Test
-    public void override_field_read_and_write() throws Exception
-    {
-        InternalComponentResources resources = mockInternalComponentResources();
-
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel(logger);
-
-        replay();
-
-        CtClass targetObjectCtClass = findCtClass(FieldAccessBean.class);
-
-        InternalClassTransformation ct = new InternalClassTransformationImpl(classFactory, targetObjectCtClass, null,
-                model, null, false);
-
-        replaceAccessToField(ct, "foo");
-        replaceAccessToField(ct, "bar");
-
-        // Stuff ...
-
-        ct.finish();
-
-        Object target = instantiate(FieldAccessBean.class, ct, resources);
-
-        // target is no longer assignable to FieldAccessBean; its a new class from a new class
-        // loader. So we use reflective access, which doesn't care about such things.
-
-        checkReplacedFieldAccess(target, "foo");
-        checkReplacedFieldAccess(target, "bar");
-
-        verify();
-    }
-
-    private void checkReplacedFieldAccess(Object target, String propertyName)
-    {
-
-        try
-        {
-            access.get(target, propertyName);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // PropertyAccess adds a wrapper exception
-            assertEquals(ex.getCause().getMessage(), "read " + propertyName);
-        }
-
-        try
-        {
-            access.set(target, propertyName, "new value");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // PropertyAccess adds a wrapper exception
-            assertEquals(ex.getCause().getMessage(), "write " + propertyName);
-        }
-    }
-
-    private void replaceAccessToField(InternalClassTransformation ct, String baseName)
-    {
-        String fieldName = "_" + baseName;
-        String readMethodName = "_read_" + baseName;
-
-        TransformMethodSignature readMethodSignature = new TransformMethodSignature(Modifier.PRIVATE,
-                STRING_CLASS_NAME, readMethodName, null, null);
-
-        ct.addNewMethod(readMethodSignature, String.format("throw new RuntimeException(\"read %s\");", baseName));
-
-        ct.replaceReadAccess(fieldName, readMethodName);
-
-        String writeMethodName = "_write_" + baseName;
-
-        TransformMethodSignature writeMethodSignature = new TransformMethodSignature(Modifier.PRIVATE, "void",
-                writeMethodName, new String[]
-                { STRING_CLASS_NAME }, null);
-        ct.addNewMethod(writeMethodSignature, String.format("throw new RuntimeException(\"write %s\");", baseName));
-
-        ct.replaceWriteAccess(fieldName, writeMethodName);
-    }
-
-    @Test
-    public void find_methods_with_annotation() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(AnnotatedPage.class, logger);
-
-        List<TransformMethodSignature> l = ct.findMethodsWithAnnotation(SetupRender.class);
-
-        // Check order
-
-        assertEquals(l.size(), 2);
-        assertEquals(l.get(0).toString(), "void beforeRender()");
-        assertEquals(l.get(1).toString(), "boolean earlyRender(org.apache.tapestry5.MarkupWriter)");
-
-        // Check up on cacheing
-
-        assertEquals(ct.findMethodsWithAnnotation(SetupRender.class), l);
-
-        // Check up on no match.
-
-        assertTrue(ct.findFieldsWithAnnotation(Deprecated.class).isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void find_methods_using_filter() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        final ClassTransformation ct = createClassTransformation(AnnotatedPage.class, logger);
-
-        // Duplicates, somewhat less efficiently, the logic in find_methods_with_annotation().
-
-        MethodFilter filter = new MethodFilter()
-        {
-            public boolean accept(TransformMethodSignature signature)
-            {
-                return ct.getMethodAnnotation(signature, SetupRender.class) != null;
-            }
-        };
-
-        List<TransformMethodSignature> l = ct.findMethods(filter);
-
-        // Check order
-
-        assertEquals(l.size(), 2);
-        assertEquals(l.get(0).toString(), "void beforeRender()");
-        assertEquals(l.get(1).toString(), "boolean earlyRender(org.apache.tapestry5.MarkupWriter)");
-
-        // Check up on cacheing
-
-        assertEquals(ct.findMethodsWithAnnotation(SetupRender.class), l);
-
-        // Check up on no match.
-
-        assertTrue(ct.findFieldsWithAnnotation(Deprecated.class).isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void to_class_with_primitive_type() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(AnnotatedPage.class, logger);
-
-        assertSame(ct.toClass("float"), Float.class);
-
-        verify();
-    }
-
-    @Test
-    public void to_class_with_object_type() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(AnnotatedPage.class, logger);
-
-        assertSame(ct.toClass("java.util.Map"), Map.class);
-
-        verify();
-    }
-
-    @Test
-    public void non_private_fields_are_an_exception() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-
-            InternalClassTransformation ct = createClassTransformation(VisibilityBean.class, logger);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Class " + VisibilityBean.class.getName() + " contains field(s)",
-                    "_$myPackagePrivate", "_$myProtected", "_$myPublic");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void find_annotation_in_method() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(EventHandlerTarget.class, logger);
-
-        OnEvent annotation = ct.getMethodAnnotation(new TransformMethodSignature("handler"), OnEvent.class);
-
-        // Check that the attributes of the annotation match the expectation.
-
-        assertEquals(annotation.value(), "fred");
-        assertEquals(annotation.component(), "alpha");
-
-        verify();
-    }
-
-    private Component instantiate(Class<?> expectedClass, InternalClassTransformation ct,
-            InternalComponentResources resources) throws Exception
-    {
-        Instantiator ins = ct.createInstantiator();
-
-        return ins.newInstance(resources);
-    }
-
-    @Test
-    public void get_method_identifier() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(MethodIdentifier.class, logger);
-
-        List<TransformMethodSignature> sigs = ct.findMethodsWithAnnotation(OnEvent.class);
-
-        assertEquals(sigs.size(), 1);
-
-        TransformMethodSignature sig = sigs.get(0);
-
-        assertEquals(
-                ct.getMethodIdentifier(sig),
-                "org.apache.tapestry5.internal.transform.pages.MethodIdentifier.makeWaves(java.lang.String, int[]) (at MethodIdentifier.java:24)");
-
-        verify();
-    }
-
-    @Test
-    public void base_class_methods_are_never_overridden() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        MethodFilter filter = new MethodFilter()
-        {
-            public boolean accept(TransformMethodSignature signature)
-            {
-                return true;
-            }
-        };
-
-        ClassTransformation ct = createClassTransformation(SimpleBean.class, logger);
-
-        List<TransformMethodSignature> methods = ct.findMethods(filter);
-
-        assertFalse(methods.isEmpty());
-
-        for (TransformMethodSignature sig : methods)
-        {
-            assertFalse(ct.isMethodOverride(sig));
-        }
-
-        verify();
-    }
-
-    @Test
-    public void check_for_method_override_on_non_declared_method() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ClassTransformation ct = createClassTransformation(SimpleBean.class, logger);
-
-        TransformMethodSignature sig = new TransformMethodSignature("methodDoesNotExist");
-
-        try
-        {
-            ct.isMethodOverride(sig);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Method public void methodDoesNotExist() is not implemented by transformed class org.apache.tapestry5.internal.services.SimpleBean.");
-        }
-
-        verify();
-
-    }
-
-    @Test
-    public void check_for_overridden_methods() throws Exception
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        InternalClassTransformation parentTransform = createClassTransformation(SimpleBean.class, logger);
-
-        parentTransform.finish();
-
-        CtClass childClass = findCtClass(SimpleBeanSubclass.class);
-
-        ClassTransformation childTransform = parentTransform.createChildTransformation(childClass,
-                stubMutableComponentModel(logger));
-
-        assertFalse(childTransform.isMethodOverride(new TransformMethodSignature("notOverridden")));
-
-        assertTrue(childTransform.isMethodOverride(new TransformMethodSignature(Modifier.PUBLIC, "void", "setAge",
-                new String[]
-                { "int" }, null)));
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java
deleted file mode 100644
index 16e417d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/JSONArrayEventResultProcessorTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.services.Response;
-import org.testng.annotations.Test;
-
-import java.io.CharArrayWriter;
-import java.io.IOException;
-import java.io.PrintWriter;
-
-public class JSONArrayEventResultProcessorTest extends InternalBaseTestCase
-{
-    @Test
-    public void response_sent() throws IOException
-    {
-        String encoding = "UTF-8";
-        Response response = mockResponse();
-
-        CharArrayWriter writer = new CharArrayWriter();
-        PrintWriter pw = new PrintWriter(writer);
-
-        expect(response.getPrintWriter("application/json;charset=UTF-8")).andReturn(pw);
-
-        replay();
-
-        JSONArray array = new JSONArray("   [ \"fred\", \"barney\" \n\n]");
-
-        JSONArrayEventResultProcessor p = new JSONArrayEventResultProcessor(response, encoding, false);
-
-        p.processResultValue(array);
-
-        verify();
-
-        assertEquals(writer.toString(), "[\n  \"fred\",\n  \"barney\"\n]");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java
deleted file mode 100644
index 1ea61f2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkImplTest.java
+++ /dev/null
@@ -1,261 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.BaseURLSource;
-import org.apache.tapestry5.services.ContextPathEncoder;
-import org.apache.tapestry5.services.Response;
-import org.testng.annotations.Test;
-
-public class LinkImplTest extends InternalBaseTestCase
-{
-    private static final String BASE_PATH = "/bar/baz";
-
-    private static final String RAW_PATH = "foo/baz/path";
-
-    private static final String ENCODED = "*encoded*";
-
-    private static final String INSECURE_BASE_URL = "http://insecure.com";
-
-    private static final String SECURE_BASE_URL = "https://secure.com";
-
-    @Test
-    public void simple_redirect()
-    {
-        Response response = mockResponse();
-
-        String URI = "/base/context/" + RAW_PATH;
-
-        train_encodeRedirectURL(response, URI, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(URI, false, LinkSecurity.INSECURE, response, null, null);
-
-        assertEquals(link.toRedirectURI(), ENCODED);
-
-        verify();
-    }
-
-    @Test
-    public void absolute_URI_for_default_insecure_link()
-    {
-        Response response = mockResponse();
-        BaseURLSource baseURLSource = mockBaseURLSource();
-
-        train_getBaseURL(baseURLSource, false, INSECURE_BASE_URL);
-
-        train_encodeURL(response, INSECURE_BASE_URL + BASE_PATH, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(BASE_PATH, false, LinkSecurity.INSECURE, response, null, baseURLSource);
-
-        assertEquals(link.toAbsoluteURI(), ENCODED);
-
-        verify();
-    }
-
-    @Test
-    public void absolute_URI_for_default_secure_link()
-    {
-        Response response = mockResponse();
-        BaseURLSource baseURLSource = mockBaseURLSource();
-
-        train_getBaseURL(baseURLSource, true, SECURE_BASE_URL);
-
-        train_encodeURL(response, SECURE_BASE_URL + BASE_PATH, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(BASE_PATH, false, LinkSecurity.SECURE, response, null, baseURLSource);
-
-        assertEquals(link.toAbsoluteURI(), ENCODED);
-
-        verify();
-    }
-
-    @Test
-    public void force_secure_URI_from_insecure_link()
-    {
-        Response response = mockResponse();
-        BaseURLSource baseURLSource = mockBaseURLSource();
-
-        train_getBaseURL(baseURLSource, true, SECURE_BASE_URL);
-
-        train_encodeURL(response, SECURE_BASE_URL + BASE_PATH, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(BASE_PATH, false, LinkSecurity.INSECURE, response, null, baseURLSource);
-
-        assertEquals(link.toAbsoluteURI(true), ENCODED);
-
-        verify();
-    }
-
-    @Test
-    public void force_insecure_URI_from_secure_link()
-    {
-        Response response = mockResponse();
-        BaseURLSource baseURLSource = mockBaseURLSource();
-
-        train_getBaseURL(baseURLSource, false, INSECURE_BASE_URL);
-
-        train_encodeURL(response, INSECURE_BASE_URL + BASE_PATH, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(BASE_PATH, false, LinkSecurity.SECURE, response, null, baseURLSource);
-
-        assertEquals(link.toAbsoluteURI(false), ENCODED);
-
-        verify();
-    }
-
-    @Test
-    public void to_string_same_as_to_uri()
-    {
-        Response response = mockResponse();
-
-        String url = "/bar/" + RAW_PATH;
-
-        train_encodeURL(response, url, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(url, false, LinkSecurity.INSECURE, response, null, null);
-
-        assertEquals(link.toString(), ENCODED);
-
-        assertEquals(link.getBasePath(), url);
-
-        verify();
-    }
-
-    @Test
-    public void retrieve_parameter_values()
-    {
-        Response response = mockResponse();
-
-        replay();
-
-        Link link = new LinkImpl("/foo/bar", false, null, response, null, null);
-
-        link.addParameter("fred", "flintstone");
-
-        assertEquals(link.getParameterValue("fred"), "flintstone");
-
-        verify();
-    }
-
-    @Test
-    public void url_with_anchor()
-    {
-        Response response = mockResponse();
-
-        String url = "/foo/bar";
-
-        train_encodeURL(response, url, ENCODED);
-
-        replay();
-
-        Link link = new LinkImpl(url, false, LinkSecurity.INSECURE, response, null, null);
-        link.setAnchor("wilma");
-
-        assertSame(link.getAnchor(), "wilma");
-
-        assertEquals(link.toURI(), ENCODED + "#" + "wilma");
-
-        verify();
-    }
-
-    @Test
-    public void to_uri_with_added_parameters_and_on_construction_uri()
-    {
-        Response response = mockResponse();
-
-        String expectedURI = "/ctx/foo?foo=bar&baz=barney";
-        train_encodeURL(response, expectedURI, expectedURI);
-
-        replay();
-
-        Link link = new LinkImpl("/ctx/foo?foo=bar", false, LinkSecurity.INSECURE, response, null, null);
-        link.addParameter("baz", "barney");
-
-        assertEquals(link.toURI(), expectedURI);
-
-        verify();
-    }
-
-    @Test
-    public void add_parameter_value()
-    {
-        Response response = mockResponse();
-        ContextPathEncoder encoder = newMock(ContextPathEncoder.class);
-
-        expect(encoder.encodeValue("plain")).andReturn("encoded");
-
-        String expectedURI = "/ctx/foo?bar=encoded";
-        train_encodeURL(response, expectedURI, expectedURI);
-
-        replay();
-
-        Link link = new LinkImpl("/ctx/foo", false, LinkSecurity.INSECURE, response, encoder, null);
-
-        assertSame(link.addParameterValue("bar", "plain"), link);
-
-        assertEquals(link.toURI(), expectedURI);
-
-        verify();
-    }
-
-    @Test
-    public void new_base_uri()
-    {
-        Response response = mockResponse();
-
-        String expectedURI = "/ctx/baz?baz=barney";
-        train_encodeURL(response, expectedURI, expectedURI);
-
-        replay();
-
-        Link link = new LinkImpl("/ctx/foo", false, LinkSecurity.INSECURE, response, null, null);
-        link.addParameter("baz", "barney");
-        link.setAnchor("jacob");
-
-        Link copy = link.copyWithBasePath("/ctx/baz");
-
-        assertEquals(copy.toURI(), expectedURI + "#jacob");
-
-        verify();
-    }
-
-    @Test
-    public void remove_parameter()
-    {
-        Link link = new LinkImpl("/baseURI", false, null, null, null, null);
-
-        link.addParameter("fred", "flintstone");
-        link.addParameter("barney", "rubble");
-
-        link.removeParameter("fred");
-
-        assertNull(link.getParameterValue("fred"));
-        assertListsEquals(link.getParameterNames(), "barney");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
deleted file mode 100644
index 04a92aa..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LinkSourceImplTest.java
+++ /dev/null
@@ -1,369 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.*;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class LinkSourceImplTest extends InternalBaseTestCase
-{
-    private List<LinkCreationListener2> emptyConfiguration = Collections.emptyList();
-
-    private TypeCoercer typeCoercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        typeCoercer = getService(TypeCoercer.class);
-    }
-
-    @Test
-    public void create_page_render_link()
-    {
-        testPageLinkCreation("order/Edit", false);
-    }
-
-    @Test
-    public void create_page_render_link_for_index_page()
-    {
-        testPageLinkCreation("order/Index", false);
-    }
-
-    @Test
-    public void create_page_render_link_for_index_page_with_context()
-    {
-        testPageLinkCreation("order/Index", false, 99);
-    }
-
-    @Test
-    public void create_page_render_link_to_root_index_page()
-    {
-        testPageLinkCreation("Index", false);
-    }
-
-    @Test
-    public void create_page_render_link_to_root_index_page_with_context()
-    {
-        testPageLinkCreation("Index", false, 202);
-    }
-
-    @Test
-    public void create_page_render_link_with_override_event_context()
-    {
-        testPageLinkCreation("order/Edit", true, 1, 2);
-    }
-
-    @Test
-    public void create_page_render_link_with_event_context_from_passivate()
-    {
-        testPageLinkCreation2("order/Edit", false, "from", "passivate");
-    }
-
-    @Test
-    public void create_page_render_link_by_name()
-    {
-        String pageName = "order/Edit";
-
-        PageActivationContextCollector collector = mockPageActivationContextCollector();
-        ComponentEventLinkEncoder linkEncoder = mockComponentEventLinkEncoder();
-        Link link = mockLink();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        RequestGlobals globals = mockRequestGlobals();
-
-        expect(globals.getActivePageName()).andReturn("someOtherPage");
-
-        train_canonicalizePageName(resolver, pageName, pageName);
-
-        train_collectPageActivationContext(collector, pageName, 3);
-
-        EventContext pageActivationContext = new ArrayEventContext(typeCoercer, 3);
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(pageName, pageActivationContext);
-
-        expect(linkEncoder.createPageRenderLink(parameters)).andReturn(link);
-
-        replay();
-
-        LinkSource source = new LinkSourceImpl(null, collector, typeCoercer, resolver, linkEncoder, globals, null,
-                emptyConfiguration);
-
-        Link actual = source.createPageRenderLink(pageName, false);
-
-        // Make sure the same link is returned.
-
-        assertEquals(actual, link);
-
-        verify();
-    }
-
-    private void testPageLinkCreation(String pageName, boolean overrideContext, Object... context)
-    {
-        PageActivationContextCollector collector = mockPageActivationContextCollector();
-        LinkCreationListener listener = mockLinkCreationListener();
-        ComponentEventLinkEncoder linkEncoder = mockComponentEventLinkEncoder();
-        Link link = mockLink();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        String canonical = "CanonicalPageName";
-        RequestGlobals globals = mockRequestGlobals();
-
-        // Ensure that the loopback logic is off; loopback logic is fully tested via an
-        // integration test.
-
-        expect(globals.getActivePageName()).andReturn("someOtherPage");
-
-        train_canonicalizePageName(resolver, pageName, canonical);
-
-        if (!overrideContext)
-            train_collectPageActivationContext(collector, canonical, context);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(canonical, new ArrayEventContext(
-                typeCoercer, context), false);
-
-        expect(linkEncoder.createPageRenderLink(parameters)).andReturn(link);
-
-        listener.createdPageRenderLink(link);
-
-        replay();
-
-        LinkSource source = new LinkSourceImpl(null, collector, typeCoercer, resolver, linkEncoder, globals, null,
-                emptyConfiguration);
-
-        source.getLinkCreationHub().addListener(listener);
-
-        Object[] passedContext = overrideContext ? context : new Object[0];
-
-        Link returnedLink = source.createPageRenderLink(pageName, overrideContext, passedContext);
-
-        assertSame(returnedLink, link);
-
-        verify();
-    }
-
-    private void testPageLinkCreation2(String pageName, boolean overrideContext, Object... context)
-    {
-        PageActivationContextCollector collector = mockPageActivationContextCollector();
-        LinkCreationListener2 listener = mockLinkCreationListener2();
-        ComponentEventLinkEncoder linkEncoder = mockComponentEventLinkEncoder();
-        Link link = mockLink();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        String canonical = "CanonicalPageName";
-        RequestGlobals globals = mockRequestGlobals();
-
-        // Ensure that the loopback logic is off; loopback logic is fully tested via an
-        // integration test.
-
-        expect(globals.getActivePageName()).andReturn("someOtherPage");
-
-        train_canonicalizePageName(resolver, pageName, canonical);
-
-        if (!overrideContext)
-            train_collectPageActivationContext(collector, canonical, context);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(canonical, new ArrayEventContext(
-                typeCoercer, context), false);
-
-        expect(linkEncoder.createPageRenderLink(parameters)).andReturn(link);
-
-        listener.createdPageRenderLink(link, parameters);
-
-        replay();
-
-        LinkSource source = new LinkSourceImpl(null, collector, typeCoercer, resolver, linkEncoder, globals, null,
-                emptyConfiguration);
-
-        source.getLinkCreationHub().addListener(listener);
-
-        Object[] passedContext = overrideContext ? context : new Object[0];
-
-        Link returnedLink = source.createPageRenderLink(pageName, overrideContext, passedContext);
-
-        assertSame(returnedLink, link);
-
-        verify();
-    }
-
-    private LinkCreationListener2 mockLinkCreationListener2()
-    {
-        return newMock(LinkCreationListener2.class);
-    }
-
-    protected final ComponentEventLinkEncoder mockComponentEventLinkEncoder()
-    {
-        return newMock(ComponentEventLinkEncoder.class);
-    }
-
-    @Test
-    public void simple_component_event_link()
-    {
-
-        testEventLinkCreation("order/Edit", "foo.bar", EventConstants.ACTION, false);
-    }
-
-    @Test
-    public void component_event_link_with_context()
-    {
-        testEventLinkCreation("order/Edit", "foo.bar", EventConstants.ACTION, false, "fred", "barney");
-    }
-
-    @Test
-    public void component_event_link_for_form()
-    {
-        testEventLinkCreation2("order/Edit", "foo.bar", EventConstants.ACTION, true, "fred", "barney");
-    }
-
-    @Test
-    public void component_event_from_other_page()
-    {
-        String primaryPageName = "blocks/AppDisplay";
-
-        Page primaryPage = mockPage();
-        Page activePage = mockPage();
-        PageRenderQueue queue = mockPageRenderQueue();
-        PageActivationContextCollector collector = mockPageActivationContextCollector();
-        ComponentEventLinkEncoder linkEncoder = mockComponentEventLinkEncoder();
-        Link link = mockLink();
-
-        train_getRenderingPage(queue, activePage);
-
-        train_getName(activePage, "order/View");
-        train_getName(primaryPage, primaryPageName);
-
-        train_collectPageActivationContext(collector, "order/View", "x", "y");
-
-        EventContext pageActivationContext = new ArrayEventContext(typeCoercer, "x", "y");
-        EventContext eventContext = new ArrayEventContext(typeCoercer, 3, 5, 9);
-
-        ComponentEventRequestParameters parameters = new ComponentEventRequestParameters("order/View", primaryPageName,
-                "gnip.gnop", "myevent", pageActivationContext, eventContext);
-
-        expect(linkEncoder.createComponentEventLink(parameters, true)).andReturn(link);
-
-        replay();
-
-        LinkSource source = new LinkSourceImpl(queue, collector, typeCoercer, null, linkEncoder, null, null,
-                emptyConfiguration);
-
-        assertSame(source.createComponentEventLink(primaryPage, "gnip.gnop", "myevent", true, 3, 5, 9), link);
-
-        verify();
-    }
-
-    private void testEventLinkCreation(String pageName, String nestedId, String eventType, boolean forForm,
-            Object... context)
-    {
-        Page primaryPage = mockPage();
-        PageRenderQueue queue = mockPageRenderQueue();
-        PageActivationContextCollector collector = mockPageActivationContextCollector();
-        LinkCreationListener listener = mockLinkCreationListener();
-        ComponentEventLinkEncoder linkEncoder = mockComponentEventLinkEncoder();
-        Link link = mockLink();
-
-        ArrayEventContext eventContext = new ArrayEventContext(typeCoercer, context);
-
-        ArrayEventContext pageEventContext = new ArrayEventContext(typeCoercer, "a", "b");
-
-        train_getRenderingPage(queue, null);
-
-        train_getName(primaryPage, pageName);
-
-        train_collectPageActivationContext(collector, pageName, "a", "b");
-
-        ComponentEventRequestParameters parameters = new ComponentEventRequestParameters(pageName, pageName, nestedId,
-                eventType, pageEventContext, eventContext);
-
-        expect(linkEncoder.createComponentEventLink(parameters, forForm)).andReturn(link);
-
-        listener.createdComponentEventLink(link);
-
-        replay();
-
-        LinkSource source = new LinkSourceImpl(queue, collector, typeCoercer, null, linkEncoder, null, null,
-                emptyConfiguration);
-
-        source.getLinkCreationHub().addListener(listener);
-
-        Link returnedLink = source.createComponentEventLink(primaryPage, nestedId, eventType, forForm, context);
-
-        // Make sure the same link is returned.
-
-        assertSame(returnedLink, link);
-
-        verify();
-    }
-
-    private void testEventLinkCreation2(String pageName, String nestedId, String eventType, boolean forForm,
-            Object... context)
-    {
-        Page primaryPage = mockPage();
-        PageRenderQueue queue = mockPageRenderQueue();
-        PageActivationContextCollector collector = mockPageActivationContextCollector();
-        LinkCreationListener2 listener = mockLinkCreationListener2();
-        ComponentEventLinkEncoder linkEncoder = mockComponentEventLinkEncoder();
-        Link link = mockLink();
-
-        ArrayEventContext eventContext = new ArrayEventContext(typeCoercer, context);
-
-        ArrayEventContext pageEventContext = new ArrayEventContext(typeCoercer, "a", "b");
-
-        train_getRenderingPage(queue, null);
-
-        train_getName(primaryPage, pageName);
-
-        train_collectPageActivationContext(collector, pageName, "a", "b");
-
-        ComponentEventRequestParameters parameters = new ComponentEventRequestParameters(pageName, pageName, nestedId,
-                eventType, pageEventContext, eventContext);
-
-        expect(linkEncoder.createComponentEventLink(parameters, forForm)).andReturn(link);
-
-        listener.createdComponentEventLink(link, parameters);
-
-        List<LinkCreationListener2> configuration = CollectionFactory.newList(listener);
-
-        replay();
-
-        LinkSource source = new LinkSourceImpl(queue, collector, typeCoercer, null, linkEncoder, null, null,
-                configuration);
-
-        Link returnedLink = source.createComponentEventLink(primaryPage, nestedId, eventType, forForm, context);
-
-        // Make sure the same link is returned.
-
-        assertSame(returnedLink, link);
-
-        verify();
-    }
-
-    protected final void train_collectPageActivationContext(PageActivationContextCollector collector, String pageName,
-            Object... context)
-    {
-        expect(collector.collectPageActivationContext(pageName)).andReturn(context);
-    }
-
-    protected final PageActivationContextCollector mockPageActivationContextCollector()
-    {
-        return newMock(PageActivationContextCollector.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java
deleted file mode 100644
index f72c1d1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/LocalizationSetterImplTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-// Copyright 2006, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
-
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.PersistentLocale;
-import org.apache.tapestry5.services.Request;
-import org.testng.annotations.Test;
-
-public class LocalizationSetterImplTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void locale_split()
-    {
-        assertEquals(LocalizationSetterImpl.stripTerm("foo_bar_Baz"), "foo_bar");
-        assertEquals(LocalizationSetterImpl.stripTerm("foo_bar"), "foo");
-        assertEquals(LocalizationSetterImpl.stripTerm("foo"), "");
-    }
-
-    @Test
-    public void to_locale_is_cached()
-    {
-        LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en");
-
-        Locale l1 = setter.toLocale("en");
-
-        assertEquals(l1.toString(), "en");
-
-        checkLocale(l1, "en", "", "");
-
-        assertSame(setter.toLocale("en"), l1);
-    }
-
-    private void checkLocale(Locale l, String expectedLanguage, String expectedCountry, String expectedVariant)
-    {
-        assertEquals(l.getLanguage(), expectedLanguage);
-        assertEquals(l.getCountry(), expectedCountry);
-        assertEquals(l.getVariant(), expectedVariant);
-    }
-
-    @Test
-    public void to_locale()
-    {
-        LocalizationSetterImpl setter = new LocalizationSetterImpl(null, null, null, "en");
-
-        checkLocale(setter.toLocale("en"), "en", "", "");
-        checkLocale(setter.toLocale("klingon_Gach"), "klingon", "GACH", "");
-        checkLocale(setter.toLocale("klingon_Gach_snuff"), "klingon", "GACH", "snuff");
-    }
-
-    @Test
-    public void known_locale()
-    {
-        PersistentLocale pl = mockPersistentLocale();
-        ThreadLocale tl = mockThreadLocale();
-        Request request = mockRequest();
-
-        tl.setLocale(Locale.FRENCH);
-        pl.set(Locale.FRENCH);
-
-        replay();
-
-        LocalizationSetter setter = new LocalizationSetterImpl(request, pl, tl, "en,fr");
-
-        assertTrue(setter.setLocaleFromLocaleName("fr"));
-
-        verify();
-    }
-
-    @Test
-    public void get_selected_locales()
-    {
-        LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en,fr");
-
-        assertListsEquals(setter.getSupportedLocales(), Locale.ENGLISH, Locale.FRENCH);
-    }
-    
-    @Test
-    public void get_selected_locale_names()
-    {
-        LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en,fr");
-        
-        Object localeNames = TestBase.get(setter, "supportedLocaleNames");
-
-        assertTrue(newSet("en", "fr").equals(localeNames));
-    }
-    
-    @Test
-    public void get_selected_locale_names_with_whitespaces()
-    {
-        LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en, fr,  de");
-        
-        Object localeNames = TestBase.get(setter, "supportedLocaleNames");
-
-        assertTrue(newSet("en", "fr", "de").equals(localeNames));
-    }
-
-    @Test
-    public void get_locale_model()
-    {
-        LocalizationSetter setter = new LocalizationSetterImpl(null, null, null, "en,fr");
-
-        SelectModel model = setter.getSupportedLocalesModel();
-
-        assertNull(model.getOptionGroups());
-
-        List<OptionModel> options = model.getOptions();
-
-        assertEquals(options.size(), 2);
-
-        assertEquals(options.get(0).getLabel(), "English");
-        // Note that the label is localized to the underlying locale, not the default locale.
-        // That's why its "franais" (i.e., as a French speaker would say it), not "French"
-        // (like an English speaker).
-        assertEquals(options.get(1).getLabel(), "fran\u00e7ais");
-
-        assertEquals(options.get(0).getValue(), Locale.ENGLISH);
-        assertEquals(options.get(1).getValue(), Locale.FRENCH);
-
-    }
-
-    protected final PersistentLocale mockPersistentLocale()
-    {
-        return newMock(PersistentLocale.class);
-    }
-
-    @Test
-    public void unknown_locale_uses_locale_from_request()
-    {
-        PersistentLocale pl = mockPersistentLocale();
-        ThreadLocale tl = mockThreadLocale();
-        Request request = mockRequest();
-
-        tl.setLocale(Locale.FRENCH);
-
-        train_getLocale(request, Locale.CANADA_FRENCH);
-
-        replay();
-
-        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "en,fr");
-
-        assertFalse(setter.setLocaleFromLocaleName("unknown"));
-
-        verify();
-    }
-
-    @Test
-    public void unsupported_locale_in_request_uses_default_locale()
-    {
-        PersistentLocale pl = mockPersistentLocale();
-        ThreadLocale tl = mockThreadLocale();
-        Request request = mockRequest();
-
-        tl.setLocale(Locale.ITALIAN);
-
-        train_getLocale(request, Locale.CHINESE);
-
-        replay();
-
-        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "it,en,fr");
-
-        assertFalse(setter.setLocaleFromLocaleName("unknown"));
-
-        verify();
-    }
-
-    @Test
-    public void set_nonpersistent_locale()
-    {
-        PersistentLocale pl = mockPersistentLocale();
-        ThreadLocale tl = mockThreadLocale();
-        Request request = mockRequest();
-
-        tl.setLocale(Locale.FRENCH);
-
-        replay();
-
-        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "en,fr");
-
-        setter.setNonPeristentLocaleFromLocaleName("fr_BE");
-
-        verify();
-
-    }
-   
-    @Test
-    public void is_supported_locale_name()
-    {
-        PersistentLocale pl = mockPersistentLocale();
-        ThreadLocale tl = mockThreadLocale();
-        Request request = mockRequest();
-
-
-        replay();
-
-        LocalizationSetterImpl setter = new LocalizationSetterImpl(request, pl, tl, "de, de_DE, de_CH,en");
-
-        assertTrue(setter.isSupportedLocaleName("de"));
-        assertTrue(setter.isSupportedLocaleName("de_de"));
-        assertTrue(setter.isSupportedLocaleName("de_de"));
-        assertTrue(setter.isSupportedLocaleName("de_DE"));
-        assertTrue(setter.isSupportedLocaleName("de_ch"));
-        assertTrue(setter.isSupportedLocaleName("de_CH"));
-        assertTrue(setter.isSupportedLocaleName("en"));
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java
deleted file mode 100644
index 317974a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MarkupWriterImplTest.java
+++ /dev/null
@@ -1,380 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.MarkupWriterListener;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-public class MarkupWriterImplTest extends InternalBaseTestCase
-{
-
-    /**
-     * TAP5-349
-     */
-    @Test
-    public void single_root_element_only()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        w.element("root1");
-        w.end();
-
-        try
-        {
-            w.element("root2");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "A document must have exactly one root element. Element <root1> is already the root element.");
-        }
-    }
-
-    @Test
-    public void write_whitespace_before_start_of_root_element_is_retained()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        w.write("  ");
-
-        w.element("root");
-        w.end();
-
-        assertEquals(w.toString(), "<?xml version=\"1.0\"?>\n" + "  <root/>");
-    }
-
-    @Test
-    public void write_whitespace_after_end_of_root_element_is_retained_in_preamble()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        w.element("root");
-        w.end();
-
-        w.write("  ");
-
-        assertEquals(w.toString(), "<?xml version=\"1.0\"?>\n  <root/>");
-    }
-
-    @Test
-    public void preamble_content() throws Exception
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        w.comment(" preamble start ");
-        w.write("preamble text");
-        w.cdata("CDATA content");
-        w.writeRaw("&nbsp;");
-        w.element("root");
-        w.end();
-        // You really shouldn't have any text after the close tag of the document, so it
-        // gets moved to the top, to the "preamble", before the first element.
-        w.comment(" content after root element in preamble ");
-
-        assertEquals(w.getDocument().toString(), readFile("preamble_content.txt"));
-    }
-
-    /** TAP5-1145 */
-    @Test
-    public void document_without_root_element()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        w.write("preamble text");
-
-        assertEquals(w.getDocument().toString(), "<?xml version=\"1.0\"?>\n" + "preamble text");
-    }
-
-    @Test(expectedExceptions = IllegalStateException.class)
-    public void attribute_ns_with_no_current_element()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.attributeNS("foo", "bar", "baz");
-    }
-
-    @Test(expectedExceptions = IllegalStateException.class)
-    public void define_namespace_with_no_current_element()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.defineNamespace("foo", "bar");
-    }
-
-    @Test(expectedExceptions = IllegalStateException.class)
-    public void end_with_no_current_element()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.end();
-    }
-
-    @Test(expectedExceptions = IllegalStateException.class)
-    public void attributes_with_no_current_element()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.attributes("fail", "now");
-    }
-
-    @Test
-    public void current_element_at_end_of_root_element_is_null()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-
-        assertNull(w.end());
-    }
-
-    @Test
-    public void element_nesting()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        Element root = w.element("root");
-
-        w.attributes("foo", "bar");
-
-        w.write("before child");
-
-        assertNotSame(w.element("nested"), root);
-
-        w.write("inner text");
-
-        assertSame(w.end(), root);
-
-        w.write("after child");
-
-        root.attribute("gnip", "gnop");
-
-        assertEquals(w.toString(),
-                "<root gnip=\"gnop\" foo=\"bar\">before child<nested>inner text</nested>after child</root>");
-    }
-
-    @Test
-    public void element_with_attributes()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("img", "src", "foo.png", "width", 20, "height", 20);
-        w.end();
-
-        // img is a tag with an end tag style of omit, so no close tag is written.
-
-        assertEquals(w.toString(), "<img height=\"20\" width=\"20\" src=\"foo.png\"/>");
-    }
-
-    @Test
-    public void attributes()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-
-        w.attributes("foo", "bar", "gnip", "gnop");
-
-        assertEquals(w.toString(), "<root gnip=\"gnop\" foo=\"bar\"></root>");
-    }
-
-    @Test
-    public void attributes_odd_number()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("img");
-
-        try
-        {
-            w.attributes("src", "foo.png", "width", 20, 30);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Writing attributes of the element 'img' failed.",
-                    "A attribute name or value is omitted [src, foo.png, width, 20, 30].",
-                    "Please provide an even number of values, alternating names and values");
-        }
-    }
-
-    @Test
-    public void comment()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-        w.comment(" A comment ");
-        w.end();
-
-        assertEquals(w.toString(), "<root><!-- A comment --></root>");
-    }
-
-    @Test
-    public void entities_inside_comment_not_converted()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-        w.comment(" <&> ");
-        w.end();
-
-        assertEquals(w.toString(), "<root><!-- <&> --></root>");
-    }
-
-    @Test
-    public void new_text_node_after_comment_node()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-        w.write("before");
-        w.comment(" A comment ");
-        w.write("after");
-        w.end();
-
-        assertEquals(w.toString(), "<root>before<!-- A comment -->after</root>");
-    }
-
-    @Test
-    public void null_write_is_ok()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-        w.write(null);
-        w.end();
-
-        assertEquals(w.toString(), "<root></root>");
-    }
-
-    @Test
-    public void writef()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-        w.writef("Test name: %s", "writef");
-
-        assertEquals(w.toString(), "<root>Test name: writef</root>");
-    }
-
-    @Test
-    public void write_raw()
-    {
-        MarkupWriter w = new MarkupWriterImpl();
-
-        w.element("root");
-        w.write("<");
-        w.writeRaw("&nbsp;");
-        w.write(">");
-        w.end();
-
-        assertEquals(w.toString(), "<root>&lt;&nbsp;&gt;</root>");
-    }
-
-    @Test
-    public void namespaced_elements_and_attributes()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        Element root = w.elementNS("fredns", "root");
-
-        assertSame(root.defineNamespace("fredns", "fred"), root);
-
-        root.defineNamespace("barneyns", "barney");
-
-        assertSame(w.attributeNS("fredns", "foo", "bar"), root);
-
-        Element child = w.elementNS("barneyns", "child");
-
-        assertSame(child.getParent(), root);
-
-        w.end(); // child
-        w.end(); // root
-
-        assertEquals(
-                w.toString(),
-                "<?xml version=\"1.0\"?>\n<fred:root fred:foo=\"bar\" xmlns:barney=\"barneyns\" xmlns:fred=\"fredns\"><barney:child/></fred:root>");
-    }
-
-    @Test
-    public void cdata_content()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        w.element("root");
-        w.write("Normal Text ");
-        w.cdata("< & >");
-        w.write("More Normal Text");
-
-        assertEquals(w.toString(),
-                "<?xml version=\"1.0\"?>\n<root>Normal Text <![CDATA[< & >]]>More Normal Text</root>");
-    }
-
-    @Test
-    public void listeners()
-    {
-        MarkupWriter w = new MarkupWriterImpl(new XMLMarkupModel());
-
-        MarkupWriterListener l = new MarkupWriterListener()
-        {
-            public void elementDidStart(Element element)
-            {
-                element.text("[Start: " + element.getName() + "]");
-            }
-
-            public void elementDidEnd(Element element)
-            {
-                element.text("[End: " + element.getName() + "]");
-            }
-        };
-
-        w.element("root");
-        w.element("no-listener");
-
-        w.write("before listener");
-
-        w.addListener(l);
-
-        w.element("listener");
-        w.write("before n-w-l");
-        w.element("nested-with-listener");
-        w.write("n-w-l text");
-        w.end();
-        w.write("after n-w-l");
-        w.end();
-
-        w.removeListener(l);
-
-        w.write("after listener");
-
-        w.end();
-        w.end();
-
-        // Because we are invoking Element.text(), the text added by the listener is appended to the body of the
-        // element,
-        // which is correct but may not be what you'd expect.
-
-        assertEquals(
-                w.toString(),
-                "<?xml version=\"1.0\"?>\n"
-                        + "<root><no-listener>before listener<listener>[Start: listener]before n-w-l<nested-with-listener>[Start: nested-with-listener]n-w-l text[End: nested-with-listener]</nested-with-listener>after n-w-l[End: listener]</listener>after listener</no-listener></root>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MetaDataLocatorImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MetaDataLocatorImplTest.java
deleted file mode 100644
index 07fd85f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/MetaDataLocatorImplTest.java
+++ /dev/null
@@ -1,427 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.MetaDataLocator;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class MetaDataLocatorImplTest extends InternalBaseTestCase
-{
-    private TypeCoercer typeCoercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        typeCoercer = getService(TypeCoercer.class);
-    }
-
-    @Test
-    public void found_in_component()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "foo.Bar:baz";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, value);
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        Map<String, String> configuration = Collections.emptyMap();
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-
-        // And check that it's cached:
-
-        train_getCompleteId(resources, completeId);
-
-        replay();
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    @Test
-    public void default_to_symbol_source()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "foo/Bar:baz";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, null);
-        train_getContainerResources(resources, null);
-        train_getPageName(resources, "foo/Bar");
-        train_valueForSymbol(symbolSource, key, value);
-
-        replay();
-
-        Map<String, String> configuration = Collections.emptyMap();
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-
-        // And check that it's cached:
-
-        train_getCompleteId(resources, completeId);
-
-        replay();
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    @Test
-    public void find_by_page_name()
-    {
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String pageName = "foo/Bar";
-
-        expect(modelSource.getPageModel(pageName)).andReturn(model);
-
-        train_getMeta(model, key, value);
-        train_expandSymbols(symbolSource, value, "*expanded*");
-
-        replay();
-
-        Map<String, String> configuration = Collections.emptyMap();
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, pageName, String.class), "*expanded*");
-
-        verify();
-    }
-
-    @Test
-    public void not_found_by_page_name_but_found_in_configuration()
-    {
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String pageName = "gnip/Gnop";
-
-        expect(modelSource.getPageModel(pageName)).andReturn(model);
-
-        train_getMeta(model, key, null);
-        train_expandSymbols(symbolSource, value, "*expanded*");
-
-        replay();
-
-        Map<String, String> configuration = CollectionFactory.newMap();
-        
-        configuration.put("gnip:foo.bar", value);
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, pageName, String.class), "*expanded*");
-
-        verify();
-    }
-
-    @Test
-    public void found_in_container()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentResources containerResources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        ComponentModel containerModel = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "foo.Bar:baz";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, null);
-        train_getContainerResources(resources, containerResources);
-        train_getComponentModel(containerResources, containerModel);
-        train_getMeta(containerModel, key, value);
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        Map<String, String> configuration = Collections.emptyMap();
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    @Test
-    public void found_via_high_level_default()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "Bar";
-        String logicalPageName = completeId;
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, null);
-        train_getContainerResources(resources, null);
-
-        train_getPageName(resources, logicalPageName);
-
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        Map<String, String> configuration = newMap();
-        configuration.put(key, value);
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-
-        // And check that it's cached:
-
-        train_getCompleteId(resources, completeId);
-
-        replay();
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    @Test
-    public void default_matching_is_case_insensitive()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "foo.Bar";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, null);
-        train_getContainerResources(resources, null);
-
-        train_getPageName(resources, "foo/Bar");
-
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        Map<String, String> configuration = newMap();
-        configuration.put(key.toUpperCase(), value);
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-
-        // And check that it's cached:
-
-        train_getCompleteId(resources, completeId);
-
-        replay();
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    @Test
-    public void subfolder_default_overrides_high_level_default()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "foo.Bar";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, null);
-        train_getContainerResources(resources, null);
-
-        train_getPageName(resources, "foo/Bar");
-
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        Map<String, String> configuration = newMap();
-        configuration.put(key, "xxx");
-        configuration.put("foo:" + key, value);
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-
-        // And check that it's cached:
-
-        train_getCompleteId(resources, completeId);
-
-        replay();
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    @Test
-    public void test_cache_cleared()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "zaphod";
-        String completeId = "foo.Bar:baz";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, value);
-
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        Map<String, String> configuration = Collections.emptyMap();
-
-        MetaDataLocatorImpl locator = new MetaDataLocatorImpl(symbolSource, typeCoercer,
-                modelSource, configuration);
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-
-        // And check that it's cached:
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, value);
-
-        train_expandSymbols(symbolSource, value, value);
-
-        replay();
-
-        locator.objectWasInvalidated();
-
-        assertSame(locator.findMeta(key, resources, String.class), value);
-
-        verify();
-    }
-
-    /**
-     * Makes sense to test together to ensure that the expanded value is what's fed to the type
-     * coercer.
-     */
-    @Test
-    public void train_symbols_expanded_and_types_coerced()
-    {
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        SymbolSource symbolSource = mockSymbolSource();
-        ComponentModelSource modelSource = mockComponentModelSource();
-
-        String key = "foo.bar";
-        String value = "${zaphod}";
-        String expandedValue = "99";
-        String completeId = "foo.Bar:baz";
-
-        train_getCompleteId(resources, completeId);
-        train_getComponentModel(resources, model);
-        train_getMeta(model, key, value);
-        train_expandSymbols(symbolSource, value, expandedValue);
-
-        replay();
-
-        Map<String, String> configuration = Collections.emptyMap();
-
-        MetaDataLocator locator = new MetaDataLocatorImpl(symbolSource, typeCoercer, modelSource,
-                configuration);
-
-        assertEquals(locator.findMeta(key, resources, Integer.class), new Integer(99));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Named.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Named.java
deleted file mode 100644
index 05aa64a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Named.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-/**
- * Used by {@link org.apache.tapestry5.internal.services.ComponentInstantiatorSourceImplTest}.
- */
-public interface Named
-{
-    String getName();
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NestedObject.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NestedObject.java
deleted file mode 100644
index ca40414..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NestedObject.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class NestedObject
-{
-    private final String name;
-
-    public NestedObject(String name)
-    {
-        this.name = name;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NoOpCookieSource.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NoOpCookieSource.java
deleted file mode 100644
index 86e2c13..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NoOpCookieSource.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.services.Cookies;
-
-public class NoOpCookieSource implements Cookies
-{
-
-    public String readCookieValue(String name)
-    {
-        return null;
-    }
-
-    public void writeCookieValue(String name, String value)
-    {
-
-    }
-
-    public void writeCookieValue(String name, String value, int maxAge)
-    {
-
-    }
-
-    public void writeCookieValue(String name, String value, String path)
-    {
-        // TODO Auto-generated method stub
-
-    }
-
-    public void writeDomainCookieValue(String name, String value, String domain)
-    {
-
-    }
-
-    public void writeDomainCookieValue(String name, String value, String domain, int maxAge)
-    {
-
-    }
-
-    public void writeCookieValue(String name, String value, String path, String domain)
-    {
-
-    }
-
-    public void removeCookieValue(String name)
-    {
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NonVisualBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NonVisualBean.java
deleted file mode 100644
index e7df970..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NonVisualBean.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-
-public class NonVisualBean
-{
-    private int id;
-
-    private String name;
-
-    @NonVisual
-    public int getId()
-    {
-        return id;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public void setId(int id)
-    {
-        this.id = id;
-    }
-
-    public void setName(String name)
-    {
-        this.name = name;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImplTest.java
deleted file mode 100644
index c1f1aaf..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/NullFieldStrategySourceImplTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.NullFieldStrategy;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.NullFieldStrategySource;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.Map;
-
-public class NullFieldStrategySourceImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void success()
-    {
-        NullFieldStrategy strategy = mockNullFieldStrategy();
-
-        replay();
-
-        Map<String, NullFieldStrategy> configuration = Collections.singletonMap("strat", strategy);
-
-        NullFieldStrategySource source = new NullFieldStrategySourceImpl(configuration);
-
-        assertSame(source.get("strat"), strategy);
-
-        verify();
-    }
-
-    @Test
-    public void failure()
-    {
-        Map<String, NullFieldStrategy> configuration = CollectionFactory.newCaseInsensitiveMap();
-
-        configuration.put("fred", mockNullFieldStrategy());
-        configuration.put("barney", mockNullFieldStrategy());
-
-        replay();
-
-        NullFieldStrategySource source = new NullFieldStrategySourceImpl(configuration);
-
-        try
-        {
-            source.get("wilma");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertEquals(ex.getMessage(), "Unrecognized name 'wilma' locating a null field strategy.");
-            assertListsEquals(ex.getAvailableValues().getValues(), "barney", "fred");
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImplTest.java
deleted file mode 100644
index f32cd15..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageActivationContextCollectorImplTest.java
+++ /dev/null
@@ -1,165 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentEventCallback;
-import org.apache.tapestry5.EventConstants;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.model.ComponentModel;
-import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-public class PageActivationContextCollectorImplTest extends InternalBaseTestCase
-{
-    private TypeCoercer coercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        coercer = getService(TypeCoercer.class);
-    }
-
-    @Test
-    public void page_with_array_activation_context()
-    {
-        tryWithContext("MyPage", new Object[] { 3, "four", null, "$100" },
-                       3, "four", null, "$100");
-    }
-
-    @Test
-    public void page_with_single_value_context()
-    {
-        Object value = 99;
-
-        tryWithContext("MyPage", value, value);
-    }
-
-    @Test
-    public void page_with_list_context()
-    {
-        tryWithContext("MyPage", Arrays.asList(1, 2, 3),
-                       1, 2, 3);
-    }
-
-    @Test
-    public void page_with_empty_context()
-    {
-        tryWithContext("MyPage", new String[0]);
-    }
-
-    @Test
-    public void page_with_no_context()
-    {
-        String pageName = "mypage";
-        ComponentModel model = mockComponentModel();
-        ComponentModelSource modelSource = mockComponentModelSource();
-        RequestPageCache pageCache = mockRequestPageCache();
-        Page page = mockPage();
-        ComponentPageElement element = mockComponentPageElement();
-        expect(modelSource.getPageModel(pageName)).andReturn(model);
-
-        expect(model.handlesEvent(EventConstants.PASSIVATE)).andReturn(true);
-
-        train_get(pageCache, pageName, page);
-
-        train_getRootElement(page, element);
-
-        expect(element.triggerEvent(EasyMock.eq(EventConstants.PASSIVATE),
-                                    (Object[]) EasyMock.isNull(),
-                                    EasyMock.isA(ComponentEventCallback.class))).andReturn(false);
-
-        replay();
-
-        PageActivationContextCollector collector
-                = new PageActivationContextCollectorImpl(coercer, pageCache, modelSource);
-
-        Object[] actual = collector.collectPageActivationContext(pageName);
-
-        assertEquals(actual.length, 0);
-    }
-
-    @Test
-    public void page_does_not_handle_passivate_event()
-    {
-        String pageName = "mypage";
-        ComponentModel model = mockComponentModel();
-        ComponentModelSource modelSource = mockComponentModelSource();
-        RequestPageCache pageCache = mockRequestPageCache();
-
-        expect(modelSource.getPageModel(pageName)).andReturn(model);
-
-        expect(model.handlesEvent(EventConstants.PASSIVATE)).andReturn(false);
-
-        replay();
-
-        PageActivationContextCollector collector
-                = new PageActivationContextCollectorImpl(coercer, pageCache, modelSource);
-
-        Object[] actual = collector.collectPageActivationContext(pageName);
-
-        assertEquals(actual.length, 0);
-
-    }
-
-
-    private void tryWithContext(String pageName, final Object context, Object... expected)
-    {
-        ComponentModelSource modelSource = mockComponentModelSource();
-        RequestPageCache pageCache = mockRequestPageCache();
-        ComponentPageElement element = mockComponentPageElement();
-        ComponentModel model = mockComponentModel();
-        Page page = mockPage();
-
-        expect(modelSource.getPageModel(pageName)).andReturn(model);
-
-        expect(model.handlesEvent(EventConstants.PASSIVATE)).andReturn(true);
-
-        train_get(pageCache, pageName, page);
-
-        train_getRootElement(page, element);
-
-        IAnswer answer = new IAnswer()
-        {
-            public Object answer() throws Throwable
-            {
-                Object[] args = EasyMock.getCurrentArguments();
-
-                ComponentEventCallback callback = (ComponentEventCallback) args[2];
-
-                return callback.handleResult(context);
-            }
-        };
-
-        expect(element.triggerEvent(EasyMock.eq(EventConstants.PASSIVATE),
-                                    (Object[]) EasyMock.isNull(),
-                                    EasyMock.isA(ComponentEventCallback.class))).andAnswer(answer);
-
-        replay();
-
-        PageActivationContextCollector collector
-                = new PageActivationContextCollectorImpl(coercer, pageCache, modelSource);
-
-        Object[] actual = collector.collectPageActivationContext(pageName);
-
-        assertArraysEqual(actual, expected);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageElementFactoryImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageElementFactoryImplTest.java
deleted file mode 100644
index 0cad320..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageElementFactoryImplTest.java
+++ /dev/null
@@ -1,88 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.dom.MarkupModel;
-import org.apache.tapestry5.dom.XMLMarkupModel;
-import org.apache.tapestry5.internal.parser.AttributeToken;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.BindingSource;
-import org.testng.annotations.Test;
-
-public class PageElementFactoryImplTest extends InternalBaseTestCase
-{
-    private static MarkupModel xmlModel = new XMLMarkupModel();
-
-    @Test
-    public void attribute()
-    {
-        TypeCoercer typeCoercer = mockTypeCoercer();
-        BindingSource bindingSource = mockBindingSource();
-        MarkupWriter writer = new MarkupWriterImpl(xmlModel);
-        Location l = mockLocation();
-        RenderQueue queue = mockRenderQueue();
-
-        replay();
-
-        PageElementFactory factory = new PageElementFactoryImpl(typeCoercer, bindingSource);
-        AttributeToken token = new AttributeToken(null, "name", "value", l);
-
-        RenderCommand element = factory.newAttributeElement(null, token);
-
-        writer.element("root");
-
-        element.render(writer, queue);
-
-        verify();
-
-        assertEquals(writer.toString(), "<?xml version=\"1.0\"?>\n<root name=\"value\"/>");
-    }
-
-
-    @Test
-    public void unclosed_attribute_expression()
-    {
-        TypeCoercer typeCoercer = mockTypeCoercer();
-        BindingSource bindingSource = mockBindingSource();
-        ComponentResources resources = mockComponentResources();
-        Location location = mockLocation();
-
-        AttributeToken token = new AttributeToken(null, "fred", "${flintstone", location);
-
-        replay();
-
-        PageElementFactory factory = new PageElementFactoryImpl(typeCoercer, bindingSource);
-
-        try
-        {
-            factory.newAttributeElement(resources, token);
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            assertEquals(ex.getMessage(), "Attribute expression \'${flintstone\' is missing a closing brace.");
-            assertSame(ex.getLocation(), location);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLocatorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLocatorTest.java
deleted file mode 100644
index 8d1ae9b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageLocatorTest.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class PageLocatorTest extends Assert
-{
-    @Test
-    public void equals()
-    {
-        PageLocator locator = new PageLocator("p1", Locale.ENGLISH);
-        assertEquals(locator, new PageLocator("p1", Locale.ENGLISH));
-        assertFalse(locator.equals(null));
-        assertFalse(locator.equals("p1"));
-        assertFalse(locator.equals(new PageLocator("p1", Locale.CHINESE)));
-        assertFalse(locator.equals(new PageLocator("p2", Locale.ENGLISH)));
-    }
-
-    @Test
-    public void to_string()
-    {
-        PageLocator locator = new PageLocator("p1", Locale.ENGLISH);
-        assertEquals(locator.toString(), "PageLocator[p1, en]");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PagePoolCacheTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PagePoolCacheTest.java
deleted file mode 100644
index 50cc0ad..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PagePoolCacheTest.java
+++ /dev/null
@@ -1,276 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class PagePoolCacheTest extends InternalBaseTestCase
-{
-    private static final String PAGE_NAME = "mypage";
-    private static final Locale LOCALE = Locale.ENGLISH;
-
-    @Test
-    public void inside_of_soft_limit()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        Page page2 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-
-        replay();
-
-        PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 5, 100, 20, 1000);
-
-        assertSame(cache.checkout(), page1);
-        assertSame(cache.checkout(), page2);
-
-        verify();
-    }
-
-    @Test
-    public void reuse_existing_page()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        Page page2 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-
-        replay();
-
-        PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 5, 100, 20, 1000);
-
-        assertSame(cache.checkout(), page1);
-        assertSame(cache.checkout(), page2);
-
-        cache.release(page1);
-
-        assertSame(cache.checkout(), page1);
-
-        verify();
-    }
-
-    @Test
-    public void remove_does_not_reuse_page()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        Page page2 = mockPage();
-        Page page3 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page3);
-
-        replay();
-
-        PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 5, 100, 20, 1000);
-
-        assertSame(cache.checkout(), page1);
-        assertSame(cache.checkout(), page2);
-
-        cache.remove(page1);
-
-        assertSame(cache.checkout(), page3);
-
-        verify();
-    }
-
-    @Test
-    public void new_instance_after_soft_wait()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        Page page2 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-
-        replay();
-
-        PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 1, 500, 20, 1000);
-
-        assertSame(cache.checkout(), page1);
-
-        long start = System.currentTimeMillis();
-
-        assertSame(cache.checkout(), page2);
-
-        long elapsed = System.currentTimeMillis() - start;
-
-        // Fudging a bit because Java clocks are notoriously innaccurate
-
-        assertTrue(elapsed > 490, "A delay should have occured.");
-
-        verify();
-    }
-
-    @Test
-    public void hard_limit_failure()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-
-        replay();
-
-        PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 1, 10, 1, 1000);
-
-        assertSame(cache.checkout(), page1);
-
-        try
-        {
-            cache.checkout();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "The page pool for page 'mypage' (in locale en) has been exausted: there are 1 instances currently being used and no more can be created");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void page_released_by_other_thread() throws Exception
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        final Page page2 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-
-        replay();
-
-        final PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 1, 1000, 20, 1000);
-
-        assertSame(cache.checkout(), page1);
-        assertSame(cache.checkout(), page2);
-
-        Runnable r = new Runnable()
-        {
-            public void run()
-            {
-                sleep(20);
-
-                cache.release(page2);
-            }
-        };
-
-        new Thread(r).start();
-
-        assertSame(cache.checkout(), page2);
-
-        verify();
-    }
-
-    @Test
-    public void page_removed_by_other_thread_is_not_used()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        final Page page2 = mockPage();
-        Page page3 = mockPage();
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page3);
-
-        replay();
-
-        final PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 1, 100, 20, 1000);
-
-        assertSame(cache.checkout(), page1);
-        assertSame(cache.checkout(), page2);
-
-        Runnable r = new Runnable()
-        {
-            public void run()
-            {
-                sleep(20);
-
-                cache.remove(page2);
-            }
-        };
-
-        new Thread(r).start();
-
-        assertSame(cache.checkout(), page3);
-
-        verify();
-    }
-
-    @Test
-    public void cleanup()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page1 = mockPage();
-        Page page2 = mockPage();
-        Page page3 = mockPage();
-
-
-        train_loadPage(loader, PAGE_NAME, LOCALE, page1);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page2);
-        train_loadPage(loader, PAGE_NAME, LOCALE, page3);
-
-        replay();
-
-        PagePoolCache cache = new PagePoolCache(PAGE_NAME, LOCALE, loader, 5, 100, 20, 50);
-
-        assertSame(cache.checkout(), page1);
-        assertSame(cache.checkout(), page2);
-
-        cache.release(page1);
-
-        // Sleep longer than the active window (10)
-
-        sleep(75);
-
-        cache.release(page2);
-
-        cache.cleanup();
-
-        assertSame(cache.checkout(), page2);
-
-        // Page3 is created because page1 was culled as too old.
-
-        assertSame(cache.checkout(), page3);
-
-        verify();
-    }
-
-    private static void sleep(long time)
-    {
-        try
-        {
-            Thread.sleep(time);
-        }
-        catch (Exception ex)
-        {
-            // Ignore.
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PagePoolImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PagePoolImplTest.java
deleted file mode 100644
index 6990c88..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PagePoolImplTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import static org.easymock.EasyMock.contains;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class PagePoolImplTest extends InternalBaseTestCase
-{
-
-    private static final String LOGICAL_PAGE_NAME = "MyPage";
-
-    // This will change once we start supporting application localization.
-
-    private final Locale locale = Locale.getDefault();
-
-    @Test
-    public void checkout_when_page_list_is_null()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page = mockPage();
-        ThreadLocale tl = mockThreadLocale();
-        Logger logger = mockLogger();
-
-        train_getLocale(tl, locale);
-
-        train_loadPage(loader, LOGICAL_PAGE_NAME, locale, page);
-
-        replay();
-
-        PagePool pool = new PagePoolImpl(logger, loader, tl, 5, 0, 20, 600000);
-
-        assertSame(page, pool.checkout(LOGICAL_PAGE_NAME));
-
-        verify();
-    }
-
-    @Test
-    public void checkout_when_page_list_is_empty()
-    {
-        Page page1 = mockPage();
-        Page page2 = mockPage();
-        PageLoader loader = mockPageLoader();
-        Logger logger = mockLogger();
-        ThreadLocale tl = mockThreadLocale();
-
-        train_getLocale(tl, locale);
-
-        train_loadPage(loader, LOGICAL_PAGE_NAME, locale, page1);
-
-        replay();
-
-        PagePool pool = new PagePoolImpl(logger, loader, tl, 5, 0, 20, 600000);
-
-        assertSame(pool.checkout(LOGICAL_PAGE_NAME), page1);
-
-        verify();
-
-        train_detached(page1, false);
-        train_getName(page1, LOGICAL_PAGE_NAME);
-        train_getLocale(page1, locale);
-
-        replay();
-
-        pool.release(page1);
-
-        verify();
-
-        train_getLocale(tl, locale);
-
-        train_getLocale(tl, locale);
-
-        train_loadPage(loader, LOGICAL_PAGE_NAME, locale, page2);
-
-        replay();
-
-        assertSame(pool.checkout(LOGICAL_PAGE_NAME), page1);
-        assertSame(pool.checkout(LOGICAL_PAGE_NAME), page2);
-
-        verify();
-    }
-
-    @Test
-    public void dirty_pages_are_not_pooled()
-    {
-        PageLoader loader = mockPageLoader();
-        Page page = mockPage();
-        Logger logger = mockLogger();
-
-        train_detached(page, true);
-        train_getName(page, "dirty");
-        train_getLocale(page, Locale.ENGLISH);
-
-        logger.error(contains("is dirty, and will be discarded"));
-
-        // The fact that we don't ask
-        // the page for its name is our clue that it is not being cached.
-
-        replay();
-
-        PagePool pool = new PagePoolImpl(logger, loader, null, 5, 0, 20, 600000);
-
-        pool.release(page);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderLinkSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderLinkSourceImplTest.java
deleted file mode 100644
index 1e4879d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderLinkSourceImplTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.integration.app5.pages.Index;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.PageRenderLinkSource;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.testng.annotations.Test;
-
-public class PageRenderLinkSourceImplTest extends InternalBaseTestCase
-{
-    private static final Class PAGE_CLASS = Index.class;
-
-    private static final String PAGE_NAME = "Index";
-
-    @Test
-    public void default_passivate_context()
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        LinkSource source = mockLinkSource();
-        Link link = mockLink();
-
-        train_resolvePageClassNameToPageName(resolver, PAGE_CLASS.getName(), PAGE_NAME);
-
-        expect(source.createPageRenderLink(PAGE_NAME, false)).andReturn(link);
-
-        replay();
-
-        PageRenderLinkSource service = new PageRenderLinkSourceImpl(source, resolver);
-
-        assertSame(service.createPageRenderLink(PAGE_CLASS), link);
-
-        verify();
-    }
-
-    @Test
-    public void override_passivate_context()
-    {
-        ComponentClassResolver resolver = mockComponentClassResolver();
-        LinkSource source = mockLinkSource();
-        Link link = mockLink();
-        EventContext eventContext = mockEventContext();
-
-        train_resolvePageClassNameToPageName(resolver, PAGE_CLASS.getName(), PAGE_NAME);
-
-        expect(source.createPageRenderLink(PAGE_NAME, true, "fred", "barney")).andReturn(link);
-
-        train_resolvePageClassNameToPageName(resolver, PAGE_CLASS.getName(), PAGE_NAME);
-
-        train_getCount(eventContext, 2);        
-
-        train_get(eventContext, Object.class, 0, "ted");
-
-        train_get(eventContext, Object.class, 1, "barney");
-
-        expect(source.createPageRenderLink(PAGE_NAME, true, "ted", "barney")).andReturn(link);
-
-        replay();
-
-        PageRenderLinkSource service = new PageRenderLinkSourceImpl(source, resolver);
-
-        assertSame(service.createPageRenderLinkWithContext(PAGE_CLASS, "fred", "barney"), link);
-
-        assertSame(service.createPageRenderLinkWithContext(PAGE_CLASS, eventContext), link);
-
-        verify();
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
deleted file mode 100644
index b6db163..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PageRenderRequestHandlerImplTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ComponentEventResultProcessor;
-import org.apache.tapestry5.services.PageRenderRequestHandler;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.testng.annotations.Test;
-
-public class PageRenderRequestHandlerImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void loopback_request() throws Exception
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        ComponentEventResultProcessor processor = mockComponentEventResultProcessor();
-        PageResponseRenderer renderer = mockPageResponseRenderer();
-        Page page = mockPage();
-        EventContext context = mockEventContext();
-        ComponentPageElement root = mockComponentPageElement();
-        InternalComponentResources pageResources = mockInternalComponentResources();
-        PageActivator activator = newMock(PageActivator.class);
-
-        train_get(cache, "foo/Bar", page);
-
-        train_getRootElement(page, root);
-        train_getComponentResources(root, pageResources);
-        expect(activator.activatePage(pageResources, context, processor)).andReturn(false);
-
-        // Skips the pageReset()
-
-        renderer.renderPageResponse(page);
-
-        replay();
-
-        PageRenderRequestHandler handler = new PageRenderRequestHandlerImpl(cache, processor, renderer, activator);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters("foo/Bar", context, true);
-
-        handler.handle(parameters);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ParserExperiment.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ParserExperiment.java
deleted file mode 100644
index 456d518..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ParserExperiment.java
+++ /dev/null
@@ -1,181 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.xml.sax.Attributes;
-import org.xml.sax.InputSource;
-import org.xml.sax.Locator;
-import org.xml.sax.SAXException;
-import org.xml.sax.helpers.DefaultHandler;
-
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-import java.io.BufferedInputStream;
-import java.net.URL;
-
-/**
- * Used to experiment with namespace aware SAX parsers.
- */
-public class ParserExperiment extends DefaultHandler
-{
-    private Locator locator;
-
-    public static void main(String[] args) throws Exception
-    {
-        new ParserExperiment().parse("basic.tml");
-    }
-
-    public void parse(String file) throws Exception
-    {
-        parse(getClass().getResource(file));
-    }
-
-    public void parse(URL document) throws Exception
-    {
-        SAXParserFactory factory = SAXParserFactory.newInstance();
-
-        factory.setNamespaceAware(true);
-        // Equivalent:
-        // factory.setFeature("http://xml.org/sax/features/namespaces", true);
-
-        // Doesn't seem to do anything:
-        factory.setFeature("http://apache.org/xml/features/validation/schema/normalized-value", true);
-
-        // Doesn't seem to do anything:
-        factory.setFeature("http://xml.org/sax/features/namespace-prefixes", true);
-
-        // A non-validation parser is fine!
-
-        SAXParser parser = factory.newSAXParser();
-
-        InputSource source = new InputSource(new BufferedInputStream(document.openStream()));
-
-        parser.parse(source, this);
-    }
-
-    private void log(String methodName, String... details)
-    {
-        StringBuilder buffer = new StringBuilder();
-
-        buffer.append(String.format("%-25s:", methodName));
-
-        if (locator != null)
-        {
-            buffer.append(String.format(" [Line %d, column %d]", locator.getLineNumber(), locator
-                    .getColumnNumber()));
-        }
-
-        for (int i = 0; i < details.length; i++)
-        {
-            buffer.append("\n     ");
-            buffer.append(details[i]);
-        }
-
-        System.out.println(buffer.toString());
-    }
-
-    @Override
-    public void characters(char[] ch, int start, int length) throws SAXException
-    {
-        String string = new String(ch, start, length);
-        String loggable = string.replaceAll("![\\w -]", ".").trim();
-
-        log("characters", "start=" + start, "length=" + length, loggable);
-    }
-
-    @Override
-    public void endDocument() throws SAXException
-    {
-        log("endDocument");
-    }
-
-    @Override
-    public void endElement(String uri, String localName, String qName) throws SAXException
-    {
-        log("endElement", localName, "uri=" + uri, "qName=" + qName);
-    }
-
-    @Override
-    public void endPrefixMapping(String prefix) throws SAXException
-    {
-        log("endPrefixMapping", prefix);
-    }
-
-    @Override
-    public void ignorableWhitespace(char[] ch, int start, int length) throws SAXException
-    {
-        log("ignorableWhitespace", "start=" + start, "length=" + length);
-    }
-
-    @Override
-    public void notationDecl(String name, String publicId, String systemId) throws SAXException
-    {
-        log("notationDecl", name, "publicId=" + publicId, "systemId=" + systemId);
-    }
-
-    @Override
-    public void processingInstruction(String target, String data) throws SAXException
-    {
-        log("pi", "target=" + target, "data=" + data);
-    }
-
-    @Override
-    public void setDocumentLocator(Locator locator)
-    {
-        this.locator = locator;
-
-        log("setDocumentLocator", "publicId=" + locator.getPublicId(), "systemId=" + locator.getSystemId());
-    }
-
-    @Override
-    public void skippedEntity(String name) throws SAXException
-    {
-        log("skippedEntity", name);
-    }
-
-    @Override
-    public void startDocument() throws SAXException
-    {
-        log("startDocument");
-    }
-
-    @Override
-    public void startElement(String uri, String localName, String qName, Attributes attributes) throws SAXException
-    {
-        log("startElement", localName, "uri=" + uri, "qName=" + qName);
-
-        int count = attributes.getLength();
-
-        for (int i = 0; i < count; i++)
-        {
-            log("attribute", attributes.getLocalName(i), "value=" + attributes.getValue(i),
-                "qName=" + attributes.getQName(i));
-        }
-    }
-
-    @Override
-    public void startPrefixMapping(String prefix, String uri) throws SAXException
-    {
-        log("startPrefixMapping", "prefix=" + prefix, "uri=" + uri);
-    }
-
-    @Override
-    public void unparsedEntityDecl(String name, String publicId, String systemId, String notationName)
-            throws SAXException
-    {
-        log("unparsedEntityDecl", name, "publicId=" + publicId, "systemId=" + systemId);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinkerTest.java
deleted file mode 100644
index 83221a6..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PartialMarkupDocumentLinkerTest.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.javascript.StylesheetOptions;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class PartialMarkupDocumentLinkerTest extends Assert
-{
-    @Test(expectedExceptions = UnsupportedOperationException.class)
-    public void script()
-    {
-        PartialMarkupDocumentLinker linker = new PartialMarkupDocumentLinker();
-
-        linker.addScript(InitializationPriority.NORMAL, "foo();");
-
-        throw new IllegalStateException("Unreachable code.");
-    }
-
-    @Test
-    public void script_link()
-    {
-        PartialMarkupDocumentLinker linker = new PartialMarkupDocumentLinker();
-
-        linker.addScriptLink("foo.js");
-        linker.addScriptLink("bar.js");
-
-        JSONObject reply = new JSONObject();
-
-        linker.commit(reply);
-
-        assertEquals(reply.toCompactString(), "{\"scripts\":[\"foo.js\",\"bar.js\"]}");
-
-    }
-
-    @Test
-    public void stylesheet_link()
-    {
-        PartialMarkupDocumentLinker linker = new PartialMarkupDocumentLinker();
-
-        linker.addStylesheetLink(new StylesheetLink("foo.css", new StylesheetOptions("print")));
-        linker.addStylesheetLink(new StylesheetLink("bar.css"));
-
-        JSONObject reply = new JSONObject();
-
-        linker.commit(reply);
-
-        JSONObject expected = new JSONObject(
-                "{\"stylesheets\":[{\"href\":\"foo.css\",\"media\":\"print\"},{\"href\":\"bar.css\"}]}");
-
-        assertEquals(reply, expected);
-    }
-
-    @Test
-    public void set_initialization()
-    {
-        PartialMarkupDocumentLinker linker = new PartialMarkupDocumentLinker();
-
-        JSONObject spec1 = new JSONObject("order", "immediate");
-        JSONObject spec2 = new JSONObject("order", "normal");
-
-        JSONObject reply = new JSONObject();
-
-        linker.setInitialization(InitializationPriority.NORMAL, spec2);
-        linker.setInitialization(InitializationPriority.IMMEDIATE, spec1);
-
-        linker.commit(reply);
-
-        JSONObject expected = new JSONObject().put("inits", new JSONArray(spec1, spec2));
-
-        assertEquals(reply, expected);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImplTest.java
deleted file mode 100644
index e052c04..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentFieldBundleImplTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.PersistentFieldBundle;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-
-public class PersistentFieldBundleImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void get_root_component_value()
-    {
-        String value = "FIELD-VALUE";
-
-        PersistentFieldChange change = new PersistentFieldChangeImpl("", "field", value);
-        Collection<PersistentFieldChange> changes = Arrays.asList(change);
-
-        PersistentFieldBundle bundle = new PersistentFieldBundleImpl(changes);
-
-        assertTrue(bundle.containsValue("", "field"));
-        assertTrue(bundle.containsValue(null, "field"));
-
-        assertSame(bundle.getValue("", "field"), value);
-        assertSame(bundle.getValue(null, "field"), value);
-
-        assertFalse(bundle.containsValue("", "other"));
-        assertFalse(bundle.containsValue(null, "other"));
-    }
-
-    @Test
-    public void get_nested_component_value()
-    {
-        String value = "FIELD-VALUE";
-
-        PersistentFieldChange change = new PersistentFieldChangeImpl("foo.bar", "field", value);
-        Collection<PersistentFieldChange> changes = Arrays.asList(change);
-
-        PersistentFieldBundle bundle = new PersistentFieldBundleImpl(changes);
-
-        assertTrue(bundle.containsValue("foo.bar", "field"));
-
-        assertSame(bundle.getValue("foo.bar", "field"), value);
-
-        assertFalse(bundle.containsValue("foo.bar", "other"));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImplTest.java
deleted file mode 100644
index 53a6125..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentFieldManagerImplTest.java
+++ /dev/null
@@ -1,285 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.MetaDataLocator;
-import org.apache.tapestry5.services.PersistentFieldBundle;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-import org.testng.annotations.Test;
-
-import java.util.Collection;
-import java.util.Map;
-
-public class PersistentFieldManagerImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void post_change_with_unknown_strategy()
-    {
-        String fieldName = "field";
-
-        PersistentFieldStrategy strat1 = newPersistentFieldStrategy();
-        PersistentFieldStrategy strat2 = newPersistentFieldStrategy();
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-        strategies.put("foo", strat1);
-        strategies.put("bar", strat2);
-
-        train_getComponentModel(resources, model);
-
-        train_getFieldPersistenceStrategy(model, fieldName, "braveheart");
-
-        replay();
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(null, strategies);
-
-        try
-        {
-            manager.postChange("foo.Bar", resources, fieldName, null);
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertEquals(ex.getMessage(), "'braveheart' is not a defined persistent strategy.");
-            assertListsEquals(ex.getAvailableValues().getValues(), "bar", "foo");
-        }
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1475
-     */
-    @Test
-    public void discard_changes()
-    {
-        PersistentFieldStrategy strat1 = newPersistentFieldStrategy();
-        PersistentFieldStrategy strat2 = newPersistentFieldStrategy();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-        strategies.put("foo", strat1);
-        strategies.put("bar", strat2);
-
-        String pageName = "gnip.gnop";
-
-        strat1.discardChanges(pageName);
-        strat2.discardChanges(pageName);
-
-        replay();
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(null, strategies);
-
-        manager.discardChanges(pageName);
-
-        verify();
-    }
-
-    @Test
-    public void post_change()
-    {
-        String pageName = "foo.Bar";
-        String nestedId = "nested";
-        String fieldName = "field";
-        String strategyName = "foo";
-
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        PersistentFieldStrategy strat = newPersistentFieldStrategy();
-        Object value = new Object();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-        strategies.put(strategyName, strat);
-
-        train_getComponentModel(resources, model);
-
-        train_getFieldPersistenceStrategy(model, fieldName, strategyName);
-
-        train_getNestedId(resources, nestedId);
-
-        strat.postChange(pageName, nestedId, fieldName, value);
-
-        replay();
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(null, strategies);
-
-        manager.postChange(pageName, resources, fieldName, value);
-
-        verify();
-    }
-
-    public void strategy_name_is_case_insensitive()
-    {
-        String pageName = "foo.Bar";
-        String nestedId = "nested";
-        String fieldName = "field";
-        String strategyName = "FOO";
-
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        PersistentFieldStrategy strat = newPersistentFieldStrategy();
-        Object value = new Object();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-        strategies.put("foo", strat);
-
-        train_getComponentModel(resources, model);
-
-        train_getFieldPersistenceStrategy(model, fieldName, strategyName);
-
-        train_getNestedId(resources, nestedId);
-
-        strat.postChange(pageName, nestedId, fieldName, value);
-
-        replay();
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(null, strategies);
-
-        manager.postChange(pageName, resources, fieldName, value);
-
-        verify();
-    }
-
-    @Test
-    public void post_change_strategy_by_meta_data()
-    {
-        String pageName = "foo.Bar";
-        String nestedId = "nested";
-        String fieldName = "field";
-        String strategyName = "foo";
-
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        PersistentFieldStrategy strat = newPersistentFieldStrategy();
-        MetaDataLocator locator = mockMetaDataLocator();
-
-        Object value = new Object();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-        strategies.put(strategyName, strat);
-
-        train_getComponentModel(resources, model);
-
-        train_getFieldPersistenceStrategy(model, fieldName, "");
-
-        train_findMeta(locator, SymbolConstants.PERSISTENCE_STRATEGY, resources, String.class, strategyName);
-
-        train_getNestedId(resources, nestedId);
-
-        strat.postChange(pageName, nestedId, fieldName, value);
-
-        replay();
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(locator, strategies);
-
-        manager.postChange(pageName, resources, fieldName, value);
-
-        verify();
-    }
-
-    @Test
-    public void post_change_with_ultimate_default_strategy()
-    {
-        String pageName = "foo.Bar";
-        String nestedId = "nested";
-        String fieldName = "field";
-
-        ComponentResources resources = mockComponentResources();
-        ComponentModel model = mockComponentModel();
-        MetaDataLocator locator = mockMetaDataLocator();
-
-        PersistentFieldStrategy strat = newPersistentFieldStrategy();
-        Object value = new Object();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-        strategies.put(PersistenceConstants.SESSION, strat);
-
-        train_getComponentModel(resources, model);
-
-        train_getFieldPersistenceStrategy(model, fieldName, "");
-
-        train_findMeta(locator, SymbolConstants.PERSISTENCE_STRATEGY, resources, String.class,
-                PersistenceConstants.SESSION);
-
-        train_getNestedId(resources, nestedId);
-
-        strat.postChange(pageName, nestedId, fieldName, value);
-
-        replay();
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(locator, strategies);
-
-        manager.postChange(pageName, resources, fieldName, value);
-
-        verify();
-    }
-
-    protected final PersistentFieldStrategy newPersistentFieldStrategy()
-    {
-        return newMock(PersistentFieldStrategy.class);
-    }
-
-    @Test
-    public void gather_changes()
-    {
-        Object value1 = new Object();
-        Object value2 = new Object();
-
-        PersistentFieldStrategy strat1 = newPersistentFieldStrategy();
-
-        Collection<PersistentFieldChange> changes1 = newList();
-        changes1.add(new PersistentFieldChangeImpl("component", "field1", value1));
-
-        PersistentFieldStrategy strat2 = newPersistentFieldStrategy();
-
-        Collection<PersistentFieldChange> changes2 = newList();
-        changes2.add(new PersistentFieldChangeImpl("component", "field2", value2));
-
-        // We don't know the exact order the strategies will be ordered in the map,
-        // so we can't guarantee the order the strategies will be invoked.
-
-        getMocksControl().checkOrder(false);
-
-        expect(strat1.gatherFieldChanges("foo.Bar")).andReturn(changes1);
-
-        expect(strat2.gatherFieldChanges("foo.Bar")).andReturn(changes2);
-
-        replay();
-
-        Map<String, PersistentFieldStrategy> strategies = newMap();
-
-        strategies.put("alpha", strat1);
-        strategies.put("beta", strat2);
-
-        PersistentFieldManager manager = new PersistentFieldManagerImpl(null, strategies);
-
-        PersistentFieldBundle bundle = manager.gatherChanges("foo.Bar");
-
-        assertSame(bundle.getValue("component", "field1"), value1);
-        assertSame(bundle.getValue("component", "field2"), value2);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java
deleted file mode 100644
index 8ac4357..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PersistentLocaleImplTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.apache.tapestry5.services.PersistentLocale;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class PersistentLocaleImplTest extends TestBase
-{
-    /**
-     * TAP5-537
-     */
-    @Test
-    public void set_to_unsupported_locale()
-    {
-        PersistentLocale pl = new PersistentLocaleImpl(null, "en,fr");
-
-        try
-        {
-            pl.set(Locale.CHINESE);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Locale 'zh' is not supported by this application. Supported locales are 'en,fr'; this is configured via the tapestry.supported-locales symbol.");
-        }
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
deleted file mode 100644
index e299245..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PropertyConduitSourceImplTest.java
+++ /dev/null
@@ -1,787 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.PropertyConduit;
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.integration.app1.data.IntegerHolder;
-import org.apache.tapestry5.internal.InternalPropertyConduit;
-import org.apache.tapestry5.internal.bindings.PropBindingFactoryTest;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.util.Holder;
-import org.apache.tapestry5.internal.util.IntegerRange;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.services.PropertyConduitSource;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- * Most of the testing occurs inside {@link PropBindingFactoryTest} (due to
- * historical reasons).
- */
-public class PropertyConduitSourceImplTest extends InternalBaseTestCase
-{
-    private PropertyConduitSource source;
-
-    @BeforeClass
-    public void setup()
-    {
-        source = getObject(PropertyConduitSource.class, null);
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        source = null;
-    }
-
-    @Test
-    public void literal_conduits_have_invariant_annotation()
-    {
-        PropertyConduit pc = source.create(CompositeBean.class, "12345");
-
-        Invariant annotation = pc.getAnnotation(Invariant.class);
-
-        assertNotNull(annotation);
-
-        assertSame(annotation.annotationType(), Invariant.class);
-    }
-
-    @Test
-    public void range_variable_to()
-    {
-        PropertyConduit pc = source.create(IntegerHolder.class, "10..value");
-        IntegerHolder h = new IntegerHolder();
-
-        h.setValue(5);
-
-        IntegerRange ir = (IntegerRange) pc.get(h);
-
-        assertEquals(ir, new IntegerRange(10, 5));
-    }
-
-    @Test
-    public void range_variable_from()
-    {
-        PropertyConduit pc = source.create(IntegerHolder.class, "value..99");
-        IntegerHolder h = new IntegerHolder();
-
-        h.setValue(72);
-
-        IntegerRange ir = (IntegerRange) pc.get(h);
-
-        assertEquals(ir, new IntegerRange(72, 99));
-    }
-
-    @Test
-    public void literal_conduits_are_not_updateable()
-    {
-        PropertyConduit pc = source.create(CompositeBean.class, "12345");
-        CompositeBean bean = new CompositeBean();
-
-        try
-        {
-            pc.set(bean, 42);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Literal values are not updateable.");
-        }
-    }
-
-    @Test
-    public void this_literal_conduit_is_not_updateable()
-    {
-        PropertyConduit normal = source.create(CompositeBean.class, "this");
-        CompositeBean bean = new CompositeBean();
-
-        try
-        {
-            normal.set(bean, 42);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Literal values are not updateable.");
-        }
-    }
-
-    @Test
-    public void question_dot_operator_for_object_type()
-    {
-        InternalPropertyConduit normal = (InternalPropertyConduit) source.create(CompositeBean.class,
-                "simple.firstName");
-        InternalPropertyConduit smart = (InternalPropertyConduit) source.create(CompositeBean.class,
-                "simple?.firstName");
-
-        CompositeBean bean = new CompositeBean();
-        bean.setSimple(null);
-
-        assertEquals(normal.getPropertyName(), "firstName");
-        assertEquals(smart.getPropertyName(), "firstName");
-
-        try
-        {
-            normal.get(bean);
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            // Expected.
-        }
-
-        assertNull(smart.get(bean));
-
-        try
-        {
-            normal.set(bean, "Howard");
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            // Expected.
-        }
-
-        // This will be a no-op due to the null property in the expression
-
-        smart.set(bean, "Howard");
-    }
-
-    @Test
-    public void method_names_are_matched_caselessly()
-    {
-        InternalPropertyConduit conduit = (InternalPropertyConduit) source.create(CompositeBean.class,
-                "GETSIMPLE().firstName");
-
-        assertEquals(conduit.getPropertyName(), "firstName");
-
-        CompositeBean bean = new CompositeBean();
-        SimpleBean inner = new SimpleBean();
-        bean.setSimple(inner);
-
-        conduit.set(bean, "Howard");
-
-        assertEquals(inner.getFirstName(), "Howard");
-    }
-
-    /**
-     * Or call this the "Hibernate" case; Hibernate creates sub-classes of
-     * entity classes in its own class loader to do
-     * all sorts of proxying. This trips up Javassist.
-     */
-    @Test
-    public void handle_beans_from_unexpected_classloader() throws Exception
-    {
-        // First, create something that looks like a Hibernate proxy.
-
-        ClassFactory factory = new ClassFactoryImpl();
-
-        Class clazz = SimpleBean.class;
-
-        ClassFab cf = factory.newClass(clazz.getName() + "$$Proxy", clazz);
-
-        cf.addInterface(Serializable.class);
-
-        Class proxyClass = cf.createClass();
-
-        SimpleBean simple = (SimpleBean) proxyClass.newInstance();
-
-        assertTrue(simple instanceof Serializable);
-
-        simple.setFirstName("Howard");
-
-        PropertyConduit conduit = source.create(proxyClass, "firstName");
-
-        assertEquals(conduit.get(simple), "Howard");
-    }
-
-    @Test
-    public void generics()
-    {
-        String string = "surprise";
-        StringHolder stringHolder = new StringHolder();
-        stringHolder.put(string);
-        StringHolderBean bean = new StringHolderBean();
-        bean.setValue(stringHolder);
-
-        PropertyConduit conduit = source.create(StringHolderBean.class, "value.get()");
-
-        assertSame(conduit.get(bean), string);
-
-        assertSame(conduit.getPropertyType(), String.class);
-    }
-
-    public static class One<A, B>
-    {
-        A a;
-        B b;
-
-        public A getA()
-        {
-            return a;
-        }
-
-        public void setA(A a)
-        {
-            this.a = a;
-        }
-
-        public B getB()
-        {
-            return b;
-        }
-
-        public void setB(B b)
-        {
-            this.b = b;
-        }
-    }
-
-    public static class Two<B> extends One<String, B>
-    {
-        String s;
-        B b2;
-
-        public String getS()
-        {
-            return s;
-        }
-
-        public void setS(String s)
-        {
-            this.s = s;
-        }
-
-        public B getB2()
-        {
-            return b2;
-        }
-
-        public void setB2(B b2)
-        {
-            this.b2 = b2;
-        }
-    }
-
-    public static class Three extends Two<Long>
-    {
-        Long x;
-
-        public Long getX()
-        {
-            return x;
-        }
-
-        public void setX(Long x)
-        {
-            this.x = x;
-        }
-    }
-
-    public static class WithParameters<C, T>
-    {
-        private C type1Property; // method access
-        public C type1Field; // field access
-        private T type2Property; // method access
-        public T type2Field; // field access
-
-        private T[] type2ArrayProperty;
-        public T[] type2ArrayField;
-
-        public C getType1Property()
-        {
-            return type1Property;
-        }
-
-        public void setType1Property(C type1Property)
-        {
-            this.type1Property = type1Property;
-        }
-
-        public T getType2Property()
-        {
-            return type2Property;
-        }
-
-        public void setType2Property(T type2Property)
-        {
-            this.type2Property = type2Property;
-        }
-
-        public T[] getType2ArrayProperty()
-        {
-            return type2ArrayProperty;
-        }
-
-        public void setType2ArrayProperty(T[] type2ArrayProperty)
-        {
-            this.type2ArrayProperty = type2ArrayProperty;
-        }
-    }
-
-    public static class RealizedParameters extends WithParameters<Holder<SimpleBean>, Long>
-    {
-    }
-
-    public static class WithGenericProperties
-    {
-        public Holder<SimpleBean> holder = new Holder<SimpleBean>();
-    }
-
-    public static interface GenericInterface<A, B>
-    {
-        A genericA();
-
-        B genericB();
-    }
-
-    public static class WithRealizedGenericInterface implements GenericInterface<String, Long>
-    {
-        String a;
-        Long b;
-
-        public String genericA()
-        {
-            return a;
-        }
-
-        public Long genericB()
-        {
-            return b;
-        }
-    }
-
-    @Test
-    public void generic_properties()
-    {
-        final WithGenericProperties bean = new WithGenericProperties();
-        final String first = "John";
-        final String last = "Doe";
-        final SimpleBean simple = new SimpleBean();
-        simple.setLastName(last);
-        simple.setAge(2);
-        simple.setFirstName(first);
-        bean.holder.put(simple);
-
-        PropertyConduit conduit = source.create(WithGenericProperties.class, "holder.get().firstName");
-        assertSame(conduit.get(bean), first);
-    }
-
-    @Test
-    public void generic_parameterized_base_with_properties()
-    {
-        final String first = "John";
-        final String last = "Doe";
-        final SimpleBean simple = new SimpleBean();
-        simple.setAge(2);
-        simple.setFirstName(first);
-        simple.setLastName(last);
-
-        final RealizedParameters bean = new RealizedParameters();
-        final Holder<SimpleBean> holder = new Holder<SimpleBean>();
-        holder.put(simple);
-        bean.setType1Property(holder);
-        bean.setType2Property(1234L);
-        bean.type1Field = holder;
-        bean.type2Field = 5678L;
-        bean.type2ArrayField = new Long[]
-        { 123L, 456L };
-
-        PropertyConduit conduit = source.create(RealizedParameters.class, "type1property.get().firstName");
-        assertSame(conduit.get(bean), first);
-        conduit.set(bean, "Change");
-        assertSame(conduit.get(bean), "Change");
-        conduit.set(bean, first);
-
-        conduit = source.create(RealizedParameters.class, "type1field.get().firstName");
-        assertSame(conduit.get(bean), first);
-
-        conduit = source.create(RealizedParameters.class, "type2field");
-        assertEquals(conduit.get(bean), bean.type2Field);
-
-        conduit = source.create(RealizedParameters.class, "type2property");
-        assertEquals(conduit.get(bean), bean.getType2Property());
-
-        conduit = source.create(RealizedParameters.class, "type2ArrayField");
-        assertEquals(conduit.get(bean), bean.type2ArrayField);
-
-    }
-
-    @Test
-    public void generic_interface()
-    {
-        final WithRealizedGenericInterface bean = new WithRealizedGenericInterface();
-        bean.a = "Hello";
-        bean.b = 12345L;
-
-        PropertyConduit conduit = source.create(WithRealizedGenericInterface.class, "genericA()");
-        assertSame(conduit.get(bean), "Hello");
-        conduit = source.create(WithRealizedGenericInterface.class, "genericB()");
-        assertEquals(conduit.get(bean), 12345L);
-    }
-
-    @Test
-    public void generic_nested()
-    {
-        Three bean = new Three();
-        bean.setA("hello");
-        bean.setB(123L);
-        bean.setB2(1235L);
-        bean.setX(54321L);
-
-        PropertyConduit conduit = source.create(Three.class, "a");
-        assertSame(conduit.get(bean), "hello");
-    }
-
-    @Test
-    public void null_root_object()
-    {
-        PropertyConduit conduit = source.create(StringHolderBean.class, "value.get()");
-
-        try
-        {
-            conduit.get(null);
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertEquals(ex.getMessage(), "Root object of property expression 'value.get()' is null.");
-        }
-    }
-
-    @Test
-    public void null_property_in_chain()
-    {
-        PropertyConduit conduit = source.create(CompositeBean.class, "simple.lastName");
-
-        CompositeBean bean = new CompositeBean();
-        bean.setSimple(null);
-
-        try
-        {
-            conduit.get(bean);
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertMessageContains(ex, "Property 'simple' (within property expression 'simple.lastName', of",
-                    ") is null.");
-        }
-    }
-
-    @Test
-    public void last_term_may_be_null()
-    {
-        PropertyConduit conduit = source.create(CompositeBean.class, "simple.firstName");
-
-        CompositeBean bean = new CompositeBean();
-
-        bean.getSimple().setFirstName(null);
-
-        assertNull(conduit.get(bean));
-    }
-
-    @Test
-    public void field_annotations_are_visible()
-    {
-        PropertyConduit conduit = source.create(CompositeBean.class, "simple.firstName");
-
-        Validate annotation = conduit.getAnnotation(Validate.class);
-
-        assertNotNull(annotation);
-
-        assertEquals(annotation.value(), "required");
-    }
-
-    @Test
-    public void method_invocation_with_integer_arguments()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "echoInt(storedInt, 3)");
-        EchoBean bean = new EchoBean();
-
-        for (int i = 0; i < 10; i++)
-        {
-            bean.setStoredInt(i);
-            assertEquals(conduit.get(bean), new Integer(i * 3));
-        }
-    }
-
-    @Test
-    public void method_invocation_with_double_argument()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "echoDouble(storedDouble, 2.0)");
-        EchoBean bean = new EchoBean();
-
-        double value = 22. / 7.;
-
-        bean.setStoredDouble(value);
-
-        assertEquals(conduit.get(bean), new Double(2. * value));
-    }
-
-    @Test
-    public void method_invocation_with_string_argument()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "echoString(storedString, 'B4', 'AFTER')");
-        EchoBean bean = new EchoBean();
-
-        bean.setStoredString("Moe");
-
-        assertEquals(conduit.get(bean), "B4 - Moe - AFTER");
-    }
-
-    @Test
-    public void method_invocation_using_dereference()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "echoString(storedString, stringSource.value, 'beta')");
-        EchoBean bean = new EchoBean();
-
-        StringSource source = new StringSource("alpha");
-
-        bean.setStringSource(source);
-        bean.setStoredString("Barney");
-
-        assertEquals(conduit.get(bean), "alpha - Barney - beta");
-    }
-
-    @Test
-    public void top_level_list()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "[ 1, 2.0, storedString ]");
-        EchoBean bean = new EchoBean();
-
-        bean.setStoredString("Lisa");
-
-        List l = (List) conduit.get(bean);
-
-        assertListsEquals(l, new Long(1), new Double(2.0), "Lisa");
-    }
-
-    @Test
-    public void empty_list()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "[  ]");
-        EchoBean bean = new EchoBean();
-
-        bean.setStoredString("Lisa");
-
-        List l = (List) conduit.get(bean);
-
-        assertEquals(l.size(), 0);
-    }
-
-    @Test
-    public void list_as_method_argument()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "echoList([ 1, 2.0, storedString ])");
-        EchoBean bean = new EchoBean();
-
-        bean.setStoredString("Bart");
-
-        List l = (List) conduit.get(bean);
-
-        assertListsEquals(l, new Long(1), new Double(2.0), "Bart");
-    }
-
-    @Test
-    public void arrays_as_method_argument()
-    {
-        PropertyConduit conduit = source.create(EchoBean.class, "echoArray(storedArray)");
-        EchoBean bean = new EchoBean();
-
-        bean.setStoredArray(new Number[][]
-        { new Integer[]
-        { 1, 2 }, new Double[]
-        { 3.0, 4.0 } });
-
-        Number[][] array = (Number[][]) conduit.get(bean);
-
-        assertArraysEqual(array[0], 1, 2);
-        assertArraysEqual(array[1], 3.0, 4.0);
-    }
-
-    @Test
-    public void not_operator()
-    {
-        PropertyConduit conduit = source.create(IntegerHolder.class, "! value");
-        IntegerHolder holder = new IntegerHolder();
-
-        assertEquals(conduit.get(holder), Boolean.TRUE);
-
-        holder.setValue(99);
-
-        assertEquals(conduit.get(holder), Boolean.FALSE);
-    }
-
-    @Test
-    public void not_operator_in_subexpression()
-    {
-        PropertyConduit conduit = source.create(Switch.class, "label(! value)");
-
-        Switch sw = new Switch();
-
-        assertEquals(conduit.get(sw), "aye");
-
-        sw.setValue(true);
-
-        assertEquals(conduit.get(sw), "nay");
-    }
-
-    /**
-     * TAP5-330
-     */
-    @Test
-    public void object_methods_can_be_invoked()
-    {
-        PropertyConduit conduit = source.create(Block.class, "toString()");
-
-        Block b = new Block()
-        {
-            @Override
-            public String toString()
-            {
-                return "Do You Grok Ze Block?";
-            }
-        };
-
-        assertEquals(conduit.get(b), "Do You Grok Ze Block?");
-    }
-
-    @Test
-    public void parse_error_in_property_expression()
-    {
-        try
-        {
-            source.create(IntegerHolder.class, "getValue(");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Error parsing property expression 'getValue(': line 1:0 no viable alternative at input 'getValue'.");
-        }
-    }
-
-    @Test
-    public void lexer_error_in_property_expression()
-    {
-        try
-        {
-            source.create(IntegerHolder.class, "fred {");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Error parsing property expression 'fred {': Unable to parse input at character position 6.");
-        }
-    }
-
-    @Test
-    public void boolean_constant_as_method_parameter()
-    {
-        Bedrock bedrock = new Bedrock();
-
-        PropertyConduit trueConduit = source.create(Bedrock.class, "toName(true)");
-        PropertyConduit falseConduit = source.create(Bedrock.class, "toName(false)");
-
-        assertEquals(trueConduit.get(bedrock), "Fred");
-        assertEquals(falseConduit.get(bedrock), "Barney");
-    }
-
-    /**
-     * TAP5-747
-     */
-    @Test
-    public void dereference_result_of_method_invocation()
-    {
-        ComplexObject co = new ComplexObject();
-        PropertyConduit pc = source.create(ComplexObject.class, "get(nestedIndex).name");
-
-        assertEquals(pc.get(co), "zero");
-
-        co.setNestedIndex(1);
-
-        assertEquals(pc.get(co), "one");
-    }
-
-    @Test
-    public void public_object_field()
-    {
-        PublicFieldBean bean = new PublicFieldBean();
-
-        bean.stringField = "x";
-
-        PropertyConduit pc = source.create(PublicFieldBean.class, "stringField");
-
-        assertEquals(pc.get(bean), "x");
-
-        pc.set(bean, "y");
-
-        assertEquals(bean.stringField, "y");
-    }
-
-    @Test
-    public void navigate_through_public_field()
-    {
-        PublicFieldBean bean = new PublicFieldBean();
-        PublicFieldBeanHolder holder = new PublicFieldBeanHolder(bean);
-
-        bean.stringField = "x";
-
-        PropertyConduit pc = source.create(PublicFieldBeanHolder.class, "bean.stringField");
-
-        assertEquals(pc.get(holder), "x");
-
-        pc.set(holder, "y");
-
-        assertEquals(bean.stringField, "y");
-    }
-
-    @Test
-    public void public_primitive_field()
-    {
-        PublicFieldBean bean = new PublicFieldBean();
-
-        bean.intField = 99;
-
-        // check out the case insensitiveness:
-
-        PropertyConduit pc = source.create(PublicFieldBean.class, "IntField");
-
-        assertEquals(pc.get(bean), new Integer(99));
-
-        pc.set(bean, 37);
-
-        assertEquals(bean.intField, 37);
-    }
-
-    @Test
-    public void annotation_of_public_field()
-    {
-        PropertyConduit pc = source.create(PublicFieldBean.class, "StringField");
-
-        assertNotNull(pc.getAnnotation(NonVisual.class));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PublicFieldBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PublicFieldBean.java
deleted file mode 100644
index 86f8eb0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PublicFieldBean.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-
-public class PublicFieldBean
-{
-    @NonVisual
-    public String stringField;
-
-    public int intField;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PublicFieldBeanHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PublicFieldBeanHolder.java
deleted file mode 100644
index dc58d64..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/PublicFieldBeanHolder.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class PublicFieldBeanHolder
-{
-    public PublicFieldBean bean;
-
-    public PublicFieldBeanHolder(PublicFieldBean bean)
-    {
-        this.bean = bean;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RemoveFieldBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RemoveFieldBean.java
deleted file mode 100644
index 1f3b135..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RemoveFieldBean.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class RemoveFieldBean
-{
-    @SuppressWarnings("unused")
-    private String _fred;
-
-    @SuppressWarnings("unused")
-    private String _barney;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java
deleted file mode 100644
index 0663587..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderQueueImplTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.TapestryMarkers;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-public class RenderQueueImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void run_commands()
-    {
-        final RenderCommand command2 = newMock(RenderCommand.class);
-        RenderCommand command1 = new RenderCommand()
-        {
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                queue.push(command2);
-            }
-        };
-
-        Logger logger = mockLogger();
-        MarkupWriter writer = mockMarkupWriter();
-        RenderQueueImpl queue = new RenderQueueImpl(logger);
-
-        // There's only one check for trace enabled now.
-
-        expect(logger.isTraceEnabled(TapestryMarkers.RENDER_COMMANDS)).andReturn(false);
-
-        logger.debug(eq(TapestryMarkers.RENDER_COMMANDS), isA(String.class));
-
-        command2.render(writer, queue);
-
-        replay();
-
-        queue.push(command1);
-        queue.run(writer);
-
-        verify();
-    }
-
-    @Test
-    public void command_failed()
-    {
-        ComponentResources foo = mockInternalComponentResources();
-        ComponentResources bar = mockInternalComponentResources();
-        ComponentResources baz = mockInternalComponentResources();
-
-        final RuntimeException t = new RuntimeException("Oops.");
-
-        RenderCommand rc = new RenderCommand()
-        {
-
-            public void render(MarkupWriter writer, RenderQueue queue)
-            {
-                throw t;
-            }
-
-            @Override
-            public String toString()
-            {
-                return "FailedCommand";
-            }
-        };
-
-        Logger logger = mockLogger();
-        MarkupWriter writer = mockMarkupWriter();
-
-        expect(logger.isTraceEnabled(TapestryMarkers.RENDER_COMMANDS)).andReturn(false);
-
-        logger.error("Render queue error in FailedCommand: Oops.", t);
-
-        replay();
-
-        RenderQueueImpl queue = new RenderQueueImpl(logger);
-
-        queue.startComponent(foo);
-        queue.startComponent(bar);
-        queue.endComponent();
-        queue.startComponent(baz);
-
-        queue.push(rc);
-
-        try
-        {
-            queue.run(writer);
-            unreachable();
-        }
-        catch (RenderQueueException ex)
-        {
-            assertSame(ex.getCause(), t);
-
-            assertArraysEqual(ex.getActiveComponents(), new Object[] {foo, baz});
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
deleted file mode 100644
index 0f3fb7f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RenderSupportImplTest.java
+++ /dev/null
@@ -1,195 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.AssetSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.javascript.StylesheetOptions;
-import org.testng.annotations.Test;
-
-public class RenderSupportImplTest extends InternalBaseTestCase
-{
-    private static final String ASSET_URL = "/assets/foo/bar.pdf";
-
-    @Test
-    public void add_script_link_by_asset()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-        Asset asset = mockAsset();
-
-        js.importJavaScriptLibrary(asset);
-
-        replay();
-
-        RenderSupport support = new RenderSupportImpl(null, null, js);
-
-        support.addScriptLink(asset);
-
-        verify();
-    }
-
-    @Test
-    public void add_script_link_by_url()
-    {
-        JavaScriptSupport jss = mockJavaScriptSupport();
-
-        RenderSupport support = new RenderSupportImpl(null, null, jss);
-
-        jss.importJavaScriptLibrary(ASSET_URL);
-
-        replay();
-
-        support.addScriptLink(ASSET_URL);
-
-        verify();
-    }
-
-    @Test
-    public void add_script()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-
-        js.addScript("doSomething();");
-
-        replay();
-
-        RenderSupport support = new RenderSupportImpl(null, null, js);
-
-        support.addScript("doSomething();");
-
-        verify();
-    }
-
-    @Test
-    public void add_classpath_script_link()
-    {
-        String path = "${root}/foo/bar.pdf";
-        String expanded = "org/apache/tapestry5/foo/bar.pdf";
-
-        Asset asset = mockAsset();
-        SymbolSource source = mockSymbolSource();
-        AssetSource assetSource = mockAssetSource();
-        JavaScriptSupport js = mockJavaScriptSupport();
-
-        train_expandSymbols(source, path, expanded);
-
-        train_getAsset(assetSource, null, expanded, null, asset);
-
-        js.importJavaScriptLibrary(asset);
-
-        replay();
-
-        RenderSupport support = new RenderSupportImpl(source, assetSource, js);
-
-        support.addClasspathScriptLink(path);
-
-        verify();
-    }
-
-    @Test
-    public void add_stylesheet_link_by_asset()
-    {
-        String media = "print";
-        JavaScriptSupport javascriptSupport = mockJavaScriptSupport();
-        Asset asset = mockAsset("foo.css");
-
-        javascriptSupport.importStylesheet(new StylesheetLink("foo.css", new StylesheetOptions(media)));
-
-        replay();
-
-        RenderSupport support = new RenderSupportImpl(null, null, javascriptSupport);
-
-        support.addStylesheetLink(asset, media);
-
-        verify();
-    }
-
-    @Test
-    public void add_stylesheet_link_by_url()
-    {
-        String media = "print";
-        JavaScriptSupport javascriptSupport = mockJavaScriptSupport();
-
-        javascriptSupport.importStylesheet(new StylesheetLink(ASSET_URL, new StylesheetOptions(media)));
-
-        replay();
-
-        RenderSupport support = new RenderSupportImpl(null, null, javascriptSupport);
-
-        support.addStylesheetLink(ASSET_URL, media);
-
-        verify();
-    }
-
-    @Test
-    public void add_multiple_string_init_parameters()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-
-        JSONObject spec = new JSONObject().put("foo", new JSONArray().put(new JSONArray("fred", "barney")));
-
-        js.addScript("Tapestry.init(%s);", spec);
-
-        replay();
-
-        RenderSupportImpl support = new RenderSupportImpl(null, null, js);
-
-        support.addInit("foo", "fred", "barney");
-
-        verify();
-    }
-
-    @Test
-    public void addInit_passes_through_to_JavaScriptSupport()
-    {
-        JSONObject parameter = new JSONObject("clientid", "fred");
-
-        JavaScriptSupport js = mockJavaScriptSupport();
-
-        js.addInitializerCall("setup", parameter);
-
-        replay();
-
-        RenderSupportImpl support = new RenderSupportImpl(null, null, js);
-
-        support.addInit("setup", parameter);
-
-        verify();
-    }
-
-    @Test
-    public void autofocus_pass_thru_to_javascriptsupport()
-    {
-        JavaScriptSupport js = mockJavaScriptSupport();
-
-        js.autofocus(FieldFocusPriority.OVERRIDE, "fred");
-
-        replay();
-
-        RenderSupportImpl support = new RenderSupportImpl(null, null, js);
-
-        support.autofocus(FieldFocusPriority.OVERRIDE, "fred");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestImplTest.java
deleted file mode 100644
index 2e0cde8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestImplTest.java
+++ /dev/null
@@ -1,225 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import java.io.UnsupportedEncodingException;
-import java.util.Collections;
-
-public class RequestImplTest extends InternalBaseTestCase
-{
-    public static final String CHARSET = "UTF-8";
-
-    @Test
-    public void get_session_doesnt_exist()
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        train_getSession(sr, false, null);
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-
-        assertNull(request.getSession(false));
-
-        verify();
-    }
-
-    @Test
-    public void force_session_create()
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-        HttpSession ss = mockHttpSession();
-
-        train_getSession(sr, true, ss);
-
-        train_getAttribute(ss, "foo", "bar");
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-        Session session = request.getSession(true);
-
-        assertEquals(session.getAttribute("foo"), "bar");
-
-        verify();
-    }
-
-    @Test
-    public void set_encoding_success() throws Exception
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        String encoding = "the-encoding";
-
-        sr.setCharacterEncoding(encoding);
-
-        expect(sr.getParameterNames()).andReturn(Collections.enumeration(Collections.EMPTY_LIST));
-
-        replay();
-
-        new RequestImpl(sr, encoding, null).getParameterNames();
-
-        verify();
-    }
-
-    @Test
-    public void set_encoding_failure() throws Exception
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        String encoding = "the-encoding";
-        UnsupportedEncodingException exception = new UnsupportedEncodingException("Oops.");
-
-        sr.setCharacterEncoding(encoding);
-        setThrowable(exception);
-
-        replay();
-
-        try
-        {
-            new RequestImpl(sr, encoding, null).getParameterNames();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertSame(ex.getCause(), exception);
-        }
-
-        verify();
-    }
-
-    @Test(dataProvider = "xhr_inputs")
-    public void is_xhr_request(String headerValue, boolean expected)
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        expect(sr.getHeader(RequestImpl.REQUESTED_WITH_HEADER)).andReturn(headerValue);
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-
-        assertEquals(request.isXHR(), expected);
-
-        verify();
-    }
-
-    @DataProvider
-    public Object[][] xhr_inputs()
-    {
-        return new Object[][] { { null, false }, { "", false }, { "some other value", false },
-                { "XMLHttpRequest", true } };
-    }
-
-    @Test
-    public void get_path_for_normal_servlet_container()
-    {
-        String path = "/foo/bar";
-
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        train_getPathInfo(sr, null);
-        expect(sr.getServletPath()).andReturn(path);
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-
-        assertEquals(request.getPath(), path);
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1713
-     */
-    @Test
-    public void get_path_for_websphere_with_empty_path()
-    {
-        String path = "/foo/bar";
-
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        train_getPathInfo(sr, path);
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-
-        assertEquals(request.getPath(), path);
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1713
-     */
-    @Test
-    public void get_path_for_websphere_with_nonempty_path()
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-
-        train_getPathInfo(sr, "");
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-
-        assertEquals(request.getPath(), "/");
-
-        verify();
-    }
-
-    @Test
-    public void get_session_returns_null_if_invalid()
-    {
-        HttpServletRequest sr = mockHttpServletRequest();
-        HttpSession hsession = mockHttpSession();
-
-        train_getSession(sr, true, hsession);
-
-        hsession.invalidate();
-
-        replay();
-
-        Request request = new RequestImpl(sr, CHARSET, null);
-
-        Session session = request.getSession(true);
-
-        session.invalidate();
-
-        assertNull(request.getSession(false));
-
-        assertSame(request.getSession(true), session);
-
-        verify(); 
-    }
-
-
-
-    protected final void train_getPathInfo(HttpServletRequest request, String pathInfo)
-    {
-        expect(request.getPathInfo()).andReturn(pathInfo).atLeastOnce();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestPageCacheImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestPageCacheImplTest.java
deleted file mode 100644
index 15a48f3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestPageCacheImplTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.easymock.EasyMock;
-import org.testng.annotations.Test;
-
-public class RequestPageCacheImplTest extends InternalBaseTestCase
-{
-    private static final String PAGE_NAME = "edit/EditFoo";
-
-    private static final String CANON_PAGE_NAME = "edit/Foo";
-
-    @Test
-    public void get_is_cached()
-    {
-        PagePool pool = mockPagePool();
-        Page page = mockPage();
-        ComponentClassResolver resolver = mockComponentClassResolver();
-
-        train_canonicalizePageName(resolver, PAGE_NAME, CANON_PAGE_NAME);
-
-        expect(pool.checkout(CANON_PAGE_NAME)).andReturn(page);
-
-        page.attached();
-
-        replay();
-
-        RequestPageCacheImpl cache = new RequestPageCacheImpl(pool, resolver);
-
-        assertSame(cache.get(PAGE_NAME), page);
-
-        verify();
-
-        train_canonicalizePageName(resolver, CANON_PAGE_NAME, CANON_PAGE_NAME);
-
-        replay();
-
-        // Again, same object, but no PagePool this time.  Also checks that name is
-        // properly resolved to canon name.
-        assertSame(cache.get(CANON_PAGE_NAME), page);
-
-        verify();
-
-        pool.release(page);
-
-        replay();
-
-        // Now, trigger the release()
-
-        cache.threadDidCleanup();
-
-        verify();
-    }
-
-    @Test
-    public void failure_in_attach_will_discard_page()
-    {
-        PagePool pool = mockPagePool();
-        Page page = mockPage();
-        RuntimeException t = new RuntimeException("Failure in attach.");
-        ComponentClassResolver resolver = mockComponentClassResolver();
-
-        train_canonicalizePageName(resolver, PAGE_NAME, CANON_PAGE_NAME);
-
-        expect(pool.checkout(CANON_PAGE_NAME)).andReturn(page);
-
-        page.attached();
-
-        EasyMock.expectLastCall().andThrow(t);
-
-        pool.discard(page);
-
-        replay();
-
-        RequestPageCacheImpl cache = new RequestPageCacheImpl(pool, resolver);
-
-        try
-        {
-            cache.get(PAGE_NAME);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertSame(ex, t);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
deleted file mode 100644
index e9f7cb7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/RequestSecurityManagerImplTest.java
+++ /dev/null
@@ -1,151 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.MetaDataConstants;
-import org.apache.tapestry5.internal.EmptyEventContext;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ComponentEventLinkEncoder;
-import org.apache.tapestry5.services.MetaDataLocator;
-import org.apache.tapestry5.services.PageRenderRequestParameters;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Response;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class RequestSecurityManagerImplTest extends InternalBaseTestCase
-{
-    private static final String PAGE_NAME = "Whatever";
-
-    @Test
-    public void check_request_is_secure() throws Exception
-    {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        MetaDataLocator locator = mockMetaDataLocator();
-        ComponentEventLinkEncoder encoder = newMock(ComponentEventLinkEncoder.class);
-
-        train_isSecure(request, true);
-
-        replay();
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(PAGE_NAME, new EmptyEventContext(),
-                false);
-
-        RequestSecurityManager manager = new RequestSecurityManagerImpl(request, response, encoder, locator, true);
-
-        assertFalse(manager.checkForInsecurePageRenderRequest(parameters));
-
-        verify();
-    }
-
-    @Test
-    public void check_page_not_secure() throws Exception
-    {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        MetaDataLocator locator = mockMetaDataLocator();
-        ComponentEventLinkEncoder encoder = newMock(ComponentEventLinkEncoder.class);
-
-        train_isSecure(request, false);
-
-        train_isSecure(locator, PAGE_NAME, false);
-
-        replay();
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(PAGE_NAME, new EmptyEventContext(),
-                false);
-
-        RequestSecurityManager manager = new RequestSecurityManagerImpl(request, response, encoder, locator, true);
-
-        assertFalse(manager.checkForInsecurePageRenderRequest(parameters));
-
-        verify();
-    }
-
-    @Test
-    public void check_redirect_needed() throws Exception
-    {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        MetaDataLocator locator = mockMetaDataLocator();
-        Link link = mockLink();
-        ComponentEventLinkEncoder encoder = newMock(ComponentEventLinkEncoder.class);
-
-        train_isSecure(request, false);
-
-        train_isSecure(locator, PAGE_NAME, true);
-
-        PageRenderRequestParameters parameters = new PageRenderRequestParameters(PAGE_NAME, new EmptyEventContext(),
-                false);
-
-        train_createPageRenderLink(encoder, parameters, link);
-
-        response.sendRedirect(link);
-
-        replay();
-
-        RequestSecurityManager manager = new RequestSecurityManagerImpl(request, response, encoder, locator, true);
-
-        assertTrue(manager.checkForInsecurePageRenderRequest(parameters));
-
-        verify();
-    }
-
-    private void train_createPageRenderLink(ComponentEventLinkEncoder encoder, PageRenderRequestParameters parameters,
-            Link link)
-    {
-        expect(encoder.createPageRenderLink(parameters)).andReturn(link);
-    }
-
-    @DataProvider
-    public Object[][] check_page_security_data()
-    {
-        return new Object[][]
-        {
-        { true, true, LinkSecurity.SECURE },
-        { false, false, LinkSecurity.INSECURE },
-        { true, false, LinkSecurity.FORCE_INSECURE },
-        { false, true, LinkSecurity.FORCE_SECURE } };
-    }
-
-    @Test(dataProvider = "check_page_security_data")
-    public void check_page_security(boolean secureRequest, boolean securePage, LinkSecurity expectedLinkSecurity)
-    {
-        Request request = mockRequest();
-        Response response = mockResponse();
-        MetaDataLocator locator = mockMetaDataLocator();
-        ComponentEventLinkEncoder encoder = newMock(ComponentEventLinkEncoder.class);
-
-        train_isSecure(request, secureRequest);
-
-        train_isSecure(locator, PAGE_NAME, securePage);
-
-        replay();
-
-        RequestSecurityManager manager = new RequestSecurityManagerImpl(request, response, encoder, locator, true);
-
-        assertEquals(manager.checkPageSecurity(PAGE_NAME), expectedLinkSecurity);
-
-        verify();
-    }
-
-    private static void train_isSecure(MetaDataLocator locator, String pageName, boolean securePage)
-    {
-        expect(locator.findMeta(MetaDataConstants.SECURE_PAGE, pageName, Boolean.class)).andReturn(securePage);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceCacheImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceCacheImplTest.java
deleted file mode 100644
index 8329536..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceCacheImplTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.ResourceDigestGenerator;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-
-public class ResourceCacheImplTest extends InternalBaseTestCase
-{
-    private static final String PATH = "foo/Bar.gif";
-
-    private static final String DIGEST = "abc123";
-    
-    private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
-
-    @Test
-    public void properties_for_simple_resource() throws Exception
-    {
-        ResourceDigestGenerator generator = mockResourceDigestGenerator();
-
-        File f = createTestFile();
-        URL url = f.toURL();
-        Resource r = mockResource();
-
-        long lastUpdated = f.lastModified();
-        lastUpdated -= lastUpdated % 1000;
-
-        train_getPath(r, PATH);
-        train_toURL(r, url);
-
-        train_requiresDigest(generator, PATH, false);
-
-        replay();
-
-        ResourceCacheImpl cache = new ResourceCacheImpl(generator, converter);
-
-        assertEquals(cache.requiresDigest(r), false);
-        assertEquals(cache.getTimeModified(r), lastUpdated);
-        assertEquals(cache.getDigest(r), null);
-
-        verify();
-    }
-
-    @Test
-    public void properties_for_missing_resource() throws Exception
-    {
-        ResourceDigestGenerator generator = mockResourceDigestGenerator();
-
-        Resource r = mockResource();
-
-        train_getPath(r, PATH);
-        train_toURL(r, null);
-
-        train_requiresDigest(generator, PATH, true);
-
-        replay();
-
-        ResourceCacheImpl cache = new ResourceCacheImpl(generator, converter);
-
-        assertEquals(cache.requiresDigest(r), true);
-        assertEquals(cache.getTimeModified(r), ResourceCacheImpl.MISSING_RESOURCE_TIME_MODIFIED);
-        assertEquals(cache.getDigest(r), null);
-
-        verify();
-    }
-
-    @Test
-    public void properties_for_protected_resource() throws Exception
-    {
-        ResourceDigestGenerator generator = mockResourceDigestGenerator();
-
-        File f = createTestFile();
-        URL url = f.toURL();
-        Resource r = mockResource();
-
-        long lastUpdated = f.lastModified();
-        lastUpdated -= lastUpdated % 1000;
-
-        train_getPath(r, PATH);
-        train_toURL(r, url);
-
-        train_requiresDigest(generator, PATH, true);
-        train_generateChecksum(generator, url, DIGEST);
-
-        replay();
-
-        ResourceCacheImpl cache = new ResourceCacheImpl(generator, converter);
-
-        assertEquals(cache.requiresDigest(r), true);
-        assertEquals(cache.getTimeModified(r), lastUpdated);
-        assertEquals(cache.getDigest(r), DIGEST);
-
-        verify();
-    }
-
-    @Test
-    public void caching_and_invalidation() throws Exception
-    {
-        ResourceDigestGenerator generator = mockResourceDigestGenerator();
-        InvalidationListener listener = mockInvalidationListener();
-        File f = createTestFile();
-        URL url = f.toURL();
-        Resource r = mockResource();
-
-        long lastUpdated = f.lastModified();
-        lastUpdated -= lastUpdated % 1000;
-
-        train_getPath(r, PATH);
-        train_toURL(r, url);
-
-        train_requiresDigest(generator, PATH, true);
-        train_generateChecksum(generator, url, DIGEST);
-
-        replay();
-
-        ResourceCacheImpl cache = new ResourceCacheImpl(generator, converter);
-        cache.addInvalidationListener(listener);
-
-        assertEquals(cache.requiresDigest(r), true);
-        assertEquals(cache.getTimeModified(r), lastUpdated);
-        assertEquals(cache.getDigest(r), DIGEST);
-
-        // No updates yet.
-
-        cache.checkForUpdates();
-
-        verify();
-
-        Thread.sleep(1500);
-        touch(f);
-
-        lastUpdated = f.lastModified();
-        lastUpdated -= lastUpdated % 1000;
-
-        String expectedDigest = "FREDBARNEY";
-
-        train_getPath(r, PATH);
-        train_toURL(r, url);
-        train_requiresDigest(generator, PATH, true);
-        train_generateChecksum(generator, url, expectedDigest);
-
-        listener.objectWasInvalidated();
-
-        replay();
-
-        cache.checkForUpdates();
-
-        assertEquals(cache.requiresDigest(r), true);
-        assertEquals(cache.getTimeModified(r), lastUpdated);
-        assertEquals(cache.getDigest(r), expectedDigest);
-
-        verify();
-    }
-
-    private File createTestFile() throws IOException
-    {
-        return File.createTempFile("ResourceCacheImplTest.", ".tst");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceDigestGeneratorImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceDigestGeneratorImplTest.java
deleted file mode 100644
index f739004..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceDigestGeneratorImplTest.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.ResourceDigestGenerator;
-import org.testng.annotations.Test;
-
-import java.io.*;
-import java.net.URL;
-import java.util.Arrays;
-
-public class ResourceDigestGeneratorImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void typical_file() throws Exception
-    {
-        URL url = getClass().getResource("ResourceDigestGeneratorImplTest.class");
-
-        ResourceDigestGenerator g = new ResourceDigestGeneratorImpl(Arrays.asList("class"));
-
-        String digest = g.generateDigest(url);
-
-        assertTrue(digest.length() > 0);
-
-        String checksum2 = g.generateDigest(url);
-
-        assertEquals(checksum2, digest);
-    }
-
-    @Test
-    public void digest_changes_with_changes_to_file() throws Exception
-    {
-        File file = File.createTempFile("digest.", ".dat");
-
-        URL url = file.toURL();
-
-        ResourceDigestGenerator g = new ResourceDigestGeneratorImpl(Arrays.asList("class"));
-
-        String prevDigest = g.generateDigest(url);
-
-        for (int i = 0; i < 5; i++)
-        {
-            writeJunkTofile(file);
-
-            String digest = g.generateDigest(url);
-
-            assertFalse(digest.equals(prevDigest));
-
-            prevDigest = digest;
-
-        }
-    }
-
-    private void writeJunkTofile(File file) throws IOException
-    {
-        OutputStream os = new BufferedOutputStream(new FileOutputStream(file, true));
-
-        OutputStreamWriter writer = new OutputStreamWriter(os);
-
-        for (int i = 0; i < 1000; i++)
-            writer.write("All work and no play makes Jack a dull boy. ");
-
-        writer.close();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceStreamerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceStreamerImplTest.java
deleted file mode 100644
index 9bcdd57..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResourceStreamerImplTest.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.services.*;
-import static org.easymock.EasyMock.endsWith;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * Tests for the {@link ResourceStreamerImpl} class.
- */
-public class ResourceStreamerImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void content_type_css() throws IOException
-    {
-        content_type("text/css", "test.css", true);
-    }
-
-    @Test
-    public void content_type_js() throws IOException
-    {
-        content_type("text/javascript", "test.js", true);
-    }
-
-    @Test
-    public void content_type_gif() throws IOException
-    {
-        content_type("image/gif", "test.gif", false);
-    }
-
-    private void content_type(String contentType, String fileName, boolean consultsContext) throws IOException
-    {
-        Request request = mockRequest();
-        HttpServletRequest hsRequest = mockHttpServletRequest();
-        HttpServletResponse hsResponse = mockHttpServletResponse();
-        Context context = mockContext();
-        
-        if (consultsContext)
-            expect(context.getMimeType(endsWith(fileName))).andReturn(null);
-
-        replay();
-
-        Response response = new ResponseImpl(hsRequest, hsResponse);
-        ResourceStreamer streamer = getService(ResourceStreamer.class);
-        RequestGlobals globals = getService(RequestGlobals.class);
-
-        globals.storeServletRequestResponse(hsRequest, hsResponse);
-        globals.storeRequestResponse(request, response);
-
-        getService(ApplicationGlobals.class).storeContext(context);
-
-        String path = getClass().getPackage().getName().replace('.', '/') + "/" + fileName;
-
-        Resource resource = new ClasspathResource(path);
-
-        assertEquals(streamer.getContentType(resource), contentType);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImplTest.java
deleted file mode 100644
index 8fb05c8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResponseCompressionAnalyzerImplTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2009 Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.ResponseCompressionAnalyzer;
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class ResponseCompressionAnalyzerImplTest extends Assert
-{
-    @DataProvider
-    public Object[][] compression_search_data()
-    {
-        return new Object[][]
-                {
-                        { "is/inlist", false },
-                        { "Is/InList", false },
-                        { "nope/not", true },
-                        { "is/InList;xyz", false }
-                };
-    }
-
-    @Test(dataProvider = "compression_search_data")
-    public void compression_search(String contentType, boolean expected)
-    {
-        List<String> configuration = CollectionFactory.newList("is/inlist");
-
-        ResponseCompressionAnalyzer analyzer = new ResponseCompressionAnalyzerImpl(null, configuration, true);
-
-        assertEquals(analyzer.isCompressable(contentType), expected);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResponseRendererImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResponseRendererImplTest.java
deleted file mode 100644
index 637bb04..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ResponseRendererImplTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.Response;
-import org.apache.tapestry5.services.ResponseRenderer;
-import org.testng.annotations.Test;
-
-public class ResponseRendererImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void content_type_from_component()
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        PageContentTypeAnalyzer analyzer = mockPageContentTypeAnalyzer();
-        Component component = mockComponent();
-        String pageName = "foo/bar";
-        Page page = mockPage();
-        ContentType contentType = new ContentType("zig/zag");
-        ComponentResources resources = mockComponentResources();
-
-        train_getComponentResources(component, resources);
-        train_getPageName(resources, pageName);
-        train_get(cache, pageName, page);
-
-        train_findContentType(analyzer, page, contentType);
-
-        replay();
-
-        ResponseRenderer renderer = new ResponseRendererImpl(cache, analyzer, null);
-
-        assertSame(renderer.findContentType(component), contentType);
-
-        verify();
-    }
-
-    @Test
-    public void render_page_markup() throws Exception
-    {
-        RequestPageCache cache = mockRequestPageCache();
-        PageContentTypeAnalyzer analyzer = mockPageContentTypeAnalyzer();
-        String pageName = "foo/bar";
-        Page page = mockPage();
-        PageResponseRenderer pageResponseRenderer = mockPageResponseRenderer();
-        Response response = mockResponse();
-
-        train_get(cache, pageName, page);
-
-        pageResponseRenderer.renderPageResponse(page);
-
-        replay();
-
-        ResponseRenderer renderer = new ResponseRendererImpl(cache, analyzer, pageResponseRenderer);
-
-        renderer.renderPageMarkupResponse(pageName);
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProviderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProviderTest.java
deleted file mode 100644
index 69ae536..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ServiceAnnotationObjectProviderTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.annotations.Service;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class ServiceAnnotationObjectProviderTest extends TapestryTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void no_annotation()
-    {
-        Class objectType = Runnable.class;
-        AnnotationProvider provider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-
-        train_getAnnotation(provider, Service.class, null);
-
-        replay();
-
-        ObjectProvider objectProvider = new ServiceAnnotationObjectProvider();
-
-        assertNull(objectProvider.provide(objectType, provider, locator));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void annotation_present()
-    {
-        Class objectType = Runnable.class;
-        AnnotationProvider provider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        Service service = newMock(Service.class);
-        String serviceId = "JiffyPop";
-        Runnable instance = mockRunnable();
-
-        train_getAnnotation(provider, Service.class, service);
-
-        expect(service.value()).andReturn(serviceId);
-
-        train_getService(locator, serviceId, objectType, instance);
-
-        replay();
-
-        ObjectProvider objectProvider = new ServiceAnnotationObjectProvider();
-
-        assertSame(objectProvider.provide(objectType, provider, locator), instance);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionApplicationStatePersistenceStrategyTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionApplicationStatePersistenceStrategyTest.java
deleted file mode 100644
index b0edad4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionApplicationStatePersistenceStrategyTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.transform.pages.ReadOnlyBean;
-import org.apache.tapestry5.services.ApplicationStateCreator;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.testng.annotations.Test;
-
-public class SessionApplicationStatePersistenceStrategyTest extends InternalBaseTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void get_aso_already_exists()
-    {
-        Request request = mockRequest();
-        Session session = mockSession();
-        Class asoClass = ReadOnlyBean.class;
-        Object aso = new ReadOnlyBean();
-        String key = "sso:" + asoClass.getName();
-        ApplicationStateCreator creator = mockApplicationStateCreator();
-
-        train_getSession(request, true, session);
-        train_getAttribute(session, key, aso);
-
-        replay();
-
-        ApplicationStatePersistenceStrategy strategy = new SessionApplicationStatePersistenceStrategy(request);
-
-        assertSame(strategy.get(asoClass, creator), aso);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void check_exists_does_not_create_session()
-    {
-        Request request = mockRequest();
-        Class asoClass = ReadOnlyBean.class;
-
-        train_getSession(request, false, null);
-
-        replay();
-
-        ApplicationStatePersistenceStrategy strategy = new SessionApplicationStatePersistenceStrategy(request);
-
-        assertFalse(strategy.exists(asoClass));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void get_aso_needs_to_be_created()
-    {
-        Request request = mockRequest();
-        Session session = mockSession();
-        Class asoClass = ReadOnlyBean.class;
-        Object aso = new ReadOnlyBean();
-        String key = "sso:" + asoClass.getName();
-        ApplicationStateCreator creator = mockApplicationStateCreator();
-
-        // First for exists()
-        train_getSession(request, false, session);
-        train_getAttribute(session, key, null);
-
-        // Second for get()
-        train_getSession(request, true, session);
-
-        // Not in map
-        train_getAttribute(session, key, null);
-
-        train_create(creator, aso);
-
-        train_getSession(request, true, session);
-        session.setAttribute(key, aso);
-
-        // Then for exists() after
-        train_getSession(request, false, session);
-        train_getAttribute(session, key, aso);
-
-        replay();
-
-        ApplicationStatePersistenceStrategy strategy = new SessionApplicationStatePersistenceStrategy(request);
-
-        assertFalse(strategy.exists(asoClass));
-
-        assertSame(strategy.get(asoClass, creator), aso);
-
-        assertTrue(strategy.exists(asoClass));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void set_aso()
-    {
-        Request request = mockRequest();
-        Session session = mockSession();
-        Class asoClass = ReadOnlyBean.class;
-        Object aso = new ReadOnlyBean();
-        String key = "sso:" + asoClass.getName();
-
-        train_getSession(request, true, session);
-        session.setAttribute(key, aso);
-
-        replay();
-
-        ApplicationStatePersistenceStrategy strategy = new SessionApplicationStatePersistenceStrategy(request);
-
-        strategy.set(asoClass, aso);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionImplTest.java
deleted file mode 100644
index 86a061b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionImplTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Enumeration;
-
-import javax.servlet.http.HttpSession;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.Session;
-import org.apache.tapestry5.services.SessionPersistedObjectAnalyzer;
-import org.testng.annotations.Test;
-
-public class SessionImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void get_attribute_names()
-    {
-        Enumeration e = Collections.enumeration(Arrays.asList("fred", "barney"));
-        HttpSession hs = mockHttpSession();
-
-        expect(hs.getAttributeNames()).andReturn(e);
-
-        replay();
-
-        Session session = new SessionImpl(hs, null);
-
-        assertEquals(session.getAttributeNames(), Arrays.asList("barney", "fred"));
-
-        verify();
-    }
-
-    @Test
-    public void get_attribute_names_by_prefix()
-    {
-        Enumeration e = Collections.enumeration(Arrays.asList("fred", "barney", "fanny"));
-        HttpSession hs = mockHttpSession();
-
-        expect(hs.getAttributeNames()).andReturn(e);
-
-        replay();
-
-        Session session = new SessionImpl(hs, null);
-
-        assertEquals(session.getAttributeNames("f"), Arrays.asList("fanny", "fred"));
-
-        verify();
-    }
-
-    @Test
-    public void invalidate()
-    {
-        HttpSession hs = mockHttpSession();
-
-        hs.invalidate();
-
-        replay();
-
-        Session session = new SessionImpl(hs, null);
-
-        session.invalidate();
-
-        verify();
-    }
-
-    @Test
-    public void set_max_inactive()
-    {
-        HttpSession hs = mockHttpSession();
-        int seconds = 999;
-
-        hs.setMaxInactiveInterval(seconds);
-
-        replay();
-
-        Session session = new SessionImpl(hs, null);
-
-        session.setMaxInactiveInterval(seconds);
-
-        verify();
-    }
-
-    @Test
-    public void get_max_inactive()
-    {
-        HttpSession hs = mockHttpSession();
-        int seconds = 999;
-
-        expect(hs.getMaxInactiveInterval()).andReturn(seconds);
-
-        replay();
-
-        Session session = new SessionImpl(hs, null);
-
-        assertEquals(session.getMaxInactiveInterval(), seconds);
-
-        verify();
-    }
-
-    @Test
-    public void dirty_persisted_object_is_forced_to_update()
-    {
-        HttpSession hs = mockHttpSession();
-        SessionPersistedObjectAnalyzer analyzer = newMock(SessionPersistedObjectAnalyzer.class);
-        Object dirty = new Object();
-
-        train_getAttribute(hs, "dirty", dirty);
-
-        replay();
-
-        Session session = new SessionImpl(hs, analyzer);
-
-        assertSame(session.getAttribute("dirty"), dirty);
-
-        verify();
-
-        expect(analyzer.isDirty(dirty)).andReturn(true);
-
-        hs.setAttribute("dirty", null);
-        hs.setAttribute("dirty", dirty);
-
-        replay();
-
-        session.restoreDirtyObjects();
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionPersistentFieldStrategyTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionPersistentFieldStrategyTest.java
deleted file mode 100644
index 332d229..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SessionPersistentFieldStrategyTest.java
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.PersistentFieldChange;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.testng.annotations.Test;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-public class SessionPersistentFieldStrategyTest extends InternalBaseTestCase
-{
-    @Test
-    public void post_change_to_root_component()
-    {
-        Session session = mockSession();
-        Request request = mockRequest();
-        Object value = new Object();
-
-        train_getSession(request, true, session);
-
-        session.setAttribute("state:foo.Bar::field", value);
-
-        replay();
-
-        SessionPersistentFieldStrategy strategy = new SessionPersistentFieldStrategy(request);
-
-        strategy.postChange("foo.Bar", null, "field", value);
-
-        verify();
-    }
-
-    @Test
-    public void post_change_to_nested_component()
-    {
-        Session session = mockSession();
-        Request request = mockRequest();
-        Object value = new Object();
-
-        train_getSession(request, true, session);
-
-        session.setAttribute("state:foo.Bar:fee.fum:field", value);
-
-        replay();
-
-        SessionPersistentFieldStrategy strategy = new SessionPersistentFieldStrategy(request);
-
-        strategy.postChange("foo.Bar", "fee.fum", "field", value);
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1475
-     */
-    @Test
-    public void discard_changes_with_no_session()
-    {
-        Request request = mockRequest();
-
-        train_getSession(request, false, null);
-
-        replay();
-
-        SessionPersistentFieldStrategy strategy = new SessionPersistentFieldStrategy(request);
-
-        strategy.discardChanges("foo.Bar");
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-1475
-     */
-    @Test
-    public void discard_changes()
-    {
-        Session session = mockSession();
-        Request request = mockRequest();
-
-        train_getSession(request, false, session);
-
-        train_getAttributeNames(session, "state:foo.Bar:", "state:foo.Bar:baz:field");
-
-        session.setAttribute("state:foo.Bar:baz:field", null);
-
-        replay();
-
-        SessionPersistentFieldStrategy strategy = new SessionPersistentFieldStrategy(request);
-
-        strategy.discardChanges("foo.Bar");
-
-        verify();
-    }
-
-    @Test
-    public void gather_changes_with_no_session()
-    {
-        Request request = mockRequest();
-
-        train_getSession(request, false, null);
-
-        replay();
-
-        SessionPersistentFieldStrategy strategy = new SessionPersistentFieldStrategy(request);
-
-        Collection<PersistentFieldChange> changes = strategy.gatherFieldChanges("foo.Bar");
-
-        assertTrue(changes.isEmpty());
-
-        verify();
-    }
-
-    @Test
-    public void gather_changes_with_active_session()
-    {
-        Session session = mockSession();
-        Request request = mockRequest();
-
-        train_getSession(request, false, session);
-        train_getAttributeNames(
-                session,
-                "state:foo.Bar:",
-                "state:foo.Bar::root",
-                "state:foo.Bar:nested:down");
-
-        train_getAttribute(session, "state:foo.Bar::root", "ROOT");
-        train_getAttribute(session, "state:foo.Bar:nested:down", "DOWN");
-
-        replay();
-
-        SessionPersistentFieldStrategy stategy = new SessionPersistentFieldStrategy(request);
-
-        Collection<PersistentFieldChange> changes = stategy.gatherFieldChanges("foo.Bar");
-
-        assertEquals(changes.size(), 2);
-
-        Iterator<PersistentFieldChange> i = changes.iterator();
-
-        PersistentFieldChange change1 = i.next();
-
-        assertEquals(change1.getComponentId(), "");
-        assertEquals(change1.getFieldName(), "root");
-        assertEquals(change1.getValue(), "ROOT");
-
-        PersistentFieldChange change2 = i.next();
-
-        assertEquals(change2.getComponentId(), "nested");
-        assertEquals(change2.getFieldName(), "down");
-        assertEquals(change2.getValue(), "DOWN");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleASO.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleASO.java
deleted file mode 100644
index 5f10303..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleASO.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class SimpleASO
-{
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    public String getReadOnly()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleBean.java
deleted file mode 100644
index bfdc760..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleBean.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.beaneditor.Width;
-
-public class SimpleBean
-{
-    @Validate("required")
-    private String firstName;
-
-    private String lastName;
-
-    private int age;
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    @Width(2)
-    public int getAge()
-    {
-        return age;
-    }
-
-    public void setAge(int age)
-    {
-        this.age = age;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleBeanSubclass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleBeanSubclass.java
deleted file mode 100644
index 42d53a8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleBeanSubclass.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class SimpleBeanSubclass extends SimpleBean
-{
-    public void notOverridden()
-    {
-    }
-
-    @Override
-    public void setAge(int age)
-    {
-        super.setAge(age);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleLayoutComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleLayoutComponent.java
deleted file mode 100644
index 873e6e4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/SimpleLayoutComponent.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/*
- * Created on Mar 15, 2007
- * 
- * 
- */
-package org.apache.tapestry5.internal.services;
-
-public class SimpleLayoutComponent
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
deleted file mode 100644
index 24fdf32..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StaticFilesFilterTest.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.*;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-import java.net.URL;
-
-public class StaticFilesFilterTest extends InternalBaseTestCase
-{
-    @Test
-    public void request_for_favicon() throws IOException
-    {
-        Request request = newRequest("/favicon.ico");
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertFalse(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void path_does_not_contain_a_period() throws Exception
-    {
-        Request request = newRequest("/start");
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        train_service(handler, request, response, true);
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void existing_file() throws Exception
-    {
-        URL url = new URL("file://.");
-        String path = "/cell.gif";
-
-        Request request = newRequest(path);
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        train_getResource(context, path, url);
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertFalse(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void existing_template_file() throws Exception
-    {
-        URL url = new URL("file://.");
-        String path = "/cell.tml";
-
-        Request request = newRequest(path);
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        train_getResource(context, path, url);
-
-        response.sendError(
-                HttpServletResponse.SC_FORBIDDEN,
-                "URI /cell.tml may not be accessed remotely.");
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void existing_template_file_case_insenitive() throws Exception
-    {
-        URL url = new URL("file://.");
-        String path = "/cell.TML";
-
-        Request request = newRequest(path);
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        train_getResource(context, path, url);
-
-        response.sendError(
-                HttpServletResponse.SC_FORBIDDEN,
-                "URI /cell.TML may not be accessed remotely.");
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    @Test
-    public void not_a_static_file_request() throws Exception
-    {
-        String path = "/start.update";
-
-        Request request = newRequest(path);
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        train_getResource(context, path, null);
-        train_service(handler, request, response, true);
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-2606
-     */
-    @Test
-    public void colon_in_path_prevents_static_file_check() throws Exception
-    {
-        String path = "/start.update:anevent";
-
-        Request request = newRequest(path);
-        Response response = mockResponse();
-        RequestHandler handler = mockRequestHandler();
-        Context context = mockContext();
-
-        train_service(handler, request, response, true);
-
-        replay();
-
-        RequestFilter filter = new StaticFilesFilter(context);
-
-        assertTrue(filter.service(request, response, handler));
-
-        verify();
-    }
-
-    protected final void train_getResource(Context context, String path, URL url)
-    {
-        expect(context.getResource(path)).andReturn(url);
-    }
-
-    protected final Request newRequest(String path)
-    {
-        Request request = mockRequest();
-
-        train_getPath(request, path);
-
-        return request;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StoogeBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StoogeBean.java
deleted file mode 100644
index 43ad307..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StoogeBean.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.beaneditor.ReorderProperties;
-
-@ReorderProperties("larry,moe,shemp,curly")
-public class StoogeBean
-{
-    private int moe, larry, curly, shemp;
-
-    public int getMoe()
-    {
-        return moe;
-    }
-
-    public int getCurly()
-    {
-        return curly;
-    }
-
-    public int getLarry()
-    {
-        return larry;
-    }
-
-    public int getShemp()
-    {
-        return shemp;
-    }
-
-    public void setCurly(int curly)
-    {
-        this.curly = curly;
-    }
-
-    public void setLarry(int larry)
-    {
-        this.larry = larry;
-    }
-
-    public void setMoe(int moe)
-    {
-        this.moe = moe;
-    }
-
-    public void setShemp(int shemp)
-    {
-        this.shemp = shemp;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringArrayBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringArrayBean.java
deleted file mode 100644
index d308f58..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringArrayBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class StringArrayBean
-{
-    private String[] array;
-
-    public String[] getArray()
-    {
-        return array;
-    }
-
-    public void setArray(String[] array)
-    {
-        this.array = array;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringHolder.java
deleted file mode 100644
index d6f4a1e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringHolder.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.util.Holder;
-
-public class StringHolder extends Holder<String>
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringHolderBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringHolderBean.java
deleted file mode 100644
index f2444e4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringHolderBean.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class StringHolderBean extends GenericBean<StringHolder>
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringSource.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringSource.java
deleted file mode 100644
index 75d030a..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/StringSource.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class StringSource
-{
-    private final String value;
-
-    public StringSource(String value)
-    {
-        this.value = value;
-    }
-
-    public String getValue()
-    {
-        return value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Switch.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Switch.java
deleted file mode 100644
index 9ee3e8c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/Switch.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class Switch
-{
-    private boolean value;
-
-    public boolean isValue()
-    {
-        return value;
-    }
-
-    public void setValue(boolean value)
-    {
-        this.value = value;
-    }
-
-    public String label(boolean flag)
-    {
-        return flag ? "aye" : "nay";
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TemplateParserImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TemplateParserImplTest.java
deleted file mode 100644
index f7c87cb..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TemplateParserImplTest.java
+++ /dev/null
@@ -1,923 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.internal.parser.*;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.test.TapestryTestConstants;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import static java.lang.String.format;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-
-/**
- * This is used to test the template parser ... and in some cases, the underlying behavior of the SAX APIs.
- */
-public class TemplateParserImplTest extends InternalBaseTestCase
-{
-
-    private TemplateParser getParser()
-    {
-        return this.getService(TemplateParser.class);
-    }
-
-    private synchronized ComponentTemplate parse(String file)
-    {
-        Resource resource = getResource(file);
-
-        return getParser().parseTemplate(resource);
-    }
-
-    private synchronized List<TemplateToken> tokens(String file)
-    {
-        return parse(file).getTokens();
-    }
-
-    private Resource getResource(String file)
-    {
-        String packageName = getClass().getPackage().getName();
-
-        String path = packageName.replace('.', '/') + "/" + file;
-
-        ClassLoader loader = getClass().getClassLoader();
-
-        return new ClasspathResource(loader, path);
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T extends TemplateToken> T get(List l, int index)
-    {
-        Object raw = l.get(index);
-
-        return (T) raw;
-    }
-
-    private void checkType(List<TemplateToken> l, int index, TokenType expected)
-    {
-        assertEquals(l.get(index).getTokenType(), expected);
-    }
-
-    private void checkLine(Locatable l, int expectedLineNumber)
-    {
-        assertEquals(l.getLocation().getLine(), expectedLineNumber);
-    }
-
-    @Test
-    public void just_HTML()
-    {
-        Resource resource = getResource("justHTML.tml");
-
-        ComponentTemplate template = getParser().parseTemplate(resource);
-
-        assertSame(template.getResource(), resource);
-
-        List<TemplateToken> tokens = template.getTokens();
-
-        // They add up quick ...
-
-        assertEquals(tokens.size(), 20);
-
-        StartElementToken t0 = get(tokens, 0);
-
-        // Spot check a few things ...
-
-        assertEquals(t0.getName(), "html");
-        assertEquals(t0.getNamespaceURI(), "");
-        checkLine(t0, 1);
-
-        TextToken t1 = get(tokens, 1);
-        // Concerned this may not work cross platform.
-        assertEquals(t1.getText(), "\n    ");
-
-        StartElementToken t2 = get(tokens, 2);
-        assertEquals(t2.getName(), "head");
-        checkLine(t2, 2);
-
-        TextToken t5 = get(tokens, 5);
-        assertEquals(t5.getText(), "title");
-        checkLine(t5, 3);
-
-        get(tokens, 6);
-
-        StartElementToken t12 = get(tokens, 12);
-        assertEquals(t12.getName(), "p");
-
-        AttributeToken t13 = get(tokens, 13);
-        assertEquals(t13.getName(), "class");
-        assertEquals(t13.getValue(), "important");
-        assertEquals(t13.getNamespaceURI(), "");
-
-        TextToken t14 = get(tokens, 14);
-        // Simplify the text, converting consecutive whitespace to just a single space.
-        assertEquals(t14.getText().replaceAll("\\s+", " ").trim(), "Tapestry rocks! Line 2");
-
-        // Line number is the *start* line of the whole text block.
-        checkLine(t14, 6);
-    }
-
-    @Test
-    public void namespaced_element()
-    {
-        Resource resource = getResource("namespaced_element.tml");
-
-        ComponentTemplate template = getParser().parseTemplate(resource);
-
-        assertSame(template.getResource(), resource);
-
-        List<TemplateToken> tokens = template.getTokens();
-
-        // They add up quick ...
-
-        assertEquals(tokens.size(), 8);
-
-        StartElementToken t0 = get(tokens, 0);
-
-        String expectedURI = "http://foo.com";
-
-        assertEquals(t0.getNamespaceURI(), expectedURI);
-        assertEquals(t0.getName(), "bar");
-
-        DefineNamespacePrefixToken t1 = get(tokens, 1);
-
-        assertEquals(t1.getNamespacePrefix(), "foo");
-        assertEquals(t1.getNamespaceURI(), expectedURI);
-
-        AttributeToken t2 = get(tokens, 2);
-
-        assertEquals(t2.getName(), "biff");
-        assertEquals(t2.getValue(), "baz");
-        assertEquals(t2.getNamespaceURI(), expectedURI);
-
-        StartElementToken t4 = get(tokens, 4);
-
-        assertEquals(t4.getNamespaceURI(), "");
-        assertEquals(t4.getName(), "gnip");
-
-        // The rest are close tokens
-    }
-
-    @Test
-    public void container_element()
-    {
-        List<TemplateToken> tokens = tokens("container_element.tml");
-
-        assertEquals(tokens.size(), 4);
-
-        TextToken t0 = get(tokens, 0);
-
-        assertEquals(t0.getText().trim(), "A bit of text.");
-
-        StartElementToken t1 = get(tokens, 1);
-
-        assertEquals(t1.getName(), "foo");
-
-        EndElementToken t2 = get(tokens, 2);
-
-        assertNotNull(t2); // Keep compiler happy
-
-        TextToken t3 = get(tokens, 3);
-
-        assertEquals(t3.getText().trim(), "Some more text.");
-    }
-
-    @Test
-    public void xml_entity()
-    {
-        List<TemplateToken> tokens = tokens("xmlEntity.tml");
-
-        assertEquals(tokens.size(), 3);
-
-        TextToken t = get(tokens, 1);
-
-        // This is OK because the org.apache.tapestry5.dom.Text will convert the characters back into
-        // XML entities.
-
-        assertEquals(t.getText().trim(), "lt:< gt:> amp:&");
-    }
-
-    @Test
-    public void html_entity()
-    {
-        String expectedURI = "http://www.w3.org/1999/xhtml";
-
-        List<TemplateToken> tokens = tokens("html_entity.tml");
-
-        assertEquals(tokens.size(), 5);
-
-        DTDToken t0 = get(tokens, 0);
-
-        assertEquals(t0.getName(), "html");
-        assertEquals(t0.getPublicId(), "-//W3C//DTD XHTML 1.0 Transitional//EN");
-        assertEquals(t0.getSystemId(), "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd");
-
-        StartElementToken t1 = get(tokens, 1);
-
-        assertEquals(t1.getNamespaceURI(), expectedURI);
-        assertEquals(t1.getName(), "html");
-
-        DefineNamespacePrefixToken t2 = get(tokens, 2);
-
-        assertEquals(t2.getNamespaceURI(), expectedURI);
-        assertEquals(t2.getNamespacePrefix(), "");
-
-
-        TextToken t = get(tokens, 3);
-
-        // HTML entities are parsed into values that will ultimately
-        // be output as numeric entities. This is less than ideal; would like
-        // to find a way to keep the entities in their original form (possibly
-        // involving a new type of token), but SAX seems to be fighting me on this.
-        // You have to have a DOCTYPE just to parse a template that uses
-        // an HTML entity.
-
-        assertEquals(t.getText().trim(), "nbsp:[\u00a0]");
-    }
-
-    @Test
-    public void cdata()
-    {
-        List<TemplateToken> tokens = tokens("cdata.tml");
-
-        // Whitespace text tokens around the CDATA
-
-        assertEquals(tokens.size(), 5);
-
-        CDATAToken t = get(tokens, 2);
-
-        assertEquals(t.getContent(), "CDATA: &lt;foo&gt; &amp; &lt;bar&gt; and <baz>");
-        checkLine(t, 2);
-    }
-
-    @Test
-    public void comment()
-    {
-        List<TemplateToken> tokens = tokens("comment.tml");
-
-        // Again, whitespace before and after the comment adds some tokens
-
-        assertEquals(tokens.size(), 3);
-
-        CommentToken token1 = get(tokens, 1);
-
-        assertEquals(token1.getComment(), " Single line comment ");
-    }
-
-    @Test
-    public void multiline_comment()
-    {
-        List<TemplateToken> tokens = tokens("multilineComment.tml");
-
-        // Again, whitespace before and after the comment adds some tokens
-
-        assertEquals(tokens.size(), 5);
-
-        CommentToken t = get(tokens, 2);
-
-        String comment = t.getComment().trim().replaceAll("\\s+", " ");
-
-        assertEquals(comment, "Line one Line two Line three");
-    }
-
-    @Test
-    public void component()
-    {
-        List<TemplateToken> tokens = tokens("component.tml");
-
-        assertEquals(tokens.size(), 6);
-
-        StartComponentToken t = get(tokens, 2);
-        assertEquals(t.getId(), "fred");
-        assertEquals(t.getComponentType(), "somecomponent");
-        assertNull(t.getMixins());
-        checkLine(t, 2);
-
-        get(tokens, 3);
-    }
-
-    @Test
-    public void component_with_body()
-    {
-        List<TemplateToken> tokens = tokens("componentWithBody.tml");
-
-        assertEquals(tokens.size(), 7);
-
-        get(tokens, 2);
-
-        TextToken t = get(tokens, 3);
-
-        assertEquals(t.getText().trim(), "fred's body");
-
-        get(tokens, 4);
-    }
-
-    /**
-     * @since 5.1.0.1
-     */
-    @Test
-    public void comment_element_ignored()
-    {
-        List<TemplateToken> tokens = tokens("comment_element_ignored.tml");
-
-        assertEquals(tokens.size(), 8);
-
-        get(tokens, 2);
-
-        TextToken t = get(tokens, 3);
-
-        assertEquals(t.getText().trim(), "fred's body");
-
-        EndElementToken end5 = get(tokens, 5);
-        EndElementToken end7 = get(tokens, 7);
-    }
-
-    @Test
-    public void root_element_is_component()
-    {
-        List<TemplateToken> tokens = tokens("root_element_is_component.tml");
-
-        assertEquals(tokens.size(), 3);
-
-        StartComponentToken start = get(tokens, 0);
-
-        assertEquals(start.getId(), "fred");
-        assertEquals(start.getComponentType(), "Fred");
-        assertNull(start.getElementName());
-
-        AttributeToken attr = get(tokens, 1);
-
-        assertEquals(attr.getName(), "param");
-        assertEquals(attr.getValue(), "value");
-
-        assertTrue(EndElementToken.class.isInstance(tokens.get(2)));
-    }
-
-    @Test
-    public void instrumented_element()
-    {
-        ComponentTemplate template = parse("instrumented_element.tml");
-        List<TemplateToken> tokens = template.getTokens();
-
-        assertEquals(tokens.size(), 3);
-
-        StartComponentToken start = get(tokens, 0);
-
-        assertEquals(start.getId(), "fred");
-        assertEquals(start.getComponentType(), "Fred");
-        assertEquals(start.getElementName(), "html");
-
-        AttributeToken attr = get(tokens, 1);
-
-        assertEquals(attr.getName(), "param");
-        assertEquals(attr.getValue(), "value");
-
-        assertTrue(EndElementToken.class.isInstance(tokens.get(2)));
-
-        assertEquals(template.getComponentIds().keySet(), Arrays.asList("fred"));
-    }
-
-    @Test
-    public void body_element()
-    {
-        List<TemplateToken> tokens = tokens("body_element.tml");
-
-        // start(html), text, body, text, end(html)
-        assertEquals(tokens.size(), 5);
-
-        // javac bug requires use of isInstance() instead of instanceof
-        // https://bugs.eclipse.org/bugs/show_bug.cgi?id=113218
-        assertTrue(BodyToken.class.isInstance(get(tokens, 2)));
-    }
-
-    @Test
-    public void component_with_parameters()
-    {
-        List<TemplateToken> tokens = tokens("componentWithParameters.tml");
-
-        assertEquals(tokens.size(), 9);
-
-        TemplateToken templateToken = get(tokens, 2);
-        Location l = templateToken.getLocation();
-
-        AttributeToken t1 = get(tokens, 3);
-
-        // TODO: Not sure what order the attributes appear in. Order in the XML? Sorted
-        // alphabetically? Random 'cause they're hashed?
-
-        assertEquals(t1.getName(), "cherry");
-        assertEquals(t1.getValue(), "bomb");
-        assertSame(t1.getLocation(), l);
-
-        AttributeToken t2 = get(tokens, 4);
-        assertEquals(t2.getName(), "align");
-        assertEquals(t2.getValue(), "right");
-        assertSame(t2.getLocation(), l);
-
-        TextToken t3 = get(tokens, 5);
-
-        assertEquals(t3.getText().trim(), "fred's body");
-
-        get(tokens, 6);
-    }
-
-    @Test
-    public void component_with_mixins()
-    {
-        List<TemplateToken> tokens = tokens("component_with_mixins.tml");
-
-        assertEquals(tokens.size(), 4);
-
-        StartComponentToken token1 = get(tokens, 1);
-
-        assertEquals(token1.getId(), "fred");
-        assertEquals(token1.getComponentType(), "comp");
-        assertEquals(token1.getMixins(), "Barney");
-    }
-
-    @Test
-    public void empty_string_mixins_is_null()
-    {
-        List<TemplateToken> tokens = tokens("empty_string_mixins_is_null.tml");
-
-        assertEquals(tokens.size(), 6);
-
-        StartComponentToken t = get(tokens, 2);
-
-        assertEquals(t.getId(), "fred");
-        // We also check that empty string type is null ..
-        assertNull(t.getComponentType());
-        assertNull(t.getMixins());
-    }
-
-    @Test
-    public void component_ids()
-    {
-        ComponentTemplate template = parse("component_ids.tml");
-
-        Map<String, Location> map = template.getComponentIds();
-
-        assertEquals(map.keySet(), CollectionFactory.newSet(Arrays.asList("bomb", "border", "zebra")));
-    }
-
-    @Test
-    public void expansions_in_normal_text()
-    {
-        List<TemplateToken> tokens = tokens("expansions_in_normal_text.tml");
-
-        assertEquals(tokens.size(), 7);
-
-        TextToken t1 = get(tokens, 1);
-
-        assertEquals(t1.getText().trim(), "Expansion #1[");
-
-        ExpansionToken t2 = get(tokens, 2);
-        assertEquals(t2.getExpression(), "expansion1");
-
-        TextToken t3 = get(tokens, 3);
-        assertEquals(t3.getText().replaceAll("\\s+", " "), "] Expansion #2[");
-
-        ExpansionToken t4 = get(tokens, 4);
-        assertEquals(t4.getExpression(), "expansion2");
-
-        TextToken t5 = get(tokens, 5);
-        assertEquals(t5.getText().trim(), "]");
-    }
-
-    @Test
-    public void expansions_must_be_on_one_line()
-    {
-        List<TemplateToken> tokens = tokens("expansions_must_be_on_one_line.tml");
-
-        assertEquals(tokens.size(), 3);
-
-        TextToken t1 = get(tokens, 1);
-
-        assertEquals(t1.getText().replaceAll("\\s+", " "), " ${expansions must be on a single line} ");
-    }
-
-    @Test
-    public void multiple_expansions_on_one_line()
-    {
-        List<TemplateToken> tokens = tokens("multiple_expansions_on_one_line.tml");
-
-        assertEquals(tokens.size(), 10);
-
-        ExpansionToken token3 = get(tokens, 3);
-
-        assertEquals(token3.getExpression(), "classLoader");
-
-        TextToken token4 = get(tokens, 4);
-
-        assertEquals(token4.getText(), " [");
-
-        ExpansionToken token5 = get(tokens, 5);
-
-        assertEquals(token5.getExpression(), "classLoader.class.name");
-
-        TextToken token6 = get(tokens, 6);
-
-        assertEquals(token6.getText(), "]");
-    }
-
-    @Test
-    public void expansions_not_allowed_in_cdata()
-    {
-        List<TemplateToken> tokens = tokens("expansions_not_allowed_in_cdata.tml");
-
-        assertEquals(tokens.size(), 5);
-
-        CDATAToken t2 = get(tokens, 2);
-
-        assertEquals(t2.getContent(), "${not-an-expansion}");
-    }
-
-    @Test
-    public void expansions_not_allowed_in_attributes()
-    {
-        List<TemplateToken> tokens = tokens("expansions_not_allowed_in_attributes.tml");
-
-        assertEquals(tokens.size(), 3);
-
-        AttributeToken token1 = get(tokens, 1);
-
-        assertEquals(token1.getName(), "exp");
-        assertEquals(token1.getValue(), "${not-an-expansion}");
-    }
-
-    @Test
-    public void parameter_element()
-    {
-        List<TemplateToken> tokens = tokens("parameter_element.tml");
-
-        ParameterToken token4 = get(tokens, 4);
-        assertEquals(token4.getName(), "fred");
-
-        CommentToken token6 = get(tokens, 6);
-        assertEquals(token6.getComment(), " fred content ");
-
-        TemplateToken token8 = get(tokens, 8);
-
-        assertEquals(token8.getTokenType(), TokenType.END_ELEMENT);
-    }
-
-    /**
-     * TAP5-112
-     */
-    @Test
-    public void parameter_namespace_element()
-    {
-        List<TemplateToken> tokens = tokens("parameter_namespace_element.tml");
-
-        ParameterToken token4 = get(tokens, 4);
-        assertEquals(token4.getName(), "fred");
-
-        CommentToken token6 = get(tokens, 6);
-        assertEquals(token6.getComment(), " fred content ");
-
-        TemplateToken token8 = get(tokens, 8);
-
-        assertEquals(token8.getTokenType(), TokenType.END_ELEMENT);
-    }
-
-    @Test
-    public void complex_component_type()
-    {
-        List<TemplateToken> tokens = tokens("complex_component_type.tml");
-
-        assertEquals(tokens.size(), 4);
-
-        StartComponentToken token1 = get(tokens, 1);
-
-        assertEquals(token1.getComponentType(), "subfolder/nifty");
-    }
-
-    /**
-     * TAP5-66
-     */
-    @Test
-    public void component_inside_library_namespace()
-    {
-        List<TemplateToken> tokens = tokens("component_inside_library_namespace.tml");
-
-        assertEquals(tokens.size(), 4);
-
-        StartComponentToken token1 = get(tokens, 1);
-
-        assertEquals(token1.getComponentType(), "subfolder/nifty");
-    }
-
-    @Test
-    public void block_element()
-    {
-        List<TemplateToken> tokens = tokens("block_element.tml");
-
-        BlockToken token1 = get(tokens, 1);
-        assertEquals(token1.getId(), "block0");
-
-        CommentToken token2 = get(tokens, 2);
-        assertEquals(token2.getComment(), " block0 content ");
-
-        BlockToken token4 = get(tokens, 4);
-        assertNull(token4.getId());
-
-        CommentToken token5 = get(tokens, 5);
-        assertEquals(token5.getComment(), " anon block content ");
-    }
-
-    @DataProvider
-    public Object[][] parse_failure_data()
-    {
-        return new Object[][] {
-
-                { "mixin_requires_id_or_type.tml",
-                        "You may not specify mixins for element <span> because it does not represent a component (which requires either an id attribute or a type attribute).",
-                        2 },
-
-                { "unexpected_attribute_in_parameter_element.tml",
-                        "Element <parameter> does not support an attribute named 'grok'. The only allowed attribute name is 'name'.",
-                        4 },
-
-                { "name_attribute_of_parameter_element_omitted.tml",
-                        "The name attribute of the <parameter> element must be specified.", 4 },
-
-                { "name_attribute_of_parameter_element_blank.tml",
-                        "The name attribute of the <parameter> element must be specified.", 4 },
-
-                { "unexpected_attribute_in_block_element.tml",
-                        "Element <block> does not support an attribute named 'name'. The only allowed attribute name is 'id'.",
-                        3 },
-
-                { "parameter_namespace_with_attributes.tml",
-                        ServicesMessages.parameterElementDoesNotAllowAttributes(), 4 },
-
-                { "invalid_library_namespace_path.tml",
-                        "The path portion of library namespace URI 'tapestry-library:subfolder/' is not valid", 2 },
-
-                { "content_within_body_element.tml", "Content inside a Tapestry body element is not allowed", 2 },
-
-                { "nested_content_element.tml",
-                        "The <content> element may not be nested within another <content> element.", 3 },
-
-                { "container_must_be_root.tml", "Element <container> is only valid as the root element of a template.",
-                        3 },
-
-                { "extend_must_be_root.tml", "Element <extend> is only valid as the root element of a template.", 3 },
-
-                { "replace_must_be_under_extend.tml",
-                        "The <replace> element may only appear directly within an extend element.", 3 },
-
-                { "only_replace_within_extend.tml", "Child element of <extend> must be <replace>.", 2 },
-
-                { "missing_id_in_replace_element.tml", "The <replace> element must have an id attribute.", 3 },
-
-                { "extension_point_must_have_id.tml", "The <extension-point> element must have an id attribute.", 3 },
-
-                { "misplaced_parameter.tml", "Block parameters are only allowed directly within component elements.",
-                        5 },
-
-        };
-    }
-
-    @Test(dataProvider = "parse_failure_data")
-    public void parse_failure(String fileName, String errorMessageSubstring, int expectedLine)
-    {
-        try
-        {
-            parse(fileName);
-            unreachable();
-        }
-        catch (TapestryException ex)
-        {
-            if (!ex.getMessage().contains(errorMessageSubstring))
-            {
-                throw new AssertionError(format("Message [%s] does not contain substring [%s].", ex.getMessage(),
-                                                errorMessageSubstring));
-            }
-
-            assertEquals(ex.getLocation().getLine(), expectedLine);
-        }
-    }
-
-    @DataProvider
-    public Object[][] doctype_parsed_correctly_data()
-    {
-        return new Object[][] { { "xhtml1_strict_doctype.tml" }, { "xhtml1_transitional_doctype.tml" },
-                { "xhtml1_frameset_doctype.tml" } };
-    }
-
-    @Test(dataProvider = "doctype_parsed_correctly_data")
-    public void doctype_parsed_correctly(String fileName) throws Exception
-    {
-        List<TemplateToken> tokens = tokens(fileName);
-        assertEquals(tokens.size(), 12);
-        TextToken t = get(tokens, 9);
-        assertEquals(t.getText().trim(), "<Test>");
-    }
-
-    @DataProvider
-    public Object[][] doctype_token_added_correctly_data()
-    {
-        return new Object[][] {
-
-                { "xhtml1_strict_doctype.tml", "html", "-//W3C//DTD XHTML 1.0 Strict//EN",
-                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" },
-
-                { "xhtml1_transitional_doctype.tml", "html", "-//W3C//DTD XHTML 1.0 Transitional//EN",
-                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" },
-
-                { "xhtml1_frameset_doctype.tml", "html", "-//W3C//DTD XHTML 1.0 Frameset//EN",
-                        "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd" },
-
-                { "html4_strict_doctype.tml", "HTML", "-//W3C//DTD HTML 4.01//EN",
-                        "http://www.w3.org/TR/html4/strict.dtd" },
-
-                { "html4_transitional_doctype.tml", "HTML", "-//W3C//DTD HTML 4.01 Transitional//EN",
-                        "http://www.w3.org/TR/html4/loose.dtd" },
-
-                { "html4_frameset_doctype.tml", "HTML", "-//W3C//DTD HTML 4.01 Frameset//EN",
-                        "http://www.w3.org/TR/html4/frameset.dtd" },
-
-                { "system_doctype.xml", "foo", null,
-                        "src/test/resources/org/apache/tapestry5/internal/services/simple.dtd" } };
-    }
-
-    @Test(dataProvider = "doctype_token_added_correctly_data")
-    public void doctype_added_correctly(String fileName, String name, String publicId, String systemId) throws Exception
-    {
-        System.setProperty("user.dir", TapestryTestConstants.MODULE_BASE_DIR_PATH);
-
-        List<TemplateToken> tokens = tokens(fileName);
-        DTDToken t0 = get(tokens, 0);
-        assertEquals(t0.getName(), name);
-        assertEquals(t0.getPublicId(), publicId);
-        assertEquals(t0.getSystemId(), systemId);
-    }
-
-    @Test
-    public void invalid_component_id() throws Exception
-    {
-        try
-        {
-            parse("invalid_component_id.tml");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Component id 'not-valid' is not valid");
-        }
-    }
-
-    @Test
-    public void invalid_block_id() throws Exception
-    {
-        try
-        {
-            parse("invalid_block_id.tml");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Block id 'not-valid' is not valid");
-        }
-    }
-
-    /**
-     * Because of common code, this covers t:block and t:parameter.
-     */
-    @Test
-    public void space_preserved_in_block() throws Exception
-    {
-        List<TemplateToken> tokens = tokens("space_preserved_in_block.tml");
-
-        TextToken token1 = get(tokens, 1);
-
-        assertEquals(token1.getText(), "\n" + "        line in the middle\n" + "    ");
-    }
-
-    /**
-     * t:container is a bit of a different code path than t:block/t:parameter
-     */
-    @Test
-    public void space_preserved_in_container() throws Exception
-    {
-        List<TemplateToken> tokens = tokens("space_preserved_in_container.tml");
-
-        TextToken token0 = get(tokens, 0);
-        assertEquals(token0.getText(), "\n" + "    ");
-
-        TextToken token2 = get(tokens, 2);
-        assertEquals(token2.getText(), "\n" + "        some text\n" + "    ");
-    }
-
-    @Test
-    public void minimal_whitespace_maintained_inside_tags() throws Exception
-    {
-        List<TemplateToken> tokens = tokens("minimal_whitespace_maintained_inside_tags.tml");
-
-        // A line feed or carriage return surrounded by other whitespace is reduced to
-        // just a line feed.
-
-        TextToken token1 = get(tokens, 1);
-        assertEquals(token1.getText(), "\nWhitespace\n");
-
-
-        TextToken token5 = get(tokens, 5);
-        assertEquals(token5.getText(), "\nis maintained.\n");
-    }
-
-    /**
-     * TAP5-563
-     */
-    @Test
-    public void content_element() throws Exception
-    {
-        List<TemplateToken> tokens = tokens("content_element.tml");
-
-        assertEquals(tokens.size(), 5);
-
-        StartComponentToken token0 = get(tokens, 0);
-        assertEquals(token0.getElementName(), "body");
-        assertEquals(token0.getComponentType(), "layout");
-
-        StartElementToken token1 = get(tokens, 1);
-        assertEquals(token1.getName(), "p");
-
-        TextToken token2 = get(tokens, 2);
-
-        assertEquals(token2.getText(), "Page content");
-
-        checkType(tokens, 3, TokenType.END_ELEMENT);
-        checkType(tokens, 4, TokenType.END_ELEMENT);
-    }
-
-    @Test
-    public void overrides() throws Exception
-    {
-        ComponentTemplate template = parse("overrides.tml");
-
-        assertTrue(template.isExtension());
-
-        assertEquals(template.getTokens().size(), 0);
-
-        List<TemplateToken> alpha = template.getExtensionPointTokens("alpha");
-
-        assertEquals(alpha.size(), 1);
-
-        TextToken alpha0 = get(alpha, 0);
-        assertEquals(alpha0.getText(), "beta");
-
-        List<TemplateToken> gamma = template.getExtensionPointTokens("gamma");
-        assertEquals(gamma.size(), 3);
-
-        StartElementToken gamma0 = get(gamma, 0);
-        assertEquals(gamma0.getName(), "p");
-
-        TextToken gamma1 = get(gamma, 1);
-
-        assertEquals(gamma1.getText(), "Hi!");
-
-        checkType(gamma, 2, TokenType.END_ELEMENT);
-    }
-
-    @Test
-    public void extension_point() throws Exception
-    {
-        ComponentTemplate template = parse("extension_point.tml");
-
-        ExtensionPointToken expansion = get(template.getTokens(), 2);
-
-        assertEquals(expansion.getExtensionPointId(), "title");
-
-        List<TemplateToken> title = template.getExtensionPointTokens("title");
-
-        assertEquals(title.size(), 3);
-
-        StartElementToken title0 = get(title, 0);
-        assertEquals(title0.getName(), "h1");
-
-        TextToken title1 = get(title, 1);
-        assertEquals(title1.getText(), "Default Title");
-
-        checkType(title, 2, TokenType.END_ELEMENT);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorAlternatesSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorAlternatesSourceImplTest.java
deleted file mode 100644
index 9c6a8c7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorAlternatesSourceImplTest.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.annotations.Test;
-
-@SuppressWarnings("unchecked")
-public class TranslatorAlternatesSourceImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void name_mismatch()
-    {
-        Translator t = mockTranslator();
-
-        train_getName(t, "barney");
-
-        Map<String, Translator> configuration = CollectionFactory.newMap();
-
-        configuration.put("Fred", t);
-
-        replay();
-
-        try
-        {
-            new TranslatorAlternatesSourceImpl(configuration);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Contribution key 'Fred' does not match 'barney' (the name of the corresponding Translator).");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java
deleted file mode 100644
index dbc98ba..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/TranslatorSourceImplTest.java
+++ /dev/null
@@ -1,402 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.text.DecimalFormatSymbols;
-import java.text.ParseException;
-import java.util.Locale;
-import java.util.Map;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.Translator;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.translator.BigDecimalNumericFormatter;
-import org.apache.tapestry5.internal.translator.BigIntegerNumericFormatter;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.TranslatorSource;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-@SuppressWarnings("unchecked")
-public class TranslatorSourceImplTest extends InternalBaseTestCase
-{
-    private TranslatorSource source;
-
-    @BeforeClass
-    public void setup()
-    {
-        source = getService(TranslatorSource.class);
-    }
-
-    @BeforeMethod
-    public void setupThreadLocale()
-    {
-        getService(ThreadLocale.class).setLocale(Locale.ENGLISH);
-    }
-
-    @Test
-    public void found_translator_by_name()
-    {
-        Translator translator = mockTranslator("mock", String.class);
-
-        replay();
-
-        TranslatorSource source = new TranslatorSourceImpl(newConfiguration(String.class, translator));
-
-        assertSame(source.get("mock"), translator);
-
-        verify();
-    }
-
-    private Map<Class, Translator> newConfiguration(Class type, Translator t)
-    {
-        Map<Class, Translator> result = CollectionFactory.newMap();
-        result.put(type, t);
-
-        return result;
-    }
-
-    @Test
-    public void key_and_type_mismatch()
-    {
-        Translator t = mockTranslator();
-
-        train_getType(t, Long.class);
-
-        replay();
-
-        try
-        {
-            new TranslatorSourceImpl(newConfiguration(Integer.class, t));
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Contributed translator for type java.lang.Integer reports its type as java.lang.Long.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void name_collision_with_standard_translators()
-    {
-        Translator t1 = mockTranslator("fred", Integer.class);
-        Translator t2 = mockTranslator("fred", Long.class);
-
-        Map<Class, Translator> configuration = CollectionFactory.newMap();
-        configuration.put(Integer.class, t1);
-        configuration.put(Long.class, t2);
-
-        replay();
-
-        try
-        {
-            new TranslatorSourceImpl(configuration);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Two different Translators contributed to the TranslatorSource service use the same translator name: 'fred'.",
-                    "Translator names must be unique.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_alternate_translator_by_name()
-    {
-        Translator t1 = mockTranslator("fred", Integer.class);
-        Translator t2 = mockTranslator();
-
-        Map<Class, Translator> configuration = newConfiguration(Integer.class, t1);
-
-        Map<String, Translator> alternates = CollectionFactory.newMap();
-        alternates.put("barney", t2);
-
-        replay();
-
-        TranslatorSource source = new TranslatorSourceImpl(configuration, alternates);
-
-        assertSame(source.get("barney"), t2);
-
-        verify();
-    }
-
-    @Test
-    public void name_collision_between_standard_and_alternate_translator()
-    {
-        Translator t1 = mockTranslator("fred", Integer.class);
-        Translator t2 = mockTranslator();
-
-        Map<Class, Translator> configuration = newConfiguration(Integer.class, t1);
-
-        Map<String, Translator> alternates = CollectionFactory.newMap();
-        alternates.put("fred", t2);
-
-        replay();
-
-        try
-        {
-            new TranslatorSourceImpl(configuration, alternates);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Translator 'fred' contributed to the TranslatorAlternatesSource service has the same name as a standard Translator contributed to the TranslatorSource service.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void unknown_translator_is_failure()
-    {
-        Translator fred = mockTranslator("fred", String.class);
-        Translator barney = mockTranslator("barney", Long.class);
-
-        Map<Class, Translator> configuration = CollectionFactory.newMap();
-
-        configuration.put(String.class, fred);
-        configuration.put(Long.class, barney);
-
-        replay();
-
-        TranslatorSource source = new TranslatorSourceImpl(configuration);
-
-        try
-        {
-            source.get("wilma");
-            unreachable();
-        }
-        catch (UnknownValueException ex)
-        {
-            assertMessageContains(ex, "Unknown translator type 'wilma'.");
-        }
-    }
-
-    @DataProvider
-    public Object[][] to_client_data()
-    {
-        return new Object[][]
-        {
-
-                { Byte.class, (byte) 65, "65" },
-
-                { Integer.class, 997, "997" },
-
-                { Long.class, 12345l, "12345" },
-
-                // Is this a bug? We seem to be using a JDK- or locale-defined level of precision.
-                // Maybe translators need room for configuration just like validators, so that
-                // the correct decimal format string could be specified in the message catalog.
-
-                { Double.class, 3.1428571429d, "3.143" },
-
-                { String.class, "abcd", "abcd" },
-
-                { Short.class, (short) 95, "95" },
-
-                { Float.class, (float) -22.7, "-22.7" },
-
-                { BigInteger.class, new BigInteger("123456789012345678901234567890"), "123456789012345678901234567890" },
-
-                { BigDecimal.class, new BigDecimal("-9876543219876543321987654321.12345123451234512345"),
-                        "-9876543219876543321987654321.12345123451234512345" } };
-    }
-
-    @Test(dataProvider = "to_client_data")
-    public void to_client(Class type, Object value, String expected)
-    {
-        Translator t = source.getByType(type);
-
-        String actual = t.toClient(value);
-
-        assertEquals(actual, expected);
-    }
-
-    @DataProvider
-    public Object[][] parse_client_success_data()
-    {
-        return new Object[][]
-        {
-
-                { Byte.class, " 23 ", (byte) 23 },
-
-                { Short.class, " -121 ", (short) -121 },
-
-                { Integer.class, " 123 ", 123 },
-
-                { Integer.class, " 20,000 ", 20000 },
-
-                { Long.class, "  -1234567 ", -1234567l },
-
-                { Double.class, "3.1428571429", 3.1428571429d },
-
-                { String.class, " abcdef ", " abcdef " },
-
-                { Float.class, " 28.95 ", (float) 28.95 },
-
-                { BigInteger.class, " -123456789012345678901234567890",
-                        new BigInteger("-123456789012345678901234567890") },
-
-                { BigDecimal.class, "-9,876,543,219,876,543,321,987,654,321.12345123451234512345",
-                        new BigDecimal("-9876543219876543321987654321.12345123451234512345") } };
-    }
-
-    @Test(dataProvider = "parse_client_success_data")
-    public void parse_client(Class type, String input, Object expected) throws Exception
-    {
-        Translator t = source.getByType(type);
-
-        Object actual = t.parseClient(null, input, null);
-
-        assertEquals(actual, expected);
-    }
-
-    @DataProvider
-    public Object[][] parse_client_failure_data()
-    {
-        String intError = "You must provide an integer value for Fred.";
-        String floatError = "You must provide a numeric value for Fred.";
-
-        return new Object[][]
-        {
-
-        { Byte.class, "fred", intError },
-
-        { Integer.class, "fred", intError },
-
-        { Long.class, "fred", intError },
-
-        { Double.class, "fred", floatError },
-
-        { Float.class, "fred", floatError },
-
-        { Short.class, "fred", intError } };
-    }
-
-    @Test(dataProvider = "parse_client_failure_data")
-    public void parse_client_failure(Class type, String input, String expectedMessage)
-    {
-        Translator t = source.getByType(type);
-        Field field = mockField();
-
-        replay();
-
-        try
-        {
-            t.parseClient(field, input, expectedMessage);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), expectedMessage);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void find_by_type()
-    {
-        Translator t = mockTranslator("string", String.class);
-
-        replay();
-
-        TranslatorSource source = new TranslatorSourceImpl(newConfiguration(String.class, t));
-
-        assertSame(source.getByType(String.class), t);
-        assertSame(source.findByType(String.class), t);
-        assertNull(source.findByType(Integer.class));
-
-        verify();
-    }
-
-    @Test
-    public void get_by_type_not_found()
-    {
-        Translator string = mockTranslator("string", String.class);
-        Translator bool = mockTranslator("bool", Boolean.class);
-
-        Map<Class, Translator> configuration = CollectionFactory.newMap();
-        configuration.put(String.class, string);
-        configuration.put(Boolean.class, bool);
-
-        replay();
-
-        TranslatorSource source = new TranslatorSourceImpl(configuration);
-
-        try
-        {
-            source.getByType(Integer.class);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "No translator is defined for type java.lang.Integer.  Registered types: java.lang.Boolean, java.lang.String.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void biginteger_with_localized_symbols() throws ParseException
-    {
-        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH);
-        symbols.setGroupingSeparator('_');
-        symbols.setMinusSign('*');
-
-        BigIntegerNumericFormatter f = new BigIntegerNumericFormatter(symbols);
-
-        BigInteger big = new BigInteger("-123456");
-
-        assertEquals(f.parse("*123_456"), big);
-
-        assertEquals(f.toClient(big), "*123456");
-    }
-
-    @Test
-    public void bigdecimal_with_localized_symbols() throws ParseException
-    {
-        DecimalFormatSymbols symbols = new DecimalFormatSymbols(Locale.ENGLISH);
-        symbols.setGroupingSeparator('_');
-        symbols.setMinusSign('*');
-        symbols.setDecimalSeparator('#');
-
-        BigDecimalNumericFormatter f = new BigDecimalNumericFormatter(symbols);
-
-        BigDecimal big = new BigDecimal("-123456.797956563434");
-
-        assertEquals(f.parse("*123_456#797956563434"), big);
-
-        assertEquals(f.toClient(big), "*123456#797956563434");
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/URLEncoderImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/URLEncoderImplTest.java
deleted file mode 100644
index db55d72..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/URLEncoderImplTest.java
+++ /dev/null
@@ -1,98 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import junit.framework.AssertionFailedError;
-import org.apache.tapestry5.services.URLEncoder;
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class URLEncoderImplTest extends Assert
-{
-    private final URLEncoder encoder = new URLEncoderImpl();
-
-    @DataProvider
-    public Object[][] encoder_inputs()
-    {
-        return new Object[][]
-                {
-                        { "simple", "simple" },
-                        { "lettersAndNumbers123456", "lettersAndNumbers123456" },
-                        { "simplePunctuation-_.", "simplePunctuation-_." },
-                        { "a-lone-$", "a-lone-$$" },
-                        { "a-slash-/", "a-slash-$002f" },
-                        { "a-space_ _", "a-space_$0020_" },
-                        { "unicode-\u027C-", "unicode-$027c-" },
-                        { null, URLEncoderImpl.ENCODED_NULL },
-                        { "", URLEncoderImpl.ENCODED_BLANK }
-                };
-    }
-
-    @DataProvider
-    public Object[][] failures()
-    {
-        return new Object[][]
-                {
-                        { "trailing-dollar-$",
-                                "Input string 'trailing-dollar-$' is not valid; the '$' character at position 17 should be followed by another '$' or a four digit hex number (a unicode value)." },
-                        { "not-hex-after-$xyzq-",
-                                "Input string 'not-hex-after-$xyzq-' is not valid; the '$' character at position 15 should be followed by another '$' or a four digit hex number (a unicode value)." },
-                        { "not-enough-after-$-ab",
-                                "Input string 'not-enough-after-$-ab' is not valid; the '$' character at position 18 should be followed by another '$' or a four digit hex number (a unicode value)." },
-                        { "unsafe-@-",
-                                "Input string 'unsafe-@-' is not valid; the character '@' at position 8 is not valid." }
-                };
-    }
-
-    @Test(dataProvider = "encoder_inputs")
-    public void encode(String input, String expectedOutput)
-
-    {
-        String output = encoder.encode(input);
-
-        assertEquals(output, expectedOutput);
-
-        if (input != null && input.equals(output))
-            assertSame(input, output, "When no change occurs, the input object should be passed through as is.");
-    }
-
-    @Test(dataProvider = "encoder_inputs")
-    public void decode(String expectedDecodedOutput, String encodedInput)
-
-    {
-        String output = encoder.decode(encodedInput);
-
-        assertEquals(output, expectedDecodedOutput);
-
-        if (encodedInput.equals(output))
-            assertSame(encodedInput, output,
-                       "When no change occurs, the output object should be passed through as is.");
-    }
-
-    @Test(dataProvider = "failures")
-    public void decode_failures(String input, String expectedMessage)
-    {
-        try
-        {
-            encoder.decode(input);
-            throw new AssertionFailedError("This code should not be reachable.");
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), expectedMessage);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/URLRewriterRequestFilterTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/URLRewriterRequestFilterTest.java
deleted file mode 100644
index 4551499..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/URLRewriterRequestFilterTest.java
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.services;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.apache.tapestry5.services.URLRewriter;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.urlrewriter.SimpleRequestWrapper;
-import org.apache.tapestry5.urlrewriter.URLRewriterRule;
-import org.apache.tapestry5.urlrewriter.RewriteRuleApplicability;
-import org.apache.tapestry5.urlrewriter.URLRewriteContext;
-import org.testng.annotations.Test;
-
-/**
- * Tests {@linkplain org.apache.tapestry5.internal.services.URLRewriterRequestFilter}
- * and also {@link URLRewriterImpl}.
- */
-public class URLRewriterRequestFilterTest extends TestBase
-{
-
-    private final class InternalURLRewriterRule implements URLRewriterRule
-    {
-
-        private DelegatingRequest delegetingRequest = new DelegatingRequest();
-
-        public Request process(Request request, URLRewriteContext context)
-        {
-            final String serverName = request.getServerName().replace("JSF", "tapestry");
-            final String path = request.getPath().replace(".JSF", "");
-            Request wrapper = new SimpleRequestWrapper(request, serverName, path);
-            delegetingRequest.setRequest(wrapper);
-            return delegetingRequest;
-        }
-
-        public RewriteRuleApplicability applicability() {
-            return RewriteRuleApplicability.BOTH;
-        }
-
-        Request getRequest()
-        {
-            return delegetingRequest;
-        }
-
-
-
-    }
-
-    @Test
-    public void test_rewriter_rule_chaining() throws IOException
-    {
-
-        URLRewriterRule rule1 = new URLRewriterRule()
-        {
-            public Request process(Request request,URLRewriteContext context)
-            {
-                final String serverName = request.getServerName().toUpperCase();
-                final String path = request.getPath().toUpperCase();
-                return new SimpleRequestWrapper(request, serverName, path);
-            }
-
-            public RewriteRuleApplicability applicability() {
-                return RewriteRuleApplicability.BOTH;
-            }
-        };
-
-        InternalURLRewriterRule rule2 = new InternalURLRewriterRule();
-
-        final Response response = newMock(Response.class);
-        RequestHandler handler = newMock(RequestHandler.class);
-
-        Request request = newMock(Request.class);
-        expect(request.getServerName()).andReturn("jsf.com");
-        expect(request.getPath()).andReturn("/why.jsf");
-
-        List<URLRewriterRule> rules = new ArrayList<URLRewriterRule>();
-        rules.add(rule1);
-        rules.add(rule2);
-        URLRewriter service = new URLRewriterImpl(rules);
-        URLRewriterRequestFilter filter = new URLRewriterRequestFilter(service);
-
-        expect(handler.service(rule2.getRequest(), response)).andReturn(false);
-
-        replay();
-
-        filter.service(request, response, handler);
-
-        verify();
-
-        final String serverName = rule2.getRequest().getServerName();
-        final String path = rule2.getRequest().getPath();
-        
-        assertEquals(serverName, "tapestry.COM");
-        assertEquals(path, "/WHY");
-
-    }
-
-    @Test
-    public void rewriter_rule_returns_null() throws IOException
-    {
-
-        URLRewriterRule rule = new URLRewriterRule()
-        {
-            public Request process(Request request,URLRewriteContext context)
-            {
-                return null;
-            }
-
-            public RewriteRuleApplicability applicability() {
-                return RewriteRuleApplicability.BOTH;
-            }
-        };
-        
-        List<URLRewriterRule> list = new ArrayList<URLRewriterRule>();
-        list.add(rule);
-        
-        URLRewriter urlRewriter = new URLRewriterImpl(list);
-
-        URLRewriterRequestFilter filter = new URLRewriterRequestFilter(urlRewriter);
-        Request request = newMock(Request.class);
-        Response response = newMock(Response.class);
-        RequestHandler requestHandler = newMock(RequestHandler.class);
-
-        boolean ok = false;
-
-        try
-        {
-            filter.service(request, response, requestHandler);
-        }
-        catch (RuntimeException e)
-        {
-            ok = true;
-        }
-
-        assertTrue(ok);
-
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ValidationMessagesSourceImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ValidationMessagesSourceImplTest.java
deleted file mode 100644
index 2b41809..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ValidationMessagesSourceImplTest.java
+++ /dev/null
@@ -1,172 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import java.util.Arrays;
-import java.util.Locale;
-
-import org.apache.tapestry5.internal.services.messages.PropertiesFileParserImpl;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.services.InvalidationEventHub;
-import org.apache.tapestry5.services.ValidationMessagesSource;
-import org.apache.tapestry5.services.messages.ComponentMessagesSource;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class ValidationMessagesSourceImplTest extends Assert
-{
-    private ValidationMessagesSource source;
-
-    @BeforeClass
-    public void setup()
-    {
-        final Messages mockMessages = new Messages()
-        {
-
-            public boolean contains(String key)
-            {
-                return key.equalsIgnoreCase("braniac");
-            }
-
-            public String format(String key, Object... args)
-            {
-                return null;
-            }
-
-            public String get(String key)
-            {
-                return "Braniac";
-            }
-
-            public MessageFormatter getFormatter(String key)
-            {
-                return null;
-            }
-
-        };
-
-        ComponentMessagesSource mockMessagesSource = new ComponentMessagesSource()
-        {
-
-            public Messages getMessages(ComponentModel componentModel, Locale locale)
-            {
-                return null;
-            }
-
-            public InvalidationEventHub getInvalidationEventHub()
-            {
-                return null;
-            }
-
-            public Messages getApplicationCatalog(Locale locale)
-            {
-                return mockMessages;
-            }
-        };
-
-        Resource rootResource = new ClasspathResource("/");
-        source = new ValidationMessagesSourceImpl(Arrays.asList("org/apache/tapestry5/internal/ValidationMessages",
-                "org/apache/tapestry5/internal/ValidationTestMessages"), rootResource, new PropertiesFileParserImpl(),
-                mockMessagesSource, new ClasspathURLConverterImpl());
-    }
-
-    @Test
-    public void builtin_message()
-    {
-        Messages messages = source.getValidationMessages(Locale.ENGLISH);
-
-        assertEquals(messages.format("required", "My Field"), "You must provide a value for My Field.");
-    }
-
-    /** TAP5-424 */
-    @Test
-    public void application_catalog_override()
-    {
-        Messages messages = source.getValidationMessages(Locale.ENGLISH);
-
-        assertTrue(messages.contains("braniac"));
-
-        assertEquals(messages.get("braniac"), "Braniac");
-    }
-
-    @Test
-    public void overriden_message()
-    {
-        Messages messages = source.getValidationMessages(Locale.ENGLISH);
-
-        assertEquals(messages.get("number-format-exception"), "Number Format Exception");
-    }
-
-    @Test
-    public void nonlocalized_override()
-    {
-        Messages messages = source.getValidationMessages(Locale.FRANCE);
-
-        assertEquals(messages.get("number-format-exception"), "Number Format Exception");
-    }
-
-    @Test
-    public void contributed_message()
-    {
-        Messages messages = source.getValidationMessages(Locale.ENGLISH);
-
-        assertEquals(messages.get("contributed"), "This message was contributed inside ValidationTestMessages.");
-    }
-
-    @Test
-    public void localization_of_message()
-    {
-        Messages messages = source.getValidationMessages(Locale.FRENCH);
-
-        assertEquals(messages.get("contributed"), "Zees eez Cohntributahd.");
-    }
-
-    @Test
-    public void contains()
-    {
-        Messages messages = source.getValidationMessages(Locale.ENGLISH);
-
-        assertEquals(messages.contains("required"), true);
-        assertEquals(messages.contains("contributed"), true);
-        assertEquals(messages.contains("this-key-does-not-exist-anywhere"), false);
-    }
-
-    @Test
-    public void message_formatter()
-    {
-        Messages messages = source.getValidationMessages(Locale.ENGLISH);
-
-        MessageFormatter formatter = messages.getFormatter("required");
-
-        assertEquals(formatter.format("My Field"), "You must provide a value for My Field.");
-    }
-
-    @Test
-    public void messages_instances_are_cached()
-    {
-        Messages english = source.getValidationMessages(Locale.ENGLISH);
-        Messages french = source.getValidationMessages(Locale.FRENCH);
-
-        assertSame(source.getValidationMessages(Locale.ENGLISH), english);
-        assertSame(source.getValidationMessages(Locale.FRENCH), french);
-        assertNotSame(french, english);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/VisibilityBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/VisibilityBean.java
deleted file mode 100644
index 5b60f1e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/VisibilityBean.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-import org.apache.tapestry5.annotations.Retain;
-
-/**
- * Used to test some issues related to visibility.
- */
-public class VisibilityBean
-{
-    // Got to some real effort to provoke some name collisions!
-
-    @Retain
-    public static int _$myStatic;
-
-    @Retain
-    protected String _$myProtected;
-
-    @Retain
-    String _$myPackagePrivate;
-
-    @Retain
-    public String _$myPublic;
-
-    @Retain
-    private long $myLong;
-
-    public long getMyLong()
-    {
-        return $myLong;
-    }
-
-    public void setMyLong(long myLong)
-    {
-        $myLong = myLong;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/WriteOnlyBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/WriteOnlyBean.java
deleted file mode 100644
index cf22006..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/WriteOnlyBean.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services;
-
-public class WriteOnlyBean
-{
-    public String getReadOnly()
-    {
-        return null;
-    }
-
-    public String getReadWrite()
-    {
-        return null;
-    }
-
-    public void setReadWrite(String value)
-    {
-    }
-
-    public void setWriteOnly(String value)
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.java
deleted file mode 100644
index 50f6c24..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/ajax/JavaScriptSupportImplTest.java
+++ /dev/null
@@ -1,489 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.ajax;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.services.DocumentLinker;
-import org.apache.tapestry5.internal.services.javascript.JavaScriptStackPathConstructor;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.apache.tapestry5.json.JSONArray;
-import org.apache.tapestry5.json.JSONObject;
-import org.apache.tapestry5.services.javascript.InitializationPriority;
-import org.apache.tapestry5.services.javascript.JavaScriptStack;
-import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.services.javascript.StylesheetLink;
-import org.apache.tapestry5.services.javascript.StylesheetOptions;
-import org.testng.annotations.Test;
-
-public class JavaScriptSupportImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void allocate_id_from_resources()
-    {
-        ComponentResources resources = mockComponentResources();
-
-        train_getId(resources, "tracy");
-
-        replay();
-
-        JavaScriptSupport jss = new JavaScriptSupportImpl(null, null, null);
-
-        assertEquals(jss.allocateClientId(resources), "tracy");
-        assertEquals(jss.allocateClientId(resources), "tracy_0");
-        assertEquals(jss.allocateClientId(resources), "tracy_1");
-
-        verify();
-    }
-
-    @Test
-    public void commit_with_no_javascript()
-    {
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(null, null, null);
-
-        jss.commit();
-    }
-
-    @Test
-    public void partial_mode_add_script()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-
-        linker.setInitialization(InitializationPriority.NORMAL, new JSONObject(
-                "{ 'evalScript' : [ 'doSomething();' ] }"));
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, null, null, new IdAllocator(), true);
-
-        jss.addScript("doSomething();");
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void adding_script_will_add_stack()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForCoreStack(linker, stackSource, pathConstructor);
-
-        linker.addScript(InitializationPriority.IMMEDIATE, "stackInit();");
-        linker.addScript(InitializationPriority.NORMAL, "doSomething();");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.addScript("doSomething();");
-
-        jss.commit();
-
-        verify();
-    }
-
-    private void trainForEmptyCoreStack(DocumentLinker linker, JavaScriptStackSource stackSource,
-            JavaScriptStackPathConstructor pathConstructor)
-    {
-        JavaScriptStack stack = mockJavaScriptStack();
-
-        expect(stackSource.getStack(InternalConstants.CORE_STACK_NAME)).andReturn(stack);
-        expect(pathConstructor.constructPathsForJavaScriptStack(InternalConstants.CORE_STACK_NAME)).andReturn(
-                Collections.<String> emptyList());
-        expect(stack.getStylesheets()).andReturn(Collections.<StylesheetLink> emptyList());
-
-        expect(stack.getInitialization()).andReturn(null);
-
-        expect(stack.getStacks()).andReturn(Collections.<String> emptyList());
-    }
-
-    private void trainForCoreStack(DocumentLinker linker, JavaScriptStackSource stackSource,
-            JavaScriptStackPathConstructor pathConstructor)
-    {
-        JavaScriptStack stack = mockJavaScriptStack();
-
-        StylesheetLink stylesheetLink = new StylesheetLink("style.css");
-
-        expect(stackSource.getStack(InternalConstants.CORE_STACK_NAME)).andReturn(stack);
-        expect(pathConstructor.constructPathsForJavaScriptStack(InternalConstants.CORE_STACK_NAME)).andReturn(
-                CollectionFactory.newList("stack1.js", "stack2.js"));
-        expect(stack.getStylesheets()).andReturn(CollectionFactory.newList(stylesheetLink));
-
-        expect(stack.getInitialization()).andReturn("stackInit();");
-
-        expect(stack.getStacks()).andReturn(Collections.<String> emptyList());
-
-        linker.addScriptLink("stack1.js");
-        linker.addScriptLink("stack2.js");
-        linker.addStylesheetLink(stylesheetLink);
-    }
-
-    protected final JavaScriptStack mockJavaScriptStack()
-    {
-        return newMock(JavaScriptStack.class);
-    }
-
-    protected final JavaScriptStackPathConstructor mockJavaScriptStackPathConstructor()
-    {
-        return newMock(JavaScriptStackPathConstructor.class);
-    }
-
-    protected final JavaScriptStackSource mockJavaScriptStackSource()
-    {
-        return newMock(JavaScriptStackSource.class);
-    }
-
-    @Test
-    public void add_script_passes_thru_to_document_linker()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        linker.addScript(InitializationPriority.IMMEDIATE, "doSomething();");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.addScript(InitializationPriority.IMMEDIATE, "doSomething();");
-
-        verify();
-    }
-
-    @Test
-    public void import_library()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        trainForNoStackNames(stackSource);
-
-        Asset library = mockAsset("mylib.js");
-
-        linker.addScriptLink("mylib.js");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.importJavaScriptLibrary(library);
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void import_library_from_stack_imports_the_stack()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        Asset library1 = mockAsset("mylib1.js");
-        Asset library2 = mockAsset("mylib2.js");
-
-        JavaScriptStack mystack = mockJavaScriptStack();
-
-        expect(stackSource.getStackNames()).andReturn(Arrays.asList("mystack"));
-        expect(stackSource.getStack("mystack")).andReturn(mystack).atLeastOnce();
-
-        expect(mystack.getStacks()).andReturn(Collections.<String> emptyList());
-        expect(mystack.getJavaScriptLibraries()).andReturn(Arrays.asList(library1, library2));
-
-        expect(pathConstructor.constructPathsForJavaScriptStack("mystack")).andReturn(
-                Arrays.asList("stacks/mystack.js"));
-        expect(mystack.getStylesheets()).andReturn(Collections.<StylesheetLink> emptyList());
-
-        expect(mystack.getInitialization()).andReturn(null);
-
-        linker.addScriptLink("stacks/mystack.js");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.importJavaScriptLibrary(library1);
-
-        jss.commit();
-
-        verify();
-    }
-
-    private void trainForNoStackNames(JavaScriptStackSource stackSource)
-    {
-        // This is slightly odd, as it would normally return "core" at a minimum, but we test for that separately.
-
-        expect(stackSource.getStackNames()).andReturn(Collections.<String> emptyList());
-    }
-
-    @Test
-    public void import_stack()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-
-        trainForCoreStack(linker, stackSource, pathConstructor);
-
-        JavaScriptStack stack = mockJavaScriptStack();
-
-        StylesheetLink stylesheetLink = new StylesheetLink("stack.css");
-
-        expect(stackSource.getStack("custom")).andReturn(stack);
-        expect(pathConstructor.constructPathsForJavaScriptStack("custom")).andReturn(
-                CollectionFactory.newList("stack.js"));
-        expect(stack.getStylesheets()).andReturn(CollectionFactory.newList(stylesheetLink));
-
-        expect(stack.getInitialization()).andReturn("customInit();");
-
-        List<String> stacks = Collections.emptyList();
-        expect(stack.getStacks()).andReturn(stacks);
-
-        linker.addScriptLink("stack.js");
-        linker.addStylesheetLink(stylesheetLink);
-
-        linker.addScript(InitializationPriority.IMMEDIATE, "stackInit();");
-        linker.addScript(InitializationPriority.IMMEDIATE, "customInit();");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.importStack("custom");
-
-        // Duplicate calls are ignored.
-        jss.importStack("Custom");
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void import_stack_with_dependencies()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-
-        trainForCoreStack(linker, stackSource, pathConstructor);
-
-        JavaScriptStack child = mockJavaScriptStack();
-        JavaScriptStack parent = mockJavaScriptStack();
-
-        StylesheetLink parentStylesheetLink = new StylesheetLink("parent.css");
-
-        StylesheetLink childStylesheetLink = new StylesheetLink("child.css");
-
-        expect(stackSource.getStack("child")).andReturn(child);
-
-        expect(child.getStacks()).andReturn(Arrays.asList("parent"));
-
-        expect(stackSource.getStack("parent")).andReturn(parent);
-
-        expect(pathConstructor.constructPathsForJavaScriptStack("parent")).andReturn(Arrays.asList("parent.js"));
-        expect(parent.getStylesheets()).andReturn(Arrays.asList(parentStylesheetLink));
-
-        expect(parent.getInitialization()).andReturn("parentInit();");
-
-        expect(pathConstructor.constructPathsForJavaScriptStack("child")).andReturn(Arrays.asList("child.js"));
-        expect(child.getStylesheets()).andReturn(Arrays.asList(childStylesheetLink));
-
-        expect(child.getInitialization()).andReturn("childInit();");
-
-        expect(parent.getStacks()).andReturn(Collections.<String> emptyList());
-
-        linker.addScriptLink("parent.js");
-        linker.addScriptLink("child.js");
-
-        linker.addStylesheetLink(parentStylesheetLink);
-        linker.addStylesheetLink(childStylesheetLink);
-
-        linker.addScript(InitializationPriority.IMMEDIATE, "stackInit();");
-        linker.addScript(InitializationPriority.IMMEDIATE, "parentInit();");
-        linker.addScript(InitializationPriority.IMMEDIATE, "childInit();");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.importStack("child");
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void duplicate_imported_libraries_are_filtered()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        trainForNoStackNames(stackSource);
-
-        Asset library1 = mockAsset("mylib1.js");
-        Asset library2 = mockAsset("mylib2.js");
-
-        linker.addScriptLink("mylib1.js");
-        linker.addScriptLink("mylib2.js");
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.importJavaScriptLibrary(library1);
-        jss.importJavaScriptLibrary(library2);
-        jss.importJavaScriptLibrary(library1);
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void initialize_calls_are_aggregated_within_priority()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        JSONObject spec1 = new JSONObject("clientId", "chuck");
-        JSONObject spec2 = new JSONObject("clientId", "fred");
-
-        JSONObject aggregated = new JSONObject().put("setup", new JSONArray(spec1, spec2));
-
-        linker.setInitialization(InitializationPriority.IMMEDIATE, aggregated);
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.addInitializerCall(InitializationPriority.IMMEDIATE, "setup", spec1);
-        jss.addInitializerCall(InitializationPriority.IMMEDIATE, "setup", spec2);
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void init_with_string()
-    {
-
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        JSONObject aggregated = new JSONObject().put("setup", new JSONArray("chuck", "charley"));
-
-        linker.setInitialization(InitializationPriority.IMMEDIATE, aggregated);
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.addInitializerCall(InitializationPriority.IMMEDIATE, "setup", "chuck");
-        jss.addInitializerCall(InitializationPriority.IMMEDIATE, "setup", "charley");
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void default_for_init_string_is_normal_priority()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        JavaScriptStackSource stackSource = mockJavaScriptStackSource();
-        JavaScriptStackPathConstructor pathConstructor = mockJavaScriptStackPathConstructor();
-        trainForEmptyCoreStack(linker, stackSource, pathConstructor);
-
-        JSONObject aggregated = new JSONObject().put("setup", new JSONArray().put("chuck"));
-
-        linker.setInitialization(InitializationPriority.NORMAL, aggregated);
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, stackSource, pathConstructor);
-
-        jss.addInitializerCall("setup", "chuck");
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void import_stylesheet_as_asset()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        Asset stylesheet = mockAsset("style.css");
-
-        StylesheetLink link = new StylesheetLink("style.css");
-        linker.addStylesheetLink(link);
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, null, null);
-
-        jss.importStylesheet(stylesheet);
-
-        jss.commit();
-
-        verify();
-    }
-
-    @Test
-    public void duplicate_stylesheet_ignored_first_media_wins()
-    {
-        DocumentLinker linker = mockDocumentLinker();
-        StylesheetOptions options = new StylesheetOptions("print");
-
-        linker.addStylesheetLink(new StylesheetLink("style.css", options));
-
-        replay();
-
-        JavaScriptSupportImpl jss = new JavaScriptSupportImpl(linker, null, null);
-
-        jss.importStylesheet(new StylesheetLink("style.css", options));
-        jss.importStylesheet(new StylesheetLink("style.css", new StylesheetOptions("hologram")));
-
-        jss.commit();
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandlerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandlerTest.java
deleted file mode 100644
index 1629e95..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/assets/ContextAssetRequestHandlerTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.assets;
-
-import java.io.IOException;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class ContextAssetRequestHandlerTest extends TestBase
-{
-    @DataProvider
-    public Object[][] invalid_paths()
-    {
-        return new Object[][]
-        {
-        { "web-Inf/classes/hibernate.cfg.xml" },
-        { "Meta-Inf/MANIFEST.mf" },
-        { "Index.tml" },
-        { "folder/FolderIndex.TML" } };
-    }
-
-    @Test(dataProvider = "invalid_paths")
-    public void ensure_assets_are_rejected(String path) throws IOException
-    {
-        ContextAssetRequestHandler handler = new ContextAssetRequestHandler(null, null);
-
-        assertFalse(handler.handleAssetRequest(null, null, path), "Handler should return false for invalid path.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImplTest.java
deleted file mode 100644
index 5c4d381..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/messages/PropertiesFileParserImplTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.messages;
-
-import java.util.Map;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.services.messages.PropertiesFileParser;
-import org.testng.annotations.Test;
-
-public class PropertiesFileParserImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void read_utf() throws Exception
-    {
-        Resource utf8 = new ClasspathResource("org/apache/tapestry5/internal/services/messages/utf8.properties");
-
-        PropertiesFileParser parser = getService(PropertiesFileParser.class);
-
-        Map<String, String> properties = parser.parsePropertiesFile(utf8);
-
-        assertEquals(properties.get("tapestry"), "\u30bf\u30da\u30b9\u30c8\u30ea\u30fc");
-        assertEquals(properties.get("version"), "5");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/meta/MetaWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/meta/MetaWorkerTest.java
deleted file mode 100644
index 04eddf2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/services/meta/MetaWorkerTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.services.meta;
-
-import org.apache.tapestry5.annotations.Meta;
-import org.apache.tapestry5.internal.services.meta.MetaAnnotationExtractor;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.testng.annotations.Test;
-
-public class MetaWorkerTest extends InternalBaseTestCase
-{
-    @Test
-    public void has_meta_data()
-    {
-        MutableComponentModel model = mockMutableComponentModel();
-        Meta annotation = newMock(Meta.class);
-
-        expect(annotation.value()).andReturn(new String[]
-        { "foo=bar", "baz=biff" });
-
-        model.setMeta("foo", "bar");
-        model.setMeta("baz", "biff");
-
-        replay();
-
-        new MetaAnnotationExtractor().extractMetaData(model, annotation);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/BlockImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/BlockImplTest.java
deleted file mode 100644
index 537504f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/BlockImplTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-import org.apache.tapestry5.ioc.internal.util.LocationImpl;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.testng.annotations.Test;
-
-public class BlockImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void empty_block()
-    {
-        BlockImpl block = new BlockImpl(null, null);
-        RenderQueue queue = mockRenderQueue();
-        MarkupWriter writer = mockMarkupWriter();
-
-        replay();
-
-        block.render(writer, queue);
-
-        verify();
-    }
-
-    @Test
-    public void body_pushed_to_queue_backwards()
-    {
-        BlockImpl block = new BlockImpl(null, null);
-        RenderQueue queue = mockRenderQueue();
-        MarkupWriter writer = mockMarkupWriter();
-        RenderCommand element1 = mockRenderCommand();
-        RenderCommand element2 = mockRenderCommand();
-
-        getMocksControl().checkOrder(true);
-
-        queue.push(element2);
-        queue.push(element1);
-
-        replay();
-
-        block.addToBody(element1);
-        block.addToBody(element2);
-
-        block.render(writer, queue);
-
-        verify();
-    }
-
-    @Test
-    public void to_string()
-    {
-        Resource r = new ClasspathResource("foo/pages/MyPage.tml");
-        Location l = new LocationImpl(r, 23);
-
-        BlockImpl block = new BlockImpl(l, "test block");
-
-        assertEquals(block.toString(), "Block[test block, at classpath:foo/pages/MyPage.tml, line 23]");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ExpansionPageElementImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ExpansionPageElementImplTest.java
deleted file mode 100644
index 7ef4778..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/ExpansionPageElementImplTest.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.testng.annotations.Test;
-
-public class ExpansionPageElementImplTest extends InternalBaseTestCase
-{
-    @Test
-    public void invariant_binding_is_cached()
-    {
-        Binding binding = mockBinding();
-        TypeCoercer coercer = mockTypeCoercer();
-        MarkupWriter writer = mockMarkupWriter();
-        RenderQueue queue = mockRenderQueue();
-
-        Object value = new Object();
-
-        train_isInvariant(binding, true);
-
-        replay();
-
-        RenderCommand element = new ExpansionPageElement(binding, coercer);
-
-        verify();
-
-        train_get(binding, value);
-        train_coerce(coercer, value, String.class, "STRING-VALUE");
-        writer.write("STRING-VALUE");
-
-        replay();
-
-        element.render(writer, queue);
-
-        verify();
-
-        // It is now cached ...
-
-        writer.write("STRING-VALUE");
-
-        replay();
-
-        element.render(writer, queue);
-
-        verify();
-    }
-
-    @Test
-    public void variant_binding_is_not_cached()
-    {
-        Binding binding = mockBinding();
-        TypeCoercer coercer = mockTypeCoercer();
-        MarkupWriter writer = mockMarkupWriter();
-        RenderQueue queue = mockRenderQueue();
-
-        Object value = new Object();
-
-        train_isInvariant(binding, false);
-
-        replay();
-
-        RenderCommand element = new ExpansionPageElement(binding, coercer);
-
-        verify();
-
-        train_get(binding, value);
-        train_coerce(coercer, value, String.class, "STRING-VALUE");
-        writer.write("STRING-VALUE");
-
-        replay();
-
-        element.render(writer, queue);
-
-        verify();
-
-        train_get(binding, value);
-        train_coerce(coercer, value, String.class, "STRING-VALUE2");
-        writer.write("STRING-VALUE2");
-
-        replay();
-
-        element.render(writer, queue);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImplTest.java
deleted file mode 100644
index 5232af4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/InternalComponentResourcesImplTest.java
+++ /dev/null
@@ -1,344 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.Binding;
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.bindings.InternalPropBinding;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.ParameterModel;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class InternalComponentResourcesImplTest extends InternalBaseTestCase
-{
-    private PerthreadManager perThreadManager;
-
-    private ComponentPageElementResources elementResources;
-
-    @BeforeClass
-    public void setup()
-    {
-        perThreadManager = getService(PerthreadManager.class);
-        TypeCoercer typeCoercer = getService(TypeCoercer.class);
-
-        elementResources = new ComponentPageElementResourcesImpl(null, null, typeCoercer, null, null, null, null, null,
-                null, null, perThreadManager);
-    }
-
-    @AfterMethod
-    public void cleanup()
-    {
-        perThreadManager.cleanup();
-    }
-
-    @Test
-    public void render_informal_parameters_no_bindings()
-    {
-        ComponentPageElement element = mockComponentPageElement();
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        MarkupWriter writer = mockMarkupWriter();
-        TypeCoercer coercer = mockTypeCoercer();
-        ComponentModel model = mockComponentModel();
-
-        train_getModel(ins, model);
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(null, element, null,
-                elementResources, null, null, ins, false);
-
-        resources.renderInformalParameters(writer);
-
-        verify();
-    }
-
-    @Test
-    public void render_informal_parameters_skips_formal_parameters()
-    {
-        ComponentPageElement element = mockComponentPageElement();
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        MarkupWriter writer = mockMarkupWriter();
-        ComponentModel model = mockComponentModel();
-        ParameterModel pmodel = mockParameterModel();
-        Binding binding = mockBinding();
-
-        train_getModel(ins, model);
-
-        train_getParameterModel(model, "fred", pmodel);
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(null, element, null,
-                elementResources, null, null, ins, false);
-
-        resources.bindParameter("fred", binding);
-
-        resources.renderInformalParameters(writer);
-
-        verify();
-    }
-
-    @Test
-    public void render_an_informal_parameter()
-    {
-        ComponentPageElement element = mockComponentPageElement();
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        MarkupWriter writer = mockMarkupWriter();
-        ComponentModel model = mockComponentModel();
-        Binding binding = mockBinding();
-        Object rawValue = new Long(97);
-
-        train_getModel(ins, model);
-
-        train_getParameterModel(model, "fred", null);
-
-        train_get(binding, rawValue);
-
-        writer.attributes("fred", "97");
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(null, element, null,
-                elementResources, "Foo.bar", null, ins, false);
-
-        resources.bindParameter("fred", binding);
-
-        resources.renderInformalParameters(writer);
-
-        verify();
-    }
-
-    @Test
-    public void get_render_variable_exists()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-
-        Object value = new Object();
-
-        train_getModel(ins, model);
-
-        train_isRendering(element, true);
-
-        replay();
-
-        ComponentResources resources = new InternalComponentResourcesImpl(null, element, null, elementResources, "id",
-                null, ins, false);
-
-        resources.storeRenderVariable("myRenderVar", value);
-
-        assertSame(resources.getRenderVariable("myrendervar"), value);
-
-        verify();
-    }
-
-    protected final void train_isRendering(ComponentPageElement element, boolean isRendering)
-    {
-        expect(element.isRendering()).andReturn(isRendering);
-    }
-
-    @Test
-    public void get_render_variable_missing()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-
-        train_getModel(ins, model);
-
-        train_isRendering(element, true);
-        train_isRendering(element, true);
-
-        replay();
-
-        ComponentResources resources = new InternalComponentResourcesImpl(null, element, null, elementResources,
-                "Foo.bar", null, ins, false);
-
-        resources.storeRenderVariable("fred", "FRED");
-        resources.storeRenderVariable("barney", "BARNEY");
-
-        try
-        {
-            resources.getRenderVariable("wilma");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Component Foo.bar does not contain a stored render variable with name 'wilma'.  Stored render variables: barney, fred.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void post_render_cleanup_removes_all_variables()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-
-        train_getModel(ins, model);
-
-        train_isRendering(element, true);
-        train_isRendering(element, true);
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(null, element, null,
-                elementResources, "Foo.bar", null, ins, false);
-
-        resources.storeRenderVariable("fred", "FRED");
-        resources.storeRenderVariable("barney", "BARNEY");
-
-        resources.postRenderCleanup();
-
-        try
-        {
-            resources.getRenderVariable("fred");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Component Foo.bar does not contain a stored render variable with name 'fred'.  Stored render variables: (none).");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void store_render_variable_when_not_rendering()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-
-        train_getModel(ins, model);
-
-        train_isRendering(element, false);
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(null, element, null, null, "Foo.bar",
-                null, ins, false);
-
-        try
-        {
-            resources.storeRenderVariable("fred", "FRED");
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Component Foo.bar is not rendering, so render variable 'fred' may not be updated.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void add_page_lifecycle_listener()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-        Page page = mockPage();
-        PageLifecycleListener listener = newMock(PageLifecycleListener.class);
-
-        train_getModel(ins, model);
-
-        page.addLifecycleListener(listener);
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(page, element, null, null, null,
-                null, ins, false);
-
-        resources.addPageLifecycleListener(listener);
-
-        verify();
-    }
-
-    @Test
-    public void get_property_name()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-        Page page = mockPage();
-        Binding binding = mockBinding();
-
-        train_getModel(ins, model);
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(page, element, null, null, null,
-                null, ins, false);
-
-        resources.bindParameter("bar", binding);
-
-        assertNull(resources.getPropertyName("bar"));
-
-        verify();
-    }
-
-    @Test
-    public void get_property_name_internal_prop_binding()
-    {
-        Component component = mockComponent();
-        Instantiator ins = mockInstantiator(component);
-        ComponentModel model = mockComponentModel();
-        ComponentPageElement element = mockComponentPageElement();
-        Page page = mockPage();
-        InternalPropBinding binding = newMock(InternalPropBinding.class);
-
-        train_getModel(ins, model);
-
-        expect(binding.getPropertyName()).andReturn("foo");
-
-        replay();
-
-        InternalComponentResources resources = new InternalComponentResourcesImpl(page, element, null, null, null,
-                null, ins, false);
-
-        resources.bindParameter("bar", binding);
-
-        assertEquals(resources.getPropertyName("bar"), "foo");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java
deleted file mode 100644
index 3c3748c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/structure/PageImplTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.structure;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.runtime.PageLifecycleListener;
-import static org.easymock.EasyMock.contains;
-import static org.easymock.EasyMock.same;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class PageImplTest extends InternalBaseTestCase
-{
-    private final Locale locale = Locale.ENGLISH;
-
-    private static final String LOGICAL_PAGE_NAME = "MyPage";
-
-    private PerthreadManager perThreadManager;
-    
-    @BeforeClass
-    public void setup()
-    {
-        perThreadManager = getService(PerthreadManager.class);
-    }
-    
-    @AfterMethod
-    public void cleanup()
-    {
-        perThreadManager.cleanup();
-    }
-    
-    @Test
-    public void accessor_methods()
-    {
-        ComponentPageElement root = mockComponentPageElement();
-
-        replay();
-
-        Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager, true);
-
-        assertNull(page.getRootElement());
-
-        page.setRootElement(root);
-
-        assertSame(page.getLocale(), locale);
-        assertSame(page.getRootElement(), root);
-        assertSame(page.getName(), LOGICAL_PAGE_NAME);
-
-        verify();
-    }
-
-    @Test
-    public void detach_notification()
-    {
-        PageLifecycleListener listener1 = newPageLifecycle();
-        PageLifecycleListener listener2 = newPageLifecycle();
-
-        listener1.containingPageDidDetach();
-        listener2.containingPageDidDetach();
-
-        replay();
-
-        Page page = new PageImpl(null, locale, null, perThreadManager, true);
-
-        page.addLifecycleListener(listener1);
-        page.addLifecycleListener(listener2);
-
-        assertFalse(page.detached());
-
-        verify();
-    }
-
-    /**
-     * Also checks that listeners are invoked, even if the page is dirty.
-     */
-    @Test
-    public void detach_dirty_if_dirty_count_non_zero()
-    {
-        PageLifecycleListener listener = newPageLifecycle();
-
-        listener.containingPageDidDetach();
-
-        replay();
-
-        Page page = new PageImpl(null, locale, null, perThreadManager, true);
-
-        page.addLifecycleListener(listener);
-
-        page.incrementDirtyCount();
-
-        assertTrue(page.detached());
-
-        verify();
-    }
-
-    /**
-     * Also checks that all listeners are invoked, even if one of them throws an exception.
-     */
-    @Test
-    public void detach_dirty_if_listener_throws_exception()
-    {
-        ComponentPageElement element = mockComponentPageElement();
-        Logger logger = mockLogger();
-        PageLifecycleListener listener1 = newPageLifecycle();
-        PageLifecycleListener listener2 = newPageLifecycle();
-        RuntimeException t = new RuntimeException("Listener detach exception.");
-
-        train_getLogger(element, logger);
-
-        listener1.containingPageDidDetach();
-        setThrowable(t);
-
-        logger.error(contains("failed during page detach"), same(t));
-
-        listener2.containingPageDidDetach();
-
-        replay();
-
-        Page page = new PageImpl(null, locale, null, perThreadManager, true);
-        page.setRootElement(element);
-
-        page.addLifecycleListener(listener1);
-        page.addLifecycleListener(listener2);
-
-        assertTrue(page.detached());
-
-        verify();
-    }
-
-    protected final void train_getLogger(ComponentPageElement element, Logger logger)
-    {
-        expect(element.getLogger()).andReturn(logger);
-    }
-
-    @Test
-    public void attach_notification()
-    {
-        PageLifecycleListener listener1 = newPageLifecycle();
-        PageLifecycleListener listener2 = newPageLifecycle();
-
-        listener1.restoreStateBeforePageAttach();
-        listener2.restoreStateBeforePageAttach();
-
-        listener1.containingPageDidAttach();
-        listener2.containingPageDidAttach();
-
-        replay();
-
-        Page page = new PageImpl(null, locale, null, perThreadManager, true);
-
-        page.addLifecycleListener(listener1);
-        page.addLifecycleListener(listener2);
-
-        page.attached();
-
-        verify();
-    }
-
-    private PageLifecycleListener newPageLifecycle()
-    {
-        return newMock(PageLifecycleListener.class);
-    }
-
-    @Test
-    public void load_notification()
-    {
-        PageLifecycleListener listener1 = newPageLifecycle();
-        PageLifecycleListener listener2 = newPageLifecycle();
-
-        listener1.containingPageDidLoad();
-        listener2.containingPageDidLoad();
-
-        replay();
-
-        Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager, true);
-
-        page.addLifecycleListener(listener1);
-        page.addLifecycleListener(listener2);
-
-        page.loaded();
-
-        verify();
-    }
-
-    @Test
-    public void get_by_nested_id_for_blank_value_returns_root_component()
-    {
-        ComponentPageElement root = mockComponentPageElement();
-
-        replay();
-
-        Page page = new PageImpl(LOGICAL_PAGE_NAME, locale, null, perThreadManager, true);
-
-        page.setRootElement(root);
-
-        assertSame(page.getComponentElementByNestedId(""), root);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
deleted file mode 100644
index e0c45a3..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/InternalBaseTestCase.java
+++ /dev/null
@@ -1,616 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import static org.easymock.EasyMock.isA;
-
-import java.io.BufferedInputStream;
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.LineNumberReader;
-import java.io.Reader;
-import java.util.Arrays;
-import java.util.Locale;
-import java.util.ResourceBundle;
-
-import org.apache.tapestry5.ComponentResources;
-import org.apache.tapestry5.ComponentResourcesCommon;
-import org.apache.tapestry5.ContentType;
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.parser.ComponentTemplate;
-import org.apache.tapestry5.internal.parser.TemplateToken;
-import org.apache.tapestry5.internal.services.*;
-import org.apache.tapestry5.internal.structure.ComponentPageElement;
-import org.apache.tapestry5.internal.structure.ComponentPageElementResources;
-import org.apache.tapestry5.internal.structure.Page;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.RegistryBuilder;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.InternalRegistry;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.model.ComponentModel;
-import org.apache.tapestry5.model.EmbeddedComponentModel;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.root.FieldComponent;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.runtime.RenderCommand;
-import org.apache.tapestry5.runtime.RenderQueue;
-import org.apache.tapestry5.services.ClientBehaviorSupport;
-import org.apache.tapestry5.services.ComponentClassResolver;
-import org.apache.tapestry5.services.InvalidationListener;
-import org.apache.tapestry5.services.LinkCreationListener;
-import org.apache.tapestry5.services.LocalizationSetter;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.TapestryModule;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.easymock.EasyMock;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-/**
- * Contains additional factory and training methods related to internal interfaces.
- */
-public class InternalBaseTestCase extends TapestryTestCase implements Registry
-{
-    private static Registry registry;
-
-    private Messages validationMessages;
-
-    @BeforeSuite
-    public final void setup_registry()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-
-        builder.add(TapestryModule.class);
-
-        registry = builder.build();
-
-        registry.performRegistryStartup();
-    }
-
-    @AfterSuite
-    public final void shutdown_registry()
-    {
-        registry.shutdown();
-
-        registry = null;
-    }
-
-    @AfterMethod
-    public final void cleanupThread()
-    {
-        registry.cleanupThread();
-    }
-
-    public void performRegistryStartup()
-    {
-        registry.performRegistryStartup();
-    }
-
-    public final <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
-    {
-        return registry.getObject(objectType, annotationProvider);
-    }
-
-    public final <T> T getService(Class<T> serviceInterface)
-    {
-        return registry.getService(serviceInterface);
-    }
-
-    public final <T> T getService(String serviceId, Class<T> serviceInterface)
-    {
-        return registry.getService(serviceId, serviceInterface);
-    }
-
-    public final <T> T autobuild(Class<T> clazz)
-    {
-        return registry.autobuild(clazz);
-    }
-
-    public final <T> T autobuild(String description, Class<T> clazz)
-    {
-        return registry.autobuild(description, clazz);
-    }
-
-    public final <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
-    {
-        return registry.proxy(interfaceClass, implementationClass);
-    }
-
-    public final void shutdown()
-    {
-        throw new UnsupportedOperationException("No registry shutdown until @AfterSuite.");
-    }
-
-    protected final InternalComponentResources mockInternalComponentResources()
-    {
-        return newMock(InternalComponentResources.class);
-    }
-
-    protected final ComponentTemplate mockComponentTemplate()
-    {
-        return newMock(ComponentTemplate.class);
-    }
-
-    protected final <T> void train_getService(InternalRegistry registry, String serviceId, Class<T> serviceInterface,
-            T service)
-    {
-        expect(registry.getService(serviceId, serviceInterface)).andReturn(service);
-    }
-
-    protected final ComponentInstantiatorSource mockComponentInstantiatorSource()
-    {
-        return newMock(ComponentInstantiatorSource.class);
-    }
-
-    protected final Page mockPage()
-    {
-        return newMock(Page.class);
-    }
-
-    protected final PageLoader mockPageLoader()
-    {
-        return newMock(PageLoader.class);
-    }
-
-    protected final void train_loadPage(PageLoader loader, String pageName, Locale locale, Page page)
-    {
-        expect(loader.loadPage(pageName, locale)).andReturn(page);
-    }
-
-    protected final PagePool mockPagePool()
-    {
-        return newMock(PagePool.class);
-    }
-
-    protected RenderQueue mockRenderQueue()
-    {
-        return newMock(RenderQueue.class);
-    }
-
-    protected final void train_parseTemplate(TemplateParser parser, Resource resource, ComponentTemplate template)
-    {
-        expect(parser.parseTemplate(resource)).andReturn(template);
-    }
-
-    protected final TemplateParser mockTemplateParser()
-    {
-        return newMock(TemplateParser.class);
-    }
-
-    protected final ComponentPageElement mockComponentPageElement()
-    {
-        return newMock(ComponentPageElement.class);
-    }
-
-    protected final void train_getComponent(ComponentPageElement element, Component component)
-    {
-        expect(element.getComponent()).andReturn(component).atLeastOnce();
-    }
-
-    protected final void train_getId(ComponentResourcesCommon resources, String id)
-    {
-        expect(resources.getId()).andReturn(id).atLeastOnce();
-    }
-
-    protected final void train_getNestedId(ComponentResourcesCommon resources, String nestedId)
-    {
-        expect(resources.getNestedId()).andReturn(nestedId).atLeastOnce();
-    }
-
-    protected final void train_getContextPath(Request request, String contextPath)
-    {
-        expect(request.getContextPath()).andReturn(contextPath).atLeastOnce();
-    }
-
-    protected final void train_resolvePageClassNameToPageName(ComponentClassResolver resolver, String pageClassName,
-            String pageName)
-    {
-        expect(resolver.resolvePageClassNameToPageName(pageClassName)).andReturn(pageName);
-    }
-
-    protected final void train_getContainingPage(ComponentPageElement element, Page page)
-    {
-        expect(element.getContainingPage()).andReturn(page).atLeastOnce();
-    }
-
-    protected final void train_getComponentResources(ComponentPageElement element, InternalComponentResources resources)
-    {
-        expect(element.getComponentResources()).andReturn(resources).atLeastOnce();
-    }
-
-    protected final void train_getComponentClassName(EmbeddedComponentModel model, String className)
-    {
-        expect(model.getComponentClassName()).andReturn(className).atLeastOnce();
-    }
-
-    protected final RenderCommand mockRenderCommand()
-    {
-        return newMock(RenderCommand.class);
-    }
-
-    protected final void train_getParameterNames(EmbeddedComponentModel model, String... names)
-    {
-        expect(model.getParameterNames()).andReturn(Arrays.asList(names));
-    }
-
-    protected final void train_getComponentType(EmbeddedComponentModel emodel, String componentType)
-    {
-        expect(emodel.getComponentType()).andReturn(componentType).atLeastOnce();
-    }
-
-    protected final void train_getEmbeddedComponentModel(ComponentModel model, String embeddedId,
-            EmbeddedComponentModel emodel)
-    {
-        expect(model.getEmbeddedComponentModel(embeddedId)).andReturn(emodel).atLeastOnce();
-    }
-
-    protected final EmbeddedComponentModel mockEmbeddedComponentModel()
-    {
-        return newMock(EmbeddedComponentModel.class);
-    }
-
-    protected final PageElementFactory mockPageElementFactory()
-    {
-        return newMock(PageElementFactory.class);
-    }
-
-    protected final ComponentTemplateSource mockComponentTemplateSource()
-    {
-        return newMock(ComponentTemplateSource.class);
-    }
-
-    protected final void train_getLogger(ComponentModel model, Logger logger)
-    {
-        expect(model.getLogger()).andReturn(logger).atLeastOnce();
-    }
-
-    protected final void train_getTokens(ComponentTemplate template, TemplateToken... tokens)
-    {
-        expect(template.getTokens()).andReturn(Arrays.asList(tokens));
-    }
-
-    protected final void train_getEmbeddedIds(ComponentModel model, String... ids)
-    {
-        expect(model.getEmbeddedComponentIds()).andReturn(Arrays.asList(ids));
-    }
-
-    protected void train_getTemplate(ComponentTemplateSource templateSource, ComponentModel model, Locale locale,
-            ComponentTemplate template)
-    {
-        expect(templateSource.getTemplate(model, locale)).andReturn(template);
-    }
-
-    protected final void train_getComponentModel(ComponentResources resources, ComponentModel model)
-    {
-        expect(resources.getComponentModel()).andReturn(model).atLeastOnce();
-    }
-
-    protected final void train_getModel(Instantiator ins, ComponentModel model)
-    {
-        expect(ins.getModel()).andReturn(model).atLeastOnce();
-    }
-
-    protected final Instantiator mockInstantiator(Component component)
-    {
-        Instantiator ins = newMock(Instantiator.class);
-
-        expect(ins.newInstance(EasyMock.isA(InternalComponentResources.class))).andReturn(component);
-
-        return ins;
-    }
-
-    protected final RequestPageCache mockRequestPageCache()
-    {
-        return newMock(RequestPageCache.class);
-    }
-
-    protected final void train_getComponentElementByNestedId(Page page, String nestedId, ComponentPageElement element)
-    {
-        expect(page.getComponentElementByNestedId(nestedId)).andReturn(element).atLeastOnce();
-    }
-
-    protected final void train_getRootElement(Page page, ComponentPageElement element)
-    {
-        expect(page.getRootElement()).andReturn(element).atLeastOnce();
-    }
-
-    protected final void train_isMissing(ComponentTemplate template, boolean isMissing)
-    {
-        expect(template.isMissing()).andReturn(isMissing).atLeastOnce();
-    }
-
-    protected final void train_getMixinClassNames(EmbeddedComponentModel model, String... names)
-    {
-        expect(model.getMixinClassNames()).andReturn(Arrays.asList(names));
-    }
-
-    protected final void train_getRootComponent(Page page, Component component)
-    {
-        expect(page.getRootComponent()).andReturn(component).atLeastOnce();
-    }
-
-    protected final ResourceCache mockResourceCache()
-    {
-        return newMock(ResourceCache.class);
-    }
-
-    protected final void train_requiresDigest(ResourceCache cache, Resource resource, boolean requiresChecksum)
-    {
-        expect(cache.requiresDigest(resource)).andReturn(requiresChecksum);
-    }
-
-    protected final InvalidationListener mockInvalidationListener()
-    {
-        return newMock(InvalidationListener.class);
-    }
-
-    protected final void train_getTimeModified(ResourceCache cache, Resource resource, long timeModified)
-    {
-        expect(cache.getTimeModified(resource)).andReturn(timeModified).atLeastOnce();
-    }
-
-    protected final ResourceStreamer mockResourceStreamer()
-    {
-        return newMock(ResourceStreamer.class);
-    }
-
-    protected final void train_get(RequestPageCache cache, String pageName, Page page)
-    {
-        expect(cache.get(pageName)).andReturn(page).atLeastOnce();
-    }
-
-    /**
-     * Returns the default validator messages.
-     */
-    protected final Messages validationMessages()
-    {
-        if (validationMessages == null)
-        {
-            ResourceBundle bundle = ResourceBundle.getBundle("org.apache.tapestry5.internal.ValidationMessages");
-
-            validationMessages = new MessagesImpl(Locale.ENGLISH, bundle);
-        }
-
-        return validationMessages;
-    }
-
-    protected final LinkCreationListener mockLinkCreationListener()
-    {
-        return newMock(LinkCreationListener.class);
-    }
-
-    protected final LinkSource mockLinkSource()
-    {
-        return newMock(LinkSource.class);
-    }
-
-    protected final void train_isLoaded(InternalComponentResources resources, boolean isLoaded)
-    {
-        expect(resources.isLoaded()).andReturn(isLoaded);
-    }
-
-    protected final void stub_isPageName(ComponentClassResolver resolver, boolean result)
-    {
-        expect(resolver.isPageName(isA(String.class))).andStubReturn(result);
-    }
-
-    protected final void train_isPageName(ComponentClassResolver resolver, String pageName, boolean result)
-    {
-        expect(resolver.isPageName(pageName)).andReturn(result);
-    }
-
-    protected final PageResponseRenderer mockPageResponseRenderer()
-    {
-        return newMock(PageResponseRenderer.class);
-    }
-
-    /**
-     * Reads the content of a file into a string. Each line is trimmed of line separators and
-     * leading/trailing
-     * whitespace.
-     * 
-     * @param file
-     *            trim each line of whitespace
-     */
-    protected final String readFile(String file) throws Exception
-    {
-        InputStream is = getClass().getResourceAsStream(file);
-        is = new BufferedInputStream(is);
-        Reader reader = new BufferedReader(new InputStreamReader(is));
-        LineNumberReader in = new LineNumberReader(reader);
-
-        StringBuilder buffer = new StringBuilder();
-
-        while (true)
-        {
-            String line = in.readLine();
-
-            if (line == null)
-                break;
-
-            buffer.append(line);
-
-            buffer.append("\n");
-        }
-
-        in.close();
-
-        return buffer.toString().trim();
-    }
-
-    protected final DocumentLinker mockDocumentLinker()
-    {
-        return newMock(DocumentLinker.class);
-    }
-
-    protected final void train_canonicalizePageName(ComponentClassResolver resolver, String pageName,
-            String canonicalized)
-    {
-        expect(resolver.canonicalizePageName(pageName)).andReturn(canonicalized);
-    }
-
-    protected final void train_getName(Page page, String pageName)
-    {
-        expect(page.getName()).andReturn(pageName).atLeastOnce();
-    }
-
-    protected final void train_resolvePageNameToClassName(ComponentClassResolver resolver, String pageName,
-            String pageClassName)
-    {
-        expect(resolver.resolvePageNameToClassName(pageName)).andReturn(pageClassName).atLeastOnce();
-    }
-
-    protected final void train_getLocale(Page page, Locale locale)
-    {
-        expect(page.getLocale()).andReturn(locale).atLeastOnce();
-    }
-
-    protected final void train_detached(Page page, boolean dirty)
-    {
-        expect(page.detached()).andReturn(dirty);
-    }
-
-    protected void train_forName(ComponentClassCache cache, String className, Class cachedClass)
-    {
-        expect(cache.forName(className)).andReturn(cachedClass).atLeastOnce();
-    }
-
-    protected void train_forName(ComponentClassCache cache, Class cachedClass)
-    {
-        train_forName(cache, cachedClass.getName(), cachedClass);
-    }
-
-    protected final ComponentClassCache mockComponentClassCache()
-    {
-        return newMock(ComponentClassCache.class);
-    }
-
-    protected void train_findContentType(PageContentTypeAnalyzer analyzer, Page page, ContentType contentType)
-    {
-        expect(analyzer.findContentType(page)).andReturn(contentType).atLeastOnce();
-    }
-
-    protected final PageContentTypeAnalyzer mockPageContentTypeAnalyzer()
-    {
-        return newMock(PageContentTypeAnalyzer.class);
-    }
-
-    protected final ActionRenderResponseGenerator mockActionRenderResponseGenerator()
-    {
-        return newMock(ActionRenderResponseGenerator.class);
-    }
-
-    protected final PageRenderQueue mockPageRenderQueue()
-    {
-        return newMock(PageRenderQueue.class);
-    }
-
-    protected final void train_getRenderingPage(PageRenderQueue queue, Page page)
-    {
-        expect(queue.getRenderingPage()).andReturn(page);
-    }
-
-    protected final ComponentPageElementResources mockComponentPageElementResources()
-    {
-        return newMock(ComponentPageElementResources.class);
-    }
-
-    protected final void train_toClass(ComponentPageElementResources resources, String className, Class toClass)
-    {
-        expect(resources.toClass(className)).andReturn(toClass).atLeastOnce();
-    }
-
-    protected final <S, T> void train_coerce(ComponentPageElementResources componentPageElementResources, S input,
-            Class<T> expectedType, T coercedValue)
-    {
-        expect(componentPageElementResources.coerce(input, expectedType)).andReturn(coercedValue);
-    }
-
-    protected final EventContext mockEventContext()
-    {
-        return newMock(EventContext.class);
-    }
-
-    protected final <T> void train_get(EventContext context, Class<T> type, int index, T value)
-    {
-        expect(context.get(type, index)).andReturn(value);
-    }
-
-    protected final void train_getCount(EventContext context, int count)
-    {
-        expect(context.getCount()).andReturn(count).atLeastOnce();
-    }
-
-    protected final void train_getPropertyAdapter(ClassPropertyAdapter classPropertyAdapter, String propertyName,
-            PropertyAdapter propertyAdapter)
-    {
-        expect(classPropertyAdapter.getPropertyAdapter(propertyName)).andReturn(propertyAdapter).atLeastOnce();
-    }
-
-    protected final void train_getAdapter(PropertyAccess access, Object object,
-            ClassPropertyAdapter classPropertyAdapter)
-    {
-        expect(access.getAdapter(object)).andReturn(classPropertyAdapter);
-    }
-
-    protected final RequestSecurityManager mockRequestSecurityManager()
-    {
-        return newMock(RequestSecurityManager.class);
-    }
-
-    protected final ClientBehaviorSupport mockClientBehaviorSupport()
-    {
-        return newMock(ClientBehaviorSupport.class);
-    }
-
-    protected final MutableComponentModel mockMutableComponentModel(Logger logger)
-    {
-        MutableComponentModel model = mockMutableComponentModel();
-        train_getLogger(model, logger);
-
-        return model;
-    }
-
-    protected final FieldComponent mockFieldComponent()
-    {
-        return newMock(FieldComponent.class);
-    }
-
-    protected final void train_setLocaleFromLocaleName(LocalizationSetter localizationSetter, String localeName,
-            boolean recognized)
-    {
-        expect(localizationSetter.setLocaleFromLocaleName(localeName)).andReturn(recognized);
-    }
-
-    protected final LocalizationSetter mockLocalizationSetter()
-    {
-        return newMock(LocalizationSetter.class);
-    }
-
-    protected final ComponentModelSource mockComponentModelSource()
-    {
-        return newMock(ComponentModelSource.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/PageTesterContextTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/PageTesterContextTest.java
deleted file mode 100644
index ec73e39..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/PageTesterContextTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-
-public class PageTesterContextTest extends Assert
-{
-    @Test
-    public void to_URL() throws IOException
-    {
-        PageTesterContext context = new PageTesterContext("src/test/app2");
-        URL resource = context.getResource("/OpaqueResource.txt");
-        InputStream stream = resource.openStream();
-        stream.close();
-    }
-
-    @Test
-    public void to_URL_no_file() throws IOException
-    {
-        PageTesterContext context = new PageTesterContext("src/test/app2");
-        URL resource = context.getResource("/NonExisting.txt");
-        assertNull(resource);
-    }
-
-    @Test
-    public void to_URL_is_dir() throws IOException
-    {
-        PageTesterContext context = new PageTesterContext("src/test");
-        URL resource = context.getResource("/app2");
-        assertNull(resource);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/PageTesterSessionTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/PageTesterSessionTest.java
deleted file mode 100644
index 4c63db7..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/PageTesterSessionTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.test;
-
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-
-public class PageTesterSessionTest extends Assert
-{
-    private PageTesterSession session;
-
-    @BeforeMethod
-    public void before()
-    {
-        session = new PageTesterSession();
-    }
-
-    @Test
-    public void empty()
-    {
-        assertEquals(session.getAttributeNames(), Collections.EMPTY_LIST);
-        assertNull(session.getAttribute("x"));
-    }
-
-    @Test
-    public void set_attributes()
-    {
-        session.setAttribute("b", 10);
-        session.setAttribute("a", 20);
-        assertEquals(session.getAttribute("a"), 20);
-        assertEquals(session.getAttribute("b"), 10);
-    }
-
-    @Test
-    public void remove_if_value_is_null()
-    {
-        session.setAttribute("b", 10);
-        session.setAttribute("a", 20);
-        assertEquals(session.getAttributeNames().size(), 2);
-        session.setAttribute("b", null);
-        assertEquals(session.getAttributeNames().size(), 1);
-    }
-
-    @Test
-    public void names_sorted()
-    {
-        session.setAttribute("b", 10);
-        session.setAttribute("a", 20);
-        session.setAttribute("c", 50);
-        assertEquals(session.getAttributeNames(), Arrays.asList("a", "b", "c"));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/TestableResponseImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/TestableResponseImplTest.java
deleted file mode 100644
index 9080d30..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/test/TestableResponseImplTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.test;
-
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.tapestry5.dom.Document;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.integration.app2.pages.TestPageForActionLinkWithStream;
-import org.apache.tapestry5.integration.app2.pages.TestPageForHttpError;
-import org.apache.tapestry5.integration.app2.pages.TestPageForHttpHeaders;
-import org.apache.tapestry5.integration.app2.pages.TestPageForRedirectURL;
-import org.apache.tapestry5.integration.app2.pages.TestPageForServletOutputStream;
-import org.apache.tapestry5.integration.pagelevel.TestConstants;
-import org.apache.tapestry5.test.PageTester;
-import org.testng.Assert;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class TestableResponseImplTest extends Assert
-{
-    private PageTester tester;
-    
-    @Test
-    public void servlet_output_stream()
-    {
-        TestableResponse response = tester.renderPageAndReturnResponse(TestPageForServletOutputStream.class.getSimpleName());
-        
-        assertEquals(response.getOutput(), "<html><body>Rendered with TextStreamResponse</body></html>");
-    }
-
-    @Test
-    public void http_headers()
-    {
-        Document document = tester.renderPage(TestPageForHttpHeaders.class.getSimpleName());
-        
-        assertTrue(document.toString().contains("Test page for HTTP headers"));
-        
-        TestableResponse response = tester.getService(TestableResponse.class);
-        
-        assertEquals(response.getHeader(TestPageForHttpHeaders.DATE_HEADER_NAME), 12345L);
-        assertEquals(response.getHeader(TestPageForHttpHeaders.INT_HEADER_NAME), 6789);
-        assertEquals(response.getHeader(TestPageForHttpHeaders.STRING_HEADER_NAME), "foo-bar-baz-barney");
-    }
-    
-    
-    @Test
-    public void http_error()
-    {
-        TestableResponse response = tester.renderPageAndReturnResponse(TestPageForHttpError.class.getSimpleName());
-        
-        assertEquals(response.getStatus(), HttpServletResponse.SC_MOVED_TEMPORARILY);
-        assertEquals(response.getErrorMessage(), "Oups! Resource moved. Try again later.");
-    }
-    
-    @Test
-    public void redirect_url()
-    {
-        TestableResponse response = tester.renderPageAndReturnResponse(TestPageForRedirectURL.class.getSimpleName());
-        
-        assertEquals(response.getRedirectURL(), TestPageForRedirectURL.REDIRECT_URL);
-    }
-    
-    @Test
-    public void action_link()
-    {
-        Document document = tester.renderPage(TestPageForActionLinkWithStream.class.getSimpleName());
-        
-        Element link = document.getElementById("mylink");
-        
-        assertNotNull(link);
-        
-        TestableResponse response = tester.clickLinkAndReturnResponse(link);
-        assertEquals(response.getOutput(), "<html><body>Rendered with TextStreamResponse</body></html>");
-    }
-    
-    @BeforeMethod
-    public void before()
-    {
-        tester = new PageTester(TestConstants.APP2_PACKAGE, TestConstants.APP2_NAME);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ApplicationStateWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ApplicationStateWorkerTest.java
deleted file mode 100644
index c5c06af..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/ApplicationStateWorkerTest.java
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2007, 2008, 2011 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import javassist.CtClass;
-import javassist.Loader;
-import javassist.LoaderClassPath;
-import javassist.NotFoundException;
-
-import org.apache.tapestry5.internal.InternalComponentResources;
-import org.apache.tapestry5.internal.services.ComponentClassCache;
-import org.apache.tapestry5.internal.services.Instantiator;
-import org.apache.tapestry5.internal.services.InternalClassTransformation;
-import org.apache.tapestry5.internal.services.InternalClassTransformationImpl;
-import org.apache.tapestry5.internal.services.InternalClassTransformationImplTest;
-import org.apache.tapestry5.internal.services.SimpleASO;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.internal.transform.pages.MaybeStateHolder;
-import org.apache.tapestry5.internal.transform.pages.StateHolder;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryClassPool;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.internal.services.PropertyAccessImpl;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ApplicationStateManager;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.Test;
-
-public class ApplicationStateWorkerTest extends InternalBaseTestCase
-{
-    private final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
-
-    private PropertyAccess access = new PropertyAccessImpl();
-
-    private ClassFactory classFactory;
-
-    private Loader loader;
-
-    private ClassFactoryClassPool classFactoryClassPool;
-
-    /**
-     * We need a new ClassPool for each individual test, since many of the tests will end up modifying one or more
-     * CtClass instances.
-     */
-    @BeforeMethod
-    public void setup_classpool()
-    {
-        // _classPool = new ClassPool();
-
-        classFactoryClassPool = new ClassFactoryClassPool(contextClassLoader);
-
-        loader = new TestPackageAwareLoader(contextClassLoader, classFactoryClassPool);
-
-        // Inside Maven Surefire, the system classpath is not sufficient to find all
-        // the necessary files.
-        classFactoryClassPool.appendClassPath(new LoaderClassPath(loader));
-
-        Logger logger = LoggerFactory.getLogger(InternalClassTransformationImplTest.class);
-
-        classFactory = new ClassFactoryImpl(loader, classFactoryClassPool, logger);
-    }
-
-    private CtClass findCtClass(Class targetClass) throws NotFoundException
-    {
-        return classFactoryClassPool.get(targetClass.getName());
-    }
-
-    private Class toClass(CtClass ctClass) throws Exception
-    {
-        return classFactoryClassPool.toClass(ctClass, loader, null);
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        access = null;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void field_read_and_write() throws Exception
-    {
-        ApplicationStateManager manager = mockApplicationStateManager();
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel();
-        InternalComponentResources resources = mockInternalComponentResources();
-        ComponentClassCache cache = mockComponentClassCache();
-
-        train_getLogger(model, logger);
-
-        Class asoClass = SimpleASO.class;
-
-        CtClass ctClass = findCtClass(StateHolder.class);
-
-        train_forName(cache, asoClass);
-
-        replay();
-
-        InternalClassTransformation transformation = new InternalClassTransformationImpl(classFactory, ctClass, null,
-                model, null, false);
-        new ApplicationStateWorker(manager, cache).transform(transformation, model);
-
-        verify();
-
-        transformation.finish();
-
-        Instantiator instantiator = transformation.createInstantiator();
-
-        Object component = instantiator.newInstance(resources);
-
-        // Test the companion flag field
-
-        expect(manager.exists(asoClass)).andReturn(true);
-
-        replay();
-
-        assertEquals(access.get(component, "beanExists"), true);
-
-        verify();
-
-        // Test read property (get from ASM)
-
-        Object aso = new SimpleASO();
-
-        train_get(manager, asoClass, aso);
-
-        replay();
-
-        assertSame(access.get(component, "bean"), aso);
-
-        verify();
-
-        // Test write property (set ASM)
-
-        Object aso2 = new SimpleASO();
-
-        manager.set(asoClass, aso2);
-
-        replay();
-
-        access.set(component, "bean", aso2);
-
-        verify();
-    }
-
-    @Test
-    public void read_field_with_create_disabled() throws Exception
-    {
-        ApplicationStateManager manager = mockApplicationStateManager();
-        Logger logger = mockLogger();
-        MutableComponentModel model = mockMutableComponentModel();
-        InternalComponentResources resources = mockInternalComponentResources();
-        ComponentClassCache cache = mockComponentClassCache();
-
-        train_getLogger(model, logger);
-
-        Class asoClass = SimpleASO.class;
-
-        CtClass ctClass = findCtClass(MaybeStateHolder.class);
-
-        train_forName(cache, asoClass);
-
-        replay();
-
-        InternalClassTransformation transformation = new InternalClassTransformationImpl(classFactory, ctClass, null,
-                model, null, false);
-        new ApplicationStateWorker(manager, cache).transform(transformation, model);
-
-        verify();
-
-        transformation.finish();
-
-        Instantiator instantiator = transformation.createInstantiator();
-
-        Object component = instantiator.newInstance(resources);
-
-        // Test read property
-
-        train_getIfExists(manager, asoClass, null);
-
-        replay();
-
-        assertNull(access.get(component, "bean"));
-
-        verify();
-
-        Object aso = new SimpleASO();
-
-        train_getIfExists(manager, asoClass, aso);
-
-        replay();
-
-        assertSame(access.get(component, "bean"), aso);
-
-        verify();
-    }
-
-    protected final void train_getIfExists(ApplicationStateManager manager, Class asoClass, Object aso)
-    {
-        expect(manager.getIfExists(asoClass)).andReturn(aso);
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/FieldRemoval.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/FieldRemoval.java
deleted file mode 100644
index 8a2826e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/FieldRemoval.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-public class FieldRemoval
-{
-    @SuppressWarnings("unused")
-    private int _fieldToRemove;
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/HeartbeatDeferredWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/HeartbeatDeferredWorkerTest.java
deleted file mode 100644
index 49bb1a4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/HeartbeatDeferredWorkerTest.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.services.TransformMethod;
-import org.apache.tapestry5.services.TransformMethodSignature;
-import org.testng.annotations.Test;
-
-public class HeartbeatDeferredWorkerTest extends InternalBaseTestCase
-{
-    private final HeartbeatDeferredWorker worker = new HeartbeatDeferredWorker(null);
-
-    @Test
-    public void non_void_method_will_fail()
-    {
-        testFailure(new TransformMethodSignature(Modifier.PUBLIC, "java.lang.String", "shouldReturnVoid", null, null),
-                "as it is not a void method");
-    }
-
-    @Test
-    public void checked_exceptions_will_fail()
-    {
-        testFailure(new TransformMethodSignature(Modifier.PUBLIC, "void", "noCheckedExceptions", null, new String[]
-        { "java.lang.Exception" }), "as it throws checked exceptions");
-    }
-
-    private void testFailure(TransformMethodSignature transformMethodSignature, String messageFragment)
-    {
-        TransformMethod method = newMock(TransformMethod.class);
-
-        expect(method.getSignature()).andReturn(transformMethodSignature).atLeastOnce();
-
-        expect(method.getMethodIdentifier()).andReturn("<MethodId>");
-
-        replay();
-
-        try
-        {
-            worker.deferMethodInvocations(method);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, messageFragment);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InheritedAnnotation.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InheritedAnnotation.java
deleted file mode 100644
index 57bb5ba..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InheritedAnnotation.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-@Target(TYPE)
-@Retention(RUNTIME)
-@Documented
-@Inherited
-public @interface InheritedAnnotation
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InjectWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InjectWorkerTest.java
deleted file mode 100644
index 67eb355..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/InjectWorkerTest.java
+++ /dev/null
@@ -1,132 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.QuietOperationTracker;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.InjectionProvider;
-import org.apache.tapestry5.services.Request;
-import org.testng.annotations.Test;
-
-public class InjectWorkerTest extends InternalBaseTestCase
-{
-    private static final String REQUEST_CLASS_NAME = Request.class.getName();
-
-    @Test
-    public void anonymous_injection()
-    {
-        ObjectLocator locator = mockObjectLocator();
-        InjectionProvider ip = newMock(InjectionProvider.class);
-        Inject annotation = newInject();
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-
-        train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
-        train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
-        train_getFieldType(ct, "myfield", REQUEST_CLASS_NAME);
-        train_toClass(ct, REQUEST_CLASS_NAME, Request.class);
-
-        train_provideInjection(ip, "myfield", Request.class, locator, ct, model, true);
-
-        ct.claimField("myfield", annotation);
-
-        replay();
-
-        ComponentClassTransformWorker worker = new InjectWorker(locator, ip, new QuietOperationTracker());
-
-        worker.transform(ct, model);
-
-        verify();
-    }
-
-    @Test
-    public void anonymous_injection_not_provided()
-    {
-        ObjectLocator locator = mockObjectLocator();
-        InjectionProvider ip = newMock(InjectionProvider.class);
-        Inject annotation = newInject();
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-
-        train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
-        train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
-        train_getFieldType(ct, "myfield", REQUEST_CLASS_NAME);
-        train_toClass(ct, REQUEST_CLASS_NAME, Request.class);
-
-        train_provideInjection(ip, "myfield", Request.class, locator, ct, model, false);
-
-        replay();
-
-        ComponentClassTransformWorker worker = new InjectWorker(locator, ip, new QuietOperationTracker());
-
-        // Does the work but doesn't claim the field, since there was no match.
-
-        worker.transform(ct, model);
-
-        verify();
-    }
-
-    @Test
-    public void injection_provider_threw_exception()
-    {
-        ObjectLocator locator = mockObjectLocator();
-        InjectionProvider ip = newMock(InjectionProvider.class);
-        Inject annotation = newInject();
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-        RuntimeException failure = new RuntimeException("Oops.");
-
-        train_findFieldsWithAnnotation(ct, Inject.class, "myfield");
-        train_getFieldAnnotation(ct, "myfield", Inject.class, annotation);
-
-        train_getFieldType(ct, "myfield", REQUEST_CLASS_NAME);
-        train_toClass(ct, REQUEST_CLASS_NAME, Request.class);
-
-        expect(ip.provideInjection("myfield", Request.class, locator, ct, model)).andThrow(failure);
-
-        train_getClassName(ct, "foo.bar.Baz");
-
-        replay();
-
-        ComponentClassTransformWorker worker = new InjectWorker(locator, ip, new QuietOperationTracker());
-
-        try
-        {
-            worker.transform(ct, model);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Error obtaining injected value for field foo.bar.Baz.myfield: Oops.");
-            assertSame(ex.getCause(), failure);
-        }
-
-        verify();
-    }
-
-    protected final Inject newInject()
-    {
-        return newMock(Inject.class);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/MixinAfterWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/MixinAfterWorkerTest.java
deleted file mode 100644
index 6d86139..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/MixinAfterWorkerTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.MixinAfter;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.testng.annotations.Test;
-
-public class MixinAfterWorkerTest extends InternalBaseTestCase
-{
-    @Test
-    public void annotation_not_present()
-    {
-        ClassTransformation transformation = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-
-        train_getAnnotation(transformation, MixinAfter.class, null);
-
-        replay();
-
-        new MixinAfterWorker().transform(transformation, model);
-
-        verify();
-    }
-
-    @Test
-    public void annotation_present()
-    {
-        ClassTransformation transformation = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-        MixinAfter annotation = newMock(MixinAfter.class);
-
-        train_getAnnotation(transformation, MixinAfter.class, annotation);
-        model.setMixinAfter(true);
-
-        replay();
-
-        new MixinAfterWorker().transform(transformation, model);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/RetainWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/RetainWorkerTest.java
deleted file mode 100644
index 650e22b..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/RetainWorkerTest.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.testng.annotations.Test;
-
-public class RetainWorkerTest extends InternalBaseTestCase
-{
-    @Test
-    public void no_fields()
-    {
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-
-        train_findFieldsWithAnnotation(ct, Retain.class);
-
-        replay();
-
-        RetainWorker worker = new RetainWorker();
-
-        worker.transform(ct, model);
-
-        verify();
-    }
-
-    @Test
-    public void normal()
-    {
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-        Retain annotation = newMock(Retain.class);
-
-        train_findFieldsWithAnnotation(ct, Retain.class, "fred");
-
-        train_getFieldAnnotation(ct, "fred", Retain.class, annotation);
-
-        ct.claimField("fred", annotation);
-
-        replay();
-
-        RetainWorker worker = new RetainWorker();
-
-        worker.transform(ct, model);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/SupportsInformalParametersWorkerTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/SupportsInformalParametersWorkerTest.java
deleted file mode 100644
index adc74d0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/SupportsInformalParametersWorkerTest.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import org.apache.tapestry5.annotations.SupportsInformalParameters;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.testng.annotations.Test;
-
-public class SupportsInformalParametersWorkerTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void annotation_present()
-    {
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-        SupportsInformalParameters annotation = newMock(SupportsInformalParameters.class);
-
-        train_getAnnotation(ct, SupportsInformalParameters.class, annotation);
-        model.enableSupportsInformalParameters();
-
-        replay();
-
-        new SupportsInformalParametersWorker().transform(ct, model);
-
-        verify();
-    }
-
-    @Test
-    public void annotation_missing()
-    {
-        ClassTransformation ct = mockClassTransformation();
-        MutableComponentModel model = mockMutableComponentModel();
-
-        train_getAnnotation(ct, SupportsInformalParameters.class, null);
-
-        replay();
-
-        new SupportsInformalParametersWorker().transform(ct, model);
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/TestPackageAwareLoader.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/TestPackageAwareLoader.java
deleted file mode 100644
index 29526cc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/TestPackageAwareLoader.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform;
-
-import javassist.ClassPool;
-import javassist.Loader;
-
-public class TestPackageAwareLoader extends Loader
-{
-    public TestPackageAwareLoader(ClassLoader parent, ClassPool cp)
-    {
-        super(parent, cp);
-    }
-
-    @Override
-    public Class findClass(String className) throws ClassNotFoundException
-    {
-        int lastdotx = className.lastIndexOf('.');
-        String packageName = className.substring(0, lastdotx);
-
-        if (packageName.startsWith("org.apache.tapestry5.internal.transform.")) return super.findClass(className);
-
-        // Returning null forces delegation to the parent class loader.
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/components/DefaultParameterComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/components/DefaultParameterComponent.java
deleted file mode 100644
index af6ae57..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/components/DefaultParameterComponent.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.components;
-
-import org.apache.tapestry5.annotations.Parameter;
-
-/**
- * Used by {@link org.apache.tapestry5.internal.transform.ParameterWorkerTest}.
- */
-public class DefaultParameterComponent
-{
-    @Parameter("literal:greeting")
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/components/ParameterComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/components/ParameterComponent.java
deleted file mode 100644
index 1b4eef9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/components/ParameterComponent.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.components;
-
-import org.apache.tapestry5.BindingConstants;
-import org.apache.tapestry5.annotations.Parameter;
-
-/**
- * Used by {@link org.apache.tapestry5.internal.transform.ParameterWorkerTest}.
- */
-public class ParameterComponent
-{
-    @Parameter
-    private String object;
-
-    @Parameter(cache = false, name = "uncached", defaultPrefix = BindingConstants.LITERAL)
-    private String uncachedObject;
-
-    @Parameter(required = true)
-    private int primitive;
-
-    @Parameter
-    private String invariantObject;
-
-    @Parameter
-    private long invariantPrimitive;
-
-    public String getObject()
-    {
-        return object;
-    }
-
-    public void setObject(String object)
-    {
-        this.object = object;
-    }
-
-    public int getPrimitive()
-    {
-        return primitive;
-    }
-
-    public void setPrimitive(int primitive)
-    {
-        this.primitive = primitive;
-    }
-
-    public String getUncachedObject()
-    {
-        return uncachedObject;
-    }
-
-    public void setUncachedObject(String uncachedObject)
-    {
-        this.uncachedObject = uncachedObject;
-    }
-
-    public String getInvariantObject()
-    {
-        return invariantObject;
-    }
-
-    public void setInvariantObject(String invariantObject)
-    {
-        this.invariantObject = invariantObject;
-    }
-
-    public long getInvariantPrimitive()
-    {
-        return invariantPrimitive;
-    }
-
-    public void setInvariantPrimitive(long invariantPrimitive)
-    {
-        this.invariantPrimitive = invariantPrimitive;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/AbstractFoo.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/AbstractFoo.java
deleted file mode 100644
index 67ce832..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/AbstractFoo.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.internal.services.FooInterface;
-
-public abstract class AbstractFoo implements FooInterface
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BarImpl.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BarImpl.java
deleted file mode 100644
index 3175e04..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BarImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.internal.services.BarInterface;
-
-public class BarImpl extends FooImpl implements BarInterface
-{
-
-    public void bar()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BasicComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BasicComponent.java
deleted file mode 100644
index 111d7a4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BasicComponent.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.annotations.Retain;
-
-/**
- * Used to test retained vs. discard properties.
- */
-public class BasicComponent
-{
-    private String value;
-
-    @Retain
-    private String retainedValue;
-
-    public final String getRetainedValue()
-    {
-        return retainedValue;
-    }
-
-    public final void setRetainedValue(String retainedValue)
-    {
-        this.retainedValue = retainedValue;
-    }
-
-    public final String getValue()
-    {
-        return value;
-    }
-
-    public final void setValue(String value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BasicSubComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BasicSubComponent.java
deleted file mode 100644
index 9900553..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/BasicSubComponent.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-/**  */
-public class BasicSubComponent extends BasicComponent
-{
-    private int intValue;
-
-    public final int getIntValue()
-    {
-        return intValue;
-    }
-
-    public final void setIntValue(int intValue)
-    {
-        this.intValue = intValue;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ChildClassInheritsAnnotation.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ChildClassInheritsAnnotation.java
deleted file mode 100644
index 3df1693..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ChildClassInheritsAnnotation.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-/**
- * Used to check that Javassist does make child classes inherit class annotations.
- */
-public class ChildClassInheritsAnnotation extends ParentClass
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ClaimedFields.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ClaimedFields.java
deleted file mode 100644
index 67149fc..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ClaimedFields.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-public class ClaimedFields
-{
-    // Make sure results are sorted by putting this first
-    // but expecting them last.
-
-    private int _zzfield;
-
-    private int _field1;
-
-    private String _field4;
-
-    public final int getField1()
-    {
-        return _field1;
-    }
-
-    public final void setField1(int field1)
-    {
-        _field1 = field1;
-    }
-
-    public final String getField4()
-    {
-        return _field4;
-    }
-
-    public final void setField4(String field4)
-    {
-        _field4 = field4;
-    }
-
-    public final int getZzfield()
-    {
-        return _zzfield;
-    }
-
-    public final void setZzfield(int zzfield)
-    {
-        _zzfield = zzfield;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/EventHandlerTarget.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/EventHandlerTarget.java
deleted file mode 100644
index 7eb6224..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/EventHandlerTarget.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-
-public class EventHandlerTarget
-{
-    @OnEvent(value = "fred", component = "alpha")
-    public void handler()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/FieldAccessBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/FieldAccessBean.java
deleted file mode 100644
index 6d66021..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/FieldAccessBean.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-public class FieldAccessBean
-{
-    private String _foo;
-
-    private String _bar;
-
-    public String getBar()
-    {
-        return _bar;
-    }
-
-    public void setBar(String bar)
-    {
-        _bar = bar;
-    }
-
-    public String getFoo()
-    {
-        return _foo;
-    }
-
-    public void setFoo(String foo)
-    {
-        _foo = foo;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/FooImpl.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/FooImpl.java
deleted file mode 100644
index 8f0bb84..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/FooImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.internal.services.FooInterface;
-
-public class FooImpl implements FooInterface
-{
-
-    public void foo()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java
deleted file mode 100644
index 7b4a72c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MaybeStateHolder.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.internal.services.SimpleASO;
-
-public class MaybeStateHolder
-{
-    @ApplicationState(create = false)
-    private SimpleASO bean;
-
-
-    public SimpleASO getBean()
-    {
-        return bean;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodAccessSubject.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodAccessSubject.java
deleted file mode 100644
index 48cde37..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodAccessSubject.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import java.sql.SQLException;
-
-import org.apache.tapestry5.internal.services.InternalClassTransformationImplTest;
-
-/**
- * Used by {@link InternalClassTransformationImplTest} for a number of tests related to
- * method access.
- */
-public class MethodAccessSubject
-{
-    private String marker;
-
-    public String getMarker()
-    {
-        return marker;
-    }
-
-    protected void protectedVoidNoArgs()
-    {
-        marker = "protectedVoidNoArgs";
-    }
-
-    public void publicVoidNoArgsFail()
-    {
-        marker = "publicVoidNoArgsFail";
-
-        throw new RuntimeException("Fail inside pvnoaf.");
-    }
-
-    public int incrementer(int input)
-    {
-        marker = "incrementer(" + input + ")";
-
-        return input + 1;
-    }
-
-    public void publicVoidThrowsException() throws SQLException
-    {
-        marker = "publicVoidThrowsException";
-
-        throw new SQLException("From publicVoidThrowsException()");
-    }
-
-    @SuppressWarnings("unused")
-    private String privateMethod(String input, int count)
-    {
-        marker = "privateMethod";
-
-        StringBuilder builder = new StringBuilder();
-
-        for (int i = 0; i < count; i++)
-            builder.append(input);
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodIdentifier.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodIdentifier.java
deleted file mode 100644
index 9ce7597..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodIdentifier.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.annotations.OnEvent;
-
-public class MethodIdentifier
-{
-    @OnEvent
-    String makeWaves(String argument1, int[] argument2)
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodPrefixTarget.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodPrefixTarget.java
deleted file mode 100644
index af06785..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/MethodPrefixTarget.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-public class MethodPrefixTarget
-{
-    // If this is final, then the read is inlined, defeating the test.
-    private int _targetField = 42;
-
-    public int getTargetValue()
-    {
-        return _targetField;
-    }
-
-    // Again, necessary to defeat inlining of the value.
-    public void setTargetField(int value)
-    {
-        _targetField = value;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ParentClass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ParentClass.java
deleted file mode 100644
index c260704..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ParentClass.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.annotations.Meta;
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.internal.transform.InheritedAnnotation;
-
-/**
- * Test class used with {@link org.apache.tapestry5.internal.services.InternalClassTransformationImplTest}
- */
-@Meta("foo=bar")
-@InheritedAnnotation
-public class ParentClass
-{
-    private int _parentField;
-
-    // Named so that we can force a name conflict
-
-    private String _$conflictField;
-
-    @Retain
-    private boolean _annotatedField;
-
-    public void doNothingParentMethod()
-    {
-
-    }
-
-    public void _$conflictMethod()
-    {
-
-    }
-
-    public String get$conflictField()
-    {
-        return _$conflictField;
-    }
-
-    public void set$conflictField(String field)
-    {
-        _$conflictField = field;
-    }
-
-    public boolean isAnnotatedField()
-    {
-        return _annotatedField;
-    }
-
-    public void setAnnotatedField(boolean annotatedField)
-    {
-        _annotatedField = annotatedField;
-    }
-
-    public int getParentField()
-    {
-        return _parentField;
-    }
-
-    public void setParentField(int parentField)
-    {
-        _parentField = parentField;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ReadOnlyBean.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ReadOnlyBean.java
deleted file mode 100644
index e80399c..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/ReadOnlyBean.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-public class ReadOnlyBean
-{
-    private String _value;
-
-    public String getValue()
-    {
-        return _value;
-    }
-
-    public void setValue(String value)
-    {
-        _value = value;
-    }
-
-    public String getReadOnly()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java
deleted file mode 100644
index 463f849..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/StateHolder.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-import org.apache.tapestry5.annotations.ApplicationState;
-import org.apache.tapestry5.internal.services.SimpleASO;
-
-public class StateHolder
-{
-    @ApplicationState
-    private SimpleASO bean;
-
-    private boolean beanExists;
-
-    public SimpleASO getBean()
-    {
-        return bean;
-    }
-
-    public void setBean(SimpleASO bean)
-    {
-        this.bean = bean;
-    }
-
-    public boolean getBeanExists()
-    {
-        return beanExists;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/TargetObject.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/TargetObject.java
deleted file mode 100644
index cce65a9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/TargetObject.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-/**
- * An empty object to which fields, methods and interfaces are added.
- */
-public class TargetObject
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/TargetObjectSubclass.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/TargetObjectSubclass.java
deleted file mode 100644
index 003e852..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/transform/pages/TargetObjectSubclass.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.transform.pages;
-
-/**
- * A subclass for TargetObject, used to check that values can be inherited from a base class.
- */
-public class TargetObjectSubclass extends TargetObject
-{
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/AutofocusValidationDecoratorTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/AutofocusValidationDecoratorTest.java
deleted file mode 100644
index caf66c0..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/AutofocusValidationDecoratorTest.java
+++ /dev/null
@@ -1,130 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.FieldFocusPriority;
-import org.apache.tapestry5.ValidationDecorator;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.services.javascript.JavaScriptSupport;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class AutofocusValidationDecoratorTest extends TapestryTestCase
-{
-    @Test
-    public void field_is_disabled()
-    {
-        Field field = mockField();
-        ValidationDecorator delegate = mockValidationDecorator();
-        ValidationTracker tracker = mockValidationTracker();
-        JavaScriptSupport jsSupport = mockJavaScriptSupport();
-
-        delegate.insideField(field);
-
-        train_isDisabled(field, true);
-
-        replay();
-
-        ValidationDecorator decorator = new AutofocusValidationDecorator(delegate, tracker, jsSupport);
-
-        decorator.insideField(field);
-
-        verify();
-    }
-
-    @Test
-    public void field_is_in_error()
-    {
-        Field field = mockField();
-        ValidationDecorator delegate = mockValidationDecorator();
-        ValidationTracker tracker = mockValidationTracker();
-        JavaScriptSupport jsSupport = mockJavaScriptSupport();
-
-        delegate.insideField(field);
-
-        train_isDisabled(field, false);
-        train_inError(tracker, field, true);
-
-        train_getClientId(field, "foo");
-
-        jsSupport.autofocus(FieldFocusPriority.IN_ERROR, "foo");
-
-        replay();
-
-        ValidationDecorator decorator = new AutofocusValidationDecorator(delegate, tracker, jsSupport);
-
-        decorator.insideField(field);
-
-        verify();
-    }
-
-    @Test
-    public void field_is_required()
-    {
-        Field field = mockField();
-        ValidationDecorator delegate = mockValidationDecorator();
-        ValidationTracker tracker = mockValidationTracker();
-        JavaScriptSupport jsSupport = mockJavaScriptSupport();
-
-        delegate.insideField(field);
-
-        train_isDisabled(field, false);
-        train_inError(tracker, field, false);
-
-        train_isRequired(field, true);
-
-        train_getClientId(field, "foo");
-
-        jsSupport.autofocus(FieldFocusPriority.REQUIRED, "foo");
-
-        replay();
-
-        ValidationDecorator decorator = new AutofocusValidationDecorator(delegate, tracker, jsSupport);
-
-        decorator.insideField(field);
-
-        verify();
-    }
-
-    @Test
-    public void field_is_optional()
-    {
-        Field field = mockField();
-        ValidationDecorator delegate = mockValidationDecorator();
-        ValidationTracker tracker = mockValidationTracker();
-        JavaScriptSupport jsSupport = mockJavaScriptSupport();
-
-        delegate.insideField(field);
-
-        train_isDisabled(field, false);
-        train_inError(tracker, field, false);
-
-        train_isRequired(field, false);
-
-        train_getClientId(field, "foo");
-
-        jsSupport.autofocus(FieldFocusPriority.OPTIONAL, "foo");
-
-        replay();
-
-        ValidationDecorator decorator = new AutofocusValidationDecorator(delegate, tracker, jsSupport);
-
-        decorator.insideField(field);
-
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/IntegerRangeTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/IntegerRangeTest.java
deleted file mode 100644
index a36e788..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/IntegerRangeTest.java
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Iterator;
-
-public class IntegerRangeTest extends Assert
-{
-    @Test
-    public void start_less_than_finish()
-    {
-        IntegerRange r = new IntegerRange(1, 3);
-
-        assertEquals(r.toString(), "1..3");
-
-        assertEquals(r.getStart(), 1);
-        assertEquals(r.getFinish(), 3);
-
-        Iterator<Integer> i = r.iterator();
-
-        assertEquals(i.next().intValue(), 1);
-        assertEquals(i.next().intValue(), 2);
-
-        assertTrue(i.hasNext());
-
-        assertEquals(i.next().intValue(), 3);
-
-        assertFalse(i.hasNext());
-
-        try
-        {
-            i.next();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-        }
-    }
-
-    @Test
-    public void start_same_as_finish()
-    {
-        IntegerRange r = new IntegerRange(3, 3);
-
-        Iterator<Integer> i = r.iterator();
-
-        assertTrue(i.hasNext());
-
-        assertEquals(i.next().intValue(), 3);
-
-        assertFalse(i.hasNext());
-    }
-
-    @Test
-    public void finish_less_than_start()
-    {
-        IntegerRange r = new IntegerRange(3, 1);
-
-        assertEquals(r.toString(), "3..1");
-
-        Iterator<Integer> i = r.iterator();
-
-        assertEquals(i.next().intValue(), 3);
-        assertEquals(i.next().intValue(), 2);
-
-        assertTrue(i.hasNext());
-
-        assertEquals(i.next().intValue(), 1);
-
-        assertFalse(i.hasNext());
-
-        try
-        {
-            i.next();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-        }
-    }
-
-    @Test
-    public void hash_code_and_equals()
-    {
-        IntegerRange r1 = new IntegerRange(1, 100);
-        IntegerRange r2 = new IntegerRange(1, 100);
-        IntegerRange r3 = new IntegerRange(1, 10);
-
-        assertEquals(r1.hashCode(), r2.hashCode());
-        assertFalse(r1.hashCode() == r3.hashCode());
-
-        assertTrue(r1.equals(r1));
-        assertEquals(r1, r2);
-
-        assertFalse(r1.equals(r3));
-        assertFalse(r1.equals(this));
-        assertFalse(r1.equals(null));
-        assertFalse(r1.equals(new IntegerRange(3, 30)));
-    }
-
-    @Test
-    public void iterator_remove_not_supported()
-    {
-        IntegerRange r = new IntegerRange(1, 3);
-
-        Iterator<Integer> i = r.iterator();
-
-        assertEquals(i.next(), new Integer(1));
-
-        try
-        {
-            i.remove();
-            unreachable();
-        }
-        catch (UnsupportedOperationException ex)
-        {
-            // Expected, ignored.
-        }
-
-        assertEquals(i.next(), new Integer(2));
-    }
-
-    private final void unreachable()
-    {
-        throw new AssertionError("This code should be unreachable.");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/LocaleUtilsTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/LocaleUtilsTest.java
deleted file mode 100644
index d13b7b8..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/LocaleUtilsTest.java
+++ /dev/null
@@ -1,240 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import junit.framework.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-/**
- * This, too, was adapted from commons-lang code.  Could be cleaned up a bit to better take advantage of TestNG.
- */
-@SuppressWarnings({ "EmptyCatchBlock" })
-public class LocaleUtilsTest extends Assert
-{
-    /**
-     * Pass in a valid language, test toLocale.
-     *
-     * @param language the language string
-     */
-    private void assertValidToLocale(String language)
-    {
-        Locale locale = LocaleUtils.toLocale(language);
-        assertNotNull("valid locale", locale);
-        assertEquals(language, locale.getLanguage());
-        //country and variant are empty
-        assertTrue(locale.getCountry() == null || locale.getCountry().length() == 0);
-        assertTrue(locale.getVariant() == null || locale.getVariant().length() == 0);
-    }
-
-    /**
-     * Pass in a valid language, test toLocale.
-     *
-     * @param localeString to pass to toLocale()
-     * @param language     of the resulting Locale
-     * @param country      of the resulting Locale
-     */
-    private void assertValidToLocale(String localeString, String language, String country)
-    {
-        Locale locale = LocaleUtils.toLocale(localeString);
-        assertNotNull("valid locale", locale);
-        assertEquals(language, locale.getLanguage());
-        assertEquals(country, locale.getCountry());
-        //variant is empty
-        assertTrue(locale.getVariant() == null || locale.getVariant().length() == 0);
-    }
-
-    /**
-     * Pass in a valid language, test toLocale.
-     *
-     * @param localeString to pass to toLocale()
-     * @param language     of the resulting Locale
-     * @param country      of the resulting Locale
-     * @param variant      of the resulting Locale
-     */
-    private void assertValidToLocale(
-            String localeString, String language,
-            String country, String variant)
-    {
-        Locale locale = LocaleUtils.toLocale(localeString);
-        assertNotNull("valid locale", locale);
-        assertEquals(language, locale.getLanguage());
-        assertEquals(country, locale.getCountry());
-        assertEquals(variant, locale.getVariant());
-
-    }
-
-    @Test
-    public void toLocale_just_language()
-    {
-        assertEquals(null, LocaleUtils.toLocale(null));
-
-        assertValidToLocale("us");
-        assertValidToLocale("fr");
-        assertValidToLocale("de");
-        assertValidToLocale("zh");
-        // Valid format but lang doesnt exist, should make instance anyway
-        assertValidToLocale("qq");
-
-        try
-        {
-            LocaleUtils.toLocale("Us");
-            fail("Should fail if not lowercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("US");
-            fail("Should fail if not lowercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("uS");
-            fail("Should fail if not lowercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("u#");
-            fail("Should fail if not lowercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-
-        try
-        {
-            LocaleUtils.toLocale("u");
-            fail("Must be 2 chars if less than 5");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-
-        try
-        {
-            LocaleUtils.toLocale("uuu");
-            fail("Must be 2 chars if less than 5");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-
-        try
-        {
-            LocaleUtils.toLocale("uu_U");
-            fail("Must be 2 chars if less than 5");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-    }
-
-
-    @Test
-    public void toLocale_language_and_country()
-    {
-        assertValidToLocale("us_EN", "us", "EN");
-        //valid though doesnt exist
-        assertValidToLocale("us_ZH", "us", "ZH");
-
-        try
-        {
-            LocaleUtils.toLocale("us-EN");
-            fail("Should fail as not underscore");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("us_En");
-            fail("Should fail second part not uppercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("us_en");
-            fail("Should fail second part not uppercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("us_eN");
-            fail("Should fail second part not uppercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("uS_EN");
-            fail("Should fail first part not lowercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("us_E3");
-            fail("Should fail second part not uppercase");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-    }
-
-    /**
-     * Test toLocale() method.
-     */
-    @Test
-    public void toLocale_with_variant()
-    {
-        assertValidToLocale("us_EN_A", "us", "EN", "A");
-
-        assertValidToLocale("us_EN_a", "us", "EN", "a");
-        assertValidToLocale("us_EN_SFsafdFDsdfF", "us", "EN", "SFsafdFDsdfF");
-
-        try
-        {
-            LocaleUtils.toLocale("us_EN-a");
-            fail("Should fail as not underscore");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-        try
-        {
-            LocaleUtils.toLocale("uu_UU_");
-            fail("Must be 3, 5 or 7+ in length");
-        }
-        catch (IllegalArgumentException iae)
-        {
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/MethodInvocationBuilderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/MethodInvocationBuilderTest.java
deleted file mode 100644
index 40b7733..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/MethodInvocationBuilderTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.services.ClassTransformation;
-import org.apache.tapestry5.services.TransformMethodSignature;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Modifier;
-
-public class MethodInvocationBuilderTest extends TapestryTestCase
-{
-    private static final String LOCALE_CLASS_NAME = "java.util.Locale";
-
-    private static final String MARKUP_WRITER_CLASS_NAME = MarkupWriter.class.getName();
-
-    @Test
-    public void known_parameter_type()
-    {
-        ClassTransformation transformation = mockClassTransformation();
-
-        replay();
-
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "void", "myMethod",
-                                                                    new String[] { MARKUP_WRITER_CLASS_NAME }, null);
-
-        MethodInvocationBuilder invoker = new MethodInvocationBuilder();
-
-        invoker.addParameter(MARKUP_WRITER_CLASS_NAME, "$1");
-
-        assertEquals(invoker.buildMethodInvocation(sig, transformation), "myMethod($1)");
-
-        verify();
-    }
-
-    @Test
-    public void unknown_parameter_type()
-    {
-        ClassTransformation transformation = mockClassTransformation();
-
-        replay();
-
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "void", "myMethod",
-                                                                    new String[] { MARKUP_WRITER_CLASS_NAME }, null);
-
-        MethodInvocationBuilder invoker = new MethodInvocationBuilder();
-
-        assertEquals(invoker.buildMethodInvocation(sig, transformation), "myMethod(null)");
-
-        verify();
-    }
-
-    @Test
-    public void multiple_parameters_for_method()
-    {
-        ClassTransformation transformation = mockClassTransformation();
-
-        replay();
-
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "void", "myMethod", new String[] {
-                MARKUP_WRITER_CLASS_NAME, LOCALE_CLASS_NAME }, null);
-
-        MethodInvocationBuilder invoker = new MethodInvocationBuilder();
-
-        invoker.addParameter(MARKUP_WRITER_CLASS_NAME, "$1");
-        invoker.addParameter(LOCALE_CLASS_NAME, "$2");
-
-        assertEquals(invoker.buildMethodInvocation(sig, transformation), "myMethod($1, $2)");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/MultiKeyTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/MultiKeyTest.java
deleted file mode 100644
index d1d9322..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/MultiKeyTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class MultiKeyTest extends Assert
-{
-    @Test
-    public void same_values_same_hash_codes()
-    {
-        MultiKey key1 = new MultiKey(1, 3, "foo");
-        MultiKey key2 = new MultiKey(1, 3, "foo");
-        MultiKey key3 = new MultiKey(1, 3);
-        MultiKey key4 = new MultiKey(1, 3, "bar");
-        MultiKey key5 = new MultiKey(1, 3, "foo", "bar");
-
-        assertEquals(key2.hashCode(), key1.hashCode());
-        assertFalse(key3.hashCode() == key1.hashCode());
-        assertFalse(key4.hashCode() == key1.hashCode());
-        assertFalse(key5.hashCode() == key1.hashCode());
-    }
-
-    @Test
-    public void comparisons_against_not_multi_key()
-    {
-        MultiKey key = new MultiKey(1, 3, "foo");
-
-        assertFalse(key.equals(null));
-        assertFalse(key.equals("foo"));
-    }
-
-    @Test
-    public void comparison_against_self()
-    {
-        MultiKey key = new MultiKey(1, 3, "foo");
-
-        assertTrue(key.equals(key));
-    }
-
-    @Test
-    public void comparisons_against_other_keys()
-    {
-        MultiKey key1 = new MultiKey(1, 3, "foo");
-        MultiKey key2 = new MultiKey(1, 3, "foo");
-        MultiKey key3 = new MultiKey(1, 3);
-        MultiKey key4 = new MultiKey(1, 3, "bar");
-        MultiKey key5 = new MultiKey(1, 3, "foo", "bar");
-
-        assertEquals(key2, key1);
-        assertFalse(key3.equals(key1));
-        assertFalse(key4.equals(key1));
-        assertFalse(key5.equals(key1));
-    }
-
-    @Test
-    public void to_string()
-    {
-        assertEquals(new MultiKey("fred").toString(), "MultiKey[fred]");
-        assertEquals(new MultiKey("fred", "barney").toString(), "MultiKey[fred, barney]");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/NotificationEventCallbackTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/NotificationEventCallbackTest.java
deleted file mode 100644
index 47b4c4e..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/NotificationEventCallbackTest.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.runtime.Component;
-import org.testng.annotations.Test;
-
-public class NotificationEventCallbackTest extends InternalBaseTestCase
-{
-    private static final String EVENT_TYPE = "myEventType";
-
-    private static final String COMPLETE_ID = "foo.bar.baz";
-
-    private static final String METHOD = "foo.components.Baz.bar()";
-
-    @Test
-    public void true_is_allowed()
-    {
-        Component component = mockComponent();
-
-        replay();
-
-        NotificationEventCallback callback = new NotificationEventCallback(EVENT_TYPE, COMPLETE_ID);
-
-        assertTrue(callback.handleResult(Boolean.TRUE));
-
-        verify();
-    }
-
-    @Test
-    public void false_is_allowed()
-    {
-        Component component = mockComponent();
-
-        replay();
-
-        NotificationEventCallback callback = new NotificationEventCallback(EVENT_TYPE, COMPLETE_ID);
-
-        assertFalse(callback.handleResult(Boolean.FALSE));
-
-        verify();
-    }
-
-    @Test
-    public void other_values_force_exception()
-    {
-        String result = "*RESULT*";
-
-        NotificationEventCallback callback = new NotificationEventCallback(EVENT_TYPE, COMPLETE_ID);
-
-        try
-        {
-            callback.handleResult(result);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertMessageContains(ex,
-                                  "Event 'myEventType' from foo.bar.baz received an event handler method return value of *RESULT*.",
-                                  "This type of event does not support return values from event handler methods.");
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java
deleted file mode 100644
index 18e6488..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/internal/util/PrimaryKeyEncoder2ValueEncoderTest.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.util;
-
-import org.apache.tapestry5.PrimaryKeyEncoder;
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.util.DefaultPrimaryKeyEncoder;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.io.Serializable;
-import java.util.List;
-
-public class PrimaryKeyEncoder2ValueEncoderTest extends InternalBaseTestCase
-{
-
-    private PrimaryKeyEncoder2ValueEncoder coercion;
-
-    @BeforeClass
-    public void setup()
-    {
-        TypeCoercer coercer = getService(TypeCoercer.class);
-
-        coercion = new PrimaryKeyEncoder2ValueEncoder(coercer);
-    }
-
-    @Test
-    public void key_type_is_known()
-    {
-        PrimaryKeyEncoder pke = newMock(PrimaryKeyEncoder.class);
-
-        Object value = new Object();
-        Long primaryKey = new Long(99);
-
-        expect(pke.getKeyType()).andReturn(Long.class);
-
-        expect(pke.toKey(value)).andReturn(primaryKey);
-
-        expect(pke.toValue(primaryKey)).andReturn(value);
-
-        replay();
-
-        ValueEncoder ve = coercion.coerce(pke);
-
-        assertEquals(ve.toClient(value), "99");
-        assertEquals(ve.toValue("99"), value);
-
-        verify();
-    }
-
-    @Test
-    public void unknown_key_type()
-    {
-        PrimaryKeyEncoder pke = new PrimaryKeyEncoder()
-        {
-            public Serializable toKey(Object value)
-            {
-                return null;
-            }
-
-            public void prepareForKeys(List keys)
-            {
-            }
-
-            public Object toValue(Serializable key)
-            {
-                return null;
-            }
-
-            public Class getKeyType()
-            {
-                return null;
-            }
-
-            @Override
-            public String toString()
-            {
-                return "<Dummy>";
-            }
-        };
-
-        try
-        {
-            coercion.coerce(pke);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Unable to extract primary key type from <Dummy>.",
-                                  "You should ensure that the getKeyType() method returns the correct Class.");
-        }
-    }
-
-    @Test
-    public void unknown_key_type_for_default_pke()
-    {
-        try
-        {
-            coercion.coerce(new DefaultPrimaryKeyEncoder());
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Class DefaultPrimaryKeyEncoder now includes a constructor for specifying the key type.");
-        }
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java
deleted file mode 100644
index 2e16fc9..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/ContentTypeTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.root;
-
-import org.apache.tapestry5.ContentType;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class ContentTypeTest extends Assert
-{
-    @Test
-    public void simple_equals()
-    {
-        ContentType master = new ContentType("text/html");
-
-        assertFalse(master.equals(null));
-        assertFalse(master.equals(this));
-        assertTrue(master.equals(master));
-        assertTrue(master.equals(new ContentType("text/html")));
-        assertFalse(master.equals(new ContentType("foo/bar")));
-        assertFalse(master.equals(new ContentType("text/plain")));
-    }
-
-    @Test
-    public void equals_with_parameters()
-    {
-        ContentType master = new ContentType("text/html;charset=utf-8");
-
-        assertFalse(master.equals(new ContentType("text/html")));
-        assertTrue(master.equals(new ContentType("text/html;charset=utf-8")));
-        assertFalse(master.equals(new ContentType("text/html;charset=utf-8;foo=bar")));
-
-        // Check that keys are case insensitive
-
-        assertTrue(master.equals(new ContentType("text/html;Charset=utf-8")));
-
-        master = new ContentType("text/html;foo=bar;biff=bazz");
-
-        assertTrue(master.equals(new ContentType("text/html;foo=bar;biff=bazz")));
-        assertTrue(master.equals(new ContentType("text/html;Foo=bar;Biff=bazz")));
-        assertTrue(master.equals(new ContentType("text/html;biff=bazz;foo=bar")));
-    }
-
-    @Test
-    public void parse_with_parameters() throws Exception
-    {
-        ContentType contentType = new ContentType("text/html;charset=utf-8");
-
-        assertEquals(contentType.getBaseType(), "text");
-
-        assertEquals(contentType.getSubType(), "html");
-
-        assertEquals(contentType.getMimeType(), "text/html");
-
-        List<String> parameterNames = contentType.getParameterNames();
-        assertEquals(parameterNames.size(), 1);
-
-        assertEquals(parameterNames.get(0), "charset");
-
-        assertEquals(contentType.getCharset(), "utf-8");
-
-        String nonexistant = contentType.getParameter("nonexistant");
-        assertTrue(nonexistant == null);
-    }
-
-    @Test
-    public void parse_without_parameters() throws Exception
-    {
-        ContentType contentType = new ContentType("text/html");
-
-        assertEquals(contentType.getBaseType(), "text");
-
-        assertEquals(contentType.getSubType(), "html");
-
-        assertEquals(contentType.getMimeType(), "text/html");
-
-        assertTrue(contentType.getParameterNames().isEmpty());
-    }
-
-    @Test
-    public void unparse_with_parameters() throws Exception
-    {
-        ContentType contentType = new ContentType();
-
-        contentType.setBaseType("text");
-        contentType.setSubType("html");
-        contentType.setParameter("charset", "utf-8");
-
-        assertEquals(contentType.unparse(), "text/html;charset=utf-8");
-    }
-
-    @Test
-    public void unparse_no_parameters() throws Exception
-    {
-        ContentType contentType = new ContentType();
-
-        contentType.setBaseType("text");
-        contentType.setSubType("html");
-
-        assertEquals(contentType.unparse(), "text/html");
-    }
-
-    @Test
-    public void to_string_is_unparse()
-    {
-        ContentType contentType = new ContentType();
-
-        contentType.setBaseType("text");
-        contentType.setSubType("html");
-        contentType.setParameter("charset", "utf-8");
-
-        assertEquals(contentType.toString(), contentType.unparse());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/FieldComponent.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/FieldComponent.java
deleted file mode 100644
index 8371e03..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/FieldComponent.java
+++ /dev/null
@@ -1,26 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.root;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.runtime.Component;
-
-/**
- * Used in a few places where we need a mock for {@link org.apache.tapestry5.Field} and {@link
- * org.apache.tapestry5.runtime.Component} simultanesouly.
- */
-public interface FieldComponent extends Field, Component
-{
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/MarkupUtilsTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/MarkupUtilsTest.java
deleted file mode 100644
index 5acc3cd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/MarkupUtilsTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.root;
-
-import org.apache.tapestry5.MarkupUtils;
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class MarkupUtilsTest extends Assert
-{
-    @Test(dataProvider = "string_quoting_input")
-    public void string_quoting(String input, String expected)
-    {
-        assertEquals(MarkupUtils.quote(input), expected);
-    }
-
-    @DataProvider
-    public Object[][] string_quoting_input()
-    {
-        return new Object[][]
-                {
-                        { "Suzy said: \"It's not the proper time\".",
-                                "'Suzy said: \\\"It\\'s not the proper time\\\".'" },
-                        { "regexp: \\d{4}", "'regexp: \\\\d{4}'" },
-
-                };
-    }
-
-    @Test(dataProvider = "join_input")
-    public void join_array(String[] inputs, String expected)
-    {
-        assertEquals(MarkupUtils.join(inputs), expected);
-    }
-
-    @Test(dataProvider = "join_input")
-    public void join_list(String[] inputs, String expected)
-    {
-        List<String> list = Arrays.asList(inputs);
-
-        assertEquals(MarkupUtils.join(list), expected);
-    }
-
-    @DataProvider
-    public Object[][] join_input()
-    {
-        return new Object[][]
-                {
-                        { new String[0], "" },
-                        { new String[]
-                                { "fred" }, "fred" },
-                        { new String[]
-                                { "fred", "barney", "wilma" }, "barney fred wilma" } };
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/PageCallbackTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/PageCallbackTest.java
deleted file mode 100644
index e122594..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/PageCallbackTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.root;
-
-import org.apache.tapestry5.EventContext;
-import org.apache.tapestry5.Link;
-import org.apache.tapestry5.PageCallback;
-import org.apache.tapestry5.internal.services.ArrayEventContext;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.PageRenderLinkSource;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class PageCallbackTest extends InternalBaseTestCase
-{
-    private TypeCoercer typeCoercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        typeCoercer = getService(TypeCoercer.class);
-    }
-
-    @Test
-    public void callback_with_no_context()
-    {
-        PageRenderLinkSource source = mockPageRenderLinkSource();
-        Link link = mockLink();
-
-        expect(source.createPageRenderLinkWithContext("foo")).andReturn(link);
-
-        PageCallback pc = new PageCallback("foo");
-
-        assertEquals(pc.toString(), "PageCallback[foo]");
-
-        replay();
-
-        assertSame(pc.toLink(source), link);
-
-        verify();
-    }
-
-    @Test
-    public void callback_with_context()
-    {
-        EventContext context = new ArrayEventContext(typeCoercer, 1, 2);
-
-        PageRenderLinkSource source = mockPageRenderLinkSource();
-        Link link = mockLink();
-
-        expect(source.createPageRenderLinkWithContext("bar", "1", "2")).andReturn(link);
-
-        PageCallback pc = new PageCallback("bar", context);
-
-        assertEquals(pc.toString(), "PageCallback[bar 1/2]");
-
-        replay();
-
-        assertSame(pc.toLink(source), link);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/Stooge.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/Stooge.java
deleted file mode 100644
index 6bfe606..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/Stooge.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.root;
-
-public enum Stooge
-{
-    MOE, LARRY, CURLY_JOE
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/ValidationTrackerImplTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/ValidationTrackerImplTest.java
deleted file mode 100644
index b4b0185..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/ValidationTrackerImplTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.root;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationTracker;
-import org.apache.tapestry5.ValidationTrackerImpl;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.Arrays;
-
-public class ValidationTrackerImplTest extends TapestryTestCase
-{
-    @Test
-    public void empty_tracker_has_no_errors()
-    {
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        assertTrue(tracker.getErrors().isEmpty());
-        assertFalse(tracker.getHasErrors());
-    }
-
-    @Test
-    public void order_added_is_maintained()
-    {
-        Field fielda = newFieldWithControlName("fieldA");
-        Field fieldb = newFieldWithControlName("fieldB");
-
-        replay();
-
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        tracker.recordError("one");
-        tracker.recordError(fieldb, "fieldb: two");
-        tracker.recordError("three");
-        tracker.recordError(fielda, "fielda: four");
-
-        assertEquals(tracker.getErrors(), Arrays.asList(
-                "one",
-                "three",
-                "fieldb: two",
-                "fielda: four"));
-
-        verify();
-    }
-
-    @Test
-    public void record_input()
-    {
-        Field field = newFieldWithControlName("field");
-
-        replay();
-
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        assertNull(tracker.getInput(field));
-
-        tracker.recordInput(field, "one");
-
-        assertEquals(tracker.getInput(field), "one");
-
-        tracker.recordInput(field, "two");
-
-        assertEquals(tracker.getInput(field), "two");
-
-        verify();
-    }
-
-    @Test
-    public void record_error_for_field()
-    {
-        Field field = newFieldWithControlName("field");
-
-        replay();
-
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        assertFalse(tracker.getHasErrors());
-        assertFalse(tracker.inError(field));
-        assertNull(tracker.getError(field));
-
-        tracker.recordError(field, "one");
-
-        assertTrue(tracker.getHasErrors());
-        assertTrue(tracker.inError(field));
-        assertEquals(tracker.getError(field), "one");
-
-        tracker.recordError(field, "two");
-        assertEquals(tracker.getError(field), "two");
-
-        verify();
-    }
-
-    @Test
-    public void record_error_for_form()
-    {
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        assertFalse(tracker.getHasErrors());
-
-        assertTrue(tracker.getErrors().isEmpty());
-
-        tracker.recordError("one");
-
-        assertEquals(tracker.getErrors(), Arrays.asList("one"));
-
-        tracker.recordError("two");
-
-        assertEquals(tracker.getErrors(), Arrays.asList("one", "two"));
-    }
-
-    @Test
-    public void data_survives_serialization() throws Exception
-    {
-        Field fielda = newFieldWithControlName("fieldA");
-        Field fieldb = newFieldWithControlName("fieldB");
-        Field fieldc = newFieldWithControlName("fieldC");
-
-        replay();
-
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        tracker.recordError("one");
-        tracker.recordError(fieldb, "fieldb: two");
-        tracker.recordError("three");
-        tracker.recordError(fielda, "fielda: four");
-
-        ValidationTracker copy = cloneBySerialiation(tracker);
-
-        copy.recordError(fieldc, "fieldc: five");
-
-        assertEquals(copy.getErrors(), Arrays.asList(
-                "one",
-                "three",
-                "fieldb: two",
-                "fielda: four",
-                "fieldc: five"));
-
-        verify();
-    }
-
-    @Test
-    public void clear_removes_all()
-    {
-        Field fielda = newFieldWithControlName("fieldA");
-        Field fieldb = newFieldWithControlName("fieldB");
-
-        replay();
-
-        ValidationTracker tracker = new ValidationTrackerImpl();
-
-        tracker.recordError("one");
-        tracker.recordInput(fieldb, "input b");
-        tracker.recordError(fieldb, "fieldb: two");
-        tracker.recordError("three");
-        tracker.recordInput(fielda, "input a");
-        tracker.recordError(fielda, "fielda: four");
-
-        tracker.clear();
-
-        assertFalse(tracker.getHasErrors());
-        assertTrue(tracker.getErrors().isEmpty());
-        assertNull(tracker.getInput(fielda));
-        assertNull(tracker.getInput(fieldb));
-
-        verify();
-    }
-
-    private final Field newFieldWithControlName(String controlName)
-    {
-        Field field = mockField();
-
-        // Fields generated this way, for the purposes of this test, do not
-        // ever change their controlName. In real life, elementNames can change.
-
-        expect(field.getControlName()).andReturn(controlName).atLeastOnce();
-
-        return field;
-    }
-
-    @SuppressWarnings("unchecked")
-    protected final <T> T cloneBySerialiation(T input) throws Exception
-    {
-        ByteArrayOutputStream bos = new ByteArrayOutputStream();
-        ObjectOutputStream oos = new ObjectOutputStream(bos);
-
-        oos.writeObject(input);
-
-        oos.close();
-
-        ByteArrayInputStream bis = new ByteArrayInputStream(bos.toByteArray());
-        ObjectInputStream ois = new ObjectInputStream(bis);
-
-        T result = (T) ois.readObject();
-
-        ois.close();
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/VersionUtilsTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/VersionUtilsTest.java
deleted file mode 100644
index af0aa50..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/root/VersionUtilsTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-package org.apache.tapestry5.root;
-
-import org.apache.tapestry5.VersionUtils;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class VersionUtilsTest extends Assert
-{
-    @Test
-    public void read_version_number_missing()
-    {
-        assertEquals(VersionUtils.readVersionNumber("no-such-file.properties"), "UNKNOWN");
-    }
-
-    @Test
-    public void read_version_number()
-    {
-        assertEquals(VersionUtils.readVersionNumber("org/apache/tapestry5/version.properties"), "1.2.3.4");
-    }
-
-    @Test
-    public void read_version_number_no_version_key()
-    {
-        assertEquals(VersionUtils.readVersionNumber("org/apache/tapestry5/noversion.properties"), "UNKNOWN");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/AliasContributionTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/AliasContributionTest.java
deleted file mode 100644
index 87e17ef..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/AliasContributionTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class AliasContributionTest extends TapestryTestCase
-{
-    @Test
-    public void default_for_mode()
-    {
-        Runnable r = mockRunnable();
-
-        replay();
-
-        AliasContribution contribution = AliasContribution.create(Runnable.class, r);
-
-        assertSame(contribution.getContributionType(), Runnable.class);
-        assertEquals(contribution.getMode(), "");
-        assertSame(contribution.getObject(), r);
-
-        verify();
-    }
-
-    @Test
-    public void specific_mode()
-    {
-        Runnable r = mockRunnable();
-
-        replay();
-
-        AliasContribution contribution = new AliasContribution<Runnable>(Runnable.class, "mode", r);
-
-        assertEquals(contribution.getContributionType(), Runnable.class);
-        assertEquals(contribution.getMode(), "mode");
-        assertSame(contribution.getObject(), r);
-
-        verify();
-    }
-
-    @Test
-    public void to_string()
-    {
-        AliasContribution contribution = AliasContribution.create(String.class, "FRED");
-
-        assertEquals(contribution.toString(), "<AliasContribution: java.lang.String FRED>");
-
-        contribution = new AliasContribution<String>(String.class, "servlet", "FRED");
-
-        assertEquals(
-                contribution.toString(),
-                "<AliasContribution: java.lang.String mode:servlet FRED>");
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java
deleted file mode 100644
index 9e9f722..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/LibraryMappingTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-public class LibraryMappingTest extends TestBase
-{
-    @Test
-    public void valid_mapping()
-    {
-        LibraryMapping lm = new LibraryMapping("folder", "root.package");
-
-        assertEquals(lm.getPathPrefix(), "folder");
-        assertEquals(lm.getRootPackage(), "root.package");
-
-        assertEquals(lm.toString(), "LibraryMapping[folder, root.package]");
-    }
-
-    @Test
-    public void invalid_mapping()
-    {
-        try
-        {
-            new LibraryMapping("lib/1.0", "root.package");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "may no longer contain slashes");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/SyncCostBench.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/SyncCostBench.java
deleted file mode 100644
index 738b67f..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/SyncCostBench.java
+++ /dev/null
@@ -1,211 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
-
-import static java.lang.String.format;
-import static java.lang.System.out;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * Tests single-thread synchronization overhead using different techniques. Note that we're fudging things a bit by
- * getting a read lock for a write operation .... it's just that I'm more concerned about read locks (which will be very
- * common) than about write locks (very rare). Another concern is that hotspot is going to mess up our synchronization
- * when it see we're not really doing anything multi-threaded.
- * <p/>
- * The results show that using the {@link org.apache.tapestry5.internal.annotations.Concurrent} aspect (which used a
- * {@link java.util.concurrent.locks.ReentrantReadWriteLock} under the covers) is about 4x as expensive as just using
- * the synchronized keyword. There are some anomolous results ... for example, ReadWriteLockRunner is consistently
- * slower than ReadWriteLockAspectRunner (one would expect it to be the other way around ... must be something about how
- * AspectJ weaves the code ... and it's use of static methods in many cases).
- * <p/>
- * Well, the Concurrent aspect is gone, replaced with the {@link ConcurrentBarrier} utility.
- */
-public class SyncCostBench
-{
-    /**
-     * Calculates a fibunacci series.
-     */
-    static class Worker implements Runnable
-    {
-        private long[] series = { 1, 1 };
-
-        public void run()
-        {
-            long value = series[0] + series[1];
-
-            // Now shift the values down to prepare for the next iteration.
-
-            series[0] = series[1];
-            series[1] = value;
-        }
-    }
-
-    static class SimpleRunner implements Runnable
-    {
-        private final Runnable delegate;
-
-        public SimpleRunner(Runnable delegate)
-        {
-            this.delegate = delegate;
-        }
-
-        public void run()
-        {
-            delegate.run();
-        }
-    }
-
-    static class SynchronizedRunner implements Runnable
-    {
-        private final Runnable delegate;
-
-        public SynchronizedRunner(Runnable delegate)
-        {
-            this.delegate = delegate;
-        }
-
-        public synchronized void run()
-        {
-            delegate.run();
-        }
-    }
-
-    static class ReadWriteLockAspectRunner implements Runnable
-    {
-        private final ConcurrentBarrier barrier = new ConcurrentBarrier();
-
-        private final Runnable delegate;
-
-        public ReadWriteLockAspectRunner(Runnable delegate)
-        {
-            this.delegate = delegate;
-        }
-
-        public void run()
-        {
-            barrier.withRead(delegate);
-        }
-    }
-
-    static class ReadWriteLockRunner implements Runnable
-    {
-        private final Runnable delegate;
-
-        private final ReadWriteLock lock = new ReentrantReadWriteLock();
-
-        public ReadWriteLockRunner(Runnable delegate)
-        {
-            this.delegate = delegate;
-        }
-
-        public void run()
-        {
-
-            try
-            {
-                lock.readLock().lock();
-
-                delegate.run();
-            }
-            finally
-            {
-                lock.readLock().unlock();
-            }
-
-        }
-    }
-
-    private static final int WARMUP_BLOCK_SIZE = 1000;
-
-    private static final int BLOCK_SIZE = 5 * 1000 * 1000;
-
-    static class BlockRunner implements Runnable
-    {
-        private final Runnable delegate;
-
-        private final int blockSize;
-
-        public BlockRunner(int blockSize, Runnable delegate)
-        {
-            this.blockSize = blockSize;
-            this.delegate = delegate;
-        }
-
-        public void run()
-        {
-            for (int i = 0; i < blockSize; i++)
-                delegate.run();
-        }
-    }
-
-    public static void main(String[] args) throws Exception
-    {
-        Runnable simple = new SimpleRunner(new Worker());
-        Runnable synched = new SynchronizedRunner(new Worker());
-        Runnable rw = new ReadWriteLockRunner(new Worker());
-        Runnable aspect = new ReadWriteLockAspectRunner(new Worker());
-
-        out.println(format("%40s %9s %9s %9s", ",simple", ",synched", ",rw", ",aspect"));
-
-        stage("warmup");
-
-        go(WARMUP_BLOCK_SIZE, simple);
-        go(WARMUP_BLOCK_SIZE, synched);
-        go(WARMUP_BLOCK_SIZE, rw);
-        go(WARMUP_BLOCK_SIZE, aspect);
-
-        out.println();
-
-        for (int i = 0; i < 10; i++)
-        {
-            Thread.sleep(5 * 1000);
-            System.gc();
-
-            stage(format("stage #%d", i + 1));
-            go(BLOCK_SIZE, simple);
-            go(BLOCK_SIZE, synched);
-            go(BLOCK_SIZE, rw);
-            go(BLOCK_SIZE, aspect);
-
-            out.println();
-        }
-    }
-
-    private static void stage(String name)
-    {
-        out.print(format("%30s", name));
-    }
-
-    private static void go(int blockSize, Runnable runner) throws InterruptedException
-    {
-
-        Thread t = new Thread(new BlockRunner(blockSize, runner));
-
-        long tick = System.nanoTime();
-
-        t.start();
-
-        // Now wait for it to finish.
-
-        t.join();
-
-        long tock = System.nanoTime();
-
-        out.print(format(",%9d", tock - tick));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/TransformMethodSignatureTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/TransformMethodSignatureTest.java
deleted file mode 100644
index a23cfae..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/TransformMethodSignatureTest.java
+++ /dev/null
@@ -1,187 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class TransformMethodSignatureTest extends Assert
-{
-
-    @Test
-    public void signature_toString()
-    {
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
-                                                                    new String[]
-                                                                            { "java.lang.String", "int" }, new String[]
-                { "java.lang.RuntimeException", "org.foo.FredException" });
-
-        assertEquals(
-                sig.toString(),
-                "public int doSomething(java.lang.String, int) throws java.lang.RuntimeException, org.foo.FredException");
-
-        sig = new TransformMethodSignature(Modifier.ABSTRACT + Modifier.PROTECTED, "boolean", "misoHapi",
-                                           new String[0], new String[0]);
-
-        assertEquals(sig.toString(), "protected abstract boolean misoHapi()");
-    }
-
-    @Test
-    public void medium_description()
-    {
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
-                                                                    new String[]
-                                                                            { "java.lang.String", "int" }, new String[]
-                { "java.lang.RuntimeException", "org.foo.FredException" });
-
-        assertEquals(sig.getMediumDescription(), "doSomething(java.lang.String, int)");
-    }
-
-    @Test
-    public void package_private_toString()
-    {
-        TransformMethodSignature sig = new TransformMethodSignature(0, "int", "packagePrivate", null, null);
-
-        assertEquals(sig.toString(), "int packagePrivate()");
-    }
-
-    @Test
-    public void null_value_for_parameters_and_exceptions()
-    {
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething", null, null);
-
-        assertEquals(sig.toString(), "public int doSomething()");
-
-        assertEquals(sig.getParameterTypes(), new String[0]);
-        assertEquals(sig.getExceptionTypes(), new String[0]);
-    }
-
-    @Test
-    public void getters()
-    {
-        TransformMethodSignature sig = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
-                                                                    new String[]
-                                                                            { "java.lang.String", "int" }, new String[]
-                { "java.lang.RuntimeException", "org.foo.FredException" });
-
-        assertEquals(sig.getModifiers(), Modifier.PUBLIC);
-        assertEquals(sig.getReturnType(), "int");
-        assertEquals(sig.getMethodName(), "doSomething");
-        assertEquals(sig.getParameterTypes(), new String[]
-                { "java.lang.String", "int" });
-        assertEquals(sig.getExceptionTypes(), new String[]
-                { "java.lang.RuntimeException", "org.foo.FredException" });
-    }
-
-    @Test
-    public void sorting()
-    {
-        TransformMethodSignature foo = new TransformMethodSignature(Modifier.PUBLIC, "void", "foo", null, null);
-        TransformMethodSignature bar = new TransformMethodSignature(Modifier.PUBLIC, "void", "bar", null, null);
-        TransformMethodSignature baz0 = new TransformMethodSignature(Modifier.PUBLIC, "void", "baz", null, null);
-        TransformMethodSignature baz1 = new TransformMethodSignature(Modifier.PUBLIC, "void", "baz", new String[]
-                { "int" }, null);
-
-        List<TransformMethodSignature> list = CollectionFactory.newList(Arrays.asList(foo, bar, baz0, baz1));
-
-        Collections.sort(list);
-
-        assertEquals(list, Arrays.asList(bar, baz1, baz0, foo));
-    }
-
-    @Test
-    public void hash_code_and_equals()
-    {
-        TransformMethodSignature sig1 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
-                                                                     new String[]
-                                                                             { "int" }, new String[]
-                { "org.foo.BarException" });
-        int hashCode1 = sig1.hashCode();
-
-        // Check that same value returned each time.
-
-        assertEquals(sig1.hashCode(), hashCode1);
-
-        TransformMethodSignature sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething",
-                                                                     new String[]
-                                                                             { "int" }, new String[]
-                { "org.foo.BarException" });
-
-        assertEquals(sig2.hashCode(), hashCode1);
-        assertEquals(sig2, sig1);
-
-        // Now work through the different properties, changing each one.
-
-        sig2 = new TransformMethodSignature(Modifier.PRIVATE, "int", "doSomething", new String[]
-                { "int" }, new String[]
-                { "org.foo.BarException" });
-
-        assertFalse(sig2.hashCode() == hashCode1);
-        assertFalse(sig2.equals(sig1));
-
-        sig2 = new TransformMethodSignature(Modifier.PUBLIC, "long", "doSomething", new String[]
-                { "int" }, new String[]
-                { "org.foo.BarException" });
-
-        assertFalse(sig2.hashCode() == hashCode1);
-        assertFalse(sig2.equals(sig1));
-
-        sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomethingElse", new String[]
-                { "int" }, new String[]
-                { "org.foo.BarException" });
-
-        assertFalse(sig2.hashCode() == hashCode1);
-        assertFalse(sig2.equals(sig1));
-
-        sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething", new String[]
-                { "long" }, new String[]
-                { "org.foo.BarException" });
-
-        assertFalse(sig2.hashCode() == hashCode1);
-        assertFalse(sig2.equals(sig1));
-
-        sig2 = new TransformMethodSignature(Modifier.PUBLIC, "int", "doSomething", new String[]
-                { "int" }, new String[0]);
-
-        assertFalse(sig2.hashCode() == hashCode1);
-        assertFalse(sig2.equals(sig1));
-
-        // Other equality checks
-
-        assertFalse(sig1.equals(null));
-        assertFalse(sig1.equals(""));
-    }
-
-    /**
-     * Tests the simple, no arguments constructor.
-     */
-    @Test
-    public void short_constructor()
-    {
-        TransformMethodSignature sig = new TransformMethodSignature("pageLoad");
-
-        assertEquals(sig.getModifiers(), Modifier.PUBLIC);
-        assertEquals(sig.getReturnType(), "void");
-        assertEquals(sig.getMethodName(), "pageLoad");
-        assertEquals(sig.getParameterTypes(), new String[0]);
-        assertEquals(sig.getExceptionTypes(), new String[0]);
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/TransformUtilsTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/TransformUtilsTest.java
deleted file mode 100644
index fbdcbbd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/services/TransformUtilsTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import static org.apache.tapestry5.services.TransformUtils.*;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class TransformUtilsTest extends Assert
-{
-    @Test
-    public void wrapper_type_by_name()
-    {
-        assertEquals(getWrapperTypeName("char"), "java.lang.Character");
-        assertEquals(getWrapperTypeName("java.util.Map"), "java.util.Map");
-    }
-
-    @Test
-    public void wrapper_type_by_class()
-    {
-        assertEquals(getWrapperType(char.class), Character.class);
-        assertEquals(getWrapperType(Map.class), Map.class);
-    }
-
-    @Test
-    public void default_value()
-    {
-        assertEquals(getDefaultValue("long"), "0L");
-        assertEquals(getDefaultValue("java.util.Map"), "null");
-    }
-
-    @Test
-    public void is_primitive()
-    {
-        assertTrue(isPrimitive("int"));
-        assertFalse(isPrimitive("java.lang.Integer"));
-    }
-
-    @Test
-    public void unwrapper_method_name()
-    {
-        assertEquals(getUnwrapperMethodName("boolean"), "booleanValue");
-        assertEquals(getUnwrapperMethodName("int"), "intValue");
-        assertNull(getUnwrapperMethodName("java.lang.Integer"));
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java
deleted file mode 100644
index b2312c1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/IntegrationTests.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.urlrewriter;
-
-import org.apache.tapestry5.integration.TapestryCoreTestCase;
-import org.testng.annotations.Test;
-
-/**
- * Note: If these tests fail with BindException when starting Jetty, it could be Skype. At least on my system, Skype is
- * listening on localhost:80.
- * <p/>
- * The commented-out tests needs to have somenicecomain.com and login.somenicedomain.com redirected to localhost in
- * order to work.
- */
-@Test(timeOut = 30000, sequential = true)
-public class IntegrationTests extends TapestryCoreTestCase
-{
-    final public static String DOMAIN = "somenicedomain.com";
-
-    final public static String LOGIN = "login";
-
-    final public static String SUBDOMAIN = LOGIN + "." + DOMAIN;
-
-    @Test
-    public void test_link_rewriting_without_virtual_host()
-    {
-
-        openBaseURL();
-        assertAttribute("//a[@class='self']/@href", "/");
-        assertAttribute("//a[@class='dummy']/@href", "/notdummy");
-
-//        final String url = String.format("http://%s:%d/", SUBDOMAIN, JETTY_PORT);
-//        assertAttribute("//a[@class='subdomain']/@href", url);
-
-    }
-
-//    @Test
-//    public void test_url_rewriting_with_virtual_host()
-//    {
-//
-//        final String url = String.format("http://%s:%d", SUBDOMAIN, JETTY_PORT);
-//        open(url);
-//        assertTextPresent("End of maze. URL rewriting works :).");
-//        assertTextPresent("Login: " + LOGIN);
-//
-//    }
-
-    @Test
-    public void test_url_rewriter_without_virtual_host()
-    {
-
-        open("struts");
-        assertTextPresent("End of maze. URL rewriting works :).");
-
-    }
-
-    @Test
-    public void test_url_rewriter_using_context() throws InterruptedException
-    {
-        open("/RewriteWithContext");
-        assertAttribute("//a[@class='page']/@href","/rpage/2sseccusetirwer");
-        assertAttribute("//a[@class='event']/@href", "/cevent/txetnochtiwetirwer:kcilc");
-        assertAttribute("//a[@class='action']/@href","/cevent/txetnochtiwetirwer.knilgnitcaeht");
-
-        open("/RewriteWithContext");
-        clickAndWait("//a[@class='page']");
-        assertTextPresent("URL Rewriting that relies on the RewriteContext evidently works.");
-
-        //note that we should be able to get back to rewritewithcontext via rpage encoding/decoding...
-        open("/RewriteWithContext");
-        clickAndWait("//a[@class='event']");
-        assertTextPresent("URL Rewriting that relies on the RewriteContext evidently works.");
-
-        open("/RewriteWithContext");
-        clickAndWait("//a[@class='action']");
-        assertTextPresent("URL Rewriting that relies on the RewriteContext evidently works.");
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/SimpleRequestWrapperTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/SimpleRequestWrapperTest.java
deleted file mode 100644
index 35e83f2..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/urlrewriter/SimpleRequestWrapperTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.urlrewriter;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Locale;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.apache.tapestry5.services.DelegatingRequest;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.testng.annotations.Test;
-
-/**
- * Tests {@linkplain org.apache.tapestry5.urlrewritter.SimpleRequestWrapper}
- * and {@link DelegatingRequest}.
- */
-@SuppressWarnings("all")
-public class SimpleRequestWrapperTest extends TestBase
-{
-
-    @Test
-    public void delegating_methods() throws IOException
-    {
-        
-        final String attributeName = "attributeName";
-        final String attributeValue = "attributeValue";
-        final String parameterName = "parameterName";
-        final String parameterValue = "parameterValue";
-        final String headerName = "headerName";
-        final String headerValue = "headerValue";
-        final String contextPath = "/contextPath";
-        final String dateHeaderName = "dateHeader";
-        final long dateHeader = 1234293875091l;
-        final List<String> headerNames = new ArrayList<String>();
-        final List<String> parameterNames = new ArrayList<String>();
-        final Locale locale = new Locale("pt", "BR", "MG");
-        final String method = "postget";
-        final String[] parameters = new String[0];
-        final Session session1 = newMock(Session.class);
-        final Session session2 = newMock(Session.class);
-
-        Request mock = newMock(Request.class);
-        SimpleRequestWrapper request = new SimpleRequestWrapper(mock, "localhost", "path");
-        
-        mock.setAttribute(attributeName, attributeValue);
-        expect(mock.getAttribute(attributeName)).andReturn(attributeValue);
-        expect(mock.getContextPath()).andReturn(contextPath);
-        expect(mock.getDateHeader(dateHeaderName)).andReturn(dateHeader);
-        expect(mock.getHeader(headerName)).andReturn(headerValue);
-        expect(mock.getHeaderNames()).andReturn(headerNames);
-        expect(mock.getLocale()).andReturn(locale);
-        expect(mock.getMethod()).andReturn(method);
-        expect(mock.getParameter(parameterName)).andReturn(parameterValue);
-        expect(mock.getParameterNames()).andReturn(parameterNames);
-        expect(mock.getParameters(parameterName)).andReturn(parameters);
-        expect(mock.getSession(false)).andReturn(session1);
-        expect(mock.getSession(true)).andReturn(session2);
-        expect(mock.isRequestedSessionIdValid()).andReturn(true);
-        expect(mock.isXHR()).andReturn(false);
-        expect(mock.isSecure()).andReturn(true);
-        
-        replay();
-
-        request.setAttribute(attributeName, attributeValue);
-        assertEquals(request.getAttribute(attributeName), attributeValue);
-        assertEquals(request.getHeader(headerName), headerValue);
-        assertEquals(request.getContextPath(), contextPath);
-        assertEquals(request.getDateHeader(dateHeaderName), dateHeader);
-        assertEquals(request.getHeaderNames(), headerNames);
-        assertEquals(request.getLocale(), locale);
-        assertEquals(request.getMethod(), method);
-        assertEquals(request.getParameter(parameterName), parameterValue);
-        assertEquals(request.getParameterNames(), parameterNames);
-        assertEquals(request.getParameters(parameterName), parameters);
-        assertEquals(request.getSession(false), session1);
-        assertEquals(request.getSession(true), session2);
-        assertEquals(request.isRequestedSessionIdValid(), true);
-        assertEquals(request.isXHR(), false);
-        assertEquals(request.isSecure(), true);
-        
-        verify();
-        
-    }
-
-    @Test
-    public void constructor_without_servername() {
-
-        final String requestServerName = "tapestry.apache.org";
-        final String path = "/tapestry/why";
-        
-        SimpleRequestWrapper request;
-        Request mock = newMock(Request.class);
-        
-        expect(mock.getServerName()).andReturn(requestServerName);
-        
-        replay();
-        
-        request = new SimpleRequestWrapper(mock, path);
-        
-        verify();
-        
-        assertEquals(request.getServerName(), requestServerName);
-        assertEquals(request.getPath(), path);
-
-    }
-
-    @Test
-    public void constructor_with_servername() {
-
-        final String serverName = "tapestry.apache.org";
-        final String path = "/tapestry/why";
-        
-        SimpleRequestWrapper request;
-        Request mock = newMock(Request.class);
-        
-        replay();
-        
-        request = new SimpleRequestWrapper(mock, serverName, path);
-        
-        assertEquals(request.getServerName(), serverName);
-        assertEquals(request.getPath(), path);
-
-    }
-
-    @Test
-    public void constructor_and_nulls() {
-
-        Request request = newMock(Request.class);
-        String serverName = "tapestry.apache.org";
-        String path = "why";
-        
-        expect(request.getServerName()).andReturn(serverName).anyTimes();
-        
-        replay();
-        
-        testConstructorWithServerName(request, serverName, path, false);
-        testConstructorWithServerName(null, serverName, path, true);
-        testConstructorWithServerName(request, null, path, true);
-        testConstructorWithServerName(request, serverName, null, true);
-        
-        testConstructorWithoutServerName(request, path, false);
-        testConstructorWithoutServerName(null, path, true);
-        testConstructorWithoutServerName(request, null, true);
-        
-        verify();
-        
-    }
-
-    private void testConstructorWithServerName(Request request, String serverName, String path,
-            boolean expectException)
-    {
-        
-        boolean exceptionRaised = false;
-
-        try 
-        {
-            new SimpleRequestWrapper(request, serverName, path);
-        }
-        catch (AssertionError e) 
-        {
-            exceptionRaised = true;
-        }
-
-        assertEquals(expectException, exceptionRaised);
-        
-    }
-
-    private void testConstructorWithoutServerName(Request request, String path,
-            boolean expectException)
-    {
-        
-        boolean exceptionRaised = false;
-
-        try 
-        {
-            new SimpleRequestWrapper(request, path);
-        }
-        catch (AssertionError e) 
-        {
-            exceptionRaised = true;
-        }
-
-        assertEquals(expectException, exceptionRaised);
-        
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java
deleted file mode 100644
index e5af5bd..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/DefaultPrimaryKeyEncoderTest.java
+++ /dev/null
@@ -1,196 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-public class DefaultPrimaryKeyEncoderTest extends InternalBaseTestCase
-{
-    static class IntStringEncoder extends DefaultPrimaryKeyEncoder<Integer, String>
-    {
-        public IntStringEncoder()
-        {
-            super(Integer.class);
-        }
-    }
-
-    private final int FRED_ID = 1;
-
-    private final String FRED = "FRED";
-
-    private final int BARNEY_ID = 2;
-
-    private final String BARNEY = "BARNEY";
-
-    private final int WILMA_ID = 3;
-
-    private final String WILMA = "WILMA";
-
-    @Test
-    public void empty_encoder_has_no_values()
-    {
-        IntStringEncoder encoder = new IntStringEncoder();
-
-        assertTrue(encoder.getValues().isEmpty());
-    }
-
-    @Test
-    public void keys_must_be_unique()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        try
-        {
-            encoder.add(FRED_ID, "NewFred");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Key 1 may not be added with value NewFred, as an existing value, FRED, is already present.");
-        }
-    }
-
-    @Test
-    public void extract_key_for_missing_value()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        try
-        {
-            encoder.toKey("BETTY");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Key for value BETTY not found. Available values: BARNEY, FRED, WILMA");
-        }
-    }
-
-    @Test
-    public void value_orderer_maintained()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertEquals(encoder.getValues(), Arrays.asList(BARNEY, FRED, WILMA));
-    }
-
-    @Test
-    public void value_to_key()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertEquals(encoder.toKey(FRED).intValue(), FRED_ID);
-        assertEquals(encoder.toKey(BARNEY).intValue(), BARNEY_ID);
-    }
-
-    @Test
-    public void known_key_to_value()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertEquals(encoder.toValue(FRED_ID), FRED);
-        assertEquals(encoder.toValue(BARNEY_ID), BARNEY);
-    }
-
-    @Test
-    public void unknown_key_to_value()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertNull(encoder.toValue(99), null);
-    }
-
-    @Test
-    public void missing_key_to_provided_object()
-    {
-        final int bettyId = 5;
-        final String betty = "BETTY";
-
-        IntStringEncoder encoder = new IntStringEncoder()
-        {
-            @Override
-            protected String provideMissingObject(Integer key)
-            {
-                assertEquals(key, new Integer(bettyId));
-
-                return betty;
-            }
-        };
-
-        assertSame(encoder.toValue(bettyId), betty);
-    }
-
-    @Test
-    public void set_delete_false_when_nothing_yet_deleted()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertSame(FRED, encoder.toValue(FRED_ID));
-
-        encoder.setDeleted(false);
-
-        assertEquals(encoder.getValues(), encoder.getAllValues());
-    }
-
-    @Test
-    public void difference_between_get_values_and_get_all_values()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertSame(FRED, encoder.toValue(FRED_ID));
-
-        assertFalse(encoder.isDeleted());
-
-        encoder.setDeleted(true);
-
-        assertTrue(encoder.isDeleted());
-
-        assertEquals(encoder.getValues(), Arrays.asList(BARNEY, WILMA));
-
-        assertEquals(encoder.getAllValues(), Arrays.asList(BARNEY, FRED, WILMA));
-    }
-
-    @Test
-    public void undelete_a_value()
-    {
-        IntStringEncoder encoder = newEncoder();
-
-        assertSame(FRED, encoder.toValue(FRED_ID));
-
-        encoder.setDeleted(true);
-        encoder.setDeleted(false);
-
-        assertEquals(encoder.getValues(), encoder.getAllValues());
-    }
-
-    private IntStringEncoder newEncoder()
-    {
-        IntStringEncoder encoder = new IntStringEncoder();
-
-        encoder.add(BARNEY_ID, BARNEY);
-        encoder.add(FRED_ID, FRED);
-        encoder.add(WILMA_ID, WILMA);
-
-        return encoder;
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java
deleted file mode 100644
index e50d5d4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/EnumSelectModelTest.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.OptionModel;
-import org.apache.tapestry5.SelectModel;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.root.Stooge;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class EnumSelectModelTest extends TapestryTestCase
-{
-    @Test
-    public void generated_labels()
-    {
-        Messages messages = mockMessages();
-        stub_contains(messages, false);
-
-        replay();
-
-        SelectModel model = new EnumSelectModel(Stooge.class, messages);
-
-        List<OptionModel> options = model.getOptions();
-
-        assertEquals(options.size(), 3);
-
-        checkOption(options, 0, "Moe", Stooge.MOE);
-        checkOption(options, 1, "Larry", Stooge.LARRY);
-        checkOption(options, 2, "Curly Joe", Stooge.CURLY_JOE);
-
-        verify();
-    }
-
-    @Test
-    public void prefixed_name_in_message_catalog()
-    {
-        Messages messages = mockMessages();
-        stub_contains(messages, false);
-
-        train_contains(messages, "Stooge.LARRY", true);
-        train_get(messages, "Stooge.LARRY", "Mr. Larry Fine");
-
-        replay();
-
-        SelectModel model = new EnumSelectModel(Stooge.class, messages);
-
-        List<OptionModel> options = model.getOptions();
-
-        assertEquals(options.size(), 3);
-
-        checkOption(options, 0, "Moe", Stooge.MOE);
-        checkOption(options, 1, "Mr. Larry Fine", Stooge.LARRY);
-        checkOption(options, 2, "Curly Joe", Stooge.CURLY_JOE);
-
-        verify();
-    }
-
-    @Test
-    public void unprefixed_name_in_message_catalog()
-    {
-        Messages messages = mockMessages();
-        stub_contains(messages, false);
-
-        train_contains(messages, "MOE", true);
-        train_get(messages, "MOE", "Sir Moe Howard");
-
-        replay();
-
-        SelectModel model = new EnumSelectModel(Stooge.class, messages);
-
-        List<OptionModel> options = model.getOptions();
-
-        assertEquals(options.size(), 3);
-
-        checkOption(options, 0, "Sir Moe Howard", Stooge.MOE);
-        checkOption(options, 1, "Larry", Stooge.LARRY);
-        checkOption(options, 2, "Curly Joe", Stooge.CURLY_JOE);
-
-        verify();
-    }
-
-    private void checkOption(List<OptionModel> options, int i, String label, Stooge value)
-    {
-        OptionModel model = options.get(i);
-
-        assertEquals(model.getLabel(), label);
-        assertFalse(model.isDisabled());
-        assertSame(model.getValue(), value);
-        assertNull(model.getAttributes());
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/FindTheParameterizedType.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/FindTheParameterizedType.java
deleted file mode 100644
index a7ac783..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/FindTheParameterizedType.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import org.apache.tapestry5.ioc.internal.util.Orderer;
-
-import static java.lang.System.out;
-import java.lang.reflect.Method;
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.List;
-import java.util.Map;
-
-public class FindTheParameterizedType
-{
-
-    /**
-     * @param args
-     */
-    public static void main(String[] args) throws Exception
-    {
-        Method m = FindTheParameterizedType.class.getMethod("method", Map.class, List.class);
-
-        out.println(m.toString());
-        out.println(m.toGenericString());
-
-        Type[] types = m.getGenericParameterTypes();
-        ParameterizedType pt = (ParameterizedType) types[0];
-
-        Type keyType = pt.getActualTypeArguments()[0];
-        Type valueType = pt.getActualTypeArguments()[1];
-
-        out.printf("   key type: %s\n", rawType(keyType));
-        out.printf(" value type: %s\n", rawType(valueType));
-
-        Type listType = types[1];
-
-        out.printf("  list type: %s\n", rawType(listType));
-    }
-
-    private static Class rawType(Type type)
-    {
-        if (type instanceof ParameterizedType)
-        {
-            ParameterizedType pt = (ParameterizedType) type;
-
-            return rawType(pt.getRawType());
-        }
-
-        if (type instanceof Class)
-        {
-            return (Class) type;
-        }
-
-        throw new IllegalArgumentException();
-    }
-
-    public void method(Map<String, Orderer<Runnable>> configuration, List list)
-    {
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/IdentifyTransformer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/IdentifyTransformer.java
deleted file mode 100644
index 86d59d5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/IdentifyTransformer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-public class IdentifyTransformer<T> implements Transformer<T>
-{
-    public T transform(T input)
-    {
-        return input;
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/StringToEnumCoercionTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/StringToEnumCoercionTest.java
deleted file mode 100644
index 4bd9323..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/StringToEnumCoercionTest.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-import junit.framework.AssertionFailedError;
-
-import org.apache.tapestry5.root.Stooge;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class StringToEnumCoercionTest extends Assert
-{
-    @Test
-    public void value_found()
-    {
-        StringToEnumCoercion<Stooge> coercion = new StringToEnumCoercion<Stooge>(Stooge.class);
-
-        assertSame(coercion.coerce("moe"), Stooge.MOE);
-        assertSame(coercion.coerce("curly_joe"), Stooge.CURLY_JOE);
-    }
-
-    @Test
-    public void value_found_by_alias()
-    {
-        StringToEnumCoercion<Stooge> coercion = new StringToEnumCoercion<Stooge>(Stooge.class);
-
-        assertSame(coercion.addAlias("Shemp", Stooge.CURLY_JOE).coerce("shemp"), Stooge.CURLY_JOE);
-    }
-
-    @Test
-    public void blank_is_null()
-    {
-        StringToEnumCoercion<Stooge> coercion = new StringToEnumCoercion<Stooge>(Stooge.class);
-
-        assertNull(coercion.coerce(""));
-    }
-
-    @Test
-    public void value_not_found()
-    {
-        StringToEnumCoercion<Stooge> coercion = new StringToEnumCoercion<Stooge>(Stooge.class);
-
-        try
-        {
-            coercion.coerce("shemp");
-            throw new AssertionFailedError("unreachable");
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Input \'shemp\' does not identify a value from enumerated type org.apache.tapestry5.root.Stooge. Available values: CURLY_JOE, LARRY, MOE.");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/Transformer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/Transformer.java
deleted file mode 100644
index f8494d1..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/Transformer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-public interface Transformer<T>
-{
-    T transform(T input);
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/UppercaseTransformer.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/UppercaseTransformer.java
deleted file mode 100644
index c5177fa..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/util/UppercaseTransformer.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.util;
-
-
-public class UppercaseTransformer implements Transformer<String>
-{
-    public String transform(String input)
-    {
-        return input.toUpperCase();
-    }
-}
-
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/EmailTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/EmailTest.java
deleted file mode 100644
index 5ba10d4..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/EmailTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-public class EmailTest extends InternalBaseTestCase
-{
-    @Test
-    public void matching_pattern() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-
-        replay();
-
-        Email validator = new Email();
-
-        validator.validate(field, null, formatter, "myemail@mail.com");
-
-        verify();
-    }
-
-    @Test
-    public void input_mismatch() throws Exception
-    {
-        String label = "My Field";
-        Field field = mockFieldWithLabel(label);
-        MessageFormatter formatter = mockMessageFormatter();
-        String message = "{message}";
-
-        train_format(formatter, message, label);
-
-        replay();
-
-        Email validator = new Email();
-
-        try
-        {
-            validator.validate(field, null, formatter, "invalid_email");
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-
-            verify();
-        }
-
-        field = mockFieldWithLabel(label);
-
-        train_format(formatter, message, label);
-
-        replay();
-
-        try
-        {
-            validator.validate(field, null, formatter, "@mail.com");
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-
-            verify();
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MaxLengthTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MaxLengthTest.java
deleted file mode 100644
index 0d1daac..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MaxLengthTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-public class MaxLengthTest extends InternalBaseTestCase
-{
-    @Test
-    public void short_enough() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        String value = "Now the student has become the master.";
-
-        replay();
-
-        MaxLength validator = new MaxLength();
-
-        validator.validate(field, value.length(), formatter, value);
-
-        verify();
-    }
-
-    @Test
-    public void long_value() throws Exception
-    {
-        String label = "My Field";
-        Field field = mockFieldWithLabel(label);
-        MessageFormatter formatter = mockMessageFormatter();
-        String value = "Now the student has become the master.";
-        String message = "{message}";
-        Integer constraint = value.length() - 1;
-
-        train_format(formatter, message, constraint, label);
-
-        replay();
-
-        MaxLength validator = new MaxLength();
-
-        try
-        {
-            validator.validate(field, constraint, formatter, value);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MaxTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MaxTest.java
deleted file mode 100644
index a6ff254..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MaxTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-public class MaxTest extends InternalBaseTestCase
-{
-    @Test
-    public void small_enough() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Long constraint = 50L;
-
-        replay();
-
-        Max validator = new Max();
-
-        for (int value = 48; value <= 50; value++)
-            validator.validate(field, constraint, formatter, value);
-
-        verify();
-    }
-
-    @Test
-    public void value_too_large() throws Exception
-    {
-        String label = "My Field";
-        Field field = mockFieldWithLabel(label);
-        MessageFormatter formatter = mockMessageFormatter();
-        String message = "{message}";
-        Long constraint = 100l;
-        Number value = 101;
-
-        train_format(formatter, message, constraint, label);
-
-        replay();
-
-        Max validator = new Max();
-
-        try
-        {
-            validator.validate(field, constraint, formatter, value);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MinLengthTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MinLengthTest.java
deleted file mode 100644
index 9996d14..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MinLengthTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-public class MinLengthTest extends InternalBaseTestCase
-{
-
-    @Test
-    public void long_enough() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        String value = "Now the student has become the master.";
-
-        replay();
-
-        MinLength validator = new MinLength();
-
-        validator.validate(field, value.length(), formatter, value);
-
-        verify();
-    }
-
-    @Test
-    public void short_value() throws Exception
-    {
-        String label = "My Field";
-        Field field = mockFieldWithLabel(label);
-        MessageFormatter formatter = mockMessageFormatter();
-        String value = "Now the student has become the master.";
-        String message = "{message}";
-        Integer constraint = value.length() + 1;
-
-        train_format(formatter, message, constraint, label);
-
-        replay();
-
-        MinLength validator = new MinLength();
-
-        try
-        {
-            validator.validate(field, constraint, formatter, value);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MinTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MinTest.java
deleted file mode 100644
index b36675d..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/MinTest.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-public class MinTest extends InternalBaseTestCase
-{
-    @Test
-    public void large_enough() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Long constraint = 50L;
-
-        replay();
-
-        Min validator = new Min();
-
-        for (int value = 50; value < 52; value++)
-            validator.validate(field, constraint, formatter, value);
-
-        verify();
-    }
-
-    @Test
-    public void value_too_small() throws Exception
-    {
-        String label = "My Field";
-        Field field = mockFieldWithLabel(label);
-        MessageFormatter formatter = mockMessageFormatter();
-        String message = "{message}";
-        Long constraint = 100l;
-        Number value = 99;
-
-        train_format(formatter, message, constraint, label);
-
-        replay();
-
-        Min validator = new Min();
-
-        try
-        {
-            validator.validate(field, constraint, formatter, value);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/RegexpTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/RegexpTest.java
deleted file mode 100644
index 58ceb57..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/RegexpTest.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.internal.test.InternalBaseTestCase;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.testng.annotations.Test;
-
-import java.util.regex.Pattern;
-
-/**
- * These are getting tedious; I'd rather do it via integration tests.
- */
-public class RegexpTest extends InternalBaseTestCase
-{
-    @Test
-    public void matching_pattern() throws Exception
-    {
-        Field field = mockField();
-        MessageFormatter formatter = mockMessageFormatter();
-        Pattern constraint = Pattern.compile("\\d{4}");
-
-        replay();
-
-        Regexp validator = new Regexp();
-
-        validator.validate(field, constraint, formatter, "1234");
-
-        verify();
-    }
-
-    @Test
-    public void input_mismatch() throws Exception
-    {
-        String label = "My Field";
-        Field field = mockFieldWithLabel(label);
-        MessageFormatter formatter = mockMessageFormatter();
-        String message = "{message}";
-        Pattern constraint = Pattern.compile("\\d{4}");
-        String value = "abc";
-
-        train_format(formatter, message, constraint.toString(), label);
-
-        replay();
-
-        Regexp validator = new Regexp();
-
-        try
-        {
-            validator.validate(field, constraint, formatter, value);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), message);
-        }
-
-        verify();
-
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/RequiredTest.java b/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/RequiredTest.java
deleted file mode 100644
index ef337e5..0000000
--- a/maint-5-2/tapestry-core/src/test/java/org/apache/tapestry5/validator/RequiredTest.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.validator;
-
-import java.util.Arrays;
-
-import org.apache.tapestry5.Field;
-import org.apache.tapestry5.ValidationException;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-public class RequiredTest extends TapestryTestCase
-{
-    @Test
-    public void null_value()
-    {
-        Field field = mockFieldWithLabel("My Field");
-        MessageFormatter formatter = mockMessageFormatter();
-
-        train_format(formatter, "{message}", "My Field");
-
-        replay();
-
-        try
-        {
-            new Required().validate(field, null, formatter, null);
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), "{message}");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void blank_value()
-    {
-        MessageFormatter formatter = mockMessageFormatter();
-        Field field = mockFieldWithLabel("My Field");
-
-        train_format(formatter, "{message}", "My Field");
-
-        replay();
-
-        try
-        {
-            new Required().validate(field, null, formatter, "");
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), "{message}");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void empty_collection_value()
-    {
-        MessageFormatter formatter = mockMessageFormatter();
-        Field field = mockFieldWithLabel("My Field");
-
-        train_format(formatter, "{message}", "My Field");
-
-        replay();
-
-        try
-        {
-            new Required().validate(field, null, formatter, Arrays.asList());
-            unreachable();
-        }
-        catch (ValidationException ex)
-        {
-            assertEquals(ex.getMessage(), "{message}");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void not_empty_collection_value() throws Exception
-    {
-        MessageFormatter formatter = mockMessageFormatter();
-        Field field = mockField();
-
-        replay();
-
-        new Required().validate(field, null, formatter, Arrays.asList("A", "B"));
-
-        verify();
-    }
-
-    @Test
-    public void non_blank_value() throws Exception
-    {
-        MessageFormatter formatter = mockMessageFormatter();
-        Field field = mockField();
-
-        replay();
-
-        new Required().validate(field, null, formatter, "not null");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-core/src/test/linktrans/WEB-INF/web.xml b/maint-5-2/tapestry-core/src/test/linktrans/WEB-INF/web.xml
deleted file mode 100644
index 04bb3e1..0000000
--- a/maint-5-2/tapestry-core/src/test/linktrans/WEB-INF/web.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-  <display-name>LinkTransformer Test App</display-name>
-  <context-param>
-    <param-name>tapestry.app-package</param-name>
-    <param-value>org.apache.tapestry5.integration.linktrans</param-value>
-  </context-param>
-  <filter>
-    <filter-name>app</filter-name>
-    <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-  </filter>
-  <filter-mapping>
-    <filter-name>app</filter-name>
-    <url-pattern>/*</url-pattern>
-  </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-core/src/test/resources/log4j.properties b/maint-5-2/tapestry-core/src/test/resources/log4j.properties
deleted file mode 100644
index 5ed398e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2005, 2006, 2007, 2008, 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=INFO, A1
-
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry5.integration.app2=debug
-
-# log4j.category.tapestry.render=debug
-
-# log4j.category.org.apache.tapestry5.corelib.components=debug
-
diff --git a/maint-5-2/tapestry-core/src/test/resources/nonaccessible.css b/maint-5-2/tapestry-core/src/test/resources/nonaccessible.css
deleted file mode 100644
index 7812424..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/nonaccessible.css
+++ /dev/null
@@ -1 +0,0 @@
-//Bla
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/blank_label.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/blank_label.txt
deleted file mode 100644
index 347e5f1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/blank_label.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><option value="">Make a selection</option><option value="fred">Fred Flintstone</option><option selected="selected" value="barney">Barney Rubble</option></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/current_selection_from_validation_tracker.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/current_selection_from_validation_tracker.txt
deleted file mode 100644
index bfbc0a8..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/current_selection_from_validation_tracker.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><option selected="selected" value="fred">Fred Flintstone</option><option value="barney">Barney Rubble</option></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/disabled_option.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/disabled_option.txt
deleted file mode 100644
index a4cf604..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/disabled_option.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><option class="pixie" disabled="disabled" value="fred">Fred</option></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/just_options.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/just_options.txt
deleted file mode 100644
index 5b2171a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/just_options.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><option value="fred">Fred Flintstone</option><option selected="selected" value="barney">Barney Rubble</option></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_attributes.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_attributes.txt
deleted file mode 100644
index ab453ed..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_attributes.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><option class="pixie" value="fred">Fred</option></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_group_attributes.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_group_attributes.txt
deleted file mode 100644
index f0cff6b..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_group_attributes.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><optgroup class="pixie" label="Husbands"><option selected="selected" value="Fred">Fred</option><option value="Barney">Barney</option></optgroup></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_groups.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_groups.txt
deleted file mode 100644
index 3035c4a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_groups.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><optgroup label="Husbands"><option selected="selected" value="Fred">Fred</option><option value="Barney">Barney</option></optgroup><optgroup disabled="disabled" label="Wives"><option value="Wilma">Wilma</option><option value="Betty">Betty</option></optgroup></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_groups_precede_ungroup_options.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_groups_precede_ungroup_options.txt
deleted file mode 100644
index 7d49d8e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/corelib/components/option_groups_precede_ungroup_options.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<select><optgroup label="Husbands"><option selected="selected" value="Fred">Fred</option><option value="Barney">Barney</option></optgroup><option value="Wilma">Wilma</option><option value="Betty">Betty</option></select>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/defaults_for_xml_defined_namespaces.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/defaults_for_xml_defined_namespaces.txt
deleted file mode 100644
index 686a737..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/defaults_for_xml_defined_namespaces.txt
+++ /dev/null
@@ -1 +0,0 @@
-<html xml:lang="de" xmlns="http://www.w3.org/1999/xhtml"></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/document_with_root_element_and_attributes.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/document_with_root_element_and_attributes.txt
deleted file mode 100644
index 6986059..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/document_with_root_element_and_attributes.txt
+++ /dev/null
@@ -1 +0,0 @@
-<has-attributes barney="rubble" fred="flintstone"></has-attributes>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/namespace_element_without_a_prefix.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/namespace_element_without_a_prefix.txt
deleted file mode 100644
index 25b2ed5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/namespace_element_without_a_prefix.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<root xmlns="fredns"><child><barney ns0:wilma="c" betty:betty="b" simple="a" xmlns="barneyns" xmlns:betty="bettyns" xmlns:ns0="wilmans"/></child></root>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/namespaced_elements.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/namespaced_elements.txt
deleted file mode 100644
index 1186a88..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/namespaced_elements.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<f:root xmlns:b="barneyns" xmlns:f="fredns"><f:nested><b:deepest/></f:nested></f:root>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/nested_elements.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/nested_elements.txt
deleted file mode 100644
index 400392d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/nested_elements.txt
+++ /dev/null
@@ -1 +0,0 @@
-<population><person last-name="Flintstone" first-name="Fred"></person><person last-name="Rubble" first-name="Barney"></person></population>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/quote_using_apostrophes.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/quote_using_apostrophes.txt
deleted file mode 100644
index 45758ea..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/dom/quote_using_apostrophes.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<f:root xmlns:b='barneyns' xmlns:f='fredns'><f:nested attribute='value'><b:deepest/></f:nested></f:root>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/BaseLayoutPage.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/BaseLayoutPage.tml
deleted file mode 100644
index 3b214d0..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/BaseLayoutPage.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:extension-point id="header">
-        <h1 id="title">
-            <span t:id="titleDelegate"/>
-        </h1>
-    </t:extension-point>
-
-    <t:extension-point id="content">
-        <p id="pagecontent">Default Page Content</p>
-    </t:extension-point>
-
-</t:border>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/EmptyExtendTemplate.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/EmptyExtendTemplate.tml
deleted file mode 100644
index 10a46c9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/EmptyExtendTemplate.tml
+++ /dev/null
@@ -1,4 +0,0 @@
-<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-
-</t:extend>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/GenericEditor.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/GenericEditor.tml
deleted file mode 100644
index f655385..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/base/GenericEditor.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:border xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Editor for ${beanType}</h1>
-
-    <form t:id="form"/>
-
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BadPublishDuplicate.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BadPublishDuplicate.tml
deleted file mode 100644
index 369eefd..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BadPublishDuplicate.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:form xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-        xmlns:p="tapestry:parameter">
-    <input t:id="textfield"/>
-    <input t:id="passwordfield"/>
-</t:form>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BadPublishUnknown.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BadPublishUnknown.tml
deleted file mode 100644
index 8154b0e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BadPublishUnknown.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <span t:id="publish1"/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BindParameterComponentContainer.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BindParameterComponentContainer.tml
deleted file mode 100644
index 21ae393..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/BindParameterComponentContainer.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Copyright 2009 The Apache Software Foundation
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
-    <t:bindparametercomponent/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Border.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Border.tml
deleted file mode 100644
index d03c8c1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Border.tml
+++ /dev/null
@@ -1,72 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

-<html xmlns="http://www.w3.org/1999/xhtml" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    <head>

-        <title>Tapestry Integration Test Application #1</title>

-    </head>

-    <body>

-        <div id="wrap">

-

-            <div id="header">

-                <h1>Tapestry Integration Test Application</h1>

-            </div>

-

-            <div id="content">

-                <div id="topspread">

-                    <t:body/>

-                </div>

-

-

-                <div id="right">

-                    <div class="menu">

-                        <h4>Navigation</h4>

-                        <ul>

-                            <li>

-                                Page:

-                                <span id="activePageName">${componentResources.pageName}</span>

-                            </li>

-                            <li>Access:

-                                <span id="secure">${secure}</span>

-                            </li>

-                            <li>

-                                <t:pagelink page="index">Back to index</t:pagelink>

-                            </li>

-                        </ul>

-

-                        <h4>Infrastructure</h4>

-

-                        <dl>

-                            <dt>IOC Layer: ${iocClassFactory.createdClassCount} classes</dt>

-                            <dd>Service proxies and interceptors</dd>

-

-                            <dt>Component Layer: ${componentClassFactory.createdClassCount} classes</dt>

-                            <dt>Locale:</dt>

-                            <dd>${componentResources.locale}</dd>

-                        </dl>

-

-                    </div>

-                </div>

-

-                <div id="left">

-                    <h3>Request info:</h3>

-

-                    <t:renderobject object="request"/>

-

-                </div>

-

-

-                <div style="clear:both;"></div>

-

-

-            </div>

-            <div id="footer">

-                &copy; 2008-2010

-                <a href="http://apache.org/">Apache Software Foundation</a>

-            </div>

-

-            <div id="bottom"/>

-

-        </div>

-

-

-    </body>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritBottom.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritBottom.tml
deleted file mode 100644
index e095b51..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritBottom.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <dt>${componentResources.nestedId}</dt>
-    <dd id="${componentResources.nestedId}">
-        ${bvalue}
-    </dd>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritMiddle.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritMiddle.tml
deleted file mode 100644
index d028a09..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritMiddle.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <dt>${componentResources.nestedId}</dt>
-    <dd id="${componentResources.nestedId}">
-        ${mvalue}
-    </dd>
-
-    <t:inheritBottom t:id="bottom" bvalue="inherit:mvalue"/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritTop.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritTop.tml
deleted file mode 100644
index 9531cbf..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/InheritTop.tml
+++ /dev/null
@@ -1,11 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <dt>${componentResources.nestedId}</dt>
-    <dd id="${componentResources.nestedId}">
-        ${value}
-    </dd>
-
-    <t:inheritMiddle t:id="middle" mvalue="inherit:value"/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Outer.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Outer.tml
deleted file mode 100644
index 5f0dfec..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Outer.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<span xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <t:inner innerValue="inherit:outerValue"/>
-</span>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/OuterAny.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/OuterAny.tml
deleted file mode 100644
index de36e81..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/OuterAny.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:container
-        xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <span t:id="innerAny">
-        <t:body/>
-    </span>
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish1.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish1.tml
deleted file mode 100644
index 4da0201..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish1.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <h1>Publish1</h1>
-
-    <t:publish2 t:id="publish2"/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish2.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish2.tml
deleted file mode 100644
index 6a65345..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish2.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <h2>Publish 2</h2>
-    <t:publish3 t:id="publish3"/>
-
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish3.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish3.tml
deleted file mode 100644
index 1a5e6c4..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Publish3.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<dl xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"
-    xmlns:p="tapestry:parameter">
-    <dt>Where</dt>
-    <dd id="p3-where">${id}</dd>
-    <dt>Number</dt>
-    <dd id="p3-number">${number}</dd>
-    <dt>Value</dt>
-    <dd id="p3-value">${value}</dd>
-</dl>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Recursive.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Recursive.tml
deleted file mode 100644
index 9f68845..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/components/Recursive.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<div xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <p>
-    This component is <t:recursive>recursive</t:recursive>, so we'll see a failure.
-  </p>
-  
-  <t:body/>
-  
-</div>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ActionPage.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ActionPage.tml
deleted file mode 100644
index 624a03a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ActionPage.tml
+++ /dev/null
@@ -1,15 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-

-    <p> Choose a number from 1 to 10: </p>
-
-    <p>
-        <t:count  end="10" value="index">
-            <a t:id="choose" t:type="ActionLink" context="index" class="linkClass">${index}</a>
-        </t:count>
-    </p>
-
-    <t:if test="value">
-        <p> <strong>You chose: ${value}</strong>.</p>
-    </t:if>
-
-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/AttributeExpansionsDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/AttributeExpansionsDemo.properties
deleted file mode 100644
index aa1bb5c..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/AttributeExpansionsDemo.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-cssClassPrefix=goober-
-alert=expansions work inside formal component parameters as well
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BadTemplate.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BadTemplate.tml
deleted file mode 100644
index 627acb9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BadTemplate.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-

-    <p>
-        This template is not well formed.</p>

-    

-    <t:foobar>content from template</foobar>

-    

-    <p>
-        This page is used to test exception reporting.
-    </p>

-    

-</html>   
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Barney.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Barney.tml
deleted file mode 100644
index 9b01b71..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Barney.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <p>
-        You clicked Barney.
-    </p>
-    
-    <p>
-        In this case, @InjectPage determined the target page via the value attribute of the annotation.
-    </p>
-    
-    <p>
-        [<a t:type="PageLink" t:page="InjectDemo">Back</a>]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BeanDisplayEnumDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BeanDisplayEnumDemo.properties
deleted file mode 100644
index 807ffeb..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BeanDisplayEnumDemo.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2010 The Apache Software Foundation

-#

-# Licensed under the Apache License, Version 2.0 (the "License");

-# you may not use this file except in compliance with the License.

-# You may obtain a copy of the License at

-#

-#     http://www.apache.org/licenses/LICENSE-2.0

-#

-# Unless required by applicable law or agreed to in writing, software

-# distributed under the License is distributed on an "AS IS" BASIS,

-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-# See the License for the specific language governing permissions and

-# limitations under the License.

-

-Urgency.high=Ultra Important

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.properties
deleted file mode 100644
index a86def5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BeanEditorDemo.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-birthYear-label=Year of Birth
-lastName-required-message=Everyone has to have a last name!
-citizen-label=U.S. Citizen
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterDemo.tml
deleted file mode 100644
index d5cdc3d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterDemo.tml
+++ /dev/null
@@ -1,32 +0,0 @@
-<!--
-  ~ Copyright 2009 The Apache Software Foundation
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    
-  <t:form>
-      <t:textfield t:id="testmixin" value="myproperty" t:mixins="echovalue"/>
-      <t:textfield t:id="testmixin2" value="myproperty2" t:mixins="echovalue2"/>
-      <t:textfield t:id="testmixin3" value="myproperty3" t:mixins="echovalue3"/>
-      <t:textfield t:id="multimixins" value="myproperty4" t:mixins="echovalue::before:*, echovalue2::before:echovalue3, echovalue3"/>
-      <t:textonlyondisabledtextfield t:id="defaultbinding" value="myproperty5" disabled="true" t:mixins="echovalue"/>
-  </t:form>
-
-  <div id="mypropertyoutput">${myproperty}</div>
-  <div id="mypropertyoutput2">${myproperty2}</div>
-  <div id="mypropertyoutput3">${myproperty3}</div>
-  <div id="mypropertyoutput4">${myproperty4}</div>
-  <div id="mypropertyoutput5">${myproperty5}</div>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterNoSuchParameter.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterNoSuchParameter.tml
deleted file mode 100644
index 1fd1d00..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterNoSuchParameter.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Copyright 2009 The Apache Software Foundation
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    
- <t:any t:id="throwexception" t:mixins="echovalue2"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterOnComponent.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterOnComponent.tml
deleted file mode 100644
index 8d75b3f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/BindParameterOnComponent.tml
+++ /dev/null
@@ -1,21 +0,0 @@
-<!--
-  ~ Copyright 2009 The Apache Software Foundation
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
- <t:bindparametercomponentcontainer t:id="throwexception"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/CachedPage.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/CachedPage.tml
deleted file mode 100644
index 9c62288..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/CachedPage.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-	<h1>@Cached tests</h1>
-	<p>This page tests method result caching.</p>
-	
-	<span id="value">${value}${value}${value}</span>
-	<span id="value2size">${value2.size()}${value2.size()}${value2.size()}</span>
-	
-	${incrWatchValue()}
-	<span class="watch">${value3}</span>
-	<span class="watch">${value3}</span>
-	${incrWatchValue()}
-	<span class="watch">${value3}</span>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties
deleted file mode 100644
index a700967..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ClientFormatDemo.properties
+++ /dev/null
@@ -1 +0,0 @@
-quantity-integer-message=Provide quantity as a number.
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Countdown.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Countdown.tml
deleted file mode 100644
index ba70550..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Countdown.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    <p>This component demonstrates embedded components defined in the component class using the @Component annotation.

-    </p>

-    <p>Countdown:

-        <div t:id="count" xml:space="preserve">

-            ${countValue}

-        </div>

-    </p>

-

-    <p>

-        Brought to you by the ${component:count} component.

-    </p>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EnvironmentalDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EnvironmentalDemo.tml
deleted file mode 100644
index dcd53c1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/EnvironmentalDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-
-    <t:RenderableProvider>
-        <p> This page demonstrates how components can use the Environment service, and the @Environmental annotation, to
-            coordinate behavior. </p>
-
-        <p> RenderableUser:[<t:RenderableUser/>]</p>
-    </t:RenderableProvider>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Expansion.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Expansion.tml
deleted file mode 100644
index e779e22..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Expansion.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    

-    <p>
-        This page contains no components, but does contain a [${expansionValue}].
-    </p>

-

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Fred.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Fred.tml
deleted file mode 100644
index 5e123ab..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Fred.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <p>
-        You clicked Fred.
-    </p>
-    
-    <p>
-        In this case, @InjectPage determined the target page via the field type.
-    </p>
-    
-    <p>
-        [<a t:type="PageLink" t:page="InjectDemo">Back</a>]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/GridEnumDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/GridEnumDemo.properties
deleted file mode 100644
index f68fcf5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/GridEnumDemo.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-high=Ultra Important
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/GridFormDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/GridFormDemo.properties
deleted file mode 100644
index cfd6b86..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/GridFormDemo.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-high=Top Priority
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectComponentMismatch.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectComponentMismatch.tml
deleted file mode 100644
index 851b5eb..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectComponentMismatch.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <t:beaneditform t:id="form" object="this"/>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectContainerMismatch.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectContainerMismatch.tml
deleted file mode 100644
index 9259b82..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectContainerMismatch.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <p>
-        This page should never be rendered because of the InjectComponent mismatch inside it.
-    </p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectDemo.tml
deleted file mode 100644
index 9a5c10f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InjectDemo.tml
+++ /dev/null
@@ -1,25 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    <p>Demonstrates the use of the @Inject annotation.</p>

-    <p>WebRequest: ${request}</p>

-    <p>ComponentResources: ${resources}</p>

-    <p>BindingSource: ${bindingSource}</p>

-    <p>Injected Symbol: ${injectedSymbol}</p>

-    <p>Injection via Marker: ${greeting}</p>

-    <p>Injection via @InjectService:

-        <span id="viaInjectService">${musicLibrary.tracks.size()} tracks in music library</span>

-    </p>

-

-    <p>

-        ActionLinks used to demonstrate the use of @InjectPage:

-    </p>

-

-    <p>

-        <a t:id="fred" t:type="ActionLink">Fred</a>

-    </p>

-    <p>

-        <a t:id="barney" t:type="ActionLink">Barney</a>

-    </p>

-    <p>

-        <a t:id="wilma" t:type="ActionLink">Wilma</a>

-    </p>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InstanceMixin.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InstanceMixin.tml
deleted file mode 100644
index d202407..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/InstanceMixin.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-
-    <p> Date #1: [<t:output 

-        t:mixins="Emphasis" 

-        value="date1" 

-        test="showEmphasis"
-        format="format"/>]
-    </p>

-    

-    <p>
-        Date #2: [<span t:id="output2"/>]  (via @Mixins)
-    </p>

-    

-    <p>
-        Date #3: [<span t:id="output3"/>] (via @MixinClasses)
-    </p>
-
-    <p>
-        <a t:id="toggle" t:type="ActionLink">Toggle emphasis</a>
-    </p>

-    

-    <p>
-        Show emphasis: ${showEmphasis}
-    </p>
-
-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Localization.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Localization.properties
deleted file mode 100644
index 81537f6..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Localization.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-via-inject=Accessed via injected Messages
-via-prefix=Accessed via message: binding prefix
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Localization.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Localization.tml
deleted file mode 100644
index 69d94e2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Localization.tml
+++ /dev/null
@@ -1,25 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Localization</h1>
-
-
-    <p>Demonstrates a few ways that component message catalogs can be accessed in code and in the
-        template.
-    </p>
-
-
-    <p>Via injected Messages property: [${injectedMessage}]</p>
-
-    <p>Via message: binding prefix: [${message:via-prefix}]</p>
-
-    <p>From Application Message Catalog: [${message:app-catalog-status}]</p>
-
-    <p>Page locale: [${locale}]</p>
-
-    <p>Request locale: [${request.locale}]</p>
-
-    <a t:type="ActionLink" t:id="french">French</a>
-
-    <a t:type="ActionLink" t:id="english">English</a>
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MessageConstraintGeneratorDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MessageConstraintGeneratorDemo.properties
deleted file mode 100644
index dc85b3e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MessageConstraintGeneratorDemo.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-name-validate=required
-age-validate=required,min=1,max=120
-
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MissingComponentClassException.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MissingComponentClassException.tml
deleted file mode 100644
index 9294255..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MissingComponentClassException.tml
+++ /dev/null
@@ -1,29 +0,0 @@
-<!--

-  ~ Copyright 2009 The Apache Software Foundation

-  ~

-  ~ Licensed under the Apache License, Version 2.0 (the "License");

-  ~ you may not use this file except in compliance with the License.

-  ~ You may obtain a copy of the License at

-  ~

-  ~      http://www.apache.org/licenses/LICENSE-2.0

-  ~

-  ~ Unless required by applicable law or agreed to in writing, software

-  ~ distributed under the License is distributed on an "AS IS" BASIS,

-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

-  ~ See the License for the specific language governing permissions and

-  ~ limitations under the License.

-  -->

-

-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-

-    <p>

-        This template has a component with an undeterminable component class (not properly declared in either the

-    template or the containing component class).</p>

-    

-    <input t:id="componentwithnotype" value="someproperty"/>

-    

-    <p>

-        This page is used to test exception reporting.

-    </p>

-    

-</html>   
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MixinOrderingDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MixinOrderingDemo.tml
deleted file mode 100644
index fd284cb..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/MixinOrderingDemo.tml
+++ /dev/null
@@ -1,47 +0,0 @@
-<!--
-  ~ Copyright 2009 The Apache Software Foundation
-  ~
-  ~ Licensed under the Apache License, Version 2.0 (the "License");
-  ~ you may not use this file except in compliance with the License.
-  ~ You may obtain a copy of the License at
-  ~
-  ~      http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~ Unless required by applicable law or agreed to in writing, software
-  ~ distributed under the License is distributed on an "AS IS" BASIS,
-  ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~ See the License for the specific language governing permissions and
-  ~ limitations under the License.
-  -->
-
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    
-  <t:form>
-      <p>
-          Explicit and implicit ordering, all in template, using globbing:
-      </p>
-      <t:textfield t:id="order1" value="myproperty" t:mixins="echovalue::before:*, echovalue2::before:echovalue3, echovalue3"/>
-
-      <p>
-          Explicit and implicit ordering, all in template, no globbing, but multiple order constraints specified for at least one mixin:
-      </p>
-      <t:textfield t:id="order2" value="myproperty" t:mixins="echovalue::after:echovalue2;after:echovalue3, echovalue2::after:echovalue3, echovalue3"/>
-
-      <p>Mixture of template, @Mixins, and @MixinClasses ordering, all ordered.</p>
-      <input t:id="order3" value="myproperty" t:mixins="echovalue3::before:echovalue"/>
-
-      <p>Mixture of template, @Mixins, and @MixinClasses, with the only constraints specified in the template and @Mixins</p>
-      <input t:id="order4" value="myproperty" t:mixins="echovalue3::before:echovalue"/>
-
-      <p>Mixture of template, @Mixins, and @MixinClasses, with the only constraints specified in the template and @MixinClasses</p>
-      <input t:id="order5" value="myproperty" t:mixins="echovalue3::after:echovalue"/>
-
-      <p>Mixture of template, @Mixins, @MixinClasses, and @Mixin ordering. Note that all of the above also include @Mixin without explicit ordering constraints since textfield has an implementation mixin.</p>
-      <input t:id="order6" disabled="true" value="myproperty" t:mixins="echovalue::before:echovalue3"/>
-
-      <p>Mingling mixin after with mixin before</p>
-      <!-- the constraint on echoafter2 should have no effect. -->
-      <t:textfield t:id="order7" value="myproperty" t:mixins="echovalue::before:echovalue2, echovalue2, echoafter::after:echoafter2, echoafter2::before:echovalue"/>
-  </t:form>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/NumberSelect.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/NumberSelect.tml
deleted file mode 100644
index 3d0f099..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/NumberSelect.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Number Selection</h1>
-    
-    <p>  Demonstration of passivate/activate page logic.</p>
-
-    <p>
-        Select a number from this list:
-        
-        <t:loop  source="1..10" value="index">
-            <t:if  test="notFirst"> - </t:if>
-            <a t:type="ActionLink" t:id="select" context="index">${index}</a>
-        </t:loop> 
-    </p>
-    
-    
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.properties
deleted file mode 100644
index 7e12550..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/OverrideDateFieldMessageCatalogDemo.properties
+++ /dev/null
@@ -1,14 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-date-value-not-parseable=The input '%s' is not a valid date
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ParameterConflict.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ParameterConflict.tml
deleted file mode 100644
index 4be1603..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ParameterConflict.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-    <p>This component demonstrates that template values are overriden by

-        bindings inside the @Component annotation, in the component class.

-    </p>

-

-    Output:

-    <span t:id="echo" value="literal:TemplateValue"/>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ParameterDefault.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ParameterDefault.tml
deleted file mode 100644
index 75c31ff..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ParameterDefault.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-
-  Echo component default: [<t:echo t:id="echo"/>]
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/PerFormValidationMessageDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/PerFormValidationMessageDemo.properties
deleted file mode 100644
index 64eb200..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/PerFormValidationMessageDemo.properties
+++ /dev/null
@@ -1,7 +0,0 @@
-register-userid-required-message=Enter a unique user id, such as your initials.
-login-userid-required-message=Enter the unique user id you provided when you registerred.
-
-# You'd never actually do this, but ...
-
-login-userid-minlength=10
-register-userid-minlength=20
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ReadSessionAttribute.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ReadSessionAttribute.tml
deleted file mode 100644
index cb39042..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ReadSessionAttribute.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <h1>Read SessionAttribute Demo</h1>
-    
-    <p>read ${favoriteTrack.title}</p>

-    <p>read ${anotherTrack.title}</p>

-        
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RegexpDemo.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RegexpDemo.properties
deleted file mode 100644
index c0acbee..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RegexpDemo.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-zipcode-regexp=\\d{5}(\-\\d{4})?
-zipcode-regexp-message=A zip code consists of five or nine digits, eg: 02134 or 90125-4472.
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RenderClientIdDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RenderClientIdDemo.tml
deleted file mode 100644
index 86414fc..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RenderClientIdDemo.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-
-<p>
-    This page demonstrates the forcing the rendering of the client id of a component via the RenderClientId mixin.
-</p>
-
-<p>
-    <div t:type="any" t:id="divwithid" t:mixins="RenderClientId">
-        Div Content
-    </div>
-
-</p>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RenderPhaseOrder.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RenderPhaseOrder.tml
deleted file mode 100644
index e5b2c27..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/RenderPhaseOrder.tml
+++ /dev/null
@@ -1,15 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-

-    <p>

-        This page demonstrates the order of render phase operations. Certains later phases

-        will execute in the exact opposite order from the earlier phases, to ensure

-        that output operations balance.

-    </p>

-

-    <p>

-        [<t:Tracer t:mixins="TracerMixin" xml:space="preserve">

-        BODY

-    </t:Tracer>]

-    </p>

-

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SecurePage.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SecurePage.tml
deleted file mode 100644
index b05cf82..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SecurePage.tml
+++ /dev/null
@@ -1,50 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>Secure Page Access</h1>
-    
-    <t:if test="context">
-      <p>Context: <span id="context">${context}</span></p>
-    </t:if>
-
-
-    <t:if test="message">
-        <p>
-            Message:
-            <span id="message">${message}</span>
-        </p>
-    </t:if>
-
-    <p>
-        <t:actionlink t:id="secureLink">click</t:actionlink>
-    </p>
-
-    <p>
-        <t:form>
-            <input type="submit" value="Secure Submit"/>
-        </t:form>
-    </p>
-
-    <p>
-        We're also demonstrating the ability to send assets via insecure access.
-    </p>
-
-    <p>
-        The Tapestry banner:
-    </p>
-
-    <img id="icon" src="${icon}"/>
-
-    <p>
-        A classpath asset:
-    </p>
-
-    <img id="button" src="${button}"/>
-
-
-    <p>
-        Relative asset via asset: binding
-    </p>
-
-    <img src="${asset:smiley.png}"/>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SessionAttributeDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SessionAttributeDemo.tml
deleted file mode 100644
index b474f91..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SessionAttributeDemo.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <h1>@SessionAttribute Demo</h1>
-    
-    <p>${favoriteTrack.title}</p>

-    <p>${anotherTrack.title}</p>

-    

-    <t:pagelink page="ReadSessionAttribute">Read SessionAttribute</t:pagelink>

-        
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ShowSelection.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ShowSelection.tml
deleted file mode 100644
index bff1b2e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ShowSelection.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Number Selection</h1>
-    
-    <p>  You chose ${selected}.</p>
-    
-    <p>
-        [<a t:type="PageLink" t:page="NumberSelect">Back</a>]
-    </p>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SimpleForm.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SimpleForm.properties
deleted file mode 100644
index 04d7a53..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SimpleForm.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-urgent-label=Urgent Processing Requested
-
-operatingSystem-blanklabel=Select ...
-os-values=\
-  winnt=Windows NT, \
-  winxp=Windows XP, \
-  vista=Windows Vista, \
-  os9=Mac OS 9, \
-  osx=Mac OS X, \
-  linux=Linux
-
-department-blanklabel=Select...
-  
-# Correct some of the labels for the drop down list
-SALES_AND_MARKETING=Sales/Marketing
-RESEARCH_AND_DESIGN=R&D
-IT=IT
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SubmitWithContext.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SubmitWithContext.tml
deleted file mode 100644
index 6dc84c2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/SubmitWithContext.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <h1>Submit With Context</h1>
-    
-    <p>  Result: ${result}.</p>
-    
-    <p>
-      <t:form>

-            <input t:type="submit" context="formContext" value="Send"/>

-    	</t:form>
-    </p>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TriggerDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TriggerDemo.tml
deleted file mode 100644
index bd7ccbb..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/TriggerDemo.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <h1>Trigger Demo</h1>
-        
-    <t:trigger t:id="provideAdditionalMarkup"/>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ValidForm.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ValidForm.properties
deleted file mode 100644
index f3bb9af..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ValidForm.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-message-required-message=Please provide a detailed description of the incident.
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ValidForm.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ValidForm.tml
deleted file mode 100644
index 579c495..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ValidForm.tml
+++ /dev/null
@@ -1,38 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <h1>Valid Form</h1>
-
-  <p> Tapestry 5 form support with server-side validation. </p>
-
-  <t:form clientValidation="false">
-    <t:errors/>
-    <t:label for="email">This isn't used</t:label>: <input t:type="TextField" t:id="email"
-      value="incident.email" size="50" t:validate="required"/>
-    <br/>
-    <t:label for="message"/>: <textarea t:type="TextArea" t:id="message"
-      t:label="Incident Message" value="incident.message" cols="50" rows="10"> You can put text
-      here, but it isn't used. </textarea>
-    <br/>
-    <input t:type="Checkbox" t:id="urgent" value="incident.urgent"/>
-    <t:label for="urgent"/>
-    <br/>
-    <t:label for="hours"/>: <input t:type="TextField" t:id="hours"
-      value="incident.hours" size="10" t:validate="required"/>
-    <br/>
-    <input type="submit"/>
-  </t:form>
-
-
-  <hr/>
-
-  <p> Entered data: </p>
-
-  <ul>
-    <li>email: [${incident.email}]</li>
-    <li>message: [${incident.message}]</li>
-    <li>urgent: [${incident.urgent}]</li>
-    <li>hours: [${incident.hours}]</li>
-  </ul>
-
-
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/VarBindingDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/VarBindingDemo.tml
deleted file mode 100644
index 7f17451..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/VarBindingDemo.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-    <h1>var: Binding Prefix Demo</h1>
-
-    <p>var: allows a
-        <em>render variable</em>
-        associated with a component
-        to be read and updated from its embedded components.
-    </p>
-
-    <p>
-        Counting from 1 to 3:
-    </p>
-    <ul>
-        <li t:type="loop" source="1..3" value="var:index">${var:index}</li>
-    </ul>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ViewRegistration.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ViewRegistration.properties
deleted file mode 100644
index 59700b7..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/ViewRegistration.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-citizen-label=Citizenship
-male=100% He-Man
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Wilma.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Wilma.tml
deleted file mode 100644
index 5af9803..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/Wilma.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <p>
-        You clicked Wilma.
-    </p>
-    
-    <p>
-        In this case the component event handler method returned the name of the page to activate, as a String.
-    </p>
-    
-    <p>
-        [<a t:type="PageLink" t:page="InjectDemo">Back</a>]
-    </p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/availablefile2.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/availablefile2.txt
deleted file mode 100644
index 8abde56..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/availablefile2.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should be available to clients.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/AssetDemo.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/AssetDemo.tml
deleted file mode 100644
index 34e5768..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/AssetDemo.tml
+++ /dev/null
@@ -1,49 +0,0 @@
-<html t:type="Border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <p>
-    This page demonstrates the ability to inject assets into components and pass them around as
-    parameters.
-    </p>
-
-  <p>
-    The Tapestry banner:
-    </p>
-
-  <img id="icon" src="${icon}"/>
-
-  <p>
-    A classpath asset:
-    </p>
-
-  <img id="button" src="${button}"/>
-
-
-  <p>
-    Relative asset via asset: binding
-    </p>
-
-  <img src="${asset:../smiley.png}"/>
-
-
-  <p>
-    Context asset via context: binding
-    </p>
-
-  <img id="viaContext" src="${context:images/asf_logo_wide.gif}"/>
-
-  <p>
-    IE Conditional Stylesheet:      
-    </p>
-
-  <div class="ie-big-blue">
-    Normal in most browsers, but Big and Blue in IE.
-    </div>
-
-  <p>
-    Via @Import:
-    </p>
-
-  <div class="via-import">
-    This text should be red.
-    </div>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/tapestry-button.png b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/tapestry-button.png
deleted file mode 100644
index 86d9a64..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/nested/tapestry-button.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/smiley.png b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/smiley.png
deleted file mode 100644
index e8aca0d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/smiley.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/unavailablefile.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/unavailablefile.txt
deleted file mode 100644
index 3ced7b7..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/pages/unavailablefile.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should not be available to clients.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/services/PropertyList-1.0.dtd b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/services/PropertyList-1.0.dtd
deleted file mode 100644
index e16ceae..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/services/PropertyList-1.0.dtd
+++ /dev/null
@@ -1,20 +0,0 @@
-<!ENTITY % plistObject "(array | data | date | dict | real | integer | string | true | false )" >

-<!ELEMENT plist %plistObject;>

-<!ATTLIST plist version CDATA "1.0" >

-

-<!-- Collections -->

-<!ELEMENT array (%plistObject;)*>

-<!ELEMENT dict (key, %plistObject;)*>

-<!ELEMENT key (#PCDATA)>

-

-<!--- Primitive types -->

-<!ELEMENT string (#PCDATA)>

-<!ELEMENT data (#PCDATA)> <!-- Contents interpreted as Base-64 encoded -->

-<!ELEMENT date (#PCDATA)> <!-- Contents should conform to a subset of ISO 8601 (in particular, YYYY '-' MM '-' DD 'T' HH ':' MM ':' SS 'Z'.  Smaller units may be omitted with a loss of precision) -->

-

-<!-- Numerical primitives -->

-<!ELEMENT true EMPTY>  <!-- Boolean constant true -->

-<!ELEMENT false EMPTY> <!-- Boolean constant false -->

-<!ELEMENT real (#PCDATA)> <!-- Contents should represent a floating point number matching ("+" | "-")? d+ ("."d*)? ("E" ("+" | "-") d+)? where d is a digit 0-9.  -->

-<!ELEMENT integer (#PCDATA)> <!-- Contents should represent a (possibly signed) integer number in base 10 -->

-

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/services/iTunes.xml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/services/iTunes.xml
deleted file mode 100644
index 25aa86b..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/services/iTunes.xml
+++ /dev/null
@@ -1,64235 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>Major Version</key><integer>1</integer>
-	<key>Minor Version</key><integer>1</integer>
-	<key>Application Version</key><string>7.0.2</string>
-	<key>Features</key><integer>1</integer>
-	<key>Music Folder</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/</string>
-	<key>Library Persistent ID</key><string>094531DBEC195A73</string>
-	<key>Tracks</key>
-	<dict>
-		<key>294</key>
-		<dict>
-			<key>Track ID</key><integer>294</integer>
-			<key>Name</key><string>Bug Juice</string>
-			<key>Artist</key><string>45 Dip</string>
-			<key>Album Artist</key><string>45 Dip</string>
-			<key>Composer</key><string>C. Bemand</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3646633</integer>
-			<key>Total Time</key><integer>227500</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253344667</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:51:07Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-25T17:23:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A09</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/45%20Dip/Late%20Lounge%20(2%20of%202)/12%20Bug%20Juice.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>295</key>
-		<dict>
-			<key>Track ID</key><integer>295</integer>
-			<key>Name</key><string>Warehouse 5am</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9305262</integer>
-			<key>Total Time</key><integer>574529</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-04-14T18:35:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252123089</integer>
-			<key>Play Date UTC</key><date>2007-01-20T15:31:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A0C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/01%20Warehouse%205am.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>296</key>
-		<dict>
-			<key>Track ID</key><integer>296</integer>
-			<key>Name</key><string>Bathdub</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11100356</integer>
-			<key>Total Time</key><integer>685451</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-04-14T18:37:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253543174</integer>
-			<key>Play Date UTC</key><date>2007-02-06T01:59:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A0F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/02%20Bathdub.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>297</key>
-		<dict>
-			<key>Track ID</key><integer>297</integer>
-			<key>Name</key><string>The Calling</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4993935</integer>
-			<key>Total Time</key><integer>308080</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-04-14T18:37:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252482741</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:25:41Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T18:32:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A11</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/03%20The%20Calling.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>298</key>
-		<dict>
-			<key>Track ID</key><integer>298</integer>
-			<key>Name</key><string>Pleidean Communication</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7069366</integer>
-			<key>Total Time</key><integer>436347</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-04-14T18:38:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251377989</integer>
-			<key>Play Date UTC</key><date>2007-01-12T00:33:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A13</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/04%20Pleidean%20Communication.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>299</key>
-		<dict>
-			<key>Track ID</key><integer>299</integer>
-			<key>Name</key><string>Lighten Up</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6420129</integer>
-			<key>Total Time</key><integer>396223</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-04-14T18:39:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253348903</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:01:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A15</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/05%20Lighten%20Up.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>300</key>
-		<dict>
-			<key>Track ID</key><integer>300</integer>
-			<key>Name</key><string>Spacehopper</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10017175</integer>
-			<key>Total Time</key><integer>618531</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-04-14T18:40:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253425630</integer>
-			<key>Play Date UTC</key><date>2007-02-04T17:20:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:51Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A17</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/06%20Spacehopper.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>301</key>
-		<dict>
-			<key>Track ID</key><integer>301</integer>
-			<key>Name</key><string>Hypnosystem</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10777235</integer>
-			<key>Total Time</key><integer>665505</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-04-14T18:41:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252502511</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:55:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A19</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/07%20Hypnosystem.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>302</key>
-		<dict>
-			<key>Track ID</key><integer>302</integer>
-			<key>Name</key><string>Aquasonic</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Album</key><string>Synaesthetic</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8129984</integer>
-			<key>Total Time</key><integer>501897</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-04-14T18:42:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253351299</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:41:39Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A1B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A%20Positive%20Life/Synaesthetic/08%20Aquasonic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>303</key>
-		<dict>
-			<key>Track ID</key><integer>303</integer>
-			<key>Name</key><string>Woke Up This Morning (Chosen One Mix)</string>
-			<key>Artist</key><string>A3</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5066582</integer>
-			<key>Total Time</key><integer>316630</integer>
-			<key>Start Time</key><integer>90000</integer>
-			<key>Date Modified</key><date>2007-01-09T17:51:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Volume Adjustment</key><integer>22</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253715617</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:53:37Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-04T23:21:24Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85A1D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/A3/Unknown%20Album/Woke%20Up%20This%20Morning%20(Chosen%20One%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>304</key>
-		<dict>
-			<key>Track ID</key><integer>304</integer>
-			<key>Name</key><string>Show You Something</string>
-			<key>Artist</key><string>Afterlife</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6187470</integer>
-			<key>Total Time</key><integer>386324</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251379939</integer>
-			<key>Play Date UTC</key><date>2007-01-12T01:05:39Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-25T17:23:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A21</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Afterlife/Late%20Lounge%20(1%20of%202)/11%20Show%20You%20Something.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>305</key>
-		<dict>
-			<key>Track ID</key><integer>305</integer>
-			<key>Name</key><string>Save Me</string>
-			<key>Artist</key><string>Aimee Mann</string>
-			<key>Composer</key><string>Mann, Aimee</string>
-			<key>Album</key><string>Live At St. Ann's Warehouse</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4542925</integer>
-			<key>Total Time</key><integer>283794</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T20:59:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253676470</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:01:10Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85A24</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Aimee%20Mann/Live%20At%20St.%20Ann's%20Warehouse/06%20Save%20Me.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>306</key>
-		<dict>
-			<key>Track ID</key><integer>306</integer>
-			<key>Name</key><string>Another Morning</string>
-			<key>Artist</key><string>American Music Club</string>
-			<key>Composer</key><string>Mark Eitzel</string>
-			<key>Album</key><string>Love Songs For Patriots</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4831548</integer>
-			<key>Total Time</key><integer>201221</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T20:59:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252545503</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:51:43Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T15:55:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A27</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/American%20Music%20Club/Love%20Songs%20For%20Patriots/02%20Another%20Morning.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>307</key>
-		<dict>
-			<key>Track ID</key><integer>307</integer>
-			<key>Name</key><string>The Lighthouse</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5238431</integer>
-			<key>Total Time</key><integer>305364</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T18:58:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>35</integer>
-			<key>Play Date</key><integer>3253707165</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:32:45Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-17T06:15:32Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A2A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/01%20The%20Lighthouse.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>308</key>
-		<dict>
-			<key>Track ID</key><integer>308</integer>
-			<key>Name</key><string>Ruthless</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5402089</integer>
-			<key>Total Time</key><integer>315580</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T18:58:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253711051</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:37:31Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A2D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/02%20Ruthless.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>309</key>
-		<dict>
-			<key>Track ID</key><integer>309</integer>
-			<key>Name</key><string>Theme from Battery</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4669651</integer>
-			<key>Total Time</key><integer>266145</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T18:59:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253546210</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:50:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A2F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/03%20Theme%20from%20Battery.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>310</key>
-		<dict>
-			<key>Track ID</key><integer>310</integer>
-			<key>Name</key><string>Kokubo Sosho Stealth</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3675893</integer>
-			<key>Total Time</key><integer>205959</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T18:59:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3249469879</integer>
-			<key>Play Date UTC</key><date>2006-12-20T22:31:19Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A31</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/04%20Kokubo%20Sosho%20Stealth.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>311</key>
-		<dict>
-			<key>Track ID</key><integer>311</integer>
-			<key>Name</key><string>El Cargo</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4240809</integer>
-			<key>Total Time</key><integer>263916</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T18:59:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253536728</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:12:08Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A33</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/05%20El%20Cargo.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>312</key>
-		<dict>
-			<key>Track ID</key><integer>312</integer>
-			<key>Name</key><string>Displaced</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6864986</integer>
-			<key>Total Time</key><integer>418723</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T19:00:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A35</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/06%20Displaced.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>313</key>
-		<dict>
-			<key>Track ID</key><integer>313</integer>
-			<key>Name</key><string>Ruthless (Reprise)</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4599715</integer>
-			<key>Total Time</key><integer>267004</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T19:00:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3250693424</integer>
-			<key>Play Date UTC</key><date>2007-01-04T02:23:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A37</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/07%20Ruthless%20(Reprise).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>314</key>
-		<dict>
-			<key>Track ID</key><integer>314</integer>
-			<key>Name</key><string>Kokubo Sosho Battle</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4483348</integer>
-			<key>Total Time</key><integer>256439</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T19:01:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252556913</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:01:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A39</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/08%20Kokubo%20Sosho%20Battle.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>315</key>
-		<dict>
-			<key>Track ID</key><integer>315</integer>
-			<key>Name</key><string>Hokkaido</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3282473</integer>
-			<key>Total Time</key><integer>181067</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T19:01:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253026493</integer>
-			<key>Play Date UTC</key><date>2007-01-31T02:28:13Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A3B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/09%20Hokkaido.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>316</key>
-		<dict>
-			<key>Track ID</key><integer>316</integer>
-			<key>Name</key><string>The Clean Up</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Chaos Theory: Splinter Cell 3 (Soundtrack from the Video Game)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6853421</integer>
-			<key>Total Time</key><integer>420117</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-04-03T19:02:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253627993</integer>
-			<key>Play Date UTC</key><date>2007-02-07T01:33:13Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A3D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Chaos%20Theory_%20Splinter%20Cell%203%20(Soundtrack%20from%20the%20Video%20Game)/10%20The%20Clean%20Up.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>317</key>
-		<dict>
-			<key>Track ID</key><integer>317</integer>
-			<key>Name</key><string>A Nervous Tic Motion Of The Head To The Left</string>
-			<key>Artist</key><string>Andrew Bird</string>
-			<key>Album</key><string>&#38; The Mysterious Producton Of Eggs</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4797890</integer>
-			<key>Total Time</key><integer>299728</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T20:27:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247573136</integer>
-			<key>Play Date UTC</key><date>2006-11-28T23:38:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A3F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Andrew%20Bird/&#38;%20The%20Mysterious%20Producton%20Of%20Eggs/03%20A%20Nervous%20Tic%20Motion%20Of%20The%20Head%20To%20The%20Left.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>318</key>
-		<dict>
-			<key>Track ID</key><integer>318</integer>
-			<key>Name</key><string>Studying Stones</string>
-			<key>Artist</key><string>Ani DiFranco</string>
-			<key>Album</key><string>Knuckle Down</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5616415</integer>
-			<key>Total Time</key><integer>233926</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-02-23T20:30:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249296052</integer>
-			<key>Play Date UTC</key><date>2006-12-18T22:14:12Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A42</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Ani%20DiFranco/Knuckle%20Down/02%20Studying%20Stones.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>319</key>
-		<dict>
-			<key>Track ID</key><integer>319</integer>
-			<key>Name</key><string>Why</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7139296</integer>
-			<key>Total Time</key><integer>293865</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:57:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253549827</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:50:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A45</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/01%20Why.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>320</key>
-		<dict>
-			<key>Track ID</key><integer>320</integer>
-			<key>Name</key><string>Walking On Broken Glass</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6154768</integer>
-			<key>Total Time</key><integer>253204</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253353834</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:23:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A48</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/02%20Walking%20On%20Broken%20Glass.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>321</key>
-		<dict>
-			<key>Track ID</key><integer>321</integer>
-			<key>Name</key><string>Precious</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7492046</integer>
-			<key>Total Time</key><integer>308436</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250599322</integer>
-			<key>Play Date UTC</key><date>2007-01-03T00:15:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A4A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/03%20Precious.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>322</key>
-		<dict>
-			<key>Track ID</key><integer>322</integer>
-			<key>Name</key><string>Legend In My Living Room</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox/Peter-John Vittese</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5490266</integer>
-			<key>Total Time</key><integer>225641</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247666050</integer>
-			<key>Play Date UTC</key><date>2006-11-30T01:27:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A4C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/04%20Legend%20In%20My%20Living%20Room.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>323</key>
-		<dict>
-			<key>Track ID</key><integer>323</integer>
-			<key>Name</key><string>Cold</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6359043</integer>
-			<key>Total Time</key><integer>261652</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250709385</integer>
-			<key>Play Date UTC</key><date>2007-01-04T06:49:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A4E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/05%20Cold.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>324</key>
-		<dict>
-			<key>Track ID</key><integer>324</integer>
-			<key>Name</key><string>Money Can't Buy It</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7287031</integer>
-			<key>Total Time</key><integer>299966</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253376471</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:41:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A50</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/06%20Money%20Can't%20Buy%20It.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>325</key>
-		<dict>
-			<key>Track ID</key><integer>325</integer>
-			<key>Name</key><string>Little Bird</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6740080</integer>
-			<key>Total Time</key><integer>279166</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252492538</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:08:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A52</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/07%20Little%20Bird.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>326</key>
-		<dict>
-			<key>Track ID</key><integer>326</integer>
-			<key>Name</key><string>Primitive</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6303329</integer>
-			<key>Total Time</key><integer>259348</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253531316</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:41:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A54</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/08%20Primitive.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>327</key>
-		<dict>
-			<key>Track ID</key><integer>327</integer>
-			<key>Name</key><string>Stay By Me</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9436575</integer>
-			<key>Total Time</key><integer>388734</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247373827</integer>
-			<key>Play Date UTC</key><date>2006-11-26T16:17:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A56</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/09%20Stay%20By%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>328</key>
-		<dict>
-			<key>Track ID</key><integer>328</integer>
-			<key>Name</key><string>The Gift</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Annie Lennox/The Blue Nile</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7125274</integer>
-			<key>Total Time</key><integer>294484</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253266414</integer>
-			<key>Play Date UTC</key><date>2007-02-02T21:06:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A58</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/10%20The%20Gift.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>329</key>
-		<dict>
-			<key>Track ID</key><integer>329</integer>
-			<key>Name</key><string>Keep Young And Beautiful</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Al Dublin/Harry Warren</string>
-			<key>Album</key><string>Diva</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3349370</integer>
-			<key>Total Time</key><integer>137598</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T15:58:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252537789</integer>
-			<key>Play Date UTC</key><date>2007-01-25T10:43:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A5A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Diva/11%20Keep%20Young%20And%20Beautiful.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>330</key>
-		<dict>
-			<key>Track ID</key><integer>330</integer>
-			<key>Name</key><string>No More "I Love You's"</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>D. Freeman &#38; J. Hughes</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7102647</integer>
-			<key>Total Time</key><integer>292905</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253363119</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:58:39Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A5C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/01%20No%20More%20_I%20Love%20You's_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>331</key>
-		<dict>
-			<key>Track ID</key><integer>331</integer>
-			<key>Name</key><string>Take Me To The River</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>A. Green/M. Hodges</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5183527</integer>
-			<key>Total Time</key><integer>213225</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253554007</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:00:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A5F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/02%20Take%20Me%20To%20The%20River.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>332</key>
-		<dict>
-			<key>Track ID</key><integer>332</integer>
-			<key>Name</key><string>A Whiter Shade Of Pale</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>G. Brooker &#38; K. Reid</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7686037</integer>
-			<key>Total Time</key><integer>316606</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252560815</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:06:55Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-16T17:19:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A61</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/03%20A%20Whiter%20Shade%20Of%20Pale.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>333</key>
-		<dict>
-			<key>Track ID</key><integer>333</integer>
-			<key>Name</key><string>Don't Let It Bring You Down</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>N. Young</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5299055</integer>
-			<key>Total Time</key><integer>218729</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A63</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/04%20Don't%20Let%20It%20Bring%20You%20Down.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>334</key>
-		<dict>
-			<key>Track ID</key><integer>334</integer>
-			<key>Name</key><string>Train In Vain</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>Jones &#38; Strummer</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6881215</integer>
-			<key>Total Time</key><integer>284436</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253367727</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:15:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A65</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/05%20Train%20In%20Vain.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>335</key>
-		<dict>
-			<key>Track ID</key><integer>335</integer>
-			<key>Name</key><string>I Can't Get Next To You</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>B. Strong &#38; N. Whitfield</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4601590</integer>
-			<key>Total Time</key><integer>188777</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252552777</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:52:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A67</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/06%20I%20Can't%20Get%20Next%20To%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>336</key>
-		<dict>
-			<key>Track ID</key><integer>336</integer>
-			<key>Name</key><string>Downtown Lights</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>P. Buchanan</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9791936</integer>
-			<key>Total Time</key><integer>404606</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253365940</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:45:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A69</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/07%20Downtown%20Lights.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>337</key>
-		<dict>
-			<key>Track ID</key><integer>337</integer>
-			<key>Name</key><string>Thin Line Between Love And Hate</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>J. Members/R. Poindexter</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7165637</integer>
-			<key>Total Time</key><integer>295124</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253027306</integer>
-			<key>Play Date UTC</key><date>2007-01-31T02:41:46Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A6B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/08%20Thin%20Line%20Between%20Love%20And%20Hate.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>338</key>
-		<dict>
-			<key>Track ID</key><integer>338</integer>
-			<key>Name</key><string>Waiting In Vain</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>B. Marley</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8271029</integer>
-			<key>Total Time</key><integer>340777</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253365535</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:38:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A6D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/09%20Waiting%20In%20Vain.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>339</key>
-		<dict>
-			<key>Track ID</key><integer>339</integer>
-			<key>Name</key><string>Something So Right</string>
-			<key>Artist</key><string>Annie Lennox</string>
-			<key>Composer</key><string>P. Simon</string>
-			<key>Album</key><string>Medusa</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5730961</integer>
-			<key>Total Time</key><integer>236500</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-01T16:14:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249272720</integer>
-			<key>Play Date UTC</key><date>2006-12-18T15:45:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A6F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Annie%20Lennox/Medusa/10%20Something%20So%20Right.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>340</key>
-		<dict>
-			<key>Track ID</key><integer>340</integer>
-			<key>Name</key><string>| SPRING 1. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5075923</integer>
-			<key>Total Time</key><integer>209129</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:17:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247250113</integer>
-			<key>Play Date UTC</key><date>2006-11-25T05:55:13Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-02-07T00:25:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A71</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/01%20_%20SPRING%201.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>341</key>
-		<dict>
-			<key>Track ID</key><integer>341</integer>
-			<key>Name</key><string>|  2. Largo</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3550631</integer>
-			<key>Total Time</key><integer>145641</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:19:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250601441</integer>
-			<key>Play Date UTC</key><date>2007-01-03T00:50:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A74</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/02%20_%20%202.%20Largo.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>342</key>
-		<dict>
-			<key>Track ID</key><integer>342</integer>
-			<key>Name</key><string>|  3. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5920798</integer>
-			<key>Total Time</key><integer>244308</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:22:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253367443</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:10:43Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-19T21:42:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A76</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/03%20_%20%203.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>343</key>
-		<dict>
-			<key>Track ID</key><integer>343</integer>
-			<key>Name</key><string>| SUMMER 4. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8107814</integer>
-			<key>Total Time</key><integer>334633</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:26:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249571614</integer>
-			<key>Play Date UTC</key><date>2006-12-22T02:46:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A78</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/04%20_%20SUMMER%204.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>344</key>
-		<dict>
-			<key>Track ID</key><integer>344</integer>
-			<key>Name</key><string>|  5. Adagio</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3554800</integer>
-			<key>Total Time</key><integer>145812</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:27:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247074997</integer>
-			<key>Play Date UTC</key><date>2006-11-23T05:16:37Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A7A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/05%20_%20%205.%20Adagio.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>345</key>
-		<dict>
-			<key>Track ID</key><integer>345</integer>
-			<key>Name</key><string>|  6. Presto</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4243035</integer>
-			<key>Total Time</key><integer>174462</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:29:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247244497</integer>
-			<key>Play Date UTC</key><date>2006-11-25T04:21:37Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A7C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/06%20_%20%206.%20Presto.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>346</key>
-		<dict>
-			<key>Track ID</key><integer>346</integer>
-			<key>Name</key><string>AUTUMN 7. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6836461</integer>
-			<key>Total Time</key><integer>282132</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:33:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253460057</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:54:17Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A7E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/07%20AUTUMN%207.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>347</key>
-		<dict>
-			<key>Track ID</key><integer>347</integer>
-			<key>Name</key><string>|  8. Adagio</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4326981</integer>
-			<key>Total Time</key><integer>177961</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:35:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253509644</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:40:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A80</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/08%20_%20%208.%20Adagio.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>348</key>
-		<dict>
-			<key>Track ID</key><integer>348</integer>
-			<key>Name</key><string>|  9. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4896055</integer>
-			<key>Total Time</key><integer>201641</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:37:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253526411</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:20:11Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-17T05:44:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A82</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/09%20_%20%209.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>349</key>
-		<dict>
-			<key>Track ID</key><integer>349</integer>
-			<key>Name</key><string>WINTER 10. Allegro Non Molto</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4915411</integer>
-			<key>Total Time</key><integer>202452</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:40:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249563069</integer>
-			<key>Play Date UTC</key><date>2006-12-22T00:24:29Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A84</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/10%20WINTER%2010.%20Allegro%20Non%20Molto.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>350</key>
-		<dict>
-			<key>Track ID</key><integer>350</integer>
-			<key>Name</key><string>|  11. Largo</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2886031</integer>
-			<key>Total Time</key><integer>117972</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:41:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251632449</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:14:09Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A86</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/11%20_%20%2011.%20Largo.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>351</key>
-		<dict>
-			<key>Track ID</key><integer>351</integer>
-			<key>Name</key><string>|  12. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4788003</integer>
-			<key>Total Time</key><integer>197140</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:43:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247043862</integer>
-			<key>Play Date UTC</key><date>2006-11-22T20:37:42Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A88</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/12%20_%20%2012.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>352</key>
-		<dict>
-			<key>Track ID</key><integer>352</integer>
-			<key>Name</key><string>Concerto For Flute in G Minor, OP 10 No.2, La Notte 13. Largo</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3650789</integer>
-			<key>Total Time</key><integer>149801</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:45:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B85A8A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/13%20Concerto%20For%20Flute%20in%20G%20Minor,%20OP%2010%20No.2,%20La%20Notte%2013.%20Largo.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>353</key>
-		<dict>
-			<key>Track ID</key><integer>353</integer>
-			<key>Name</key><string>|  14. Presto Largo</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2962517</integer>
-			<key>Total Time</key><integer>121150</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:47:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253267889</integer>
-			<key>Play Date UTC</key><date>2007-02-02T21:31:29Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A8C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/14%20_%20%2014.%20Presto%20Largo.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>354</key>
-		<dict>
-			<key>Track ID</key><integer>354</integer>
-			<key>Name</key><string>|  15. Presto</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>1676811</integer>
-			<key>Total Time</key><integer>67625</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:48:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252512067</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:34:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A8E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/15%20_%20%2015.%20Presto.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>355</key>
-		<dict>
-			<key>Track ID</key><integer>355</integer>
-			<key>Name</key><string>|  16. Largo</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2974327</integer>
-			<key>Total Time</key><integer>121641</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:49:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-13T20:51:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A90</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/16%20_%20%2016.%20Largo.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>356</key>
-		<dict>
-			<key>Track ID</key><integer>356</integer>
-			<key>Name</key><string>|  17. Allegro</string>
-			<key>Artist</key><string>Antonio Vivaldi</string>
-			<key>Album</key><string>The Four Seasons</string>
-			<key>Genre</key><string>Classical</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4079260</integer>
-			<key>Total Time</key><integer>167636</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-05-04T15:51:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252402473</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:07:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A92</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Antonio%20Vivaldi/The%20Four%20Seasons/17%20_%20%2017.%20Allegro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>357</key>
-		<dict>
-			<key>Track ID</key><integer>357</integer>
-			<key>Name</key><string>Sur Tes Pas [Corny Dream Mix]</string>
-			<key>Artist</key><string>Autour de Lucie</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>V. Leulliot</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3644586</integer>
-			<key>Total Time</key><integer>300120</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251433561</integer>
-			<key>Play Date UTC</key><date>2007-01-12T15:59:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A94</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Autour%20de%20Lucie/Plastic%20Compilation,%20Vol.%202/10%20Sur%20Tes%20Pas%20%5BCorny%20Dream%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>358</key>
-		<dict>
-			<key>Track ID</key><integer>358</integer>
-			<key>Name</key><string>The Season [Swag's Vocal Mix]</string>
-			<key>Artist</key><string>Beanfield</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7054318</integer>
-			<key>Total Time</key><integer>440502</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251435432</integer>
-			<key>Play Date UTC</key><date>2007-01-12T16:30:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A97</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beanfield/Late%20Lounge%20(1%20of%202)/15%20The%20Season%20%5BSwag's%20Vocal%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>359</key>
-		<dict>
-			<key>Track ID</key><integer>359</integer>
-			<key>Name</key><string>August Day Song [King Britt Remix]</string>
-			<key>Artist</key><string>Bebel Gilberto</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>Bebel Gilberto/Chris Franck/Nina Miranda</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3962350</integer>
-			<key>Total Time</key><integer>247222</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253263160</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:12:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85A9A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Bebel%20Gilberto/Late%20Lounge%20(2%20of%202)/10%20August%20Day%20Song%20%5BKing%20Britt%20Remix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>360</key>
-		<dict>
-			<key>Track ID</key><integer>360</integer>
-			<key>Name</key><string>Stolen Car</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7886232</integer>
-			<key>Total Time</key><integer>325758</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:14:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251436570</integer>
-			<key>Play Date UTC</key><date>2007-01-12T16:49:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B85A9D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/01%20Stolen%20Car.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>361</key>
-		<dict>
-			<key>Track ID</key><integer>361</integer>
-			<key>Name</key><string>Sweetest Decline</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8216205</integer>
-			<key>Total Time</key><integer>339412</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:15:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251436909</integer>
-			<key>Play Date UTC</key><date>2007-01-12T16:55:09Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AA0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/02%20Sweetest%20Decline.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>362</key>
-		<dict>
-			<key>Track ID</key><integer>362</integer>
-			<key>Name</key><string>Couldn't Cause Me Harm</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6981523</integer>
-			<key>Total Time</key><integer>288382</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:16:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252506964</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:09:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AA2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/03%20Couldn't%20Cause%20Me%20Harm.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>363</key>
-		<dict>
-			<key>Track ID</key><integer>363</integer>
-			<key>Name</key><string>So Much More</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8274013</integer>
-			<key>Total Time</key><integer>341801</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:17:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253619383</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:09:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AA4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/04%20So%20Much%20More.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>364</key>
-		<dict>
-			<key>Track ID</key><integer>364</integer>
-			<key>Name</key><string>Pass In Time</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10598345</integer>
-			<key>Total Time</key><integer>437865</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:19:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251438093</integer>
-			<key>Play Date UTC</key><date>2007-01-12T17:14:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AA6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/05%20Pass%20In%20Time.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>365</key>
-		<dict>
-			<key>Track ID</key><integer>365</integer>
-			<key>Name</key><string>Central Reservation (Original Version)</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7020771</integer>
-			<key>Total Time</key><integer>290004</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:20:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251438383</integer>
-			<key>Play Date UTC</key><date>2007-01-12T17:19:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AA8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/06%20Central%20Reservation%20(Original%20Version).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>366</key>
-		<dict>
-			<key>Track ID</key><integer>366</integer>
-			<key>Name</key><string>Stars All Seem To Weep</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6775571</integer>
-			<key>Total Time</key><integer>279870</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:20:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251438663</integer>
-			<key>Play Date UTC</key><date>2007-01-12T17:24:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AAA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/07%20Stars%20All%20Seem%20To%20Weep.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>367</key>
-		<dict>
-			<key>Track ID</key><integer>367</integer>
-			<key>Name</key><string>Love Like Laughter</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4556123</integer>
-			<key>Total Time</key><integer>187668</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:21:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253509466</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:37:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AAC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/08%20Love%20Like%20Laughter.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>368</key>
-		<dict>
-			<key>Track ID</key><integer>368</integer>
-			<key>Name</key><string>Blood Red River</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6191772</integer>
-			<key>Total Time</key><integer>255742</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:22:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252565471</integer>
-			<key>Play Date UTC</key><date>2007-01-25T18:24:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AAE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/09%20Blood%20Red%20River.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>369</key>
-		<dict>
-			<key>Track ID</key><integer>369</integer>
-			<key>Name</key><string>Devil Song</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7375871</integer>
-			<key>Total Time</key><integer>304681</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:23:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251439411</integer>
-			<key>Play Date UTC</key><date>2007-01-12T17:36:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AB0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/10%20Devil%20Song.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>370</key>
-		<dict>
-			<key>Track ID</key><integer>370</integer>
-			<key>Name</key><string>Feel To Believe</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5920091</integer>
-			<key>Total Time</key><integer>244500</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:24:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253294085</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:48:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AB2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/11%20Feel%20To%20Believe.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>371</key>
-		<dict>
-			<key>Track ID</key><integer>371</integer>
-			<key>Name</key><string>Central Reservation (Ben Watt Remix)</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album</key><string>Central Reservation</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5855579</integer>
-			<key>Total Time</key><integer>241812</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-04-20T18:25:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3250666366</integer>
-			<key>Play Date UTC</key><date>2007-01-03T18:52:46Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85AB4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Central%20Reservation/12%20Central%20Reservation%20(Ben%20Watt%20Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>372</key>
-		<dict>
-			<key>Track ID</key><integer>372</integer>
-			<key>Name</key><string>Stolen Car</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>Barnes/Beth Orton/Read/William Blanchard</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5207868</integer>
-			<key>Total Time</key><integer>325067</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253533997</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:26:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AB6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Late%20Lounge%20(2%20of%202)/03%20Stolen%20Car.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>373</key>
-		<dict>
-			<key>Track ID</key><integer>373</integer>
-			<key>Name</key><string>Central Reservation [Ibadan Spiritual Life Radio Edit]</string>
-			<key>Artist</key><string>Beth Orton</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>Beth Orton</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3885017</integer>
-			<key>Total Time</key><integer>242677</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-12T17:46:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AB8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Beth%20Orton/Plastic%20Compilation,%20Vol.%203/10%20Central%20Reservation%20%5BIbadan%20Spiritual%20Life%20Radio%20Edit%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>374</key>
-		<dict>
-			<key>Track ID</key><integer>374</integer>
-			<key>Name</key><string>Up and Down</string>
-			<key>Artist</key><string>Black Jazz Chronicles</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>Chris Bemand</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4317045</integer>
-			<key>Total Time</key><integer>269400</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252474046</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:00:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ABB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Black%20Jazz%20Chronicles/Late%20Lounge%20(2%20of%202)/16%20Up%20and%20Down.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>375</key>
-		<dict>
-			<key>Track ID</key><integer>375</integer>
-			<key>Name</key><string>Firewater</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8420167</integer>
-			<key>Total Time</key><integer>525740</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>24</integer>
-			<key>Play Date</key><integer>3253109616</integer>
-			<key>Play Date UTC</key><date>2007-02-01T01:33:36Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-04T23:35:46Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ABD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/01%20Firewater.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>376</key>
-		<dict>
-			<key>Track ID</key><integer>376</integer>
-			<key>Name</key><string>Orbitus Teranium</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7824575</integer>
-			<key>Total Time</key><integer>488515</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250685888</integer>
-			<key>Play Date UTC</key><date>2007-01-04T00:18:08Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AC0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/02%20Orbitus%20Teranium.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>377</key>
-		<dict>
-			<key>Track ID</key><integer>377</integer>
-			<key>Name</key><string>Flaming June</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>Brian Transeau</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8278060</integer>
-			<key>Total Time</key><integer>516858</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253175797</integer>
-			<key>Play Date UTC</key><date>2007-02-01T19:56:37Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AC2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/03%20Flaming%20June.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>378</key>
-		<dict>
-			<key>Track ID</key><integer>378</integer>
-			<key>Name</key><string>Lullaby for Gaia</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>Brian Transeau/Jan Johnston</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5152562</integer>
-			<key>Total Time</key><integer>321515</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252566459</integer>
-			<key>Play Date UTC</key><date>2007-01-25T18:40:59Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AC4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/04%20Lullaby%20for%20Gaia.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>379</key>
-		<dict>
-			<key>Track ID</key><integer>379</integer>
-			<key>Name</key><string>Memories in a Sea of Forgetfulness</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7374015</integer>
-			<key>Total Time</key><integer>460355</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251443900</integer>
-			<key>Play Date UTC</key><date>2007-01-12T18:51:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AC6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/05%20Memories%20in%20a%20Sea%20of%20Forgetfulness.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>380</key>
-		<dict>
-			<key>Track ID</key><integer>380</integer>
-			<key>Name</key><string>Solar Plexus</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4069629</integer>
-			<key>Total Time</key><integer>253831</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250671326</integer>
-			<key>Play Date UTC</key><date>2007-01-03T20:15:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AC8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/06%20Solar%20Plexus.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>381</key>
-		<dict>
-			<key>Track ID</key><integer>381</integer>
-			<key>Name</key><string>Nectar</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5696327</integer>
-			<key>Total Time</key><integer>355500</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253380209</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:43:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ACA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/07%20Nectar.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>382</key>
-		<dict>
-			<key>Track ID</key><integer>382</integer>
-			<key>Name</key><string>Remember</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT/Jan Johnston</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7698351</integer>
-			<key>Total Time</key><integer>480626</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253713999</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:26:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ACC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/08%20Remember.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>383</key>
-		<dict>
-			<key>Track ID</key><integer>383</integer>
-			<key>Name</key><string>Love, Peace and Grease</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>Brian Transeau</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3726485</integer>
-			<key>Total Time</key><integer>232385</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252493091</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:18:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ACE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/09%20Love,%20Peace%20and%20Grease.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>384</key>
-		<dict>
-			<key>Track ID</key><integer>384</integer>
-			<key>Name</key><string>Content</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>ESCM</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10591882</integer>
-			<key>Total Time</key><integer>661472</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253253968</integer>
-			<key>Play Date UTC</key><date>2007-02-02T17:39:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AD0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/ESCM/10%20Content.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>385</key>
-		<dict>
-			<key>Track ID</key><integer>385</integer>
-			<key>Name</key><string>Never Gonna Come Back</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5558943</integer>
-			<key>Total Time</key><integer>347297</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251445495</integer>
-			<key>Play Date UTC</key><date>2007-01-12T19:18:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AD2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/02%20Never%20Gonna%20Come%20Back.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>386</key>
-		<dict>
-			<key>Track ID</key><integer>386</integer>
-			<key>Name</key><string>Dreaming</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT/Judie Tzuke/Mike Paxman/Paul Muggleton</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5118414</integer>
-			<key>Total Time</key><integer>319764</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251445815</integer>
-			<key>Play Date UTC</key><date>2007-01-12T19:23:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AD5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/03%20Dreaming.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>387</key>
-		<dict>
-			<key>Track ID</key><integer>387</integer>
-			<key>Name</key><string>Shame</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3218790</integer>
-			<key>Total Time</key><integer>201038</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251446016</integer>
-			<key>Play Date UTC</key><date>2007-01-12T19:26:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AD7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/04%20Shame.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>388</key>
-		<dict>
-			<key>Track ID</key><integer>388</integer>
-			<key>Name</key><string>Movement In Still Life</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT/C Chase/E. Fletcher/M Glover/S Robinson</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4322620</integer>
-			<key>Total Time</key><integer>270027</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253544588</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:23:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AD9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/05%20Movement%20In%20Still%20Life.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>389</key>
-		<dict>
-			<key>Track ID</key><integer>389</integer>
-			<key>Name</key><string>Satellite</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4989265</integer>
-			<key>Total Time</key><integer>311693</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2006-10-26T18:42:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252989968</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:19:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ADB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/06%20Satellite.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>390</key>
-		<dict>
-			<key>Track ID</key><integer>390</integer>
-			<key>Name</key><string>Godspeed</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>Brian Transeau</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4967949</integer>
-			<key>Total Time</key><integer>310360</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253614599</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:49:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ADD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/07%20Godspeed.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>391</key>
-		<dict>
-			<key>Track ID</key><integer>391</integer>
-			<key>Name</key><string>Running Down The Way Up</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT/Kirsty Hawkshaw/Mike Truman</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5618712</integer>
-			<key>Total Time</key><integer>351033</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253714350</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:32:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T17:28:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85ADF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/08%20Running%20Down%20The%20Way%20Up.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>392</key>
-		<dict>
-			<key>Track ID</key><integer>392</integer>
-			<key>Name</key><string>Mercury And Solace</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>BT/Jan Johnston</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4914868</integer>
-			<key>Total Time</key><integer>307043</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2006-10-26T18:41:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252413379</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:09:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AE1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/09%20Mercury%20And%20Solace.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>393</key>
-		<dict>
-			<key>Track ID</key><integer>393</integer>
-			<key>Name</key><string>Smartbomb</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Composer</key><string>Brian Transeau</string>
-			<key>Album</key><string>Movement In Still Life</string>
-			<key>Genre</key><string>General Trance</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4962934</integer>
-			<key>Total Time</key><integer>310047</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253612681</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:18:01Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AE3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Movement%20In%20Still%20Life/10%20Smartbomb.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>394</key>
-		<dict>
-			<key>Track ID</key><integer>394</integer>
-			<key>Name</key><string>Dreaming [Tiesto Mix]</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>Brian Transeau/Judie Tzuke/Mike Paxman/Paul Muggleton</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7066940</integer>
-			<key>Total Time</key><integer>441547</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251447966</integer>
-			<key>Play Date UTC</key><date>2007-01-12T19:59:26Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AE5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/Plastic%20Compilation,%20Vol.%203/05%20Dreaming%20%5BTiesto%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>395</key>
-		<dict>
-			<key>Track ID</key><integer>395</integer>
-			<key>Name</key><string>All That Makes Us Human Continues</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>8206785</integer>
-			<key>Total Time</key><integer>495721</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:31:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251448462</integer>
-			<key>Play Date UTC</key><date>2007-01-12T20:07:42Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AE7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/01%20All%20That%20Makes%20Us%20Human%20Continues.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>396</key>
-		<dict>
-			<key>Track ID</key><integer>396</integer>
-			<key>Name</key><string>Dynamic Symmetry</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>11259792</integer>
-			<key>Total Time</key><integer>683501</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:32:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253521345</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:55:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AEA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/02%20Dynamic%20Symmetry.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>397</key>
-		<dict>
-			<key>Track ID</key><integer>397</integer>
-			<key>Name</key><string>The Internal Locus</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>10353842</integer>
-			<key>Total Time</key><integer>627633</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:32:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253349531</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:12:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AEC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/03%20The%20Internal%20Locus.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>398</key>
-		<dict>
-			<key>Track ID</key><integer>398</integer>
-			<key>Name</key><string>1.618</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>11442725</integer>
-			<key>Total Time</key><integer>694089</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:32:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251450467</integer>
-			<key>Play Date UTC</key><date>2007-01-12T20:41:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AEE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/04%201.618.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>399</key>
-		<dict>
-			<key>Track ID</key><integer>399</integer>
-			<key>Name</key><string>See You On the Other Side</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>14195145</integer>
-			<key>Total Time</key><integer>863734</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:33:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251451331</integer>
-			<key>Play Date UTC</key><date>2007-01-12T20:55:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AF0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/05%20See%20You%20On%20the%20Other%20Side.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>400</key>
-		<dict>
-			<key>Track ID</key><integer>400</integer>
-			<key>Name</key><string>The Antikythera Mechanism</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>10006393</integer>
-			<key>Total Time</key><integer>606294</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:33:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252499411</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:03:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AF2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/06%20The%20Antikythera%20Mechanism.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>401</key>
-		<dict>
-			<key>Track ID</key><integer>401</integer>
-			<key>Name</key><string>Good Morning Kaia</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>8166641</integer>
-			<key>Total Time</key><integer>491820</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:33:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253365195</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:33:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AF4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/07%20Good%20Morning%20Kaia.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>402</key>
-		<dict>
-			<key>Track ID</key><integer>402</integer>
-			<key>Name</key><string>Dynamic Symmetry</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected MPEG-4 video file</string>
-			<key>Size</key><integer>51850973</integer>
-			<key>Total Time</key><integer>669402</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:35:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AF6</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Has Video</key><true/>
-			<key>Music Video</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/08%20Dynamic%20Symmetry.m4v</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>403</key>
-		<dict>
-			<key>Track ID</key><integer>403</integer>
-			<key>Name</key><string>1.618</string>
-			<key>Artist</key><string>BT</string>
-			<key>Album Artist</key><string>BT</string>
-			<key>Album</key><string>This Binary Universe</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected MPEG-4 video file</string>
-			<key>Size</key><integer>55707454</integer>
-			<key>Total Time</key><integer>691558</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-04T23:36:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:40Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252514993</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:23:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AF8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Has Video</key><true/>
-			<key>Music Video</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT/This%20Binary%20Universe/09%201.618.m4v</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>404</key>
-		<dict>
-			<key>Track ID</key><integer>404</integer>
-			<key>Name</key><string>Break On Through (To the Other Side) [Remix]</string>
-			<key>Artist</key><string>BT vs. The Doors</string>
-			<key>Album Artist</key><string>BT vs. The Doors</string>
-			<key>Album</key><string>Break On Through (To the Other Side) [Remix] - Single</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6989135</integer>
-			<key>Total Time</key><integer>427176</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>1</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-29T19:13:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253028565</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:02:45Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85AFA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/BT%20vs.%20The%20Doors/Break%20On%20Through%20(To%20the%20Other%20Side)%20%5BRemix%5D%20-%20Single/01%20Break%20On%20Through%20(To%20the%20Other%20Side)%20%5BRemix%5D.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>405</key>
-		<dict>
-			<key>Track ID</key><integer>405</integer>
-			<key>Name</key><string>Trickshot</string>
-			<key>Artist</key><string>Ceasefire</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Ceasefire</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4730658</integer>
-			<key>Total Time</key><integer>196284</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251481885</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:24:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B85AFD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Ceasefire/Community%20Service/10%20Trickshot.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>406</key>
-		<dict>
-			<key>Track ID</key><integer>406</integer>
-			<key>Name</key><string>Charanga Cakewalk - La Negra Celina</string>
-			<key>Artist</key><string>Charanga Cakewalk</string>
-			<key>Album</key><string>Loteria De La Cumbia</string>
-			<key>Genre</key><string>Latin</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5441536</integer>
-			<key>Total Time</key><integer>271986</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T20:30:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252404914</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:48:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B85B00</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Charanga%20Cakewalk/Loteria%20De%20La%20Cumbia/07%20Charanga%20Cakewalk%20-%20La%20Negra%20Celina.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>407</key>
-		<dict>
-			<key>Track ID</key><integer>407</integer>
-			<key>Name</key><string>Perfect Weapon</string>
-			<key>Artist</key><string>Communique</string>
-			<key>Album</key><string>Poison Arrows</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3148141</integer>
-			<key>Total Time</key><integer>196623</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Date Modified</key><date>2005-02-23T21:00:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252534633</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:50:33Z</date>
-			<key>Persistent ID</key><string>87139F8602B85B03</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Communique/Poison%20Arrows/05%20Perfect%20Weapon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>408</key>
-		<dict>
-			<key>Track ID</key><integer>408</integer>
-			<key>Name</key><string>Behind The Sun (Deep Ambient Mix)</string>
-			<key>Artist</key><string>The Starseeds</string>
-			<key>Composer</key><string>The Starseeds</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10747415</integer>
-			<key>Total Time</key><integer>443625</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:47:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252480028</integer>
-			<key>Play Date UTC</key><date>2007-01-24T18:40:28Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B06</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/01%20Behind%20The%20Sun%20(Deep%20Ambient%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>409</key>
-		<dict>
-			<key>Track ID</key><integer>409</integer>
-			<key>Name</key><string>Autumn Leaves (Irresistable Force Mix Trip 2)</string>
-			<key>Artist</key><string>Coldcut</string>
-			<key>Composer</key><string>Coldcut</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10311886</integer>
-			<key>Total Time</key><integer>425641</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:48:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252400016</integer>
-			<key>Play Date UTC</key><date>2007-01-23T20:26:56Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B0B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/02%20Autumn%20Leaves%20(Irresistable%20Force%20Mix%20Trip%202).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>410</key>
-		<dict>
-			<key>Track ID</key><integer>410</integer>
-			<key>Name</key><string>Triangle</string>
-			<key>Artist</key><string>Sounds From The Ground</string>
-			<key>Composer</key><string>Sounds From The Ground</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>14771190</integer>
-			<key>Total Time</key><integer>609790</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:50:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251349211</integer>
-			<key>Play Date UTC</key><date>2007-01-11T16:33:31Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B0E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/03%20Triangle.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>411</key>
-		<dict>
-			<key>Track ID</key><integer>411</integer>
-			<key>Name</key><string>A Voyage On The Marie Celeste</string>
-			<key>Artist</key><string>Groove Corporation</string>
-			<key>Composer</key><string>The Groove Corporation</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6441361</integer>
-			<key>Total Time</key><integer>265812</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:51:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251523304</integer>
-			<key>Play Date UTC</key><date>2007-01-13T16:55:04Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B11</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/04%20A%20Voyage%20On%20The%20Marie%20Celeste.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>412</key>
-		<dict>
-			<key>Track ID</key><integer>412</integer>
-			<key>Name</key><string>Pleidean Communication</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Composer</key><string>A Positive Life</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10659078</integer>
-			<key>Total Time</key><integer>439977</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:52:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253459539</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:45:39Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B14</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/05%20Pleidean%20Communication.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>413</key>
-		<dict>
-			<key>Track ID</key><integer>413</integer>
-			<key>Name</key><string>Baby Interphase</string>
-			<key>Artist</key><string>Biosphere</string>
-			<key>Composer</key><string>Biosphere</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7671923</integer>
-			<key>Total Time</key><integer>316628</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:53:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251440301</integer>
-			<key>Play Date UTC</key><date>2007-01-12T17:51:41Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B17</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/06%20Baby%20Interphase.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>414</key>
-		<dict>
-			<key>Track ID</key><integer>414</integer>
-			<key>Name</key><string>Tortoise</string>
-			<key>Artist</key><string>The Higher Intelligence Agency</string>
-			<key>Composer</key><string>The Higher Intelligence Agency</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10650713</integer>
-			<key>Total Time</key><integer>439636</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:54:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247567284</integer>
-			<key>Play Date UTC</key><date>2006-11-28T22:01:24Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:31Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B1A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/07%20Tortoise.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>415</key>
-		<dict>
-			<key>Track ID</key><integer>415</integer>
-			<key>Name</key><string>Sunken Garden</string>
-			<key>Artist</key><string>Human Mesh Dance</string>
-			<key>Composer</key><string>Human Mesh Dance</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8980056</integer>
-			<key>Total Time</key><integer>370644</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:55:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252471226</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:13:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B1D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/08%20Sunken%20Garden.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>416</key>
-		<dict>
-			<key>Track ID</key><integer>416</integer>
-			<key>Name</key><string>Late Night</string>
-			<key>Artist</key><string>Insanity Sect</string>
-			<key>Composer</key><string>Insanity Sect</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7764964</integer>
-			<key>Total Time</key><integer>320468</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:56:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247667460</integer>
-			<key>Play Date UTC</key><date>2006-11-30T01:51:00Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B20</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/09%20Late%20Night.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>417</key>
-		<dict>
-			<key>Track ID</key><integer>417</integer>
-			<key>Name</key><string>Aquasonic</string>
-			<key>Artist</key><string>A Positive Life</string>
-			<key>Composer</key><string>A Positive Life</string>
-			<key>Album</key><string>A Waveform Compilation (Vol. 2 Ambient Dub)</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>12098291</integer>
-			<key>Total Time</key><integer>499412</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-06-21T13:58:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251375985</integer>
-			<key>Play Date UTC</key><date>2007-01-11T23:59:45Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B23</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/A%20Waveform%20Compilation%20(Vol.%202%20Ambient%20Dub)/10%20Aquasonic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>418</key>
-		<dict>
-			<key>Track ID</key><integer>418</integer>
-			<key>Name</key><string>Apparently Nothin'</string>
-			<key>Artist</key><string>Young Disciples</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3925511</integer>
-			<key>Total Time</key><integer>241973</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:05:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T22:47:13Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B26</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-01%20Apparently%20Nothin'.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>419</key>
-		<dict>
-			<key>Track ID</key><integer>419</integer>
-			<key>Name</key><string>Cantaloop (Flip Fantasia)</string>
-			<key>Artist</key><string>Us3</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3603508</integer>
-			<key>Total Time</key><integer>221888</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:06:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253376986</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:49:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B2B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-02%20Cantaloop%20(Flip%20Fantasia).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>420</key>
-		<dict>
-			<key>Track ID</key><integer>420</integer>
-			<key>Name</key><string>So Tired Of Waiting</string>
-			<key>Artist</key><string>Bah Samba</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4941244</integer>
-			<key>Total Time</key><integer>304899</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:08:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251434389</integer>
-			<key>Play Date UTC</key><date>2007-01-12T16:13:09Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B2E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-03%20So%20Tired%20Of%20Waiting.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>421</key>
-		<dict>
-			<key>Track ID</key><integer>421</integer>
-			<key>Name</key><string>Space Cowboy</string>
-			<key>Artist</key><string>Jamiroquai</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3549475</integer>
-			<key>Total Time</key><integer>218498</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:10:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253340325</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:38:45Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B31</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-04%20Space%20Cowboy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>422</key>
-		<dict>
-			<key>Track ID</key><integer>422</integer>
-			<key>Name</key><string>Live In The Light</string>
-			<key>Artist</key><string>Fertile Ground</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5808242</integer>
-			<key>Total Time</key><integer>358398</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:13:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252517668</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:07:48Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B34</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-05%20Live%20In%20The%20Light.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>423</key>
-		<dict>
-			<key>Track ID</key><integer>423</integer>
-			<key>Name</key><string>Blacker (The Good Times)</string>
-			<key>Artist</key><string>Ballistic Brothers</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5990813</integer>
-			<key>Total Time</key><integer>369706</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:15:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253381833</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:10:33Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B37</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-06%20Blacker%20(The%20Good%20Times).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>424</key>
-		<dict>
-			<key>Track ID</key><integer>424</integer>
-			<key>Name</key><string>Be Thankful</string>
-			<key>Artist</key><string>Omar Feat. Angie Stone</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3974750</integer>
-			<key>Total Time</key><integer>245015</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:17:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249490276</integer>
-			<key>Play Date UTC</key><date>2006-12-21T04:11:16Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B3A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-07%20Be%20Thankful.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>425</key>
-		<dict>
-			<key>Track ID</key><integer>425</integer>
-			<key>Name</key><string>Never Stop</string>
-			<key>Artist</key><string>The Brand New Heavies</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4577610</integer>
-			<key>Total Time</key><integer>282469</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:18:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251441422</integer>
-			<key>Play Date UTC</key><date>2007-01-12T18:10:22Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B3D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-08%20Never%20Stop.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>426</key>
-		<dict>
-			<key>Track ID</key><integer>426</integer>
-			<key>Name</key><string>Magic Wand Of Love</string>
-			<key>Artist</key><string>UFO</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6229210</integer>
-			<key>Total Time</key><integer>384404</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:20:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253377940</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:05:40Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B40</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-09%20Magic%20Wand%20Of%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>427</key>
-		<dict>
-			<key>Track ID</key><integer>427</integer>
-			<key>Name</key><string>Rebirth Of Slick (Cool Like Dat)</string>
-			<key>Artist</key><string>Digable Planets</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4265847</integer>
-			<key>Total Time</key><integer>263243</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:22:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B43</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-10%20Rebirth%20Of%20Slick%20(Cool%20Like%20Dat).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>428</key>
-		<dict>
-			<key>Track ID</key><integer>428</integer>
-			<key>Name</key><string>Tours Woman</string>
-			<key>Artist</key><string>The Subterraneans</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4010068</integer>
-			<key>Total Time</key><integer>247267</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:23:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B46</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-11%20Tours%20Woman.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>429</key>
-		<dict>
-			<key>Track ID</key><integer>429</integer>
-			<key>Name</key><string>Sunship</string>
-			<key>Artist</key><string>Sunship</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5177690</integer>
-			<key>Total Time</key><integer>319505</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:26:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252537406</integer>
-			<key>Play Date UTC</key><date>2007-01-25T10:36:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B49</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-12%20Sunship.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>430</key>
-		<dict>
-			<key>Track ID</key><integer>430</integer>
-			<key>Name</key><string>Something In My Eye</string>
-			<key>Artist</key><string>Corduroy Feat. Sherine</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3302483</integer>
-			<key>Total Time</key><integer>203057</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:27:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250601644</integer>
-			<key>Play Date UTC</key><date>2007-01-03T00:54:04Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B4C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-13%20Something%20In%20My%20Eye.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>431</key>
-		<dict>
-			<key>Track ID</key><integer>431</integer>
-			<key>Name</key><string>Girl Overboard</string>
-			<key>Artist</key><string>Snowboy Feat. Anna Ross</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7196454</integer>
-			<key>Total Time</key><integer>444126</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:30:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252495935</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:05:35Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B4F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-14%20Girl%20Overboard.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>432</key>
-		<dict>
-			<key>Track ID</key><integer>432</integer>
-			<key>Name</key><string>I Am The Black Gold Of The Sun</string>
-			<key>Artist</key><string>Nuyorican Soul</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 1]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5242227</integer>
-			<key>Total Time</key><integer>323522</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T05:33:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251489025</integer>
-			<key>Play Date UTC</key><date>2007-01-13T07:23:45Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B52</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%201%5D/1-15%20I%20Am%20The%20Black%20Gold%20Of%20The%20Sun.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>433</key>
-		<dict>
-			<key>Track ID</key><integer>433</integer>
-			<key>Name</key><string>Dream Come True</string>
-			<key>Artist</key><string>The Brand New Heavies</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5420739</integer>
-			<key>Total Time</key><integer>334481</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:12:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253466014</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:33:34Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B55</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-01%20Dream%20Come%20True.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>434</key>
-		<dict>
-			<key>Track ID</key><integer>434</integer>
-			<key>Name</key><string>Always There</string>
-			<key>Artist</key><string>Incognito Feat. Jocelyn Brown</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3500925</integer>
-			<key>Total Time</key><integer>215502</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:12:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251467584</integer>
-			<key>Play Date UTC</key><date>2007-01-13T01:26:24Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B5A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-02%20Always%20There.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>435</key>
-		<dict>
-			<key>Track ID</key><integer>435</integer>
-			<key>Name</key><string>Rock (Unplugged)</string>
-			<key>Artist</key><string>DJ Spinna</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4455923</integer>
-			<key>Total Time</key><integer>274969</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:13:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247499849</integer>
-			<key>Play Date UTC</key><date>2006-11-28T03:17:29Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B5D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-03%20Rock%20(Unplugged).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>436</key>
-		<dict>
-			<key>Track ID</key><integer>436</integer>
-			<key>Name</key><string>I'M The One</string>
-			<key>Artist</key><string>D’Influence</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3749087</integer>
-			<key>Total Time</key><integer>230944</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:13:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252393284</integer>
-			<key>Play Date UTC</key><date>2007-01-23T18:34:44Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B60</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-04%20I'M%20The%20One.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>437</key>
-		<dict>
-			<key>Track ID</key><integer>437</integer>
-			<key>Name</key><string>For Your Precious Love</string>
-			<key>Artist</key><string>Jestofunk</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5475708</integer>
-			<key>Total Time</key><integer>337872</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:14:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249279764</integer>
-			<key>Play Date UTC</key><date>2006-12-18T17:42:44Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B63</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-05%20For%20Your%20Precious%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>438</key>
-		<dict>
-			<key>Track ID</key><integer>438</integer>
-			<key>Name</key><string>Free Your Mind</string>
-			<key>Artist</key><string>James Taylor Quartet</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4785609</integer>
-			<key>Total Time</key><integer>295309</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:14:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252572256</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:17:36Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B66</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-06%20Free%20Your%20Mind.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>439</key>
-		<dict>
-			<key>Track ID</key><integer>439</integer>
-			<key>Name</key><string>Money</string>
-			<key>Artist</key><string>will.i.am</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3608067</integer>
-			<key>Total Time</key><integer>222097</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:14:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250599853</integer>
-			<key>Play Date UTC</key><date>2007-01-03T00:24:13Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B69</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-07%20Money.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>440</key>
-		<dict>
-			<key>Track ID</key><integer>440</integer>
-			<key>Name</key><string>People Everyday</string>
-			<key>Artist</key><string>Arrested Development</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4839538</integer>
-			<key>Total Time</key><integer>298630</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:15:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253354133</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:28:53Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B6C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-08%20People%20Everyday.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>441</key>
-		<dict>
-			<key>Track ID</key><integer>441</integer>
-			<key>Name</key><string>Spinning Wheel</string>
-			<key>Artist</key><string>New Jersey Kings</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5190249</integer>
-			<key>Total Time</key><integer>320294</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:15:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252558769</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:32:49Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B6F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-09%20Spinning%20Wheel.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>442</key>
-		<dict>
-			<key>Track ID</key><integer>442</integer>
-			<key>Name</key><string>Frederick Lies Still</string>
-			<key>Artist</key><string>Galliano</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4846287</integer>
-			<key>Total Time</key><integer>299048</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:16:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252517107</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:58:27Z</date>
-			<key>Skip Count</key><integer>3</integer>
-			<key>Skip Date</key><date>2007-02-06T21:12:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B72</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-10%20Frederick%20Lies%20Still.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>443</key>
-		<dict>
-			<key>Track ID</key><integer>443</integer>
-			<key>Name</key><string>Lovesick</string>
-			<key>Artist</key><string>Night Train</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4292915</integer>
-			<key>Total Time</key><integer>264891</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:16:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246081314</integer>
-			<key>Play Date UTC</key><date>2006-11-11T17:15:14Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B75</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-11%20Lovesick.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>444</key>
-		<dict>
-			<key>Track ID</key><integer>444</integer>
-			<key>Name</key><string>Trust Me</string>
-			<key>Artist</key><string>Vibraphonic Feat. Alison Limerick</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5228248</integer>
-			<key>Total Time</key><integer>322663</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:17:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B78</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-12%20Trust%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>445</key>
-		<dict>
-			<key>Track ID</key><integer>445</integer>
-			<key>Name</key><string>Time Of The Future</string>
-			<key>Artist</key><string>Mother Earth</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3656098</integer>
-			<key>Total Time</key><integer>225162</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:17:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250585973</integer>
-			<key>Play Date UTC</key><date>2007-01-02T20:32:53Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B7B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-13%20Time%20Of%20The%20Future.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>446</key>
-		<dict>
-			<key>Track ID</key><integer>446</integer>
-			<key>Name</key><string>Love Me To Death</string>
-			<key>Artist</key><string>A Man Called Adam</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3696199</integer>
-			<key>Total Time</key><integer>227693</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:17:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253717409</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:23:29Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-25T17:23:19Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B7E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-14%20Love%20Me%20To%20Death.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>447</key>
-		<dict>
-			<key>Track ID</key><integer>447</integer>
-			<key>Name</key><string>Mr. Jeckle</string>
-			<key>Artist</key><string>Max Beesley's High Vibes</string>
-			<key>Composer</key><string>Various Artists</string>
-			<key>Album</key><string>Acid Jazz The Essential Album [Disc 2]</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3965418</integer>
-			<key>Total Time</key><integer>244481</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-08-08T06:17:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B81</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Acid%20Jazz%20The%20Essential%20Album%20%5BDisc%202%5D/2-15%20Mr.%20Jeckle.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>448</key>
-		<dict>
-			<key>Track ID</key><integer>448</integer>
-			<key>Name</key><string>Are You Okay?</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>33396628</integer>
-			<key>Total Time</key><integer>270133</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2004-08-22T18:40:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>988</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252576105</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:21:45Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-03T16:31:00Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B84</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/01%20Are%20You%20Okay_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>449</key>
-		<dict>
-			<key>Track ID</key><integer>449</integer>
-			<key>Name</key><string>Papa Was A Rollin' Stone</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Barrett Strong/Whitfield, Norman</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>45664294</integer>
-			<key>Total Time</key><integer>401293</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-28T23:55:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>909</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252514301</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:11:41Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B89</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/02%20Papa%20Was%20A%20Rollin'%20Stone.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>450</key>
-		<dict>
-			<key>Track ID</key><integer>450</integer>
-			<key>Name</key><string>I Feel Better Than James Brown</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>33484846</integer>
-			<key>Total Time</key><integer>284906</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-24T19:15:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>939</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250678294</integer>
-			<key>Play Date UTC</key><date>2007-01-03T22:11:34Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B8C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/03%20I%20Feel%20Better%20Than%20James%20Brown.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>451</key>
-		<dict>
-			<key>Track ID</key><integer>451</integer>
-			<key>Name</key><string>How The Heart Behaves</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>40196871</integer>
-			<key>Total Time</key><integer>335093</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-28T22:12:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>959</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253352682</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:04:42Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B8F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/04%20How%20The%20Heart%20Behaves.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>452</key>
-		<dict>
-			<key>Track ID</key><integer>452</integer>
-			<key>Name</key><string>Maria Novarro</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>23807060</integer>
-			<key>Total Time</key><integer>206973</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-26T19:07:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>919</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3245948534</integer>
-			<key>Play Date UTC</key><date>2006-11-10T04:22:14Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B92</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/05%20Maria%20Novarro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>453</key>
-		<dict>
-			<key>Track ID</key><integer>453</integer>
-			<key>Name</key><string>I Blew Up The United States</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26390823</integer>
-			<key>Total Time</key><integer>230893</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-08T19:01:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>913</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252414466</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:27:46Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-02-04T17:10:11Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B95</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/06%20I%20Blew%20Up%20The%20United%20States.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>454</key>
-		<dict>
-			<key>Track ID</key><integer>454</integer>
-			<key>Name</key><string>In K Mart Wardrobe</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>31439918</integer>
-			<key>Total Time</key><integer>256133</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-26T16:40:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>981</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253356390</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:06:30Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B98</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/07%20In%20K%20Mart%20Wardrobe.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>455</key>
-		<dict>
-			<key>Track ID</key><integer>455</integer>
-			<key>Name</key><string>Elvis' Rolls Royce</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>21561041</integer>
-			<key>Total Time</key><integer>209733</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-07T00:00:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>821</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253382866</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:27:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B9B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/08%20Elvis'%20Rolls%20Royce.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>456</key>
-		<dict>
-			<key>Track ID</key><integer>456</integer>
-			<key>Name</key><string>Dressed To Be Killed</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/G Love E/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>30002159</integer>
-			<key>Total Time</key><integer>252666</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-10T22:51:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>949</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246642706</integer>
-			<key>Play Date UTC</key><date>2006-11-18T05:11:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85B9E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/09%20Dressed%20To%20Be%20Killed.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>457</key>
-		<dict>
-			<key>Track ID</key><integer>457</integer>
-			<key>Name</key><string>Just Another Couple Broken Hearts</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>36625979</integer>
-			<key>Total Time</key><integer>294866</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-03T14:35:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>993</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253028860</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:07:40Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BA1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/10%20Just%20Another%20Couple%20Broken%20Hearts.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>458</key>
-		<dict>
-			<key>Track ID</key><integer>458</integer>
-			<key>Name</key><string>You! You! You!</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Luis Resto/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>21455630</integer>
-			<key>Total Time</key><integer>208640</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-05T16:08:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>821</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T19:11:27Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BA4</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/11%20You!%20You!%20You!.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>459</key>
-		<dict>
-			<key>Track ID</key><integer>459</integer>
-			<key>Name</key><string>Look What's Back</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Don Was/Was, David</string>
-			<key>Album</key><string>Are You Okay?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>4362447</integer>
-			<key>Total Time</key><integer>43560</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-08T23:10:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>797</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247559747</integer>
-			<key>Play Date UTC</key><date>2006-11-28T19:55:47Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BA7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Are%20You%20Okay_/12%20Look%20What's%20Back.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>460</key>
-		<dict>
-			<key>Track ID</key><integer>460</integer>
-			<key>Name</key><string>Cannonball</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Brother Where You Bound</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11123448</integer>
-			<key>Total Time</key><integer>459177</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1985</integer>
-			<key>Date Modified</key><date>2004-06-24T23:58:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253535749</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:55:49Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BAA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Brother%20Where%20You%20Bound/01%20Cannonball.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>461</key>
-		<dict>
-			<key>Track ID</key><integer>461</integer>
-			<key>Name</key><string>Still In Love</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Brother Where You Bound</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6714336</integer>
-			<key>Total Time</key><integer>277097</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1985</integer>
-			<key>Date Modified</key><date>2004-06-24T23:58:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252574054</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:47:34Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BAF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Brother%20Where%20You%20Bound/02%20Still%20In%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>462</key>
-		<dict>
-			<key>Track ID</key><integer>462</integer>
-			<key>Name</key><string>No Inbetween</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Brother Where You Bound</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6707320</integer>
-			<key>Total Time</key><integer>276798</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1985</integer>
-			<key>Date Modified</key><date>2004-06-24T23:59:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253029136</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:12:16Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T23:27:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BB2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Brother%20Where%20You%20Bound/03%20No%20Inbetween.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>463</key>
-		<dict>
-			<key>Track ID</key><integer>463</integer>
-			<key>Name</key><string>Better Days</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Brother Where You Bound</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9109095</integer>
-			<key>Total Time</key><integer>375977</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1985</integer>
-			<key>Date Modified</key><date>2004-06-25T00:00:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253462415</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:33:35Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:12Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BB5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Brother%20Where%20You%20Bound/04%20Better%20Days.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>464</key>
-		<dict>
-			<key>Track ID</key><integer>464</integer>
-			<key>Name</key><string>Brother Where You Bound</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Brother Where You Bound</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>24012211</integer>
-			<key>Total Time</key><integer>991401</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1985</integer>
-			<key>Date Modified</key><date>2004-06-25T00:03:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253525183</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:59:43Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BB8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Brother%20Where%20You%20Bound/05%20Brother%20Where%20You%20Bound.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>465</key>
-		<dict>
-			<key>Track ID</key><integer>465</integer>
-			<key>Name</key><string>Ever Open Door</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Brother Where You Bound</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4446466</integer>
-			<key>Total Time</key><integer>182932</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1985</integer>
-			<key>Date Modified</key><date>2004-06-25T00:04:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246979262</integer>
-			<key>Play Date UTC</key><date>2006-11-22T02:41:02Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BBB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Brother%20Where%20You%20Bound/06%20Ever%20Open%20Door.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>466</key>
-		<dict>
-			<key>Track ID</key><integer>466</integer>
-			<key>Name</key><string>Good To Be Alive By DJ RAP</string>
-			<key>Artist</key><string>DJ Rap</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>25534293</integer>
-			<key>Total Time</key><integer>221693</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-28T23:53:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>920</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>22</integer>
-			<key>Play Date</key><integer>3252899694</integer>
-			<key>Play Date UTC</key><date>2007-01-29T15:14:54Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-04T23:15:29Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BBE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/01%20Good%20To%20Be%20Alive%20By%20DJ%20RAP.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>467</key>
-		<dict>
-			<key>Track ID</key><integer>467</integer>
-			<key>Name</key><string>B-Boy Stance By Freestylers</string>
-			<key>Artist</key><string>Freestylers Feat. Tenor Fly</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28831725</integer>
-			<key>Total Time</key><integer>257640</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-10-01T14:49:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>894</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253456616</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:56:56Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T22:05:13Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BC3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/02%20B-Boy%20Stance%20By%20Freestylers.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>468</key>
-		<dict>
-			<key>Track ID</key><integer>468</integer>
-			<key>Name</key><string>Bubble Bath By $.10</string>
-			<key>Artist</key><string>10¢</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>18326229</integer>
-			<key>Total Time</key><integer>167093</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-10-17T15:55:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>875</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T23:13:05Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BC6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/03%20Bubble%20Bath%20By%20$.10.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>469</key>
-		<dict>
-			<key>Track ID</key><integer>469</integer>
-			<key>Name</key><string>Six By Mansun</string>
-			<key>Artist</key><string>Mansun</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>30740921</integer>
-			<key>Total Time</key><integer>236360</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-10-06T23:19:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1039</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>21</integer>
-			<key>Play Date</key><integer>3253539563</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:59:23Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-30T20:20:49Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BC9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/05%20Six%20By%20Mansun.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>470</key>
-		<dict>
-			<key>Track ID</key><integer>470</integer>
-			<key>Name</key><string>If You Tolerate This Your Children Will Be Ne</string>
-			<key>Artist</key><string>Manic Street Preachers</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>39223797</integer>
-			<key>Total Time</key><integer>288333</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-28T23:58:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1087</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252576394</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:26:34Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BCC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/06%20If%20You%20Tolerate%20This%20Your%20Children%20Will%20Be%20Ne.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>471</key>
-		<dict>
-			<key>Track ID</key><integer>471</integer>
-			<key>Name</key><string>Longevity</string>
-			<key>Artist</key><string>Bolt Upright</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24354173</integer>
-			<key>Total Time</key><integer>196266</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2004-10-08T02:53:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>991</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250667834</integer>
-			<key>Play Date UTC</key><date>2007-01-03T19:17:14Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:43:21Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BCF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/07%20Longevity.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>472</key>
-		<dict>
-			<key>Track ID</key><integer>472</integer>
-			<key>Name</key><string>Style By Orbital</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28554313</integer>
-			<key>Total Time</key><integer>244800</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-28T16:13:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>932</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252539101</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:05:01Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BD5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/11%20Style%20By%20Orbital.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>473</key>
-		<dict>
-			<key>Track ID</key><integer>473</integer>
-			<key>Name</key><string>Drunk Is Better Than Dead</string>
-			<key>Artist</key><string>The Push Stars</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>27265475</integer>
-			<key>Total Time</key><integer>217200</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-28T14:33:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1003</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246467154</integer>
-			<key>Play Date UTC</key><date>2006-11-16T04:25:54Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BD8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/12%20Drunk%20Is%20Better%20Than%20Dead.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>474</key>
-		<dict>
-			<key>Track ID</key><integer>474</integer>
-			<key>Name</key><string>Murder (Or A Heart Attack)</string>
-			<key>Artist</key><string>Old 97's</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29124849</integer>
-			<key>Total Time</key><integer>216466</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-10-17T14:28:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1075</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BDB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/13%20Murder%20(Or%20A%20Heart%20Attack).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>475</key>
-		<dict>
-			<key>Track ID</key><integer>475</integer>
-			<key>Name</key><string>Man With The Hex By Atomic Fireballs</string>
-			<key>Artist</key><string>The Atomic Fireballs</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24954841</integer>
-			<key>Total Time</key><integer>181133</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-28T23:57:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1100</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253688394</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:19:54Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BDE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/14%20Man%20With%20The%20Hex%20By%20Atomic%20Fireballs.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>476</key>
-		<dict>
-			<key>Track ID</key><integer>476</integer>
-			<key>Name</key><string>Do Something</string>
-			<key>Artist</key><string>Macy Gray</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28616734</integer>
-			<key>Total Time</key><integer>251200</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-26T16:36:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>910</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>25</integer>
-			<key>Play Date</key><integer>3253522969</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:22:49Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BE1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/15%20Do%20Something.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>477</key>
-		<dict>
-			<key>Track ID</key><integer>477</integer>
-			<key>Name</key><string>World Wide Funk</string>
-			<key>Artist</key><string>Expansion Union</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>55560305</integer>
-			<key>Total Time</key><integer>432133</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-28T23:53:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1028</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252483637</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:40:37Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BE4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/16%20World%20Wide%20Funk.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>478</key>
-		<dict>
-			<key>Track ID</key><integer>478</integer>
-			<key>Name</key><string>Goldrush</string>
-			<key>Artist</key><string>The Herbaliser</string>
-			<key>Album</key><string>CMJ New Music Monthly, Volume 70, June 1999</string>
-			<key>Genre</key><string>Unclassifiable</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>37448337</integer>
-			<key>Total Time</key><integer>368866</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Date Modified</key><date>2005-09-24T19:41:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>811</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253765854</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:50:54Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-02T14:03:43Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BE7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/CMJ%20New%20Music%20Monthly,%20Volume%2070,%20June%201999/17%20Goldrush.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>479</key>
-		<dict>
-			<key>Track ID</key><integer>479</integer>
-			<key>Name</key><string>04 04 04 04 04 Cowgirl (Irish Pub In Ky</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dirty Epic - Cowgirl (EP)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>14086491</integer>
-			<key>Total Time</key><integer>704313</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250588617</integer>
-			<key>Play Date UTC</key><date>2007-01-02T21:16:57Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T18:58:55Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BEA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Dirty%20Epic%20-%20Cowgirl%20(EP)/04%2004%2004%2004%2004%20Cowgirl%20(Irish%20Pub%20In%20Ky.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>480</key>
-		<dict>
-			<key>Track ID</key><integer>480</integer>
-			<key>Name</key><string>Song of Life</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6248853</integer>
-			<key>Total Time</key><integer>260606</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:35:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250594604</integer>
-			<key>Play Date UTC</key><date>2007-01-02T22:56:44Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BEF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/01%20Song%20of%20Life.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>481</key>
-		<dict>
-			<key>Track ID</key><integer>481</integer>
-			<key>Name</key><string>Samurai</string>
-			<key>Artist</key><string>Jungle High</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10066662</integer>
-			<key>Total Time</key><integer>418324</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:37:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253361518</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:31:58Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BF4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/02%20Samurai.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>482</key>
-		<dict>
-			<key>Track ID</key><integer>482</integer>
-			<key>Name</key><string>Patients</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8662810</integer>
-			<key>Total Time</key><integer>362004</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:38:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253289543</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:32:23Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BF7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/03%20Patients.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>483</key>
-		<dict>
-			<key>Track ID</key><integer>483</integer>
-			<key>Name</key><string>Angel of Love (Dub Pylon Mix)</string>
-			<key>Artist</key><string>Zexos</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9880943</integer>
-			<key>Total Time</key><integer>411134</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:39:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253510328</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:52:08Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BFA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/04%20Angel%20of%20Love%20(Dub%20Pylon%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>484</key>
-		<dict>
-			<key>Track ID</key><integer>484</integer>
-			<key>Name</key><string>Young American Primitive (Angel's Hand Mix)</string>
-			<key>Artist</key><string>Young American Primitive</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9267001</integer>
-			<key>Total Time</key><integer>383977</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:40:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253691253</integer>
-			<key>Play Date UTC</key><date>2007-02-07T19:07:33Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85BFD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/05%20Young%20American%20Primitive%20(Angel's%20Hand%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>485</key>
-		<dict>
-			<key>Track ID</key><integer>485</integer>
-			<key>Name</key><string>LSD (Trippy Tribal Trance Dub)</string>
-			<key>Artist</key><string>Tripp</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9435510</integer>
-			<key>Total Time</key><integer>391700</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:51:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251885259</integer>
-			<key>Play Date UTC</key><date>2007-01-17T21:27:39Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C00</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/06%20LSD%20(Trippy%20Tribal%20Trance%20Dub).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>486</key>
-		<dict>
-			<key>Track ID</key><integer>486</integer>
-			<key>Name</key><string>A Great New Adventure (Trance Instrumental)</string>
-			<key>Artist</key><string>Q.B.N.Z.</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7984248</integer>
-			<key>Total Time</key><integer>329876</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:52:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252468403</integer>
-			<key>Play Date UTC</key><date>2007-01-24T15:26:43Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C03</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/07%20A%20Great%20New%20Adventure%20(Trance%20Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>487</key>
-		<dict>
-			<key>Track ID</key><integer>487</integer>
-			<key>Name</key><string>An Accident In Paradise</string>
-			<key>Artist</key><string>SVEN V TH</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9339466</integer>
-			<key>Total Time</key><integer>387134</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T14:53:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253528872</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:01:12Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C06</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/08%20An%20Accident%20In%20Paradise.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>488</key>
-		<dict>
-			<key>Track ID</key><integer>488</integer>
-			<key>Name</key><string>Wind it Up (Forward Wind Mix)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8717892</integer>
-			<key>Total Time</key><integer>359828</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T16:45:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253336005</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:26:45Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C09</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/10%20Wind%20it%20Up%20(Forward%20Wind%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>489</key>
-		<dict>
-			<key>Track ID</key><integer>489</integer>
-			<key>Name</key><string>Butoh</string>
-			<key>Artist</key><string>Futurhythm</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8452424</integer>
-			<key>Total Time</key><integer>349438</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T16:46:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250592471</integer>
-			<key>Play Date UTC</key><date>2007-01-02T22:21:11Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:43:29Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C0C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/11%20Butoh.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>490</key>
-		<dict>
-			<key>Track ID</key><integer>490</integer>
-			<key>Name</key><string>Fall From Grace (Free Me Mix)</string>
-			<key>Artist</key><string>Eskimos &#38; Egypt</string>
-			<key>Album</key><string>Futurhythms</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8728822</integer>
-			<key>Total Time</key><integer>360468</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-26T16:47:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253373536</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:52:16Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C0F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Futurhythms/12%20Fall%20From%20Grace%20(Free%20Me%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>491</key>
-		<dict>
-			<key>Track ID</key><integer>491</integer>
-			<key>Name</key><string>La Sagrada Familia</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>12763078</integer>
-			<key>Total Time</key><integer>526868</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:48:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249311005</integer>
-			<key>Play Date UTC</key><date>2006-12-19T02:23:25Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C12</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/01%20La%20Sagrada%20Familia.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>492</key>
-		<dict>
-			<key>Track ID</key><integer>492</integer>
-			<key>Name</key><string>Too Late</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6572277</integer>
-			<key>Total Time</key><integer>271230</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:49:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251635697</integer>
-			<key>Play Date UTC</key><date>2007-01-15T00:08:17Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-25T17:23:47Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C17</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/02%20Too%20Late.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>493</key>
-		<dict>
-			<key>Track ID</key><integer>493</integer>
-			<key>Name</key><string>Closer To Heaven</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8551093</integer>
-			<key>Total Time</key><integer>352937</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:50:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251380797</integer>
-			<key>Play Date UTC</key><date>2007-01-12T01:19:57Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C1A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/03%20Closer%20To%20Heaven.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>494</key>
-		<dict>
-			<key>Track ID</key><integer>494</integer>
-			<key>Name</key><string>Standing On Higher Ground</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7357129</integer>
-			<key>Total Time</key><integer>303636</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:51:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253361822</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:37:02Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C1D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/04%20Standing%20On%20Higher%20Ground.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>495</key>
-		<dict>
-			<key>Track ID</key><integer>495</integer>
-			<key>Name</key><string>Money Talks</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6455418</integer>
-			<key>Total Time</key><integer>266388</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:52:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253265444</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:50:44Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C20</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/05%20Money%20Talks.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>496</key>
-		<dict>
-			<key>Track ID</key><integer>496</integer>
-			<key>Name</key><string>Inside Looking Out</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9264519</integer>
-			<key>Total Time</key><integer>382398</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:53:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253600134</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:48:54Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C23</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/06%20Inside%20Looking%20Out.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>497</key>
-		<dict>
-			<key>Track ID</key><integer>497</integer>
-			<key>Name</key><string>Paseo De Gracia (Instrumental)</string>
-			<key>Artist</key><string>Alan Parsons Project</string>
-			<key>Album</key><string>Gaudi</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5508349</integer>
-			<key>Total Time</key><integer>227134</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-06-22T23:53:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253766081</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:54:41Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T03:05:58Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C26</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Gaudi/07%20Paseo%20De%20Gracia%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>498</key>
-		<dict>
-			<key>Track ID</key><integer>498</integer>
-			<key>Name</key><string>Welcome to My Life</string>
-			<key>Artist</key><string>Simple Plan</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3591255</integer>
-			<key>Total Time</key><integer>203335</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-27T04:55:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252493294</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:21:34Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C29</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/02%20Welcome%20to%20My%20Life.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>499</key>
-		<dict>
-			<key>Track ID</key><integer>499</integer>
-			<key>Name</key><string>Gotta Get Up from Here</string>
-			<key>Artist</key><string>Ellie Lawson</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3748407</integer>
-			<key>Total Time</key><integer>219775</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-21T14:49:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>22</integer>
-			<key>Play Date</key><integer>3252901610</integer>
-			<key>Play Date UTC</key><date>2007-01-29T15:46:50Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C31</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/04%20Gotta%20Get%20Up%20from%20Here.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>500</key>
-		<dict>
-			<key>Track ID</key><integer>500</integer>
-			<key>Name</key><string>Lost Control</string>
-			<key>Artist</key><string>Unwritten Law</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3149351</integer>
-			<key>Total Time</key><integer>173033</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-21T06:21:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249199190</integer>
-			<key>Play Date UTC</key><date>2006-12-17T19:19:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C34</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/05%20Lost%20Control.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>501</key>
-		<dict>
-			<key>Track ID</key><integer>501</integer>
-			<key>Name</key><string>What You Want</string>
-			<key>Artist</key><string>John Butler Trio</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5517543</integer>
-			<key>Total Time</key><integer>320875</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-20T17:05:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253553794</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:56:34Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C37</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/06%20What%20You%20Want.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>502</key>
-		<dict>
-			<key>Track ID</key><integer>502</integer>
-			<key>Name</key><string>When I'm Gone (Sadie)</string>
-			<key>Artist</key><string>No Address</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4499655</integer>
-			<key>Total Time</key><integer>259342</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-04T02:56:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253591578</integer>
-			<key>Play Date UTC</key><date>2007-02-06T15:26:18Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C3A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/07%20When%20I'm%20Gone%20(Sadie).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>503</key>
-		<dict>
-			<key>Track ID</key><integer>503</integer>
-			<key>Name</key><string>Funny Little Feeling</string>
-			<key>Artist</key><string>Rock 'n' Roll Soldiers</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3054071</integer>
-			<key>Total Time</key><integer>167344</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-25T17:43:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250402552</integer>
-			<key>Play Date UTC</key><date>2006-12-31T17:35:52Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C3D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/08%20Funny%20Little%20Feeling.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>504</key>
-		<dict>
-			<key>Track ID</key><integer>504</integer>
-			<key>Name</key><string>Yesterday Never Tomorrows</string>
-			<key>Artist</key><string>The Stills</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5411111</integer>
-			<key>Total Time</key><integer>320782</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-20T07:30:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250620796</integer>
-			<key>Play Date UTC</key><date>2007-01-03T06:13:16Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C40</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/09%20Yesterday%20Never%20Tomorrows.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>505</key>
-		<dict>
-			<key>Track ID</key><integer>505</integer>
-			<key>Name</key><string>Louis XIV</string>
-			<key>Artist</key><string>Louis XIV</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2958039</integer>
-			<key>Total Time</key><integer>164651</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-18T01:28:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252476977</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:49:37Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C43</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/10%20Louis%20XIV.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>506</key>
-		<dict>
-			<key>Track ID</key><integer>506</integer>
-			<key>Name</key><string>Broken Promises</string>
-			<key>Artist</key><string>Moments In Grace</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3522935</integer>
-			<key>Total Time</key><integer>195905</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-28T04:15:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252533234</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:27:14Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C46</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/11%20Broken%20Promises.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>507</key>
-		<dict>
-			<key>Track ID</key><integer>507</integer>
-			<key>Name</key><string>You'll Never Guess Who Died</string>
-			<key>Artist</key><string>The Kinison</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3750855</integer>
-			<key>Total Time</key><integer>209233</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-17T00:57:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252481983</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:13:03Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C49</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/12%20You'll%20Never%20Guess%20Who%20Died.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>508</key>
-		<dict>
-			<key>Track ID</key><integer>508</integer>
-			<key>Name</key><string>Pressure</string>
-			<key>Artist</key><string>Skindred</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3743175</integer>
-			<key>Total Time</key><integer>208769</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-25T21:54:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249460059</integer>
-			<key>Play Date UTC</key><date>2006-12-20T19:47:39Z</date>
-			<key>Skip Count</key><integer>3</integer>
-			<key>Skip Date</key><date>2007-02-05T19:21:37Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C4C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/13%20Pressure.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>509</key>
-		<dict>
-			<key>Track ID</key><integer>509</integer>
-			<key>Name</key><string>On Your Porch</string>
-			<key>Artist</key><string>The Format</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5217095</integer>
-			<key>Total Time</key><integer>311703</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-17T21:38:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253534665</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:37:45Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C4F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/14%20On%20Your%20Porch.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>510</key>
-		<dict>
-			<key>Track ID</key><integer>510</integer>
-			<key>Name</key><string>Everyday</string>
-			<key>Artist</key><string>Toby Lightman</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3832823</integer>
-			<key>Total Time</key><integer>228320</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-09T14:20:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253177860</integer>
-			<key>Play Date UTC</key><date>2007-02-01T20:31:00Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T02:51:47Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C52</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/15%20Everyday.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>511</key>
-		<dict>
-			<key>Track ID</key><integer>511</integer>
-			<key>Name</key><string>Shallow</string>
-			<key>Artist</key><string>Porcupine Tree</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Album</key><string>iTunes New Music Sampler (Atlantic/Lava Edition)</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3839047</integer>
-			<key>Total Time</key><integer>214922</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-28T20:00:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253535964</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:59:24Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-02T22:10:52Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85C55</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/iTunes%20New%20Music%20Sampler%20(Atlantic_Lava%20Edition)/16%20Shallow.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>512</key>
-		<dict>
-			<key>Track ID</key><integer>512</integer>
-			<key>Name</key><string>All I Really Want</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6862589</integer>
-			<key>Total Time</key><integer>284606</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:26:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252529305</integer>
-			<key>Play Date UTC</key><date>2007-01-25T08:21:45Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C58</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/01%20All%20I%20Really%20Want.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>513</key>
-		<dict>
-			<key>Track ID</key><integer>513</integer>
-			<key>Name</key><string>You Oughta Know</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5998848</integer>
-			<key>Total Time</key><integer>249172</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:29:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249194651</integer>
-			<key>Play Date UTC</key><date>2006-12-17T18:04:11Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-12T01:40:46Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C5D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/02%20You%20Oughta%20Know.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>514</key>
-		<dict>
-			<key>Track ID</key><integer>514</integer>
-			<key>Name</key><string>Perfect</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4526119</integer>
-			<key>Total Time</key><integer>187860</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:31:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253284584</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:09:44Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-12T01:41:00Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C60</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/03%20Perfect.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>515</key>
-		<dict>
-			<key>Track ID</key><integer>515</integer>
-			<key>Name</key><string>Hand In My Pocket</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5309582</integer>
-			<key>Total Time</key><integer>221673</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:34:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247465147</integer>
-			<key>Play Date UTC</key><date>2006-11-27T17:39:07Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C63</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/04%20Hand%20In%20My%20Pocket.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>516</key>
-		<dict>
-			<key>Track ID</key><integer>516</integer>
-			<key>Name</key><string>Right Through You</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4234328</integer>
-			<key>Total Time</key><integer>175785</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:36:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253268065</integer>
-			<key>Play Date UTC</key><date>2007-02-02T21:34:25Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C66</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/05%20Right%20Through%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>517</key>
-		<dict>
-			<key>Track ID</key><integer>517</integer>
-			<key>Name</key><string>Forgiven</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7228766</integer>
-			<key>Total Time</key><integer>300244</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:40:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252562875</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:41:15Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C69</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/06%20Forgiven.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>518</key>
-		<dict>
-			<key>Track ID</key><integer>518</integer>
-			<key>Name</key><string>You Learn</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5799449</integer>
-			<key>Total Time</key><integer>239614</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:43:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252991257</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:40:57Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C6C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/07%20You%20Learn.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>519</key>
-		<dict>
-			<key>Track ID</key><integer>519</integer>
-			<key>Name</key><string>Head Over Feet</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6406580</integer>
-			<key>Total Time</key><integer>267241</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:46:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253461265</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:14:25Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:43Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C6F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/08%20Head%20Over%20Feet.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>520</key>
-		<dict>
-			<key>Track ID</key><integer>520</integer>
-			<key>Name</key><string>Mary Jane</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6755273</integer>
-			<key>Total Time</key><integer>280596</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:50:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252571639</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:07:19Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C72</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/09%20Mary%20Jane.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>521</key>
-		<dict>
-			<key>Track ID</key><integer>521</integer>
-			<key>Name</key><string>Ironic</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5535747</integer>
-			<key>Total Time</key><integer>229673</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:52:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252482971</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:29:31Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C75</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/10%20Ironic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>522</key>
-		<dict>
-			<key>Track ID</key><integer>522</integer>
-			<key>Name</key><string>Not The Doctor</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5481200</integer>
-			<key>Total Time</key><integer>227561</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:55:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253278389</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:26:29Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C78</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/11%20Not%20The%20Doctor.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>523</key>
-		<dict>
-			<key>Track ID</key><integer>523</integer>
-			<key>Name</key><string>Wake Up</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7117835</integer>
-			<key>Total Time</key><integer>293758</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T17:59:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251890989</integer>
-			<key>Play Date UTC</key><date>2007-01-17T23:03:09Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C7B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/12%20Wake%20Up.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>524</key>
-		<dict>
-			<key>Track ID</key><integer>524</integer>
-			<key>Name</key><string>You Oughta Know (Alternate)</string>
-			<key>Artist</key><string>Alanis Morissette</string>
-			<key>Composer</key><string>Music by Alanis Morissette and Glen Ballard. Lyrics by Alanis Morissette.</string>
-			<key>Album</key><string>Jagged Little Pill</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10752633</integer>
-			<key>Total Time</key><integer>492926</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-05-04T18:05:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C7E</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Jagged%20Little%20Pill/13%20You%20Oughta%20Know%20(Alternate).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>525</key>
-		<dict>
-			<key>Track ID</key><integer>525</integer>
-			<key>Name</key><string>Everything Counts (Bomb-Beyond-The-Yalu-Mix)</string>
-			<key>Artist</key><string>Depeche Mode</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8004931</integer>
-			<key>Total Time</key><integer>331198</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:06:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246430042</integer>
-			<key>Play Date UTC</key><date>2006-11-15T18:07:22Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C81</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/01%20Everything%20Counts%20(Bomb-Beyond-The-Yalu-Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>526</key>
-		<dict>
-			<key>Track ID</key><integer>526</integer>
-			<key>Name</key><string>In A Manner Of Speaking</string>
-			<key>Artist</key><string>Martin Gore</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6062591</integer>
-			<key>Total Time</key><integer>251028</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:06:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251631021</integer>
-			<key>Play Date UTC</key><date>2007-01-14T22:50:21Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C86</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/02%20In%20A%20Manner%20Of%20Speaking.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>527</key>
-		<dict>
-			<key>Track ID</key><integer>527</integer>
-			<key>Name</key><string>Accidentally 4th Street (Gloria) [Remix]</string>
-			<key>Artist</key><string>Figures On A Beach</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5934546</integer>
-			<key>Total Time</key><integer>245716</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:07:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252550712</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:18:32Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C89</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/03%20Accidentally%204th%20Street%20(Gloria)%20%5BRemix%5D.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>528</key>
-		<dict>
-			<key>Track ID</key><integer>528</integer>
-			<key>Name</key><string>Thrash</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6291505</integer>
-			<key>Total Time</key><integer>260606</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:08:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251888388</integer>
-			<key>Play Date UTC</key><date>2007-01-17T22:19:48Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C8C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/04%20Thrash.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>529</key>
-		<dict>
-			<key>Track ID</key><integer>529</integer>
-			<key>Name</key><string>Pistol</string>
-			<key>Artist</key><string>Erasure</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5013827</integer>
-			<key>Total Time</key><integer>207892</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:09:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252525950</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:25:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C8F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/05%20Pistol.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>530</key>
-		<dict>
-			<key>Track ID</key><integer>530</integer>
-			<key>Name</key><string>Insha-Allah</string>
-			<key>Artist</key><string>Nasa</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10533902</integer>
-			<key>Total Time</key><integer>436585</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:10:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249569375</integer>
-			<key>Play Date UTC</key><date>2006-12-22T02:09:35Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C92</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/06%20Insha-Allah.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>531</key>
-		<dict>
-			<key>Track ID</key><integer>531</integer>
-			<key>Name</key><string>Dizzy (Remix)</string>
-			<key>Artist</key><string>Throwing Muses</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5098951</integer>
-			<key>Total Time</key><integer>211582</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:11:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253545777</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:42:57Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-09T21:07:51Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C95</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/07%20Dizzy%20(Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>532</key>
-		<dict>
-			<key>Track ID</key><integer>532</integer>
-			<key>Name</key><string>Whistling For His Love (Remix)</string>
-			<key>Artist</key><string>Danielle Dax</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9079973</integer>
-			<key>Total Time</key><integer>376318</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:12:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250609798</integer>
-			<key>Play Date UTC</key><date>2007-01-03T03:09:58Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C98</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/08%20Whistling%20For%20His%20Love%20(Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>533</key>
-		<dict>
-			<key>Track ID</key><integer>533</integer>
-			<key>Name</key><string>Lucky Lisp</string>
-			<key>Artist</key><string>Morrissey</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4199053</integer>
-			<key>Total Time</key><integer>173993</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:12:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252541052</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:37:32Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C9B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/09%20Lucky%20Lisp.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>534</key>
-		<dict>
-			<key>Track ID</key><integer>534</integer>
-			<key>Name</key><string>Between Something and Nothing</string>
-			<key>Artist</key><string>The Ocean Blue</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5791606</integer>
-			<key>Total Time</key><integer>240660</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:13:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249296293</integer>
-			<key>Play Date UTC</key><date>2006-12-18T22:18:13Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85C9E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/10%20Between%20Something%20and%20Nothing.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>535</key>
-		<dict>
-			<key>Track ID</key><integer>535</integer>
-			<key>Name</key><string>Da'ale Da'ale (Remix)</string>
-			<key>Artist</key><string>Ofra Haza</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8821926</integer>
-			<key>Total Time</key><integer>365588</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:14:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249312965</integer>
-			<key>Play Date UTC</key><date>2006-12-19T02:56:05Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CA1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/11%20Da'ale%20Da'ale%20(Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>536</key>
-		<dict>
-			<key>Track ID</key><integer>536</integer>
-			<key>Name</key><string>Don't Say No (Remix)</string>
-			<key>Artist</key><string>Tom Tom Club</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5814665</integer>
-			<key>Total Time</key><integer>241129</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:15:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249544812</integer>
-			<key>Play Date UTC</key><date>2006-12-21T19:20:12Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CA4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/12%20Don't%20Say%20No%20(Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>537</key>
-		<dict>
-			<key>Track ID</key><integer>537</integer>
-			<key>Name</key><string>Nanana</string>
-			<key>Artist</key><string>Royal Crescent Mob</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5441747</integer>
-			<key>Total Time</key><integer>226089</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:16:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251862359</integer>
-			<key>Play Date UTC</key><date>2007-01-17T15:05:59Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CA7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/14%20Nanana.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>538</key>
-		<dict>
-			<key>Track ID</key><integer>538</integer>
-			<key>Name</key><string>Date to Church</string>
-			<key>Artist</key><string>The Replacements</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5535284</integer>
-			<key>Total Time</key><integer>229182</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:17:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249464271</integer>
-			<key>Play Date UTC</key><date>2006-12-20T20:57:51Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CAA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/15%20Date%20to%20Church.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>539</key>
-		<dict>
-			<key>Track ID</key><integer>539</integer>
-			<key>Name</key><string>Nowhere to Stand</string>
-			<key>Artist</key><string>k.d. lang</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6470557</integer>
-			<key>Total Time</key><integer>267497</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:18:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253550791</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:06:31Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-14T23:33:52Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CAD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/16%20Nowhere%20to%20Stand.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>540</key>
-		<dict>
-			<key>Track ID</key><integer>540</integer>
-			<key>Name</key><string>Strawman (Live)</string>
-			<key>Artist</key><string>Lou Reed</string>
-			<key>Album</key><string>Just Say Mao</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8866224</integer>
-			<key>Total Time</key><integer>365929</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2005-06-14T14:19:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249206222</integer>
-			<key>Play Date UTC</key><date>2006-12-17T21:17:02Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CB0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Just%20Say%20Mao/17%20Strawman%20(Live).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>541</key>
-		<dict>
-			<key>Track ID</key><integer>541</integer>
-			<key>Name</key><string>London</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2714578</integer>
-			<key>Total Time</key><integer>166299</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:27:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253513677</integer>
-			<key>Play Date UTC</key><date>2007-02-05T17:47:57Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CB3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/01%20London.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>542</key>
-		<dict>
-			<key>Track ID</key><integer>542</integer>
-			<key>Name</key><string>Restless (Featuring Toastie Taylor)</string>
-			<key>Artist</key><string>Evil Nine Featuring Toastie Taylor</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4767773</integer>
-			<key>Total Time</key><integer>294868</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2006-07-08T06:28:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253557110</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:51:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CB8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/02%20Restless%20(Featuring%20Toastie%20Taylor).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>543</key>
-		<dict>
-			<key>Track ID</key><integer>543</integer>
-			<key>Name</key><string>Smoked</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3574926</integer>
-			<key>Total Time</key><integer>220030</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:28:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253680361</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:06:01Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CBB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/03%20Smoked.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>544</key>
-		<dict>
-			<key>Track ID</key><integer>544</integer>
-			<key>Name</key><string>Fire to Me</string>
-			<key>Artist</key><string>Hyper Vs. The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4467041</integer>
-			<key>Total Time</key><integer>276269</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:29:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>32</integer>
-			<key>Play Date</key><integer>3253030779</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:39:39Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CBE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/04%20Fire%20to%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>545</key>
-		<dict>
-			<key>Track ID</key><integer>545</integer>
-			<key>Name</key><string>Roboslut</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3538511</integer>
-			<key>Total Time</key><integer>217732</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:29:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>33</integer>
-			<key>Play Date</key><integer>3253030997</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:43:17Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CC1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/05%20Roboslut.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>546</key>
-		<dict>
-			<key>Track ID</key><integer>546</integer>
-			<key>Name</key><string>Defective</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4269079</integer>
-			<key>Total Time</key><integer>263359</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:30:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3246906311</integer>
-			<key>Play Date UTC</key><date>2006-11-21T06:25:11Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CC4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/06%20Defective.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>547</key>
-		<dict>
-			<key>Track ID</key><integer>547</integer>
-			<key>Name</key><string>Vice</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3752999</integer>
-			<key>Total Time</key><integer>231153</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:30:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252535555</integer>
-			<key>Play Date UTC</key><date>2007-01-25T10:05:55Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CC7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/07%20Vice.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>548</key>
-		<dict>
-			<key>Track ID</key><integer>548</integer>
-			<key>Name</key><string>Crime</string>
-			<key>Artist</key><string>Troy Bonnes</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2892168</integer>
-			<key>Total Time</key><integer>177399</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:30:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253768670</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:37:50Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CCA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/08%20Crime.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>549</key>
-		<dict>
-			<key>Track ID</key><integer>549</integer>
-			<key>Name</key><string>C'mon Children</string>
-			<key>Artist</key><string>Out Crowd</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4886921</integer>
-			<key>Total Time</key><integer>301834</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:31:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253031476</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:51:16Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-04T22:52:19Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CCD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/09%20C'mon%20Children.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>550</key>
-		<dict>
-			<key>Track ID</key><integer>550</integer>
-			<key>Name</key><string>Onesixteen</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4549967</integer>
-			<key>Total Time</key><integer>280913</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:31:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253031757</integer>
-			<key>Play Date UTC</key><date>2007-01-31T03:55:57Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T01:24:15Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CD0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/10%20Onesixteen.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>551</key>
-		<dict>
-			<key>Track ID</key><integer>551</integer>
-			<key>Name</key><string>Sucker Punch</string>
-			<key>Artist</key><string>Connie Price &#38; The Keystones</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4400528</integer>
-			<key>Total Time</key><integer>271555</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2006-07-08T06:32:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247043665</integer>
-			<key>Play Date UTC</key><date>2006-11-22T20:34:25Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CD3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/11%20Sucker%20Punch.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>552</key>
-		<dict>
-			<key>Track ID</key><integer>552</integer>
-			<key>Name</key><string>Glass Breaker</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4775860</integer>
-			<key>Total Time</key><integer>294613</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:32:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253767436</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:17:16Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CD6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/12%20Glass%20Breaker.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>553</key>
-		<dict>
-			<key>Track ID</key><integer>553</integer>
-			<key>Name</key><string>I Luv U</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>1120579</integer>
-			<key>Total Time</key><integer>66802</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:32:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253363679</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:07:59Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CD9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/13%20I%20Luv%20U.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>554</key>
-		<dict>
-			<key>Track ID</key><integer>554</integer>
-			<key>Name</key><string>Nothing Like You and I</string>
-			<key>Artist</key><string>The Perishers</string>
-			<key>Album</key><string>London (Original Motion Picture Soundtrack)</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3434413</integer>
-			<key>Total Time</key><integer>211601</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-07-08T06:32:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253382045</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:14:05Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-29T23:10:40Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CDC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/London%20(Original%20Motion%20Picture%20Soundtrack)/14%20Nothing%20Like%20You%20and%20I.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>555</key>
-		<dict>
-			<key>Track ID</key><integer>555</integer>
-			<key>Name</key><string>Superdeformed</string>
-			<key>Artist</key><string>Matthew Sweet</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5720409</integer>
-			<key>Total Time</key><integer>238377</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:00:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253378812</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:20:12Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CDF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/01%20Superdeformed.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>556</key>
-		<dict>
-			<key>Track ID</key><integer>556</integer>
-			<key>Name</key><string>For All To See</string>
-			<key>Artist</key><string>Buffalo Tom</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5198431</integer>
-			<key>Total Time</key><integer>216169</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:01:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251453570</integer>
-			<key>Play Date UTC</key><date>2007-01-12T21:32:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CE4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/02%20For%20All%20To%20See.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>557</key>
-		<dict>
-			<key>Track ID</key><integer>557</integer>
-			<key>Name</key><string>Sexual Healing</string>
-			<key>Artist</key><string>Soul Asylum</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6822722</integer>
-			<key>Total Time</key><integer>285460</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:02:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253551399</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:16:39Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CE7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/03%20Sexual%20Healing.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>558</key>
-		<dict>
-			<key>Track ID</key><integer>558</integer>
-			<key>Name</key><string>Take A Walk</string>
-			<key>Artist</key><string>Urge Overkill</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6726354</integer>
-			<key>Total Time</key><integer>279337</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:03:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247717654</integer>
-			<key>Play Date UTC</key><date>2006-11-30T15:47:34Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T22:42:57Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CEA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/04%20Take%20A%20Walk.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>559</key>
-		<dict>
-			<key>Track ID</key><integer>559</integer>
-			<key>Name</key><string>All Your Jeans Were Too Tight</string>
-			<key>Artist</key><string>American Music Club</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5119665</integer>
-			<key>Total Time</key><integer>213694</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:03:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251864057</integer>
-			<key>Play Date UTC</key><date>2007-01-17T15:34:17Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CED</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/05%20All%20Your%20Jeans%20Were%20Too%20Tight.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>560</key>
-		<dict>
-			<key>Track ID</key><integer>560</integer>
-			<key>Name</key><string>Bitch</string>
-			<key>Artist</key><string>Goo Goo Dolls</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4720014</integer>
-			<key>Total Time</key><integer>196990</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:04:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253363316</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:01:56Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CF0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/06%20Bitch.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>561</key>
-		<dict>
-			<key>Track ID</key><integer>561</integer>
-			<key>Name</key><string>Unseen Power Of The Picket Fence</string>
-			<key>Artist</key><string>Pavement</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5634787</integer>
-			<key>Total Time</key><integer>233961</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:05:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252549017</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:50:17Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CF3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/07%20Unseen%20Power%20Of%20The%20Picket%20Fence.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>562</key>
-		<dict>
-			<key>Track ID</key><integer>562</integer>
-			<key>Name</key><string>Glynis</string>
-			<key>Artist</key><string>Smashing Pumpkins</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7061325</integer>
-			<key>Total Time</key><integer>293332</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:05:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252391018</integer>
-			<key>Play Date UTC</key><date>2007-01-23T17:56:58Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CF6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/08%20Glynis.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>563</key>
-		<dict>
-			<key>Track ID</key><integer>563</integer>
-			<key>Name</key><string>Can't Fight It</string>
-			<key>Artist</key><string>Bob Mould</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5505631</integer>
-			<key>Total Time</key><integer>229310</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:06:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253609962</integer>
-			<key>Play Date UTC</key><date>2007-02-06T20:32:42Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CF9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/09%20Can't%20Fight%20It.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>564</key>
-		<dict>
-			<key>Track ID</key><integer>564</integer>
-			<key>Name</key><string>Hold On</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6330240</integer>
-			<key>Total Time</key><integer>263593</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:07:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253527716</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:41:56Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CFC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/10%20Hold%20On.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>565</key>
-		<dict>
-			<key>Track ID</key><integer>565</integer>
-			<key>Name</key><string>Show Me</string>
-			<key>Artist</key><string>Soundgarden</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4054526</integer>
-			<key>Total Time</key><integer>168809</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:07:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249491630</integer>
-			<key>Play Date UTC</key><date>2006-12-21T04:33:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85CFF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/11%20Show%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>566</key>
-		<dict>
-			<key>Track ID</key><integer>566</integer>
-			<key>Name</key><string>Brittle</string>
-			<key>Artist</key><string>Straightjacket Fits</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4907511</integer>
-			<key>Total Time</key><integer>204841</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:08:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251307970</integer>
-			<key>Play Date UTC</key><date>2007-01-11T05:06:10Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D02</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/12%20Brittle.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>567</key>
-		<dict>
-			<key>Track ID</key><integer>567</integer>
-			<key>Name</key><string>Joed Out</string>
-			<key>Artist</key><string>Barbara Manning &#38; The San Francisco Seals</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5573866</integer>
-			<key>Total Time</key><integer>232425</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:09:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253280936</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:08:56Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T19:09:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D05</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/13%20Joed%20Out.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>568</key>
-		<dict>
-			<key>Track ID</key><integer>568</integer>
-			<key>Name</key><string>Heavy 33</string>
-			<key>Artist</key><string>Verlaines</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6284329</integer>
-			<key>Total Time</key><integer>261652</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:09:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T19:11:23Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D08</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/14%20Heavy%2033.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>569</key>
-		<dict>
-			<key>Track ID</key><integer>569</integer>
-			<key>Name</key><string>Effigy</string>
-			<key>Artist</key><string>Uncle Tupelo</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8667466</integer>
-			<key>Total Time</key><integer>359614</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:10:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247464127</integer>
-			<key>Play Date UTC</key><date>2006-11-27T17:22:07Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D0B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/15%20Effigy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>570</key>
-		<dict>
-			<key>Track ID</key><integer>570</integer>
-			<key>Name</key><string>New Style</string>
-			<key>Artist</key><string>The Beastie Boys</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3376911</integer>
-			<key>Total Time</key><integer>140564</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:11:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3251435572</integer>
-			<key>Play Date UTC</key><date>2007-01-12T16:32:52Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D0E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/16%20New%20Style.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>571</key>
-		<dict>
-			<key>Track ID</key><integer>571</integer>
-			<key>Name</key><string>Iris</string>
-			<key>Artist</key><string>The Breeders</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5383289</integer>
-			<key>Total Time</key><integer>224361</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:12:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251442602</integer>
-			<key>Play Date UTC</key><date>2007-01-12T18:30:02Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D11</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/17%20Iris.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>572</key>
-		<dict>
-			<key>Track ID</key><integer>572</integer>
-			<key>Name</key><string>Verse Chorus Verse</string>
-			<key>Artist</key><string>Nirvana</string>
-			<key>Album</key><string>No Alternative</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4957224</integer>
-			<key>Total Time</key><integer>205950</integer>
-			<key>Track Number</key><integer>19</integer>
-			<key>Track Count</key><integer>19</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-30T04:13:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D14</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/No%20Alternative/19%20Verse%20Chorus%20Verse.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>574</key>
-		<dict>
-			<key>Track ID</key><integer>574</integer>
-			<key>Name</key><string>Jump (Mutha Mix)</string>
-			<key>Artist</key><string>The Movement</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5635171</integer>
-			<key>Total Time</key><integer>233364</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:16:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251885688</integer>
-			<key>Play Date UTC</key><date>2007-01-17T21:34:48Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D1C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/02%20Jump%20(Mutha%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>575</key>
-		<dict>
-			<key>Track ID</key><integer>575</integer>
-			<key>Name</key><string>Get Ready For This (Ochrestral Mix)</string>
-			<key>Artist</key><string>2 Unlimited</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7912912</integer>
-			<key>Total Time</key><integer>327401</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:17:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251374312</integer>
-			<key>Play Date UTC</key><date>2007-01-11T23:31:52Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D1F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/03%20Get%20Ready%20For%20This%20(Ochrestral%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>576</key>
-		<dict>
-			<key>Track ID</key><integer>576</integer>
-			<key>Name</key><string>Can You Feel The Passion (Palladium Mix)</string>
-			<key>Artist</key><string>Blue Pearl</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8205127</integer>
-			<key>Total Time</key><integer>339305</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:18:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251440910</integer>
-			<key>Play Date UTC</key><date>2007-01-12T18:01:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D22</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/04%20Can%20You%20Feel%20The%20Passion%20(Palladium%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>577</key>
-		<dict>
-			<key>Track ID</key><integer>577</integer>
-			<key>Name</key><string>Dreamer, Dream</string>
-			<key>Artist</key><string>Code Red</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7249832</integer>
-			<key>Total Time</key><integer>300585</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:19:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D25</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/05%20Dreamer,%20Dream.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>578</key>
-		<dict>
-			<key>Track ID</key><integer>578</integer>
-			<key>Name</key><string>Stylophonia</string>
-			<key>Artist</key><string>Two Little Boys</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6073068</integer>
-			<key>Total Time</key><integer>250644</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:20:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249567629</integer>
-			<key>Play Date UTC</key><date>2006-12-22T01:40:29Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D28</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/06%20Stylophonia.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>579</key>
-		<dict>
-			<key>Track ID</key><integer>579</integer>
-			<key>Name</key><string>Injected With A Poison (MNO Power Mix)</string>
-			<key>Artist</key><string>Praga Khan Featuring Jade 4 U</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7291054</integer>
-			<key>Total Time</key><integer>301737</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:20:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253386064</integer>
-			<key>Play Date UTC</key><date>2007-02-04T06:21:04Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D2B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/07%20Injected%20With%20A%20Poison%20(MNO%20Power%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>580</key>
-		<dict>
-			<key>Track ID</key><integer>580</integer>
-			<key>Name</key><string>Green Man (Rum &#38; Black Mix)</string>
-			<key>Artist</key><string>Shut Up &#38; Dance</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9026658</integer>
-			<key>Total Time</key><integer>373801</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:22:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D2E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/08%20Green%20Man%20(Rum%20&#38;%20Black%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>581</key>
-		<dict>
-			<key>Track ID</key><integer>581</integer>
-			<key>Name</key><string>Take Control</string>
-			<key>Artist</key><string>Lords Of Acid</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6793322</integer>
-			<key>Total Time</key><integer>282004</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:22:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251353789</integer>
-			<key>Play Date UTC</key><date>2007-01-11T17:49:49Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D31</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/09%20Take%20Control.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>582</key>
-		<dict>
-			<key>Track ID</key><integer>582</integer>
-			<key>Name</key><string>A Million Colors</string>
-			<key>Artist</key><string>Channel X</string>
-			<key>Album</key><string>Rave 'Til Dawn</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8193299</integer>
-			<key>Total Time</key><integer>338260</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-07-18T18:23:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252518055</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:14:15Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T18:24:04Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D34</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Rave%20'Til%20Dawn/10%20A%20Million%20Colors.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>583</key>
-		<dict>
-			<key>Track ID</key><integer>583</integer>
-			<key>Name</key><string>Start Choppin'</string>
-			<key>Artist</key><string>Dinosaur Jr</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>33140611</integer>
-			<key>Total Time</key><integer>277800</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-28T23:55:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>953</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:23Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D37</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/01%20Start%20Choppin'.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>584</key>
-		<dict>
-			<key>Track ID</key><integer>584</integer>
-			<key>Name</key><string>What Can You Do For Me</string>
-			<key>Artist</key><string>Utah Saints</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>41606361</integer>
-			<key>Total Time</key><integer>368093</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-10-05T16:15:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>903</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>23</integer>
-			<key>Play Date</key><integer>3252903062</integer>
-			<key>Play Date UTC</key><date>2007-01-29T16:11:02Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D3C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/02%20What%20Can%20You%20Do%20For%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>585</key>
-		<dict>
-			<key>Track ID</key><integer>585</integer>
-			<key>Name</key><string>Blast</string>
-			<key>Artist</key><string>Pure</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29067214</integer>
-			<key>Total Time</key><integer>222933</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-29T16:43:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1042</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252565216</integer>
-			<key>Play Date UTC</key><date>2007-01-25T18:20:16Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D3F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/03%20Blast.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>586</key>
-		<dict>
-			<key>Track ID</key><integer>586</integer>
-			<key>Name</key><string>Arrows</string>
-			<key>Artist</key><string>Overwhelming Colorfast</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29399825</integer>
-			<key>Total Time</key><integer>232066</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-28T14:36:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1012</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246026832</integer>
-			<key>Play Date UTC</key><date>2006-11-11T02:07:12Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D42</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/04%20Arrows.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>587</key>
-		<dict>
-			<key>Track ID</key><integer>587</integer>
-			<key>Name</key><string>Feed The Tree</string>
-			<key>Artist</key><string>Belly</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29871727</integer>
-			<key>Total Time</key><integer>222906</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-08-22T05:49:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1071</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253274114</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:15:14Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D45</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/05%20Feed%20The%20Tree.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>588</key>
-		<dict>
-			<key>Track ID</key><integer>588</integer>
-			<key>Name</key><string>Explosion</string>
-			<key>Artist</key><string>Whipped Cream</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>32986989</integer>
-			<key>Total Time</key><integer>266466</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-10-07T01:59:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>989</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249560889</integer>
-			<key>Play Date UTC</key><date>2006-12-21T23:48:09Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D48</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/06%20Explosion.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>589</key>
-		<dict>
-			<key>Track ID</key><integer>589</integer>
-			<key>Name</key><string>Underwhelmed</string>
-			<key>Artist</key><string>Sloan</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>35953631</integer>
-			<key>Total Time</key><integer>285400</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-27T14:12:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1007</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249494098</integer>
-			<key>Play Date UTC</key><date>2006-12-21T05:14:58Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-29T23:52:33Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D4B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/07%20Underwhelmed.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>590</key>
-		<dict>
-			<key>Track ID</key><integer>590</integer>
-			<key>Name</key><string>Edge Of No Control, Part II</string>
-			<key>Artist</key><string>Meat Beat Manifesto</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>23243507</integer>
-			<key>Total Time</key><integer>197226</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-28T13:22:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>941</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250686387</integer>
-			<key>Play Date UTC</key><date>2007-01-04T00:26:27Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D4E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/08%20Edge%20Of%20No%20Control,%20Part%20II.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>591</key>
-		<dict>
-			<key>Track ID</key><integer>591</integer>
-			<key>Name</key><string>Take Me Anywhere</string>
-			<key>Artist</key><string>School Of Fish</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>37264552</integer>
-			<key>Total Time</key><integer>286506</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-28T23:54:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1039</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252407815</integer>
-			<key>Play Date UTC</key><date>2007-01-23T22:36:55Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D51</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/09%20Take%20Me%20Anywhere.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>592</key>
-		<dict>
-			<key>Track ID</key><integer>592</integer>
-			<key>Name</key><string>Pickin' Flowers For</string>
-			<key>Artist</key><string>The Best Kissers In The World</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>25778744</integer>
-			<key>Total Time</key><integer>200533</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-10-05T21:45:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1027</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252942079</integer>
-			<key>Play Date UTC</key><date>2007-01-30T03:01:19Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D54</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/10%20Pickin'%20Flowers%20For.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>593</key>
-		<dict>
-			<key>Track ID</key><integer>593</integer>
-			<key>Name</key><string>After This Time Is Gone</string>
-			<key>Artist</key><string>Eleventh Dream Day</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>25239415</integer>
-			<key>Total Time</key><integer>219400</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-29T13:02:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>919</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253379853</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:37:33Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D57</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/11%20After%20This%20Time%20Is%20Gone.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>594</key>
-		<dict>
-			<key>Track ID</key><integer>594</integer>
-			<key>Name</key><string>Wembley</string>
-			<key>Artist</key><string>The Candy Skins</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>19888212</integer>
-			<key>Total Time</key><integer>158533</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-10-07T17:30:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1002</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251453729</integer>
-			<key>Play Date UTC</key><date>2007-01-12T21:35:29Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-02-02T17:20:32Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D5A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/13%20Wembley.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>595</key>
-		<dict>
-			<key>Track ID</key><integer>595</integer>
-			<key>Name</key><string>Warboys</string>
-			<key>Artist</key><string>Ghost Of An American Airman</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28527424</integer>
-			<key>Total Time</key><integer>232706</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-10-20T13:48:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>979</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253256870</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:27:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D5D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/14%20Warboys.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>596</key>
-		<dict>
-			<key>Track ID</key><integer>596</integer>
-			<key>Name</key><string>Susan Sleepwalking</string>
-			<key>Artist</key><string>The Pooh Sticks</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>19129596</integer>
-			<key>Total Time</key><integer>154693</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-09-28T23:55:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>987</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253518435</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:07:15Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D60</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/15%20Susan%20Sleepwalking.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>597</key>
-		<dict>
-			<key>Track ID</key><integer>597</integer>
-			<key>Name</key><string>Arrive</string>
-			<key>Artist</key><string>Boneclub</string>
-			<key>Album</key><string>Stolar Tracks Vol. 2</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>31151768</integer>
-			<key>Total Time</key><integer>233266</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-10-18T16:58:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>1067</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D63</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stolar%20Tracks%20Vol.%202/17%20Arrive.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>598</key>
-		<dict>
-			<key>Track ID</key><integer>598</integer>
-			<key>Name</key><string>Purple Haze</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7780333</integer>
-			<key>Total Time</key><integer>321662</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:11:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252571961</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:12:41Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D66</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/01%20Purple%20Haze.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>599</key>
-		<dict>
-			<key>Track ID</key><integer>599</integer>
-			<key>Name</key><string>Stone Free</string>
-			<key>Artist</key><string>Eric Clapton</string>
-			<key>Composer</key><string>?</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6433132</integer>
-			<key>Total Time</key><integer>266793</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:12:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252558020</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:20:20Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D6B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/02%20Stone%20Free.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>600</key>
-		<dict>
-			<key>Track ID</key><integer>600</integer>
-			<key>Name</key><string>Spanish Castle Magic</string>
-			<key>Artist</key><string>Spin Doctors</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5997512</integer>
-			<key>Total Time</key><integer>247465</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:13:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252540548</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:29:08Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-14T23:33:57Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D6E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/03%20Spanish%20Castle%20Magic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>601</key>
-		<dict>
-			<key>Track ID</key><integer>601</integer>
-			<key>Name</key><string>Red House</string>
-			<key>Artist</key><string>Buddy Guy</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5521292</integer>
-			<key>Total Time</key><integer>229972</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:13:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253602372</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:26:12Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D71</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/04%20Red%20House.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>602</key>
-		<dict>
-			<key>Track ID</key><integer>602</integer>
-			<key>Name</key><string>Hey Joe</string>
-			<key>Artist</key><string>Body Count</string>
-			<key>Composer</key><string>Billy Roberts</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6564041</integer>
-			<key>Total Time</key><integer>271785</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:14:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>27</integer>
-			<key>Play Date</key><integer>3253109090</integer>
-			<key>Play Date UTC</key><date>2007-02-01T01:24:50Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-13T22:51:19Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D74</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/05%20Hey%20Joe.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>603</key>
-		<dict>
-			<key>Track ID</key><integer>603</integer>
-			<key>Name</key><string>Manic Depression</string>
-			<key>Artist</key><string>Seal &#38; Jeff Beck</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7577098</integer>
-			<key>Total Time</key><integer>312681</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:15:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250598037</integer>
-			<key>Play Date UTC</key><date>2007-01-02T23:53:57Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D77</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/06%20Manic%20Depression.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>604</key>
-		<dict>
-			<key>Track ID</key><integer>604</integer>
-			<key>Name</key><string>Fire</string>
-			<key>Artist</key><string>Nigel Kennedy</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6812931</integer>
-			<key>Total Time</key><integer>281129</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:16:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247828423</integer>
-			<key>Play Date UTC</key><date>2006-12-01T22:33:43Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D7A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/07%20Fire.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>605</key>
-		<dict>
-			<key>Track ID</key><integer>605</integer>
-			<key>Name</key><string>Bold As Love</string>
-			<key>Artist</key><string>The Pretenders</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4964746</integer>
-			<key>Total Time</key><integer>204500</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:16:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T20:06:04Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D7D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/08%20Bold%20As%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>606</key>
-		<dict>
-			<key>Track ID</key><integer>606</integer>
-			<key>Name</key><string>You Got Me Floatin'</string>
-			<key>Artist</key><string>P.M. Dawn</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7012998</integer>
-			<key>Total Time</key><integer>289385</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:17:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250662497</integer>
-			<key>Play Date UTC</key><date>2007-01-03T17:48:17Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-25T00:20:03Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D80</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/09%20You%20Got%20Me%20Floatin'.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>607</key>
-		<dict>
-			<key>Track ID</key><integer>607</integer>
-			<key>Name</key><string>I Don't Live Today</string>
-			<key>Artist</key><string>Paul Rodgers &#38; Band Of Gypsys</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6545595</integer>
-			<key>Total Time</key><integer>272084</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:18:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253605850</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:24:10Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D83</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/10%20I%20Don't%20Live%20Today.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>608</key>
-		<dict>
-			<key>Track ID</key><integer>608</integer>
-			<key>Name</key><string>Are You Experienced</string>
-			<key>Artist</key><string>Belly</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5418005</integer>
-			<key>Total Time</key><integer>224361</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:19:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253508295</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:18:15Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-03T16:30:49Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D86</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/11%20Are%20You%20Experienced.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>609</key>
-		<dict>
-			<key>Track ID</key><integer>609</integer>
-			<key>Name</key><string>Crosstown Traffic</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4711130</integer>
-			<key>Total Time</key><integer>195476</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:19:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253520662</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:44:22Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D89</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/12%20Crosstown%20Traffic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>610</key>
-		<dict>
-			<key>Track ID</key><integer>610</integer>
-			<key>Name</key><string>Third Stone From The Sun</string>
-			<key>Artist</key><string>Pat Metheny</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8724469</integer>
-			<key>Total Time</key><integer>360382</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:21:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D8C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/13%20Third%20Stone%20From%20The%20Sun.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>611</key>
-		<dict>
-			<key>Track ID</key><integer>611</integer>
-			<key>Name</key><string>Hey Baby (Land Of The New Rising Sun)</string>
-			<key>Artist</key><string>M.A.C.C.</string>
-			<key>Composer</key><string>Jimi Hendrix</string>
-			<key>Album</key><string>Stone Free: A Tribute To Jimi Hendrix</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7984016</integer>
-			<key>Total Time</key><integer>330580</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2005-06-15T00:22:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253711381</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:43:01Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D8F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Stone%20Free_%20A%20Tribute%20To%20Jimi%20Hendrix/14%20Hey%20Baby%20(Land%20Of%20The%20New%20Rising%20Sun).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>612</key>
-		<dict>
-			<key>Track ID</key><integer>612</integer>
-			<key>Name</key><string>The District Sleeps Alone Tonight (DJ Downfall Persistent Beat Mix)</string>
-			<key>Artist</key><string>The Postal Service</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11541237</integer>
-			<key>Total Time</key><integer>410383</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>224</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253343276</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:27:56Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D92</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/01%20The%20District%20Sleeps%20Alone%20Tonight%20(DJ%20Downfall%20Persistent%20Beat%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>613</key>
-		<dict>
-			<key>Track ID</key><integer>613</integer>
-			<key>Name</key><string>Teardrop (Mad Professor Mazaruni Vocal Mix)</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9093001</integer>
-			<key>Total Time</key><integer>363154</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>200</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253705856</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:10:56Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D97</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/04%20Teardrop%20(Mad%20Professor%20Mazaruni%20Vocal%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>614</key>
-		<dict>
-			<key>Track ID</key><integer>614</integer>
-			<key>Name</key><string>Stupid (Mark Bell Mix)</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4611951</integer>
-			<key>Total Time</key><integer>206184</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:40:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>178</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246905114</integer>
-			<key>Play Date UTC</key><date>2006-11-21T06:05:14Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D9A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/05%20Stupid%20(Mark%20Bell%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>615</key>
-		<dict>
-			<key>Track ID</key><integer>615</integer>
-			<key>Name</key><string>Here With Me (Rollos Chiillin With The Family Mix)</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7299091</integer>
-			<key>Total Time</key><integer>307670</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:40:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>189</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250741570</integer>
-			<key>Play Date UTC</key><date>2007-01-04T15:46:10Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85D9D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/06%20Here%20With%20Me%20(Rollos%20Chiillin%20With%20The%20Family%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>616</key>
-		<dict>
-			<key>Track ID</key><integer>616</integer>
-			<key>Name</key><string>Center Of The Sun (Solarstones Chilled-out Remix)</string>
-			<key>Artist</key><string>Conjure One</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9764164</integer>
-			<key>Total Time</key><integer>367856</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:40:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>212</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246642153</integer>
-			<key>Play Date UTC</key><date>2006-11-18T05:02:33Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DA0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/08%20Center%20Of%20The%20Sun%20(Solarstones%20Chilled-out%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>617</key>
-		<dict>
-			<key>Track ID</key><integer>617</integer>
-			<key>Name</key><string>Elvis</string>
-			<key>Artist</key><string>Alpha</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4698843</integer>
-			<key>Total Time</key><integer>199967</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:40:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>187</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253450674</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:17:54Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DA3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/09%20Elvis.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>618</key>
-		<dict>
-			<key>Track ID</key><integer>618</integer>
-			<key>Name</key><string>Edge Of The Ocean (Duotone Remix)</string>
-			<key>Artist</key><string>Ivy</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6885760</integer>
-			<key>Total Time</key><integer>248764</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:40:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>221</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253708384</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:53:04Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-08T22:12:09Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DA6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/10%20Edge%20Of%20The%20Ocean%20(Duotone%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>619</key>
-		<dict>
-			<key>Track ID</key><integer>619</integer>
-			<key>Name</key><string>Chocolate</string>
-			<key>Artist</key><string>Lester</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7001431</integer>
-			<key>Total Time</key><integer>349126</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:41:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253179421</integer>
-			<key>Play Date UTC</key><date>2007-02-01T20:57:01Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DA9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/11%20Chocolate.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>620</key>
-		<dict>
-			<key>Track ID</key><integer>620</integer>
-			<key>Name</key><string>Finished Symphony</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7889469</integer>
-			<key>Total Time</key><integer>336718</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:41:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>187</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253688731</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:25:31Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DAC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/11%20Finished%20Symphony.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>621</key>
-		<dict>
-			<key>Track ID</key><integer>621</integer>
-			<key>Name</key><string>Silence (Michael Wood Remix)</string>
-			<key>Artist</key><string>Delerium</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11371717</integer>
-			<key>Total Time</key><integer>426605</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:41:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>213</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252939474</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:17:54Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DAF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/13%20Silence%20(Michael%20Wood%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>622</key>
-		<dict>
-			<key>Track ID</key><integer>622</integer>
-			<key>Name</key><string>Sings (Bonobo Mix)</string>
-			<key>Artist</key><string>Badmarsh and Shiri</string>
-			<key>Album</key><string>The Best of Chillout: Past and Present</string>
-			<key>Genre</key><string>Chillout</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6277709</integer>
-			<key>Total Time</key><integer>320208</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>156</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253343876</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:37:56Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DB2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Chillout_%20Past%20and%20Present/14%20Sings%20(Bonobo%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>623</key>
-		<dict>
-			<key>Track ID</key><integer>623</integer>
-			<key>Name</key><string>Harry Flowers</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Album Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Nitzsche</string>
-			<key>Album</key><string>The Best of Strange Cargos</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4601069</integer>
-			<key>Total Time</key><integer>270836</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-07-27T18:43:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253371331</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:15:31Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85DB5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Strange%20Cargos/09%20Harry%20Flowers.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>624</key>
-		<dict>
-			<key>Track ID</key><integer>624</integer>
-			<key>Name</key><string>Love My Way</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Album Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Ashton</string>
-			<key>Album</key><string>The Best of Strange Cargos</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2793149</integer>
-			<key>Total Time</key><integer>159101</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-07-21T02:15:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252991733</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:48:53Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T23:34:54Z</date>
-			<key>Compilation</key><true/>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85DBA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Best%20of%20Strange%20Cargos/10%20Love%20My%20Way.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>625</key>
-		<dict>
-			<key>Track ID</key><integer>625</integer>
-			<key>Name</key><string>Mission Impossible</string>
-			<key>Artist</key><string>James Taylor Quartet</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3263618</integer>
-			<key>Total Time</key><integer>203103</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:51:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253717763</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:29:23Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DBD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/01%20Mission%20Impossible.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>626</key>
-		<dict>
-			<key>Track ID</key><integer>626</integer>
-			<key>Name</key><string>Green Screen</string>
-			<key>Artist</key><string>New Jersey Kings</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4726870</integer>
-			<key>Total Time</key><integer>292546</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:52:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247837639</integer>
-			<key>Play Date UTC</key><date>2006-12-02T01:07:19Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DC2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/02%20Green%20Screen.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>627</key>
-		<dict>
-			<key>Track ID</key><integer>627</integer>
-			<key>Name</key><string>Throtte Back</string>
-			<key>Artist</key><string>Emperors New Clothes</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3211410</integer>
-			<key>Total Time</key><integer>198714</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:52:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250698889</integer>
-			<key>Play Date UTC</key><date>2007-01-04T03:54:49Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DC5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/03%20Throtte%20Back.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>628</key>
-		<dict>
-			<key>Track ID</key><integer>628</integer>
-			<key>Name</key><string>Manhattan Skyline</string>
-			<key>Artist</key><string>X Generation</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6430479</integer>
-			<key>Total Time</key><integer>397942</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:53:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253373175</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:46:15Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DC8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/04%20Manhattan%20Skyline.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>629</key>
-		<dict>
-			<key>Track ID</key><integer>629</integer>
-			<key>Name</key><string>The Arrival</string>
-			<key>Artist</key><string>Pathaan</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6956123</integer>
-			<key>Total Time</key><integer>431239</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:54:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250658585</integer>
-			<key>Play Date UTC</key><date>2007-01-03T16:43:05Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T20:55:16Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DCB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/05%20The%20Arrival.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>630</key>
-		<dict>
-			<key>Track ID</key><integer>630</integer>
-			<key>Name</key><string>A.P.B</string>
-			<key>Artist</key><string>A Man Called Adam</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3566320</integer>
-			<key>Total Time</key><integer>221911</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:54:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253374533</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:08:53Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DCE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/06%20A.P.B.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>631</key>
-		<dict>
-			<key>Track ID</key><integer>631</integer>
-			<key>Name</key><string>Stay This Way</string>
-			<key>Artist</key><string>The Brand New Heavies</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4115298</integer>
-			<key>Total Time</key><integer>255627</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:54:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:41Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253375461</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:24:21Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DD1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/07%20Stay%20This%20Way.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>632</key>
-		<dict>
-			<key>Track ID</key><integer>632</integer>
-			<key>Name</key><string>The Wah Classic</string>
-			<key>Artist</key><string>D'Influence</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4193014</integer>
-			<key>Total Time</key><integer>261014</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:55:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253474391</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:53:11Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DD4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/08%20The%20Wah%20Classic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>633</key>
-		<dict>
-			<key>Track ID</key><integer>633</integer>
-			<key>Name</key><string>Break 4 Jazz</string>
-			<key>Artist</key><string>Break 4 Jazz</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5899805</integer>
-			<key>Total Time</key><integer>365712</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:55:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251483326</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:48:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DD7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/09%20Break%204%20Jazz.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>634</key>
-		<dict>
-			<key>Track ID</key><integer>634</integer>
-			<key>Name</key><string>Sleep Walk</string>
-			<key>Artist</key><string>Cloud Nine</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4930953</integer>
-			<key>Total Time</key><integer>305433</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:56:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249384878</integer>
-			<key>Play Date UTC</key><date>2006-12-19T22:54:38Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DDA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/10%20Sleep%20Walk.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>635</key>
-		<dict>
-			<key>Track ID</key><integer>635</integer>
-			<key>Name</key><string>Riot On 103rd Street</string>
-			<key>Artist</key><string>Mother Earth</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2648714</integer>
-			<key>Total Time</key><integer>164001</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:56:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253464256</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:04:16Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DDD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/11%20Riot%20On%20103rd%20Street.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>636</key>
-		<dict>
-			<key>Track ID</key><integer>636</integer>
-			<key>Name</key><string>Quiet Dawn</string>
-			<key>Artist</key><string>Humble Soul</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6025880</integer>
-			<key>Total Time</key><integer>373746</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:56:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249292866</integer>
-			<key>Play Date UTC</key><date>2006-12-18T21:21:06Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DE0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/12%20Quiet%20Dawn.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>637</key>
-		<dict>
-			<key>Track ID</key><integer>637</integer>
-			<key>Name</key><string>Night In Tunisia (A Tribute To Dizzy)</string>
-			<key>Artist</key><string>Subterraneans</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5101992</integer>
-			<key>Total Time</key><integer>316579</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:57:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253376171</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:36:11Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DE3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/13%20Night%20In%20Tunisia%20(A%20Tribute%20To%20Dizzy).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>638</key>
-		<dict>
-			<key>Track ID</key><integer>638</integer>
-			<key>Name</key><string>Don't You Let Me Down</string>
-			<key>Artist</key><string>Planet</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4573203</integer>
-			<key>Total Time</key><integer>283281</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:57:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253718046</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:34:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-26T18:14:37Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DE6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/14%20Don't%20You%20Let%20Me%20Down.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>639</key>
-		<dict>
-			<key>Track ID</key><integer>639</integer>
-			<key>Name</key><string>Rollerball (Executive Party)</string>
-			<key>Artist</key><string>Akimbo</string>
-			<key>Album</key><string>The Funk Of Acid Jazz</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3774261</integer>
-			<key>Total Time</key><integer>234612</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2006-07-08T07:57:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252990549</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:29:09Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DE9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Funk%20Of%20Acid%20Jazz/15%20Rollerball%20(Executive%20Party).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>640</key>
-		<dict>
-			<key>Track ID</key><integer>640</integer>
-			<key>Name</key><string>Wadidyusay?</string>
-			<key>Artist</key><string>Zap Mama</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>20514600</integer>
-			<key>Total Time</key><integer>201000</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-26T19:21:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>815</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-23T04:43:50Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DEC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/03%20Wadidyusay_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>641</key>
-		<dict>
-			<key>Track ID</key><integer>641</integer>
-			<key>Name</key><string>One Big Holiday</string>
-			<key>Artist</key><string>My Morning Jacket</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>39922271</integer>
-			<key>Total Time</key><integer>321853</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T00:34:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>991</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247663587</integer>
-			<key>Play Date UTC</key><date>2006-11-30T00:46:27Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T02:41:04Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DF1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/04%20One%20Big%20Holiday.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>642</key>
-		<dict>
-			<key>Track ID</key><integer>642</integer>
-			<key>Name</key><string>Relaxation Spa Treatment</string>
-			<key>Artist</key><string>Dan The Automator</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>13323487</integer>
-			<key>Total Time</key><integer>205306</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-26T23:49:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>518</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252556412</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:53:32Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DF4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/07%20Relaxation%20Spa%20Treatment.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>643</key>
-		<dict>
-			<key>Track ID</key><integer>643</integer>
-			<key>Name</key><string>Dc 3000</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>21788347</integer>
-			<key>Total Time</key><integer>267760</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-10-06T15:12:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>650</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253611819</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:03:39Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:42:46Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DF7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/08%20Dc%203000.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>644</key>
-		<dict>
-			<key>Track ID</key><integer>644</integer>
-			<key>Name</key><string>Looking Up In Heaven</string>
-			<key>Artist</key><string>Paul Westerberg</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>23502577</integer>
-			<key>Total Time</key><integer>192226</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-10-19T23:10:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>977</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252397264</integer>
-			<key>Play Date UTC</key><date>2007-01-23T19:41:04Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-18T14:12:53Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DFA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/10%20Looking%20Up%20In%20Heaven.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>645</key>
-		<dict>
-			<key>Track ID</key><integer>645</integer>
-			<key>Name</key><string>No Meaning No</string>
-			<key>Artist</key><string>Chuck D With Fine Arts Militia</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24777454</integer>
-			<key>Total Time</key><integer>192813</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-10-11T19:57:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>1027</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252577657</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:47:37Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-26T19:40:26Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85DFD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/11%20No%20Meaning%20No.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>646</key>
-		<dict>
-			<key>Track ID</key><integer>646</integer>
-			<key>Name</key><string>Wataridori 2</string>
-			<key>Artist</key><string>Cornelius</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>43770434</integer>
-			<key>Total Time</key><integer>429880</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-29T12:42:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>813</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253475008</integer>
-			<key>Play Date UTC</key><date>2007-02-05T07:03:28Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E00</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/13%20Wataridori%202.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>647</key>
-		<dict>
-			<key>Track ID</key><integer>647</integer>
-			<key>Name</key><string>Oslodum 2004</string>
-			<key>Artist</key><string>DJ Dolores</string>
-			<key>Composer</key><string>CD Track Info PROvided courtesey of newParadime</string>
-			<key>Album</key><string>The Wired CD: Rip. Sample. Mash. Share.</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26826299</integer>
-			<key>Total Time</key><integer>240413</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-27T21:50:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>891</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251350802</integer>
-			<key>Play Date UTC</key><date>2007-01-11T17:00:02Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E03</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/The%20Wired%20CD_%20Rip.%20Sample.%20Mash.%20Share_/15%20Oslodum%202004.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>648</key>
-		<dict>
-			<key>Track ID</key><integer>648</integer>
-			<key>Name</key><string>We Have Explosive</string>
-			<key>Artist</key><string>The Future Sound Of London</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9068950</integer>
-			<key>Total Time</key><integer>374292</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:34:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253555018</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:16:58Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E09</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/01%20We%20Have%20Explosive.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>649</key>
-		<dict>
-			<key>Track ID</key><integer>649</integer>
-			<key>Name</key><string>Atom Bomb</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11573191</integer>
-			<key>Total Time</key><integer>477694</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:36:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253688005</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:13:25Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E0E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/02%20Atom%20Bomb.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>650</key>
-		<dict>
-			<key>Track ID</key><integer>650</integer>
-			<key>Name</key><string>Loops Of Fury</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6816710</integer>
-			<key>Total Time</key><integer>281726</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:37:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>40</integer>
-			<key>Play Date</key><integer>3253709283</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:08:03Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E11</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/03%20Loops%20Of%20Fury.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>651</key>
-		<dict>
-			<key>Track ID</key><integer>651</integer>
-			<key>Name</key><string>Tin There</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7271632</integer>
-			<key>Total Time</key><integer>300073</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:38:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252402305</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:05:05Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E14</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/04%20Tin%20There.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>652</key>
-		<dict>
-			<key>Track ID</key><integer>652</integer>
-			<key>Name</key><string>Leave Home (Underworld Mix1)</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7622449</integer>
-			<key>Total Time</key><integer>314729</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-06-14T17:40:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247668657</integer>
-			<key>Play Date UTC</key><date>2006-11-30T02:10:57Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E17</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/06%20Leave%20Home%20(Underworld%20Mix1).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>653</key>
-		<dict>
-			<key>Track ID</key><integer>653</integer>
-			<key>Name</key><string>We Have Explosive (Hero Killing)</string>
-			<key>Artist</key><string>The Future Sound Of London</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8302133</integer>
-			<key>Total Time</key><integer>342782</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:41:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E1A</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/07%20We%20Have%20Explosive%20(Hero%20Killing).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>654</key>
-		<dict>
-			<key>Track ID</key><integer>654</integer>
-			<key>Name</key><string>Firestarter (Instrumental)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6774131</integer>
-			<key>Total Time</key><integer>279828</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:41:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253598171</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:16:11Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E1D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/08%20Firestarter%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>655</key>
-		<dict>
-			<key>Track ID</key><integer>655</integer>
-			<key>Name</key><string>V Six</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7733393</integer>
-			<key>Total Time</key><integer>319145</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:42:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253763777</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:16:17Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E20</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/09%20V%20Six.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>656</key>
-		<dict>
-			<key>Track ID</key><integer>656</integer>
-			<key>Name</key><string>2097</string>
-			<key>Artist</key><string>Source Direct</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8118306</integer>
-			<key>Total Time</key><integer>335017</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:45:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253346683</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:24:43Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E23</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/11%202097.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>657</key>
-		<dict>
-			<key>Track ID</key><integer>657</integer>
-			<key>Name</key><string>Petrol</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2651580</integer>
-			<key>Total Time</key><integer>107326</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:46:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247377029</integer>
-			<key>Play Date UTC</key><date>2006-11-26T17:10:29Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E26</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/13%20Petrol.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>658</key>
-		<dict>
-			<key>Track ID</key><integer>658</integer>
-			<key>Name</key><string>Afro Ride</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album</key><string>Wipeout 2097</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6404336</integer>
-			<key>Total Time</key><integer>265214</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-06-14T17:47:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250673907</integer>
-			<key>Play Date UTC</key><date>2007-01-03T20:58:27Z</date>
-			<key>Compilation</key><true/>
-			<key>Persistent ID</key><string>87139F8602B85E29</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Compilations/Wipeout%202097/14%20Afro%20Ride.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>659</key>
-		<dict>
-			<key>Track ID</key><integer>659</integer>
-			<key>Name</key><string>Dude In The Moon (Luna Mix)</string>
-			<key>Artist</key><string>Dastrix</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Michael Clark/Mike Koglin</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8759366</integer>
-			<key>Total Time</key><integer>364146</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252402005</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:00:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E2C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dastrix/Community%20Service/07%20Dude%20In%20The%20Moon%20(Luna%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>660</key>
-		<dict>
-			<key>Track ID</key><integer>660</integer>
-			<key>Name</key><string>Mihalis</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5545151</integer>
-			<key>Total Time</key><integer>346435</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249550310</integer>
-			<key>Play Date UTC</key><date>2006-12-21T20:51:50Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E2E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/01%20Mihalis.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>661</key>
-		<dict>
-			<key>Track ID</key><integer>661</integer>
-			<key>Name</key><string>There's No Way Out Of Here</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4935348</integer>
-			<key>Total Time</key><integer>308323</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253291769</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:09:29Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E31</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/02%20There's%20No%20Way%20Out%20Of%20Here.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>662</key>
-		<dict>
-			<key>Track ID</key><integer>662</integer>
-			<key>Name</key><string>Cry From The Street</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5016014</integer>
-			<key>Total Time</key><integer>313364</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249308277</integer>
-			<key>Play Date UTC</key><date>2006-12-19T01:37:57Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E33</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/03%20Cry%20From%20The%20Street.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>663</key>
-		<dict>
-			<key>Track ID</key><integer>663</integer>
-			<key>Name</key><string>So Far Away</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5841902</integer>
-			<key>Total Time</key><integer>364982</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253464876</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:14:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E35</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/04%20So%20Far%20Away.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>664</key>
-		<dict>
-			<key>Track ID</key><integer>664</integer>
-			<key>Name</key><string>Short And Sweet</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5298555</integer>
-			<key>Total Time</key><integer>331023</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253276299</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:51:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E37</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/05%20Short%20And%20Sweet.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>665</key>
-		<dict>
-			<key>Track ID</key><integer>665</integer>
-			<key>Name</key><string>Raise My Rent</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5340769</integer>
-			<key>Total Time</key><integer>333662</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253606477</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:34:37Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E39</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/06%20Raise%20My%20Rent.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>666</key>
-		<dict>
-			<key>Track ID</key><integer>666</integer>
-			<key>Name</key><string>No Way</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5316527</integer>
-			<key>Total Time</key><integer>332146</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253296679</integer>
-			<key>Play Date UTC</key><date>2007-02-03T05:31:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E3B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/07%20No%20Way.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>667</key>
-		<dict>
-			<key>Track ID</key><integer>667</integer>
-			<key>Name</key><string>It's Deafinitely</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4280406</integer>
-			<key>Total Time</key><integer>267389</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249529756</integer>
-			<key>Play Date UTC</key><date>2006-12-21T15:09:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E3D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/08%20It's%20Deafinitely.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>668</key>
-		<dict>
-			<key>Track ID</key><integer>668</integer>
-			<key>Name</key><string>I Can't Breathe Anymore</string>
-			<key>Artist</key><string>David Gilmour</string>
-			<key>Album</key><string>David Gilmour</string>
-			<key>Genre</key><string>Classic Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2968850</integer>
-			<key>Total Time</key><integer>185417</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252390254</integer>
-			<key>Play Date UTC</key><date>2007-01-23T17:44:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E3F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/David%20Gilmour/David%20Gilmour/09%20I%20Can't%20Breathe%20Anymore.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>669</key>
-		<dict>
-			<key>Track ID</key><integer>669</integer>
-			<key>Name</key><string>Silence [Sanctuary Mix]</string>
-			<key>Artist</key><string>Delerium</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5888650</integer>
-			<key>Total Time</key><integer>485590</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253342001</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:06:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85E41</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Delerium/Plastic%20Compilation,%20Vol.%202/02%20Silence%20%5BSanctuary%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>670</key>
-		<dict>
-			<key>Track ID</key><integer>670</integer>
-			<key>Name</key><string>Heaven's Earth [Matt Darey Remix]</string>
-			<key>Artist</key><string>Delerium</string>
-			<key>Album Artist</key><string>Various Artists</string>
-			<key>Composer</key><string>Bill Leeb/Kristy Thirsk/Rhys Fulber</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7968896</integer>
-			<key>Total Time</key><integer>497920</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246032240</integer>
-			<key>Play Date UTC</key><date>2006-11-11T03:37:20Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-25T00:20:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E44</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Delerium/Plastic%20Compilation,%20Vol.%203/03%20Heaven's%20Earth%20%5BMatt%20Darey%20Remix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>671</key>
-		<dict>
-			<key>Track ID</key><integer>671</integer>
-			<key>Name</key><string>Old Friends 4 Sale</string>
-			<key>Artist</key><string>Desert Eagle Discs</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4354719</integer>
-			<key>Total Time</key><integer>271777</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85E46</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Desert%20Eagle%20Discs/Late%20Lounge%20(2%20of%202)/04%20Old%20Friends%204%20Sale.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>672</key>
-		<dict>
-			<key>Track ID</key><integer>672</integer>
-			<key>Name</key><string>Here With Me</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Paul Statham, Pascal Gabriel</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6167264</integer>
-			<key>Total Time</key><integer>254569</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T13:12:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250684005</integer>
-			<key>Play Date UTC</key><date>2007-01-03T23:46:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E49</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/01%20Here%20With%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>673</key>
-		<dict>
-			<key>Track ID</key><integer>673</integer>
-			<key>Name</key><string>Hunter</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Rollo Armstrong</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5731365</integer>
-			<key>Total Time</key><integer>237225</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:15:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3250666881</integer>
-			<key>Play Date UTC</key><date>2007-01-03T19:01:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E4C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/02%20Hunter.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>674</key>
-		<dict>
-			<key>Track ID</key><integer>674</integer>
-			<key>Name</key><string>Don't Think Of Me</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Rollo Armstrong, Pauline Taylor &#38; Paulie Herman</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6599253</integer>
-			<key>Total Time</key><integer>272340</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:18:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252538856</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:00:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E4E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/03%20Don't%20Think%20Of%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>675</key>
-		<dict>
-			<key>Track ID</key><integer>675</integer>
-			<key>Name</key><string>My Lover's Gone</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, J. Catto</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6493547</integer>
-			<key>Total Time</key><integer>267966</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:22:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3250690606</integer>
-			<key>Play Date UTC</key><date>2007-01-04T01:36:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E50</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/04%20My%20Lover's%20Gone.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>676</key>
-		<dict>
-			<key>Track ID</key><integer>676</integer>
-			<key>Name</key><string>All You Want</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Paulie Herman, Rollo Armstrong</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5660839</integer>
-			<key>Total Time</key><integer>233598</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:25:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252122221</integer>
-			<key>Play Date UTC</key><date>2007-01-20T15:17:01Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E52</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/05%20All%20You%20Want.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>677</key>
-		<dict>
-			<key>Track ID</key><integer>677</integer>
-			<key>Name</key><string>Thank You</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Paulie Herman</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5288113</integer>
-			<key>Total Time</key><integer>217961</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:27:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251484259</integer>
-			<key>Play Date UTC</key><date>2007-01-13T06:04:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E54</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/06%20Thank%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>678</key>
-		<dict>
-			<key>Track ID</key><integer>678</integer>
-			<key>Name</key><string>Honestly OK</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Matty Benbrook, Rollo Armstrong</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6724245</integer>
-			<key>Total Time</key><integer>277502</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:31:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252564092</integer>
-			<key>Play Date UTC</key><date>2007-01-25T18:01:32Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-20T23:09:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E56</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/07%20Honestly%20OK.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>679</key>
-		<dict>
-			<key>Track ID</key><integer>679</integer>
-			<key>Name</key><string>Slide</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Paulie Herman</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7114391</integer>
-			<key>Total Time</key><integer>293758</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:34:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253606144</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:29:04Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-01T23:27:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E58</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/08%20Slide.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>680</key>
-		<dict>
-			<key>Track ID</key><integer>680</integer>
-			<key>Name</key><string>Isobel</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Rollo Armstrong</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5673194</integer>
-			<key>Total Time</key><integer>234110</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:37:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252527400</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:50:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E5A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/09%20Isobel.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>681</key>
-		<dict>
-			<key>Track ID</key><integer>681</integer>
-			<key>Name</key><string>I'm No Angel</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Paul Statham, Pascal Gabriel</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5714491</integer>
-			<key>Total Time</key><integer>235710</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:40:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251860807</integer>
-			<key>Play Date UTC</key><date>2007-01-17T14:40:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E5C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/10%20I'm%20No%20Angel.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>682</key>
-		<dict>
-			<key>Track ID</key><integer>682</integer>
-			<key>Name</key><string>My Life</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Rollo Armstrong, Mark Bates</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4373758</integer>
-			<key>Total Time</key><integer>189545</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:43:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253456001</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:46:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E5E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/11%20My%20Life.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>683</key>
-		<dict>
-			<key>Track ID</key><integer>683</integer>
-			<key>Name</key><string>Take My Hand</string>
-			<key>Artist</key><string>Dido</string>
-			<key>Composer</key><string>Armstrong, Dido, Richard Dekkard</string>
-			<key>Album</key><string>No Angel</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9751045</integer>
-			<key>Total Time</key><integer>402836</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-05-04T13:48:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250707131</integer>
-			<key>Play Date UTC</key><date>2007-01-04T06:12:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E60</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dido/No%20Angel/12%20Take%20My%20Hand.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>684</key>
-		<dict>
-			<key>Track ID</key><integer>684</integer>
-			<key>Name</key><string>One Hundred Percent Free</string>
-			<key>Artist</key><string>Digby</string>
-			<key>Album</key><string>Falling Up</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3809784</integer>
-			<key>Total Time</key><integer>237975</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2005-02-23T20:31:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253604322</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:58:42Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E62</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Digby/Falling%20Up/04%20One%20Hundred%20Percent%20Free.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>685</key>
-		<dict>
-			<key>Track ID</key><integer>685</integer>
-			<key>Name</key><string>Chem trails</string>
-			<key>Artist</key><string>Dj Soul Slinger</string>
-			<key>Genre</key><string>genre</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8639512</integer>
-			<key>Total Time</key><integer>359888</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2005-02-27T02:16:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253282174</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:29:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E65</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dj%20Soul%20Slinger/Unknown%20Album/01%20Chem%20trails.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>686</key>
-		<dict>
-			<key>Track ID</key><integer>686</integer>
-			<key>Name</key><string>Trans-Island Skyway</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9450481</integer>
-			<key>Total Time</key><integer>390078</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T19:54:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252417014</integer>
-			<key>Play Date UTC</key><date>2007-01-24T01:10:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E69</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/01%20Trans-Island%20Skyway.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>687</key>
-		<dict>
-			<key>Track ID</key><integer>687</integer>
-			<key>Name</key><string>Countermoon</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7404822</integer>
-			<key>Total Time</key><integer>305598</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T19:55:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253346988</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:29:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E6C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/02%20Countermoon.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>688</key>
-		<dict>
-			<key>Track ID</key><integer>688</integer>
-			<key>Name</key><string>Springtime</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7427599</integer>
-			<key>Total Time</key><integer>306537</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T19:56:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253599270</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:34:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E6E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/03%20Springtime.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>689</key>
-		<dict>
-			<key>Track ID</key><integer>689</integer>
-			<key>Name</key><string>Snowbound</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Walter Becker &#38; Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10386783</integer>
-			<key>Total Time</key><integer>428734</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T19:57:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252475299</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:21:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E70</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/04%20Snowbound.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>690</key>
-		<dict>
-			<key>Track ID</key><integer>690</integer>
-			<key>Name</key><string>Tomorrow's Girls</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9147896</integer>
-			<key>Total Time</key><integer>377577</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T19:58:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251481062</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:11:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E72</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/05%20Tomorrow's%20Girls.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>691</key>
-		<dict>
-			<key>Track ID</key><integer>691</integer>
-			<key>Name</key><string>Florida Room</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen &#38; Libby Titus</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8775870</integer>
-			<key>Total Time</key><integer>362217</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T20:00:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3246684047</integer>
-			<key>Play Date UTC</key><date>2006-11-18T16:40:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E74</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/06%20Florida%20Room.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>692</key>
-		<dict>
-			<key>Track ID</key><integer>692</integer>
-			<key>Name</key><string>On The Dunes</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11806322</integer>
-			<key>Total Time</key><integer>487358</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T20:01:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252924586</integer>
-			<key>Play Date UTC</key><date>2007-01-29T22:09:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E76</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/07%20On%20The%20Dunes.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>693</key>
-		<dict>
-			<key>Track ID</key><integer>693</integer>
-			<key>Name</key><string>Teahouse On The Tracks</string>
-			<key>Artist</key><string>Donald Fagen</string>
-			<key>Composer</key><string>Donald Fagen</string>
-			<key>Album</key><string>Kamakiriad</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8958095</integer>
-			<key>Total Time</key><integer>369897</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-06-24T20:02:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B85E78</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Donald%20Fagen/Kamakiriad/08%20Teahouse%20On%20The%20Tracks.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>694</key>
-		<dict>
-			<key>Track ID</key><integer>694</integer>
-			<key>Name</key><string>The Look of Love</string>
-			<key>Artist</key><string>Dusty Springfield</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3389234</integer>
-			<key>Total Time</key><integer>211435</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253608164</integer>
-			<key>Play Date UTC</key><date>2007-02-06T20:02:44Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-02-04T17:10:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85E7A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Dusty%20Springfield/Late%20Lounge%20(2%20of%202)/15%20The%20Look%20of%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>695</key>
-		<dict>
-			<key>Track ID</key><integer>695</integer>
-			<key>Name</key><string>Curveball</string>
-			<key>Artist</key><string>Elite Force</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Elite Force</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5780780</integer>
-			<key>Total Time</key><integer>240039</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253462655</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:37:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E7D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Elite%20Force/Community%20Service/06%20Curveball.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>696</key>
-		<dict>
-			<key>Track ID</key><integer>696</integer>
-			<key>Name</key><string>Baby Get Lost</string>
-			<key>Artist</key><string>Elysian Fields</string>
-			<key>Album</key><string>Dreams That Breathe Your Name</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8125244</integer>
-			<key>Total Time</key><integer>203075</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T21:01:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>320</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253279360</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:42:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E7F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Elysian%20Fields/Dreams%20That%20Breathe%20Your%20Name/02%20Baby%20Get%20Lost.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>697</key>
-		<dict>
-			<key>Track ID</key><integer>697</integer>
-			<key>Name</key><string>Summer Breeze</string>
-			<key>Artist</key><string>Emiliana Torrini</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3577733</integer>
-			<key>Total Time</key><integer>223216</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251523527</integer>
-			<key>Play Date UTC</key><date>2007-01-13T16:58:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85E82</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Emiliana%20Torrini/Late%20Lounge%20(2%20of%202)/14%20Summer%20Breeze.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>698</key>
-		<dict>
-			<key>Track ID</key><integer>698</integer>
-			<key>Name</key><string>Bag Lady</string>
-			<key>Artist</key><string>Erykah Badu</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5545903</integer>
-			<key>Total Time</key><integer>346226</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253471543</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:05:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85E85</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Erykah%20Badu/Late%20Lounge%20(2%20of%202)/07%20Bag%20Lady.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>699</key>
-		<dict>
-			<key>Track ID</key><integer>699</integer>
-			<key>Name</key><string>Cake Hole</string>
-			<key>Artist</key><string>Evil 9</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Chris Pardy/Tom Beaufoy</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8439000</integer>
-			<key>Total Time</key><integer>350798</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252512875</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:47:55Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E88</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Evil%209/Community%20Service/02%20Cake%20Hole.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>700</key>
-		<dict>
-			<key>Track ID</key><integer>700</integer>
-			<key>Name</key><string>Rock and Roll Rhythm</string>
-			<key>Artist</key><string>Fancey</string>
-			<key>Album</key><string>Fancey</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4624603</integer>
-			<key>Total Time</key><integer>192600</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T20:32:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252533426</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:30:26Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E8A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fancey/Fancey/05%20Rock%20and%20Roll%20Rhythm.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>701</key>
-		<dict>
-			<key>Track ID</key><integer>701</integer>
-			<key>Name</key><string>Song For Lindy</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4654192</integer>
-			<key>Total Time</key><integer>290220</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:24:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3247721168</integer>
-			<key>Play Date UTC</key><date>2006-11-30T16:46:08Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B85E8D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/01%20Song%20For%20Lindy.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>702</key>
-		<dict>
-			<key>Track ID</key><integer>702</integer>
-			<key>Name</key><string>Santa Cruz</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7206518</integer>
-			<key>Total Time</key><integer>450220</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:24:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253341516</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:58:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E90</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/02%20Santa%20Cruz.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>703</key>
-		<dict>
-			<key>Track ID</key><integer>703</integer>
-			<key>Name</key><string>Going Out Of My Head</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim/Pete Townshend</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5031065</integer>
-			<key>Total Time</key><integer>314253</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:25:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253350223</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:23:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E92</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/03%20Going%20Out%20Of%20My%20Head.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>704</key>
-		<dict>
-			<key>Track ID</key><integer>704</integer>
-			<key>Name</key><string>The Weekend Starts Here</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim/Mohammed</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5606342</integer>
-			<key>Total Time</key><integer>350223</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:25:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252503843</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:17:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E94</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/04%20The%20Weekend%20Starts%20Here.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>705</key>
-		<dict>
-			<key>Track ID</key><integer>705</integer>
-			<key>Name</key><string>Everybody Needs A 303</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Edwin Starr/Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5595308</integer>
-			<key>Total Time</key><integer>349518</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:25:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253522455</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:14:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E96</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/05%20Everybody%20Needs%20A%20303.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>706</key>
-		<dict>
-			<key>Track ID</key><integer>706</integer>
-			<key>Name</key><string>Give The Po'Man A Break</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5608255</integer>
-			<key>Total Time</key><integer>350328</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:25:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252474870</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:14:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E98</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/06%20Give%20The%20Po'Man%20A%20Break.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>707</key>
-		<dict>
-			<key>Track ID</key><integer>707</integer>
-			<key>Name</key><string>10th And Crenshaw</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4176321</integer>
-			<key>Total Time</key><integer>260832</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:25:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253594668</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:17:48Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-02T02:25:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E9A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/07%2010th%20And%20Crenshaw.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>708</key>
-		<dict>
-			<key>Track ID</key><integer>708</integer>
-			<key>Name</key><string>First Down</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6058384</integer>
-			<key>Total Time</key><integer>378462</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:25:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253682759</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:45:59Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85E9C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/08%20First%20Down.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>709</key>
-		<dict>
-			<key>Track ID</key><integer>709</integer>
-			<key>Name</key><string>Punk To Funk</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim/Mansfield</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4770246</integer>
-			<key>Total Time</key><integer>297952</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:26:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:42Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253615182</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:59:42Z</date>
-			<key>Persistent ID</key><string>87139F8602B85E9E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/09%20Punk%20To%20Funk.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>710</key>
-		<dict>
-			<key>Track ID</key><integer>710</integer>
-			<key>Name</key><string>The Sound Of Milwaukee</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6054636</integer>
-			<key>Total Time</key><integer>378226</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:26:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253465453</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:24:13Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85EA0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/10%20The%20Sound%20Of%20Milwaukee.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>711</key>
-		<dict>
-			<key>Track ID</key><integer>711</integer>
-			<key>Name</key><string>Michael Jackson</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim/Negativland</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5592378</integer>
-			<key>Total Time</key><integer>349335</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:26:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253334521</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:02:01Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EA2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/11%20Michael%20Jackson.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>712</key>
-		<dict>
-			<key>Track ID</key><integer>712</integer>
-			<key>Name</key><string>Next To Nothing</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Composer</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Better Living Through Chemistry</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6989185</integer>
-			<key>Total Time</key><integer>436636</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2005-03-21T23:26:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Encoded By Goldsteve</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252552378</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:46:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EA4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Better%20Living%20Through%20Chemistry/12%20Next%20To%20Nothing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>713</key>
-		<dict>
-			<key>Track ID</key><integer>713</integer>
-			<key>Name</key><string>Talking Bout My Baby</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3952896</integer>
-			<key>Total Time</key><integer>224117</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:02:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251892435</integer>
-			<key>Play Date UTC</key><date>2007-01-17T23:27:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EA6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/01%20Talking%20Bout%20My%20Baby.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>714</key>
-		<dict>
-			<key>Track ID</key><integer>714</integer>
-			<key>Name</key><string>Sunset (Bird of Prey)</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6963473</integer>
-			<key>Total Time</key><integer>410155</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:02:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253034789</integer>
-			<key>Play Date UTC</key><date>2007-01-31T04:46:29Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EA9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/02%20Sunset%20(Bird%20of%20Prey).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>715</key>
-		<dict>
-			<key>Track ID</key><integer>715</integer>
-			<key>Name</key><string>Love Life</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7106597</integer>
-			<key>Total Time</key><integer>419025</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:02:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252578765</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:06:05Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EAB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/03%20Love%20Life.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>716</key>
-		<dict>
-			<key>Track ID</key><integer>716</integer>
-			<key>Name</key><string>Ya Mama</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5799603</integer>
-			<key>Total Time</key><integer>338243</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:03:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253450208</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:10:08Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EAD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/04%20Ya%20Mama.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>717</key>
-		<dict>
-			<key>Track ID</key><integer>717</integer>
-			<key>Name</key><string>Mad Flava</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4752485</integer>
-			<key>Total Time</key><integer>273506</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:03:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250709884</integer>
-			<key>Play Date UTC</key><date>2007-01-04T06:58:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EAF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/05%20Mad%20Flava.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>718</key>
-		<dict>
-			<key>Track ID</key><integer>718</integer>
-			<key>Name</key><string>Retox</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5467137</integer>
-			<key>Total Time</key><integer>317670</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:03:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250595477</integer>
-			<key>Play Date UTC</key><date>2007-01-02T23:11:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EB1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/06%20Retox.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>719</key>
-		<dict>
-			<key>Track ID</key><integer>719</integer>
-			<key>Name</key><string>Weapon of Choice</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5924028</integer>
-			<key>Total Time</key><integer>345929</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:03:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253772375</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:39:35Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EB3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/07%20Weapon%20of%20Choice.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>720</key>
-		<dict>
-			<key>Track ID</key><integer>720</integer>
-			<key>Name</key><string>Drop the Hate</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5672729</integer>
-			<key>Total Time</key><integer>330395</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:03:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249470464</integer>
-			<key>Play Date UTC</key><date>2006-12-20T22:41:04Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T20:17:59Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EB5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/08%20Drop%20the%20Hate.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>721</key>
-		<dict>
-			<key>Track ID</key><integer>721</integer>
-			<key>Name</key><string>Demons</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6997250</integer>
-			<key>Total Time</key><integer>412268</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:03:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>34</integer>
-			<key>Play Date</key><integer>3253708796</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:59:56Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-12T21:25:52Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EB7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/09%20Demons.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>722</key>
-		<dict>
-			<key>Track ID</key><integer>722</integer>
-			<key>Name</key><string>Song for Shelter</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>9069820</integer>
-			<key>Total Time</key><integer>540326</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:04:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252385843</integer>
-			<key>Play Date UTC</key><date>2007-01-23T16:30:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EB9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/10%20Song%20for%20Shelter.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>723</key>
-		<dict>
-			<key>Track ID</key><integer>723</integer>
-			<key>Name</key><string>Talking Bout My Baby (Reprise)</string>
-			<key>Artist</key><string>Fatboy Slim</string>
-			<key>Album Artist</key><string>Fatboy Slim</string>
-			<key>Album</key><string>Halfway Between the Gutter and the Stars</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2767162</integer>
-			<key>Total Time</key><integer>150835</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-07-27T17:04:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252550242</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:10:42Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EBB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fatboy%20Slim/Halfway%20Between%20the%20Gutter%20and%20the%20Stars/11%20Talking%20Bout%20My%20Baby%20(Reprise).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>724</key>
-		<dict>
-			<key>Track ID</key><integer>724</integer>
-			<key>Name</key><string>Take a Picture [Hybrid Mix]</string>
-			<key>Artist</key><string>Filter</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7790009</integer>
-			<key>Total Time</key><integer>486739</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253556435</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:40:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EBD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Filter/Plastic%20Compilation,%20Vol.%203/04%20Take%20a%20Picture%20%5BHybrid%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>725</key>
-		<dict>
-			<key>Track ID</key><integer>725</integer>
-			<key>Name</key><string>Sleep to Dream</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4027457</integer>
-			<key>Total Time</key><integer>250044</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253523219</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:26:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EC0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/01%20Sleep%20to%20Dream.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>726</key>
-		<dict>
-			<key>Track ID</key><integer>726</integer>
-			<key>Name</key><string>Sullen Girl</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3780485</integer>
-			<key>Total Time</key><integer>234736</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252553335</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:02:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EC3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/02%20Sullen%20Girl.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>727</key>
-		<dict>
-			<key>Track ID</key><integer>727</integer>
-			<key>Name</key><string>Shadowboxer</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5221859</integer>
-			<key>Total Time</key><integer>324310</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252938848</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:07:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EC5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/03%20Shadowboxer.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>728</key>
-		<dict>
-			<key>Track ID</key><integer>728</integer>
-			<key>Name</key><string>Criminal</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5530689</integer>
-			<key>Total Time</key><integer>343484</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253768493</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:34:53Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85EC7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/04%20Criminal.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>729</key>
-		<dict>
-			<key>Track ID</key><integer>729</integer>
-			<key>Name</key><string>Slow Like Honey</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5758853</integer>
-			<key>Total Time</key><integer>357616</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B85EC9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/05%20Slow%20Like%20Honey.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>730</key>
-		<dict>
-			<key>Track ID</key><integer>730</integer>
-			<key>Name</key><string>The First Taste</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4622966</integer>
-			<key>Total Time</key><integer>287007</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252508241</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:30:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ECB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/06%20The%20First%20Taste.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>731</key>
-		<dict>
-			<key>Track ID</key><integer>731</integer>
-			<key>Name</key><string>Never Is a Promise</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5709952</integer>
-			<key>Total Time</key><integer>354560</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252562575</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:36:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ECD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/07%20Never%20Is%20a%20Promise.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>732</key>
-		<dict>
-			<key>Track ID</key><integer>732</integer>
-			<key>Name</key><string>The Child Is Gone</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4105198</integer>
-			<key>Total Time</key><integer>254902</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252579020</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:10:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ECF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/08%20The%20Child%20Is%20Gone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>733</key>
-		<dict>
-			<key>Track ID</key><integer>733</integer>
-			<key>Name</key><string>Pale September</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5652692</integer>
-			<key>Total Time</key><integer>350981</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252418928</integer>
-			<key>Play Date UTC</key><date>2007-01-24T01:42:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ED1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/09%20Pale%20September.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>734</key>
-		<dict>
-			<key>Track ID</key><integer>734</integer>
-			<key>Name</key><string>Carrion</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album</key><string>Tidal</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5566216</integer>
-			<key>Total Time</key><integer>345704</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251479563</integer>
-			<key>Play Date UTC</key><date>2007-01-13T04:46:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B85ED3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/Tidal/10%20Carrion.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>735</key>
-		<dict>
-			<key>Track ID</key><integer>735</integer>
-			<key>Name</key><string>On the Bound</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5418912</integer>
-			<key>Total Time</key><integer>323963</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-19T02:29:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253529195</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:06:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ED5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/01%20On%20the%20Bound.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>736</key>
-		<dict>
-			<key>Track ID</key><integer>736</integer>
-			<key>Name</key><string>To Your Love</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3788112</integer>
-			<key>Total Time</key><integer>221261</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-30T20:12:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252468035</integer>
-			<key>Play Date UTC</key><date>2007-01-24T15:20:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85ED8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/02%20To%20Your%20Love.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>737</key>
-		<dict>
-			<key>Track ID</key><integer>737</integer>
-			<key>Name</key><string>Limp</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3619968</integer>
-			<key>Total Time</key><integer>210673</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-20T23:17:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253111304</integer>
-			<key>Play Date UTC</key><date>2007-02-01T02:01:44Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EDA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/03%20Limp.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>738</key>
-		<dict>
-			<key>Track ID</key><integer>738</integer>
-			<key>Name</key><string>Love Ridden</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3505312</integer>
-			<key>Total Time</key><integer>203451</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-21T03:46:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253355349</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:49:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EDC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/04%20Love%20Ridden.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>739</key>
-		<dict>
-			<key>Track ID</key><integer>739</integer>
-			<key>Name</key><string>Paper Bag</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3765968</integer>
-			<key>Total Time</key><integer>219868</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-08-10T02:24:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252414235</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:23:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EDE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/05%20Paper%20Bag.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>740</key>
-		<dict>
-			<key>Track ID</key><integer>740</integer>
-			<key>Name</key><string>A Mistake</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5001456</integer>
-			<key>Total Time</key><integer>297655</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-19T02:18:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253678784</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:39:44Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EE0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/06%20A%20Mistake.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>741</key>
-		<dict>
-			<key>Track ID</key><integer>741</integer>
-			<key>Name</key><string>Fast As You Can</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4719104</integer>
-			<key>Total Time</key><integer>279891</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-08-09T10:23:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252473284</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:48:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EE2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/07%20Fast%20As%20You%20Can.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>742</key>
-		<dict>
-			<key>Track ID</key><integer>742</integer>
-			<key>Name</key><string>The Way Things Are</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4371472</integer>
-			<key>Total Time</key><integer>257995</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-08-23T13:00:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253264194</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:29:54Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T16:27:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EE4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/08%20The%20Way%20Things%20Are.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>743</key>
-		<dict>
-			<key>Track ID</key><integer>743</integer>
-			<key>Name</key><string>Get Gone</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4246416</integer>
-			<key>Total Time</key><integer>250123</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-20T19:59:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253036433</integer>
-			<key>Play Date UTC</key><date>2007-01-31T05:13:53Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EE6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/09%20Get%20Gone.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>744</key>
-		<dict>
-			<key>Track ID</key><integer>744</integer>
-			<key>Name</key><string>I Know</string>
-			<key>Artist</key><string>Fiona Apple</string>
-			<key>Album Artist</key><string>Fiona Apple</string>
-			<key>Composer</key><string>Fiona Apple</string>
-			<key>Album</key><string>When the Pawn Hits the Conflicts He Thinks Like a King...</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5009280</integer>
-			<key>Total Time</key><integer>298165</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-27T02:02:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249477345</integer>
-			<key>Play Date UTC</key><date>2006-12-21T00:35:45Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T18:01:35Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85EE8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fiona%20Apple/When%20the%20Pawn%20Hits%20the%20Conflicts%20He%20Thinks%20Like%20a%20King.._/10%20I%20Know.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>745</key>
-		<dict>
-			<key>Track ID</key><integer>745</integer>
-			<key>Name</key><string>Thumper! (Original Mix)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8556544</integer>
-			<key>Total Time</key><integer>356466</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:13:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>16</integer>
-			<key>Play Date</key><integer>3253687527</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:05:27Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-18T23:12:37Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85EEA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/01%20Thumper!%20(Original%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>746</key>
-		<dict>
-			<key>Track ID</key><integer>746</integer>
-			<key>Name</key><string>Philly (Jamateur Mix)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8103936</integer>
-			<key>Total Time</key><integer>337580</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:13:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3249291517</integer>
-			<key>Play Date UTC</key><date>2006-12-18T20:58:37Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85EED</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/02%20Philly%20(Jamateur%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>747</key>
-		<dict>
-			<key>Track ID</key><integer>747</integer>
-			<key>Name</key><string>Glorious</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8527872</integer>
-			<key>Total Time</key><integer>355213</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:23:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249452598</integer>
-			<key>Play Date UTC</key><date>2006-12-20T17:43:18Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85EEF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/03%20Glorious.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>748</key>
-		<dict>
-			<key>Track ID</key><integer>748</integer>
-			<key>Name</key><string>Easy Peasy</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6023168</integer>
-			<key>Total Time</key><integer>250880</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:23:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253507240</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:00:40Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85EF1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/04%20Easy%20Peasy.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>749</key>
-		<dict>
-			<key>Track ID</key><integer>749</integer>
-			<key>Name</key><string>Pan Am into Philly</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8032256</integer>
-			<key>Total Time</key><integer>334628</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:22:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253716510</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:08:30Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85EF3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/05%20Pan%20Am%20into%20Philly.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>750</key>
-		<dict>
-			<key>Track ID</key><integer>750</integer>
-			<key>Name</key><string>Garden of Blighty</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>14129152</integer>
-			<key>Total Time</key><integer>588617</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:22:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251895631</integer>
-			<key>Play Date UTC</key><date>2007-01-18T00:20:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EF5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/06%20Garden%20of%20Blighty.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>751</key>
-		<dict>
-			<key>Track ID</key><integer>751</integer>
-			<key>Name</key><string>Jig</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7313408</integer>
-			<key>Total Time</key><integer>304640</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:22:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252582021</integer>
-			<key>Play Date UTC</key><date>2007-01-25T23:00:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EF7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/07%20Jig.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>752</key>
-		<dict>
-			<key>Track ID</key><integer>752</integer>
-			<key>Name</key><string>Phin</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9357312</integer>
-			<key>Total Time</key><integer>389773</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:22:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253714740</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:39:00Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-25T02:00:53Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85EF9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/08%20Phin.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>753</key>
-		<dict>
-			<key>Track ID</key><integer>753</integer>
-			<key>Name</key><string>Tax (iOriginal White Label B-Side_</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6100992</integer>
-			<key>Total Time</key><integer>254093</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:22:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246960747</integer>
-			<key>Play Date UTC</key><date>2006-11-21T21:32:27Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-14T17:39:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EFB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/09%20Tax%20(iOriginal%20White%20Label%20B-Side_.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>754</key>
-		<dict>
-			<key>Track ID</key><integer>754</integer>
-			<key>Name</key><string>Coolest (Original White Label B2)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4171776</integer>
-			<key>Total Time</key><integer>173714</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:25:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252468700</integer>
-			<key>Play Date UTC</key><date>2007-01-24T15:31:40Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T23:35:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B85EFD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/10%20Coolest%20(Original%20White%20Label%20B2).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>755</key>
-		<dict>
-			<key>Track ID</key><integer>755</integer>
-			<key>Name</key><string>The Bells (Mix One / 12'' A-Side)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 1]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8196096</integer>
-			<key>Total Time</key><integer>341394</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:23:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253455363</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:36:03Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85EFF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%201%5D/11%20The%20Bells%20(Mix%20One%20_%2012''%20A-Side).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>756</key>
-		<dict>
-			<key>Track ID</key><integer>756</integer>
-			<key>Name</key><string>Spacey (Catch 22 Dub)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8876689</integer>
-			<key>Total Time</key><integer>369737</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:59:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253277638</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:13:58Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85F01</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/01%20Spacey%20(Catch%2022%20Dub).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>757</key>
-		<dict>
-			<key>Track ID</key><integer>757</integer>
-			<key>Name</key><string>Astrosapiens</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9855330</integer>
-			<key>Total Time</key><integer>410514</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:58:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252994044</integer>
-			<key>Play Date UTC</key><date>2007-01-30T17:27:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F04</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/02%20Astrosapiens.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>758</key>
-		<dict>
-			<key>Track ID</key><integer>758</integer>
-			<key>Name</key><string>Life Support</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9376349</integer>
-			<key>Total Time</key><integer>390556</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:00:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249565299</integer>
-			<key>Play Date UTC</key><date>2006-12-22T01:01:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F06</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/03%20Life%20Support.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>759</key>
-		<dict>
-			<key>Track ID</key><integer>759</integer>
-			<key>Name</key><string>Cut</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9617085</integer>
-			<key>Total Time</key><integer>400587</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:00:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253340107</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:35:07Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T23:07:38Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85F08</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/04%20Cut.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>760</key>
-		<dict>
-			<key>Track ID</key><integer>760</integer>
-			<key>Name</key><string>Wobbler</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12648965</integer>
-			<key>Total Time</key><integer>526915</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:04:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246904639</integer>
-			<key>Play Date UTC</key><date>2006-11-21T05:57:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F0A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/05%20Wobbler.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>761</key>
-		<dict>
-			<key>Track ID</key><integer>761</integer>
-			<key>Name</key><string>O.K.</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11249007</integer>
-			<key>Total Time</key><integer>468584</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:03:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253357556</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:25:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F0C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/06%20O.K..mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>762</key>
-		<dict>
-			<key>Track ID</key><integer>762</integer>
-			<key>Name</key><string>Kitten Moon</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>14783695</integer>
-			<key>Total Time</key><integer>615862</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:07:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253679749</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:55:49Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85F0E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/07%20Kitten%20Moon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>763</key>
-		<dict>
-			<key>Track ID</key><integer>763</integer>
-			<key>Name</key><string>Bermuda</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11497278</integer>
-			<key>Total Time</key><integer>478928</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:06:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246469987</integer>
-			<key>Play Date UTC</key><date>2006-11-16T05:13:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F10</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/08%20Bermuda.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>764</key>
-		<dict>
-			<key>Track ID</key><integer>764</integer>
-			<key>Name</key><string>Setback</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12559312</integer>
-			<key>Total Time</key><integer>523180</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:10:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253356134</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:02:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F12</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/09%20Setback.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>765</key>
-		<dict>
-			<key>Track ID</key><integer>765</integer>
-			<key>Name</key><string>Goodnight Lover</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 2]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10497320</integer>
-			<key>Total Time</key><integer>437263</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T17:10:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>28</integer>
-			<key>Play Date</key><integer>3253716947</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:15:47Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85F14</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%202%5D/10%20Goodnight%20Lover.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>766</key>
-		<dict>
-			<key>Track ID</key><integer>766</integer>
-			<key>Name</key><string>Slid (Justin Robertson's Scat And Sax Frenzy)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9751293</integer>
-			<key>Total Time</key><integer>406177</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:42:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252520731</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:58:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F16</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/01%20Slid%20(Justin%20Robertson's%20Scat%20And%20Sax%20Frenzy).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>767</key>
-		<dict>
-			<key>Track ID</key><integer>767</integer>
-			<key>Name</key><string>Electric Guitar (Headstock)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8040986</integer>
-			<key>Total Time</key><integer>334915</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:43:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252500758</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:25:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F19</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/02%20Electric%20Guitar%20(Headstock).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>768</key>
-		<dict>
-			<key>Track ID</key><integer>768</integer>
-			<key>Name</key><string>Groovy Feeling (Screwball)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10329311</integer>
-			<key>Total Time</key><integer>430262</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:44:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253681674</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:27:54Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85F1B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/03%20Groovy%20Feeling%20(Screwball).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>769</key>
-		<dict>
-			<key>Track ID</key><integer>769</integer>
-			<key>Name</key><string>Bubble (Braillebubble)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9686695</integer>
-			<key>Total Time</key><integer>403487</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:44:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252416116</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:55:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F1D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/04%20Bubble%20(Braillebubble).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>770</key>
-		<dict>
-			<key>Track ID</key><integer>770</integer>
-			<key>Name</key><string>Bullet (Atlas Space Bass)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>13571837</integer>
-			<key>Total Time</key><integer>565368</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:49:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246865086</integer>
-			<key>Play Date UTC</key><date>2006-11-20T18:58:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F1F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/05%20Bullet%20(Atlas%20Space%20Bass).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>771</key>
-		<dict>
-			<key>Track ID</key><integer>771</integer>
-			<key>Name</key><string>Bullet (Dust Brothers Jazz Mix)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2886299</integer>
-			<key>Total Time</key><integer>120137</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:46:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253613407</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:30:07Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T01:09:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F21</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/06%20Bullet%20(Dust%20Brothers%20Jazz%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>772</key>
-		<dict>
-			<key>Track ID</key><integer>772</integer>
-			<key>Name</key><string>Tosh - Nosh (Fila Brazilia Mix)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9267909</integer>
-			<key>Total Time</key><integer>386037</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:48:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253683760</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:02:40Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-17T06:15:40Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85F23</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/07%20Tosh%20-%20Nosh%20(Fila%20Brazilia%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>773</key>
-		<dict>
-			<key>Track ID</key><integer>773</integer>
-			<key>Name</key><string>Atom Bomb (Atomix 4)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>14710353</integer>
-			<key>Total Time</key><integer>612806</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:52:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B85F25</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/08%20Atom%20Bomb%20(Atomix%204).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>774</key>
-		<dict>
-			<key>Track ID</key><integer>774</integer>
-			<key>Name</key><string>Absurd (Marine Parade Mix)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9549399</integer>
-			<key>Total Time</key><integer>397766</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:52:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249535643</integer>
-			<key>Play Date UTC</key><date>2006-12-21T16:47:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F27</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/09%20Absurd%20(Marine%20Parade%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>775</key>
-		<dict>
-			<key>Track ID</key><integer>775</integer>
-			<key>Name</key><string>Absurd (Soul Of Man Mix)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10949980</integer>
-			<key>Total Time</key><integer>456124</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:55:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252555038</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:30:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F29</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/10%20Absurd%20(Soul%20Of%20Man%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>776</key>
-		<dict>
-			<key>Track ID</key><integer>776</integer>
-			<key>Name</key><string>Squirt (Europicola)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Progrsssive History XXX [CD 3]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10399522</integer>
-			<key>Total Time</key><integer>433188</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2006-09-15T16:50:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250682994</integer>
-			<key>Play Date UTC</key><date>2007-01-03T23:29:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F2B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Progrsssive%20History%20XXX%20%5BCD%203%5D/11%20Squirt%20(Europicola).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>777</key>
-		<dict>
-			<key>Track ID</key><integer>777</integer>
-			<key>Name</key><string>Snapshot</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4409810</integer>
-			<key>Total Time</key><integer>248986</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:27:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253689349</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:35:49Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-16T05:05:52Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F2D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/01%20Snapshot.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>778</key>
-		<dict>
-			<key>Track ID</key><integer>778</integer>
-			<key>Name</key><string>My Spine</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7060322</integer>
-			<key>Total Time</key><integer>442152</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:27:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:43Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>28</integer>
-			<key>Play Date</key><integer>3253039637</integer>
-			<key>Play Date UTC</key><date>2007-01-31T06:07:17Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F30</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/02%20My%20Spine.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>779</key>
-		<dict>
-			<key>Track ID</key><integer>779</integer>
-			<key>Name</key><string>Another Kind of Blues</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4708786</integer>
-			<key>Total Time</key><integer>277569</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:27:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253676748</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:05:48Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-26T19:41:57Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F32</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/03%20Another%20Kind%20of%20Blues.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>780</key>
-		<dict>
-			<key>Track ID</key><integer>780</integer>
-			<key>Name</key><string>Hang Tough</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5573474</integer>
-			<key>Total Time</key><integer>328003</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:28:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246635389</integer>
-			<key>Play Date UTC</key><date>2006-11-18T03:09:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F34</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/04%20Hang%20Tough.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>781</key>
-		<dict>
-			<key>Track ID</key><integer>781</integer>
-			<key>Name</key><string>Switch / Twitch</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>9705282</integer>
-			<key>Total Time</key><integer>573276</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:28:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252934774</integer>
-			<key>Play Date UTC</key><date>2007-01-30T00:59:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F36</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/05%20Switch%20_%20Twitch.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>782</key>
-		<dict>
-			<key>Track ID</key><integer>782</integer>
-			<key>Name</key><string>YKK</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6973042</integer>
-			<key>Total Time</key><integer>404977</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:28:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252039206</integer>
-			<key>Play Date UTC</key><date>2007-01-19T16:13:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F38</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/06%20YKK.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>783</key>
-		<dict>
-			<key>Track ID</key><integer>783</integer>
-			<key>Name</key><string>Expo</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5580866</integer>
-			<key>Total Time</key><integer>318506</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:29:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253295496</integer>
-			<key>Play Date UTC</key><date>2007-02-03T05:11:36Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F3A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/07%20Expo.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>784</key>
-		<dict>
-			<key>Track ID</key><integer>784</integer>
-			<key>Name</key><string>Electric Blue</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6558050</integer>
-			<key>Total Time</key><integer>394737</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:29:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253374311</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:05:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F3C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/08%20Electric%20Blue.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>785</key>
-		<dict>
-			<key>Track ID</key><integer>785</integer>
-			<key>Name</key><string>Baby Pain</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5718930</integer>
-			<key>Total Time</key><integer>344373</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:29:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247628773</integer>
-			<key>Play Date UTC</key><date>2006-11-29T15:06:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F3E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/09%20Baby%20Pain.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>786</key>
-		<dict>
-			<key>Track ID</key><integer>786</integer>
-			<key>Name</key><string>Nebulus</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6038098</integer>
-			<key>Total Time</key><integer>357725</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:30:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251354842</integer>
-			<key>Play Date UTC</key><date>2007-01-11T18:07:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F40</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/10%20Nebulus.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>787</key>
-		<dict>
-			<key>Track ID</key><integer>787</integer>
-			<key>Name</key><string>Blue Sky</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album Artist</key><string>Fluke</string>
-			<key>Album</key><string>Puppy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6040114</integer>
-			<key>Total Time</key><integer>348901</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-09-28T20:30:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253377335</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:55:35Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:18Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F42</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Puppy/11%20Blue%20Sky.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>788</key>
-		<dict>
-			<key>Track ID</key><integer>788</integer>
-			<key>Name</key><string>Absurd</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8353920</integer>
-			<key>Total Time</key><integer>348055</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253715391</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:49:51Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B85F44</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/01%20Absurd.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>789</key>
-		<dict>
-			<key>Track ID</key><integer>789</integer>
-			<key>Name</key><string>Atom Bomb</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8292480</integer>
-			<key>Total Time</key><integer>345469</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>34</integer>
-			<key>Play Date</key><integer>3253473935</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:45:35Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B85F47</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/02%20Atom%20Bomb.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>790</key>
-		<dict>
-			<key>Track ID</key><integer>790</integer>
-			<key>Name</key><string>Kitten Moon</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>13398144</integer>
-			<key>Total Time</key><integer>558236</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253040863</integer>
-			<key>Play Date UTC</key><date>2007-01-31T06:27:43Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-14T04:00:11Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85F49</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/03%20Kitten%20Moon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>791</key>
-		<dict>
-			<key>Track ID</key><integer>791</integer>
-			<key>Name</key><string>Mosh</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9150592</integer>
-			<key>Total Time</key><integer>381257</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253373917</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:58:37Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F4B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/04%20Mosh.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>792</key>
-		<dict>
-			<key>Track ID</key><integer>792</integer>
-			<key>Name</key><string>Setback</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12841088</integer>
-			<key>Total Time</key><integer>535013</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>12</integer>
-			<key>Play Date</key><integer>3253687171</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:59:31Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B85F4D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/05%20Setback.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>793</key>
-		<dict>
-			<key>Track ID</key><integer>793</integer>
-			<key>Name</key><string>Bermuda</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11456640</integer>
-			<key>Total Time</key><integer>477283</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253360051</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:07:31Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-17T21:21:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F4F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/06%20Bermuda.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>794</key>
-		<dict>
-			<key>Track ID</key><integer>794</integer>
-			<key>Name</key><string>Amp</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11751552</integer>
-			<key>Total Time</key><integer>489613</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253765002</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:36:42Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B85F51</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/07%20Amp.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>795</key>
-		<dict>
-			<key>Track ID</key><integer>795</integer>
-			<key>Name</key><string>Reeferendrum</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10608768</integer>
-			<key>Total Time</key><integer>441939</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253364121</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:15:21Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85F53</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/08%20Reeferendrum.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>796</key>
-		<dict>
-			<key>Track ID</key><integer>796</integer>
-			<key>Name</key><string>Squirt</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9021568</integer>
-			<key>Total Time</key><integer>375849</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251624549</integer>
-			<key>Play Date UTC</key><date>2007-01-14T21:02:29Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85F55</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/09%20Squirt.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>797</key>
-		<dict>
-			<key>Track ID</key><integer>797</integer>
-			<key>Name</key><string>Goodnight Lover</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Risotto</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10899584</integer>
-			<key>Total Time</key><integer>454138</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-09-15T18:17:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253686636</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:50:36Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B85F57</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Risotto/10%20Goodnight%20Lover.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>798</key>
-		<dict>
-			<key>Track ID</key><integer>798</integer>
-			<key>Name</key><string>Groovy Feeling (Make Mine A 99)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12243614</integer>
-			<key>Total Time</key><integer>432927</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>226</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253466766</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:46:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F59</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/01%20Groovy%20Feeling%20(Make%20Mine%20A%2099).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>799</key>
-		<dict>
-			<key>Track ID</key><integer>799</integer>
-			<key>Name</key><string>Love Letters</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10732819</integer>
-			<key>Total Time</key><integer>402050</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>213</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253618512</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:55:12Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F5C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/02%20Love%20Letters.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>800</key>
-		<dict>
-			<key>Track ID</key><integer>800</integer>
-			<key>Name</key><string>Glidub</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10207647</integer>
-			<key>Total Time</key><integer>376502</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>216</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252497316</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:28:36Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-30T22:30:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F5E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/03%20Glidub.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>801</key>
-		<dict>
-			<key>Track ID</key><integer>801</integer>
-			<key>Name</key><string>Electric Guitar (Humbucker)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11807052</integer>
-			<key>Total Time</key><integer>444995</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>212</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253554452</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:07:32Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T23:07:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F60</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/04%20Electric%20Guitar%20(Humbucker).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>802</key>
-		<dict>
-			<key>Track ID</key><integer>802</integer>
-			<key>Name</key><string>Top Of The World</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9716759</integer>
-			<key>Total Time</key><integer>340192</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>228</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252037842</integer>
-			<key>Play Date UTC</key><date>2007-01-19T15:50:42Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85F62</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/05%20Top%20Of%20The%20World.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>803</key>
-		<dict>
-			<key>Track ID</key><integer>803</integer>
-			<key>Name</key><string>Slid (Pdfmone)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12984812</integer>
-			<key>Total Time</key><integer>461479</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>225</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249529275</integer>
-			<key>Play Date UTC</key><date>2006-12-21T15:01:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F64</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/06%20Slid%20(Pdfmone).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>804</key>
-		<dict>
-			<key>Track ID</key><integer>804</integer>
-			<key>Name</key><string>Slowmotion</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7673889</integer>
-			<key>Total Time</key><integer>311170</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>197</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250576098</integer>
-			<key>Play Date UTC</key><date>2007-01-02T17:48:18Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-13T22:33:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F66</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/07%20Slowmotion.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>805</key>
-		<dict>
-			<key>Track ID</key><integer>805</integer>
-			<key>Name</key><string>Spacey (Catch 22 Dub)</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9498531</integer>
-			<key>Total Time</key><integer>369110</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>205</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253689100</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:31:40Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85F68</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/08%20Spacey%20(Catch%2022%20Dub).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>806</key>
-		<dict>
-			<key>Track ID</key><integer>806</integer>
-			<key>Name</key><string>Astrosapiens</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10605978</integer>
-			<key>Total Time</key><integer>408241</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>207</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253286428</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:40:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F6A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/09%20Astrosapiens.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>807</key>
-		<dict>
-			<key>Track ID</key><integer>807</integer>
-			<key>Name</key><string>Oh Yeah</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8873154</integer>
-			<key>Total Time</key><integer>346749</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>204</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252504825</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:33:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F6C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/10%20Oh%20Yeah.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>808</key>
-		<dict>
-			<key>Track ID</key><integer>808</integer>
-			<key>Name</key><string>Eko</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8058189</integer>
-			<key>Total Time</key><integer>322429</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-09-15T17:45:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>199</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253519000</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:16:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F6E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/11%20Eko.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>809</key>
-		<dict>
-			<key>Track ID</key><integer>809</integer>
-			<key>Name</key><string>Life Support</string>
-			<key>Artist</key><string>Fluke</string>
-			<key>Album</key><string>Six Wheels On My Wagon</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10290831</integer>
-			<key>Total Time</key><integer>388780</integer>
-			<key>Start Time</key><integer>30000</integer>
-			<key>Stop Time</key><integer>330000</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2006-11-16T15:44:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>211</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253043452</integer>
-			<key>Play Date UTC</key><date>2007-01-31T07:10:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:44:19Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85F70</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fluke/Six%20Wheels%20On%20My%20Wagon/12%20Life%20Support.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>810</key>
-		<dict>
-			<key>Track ID</key><integer>810</integer>
-			<key>Name</key><string>Hold Back</string>
-			<key>Artist</key><string>Force Mass Motion &#38; Dylan Rhymes</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Beaver/Wells</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6692349</integer>
-			<key>Total Time</key><integer>278021</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3249303078</integer>
-			<key>Play Date UTC</key><date>2006-12-19T00:11:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F72</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Force%20Mass%20Motion%20&#38;%20Dylan%20Rhymes/Community%20Service/14%20Hold%20Back.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>811</key>
-		<dict>
-			<key>Track ID</key><integer>811</integer>
-			<key>Name</key><string>The Trial Of The Century</string>
-			<key>Artist</key><string>French Kicks</string>
-			<key>Album</key><string>SXSW 2005 Showcasing Artist</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4068541</integer>
-			<key>Total Time</key><integer>254275</integer>
-			<key>Date Modified</key><date>2005-04-13T22:05:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>SXSW 2005 Showcasing Artist</string>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250613811</integer>
-			<key>Play Date UTC</key><date>2007-01-03T04:16:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F74</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/French%20Kicks/SXSW%202005%20Showcasing%20Artist/The%20Trial%20Of%20The%20Century.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>812</key>
-		<dict>
-			<key>Track ID</key><integer>812</integer>
-			<key>Name</key><string>Up on the Hill</string>
-			<key>Artist</key><string>Fun Lovin' Criminals</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3406370</integer>
-			<key>Total Time</key><integer>212506</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252473497</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:51:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F77</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Fun%20Lovin'%20Criminals/Late%20Lounge%20(1%20of%202)/10%20Up%20on%20the%20Hill.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>813</key>
-		<dict>
-			<key>Track ID</key><integer>813</integer>
-			<key>Name</key><string>Paranoid (The Crystal Method Remix)</string>
-			<key>Artist</key><string>Garbage</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Garbage</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7789492</integer>
-			<key>Total Time</key><integer>323735</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253043776</integer>
-			<key>Play Date UTC</key><date>2007-01-31T07:16:16Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B85F7A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Garbage/Community%20Service/12%20Paranoid%20(The%20Crystal%20Method%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>814</key>
-		<dict>
-			<key>Track ID</key><integer>814</integer>
-			<key>Name</key><string>Milk [the Classic Mix Massive Attack]</string>
-			<key>Artist</key><string>Garbage</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4567043</integer>
-			<key>Total Time</key><integer>285048</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-20T22:52:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85F7C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Garbage/Late%20Lounge%20(2%20of%202)/11%20Milk%20%5Bthe%20Classic%20Mix%20Massive%20Attack%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>815</key>
-		<dict>
-			<key>Track ID</key><integer>815</integer>
-			<key>Name</key><string>Frankenstein</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2668360</integer>
-			<key>Total Time</key><integer>163536</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:04:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252518218</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:16:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F7F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/01%20Frankenstein.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>816</key>
-		<dict>
-			<key>Track ID</key><integer>816</integer>
-			<key>Name</key><string>It Don't Mean Nothin'</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3261677</integer>
-			<key>Total Time</key><integer>200618</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:05:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247720499</integer>
-			<key>Play Date UTC</key><date>2006-11-30T16:34:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F82</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/02%20It%20Don't%20Mean%20Nothin'.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>817</key>
-		<dict>
-			<key>Track ID</key><integer>817</integer>
-			<key>Name</key><string>Electric Karma</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2713686</integer>
-			<key>Total Time</key><integer>166369</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:06:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246080541</integer>
-			<key>Play Date UTC</key><date>2006-11-11T17:02:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F84</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/03%20Electric%20Karma.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>818</key>
-		<dict>
-			<key>Track ID</key><integer>818</integer>
-			<key>Name</key><string>Wake Up Call</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3597530</integer>
-			<key>Total Time</key><integer>221609</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:06:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250579337</integer>
-			<key>Play Date UTC</key><date>2007-01-02T18:42:17Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F86</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/04%20Wake%20Up%20Call.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>819</key>
-		<dict>
-			<key>Track ID</key><integer>819</integer>
-			<key>Name</key><string>Surf Alert</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3134617</integer>
-			<key>Total Time</key><integer>192677</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:07:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253279831</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:50:31Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-26T19:38:05Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85F88</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/05%20Surf%20Alert.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>820</key>
-		<dict>
-			<key>Track ID</key><integer>820</integer>
-			<key>Name</key><string>Last Good Nerve</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4231713</integer>
-			<key>Total Time</key><integer>261246</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:08:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252491225</integer>
-			<key>Play Date UTC</key><date>2007-01-24T21:47:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F8A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/06%20Last%20Good%20Nerve.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>821</key>
-		<dict>
-			<key>Track ID</key><integer>821</integer>
-			<key>Name</key><string>Magic Ride</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2859321</integer>
-			<key>Total Time</key><integer>175471</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:08:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247631886</integer>
-			<key>Play Date UTC</key><date>2006-11-29T15:58:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F8C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/07%20Magic%20Ride.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>822</key>
-		<dict>
-			<key>Track ID</key><integer>822</integer>
-			<key>Name</key><string>Big Step Back</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3544774</integer>
-			<key>Total Time</key><integer>218312</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:09:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253044187</integer>
-			<key>Play Date UTC</key><date>2007-01-31T07:23:07Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-02-08T01:39:09Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85F8E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/08%20Big%20Step%20Back.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>823</key>
-		<dict>
-			<key>Track ID</key><integer>823</integer>
-			<key>Name</key><string>Train Wreck</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3243472</integer>
-			<key>Total Time</key><integer>199481</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:10:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251483525</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:52:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F90</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/09%20Train%20Wreck.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>824</key>
-		<dict>
-			<key>Track ID</key><integer>824</integer>
-			<key>Name</key><string>Devil's On The Phone</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2724088</integer>
-			<key>Total Time</key><integer>167019</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:10:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253545944</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:45:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F92</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/10%20Devil's%20On%20The%20Phone.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>825</key>
-		<dict>
-			<key>Track ID</key><integer>825</integer>
-			<key>Name</key><string>Fillmore Blues</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6435715</integer>
-			<key>Total Time</key><integer>397524</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:11:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252574452</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:54:12Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F94</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/11%20Fillmore%20Blues.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>826</key>
-		<dict>
-			<key>Track ID</key><integer>826</integer>
-			<key>Name</key><string>Low Rider</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4243974</integer>
-			<key>Total Time</key><integer>262012</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:12:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250572892</integer>
-			<key>Play Date UTC</key><date>2007-01-02T16:54:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F96</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/12%20Low%20Rider.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>827</key>
-		<dict>
-			<key>Track ID</key><integer>827</integer>
-			<key>Name</key><string>Linus &#38; Lucy</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3509480</integer>
-			<key>Total Time</key><integer>216106</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:13:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250667637</integer>
-			<key>Play Date UTC</key><date>2007-01-03T19:13:57Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F98</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/13%20Linus%20&#38;%20Lucy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>828</key>
-		<dict>
-			<key>Track ID</key><integer>828</integer>
-			<key>Name</key><string>Drive</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3937470</integer>
-			<key>Total Time</key><integer>242856</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:13:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252472256</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:30:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F9A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/14%20Drive.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>829</key>
-		<dict>
-			<key>Track ID</key><integer>829</integer>
-			<key>Name</key><string>Hocus Pocus</string>
-			<key>Artist</key><string>Gary Hoey</string>
-			<key>Composer</key><string>Gary Hoey</string>
-			<key>Album</key><string>Wake Up Call</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3983538</integer>
-			<key>Total Time</key><integer>245735</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-04-16T03:14:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B85F9C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gary%20Hoey/Wake%20Up%20Call/15%20Hocus%20Pocus.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>830</key>
-		<dict>
-			<key>Track ID</key><integer>830</integer>
-			<key>Name</key><string>Viola</string>
-			<key>Artist</key><string>Girlyman</string>
-			<key>Composer</key><string>Nate Borofsky</string>
-			<key>Album</key><string>Remember Who I Am</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3686097</integer>
-			<key>Total Time</key><integer>230243</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2005-02-23T20:32:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250401994</integer>
-			<key>Play Date UTC</key><date>2006-12-31T17:26:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B85F9E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Girlyman/Remember%20Who%20I%20Am/01%20Viola.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>831</key>
-		<dict>
-			<key>Track ID</key><integer>831</integer>
-			<key>Name</key><string>California</string>
-			<key>Artist</key><string>Glorious</string>
-			<key>Album</key><string>Glorious</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3978640</integer>
-			<key>Total Time</key><integer>248528</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2005-02-23T20:35:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249301841</integer>
-			<key>Play Date UTC</key><date>2006-12-18T23:50:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FA1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Glorious/Glorious/02%20California.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>832</key>
-		<dict>
-			<key>Track ID</key><integer>832</integer>
-			<key>Name</key><string>Intro</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>1473241</integer>
-			<key>Total Time</key><integer>59156</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:49:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252290088</integer>
-			<key>Play Date UTC</key><date>2007-01-22T13:54:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FA4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/01%20Intro.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>833</key>
-		<dict>
-			<key>Track ID</key><integer>833</integer>
-			<key>Name</key><string>Rearrange</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5174196</integer>
-			<key>Total Time</key><integer>213225</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:50:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253371544</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:19:04Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T01:40:42Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FA7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/02%20Rearrange.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>834</key>
-		<dict>
-			<key>Track ID</key><integer>834</integer>
-			<key>Name</key><string>From Your Mouth</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6858265</integer>
-			<key>Total Time</key><integer>283006</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:51:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253112647</integer>
-			<key>Play Date UTC</key><date>2007-02-01T02:24:07Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B85FA9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/03%20From%20Your%20Mouth.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>835</key>
-		<dict>
-			<key>Track ID</key><integer>835</integer>
-			<key>Name</key><string>Can't Come Down</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7402646</integer>
-			<key>Total Time</key><integer>305492</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:52:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253288173</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:09:33Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FAB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/04%20Can't%20Come%20Down.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>836</key>
-		<dict>
-			<key>Track ID</key><integer>836</integer>
-			<key>Name</key><string>Alone Again</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4826276</integer>
-			<key>Total Time</key><integer>198740</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:52:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253596407</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:46:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FAD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/05%20Alone%20Again.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>837</key>
-		<dict>
-			<key>Track ID</key><integer>837</integer>
-			<key>Name</key><string>Behavior Modification</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5706382</integer>
-			<key>Total Time</key><integer>235369</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:53:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253544318</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:18:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FAF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/06%20Behavior%20Modification.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>838</key>
-		<dict>
-			<key>Track ID</key><integer>838</integer>
-			<key>Name</key><string>The Rush Is Loud</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6012751</integer>
-			<key>Total Time</key><integer>248084</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:54:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B85FB1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/07%20The%20Rush%20Is%20Loud.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>839</key>
-		<dict>
-			<key>Track ID</key><integer>839</integer>
-			<key>Name</key><string>Dress Rehearsal For Reproduction</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6445901</integer>
-			<key>Total Time</key><integer>265961</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:55:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246690127</integer>
-			<key>Play Date UTC</key><date>2006-11-18T18:22:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FB3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/08%20Dress%20Rehearsal%20For%20Reproduction.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>840</key>
-		<dict>
-			<key>Track ID</key><integer>840</integer>
-			<key>Name</key><string>Happy</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7588305</integer>
-			<key>Total Time</key><integer>313150</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:56:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252398044</integer>
-			<key>Play Date UTC</key><date>2007-01-23T19:54:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FB5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/09%20Happy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>841</key>
-		<dict>
-			<key>Track ID</key><integer>841</integer>
-			<key>Name</key><string>Vapors</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7032456</integer>
-			<key>Total Time</key><integer>290196</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T15:57:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3250578843</integer>
-			<key>Play Date UTC</key><date>2007-01-02T18:34:03Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-21T18:36:24Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85FB7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/10%20Vapors.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>842</key>
-		<dict>
-			<key>Track ID</key><integer>842</integer>
-			<key>Name</key><string>Medicated To The One I Love</string>
-			<key>Artist</key><string>God Lives Underwater</string>
-			<key>Album</key><string>Life In The So-Called Space Age</string>
-			<key>Genre</key><string>Industrial</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>47094196</integer>
-			<key>Total Time</key><integer>1944532</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-06-14T16:03:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T18:35:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FB9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/God%20Lives%20Underwater/Life%20In%20The%20So-Called%20Space%20Age/11%20Medicated%20To%20The%20One%20I%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>843</key>
-		<dict>
-			<key>Track ID</key><integer>843</integer>
-			<key>Name</key><string>Pilots</string>
-			<key>Artist</key><string>Goldfrapp</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4258171</integer>
-			<key>Total Time</key><integer>265743</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FBB</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Goldfrapp/Late%20Lounge%20(1%20of%202)/03%20Pilots.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>844</key>
-		<dict>
-			<key>Track ID</key><integer>844</integer>
-			<key>Name</key><string>At the River</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6311604</integer>
-			<key>Total Time</key><integer>394083</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253602143</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:22:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FBE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Late%20Lounge%20(2%20of%202)/01%20At%20the%20River.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>845</key>
-		<dict>
-			<key>Track ID</key><integer>845</integer>
-			<key>Name</key><string>Remember</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album Artist</key><string>Groove Armada</string>
-			<key>Composer</key><string>Andy Cato, Sandy Denny &#38; Tom Findlay</string>
-			<key>Album</key><string>Lovebox</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5404981</integer>
-			<key>Total Time</key><integer>330511</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2006-07-27T16:57:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:44Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253514549</integer>
-			<key>Play Date UTC</key><date>2007-02-05T18:02:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FC1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Lovebox/03%20Remember.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>846</key>
-		<dict>
-			<key>Track ID</key><integer>846</integer>
-			<key>Name</key><string>Think Twice</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album Artist</key><string>Groove Armada</string>
-			<key>Composer</key><string>Andy Cato, Cameron McVey, Neneh Cherry &#38; Tom Findlay</string>
-			<key>Album</key><string>Lovebox</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5870886</integer>
-			<key>Total Time</key><integer>359304</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2006-07-27T16:58:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>32</integer>
-			<key>Play Date</key><integer>3253075072</integer>
-			<key>Play Date UTC</key><date>2007-01-31T15:57:52Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FC4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Lovebox/05%20Think%20Twice.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>847</key>
-		<dict>
-			<key>Track ID</key><integer>847</integer>
-			<key>Name</key><string>Hands of Time</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album Artist</key><string>Groove Armada</string>
-			<key>Composer</key><string>Andy Cato, Richie Havens &#38; Tom Findlay</string>
-			<key>Album</key><string>Lovebox</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4301141</integer>
-			<key>Total Time</key><integer>262291</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2006-07-27T16:58:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253606977</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:42:57Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FC6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Lovebox/07%20Hands%20of%20Time.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>848</key>
-		<dict>
-			<key>Track ID</key><integer>848</integer>
-			<key>Name</key><string>Easy</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album Artist</key><string>Groove Armada</string>
-			<key>Composer</key><string>Andy Cato, Cerrone, Don Ray, Sunshine Anderson &#38; Tom Findlay</string>
-			<key>Album</key><string>Lovebox</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5753495</integer>
-			<key>Total Time</key><integer>352036</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2006-07-27T16:59:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252928922</integer>
-			<key>Play Date UTC</key><date>2007-01-29T23:22:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FC8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Lovebox/09%20Easy.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>849</key>
-		<dict>
-			<key>Track ID</key><integer>849</integer>
-			<key>Name</key><string>Lovebox</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album Artist</key><string>Groove Armada</string>
-			<key>Composer</key><string>Andy Cato &#38; Tom Findlay</string>
-			<key>Album</key><string>Lovebox</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5576292</integer>
-			<key>Total Time</key><integer>341099</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2006-07-27T17:00:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253364462</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:21:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FCA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Lovebox/10%20Lovebox.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>850</key>
-		<dict>
-			<key>Track ID</key><integer>850</integer>
-			<key>Name</key><string>But I Feel Good</string>
-			<key>Artist</key><string>Groove Armada</string>
-			<key>Album Artist</key><string>Groove Armada</string>
-			<key>Composer</key><string>Andy Cato, Mike Daniels &#38; Tom Findlay</string>
-			<key>Album</key><string>Lovebox</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5213381</integer>
-			<key>Total Time</key><integer>318669</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2006-07-27T17:00:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253463244</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:47:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FCC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Groove%20Armada/Lovebox/11%20But%20I%20Feel%20Good.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>851</key>
-		<dict>
-			<key>Track ID</key><integer>851</integer>
-			<key>Name</key><string>Warning Shots</string>
-			<key>Artist</key><string>Gunjan, Sleeping Wonder &#38; Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5019218</integer>
-			<key>Total Time</key><integer>302159</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:32:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252515295</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:28:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FCE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Gunjan,%20Sleeping%20Wonder%20&#38;%20Thievery%20Corporation/The%20Cosmic%20Game/02%20Warning%20Shots.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>852</key>
-		<dict>
-			<key>Track ID</key><integer>852</integer>
-			<key>Name</key><string>Simply Depression, My Dear</string>
-			<key>Artist</key><string>Harrison, Stan</string>
-			<key>Album</key><string>The Ties That Blind</string>
-			<key>Genre</key><string>Noir</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12473043</integer>
-			<key>Total Time</key><integer>311771</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Date Modified</key><date>2005-02-23T21:05:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>320</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250590277</integer>
-			<key>Play Date UTC</key><date>2007-01-02T21:44:37Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-02-05T20:28:15Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85FD1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Harrison,%20Stan/The%20Ties%20That%20Blind/05%20Simply%20Depression,%20My%20Dear.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>853</key>
-		<dict>
-			<key>Track ID</key><integer>853</integer>
-			<key>Name</key><string>Battersea</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Alex Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4384742</integer>
-			<key>Total Time</key><integer>231501</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-17T18:05:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>34</integer>
-			<key>Play Date</key><integer>3253680825</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:13:45Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FD4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/01%20Battersea.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>854</key>
-		<dict>
-			<key>Track ID</key><integer>854</integer>
-			<key>Name</key><string>One Way Ride</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3922454</integer>
-			<key>Total Time</key><integer>202383</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-08-10T06:29:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253689551</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:39:11Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-04T22:32:35Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FD7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/02%20One%20Way%20Ride.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>855</key>
-		<dict>
-			<key>Track ID</key><integer>855</integer>
-			<key>Name</key><string>Dictionary</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4096166</integer>
-			<key>Total Time</key><integer>213297</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-26T02:20:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253623937</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:25:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FD9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/03%20Dictionary.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>856</key>
-		<dict>
-			<key>Track ID</key><integer>856</integer>
-			<key>Name</key><string>Club Montepulciano</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4213654</integer>
-			<key>Total Time</key><integer>220727</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-08-09T10:52:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252471446</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:17:26Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T22:56:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FDB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/04%20Club%20Montepulciano.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>857</key>
-		<dict>
-			<key>Track ID</key><integer>857</integer>
-			<key>Name</key><string>Eden</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4109734</integer>
-			<key>Total Time</key><integer>214156</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-20T04:27:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253347202</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:33:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FDD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/05%20Eden.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>858</key>
-		<dict>
-			<key>Track ID</key><integer>858</integer>
-			<key>Name</key><string>Lung</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3319558</integer>
-			<key>Total Time</key><integer>164395</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-26T02:51:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253188770</integer>
-			<key>Play Date UTC</key><date>2007-02-01T23:32:50Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FDF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/06%20Lung.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>859</key>
-		<dict>
-			<key>Track ID</key><integer>859</integer>
-			<key>Name</key><string>Electro Shock Faders</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3663910</integer>
-			<key>Total Time</key><integer>186106</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-18T17:28:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253559076</integer>
-			<key>Play Date UTC</key><date>2007-02-06T06:24:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FE1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/07%20Electro%20Shock%20Faders.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>860</key>
-		<dict>
-			<key>Track ID</key><integer>860</integer>
-			<key>Name</key><string>Out of Tune</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Duchene</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3995366</integer>
-			<key>Total Time</key><integer>206958</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-08-10T08:08:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253513510</integer>
-			<key>Play Date UTC</key><date>2007-02-05T17:45:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FE3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/08%20Out%20of%20Tune.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>861</key>
-		<dict>
-			<key>Track ID</key><integer>861</integer>
-			<key>Name</key><string>This Strange Effect</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Davies</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4446166</integer>
-			<key>Total Time</key><integer>235332</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-08-11T17:55:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253180244</integer>
-			<key>Play Date UTC</key><date>2007-02-01T21:10:44Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FE5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/09%20This%20Strange%20Effect.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>862</key>
-		<dict>
-			<key>Track ID</key><integer>862</integer>
-			<key>Name</key><string>Renaissance Affair</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Alex Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3952502</integer>
-			<key>Total Time</key><integer>204264</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-20T10:16:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246022275</integer>
-			<key>Play Date UTC</key><date>2006-11-11T00:51:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FE7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/10%20Renaissance%20Affair.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>863</key>
-		<dict>
-			<key>Track ID</key><integer>863</integer>
-			<key>Name</key><string>Tuna</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Bartsoen &#38; Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4333862</integer>
-			<key>Total Time</key><integer>228297</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-19T01:45:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253370604</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:03:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FE9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/11%20Tuna.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>864</key>
-		<dict>
-			<key>Track ID</key><integer>864</integer>
-			<key>Name</key><string>Magenta</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5315798</integer>
-			<key>Total Time</key><integer>290131</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-21T11:49:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>12</integer>
-			<key>Play Date</key><integer>3253716175</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:02:55Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FEB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/12%20Magenta.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>865</key>
-		<dict>
-			<key>Track ID</key><integer>865</integer>
-			<key>Name</key><string>Blue Wonder Power Milk</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album Artist</key><string>Hooverphonic</string>
-			<key>Composer</key><string>Callier</string>
-			<key>Album</key><string>Blue Wonder Power Milk</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3718118</integer>
-			<key>Total Time</key><integer>189519</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-07-21T06:11:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252403067</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:17:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B85FED</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/Blue%20Wonder%20Power%20Milk/13%20Blue%20Wonder%20Power%20Milk.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>866</key>
-		<dict>
-			<key>Track ID</key><integer>866</integer>
-			<key>Name</key><string>Autoharp</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6348141</integer>
-			<key>Total Time</key><integer>261972</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:25:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253613669</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:34:29Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FEF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/01%20Autoharp.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>867</key>
-		<dict>
-			<key>Track ID</key><integer>867</integer>
-			<key>Name</key><string>Mad About You</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5421586</integer>
-			<key>Total Time</key><integer>223529</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:26:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>32</integer>
-			<key>Play Date</key><integer>3253681048</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:17:28Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B85FF2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/02%20Mad%20About%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>868</key>
-		<dict>
-			<key>Track ID</key><integer>868</integer>
-			<key>Name</key><string>Waves</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5859543</integer>
-			<key>Total Time</key><integer>241748</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:27:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253257898</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:44:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FF4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/03%20Waves.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>869</key>
-		<dict>
-			<key>Track ID</key><integer>869</integer>
-			<key>Name</key><string>Jacky Cane</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6298807</integer>
-			<key>Total Time</key><integer>260030</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:27:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253345619</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:06:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FF6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/04%20Jacky%20Cane.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>870</key>
-		<dict>
-			<key>Track ID</key><integer>870</integer>
-			<key>Name</key><string>The Magnificent Tree</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5692349</integer>
-			<key>Total Time</key><integer>234921</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:28:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249465366</integer>
-			<key>Play Date UTC</key><date>2006-12-20T21:16:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T20:55:13Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FF8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/05%20The%20Magnificent%20Tree.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>871</key>
-		<dict>
-			<key>Track ID</key><integer>871</integer>
-			<key>Name</key><string>Vinegar And Salt</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4861144</integer>
-			<key>Total Time</key><integer>200212</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:29:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246089601</integer>
-			<key>Play Date UTC</key><date>2006-11-11T19:33:21Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-26T19:38:13Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B85FFA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/06%20Vinegar%20And%20Salt.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>872</key>
-		<dict>
-			<key>Track ID</key><integer>872</integer>
-			<key>Name</key><string>Frosted Flake Wood</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4792255</integer>
-			<key>Total Time</key><integer>197438</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:29:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250708014</integer>
-			<key>Play Date UTC</key><date>2007-01-04T06:26:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FFC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/07%20Frosted%20Flake%20Wood.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>873</key>
-		<dict>
-			<key>Track ID</key><integer>873</integer>
-			<key>Name</key><string>Everytime We Live Together We Die A Bit...</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5226884</integer>
-			<key>Total Time</key><integer>215572</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:30:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252118871</integer>
-			<key>Play Date UTC</key><date>2007-01-20T14:21:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B85FFE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/08%20Everytime%20We%20Live%20Together%20We%20Die%20A%20Bit....m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>874</key>
-		<dict>
-			<key>Track ID</key><integer>874</integer>
-			<key>Name</key><string>Out Of Sight</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5713900</integer>
-			<key>Total Time</key><integer>235710</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:31:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252939843</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:24:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B86000</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/09%20Out%20Of%20Sight.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>875</key>
-		<dict>
-			<key>Track ID</key><integer>875</integer>
-			<key>Name</key><string>Pink Fluffy Dinosaurs</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5597335</integer>
-			<key>Total Time</key><integer>230868</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:31:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253623249</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:14:09Z</date>
-			<key>Persistent ID</key><string>87139F8602B86002</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/10%20Pink%20Fluffy%20Dinosaurs.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>876</key>
-		<dict>
-			<key>Track ID</key><integer>876</integer>
-			<key>Name</key><string>L'Odeur Animale</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5535579</integer>
-			<key>Total Time</key><integer>271977</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:32:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253295177</integer>
-			<key>Play Date UTC</key><date>2007-02-03T05:06:17Z</date>
-			<key>Persistent ID</key><string>87139F8602B86004</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/11%20L'Odeur%20Animale.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>877</key>
-		<dict>
-			<key>Track ID</key><integer>877</integer>
-			<key>Name</key><string>Renaissance Affair</string>
-			<key>Artist</key><string>Hooverphonic</string>
-			<key>Album</key><string>The Magnificent Tree</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4974584</integer>
-			<key>Total Time</key><integer>205310</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T17:33:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>28</integer>
-			<key>Play Date</key><integer>3253709001</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:03:21Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86006</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hooverphonic/The%20Magnificent%20Tree/12%20Renaissance%20Affair.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>878</key>
-		<dict>
-			<key>Track ID</key><integer>878</integer>
-			<key>Name</key><string>Adore</string>
-			<key>Artist</key><string>I: Cube</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6563634</integer>
-			<key>Total Time</key><integer>409835</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252567723</integer>
-			<key>Play Date UTC</key><date>2007-01-25T19:02:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86008</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/I_%20Cube/Late%20Lounge%20(1%20of%202)/13%20Adore.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>879</key>
-		<dict>
-			<key>Track ID</key><integer>879</integer>
-			<key>Name</key><string>No Soul (PMT Remix)</string>
-			<key>Artist</key><string>ILS</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>D. Broadberry/I. Walker</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6210860</integer>
-			<key>Total Time</key><integer>257959</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249206722</integer>
-			<key>Play Date UTC</key><date>2006-12-17T21:25:22Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-30T03:06:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B8600B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/ILS/Community%20Service/01%20No%20Soul%20(PMT%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>880</key>
-		<dict>
-			<key>Track ID</key><integer>880</integer>
-			<key>Name</key><string>Prayer Wheel</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5086440</integer>
-			<key>Total Time</key><integer>419422</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253615843</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:10:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8600D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/01%20Prayer%20Wheel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>881</key>
-		<dict>
-			<key>Track ID</key><integer>881</integer>
-			<key>Name</key><string>Temple Gates</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4815436</integer>
-			<key>Total Time</key><integer>397008</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253537125</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:18:45Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T16:01:33Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86010</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/02%20Temple%20Gates.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>882</key>
-		<dict>
-			<key>Track ID</key><integer>882</integer>
-			<key>Name</key><string>Liquid Sky</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4578286</integer>
-			<key>Total Time</key><integer>377417</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252555415</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:36:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86012</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/03%20Liquid%20Sky.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>883</key>
-		<dict>
-			<key>Track ID</key><integer>883</integer>
-			<key>Name</key><string>Assam</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5105562</integer>
-			<key>Total Time</key><integer>421015</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253545370</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:36:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86014</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/04%20Assam.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>884</key>
-		<dict>
-			<key>Track ID</key><integer>884</integer>
-			<key>Name</key><string>Duskfure</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5588639</integer>
-			<key>Total Time</key><integer>460930</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251308688</integer>
-			<key>Play Date UTC</key><date>2007-01-11T05:18:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86016</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/05%20Duskfure.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>885</key>
-		<dict>
-			<key>Track ID</key><integer>885</integer>
-			<key>Name</key><string>Red Desert</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4015274</integer>
-			<key>Total Time</key><integer>330840</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247820555</integer>
-			<key>Play Date UTC</key><date>2006-12-01T20:22:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86018</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/06%20Red%20Desert.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>886</key>
-		<dict>
-			<key>Track ID</key><integer>886</integer>
-			<key>Name</key><string>Nataraj Express</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4141288</integer>
-			<key>Total Time</key><integer>341342</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253556815</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:46:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8601A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/07%20Nataraj%20Express.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>887</key>
-		<dict>
-			<key>Track ID</key><integer>887</integer>
-			<key>Name</key><string>Temple Gates</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5902589</integer>
-			<key>Total Time</key><integer>486922</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253295983</integer>
-			<key>Play Date UTC</key><date>2007-02-03T05:19:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8601C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/08%20Temple%20Gates.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>888</key>
-		<dict>
-			<key>Track ID</key><integer>888</integer>
-			<key>Name</key><string>The Astrologer's Seat</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7931760</integer>
-			<key>Total Time</key><integer>654654</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247553995</integer>
-			<key>Play Date UTC</key><date>2006-11-28T18:19:55Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-30T18:51:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8601E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/09%20The%20Astrologer's%20Seat.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>889</key>
-		<dict>
-			<key>Track ID</key><integer>889</integer>
-			<key>Name</key><string>Temple Gates</string>
-			<key>Artist</key><string>James Asher</string>
-			<key>Album</key><string>Tigers of the Remix</string>
-			<key>Genre</key><string>New Age</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4024051</integer>
-			<key>Total Time</key><integer>331572</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246515633</integer>
-			<key>Play Date UTC</key><date>2006-11-16T17:53:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86020</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/James%20Asher/Tigers%20of%20the%20Remix/10%20Temple%20Gates.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>890</key>
-		<dict>
-			<key>Track ID</key><integer>890</integer>
-			<key>Name</key><string>It Can't Rain All the Time</string>
-			<key>Artist</key><string>Jane Siberry</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4064008</integer>
-			<key>Total Time</key><integer>335072</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253113231</integer>
-			<key>Play Date UTC</key><date>2007-02-01T02:33:51Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86022</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Jane%20Siberry/The%20Crow/14%20It%20Can't%20Rain%20All%20the%20Time.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>891</key>
-		<dict>
-			<key>Track ID</key><integer>891</integer>
-			<key>Name</key><string>Fly Away</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2813955</integer>
-			<key>Total Time</key><integer>232437</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:25:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Persistent ID</key><string>87139F8602B86025</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/01%20Fly%20Away.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>892</key>
-		<dict>
-			<key>Track ID</key><integer>892</integer>
-			<key>Name</key><string>Dreamin' About the Day</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2887620</integer>
-			<key>Total Time</key><integer>238576</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252546417</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:06:57Z</date>
-			<key>Persistent ID</key><string>87139F8602B86028</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/02%20Dreamin'%20About%20the%20Day.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>893</key>
-		<dict>
-			<key>Track ID</key><integer>893</integer>
-			<key>Name</key><string>His Eyes Are a Blue Million Miles</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2863483</integer>
-			<key>Total Time</key><integer>236564</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Persistent ID</key><string>87139F8602B8602A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/03%20His%20Eyes%20Are%20a%20Blue%20Million%20Miles.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>894</key>
-		<dict>
-			<key>Track ID</key><integer>894</integer>
-			<key>Name</key><string>Fingerprints</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3366622</integer>
-			<key>Total Time</key><integer>278151</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253296347</integer>
-			<key>Play Date UTC</key><date>2007-02-03T05:25:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B8602C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/04%20Fingerprints.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>895</key>
-		<dict>
-			<key>Track ID</key><integer>895</integer>
-			<key>Name</key><string>4 Camels</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2775084</integer>
-			<key>Total Time</key><integer>229198</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249530574</integer>
-			<key>Play Date UTC</key><date>2006-12-21T15:22:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B8602E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/05%204%20Camels.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>896</key>
-		<dict>
-			<key>Track ID</key><integer>896</integer>
-			<key>Name</key><string>What You Gonna Do</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3598443</integer>
-			<key>Total Time</key><integer>297299</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253601748</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:15:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B86030</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/06%20What%20You%20Gonna%20Do.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>897</key>
-		<dict>
-			<key>Track ID</key><integer>897</integer>
-			<key>Name</key><string>Match Burn Twice</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2822105</integer>
-			<key>Total Time</key><integer>233116</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Persistent ID</key><string>87139F8602B86032</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/07%20Match%20Burn%20Twice.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>898</key>
-		<dict>
-			<key>Track ID</key><integer>898</integer>
-			<key>Name</key><string>Billie Listens (To Your Heartbeat)</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3387311</integer>
-			<key>Total Time</key><integer>279875</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252580711</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:38:31Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T19:10:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B86034</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/08%20Billie%20Listens%20(To%20Your%20Heartbeat).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>899</key>
-		<dict>
-			<key>Track ID</key><integer>899</integer>
-			<key>Name</key><string>Wild World</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3542332</integer>
-			<key>Total Time</key><integer>292623</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246772656</integer>
-			<key>Play Date UTC</key><date>2006-11-19T17:17:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B86036</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/09%20Wild%20World.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>900</key>
-		<dict>
-			<key>Track ID</key><integer>900</integer>
-			<key>Name</key><string>Son of a Preacher Man</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4374154</integer>
-			<key>Total Time</key><integer>361430</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253076983</integer>
-			<key>Play Date UTC</key><date>2007-01-31T16:29:43Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86038</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/10%20Son%20of%20a%20Preacher%20Man.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>901</key>
-		<dict>
-			<key>Track ID</key><integer>901</integer>
-			<key>Name</key><string>Get up Jack</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Early Recordings</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3167088</integer>
-			<key>Total Time</key><integer>261694</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253548071</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:21:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B8603A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Early%20Recordings/11%20Get%20up%20Jack.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>902</key>
-		<dict>
-			<key>Track ID</key><integer>902</integer>
-			<key>Name</key><string>St. Teresa</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3876240</integer>
-			<key>Total Time</key><integer>321985</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:45Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251730427</integer>
-			<key>Play Date UTC</key><date>2007-01-16T02:27:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8603C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/01%20St.%20Teresa.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>903</key>
-		<dict>
-			<key>Track ID</key><integer>903</integer>
-			<key>Name</key><string>Man in the Long Black Coat</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3500703</integer>
-			<key>Total Time</key><integer>290690</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252290863</integer>
-			<key>Play Date UTC</key><date>2007-01-22T14:07:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8603F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/02%20Man%20in%20the%20Long%20Black%20Coat.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>904</key>
-		<dict>
-			<key>Track ID</key><integer>904</integer>
-			<key>Name</key><string>Right Hand Man</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3621076</integer>
-			<key>Total Time</key><integer>300721</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252942380</integer>
-			<key>Play Date UTC</key><date>2007-01-30T03:06:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86041</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/03%20Right%20Hand%20Man.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>905</key>
-		<dict>
-			<key>Track ID</key><integer>905</integer>
-			<key>Name</key><string>Pensacola</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3274378</integer>
-			<key>Total Time</key><integer>271830</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253607249</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:47:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86043</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/04%20Pensacola.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>906</key>
-		<dict>
-			<key>Track ID</key><integer>906</integer>
-			<key>Name</key><string>Dracula Moon</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4560230</integer>
-			<key>Total Time</key><integer>378984</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246640216</integer>
-			<key>Play Date UTC</key><date>2006-11-18T04:30:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86045</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/05%20Dracula%20Moon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>907</key>
-		<dict>
-			<key>Track ID</key><integer>907</integer>
-			<key>Name</key><string>Ladder</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3048367</integer>
-			<key>Total Time</key><integer>252995</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252533915</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:38:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86047</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/07%20Ladder.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>908</key>
-		<dict>
-			<key>Track ID</key><integer>908</integer>
-			<key>Name</key><string>Spider Web</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4003822</integer>
-			<key>Total Time</key><integer>332617</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253263493</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:18:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86049</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/08%20Spider%20Web.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>909</key>
-		<dict>
-			<key>Track ID</key><integer>909</integer>
-			<key>Name</key><string>Let's Just Get Naked</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3730790</integer>
-			<key>Total Time</key><integer>309864</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249471758</integer>
-			<key>Play Date UTC</key><date>2006-12-20T23:02:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8604B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/09%20Let's%20Just%20Get%20Naked.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>910</key>
-		<dict>
-			<key>Track ID</key><integer>910</integer>
-			<key>Name</key><string>Help Me</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3801947</integer>
-			<key>Total Time</key><integer>315794</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253077299</integer>
-			<key>Play Date UTC</key><date>2007-01-31T16:34:59Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T20:17:11Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8604D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/10%20Help%20Me.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>911</key>
-		<dict>
-			<key>Track ID</key><integer>911</integer>
-			<key>Name</key><string>Crazy Baby</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4730757</integer>
-			<key>Total Time</key><integer>393195</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253077692</integer>
-			<key>Play Date UTC</key><date>2007-01-31T16:41:32Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8604F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/11%20Crazy%20Baby.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>912</key>
-		<dict>
-			<key>Track ID</key><integer>912</integer>
-			<key>Name</key><string>Lumina</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Relish</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2271590</integer>
-			<key>Total Time</key><integer>188264</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249288991</integer>
-			<key>Play Date UTC</key><date>2006-12-18T20:16:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86051</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Relish/12%20Lumina.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>913</key>
-		<dict>
-			<key>Track ID</key><integer>913</integer>
-			<key>Name</key><string>Running Out of Time</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3437842</integer>
-			<key>Total Time</key><integer>285622</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86053</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/01%20Running%20Out%20of%20Time.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>914</key>
-		<dict>
-			<key>Track ID</key><integer>914</integer>
-			<key>Name</key><string>Righteous Love</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3074218</integer>
-			<key>Total Time</key><integer>255320</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:46Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252412111</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:48:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86056</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/02%20Righteous%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>915</key>
-		<dict>
-			<key>Track ID</key><integer>915</integer>
-			<key>Name</key><string>Safety in Numbers</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3224683</integer>
-			<key>Total Time</key><integer>267859</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253715885</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:58:05Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86058</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/03%20Safety%20in%20Numbers.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>916</key>
-		<dict>
-			<key>Track ID</key><integer>916</integer>
-			<key>Name</key><string>Love Is Alive</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2529408</integer>
-			<key>Total Time</key><integer>209920</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8605A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/04%20Love%20Is%20Alive.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>917</key>
-		<dict>
-			<key>Track ID</key><integer>917</integer>
-			<key>Name</key><string>Angel Face</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2591475</integer>
-			<key>Total Time</key><integer>215092</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252581323</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:48:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8605C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/05%20Angel%20Face.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>918</key>
-		<dict>
-			<key>Track ID</key><integer>918</integer>
-			<key>Name</key><string>Grand Illusion</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2922499</integer>
-			<key>Total Time</key><integer>242677</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249300993</integer>
-			<key>Play Date UTC</key><date>2006-12-18T23:36:33Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:28Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8605E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/06%20Grand%20Illusion.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>919</key>
-		<dict>
-			<key>Track ID</key><integer>919</integer>
-			<key>Name</key><string>If I Was Your Man</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3584232</integer>
-			<key>Total Time</key><integer>297822</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252528289</integer>
-			<key>Play Date UTC</key><date>2007-01-25T08:04:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86060</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/07%20If%20I%20Was%20Your%20Man.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>920</key>
-		<dict>
-			<key>Track ID</key><integer>920</integer>
-			<key>Name</key><string>Baby Love</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3093026</integer>
-			<key>Total Time</key><integer>256888</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250571541</integer>
-			<key>Play Date UTC</key><date>2007-01-02T16:32:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86062</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/08%20Baby%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>921</key>
-		<dict>
-			<key>Track ID</key><integer>921</integer>
-			<key>Name</key><string>Hurricane</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3096474</integer>
-			<key>Total Time</key><integer>257175</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86064</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/09%20Hurricane.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>922</key>
-		<dict>
-			<key>Track ID</key><integer>922</integer>
-			<key>Name</key><string>Poison Apples (Hallelujah)</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3130329</integer>
-			<key>Total Time</key><integer>259996</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252524452</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:00:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86066</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/10%20Poison%20Apples%20(Hallelujah).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>923</key>
-		<dict>
-			<key>Track ID</key><integer>923</integer>
-			<key>Name</key><string>Make You Feel My Love</string>
-			<key>Artist</key><string>Joan Osborne</string>
-			<key>Album</key><string>Righteous Love</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2914348</integer>
-			<key>Total Time</key><integer>241998</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253078202</integer>
-			<key>Play Date UTC</key><date>2007-01-31T16:50:02Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86068</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Joan%20Osborne/Righteous%20Love/11%20Make%20You%20Feel%20My%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>924</key>
-		<dict>
-			<key>Track ID</key><integer>924</integer>
-			<key>Name</key><string>Youthful</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>10605973</integer>
-			<key>Total Time</key><integer>630954</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:07:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252570061</integer>
-			<key>Play Date UTC</key><date>2007-01-25T19:41:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8606A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/01%20Youthful.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>925</key>
-		<dict>
-			<key>Track ID</key><integer>925</integer>
-			<key>Name</key><string>Mushroom</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6894869</integer>
-			<key>Total Time</key><integer>403096</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:07:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253517434</integer>
-			<key>Play Date UTC</key><date>2007-02-05T18:50:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8606D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/02%20Mushroom.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>926</key>
-		<dict>
-			<key>Track ID</key><integer>926</integer>
-			<key>Name</key><string>Such a Tease</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6071465</integer>
-			<key>Total Time</key><integer>352059</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:08:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249314356</integer>
-			<key>Play Date UTC</key><date>2006-12-19T03:19:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8606F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/03%20Such%20a%20Tease.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>927</key>
-		<dict>
-			<key>Track ID</key><integer>927</integer>
-			<key>Name</key><string>Today</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6797650</integer>
-			<key>Total Time</key><integer>397338</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:08:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253710735</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:32:15Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86071</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/04%20Today.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>928</key>
-		<dict>
-			<key>Track ID</key><integer>928</integer>
-			<key>Name</key><string>Drift Away</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5136551</integer>
-			<key>Total Time</key><integer>294590</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:08:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250706728</integer>
-			<key>Play Date UTC</key><date>2007-01-04T06:05:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86073</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/05%20Drift%20Away.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>929</key>
-		<dict>
-			<key>Track ID</key><integer>929</integer>
-			<key>Name</key><string>I've Got a Xerox to Copy</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6104693</integer>
-			<key>Total Time</key><integer>354149</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:09:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253275488</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:38:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86075</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/06%20I've%20Got%20a%20Xerox%20to%20Copy.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>930</key>
-		<dict>
-			<key>Track ID</key><integer>930</integer>
-			<key>Name</key><string>Even In This Moment</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2185264</integer>
-			<key>Total Time</key><integer>113033</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:09:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252937305</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:41:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86077</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/07%20Even%20In%20This%20Moment.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>931</key>
-		<dict>
-			<key>Track ID</key><integer>931</integer>
-			<key>Name</key><string>Yesterdays</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4156135</integer>
-			<key>Total Time</key><integer>234218</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:09:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250619664</integer>
-			<key>Play Date UTC</key><date>2007-01-03T05:54:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86079</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/08%20Yesterdays.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>932</key>
-		<dict>
-			<key>Track ID</key><integer>932</integer>
-			<key>Name</key><string>Honey</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4116098</integer>
-			<key>Total Time</key><integer>231826</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:09:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253680593</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:09:53Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-23T04:58:57Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8607B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/09%20Honey.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>933</key>
-		<dict>
-			<key>Track ID</key><integer>933</integer>
-			<key>Name</key><string>We Become One</string>
-			<key>Artist</key><string>Junkie XL</string>
-			<key>Album Artist</key><string>Junkie XL</string>
-			<key>Album</key><string>Today</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4972250</integer>
-			<key>Total Time</key><integer>286370</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-09-05T04:10:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253514931</integer>
-			<key>Play Date UTC</key><date>2007-02-05T18:08:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8607D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Junkie%20XL/Today/10%20We%20Become%20One.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>934</key>
-		<dict>
-			<key>Track ID</key><integer>934</integer>
-			<key>Name</key><string>Jardin De Cecile</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6863075</integer>
-			<key>Total Time</key><integer>423460</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:21:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253594097</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:08:17Z</date>
-			<key>Persistent ID</key><string>87139F8602B8607F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/01%20Jardin%20De%20Cecile.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>935</key>
-		<dict>
-			<key>Track ID</key><integer>935</integer>
-			<key>Name</key><string>Conga Fury</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7891435</integer>
-			<key>Total Time</key><integer>486944</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:21:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3251479217</integer>
-			<key>Play Date UTC</key><date>2007-01-13T04:40:17Z</date>
-			<key>Persistent ID</key><string>87139F8602B86082</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/02%20Conga%20Fury.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>936</key>
-		<dict>
-			<key>Track ID</key><integer>936</integer>
-			<key>Name</key><string>God Is God</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6596704</integer>
-			<key>Total Time</key><integer>406974</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:22:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253620084</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:21:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B86084</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/03%20God%20Is%20God.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>937</key>
-		<dict>
-			<key>Track ID</key><integer>937</integer>
-			<key>Name</key><string>Komit</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7986618</integer>
-			<key>Total Time</key><integer>492818</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:23:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3252466667</integer>
-			<key>Play Date UTC</key><date>2007-01-24T14:57:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B86086</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/04%20Komit.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>938</key>
-		<dict>
-			<key>Track ID</key><integer>938</integer>
-			<key>Name</key><string>Swamp Thing</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5065037</integer>
-			<key>Total Time</key><integer>312469</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:23:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252386156</integer>
-			<key>Play Date UTC</key><date>2007-01-23T16:35:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B86088</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/05%20Swamp%20Thing.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>939</key>
-		<dict>
-			<key>Track ID</key><integer>939</integer>
-			<key>Name</key><string>Kaguya Hime</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6513949</integer>
-			<key>Total Time</key><integer>401843</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:24:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253508071</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:14:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B8608A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/06%20Kaguya%20Hime.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>940</key>
-		<dict>
-			<key>Track ID</key><integer>940</integer>
-			<key>Name</key><string>Children Of The Night</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7738117</integer>
-			<key>Total Time</key><integer>477470</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:25:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253360767</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:19:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B8608C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/07%20Children%20Of%20The%20Night.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>941</key>
-		<dict>
-			<key>Track ID</key><integer>941</integer>
-			<key>Name</key><string>Shark</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9326906</integer>
-			<key>Total Time</key><integer>577478</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:25:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249495458</integer>
-			<key>Play Date UTC</key><date>2006-12-21T05:37:38Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B8608E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/08%20Shark.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>942</key>
-		<dict>
-			<key>Track ID</key><integer>942</integer>
-			<key>Name</key><string>High Energy Protons (Orion Mix)</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Composer</key><string>Juno Reactor</string>
-			<key>Album</key><string>Bible Of Dreams</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6295532</integer>
-			<key>Total Time</key><integer>388677</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2006-07-08T19:26:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252501147</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:32:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B86090</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Bible%20Of%20Dreams/09%20High%20Energy%20Protons%20(Orion%20Mix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>943</key>
-		<dict>
-			<key>Track ID</key><integer>943</integer>
-			<key>Name</key><string>Conquistador I</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6085586</integer>
-			<key>Total Time</key><integer>362972</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:16:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253514040</integer>
-			<key>Play Date UTC</key><date>2007-02-05T17:54:00Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86092</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/01%20Conquistador%20I.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>944</key>
-		<dict>
-			<key>Track ID</key><integer>944</integer>
-			<key>Name</key><string>Conquistador II</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5177811</integer>
-			<key>Total Time</key><integer>305991</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:17:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-09T20:53:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86095</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/02%20Conquistador%20II.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>945</key>
-		<dict>
-			<key>Track ID</key><integer>945</integer>
-			<key>Name</key><string>Giant</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4135049</integer>
-			<key>Total Time</key><integer>240557</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:17:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253364703</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:25:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86097</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/03%20Giant.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>946</key>
-		<dict>
-			<key>Track ID</key><integer>946</integer>
-			<key>Name</key><string>Wardogs</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5086347</integer>
-			<key>Total Time</key><integer>300255</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:17:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251301977</integer>
-			<key>Play Date UTC</key><date>2007-01-11T03:26:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86099</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/04%20Wardogs.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>947</key>
-		<dict>
-			<key>Track ID</key><integer>947</integer>
-			<key>Name</key><string>Mona Lisa Overdrive</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4849671</integer>
-			<key>Total Time</key><integer>285395</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:17:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>31</integer>
-			<key>Play Date</key><integer>3253677033</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:10:33Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-13T21:44:43Z</date>
-			<key>Rating</key><integer>100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8609B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/05%20Mona%20Lisa%20Overdrive.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>948</key>
-		<dict>
-			<key>Track ID</key><integer>948</integer>
-			<key>Name</key><string>Zwara</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6596009</integer>
-			<key>Total Time</key><integer>394993</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:17:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253449059</integer>
-			<key>Play Date UTC</key><date>2007-02-04T23:50:59Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8609D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/06%20Zwara.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>949</key>
-		<dict>
-			<key>Track ID</key><integer>949</integer>
-			<key>Name</key><string>Mutant Message</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6205298</integer>
-			<key>Total Time</key><integer>370496</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:17:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253342866</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:21:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8609F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/07%20Mutant%20Message.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>950</key>
-		<dict>
-			<key>Track ID</key><integer>950</integer>
-			<key>Name</key><string>Angels and Men</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7115330</integer>
-			<key>Total Time</key><integer>427594</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:18:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251890484</integer>
-			<key>Play Date UTC</key><date>2007-01-17T22:54:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860A1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/08%20Angels%20and%20Men.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>951</key>
-		<dict>
-			<key>Track ID</key><integer>951</integer>
-			<key>Name</key><string>Navras</string>
-			<key>Artist</key><string>Juno Reactor</string>
-			<key>Album Artist</key><string>Juno Reactor</string>
-			<key>Album</key><string>Labyrinth</string>
-			<key>Genre</key><string>Dance</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>9003354</integer>
-			<key>Total Time</key><integer>546085</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-02-25T17:18:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252577464</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:44:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860A3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Juno%20Reactor/Labyrinth/09%20Navras.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>952</key>
-		<dict>
-			<key>Track ID</key><integer>952</integer>
-			<key>Name</key><string>Not Just Anybody [At Jazz Remix]</string>
-			<key>Artist</key><string>Kate Rogers / Rae &#38; Christian</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5857701</integer>
-			<key>Total Time</key><integer>365714</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252543043</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:10:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860A5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Kate%20Rogers%20_%20Rae%20&#38;%20Christian/Late%20Lounge%20(1%20of%202)/05%20Not%20Just%20Anybody%20%5BAt%20Jazz%20Remix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>953</key>
-		<dict>
-			<key>Track ID</key><integer>953</integer>
-			<key>Name</key><string>Kalifornia</string>
-			<key>Artist</key><string>Kevin Beber &#38; The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>CSII Exclusives - EP</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5877997</integer>
-			<key>Total Time</key><integer>339404</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2005-10-12T22:55:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3252553767</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:09:27Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-20T22:19:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Kevin%20Beber%20&#38;%20The%20Crystal%20Method/CSII%20Exclusives%20-%20EP/03%20Kalifornia.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>954</key>
-		<dict>
-			<key>Track ID</key><integer>954</integer>
-			<key>Name</key><string>Skyscraper</string>
-			<key>Artist</key><string>Kinobe</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4902246</integer>
-			<key>Total Time</key><integer>305998</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249538130</integer>
-			<key>Play Date UTC</key><date>2006-12-21T17:28:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860AB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Kinobe/Late%20Lounge%20(1%20of%202)/08%20Skyscraper.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>955</key>
-		<dict>
-			<key>Track ID</key><integer>955</integer>
-			<key>Name</key><string>Morpheus (Meat Katie &#38; Dylan Rhymes Mix)</string>
-			<key>Artist</key><string>Koma &#38; Bones</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Andy Duckmanton/Chris Kirkbride/Sebastian Jude 'Proteus"</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5345058</integer>
-			<key>Total Time</key><integer>221884</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253266119</integer>
-			<key>Play Date UTC</key><date>2007-02-02T21:01:59Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T03:00:12Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B860AE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Koma%20&#38;%20Bones/Community%20Service/04%20Morpheus%20(Meat%20Katie%20&#38;%20Dylan%20Rhymes%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>956</key>
-		<dict>
-			<key>Track ID</key><integer>956</integer>
-			<key>Name</key><string>Darkness</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5325426</integer>
-			<key>Total Time</key><integer>300325</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-26T19:38:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252496627</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:17:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860B0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/01%20Darkness.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>957</key>
-		<dict>
-			<key>Track ID</key><integer>957</integer>
-			<key>Name</key><string>Stronger</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3629474</integer>
-			<key>Total Time</key><integer>195510</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-27T07:15:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253681244</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:20:44Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860B3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/02%20Stronger.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>958</key>
-		<dict>
-			<key>Track ID</key><integer>958</integer>
-			<key>Name</key><string>Sugar 5</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4295602</integer>
-			<key>Total Time</key><integer>236679</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-23T16:53:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253592568</integer>
-			<key>Play Date UTC</key><date>2007-02-06T15:42:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860B5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/03%20Sugar%205.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>959</key>
-		<dict>
-			<key>Track ID</key><integer>959</integer>
-			<key>Name</key><string>Angelica</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4039090</integer>
-			<key>Total Time</key><integer>220797</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-10T20:43:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247113974</integer>
-			<key>Play Date UTC</key><date>2006-11-23T16:06:14Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860B7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/04%20Angelica.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>960</key>
-		<dict>
-			<key>Track ID</key><integer>960</integer>
-			<key>Name</key><string>Till the Clouds Clear</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4866706</integer>
-			<key>Total Time</key><integer>271973</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-30T15:12:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253079583</integer>
-			<key>Play Date UTC</key><date>2007-01-31T17:13:03Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860B9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/05%20Till%20the%20Clouds%20Clear.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>961</key>
-		<dict>
-			<key>Track ID</key><integer>961</integer>
-			<key>Name</key><string>Wonder</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5657186</integer>
-			<key>Total Time</key><integer>320828</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-28T19:14:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:47Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253510648</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:57:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860BB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/06%20Wonder.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>962</key>
-		<dict>
-			<key>Track ID</key><integer>962</integer>
-			<key>Name</key><string>Sun</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3420194</integer>
-			<key>Total Time</key><integer>182577</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-28T17:18:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253341066</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:51:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860BD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/07%20Sun.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>963</key>
-		<dict>
-			<key>Track ID</key><integer>963</integer>
-			<key>Name</key><string>Learn</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2622194</integer>
-			<key>Total Time</key><integer>133257</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-27T00:47:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252939607</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:20:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860BF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/08%20Learn.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>964</key>
-		<dict>
-			<key>Track ID</key><integer>964</integer>
-			<key>Name</key><string>Please</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4897490</integer>
-			<key>Total Time</key><integer>273877</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-19T03:10:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252116651</integer>
-			<key>Play Date UTC</key><date>2007-01-20T13:44:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860C1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/09%20Please.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>965</key>
-		<dict>
-			<key>Track ID</key><integer>965</integer>
-			<key>Name</key><string>Open Up</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5178146</integer>
-			<key>Total Time</key><integer>291223</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-29T19:36:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253348027</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:47:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860C3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/10%20Open%20Up.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>966</key>
-		<dict>
-			<key>Track ID</key><integer>966</integer>
-			<key>Name</key><string>Hearts and Flowers</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Between Darkness and Wonder</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5694002</integer>
-			<key>Total Time</key><integer>323104</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-21T14:38:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252553100</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:58:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860C5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Between%20Darkness%20and%20Wonder/11%20Hearts%20and%20Flowers.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>967</key>
-		<dict>
-			<key>Track ID</key><integer>967</integer>
-			<key>Name</key><string>Gabriel (Radio Edit)</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Original Television Soundtrack</string>
-			<key>Composer</key><string>A. Barlow/L. Rhodes</string>
-			<key>Album</key><string>CSI: Miami</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5881312</integer>
-			<key>Total Time</key><integer>252917</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>185</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253113484</integer>
-			<key>Play Date UTC</key><date>2007-02-01T02:38:04Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B860C7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/CSI_%20Miami/03%20Gabriel%20(Radio%20Edit).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>968</key>
-		<dict>
-			<key>Track ID</key><integer>968</integer>
-			<key>Name</key><string>Soft Mistake</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6296649</integer>
-			<key>Total Time</key><integer>196284</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253259472</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:11:12Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860CA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/01%20Soft%20Mistake.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>969</key>
-		<dict>
-			<key>Track ID</key><integer>969</integer>
-			<key>Name</key><string>Little Things</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6380984</integer>
-			<key>Total Time</key><integer>198896</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253526209</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:16:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860CD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/02%20Little%20Things.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>970</key>
-		<dict>
-			<key>Track ID</key><integer>970</integer>
-			<key>Name</key><string>B Line</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5348093</integer>
-			<key>Total Time</key><integer>166635</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253516255</integer>
-			<key>Play Date UTC</key><date>2007-02-05T18:30:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860CF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/03%20B%20Line.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>971</key>
-		<dict>
-			<key>Track ID</key><integer>971</integer>
-			<key>Name</key><string>(untitled hidden track)</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>237905</integer>
-			<key>Total Time</key><integer>6948</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250575787</integer>
-			<key>Play Date UTC</key><date>2007-01-02T17:43:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/04%20(untitled%20hidden%20track).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>972</key>
-		<dict>
-			<key>Track ID</key><integer>972</integer>
-			<key>Name</key><string>All In Your Hands</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8938604</integer>
-			<key>Total Time</key><integer>278831</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:51:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250621978</integer>
-			<key>Play Date UTC</key><date>2007-01-03T06:32:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/05%20All%20In%20Your%20Hands.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>973</key>
-		<dict>
-			<key>Track ID</key><integer>973</integer>
-			<key>Name</key><string>Less Than Two</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2582583</integer>
-			<key>Total Time</key><integer>80195</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:51:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252529974</integer>
-			<key>Play Date UTC</key><date>2007-01-25T08:32:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/06%20Less%20Than%20Two.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>974</key>
-		<dict>
-			<key>Track ID</key><integer>974</integer>
-			<key>Name</key><string>Bonfire</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8434257</integer>
-			<key>Total Time</key><integer>263079</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:51:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253682380</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:39:40Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-18T23:17:38Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/07%20Bonfire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>975</key>
-		<dict>
-			<key>Track ID</key><integer>975</integer>
-			<key>Name</key><string>Ear Parcel</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear Of Fours</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7604361</integer>
-			<key>Total Time</key><integer>474279</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860D9</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20Of%20Fours/08%20Ear%20Parcel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>976</key>
-		<dict>
-			<key>Track ID</key><integer>976</integer>
-			<key>Name</key><string>Softly</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear of Fours</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4381500</integer>
-			<key>Total Time</key><integer>237051</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-08-18T22:51:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251353507</integer>
-			<key>Play Date UTC</key><date>2007-01-11T17:45:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860DB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20of%20Fours/09%20Softly.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>977</key>
-		<dict>
-			<key>Track ID</key><integer>977</integer>
-			<key>Name</key><string>Here</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear of Fours</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3838220</integer>
-			<key>Total Time</key><integer>203475</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-08-15T19:08:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250701711</integer>
-			<key>Play Date UTC</key><date>2007-01-04T04:41:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860DD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20of%20Fours/10%20Here.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>978</key>
-		<dict>
-			<key>Track ID</key><integer>978</integer>
-			<key>Name</key><string>Fly</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear of Fours</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5619452</integer>
-			<key>Total Time</key><integer>313560</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-17T18:54:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250740325</integer>
-			<key>Play Date UTC</key><date>2007-01-04T15:25:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860DF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20of%20Fours/11%20Fly.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>979</key>
-		<dict>
-			<key>Track ID</key><integer>979</integer>
-			<key>Name</key><string>Alien</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear of Fours</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4539020</integer>
-			<key>Total Time</key><integer>246733</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-08-15T17:00:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253428713</integer>
-			<key>Play Date UTC</key><date>2007-02-04T18:11:53Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-30T21:21:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860E1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20of%20Fours/12%20Alien.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>980</key>
-		<dict>
-			<key>Track ID</key><integer>980</integer>
-			<key>Name</key><string>Five</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear of Fours</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6192044</integer>
-			<key>Total Time</key><integer>348948</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-21T12:44:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246877775</integer>
-			<key>Play Date UTC</key><date>2006-11-20T22:29:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860E3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20of%20Fours/13%20Five.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>981</key>
-		<dict>
-			<key>Track ID</key><integer>981</integer>
-			<key>Name</key><string>Lullaby</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album Artist</key><string>Lamb</string>
-			<key>Album</key><string>Fear of Fours</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3444476</integer>
-			<key>Total Time</key><integer>179140</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-07-27T10:14:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249321496</integer>
-			<key>Play Date UTC</key><date>2006-12-19T05:18:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860E5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/Fear%20of%20Fours/14%20Lullaby.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>982</key>
-		<dict>
-			<key>Track ID</key><integer>982</integer>
-			<key>Name</key><string>What Sound</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5403756</integer>
-			<key>Total Time</key><integer>224940</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253266961</integer>
-			<key>Play Date UTC</key><date>2007-02-02T21:16:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860E7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/01%20What%20Sound.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>983</key>
-		<dict>
-			<key>Track ID</key><integer>983</integer>
-			<key>Name</key><string>This Could Be</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7329715</integer>
-			<key>Total Time</key><integer>305188</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253685377</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:29:37Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860EA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/02%20This%20Could%20Be.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>984</key>
-		<dict>
-			<key>Track ID</key><integer>984</integer>
-			<key>Name</key><string>Gabriel</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6315322</integer>
-			<key>Total Time</key><integer>262922</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253458386</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:26:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860EC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/03%20Gabriel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>985</key>
-		<dict>
-			<key>Track ID</key><integer>985</integer>
-			<key>Name</key><string>Written</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5331655</integer>
-			<key>Total Time</key><integer>221936</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253532978</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:09:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860EE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/04%20Written.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>986</key>
-		<dict>
-			<key>Track ID</key><integer>986</integer>
-			<key>Name</key><string>Sweet</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5728506</integer>
-			<key>Total Time</key><integer>238471</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253454820</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:27:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860F0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/05%20Sweet.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>987</key>
-		<dict>
-			<key>Track ID</key><integer>987</integer>
-			<key>Name</key><string>One</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6207485</integer>
-			<key>Total Time</key><integer>258429</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252394741</integer>
-			<key>Play Date UTC</key><date>2007-01-23T18:59:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860F2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/06%20One.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>988</key>
-		<dict>
-			<key>Track ID</key><integer>988</integer>
-			<key>Name</key><string>Random</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5981163</integer>
-			<key>Total Time</key><integer>248999</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247037717</integer>
-			<key>Play Date UTC</key><date>2006-11-22T18:55:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860F4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/07%20Random.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>989</key>
-		<dict>
-			<key>Track ID</key><integer>989</integer>
-			<key>Name</key><string>Just Is</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6087115</integer>
-			<key>Total Time</key><integer>253413</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252523726</integer>
-			<key>Play Date UTC</key><date>2007-01-25T06:48:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B860F6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/08%20Just%20Is.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>990</key>
-		<dict>
-			<key>Track ID</key><integer>990</integer>
-			<key>Name</key><string>Scratch Bass</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6993340</integer>
-			<key>Total Time</key><integer>290977</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251861578</integer>
-			<key>Play Date UTC</key><date>2007-01-17T14:52:58Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B860F8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/09%20Scratch%20Bass.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>991</key>
-		<dict>
-			<key>Track ID</key><integer>991</integer>
-			<key>Name</key><string>Sweetheart</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6059202</integer>
-			<key>Total Time</key><integer>252055</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252570313</integer>
-			<key>Play Date UTC</key><date>2007-01-25T19:45:13Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B860FA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/10%20Sweetheart.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>992</key>
-		<dict>
-			<key>Track ID</key><integer>992</integer>
-			<key>Name</key><string>Small</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7743154</integer>
-			<key>Total Time</key><integer>322220</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252407181</integer>
-			<key>Play Date UTC</key><date>2007-01-23T22:26:21Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B860FC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/11%20Small.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>993</key>
-		<dict>
-			<key>Track ID</key><integer>993</integer>
-			<key>Name</key><string>I Cry</string>
-			<key>Artist</key><string>Lamb</string>
-			<key>Album</key><string>What Sound</string>
-			<key>Genre</key><string>Downtempo</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7777009</integer>
-			<key>Total Time</key><integer>323631</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246379338</integer>
-			<key>Play Date UTC</key><date>2006-11-15T04:02:18Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B860FE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lamb/What%20Sound/12%20I%20Cry.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>994</key>
-		<dict>
-			<key>Track ID</key><integer>994</integer>
-			<key>Name</key><string>Up With People [Zero 7 Remix]</string>
-			<key>Artist</key><string>Lambchop</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5288858</integer>
-			<key>Total Time</key><integer>330161</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253525513</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:05:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86100</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lambchop/Late%20Lounge%20(1%20of%202)/01%20Up%20With%20People%20%5BZero%207%20Remix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>995</key>
-		<dict>
-			<key>Track ID</key><integer>995</integer>
-			<key>Name</key><string>Release the Pressure</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>E. Daley, N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7869320</integer>
-			<key>Total Time</key><integer>461379</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:07:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253772836</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:47:16Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86103</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/01%20Release%20the%20Pressure.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>996</key>
-		<dict>
-			<key>Track ID</key><integer>996</integer>
-			<key>Name</key><string>Afro-Left</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes, N. Cole &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7743128</integer>
-			<key>Total Time</key><integer>453437</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:07:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253505623</integer>
-			<key>Play Date UTC</key><date>2007-02-05T15:33:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86106</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/02%20Afro-Left.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>997</key>
-		<dict>
-			<key>Track ID</key><integer>997</integer>
-			<key>Name</key><string>Melt</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5526935</integer>
-			<key>Total Time</key><integer>313839</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:07:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253528030</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:47:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86108</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/03%20Melt.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>998</key>
-		<dict>
-			<key>Track ID</key><integer>998</integer>
-			<key>Name</key><string>Song of Life</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes, P. Daley &#38; Y. Rupkina</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7238072</integer>
-			<key>Total Time</key><integer>421626</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:08:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3251639811</integer>
-			<key>Play Date UTC</key><date>2007-01-15T01:16:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8610A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/04%20Song%20of%20Life.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>999</key>
-		<dict>
-			<key>Track ID</key><integer>999</integer>
-			<key>Name</key><string>Original</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes, P. Daley &#38; T. Halliday</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6619304</integer>
-			<key>Total Time</key><integer>382663</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:08:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253521728</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:02:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8610C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/05%20Original.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1000</key>
-		<dict>
-			<key>Track ID</key><integer>1000</integer>
-			<key>Name</key><string>Black Flute</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4135751</integer>
-			<key>Total Time</key><integer>226230</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:08:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252543751</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:22:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8610E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/06%20Black%20Flute.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1001</key>
-		<dict>
-			<key>Track ID</key><integer>1001</integer>
-			<key>Name</key><string>Space Shanty</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7436071</integer>
-			<key>Total Time</key><integer>434095</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:08:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253553473</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:51:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86110</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/07%20Space%20Shanty.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1002</key>
-		<dict>
-			<key>Track ID</key><integer>1002</integer>
-			<key>Name</key><string>Inspection (Check One)</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>D. Clarke, N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6750968</integer>
-			<key>Total Time</key><integer>390929</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:09:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252417405</integer>
-			<key>Play Date UTC</key><date>2007-01-24T01:16:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86112</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/08%20Inspection%20(Check%20One).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1003</key>
-		<dict>
-			<key>Track ID</key><integer>1003</integer>
-			<key>Name</key><string>Storm 3000</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6002407</integer>
-			<key>Total Time</key><integer>343793</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:09:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252504186</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:23:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86114</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/09%20Storm%203000.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1004</key>
-		<dict>
-			<key>Track ID</key><integer>1004</integer>
-			<key>Name</key><string>Open Up</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>J. Lydon, N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7088472</integer>
-			<key>Total Time</key><integer>412199</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:09:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253461677</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:21:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86116</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/10%20Open%20Up.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1005</key>
-		<dict>
-			<key>Track ID</key><integer>1005</integer>
-			<key>Name</key><string>21st Century Poem</string>
-			<key>Artist</key><string>Leftfield</string>
-			<key>Album Artist</key><string>Leftfield</string>
-			<key>Composer</key><string>N. Barnes &#38; P. Daley</string>
-			<key>Album</key><string>Leftism</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6003271</integer>
-			<key>Total Time</key><integer>343862</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2006-02-25T17:09:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250613557</integer>
-			<key>Play Date UTC</key><date>2007-01-03T04:12:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86118</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Leftfield/Leftism/11%2021st%20Century%20Poem.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1006</key>
-		<dict>
-			<key>Track ID</key><integer>1006</integer>
-			<key>Name</key><string>Live</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz &#38; Craig Ross</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>41485037</integer>
-			<key>Total Time</key><integer>310466</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-10-05T14:40:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>1068</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252523472</integer>
-			<key>Play Date UTC</key><date>2007-01-25T06:44:32Z</date>
-			<key>Persistent ID</key><string>87139F8602B8611A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/01%20Live.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1007</key>
-		<dict>
-			<key>Track ID</key><integer>1007</integer>
-			<key>Name</key><string>Supersoulfighter</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>35639294</integer>
-			<key>Total Time</key><integer>298733</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-09-26T12:16:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>953</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253458123</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:22:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B8611D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/02%20Supersoulfighter.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1008</key>
-		<dict>
-			<key>Track ID</key><integer>1008</integer>
-			<key>Name</key><string>I Belong To You</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29428495</integer>
-			<key>Total Time</key><integer>257693</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-22T05:01:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>912</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252548784</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:46:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B8611F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/03%20I%20Belong%20To%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1009</key>
-		<dict>
-			<key>Track ID</key><integer>1009</integer>
-			<key>Name</key><string>Black Velveteen</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34936318</integer>
-			<key>Total Time</key><integer>288733</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-10-02T17:57:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>967</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252492259</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:04:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B86121</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/04%20Black%20Velveteen.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1010</key>
-		<dict>
-			<key>Track ID</key><integer>1010</integer>
-			<key>Name</key><string>If You Can't Say No</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34689770</integer>
-			<key>Total Time</key><integer>317040</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-10-18T20:04:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>874</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247638977</integer>
-			<key>Play Date UTC</key><date>2006-11-29T17:56:17Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T19:04:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B86123</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/05%20If%20You%20Can't%20Say%20No.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1011</key>
-		<dict>
-			<key>Track ID</key><integer>1011</integer>
-			<key>Name</key><string>Thinking Of You</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz/Lysa Trenier</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>45316261</integer>
-			<key>Total Time</key><integer>384160</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-09-28T17:10:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>943</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252575528</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:12:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B86125</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/06%20Thinking%20Of%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1012</key>
-		<dict>
-			<key>Track ID</key><integer>1012</integer>
-			<key>Name</key><string>Take Time</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29904505</integer>
-			<key>Total Time</key><integer>271866</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-10-01T13:21:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:48Z</date>
-			<key>Bit Rate</key><integer>879</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250579115</integer>
-			<key>Play Date UTC</key><date>2007-01-02T18:38:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B86127</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/07%20Take%20Time.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1013</key>
-		<dict>
-			<key>Track ID</key><integer>1013</integer>
-			<key>Name</key><string>Fly Away</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26903600</integer>
-			<key>Total Time</key><integer>221373</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-09-26T23:52:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>971</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246382027</integer>
-			<key>Play Date UTC</key><date>2006-11-15T04:47:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B86129</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/08%20Fly%20Away.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1014</key>
-		<dict>
-			<key>Track ID</key><integer>1014</integer>
-			<key>Name</key><string>It's Your Life</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>36575064</integer>
-			<key>Total Time</key><integer>302733</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-09-28T23:53:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>965</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252501846</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:44:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-23T03:56:09Z</date>
-			<key>Persistent ID</key><string>87139F8602B8612B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/09%20It's%20Your%20Life.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1015</key>
-		<dict>
-			<key>Track ID</key><integer>1015</integer>
-			<key>Name</key><string>Straight Cold Player</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29535319</integer>
-			<key>Total Time</key><integer>259666</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-09-29T16:23:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>909</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252568700</integer>
-			<key>Play Date UTC</key><date>2007-01-25T19:18:20Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-14T19:45:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B8612D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/10%20Straight%20Cold%20Player.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1016</key>
-		<dict>
-			<key>Track ID</key><integer>1016</integer>
-			<key>Name</key><string>Little Girl's Eyes</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>51190893</integer>
-			<key>Total Time</key><integer>464760</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-10-11T18:13:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>880</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247242736</integer>
-			<key>Play Date UTC</key><date>2006-11-25T03:52:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B8612F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/11%20Little%20Girl's%20Eyes.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1017</key>
-		<dict>
-			<key>Track ID</key><integer>1017</integer>
-			<key>Name</key><string>You're My Flavor</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>5</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26572989</integer>
-			<key>Total Time</key><integer>228506</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2005-09-28T23:55:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>929</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252530865</integer>
-			<key>Play Date UTC</key><date>2007-01-25T08:47:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B86131</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/5/12%20You're%20My%20Flavor.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1018</key>
-		<dict>
-			<key>Track ID</key><integer>1018</integer>
-			<key>Name</key><string>Are You Gonna Go My Way</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5164397</integer>
-			<key>Total Time</key><integer>211902</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253519511</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:25:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86133</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/01%20Are%20You%20Gonna%20Go%20My%20Way.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1019</key>
-		<dict>
-			<key>Track ID</key><integer>1019</integer>
-			<key>Name</key><string>Believe</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7162144</integer>
-			<key>Total Time</key><integer>294654</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253519294</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:21:34Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T18:30:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86136</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/02%20Believe.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1020</key>
-		<dict>
-			<key>Track ID</key><integer>1020</integer>
-			<key>Name</key><string>Come On And Love Me</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5695736</integer>
-			<key>Total Time</key><integer>234004</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247492678</integer>
-			<key>Play Date UTC</key><date>2006-11-28T01:17:58Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T21:52:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86138</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/03%20Come%20On%20And%20Love%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1021</key>
-		<dict>
-			<key>Track ID</key><integer>1021</integer>
-			<key>Name</key><string>Heaven Help</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4666957</integer>
-			<key>Total Time</key><integer>191166</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253456359</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:52:39Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8613A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/04%20Heaven%20Help.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1022</key>
-		<dict>
-			<key>Track ID</key><integer>1022</integer>
-			<key>Name</key><string>Just Be A Woman</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5560483</integer>
-			<key>Total Time</key><integer>228393</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252566821</integer>
-			<key>Play Date UTC</key><date>2007-01-25T18:47:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8613C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/05%20Just%20Be%20A%20Woman.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1023</key>
-		<dict>
-			<key>Track ID</key><integer>1023</integer>
-			<key>Name</key><string>Is There Any Love In Your Heart</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5378768</integer>
-			<key>Total Time</key><integer>220798</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251466264</integer>
-			<key>Play Date UTC</key><date>2007-01-13T01:04:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8613E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/06%20Is%20There%20Any%20Love%20In%20Your%20Heart.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1024</key>
-		<dict>
-			<key>Track ID</key><integer>1024</integer>
-			<key>Name</key><string>Black Girl</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5477871</integer>
-			<key>Total Time</key><integer>224937</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252550467</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:14:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86140</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/07%20Black%20Girl.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1025</key>
-		<dict>
-			<key>Track ID</key><integer>1025</integer>
-			<key>Name</key><string>My Love</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5675353</integer>
-			<key>Total Time</key><integer>233150</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250596196</integer>
-			<key>Play Date UTC</key><date>2007-01-02T23:23:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86142</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/08%20My%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1026</key>
-		<dict>
-			<key>Track ID</key><integer>1026</integer>
-			<key>Name</key><string>Sugar</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5795729</integer>
-			<key>Total Time</key><integer>238185</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253080851</integer>
-			<key>Play Date UTC</key><date>2007-01-31T17:34:11Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86144</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/09%20Sugar.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1027</key>
-		<dict>
-			<key>Track ID</key><integer>1027</integer>
-			<key>Name</key><string>Sister</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10315633</integer>
-			<key>Total Time</key><integer>424894</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253555732</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:28:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86146</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/10%20Sister.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1028</key>
-		<dict>
-			<key>Track ID</key><integer>1028</integer>
-			<key>Name</key><string>Eleutheria</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Composer</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Are You Gonna Go My Way</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7074565</integer>
-			<key>Total Time</key><integer>291433</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1993</integer>
-			<key>Date Modified</key><date>2004-07-25T23:56:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252504478</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:27:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86148</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Are%20You%20Gonna%20Go%20My%20Way/11%20Eleutheria.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1029</key>
-		<dict>
-			<key>Track ID</key><integer>1029</integer>
-			<key>Name</key><string>Sittin' on Top of the World</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2377145</integer>
-			<key>Total Time</key><integer>195866</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253545566</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:39:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8614A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/01%20Sittin'%20on%20Top%20of%20the%20World.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1030</key>
-		<dict>
-			<key>Track ID</key><integer>1030</integer>
-			<key>Name</key><string>Let Love Rule</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4148164</integer>
-			<key>Total Time</key><integer>342256</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253281814</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:23:34Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T19:09:33Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8614D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/02%20Let%20Love%20Rule.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1031</key>
-		<dict>
-			<key>Track ID</key><integer>1031</integer>
-			<key>Name</key><string>Freedom Train</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2074480</integer>
-			<key>Total Time</key><integer>170814</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252416287</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:58:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8614F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/03%20Freedom%20Train.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1032</key>
-		<dict>
-			<key>Track ID</key><integer>1032</integer>
-			<key>Name</key><string>My Precious Love</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3829825</integer>
-			<key>Total Time</key><integer>315898</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253451347</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:29:07Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:43:39Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86151</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/04%20My%20Precious%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1033</key>
-		<dict>
-			<key>Track ID</key><integer>1033</integer>
-			<key>Name</key><string>I Build This Garden for Us</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4571995</integer>
-			<key>Total Time</key><integer>377234</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253289181</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:26:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86153</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/05%20I%20Build%20This%20Garden%20for%20Us.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1034</key>
-		<dict>
-			<key>Track ID</key><integer>1034</integer>
-			<key>Name</key><string>Fear</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3884996</integer>
-			<key>Total Time</key><integer>320496</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86155</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/06%20Fear.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1035</key>
-		<dict>
-			<key>Track ID</key><integer>1035</integer>
-			<key>Name</key><string>Does Anybody Out There Even Care</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2701127</integer>
-			<key>Total Time</key><integer>222693</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252494813</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:46:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86157</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/07%20Does%20Anybody%20Out%20There%20Even%20Care.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1036</key>
-		<dict>
-			<key>Track ID</key><integer>1036</integer>
-			<key>Name</key><string>Mr. Cab Driver</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2801604</integer>
-			<key>Total Time</key><integer>230896</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246374489</integer>
-			<key>Play Date UTC</key><date>2006-11-15T02:41:29Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T00:12:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86159</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/08%20Mr.%20Cab%20Driver.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1037</key>
-		<dict>
-			<key>Track ID</key><integer>1037</integer>
-			<key>Name</key><string>Rosemary</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3982339</integer>
-			<key>Total Time</key><integer>328437</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250692796</integer>
-			<key>Play Date UTC</key><date>2007-01-04T02:13:16Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T17:19:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8615B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/09%20Rosemary.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1038</key>
-		<dict>
-			<key>Track ID</key><integer>1038</integer>
-			<key>Name</key><string>Be</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2417583</integer>
-			<key>Total Time</key><integer>199235</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251641075</integer>
-			<key>Play Date UTC</key><date>2007-01-15T01:37:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8615D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/10%20Be.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1039</key>
-		<dict>
-			<key>Track ID</key><integer>1039</integer>
-			<key>Name</key><string>Blues for Sister Someone</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2186702</integer>
-			<key>Total Time</key><integer>180166</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8615F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/11%20Blues%20for%20Sister%20Someone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1040</key>
-		<dict>
-			<key>Track ID</key><integer>1040</integer>
-			<key>Name</key><string>Empty Hands</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3432012</integer>
-			<key>Total Time</key><integer>283088</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86161</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/12%20Empty%20Hands.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1041</key>
-		<dict>
-			<key>Track ID</key><integer>1041</integer>
-			<key>Name</key><string>Flower Child</string>
-			<key>Artist</key><string>Lenny Kravitz</string>
-			<key>Album</key><string>Let Love Rule</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2134666</integer>
-			<key>Total Time</key><integer>175830</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251465402</integer>
-			<key>Play Date UTC</key><date>2007-01-13T00:50:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86163</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lenny%20Kravitz/Let%20Love%20Rule/13%20Flower%20Child.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1042</key>
-		<dict>
-			<key>Track ID</key><integer>1042</integer>
-			<key>Name</key><string>Time's Up</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Calhoun/Glover/Reid/Skillings</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24685498</integer>
-			<key>Total Time</key><integer>185693</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-26T16:00:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>1062</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253356856</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:14:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B86165</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/01%20Time's%20Up.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1043</key>
-		<dict>
-			<key>Track ID</key><integer>1043</integer>
-			<key>Name</key><string>History Lesson</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>5005841</integer>
-			<key>Total Time</key><integer>52706</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-26T19:04:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>755</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:44:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B86168</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/02%20History%20Lesson.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1044</key>
-		<dict>
-			<key>Track ID</key><integer>1044</integer>
-			<key>Name</key><string>Pride</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Calhoun</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>37473162</integer>
-			<key>Total Time</key><integer>294693</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-20T14:28:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>1016</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249208755</integer>
-			<key>Play Date UTC</key><date>2006-12-17T21:59:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B8616A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/03%20Pride.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1045</key>
-		<dict>
-			<key>Track ID</key><integer>1045</integer>
-			<key>Name</key><string>Love Rears It's Ugly Head</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>31652861</integer>
-			<key>Total Time</key><integer>259466</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-29T14:00:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>975</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253596190</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:43:10Z</date>
-			<key>Persistent ID</key><string>87139F8602B8616C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/04%20Love%20Rears%20It's%20Ugly%20Head.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1046</key>
-		<dict>
-			<key>Track ID</key><integer>1046</integer>
-			<key>Name</key><string>New Jack Theme</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26281819</integer>
-			<key>Total Time</key><integer>210400</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-10T22:55:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>998</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253337384</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:49:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B8616E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/05%20New%20Jack%20Theme.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1047</key>
-		<dict>
-			<key>Track ID</key><integer>1047</integer>
-			<key>Name</key><string>Someone Like You</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Skillings</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28113251</integer>
-			<key>Total Time</key><integer>228906</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-01T14:18:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>981</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252410373</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:19:33Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-25T19:20:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B86170</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/06%20Someone%20Like%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1048</key>
-		<dict>
-			<key>Track ID</key><integer>1048</integer>
-			<key>Name</key><string>Elvis Is Dead</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29604947</integer>
-			<key>Total Time</key><integer>229893</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-17T14:44:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>1029</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252411477</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:37:57Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-16T19:04:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B86172</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/07%20Elvis%20Is%20Dead.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1049</key>
-		<dict>
-			<key>Track ID</key><integer>1049</integer>
-			<key>Name</key><string>Type</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>48766584</integer>
-			<key>Total Time</key><integer>386466</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-08T19:07:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>1008</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251638224</integer>
-			<key>Play Date UTC</key><date>2007-01-15T00:50:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B86174</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/08%20Type.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1050</key>
-		<dict>
-			<key>Track ID</key><integer>1050</integer>
-			<key>Name</key><string>Information Overload</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>45823545</integer>
-			<key>Total Time</key><integer>371440</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2004-08-22T05:42:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>986</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B86176</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/09%20Information%20Overload.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1051</key>
-		<dict>
-			<key>Track ID</key><integer>1051</integer>
-			<key>Name</key><string>Ology</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Skillings</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>5857994</integer>
-			<key>Total Time</key><integer>67960</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-10-20T00:11:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>686</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252503390</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:09:50Z</date>
-			<key>Persistent ID</key><string>87139F8602B86178</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/11%20Ology.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1052</key>
-		<dict>
-			<key>Track ID</key><integer>1052</integer>
-			<key>Name</key><string>Fight The Fight</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Calhoun/Glover/Reid/Skillings</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>32504161</integer>
-			<key>Total Time</key><integer>272733</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-25T15:28:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>952</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253287867</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:04:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B8617A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/12%20Fight%20The%20Fight.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1053</key>
-		<dict>
-			<key>Track ID</key><integer>1053</integer>
-			<key>Name</key><string>Tag Team Partners</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Glover</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>4247023</integer>
-			<key>Total Time</key><integer>47933</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2004-08-22T05:44:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>704</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252517716</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:08:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B8617C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/13%20Tag%20Team%20Partners.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1054</key>
-		<dict>
-			<key>Track ID</key><integer>1054</integer>
-			<key>Name</key><string>Solace Of You</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Glover/Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>22680179</integer>
-			<key>Total Time</key><integer>217666</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-29T12:27:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>832</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252940508</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:35:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B8617E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/14%20Solace%20Of%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1055</key>
-		<dict>
-			<key>Track ID</key><integer>1055</integer>
-			<key>Name</key><string>This Is The Life</string>
-			<key>Artist</key><string>Living Colour</string>
-			<key>Composer</key><string>Reid</string>
-			<key>Album</key><string>Time's Up</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>45200879</integer>
-			<key>Total Time</key><integer>383306</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2005-09-27T23:59:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>942</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247826863</integer>
-			<key>Play Date UTC</key><date>2006-12-01T22:07:43Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-26T19:38:10Z</date>
-			<key>Persistent ID</key><string>87139F8602B86180</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Living%20Colour/Time's%20Up/15%20This%20Is%20The%20Life.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1056</key>
-		<dict>
-			<key>Track ID</key><integer>1056</integer>
-			<key>Name</key><string>Supernova</string>
-			<key>Artist</key><string>Liz Phair</string>
-			<key>Album</key><string>Whip-Smart</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4107049</integer>
-			<key>Total Time</key><integer>168809</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-06-16T12:16:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252545672</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:54:32Z</date>
-			<key>Persistent ID</key><string>87139F8602B86182</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Liz%20Phair/Whip-Smart/02%20Supernova.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1057</key>
-		<dict>
-			<key>Track ID</key><integer>1057</integer>
-			<key>Name</key><string>X-Ray Man</string>
-			<key>Artist</key><string>Liz Phair</string>
-			<key>Album</key><string>Whip-Smart</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3260276</integer>
-			<key>Total Time</key><integer>133545</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-06-16T12:17:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T16:22:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B86185</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Liz%20Phair/Whip-Smart/04%20X-Ray%20Man.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1058</key>
-		<dict>
-			<key>Track ID</key><integer>1058</integer>
-			<key>Name</key><string>Home</string>
-			<key>Artist</key><string>Lou Barlow</string>
-			<key>Composer</key><string>Lou Barlow</string>
-			<key>Album</key><string>Emoh</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4064738</integer>
-			<key>Total Time</key><integer>203128</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Date Modified</key><date>2005-02-23T20:26:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252517310</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:01:50Z</date>
-			<key>Persistent ID</key><string>87139F8602B86187</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lou%20Barlow/Emoh/02%20Home.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1059</key>
-		<dict>
-			<key>Track ID</key><integer>1059</integer>
-			<key>Name</key><string>Leave You Far Behind</string>
-			<key>Artist</key><string>Lunatic Calm</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3093402</integer>
-			<key>Total Time</key><integer>193201</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252520325</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:52:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B8618A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Lunatic%20Calm/Matrix/06%20Leave%20You%20Far%20Behind.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1060</key>
-		<dict>
-			<key>Track ID</key><integer>1060</integer>
-			<key>Name</key><string>Golotha Tenement Blues</string>
-			<key>Artist</key><string>Machines of Loving Grace</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2927159</integer>
-			<key>Total Time</key><integer>241188</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253619624</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:13:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8618D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Machines%20of%20Loving%20Grace/The%20Crow/02%20Golotha%20Tenement%20Blues.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1061</key>
-		<dict>
-			<key>Track ID</key><integer>1061</integer>
-			<key>Name</key><string>Out Of Zone</string>
-			<key>Artist</key><string>Marbles</string>
-			<key>Composer</key><string>Robert Schneider</string>
-			<key>Album</key><string>Expo</string>
-			<key>Genre</key><string>Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3628397</integer>
-			<key>Total Time</key><integer>226638</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2005-02-23T20:34:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253683986</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:06:26Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-13T19:39:26Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86190</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Marbles/Expo/02%20Out%20Of%20Zone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1062</key>
-		<dict>
-			<key>Track ID</key><integer>1062</integer>
-			<key>Name</key><string>Poor Paul</string>
-			<key>Artist</key><string>Mardo</string>
-			<key>Album</key><string>Mardo</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3437550</integer>
-			<key>Total Time</key><integer>213942</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2005-02-23T20:35:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253455579</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:39:39Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T02:40:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86193</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Mardo/Mardo/02%20Poor%20Paul.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1063</key>
-		<dict>
-			<key>Track ID</key><integer>1063</integer>
-			<key>Name</key><string>Safe from Harm</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5277930</integer>
-			<key>Total Time</key><integer>318901</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2006-03-28T17:42:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249195729</integer>
-			<key>Play Date UTC</key><date>2006-12-17T18:22:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86196</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/01%20Safe%20from%20Harm.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1064</key>
-		<dict>
-			<key>Track ID</key><integer>1064</integer>
-			<key>Name</key><string>One Love</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4787946</integer>
-			<key>Total Time</key><integer>288645</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>1991</integer>
-			<key>Date Modified</key><date>2006-03-28T17:43:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253368379</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:26:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86199</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/02%20One%20Love.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1065</key>
-		<dict>
-			<key>Track ID</key><integer>1065</integer>
-			<key>Name</key><string>Blue Lines</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4349866</integer>
-			<key>Total Time</key><integer>261571</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>1991</integer>
-			<key>Date Modified</key><date>2006-03-28T17:43:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253355611</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:53:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8619B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/03%20Blue%20Lines.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1066</key>
-		<dict>
-			<key>Track ID</key><integer>1066</integer>
-			<key>Name</key><string>Be Thankful for What You've Got</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4158298</integer>
-			<key>Total Time</key><integer>249729</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2006-03-28T17:43:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249451556</integer>
-			<key>Play Date UTC</key><date>2006-12-20T17:25:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8619D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/04%20Be%20Thankful%20for%20What%20You've%20Got.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1067</key>
-		<dict>
-			<key>Track ID</key><integer>1067</integer>
-			<key>Name</key><string>Five Man Army</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6012762</integer>
-			<key>Total Time</key><integer>364342</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>1991</integer>
-			<key>Date Modified</key><date>2006-03-28T17:43:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246866907</integer>
-			<key>Play Date UTC</key><date>2006-11-20T19:28:27Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T19:09:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8619F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/05%20Five%20Man%20Army.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1068</key>
-		<dict>
-			<key>Track ID</key><integer>1068</integer>
-			<key>Name</key><string>Unfinished Sympathy</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5106666</integer>
-			<key>Total Time</key><integer>308336</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2006-03-28T17:43:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252550091</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:08:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861A1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/06%20Unfinished%20Sympathy.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1069</key>
-		<dict>
-			<key>Track ID</key><integer>1069</integer>
-			<key>Name</key><string>Daydreaming</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4239418</integer>
-			<key>Total Time</key><integer>254744</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>1991</integer>
-			<key>Date Modified</key><date>2006-03-28T17:43:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246716683</integer>
-			<key>Play Date UTC</key><date>2006-11-19T01:44:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861A3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/07%20Daydreaming.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1070</key>
-		<dict>
-			<key>Track ID</key><integer>1070</integer>
-			<key>Name</key><string>Lately</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4428506</integer>
-			<key>Total Time</key><integer>266401</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>1991</integer>
-			<key>Date Modified</key><date>2006-03-28T17:44:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253600400</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:53:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861A5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/08%20Lately.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1071</key>
-		<dict>
-			<key>Track ID</key><integer>1071</integer>
-			<key>Name</key><string>Hymn of the Big Wheel</string>
-			<key>Artist</key><string>Massive Attack</string>
-			<key>Album Artist</key><string>Massive Attack</string>
-			<key>Album</key><string>Blue Lines</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6545594</integer>
-			<key>Total Time</key><integer>397268</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>1991</integer>
-			<key>Date Modified</key><date>2006-03-28T17:44:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252581108</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:45:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861A7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Massive%20Attack/Blue%20Lines/09%20Hymn%20of%20the%20Big%20Wheel.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1072</key>
-		<dict>
-			<key>Track ID</key><integer>1072</integer>
-			<key>Name</key><string>Prime Audio Soup</string>
-			<key>Artist</key><string>Meat Beat Manifesto</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6038343</integer>
-			<key>Total Time</key><integer>377260</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253553039</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:43:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B861A9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Meat%20Beat%20Manifesto/Matrix/05%20Prime%20Audio%20Soup.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1073</key>
-		<dict>
-			<key>Track ID</key><integer>1073</integer>
-			<key>Name</key><string>Time Baby III</string>
-			<key>Artist</key><string>Medicine</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2819012</integer>
-			<key>Total Time</key><integer>232176</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249320221</integer>
-			<key>Play Date UTC</key><date>2006-12-19T04:57:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861AC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Medicine/The%20Crow/13%20Time%20Baby%20III.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1074</key>
-		<dict>
-			<key>Track ID</key><integer>1074</integer>
-			<key>Name</key><string>Inside My Love</string>
-			<key>Artist</key><string>Minnie Riperton</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4499751</integer>
-			<key>Total Time</key><integer>280842</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252506464</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:01:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861AF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Minnie%20Riperton/Late%20Lounge%20(1%20of%202)/09%20Inside%20My%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1075</key>
-		<dict>
-			<key>Track ID</key><integer>1075</integer>
-			<key>Name</key><string>We Are All Made of Stars</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4968783</integer>
-			<key>Total Time</key><integer>272740</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-21T20:42:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3249574947</integer>
-			<key>Play Date UTC</key><date>2006-12-22T03:42:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861B2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/01%20We%20Are%20All%20Made%20of%20Stars.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1076</key>
-		<dict>
-			<key>Track ID</key><integer>1076</integer>
-			<key>Name</key><string>In This World</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4480351</integer>
-			<key>Total Time</key><integer>242554</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-08-08T15:24:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246860278</integer>
-			<key>Play Date UTC</key><date>2006-11-20T17:37:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861B5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/02%20In%20This%20World.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1077</key>
-		<dict>
-			<key>Track ID</key><integer>1077</integer>
-			<key>Name</key><string>In My Heart</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5030751</integer>
-			<key>Total Time</key><integer>276571</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-26T21:03:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:49Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252393561</integer>
-			<key>Play Date UTC</key><date>2007-01-23T18:39:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861B7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/03%20In%20My%20Heart.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1078</key>
-		<dict>
-			<key>Track ID</key><integer>1078</integer>
-			<key>Name</key><string>Great Escape</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2642751</integer>
-			<key>Total Time</key><integer>128985</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-17T23:10:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250668314</integer>
-			<key>Play Date UTC</key><date>2007-01-03T19:25:14Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:44:33Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861B9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/04%20Great%20Escape.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1079</key>
-		<dict>
-			<key>Track ID</key><integer>1079</integer>
-			<key>Name</key><string>Signs of Love</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4859807</integer>
-			<key>Total Time</key><integer>266006</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-21T21:23:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246910428</integer>
-			<key>Play Date UTC</key><date>2006-11-21T07:33:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861BB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/05%20Signs%20of%20Love.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1080</key>
-		<dict>
-			<key>Track ID</key><integer>1080</integer>
-			<key>Name</key><string>One of These Mornings</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3678207</integer>
-			<key>Total Time</key><integer>192979</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-18T02:59:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249208254</integer>
-			<key>Play Date UTC</key><date>2006-12-17T21:50:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861BD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/06%20One%20of%20These%20Mornings.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1081</key>
-		<dict>
-			<key>Track ID</key><integer>1081</integer>
-			<key>Name</key><string>Another Woman</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4375151</integer>
-			<key>Total Time</key><integer>236052</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-20T19:52:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251356603</integer>
-			<key>Play Date UTC</key><date>2007-01-11T18:36:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861BF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/07%20Another%20Woman.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1082</key>
-		<dict>
-			<key>Track ID</key><integer>1082</integer>
-			<key>Name</key><string>Fireworks</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2709999</integer>
-			<key>Total Time</key><integer>133141</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-30T02:55:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252566593</integer>
-			<key>Play Date UTC</key><date>2007-01-25T18:43:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861C1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/08%20Fireworks.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1083</key>
-		<dict>
-			<key>Track ID</key><integer>1083</integer>
-			<key>Name</key><string>Extreme Ways</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4400687</integer>
-			<key>Total Time</key><integer>237631</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-26T20:08:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253551637</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:20:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861C3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/09%20Extreme%20Ways.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1084</key>
-		<dict>
-			<key>Track ID</key><integer>1084</integer>
-			<key>Name</key><string>Jam for the Ladies</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3826991</integer>
-			<key>Total Time</key><integer>202174</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-30T00:13:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861C5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/10%20Jam%20for%20the%20Ladies.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1085</key>
-		<dict>
-			<key>Track ID</key><integer>1085</integer>
-			<key>Name</key><string>Sunday (The Day Before My Birthday)</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5564287</integer>
-			<key>Total Time</key><integer>309543</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-26T18:04:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253180008</integer>
-			<key>Play Date UTC</key><date>2007-02-01T21:06:48Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-20T23:09:00Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861C7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/11%20Sunday%20(The%20Day%20Before%20My%20Birthday).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1086</key>
-		<dict>
-			<key>Track ID</key><integer>1086</integer>
-			<key>Name</key><string>18</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4899247</integer>
-			<key>Total Time</key><integer>268444</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-08-08T17:10:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252391286</integer>
-			<key>Play Date UTC</key><date>2007-01-23T18:01:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861C9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/12%2018.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1087</key>
-		<dict>
-			<key>Track ID</key><integer>1087</integer>
-			<key>Name</key><string>Sleep Alone</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5173519</integer>
-			<key>Total Time</key><integer>285395</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-20T16:08:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247025125</integer>
-			<key>Play Date UTC</key><date>2006-11-22T15:25:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861CB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/13%20Sleep%20Alone.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1088</key>
-		<dict>
-			<key>Track ID</key><integer>1088</integer>
-			<key>Name</key><string>At Least We Tried</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4581407</integer>
-			<key>Total Time</key><integer>248800</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-19T01:54:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253370375</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:59:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861CD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/14%20At%20Least%20We%20Tried.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1089</key>
-		<dict>
-			<key>Track ID</key><integer>1089</integer>
-			<key>Name</key><string>Harbour</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6823263</integer>
-			<key>Total Time</key><integer>387353</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-20T17:28:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252413072</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:04:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861CF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/15%20Harbour.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1090</key>
-		<dict>
-			<key>Track ID</key><integer>1090</integer>
-			<key>Name</key><string>Look Back In</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2832479</integer>
-			<key>Total Time</key><integer>140711</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-04T10:33:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/16%20Look%20Back%20In.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1091</key>
-		<dict>
-			<key>Track ID</key><integer>1091</integer>
-			<key>Name</key><string>Rafters</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3828479</integer>
-			<key>Total Time</key><integer>202267</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-28T19:43:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252550914</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:21:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/17%20Rafters.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1092</key>
-		<dict>
-			<key>Track ID</key><integer>1092</integer>
-			<key>Name</key><string>I'm Not Worried at All</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album Artist</key><string>Moby</string>
-			<key>Album</key><string>18</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4631759</integer>
-			<key>Total Time</key><integer>251911</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>18</integer>
-			<key>Track Count</key><integer>18</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-07-21T13:59:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253376723</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:45:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/18/18%20I'm%20Not%20Worried%20at%20All.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1093</key>
-		<dict>
-			<key>Track ID</key><integer>1093</integer>
-			<key>Name</key><string>Hymn</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>17330228</integer>
-			<key>Total Time</key><integer>197933</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-09-26T17:15:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>699</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253081276</integer>
-			<key>Play Date UTC</key><date>2007-01-31T17:41:16Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:56:03Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B861D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/01%20Hymn.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1094</key>
-		<dict>
-			<key>Track ID</key><integer>1094</integer>
-			<key>Name</key><string>Feeling So Real</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26493137</integer>
-			<key>Total Time</key><integer>201600</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-10-07T15:29:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>1050</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250679872</integer>
-			<key>Play Date UTC</key><date>2007-01-03T22:37:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B861DA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/02%20Feeling%20So%20Real.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1095</key>
-		<dict>
-			<key>Track ID</key><integer>1095</integer>
-			<key>Name</key><string>All That I Need To Be Is Loved</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>22931103</integer>
-			<key>Total Time</key><integer>163333</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-08-22T04:49:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>1121</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T17:28:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B861DC</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/03%20All%20That%20I%20Need%20To%20Be%20Is%20Loved.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1096</key>
-		<dict>
-			<key>Track ID</key><integer>1096</integer>
-			<key>Name</key><string>Let's Go Free</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>4018268</integer>
-			<key>Total Time</key><integer>38440</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-09-26T20:54:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>831</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253621959</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:52:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B861DE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/04%20Let's%20Go%20Free.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1097</key>
-		<dict>
-			<key>Track ID</key><integer>1097</integer>
-			<key>Name</key><string>Everytime You Touch Me</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28980982</integer>
-			<key>Total Time</key><integer>221760</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-10-07T21:12:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>1044</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251622954</integer>
-			<key>Play Date UTC</key><date>2007-01-14T20:35:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B861E0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/05%20Everytime%20You%20Touch%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1098</key>
-		<dict>
-			<key>Track ID</key><integer>1098</integer>
-			<key>Name</key><string>Bring Back My Happiness</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26608989</integer>
-			<key>Total Time</key><integer>192640</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-10-09T00:08:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>1103</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249489126</integer>
-			<key>Play Date UTC</key><date>2006-12-21T03:52:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B861E2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/06%20Bring%20Back%20My%20Happiness.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1099</key>
-		<dict>
-			<key>Track ID</key><integer>1099</integer>
-			<key>Name</key><string>What Love</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>22604245</integer>
-			<key>Total Time</key><integer>168333</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-10-07T15:42:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>1072</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B861E4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/07%20What%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1100</key>
-		<dict>
-			<key>Track ID</key><integer>1100</integer>
-			<key>Name</key><string>First Cool Hive</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34041165</integer>
-			<key>Total Time</key><integer>317226</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-09-26T21:05:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>857</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253707790</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:43:10Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B861E6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/08%20First%20Cool%20Hive.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1101</key>
-		<dict>
-			<key>Track ID</key><integer>1101</integer>
-			<key>Name</key><string>Into The Blue</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby and Mimi Goese</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>35305191</integer>
-			<key>Total Time</key><integer>333600</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-09-28T23:58:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>846</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253278722</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:32:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B861E8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/09%20Into%20The%20Blue.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1102</key>
-		<dict>
-			<key>Track ID</key><integer>1102</integer>
-			<key>Name</key><string>Anthem</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24694085</integer>
-			<key>Total Time</key><integer>207533</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-09-26T20:17:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>950</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253608371</integer>
-			<key>Play Date UTC</key><date>2007-02-06T20:06:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B861EA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/10%20Anthem.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1103</key>
-		<dict>
-			<key>Track ID</key><integer>1103</integer>
-			<key>Name</key><string>Everything Is Wrong</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>4597821</integer>
-			<key>Total Time</key><integer>74640</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-10-02T00:25:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>490</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250659644</integer>
-			<key>Play Date UTC</key><date>2007-01-03T17:00:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B861EC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/11%20Everything%20Is%20Wrong.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1104</key>
-		<dict>
-			<key>Track ID</key><integer>1104</integer>
-			<key>Name</key><string>God Moving Over The Face Of The World</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>41265717</integer>
-			<key>Total Time</key><integer>441800</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-10-02T14:38:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>746</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253601451</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:10:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B861EE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/12%20God%20Moving%20Over%20The%20Face%20Of%20The%20World.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1105</key>
-		<dict>
-			<key>Track ID</key><integer>1105</integer>
-			<key>Name</key><string>When It's Cold I'd Like To Die</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Composer</key><string>Moby and Mimi Goese</string>
-			<key>Album</key><string>Everything Is Wrong</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24125035</integer>
-			<key>Total Time</key><integer>253293</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2005-09-29T14:56:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>761</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252399280</integer>
-			<key>Play Date UTC</key><date>2007-01-23T20:14:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B861F0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Everything%20Is%20Wrong/13%20When%20It's%20Cold%20I'd%20Like%20To%20Die.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1106</key>
-		<dict>
-			<key>Track ID</key><integer>1106</integer>
-			<key>Name</key><string>Into the Blue</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5317279</integer>
-			<key>Total Time</key><integer>331937</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252937660</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:47:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861F2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Late%20Lounge%20(1%20of%202)/07%20Into%20the%20Blue.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1107</key>
-		<dict>
-			<key>Track ID</key><integer>1107</integer>
-			<key>Name</key><string>Bodyrock [Hybrid's Bodyshock Mix]</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7400472</integer>
-			<key>Total Time</key><integer>462393</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247037015</integer>
-			<key>Play Date UTC</key><date>2006-11-22T18:43:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B861F5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Plastic%20Compilation,%20Vol.%203/06%20Bodyrock%20%5BHybrid's%20Bodyshock%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1108</key>
-		<dict>
-			<key>Track ID</key><integer>1108</integer>
-			<key>Name</key><string>Honey</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2513567</integer>
-			<key>Total Time</key><integer>208770</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247727049</integer>
-			<key>Play Date UTC</key><date>2006-11-30T18:24:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861F8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/01%20Honey.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1109</key>
-		<dict>
-			<key>Track ID</key><integer>1109</integer>
-			<key>Name</key><string>Find My Baby</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2882207</integer>
-			<key>Total Time</key><integer>239490</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252937067</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:37:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B861FB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/02%20Find%20My%20Baby.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1110</key>
-		<dict>
-			<key>Track ID</key><integer>1110</integer>
-			<key>Name</key><string>Porcelain</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2897066</integer>
-			<key>Total Time</key><integer>241240</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250601296</integer>
-			<key>Play Date UTC</key><date>2007-01-03T00:48:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B861FD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/03%20Porcelain.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1111</key>
-		<dict>
-			<key>Track ID</key><integer>1111</integer>
-			<key>Name</key><string>Why Does My Heart Feel So Bad?</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3181383</integer>
-			<key>Total Time</key><integer>264933</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253689816</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:43:36Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-11T05:17:58Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B861FF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/04%20Why%20Does%20My%20Heart%20Feel%20So%20Bad_.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1112</key>
-		<dict>
-			<key>Track ID</key><integer>1112</integer>
-			<key>Name</key><string>South Side</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2760080</integer>
-			<key>Total Time</key><integer>229825</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252386887</integer>
-			<key>Play Date UTC</key><date>2007-01-23T16:48:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B86201</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/05%20South%20Side.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1113</key>
-		<dict>
-			<key>Track ID</key><integer>1113</integer>
-			<key>Name</key><string>Rushing</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2166369</integer>
-			<key>Total Time</key><integer>180349</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249317005</integer>
-			<key>Play Date UTC</key><date>2006-12-19T04:03:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B86203</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/06%20Rushing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1114</key>
-		<dict>
-			<key>Track ID</key><integer>1114</integer>
-			<key>Name</key><string>Bodyrock</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2600524</integer>
-			<key>Total Time</key><integer>216528</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246856968</integer>
-			<key>Play Date UTC</key><date>2006-11-20T16:42:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B86205</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/07%20Bodyrock.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1115</key>
-		<dict>
-			<key>Track ID</key><integer>1115</integer>
-			<key>Name</key><string>Natural Blues</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3048472</integer>
-			<key>Total Time</key><integer>253857</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253379634</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:33:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B86207</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/08%20Natural%20Blues.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1116</key>
-		<dict>
-			<key>Track ID</key><integer>1116</integer>
-			<key>Name</key><string>Machete</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2616197</integer>
-			<key>Total Time</key><integer>217835</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249271026</integer>
-			<key>Play Date UTC</key><date>2006-12-18T15:17:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T03:15:14Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B86209</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/09%20Machete.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1117</key>
-		<dict>
-			<key>Track ID</key><integer>1117</integer>
-			<key>Name</key><string>7</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>747606</integer>
-			<key>Total Time</key><integer>62119</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250622040</integer>
-			<key>Play Date UTC</key><date>2007-01-03T06:34:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B8620B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/10%207.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1118</key>
-		<dict>
-			<key>Track ID</key><integer>1118</integer>
-			<key>Name</key><string>Run On</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2704909</integer>
-			<key>Total Time</key><integer>225227</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253342227</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:10:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B8620D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/11%20Run%20On.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1119</key>
-		<dict>
-			<key>Track ID</key><integer>1119</integer>
-			<key>Name</key><string>Down Slow</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1141637</integer>
-			<key>Total Time</key><integer>94955</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253557525</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:58:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B8620F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/12%20Down%20Slow.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1120</key>
-		<dict>
-			<key>Track ID</key><integer>1120</integer>
-			<key>Name</key><string>If Things Were Perfect</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3107090</integer>
-			<key>Total Time</key><integer>258742</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249293124</integer>
-			<key>Play Date UTC</key><date>2006-12-18T21:25:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B86211</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/13%20If%20Things%20Were%20Perfect.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1121</key>
-		<dict>
-			<key>Track ID</key><integer>1121</integer>
-			<key>Name</key><string>Everloving</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2470120</integer>
-			<key>Total Time</key><integer>205662</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250600309</integer>
-			<key>Play Date UTC</key><date>2007-01-03T00:31:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B86213</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/14%20Everloving.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1122</key>
-		<dict>
-			<key>Track ID</key><integer>1122</integer>
-			<key>Name</key><string>Inside</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3466640</integer>
-			<key>Total Time</key><integer>288705</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252034405</integer>
-			<key>Play Date UTC</key><date>2007-01-19T14:53:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B86215</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/15%20Inside.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1123</key>
-		<dict>
-			<key>Track ID</key><integer>1123</integer>
-			<key>Name</key><string>Guitar Flute and String</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1553536</integer>
-			<key>Total Time</key><integer>129280</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253623018</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:10:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B86217</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/16%20Guitar%20Flute%20and%20String.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1124</key>
-		<dict>
-			<key>Track ID</key><integer>1124</integer>
-			<key>Name</key><string>The Sky Is Broken</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3106150</integer>
-			<key>Total Time</key><integer>258664</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253335646</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:20:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B86219</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/17%20The%20Sky%20Is%20Broken.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1125</key>
-		<dict>
-			<key>Track ID</key><integer>1125</integer>
-			<key>Name</key><string>My Weakness</string>
-			<key>Artist</key><string>Moby</string>
-			<key>Album</key><string>Play</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2614003</integer>
-			<key>Total Time</key><integer>217652</integer>
-			<key>Track Number</key><integer>18</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253472790</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:26:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B8621B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby/Play/18%20My%20Weakness.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1126</key>
-		<dict>
-			<key>Track ID</key><integer>1126</integer>
-			<key>Name</key><string>Patient Love</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7165140</integer>
-			<key>Total Time</key><integer>591281</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253381464</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:04:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8621D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/01%20Patient%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1127</key>
-		<dict>
-			<key>Track ID</key><integer>1127</integer>
-			<key>Name</key><string>Great Lake</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6537386</integer>
-			<key>Total Time</key><integer>539480</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251632059</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:07:39Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86220</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/02%20Great%20Lake.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1128</key>
-		<dict>
-			<key>Track ID</key><integer>1128</integer>
-			<key>Name</key><string>Gentle Love</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6041456</integer>
-			<key>Total Time</key><integer>498494</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253255051</integer>
-			<key>Play Date UTC</key><date>2007-02-02T17:57:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86222</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/03%20Gentle%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1129</key>
-		<dict>
-			<key>Track ID</key><integer>1129</integer>
-			<key>Name</key><string>Honest Love</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5439261</integer>
-			<key>Total Time</key><integer>448653</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253345115</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:58:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86224</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/04%20Honest%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1130</key>
-		<dict>
-			<key>Track ID</key><integer>1130</integer>
-			<key>Name</key><string>Slow Motion Suicide</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5204932</integer>
-			<key>Total Time</key><integer>429296</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252034834</integer>
-			<key>Play Date UTC</key><date>2007-01-19T15:00:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86226</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/05%20Slow%20Motion%20Suicide.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1131</key>
-		<dict>
-			<key>Track ID</key><integer>1131</integer>
-			<key>Name</key><string>Dog Heaven</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4435490</integer>
-			<key>Total Time</key><integer>365688</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249550891</integer>
-			<key>Play Date UTC</key><date>2006-12-21T21:01:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86228</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/06%20Dog%20Heaven.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1132</key>
-		<dict>
-			<key>Track ID</key><integer>1132</integer>
-			<key>Name</key><string>Reject</string>
-			<key>Artist</key><string>Moby / Voodoo Child</string>
-			<key>Album</key><string>The End of Everything [US]</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>13406420</integer>
-			<key>Total Time</key><integer>1107121</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253617667</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:41:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8622A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moby%20_%20Voodoo%20Child/The%20End%20of%20Everything%20%5BUS%5D/07%20Reject.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1133</key>
-		<dict>
-			<key>Track ID</key><integer>1133</integer>
-			<key>Name</key><string>Sing It Back [Tee's Radio Mix]</string>
-			<key>Artist</key><string>Moloko</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3314920</integer>
-			<key>Total Time</key><integer>207046</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250610344</integer>
-			<key>Play Date UTC</key><date>2007-01-03T03:19:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B8622C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Moloko/Plastic%20Compilation,%20Vol.%203/08%20Sing%20It%20Back%20%5BTee's%20Radio%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1134</key>
-		<dict>
-			<key>Track ID</key><integer>1134</integer>
-			<key>Name</key><string>Look to Your Orb for the Warning</string>
-			<key>Artist</key><string>Monster Magnet</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4532436</integer>
-			<key>Total Time</key><integer>283141</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B8622F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Monster%20Magnet/Matrix/11%20Look%20to%20Your%20Orb%20for%20the%20Warning.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1135</key>
-		<dict>
-			<key>Track ID</key><integer>1135</integer>
-			<key>Name</key><string>The Sea</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6002085</integer>
-			<key>Total Time</key><integer>347740</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:42:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252925483</integer>
-			<key>Play Date UTC</key><date>2007-01-29T22:24:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86232</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/01%20The%20Sea.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1136</key>
-		<dict>
-			<key>Track ID</key><integer>1136</integer>
-			<key>Name</key><string>Shoulder Holster</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4374974</integer>
-			<key>Total Time</key><integer>245270</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:42:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:50Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252923387</integer>
-			<key>Play Date UTC</key><date>2007-01-29T21:49:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86235</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/02%20Shoulder%20Holster.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1137</key>
-		<dict>
-			<key>Track ID</key><integer>1137</integer>
-			<key>Name</key><string>Part of the Process</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4676193</integer>
-			<key>Total Time</key><integer>264241</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:42:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253511986</integer>
-			<key>Play Date UTC</key><date>2007-02-05T17:19:46Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86237</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/03%20Part%20of%20the%20Process.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1138</key>
-		<dict>
-			<key>Track ID</key><integer>1138</integer>
-			<key>Name</key><string>Blindfold</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4887095</integer>
-			<key>Total Time</key><integer>277523</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253174892</integer>
-			<key>Play Date UTC</key><date>2007-02-01T19:41:32Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86239</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/04%20Blindfold.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1139</key>
-		<dict>
-			<key>Track ID</key><integer>1139</integer>
-			<key>Name</key><string>Let Me See</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4608728</integer>
-			<key>Total Time</key><integer>259992</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253082118</integer>
-			<key>Play Date UTC</key><date>2007-01-31T17:55:18Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8623B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/05%20Let%20Me%20See.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1140</key>
-		<dict>
-			<key>Track ID</key><integer>1140</integer>
-			<key>Name</key><string>Bullet Proof</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4499226</integer>
-			<key>Total Time</key><integer>253096</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251633891</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:38:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8623D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/06%20Bullet%20Proof.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1141</key>
-		<dict>
-			<key>Track ID</key><integer>1141</integer>
-			<key>Name</key><string>Over and Over</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2707291</integer>
-			<key>Total Time</key><integer>140247</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253457564</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:12:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8623F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/07%20Over%20and%20Over.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1142</key>
-		<dict>
-			<key>Track ID</key><integer>1142</integer>
-			<key>Name</key><string>Friction</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4516918</integer>
-			<key>Total Time</key><integer>254210</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249470134</integer>
-			<key>Play Date UTC</key><date>2006-12-20T22:35:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86241</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/08%20Friction.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1143</key>
-		<dict>
-			<key>Track ID</key><integer>1143</integer>
-			<key>Name</key><string>Diggin' in a Watery Grave</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2004167</integer>
-			<key>Total Time</key><integer>95966</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252582677</integer>
-			<key>Play Date UTC</key><date>2007-01-25T23:11:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86243</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/09%20Diggin'%20in%20a%20Watery%20Grave.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1144</key>
-		<dict>
-			<key>Track ID</key><integer>1144</integer>
-			<key>Name</key><string>Fear and Love</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5316651</integer>
-			<key>Total Time</key><integer>304574</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:43:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251486048</integer>
-			<key>Play Date UTC</key><date>2007-01-13T06:34:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86245</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/10%20Fear%20and%20Love.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1145</key>
-		<dict>
-			<key>Track ID</key><integer>1145</integer>
-			<key>Name</key><string>Big Calm</string>
-			<key>Artist</key><string>Morcheeba</string>
-			<key>Album Artist</key><string>Morcheeba</string>
-			<key>Album</key><string>Big Calm</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6205238</integer>
-			<key>Total Time</key><integer>360534</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-05-03T14:44:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252418046</integer>
-			<key>Play Date UTC</key><date>2007-01-24T01:27:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86247</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Morcheeba/Big%20Calm/11%20Big%20Calm.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1146</key>
-		<dict>
-			<key>Track ID</key><integer>1146</integer>
-			<key>Name</key><string>After the Flesh</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2183108</integer>
-			<key>Total Time</key><integer>179696</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253383046</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:30:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86249</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/The%20Crow/11%20After%20the%20Flesh.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1147</key>
-		<dict>
-			<key>Track ID</key><integer>1147</integer>
-			<key>Name</key><string>Astonsilicon</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4381848</integer>
-			<key>Total Time</key><integer>262941</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:22:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253379075</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:24:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8624C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/01%20Astonsilicon.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1148</key>
-		<dict>
-			<key>Track ID</key><integer>1148</integer>
-			<key>Name</key><string>Fade Out</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3991112</integer>
-			<key>Total Time</key><integer>238792</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:22:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249493289</integer>
-			<key>Play Date UTC</key><date>2006-12-21T05:01:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8624F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/02%20Fade%20Out.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1149</key>
-		<dict>
-			<key>Track ID</key><integer>1149</integer>
-			<key>Name</key><string>Option</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4479160</integer>
-			<key>Total Time</key><integer>268955</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:23:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3252116377</integer>
-			<key>Play Date UTC</key><date>2007-01-20T13:39:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86251</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/03%20Option.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1150</key>
-		<dict>
-			<key>Track ID</key><integer>1150</integer>
-			<key>Name</key><string>The Book</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4955944</integer>
-			<key>Total Time</key><integer>298421</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:23:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253362120</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:42:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86253</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/04%20The%20Book.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1151</key>
-		<dict>
-			<key>Track ID</key><integer>1151</integer>
-			<key>Name</key><string>Three Stars No Match</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4385240</integer>
-			<key>Total Time</key><integer>263150</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:23:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253522718</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:18:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86255</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/05%20Three%20Stars%20No%20Match.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1152</key>
-		<dict>
-			<key>Track ID</key><integer>1152</integer>
-			<key>Name</key><string>Paravent</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4485544</integer>
-			<key>Total Time</key><integer>269350</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:24:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251619916</integer>
-			<key>Play Date UTC</key><date>2007-01-14T19:45:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86257</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/06%20Paravent.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1153</key>
-		<dict>
-			<key>Track ID</key><integer>1153</integer>
-			<key>Name</key><string>October</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4627560</integer>
-			<key>Total Time</key><integer>278127</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:24:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253428464</integer>
-			<key>Play Date UTC</key><date>2007-02-04T18:07:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86259</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/07%20October.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1154</key>
-		<dict>
-			<key>Track ID</key><integer>1154</integer>
-			<key>Name</key><string>Rainfall</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4650856</integer>
-			<key>Total Time</key><integer>279566</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:25:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253547036</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:03:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8625B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/08%20Rainfall.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1155</key>
-		<dict>
-			<key>Track ID</key><integer>1155</integer>
-			<key>Name</key><string>King Kong Is Not Dead</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3796536</integer>
-			<key>Total Time</key><integer>226741</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:25:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252574916</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:01:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8625D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/09%20King%20Kong%20Is%20Not%20Dead.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1156</key>
-		<dict>
-			<key>Track ID</key><integer>1156</integer>
-			<key>Name</key><string>The Great Event</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5087064</integer>
-			<key>Total Time</key><integer>306525</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:26:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253380515</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:48:35Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8625F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/10%20The%20Great%20Event.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1157</key>
-		<dict>
-			<key>Track ID</key><integer>1157</integer>
-			<key>Name</key><string>Exit Song</string>
-			<key>Artist</key><string>Naomi</string>
-			<key>Album Artist</key><string>Naomi</string>
-			<key>Album</key><string>Pappelallee</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6331096</integer>
-			<key>Total Time</key><integer>383383</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-06-07T14:26:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253176529</integer>
-			<key>Play Date UTC</key><date>2007-02-01T20:08:49Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86261</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Naomi/Pappelallee/11%20Exit%20Song.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1158</key>
-		<dict>
-			<key>Track ID</key><integer>1158</integer>
-			<key>Name</key><string>Ophelia</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7542272</integer>
-			<key>Total Time</key><integer>310441</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253595931</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:38:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86263</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/01%20Ophelia.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1159</key>
-		<dict>
-			<key>Track ID</key><integer>1159</integer>
-			<key>Name</key><string>Life Is Sweet</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7589804</integer>
-			<key>Total Time</key><integer>312404</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253428186</integer>
-			<key>Play Date UTC</key><date>2007-02-04T18:03:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T01:08:53Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86266</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/02%20Life%20Is%20Sweet.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1160</key>
-		<dict>
-			<key>Track ID</key><integer>1160</integer>
-			<key>Name</key><string>Kind &#38; Generous</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6017968</integer>
-			<key>Total Time</key><integer>247508</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252472503</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:35:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86268</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/03%20Kind%20&#38;%20Generous.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1161</key>
-		<dict>
-			<key>Track ID</key><integer>1161</integer>
-			<key>Name</key><string>Frozen Charlotte</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7844202</integer>
-			<key>Total Time</key><integer>322921</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246430365</integer>
-			<key>Play Date UTC</key><date>2006-11-15T18:12:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8626A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/04%20Frozen%20Charlotte.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1162</key>
-		<dict>
-			<key>Track ID</key><integer>1162</integer>
-			<key>Name</key><string>My Skin</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8081093</integer>
-			<key>Total Time</key><integer>332692</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251482218</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:30:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8626C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/05%20My%20Skin.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1163</key>
-		<dict>
-			<key>Track ID</key><integer>1163</integer>
-			<key>Name</key><string>Break Your Heart</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7005935</integer>
-			<key>Total Time</key><integer>288297</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252513316</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:55:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8626E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/06%20Break%20Your%20Heart.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1164</key>
-		<dict>
-			<key>Track ID</key><integer>1164</integer>
-			<key>Name</key><string>King Of May</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6060966</integer>
-			<key>Total Time</key><integer>249278</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253350472</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:27:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:55:49Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86270</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/07%20King%20Of%20May.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1165</key>
-		<dict>
-			<key>Track ID</key><integer>1165</integer>
-			<key>Name</key><string>Thick As Thieves</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10135563</integer>
-			<key>Total Time</key><integer>417534</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3249553956</integer>
-			<key>Play Date UTC</key><date>2006-12-21T21:52:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86272</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/08%20Thick%20As%20Thieves.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1166</key>
-		<dict>
-			<key>Track ID</key><integer>1166</integer>
-			<key>Name</key><string>Effigy</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3679051</integer>
-			<key>Total Time</key><integer>150142</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252481773</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:09:33Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-17T22:21:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86274</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/09%20Effigy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1167</key>
-		<dict>
-			<key>Track ID</key><integer>1167</integer>
-			<key>Name</key><string>The Living</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4829383</integer>
-			<key>Total Time</key><integer>198036</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252503322</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:08:42Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86276</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/10%20The%20Living.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1168</key>
-		<dict>
-			<key>Track ID</key><integer>1168</integer>
-			<key>Name</key><string>When They Ring The Golden Bells</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Composer</key><string>Dion de Marbelle</string>
-			<key>Album</key><string>Ophelia</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>13899608</integer>
-			<key>Total Time</key><integer>573118</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-08-01T17:01:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250664143</integer>
-			<key>Play Date UTC</key><date>2007-01-03T18:15:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86278</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Ophelia/11%20When%20They%20Ring%20The%20Golden%20Bells.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1169</key>
-		<dict>
-			<key>Track ID</key><integer>1169</integer>
-			<key>Name</key><string>San Andreas Fault</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3831769</integer>
-			<key>Total Time</key><integer>238837</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253360290</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:11:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T02:26:24Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8627A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/01%20San%20Andreas%20Fault.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1170</key>
-		<dict>
-			<key>Track ID</key><integer>1170</integer>
-			<key>Name</key><string>Wonder</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4286926</integer>
-			<key>Total Time</key><integer>267284</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8627D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/02%20Wonder.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1171</key>
-		<dict>
-			<key>Track ID</key><integer>1171</integer>
-			<key>Name</key><string>Beloved Wife</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4854097</integer>
-			<key>Total Time</key><integer>302733</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8627F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/03%20Beloved%20Wife.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1172</key>
-		<dict>
-			<key>Track ID</key><integer>1172</integer>
-			<key>Name</key><string>River</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5325973</integer>
-			<key>Total Time</key><integer>332225</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252922585</integer>
-			<key>Play Date UTC</key><date>2007-01-29T21:36:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86281</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/04%20River.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1173</key>
-		<dict>
-			<key>Track ID</key><integer>1173</integer>
-			<key>Name</key><string>Carnival</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5759397</integer>
-			<key>Total Time</key><integer>359314</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86283</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/05%20Carnival.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1174</key>
-		<dict>
-			<key>Track ID</key><integer>1174</integer>
-			<key>Name</key><string>I May Know the Word</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7828712</integer>
-			<key>Total Time</key><integer>488646</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247576537</integer>
-			<key>Play Date UTC</key><date>2006-11-29T00:35:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86285</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/06%20I%20May%20Know%20the%20Word.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1175</key>
-		<dict>
-			<key>Track ID</key><integer>1175</integer>
-			<key>Name</key><string>The Letter</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2123988</integer>
-			<key>Total Time</key><integer>132101</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253593235</integer>
-			<key>Play Date UTC</key><date>2007-02-06T15:53:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86287</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/07%20The%20Letter.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1176</key>
-		<dict>
-			<key>Track ID</key><integer>1176</integer>
-			<key>Name</key><string>Cowboy Romance</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4476262</integer>
-			<key>Total Time</key><integer>279118</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:26:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249491040</integer>
-			<key>Play Date UTC</key><date>2006-12-21T04:24:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86289</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/08%20Cowboy%20Romance.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1177</key>
-		<dict>
-			<key>Track ID</key><integer>1177</integer>
-			<key>Name</key><string>Jealousy</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2595446</integer>
-			<key>Total Time</key><integer>161567</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252507571</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:19:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8628B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/09%20Jealousy.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1178</key>
-		<dict>
-			<key>Track ID</key><integer>1178</integer>
-			<key>Name</key><string>Where I Go</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3857682</integer>
-			<key>Total Time</key><integer>240457</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252573777</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:42:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8628D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/10%20Where%20I%20Go.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1179</key>
-		<dict>
-			<key>Track ID</key><integer>1179</integer>
-			<key>Name</key><string>Seven Years</string>
-			<key>Artist</key><string>Natalie Merchant</string>
-			<key>Album</key><string>Tigerlily</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5302567</integer>
-			<key>Total Time</key><integer>330762</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252546747</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:12:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8628F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Natalie%20Merchant/Tigerlily/11%20Seven%20Years.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1180</key>
-		<dict>
-			<key>Track ID</key><integer>1180</integer>
-			<key>Name</key><string>Stormy Weather</string>
-			<key>Artist</key><string>Nina Nastasia</string>
-			<key>Album</key><string>Dogs</string>
-			<key>Genre</key><string>Folk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2880246</integer>
-			<key>Total Time</key><integer>179879</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-02-23T21:00:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B86291</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nina%20Nastasia/Dogs/07%20Stormy%20Weather.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1181</key>
-		<dict>
-			<key>Track ID</key><integer>1181</integer>
-			<key>Name</key><string>Head Like A Hole</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7278240</integer>
-			<key>Total Time</key><integer>299604</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>21</integer>
-			<key>Play Date</key><integer>3253613968</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:39:28Z</date>
-			<key>Skip Count</key><integer>3</integer>
-			<key>Skip Date</key><date>2007-01-04T23:40:36Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86294</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/01%20Head%20Like%20A%20Hole.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1182</key>
-		<dict>
-			<key>Track ID</key><integer>1182</integer>
-			<key>Name</key><string>Terrible Lie</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6728629</integer>
-			<key>Total Time</key><integer>278932</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253366882</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:01:22Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T18:35:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86297</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/02%20Terrible%20Lie.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1183</key>
-		<dict>
-			<key>Track ID</key><integer>1183</integer>
-			<key>Name</key><string>Down In It</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5504111</integer>
-			<key>Total Time</key><integer>226366</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86299</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/03%20Down%20In%20It.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1184</key>
-		<dict>
-			<key>Track ID</key><integer>1184</integer>
-			<key>Name</key><string>Sanctified</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8459328</integer>
-			<key>Total Time</key><integer>348372</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252410721</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:25:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8629B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/04%20Sanctified.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1185</key>
-		<dict>
-			<key>Track ID</key><integer>1185</integer>
-			<key>Name</key><string>Something I Can Never Have</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8566488</integer>
-			<key>Total Time</key><integer>354900</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252480383</integer>
-			<key>Play Date UTC</key><date>2007-01-24T18:46:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8629D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/05%20Something%20I%20Can%20Never%20Have.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1186</key>
-		<dict>
-			<key>Track ID</key><integer>1186</integer>
-			<key>Name</key><string>Kinda I Want To</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6635820</integer>
-			<key>Total Time</key><integer>273065</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>23</integer>
-			<key>Play Date</key><integer>3252916245</integer>
-			<key>Play Date UTC</key><date>2007-01-29T19:50:45Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-27T03:11:02Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8629F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/06%20Kinda%20I%20Want%20To.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1187</key>
-		<dict>
-			<key>Track ID</key><integer>1187</integer>
-			<key>Name</key><string>Sin</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5920395</integer>
-			<key>Total Time</key><integer>246292</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253622205</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:56:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862A1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/07%20Sin.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1188</key>
-		<dict>
-			<key>Track ID</key><integer>1188</integer>
-			<key>Name</key><string>That's What I Get</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6515483</integer>
-			<key>Total Time</key><integer>270761</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253260051</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:20:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862A3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/08%20That's%20What%20I%20Get.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1189</key>
-		<dict>
-			<key>Track ID</key><integer>1189</integer>
-			<key>Name</key><string>The Only Time</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6990774</integer>
-			<key>Total Time</key><integer>287721</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252475944</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:32:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862A5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/09%20The%20Only%20Time.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1190</key>
-		<dict>
-			<key>Track ID</key><integer>1190</integer>
-			<key>Name</key><string>Ringfinger</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Composer</key><string>NIN</string>
-			<key>Album</key><string>Pretty Hate Machine</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8277201</integer>
-			<key>Total Time</key><integer>340841</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1989</integer>
-			<key>Date Modified</key><date>2004-07-26T00:56:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251521222</integer>
-			<key>Play Date UTC</key><date>2007-01-13T16:20:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862A7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/Pretty%20Hate%20Machine/10%20Ringfinger.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1191</key>
-		<dict>
-			<key>Track ID</key><integer>1191</integer>
-			<key>Name</key><string>Dead Souls</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3569019</integer>
-			<key>Total Time</key><integer>294164</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>24</integer>
-			<key>Play Date</key><integer>3252842106</integer>
-			<key>Play Date UTC</key><date>2007-01-28T23:15:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-22T18:53:46Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862A9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/The%20Crow/04%20Dead%20Souls.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1192</key>
-		<dict>
-			<key>Track ID</key><integer>1192</integer>
-			<key>Name</key><string>Closer</string>
-			<key>Artist</key><string>Nine Inch Nails</string>
-			<key>Album Artist</key><string>Nine Inch Nails</string>
-			<key>Album</key><string>The Downward Spiral</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6679110</integer>
-			<key>Total Time</key><integer>373027</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2005-10-31T23:44:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>28</integer>
-			<key>Play Date</key><integer>3253685750</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:35:50Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-05T22:48:53Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862AC</string>
-			<key>Explicit</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nine%20Inch%20Nails/The%20Downward%20Spiral/05%20Closer.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1193</key>
-		<dict>
-			<key>Track ID</key><integer>1193</integer>
-			<key>Name</key><string>Cold and Intimate [Nasha Experience Mix]</string>
-			<key>Artist</key><string>Nitin Sawhney</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4457537</integer>
-			<key>Total Time</key><integer>278204</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253599548</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:39:08Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T17:30:01Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862AF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Nitin%20Sawhney/Late%20Lounge%20(1%20of%202)/06%20Cold%20and%20Intimate%20%5BNasha%20Experience%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1194</key>
-		<dict>
-			<key>Track ID</key><integer>1194</integer>
-			<key>Name</key><string>Transient</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10551437</integer>
-			<key>Total Time</key><integer>348551</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:03:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>231</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246971023</integer>
-			<key>Play Date UTC</key><date>2006-11-22T00:23:43Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T22:59:22Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B862B2</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/01%20Transient.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1195</key>
-		<dict>
-			<key>Track ID</key><integer>1195</integer>
-			<key>Name</key><string>Pants</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9963445</integer>
-			<key>Total Time</key><integer>345129</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:03:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>220</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253082980</integer>
-			<key>Play Date UTC</key><date>2007-01-31T18:09:40Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-18T23:35:58Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B862B5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/02%20Pants.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1196</key>
-		<dict>
-			<key>Track ID</key><integer>1196</integer>
-			<key>Name</key><string>Tunnel Vision</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7472857</integer>
-			<key>Total Time</key><integer>267493</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:04:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:51Z</date>
-			<key>Bit Rate</key><integer>209</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B862B7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/03%20Tunnel%20Vision.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1197</key>
-		<dict>
-			<key>Track ID</key><integer>1197</integer>
-			<key>Name</key><string>Lost</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9189023</integer>
-			<key>Total Time</key><integer>308218</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:04:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>229</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250656556</integer>
-			<key>Play Date UTC</key><date>2007-01-03T16:09:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862B9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/04%20Lost.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1198</key>
-		<dict>
-			<key>Track ID</key><integer>1198</integer>
-			<key>Name</key><string>You Lot</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12098232</integer>
-			<key>Total Time</key><integer>428538</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:04:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>219</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253507669</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:07:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862BB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/05%20You%20Lot.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1199</key>
-		<dict>
-			<key>Track ID</key><integer>1199</integer>
-			<key>Name</key><string>Bath Time</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7562593</integer>
-			<key>Total Time</key><integer>258742</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:04:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>222</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862BD</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/06%20Bath%20Time.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1200</key>
-		<dict>
-			<key>Track ID</key><integer>1200</integer>
-			<key>Name</key><string>Acid Pants</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10485402</integer>
-			<key>Total Time</key><integer>391000</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:05:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>207</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247288179</integer>
-			<key>Play Date UTC</key><date>2006-11-25T16:29:39Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T23:20:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862BF</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/07%20Acid%20Pants.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1201</key>
-		<dict>
-			<key>Track ID</key><integer>1201</integer>
-			<key>Name</key><string>Easy Serv</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6656845</integer>
-			<key>Total Time</key><integer>249129</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:05:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>202</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862C1</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/08%20Easy%20Serv.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1202</key>
-		<dict>
-			<key>Track ID</key><integer>1202</integer>
-			<key>Name</key><string>One Perfect Sunrise</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>Blue Album [UK]</string>
-			<key>Genre</key><string>General Techno</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>14779311</integer>
-			<key>Total Time</key><integer>525191</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-03-22T00:05:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>219</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Ripped by Winamp</string>
-			<key>Play Count</key><integer>31</integer>
-			<key>Play Date</key><integer>3253772029</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:33:49Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862C3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Blue%20Album%20%5BUK%5D/09%20One%20Perfect%20Sunrise.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1203</key>
-		<dict>
-			<key>Track ID</key><integer>1203</integer>
-			<key>Name</key><string>Funny Break [One is Enough] (Plump DJ's Mix)</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Bedford/Bramley/Paul Hartnoll</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7701093</integer>
-			<key>Total Time</key><integer>320052</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253289863</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:37:43Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B862C5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/Community%20Service/05%20Funny%20Break%20%5BOne%20is%20Enough%5D%20(Plump%20DJ's%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1204</key>
-		<dict>
-			<key>Track ID</key><integer>1204</integer>
-			<key>Name</key><string>Satan [Industry Standard] [Industry Standard]</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>In Sides [2-CD] [U.S. Release #2] (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3563314</integer>
-			<key>Total Time</key><integer>221675</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>27</integer>
-			<key>Play Date</key><integer>3253115538</integer>
-			<key>Play Date UTC</key><date>2007-02-01T03:12:18Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862C7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/In%20Sides%20%5B2-CD%5D%20%5BU.S.%20Release%20%232%5D%20(2%20of%202)/01%20Satan%20%5BIndustry%20Standard%5D%20%5BIndustry%20Standard%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1205</key>
-		<dict>
-			<key>Track ID</key><integer>1205</integer>
-			<key>Name</key><string>Satan [Live in New York City] [Live in New York City]</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>In Sides [2-CD] [U.S. Release #2] (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6822977</integer>
-			<key>Total Time</key><integer>425404</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253159368</integer>
-			<key>Play Date UTC</key><date>2007-02-01T15:22:48Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-08T21:30:32Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862CA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/In%20Sides%20%5B2-CD%5D%20%5BU.S.%20Release%20%232%5D%20(2%20of%202)/02%20Satan%20%5BLive%20in%20New%20York%20City%5D%20%5BLive%20in%20New%20York%20City%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1206</key>
-		<dict>
-			<key>Track ID</key><integer>1206</integer>
-			<key>Name</key><string>Halcyon and On and On [Live]</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Album</key><string>In Sides [2-CD] [U.S. Release #2] (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8390742</integer>
-			<key>Total Time</key><integer>523389</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253771504</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:25:04Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862CC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/In%20Sides%20%5B2-CD%5D%20%5BU.S.%20Release%20%232%5D%20(2%20of%202)/05%20Halcyon%20and%20On%20and%20On%20%5BLive%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1207</key>
-		<dict>
-			<key>Track ID</key><integer>1207</integer>
-			<key>Name</key><string>Way Out</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>62033268</integer>
-			<key>Total Time</key><integer>480973</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-10-19T20:28:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>1031</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249295818</integer>
-			<key>Play Date UTC</key><date>2006-12-18T22:10:18Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T18:32:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B862CE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/01%20Way%20Out.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1208</key>
-		<dict>
-			<key>Track ID</key><integer>1208</integer>
-			<key>Name</key><string>Spare Parts Express</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>78709871</integer>
-			<key>Total Time</key><integer>607560</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-10-01T15:39:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>1035</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252571359</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:02:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B862D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/02%20Spare%20Parts%20Express.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1209</key>
-		<dict>
-			<key>Track ID</key><integer>1209</integer>
-			<key>Name</key><string>Know Where To Run</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>65364100</integer>
-			<key>Total Time</key><integer>582373</integer>
-			<key>Start Time</key><integer>120000</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2006-11-12T16:23:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>897</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253535289</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:48:09Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B862D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/03%20Know%20Where%20To%20Run.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1210</key>
-		<dict>
-			<key>Track ID</key><integer>1210</integer>
-			<key>Name</key><string>I Don't Know You People</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>55342465</integer>
-			<key>Total Time</key><integer>467533</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-09-27T12:54:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>946</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250622508</integer>
-			<key>Play Date UTC</key><date>2007-01-03T06:41:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B862D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/04%20I%20Don't%20Know%20You%20People.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1211</key>
-		<dict>
-			<key>Track ID</key><integer>1211</integer>
-			<key>Name</key><string>Otono</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>43645318</integer>
-			<key>Total Time</key><integer>348000</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-09-28T00:22:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>1002</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250603819</integer>
-			<key>Play Date UTC</key><date>2007-01-03T01:30:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B862D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/05%20Otono.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1212</key>
-		<dict>
-			<key>Track ID</key><integer>1212</integer>
-			<key>Name</key><string>Nothing Left 2</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>60938295</integer>
-			<key>Total Time</key><integer>501426</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-10-06T00:22:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>971</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252479584</integer>
-			<key>Play Date UTC</key><date>2007-01-24T18:33:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B862D9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/07%20Nothing%20Left%202.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1213</key>
-		<dict>
-			<key>Track ID</key><integer>1213</integer>
-			<key>Name</key><string>Style</string>
-			<key>Artist</key><string>Orbital</string>
-			<key>Composer</key><string>Hartnoll</string>
-			<key>Album</key><string>The Middle Of Nowhere</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>44306667</integer>
-			<key>Total Time</key><integer>384466</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1999</integer>
-			<key>Date Modified</key><date>2005-09-27T12:39:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>921</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B862DB</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Orbital/The%20Middle%20Of%20Nowhere/08%20Style.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1214</key>
-		<dict>
-			<key>Track ID</key><integer>1214</integer>
-			<key>Name</key><string>Overture/Going Through the Motions</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2131783</integer>
-			<key>Total Time</key><integer>176613</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862DD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/01%20Overture_Going%20Through%20the%20Motions.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1215</key>
-		<dict>
-			<key>Track ID</key><integer>1215</integer>
-			<key>Name</key><string>I've Got a Theory/Bunnies/If We're Together</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1712674</integer>
-			<key>Total Time</key><integer>141688</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253604694</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:04:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862E0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/02%20I've%20Got%20a%20Theory_Bunnies_If%20We're%20Together.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1216</key>
-		<dict>
-			<key>Track ID</key><integer>1216</integer>
-			<key>Name</key><string>The Mustard</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>244070</integer>
-			<key>Total Time</key><integer>19304</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250581081</integer>
-			<key>Play Date UTC</key><date>2007-01-02T19:11:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862E2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/03%20The%20Mustard.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1217</key>
-		<dict>
-			<key>Track ID</key><integer>1217</integer>
-			<key>Name</key><string>Under Your Spell</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2109526</integer>
-			<key>Total Time</key><integer>174759</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247036552</integer>
-			<key>Play Date UTC</key><date>2006-11-22T18:35:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-30T21:39:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862E4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/04%20Under%20Your%20Spell.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1218</key>
-		<dict>
-			<key>Track ID</key><integer>1218</integer>
-			<key>Name</key><string>I'll Never Tell</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2903231</integer>
-			<key>Total Time</key><integer>240901</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253334762</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:06:02Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T16:51:05Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862E6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/05%20I'll%20Never%20Tell.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1219</key>
-		<dict>
-			<key>Track ID</key><integer>1219</integer>
-			<key>Name</key><string>The Parking Ticket</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>551270</integer>
-			<key>Total Time</key><integer>44904</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252519873</integer>
-			<key>Play Date UTC</key><date>2007-01-25T05:44:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862E8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/06%20The%20Parking%20Ticket.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1220</key>
-		<dict>
-			<key>Track ID</key><integer>1220</integer>
-			<key>Name</key><string>Rest in Peace</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1997618</integer>
-			<key>Total Time</key><integer>165433</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250589789</integer>
-			<key>Play Date UTC</key><date>2007-01-02T21:36:29Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-09T21:12:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862EA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/07%20Rest%20in%20Peace.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1221</key>
-		<dict>
-			<key>Track ID</key><integer>1221</integer>
-			<key>Name</key><string>Dawn's Lament</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>960974</integer>
-			<key>Total Time</key><integer>79046</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253607952</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:59:12Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862EC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/08%20Dawn's%20Lament.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1222</key>
-		<dict>
-			<key>Track ID</key><integer>1222</integer>
-			<key>Name</key><string>Dawn's Ballet</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>880726</integer>
-			<key>Total Time</key><integer>72359</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250703547</integer>
-			<key>Play Date UTC</key><date>2007-01-04T05:12:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862EE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/09%20Dawn's%20Ballet.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1223</key>
-		<dict>
-			<key>Track ID</key><integer>1223</integer>
-			<key>Name</key><string>What You Feel</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2183192</integer>
-			<key>Total Time</key><integer>180897</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252509147</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:45:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862F0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/10%20What%20You%20Feel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1224</key>
-		<dict>
-			<key>Track ID</key><integer>1224</integer>
-			<key>Name</key><string>Standing</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1579763</integer>
-			<key>Total Time</key><integer>130612</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253461808</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:23:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862F2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/11%20Standing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1225</key>
-		<dict>
-			<key>Track ID</key><integer>1225</integer>
-			<key>Name</key><string>Under Your Spell/Standing (Reprise)</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1146235</integer>
-			<key>Total Time</key><integer>94484</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862F4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/12%20Under%20Your%20Spell_Standing%20(Reprise).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1226</key>
-		<dict>
-			<key>Track ID</key><integer>1226</integer>
-			<key>Name</key><string>Walk Through the Fire</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2698222</integer>
-			<key>Total Time</key><integer>223817</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252440325</integer>
-			<key>Play Date UTC</key><date>2007-01-24T07:38:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862F6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/13%20Walk%20Through%20the%20Fire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1227</key>
-		<dict>
-			<key>Track ID</key><integer>1227</integer>
-			<key>Name</key><string>Something to Sing About</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3373435</integer>
-			<key>Total Time</key><integer>280084</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251522050</integer>
-			<key>Play Date UTC</key><date>2007-01-13T16:34:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862F8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/14%20Something%20to%20Sing%20About.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1228</key>
-		<dict>
-			<key>Track ID</key><integer>1228</integer>
-			<key>Name</key><string>What You Feel (Reprise)</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>557539</integer>
-			<key>Total Time</key><integer>45426</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253622889</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:08:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862FA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/15%20What%20You%20Feel%20(Reprise).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1229</key>
-		<dict>
-			<key>Track ID</key><integer>1229</integer>
-			<key>Name</key><string>Where Do We Go From Here?</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1360648</integer>
-			<key>Total Time</key><integer>112352</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252503124</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:05:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862FC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/16%20Where%20Do%20We%20Go%20From%20Here_.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1230</key>
-		<dict>
-			<key>Track ID</key><integer>1230</integer>
-			<key>Name</key><string>Coda</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>506444</integer>
-			<key>Total Time</key><integer>41168</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253376764</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:46:04Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-15T00:35:12Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B862FE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/17%20Coda.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1231</key>
-		<dict>
-			<key>Track ID</key><integer>1231</integer>
-			<key>Name</key><string>End Credits: Broom Dance/Grr Argh</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>418986</integer>
-			<key>Total Time</key><integer>33880</integer>
-			<key>Track Number</key><integer>18</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253346148</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:15:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86300</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/18%20End%20Credits_%20Broom%20Dance_Grr%20Argh.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1232</key>
-		<dict>
-			<key>Track ID</key><integer>1232</integer>
-			<key>Name</key><string>Main Title</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>324005</integer>
-			<key>Total Time</key><integer>25965</integer>
-			<key>Track Number</key><integer>19</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86302</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/19%20Main%20Title.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1233</key>
-		<dict>
-			<key>Track ID</key><integer>1233</integer>
-			<key>Name</key><string>Suite From "Restless": Willow's Nightmare/First Rage/Chain of Ancients</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3665588</integer>
-			<key>Total Time</key><integer>304431</integer>
-			<key>Track Number</key><integer>20</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252488167</integer>
-			<key>Play Date UTC</key><date>2007-01-24T20:56:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86304</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/20%20Suite%20From%20_Restless__%20Willow's%20Nightmare_First%20Rage_Chain%20of%20Ancients.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1234</key>
-		<dict>
-			<key>Track ID</key><integer>1234</integer>
-			<key>Name</key><string>Suite From "Hush": Silent Night/First Kiss/Enter the Gentlemen/Schism</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5002222</integer>
-			<key>Total Time</key><integer>415817</integer>
-			<key>Track Number</key><integer>21</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247247557</integer>
-			<key>Play Date UTC</key><date>2006-11-25T05:12:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86306</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/21%20Suite%20From%20_Hush__%20Silent%20Night_First%20Kiss_Enter%20the%20Gentlemen_Schism.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1235</key>
-		<dict>
-			<key>Track ID</key><integer>1235</integer>
-			<key>Name</key><string>Sacrifice {From "The Gift"}</string>
-			<key>Artist</key><string>Original Television Soundtrack</string>
-			<key>Album</key><string>Buffy the Vampire Slayer: Once More With Feeling [Musical Episode Soundtrack]</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2144635</integer>
-			<key>Total Time</key><integer>177684</integer>
-			<key>Track Number</key><integer>22</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86308</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Original%20Television%20Soundtrack/Buffy%20the%20Vampire%20Slayer_%20Once%20More%20With%20Feeling%20%5BMusical%20Episode%20Soundtrack%5D/22%20Sacrifice%20%7BFrom%20_The%20Gift_%7D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1236</key>
-		<dict>
-			<key>Track ID</key><integer>1236</integer>
-			<key>Name</key><string>Boom (The Crystal Method Remix)</string>
-			<key>Artist</key><string>P.O.D.</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>P.O.D.</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5104940</integer>
-			<key>Total Time</key><integer>211879</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253084178</integer>
-			<key>Play Date UTC</key><date>2007-01-31T18:29:38Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B8630A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/P.O.D_/Community%20Service/09%20Boom%20(The%20Crystal%20Method%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1237</key>
-		<dict>
-			<key>Track ID</key><integer>1237</integer>
-			<key>Name</key><string>Hunkie Tunkie Blues</string>
-			<key>Artist</key><string>Paul Rishell &#38; Annie Raines</string>
-			<key>Album Artist</key><string>Paul Rishell/Annie Raines</string>
-			<key>Composer</key><string>Charlie Jordan/Raines/Rishell</string>
-			<key>Album</key><string>Goin' Home</string>
-			<key>Genre</key><string>Blues</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4219008</integer>
-			<key>Total Time</key><integer>210834</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T20:35:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B8630C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Rishell%20&#38;%20Annie%20Raines/Goin'%20Home/01%20Hunkie%20Tunkie%20Blues.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1238</key>
-		<dict>
-			<key>Track ID</key><integer>1238</integer>
-			<key>Name</key><string>Crush</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11212918</integer>
-			<key>Total Time</key><integer>466520</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252551942</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:39:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8630F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/01%20Crush.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1239</key>
-		<dict>
-			<key>Track ID</key><integer>1239</integer>
-			<key>Name</key><string>Times Of Our Lives</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6349053</integer>
-			<key>Total Time</key><integer>263183</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252410984</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:29:44Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B86312</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/02%20Times%20Of%20Our%20Lives.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1240</key>
-		<dict>
-			<key>Track ID</key><integer>1240</integer>
-			<key>Name</key><string>Like A Friend</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5640069</integer>
-			<key>Total Time</key><integer>234318</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253084412</integer>
-			<key>Play Date UTC</key><date>2007-01-31T18:33:32Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86314</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/03%20Like%20A%20Friend.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1241</key>
-		<dict>
-			<key>Track ID</key><integer>1241</integer>
-			<key>Name</key><string>Reflections</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10752126</integer>
-			<key>Total Time</key><integer>447320</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252940290</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:31:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86316</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/04%20Reflections.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1242</key>
-		<dict>
-			<key>Track ID</key><integer>1242</integer>
-			<key>Name</key><string>Nothing But You</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10032404</integer>
-			<key>Total Time</key><integer>417332</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247722657</integer>
-			<key>Play Date UTC</key><date>2006-11-30T17:10:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86318</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/05%20Nothing%20But%20You.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1243</key>
-		<dict>
-			<key>Track ID</key><integer>1243</integer>
-			<key>Name</key><string>Buenaventura</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12217909</integer>
-			<key>Total Time</key><integer>508395</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250666124</integer>
-			<key>Play Date UTC</key><date>2007-01-03T18:48:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8631A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/06%20Buenaventura.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1244</key>
-		<dict>
-			<key>Track ID</key><integer>1244</integer>
-			<key>Name</key><string>Homage</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5414991</integer>
-			<key>Total Time</key><integer>224940</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253255892</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:11:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8631C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/07%20Homage.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1245</key>
-		<dict>
-			<key>Track ID</key><integer>1245</integer>
-			<key>Name</key><string>Never Forget</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7851908</integer>
-			<key>Total Time</key><integer>326478</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253355146</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:45:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8631E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/08%20Never%20Forget.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1246</key>
-		<dict>
-			<key>Track ID</key><integer>1246</integer>
-			<key>Name</key><string>Knowledge</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5861374</integer>
-			<key>Total Time</key><integer>243539</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246108376</integer>
-			<key>Play Date UTC</key><date>2006-11-12T00:46:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86320</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/09%20Knowledge.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1247</key>
-		<dict>
-			<key>Track ID</key><integer>1247</integer>
-			<key>Name</key><string>That's Life</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5905263</integer>
-			<key>Total Time</key><integer>245368</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253527453</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:37:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86322</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/10%20That's%20Life.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1248</key>
-		<dict>
-			<key>Track ID</key><integer>1248</integer>
-			<key>Name</key><string>Connected</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9513920</integer>
-			<key>Total Time</key><integer>395728</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253550524</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:02:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86324</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/11%20Connected.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1249</key>
-		<dict>
-			<key>Track ID</key><integer>1249</integer>
-			<key>Name</key><string>Spellbound</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6803039</integer>
-			<key>Total Time</key><integer>282775</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253084695</integer>
-			<key>Play Date UTC</key><date>2007-01-31T18:38:15Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:43:05Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86326</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/12%20Spellbound.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1250</key>
-		<dict>
-			<key>Track ID</key><integer>1250</integer>
-			<key>Name</key><string>Kaleidoscope</string>
-			<key>Artist</key><string>Paul Van Dyk</string>
-			<key>Album</key><string>Reflections</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7020588</integer>
-			<key>Total Time</key><integer>291840</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:39:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252487001</integer>
-			<key>Play Date UTC</key><date>2007-01-24T20:36:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86328</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Paul%20Van%20Dyk/Reflections/13%20Kaleidoscope.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1251</key>
-		<dict>
-			<key>Track ID</key><integer>1251</integer>
-			<key>Name</key><string>Come Talk To Me</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5975649</integer>
-			<key>Total Time</key><integer>373342</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249552434</integer>
-			<key>Play Date UTC</key><date>2006-12-21T21:27:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B8632A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/01%20Come%20Talk%20To%20Me.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1252</key>
-		<dict>
-			<key>Track ID</key><integer>1252</integer>
-			<key>Name</key><string>Steam</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7407577</integer>
-			<key>Total Time</key><integer>462837</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253457079</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:04:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8632D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/02%20Steam.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1253</key>
-		<dict>
-			<key>Track ID</key><integer>1253</integer>
-			<key>Name</key><string>Across The River</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5708573</integer>
-			<key>Total Time</key><integer>356649</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253451031</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:23:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B8632F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/03%20Across%20The%20River.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1254</key>
-		<dict>
-			<key>Track ID</key><integer>1254</integer>
-			<key>Name</key><string>Slow Marimbas</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1696165</integer>
-			<key>Total Time</key><integer>105874</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B86331</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/04%20Slow%20Marimbas.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1255</key>
-		<dict>
-			<key>Track ID</key><integer>1255</integer>
-			<key>Name</key><string>Shaking The Tree</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8936889</integer>
-			<key>Total Time</key><integer>558419</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253603856</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:50:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B86333</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/05%20Shaking%20The%20Tree.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1256</key>
-		<dict>
-			<key>Track ID</key><integer>1256</integer>
-			<key>Name</key><string>Red Rain</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6000726</integer>
-			<key>Total Time</key><integer>374909</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252490964</integer>
-			<key>Play Date UTC</key><date>2007-01-24T21:42:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B86335</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/06%20Red%20Rain.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1257</key>
-		<dict>
-			<key>Track ID</key><integer>1257</integer>
-			<key>Name</key><string>Blood Of Eden</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6682418</integer>
-			<key>Total Time</key><integer>417515</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246375131</integer>
-			<key>Play Date UTC</key><date>2006-11-15T02:52:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B86337</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/07%20Blood%20Of%20Eden.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1258</key>
-		<dict>
-			<key>Track ID</key><integer>1258</integer>
-			<key>Name</key><string>Washing Of The Water</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3953144</integer>
-			<key>Total Time</key><integer>246935</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247741585</integer>
-			<key>Play Date UTC</key><date>2006-11-30T22:26:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B86339</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/09%20Washing%20Of%20The%20Water.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1259</key>
-		<dict>
-			<key>Track ID</key><integer>1259</integer>
-			<key>Name</key><string>Solsbury Hill</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 1)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4541213</integer>
-			<key>Total Time</key><integer>283689</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253684569</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:16:09Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8633B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%201)/10%20Solsbury%20Hill.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1260</key>
-		<dict>
-			<key>Track ID</key><integer>1260</integer>
-			<key>Name</key><string>Digging in the Dirt</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 2)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7301415</integer>
-			<key>Total Time</key><integer>456202</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>33</integer>
-			<key>Play Date</key><integer>3253713354</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:15:54Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B8633D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%202)/01%20Digging%20in%20the%20Dirt.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1261</key>
-		<dict>
-			<key>Track ID</key><integer>1261</integer>
-			<key>Name</key><string>Sledgehammer</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 2)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4789480</integer>
-			<key>Total Time</key><integer>299206</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253684285</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:11:25Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-14T19:26:26Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86340</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%202)/02%20Sledgehammer.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1262</key>
-		<dict>
-			<key>Track ID</key><integer>1262</integer>
-			<key>Name</key><string>Secret World</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 2)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8821533</integer>
-			<key>Total Time</key><integer>551209</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253506174</integer>
-			<key>Play Date UTC</key><date>2007-02-05T15:42:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B86342</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%202)/03%20Secret%20World.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1263</key>
-		<dict>
-			<key>Track ID</key><integer>1263</integer>
-			<key>Name</key><string>Don't Give Up</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 2)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7283861</integer>
-			<key>Total Time</key><integer>455105</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247638660</integer>
-			<key>Play Date UTC</key><date>2006-11-29T17:51:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B86344</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%202)/04%20Don't%20Give%20Up.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1264</key>
-		<dict>
-			<key>Track ID</key><integer>1264</integer>
-			<key>Name</key><string>In Your Eyes</string>
-			<key>Artist</key><string>Peter Gabriel</string>
-			<key>Album</key><string>Secret World Live (Disc 2)</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11113621</integer>
-			<key>Total Time</key><integer>694465</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246429099</integer>
-			<key>Play Date UTC</key><date>2006-11-15T17:51:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B86346</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Peter%20Gabriel/Secret%20World%20Live%20(Disc%202)/05%20In%20Your%20Eyes.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1265</key>
-		<dict>
-			<key>Track ID</key><integer>1265</integer>
-			<key>Name</key><string>Fat Old Sun</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Atom Heart Mother</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7651375</integer>
-			<key>Total Time</key><integer>318040</integer>
-			<key>Year</key><integer>1970</integer>
-			<key>Date Modified</key><date>2004-11-29T13:44:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253282493</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:34:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86348</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Atom%20Heart%20Mother/Fat%20Old%20Sun.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1266</key>
-		<dict>
-			<key>Track ID</key><integer>1266</integer>
-			<key>Name</key><string>Speak to Me/Breathe in the Air</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3883512</integer>
-			<key>Total Time</key><integer>240535</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246901162</integer>
-			<key>Play Date UTC</key><date>2006-11-21T04:59:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8634B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/01%20Speak%20to%20Me_Breathe%20in%20the%20Air.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1267</key>
-		<dict>
-			<key>Track ID</key><integer>1267</integer>
-			<key>Name</key><string>On the Run</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3439305</integer>
-			<key>Total Time</key><integer>213028</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249535045</integer>
-			<key>Play Date UTC</key><date>2006-12-21T16:37:25Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:46:36Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8634E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/02%20On%20the%20Run.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1268</key>
-		<dict>
-			<key>Track ID</key><integer>1268</integer>
-			<key>Name</key><string>Time</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6877814</integer>
-			<key>Total Time</key><integer>426527</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251637837</integer>
-			<key>Play Date UTC</key><date>2007-01-15T00:43:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86350</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/03%20Time.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1269</key>
-		<dict>
-			<key>Track ID</key><integer>1269</integer>
-			<key>Name</key><string>The Great Gig in the Sky</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4584346</integer>
-			<key>Total Time</key><integer>284081</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251303370</integer>
-			<key>Play Date UTC</key><date>2007-01-11T03:49:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-20T17:46:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86352</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/04%20The%20Great%20Gig%20in%20the%20Sky.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1270</key>
-		<dict>
-			<key>Track ID</key><integer>1270</integer>
-			<key>Name</key><string>Money</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6322011</integer>
-			<key>Total Time</key><integer>392045</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:28:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253277268</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:07:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86354</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/05%20Money.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1271</key>
-		<dict>
-			<key>Track ID</key><integer>1271</integer>
-			<key>Name</key><string>Us and Them</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7429060</integer>
-			<key>Total Time</key><integer>460852</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251888938</integer>
-			<key>Play Date UTC</key><date>2007-01-17T22:28:58Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T20:06:54Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86356</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/06%20Us%20and%20Them.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1272</key>
-		<dict>
-			<key>Track ID</key><integer>1272</integer>
-			<key>Name</key><string>Any Colour You Like</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3321023</integer>
-			<key>Total Time</key><integer>205635</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:52Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246598715</integer>
-			<key>Play Date UTC</key><date>2006-11-17T16:58:35Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T20:06:58Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86358</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/07%20Any%20Colour%20You%20Like.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1273</key>
-		<dict>
-			<key>Track ID</key><integer>1273</integer>
-			<key>Name</key><string>Brain Damage</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3721386</integer>
-			<key>Total Time</key><integer>230530</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8635A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/08%20Brain%20Damage.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1274</key>
-		<dict>
-			<key>Track ID</key><integer>1274</integer>
-			<key>Name</key><string>Eclipse</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Dark Side of the Moon</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2012560</integer>
-			<key>Total Time</key><integer>124368</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252990314</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:25:14Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8635C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Dark%20Side%20of%20the%20Moon/09%20Eclipse.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1275</key>
-		<dict>
-			<key>Track ID</key><integer>1275</integer>
-			<key>Name</key><string>Shine On You Crazy Diamond</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>17298577</integer>
-			<key>Total Time</key><integer>713364</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253459099</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:38:19Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8635E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-01%20Shine%20On%20You%20Crazy%20Diamond.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1276</key>
-		<dict>
-			<key>Track ID</key><integer>1276</integer>
-			<key>Name</key><string>Learning To Fly</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7941761</integer>
-			<key>Total Time</key><integer>326974</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253254553</integer>
-			<key>Play Date UTC</key><date>2007-02-02T17:49:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86361</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-02%20Learning%20To%20Fly.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1277</key>
-		<dict>
-			<key>Track ID</key><integer>1277</integer>
-			<key>Name</key><string>Yet Another Movie</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9258043</integer>
-			<key>Total Time</key><integer>381332</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253339706</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:28:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86363</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-03%20Yet%20Another%20Movie.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1278</key>
-		<dict>
-			<key>Track ID</key><integer>1278</integer>
-			<key>Name</key><string>Round And Around</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>855365</integer>
-			<key>Total Time</key><integer>33428</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246441280</integer>
-			<key>Play Date UTC</key><date>2006-11-15T21:14:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86365</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-04%20Round%20And%20Around.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1279</key>
-		<dict>
-			<key>Track ID</key><integer>1279</integer>
-			<key>Name</key><string>Sorrow</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>13792301</integer>
-			<key>Total Time</key><integer>568574</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246877169</integer>
-			<key>Play Date UTC</key><date>2006-11-20T22:19:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86367</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-05%20Sorrow.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1280</key>
-		<dict>
-			<key>Track ID</key><integer>1280</integer>
-			<key>Name</key><string>The Dogs Of War</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10639552</integer>
-			<key>Total Time</key><integer>438377</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253593673</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:01:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86369</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-06%20The%20Dogs%20Of%20War.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1281</key>
-		<dict>
-			<key>Track ID</key><integer>1281</integer>
-			<key>Name</key><string>On The Turning Away</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Pink Floyd</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11620814</integer>
-			<key>Total Time</key><integer>478910</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>7</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249566629</integer>
-			<key>Play Date UTC</key><date>2006-12-22T01:23:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8636B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%201)/1-07%20On%20The%20Turning%20Away.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1282</key>
-		<dict>
-			<key>Track ID</key><integer>1282</integer>
-			<key>Name</key><string>One Of These Days</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Nick Mason &#38; David Gilmour &#38; Roger Waters &#38; Richard Wright</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9127395</integer>
-			<key>Total Time</key><integer>375934</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247503043</integer>
-			<key>Play Date UTC</key><date>2006-11-28T04:10:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8636D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-01%20One%20Of%20These%20Days.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1283</key>
-		<dict>
-			<key>Track ID</key><integer>1283</integer>
-			<key>Name</key><string>Time</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Nick Mason &#38; Roger Waters &#38; Richard Wright &#38; David Gilmour</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7687856</integer>
-			<key>Total Time</key><integer>316478</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253367199</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:06:39Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86370</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-02%20Time.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1284</key>
-		<dict>
-			<key>Track ID</key><integer>1284</integer>
-			<key>Name</key><string>Wish You Where Here</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters &#38; David Gilmour</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7025309</integer>
-			<key>Total Time</key><integer>289129</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253555307</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:21:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86372</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-03%20Wish%20You%20Where%20Here.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1285</key>
-		<dict>
-			<key>Track ID</key><integer>1285</integer>
-			<key>Name</key><string>Us And Them</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters &#38; Richard Wright</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10727453</integer>
-			<key>Total Time</key><integer>442004</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253370127</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:55:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86374</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-04%20Us%20And%20Them.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1286</key>
-		<dict>
-			<key>Track ID</key><integer>1286</integer>
-			<key>Name</key><string>Money</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>14361813</integer>
-			<key>Total Time</key><integer>592105</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253552229</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:30:29Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T15:53:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86376</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-05%20Money.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1287</key>
-		<dict>
-			<key>Track ID</key><integer>1287</integer>
-			<key>Name</key><string>Another Brick In The Wall</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7989055</integer>
-			<key>Total Time</key><integer>328937</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253382657</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:24:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86378</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-06%20Another%20Brick%20In%20The%20Wall.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1288</key>
-		<dict>
-			<key>Track ID</key><integer>1288</integer>
-			<key>Name</key><string>Comfortably Numb</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Roger Waters</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>13014874</integer>
-			<key>Total Time</key><integer>536468</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253538463</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:41:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8637A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-07%20Comfortably%20Numb.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1289</key>
-		<dict>
-			<key>Track ID</key><integer>1289</integer>
-			<key>Name</key><string>Run Like Hell</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Roger Waters</string>
-			<key>Album</key><string>Delicate Sound Of Thunder (Disc 2) [Live]</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10500557</integer>
-			<key>Total Time</key><integer>432638</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-25T15:12:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253552662</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:37:42Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8637C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Delicate%20Sound%20Of%20Thunder%20(Disc%202)%20%5BLive%5D/2-08%20Run%20Like%20Hell.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1290</key>
-		<dict>
-			<key>Track ID</key><integer>1290</integer>
-			<key>Name</key><string>Obscured by Clouds</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4503840</integer>
-			<key>Total Time</key><integer>184510</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253596591</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:49:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8637E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/01%20Obscured%20by%20Clouds.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1291</key>
-		<dict>
-			<key>Track ID</key><integer>1291</integer>
-			<key>Name</key><string>When You're In</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3688671</integer>
-			<key>Total Time</key><integer>150569</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253690424</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:53:44Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T15:55:37Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86381</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/02%20When%20You're%20In.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1292</key>
-		<dict>
-			<key>Track ID</key><integer>1292</integer>
-			<key>Name</key><string>Burning Bridges</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5100991</integer>
-			<key>Total Time</key><integer>209364</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250595160</integer>
-			<key>Play Date UTC</key><date>2007-01-02T23:06:00Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-13T00:23:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86383</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/03%20Burning%20Bridges.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1293</key>
-		<dict>
-			<key>Track ID</key><integer>1293</integer>
-			<key>Name</key><string>The Gold It's In The . . .</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4563889</integer>
-			<key>Total Time</key><integer>187006</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253474578</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:56:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86385</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/04%20The%20Gold%20It's%20In%20The%20.%20.%20..m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1294</key>
-		<dict>
-			<key>Track ID</key><integer>1294</integer>
-			<key>Name</key><string>Wot's . . . Uh The Deal</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7480007</integer>
-			<key>Total Time</key><integer>307902</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247037468</integer>
-			<key>Play Date UTC</key><date>2006-11-22T18:51:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86387</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/05%20Wot's%20.%20.%20.%20Uh%20The%20Deal.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1295</key>
-		<dict>
-			<key>Track ID</key><integer>1295</integer>
-			<key>Name</key><string>Mudmen</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6323260</integer>
-			<key>Total Time</key><integer>260137</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252034116</integer>
-			<key>Play Date UTC</key><date>2007-01-19T14:48:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86389</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/06%20Mudmen.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1296</key>
-		<dict>
-			<key>Track ID</key><integer>1296</integer>
-			<key>Name</key><string>Childhood's End</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6611526</integer>
-			<key>Total Time</key><integer>272041</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246898241</integer>
-			<key>Play Date UTC</key><date>2006-11-21T04:10:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8638B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/07%20Childhood's%20End.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1297</key>
-		<dict>
-			<key>Track ID</key><integer>1297</integer>
-			<key>Name</key><string>Free Four</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6198220</integer>
-			<key>Total Time</key><integer>254974</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253464511</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:08:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8638D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/08%20Free%20Four.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1298</key>
-		<dict>
-			<key>Track ID</key><integer>1298</integer>
-			<key>Name</key><string>Stay</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5970538</integer>
-			<key>Total Time</key><integer>245566</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253549221</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:40:21Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T22:17:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8638F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/09%20Stay.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1299</key>
-		<dict>
-			<key>Track ID</key><integer>1299</integer>
-			<key>Name</key><string>Absolutely Curtains</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>Obscured by Clouds</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8535663</integer>
-			<key>Total Time</key><integer>351508</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1972</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246629792</integer>
-			<key>Play Date UTC</key><date>2006-11-18T01:36:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86391</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/Obscured%20by%20Clouds/10%20Absolutely%20Curtains.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1300</key>
-		<dict>
-			<key>Track ID</key><integer>1300</integer>
-			<key>Name</key><string>Cluster One</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Richard Wright &#38; David Gilmour</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8720677</integer>
-			<key>Total Time</key><integer>358334</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250586332</integer>
-			<key>Play Date UTC</key><date>2007-01-02T20:38:52Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B86393</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/01%20Cluster%20One.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1301</key>
-		<dict>
-			<key>Track ID</key><integer>1301</integer>
-			<key>Name</key><string>What Do You Want From Me</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Richard Wright &#38; Polly Samson</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6378150</integer>
-			<key>Total Time</key><integer>261609</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251464469</integer>
-			<key>Play Date UTC</key><date>2007-01-13T00:34:29Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B86396</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/02%20What%20Do%20You%20Want%20From%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1302</key>
-		<dict>
-			<key>Track ID</key><integer>1302</integer>
-			<key>Name</key><string>Poles Apart</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Polly Samson &#38; Nick Laird-Clowes</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10311617</integer>
-			<key>Total Time</key><integer>424041</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253475432</integer>
-			<key>Play Date UTC</key><date>2007-02-05T07:10:32Z</date>
-			<key>Artwork Count</key><integer>2</integer>
-			<key>Persistent ID</key><string>87139F8602B86398</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/03%20Poles%20Apart.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1303</key>
-		<dict>
-			<key>Track ID</key><integer>1303</integer>
-			<key>Name</key><string>Marooned</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Richard Wright &#38; David Gilmour</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8004779</integer>
-			<key>Total Time</key><integer>329577</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252544407</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:33:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8639A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/04%20Marooned.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1304</key>
-		<dict>
-			<key>Track ID</key><integer>1304</integer>
-			<key>Name</key><string>A Great Day For Freedom</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Polly Samson</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6261845</integer>
-			<key>Total Time</key><integer>257598</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252505813</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:50:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8639C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/05%20A%20Great%20Day%20For%20Freedom.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1305</key>
-		<dict>
-			<key>Track ID</key><integer>1305</integer>
-			<key>Name</key><string>Wearing The Inside Out</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Richard Wright &#38; Anthony Moore</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9939620</integer>
-			<key>Total Time</key><integer>409470</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252579429</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:17:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8639E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/06%20Wearing%20The%20Inside%20Out.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1306</key>
-		<dict>
-			<key>Track ID</key><integer>1306</integer>
-			<key>Name</key><string>Take It Back</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Bob Ezrin</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9041061</integer>
-			<key>Total Time</key><integer>372372</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252563247</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:47:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863A0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/07%20Take%20It%20Back.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1307</key>
-		<dict>
-			<key>Track ID</key><integer>1307</integer>
-			<key>Name</key><string>Coming Back To Life</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9211025</integer>
-			<key>Total Time</key><integer>379390</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:13:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249458944</integer>
-			<key>Play Date UTC</key><date>2006-12-20T19:29:04Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-20T20:23:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863A2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/08%20Coming%20Back%20To%20Life.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1308</key>
-		<dict>
-			<key>Track ID</key><integer>1308</integer>
-			<key>Name</key><string>Keep Talking</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Richard Wright &#38; Polly Samson</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9009707</integer>
-			<key>Total Time</key><integer>371070</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250573664</integer>
-			<key>Play Date UTC</key><date>2007-01-02T17:07:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863A4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/09%20Keep%20Talking.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1309</key>
-		<dict>
-			<key>Track ID</key><integer>1309</integer>
-			<key>Name</key><string>Lost For Words</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Polly Samson</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7649511</integer>
-			<key>Total Time</key><integer>314900</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249207817</integer>
-			<key>Play Date UTC</key><date>2006-12-17T21:43:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863A6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/10%20Lost%20For%20Words.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1310</key>
-		<dict>
-			<key>Track ID</key><integer>1310</integer>
-			<key>Name</key><string>High Hopes</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour &#38; Polly Samson</string>
-			<key>Album</key><string>The Division Bell</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>12424828</integer>
-			<key>Total Time</key><integer>512297</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251482960</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:42:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Division%20Bell/11%20High%20Hopes.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1311</key>
-		<dict>
-			<key>Track ID</key><integer>1311</integer>
-			<key>Name</key><string>The hero's return</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>The Final Cut</string>
-			<key>Genre</key><string>Progressive</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5697547</integer>
-			<key>Total Time</key><integer>177554</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1983</integer>
-			<key>Date Modified</key><date>2004-11-29T13:42:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253595621</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:33:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863AA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Final%20Cut/04%20The%20hero's%20return.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1312</key>
-		<dict>
-			<key>Track ID</key><integer>1312</integer>
-			<key>Name</key><string>The gunners dream</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>The Final Cut</string>
-			<key>Genre</key><string>Progressive</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9750915</integer>
-			<key>Total Time</key><integer>304222</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1983</integer>
-			<key>Date Modified</key><date>2004-11-29T13:42:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252542677</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:04:37Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-02-05T19:11:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863AD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Final%20Cut/05%20The%20gunners%20dream.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1313</key>
-		<dict>
-			<key>Track ID</key><integer>1313</integer>
-			<key>Name</key><string>Paranoid eyes</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>The Final Cut</string>
-			<key>Genre</key><string>Progressive</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7356005</integer>
-			<key>Total Time</key><integer>229381</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1983</integer>
-			<key>Date Modified</key><date>2004-11-29T13:43:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252557413</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:10:13Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T16:45:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863AF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Final%20Cut/06%20Paranoid%20eyes.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1314</key>
-		<dict>
-			<key>Track ID</key><integer>1314</integer>
-			<key>Name</key><string>Not Now John</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Album</key><string>The Final Cut</string>
-			<key>Genre</key><string>Progressive</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9702428</integer>
-			<key>Total Time</key><integer>302706</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1983</integer>
-			<key>Date Modified</key><date>2004-11-29T13:44:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247821533</integer>
-			<key>Play Date UTC</key><date>2006-12-01T20:38:53Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T16:22:28Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863B1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Final%20Cut/11%20Not%20Now%20John.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1315</key>
-		<dict>
-			<key>Track ID</key><integer>1315</integer>
-			<key>Name</key><string>In The Flesh?</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4857068</integer>
-			<key>Total Time</key><integer>199529</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251465226</integer>
-			<key>Play Date UTC</key><date>2007-01-13T00:47:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863B3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-01%20In%20The%20Flesh_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1316</key>
-		<dict>
-			<key>Track ID</key><integer>1316</integer>
-			<key>Name</key><string>The Thin Ice</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3652212</integer>
-			<key>Total Time</key><integer>149865</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863B6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-02%20The%20Thin%20Ice.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1317</key>
-		<dict>
-			<key>Track ID</key><integer>1317</integer>
-			<key>Name</key><string>Another Brick In The Wall (Part 1)</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4646266</integer>
-			<key>Total Time</key><integer>190761</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252495004</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:50:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863B8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-03%20Another%20Brick%20In%20The%20Wall%20(Part%201).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1318</key>
-		<dict>
-			<key>Track ID</key><integer>1318</integer>
-			<key>Name</key><string>The Happiest Days Of Our Lives</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2720582</integer>
-			<key>Total Time</key><integer>111060</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246470098</integer>
-			<key>Play Date UTC</key><date>2006-11-16T05:14:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863BA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-04%20The%20Happiest%20Days%20Of%20Our%20Lives.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1319</key>
-		<dict>
-			<key>Track ID</key><integer>1319</integer>
-			<key>Name</key><string>Another Brick In The Wall (Part 2)</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5846025</integer>
-			<key>Total Time</key><integer>240702</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252390495</integer>
-			<key>Play Date UTC</key><date>2007-01-23T17:48:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863BC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-05%20Another%20Brick%20In%20The%20Wall%20(Part%202).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1320</key>
-		<dict>
-			<key>Track ID</key><integer>1320</integer>
-			<key>Name</key><string>Mother</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8032893</integer>
-			<key>Total Time</key><integer>333673</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253508629</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:23:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863BE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-06%20Mother.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1321</key>
-		<dict>
-			<key>Track ID</key><integer>1321</integer>
-			<key>Name</key><string>Goodbye Blue Sky</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4133289</integer>
-			<key>Total Time</key><integer>169897</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252290257</integer>
-			<key>Play Date UTC</key><date>2007-01-22T13:57:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863C0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-07%20Goodbye%20Blue%20Sky.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1322</key>
-		<dict>
-			<key>Track ID</key><integer>1322</integer>
-			<key>Name</key><string>Empty Spaces</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3106013</integer>
-			<key>Total Time</key><integer>127124</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252559685</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:48:05Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863C2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-08%20Empty%20Spaces.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1323</key>
-		<dict>
-			<key>Track ID</key><integer>1323</integer>
-			<key>Name</key><string>Young Lust</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5181209</integer>
-			<key>Total Time</key><integer>213033</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251485155</integer>
-			<key>Play Date UTC</key><date>2007-01-13T06:19:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863C4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-09%20Young%20Lust.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1324</key>
-		<dict>
-			<key>Track ID</key><integer>1324</integer>
-			<key>Name</key><string>One Of My Turns</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5220664</integer>
-			<key>Total Time</key><integer>214676</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252930367</integer>
-			<key>Play Date UTC</key><date>2007-01-29T23:46:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863C6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-10%20One%20Of%20My%20Turns.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1325</key>
-		<dict>
-			<key>Track ID</key><integer>1325</integer>
-			<key>Name</key><string>Don't Leave Me Now</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6231939</integer>
-			<key>Total Time</key><integer>256724</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253257378</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:36:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863C8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-11%20Don't%20Leave%20Me%20Now.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1326</key>
-		<dict>
-			<key>Track ID</key><integer>1326</integer>
-			<key>Name</key><string>Another Brick In The Wall (Part 3)</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>1914047</integer>
-			<key>Total Time</key><integer>77502</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252501224</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:33:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863CA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-12%20Another%20Brick%20In%20The%20Wall%20(Part%203).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1327</key>
-		<dict>
-			<key>Track ID</key><integer>1327</integer>
-			<key>Name</key><string>Goodbye Cruel World</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 1)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>1842679</integer>
-			<key>Total Time</key><integer>74601</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252414016</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:20:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863CC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%201)/1-13%20Goodbye%20Cruel%20World.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1328</key>
-		<dict>
-			<key>Track ID</key><integer>1328</integer>
-			<key>Name</key><string>Hey You</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Bob Ezrin/Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6828584</integer>
-			<key>Total Time</key><integer>281321</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250684523</integer>
-			<key>Play Date UTC</key><date>2007-01-03T23:55:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863CE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-01%20Hey%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1329</key>
-		<dict>
-			<key>Track ID</key><integer>1329</integer>
-			<key>Name</key><string>Is There Anybody Out There?</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4322707</integer>
-			<key>Total Time</key><integer>177769</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252482160</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:16:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-02%20Is%20There%20Anybody%20Out%20There_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1330</key>
-		<dict>
-			<key>Track ID</key><integer>1330</integer>
-			<key>Name</key><string>Nobody Home</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4670299</integer>
-			<key>Total Time</key><integer>191764</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253554644</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:10:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-03%20Nobody%20Home.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1331</key>
-		<dict>
-			<key>Track ID</key><integer>1331</integer>
-			<key>Name</key><string>Vera</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2201762</integer>
-			<key>Total Time</key><integer>89470</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247249904</integer>
-			<key>Play Date UTC</key><date>2006-11-25T05:51:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-04%20Vera.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1332</key>
-		<dict>
-			<key>Track ID</key><integer>1332</integer>
-			<key>Name</key><string>Bring The Boys Back Home</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2122290</integer>
-			<key>Total Time</key><integer>86164</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:14:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252506183</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:56:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-05%20Bring%20The%20Boys%20Back%20Home.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1333</key>
-		<dict>
-			<key>Track ID</key><integer>1333</integer>
-			<key>Name</key><string>Comfortably Numb</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9265135</integer>
-			<key>Total Time</key><integer>383934</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253385406</integer>
-			<key>Play Date UTC</key><date>2007-02-04T06:10:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863D9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-06%20Comfortably%20Numb.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1334</key>
-		<dict>
-			<key>Track ID</key><integer>1334</integer>
-			<key>Name</key><string>The Show Must Go On</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2386309</integer>
-			<key>Total Time</key><integer>97150</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252485217</integer>
-			<key>Play Date UTC</key><date>2007-01-24T20:06:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863DB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-07%20The%20Show%20Must%20Go%20On.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1335</key>
-		<dict>
-			<key>Track ID</key><integer>1335</integer>
-			<key>Name</key><string>In The Flesh</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6197108</integer>
-			<key>Total Time</key><integer>255252</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863DD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-08%20In%20The%20Flesh.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1336</key>
-		<dict>
-			<key>Track ID</key><integer>1336</integer>
-			<key>Name</key><string>Run Like Hell</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>David Gilmour</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6331484</integer>
-			<key>Total Time</key><integer>260798</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249531144</integer>
-			<key>Play Date UTC</key><date>2006-12-21T15:32:24Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-26T19:37:59Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863DF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-09%20Run%20Like%20Hell.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1337</key>
-		<dict>
-			<key>Track ID</key><integer>1337</integer>
-			<key>Name</key><string>Waiting For The Worms</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5867269</integer>
-			<key>Total Time</key><integer>241598</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253615423</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:03:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863E1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-10%20Waiting%20For%20The%20Worms.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1338</key>
-		<dict>
-			<key>Track ID</key><integer>1338</integer>
-			<key>Name</key><string>Stop</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>805419</integer>
-			<key>Total Time</key><integer>31358</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253453673</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:07:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863E3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-11%20Stop.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1339</key>
-		<dict>
-			<key>Track ID</key><integer>1339</integer>
-			<key>Name</key><string>The Trial</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Bob Ezrin</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7744912</integer>
-			<key>Total Time</key><integer>319166</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247663266</integer>
-			<key>Play Date UTC</key><date>2006-11-30T00:41:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863E5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-12%20The%20Trial.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1340</key>
-		<dict>
-			<key>Track ID</key><integer>1340</integer>
-			<key>Name</key><string>Outside The Wall</string>
-			<key>Artist</key><string>Pink Floyd</string>
-			<key>Composer</key><string>Roger Waters</string>
-			<key>Album</key><string>The Wall (Disc 2)</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2564671</integer>
-			<key>Total Time</key><integer>104617</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-07-25T15:15:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:53Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247498558</integer>
-			<key>Play Date UTC</key><date>2006-11-28T02:55:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B863E7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Pink%20Floyd/The%20Wall%20(Disc%202)/2-13%20Outside%20The%20Wall.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1341</key>
-		<dict>
-			<key>Track ID</key><integer>1341</integer>
-			<key>Name</key><string>Angelika Suspended</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4885314</integer>
-			<key>Total Time</key><integer>201193</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:38:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253346114</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:15:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B86441</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-01%20Angelika%20Suspended.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1342</key>
-		<dict>
-			<key>Track ID</key><integer>1342</integer>
-			<key>Name</key><string>Postcard From A Dream</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6292802</integer>
-			<key>Total Time</key><integer>259646</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:39:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253623724</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:22:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B86444</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-02%20Postcard%20From%20A%20Dream.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1343</key>
-		<dict>
-			<key>Track ID</key><integer>1343</integer>
-			<key>Name</key><string>Living With The Dreaming Body</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5796706</integer>
-			<key>Total Time</key><integer>239145</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:40:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249111203</integer>
-			<key>Play Date UTC</key><date>2006-12-16T18:53:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B86446</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-03%20Living%20With%20The%20Dreaming%20Body.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1344</key>
-		<dict>
-			<key>Track ID</key><integer>1344</integer>
-			<key>Name</key><string>Catacombs</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7121349</integer>
-			<key>Total Time</key><integer>293865</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:40:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253526972</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:29:32Z</date>
-			<key>Persistent ID</key><string>87139F8602B86448</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-04%20Catacombs.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1345</key>
-		<dict>
-			<key>Track ID</key><integer>1345</integer>
-			<key>Name</key><string>Sugarbush Cushman</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3855179</integer>
-			<key>Total Time</key><integer>158313</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:41:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252924099</integer>
-			<key>Play Date UTC</key><date>2007-01-29T22:01:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B8644A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-05%20Sugarbush%20Cushman.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1346</key>
-		<dict>
-			<key>Track ID</key><integer>1346</integer>
-			<key>Name</key><string>Lay My Love</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10150169</integer>
-			<key>Total Time</key><integer>418942</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:42:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253518135</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:02:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B8644C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-06%20Lay%20My%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1347</key>
-		<dict>
-			<key>Track ID</key><integer>1347</integer>
-			<key>Name</key><string>Everybody's Trying</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9131198</integer>
-			<key>Total Time</key><integer>376852</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:43:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246620132</integer>
-			<key>Play Date UTC</key><date>2006-11-17T22:55:32Z</date>
-			<key>Persistent ID</key><string>87139F8602B8644E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-07%20Everybody's%20Trying.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1348</key>
-		<dict>
-			<key>Track ID</key><integer>1348</integer>
-			<key>Name</key><string>Tall</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4785688</integer>
-			<key>Total Time</key><integer>197054</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:44:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252562220</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:30:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B86450</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-08%20Tall.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1349</key>
-		<dict>
-			<key>Track ID</key><integer>1349</integer>
-			<key>Name</key><string>Searching For The Fertile Fields</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5524392</integer>
-			<key>Total Time</key><integer>227796</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:45:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252576918</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:35:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B86452</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-09%20Searching%20For%20The%20Fertile%20Fields.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1350</key>
-		<dict>
-			<key>Track ID</key><integer>1350</integer>
-			<key>Name</key><string>Pulling Touch</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10889611</integer>
-			<key>Total Time</key><integer>449470</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:46:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252541896</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:51:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B86454</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-10%20Pulling%20Touch.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1351</key>
-		<dict>
-			<key>Track ID</key><integer>1351</integer>
-			<key>Name</key><string>Sandra At The Beach</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7273261</integer>
-			<key>Total Time</key><integer>304340</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Date Modified</key><date>2005-06-14T15:47:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253339325</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:22:05Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-30T22:30:17Z</date>
-			<key>Persistent ID</key><string>87139F8602B86456</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light/1-11%20Sandra%20At%20The%20Beach.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1352</key>
-		<dict>
-			<key>Track ID</key><integer>1352</integer>
-			<key>Name</key><string>Diamonds and Buttermilk</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6457948</integer>
-			<key>Total Time</key><integer>266452</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:19:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B86458</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-01%20Diamonds%20and%20Buttermilk.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1353</key>
-		<dict>
-			<key>Track ID</key><integer>1353</integer>
-			<key>Name</key><string>Ecstasy</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6253241</integer>
-			<key>Total Time</key><integer>258025</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:20:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253605299</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:14:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B8645B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-02%20Ecstasy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1354</key>
-		<dict>
-			<key>Track ID</key><integer>1354</integer>
-			<key>Name</key><string>I've Got Body</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7574941</integer>
-			<key>Total Time</key><integer>312596</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:21:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253549533</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:45:33Z</date>
-			<key>Persistent ID</key><string>87139F8602B8645D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-03%20I've%20Got%20Body.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1355</key>
-		<dict>
-			<key>Track ID</key><integer>1355</integer>
-			<key>Name</key><string>Shu Zulu Za</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8557502</integer>
-			<key>Total Time</key><integer>353172</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:22:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247552280</integer>
-			<key>Play Date UTC</key><date>2006-11-28T17:51:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B8645F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-04%20Shu%20Zulu%20Za.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1356</key>
-		<dict>
-			<key>Track ID</key><integer>1356</integer>
-			<key>Name</key><string>God's Gallipolli</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9314793</integer>
-			<key>Total Time</key><integer>384425</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:23:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253358453</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:40:53Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-17T15:18:03Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86461</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-05%20God's%20Gallipolli.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1357</key>
-		<dict>
-			<key>Track ID</key><integer>1357</integer>
-			<key>Name</key><string>Ta Bouche Est Tabu</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8176403</integer>
-			<key>Total Time</key><integer>337428</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:24:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253613286</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:28:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B86463</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-06%20Ta%20Bouche%20Est%20Tabu.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1358</key>
-		<dict>
-			<key>Track ID</key><integer>1358</integer>
-			<key>Name</key><string>Collarbone</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6844079</integer>
-			<key>Total Time</key><integer>282409</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:25:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252556206</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:50:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B86465</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-07%20Collarbone.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1359</key>
-		<dict>
-			<key>Track ID</key><integer>1359</integer>
-			<key>Name</key><string>Big Constellation</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8676144</integer>
-			<key>Total Time</key><integer>358057</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:26:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B86467</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-08%20Big%20Constellation.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1360</key>
-		<dict>
-			<key>Track ID</key><integer>1360</integer>
-			<key>Name</key><string>The Chain</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7469025</integer>
-			<key>Total Time</key><integer>308222</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:27:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253259780</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:16:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B86469</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-09%20The%20Chain.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1361</key>
-		<dict>
-			<key>Track ID</key><integer>1361</integer>
-			<key>Name</key><string>Jackass Ginger</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6637078</integer>
-			<key>Total Time</key><integer>273876</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:28:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252488581</integer>
-			<key>Play Date UTC</key><date>2007-01-24T21:03:01Z</date>
-			<key>Persistent ID</key><string>87139F8602B8646B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-10%20Jackass%20Ginger.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1362</key>
-		<dict>
-			<key>Track ID</key><integer>1362</integer>
-			<key>Name</key><string>Platetectonic</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7777312</integer>
-			<key>Total Time</key><integer>320958</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:29:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253614289</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:44:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B8646D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-11%20Platetectonic.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1363</key>
-		<dict>
-			<key>Track ID</key><integer>1363</integer>
-			<key>Name</key><string>Complicated</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Composer</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Liquid White Light : 2</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6502999</integer>
-			<key>Total Time</key><integer>268542</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Date Modified</key><date>2005-06-14T15:30:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251466994</integer>
-			<key>Play Date UTC</key><date>2007-01-13T01:16:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B8646F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Liquid%20White%20Light%20_%202/2-12%20Complicated.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1364</key>
-		<dict>
-			<key>Track ID</key><integer>1364</integer>
-			<key>Name</key><string>Octavio - Beautiful To Meet You</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8574519</integer>
-			<key>Total Time</key><integer>535771</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253369684</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:48:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B86471</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/01%20Octavio%20-%20Beautiful%20To%20Meet%20You.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1365</key>
-		<dict>
-			<key>Track ID</key><integer>1365</integer>
-			<key>Name</key><string>Ta Bouche Est Tabou (French Mix)</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5579841</integer>
-			<key>Total Time</key><integer>348604</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T19:09:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B86474</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/02%20Ta%20Bouche%20Est%20Tabou%20(French%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1366</key>
-		<dict>
-			<key>Track ID</key><integer>1366</integer>
-			<key>Name</key><string>Natural Thing</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5693944</integer>
-			<key>Total Time</key><integer>355735</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247060629</integer>
-			<key>Play Date UTC</key><date>2006-11-23T01:17:09Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T01:08:44Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B86476</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/03%20Natural%20Thing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1367</key>
-		<dict>
-			<key>Track ID</key><integer>1367</integer>
-			<key>Name</key><string>Come Together</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4816230</integer>
-			<key>Total Time</key><integer>300878</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253255352</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:02:32Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86478</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/04%20Come%20Together.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1368</key>
-		<dict>
-			<key>Track ID</key><integer>1368</integer>
-			<key>Name</key><string>Diva</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7523769</integer>
-			<key>Total Time</key><integer>470099</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251487527</integer>
-			<key>Play Date UTC</key><date>2007-01-13T06:58:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B8647A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/05%20Diva.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1369</key>
-		<dict>
-			<key>Track ID</key><integer>1369</integer>
-			<key>Name</key><string>Berry</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2624452</integer>
-			<key>Total Time</key><integer>163892</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251634275</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:44:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B8647C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/06%20Berry.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1370</key>
-		<dict>
-			<key>Track ID</key><integer>1370</integer>
-			<key>Name</key><string>That's The Way Love Is</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4754790</integer>
-			<key>Total Time</key><integer>297038</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247582283</integer>
-			<key>Play Date UTC</key><date>2006-11-29T02:11:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B8647E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/07%20That's%20The%20Way%20Love%20Is.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1371</key>
-		<dict>
-			<key>Track ID</key><integer>1371</integer>
-			<key>Name</key><string>Spend My Life (Moorea Mix)</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8243913</integer>
-			<key>Total Time</key><integer>515108</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253337174</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:46:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B86480</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/08%20Spend%20My%20Life%20(Moorea%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1372</key>
-		<dict>
-			<key>Track ID</key><integer>1372</integer>
-			<key>Name</key><string>Hard Sometime</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5092919</integer>
-			<key>Total Time</key><integer>318171</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253516573</integer>
-			<key>Play Date UTC</key><date>2007-02-05T18:36:13Z</date>
-			<key>Persistent ID</key><string>87139F8602B86482</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/09%20Hard%20Sometime.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1373</key>
-		<dict>
-			<key>Track ID</key><integer>1373</integer>
-			<key>Name</key><string>Jealous</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5320289</integer>
-			<key>Total Time</key><integer>332382</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:29:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253532756</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:05:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B86484</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/10%20Jealous.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1374</key>
-		<dict>
-			<key>Track ID</key><integer>1374</integer>
-			<key>Name</key><string>Tracery - Tana Dery Na (Waterlily Mix)</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Natural Thing</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7869840</integer>
-			<key>Total Time</key><integer>491728</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252516060</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:41:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B86486</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Natural%20Thing/11%20Tracery%20-%20Tana%20Dery%20Na%20(Waterlily%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1375</key>
-		<dict>
-			<key>Track ID</key><integer>1375</integer>
-			<key>Name</key><string>Pomegranate</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3791080</integer>
-			<key>Total Time</key><integer>313182</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252496940</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:22:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B86488</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/01%20Pomegranate.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1376</key>
-		<dict>
-			<key>Track ID</key><integer>1376</integer>
-			<key>Name</key><string>Catacombs</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3575560</integer>
-			<key>Total Time</key><integer>295392</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247721966</integer>
-			<key>Play Date UTC</key><date>2006-11-30T16:59:26Z</date>
-			<key>Persistent ID</key><string>87139F8602B8648B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/02%20Catacombs.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1377</key>
-		<dict>
-			<key>Track ID</key><integer>1377</integer>
-			<key>Name</key><string>Complicated</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3016936</integer>
-			<key>Total Time</key><integer>249182</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251644318</integer>
-			<key>Play Date UTC</key><date>2007-01-15T02:31:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B8648D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/03%20Complicated.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1378</key>
-		<dict>
-			<key>Track ID</key><integer>1378</integer>
-			<key>Name</key><string>The Cham</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3743747</integer>
-			<key>Total Time</key><integer>309237</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249539669</integer>
-			<key>Play Date UTC</key><date>2006-12-21T17:54:29Z</date>
-			<key>Persistent ID</key><string>87139F8602B8648F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/04%20The%20Cham.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1379</key>
-		<dict>
-			<key>Track ID</key><integer>1379</integer>
-			<key>Name</key><string>Big Constellation</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4700497</integer>
-			<key>Total Time</key><integer>388284</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253384664</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:57:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B86491</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/05%20Big%20Constellation.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1380</key>
-		<dict>
-			<key>Track ID</key><integer>1380</integer>
-			<key>Name</key><string>Sandra at the Beach</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3809262</integer>
-			<key>Total Time</key><integer>314697</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252290572</integer>
-			<key>Play Date UTC</key><date>2007-01-22T14:02:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B86493</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/06%20Sandra%20at%20the%20Beach.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1381</key>
-		<dict>
-			<key>Track ID</key><integer>1381</integer>
-			<key>Name</key><string>Diamonds and Buttermilk</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3056434</integer>
-			<key>Total Time</key><integer>252473</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253544083</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:14:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B86495</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/07%20Diamonds%20and%20Buttermilk.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1382</key>
-		<dict>
-			<key>Track ID</key><integer>1382</integer>
-			<key>Name</key><string>Shu Zulu Za</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3444741</integer>
-			<key>Total Time</key><integer>284656</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253614884</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:54:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B86497</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/08%20Shu%20Zulu%20Za.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1383</key>
-		<dict>
-			<key>Track ID</key><integer>1383</integer>
-			<key>Name</key><string>God's Gallipoli</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4047666</integer>
-			<key>Total Time</key><integer>334393</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253087161</integer>
-			<key>Play Date UTC</key><date>2007-01-31T19:19:21Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-28T01:43:02Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86499</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/09%20God's%20Gallipoli.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1384</key>
-		<dict>
-			<key>Track ID</key><integer>1384</integer>
-			<key>Name</key><string>The Shake of Big Hands</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3889510</integer>
-			<key>Total Time</key><integer>321384</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251350222</integer>
-			<key>Play Date UTC</key><date>2007-01-11T16:50:22Z</date>
-			<key>Persistent ID</key><string>87139F8602B8649B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/10%20The%20Shake%20of%20Big%20Hands.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1385</key>
-		<dict>
-			<key>Track ID</key><integer>1385</integer>
-			<key>Name</key><string>Al le Luia</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Pomegranate</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6573393</integer>
-			<key>Total Time</key><integer>543164</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253260593</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:29:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B8649D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Pomegranate/11%20Al%20le%20Luia.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1386</key>
-		<dict>
-			<key>Track ID</key><integer>1386</integer>
-			<key>Name</key><string>Lackluster</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3490045</integer>
-			<key>Total Time</key><integer>217991</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252497534</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:32:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B8649F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/01%20Lackluster.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1387</key>
-		<dict>
-			<key>Track ID</key><integer>1387</integer>
-			<key>Name</key><string>Collarbone</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3869552</integer>
-			<key>Total Time</key><integer>241711</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3252539342</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:09:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B864A2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/02%20Collarbone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1388</key>
-		<dict>
-			<key>Track ID</key><integer>1388</integer>
-			<key>Name</key><string>Get Me On</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3785125</integer>
-			<key>Total Time</key><integer>236434</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249488682</integer>
-			<key>Play Date UTC</key><date>2006-12-21T03:44:42Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-03T22:18:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B864A4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/03%20Get%20Me%20On.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1389</key>
-		<dict>
-			<key>Track ID</key><integer>1389</integer>
-			<key>Name</key><string>The Hardest Thing</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4263688</integer>
-			<key>Total Time</key><integer>266344</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247288445</integer>
-			<key>Play Date UTC</key><date>2006-11-25T16:34:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B864A6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/04%20The%20Hardest%20Thing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1390</key>
-		<dict>
-			<key>Track ID</key><integer>1390</integer>
-			<key>Name</key><string>Ta Bouche Est Tabou</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4378627</integer>
-			<key>Total Time</key><integer>273528</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:30:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:54Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246717708</integer>
-			<key>Play Date UTC</key><date>2006-11-19T02:01:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B864A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/05%20Ta%20Bouche%20Est%20Tabou.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1391</key>
-		<dict>
-			<key>Track ID</key><integer>1391</integer>
-			<key>Name</key><string>I've Got My Body</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4994698</integer>
-			<key>Total Time</key><integer>312032</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251466043</integer>
-			<key>Play Date UTC</key><date>2007-01-13T01:00:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B864AA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/06%20I've%20Got%20My%20Body.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1392</key>
-		<dict>
-			<key>Track ID</key><integer>1392</integer>
-			<key>Name</key><string>Jack Ass Ginger</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5323214</integer>
-			<key>Total Time</key><integer>332564</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253361100</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:25:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B864AC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/07%20Jack%20Ass%20Ginger.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1393</key>
-		<dict>
-			<key>Track ID</key><integer>1393</integer>
-			<key>Name</key><string>Be The One</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5013507</integer>
-			<key>Total Time</key><integer>313208</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253616378</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:19:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B864AE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/08%20Be%20The%20One.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1394</key>
-		<dict>
-			<key>Track ID</key><integer>1394</integer>
-			<key>Name</key><string>Tall</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2938339</integer>
-			<key>Total Time</key><integer>183510</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253267144</integer>
-			<key>Play Date UTC</key><date>2007-02-02T21:19:04Z</date>
-			<key>Persistent ID</key><string>87139F8602B864B0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/09%20Tall.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1395</key>
-		<dict>
-			<key>Track ID</key><integer>1395</integer>
-			<key>Name</key><string>Building</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>627025</integer>
-			<key>Total Time</key><integer>39053</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253556474</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:41:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B864B2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/10%20Building.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1396</key>
-		<dict>
-			<key>Track ID</key><integer>1396</integer>
-			<key>Name</key><string>Te Manu Pukarua</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2014649</integer>
-			<key>Total Time</key><integer>125779</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252937192</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:39:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B864B4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/11%20Te%20Manu%20Pukarua.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1397</key>
-		<dict>
-			<key>Track ID</key><integer>1397</integer>
-			<key>Name</key><string>Entrance</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3901735</integer>
-			<key>Total Time</key><integer>243722</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B864B6</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/13%20Entrance.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1398</key>
-		<dict>
-			<key>Track ID</key><integer>1398</integer>
-			<key>Name</key><string>Endtrance</string>
-			<key>Artist</key><string>Poi Dog Pondering</string>
-			<key>Album</key><string>Volo Volo</string>
-			<key>Genre</key><string>Jam Bands</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5713170</integer>
-			<key>Total Time</key><integer>356937</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253362826</integer>
-			<key>Play Date UTC</key><date>2007-02-03T23:53:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B864B8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Poi%20Dog%20Pondering/Volo%20Volo/14%20Endtrance.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1399</key>
-		<dict>
-			<key>Track ID</key><integer>1399</integer>
-			<key>Name</key><string>Mysterons</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4936728</integer>
-			<key>Total Time</key><integer>306233</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253383832</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:43:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864BA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/01%20Mysterons.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1400</key>
-		<dict>
-			<key>Track ID</key><integer>1400</integer>
-			<key>Name</key><string>Sour Times</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4095501</integer>
-			<key>Total Time</key><integer>254040</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247489500</integer>
-			<key>Play Date UTC</key><date>2006-11-28T00:25:00Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-26T19:12:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864BD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/02%20Sour%20Times.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1401</key>
-		<dict>
-			<key>Track ID</key><integer>1401</integer>
-			<key>Name</key><string>Strangers</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3837323</integer>
-			<key>Total Time</key><integer>238027</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249577201</integer>
-			<key>Play Date UTC</key><date>2006-12-22T04:20:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864BF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/03%20Strangers.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1402</key>
-		<dict>
-			<key>Track ID</key><integer>1402</integer>
-			<key>Name</key><string>It Could Be Sweet</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4193262</integer>
-			<key>Total Time</key><integer>260022</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251297088</integer>
-			<key>Play Date UTC</key><date>2007-01-11T02:04:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864C1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/04%20It%20Could%20Be%20Sweet.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1403</key>
-		<dict>
-			<key>Track ID</key><integer>1403</integer>
-			<key>Name</key><string>Wandering Star</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4739075</integer>
-			<key>Total Time</key><integer>294008</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251354484</integer>
-			<key>Play Date UTC</key><date>2007-01-11T18:01:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864C3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/05%20Wandering%20Star.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1404</key>
-		<dict>
-			<key>Track ID</key><integer>1404</integer>
-			<key>Name</key><string>It's a Fire</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3698482</integer>
-			<key>Total Time</key><integer>229355</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:31:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252549450</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:57:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-17T06:15:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864C5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/06%20It's%20a%20Fire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1405</key>
-		<dict>
-			<key>Track ID</key><integer>1405</integer>
-			<key>Name</key><string>Numb</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3836896</integer>
-			<key>Total Time</key><integer>238001</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253263731</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:22:11Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T15:55:12Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864C7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/07%20Numb.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1406</key>
-		<dict>
-			<key>Track ID</key><integer>1406</integer>
-			<key>Name</key><string>Roads</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4920427</integer>
-			<key>Total Time</key><integer>305214</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249283085</integer>
-			<key>Play Date UTC</key><date>2006-12-18T18:38:05Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864C9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/08%20Roads.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1407</key>
-		<dict>
-			<key>Track ID</key><integer>1407</integer>
-			<key>Name</key><string>Pedestal</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3565571</integer>
-			<key>Total Time</key><integer>221048</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252990770</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:32:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864CB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/09%20Pedestal.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1408</key>
-		<dict>
-			<key>Track ID</key><integer>1408</integer>
-			<key>Name</key><string>Biscuit</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4903291</integer>
-			<key>Total Time</key><integer>304143</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252542373</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:59:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864CD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/10%20Biscuit.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1409</key>
-		<dict>
-			<key>Track ID</key><integer>1409</integer>
-			<key>Name</key><string>Glory Box</string>
-			<key>Artist</key><string>Portishead</string>
-			<key>Album</key><string>Dummy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4926696</integer>
-			<key>Total Time</key><integer>305606</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3246961868</integer>
-			<key>Play Date UTC</key><date>2006-11-21T21:51:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B864CF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Portishead/Dummy/11%20Glory%20Box.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1410</key>
-		<dict>
-			<key>Track ID</key><integer>1410</integer>
-			<key>Name</key><string>Dragonflies [Uberzone Strapped to Your Bed Mix]</string>
-			<key>Artist</key><string>Povi</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4000792</integer>
-			<key>Total Time</key><integer>249913</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246425620</integer>
-			<key>Play Date UTC</key><date>2006-11-15T16:53:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B864D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Povi/Plastic%20Compilation,%20Vol.%203/07%20Dragonflies%20%5BUberzone%20Strapped%20to%20Your%20Bed%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1411</key>
-		<dict>
-			<key>Track ID</key><integer>1411</integer>
-			<key>Name</key><string>Take California</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10691440</integer>
-			<key>Total Time</key><integer>441705</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:41:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249629412</integer>
-			<key>Play Date UTC</key><date>2006-12-22T18:50:12Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B864D4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/01%20Take%20California.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1412</key>
-		<dict>
-			<key>Track ID</key><integer>1412</integer>
-			<key>Name</key><string>Velvet Pants</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8398139</integer>
-			<key>Total Time</key><integer>346921</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:42:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253526010</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:13:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B864D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/02%20Velvet%20Pants.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1413</key>
-		<dict>
-			<key>Track ID</key><integer>1413</integer>
-			<key>Name</key><string>Better?</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3011637</integer>
-			<key>Total Time</key><integer>123305</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:43:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253335157</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:12:37Z</date>
-			<key>Persistent ID</key><string>87139F8602B864D9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/03%20Better_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1414</key>
-		<dict>
-			<key>Track ID</key><integer>1414</integer>
-			<key>Name</key><string>History Repeating</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5874840</integer>
-			<key>Total Time</key><integer>242601</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:44:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246379581</integer>
-			<key>Play Date UTC</key><date>2006-11-15T04:06:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B864DB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/05%20History%20Repeating.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1415</key>
-		<dict>
-			<key>Track ID</key><integer>1415</integer>
-			<key>Name</key><string>Winning Style</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8672012</integer>
-			<key>Total Time</key><integer>358249</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:45:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253385022</integer>
-			<key>Play Date UTC</key><date>2007-02-04T06:03:42Z</date>
-			<key>Persistent ID</key><string>87139F8602B864DD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/06%20Winning%20Style.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1416</key>
-		<dict>
-			<key>Track ID</key><integer>1416</integer>
-			<key>Name</key><string>Bang On!</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8348860</integer>
-			<key>Total Time</key><integer>344873</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:46:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253547810</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:16:50Z</date>
-			<key>Persistent ID</key><string>87139F8602B864DF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/07%20Bang%20On!.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1417</key>
-		<dict>
-			<key>Track ID</key><integer>1417</integer>
-			<key>Name</key><string>A Number Of Microphones</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>1147578</integer>
-			<key>Total Time</key><integer>45630</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:46:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251890695</integer>
-			<key>Play Date UTC</key><date>2007-01-17T22:58:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B864E1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/08%20A%20Number%20Of%20Microphones.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1418</key>
-		<dict>
-			<key>Track ID</key><integer>1418</integer>
-			<key>Name</key><string>On Her Majesty's Secret Service</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>13575908</integer>
-			<key>Total Time</key><integer>560916</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:48:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252551475</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:31:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B864E3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/09%20On%20Her%20Majesty's%20Secret%20Service.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1419</key>
-		<dict>
-			<key>Track ID</key><integer>1419</integer>
-			<key>Name</key><string>Bigger?</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3422297</integer>
-			<key>Total Time</key><integer>140414</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:48:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253543831</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:10:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B864E5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/10%20Bigger_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1420</key>
-		<dict>
-			<key>Track ID</key><integer>1420</integer>
-			<key>Name</key><string>Cominagetcha</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10229465</integer>
-			<key>Total Time</key><integer>422612</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:49:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B864E7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/11%20Cominagetcha.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1421</key>
-		<dict>
-			<key>Track ID</key><integer>1421</integer>
-			<key>Name</key><string>Spybreak!</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Decksandrumsandrockandroll</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10124825</integer>
-			<key>Total Time</key><integer>418281</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2004-04-20T16:50:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253087844</integer>
-			<key>Play Date UTC</key><date>2007-01-31T19:30:44Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-17T06:15:53Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B864E9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Decksandrumsandrockandroll/12%20Spybreak!.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1422</key>
-		<dict>
-			<key>Track ID</key><integer>1422</integer>
-			<key>Name</key><string>Spybreak! (Short One)</string>
-			<key>Artist</key><string>Propellerheads</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3851162</integer>
-			<key>Total Time</key><integer>240561</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253706347</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:19:07Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B864EB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Propellerheads/Matrix/02%20Spybreak!%20(Short%20One).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1423</key>
-		<dict>
-			<key>Track ID</key><integer>1423</integer>
-			<key>Name</key><string>Renegades Of Funk (The Crystal Method Remix)</string>
-			<key>Artist</key><string>Rage Against the Machine</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Rage Against the Machine</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5661662</integer>
-			<key>Total Time</key><integer>235075</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253351775</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:49:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B864EE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20the%20Machine/Community%20Service/11%20Renegades%20Of%20Funk%20(The%20Crystal%20Method%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1424</key>
-		<dict>
-			<key>Track ID</key><integer>1424</integer>
-			<key>Name</key><string>Wake Up</string>
-			<key>Artist</key><string>Rage Against the Machine</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5821004</integer>
-			<key>Total Time</key><integer>363676</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252489674</integer>
-			<key>Play Date UTC</key><date>2007-01-24T21:21:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B864F0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20the%20Machine/Matrix/13%20Wake%20Up.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1425</key>
-		<dict>
-			<key>Track ID</key><integer>1425</integer>
-			<key>Name</key><string>Testify</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3369255</integer>
-			<key>Total Time</key><integer>210442</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253275699</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:41:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B864F3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/01%20Testify.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1426</key>
-		<dict>
-			<key>Track ID</key><integer>1426</integer>
-			<key>Name</key><string>Guerilla Radio</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3299874</integer>
-			<key>Total Time</key><integer>206106</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253469038</integer>
-			<key>Play Date UTC</key><date>2007-02-05T05:23:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B864F6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/02%20Guerilla%20Radio.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1427</key>
-		<dict>
-			<key>Track ID</key><integer>1427</integer>
-			<key>Name</key><string>Calm Like A Bomb</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4785301</integer>
-			<key>Total Time</key><integer>298945</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253283626</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:53:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B864F8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/03%20Calm%20Like%20A%20Bomb.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1428</key>
-		<dict>
-			<key>Track ID</key><integer>1428</integer>
-			<key>Name</key><string>Mic Check</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3423172</integer>
-			<key>Total Time</key><integer>213812</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251297302</integer>
-			<key>Play Date UTC</key><date>2007-01-11T02:08:22Z</date>
-			<key>Persistent ID</key><string>87139F8602B864FA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/04%20Mic%20Check.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1429</key>
-		<dict>
-			<key>Track ID</key><integer>1429</integer>
-			<key>Name</key><string>Sleep Now in the Fire</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3292351</integer>
-			<key>Total Time</key><integer>205635</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252516808</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:53:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B864FC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/05%20Sleep%20Now%20in%20the%20Fire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1430</key>
-		<dict>
-			<key>Track ID</key><integer>1430</integer>
-			<key>Name</key><string>Born of a Broken Man</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4499417</integer>
-			<key>Total Time</key><integer>281077</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249459225</integer>
-			<key>Play Date UTC</key><date>2006-12-20T19:33:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B864FE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/06%20Born%20of%20a%20Broken%20Man.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1431</key>
-		<dict>
-			<key>Track ID</key><integer>1431</integer>
-			<key>Name</key><string>Born as Ghosts</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3234672</integer>
-			<key>Total Time</key><integer>202031</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B86500</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/07%20Born%20as%20Ghosts.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1432</key>
-		<dict>
-			<key>Track ID</key><integer>1432</integer>
-			<key>Name</key><string>Maria</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3651796</integer>
-			<key>Total Time</key><integer>228101</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253372111</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:28:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B86502</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/08%20Maria.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1433</key>
-		<dict>
-			<key>Track ID</key><integer>1433</integer>
-			<key>Name</key><string>Voice of the Voiceless</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2428429</integer>
-			<key>Total Time</key><integer>151640</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253558343</integer>
-			<key>Play Date UTC</key><date>2007-02-06T06:12:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B86504</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/09%20Voice%20of%20the%20Voiceless.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1434</key>
-		<dict>
-			<key>Track ID</key><integer>1434</integer>
-			<key>Name</key><string>New Millenium Homes</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3601223</integer>
-			<key>Total Time</key><integer>224940</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253352347</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:59:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B86506</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/10%20New%20Millenium%20Homes.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1435</key>
-		<dict>
-			<key>Track ID</key><integer>1435</integer>
-			<key>Name</key><string>Ashes in the Fall</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4432543</integer>
-			<key>Total Time</key><integer>276897</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252290028</integer>
-			<key>Play Date UTC</key><date>2007-01-22T13:53:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B86508</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/11%20Ashes%20in%20the%20Fall.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1436</key>
-		<dict>
-			<key>Track ID</key><integer>1436</integer>
-			<key>Name</key><string>War Within a Breath</string>
-			<key>Artist</key><string>Rage Against The Machine</string>
-			<key>Album</key><string>The Battle of Los Angeles</string>
-			<key>Genre</key><string>Alternative Metal</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3474163</integer>
-			<key>Total Time</key><integer>216999</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250695187</integer>
-			<key>Play Date UTC</key><date>2007-01-04T02:53:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B8650A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rage%20Against%20The%20Machine/The%20Battle%20of%20Los%20Angeles/12%20War%20Within%20a%20Breath.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1437</key>
-		<dict>
-			<key>Track ID</key><integer>1437</integer>
-			<key>Name</key><string>A Chance Counsel</string>
-			<key>Artist</key><string>Richard Buckner</string>
-			<key>Album</key><string>Dents And Shells</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6967485</integer>
-			<key>Total Time</key><integer>290220</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T21:01:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253261231</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:40:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B8650C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Richard%20Buckner/Dents%20And%20Shells/01%20A%20Chance%20Counsel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1438</key>
-		<dict>
-			<key>Track ID</key><integer>1438</integer>
-			<key>Name</key><string>Catherine Of Aragon</string>
-			<key>Artist</key><string>Rick Wakeman</string>
-			<key>Composer</key><string>Rick Wakeman</string>
-			<key>Album</key><string>The Six Wives Of Henry VIII</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5459682</integer>
-			<key>Total Time</key><integer>227326</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-08-01T17:09:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252582248</integer>
-			<key>Play Date UTC</key><date>2007-01-25T23:04:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8650F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rick%20Wakeman/The%20Six%20Wives%20Of%20Henry%20VIII/01%20Catherine%20Of%20Aragon.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1439</key>
-		<dict>
-			<key>Track ID</key><integer>1439</integer>
-			<key>Name</key><string>Anne Of Cleves</string>
-			<key>Artist</key><string>Rick Wakeman</string>
-			<key>Composer</key><string>Rick Wakeman</string>
-			<key>Album</key><string>The Six Wives Of Henry VIII</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11470329</integer>
-			<key>Total Time</key><integer>474964</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-08-01T17:09:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252403970</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:32:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86512</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rick%20Wakeman/The%20Six%20Wives%20Of%20Henry%20VIII/02%20Anne%20Of%20Cleves.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1440</key>
-		<dict>
-			<key>Track ID</key><integer>1440</integer>
-			<key>Name</key><string>Catherine Howard</string>
-			<key>Artist</key><string>Rick Wakeman</string>
-			<key>Composer</key><string>Rick Wakeman</string>
-			<key>Album</key><string>The Six Wives Of Henry VIII</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9585257</integer>
-			<key>Total Time</key><integer>397908</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-08-01T17:09:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249576641</integer>
-			<key>Play Date UTC</key><date>2006-12-22T04:10:41Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:05:04Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86514</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rick%20Wakeman/The%20Six%20Wives%20Of%20Henry%20VIII/03%20Catherine%20Howard.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1441</key>
-		<dict>
-			<key>Track ID</key><integer>1441</integer>
-			<key>Name</key><string>Jane Seymour</string>
-			<key>Artist</key><string>Rick Wakeman</string>
-			<key>Composer</key><string>Rick Wakeman</string>
-			<key>Album</key><string>The Six Wives Of Henry VIII</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6977910</integer>
-			<key>Total Time</key><integer>290665</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-08-01T17:09:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252529894</integer>
-			<key>Play Date UTC</key><date>2007-01-25T08:31:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86516</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rick%20Wakeman/The%20Six%20Wives%20Of%20Henry%20VIII/04%20Jane%20Seymour.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1442</key>
-		<dict>
-			<key>Track ID</key><integer>1442</integer>
-			<key>Name</key><string>Anne Boleyn</string>
-			<key>Artist</key><string>Rick Wakeman</string>
-			<key>Composer</key><string>Rick Wakeman</string>
-			<key>Album</key><string>The Six Wives Of Henry VIII</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9539749</integer>
-			<key>Total Time</key><integer>396692</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-08-01T17:09:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252927821</integer>
-			<key>Play Date UTC</key><date>2007-01-29T23:03:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86518</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rick%20Wakeman/The%20Six%20Wives%20Of%20Henry%20VIII/05%20Anne%20Boleyn.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1443</key>
-		<dict>
-			<key>Track ID</key><integer>1443</integer>
-			<key>Name</key><string>Catherine Parr</string>
-			<key>Artist</key><string>Rick Wakeman</string>
-			<key>Composer</key><string>Rick Wakeman</string>
-			<key>Album</key><string>The Six Wives Of Henry VIII</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10296939</integer>
-			<key>Total Time</key><integer>424766</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>6</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-08-01T17:09:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252535323</integer>
-			<key>Play Date UTC</key><date>2007-01-25T10:02:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8651A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rick%20Wakeman/The%20Six%20Wives%20Of%20Henry%20VIII/06%20Catherine%20Parr.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1444</key>
-		<dict>
-			<key>Track ID</key><integer>1444</integer>
-			<key>Name</key><string>Clubbed to Death [Kurayamino Mix]</string>
-			<key>Artist</key><string>Rob D.</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7144263</integer>
-			<key>Total Time</key><integer>446380</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>22</integer>
-			<key>Play Date</key><integer>3253160974</integer>
-			<key>Play Date UTC</key><date>2007-02-01T15:49:34Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-04T23:35:51Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B8651C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20D_/Matrix/04%20Clubbed%20to%20Death%20%5BKurayamino%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1445</key>
-		<dict>
-			<key>Track ID</key><integer>1445</integer>
-			<key>Name</key><string>Prelude</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>2151815</integer>
-			<key>Total Time</key><integer>43013</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-08-22T04:32:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>395</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252923430</integer>
-			<key>Play Date UTC</key><date>2007-01-29T21:50:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B8651F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/01%20Prelude.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1446</key>
-		<dict>
-			<key>Track ID</key><integer>1446</integer>
-			<key>Name</key><string>Furious Angels</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>44897461</integer>
-			<key>Total Time</key><integer>356253</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-11T18:45:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>1007</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250574604</integer>
-			<key>Play Date UTC</key><date>2007-01-02T17:23:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B86522</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/02%20Furious%20Angels.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1447</key>
-		<dict>
-			<key>Track ID</key><integer>1447</integer>
-			<key>Name</key><string>Will You Follow Me?</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>21575892</integer>
-			<key>Total Time</key><integer>230480</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-26T22:19:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>748</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253335387</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:16:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B86524</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/03%20Will%20You%20Follow%20Me_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1448</key>
-		<dict>
-			<key>Track ID</key><integer>1448</integer>
-			<key>Name</key><string>Left Me For Dead</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34509778</integer>
-			<key>Total Time</key><integer>279880</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-26T22:38:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>985</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253356670</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:11:10Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B86526</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/04%20Left%20Me%20For%20Dead.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1449</key>
-		<dict>
-			<key>Track ID</key><integer>1449</integer>
-			<key>Name</key><string>I'm Not Driving Anymore</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>32686603</integer>
-			<key>Total Time</key><integer>274106</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-27T18:49:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>953</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252534436</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:47:16Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T20:09:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B86528</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/05%20I'm%20Not%20Driving%20Anymore.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1450</key>
-		<dict>
-			<key>Track ID</key><integer>1450</integer>
-			<key>Name</key><string>Clubbed To Death (Kurayamino Variation)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>47092987</integer>
-			<key>Total Time</key><integer>449546</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-17T23:29:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>837</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250740011</integer>
-			<key>Play Date UTC</key><date>2007-01-04T15:20:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B8652A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/06%20Clubbed%20To%20Death%20(Kurayamino%20Variation).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1451</key>
-		<dict>
-			<key>Track ID</key><integer>1451</integer>
-			<key>Name</key><string>There's Only Me</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>37178750</integer>
-			<key>Total Time</key><integer>336933</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-05T13:10:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>882</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246985133</integer>
-			<key>Play Date UTC</key><date>2006-11-22T04:18:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B8652C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/07%20There's%20Only%20Me.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1452</key>
-		<dict>
-			<key>Track ID</key><integer>1452</integer>
-			<key>Name</key><string>Instrumental</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26109449</integer>
-			<key>Total Time</key><integer>268506</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-26T18:01:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>777</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253342495</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:14:55Z</date>
-			<key>Persistent ID</key><string>87139F8602B8652E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/08%20Instrumental.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1453</key>
-		<dict>
-			<key>Track ID</key><integer>1453</integer>
-			<key>Name</key><string>Nothing At All</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>36635462</integer>
-			<key>Total Time</key><integer>392133</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-05T15:29:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>746</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3250682368</integer>
-			<key>Play Date UTC</key><date>2007-01-03T23:19:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B86530</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/09%20Nothing%20At%20All.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1454</key>
-		<dict>
-			<key>Track ID</key><integer>1454</integer>
-			<key>Name</key><string>Born Yesterday</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>33696188</integer>
-			<key>Total Time</key><integer>319946</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-26T15:46:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>841</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249383320</integer>
-			<key>Play Date UTC</key><date>2006-12-19T22:28:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B86532</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/10%20Born%20Yesterday.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1455</key>
-		<dict>
-			<key>Track ID</key><integer>1455</integer>
-			<key>Name</key><string>Speed Me Towards Death</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>29659020</integer>
-			<key>Total Time</key><integer>272893</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-28T13:25:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>868</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253509916</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:45:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B86534</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/11%20Speed%20Me%20Towards%20Death.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1456</key>
-		<dict>
-			<key>Track ID</key><integer>1456</integer>
-			<key>Name</key><string>Drinking Song</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24663590</integer>
-			<key>Total Time</key><integer>238813</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-11T03:53:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>825</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252503012</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:03:32Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T18:36:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B86536</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/12%20Drinking%20Song.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1457</key>
-		<dict>
-			<key>Track ID</key><integer>1457</integer>
-			<key>Name</key><string>Pause</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>31564</integer>
-			<key>Total Time</key><integer>31960</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-08T19:01:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>2</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249193612</integer>
-			<key>Play Date UTC</key><date>2006-12-17T17:46:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B86538</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/13%20Pause.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1458</key>
-		<dict>
-			<key>Track ID</key><integer>1458</integer>
-			<key>Name</key><string>One And The Same (Coda)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>39471403</integer>
-			<key>Total Time</key><integer>346066</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-10-17T16:30:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>911</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253338379</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:06:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B8653A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/14%20One%20And%20The%20Same%20(Coda).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1459</key>
-		<dict>
-			<key>Track ID</key><integer>1459</integer>
-			<key>Name</key><string>Clubbed To Death 2</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34279715</integer>
-			<key>Total Time</key><integer>427680</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-09-28T19:29:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>640</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252472013</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:26:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B8653C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels/15%20Clubbed%20To%20Death%202.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1460</key>
-		<dict>
-			<key>Track ID</key><integer>1460</integer>
-			<key>Name</key><string>Will You Follow Me? (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>23674994</integer>
-			<key>Total Time</key><integer>272973</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2005-09-28T23:54:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>693</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252515568</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:32:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B8653E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-01%20Will%20You%20Follow%20Me_%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1461</key>
-		<dict>
-			<key>Track ID</key><integer>1461</integer>
-			<key>Name</key><string>Furious Angels (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>44442503</integer>
-			<key>Total Time</key><integer>363480</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2005-09-26T23:08:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>977</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253368091</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:21:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B86541</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-02%20Furious%20Angels%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1462</key>
-		<dict>
-			<key>Track ID</key><integer>1462</integer>
-			<key>Name</key><string>Left Me For Dead (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34299133</integer>
-			<key>Total Time</key><integer>282786</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-08-22T04:23:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>969</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253382328</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:18:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B86543</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-03%20Left%20Me%20For%20Dead%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1463</key>
-		<dict>
-			<key>Track ID</key><integer>1463</integer>
-			<key>Name</key><string>I'm Not Driving Anymore (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>32338581</integer>
-			<key>Total Time</key><integer>274106</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2005-10-07T13:35:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>942</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247488444</integer>
-			<key>Play Date UTC</key><date>2006-11-28T00:07:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B86545</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-04%20I'm%20Not%20Driving%20Anymore%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1464</key>
-		<dict>
-			<key>Track ID</key><integer>1464</integer>
-			<key>Name</key><string>There's Only Me (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34724717</integer>
-			<key>Total Time</key><integer>338280</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-08-22T04:25:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>820</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252931606</integer>
-			<key>Play Date UTC</key><date>2007-01-30T00:06:46Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-30T22:30:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B86547</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-05%20There's%20Only%20Me%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1465</key>
-		<dict>
-			<key>Track ID</key><integer>1465</integer>
-			<key>Name</key><string>Clubbed To Death (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>26090179</integer>
-			<key>Total Time</key><integer>270240</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2005-09-26T15:34:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>771</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B86549</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-06%20Clubbed%20To%20Death%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1466</key>
-		<dict>
-			<key>Track ID</key><integer>1466</integer>
-			<key>Name</key><string>Nothing At All (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>32778176</integer>
-			<key>Total Time</key><integer>353400</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2005-09-28T00:54:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>741</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252563815</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:56:55Z</date>
-			<key>Persistent ID</key><string>87139F8602B8654B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-07%20Nothing%20At%20All%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1467</key>
-		<dict>
-			<key>Track ID</key><integer>1467</integer>
-			<key>Name</key><string>Born Yesterday (Instrumental)</string>
-			<key>Artist</key><string>Rob Dougan</string>
-			<key>Album</key><string>Furious Angels Disc2~Instrumental~</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>46622797</integer>
-			<key>Total Time</key><integer>452866</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-08-22T04:28:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>823</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3249273799</integer>
-			<key>Play Date UTC</key><date>2006-12-18T16:03:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B8654D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Rob%20Dougan/Furious%20Angels%20Disc2%EF%BD%9EInstrumental%EF%BD%9E/2-08%20Born%20Yesterday%20(Instrumental).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1468</key>
-		<dict>
-			<key>Track ID</key><integer>1468</integer>
-			<key>Name</key><string>Possession</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3379474</integer>
-			<key>Total Time</key><integer>279222</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253712591</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:03:11Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T16:01:28Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8654F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/01%20Possession.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1469</key>
-		<dict>
-			<key>Track ID</key><integer>1469</integer>
-			<key>Name</key><string>Wait</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3023206</integer>
-			<key>Total Time</key><integer>249704</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253285552</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:25:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T01:21:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B86552</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/02%20Wait.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1470</key>
-		<dict>
-			<key>Track ID</key><integer>1470</integer>
-			<key>Name</key><string>Plenty</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2970856</integer>
-			<key>Total Time</key><integer>245342</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250617224</integer>
-			<key>Play Date UTC</key><date>2007-01-03T05:13:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B86554</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/03%20Plenty.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1471</key>
-		<dict>
-			<key>Track ID</key><integer>1471</integer>
-			<key>Name</key><string>Good Enough</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3679632</integer>
-			<key>Total Time</key><integer>304065</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:55Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250704694</integer>
-			<key>Play Date UTC</key><date>2007-01-04T05:31:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B86556</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/04%20Good%20Enough.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1472</key>
-		<dict>
-			<key>Track ID</key><integer>1472</integer>
-			<key>Name</key><string>Mary</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2855019</integer>
-			<key>Total Time</key><integer>235859</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249385802</integer>
-			<key>Play Date UTC</key><date>2006-12-19T23:10:02Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T02:35:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B86558</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/05%20Mary.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1473</key>
-		<dict>
-			<key>Track ID</key><integer>1473</integer>
-			<key>Name</key><string>Elsewhere</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3441589</integer>
-			<key>Total Time</key><integer>284395</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250710169</integer>
-			<key>Play Date UTC</key><date>2007-01-04T07:02:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B8655A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/06%20Elsewhere.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1474</key>
-		<dict>
-			<key>Track ID</key><integer>1474</integer>
-			<key>Name</key><string>Circle</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2712704</integer>
-			<key>Total Time</key><integer>224000</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253764001</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:20:01Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8655C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/07%20Circle.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1475</key>
-		<dict>
-			<key>Track ID</key><integer>1475</integer>
-			<key>Name</key><string>Ice</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2841226</integer>
-			<key>Total Time</key><integer>234710</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253717181</integer>
-			<key>Play Date UTC</key><date>2007-02-08T02:19:41Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T15:55:30Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8655E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/08%20Ice.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1476</key>
-		<dict>
-			<key>Track ID</key><integer>1476</integer>
-			<key>Name</key><string>Hold On</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3027594</integer>
-			<key>Total Time</key><integer>250070</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253706106</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:15:06Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T20:17:30Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86560</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/09%20Hold%20On.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1477</key>
-		<dict>
-			<key>Track ID</key><integer>1477</integer>
-			<key>Name</key><string>Ice Cream</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1994984</integer>
-			<key>Total Time</key><integer>164702</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Persistent ID</key><string>87139F8602B86562</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/10%20Ice%20Cream.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1478</key>
-		<dict>
-			<key>Track ID</key><integer>1478</integer>
-			<key>Name</key><string>Fear</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Fumbling Towards Ecstasy</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2898278</integer>
-			<key>Total Time</key><integer>239464</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246373105</integer>
-			<key>Play Date UTC</key><date>2006-11-15T02:18:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B86564</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Fumbling%20Towards%20Ecstasy/11%20Fear.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1479</key>
-		<dict>
-			<key>Track ID</key><integer>1479</integer>
-			<key>Name</key><string>Sweet Surrender [Roni Size Mix V2]</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2925299</integer>
-			<key>Total Time</key><integer>240692</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253512227</integer>
-			<key>Play Date UTC</key><date>2007-02-05T17:23:47Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86566</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Plastic%20Compilation,%20Vol.%202/05%20Sweet%20Surrender%20%5BRoni%20Size%20Mix%20V2%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1480</key>
-		<dict>
-			<key>Track ID</key><integer>1480</integer>
-			<key>Name</key><string>I Love You [BT Mix]</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8678591</integer>
-			<key>Total Time</key><integer>542275</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252405456</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:57:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B86569</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Plastic%20Compilation,%20Vol.%203/01%20I%20Love%20You%20%5BBT%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1481</key>
-		<dict>
-			<key>Track ID</key><integer>1481</integer>
-			<key>Name</key><string>Building a Mystery</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2998149</integer>
-			<key>Total Time</key><integer>247275</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252511143</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:19:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8656C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/01%20Building%20a%20Mystery.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1482</key>
-		<dict>
-			<key>Track ID</key><integer>1482</integer>
-			<key>Name</key><string>I Love You</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3442043</integer>
-			<key>Total Time</key><integer>283924</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252039772</integer>
-			<key>Play Date UTC</key><date>2007-01-19T16:22:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-20T23:09:13Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8656F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/02%20I%20Love%20You.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1483</key>
-		<dict>
-			<key>Track ID</key><integer>1483</integer>
-			<key>Name</key><string>Sweet Surrender</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2921663</integer>
-			<key>Total Time</key><integer>240901</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252486709</integer>
-			<key>Play Date UTC</key><date>2007-01-24T20:31:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86571</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/03%20Sweet%20Surrender.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1484</key>
-		<dict>
-			<key>Track ID</key><integer>1484</integer>
-			<key>Name</key><string>Adia</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2971818</integer>
-			<key>Total Time</key><integer>245080</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249451087</integer>
-			<key>Play Date UTC</key><date>2006-12-20T17:18:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86573</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/04%20Adia.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1485</key>
-		<dict>
-			<key>Track ID</key><integer>1485</integer>
-			<key>Name</key><string>Do What You Have to Do</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2751909</integer>
-			<key>Total Time</key><integer>226925</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250670001</integer>
-			<key>Play Date UTC</key><date>2007-01-03T19:53:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86575</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/05%20Do%20What%20You%20Have%20to%20Do.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1486</key>
-		<dict>
-			<key>Track ID</key><integer>1486</integer>
-			<key>Name</key><string>Witness</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3484361</integer>
-			<key>Total Time</key><integer>287451</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251630401</integer>
-			<key>Play Date UTC</key><date>2007-01-14T22:40:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86577</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/06%20Witness.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1487</key>
-		<dict>
-			<key>Track ID</key><integer>1487</integer>
-			<key>Name</key><string>Angel</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3279185</integer>
-			<key>Total Time</key><integer>270524</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:32:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253530258</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:24:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86579</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/07%20Angel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1488</key>
-		<dict>
-			<key>Track ID</key><integer>1488</integer>
-			<key>Name</key><string>Black and White</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3671356</integer>
-			<key>Total Time</key><integer>302863</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253538766</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:46:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8657B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/08%20Black%20and%20White.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1489</key>
-		<dict>
-			<key>Track ID</key><integer>1489</integer>
-			<key>Name</key><string>Full of Grace</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2677616</integer>
-			<key>Total Time</key><integer>220734</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250397476</integer>
-			<key>Play Date UTC</key><date>2006-12-31T16:11:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8657D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/09%20Full%20of%20Grace.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1490</key>
-		<dict>
-			<key>Track ID</key><integer>1490</integer>
-			<key>Name</key><string>Last Dance</string>
-			<key>Artist</key><string>Sarah McLachlan</string>
-			<key>Album</key><string>Surfacing</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1854571</integer>
-			<key>Total Time</key><integer>152659</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253543327</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:02:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8657F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sarah%20McLachlan/Surfacing/10%20Last%20Dance.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1491</key>
-		<dict>
-			<key>Track ID</key><integer>1491</integer>
-			<key>Name</key><string>Xpander</string>
-			<key>Artist</key><string>Sasha</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3705712</integer>
-			<key>Total Time</key><integer>231471</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253357087</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:18:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B86581</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sasha/Plastic%20Compilation,%20Vol.%203/02%20Xpander.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1492</key>
-		<dict>
-			<key>Track ID</key><integer>1492</integer>
-			<key>Name</key><string>The Red Pill</string>
-			<key>Artist</key><string>Scratch-D &#38; H-Bomb</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>David B. Noller/Scott Christina/Sean Herman</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4931278</integer>
-			<key>Total Time</key><integer>204643</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3252918917</integer>
-			<key>Play Date UTC</key><date>2007-01-29T20:35:17Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-22T19:11:55Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B86584</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Scratch-D%20&#38;%20H-Bomb/Community%20Service/16%20The%20Red%20Pill.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1493</key>
-		<dict>
-			<key>Track ID</key><integer>1493</integer>
-			<key>Name</key><string>Halo of Ashes</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner, Barrett Martin &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5932200</integer>
-			<key>Total Time</key><integer>244798</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:29:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253348507</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:55:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B86586</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/01%20Halo%20of%20Ashes.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1494</key>
-		<dict>
-			<key>Track ID</key><integer>1494</integer>
-			<key>Name</key><string>All I Know</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5701851</integer>
-			<key>Total Time</key><integer>235497</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:30:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247385122</integer>
-			<key>Play Date UTC</key><date>2006-11-26T19:25:22Z</date>
-			<key>Persistent ID</key><string>87139F8602B86589</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/02%20All%20I%20Know.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1495</key>
-		<dict>
-			<key>Track ID</key><integer>1495</integer>
-			<key>Name</key><string>Look At You</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6833790</integer>
-			<key>Total Time</key><integer>282025</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:30:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246778019</integer>
-			<key>Play Date UTC</key><date>2006-11-19T18:46:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B8658B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/03%20Look%20At%20You.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1496</key>
-		<dict>
-			<key>Track ID</key><integer>1496</integer>
-			<key>Name</key><string>Dying Days</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7033202</integer>
-			<key>Total Time</key><integer>291476</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:31:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253767727</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:22:07Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8658D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/04%20Dying%20Days.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1497</key>
-		<dict>
-			<key>Track ID</key><integer>1497</integer>
-			<key>Name</key><string>Make My Mind</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6069578</integer>
-			<key>Total Time</key><integer>251796</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:32:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252537087</integer>
-			<key>Play Date UTC</key><date>2007-01-25T10:31:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B8658F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/05%20Make%20My%20Mind.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1498</key>
-		<dict>
-			<key>Track ID</key><integer>1498</integer>
-			<key>Name</key><string>Sworn and Broken</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5172062</integer>
-			<key>Total Time</key><integer>214398</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:33:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253339020</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:17:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B86591</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/06%20Sworn%20and%20Broken.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1499</key>
-		<dict>
-			<key>Track ID</key><integer>1499</integer>
-			<key>Name</key><string>Witness</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5299869</integer>
-			<key>Total Time</key><integer>219326</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:33:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249450842</integer>
-			<key>Play Date UTC</key><date>2006-12-20T17:14:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B86593</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/07%20Witness.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1500</key>
-		<dict>
-			<key>Track ID</key><integer>1500</integer>
-			<key>Name</key><string>Traveler</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7811909</integer>
-			<key>Total Time</key><integer>322430</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:34:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253551114</integer>
-			<key>Play Date UTC</key><date>2007-02-06T04:11:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B86595</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/08%20Traveler.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1501</key>
-		<dict>
-			<key>Track ID</key><integer>1501</integer>
-			<key>Name</key><string>Dime Western</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner, Barrett Martin &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5334063</integer>
-			<key>Total Time</key><integer>219881</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:35:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B86597</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/09%20Dime%20Western.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1502</key>
-		<dict>
-			<key>Track ID</key><integer>1502</integer>
-			<key>Name</key><string>Gospel Plow</string>
-			<key>Artist</key><string>Screaming Trees</string>
-			<key>Composer</key><string>Gary Lee Conner, Van Conner, Barrett Martin &#38; Mark Lanegan</string>
-			<key>Album</key><string>Dust</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9149285</integer>
-			<key>Total Time</key><integer>377662</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1996</integer>
-			<key>Date Modified</key><date>2004-06-21T13:36:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253522105</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:08:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B86599</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Screaming%20Trees/Dust/10%20Gospel%20Plow.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1503</key>
-		<dict>
-			<key>Track ID</key><integer>1503</integer>
-			<key>Name</key><string>The Beginning</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5447766</integer>
-			<key>Total Time</key><integer>340349</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252941879</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:57:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B8659B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/01%20The%20Beginning.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1504</key>
-		<dict>
-			<key>Track ID</key><integer>1504</integer>
-			<key>Name</key><string>Deep Water</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5719440</integer>
-			<key>Total Time</key><integer>357328</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253603298</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:41:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B8659E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/02%20Deep%20Water.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1505</key>
-		<dict>
-			<key>Track ID</key><integer>1505</integer>
-			<key>Name</key><string>Crazy</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5714424</integer>
-			<key>Total Time</key><integer>357015</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246632648</integer>
-			<key>Play Date UTC</key><date>2006-11-18T02:24:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B865A0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/03%20Crazy.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1506</key>
-		<dict>
-			<key>Track ID</key><integer>1506</integer>
-			<key>Name</key><string>Killer</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6124442</integer>
-			<key>Total Time</key><integer>382641</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253338033</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:00:33Z</date>
-			<key>Persistent ID</key><string>87139F8602B865A2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/04%20Killer.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1507</key>
-		<dict>
-			<key>Track ID</key><integer>1507</integer>
-			<key>Name</key><string>Whirlpool</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3815636</integer>
-			<key>Total Time</key><integer>238341</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252525007</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:10:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B865A4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/05%20Whirlpool.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1508</key>
-		<dict>
-			<key>Track ID</key><integer>1508</integer>
-			<key>Name</key><string>Future Love Paradise</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4169229</integer>
-			<key>Total Time</key><integer>260440</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253352942</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:09:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B865A6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/06%20Future%20Love%20Paradise.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1509</key>
-		<dict>
-			<key>Track ID</key><integer>1509</integer>
-			<key>Name</key><string>Wild</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5255505</integer>
-			<key>Total Time</key><integer>328333</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252928570</integer>
-			<key>Play Date UTC</key><date>2007-01-29T23:16:10Z</date>
-			<key>Persistent ID</key><string>87139F8602B865A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/07%20Wild.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1510</key>
-		<dict>
-			<key>Track ID</key><integer>1510</integer>
-			<key>Name</key><string>Violet</string>
-			<key>Artist</key><string>Seal</string>
-			<key>Album</key><string>Seal</string>
-			<key>Genre</key><string>General R&#38;B</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8172860</integer>
-			<key>Total Time</key><integer>510667</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252923941</integer>
-			<key>Play Date UTC</key><date>2007-01-29T21:59:01Z</date>
-			<key>Persistent ID</key><string>87139F8602B865AA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Seal/Seal/09%20Violet.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1511</key>
-		<dict>
-			<key>Track ID</key><integer>1511</integer>
-			<key>Name</key><string>6 Underground</string>
-			<key>Artist</key><string>Sneaker Pimps</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3954732</integer>
-			<key>Total Time</key><integer>246778</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>23</integer>
-			<key>Play Date</key><integer>3253372777</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:39:37Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-02T23:08:49Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865AC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Sneaker%20Pimps/Late%20Lounge%20(2%20of%202)/05%206%20Underground.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1512</key>
-		<dict>
-			<key>Track ID</key><integer>1512</integer>
-			<key>Name</key><string>Cry Baby [Röyksopp's Malselves Memorabilia Mix]</string>
-			<key>Artist</key><string>Spiller</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5718938</integer>
-			<key>Total Time</key><integer>357041</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253534354</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:32:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865AF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Spiller/Late%20Lounge%20(2%20of%202)/09%20Cry%20Baby%20%5BRo%CC%88yksopp's%20Malselves%20Memorabilia%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1513</key>
-		<dict>
-			<key>Track ID</key><integer>1513</integer>
-			<key>Name</key><string>I Think I'm in Love [The Chemical Brothers Remix]</string>
-			<key>Artist</key><string>Spiritualized</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5583791</integer>
-			<key>Total Time</key><integer>460355</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252562023</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:27:03Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865B2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Spiritualized/Plastic%20Compilation,%20Vol.%202/11%20I%20Think%20I'm%20in%20Love%20%5BThe%20Chemical%20Brothers%20Remix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1514</key>
-		<dict>
-			<key>Track ID</key><integer>1514</integer>
-			<key>Name</key><string>Black Cow</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4969579</integer>
-			<key>Total Time</key><integer>310334</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253594407</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:13:27Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865B5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/01%20Black%20Cow.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1515</key>
-		<dict>
-			<key>Track ID</key><integer>1515</integer>
-			<key>Name</key><string>Aja</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7646608</integer>
-			<key>Total Time</key><integer>477648</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253089911</integer>
-			<key>Play Date UTC</key><date>2007-01-31T20:05:11Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865B8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/02%20Aja.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1516</key>
-		<dict>
-			<key>Track ID</key><integer>1516</integer>
-			<key>Name</key><string>Deacon Blues</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7318510</integer>
-			<key>Total Time</key><integer>457142</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252512524</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:42:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865BA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/03%20Deacon%20Blues.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1517</key>
-		<dict>
-			<key>Track ID</key><integer>1517</integer>
-			<key>Name</key><string>Peg</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3800547</integer>
-			<key>Total Time</key><integer>237270</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253595212</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:26:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865BC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/04%20Peg.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1518</key>
-		<dict>
-			<key>Track ID</key><integer>1518</integer>
-			<key>Name</key><string>Home at Last</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5362461</integer>
-			<key>Total Time</key><integer>334889</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247845119</integer>
-			<key>Play Date UTC</key><date>2006-12-02T03:11:59Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865BE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/05%20Home%20at%20Last.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1519</key>
-		<dict>
-			<key>Track ID</key><integer>1519</integer>
-			<key>Name</key><string>I Got the News</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4912737</integer>
-			<key>Total Time</key><integer>306782</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253594974</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:22:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865C0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/06%20I%20Got%20the%20News.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1520</key>
-		<dict>
-			<key>Track ID</key><integer>1520</integer>
-			<key>Name</key><string>Josie</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Album</key><string>Aja</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4377749</integer>
-			<key>Total Time</key><integer>273345</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:33:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252511416</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:23:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865C2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Aja/07%20Josie.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1521</key>
-		<dict>
-			<key>Track ID</key><integer>1521</integer>
-			<key>Name</key><string>Black Friday</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5358737</integer>
-			<key>Total Time</key><integer>220905</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:28:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251634111</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:41:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B865C4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/01%20Black%20Friday.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1522</key>
-		<dict>
-			<key>Track ID</key><integer>1522</integer>
-			<key>Name</key><string>Bad Sneakers</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4862330</integer>
-			<key>Total Time</key><integer>201108</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:29:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252929420</integer>
-			<key>Play Date UTC</key><date>2007-01-29T23:30:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B865C7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/02%20Bad%20Sneakers.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1523</key>
-		<dict>
-			<key>Track ID</key><integer>1523</integer>
-			<key>Name</key><string>Rose Darling</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4499524</integer>
-			<key>Total Time</key><integer>187369</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:29:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251471243</integer>
-			<key>Play Date UTC</key><date>2007-01-13T02:27:23Z</date>
-			<key>Persistent ID</key><string>87139F8602B865C9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/03%20Rose%20Darling.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1524</key>
-		<dict>
-			<key>Track ID</key><integer>1524</integer>
-			<key>Name</key><string>Daddy Don't Live In That New York City No More</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4765342</integer>
-			<key>Total Time</key><integer>196542</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:30:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252937938</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:52:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B865CB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/04%20Daddy%20Don't%20Live%20In%20That%20New%20York%20City%20No%20More.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1525</key>
-		<dict>
-			<key>Track ID</key><integer>1525</integer>
-			<key>Name</key><string>Doctor Wu</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5728911</integer>
-			<key>Total Time</key><integer>237225</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:30:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253606715</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:38:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B865CD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/05%20Doctor%20Wu.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1526</key>
-		<dict>
-			<key>Track ID</key><integer>1526</integer>
-			<key>Name</key><string>Everyone's Gone To The Movies</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5500967</integer>
-			<key>Total Time</key><integer>226836</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:31:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253453900</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:11:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B865CF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/06%20Everyone's%20Gone%20To%20The%20Movies.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1527</key>
-		<dict>
-			<key>Track ID</key><integer>1527</integer>
-			<key>Name</key><string>Your Gold Teeth II</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6172528</integer>
-			<key>Total Time</key><integer>254910</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:32:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253292024</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:13:44Z</date>
-			<key>Persistent ID</key><string>87139F8602B865D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/07%20Your%20Gold%20Teeth%20II.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1528</key>
-		<dict>
-			<key>Track ID</key><integer>1528</integer>
-			<key>Name</key><string>Chain Lightning</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4401772</integer>
-			<key>Total Time</key><integer>181694</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:32:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253616560</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:22:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B865D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/08%20Chain%20Lightning.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1529</key>
-		<dict>
-			<key>Track ID</key><integer>1529</integer>
-			<key>Name</key><string>Any World (That I'm Welcome To)</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5704619</integer>
-			<key>Total Time</key><integer>235305</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:33:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253527208</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:33:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B865D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/09%20Any%20World%20(That%20I'm%20Welcome%20To).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1530</key>
-		<dict>
-			<key>Track ID</key><integer>1530</integer>
-			<key>Name</key><string>Throw Back The Little Ones</string>
-			<key>Artist</key><string>Steely Dan</string>
-			<key>Composer</key><string>Steely Dan</string>
-			<key>Album</key><string>Katy Lied</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4729693</integer>
-			<key>Total Time</key><integer>195604</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1975</integer>
-			<key>Date Modified</key><date>2004-07-18T18:34:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251894100</integer>
-			<key>Play Date UTC</key><date>2007-01-17T23:55:00Z</date>
-			<key>Persistent ID</key><string>87139F8602B865D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Steely%20Dan/Katy%20Lied/10%20Throw%20Back%20The%20Little%20Ones.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1531</key>
-		<dict>
-			<key>Track ID</key><integer>1531</integer>
-			<key>Name</key><string>Breakin On The Streets (False Prophet Remix)</string>
-			<key>Artist</key><string>Stir Fry</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>John Ross</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5657900</integer>
-			<key>Total Time</key><integer>234919</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B865D9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Stir%20Fry/Community%20Service/03%20Breakin%20On%20The%20Streets%20(False%20Prophet%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1532</key>
-		<dict>
-			<key>Track ID</key><integer>1532</integer>
-			<key>Name</key><string>Big Empty</string>
-			<key>Artist</key><string>Stone Temple Pilots</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3597231</integer>
-			<key>Total Time</key><integer>296515</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253090208</integer>
-			<key>Play Date UTC</key><date>2007-01-31T20:10:08Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T20:55:09Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B865DB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Stone%20Temple%20Pilots/The%20Crow/03%20Big%20Empty.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1533</key>
-		<dict>
-			<key>Track ID</key><integer>1533</integer>
-			<key>Name</key><string>Gone Hollywood</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34346695</integer>
-			<key>Total Time</key><integer>319573</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-08-22T18:46:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>859</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252540214</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:23:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B865DE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/01%20Gone%20Hollywood.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1534</key>
-		<dict>
-			<key>Track ID</key><integer>1534</integer>
-			<key>Name</key><string>The Logical Song</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>28151074</integer>
-			<key>Total Time</key><integer>251133</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-09-26T17:25:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>896</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253597891</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:11:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B865E1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/02%20The%20Logical%20Song.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1535</key>
-		<dict>
-			<key>Track ID</key><integer>1535</integer>
-			<key>Name</key><string>Goodbye Stranger</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>39054873</integer>
-			<key>Total Time</key><integer>350600</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2004-08-22T18:48:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>890</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252440676</integer>
-			<key>Play Date UTC</key><date>2007-01-24T07:44:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B865E3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/03%20Goodbye%20Stranger.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1536</key>
-		<dict>
-			<key>Track ID</key><integer>1536</integer>
-			<key>Name</key><string>Breakfast In America</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>18700703</integer>
-			<key>Total Time</key><integer>159333</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-10-03T13:01:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>937</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249540725</integer>
-			<key>Play Date UTC</key><date>2006-12-21T18:12:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B865E5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/04%20Breakfast%20In%20America.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1537</key>
-		<dict>
-			<key>Track ID</key><integer>1537</integer>
-			<key>Name</key><string>Oh Darling</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>25713917</integer>
-			<key>Total Time</key><integer>228826</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-10-18T16:17:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>898</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252409849</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:10:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B865E7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/05%20Oh%20Darling.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1538</key>
-		<dict>
-			<key>Track ID</key><integer>1538</integer>
-			<key>Name</key><string>Take The Long Way Home</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>34147064</integer>
-			<key>Total Time</key><integer>308906</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-09-24T17:25:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>883</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249530883</integer>
-			<key>Play Date UTC</key><date>2006-12-21T15:28:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B865E9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/06%20Take%20The%20Long%20Way%20Home.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1539</key>
-		<dict>
-			<key>Track ID</key><integer>1539</integer>
-			<key>Name</key><string>Lord Is It Mine</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>25112996</integer>
-			<key>Total Time</key><integer>250000</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-09-26T20:31:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>802</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252527166</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:46:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B865EB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/07%20Lord%20Is%20It%20Mine.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1540</key>
-		<dict>
-			<key>Track ID</key><integer>1540</integer>
-			<key>Name</key><string>Just Another Nervous Wreck</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>30781489</integer>
-			<key>Total Time</key><integer>265733</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-09-26T16:26:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>925</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252534899</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:54:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B865ED</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/08%20Just%20Another%20Nervous%20Wreck.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1541</key>
-		<dict>
-			<key>Track ID</key><integer>1541</integer>
-			<key>Name</key><string>Casual Conversations</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>16403308</integer>
-			<key>Total Time</key><integer>178866</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-10-17T18:46:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>732</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250619430</integer>
-			<key>Play Date UTC</key><date>2007-01-03T05:50:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-18T01:58:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B865EF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/09%20Casual%20Conversations.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1542</key>
-		<dict>
-			<key>Track ID</key><integer>1542</integer>
-			<key>Name</key><string>Child Of Vision</string>
-			<key>Artist</key><string>Supertramp</string>
-			<key>Album</key><string>Breakfast In America</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>52448214</integer>
-			<key>Total Time</key><integer>447666</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>1979</integer>
-			<key>Date Modified</key><date>2005-10-06T20:54:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>936</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246529700</integer>
-			<key>Play Date UTC</key><date>2006-11-16T21:48:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B865F1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Supertramp/Breakfast%20In%20America/10%20Child%20Of%20Vision.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1543</key>
-		<dict>
-			<key>Track ID</key><integer>1543</integer>
-			<key>Name</key><string>Psycho Killer</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Chris Frantz/David Byrne/Tina Weymouth</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6538705</integer>
-			<key>Total Time</key><integer>269844</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:17:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253275968</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:46:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B865F3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/01%20Psycho%20Killer.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1544</key>
-		<dict>
-			<key>Track ID</key><integer>1544</integer>
-			<key>Name</key><string>Swamp</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6508222</integer>
-			<key>Total Time</key><integer>268564</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:20:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253612949</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:22:29Z</date>
-			<key>Persistent ID</key><string>87139F8602B865F6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/02%20Swamp.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1545</key>
-		<dict>
-			<key>Track ID</key><integer>1545</integer>
-			<key>Name</key><string>Slippery People</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6131719</integer>
-			<key>Total Time</key><integer>253609</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:23:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:56Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253601010</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:03:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B865F8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/03%20Slippery%20People.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1546</key>
-		<dict>
-			<key>Track ID</key><integer>1546</integer>
-			<key>Name</key><string>Burning Down The House</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6139033</integer>
-			<key>Total Time</key><integer>254292</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:26:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249547368</integer>
-			<key>Play Date UTC</key><date>2006-12-21T20:02:48Z</date>
-			<key>Persistent ID</key><string>87139F8602B865FA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/04%20Burning%20Down%20The%20House.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1547</key>
-		<dict>
-			<key>Track ID</key><integer>1547</integer>
-			<key>Name</key><string>Girlfriend Is Better</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7423140</integer>
-			<key>Total Time</key><integer>307241</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:30:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249543534</integer>
-			<key>Play Date UTC</key><date>2006-12-21T18:58:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B865FC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/05%20Girlfriend%20Is%20Better.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1548</key>
-		<dict>
-			<key>Track ID</key><integer>1548</integer>
-			<key>Name</key><string>Once In A Lifetime</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Brian Eno/Chris Frantz/David Byrne/Jerry Harrison/Tina Weymouth</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8058339</integer>
-			<key>Total Time</key><integer>333972</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:34:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246906645</integer>
-			<key>Play Date UTC</key><date>2006-11-21T06:30:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B865FE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/06%20Once%20In%20A%20Lifetime.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1549</key>
-		<dict>
-			<key>Track ID</key><integer>1549</integer>
-			<key>Name</key><string>What A Day That Was</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>David Byrne</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9377218</integer>
-			<key>Total Time</key><integer>390825</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:38:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252505555</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:45:55Z</date>
-			<key>Persistent ID</key><string>87139F8602B86600</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/07%20What%20A%20Day%20That%20Was.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1550</key>
-		<dict>
-			<key>Track ID</key><integer>1550</integer>
-			<key>Name</key><string>Life During Wartime</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>David Byrne</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8521998</integer>
-			<key>Total Time</key><integer>352596</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:43:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253090560</integer>
-			<key>Play Date UTC</key><date>2007-01-31T20:16:00Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-04T22:26:37Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86602</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/08%20Life%20During%20Wartime.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1551</key>
-		<dict>
-			<key>Track ID</key><integer>1551</integer>
-			<key>Name</key><string>Take Me To The River</string>
-			<key>Artist</key><string>Talking Heads</string>
-			<key>Composer</key><string>Al Green/M. Hodges</string>
-			<key>Album</key><string>Stop Making Sense</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8717934</integer>
-			<key>Total Time</key><integer>360937</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1984</integer>
-			<key>Date Modified</key><date>2004-05-04T16:47:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253544949</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:29:09Z</date>
-			<key>Persistent ID</key><string>87139F8602B86604</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Talking%20Heads/Stop%20Making%20Sense/09%20Take%20Me%20To%20The%20River.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1552</key>
-		<dict>
-			<key>Track ID</key><integer>1552</integer>
-			<key>Name</key><string>Me And Mia</string>
-			<key>Artist</key><string>Ted Leo/Pharmacists</string>
-			<key>Album</key><string>Shake The Sheets</string>
-			<key>Genre</key><string>genre</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3381376</integer>
-			<key>Total Time</key><integer>211200</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2005-02-23T21:05:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252509976</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:59:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B86606</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Ted%20Leo_Pharmacists/Shake%20The%20Sheets/01%20Me%20And%20Mia.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1553</key>
-		<dict>
-			<key>Track ID</key><integer>1553</integer>
-			<key>Name</key><string>If u want me</string>
-			<key>Artist</key><string>The Aphrodisiacs</string>
-			<key>Album</key><string>The is a Campaign (Master)</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2623198</integer>
-			<key>Total Time</key><integer>163813</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2005-02-27T02:14:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253454064</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:14:24Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T21:43:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B86609</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Aphrodisiacs/The%20is%20a%20Campaign%20(Master)/04%20If%20u%20want%20me.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1554</key>
-		<dict>
-			<key>Track ID</key><integer>1554</integer>
-			<key>Name</key><string>Rebellion (Lies)</string>
-			<key>Artist</key><string>The Arcade Fire</string>
-			<key>Album</key><string>Funeral</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4977573</integer>
-			<key>Total Time</key><integer>310961</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T21:03:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253353581</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:19:41Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-12T02:29:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B8660C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Arcade%20Fire/Funeral/09%20Rebellion%20(Lies).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1555</key>
-		<dict>
-			<key>Track ID</key><integer>1555</integer>
-			<key>Name</key><string>Slumberdoll</string>
-			<key>Artist</key><string>The Autumns</string>
-			<key>Album</key><string>The Autumns</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3254748</integer>
-			<key>Total Time</key><integer>203284</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-02-23T21:03:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252549221</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:53:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B8660F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Autumns/The%20Autumns/07%20Slumberdoll.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1556</key>
-		<dict>
-			<key>Track ID</key><integer>1556</integer>
-			<key>Name</key><string>Come With Us</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4771056</integer>
-			<key>Total Time</key><integer>297665</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253557823</integer>
-			<key>Play Date UTC</key><date>2007-02-06T06:03:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86612</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/01%20Come%20With%20Us.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1557</key>
-		<dict>
-			<key>Track ID</key><integer>1557</integer>
-			<key>Name</key><string>It Began in Afrika</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6027865</integer>
-			<key>Total Time</key><integer>376215</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253090937</integer>
-			<key>Play Date UTC</key><date>2007-01-31T20:22:17Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T17:29:05Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86615</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/02%20It%20Began%20in%20Afrika.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1558</key>
-		<dict>
-			<key>Track ID</key><integer>1558</integer>
-			<key>Name</key><string>Galaxy Bounce</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3335367</integer>
-			<key>Total Time</key><integer>207934</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>33</integer>
-			<key>Play Date</key><integer>3253688213</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:16:53Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-12T21:32:30Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86617</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/03%20Galaxy%20Bounce.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1559</key>
-		<dict>
-			<key>Track ID</key><integer>1559</integer>
-			<key>Name</key><string>Star Guitar</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6203819</integer>
-			<key>Total Time</key><integer>387213</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253766468</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:01:08Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86619</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/04%20Star%20Guitar.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1560</key>
-		<dict>
-			<key>Track ID</key><integer>1560</integer>
-			<key>Name</key><string>Hoops</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6278210</integer>
-			<key>Total Time</key><integer>391862</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252496327</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:12:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8661B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/05%20Hoops.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1561</key>
-		<dict>
-			<key>Track ID</key><integer>1561</integer>
-			<key>Name</key><string>My Elastic Eye</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3557722</integer>
-			<key>Total Time</key><integer>221831</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>34</integer>
-			<key>Play Date</key><integer>3253677255</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:14:15Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-19T02:40:58Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8661D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/06%20My%20Elastic%20Eye.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1562</key>
-		<dict>
-			<key>Track ID</key><integer>1562</integer>
-			<key>Name</key><string>The State We're In</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6198393</integer>
-			<key>Total Time</key><integer>386873</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251455612</integer>
-			<key>Play Date UTC</key><date>2007-01-12T22:06:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T21:16:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8661F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/07%20The%20State%20We're%20In.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1563</key>
-		<dict>
-			<key>Track ID</key><integer>1563</integer>
-			<key>Name</key><string>Denmark</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4921934</integer>
-			<key>Total Time</key><integer>307095</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253707472</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:37:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-27T23:10:12Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86621</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/08%20Denmark.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1564</key>
-		<dict>
-			<key>Track ID</key><integer>1564</integer>
-			<key>Name</key><string>Pioneer Skies</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3921764</integer>
-			<key>Total Time</key><integer>244584</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252510220</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:03:40Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-14T16:50:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86623</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/09%20Pioneer%20Skies.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1565</key>
-		<dict>
-			<key>Track ID</key><integer>1565</integer>
-			<key>Name</key><string>The Test</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Come with Us</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7469397</integer>
-			<key>Total Time</key><integer>466311</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253110290</integer>
-			<key>Play Date UTC</key><date>2007-02-01T01:44:50Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86625</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Come%20with%20Us/10%20The%20Test.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1566</key>
-		<dict>
-			<key>Track ID</key><integer>1566</integer>
-			<key>Name</key><string>Block Rockin' Beats</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7638027</integer>
-			<key>Total Time</key><integer>314814</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253600756</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:59:16Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86627</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/01%20Block%20Rockin'%20Beats.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1567</key>
-		<dict>
-			<key>Track ID</key><integer>1567</integer>
-			<key>Name</key><string>Dig Your Own Hole</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7942894</integer>
-			<key>Total Time</key><integer>327401</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253558890</integer>
-			<key>Play Date UTC</key><date>2007-02-06T06:21:30Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8662A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/02%20Dig%20Your%20Own%20Hole.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1568</key>
-		<dict>
-			<key>Track ID</key><integer>1568</integer>
-			<key>Name</key><string>Elektrobank</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>12089813</integer>
-			<key>Total Time</key><integer>498644</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253274615</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:23:35Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T00:35:05Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8662C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/03%20Elektrobank.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1569</key>
-		<dict>
-			<key>Track ID</key><integer>1569</integer>
-			<key>Name</key><string>Piku</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7145844</integer>
-			<key>Total Time</key><integer>294484</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253773130</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:52:10Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-02T14:03:53Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8662E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/04%20Piku.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1570</key>
-		<dict>
-			<key>Track ID</key><integer>1570</integer>
-			<key>Name</key><string>Setting Sun</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7960502</integer>
-			<key>Total Time</key><integer>328958</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253344205</integer>
-			<key>Play Date UTC</key><date>2007-02-03T18:43:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86630</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/05%20Setting%20Sun.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1571</key>
-		<dict>
-			<key>Track ID</key><integer>1571</integer>
-			<key>Name</key><string>It Doesn't Matter</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9080315</integer>
-			<key>Total Time</key><integer>374377</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86632</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/06%20It%20Doesn't%20Matter.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1572</key>
-		<dict>
-			<key>Track ID</key><integer>1572</integer>
-			<key>Name</key><string>Don't Stop The Rock</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6998536</integer>
-			<key>Total Time</key><integer>288404</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253548360</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:26:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86634</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/07%20Don't%20Stop%20The%20Rock.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1573</key>
-		<dict>
-			<key>Track ID</key><integer>1573</integer>
-			<key>Name</key><string>Get Up On It Like This</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4062141</integer>
-			<key>Total Time</key><integer>168041</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253092315</integer>
-			<key>Play Date UTC</key><date>2007-01-31T20:45:15Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-08T00:07:27Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86636</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/08%20Get%20Up%20On%20It%20Like%20This.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1574</key>
-		<dict>
-			<key>Track ID</key><integer>1574</integer>
-			<key>Name</key><string>Lost In The K-Hole</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5633994</integer>
-			<key>Total Time</key><integer>231934</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251457204</integer>
-			<key>Play Date UTC</key><date>2007-01-12T22:33:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86638</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/09%20Lost%20In%20The%20K-Hole.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1575</key>
-		<dict>
-			<key>Track ID</key><integer>1575</integer>
-			<key>Name</key><string>Where Do I Begin</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9970013</integer>
-			<key>Total Time</key><integer>411092</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253092726</integer>
-			<key>Play Date UTC</key><date>2007-01-31T20:52:06Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8663A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/10%20Where%20Do%20I%20Begin.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1576</key>
-		<dict>
-			<key>Track ID</key><integer>1576</integer>
-			<key>Name</key><string>The Private Psychedelic Reel</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Composer</key><string>chemical brothers</string>
-			<key>Album</key><string>Dig Your Own Hole</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>13769752</integer>
-			<key>Total Time</key><integer>568297</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-08-01T15:45:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253602941</integer>
-			<key>Play Date UTC</key><date>2007-02-06T18:35:41Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8663C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Dig%20Your%20Own%20Hole/11%20The%20Private%20Psychedelic%20Reel.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1577</key>
-		<dict>
-			<key>Track ID</key><integer>1577</integer>
-			<key>Name</key><string>Leave Home</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10663231</integer>
-			<key>Total Time</key><integer>332617</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:44:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253531057</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:37:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8663E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/01%20Leave%20Home.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1578</key>
-		<dict>
-			<key>Track ID</key><integer>1578</integer>
-			<key>Name</key><string>In Dust We Trust</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10186758</integer>
-			<key>Total Time</key><integer>317727</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:46:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251346809</integer>
-			<key>Play Date UTC</key><date>2007-01-11T15:53:29Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86641</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/02%20In%20Dust%20We%20Trust.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1579</key>
-		<dict>
-			<key>Track ID</key><integer>1579</integer>
-			<key>Name</key><string>Song To The Siren</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6318963</integer>
-			<key>Total Time</key><integer>196858</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:44:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253621405</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:43:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86643</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/03%20Song%20To%20The%20Siren.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1580</key>
-		<dict>
-			<key>Track ID</key><integer>1580</integer>
-			<key>Name</key><string>Three Little Birdies Down Beat</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10859672</integer>
-			<key>Total Time</key><integer>338755</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:47:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253542489</integer>
-			<key>Play Date UTC</key><date>2007-02-06T01:48:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86645</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/04%20Three%20Little%20Birdies%20Down%20Beat.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1582</key>
-		<dict>
-			<key>Track ID</key><integer>1582</integer>
-			<key>Name</key><string>Chemical Beats</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9311551</integer>
-			<key>Total Time</key><integer>290377</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:44:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253093585</integer>
-			<key>Play Date UTC</key><date>2007-01-31T21:06:25Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-23T04:58:55Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86649</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/06%20Chemical%20Beats.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1583</key>
-		<dict>
-			<key>Track ID</key><integer>1583</integer>
-			<key>Name</key><string>Chico's Groove</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9260560</integer>
-			<key>Total Time</key><integer>288783</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:45:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253256181</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:16:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8664B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/07%20Chico's%20Groove.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1584</key>
-		<dict>
-			<key>Track ID</key><integer>1584</integer>
-			<key>Name</key><string>One Too Many Mornings</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8122875</integer>
-			<key>Total Time</key><integer>253231</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:45:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3251619040</integer>
-			<key>Play Date UTC</key><date>2007-01-14T19:30:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8664D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/08%20One%20Too%20Many%20Mornings.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1585</key>
-		<dict>
-			<key>Track ID</key><integer>1585</integer>
-			<key>Name</key><string>Life Is Sweet</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12615101</integer>
-			<key>Total Time</key><integer>393613</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:46:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3251459093</integer>
-			<key>Play Date UTC</key><date>2007-01-12T23:04:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8664F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/09%20Life%20Is%20Sweet.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1586</key>
-		<dict>
-			<key>Track ID</key><integer>1586</integer>
-			<key>Name</key><string>Playground For A Wedgeless Firm</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4878679</integer>
-			<key>Total Time</key><integer>151849</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:46:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251459245</integer>
-			<key>Play Date UTC</key><date>2007-01-12T23:07:25Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-22T21:55:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86651</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/10%20Playground%20For%20A%20Wedgeless%20Firm.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1587</key>
-		<dict>
-			<key>Track ID</key><integer>1587</integer>
-			<key>Name</key><string>Alive Alone</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Exit Planet Dust</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10149978</integer>
-			<key>Total Time</key><integer>316577</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1995</integer>
-			<key>Date Modified</key><date>2004-11-29T13:46:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>http://mp3xchange.da.ru</string>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251459562</integer>
-			<key>Play Date UTC</key><date>2007-01-12T23:12:42Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86653</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Exit%20Planet%20Dust/11%20Alive%20Alone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1588</key>
-		<dict>
-			<key>Track ID</key><integer>1588</integer>
-			<key>Name</key><string>Under the Influence</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 3</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4103609</integer>
-			<key>Total Time</key><integer>256339</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253463500</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:51:40Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T02:45:37Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86655</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Plastic%20Compilation,%20Vol.%203/09%20Under%20the%20Influence.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1589</key>
-		<dict>
-			<key>Track ID</key><integer>1589</integer>
-			<key>Name</key><string>Music: Response</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5132416</integer>
-			<key>Total Time</key><integer>320000</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253622769</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:06:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86658</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/01%20Music_%20Response.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1590</key>
-		<dict>
-			<key>Track ID</key><integer>1590</integer>
-			<key>Name</key><string>under the influence</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4109670</integer>
-			<key>Total Time</key><integer>256078</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253347458</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:37:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8665B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/02%20under%20the%20influence.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1591</key>
-		<dict>
-			<key>Track ID</key><integer>1591</integer>
-			<key>Name</key><string>Out of Control</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7049177</integer>
-			<key>Total Time</key><integer>439797</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251460833</integer>
-			<key>Play Date UTC</key><date>2007-01-12T23:33:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8665D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/03%20Out%20of%20Control.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1592</key>
-		<dict>
-			<key>Track ID</key><integer>1592</integer>
-			<key>Name</key><string>Orange Wedge</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2999152</integer>
-			<key>Total Time</key><integer>186671</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252579616</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:20:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8665F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/04%20Orange%20Wedge.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1593</key>
-		<dict>
-			<key>Track ID</key><integer>1593</integer>
-			<key>Name</key><string>Let Forever Be</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3794947</integer>
-			<key>Total Time</key><integer>236408</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251730105</integer>
-			<key>Play Date UTC</key><date>2007-01-16T02:21:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86661</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/05%20Let%20Forever%20Be.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1594</key>
-		<dict>
-			<key>Track ID</key><integer>1594</integer>
-			<key>Name</key><string>The Sunshine Underground</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8315593</integer>
-			<key>Total Time</key><integer>518948</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250581062</integer>
-			<key>Play Date UTC</key><date>2007-01-02T19:11:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86663</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/06%20The%20Sunshine%20Underground.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1595</key>
-		<dict>
-			<key>Track ID</key><integer>1595</integer>
-			<key>Name</key><string>Asleep from Day</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4608713</integer>
-			<key>Total Time</key><integer>287268</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252521635</integer>
-			<key>Play Date UTC</key><date>2007-01-25T06:13:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86665</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/07%20Asleep%20from%20Day.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1596</key>
-		<dict>
-			<key>Track ID</key><integer>1596</integer>
-			<key>Name</key><string>Got Glint?</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5236070</integer>
-			<key>Total Time</key><integer>326478</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253378573</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:16:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86667</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/08%20Got%20Glint_.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1597</key>
-		<dict>
-			<key>Track ID</key><integer>1597</integer>
-			<key>Name</key><string>Hey Boy Hey Girl</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4660958</integer>
-			<key>Total Time</key><integer>290533</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253358743</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:45:43Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86669</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/09%20Hey%20Boy%20Hey%20Girl.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1598</key>
-		<dict>
-			<key>Track ID</key><integer>1598</integer>
-			<key>Name</key><string>surrender</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4333696</integer>
-			<key>Total Time</key><integer>270080</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3247552550</integer>
-			<key>Play Date UTC</key><date>2006-11-28T17:55:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8666B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/10%20surrender.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1599</key>
-		<dict>
-			<key>Track ID</key><integer>1599</integer>
-			<key>Name</key><string>Dream On</string>
-			<key>Artist</key><string>The Chemical Brothers</string>
-			<key>Album</key><string>Surrender</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6517533</integer>
-			<key>Total Time</key><integer>406569</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249204015</integer>
-			<key>Play Date UTC</key><date>2006-12-17T20:40:15Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-24T22:55:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8666D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Chemical%20Brothers/Surrender/11%20Dream%20On.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1600</key>
-		<dict>
-			<key>Track ID</key><integer>1600</integer>
-			<key>Name</key><string>Name Of The Game (Hybrid's LA Blackout Remix)</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Ken Jordan/Scott Kirkland/Tom Morello</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8417193</integer>
-			<key>Total Time</key><integer>349100</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253679133</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:45:33Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-18T23:36:03Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B8666F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Community%20Service/08%20Name%20Of%20The%20Game%20(Hybrid's%20LA%20Blackout%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1601</key>
-		<dict>
-			<key>Track ID</key><integer>1601</integer>
-			<key>Name</key><string>Wild, Sweet &#38; Cool (Static Revenger Mix)</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Ken Jordan/Scott Kirkland/Tom Morello</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6398450</integer>
-			<key>Total Time</key><integer>264986</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:57Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253473590</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:39:50Z</date>
-			<key>Persistent ID</key><string>87139F8602B86671</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Community%20Service/13%20Wild,%20Sweet%20&#38;%20Cool%20(Static%20Revenger%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1602</key>
-		<dict>
-			<key>Track ID</key><integer>1602</integer>
-			<key>Name</key><string>You Know Its Hard (Koma + Bones Remix)</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Composer</key><string>Ken Jordan/Scott Kirkland</string>
-			<key>Album</key><string>Community Service</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9656024</integer>
-			<key>Total Time</key><integer>400718</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253506575</integer>
-			<key>Play Date UTC</key><date>2007-02-05T15:49:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B86673</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Community%20Service/15%20You%20Know%20Its%20Hard%20(Koma%20+%20Bones%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1603</key>
-		<dict>
-			<key>Track ID</key><integer>1603</integer>
-			<key>Name</key><string>Badass</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>CSII Exclusives - EP</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5597981</integer>
-			<key>Total Time</key><integer>323150</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2005-10-12T22:53:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3250614849</integer>
-			<key>Play Date UTC</key><date>2007-01-03T04:34:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86675</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/CSII%20Exclusives%20-%20EP/01%20Badass.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1604</key>
-		<dict>
-			<key>Track ID</key><integer>1604</integer>
-			<key>Name</key><string>Bound Too Long (Hyper Mix)</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>CSII Exclusives - EP</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7298461</integer>
-			<key>Total Time</key><integer>427152</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2005-10-12T22:54:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253338806</integer>
-			<key>Play Date UTC</key><date>2007-02-03T17:13:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86677</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/CSII%20Exclusives%20-%20EP/02%20Bound%20Too%20Long%20(Hyper%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1605</key>
-		<dict>
-			<key>Track ID</key><integer>1605</integer>
-			<key>Name</key><string>Keep Hope Alive (JDS Mix)</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>CSII Exclusives - EP</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7912717</integer>
-			<key>Total Time</key><integer>466487</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2005-10-12T22:57:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253530724</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:32:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86679</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/CSII%20Exclusives%20-%20EP/04%20Keep%20Hope%20Alive%20(JDS%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1606</key>
-		<dict>
-			<key>Track ID</key><integer>1606</integer>
-			<key>Name</key><string>Starting Over (Elite Force Mix)</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>CSII Exclusives - EP</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>8229277</integer>
-			<key>Total Time</key><integer>485458</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2005-10-12T22:58:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253094966</integer>
-			<key>Play Date UTC</key><date>2007-01-31T21:29:26Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8667B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/CSII%20Exclusives%20-%20EP/05%20Starting%20Over%20(Elite%20Force%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1607</key>
-		<dict>
-			<key>Track ID</key><integer>1607</integer>
-			<key>Name</key><string>Starting Over</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4372220</integer>
-			<key>Total Time</key><integer>242925</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-27T05:34:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3250620476</integer>
-			<key>Play Date UTC</key><date>2007-01-03T06:07:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8667D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/01%20Starting%20Over.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1608</key>
-		<dict>
-			<key>Track ID</key><integer>1608</integer>
-			<key>Name</key><string>Born Too Slow</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3350796</integer>
-			<key>Total Time</key><integer>179790</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-21T04:12:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>24</integer>
-			<key>Play Date</key><integer>3253110470</integer>
-			<key>Play Date UTC</key><date>2007-02-01T01:47:50Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86680</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/02%20Born%20Too%20Slow.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1609</key>
-		<dict>
-			<key>Track ID</key><integer>1609</integer>
-			<key>Name</key><string>True Grit</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5405548</integer>
-			<key>Total Time</key><integer>306803</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-21T01:50:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253712076</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:54:36Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T23:27:49Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86682</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/03%20True%20Grit.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1610</key>
-		<dict>
-			<key>Track ID</key><integer>1610</integer>
-			<key>Name</key><string>The American Way</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4762268</integer>
-			<key>Total Time</key><integer>267028</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-25T15:02:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253354819</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:40:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86684</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/04%20The%20American%20Way.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1611</key>
-		<dict>
-			<key>Track ID</key><integer>1611</integer>
-			<key>Name</key><string>I Know It's You</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6084844</integer>
-			<key>Total Time</key><integer>348785</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-22T01:37:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253531665</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:47:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86686</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/05%20I%20Know%20It's%20You.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1612</key>
-		<dict>
-			<key>Track ID</key><integer>1612</integer>
-			<key>Name</key><string>Realizer</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4146044</integer>
-			<key>Total Time</key><integer>228947</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-21T22:19:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247048094</integer>
-			<key>Play Date UTC</key><date>2006-11-22T21:48:14Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86688</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/06%20Realizer.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1613</key>
-		<dict>
-			<key>Track ID</key><integer>1613</integer>
-			<key>Name</key><string>Broken Glass</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4252316</integer>
-			<key>Total Time</key><integer>235518</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-18T17:37:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253452848</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:54:08Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8668A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/07%20Broken%20Glass.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1614</key>
-		<dict>
-			<key>Track ID</key><integer>1614</integer>
-			<key>Name</key><string>Weapons of Mass Distortion</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5154060</integer>
-			<key>Total Time</key><integer>291246</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-08T20:21:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>33</integer>
-			<key>Play Date</key><integer>3253537927</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:32:07Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-17T06:15:45Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8668C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/08%20Weapons%20of%20Mass%20Distortion.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1615</key>
-		<dict>
-			<key>Track ID</key><integer>1615</integer>
-			<key>Name</key><string>Bound Too Long</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6648092</integer>
-			<key>Total Time</key><integer>383592</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-30T01:32:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253770980</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:16:20Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-04T22:26:44Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8668E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/09%20Bound%20Too%20Long.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1616</key>
-		<dict>
-			<key>Track ID</key><integer>1616</integer>
-			<key>Name</key><string>Acetone</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5547580</integer>
-			<key>Total Time</key><integer>315580</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-25T13:52:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>14</integer>
-			<key>Play Date</key><integer>3253767141</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:12:21Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86690</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/10%20Acetone.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1617</key>
-		<dict>
-			<key>Track ID</key><integer>1617</integer>
-			<key>Name</key><string>High and Low</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5688540</integer>
-			<key>Total Time</key><integer>324288</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-07-18T17:43:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249191751</integer>
-			<key>Play Date UTC</key><date>2006-12-17T17:15:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86692</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/11%20High%20and%20Low.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1618</key>
-		<dict>
-			<key>Track ID</key><integer>1618</integer>
-			<key>Name</key><string>Wide Open</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Legion of Boom</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7610252</integer>
-			<key>Total Time</key><integer>443058</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2004</integer>
-			<key>Date Modified</key><date>2005-08-09T03:44:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253384275</integer>
-			<key>Play Date UTC</key><date>2007-02-04T05:51:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86694</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Legion%20of%20Boom/12%20Wide%20Open.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1619</key>
-		<dict>
-			<key>Track ID</key><integer>1619</integer>
-			<key>Name</key><string>Comin' Back [The Light's Southern Grit Mix]</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6416554</integer>
-			<key>Total Time</key><integer>529240</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253619041</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:04:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86696</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Plastic%20Compilation,%20Vol.%202/01%20Comin'%20Back%20%5BThe%20Light's%20Southern%20Grit%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1620</key>
-		<dict>
-			<key>Track ID</key><integer>1620</integer>
-			<key>Name</key><string>Roll It Up</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8753284</integer>
-			<key>Total Time</key><integer>362132</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:37:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253710338</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:25:38Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-20T22:40:43Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86699</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/03%20Roll%20It%20Up.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1621</key>
-		<dict>
-			<key>Track ID</key><integer>1621</integer>
-			<key>Name</key><string>Murder</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4485624</integer>
-			<key>Total Time</key><integer>280215</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>21</integer>
-			<key>Play Date</key><integer>3253110750</integer>
-			<key>Play Date UTC</key><date>2007-02-01T01:52:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-08T21:42:07Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B8669C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/04%20Murder.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1622</key>
-		<dict>
-			<key>Track ID</key><integer>1622</integer>
-			<key>Name</key><string>Name Of The Game</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6176539</integer>
-			<key>Total Time</key><integer>255060</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:38:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3245669805</integer>
-			<key>Play Date UTC</key><date>2006-11-06T22:56:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B8669E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/05%20Name%20Of%20The%20Game.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1623</key>
-		<dict>
-			<key>Track ID</key><integer>1623</integer>
-			<key>Name</key><string>The Winner</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7551593</integer>
-			<key>Total Time</key><integer>311678</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:39:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250574248</integer>
-			<key>Play Date UTC</key><date>2007-01-02T17:17:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B866A0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/06%20The%20Winner.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1624</key>
-		<dict>
-			<key>Track ID</key><integer>1624</integer>
-			<key>Name</key><string>Ready For Action</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7297018</integer>
-			<key>Total Time</key><integer>301396</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:40:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247050022</integer>
-			<key>Play Date UTC</key><date>2006-11-22T22:20:22Z</date>
-			<key>Persistent ID</key><string>87139F8602B866A2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/07%20Ready%20For%20Action.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1625</key>
-		<dict>
-			<key>Track ID</key><integer>1625</integer>
-			<key>Name</key><string>Ten Miles Back</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10174141</integer>
-			<key>Total Time</key><integer>420414</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:41:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253261651</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:47:31Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B866A4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/08%20Ten%20Miles%20Back.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1626</key>
-		<dict>
-			<key>Track ID</key><integer>1626</integer>
-			<key>Name</key><string>Over The Line</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>10020703</integer>
-			<key>Total Time</key><integer>414334</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:43:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249463647</integer>
-			<key>Play Date UTC</key><date>2006-12-20T20:47:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B866A6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/09%20Over%20The%20Line.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1627</key>
-		<dict>
-			<key>Track ID</key><integer>1627</integer>
-			<key>Name</key><string>Blowout</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11550363</integer>
-			<key>Total Time</key><integer>477609</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:44:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253097666</integer>
-			<key>Play Date UTC</key><date>2007-01-31T22:14:26Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T19:09:35Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B866A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/10%20Blowout.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1628</key>
-		<dict>
-			<key>Track ID</key><integer>1628</integer>
-			<key>Name</key><string>Tough Guy</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Tweekend</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>15730428</integer>
-			<key>Total Time</key><integer>692436</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-17T16:57:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253709976</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:19:36Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T19:11:07Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B866AA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Tweekend/11%20Tough%20Guy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1629</key>
-		<dict>
-			<key>Track ID</key><integer>1629</integer>
-			<key>Name</key><string>Trip Like I Do</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7282774</integer>
-			<key>Total Time</key><integer>454269</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253528484</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:54:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866AC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/01%20Trip%20Like%20I%20Do.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1630</key>
-		<dict>
-			<key>Track ID</key><integer>1630</integer>
-			<key>Name</key><string>Busy Child</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7135235</integer>
-			<key>Total Time</key><integer>445048</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253690869</integer>
-			<key>Play Date UTC</key><date>2007-02-07T19:01:09Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-11T02:45:32Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866AF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/02%20Busy%20Child.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1631</key>
-		<dict>
-			<key>Track ID</key><integer>1631</integer>
-			<key>Name</key><string>Cherry Twist</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4264691</integer>
-			<key>Total Time</key><integer>265639</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247031484</integer>
-			<key>Play Date UTC</key><date>2006-11-22T17:11:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866B1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/03%20Cherry%20Twist.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1632</key>
-		<dict>
-			<key>Track ID</key><integer>1632</integer>
-			<key>Name</key><string>High Roller</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5290781</integer>
-			<key>Total Time</key><integer>329769</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247558079</integer>
-			<key>Play Date UTC</key><date>2006-11-28T19:27:59Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866B3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/04%20High%20Roller.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1633</key>
-		<dict>
-			<key>Track ID</key><integer>1633</integer>
-			<key>Name</key><string>Comin' Back</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5439992</integer>
-			<key>Total Time</key><integer>339095</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253371883</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:24:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866B5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/05%20Comin'%20Back.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1634</key>
-		<dict>
-			<key>Track ID</key><integer>1634</integer>
-			<key>Name</key><string>Keep Hope Alive</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5977906</integer>
-			<key>Total Time</key><integer>372715</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253284396</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:06:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866B7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/06%20Keep%20Hope%20Alive.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1635</key>
-		<dict>
-			<key>Track ID</key><integer>1635</integer>
-			<key>Name</key><string>Vapor Trail</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6279254</integer>
-			<key>Total Time</key><integer>391549</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866B9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/07%20Vapor%20Trail.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1636</key>
-		<dict>
-			<key>Track ID</key><integer>1636</integer>
-			<key>Name</key><string>She's My Pusher</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5478862</integer>
-			<key>Total Time</key><integer>341524</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3252536502</integer>
-			<key>Play Date UTC</key><date>2007-01-25T10:21:42Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T20:45:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866BB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/08%20She's%20My%20Pusher.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1637</key>
-		<dict>
-			<key>Track ID</key><integer>1637</integer>
-			<key>Name</key><string>Jaded</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6826781</integer>
-			<key>Total Time</key><integer>425769</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251634856</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:54:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866BD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/09%20Jaded.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1638</key>
-		<dict>
-			<key>Track ID</key><integer>1638</integer>
-			<key>Name</key><string>Bad Stone</string>
-			<key>Artist</key><string>The Crystal Method</string>
-			<key>Album</key><string>Vegas</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4971878</integer>
-			<key>Total Time</key><integer>309838</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250616979</integer>
-			<key>Play Date UTC</key><date>2007-01-03T05:09:39Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T02:35:44Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866BF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Crystal%20Method/Vegas/10%20Bad%20Stone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1639</key>
-		<dict>
-			<key>Track ID</key><integer>1639</integer>
-			<key>Name</key><string>The Kiss</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>39261735</integer>
-			<key>Total Time</key><integer>374840</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-26T18:50:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>837</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252930152</integer>
-			<key>Play Date UTC</key><date>2007-01-29T23:42:32Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:44:53Z</date>
-			<key>Persistent ID</key><string>87139F8602B866C1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/01%20The%20Kiss.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1640</key>
-		<dict>
-			<key>Track ID</key><integer>1640</integer>
-			<key>Name</key><string>Catch</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>16872238</integer>
-			<key>Total Time</key><integer>164200</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-28T23:49:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>820</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253713518</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:18:38Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-05T01:01:36Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B866C4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/02%20Catch.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1641</key>
-		<dict>
-			<key>Track ID</key><integer>1641</integer>
-			<key>Name</key><string>Torture</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>31268016</integer>
-			<key>Total Time</key><integer>258266</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-10-08T18:37:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>967</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249323329</integer>
-			<key>Play Date UTC</key><date>2006-12-19T05:48:49Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:44:24Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B866C6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/03%20Torture.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1642</key>
-		<dict>
-			<key>Track ID</key><integer>1642</integer>
-			<key>Name</key><string>If Only Tonight We Could Sleep</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>31353713</integer>
-			<key>Total Time</key><integer>293266</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-08-22T05:18:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>854</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249286632</integer>
-			<key>Play Date UTC</key><date>2006-12-18T19:37:12Z</date>
-			<key>Persistent ID</key><string>87139F8602B866C8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/04%20If%20Only%20Tonight%20We%20Could%20Sleep.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1643</key>
-		<dict>
-			<key>Track ID</key><integer>1643</integer>
-			<key>Name</key><string>Why Can't I Be You?</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24263144</integer>
-			<key>Total Time</key><integer>194533</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-08-22T05:19:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>996</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253474130</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:48:50Z</date>
-			<key>Persistent ID</key><string>87139F8602B866CA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/05%20Why%20Can't%20I%20Be%20You_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1644</key>
-		<dict>
-			<key>Track ID</key><integer>1644</integer>
-			<key>Name</key><string>How Beautiful You Are</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>36459222</integer>
-			<key>Total Time</key><integer>314200</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-28T23:52:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>927</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252580431</integer>
-			<key>Play Date UTC</key><date>2007-01-25T22:33:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B866CC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/06%20How%20Beautiful%20You%20Are.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1645</key>
-		<dict>
-			<key>Track ID</key><integer>1645</integer>
-			<key>Name</key><string>The Snakepit</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>43051025</integer>
-			<key>Total Time</key><integer>419226</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-29T13:15:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>820</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253449870</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:04:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B866CE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/07%20The%20Snakepit.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1646</key>
-		<dict>
-			<key>Track ID</key><integer>1646</integer>
-			<key>Name</key><string>Just Like Heaven</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>25363983</integer>
-			<key>Total Time</key><integer>212866</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-10-17T23:20:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>952</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253359259</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:54:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B866D0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/08%20Just%20Like%20Heaven.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1647</key>
-		<dict>
-			<key>Track ID</key><integer>1647</integer>
-			<key>Name</key><string>All I Want</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>38101575</integer>
-			<key>Total Time</key><integer>322533</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-28T13:32:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>944</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249471128</integer>
-			<key>Play Date UTC</key><date>2006-12-20T22:52:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B866D2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/09%20All%20I%20Want.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1648</key>
-		<dict>
-			<key>Track ID</key><integer>1648</integer>
-			<key>Name</key><string>Hot Hot Hot!!!</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>23118828</integer>
-			<key>Total Time</key><integer>215306</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-28T13:29:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>857</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251621975</integer>
-			<key>Play Date UTC</key><date>2007-01-14T20:19:35Z</date>
-			<key>Persistent ID</key><string>87139F8602B866D4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/10%20Hot%20Hot%20Hot!!!.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1649</key>
-		<dict>
-			<key>Track ID</key><integer>1649</integer>
-			<key>Name</key><string>One More Time</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>27816114</integer>
-			<key>Total Time</key><integer>272400</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-29T01:17:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>816</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252415712</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:48:32Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-21T22:42:54Z</date>
-			<key>Persistent ID</key><string>87139F8602B866D6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/11%20One%20More%20Time.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1650</key>
-		<dict>
-			<key>Track ID</key><integer>1650</integer>
-			<key>Name</key><string>Like Cockatoos</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>22710806</integer>
-			<key>Total Time</key><integer>220000</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-10-07T15:45:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>824</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253377555</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:59:15Z</date>
-			<key>Persistent ID</key><string>87139F8602B866D8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/12%20Like%20Cockatoos.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1651</key>
-		<dict>
-			<key>Track ID</key><integer>1651</integer>
-			<key>Name</key><string>Icing Sugar</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>23007461</integer>
-			<key>Total Time</key><integer>229360</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-08-22T05:25:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>801</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250675909</integer>
-			<key>Play Date UTC</key><date>2007-01-03T21:31:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B866DA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/13%20Icing%20Sugar.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1652</key>
-		<dict>
-			<key>Track ID</key><integer>1652</integer>
-			<key>Name</key><string>The Perfect Girl</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>17005170</integer>
-			<key>Total Time</key><integer>155106</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-09-28T16:36:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>876</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249283240</integer>
-			<key>Play Date UTC</key><date>2006-12-18T18:40:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B866DC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/14%20The%20Perfect%20Girl.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1653</key>
-		<dict>
-			<key>Track ID</key><integer>1653</integer>
-			<key>Name</key><string>A Thousand Hours</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>20347139</integer>
-			<key>Total Time</key><integer>204026</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-08-22T05:26:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>796</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253618110</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:48:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B866DE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/15%20A%20Thousand%20Hours.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1654</key>
-		<dict>
-			<key>Track ID</key><integer>1654</integer>
-			<key>Name</key><string>Shiver And Shake</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>24301474</integer>
-			<key>Total Time</key><integer>209733</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2005-10-05T21:01:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>925</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253592331</integer>
-			<key>Play Date UTC</key><date>2007-02-06T15:38:51Z</date>
-			<key>Persistent ID</key><string>87139F8602B866E0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/16%20Shiver%20And%20Shake.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1655</key>
-		<dict>
-			<key>Track ID</key><integer>1655</integer>
-			<key>Name</key><string>Fight</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Composer</key><string>The Cure</string>
-			<key>Album</key><string>Kiss Me, Kiss Me, Kiss Me</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Apple Lossless audio file</string>
-			<key>Size</key><integer>30975390</integer>
-			<key>Total Time</key><integer>267666</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Track Count</key><integer>17</integer>
-			<key>Year</key><integer>1987</integer>
-			<key>Date Modified</key><date>2004-08-22T05:27:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>925</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253526678</integer>
-			<key>Play Date UTC</key><date>2007-02-05T21:24:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B866E2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Kiss%20Me,%20Kiss%20Me,%20Kiss%20Me/17%20Fight.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1656</key>
-		<dict>
-			<key>Track ID</key><integer>1656</integer>
-			<key>Name</key><string>Lullaby</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7420544</integer>
-			<key>Total Time</key><integer>465094</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:36:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3246896030</integer>
-			<key>Play Date UTC</key><date>2006-11-21T03:33:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866E4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/01%20Lullaby.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1657</key>
-		<dict>
-			<key>Track ID</key><integer>1657</integer>
-			<key>Name</key><string>Close to Me (Closer Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4189184</integer>
-			<key>Total Time</key><integer>261594</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:36:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249547890</integer>
-			<key>Play Date UTC</key><date>2006-12-21T20:11:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866E7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/02%20Close%20to%20Me%20(Closer%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1658</key>
-		<dict>
-			<key>Track ID</key><integer>1658</integer>
-			<key>Name</key><string>Fascination Street ( Extended Mix )</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>8428752</integer>
-			<key>Total Time</key><integer>528577</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:37:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866E9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/03%20Fascination%20Street%20(%20Extended%20Mix%20).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1659</key>
-		<dict>
-			<key>Track ID</key><integer>1659</integer>
-			<key>Name</key><string>The Walk (Everything Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5241472</integer>
-			<key>Total Time</key><integer>327864</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:38:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252938524</integer>
-			<key>Play Date UTC</key><date>2007-01-30T02:02:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866EB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/04%20The%20Walk%20(Everything%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1660</key>
-		<dict>
-			<key>Track ID</key><integer>1660</integer>
-			<key>Name</key><string>Love Song</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6079552</integer>
-			<key>Total Time</key><integer>380643</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:39:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253099057</integer>
-			<key>Play Date UTC</key><date>2007-01-31T22:37:37Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-02T14:03:46Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866ED</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/05%20Love%20Song.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1661</key>
-		<dict>
-			<key>Track ID</key><integer>1661</integer>
-			<key>Name</key><string>A Forest (Tree Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6644784</integer>
-			<key>Total Time</key><integer>416239</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:40:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:58Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251480435</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:00:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866EF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/06%20A%20Forest%20(Tree%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1662</key>
-		<dict>
-			<key>Track ID</key><integer>1662</integer>
-			<key>Name</key><string>Pictures of You (Extended Dub Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6434656</integer>
-			<key>Total Time</key><integer>403004</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:40:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253468330</integer>
-			<key>Play Date UTC</key><date>2007-02-05T05:12:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866F1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/07%20Pictures%20of%20You%20(Extended%20Dub%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1663</key>
-		<dict>
-			<key>Track ID</key><integer>1663</integer>
-			<key>Name</key><string>Hot Hot Hot!!!</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6734016</integer>
-			<key>Total Time</key><integer>421858</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:41:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253768149</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:29:09Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866F3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/08%20Hot%20Hot%20Hot!!!.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1664</key>
-		<dict>
-			<key>Track ID</key><integer>1664</integer>
-			<key>Name</key><string>The Caterpilar (Flicker Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5459088</integer>
-			<key>Total Time</key><integer>341564</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:42:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251353270</integer>
-			<key>Play Date UTC</key><date>2007-01-11T17:41:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866F5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/09%20The%20Caterpilar%20(Flicker%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1665</key>
-		<dict>
-			<key>Track ID</key><integer>1665</integer>
-			<key>Name</key><string>In Between Days (Shiver Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6139296</integer>
-			<key>Total Time</key><integer>384404</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:43:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253536348</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:05:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866F7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/10%20In%20Between%20Days%20(Shiver%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1666</key>
-		<dict>
-			<key>Track ID</key><integer>1666</integer>
-			<key>Name</key><string>Never Enough (Big Mix)</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album Artist</key><string>The Cure</string>
-			<key>Album</key><string>Mixed Up</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4294688</integer>
-			<key>Total Time</key><integer>268235</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>1990</integer>
-			<key>Date Modified</key><date>2006-01-12T22:43:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>37</integer>
-			<key>Play Date</key><integer>3253288804</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:20:04Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866F9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/Mixed%20Up/11%20Never%20Enough%20(Big%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1667</key>
-		<dict>
-			<key>Track ID</key><integer>1667</integer>
-			<key>Name</key><string>Burn</string>
-			<key>Artist</key><string>The Cure</string>
-			<key>Album</key><string>The Crow</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4842540</integer>
-			<key>Total Time</key><integer>399438</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253548975</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:36:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B866FB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Cure/The%20Crow/01%20Burn.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1668</key>
-		<dict>
-			<key>Track ID</key><integer>1668</integer>
-			<key>Name</key><string>Do You Wanna Hit It</string>
-			<key>Artist</key><string>The Donnas</string>
-			<key>Album Artist</key><string>The Donnas</string>
-			<key>Composer</key><string>Allison Robertson/Brett Anderson/Maya Ford/Torry Castellano</string>
-			<key>Album</key><string>Turn 21</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2845717</integer>
-			<key>Total Time</key><integer>177711</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-02-23T20:35:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string> 000071AA 00000FA7 00019185 000092BA 00029E4E 00017F92 00008D68 00008D10 00008C1A 00007E05</string>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252487625</integer>
-			<key>Play Date UTC</key><date>2007-01-24T20:47:05Z</date>
-			<key>Persistent ID</key><string>87139F8602B866FE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Donnas/Turn%2021/02%20Do%20You%20Wanna%20Hit%20It.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1669</key>
-		<dict>
-			<key>Track ID</key><integer>1669</integer>
-			<key>Name</key><string>Cosmonaut</string>
-			<key>Artist</key><string>The Fatáles</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3495259</integer>
-			<key>Total Time</key><integer>249652</integer>
-			<key>Date Modified</key><date>2005-04-13T22:05:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>112</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251480685</integer>
-			<key>Play Date UTC</key><date>2007-01-13T05:04:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B86701</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Fata%CC%81les/Unknown%20Album/Cosmonaut.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1670</key>
-		<dict>
-			<key>Track ID</key><integer>1670</integer>
-			<key>Name</key><string>Ministry of Defense</string>
-			<key>Artist</key><string>The Fatáles</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3027145</integer>
-			<key>Total Time</key><integer>216215</integer>
-			<key>Date Modified</key><date>2005-04-13T22:05:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>112</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253555948</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:32:28Z</date>
-			<key>Persistent ID</key><string>87139F8602B86705</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Fata%CC%81les/Unknown%20Album/Ministry%20of%20Defense.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1671</key>
-		<dict>
-			<key>Track ID</key><integer>1671</integer>
-			<key>Name</key><string>You're Not the Lunar Type</string>
-			<key>Artist</key><string>The Fatáles</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4465865</integer>
-			<key>Total Time</key><integer>318981</integer>
-			<key>Date Modified</key><date>2005-04-13T22:05:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>112</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252510896</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:14:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B86709</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Fata%CC%81les/Unknown%20Album/You're%20Not%20the%20Lunar%20Type.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1672</key>
-		<dict>
-			<key>Track ID</key><integer>1672</integer>
-			<key>Name</key><string>A Beaten Dog Beneath the Hail</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3721678</integer>
-			<key>Total Time</key><integer>306886</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249540290</integer>
-			<key>Play Date UTC</key><date>2006-12-21T18:04:50Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8670D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/01%20A%20Beaten%20Dog%20Beneath%20the%20Hail.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1673</key>
-		<dict>
-			<key>Track ID</key><integer>1673</integer>
-			<key>Name</key><string>Down in the Happy Zone</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2387971</integer>
-			<key>Total Time</key><integer>196597</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252499608</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:06:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86710</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/02%20Down%20in%20the%20Happy%20Zone.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1674</key>
-		<dict>
-			<key>Track ID</key><integer>1674</integer>
-			<key>Name</key><string>Every Third Thought</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3654909</integer>
-			<key>Total Time</key><integer>301322</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253765303</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:41:43Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86712</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/03%20Every%20Third%20Thought.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1675</key>
-		<dict>
-			<key>Track ID</key><integer>1675</integer>
-			<key>Name</key><string>Blue Wires</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3555999</integer>
-			<key>Total Time</key><integer>293250</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253452613</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:50:13Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-21T22:12:39Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86714</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/04%20Blue%20Wires.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1676</key>
-		<dict>
-			<key>Track ID</key><integer>1676</integer>
-			<key>Name</key><string>Paul Has an Emotional Uncle</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4228579</integer>
-			<key>Total Time</key><integer>348786</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251635426</integer>
-			<key>Play Date UTC</key><date>2007-01-15T00:03:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86716</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/05%20Paul%20Has%20an%20Emotional%20Uncle.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1677</key>
-		<dict>
-			<key>Track ID</key><integer>1677</integer>
-			<key>Name</key><string>Six to Four to Three</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2200976</integer>
-			<key>Total Time</key><integer>181185</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86718</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/06%20Six%20to%20Four%20to%20Three.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1678</key>
-		<dict>
-			<key>Track ID</key><integer>1678</integer>
-			<key>Name</key><string>Of All Possible Worlds...Pt. II</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3650207</integer>
-			<key>Total Time</key><integer>300930</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253280132</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:55:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8671A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/07%20Of%20All%20Possible%20Worlds...Pt.%20II.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1679</key>
-		<dict>
-			<key>Track ID</key><integer>1679</integer>
-			<key>Name</key><string>The Violent Misery of Everything Lost</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3890179</integer>
-			<key>Total Time</key><integer>320757</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253557430</integer>
-			<key>Play Date UTC</key><date>2007-02-06T05:57:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8671C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/08%20The%20Violent%20Misery%20of%20Everything%20Lost.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1680</key>
-		<dict>
-			<key>Track ID</key><integer>1680</integer>
-			<key>Name</key><string>A World Reduced to Zero</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3818540</integer>
-			<key>Total Time</key><integer>314958</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246641070</integer>
-			<key>Play Date UTC</key><date>2006-11-18T04:44:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T15:55:22Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8671E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/09%20A%20World%20Reduced%20to%20Zero.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1681</key>
-		<dict>
-			<key>Track ID</key><integer>1681</integer>
-			<key>Name</key><string>Safe</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3290637</integer>
-			<key>Total Time</key><integer>271307</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253335033</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:10:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86720</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/10%20Safe.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1682</key>
-		<dict>
-			<key>Track ID</key><integer>1682</integer>
-			<key>Name</key><string>III</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4124194</integer>
-			<key>Total Time</key><integer>340088</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253368719</integer>
-			<key>Play Date UTC</key><date>2007-02-04T01:31:59Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86722</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/11%20III.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1683</key>
-		<dict>
-			<key>Track ID</key><integer>1683</integer>
-			<key>Name</key><string>112 Greene Street</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3903031</integer>
-			<key>Total Time</key><integer>321828</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251468567</integer>
-			<key>Play Date UTC</key><date>2007-01-13T01:42:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86724</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/12%20112%20Greene%20Street.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1684</key>
-		<dict>
-			<key>Track ID</key><integer>1684</integer>
-			<key>Name</key><string>Thunder Ain't Rain</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>III</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3750518</integer>
-			<key>Total Time</key><integer>309289</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251889786</integer>
-			<key>Play Date UTC</key><date>2007-01-17T22:43:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86726</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/III/13%20Thunder%20Ain't%20Rain.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1685</key>
-		<dict>
-			<key>Track ID</key><integer>1685</integer>
-			<key>Name</key><string>Black Helicopters</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3829428</integer>
-			<key>Total Time</key><integer>239203</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253617906</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:45:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B86728</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/01%20Black%20Helicopters.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1686</key>
-		<dict>
-			<key>Track ID</key><integer>1686</integer>
-			<key>Name</key><string>Driving Nowhere</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5025627</integer>
-			<key>Total Time</key><integer>313965</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251892211</integer>
-			<key>Play Date UTC</key><date>2007-01-17T23:23:31Z</date>
-			<key>Persistent ID</key><string>87139F8602B8672B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/02%20Driving%20Nowhere.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1687</key>
-		<dict>
-			<key>Track ID</key><integer>1687</integer>
-			<key>Name</key><string>Slow Steady Starvation</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3908005</integer>
-			<key>Total Time</key><integer>244114</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252392607</integer>
-			<key>Play Date UTC</key><date>2007-01-23T18:23:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B8672D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/03%20Slow%20Steady%20Starvation.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1688</key>
-		<dict>
-			<key>Track ID</key><integer>1688</integer>
-			<key>Name</key><string>1961</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6074705</integer>
-			<key>Total Time</key><integer>379533</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249487894</integer>
-			<key>Play Date UTC</key><date>2006-12-21T03:31:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B8672F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/04%201961.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1689</key>
-		<dict>
-			<key>Track ID</key><integer>1689</integer>
-			<key>Name</key><string>The Americans</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3543962</integer>
-			<key>Total Time</key><integer>221361</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249553098</integer>
-			<key>Play Date UTC</key><date>2006-12-21T21:38:18Z</date>
-			<key>Persistent ID</key><string>87139F8602B86731</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/05%20The%20Americans.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1690</key>
-		<dict>
-			<key>Track ID</key><integer>1690</integer>
-			<key>Name</key><string>Roswell Crash</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3770078</integer>
-			<key>Total Time</key><integer>235493</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253348262</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:51:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B86733</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/06%20Roswell%20Crash.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1691</key>
-		<dict>
-			<key>Track ID</key><integer>1691</integer>
-			<key>Name</key><string>The Common Ground</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3258078</integer>
-			<key>Total Time</key><integer>203493</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252544849</integer>
-			<key>Play Date UTC</key><date>2007-01-25T12:40:49Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T15:55:16Z</date>
-			<key>Persistent ID</key><string>87139F8602B86735</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/07%20The%20Common%20Ground.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1692</key>
-		<dict>
-			<key>Track ID</key><integer>1692</integer>
-			<key>Name</key><string>Another Theory</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1406101</integer>
-			<key>Total Time</key><integer>87745</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249307206</integer>
-			<key>Play Date UTC</key><date>2006-12-19T01:20:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B86737</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/08%20Another%20Theory.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1693</key>
-		<dict>
-			<key>Track ID</key><integer>1693</integer>
-			<key>Name</key><string>Wailing And Gnashing Of Teeth</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2264589</integer>
-			<key>Total Time</key><integer>141400</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249281458</integer>
-			<key>Play Date UTC</key><date>2006-12-18T18:10:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B86739</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/09%20Wailing%20And%20Gnashing%20Of%20Teeth.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1694</key>
-		<dict>
-			<key>Track ID</key><integer>1694</integer>
-			<key>Name</key><string>Fall Of The American Empire</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4322620</integer>
-			<key>Total Time</key><integer>270027</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250572630</integer>
-			<key>Play Date UTC</key><date>2007-01-02T16:50:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B8673B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/10%20Fall%20Of%20The%20American%20Empire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1695</key>
-		<dict>
-			<key>Track ID</key><integer>1695</integer>
-			<key>Name</key><string>All Things Considered</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4337249</integer>
-			<key>Total Time</key><integer>270942</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252561085</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:11:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B8673D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/11%20All%20Things%20Considered.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1696</key>
-		<dict>
-			<key>Track ID</key><integer>1696</integer>
-			<key>Name</key><string>Corrosion Of The Masses</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3900899</integer>
-			<key>Total Time</key><integer>243670</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253611551</integer>
-			<key>Play Date UTC</key><date>2007-02-06T20:59:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B8673F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/12%20Corrosion%20Of%20The%20Masses.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1697</key>
-		<dict>
-			<key>Track ID</key><integer>1697</integer>
-			<key>Name</key><string>End Of It All</string>
-			<key>Artist</key><string>The Grassy Knoll</string>
-			<key>Album</key><string>Positive</string>
-			<key>Genre</key><string>Acid Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1656458</integer>
-			<key>Total Time</key><integer>103392</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249577557</integer>
-			<key>Play Date UTC</key><date>2006-12-22T04:25:57Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-28T20:45:30Z</date>
-			<key>Persistent ID</key><string>87139F8602B86741</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Grassy%20Knoll/Positive/13%20End%20Of%20It%20All.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1698</key>
-		<dict>
-			<key>Track ID</key><integer>1698</integer>
-			<key>Name</key><string>Little Fluffy Clouds</string>
-			<key>Artist</key><string>The Orb</string>
-			<key>Album Artist</key><string>The Orb</string>
-			<key>Composer</key><string>Alex Paterson, Ennio Morricone, Martin Glover, Rickie Lee Jones &#38; Steve Reich</string>
-			<key>Album</key><string>The Orb's Adventures Beyond the Ultraworld</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4838955</integer>
-			<key>Total Time</key><integer>267074</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2005-07-25T15:40:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>24</integer>
-			<key>Play Date</key><integer>3253099894</integer>
-			<key>Play Date UTC</key><date>2007-01-31T22:51:34Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86743</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Orb/The%20Orb's%20Adventures%20Beyond%20the%20Ultraworld/1-01%20Little%20Fluffy%20Clouds.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1699</key>
-		<dict>
-			<key>Track ID</key><integer>1699</integer>
-			<key>Name</key><string>Jericho</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5416919</integer>
-			<key>Total Time</key><integer>222868</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:27:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249191974</integer>
-			<key>Play Date UTC</key><date>2006-12-17T17:19:34Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86746</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-01%20Jericho.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1700</key>
-		<dict>
-			<key>Track ID</key><integer>1700</integer>
-			<key>Name</key><string>Music Reach 1/2/3/4</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6119776</integer>
-			<key>Total Time</key><integer>252094</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:27:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250679670</integer>
-			<key>Play Date UTC</key><date>2007-01-03T22:34:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-16T15:42:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86749</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-02%20Music%20Reach%201_2_3_4.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1701</key>
-		<dict>
-			<key>Track ID</key><integer>1701</integer>
-			<key>Name</key><string>Wind It Up</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6628653</integer>
-			<key>Total Time</key><integer>273108</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252478169</integer>
-			<key>Play Date UTC</key><date>2007-01-24T18:09:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8674B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-03%20Wind%20It%20Up.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1702</key>
-		<dict>
-			<key>Track ID</key><integer>1702</integer>
-			<key>Name</key><string>Your Love</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8034697</integer>
-			<key>Total Time</key><integer>331177</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252526519</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:35:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8674D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-04%20Your%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1703</key>
-		<dict>
-			<key>Track ID</key><integer>1703</integer>
-			<key>Name</key><string>Hyperspeed (G-Force Part 2)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7644915</integer>
-			<key>Total Time</key><integer>315070</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252035488</integer>
-			<key>Play Date UTC</key><date>2007-01-19T15:11:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8674F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-05%20Hyperspeed%20(G-Force%20Part%202).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1704</key>
-		<dict>
-			<key>Track ID</key><integer>1704</integer>
-			<key>Name</key><string>Charly (Trip Into Drum &#38; Bass Version)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7587486</integer>
-			<key>Total Time</key><integer>312702</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246636107</integer>
-			<key>Play Date UTC</key><date>2006-11-18T03:21:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86751</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-06%20Charly%20(Trip%20Into%20Drum%20&#38;%20Bass%20Version).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1705</key>
-		<dict>
-			<key>Track ID</key><integer>1705</integer>
-			<key>Name</key><string>Out Of Space</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7237417</integer>
-			<key>Total Time</key><integer>298238</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253546756</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:59:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86753</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-07%20Out%20Of%20Space.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1706</key>
-		<dict>
-			<key>Track ID</key><integer>1706</integer>
-			<key>Name</key><string>Everybody In The Place (135 &#38; Rising)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6090141</integer>
-			<key>Total Time</key><integer>250878</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249114444</integer>
-			<key>Play Date UTC</key><date>2006-12-16T19:47:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86755</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-08%20Everybody%20In%20The%20Place%20(135%20&#38;%20Rising).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1707</key>
-		<dict>
-			<key>Track ID</key><integer>1707</integer>
-			<key>Name</key><string>Weather Experience</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11755028</integer>
-			<key>Total Time</key><integer>484798</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249454219</integer>
-			<key>Play Date UTC</key><date>2006-12-20T18:10:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86757</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-09%20Weather%20Experience.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1708</key>
-		<dict>
-			<key>Track ID</key><integer>1708</integer>
-			<key>Name</key><string>Fire (Sunrise Version)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7258550</integer>
-			<key>Total Time</key><integer>299134</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247384887</integer>
-			<key>Play Date UTC</key><date>2006-11-26T19:21:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86759</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-10%20Fire%20(Sunrise%20Version).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1709</key>
-		<dict>
-			<key>Track ID</key><integer>1709</integer>
-			<key>Name</key><string>Ruff In The Jungle Bizness</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7495926</integer>
-			<key>Total Time</key><integer>308926</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253259058</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:04:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8675B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-11%20Ruff%20In%20The%20Jungle%20Bizness.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1710</key>
-		<dict>
-			<key>Track ID</key><integer>1710</integer>
-			<key>Name</key><string>Death Of The Prodigy Dancers (Live)</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Experience</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5422284</integer>
-			<key>Total Time</key><integer>223273</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>1992</integer>
-			<key>Date Modified</key><date>2004-08-01T16:28:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8675D</string>
-			<key>Disabled</key><true/>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Experience/1-12%20Death%20Of%20The%20Prodigy%20Dancers%20(Live).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1711</key>
-		<dict>
-			<key>Track ID</key><integer>1711</integer>
-			<key>Name</key><string>Mindfields</string>
-			<key>Artist</key><string>The Prodigy</string>
-			<key>Album</key><string>Matrix</string>
-			<key>Genre</key><string>Soundtrack</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5456543</integer>
-			<key>Total Time</key><integer>340897</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:27:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253448664</integer>
-			<key>Play Date UTC</key><date>2007-02-04T23:44:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B8675F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/The%20Prodigy/Matrix/07%20Mindfields.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1712</key>
-		<dict>
-			<key>Track ID</key><integer>1712</integer>
-			<key>Name</key><string>The Cosmic Game</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2372090</integer>
-			<key>Total Time</key><integer>139225</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:32:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252471585</integer>
-			<key>Play Date UTC</key><date>2007-01-24T16:19:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86762</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Cosmic%20Game/04%20The%20Cosmic%20Game.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1713</key>
-		<dict>
-			<key>Track ID</key><integer>1713</integer>
-			<key>Name</key><string>A Gentle Dissolve</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2863596</integer>
-			<key>Total Time</key><integer>169643</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:38:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252476114</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:35:14Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86764</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Cosmic%20Game/16%20A%20Gentle%20Dissolve.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1714</key>
-		<dict>
-			<key>Track ID</key><integer>1714</integer>
-			<key>Name</key><string>Treasures</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2450381</integer>
-			<key>Total Time</key><integer>145007</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-27T09:15:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249491381</integer>
-			<key>Play Date UTC</key><date>2006-12-21T04:29:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86766</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/01%20Treasures.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1715</key>
-		<dict>
-			<key>Track ID</key><integer>1715</integer>
-			<key>Name</key><string>Le Monde</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3195037</integer>
-			<key>Total Time</key><integer>191029</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-20T09:05:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3250703141</integer>
-			<key>Play Date UTC</key><date>2007-01-04T05:05:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86769</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/02%20Le%20Monde.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1716</key>
-		<dict>
-			<key>Track ID</key><integer>1716</integer>
-			<key>Name</key><string>Indra</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5328685</integer>
-			<key>Total Time</key><integer>322895</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-17T18:09:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252511999</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:33:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8676B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/03%20Indra.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1717</key>
-		<dict>
-			<key>Track ID</key><integer>1717</integer>
-			<key>Name</key><string>Lebanese Blonde</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4777901</integer>
-			<key>Total Time</key><integer>288854</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-21T08:28:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8676D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/04%20Lebanese%20Blonde.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1718</key>
-		<dict>
-			<key>Track ID</key><integer>1718</integer>
-			<key>Name</key><string>Focus On Sight</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3782653</integer>
-			<key>Total Time</key><integer>227345</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-20T17:35:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253769472</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:51:12Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8676F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/05%20Focus%20On%20Sight.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1719</key>
-		<dict>
-			<key>Track ID</key><integer>1719</integer>
-			<key>Name</key><string>Air Batucada</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4730941</integer>
-			<key>Total Time</key><integer>285952</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-17T23:57:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252409621</integer>
-			<key>Play Date UTC</key><date>2007-01-23T23:07:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86771</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/06%20Air%20Batucada.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1720</key>
-		<dict>
-			<key>Track ID</key><integer>1720</integer>
-			<key>Name</key><string>So Com Voce</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2811053</integer>
-			<key>Total Time</key><integer>167298</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-21T07:53:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252525430</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:17:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86773</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/07%20So%20Com%20Voce.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1721</key>
-		<dict>
-			<key>Track ID</key><integer>1721</integer>
-			<key>Name</key><string>Samba Tranquille</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3120653</integer>
-			<key>Total Time</key><integer>186431</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-21T06:24:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253253018</integer>
-			<key>Play Date UTC</key><date>2007-02-02T17:23:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86775</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/08%20Samba%20Tranquille.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1722</key>
-		<dict>
-			<key>Track ID</key><integer>1722</integer>
-			<key>Name</key><string>Shadows of Ourselves</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3628237</integer>
-			<key>Total Time</key><integer>217801</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-26T01:28:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249286117</integer>
-			<key>Play Date UTC</key><date>2006-12-18T19:28:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86777</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/09%20Shadows%20of%20Ourselves.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1723</key>
-		<dict>
-			<key>Track ID</key><integer>1723</integer>
-			<key>Name</key><string>The Hong Kong Triad</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3045133</integer>
-			<key>Total Time</key><integer>181764</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-28T03:48:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253765485</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:44:45Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86779</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/10%20The%20Hong%20Kong%20Triad.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1724</key>
-		<dict>
-			<key>Track ID</key><integer>1724</integer>
-			<key>Name</key><string>Illumination</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4605821</integer>
-			<key>Total Time</key><integer>278220</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-27T08:59:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253179699</integer>
-			<key>Play Date UTC</key><date>2007-02-01T21:01:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8677B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/11%20Illumination.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1725</key>
-		<dict>
-			<key>Track ID</key><integer>1725</integer>
-			<key>Name</key><string>The Mirror Conspiracy</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3746205</integer>
-			<key>Total Time</key><integer>225092</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-21T19:13:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246374258</integer>
-			<key>Play Date UTC</key><date>2006-11-15T02:37:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8677D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/12%20The%20Mirror%20Conspiracy.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1726</key>
-		<dict>
-			<key>Track ID</key><integer>1726</integer>
-			<key>Name</key><string>Tomorrow</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Mirror Conspiracy</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3718397</integer>
-			<key>Total Time</key><integer>223374</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2005-07-30T15:31:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246045077</integer>
-			<key>Play Date UTC</key><date>2006-11-11T07:11:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8677F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Mirror%20Conspiracy/13%20Tomorrow.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1727</key>
-		<dict>
-			<key>Track ID</key><integer>1727</integer>
-			<key>Name</key><string>Heaven's Gonna Burn Your Eyes</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4109874</integer>
-			<key>Total Time</key><integer>250309</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:49:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253515181</integer>
-			<key>Play Date UTC</key><date>2007-02-05T18:13:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86781</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/01%20Heaven's%20Gonna%20Burn%20Your%20Eyes.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1728</key>
-		<dict>
-			<key>Track ID</key><integer>1728</integer>
-			<key>Name</key><string>Facing East</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3682690</integer>
-			<key>Total Time</key><integer>223908</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:50:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252467814</integer>
-			<key>Play Date UTC</key><date>2007-01-24T15:16:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86784</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/02%20Facing%20East.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1729</key>
-		<dict>
-			<key>Track ID</key><integer>1729</integer>
-			<key>Name</key><string>The Outernationalist</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3462418</integer>
-			<key>Total Time</key><integer>210301</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:50:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253597078</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:57:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86786</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/03%20The%20Outernationalist.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1730</key>
-		<dict>
-			<key>Track ID</key><integer>1730</integer>
-			<key>Name</key><string>Interlude</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>1370834</integer>
-			<key>Total Time</key><integer>81036</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:50:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252937741</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:49:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86788</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/04%20Interlude.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1731</key>
-		<dict>
-			<key>Track ID</key><integer>1731</integer>
-			<key>Name</key><string>Omid (Hope)</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3753586</integer>
-			<key>Total Time</key><integer>228297</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:51:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251300289</integer>
-			<key>Play Date UTC</key><date>2007-01-11T02:58:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8678A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/05%20Omid%20(Hope).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1732</key>
-		<dict>
-			<key>Track ID</key><integer>1732</integer>
-			<key>Name</key><string>All That We Perceive</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3719026</integer>
-			<key>Total Time</key><integer>226160</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:51:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:12:59Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252513899</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:04:59Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8678C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/06%20All%20That%20We%20Perceive.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1733</key>
-		<dict>
-			<key>Track ID</key><integer>1733</integer>
-			<key>Name</key><string>Un Simple Histoire (A Simple Story)</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3707778</integer>
-			<key>Total Time</key><integer>225464</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:51:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250709611</integer>
-			<key>Play Date UTC</key><date>2007-01-04T06:53:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8678E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/07%20Un%20Simple%20Histoire%20(A%20Simple%20Story).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1734</key>
-		<dict>
-			<key>Track ID</key><integer>1734</integer>
-			<key>Name</key><string>Meu Destino (My Destiny)</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3457170</integer>
-			<key>Total Time</key><integer>209976</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:52:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252552588</integer>
-			<key>Play Date UTC</key><date>2007-01-25T14:49:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86790</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/08%20Meu%20Destino%20(My%20Destiny).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1735</key>
-		<dict>
-			<key>Track ID</key><integer>1735</integer>
-			<key>Name</key><string>Exilio (Exile)</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3021330</integer>
-			<key>Total Time</key><integer>183041</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:52:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252406084</integer>
-			<key>Play Date UTC</key><date>2007-01-23T22:08:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86792</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/09%20Exilio%20(Exile).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1736</key>
-		<dict>
-			<key>Track ID</key><integer>1736</integer>
-			<key>Name</key><string>From Creation</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4270194</integer>
-			<key>Total Time</key><integer>260224</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:53:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3247028940</integer>
-			<key>Play Date UTC</key><date>2006-11-22T16:29:00Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86794</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/10%20From%20Creation.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1737</key>
-		<dict>
-			<key>Track ID</key><integer>1737</integer>
-			<key>Name</key><string>The Richest Man in Babylon</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3785922</integer>
-			<key>Total Time</key><integer>230294</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:53:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253604552</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:02:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86796</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/11%20The%20Richest%20Man%20in%20Babylon.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1738</key>
-		<dict>
-			<key>Track ID</key><integer>1738</integer>
-			<key>Name</key><string>Liberation Front</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4979538</integer>
-			<key>Total Time</key><integer>304063</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:54:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250684911</integer>
-			<key>Play Date UTC</key><date>2007-01-04T00:01:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86798</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/12%20Liberation%20Front.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1739</key>
-		<dict>
-			<key>Track ID</key><integer>1739</integer>
-			<key>Name</key><string>The State of the Union</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4404706</integer>
-			<key>Total Time</key><integer>268537</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:54:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252484192</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:49:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8679A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/13%20The%20State%20of%20the%20Union.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1740</key>
-		<dict>
-			<key>Track ID</key><integer>1740</integer>
-			<key>Name</key><string>Until the Morning</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3894482</integer>
-			<key>Total Time</key><integer>237004</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:54:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253292261</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:17:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8679C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/14%20Until%20the%20Morning.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1741</key>
-		<dict>
-			<key>Track ID</key><integer>1741</integer>
-			<key>Name</key><string>Resolution</string>
-			<key>Artist</key><string>Thievery Corporation</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Richest Man in Babylon</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4698114</integer>
-			<key>Total Time</key><integer>286672</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>15</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2005-05-09T20:55:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252483924</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:45:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8679E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation/The%20Richest%20Man%20in%20Babylon/15%20Resolution.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1742</key>
-		<dict>
-			<key>Track ID</key><integer>1742</integer>
-			<key>Name</key><string>The Heart's a Lonely Hunter</string>
-			<key>Artist</key><string>Thievery Corporation &#38; David Byrne</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4071108</integer>
-			<key>Total Time</key><integer>243854</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:35:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251886099</integer>
-			<key>Play Date UTC</key><date>2007-01-17T21:41:39Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867A0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20David%20Byrne/The%20Cosmic%20Game/10%20The%20Heart's%20a%20Lonely%20Hunter.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1743</key>
-		<dict>
-			<key>Track ID</key><integer>1743</integer>
-			<key>Name</key><string>Doors of Perception</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Doors of Perception featuring Gunjan</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3299253</integer>
-			<key>Total Time</key><integer>196346</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:36:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253100499</integer>
-			<key>Play Date UTC</key><date>2007-01-31T23:01:39Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867A2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Doors%20of%20Perception%20featuring%20Gunjan/The%20Cosmic%20Game/12%20Doors%20of%20Perception.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1744</key>
-		<dict>
-			<key>Track ID</key><integer>1744</integer>
-			<key>Name</key><string>Pela Janela (Through the Window)</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Gigi Rezende</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3706922</integer>
-			<key>Total Time</key><integer>221493</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:34:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252392829</integer>
-			<key>Play Date UTC</key><date>2007-01-23T18:27:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867A4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Gigi%20Rezende/The%20Cosmic%20Game/08%20Pela%20Janela%20(Through%20the%20Window).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1745</key>
-		<dict>
-			<key>Track ID</key><integer>1745</integer>
-			<key>Name</key><string>Satyam Shivam Sundaram</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Gunjan</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4115210</integer>
-			<key>Total Time</key><integer>247407</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:33:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247664954</integer>
-			<key>Play Date UTC</key><date>2006-11-30T01:09:14Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867A6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Gunjan/The%20Cosmic%20Game/05%20Satyam%20Shivam%20Sundaram.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1746</key>
-		<dict>
-			<key>Track ID</key><integer>1746</integer>
-			<key>Name</key><string>Holographic Universe</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Gunjan</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3712360</integer>
-			<key>Total Time</key><integer>222027</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:36:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253616065</integer>
-			<key>Play Date UTC</key><date>2007-02-06T22:14:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Gunjan/The%20Cosmic%20Game/11%20Holographic%20Universe.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1747</key>
-		<dict>
-			<key>Track ID</key><integer>1747</integer>
-			<key>Name</key><string>The Supreme Illusion</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Gunjan</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4175112</integer>
-			<key>Total Time</key><integer>250240</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:37:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251356853</integer>
-			<key>Play Date UTC</key><date>2007-01-11T18:40:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867AA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Gunjan/The%20Cosmic%20Game/14%20The%20Supreme%20Illusion.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1748</key>
-		<dict>
-			<key>Track ID</key><integer>1748</integer>
-			<key>Name</key><string>The Time We Lost Our Way</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Loulou</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4191356</integer>
-			<key>Total Time</key><integer>251726</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:38:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251621518</integer>
-			<key>Play Date UTC</key><date>2007-01-14T20:11:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867AC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Loulou/The%20Cosmic%20Game/15%20The%20Time%20We%20Lost%20Our%20Way.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1749</key>
-		<dict>
-			<key>Track ID</key><integer>1749</integer>
-			<key>Name</key><string>Amerimacka</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Notch</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5658925</integer>
-			<key>Total Time</key><integer>341517</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:33:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249286973</integer>
-			<key>Play Date UTC</key><date>2006-12-18T19:42:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867AE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Notch/The%20Cosmic%20Game/06%20Amerimacka.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1750</key>
-		<dict>
-			<key>Track ID</key><integer>1750</integer>
-			<key>Name</key><string>Sol Tapado (The Covered Sun)</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Patrick de Santos</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3968587</integer>
-			<key>Total Time</key><integer>237538</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:35:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252574689</integer>
-			<key>Play Date UTC</key><date>2007-01-25T20:58:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867B0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Patrick%20de%20Santos/The%20Cosmic%20Game/09%20Sol%20Tapado%20(The%20Covered%20Sun).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1751</key>
-		<dict>
-			<key>Track ID</key><integer>1751</integer>
-			<key>Name</key><string>Revolution Solution</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Perry Farrell</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3708942</integer>
-			<key>Total Time</key><integer>221516</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:32:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252404642</integer>
-			<key>Play Date UTC</key><date>2007-01-23T21:44:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867B2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Perry%20Farrell/The%20Cosmic%20Game/03%20Revolution%20Solution.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1752</key>
-		<dict>
-			<key>Track ID</key><integer>1752</integer>
-			<key>Name</key><string>Wires and Watchtowers</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Sista Pat</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4321740</integer>
-			<key>Total Time</key><integer>259249</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:37:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249378616</integer>
-			<key>Play Date UTC</key><date>2006-12-19T21:10:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867B4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Sista%20Pat/The%20Cosmic%20Game/13%20Wires%20and%20Watchtowers.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1753</key>
-		<dict>
-			<key>Track ID</key><integer>1753</integer>
-			<key>Name</key><string>Marching the Hate Machines (Into the Sun)</string>
-			<key>Artist</key><string>Thievery Corporation &#38; The Flaming Lips</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4029991</integer>
-			<key>Total Time</key><integer>241207</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:31:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253597640</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:07:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867B6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20The%20Flaming%20Lips/The%20Cosmic%20Game/01%20Marching%20the%20Hate%20Machines%20(Into%20the%20Sun).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1754</key>
-		<dict>
-			<key>Track ID</key><integer>1754</integer>
-			<key>Name</key><string>Ambicion Eterna (Eternal Ambition)</string>
-			<key>Artist</key><string>Thievery Corporation &#38; Verny Varela</string>
-			<key>Album Artist</key><string>Thievery Corporation</string>
-			<key>Album</key><string>The Cosmic Game</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3747948</integer>
-			<key>Total Time</key><integer>223955</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-01-12T21:34:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252987591</integer>
-			<key>Play Date UTC</key><date>2007-01-30T15:39:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867B8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Thievery%20Corporation%20&#38;%20Verny%20Varela/The%20Cosmic%20Game/07%20Ambicion%20Eterna%20(Eternal%20Ambition).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1755</key>
-		<dict>
-			<key>Track ID</key><integer>1755</integer>
-			<key>Name</key><string>Ride</string>
-			<key>Artist</key><string>TPC</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6305428</integer>
-			<key>Total Time</key><integer>520150</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253452320</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:45:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867BA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/TPC/Plastic%20Compilation,%20Vol.%202/09%20Ride.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1756</key>
-		<dict>
-			<key>Track ID</key><integer>1756</integer>
-			<key>Name</key><string>The Door</string>
-			<key>Artist</key><string>Turin Brakes</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3463212</integer>
-			<key>Total Time</key><integer>216058</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252405901</integer>
-			<key>Play Date UTC</key><date>2007-01-23T22:05:01Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867BD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Turin%20Brakes/Late%20Lounge%20(2%20of%202)/02%20The%20Door.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1757</key>
-		<dict>
-			<key>Track ID</key><integer>1757</integer>
-			<key>Name</key><string>Zoo Station</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3357815</integer>
-			<key>Total Time</key><integer>276218</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253596867</integer>
-			<key>Play Date UTC</key><date>2007-02-06T16:54:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867C0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/01%20Zoo%20Station.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1758</key>
-		<dict>
-			<key>Track ID</key><integer>1758</integer>
-			<key>Name</key><string>Even Better Than the Real Thing</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2697887</integer>
-			<key>Total Time</key><integer>221570</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251635078</integer>
-			<key>Play Date UTC</key><date>2007-01-14T23:57:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867C3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/02%20Even%20Better%20Than%20the%20Real%20Thing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1759</key>
-		<dict>
-			<key>Track ID</key><integer>1759</integer>
-			<key>Name</key><string>One</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3357807</integer>
-			<key>Total Time</key><integer>276218</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246878278</integer>
-			<key>Play Date UTC</key><date>2006-11-20T22:37:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867C5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/03%20One.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1760</key>
-		<dict>
-			<key>Track ID</key><integer>1760</integer>
-			<key>Name</key><string>Until the End of the World</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3388335</integer>
-			<key>Total Time</key><integer>278595</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253605578</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:19:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867C7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/04%20Until%20the%20End%20of%20the%20World.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1761</key>
-		<dict>
-			<key>Track ID</key><integer>1761</integer>
-			<key>Name</key><string>Who's Gonna Ride Your Wild Horses</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3847765</integer>
-			<key>Total Time</key><integer>316708</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:34:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252524769</integer>
-			<key>Play Date UTC</key><date>2007-01-25T07:06:09Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-02-06T16:43:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867C9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/05%20Who's%20Gonna%20Ride%20Your%20Wild%20Horses.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1762</key>
-		<dict>
-			<key>Track ID</key><integer>1762</integer>
-			<key>Name</key><string>So Cruel</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4242727</integer>
-			<key>Total Time</key><integer>349283</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253262913</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:08:33Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867CB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/06%20So%20Cruel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1763</key>
-		<dict>
-			<key>Track ID</key><integer>1763</integer>
-			<key>Name</key><string>The Fly</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3273125</integer>
-			<key>Total Time</key><integer>269165</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:00Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249200882</integer>
-			<key>Play Date UTC</key><date>2006-12-17T19:48:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867CD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/07%20The%20Fly.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1764</key>
-		<dict>
-			<key>Track ID</key><integer>1764</integer>
-			<key>Name</key><string>Mysterious Ways</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2965130</integer>
-			<key>Total Time</key><integer>243670</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253622449</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:00:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867CF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/08%20Mysterious%20Ways.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1765</key>
-		<dict>
-			<key>Track ID</key><integer>1765</integer>
-			<key>Name</key><string>Tryin' to Throw Your Arms Around the World</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2831739</integer>
-			<key>Total Time</key><integer>232724</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249205223</integer>
-			<key>Play Date UTC</key><date>2006-12-17T21:00:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/09%20Tryin'%20to%20Throw%20Your%20Arms%20Around%20the%20World.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1766</key>
-		<dict>
-			<key>Track ID</key><integer>1766</integer>
-			<key>Name</key><string>Ultraviolet (Light My Way)</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4016549</integer>
-			<key>Total Time</key><integer>330605</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252554582</integer>
-			<key>Play Date UTC</key><date>2007-01-25T15:23:02Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-19T18:01:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/10%20Ultraviolet%20(Light%20My%20Way).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1767</key>
-		<dict>
-			<key>Track ID</key><integer>1767</integer>
-			<key>Name</key><string>Acrobat</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3287544</integer>
-			<key>Total Time</key><integer>270367</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252541447</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:44:07Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-20T18:14:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/11%20Acrobat.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1768</key>
-		<dict>
-			<key>Track ID</key><integer>1768</integer>
-			<key>Name</key><string>Love Is Blindness</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Achtung Baby</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3203848</integer>
-			<key>Total Time</key><integer>263392</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:03Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252992337</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:58:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Achtung%20Baby/12%20Love%20Is%20Blindness.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1769</key>
-		<dict>
-			<key>Track ID</key><integer>1769</integer>
-			<key>Name</key><string>Beautiful Day</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6010685</integer>
-			<key>Total Time</key><integer>248041</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:11:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B867D9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/01%20Beautiful%20Day.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1770</key>
-		<dict>
-			<key>Track ID</key><integer>1770</integer>
-			<key>Name</key><string>Stuck In A Moment You Can't Get Out Of</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6596971</integer>
-			<key>Total Time</key><integer>272254</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:14:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251607500</integer>
-			<key>Play Date UTC</key><date>2007-01-14T16:18:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B867DC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/02%20Stuck%20In%20A%20Moment%20You%20Can't%20Get%20Out%20Of.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1771</key>
-		<dict>
-			<key>Track ID</key><integer>1771</integer>
-			<key>Name</key><string>Elevation</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5515391</integer>
-			<key>Total Time</key><integer>227433</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:17:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253451800</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:36:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B867DE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/03%20Elevation.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1772</key>
-		<dict>
-			<key>Track ID</key><integer>1772</integer>
-			<key>Name</key><string>Walk On</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7175751</integer>
-			<key>Total Time</key><integer>296169</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:21:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253363612</integer>
-			<key>Play Date UTC</key><date>2007-02-04T00:06:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B867E0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/04%20Walk%20On.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1773</key>
-		<dict>
-			<key>Track ID</key><integer>1773</integer>
-			<key>Name</key><string>Kite</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6464654</integer>
-			<key>Total Time</key><integer>266772</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:24:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253450474</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:14:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B867E2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/05%20Kite.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1774</key>
-		<dict>
-			<key>Track ID</key><integer>1774</integer>
-			<key>Name</key><string>In A Little While</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5316122</integer>
-			<key>Total Time</key><integer>219134</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:27:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253558562</integer>
-			<key>Play Date UTC</key><date>2007-02-06T06:16:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B867E4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/06%20In%20A%20Little%20While.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1775</key>
-		<dict>
-			<key>Track ID</key><integer>1775</integer>
-			<key>Name</key><string>Wild Honey</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5496888</integer>
-			<key>Total Time</key><integer>226644</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:29:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252468927</integer>
-			<key>Play Date UTC</key><date>2007-01-24T15:35:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B867E6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/07%20Wild%20Honey.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1776</key>
-		<dict>
-			<key>Track ID</key><integer>1776</integer>
-			<key>Name</key><string>Peace On Earth</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6987346</integer>
-			<key>Total Time</key><integer>288361</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:33:30Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250611339</integer>
-			<key>Play Date UTC</key><date>2007-01-03T03:35:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B867E8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/08%20Peace%20On%20Earth.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1777</key>
-		<dict>
-			<key>Track ID</key><integer>1777</integer>
-			<key>Name</key><string>When I Look At The World</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6244094</integer>
-			<key>Total Time</key><integer>257662</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:36:41Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3250693682</integer>
-			<key>Play Date UTC</key><date>2007-01-04T02:28:02Z</date>
-			<key>Persistent ID</key><string>87139F8602B867EA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/09%20When%20I%20Look%20At%20The%20World.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1778</key>
-		<dict>
-			<key>Track ID</key><integer>1778</integer>
-			<key>Name</key><string>New York</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8001442</integer>
-			<key>Total Time</key><integer>330238</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:40:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253280703</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:05:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B867EC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/10%20New%20York.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1779</key>
-		<dict>
-			<key>Track ID</key><integer>1779</integer>
-			<key>Name</key><string>Grace</string>
-			<key>Artist</key><string>U2</string>
-			<key>Composer</key><string>Adam Clayton/Bono/Larry Mullen/The Edge</string>
-			<key>Album</key><string>All That You Can't Leave Behind</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8008440</integer>
-			<key>Total Time</key><integer>330537</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-05-04T14:44:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252935509</integer>
-			<key>Play Date UTC</key><date>2007-01-30T01:11:49Z</date>
-			<key>Persistent ID</key><string>87139F8602B867EE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/All%20That%20You%20Can't%20Leave%20Behind/11%20Grace.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1780</key>
-		<dict>
-			<key>Track ID</key><integer>1780</integer>
-			<key>Name</key><string>A Sort of Homecoming</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3982506</integer>
-			<key>Total Time</key><integer>328280</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252988950</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:02:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867F0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/01%20A%20Sort%20of%20Homecoming.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1781</key>
-		<dict>
-			<key>Track ID</key><integer>1781</integer>
-			<key>Name</key><string>Pride (In the Name of Love)</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2791594</integer>
-			<key>Total Time</key><integer>229720</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252390724</integer>
-			<key>Play Date UTC</key><date>2007-01-23T17:52:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867F3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/02%20Pride%20(In%20the%20Name%20of%20Love).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1782</key>
-		<dict>
-			<key>Track ID</key><integer>1782</integer>
-			<key>Name</key><string>Wire</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3148176</integer>
-			<key>Total Time</key><integer>259265</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252531124</integer>
-			<key>Play Date UTC</key><date>2007-01-25T08:52:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867F5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/03%20Wire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1783</key>
-		<dict>
-			<key>Track ID</key><integer>1783</integer>
-			<key>Name</key><string>The Unforgettable Fire</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3585800</integer>
-			<key>Total Time</key><integer>295392</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253467343</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:55:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867F7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/04%20The%20Unforgettable%20Fire.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1784</key>
-		<dict>
-			<key>Track ID</key><integer>1784</integer>
-			<key>Name</key><string>Promenade</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1876535</integer>
-			<key>Total Time</key><integer>154148</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252493448</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:24:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867F9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/05%20Promenade.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1785</key>
-		<dict>
-			<key>Track ID</key><integer>1785</integer>
-			<key>Name</key><string>4th of July</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1637817</integer>
-			<key>Total Time</key><integer>134426</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253354552</integer>
-			<key>Play Date UTC</key><date>2007-02-03T21:35:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867FB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/06%204th%20of%20July.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1786</key>
-		<dict>
-			<key>Track ID</key><integer>1786</integer>
-			<key>Name</key><string>Bad</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4469031</integer>
-			<key>Total Time</key><integer>368483</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251620774</integer>
-			<key>Play Date UTC</key><date>2007-01-14T19:59:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867FD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/07%20Bad.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1787</key>
-		<dict>
-			<key>Track ID</key><integer>1787</integer>
-			<key>Name</key><string>Indian Summer Sky</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3150997</integer>
-			<key>Total Time</key><integer>259500</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253370863</integer>
-			<key>Play Date UTC</key><date>2007-02-04T02:07:43Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B867FF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/08%20Indian%20Summer%20Sky.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1788</key>
-		<dict>
-			<key>Track ID</key><integer>1788</integer>
-			<key>Name</key><string>Elvis Presley and America</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4643174</integer>
-			<key>Total Time</key><integer>382824</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:00Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251886996</integer>
-			<key>Play Date UTC</key><date>2007-01-17T21:56:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86801</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/09%20Elvis%20Presley%20and%20America.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1789</key>
-		<dict>
-			<key>Track ID</key><integer>1789</integer>
-			<key>Name</key><string>MLK</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>The Unforgettable Fire</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1859921</integer>
-			<key>Total Time</key><integer>152764</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252513027</integer>
-			<key>Play Date UTC</key><date>2007-01-25T03:50:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86803</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/The%20Unforgettable%20Fire/10%20MLK.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1790</key>
-		<dict>
-			<key>Track ID</key><integer>1790</integer>
-			<key>Name</key><string>Zooropa</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4757632</integer>
-			<key>Total Time</key><integer>391680</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253612210</integer>
-			<key>Play Date UTC</key><date>2007-02-06T21:10:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86805</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/01%20Zooropa.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1791</key>
-		<dict>
-			<key>Track ID</key><integer>1791</integer>
-			<key>Name</key><string>Babyface</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2945382</integer>
-			<key>Total Time</key><integer>242024</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253265685</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:54:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86808</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/02%20Babyface.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1792</key>
-		<dict>
-			<key>Track ID</key><integer>1792</integer>
-			<key>Name</key><string>Numb</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3166232</integer>
-			<key>Total Time</key><integer>260257</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253457824</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:17:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8680A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/03%20Numb.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1793</key>
-		<dict>
-			<key>Track ID</key><integer>1793</integer>
-			<key>Name</key><string>Lemon</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5079419</integer>
-			<key>Total Time</key><integer>418324</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247632953</integer>
-			<key>Play Date UTC</key><date>2006-11-29T16:15:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8680C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/04%20Lemon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1794</key>
-		<dict>
-			<key>Track ID</key><integer>1794</integer>
-			<key>Name</key><string>Stay (Faraway, So Close!)</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3629247</integer>
-			<key>Total Time</key><integer>298501</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8680E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/05%20Stay%20(Faraway,%20So%20Close!).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1795</key>
-		<dict>
-			<key>Track ID</key><integer>1795</integer>
-			<key>Name</key><string>Daddy's Gonna Pay for Your Crashed Car</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3892415</integer>
-			<key>Total Time</key><integer>320261</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249574373</integer>
-			<key>Play Date UTC</key><date>2006-12-22T03:32:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86810</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/06%20Daddy's%20Gonna%20Pay%20for%20Your%20Crashed%20Car.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1796</key>
-		<dict>
-			<key>Track ID</key><integer>1796</integer>
-			<key>Name</key><string>Some Days Are Better Than Others</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3132690</integer>
-			<key>Total Time</key><integer>257462</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251521770</integer>
-			<key>Play Date UTC</key><date>2007-01-13T16:29:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86812</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/07%20Some%20Days%20Are%20Better%20Than%20Others.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1797</key>
-		<dict>
-			<key>Track ID</key><integer>1797</integer>
-			<key>Name</key><string>The First Time</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2746475</integer>
-			<key>Total Time</key><integer>225619</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253451572</integer>
-			<key>Play Date UTC</key><date>2007-02-05T00:32:52Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-18T18:17:41Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86814</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/08%20The%20First%20Time.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1798</key>
-		<dict>
-			<key>Track ID</key><integer>1798</integer>
-			<key>Name</key><string>Dirty Day</string>
-			<key>Artist</key><string>U2</string>
-			<key>Album</key><string>Zooropa</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3943197</integer>
-			<key>Total Time</key><integer>324493</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253293841</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:44:01Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86816</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/U2/Zooropa/09%20Dirty%20Day.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1799</key>
-		<dict>
-			<key>Track ID</key><integer>1799</integer>
-			<key>Name</key><string>Thin</string>
-			<key>Artist</key><string>Underwolves</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2737635</integer>
-			<key>Total Time</key><integer>170710</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252488752</integer>
-			<key>Play Date UTC</key><date>2007-01-24T21:05:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86818</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underwolves/Late%20Lounge%20(1%20of%202)/04%20Thin.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1800</key>
-		<dict>
-			<key>Track ID</key><integer>1800</integer>
-			<key>Name</key><string>Cowgirl</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8182348</integer>
-			<key>Total Time</key><integer>510876</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253764512</integer>
-			<key>Play Date UTC</key><date>2007-02-08T15:28:32Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8681B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/01%20Cowgirl.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1801</key>
-		<dict>
-			<key>Track ID</key><integer>1801</integer>
-			<key>Name</key><string>Born Slippy [Nuxx]</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7272451</integer>
-			<key>Total Time</key><integer>454008</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253100953</integer>
-			<key>Play Date UTC</key><date>2007-01-31T23:09:13Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8681E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/02%20Born%20Slippy%20%5BNuxx%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1802</key>
-		<dict>
-			<key>Track ID</key><integer>1802</integer>
-			<key>Name</key><string>Pearls Girl</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9243546</integer>
-			<key>Total Time</key><integer>577201</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253101530</integer>
-			<key>Play Date UTC</key><date>2007-01-31T23:18:50Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-24T23:07:26Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86820</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/03%20Pearls%20Girl.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1803</key>
-		<dict>
-			<key>Track ID</key><integer>1803</integer>
-			<key>Name</key><string>Jumbo</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6723252</integer>
-			<key>Total Time</key><integer>419683</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252987367</integer>
-			<key>Play Date UTC</key><date>2007-01-30T15:36:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86822</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/04%20Jumbo.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1804</key>
-		<dict>
-			<key>Track ID</key><integer>1804</integer>
-			<key>Name</key><string>Push Upstairs</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5922442</integer>
-			<key>Total Time</key><integer>369632</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>30</integer>
-			<key>Play Date</key><integer>3253162102</integer>
-			<key>Play Date UTC</key><date>2007-02-01T16:08:22Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86824</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/05%20Push%20Upstairs.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1805</key>
-		<dict>
-			<key>Track ID</key><integer>1805</integer>
-			<key>Name</key><string>Moaner</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9975393</integer>
-			<key>Total Time</key><integer>622942</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253678486</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:34:46Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86826</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/06%20Moaner.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1806</key>
-		<dict>
-			<key>Track ID</key><integer>1806</integer>
-			<key>Name</key><string>Shudder/King of Snake</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9136549</integer>
-			<key>Total Time</key><integer>570514</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249322537</integer>
-			<key>Play Date UTC</key><date>2006-12-19T05:35:37Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86828</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/07%20Shudder_King%20of%20Snake.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1807</key>
-		<dict>
-			<key>Track ID</key><integer>1807</integer>
-			<key>Name</key><string>8 Ball</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8563109</integer>
-			<key>Total Time</key><integer>534674</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253593103</integer>
-			<key>Play Date UTC</key><date>2007-02-06T15:51:43Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-18T23:17:33Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8682A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/08%208%20Ball.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1808</key>
-		<dict>
-			<key>Track ID</key><integer>1808</integer>
-			<key>Name</key><string>Two Months Off</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8810122</integer>
-			<key>Total Time</key><integer>550112</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253103238</integer>
-			<key>Play Date UTC</key><date>2007-01-31T23:47:18Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8682C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20(2%20of%202)/09%20Two%20Months%20Off.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1809</key>
-		<dict>
-			<key>Track ID</key><integer>1809</integer>
-			<key>Name</key><string>Big Mouth</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9847482</integer>
-			<key>Total Time</key><integer>608384</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-04-14T18:25:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>34</integer>
-			<key>Play Date</key><integer>3253677863</integer>
-			<key>Play Date UTC</key><date>2007-02-07T15:24:23Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-16T03:49:09Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B8682E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/01%20Big%20Mouth.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1810</key>
-		<dict>
-			<key>Track ID</key><integer>1810</integer>
-			<key>Name</key><string>Dirty</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9887747</integer>
-			<key>Total Time</key><integer>617848</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>27</integer>
-			<key>Play Date</key><integer>3253163328</integer>
-			<key>Play Date UTC</key><date>2007-02-01T16:28:48Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86831</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/02%20Dirty.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1811</key>
-		<dict>
-			<key>Track ID</key><integer>1811</integer>
-			<key>Name</key><string>Mmm Skyscraper I Love You</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12720674</integer>
-			<key>Total Time</key><integer>794906</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251895043</integer>
-			<key>Play Date UTC</key><date>2007-01-18T00:10:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B86833</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/03%20Mmm%20Skyscraper%20I%20Love%20You.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1812</key>
-		<dict>
-			<key>Track ID</key><integer>1812</integer>
-			<key>Name</key><string>Rez</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9561320</integer>
-			<key>Total Time</key><integer>597446</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253103835</integer>
-			<key>Play Date UTC</key><date>2007-01-31T23:57:15Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86835</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/04%20Rez.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1813</key>
-		<dict>
-			<key>Track ID</key><integer>1813</integer>
-			<key>Name</key><string>Spikee</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11999694</integer>
-			<key>Total Time</key><integer>749844</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246984796</integer>
-			<key>Play Date UTC</key><date>2006-11-22T04:13:16Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B86837</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/05%20Spikee.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1814</key>
-		<dict>
-			<key>Track ID</key><integer>1814</integer>
-			<key>Name</key><string>Dirty Epic</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9588488</integer>
-			<key>Total Time</key><integer>599144</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B86839</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/06%20Dirty%20Epic.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1815</key>
-		<dict>
-			<key>Track ID</key><integer>1815</integer>
-			<key>Name</key><string>Dark &#38; Long (Dark Train)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>1992-2002 Disc 1</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10451574</integer>
-			<key>Total Time</key><integer>653087</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247823290</integer>
-			<key>Play Date UTC</key><date>2006-12-01T21:08:10Z</date>
-			<key>Persistent ID</key><string>87139F8602B8683B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/1992-2002%20Disc%201/07%20Dark%20&#38;%20Long%20(Dark%20Train).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1816</key>
-		<dict>
-			<key>Track ID</key><integer>1816</integer>
-			<key>Name</key><string>No Move</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9905252</integer>
-			<key>Total Time</key><integer>412368</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:48:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252989656</integer>
-			<key>Play Date UTC</key><date>2007-01-30T16:14:16Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8683D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/01%20No%20Move.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1817</key>
-		<dict>
-			<key>Track ID</key><integer>1817</integer>
-			<key>Name</key><string>Two Months Off</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>13126470</integer>
-			<key>Total Time</key><integer>546586</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:48:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86840</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/02%20Two%20Months%20Off.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1818</key>
-		<dict>
-			<key>Track ID</key><integer>1818</integer>
-			<key>Name</key><string>Twist</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9231918</integer>
-			<key>Total Time</key><integer>384313</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:49:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252491970</integer>
-			<key>Play Date UTC</key><date>2007-01-24T21:59:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86842</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/03%20Twist.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1819</key>
-		<dict>
-			<key>Track ID</key><integer>1819</integer>
-			<key>Name</key><string>Sola Sistim</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9297125</integer>
-			<key>Total Time</key><integer>387030</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:49:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252493835</integer>
-			<key>Play Date UTC</key><date>2007-01-24T22:30:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86844</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/04%20Sola%20Sistim.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1820</key>
-		<dict>
-			<key>Track ID</key><integer>1820</integer>
-			<key>Name</key><string>Little Speaker</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12407372</integer>
-			<key>Total Time</key><integer>516623</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252478686</integer>
-			<key>Play Date UTC</key><date>2007-01-24T18:18:06Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86846</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/05%20Little%20Speaker.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1821</key>
-		<dict>
-			<key>Track ID</key><integer>1821</integer>
-			<key>Name</key><string>Trim</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4899770</integer>
-			<key>Total Time</key><integer>203807</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253104039</integer>
-			<key>Play Date UTC</key><date>2007-02-01T00:00:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86848</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/06%20Trim.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1822</key>
-		<dict>
-			<key>Track ID</key><integer>1822</integer>
-			<key>Name</key><string>Ess Gee</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3417690</integer>
-			<key>Total Time</key><integer>142053</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3246599061</integer>
-			<key>Play Date UTC</key><date>2006-11-17T17:04:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8684A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/07%20Ess%20Gee.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1823</key>
-		<dict>
-			<key>Track ID</key><integer>1823</integer>
-			<key>Name</key><string>Dinosaur Adventured 3d</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11436878</integer>
-			<key>Total Time</key><integer>476186</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253472572</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:22:52Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8684C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/08%20Dinosaur%20Adventured%203d.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1824</key>
-		<dict>
-			<key>Track ID</key><integer>1824</integer>
-			<key>Name</key><string>Ballet Lane</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5284717</integer>
-			<key>Total Time</key><integer>219846</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:50:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253358068</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:34:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8684E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/09%20Ballet%20Lane.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1825</key>
-		<dict>
-			<key>Track ID</key><integer>1825</integer>
-			<key>Name</key><string>Luetin</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>A Hundred Days Off</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10108380</integer>
-			<key>Total Time</key><integer>420832</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2004-11-29T13:47:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246791376</integer>
-			<key>Play Date UTC</key><date>2006-11-19T22:29:36Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-29T23:49:40Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86850</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/A%20Hundred%20Days%20Off/10%20Luetin.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1826</key>
-		<dict>
-			<key>Track ID</key><integer>1826</integer>
-			<key>Name</key><string>Dirty Epic (Dirty Guitar Mix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dirty Epic - Cowgirl (EP)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12000428</integer>
-			<key>Total Time</key><integer>600006</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:27Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>From club.mp3search.ru April 27 2004</string>
-			<key>Play Count</key><integer>9</integer>
-			<key>Play Date</key><integer>3253104639</integer>
-			<key>Play Date UTC</key><date>2007-02-01T00:10:39Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Persistent ID</key><string>87139F8602B86852</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Dirty%20Epic%20-%20Cowgirl%20(EP)/01%20Dirty%20Epic%20(Dirty%20Guitar%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1827</key>
-		<dict>
-			<key>Track ID</key><integer>1827</integer>
-			<key>Name</key><string>Cowgirl (Winjer Mix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dirty Epic - Cowgirl (EP)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7694392</integer>
-			<key>Total Time</key><integer>384705</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:29Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>club.mp3search.ru on Apri 27 2004</string>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246781333</integer>
-			<key>Play Date UTC</key><date>2006-11-19T19:42:13Z</date>
-			<key>Persistent ID</key><string>87139F8602B86855</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Dirty%20Epic%20-%20Cowgirl%20(EP)/05%20Cowgirl%20(Winjer%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1828</key>
-		<dict>
-			<key>Track ID</key><integer>1828</integer>
-			<key>Name</key><string>River Of Bass</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dirty Epic - Cowgirl (EP)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7729387</integer>
-			<key>Total Time</key><integer>386455</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1994</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>club.mp3search.ru April 27 2004</string>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247119459</integer>
-			<key>Play Date UTC</key><date>2006-11-23T17:37:39Z</date>
-			<key>Persistent ID</key><string>87139F8602B86857</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Dirty%20Epic%20-%20Cowgirl%20(EP)/08%20River%20Of%20Bass.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1829</key>
-		<dict>
-			<key>Track ID</key><integer>1829</integer>
-			<key>Name</key><string>Surfboy</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dubnobasswithmyheadman</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7731513</integer>
-			<key>Total Time</key><integer>453716</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2006-09-05T15:58:46Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253286882</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:48:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86859</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Dubnobasswithmyheadman/03%20Surfboy.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1830</key>
-		<dict>
-			<key>Track ID</key><integer>1830</integer>
-			<key>Name</key><string>Spoonman</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dubnobasswithmyheadman</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7634250</integer>
-			<key>Total Time</key><integer>461193</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2006-09-05T15:58:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246988820</integer>
-			<key>Play Date UTC</key><date>2006-11-22T05:20:20Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-19T19:10:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8685C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Dubnobasswithmyheadman/04%20Spoonman.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1831</key>
-		<dict>
-			<key>Track ID</key><integer>1831</integer>
-			<key>Name</key><string>Tongue</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album Artist</key><string>Underworld</string>
-			<key>Album</key><string>Dubnobasswithmyheadman</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4960936</integer>
-			<key>Total Time</key><integer>290851</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>9</integer>
-			<key>Year</key><integer>1998</integer>
-			<key>Date Modified</key><date>2006-09-05T15:59:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253529987</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:19:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8685E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Dubnobasswithmyheadman/05%20Tongue.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1832</key>
-		<dict>
-			<key>Track ID</key><integer>1832</integer>
-			<key>Name</key><string>M.E.</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6875849</integer>
-			<key>Total Time</key><integer>429348</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253547465</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:11:05Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86860</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Late%20Lounge%20(1%20of%202)/12%20M.E..mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1833</key>
-		<dict>
-			<key>Track ID</key><integer>1833</integer>
-			<key>Name</key><string>Banstyle (alex Reece Remix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6850535</integer>
-			<key>Total Time</key><integer>342439</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:22Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3251351495</integer>
-			<key>Play Date UTC</key><date>2007-01-11T17:11:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86863</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/01%20Banstyle%20(alex%20Reece%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1834</key>
-		<dict>
-			<key>Track ID</key><integer>1834</integer>
-			<key>Name</key><string>Born Slippy (nuxx)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6478020</integer>
-			<key>Total Time</key><integer>323813</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253277962</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:19:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86866</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/02%20Born%20Slippy%20(nuxx).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1835</key>
-		<dict>
-			<key>Track ID</key><integer>1835</integer>
-			<key>Name</key><string>Cherry Pie (unrealized Mix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10051059</integer>
-			<key>Total Time</key><integer>502465</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:28Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>14</integer>
-			<key>Play Date</key><integer>3253685072</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:24:32Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86868</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/03%20Cherry%20Pie%20(unrealized%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1836</key>
-		<dict>
-			<key>Track ID</key><integer>1836</integer>
-			<key>Name</key><string>Dark &#38; Long (movie Mix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>12498205</integer>
-			<key>Total Time</key><integer>624822</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253607873</integer>
-			<key>Play Date UTC</key><date>2007-02-06T19:57:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8686A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/04%20Dark%20&#38;%20Long%20(movie%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1837</key>
-		<dict>
-			<key>Track ID</key><integer>1837</integer>
-			<key>Name</key><string>Deep Arch (deep Remix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10131510</integer>
-			<key>Total Time</key><integer>506488</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3252546178</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:02:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8686C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/05%20Deep%20Arch%20(deep%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1838</key>
-		<dict>
-			<key>Track ID</key><integer>1838</integer>
-			<key>Name</key><string>Jumbo (future Remix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7577777</integer>
-			<key>Total Time</key><integer>378801</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:39Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3249573885</integer>
-			<key>Play Date UTC</key><date>2006-12-22T03:24:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8686E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/06%20Jumbo%20(future%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1839</key>
-		<dict>
-			<key>Track ID</key><integer>1839</integer>
-			<key>Name</key><string>Oich Oich (industrial Remix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10288252</integer>
-			<key>Total Time</key><integer>514324</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253598964</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:29:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86870</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/07%20Oich%20Oich%20(industrial%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1840</key>
-		<dict>
-			<key>Track ID</key><integer>1840</integer>
-			<key>Name</key><string>Pearl's Girl (short Remix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5326028</integer>
-			<key>Total Time</key><integer>266213</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253337650</integer>
-			<key>Play Date UTC</key><date>2007-02-03T16:54:10Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86872</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/08%20Pearl's%20Girl%20(short%20Remix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1841</key>
-		<dict>
-			<key>Track ID</key><integer>1841</integer>
-			<key>Name</key><string>Peral's Girl (singled Edit)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3621802</integer>
-			<key>Total Time</key><integer>181002</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252523162</integer>
-			<key>Play Date UTC</key><date>2007-01-25T06:39:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86874</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/09%20Peral's%20Girl%20(singled%20Edit).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1842</key>
-		<dict>
-			<key>Track ID</key><integer>1842</integer>
-			<key>Name</key><string>Puppies (short Mix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4710056</integer>
-			<key>Total Time</key><integer>235415</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253597313</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:01:53Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86876</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/10%20Puppies%20(short%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1843</key>
-		<dict>
-			<key>Track ID</key><integer>1843</integer>
-			<key>Name</key><string>Second Hand (cafe Dell Mar Mix)</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Remix Album</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10801413</integer>
-			<key>Total Time</key><integer>539977</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>160</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253524191</integer>
-			<key>Play Date UTC</key><date>2007-02-05T20:43:11Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-15T23:25:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86878</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Remix%20Album/11%20Second%20Hand%20(cafe%20Dell%20Mar%20Mix).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1844</key>
-		<dict>
-			<key>Track ID</key><integer>1844</integer>
-			<key>Name</key><string>Juanita/Kiteless/To Dream of Love</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>45059</integer>
-			<key>Total Time</key><integer>2168</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253428467</integer>
-			<key>Play Date UTC</key><date>2007-02-04T18:07:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8687A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/01%20Juanita_Kiteless_To%20Dream%20of%20Love.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1845</key>
-		<dict>
-			<key>Track ID</key><integer>1845</integer>
-			<key>Name</key><string>Banstyle/Sappys Curry</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>14771432</integer>
-			<key>Total Time</key><integer>922566</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252533038</integer>
-			<key>Play Date UTC</key><date>2007-01-25T09:23:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8687D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/02%20Banstyle_Sappys%20Curry.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1846</key>
-		<dict>
-			<key>Track ID</key><integer>1846</integer>
-			<key>Name</key><string>Confusion the Waitress</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6524680</integer>
-			<key>Total Time</key><integer>407144</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252988304</integer>
-			<key>Play Date UTC</key><date>2007-01-30T15:51:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8687F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/03%20Confusion%20the%20Waitress.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1847</key>
-		<dict>
-			<key>Track ID</key><integer>1847</integer>
-			<key>Name</key><string>Rowla</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6275994</integer>
-			<key>Total Time</key><integer>391601</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253449450</integer>
-			<key>Play Date UTC</key><date>2007-02-04T23:57:30Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86881</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/04%20Rowla.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1848</key>
-		<dict>
-			<key>Track ID</key><integer>1848</integer>
-			<key>Name</key><string>Pearl's Girl</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9237235</integer>
-			<key>Total Time</key><integer>576679</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:42Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253276876</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:01:16Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-08T19:43:48Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86883</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/05%20Pearl's%20Girl.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1849</key>
-		<dict>
-			<key>Track ID</key><integer>1849</integer>
-			<key>Name</key><string>Air Towel</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7334267</integer>
-			<key>Total Time</key><integer>457743</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:35Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:01Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253690274</integer>
-			<key>Play Date UTC</key><date>2007-02-07T18:51:14Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-16T05:05:48Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86885</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/06%20Air%20Towel.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1850</key>
-		<dict>
-			<key>Track ID</key><integer>1850</integer>
-			<key>Name</key><string>Blueski</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2822397</integer>
-			<key>Total Time</key><integer>175751</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:38Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253454239</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:17:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86887</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/07%20Blueski.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1851</key>
-		<dict>
-			<key>Track ID</key><integer>1851</integer>
-			<key>Name</key><string>Stagger</string>
-			<key>Artist</key><string>Underworld</string>
-			<key>Album</key><string>Second Toughest in the Infants</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7335103</integer>
-			<key>Total Time</key><integer>457795</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:44Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252522387</integer>
-			<key>Play Date UTC</key><date>2007-01-25T06:26:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86889</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Underworld/Second%20Toughest%20in%20the%20Infants/08%20Stagger.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1852</key>
-		<dict>
-			<key>Track ID</key><integer>1852</integer>
-			<key>Name</key><string>born slippy (nuxx)</string>
-			<key>Artist</key><string>underworld</string>
-			<key>Album</key><string>underworld: second toughest in the infants (disk 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>11208080</integer>
-			<key>Total Time</key><integer>700368</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:45Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B8688B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/underworld/underworld_%20second%20toughest%20in%20the%20infants%20(disk%202)/01%20born%20slippy%20(nuxx).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1853</key>
-		<dict>
-			<key>Track ID</key><integer>1853</integer>
-			<key>Name</key><string>rez</string>
-			<key>Artist</key><string>underworld</string>
-			<key>Album</key><string>underworld: second toughest in the infants (disk 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9526212</integer>
-			<key>Total Time</key><integer>595252</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253106195</integer>
-			<key>Play Date UTC</key><date>2007-02-01T00:36:35Z</date>
-			<key>Rating</key><integer>80</integer>
-			<key>Persistent ID</key><string>87139F8602B8688E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/underworld/underworld_%20second%20toughest%20in%20the%20infants%20(disk%202)/02%20rez.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1854</key>
-		<dict>
-			<key>Track ID</key><integer>1854</integer>
-			<key>Name</key><string>A Timeless Place [Acoustic Version]</string>
-			<key>Artist</key><string>Urban Dwellers</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6348803</integer>
-			<key>Total Time</key><integer>396408</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250582184</integer>
-			<key>Play Date UTC</key><date>2007-01-02T19:29:44Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86890</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Urban%20Dwellers/Late%20Lounge%20(2%20of%202)/13%20A%20Timeless%20Place%20%5BAcoustic%20Version%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1855</key>
-		<dict>
-			<key>Track ID</key><integer>1855</integer>
-			<key>Name</key><string>Buffy T.V. Theme - Nerf Herder</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1037879</integer>
-			<key>Total Time</key><integer>64731</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>25</integer>
-			<key>Play Date</key><integer>3252912356</integer>
-			<key>Play Date UTC</key><date>2007-01-29T18:45:56Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B86893</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/01%20Buffy%20T.V.%20Theme%20-%20Nerf%20Herder.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1856</key>
-		<dict>
-			<key>Track ID</key><integer>1856</integer>
-			<key>Name</key><string>Guided By Voices - Teenage FBI</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3195384</integer>
-			<key>Total Time</key><integer>199575</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253278161</integer>
-			<key>Play Date UTC</key><date>2007-02-03T00:22:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B86896</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/02%20Guided%20By%20Voices%20-%20Teenage%20FBI.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1857</key>
-		<dict>
-			<key>Track ID</key><integer>1857</integer>
-			<key>Name</key><string>Temptation Waits - Garbage</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4465562</integer>
-			<key>Total Time</key><integer>278961</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252466174</integer>
-			<key>Play Date UTC</key><date>2007-01-24T14:49:34Z</date>
-			<key>Persistent ID</key><string>87139F8602B86898</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/03%20Temptation%20Waits%20-%20Garbage.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1858</key>
-		<dict>
-			<key>Track ID</key><integer>1858</integer>
-			<key>Name</key><string>I Quit - Hepburn</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3777183</integer>
-			<key>Total Time</key><integer>235937</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251347045</integer>
-			<key>Play Date UTC</key><date>2007-01-11T15:57:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B8689A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/05%20I%20Quit%20-%20Hepburn.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1859</key>
-		<dict>
-			<key>Track ID</key><integer>1859</integer>
-			<key>Name</key><string>Over My Head - Furslide</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2956729</integer>
-			<key>Total Time</key><integer>184659</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:51Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252499792</integer>
-			<key>Play Date UTC</key><date>2007-01-25T00:09:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B8689C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/06%20Over%20My%20Head%20-%20Furslide.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1860</key>
-		<dict>
-			<key>Track ID</key><integer>1860</integer>
-			<key>Name</key><string>Lucky - Bif Naked</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3844893</integer>
-			<key>Total Time</key><integer>240169</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:52Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249571279</integer>
-			<key>Play Date UTC</key><date>2006-12-22T02:41:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B8689E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/07%20Lucky%20-%20Bif%20Naked.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1861</key>
-		<dict>
-			<key>Track ID</key><integer>1861</integer>
-			<key>Name</key><string>Keep Myself Awake - Black Lab</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4367342</integer>
-			<key>Total Time</key><integer>272822</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252482433</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:20:33Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T18:57:41Z</date>
-			<key>Persistent ID</key><string>87139F8602B868A0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/08%20Keep%20Myself%20Awake%20-%20Black%20Lab.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1862</key>
-		<dict>
-			<key>Track ID</key><integer>1862</integer>
-			<key>Name</key><string>K's Choice - Virgin State Of Mind</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3088805</integer>
-			<key>Total Time</key><integer>192914</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252516253</integer>
-			<key>Play Date UTC</key><date>2007-01-25T04:44:13Z</date>
-			<key>Persistent ID</key><string>87139F8602B868A2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/09%20K's%20Choice%20-%20Virgin%20State%20Of%20Mind.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1863</key>
-		<dict>
-			<key>Track ID</key><integer>1863</integer>
-			<key>Name</key><string>Already Met You - Superfine</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3416485</integer>
-			<key>Total Time</key><integer>213394</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:54Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B868A4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/10%20Already%20Met%20You%20-%20Superfine.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1864</key>
-		<dict>
-			<key>Track ID</key><integer>1864</integer>
-			<key>Name</key><string>The Devil You Know (God Is A Man) - Face To Face</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3457027</integer>
-			<key>Total Time</key><integer>215928</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253623465</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:17:45Z</date>
-			<key>Persistent ID</key><string>87139F8602B868A6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/11%20The%20Devil%20You%20Know%20(God%20Is%20A%20Man)%20-%20Face%20To%20Face.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1865</key>
-		<dict>
-			<key>Track ID</key><integer>1865</integer>
-			<key>Name</key><string>Nothing But You - Kim Ferron</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3769660</integer>
-			<key>Total Time</key><integer>235467</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253712312</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:58:32Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B868A8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/12%20Nothing%20But%20You%20-%20Kim%20Ferron.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1866</key>
-		<dict>
-			<key>Track ID</key><integer>1866</integer>
-			<key>Name</key><string>It Doesn`t Matter - Alison Krauss &#38; Union Station</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3699861</integer>
-			<key>Total Time</key><integer>231105</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253462039</integer>
-			<key>Play Date UTC</key><date>2007-02-05T03:27:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B868AA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/13%20It%20Doesn%60t%20Matter%20-%20Alison%20Krauss%20&#38;%20Union%20Station.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1867</key>
-		<dict>
-			<key>Track ID</key><integer>1867</integer>
-			<key>Name</key><string>Wild Horses - The Sundays</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4547482</integer>
-			<key>Total Time</key><integer>284081</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252506097</integer>
-			<key>Play Date UTC</key><date>2007-01-25T01:54:57Z</date>
-			<key>Persistent ID</key><string>87139F8602B868AC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/14%20Wild%20Horses%20-%20The%20Sundays.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1868</key>
-		<dict>
-			<key>Track ID</key><integer>1868</integer>
-			<key>Name</key><string>Pain (Slayer Mix) - Four Star Mary</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3458698</integer>
-			<key>Total Time</key><integer>216032</integer>
-			<key>Track Number</key><integer>15</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253548576</integer>
-			<key>Play Date UTC</key><date>2007-02-06T03:29:36Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-23T01:18:42Z</date>
-			<key>Persistent ID</key><string>87139F8602B868AE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/15%20Pain%20(Slayer%20Mix)%20-%20Four%20Star%20Mary.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1869</key>
-		<dict>
-			<key>Track ID</key><integer>1869</integer>
-			<key>Name</key><string>Charge - Splendid</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3662663</integer>
-			<key>Total Time</key><integer>228780</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:58Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252405685</integer>
-			<key>Play Date UTC</key><date>2007-01-23T22:01:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B868B0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/16%20Charge%20-%20Splendid.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1870</key>
-		<dict>
-			<key>Track ID</key><integer>1870</integer>
-			<key>Name</key><string>Transylvanian Concubine - Rasputina</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2664576</integer>
-			<key>Total Time</key><integer>166400</integer>
-			<key>Track Number</key><integer>17</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253456167</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:49:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B868B2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/17%20Transylvanian%20Concubine%20-%20Rasputina.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1871</key>
-		<dict>
-			<key>Track ID</key><integer>1871</integer>
-			<key>Name</key><string>Close Your Eyes (Buffy-Angel Love Theme) - Christophe Beck</string>
-			<key>Artist</key><string>Various Artists</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2643678</integer>
-			<key>Total Time</key><integer>165093</integer>
-			<key>Track Number</key><integer>18</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253294617</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:56:57Z</date>
-			<key>Persistent ID</key><string>87139F8602B868B4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Various%20Artists/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/18%20Close%20Your%20Eyes%20(Buffy-Angel%20Love%20Theme)%20-%20Christophe%20Beck.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1872</key>
-		<dict>
-			<key>Track ID</key><integer>1872</integer>
-			<key>Name</key><string>Floating Away</string>
-			<key>Artist</key><string>Velvet Chain</string>
-			<key>Album</key><string>Asteroid Belt</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3690882</integer>
-			<key>Total Time</key><integer>230556</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252476812</integer>
-			<key>Play Date UTC</key><date>2007-01-24T17:46:52Z</date>
-			<key>Persistent ID</key><string>87139F8602B868B6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Velvet%20Chain/Asteroid%20Belt/02%20Floating%20Away.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1873</key>
-		<dict>
-			<key>Track ID</key><integer>1873</integer>
-			<key>Name</key><string>You Remind Me</string>
-			<key>Artist</key><string>Velvet Chain</string>
-			<key>Album</key><string>Asteroid Belt</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2590813</integer>
-			<key>Total Time</key><integer>161802</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>2003</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253534827</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:40:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B868B9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Velvet%20Chain/Asteroid%20Belt/12%20You%20Remind%20Me.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1874</key>
-		<dict>
-			<key>Track ID</key><integer>1874</integer>
-			<key>Name</key><string>I Don't Care</string>
-			<key>Artist</key><string>Velvet Chain</string>
-			<key>Album Artist</key><string>Velvet Chain</string>
-			<key>Composer</key><string>Erika Amato/Jeff Stacy</string>
-			<key>Album</key><string>Buffy EP</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6592064</integer>
-			<key>Total Time</key><integer>411872</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>1997</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:13Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252559558</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:45:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B868BB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Velvet%20Chain/Buffy%20EP/06%20I%20Don't%20Care.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1875</key>
-		<dict>
-			<key>Track ID</key><integer>1875</integer>
-			<key>Name</key><string>Strong</string>
-			<key>Artist</key><string>Velvet Chain</string>
-			<key>Album</key><string>Buffy The Vampire Slayer - The Album</string>
-			<key>Genre</key><string>General Rock</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4336831</integer>
-			<key>Total Time</key><integer>270915</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:35:50Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>28</integer>
-			<key>Play Date</key><integer>3253164610</integer>
-			<key>Play Date UTC</key><date>2007-02-01T16:50:10Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B868BE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Velvet%20Chain/Buffy%20The%20Vampire%20Slayer%20-%20The%20Album/04%20Strong.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1876</key>
-		<dict>
-			<key>Track ID</key><integer>1876</integer>
-			<key>Name</key><string>Floating Away - Full Moon Space Cake Dub</string>
-			<key>Artist</key><string>Velvet Chain - Ashfelt</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6416954</integer>
-			<key>Total Time</key><integer>267284</integer>
-			<key>Date Modified</key><date>2004-11-29T13:38:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250582451</integer>
-			<key>Play Date UTC</key><date>2007-01-02T19:34:11Z</date>
-			<key>Persistent ID</key><string>87139F8602B868C1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Velvet%20Chain%20-%20Ashfelt/Unknown%20Album/Floating%20Away%20-%20Full%20Moon%20Space%20Cake%20Dub.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1877</key>
-		<dict>
-			<key>Track ID</key><integer>1877</integer>
-			<key>Name</key><string>Sound of the Samba</string>
-			<key>Artist</key><string>Victor Davies</string>
-			<key>Album</key><string>Late Lounge (2 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4916039</integer>
-			<key>Total Time</key><integer>306860</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252387194</integer>
-			<key>Play Date UTC</key><date>2007-01-23T16:53:14Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B868C5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Victor%20Davies/Late%20Lounge%20(2%20of%202)/08%20Sound%20of%20the%20Samba.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1878</key>
-		<dict>
-			<key>Track ID</key><integer>1878</integer>
-			<key>Name</key><string>Somewhere In America There's A Street Named After My Dad</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5376481</integer>
-			<key>Total Time</key><integer>221652</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:36:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253285774</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:29:34Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-25T00:20:20Z</date>
-			<key>Persistent ID</key><string>87139F8602B868C8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/01%20Somewhere%20In%20America%20There's%20A%20Street%20Named%20After%20My%20Dad.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1879</key>
-		<dict>
-			<key>Track ID</key><integer>1879</integer>
-			<key>Name</key><string>Spy In The House Of Love</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6222256</integer>
-			<key>Total Time</key><integer>256766</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:37:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3252905920</integer>
-			<key>Play Date UTC</key><date>2007-01-29T16:58:40Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-27T03:11:05Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B868CB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/02%20Spy%20In%20The%20House%20Of%20Love.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1880</key>
-		<dict>
-			<key>Track ID</key><integer>1880</integer>
-			<key>Name</key><string>Out Come The Freaks</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6686922</integer>
-			<key>Total Time</key><integer>275945</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:37:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252578346</integer>
-			<key>Play Date UTC</key><date>2007-01-25T21:59:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B868CD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/03%20Out%20Come%20The%20Freaks.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1881</key>
-		<dict>
-			<key>Track ID</key><integer>1881</integer>
-			<key>Name</key><string>Earth To Doris</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>3022181</integer>
-			<key>Total Time</key><integer>123625</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:38:18Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253289987</integer>
-			<key>Play Date UTC</key><date>2007-02-03T03:39:47Z</date>
-			<key>Persistent ID</key><string>87139F8602B868CF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/04%20Earth%20To%20Doris.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1882</key>
-		<dict>
-			<key>Track ID</key><integer>1882</integer>
-			<key>Name</key><string>Love Can Be Bad Luck</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was/Marshall Crenshaw</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5495373</integer>
-			<key>Total Time</key><integer>226601</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:38:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253256638</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:23:58Z</date>
-			<key>Persistent ID</key><string>87139F8602B868D1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/05%20Love%20Can%20Be%20Bad%20Luck.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1883</key>
-		<dict>
-			<key>Track ID</key><integer>1883</integer>
-			<key>Name</key><string>Boy's Gone Crazy</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5330869</integer>
-			<key>Total Time</key><integer>219732</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:39:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B868D3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/06%20Boy's%20Gone%20Crazy.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1884</key>
-		<dict>
-			<key>Track ID</key><integer>1884</integer>
-			<key>Name</key><string>11 Miles An Hour</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5933961</integer>
-			<key>Total Time</key><integer>244841</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:40:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252498434</integer>
-			<key>Play Date UTC</key><date>2007-01-24T23:47:14Z</date>
-			<key>Persistent ID</key><string>87139F8602B868D5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/07%2011%20Miles%20An%20Hour.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1885</key>
-		<dict>
-			<key>Track ID</key><integer>1885</integer>
-			<key>Name</key><string>What Up Dog?</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was/Harry Bowens/Sweetpea Atkinson</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2588560</integer>
-			<key>Total Time</key><integer>105577</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:40:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249455287</integer>
-			<key>Play Date UTC</key><date>2006-12-20T18:28:07Z</date>
-			<key>Persistent ID</key><string>87139F8602B868D7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/08%20What%20Up%20Dog_.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1886</key>
-		<dict>
-			<key>Track ID</key><integer>1886</integer>
-			<key>Name</key><string>Anything Can Happen</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Aaron Zigman/David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5726348</integer>
-			<key>Total Time</key><integer>236201</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:41:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247833159</integer>
-			<key>Play Date UTC</key><date>2006-12-01T23:52:39Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B868D9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/09%20Anything%20Can%20Happen.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1887</key>
-		<dict>
-			<key>Track ID</key><integer>1887</integer>
-			<key>Name</key><string>Wedding Vows In Vegas</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5272076</integer>
-			<key>Total Time</key><integer>217300</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:42:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253259276</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:07:56Z</date>
-			<key>Persistent ID</key><string>87139F8602B868DB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/11%20Wedding%20Vows%20In%20Vegas.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1888</key>
-		<dict>
-			<key>Track ID</key><integer>1888</integer>
-			<key>Name</key><string>Anytime Lisa</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6176048</integer>
-			<key>Total Time</key><integer>254868</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:43:15Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246610726</integer>
-			<key>Play Date UTC</key><date>2006-11-17T20:18:46Z</date>
-			<key>Persistent ID</key><string>87139F8602B868DD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/12%20Anytime%20Lisa.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1889</key>
-		<dict>
-			<key>Track ID</key><integer>1889</integer>
-			<key>Name</key><string>Walk The Dinosaur</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was/Randy Jacobs</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6346024</integer>
-			<key>Total Time</key><integer>261865</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:44:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252481623</integer>
-			<key>Play Date UTC</key><date>2007-01-24T19:07:03Z</date>
-			<key>Persistent ID</key><string>87139F8602B868DF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/13%20Walk%20The%20Dinosaur.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1890</key>
-		<dict>
-			<key>Track ID</key><integer>1890</integer>
-			<key>Name</key><string>I Can't Turn You Loose</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>Otis Redding</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>5281640</integer>
-			<key>Total Time</key><integer>217705</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:45:02Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B868E1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/14%20I%20Can't%20Turn%20You%20Loose.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1891</key>
-		<dict>
-			<key>Track ID</key><integer>1891</integer>
-			<key>Name</key><string>Dad I'm In Jail</string>
-			<key>Artist</key><string>Was (Not Was)</string>
-			<key>Composer</key><string>David Was/Don Was</string>
-			<key>Album</key><string>What Up, Dog?</string>
-			<key>Genre</key><string>Alternative &#38; Punk</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>2116909</integer>
-			<key>Total Time</key><integer>85972</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>16</integer>
-			<key>Track Count</key><integer>16</integer>
-			<key>Year</key><integer>1988</integer>
-			<key>Date Modified</key><date>2004-07-18T18:50:48Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253597399</integer>
-			<key>Play Date UTC</key><date>2007-02-06T17:03:19Z</date>
-			<key>Persistent ID</key><string>87139F8602B868E3</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Was%20(Not%20Was)/What%20Up,%20Dog_/16%20Dad%20I'm%20In%20Jail.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1892</key>
-		<dict>
-			<key>Track ID</key><integer>1892</integer>
-			<key>Name</key><string>Adagio For Strings</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Samuel Barber</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>13850005</integer>
-			<key>Total Time</key><integer>574121</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:26:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253453642</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:07:22Z</date>
-			<key>Persistent ID</key><string>87139F8602B868E5</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/01%20Adagio%20For%20Strings.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1893</key>
-		<dict>
-			<key>Track ID</key><integer>1893</integer>
-			<key>Name</key><string>In A Landscape</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>John Cage</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4286407</integer>
-			<key>Total Time</key><integer>177065</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:26:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Persistent ID</key><string>87139F8602B868E8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/02%20In%20A%20Landscape.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1894</key>
-		<dict>
-			<key>Track ID</key><integer>1894</integer>
-			<key>Name</key><string>Ogive Number I</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Erik Satie</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9756368</integer>
-			<key>Total Time</key><integer>404564</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:28:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253426780</integer>
-			<key>Play Date UTC</key><date>2007-02-04T17:39:40Z</date>
-			<key>Persistent ID</key><string>87139F8602B868EA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/03%20Ogive%20Number%20I.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1895</key>
-		<dict>
-			<key>Track ID</key><integer>1895</integer>
-			<key>Name</key><string>Cavalleria Rusticana</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Pietro Mascagni</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>4696904</integer>
-			<key>Total Time</key><integer>199828</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:28:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253346348</integer>
-			<key>Play Date UTC</key><date>2007-02-03T19:19:08Z</date>
-			<key>Persistent ID</key><string>87139F8602B868EC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/04%20Cavalleria%20Rusticana.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1896</key>
-		<dict>
-			<key>Track ID</key><integer>1896</integer>
-			<key>Name</key><string>Triple Concerto</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Ludwig Van Beethoven</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7956749</integer>
-			<key>Total Time</key><integer>332670</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:31:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253519843</integer>
-			<key>Play Date UTC</key><date>2007-02-05T19:30:43Z</date>
-			<key>Persistent ID</key><string>87139F8602B868EE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/07%20Triple%20Concerto.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1897</key>
-		<dict>
-			<key>Track ID</key><integer>1897</integer>
-			<key>Name</key><string>Xerxes</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>George Frederic Handel/George Frideric Handel</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>6746001</integer>
-			<key>Total Time</key><integer>282708</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:32:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252395301</integer>
-			<key>Play Date UTC</key><date>2007-01-23T19:08:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B868F0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/08%20Xerxes.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1898</key>
-		<dict>
-			<key>Track ID</key><integer>1898</integer>
-			<key>Name</key><string>Piece In The Old Style I</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Henryk Górecki</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>7268617</integer>
-			<key>Total Time</key><integer>306132</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:33:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253293516</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:38:36Z</date>
-			<key>Persistent ID</key><string>87139F8602B868F2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/09%20Piece%20In%20The%20Old%20Style%20I.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1899</key>
-		<dict>
-			<key>Track ID</key><integer>1899</integer>
-			<key>Name</key><string>Piece In The Old Style 3</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Henryk Górecki</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>8423407</integer>
-			<key>Total Time</key><integer>349652</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:34:32Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253509278</integer>
-			<key>Play Date UTC</key><date>2007-02-05T16:34:38Z</date>
-			<key>Persistent ID</key><string>87139F8602B868F4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/10%20Piece%20In%20The%20Old%20Style%203.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1900</key>
-		<dict>
-			<key>Track ID</key><integer>1900</integer>
-			<key>Name</key><string>Opus I32</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Ludwig Van Beethoven</string>
-			<key>Album</key><string>Pieces In A Modern Style</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9063458</integer>
-			<key>Total Time</key><integer>374569</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T18:35:36Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253532039</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:53:59Z</date>
-			<key>Persistent ID</key><string>87139F8602B868F6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style/11%20Opus%20I32.m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1901</key>
-		<dict>
-			<key>Track ID</key><integer>1901</integer>
-			<key>Name</key><string>Adagio For Strings (Ferry Corsten Remix)</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Samuel Barber</string>
-			<key>Album</key><string>Pieces In A Modern Style [Bonus Disc]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>9520868</integer>
-			<key>Total Time</key><integer>394964</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>2</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T19:12:43Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247839201</integer>
-			<key>Play Date UTC</key><date>2006-12-02T01:33:21Z</date>
-			<key>Persistent ID</key><string>87139F8602B868F8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style%20%5BBonus%20Disc%5D/2-01%20Adagio%20For%20Strings%20(Ferry%20Corsten%20Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1902</key>
-		<dict>
-			<key>Track ID</key><integer>1902</integer>
-			<key>Name</key><string>Adagio For Strings (ATB Remix)</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Composer</key><string>Samuel Barber</string>
-			<key>Album</key><string>Pieces In A Modern Style [Bonus Disc]</string>
-			<key>Genre</key><string>Electronica/Dance</string>
-			<key>Kind</key><string>AAC audio file</string>
-			<key>Size</key><integer>11107544</integer>
-			<key>Total Time</key><integer>458665</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>2</integer>
-			<key>Year</key><integer>2000</integer>
-			<key>Date Modified</key><date>2004-06-01T19:14:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>48000</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250742029</integer>
-			<key>Play Date UTC</key><date>2007-01-04T15:53:49Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Persistent ID</key><string>87139F8602B868FB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Pieces%20In%20A%20Modern%20Style%20%5BBonus%20Disc%5D/2-02%20Adagio%20For%20Strings%20(ATB%20Remix).m4a</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1903</key>
-		<dict>
-			<key>Track ID</key><integer>1903</integer>
-			<key>Name</key><string>Water from a Vine Leaf [Xylem Flow Mix]</string>
-			<key>Artist</key><string>William Orbit</string>
-			<key>Album</key><string>Plastic Compilation, Vol. 2</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4750234</integer>
-			<key>Total Time</key><integer>391575</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>96</integer>
-			<key>Sample Rate</key><integer>22050</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3246890910</integer>
-			<key>Play Date UTC</key><date>2006-11-21T02:08:30Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-07T22:57:19Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B868FD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/William%20Orbit/Plastic%20Compilation,%20Vol.%202/03%20Water%20from%20a%20Vine%20Leaf%20%5BXylem%20Flow%20Mix%5D.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1904</key>
-		<dict>
-			<key>Track ID</key><integer>1904</integer>
-			<key>Name</key><string>Close to the Edge: The Solid Time of Change/Total Mass Retain/I Get Up</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Close to the Edge</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>17996155</integer>
-			<key>Total Time</key><integer>1124623</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:56Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253770597</integer>
-			<key>Play Date UTC</key><date>2007-02-08T17:09:57Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-24T21:56:49Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86900</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Close%20to%20the%20Edge/01%20Close%20to%20the%20Edge_%20The%20Solid%20Time%20of%20Change_Total%20Mass%20Retain_I%20Get%20Up.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1905</key>
-		<dict>
-			<key>Track ID</key><integer>1905</integer>
-			<key>Name</key><string>An And You and I: Cord of Life/Eclipse/The Preacher the Teacher/Apocalypse</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Close to the Edge</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9788690</integer>
-			<key>Total Time</key><integer>611657</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:53Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252548526</integer>
-			<key>Play Date UTC</key><date>2007-01-25T13:42:06Z</date>
-			<key>Persistent ID</key><string>87139F8602B86903</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Close%20to%20the%20Edge/02%20An%20And%20You%20and%20I_%20Cord%20of%20Life_Eclipse_The%20Preacher%20the%20Teacher_Apocalypse.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1906</key>
-		<dict>
-			<key>Track ID</key><integer>1906</integer>
-			<key>Name</key><string>Siberian Khatru</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Close to the Edge</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8535649</integer>
-			<key>Total Time</key><integer>533342</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253165143</integer>
-			<key>Play Date UTC</key><date>2007-02-01T16:59:03Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86905</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Close%20to%20the%20Edge/03%20Siberian%20Khatru.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1907</key>
-		<dict>
-			<key>Track ID</key><integer>1907</integer>
-			<key>Name</key><string>Machine Messiah</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Drama</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10052351</integer>
-			<key>Total Time</key><integer>627748</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3252943011</integer>
-			<key>Play Date UTC</key><date>2007-01-30T03:16:51Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86907</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Drama/01%20Machine%20Messiah.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1908</key>
-		<dict>
-			<key>Track ID</key><integer>1908</integer>
-			<key>Name</key><string>White Car</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Drama</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>1309892</integer>
-			<key>Total Time</key><integer>81345</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251299687</integer>
-			<key>Play Date UTC</key><date>2007-01-11T02:48:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8690A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Drama/02%20White%20Car.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1909</key>
-		<dict>
-			<key>Track ID</key><integer>1909</integer>
-			<key>Name</key><string>Does It Really Happen?</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Drama</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6314549</integer>
-			<key>Total Time</key><integer>394135</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253375855</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:30:55Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-28T20:45:26Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8690C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Drama/03%20Does%20It%20Really%20Happen_.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1910</key>
-		<dict>
-			<key>Track ID</key><integer>1910</integer>
-			<key>Name</key><string>Into the Lens</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Drama</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8223778</integer>
-			<key>Total Time</key><integer>513462</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247503817</integer>
-			<key>Play Date UTC</key><date>2006-11-28T04:23:37Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8690E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Drama/04%20Into%20the%20Lens.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1911</key>
-		<dict>
-			<key>Track ID</key><integer>1911</integer>
-			<key>Name</key><string>Run Through the Light</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Drama</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4538640</integer>
-			<key>Total Time</key><integer>283141</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249385161</integer>
-			<key>Play Date UTC</key><date>2006-12-19T22:59:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86910</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Drama/05%20Run%20Through%20the%20Light.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1912</key>
-		<dict>
-			<key>Track ID</key><integer>1912</integer>
-			<key>Name</key><string>Tempus Fugit</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Drama</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5041435</integer>
-			<key>Total Time</key><integer>314566</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:06Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3250624066</integer>
-			<key>Play Date UTC</key><date>2007-01-03T07:07:46Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86912</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Drama/06%20Tempus%20Fugit.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1913</key>
-		<dict>
-			<key>Track ID</key><integer>1913</integer>
-			<key>Name</key><string>Roundabout</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8252105</integer>
-			<key>Total Time</key><integer>515108</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253621920</integer>
-			<key>Play Date UTC</key><date>2007-02-06T23:52:00Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86914</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/01%20Roundabout.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1914</key>
-		<dict>
-			<key>Track ID</key><integer>1914</integer>
-			<key>Name</key><string>South Side of the Sky</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>7639795</integer>
-			<key>Total Time</key><integer>476839</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253106671</integer>
-			<key>Play Date UTC</key><date>2007-02-01T00:44:31Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-12-16T05:05:45Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86917</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/04%20South%20Side%20of%20the%20Sky.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1915</key>
-		<dict>
-			<key>Track ID</key><integer>1915</integer>
-			<key>Name</key><string>Five Per Cent for Nothing</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>618499</integer>
-			<key>Total Time</key><integer>38008</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247722004</integer>
-			<key>Play Date UTC</key><date>2006-11-30T17:00:04Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86919</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/05%20Five%20Per%20Cent%20for%20Nothing.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1916</key>
-		<dict>
-			<key>Track ID</key><integer>1916</integer>
-			<key>Name</key><string>Long Distance Runaround</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3362819</integer>
-			<key>Total Time</key><integer>209528</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249296502</integer>
-			<key>Play Date UTC</key><date>2006-12-18T22:21:42Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8691B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/06%20Long%20Distance%20Runaround.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1917</key>
-		<dict>
-			<key>Track ID</key><integer>1917</integer>
-			<key>Name</key><string>Fish (Schindleria Praematurus)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2613836</integer>
-			<key>Total Time</key><integer>162716</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:08Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253166946</integer>
-			<key>Play Date UTC</key><date>2007-02-01T17:29:06Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8691D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/07%20Fish%20(Schindleria%20Praematurus).mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1918</key>
-		<dict>
-			<key>Track ID</key><integer>1918</integer>
-			<key>Name</key><string>Mood for a Day</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>2928141</integer>
-			<key>Total Time</key><integer>182360</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:11Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8691F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/08%20Mood%20for%20a%20Day.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1919</key>
-		<dict>
-			<key>Track ID</key><integer>1919</integer>
-			<key>Name</key><string>Heart of the Sunrise</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>Fragile</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>10957973</integer>
-			<key>Total Time</key><integer>684225</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:09Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86921</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Fragile/09%20Heart%20of%20the%20Sunrise.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1920</key>
-		<dict>
-			<key>Track ID</key><integer>1920</integer>
-			<key>Name</key><string>Yours Is No Disgrace</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>The Yes Album</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9308455</integer>
-			<key>Total Time</key><integer>581642</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:21Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3247547127</integer>
-			<key>Play Date UTC</key><date>2006-11-28T16:25:27Z</date>
-			<key>Persistent ID</key><string>87139F8602B86923</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/The%20Yes%20Album/01%20Yours%20Is%20No%20Disgrace.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1921</key>
-		<dict>
-			<key>Track ID</key><integer>1921</integer>
-			<key>Name</key><string>The Clap</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>The Yes Album</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3166545</integer>
-			<key>Total Time</key><integer>197773</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:20Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3249448044</integer>
-			<key>Play Date UTC</key><date>2006-12-20T16:27:24Z</date>
-			<key>Persistent ID</key><string>87139F8602B86926</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/The%20Yes%20Album/02%20The%20Clap.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1922</key>
-		<dict>
-			<key>Track ID</key><integer>1922</integer>
-			<key>Name</key><string>Starship Trooper: Life Seeker/Disillusion/Würm</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>The Yes Album</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>9197278</integer>
-			<key>Total Time</key><integer>574693</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:19Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253769245</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:47:25Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2006-11-16T00:10:03Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Persistent ID</key><string>87139F8602B86928</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/The%20Yes%20Album/03%20Starship%20Trooper_%20Life%20Seeker_Disillusion_Wu%CC%88rm.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1923</key>
-		<dict>
-			<key>Track ID</key><integer>1923</integer>
-			<key>Name</key><string>I've Seen All Good People: Your Move/All Good People</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>The Yes Album</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6664027</integer>
-			<key>Total Time</key><integer>416365</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:16Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3250602061</integer>
-			<key>Play Date UTC</key><date>2007-01-03T01:01:01Z</date>
-			<key>Persistent ID</key><string>87139F8602B8692A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/The%20Yes%20Album/04%20I've%20Seen%20All%20Good%20People_%20Your%20Move_All%20Good%20People.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1924</key>
-		<dict>
-			<key>Track ID</key><integer>1924</integer>
-			<key>Name</key><string>A Venture</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>The Yes Album</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>3182009</integer>
-			<key>Total Time</key><integer>198739</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>87139F8602B8692C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/The%20Yes%20Album/05%20A%20Venture.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1925</key>
-		<dict>
-			<key>Track ID</key><integer>1925</integer>
-			<key>Name</key><string>Perpetual Change</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album</key><string>The Yes Album</string>
-			<key>Genre</key><string>Rock/Pop</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>8562816</integer>
-			<key>Total Time</key><integer>535040</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Date Modified</key><date>2004-11-29T13:37:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253473325</integer>
-			<key>Play Date UTC</key><date>2007-02-05T06:35:25Z</date>
-			<key>Persistent ID</key><string>87139F8602B8692E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/The%20Yes%20Album/06%20Perpetual%20Change.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1926</key>
-		<dict>
-			<key>Track ID</key><integer>1926</integer>
-			<key>Name</key><string>Opening (Excerpt from the "Firebird Suite") [Live]</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3788958</integer>
-			<key>Total Time</key><integer>227670</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:35:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252389385</integer>
-			<key>Play Date UTC</key><date>2007-01-23T17:29:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86930</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-01%20Opening%20(Excerpt%20from%20the%20_Firebird%20Suite_)%20%5BLive%5D.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1927</key>
-		<dict>
-			<key>Track ID</key><integer>1927</integer>
-			<key>Name</key><string>Siberian Khatru (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>8805886</integer>
-			<key>Total Time</key><integer>543624</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:35:33Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:02Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253592121</integer>
-			<key>Play Date UTC</key><date>2007-02-06T15:35:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86933</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-02%20Siberian%20Khatru%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1928</key>
-		<dict>
-			<key>Track ID</key><integer>1928</integer>
-			<key>Name</key><string>Heart of the Sunrise (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>11191038</integer>
-			<key>Total Time</key><integer>693834</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:36:07Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253533671</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:21:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86935</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-03%20Heart%20of%20the%20Sunrise%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1929</key>
-		<dict>
-			<key>Track ID</key><integer>1929</integer>
-			<key>Name</key><string>Perpetual Change (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>13693662</integer>
-			<key>Total Time</key><integer>851427</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:36:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253258749</integer>
-			<key>Play Date UTC</key><date>2007-02-02T18:59:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86937</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-04%20Perpetual%20Change%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1930</key>
-		<dict>
-			<key>Track ID</key><integer>1930</integer>
-			<key>Name</key><string>And You and I: Cord of Life/Eclipse/The Preacher and the Teacher/The Apocalypse (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>9282398</integer>
-			<key>Total Time</key><integer>573624</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:37:24Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86939</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-05%20And%20You%20and%20I_%20Cord%20of%20Life_Eclipse_The%20Preacher%20and%20the%20Teacher_The%20Apocalypse%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1931</key>
-		<dict>
-			<key>Track ID</key><integer>1931</integer>
-			<key>Name</key><string>Mood for a Day (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>2924574</integer>
-			<key>Total Time</key><integer>173242</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:37:34Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252542069</integer>
-			<key>Play Date UTC</key><date>2007-01-25T11:54:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8693B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-06%20Mood%20for%20a%20Day%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1932</key>
-		<dict>
-			<key>Track ID</key><integer>1932</integer>
-			<key>Name</key><string>Excerpts from "The Six Wives of Henry VIII" (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6489102</integer>
-			<key>Total Time</key><integer>397709</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:37:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253284023</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:00:23Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-25T19:20:12Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8693D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-07%20Excerpts%20from%20_The%20Six%20Wives%20of%20Henry%20VIII_%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1933</key>
-		<dict>
-			<key>Track ID</key><integer>1933</integer>
-			<key>Name</key><string>Roundabout (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>8323214</integer>
-			<key>Total Time</key><integer>513229</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>8</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:38:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>7</integer>
-			<key>Play Date</key><integer>3253706860</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:27:40Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T16:01:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8693F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/1-08%20Roundabout%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1934</key>
-		<dict>
-			<key>Track ID</key><integer>1934</integer>
-			<key>Name</key><string>I've Seen All Good People: Your Move/All Good People (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6989646</integer>
-			<key>Total Time</key><integer>429242</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:38:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252396855</integer>
-			<key>Play Date UTC</key><date>2007-01-23T19:34:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86941</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/2-01%20I've%20Seen%20All%20Good%20People_%20Your%20Move_All%20Good%20People%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1935</key>
-		<dict>
-			<key>Track ID</key><integer>1935</integer>
-			<key>Name</key><string>Long Distance Runaround/The Fish (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>13147502</integer>
-			<key>Total Time</key><integer>817039</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:39:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-10T17:18:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86943</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/2-02%20Long%20Distance%20Runaround_The%20Fish%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1936</key>
-		<dict>
-			<key>Track ID</key><integer>1936</integer>
-			<key>Name</key><string>Close to the Edge: The Solid Time of Change/Total Mass Retain/I Get Up I Get Down/Seasons of Man (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>17543550</integer>
-			<key>Total Time</key><integer>1093890</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:40:23Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253427874</integer>
-			<key>Play Date UTC</key><date>2007-02-04T17:57:54Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-11-12T17:32:11Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86945</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/2-03%20Close%20to%20the%20Edge_%20The%20Solid%20Time%20of%20Change_Total%20Mass%20Retain_I%20Get%20Up%20I%20Get%20Down_Seasons%20of%20Man%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1937</key>
-		<dict>
-			<key>Track ID</key><integer>1937</integer>
-			<key>Name</key><string>Yours Is No Disgrace (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>13890142</integer>
-			<key>Total Time</key><integer>863804</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:41:12Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3251348370</integer>
-			<key>Play Date UTC</key><date>2007-01-11T16:19:30Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86947</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/2-04%20Yours%20Is%20No%20Disgrace%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1938</key>
-		<dict>
-			<key>Track ID</key><integer>1938</integer>
-			<key>Name</key><string>Starship Trooper: Life Seeker/Disillusion/Würm (Live)</string>
-			<key>Artist</key><string>Yes</string>
-			<key>Album Artist</key><string>Yes</string>
-			<key>Album</key><string>Yessongs</string>
-			<key>Genre</key><string>Rock</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>9987582</integer>
-			<key>Total Time</key><integer>618044</integer>
-			<key>Disc Number</key><integer>2</integer>
-			<key>Disc Count</key><integer>2</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>5</integer>
-			<key>Year</key><integer>1973</integer>
-			<key>Date Modified</key><date>2004-05-21T20:41:59Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252509765</integer>
-			<key>Play Date UTC</key><date>2007-01-25T02:56:05Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86949</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Yes/Yessongs/2-05%20Starship%20Trooper_%20Life%20Seeker_Disillusion_Wu%CC%88rm%20(Live).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1939</key>
-		<dict>
-			<key>Track ID</key><integer>1939</integer>
-			<key>Name</key><string>Out of Town</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Late Lounge (1 of 2)</string>
-			<key>Genre</key><string>Electronica</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4612182</integer>
-			<key>Total Time</key><integer>287869</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Date Modified</key><date>2004-11-29T13:36:01Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3249392989</integer>
-			<key>Play Date UTC</key><date>2006-12-20T01:09:49Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8694B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Late%20Lounge%20(1%20of%202)/02%20Out%20of%20Town.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1940</key>
-		<dict>
-			<key>Track ID</key><integer>1940</integer>
-			<key>Name</key><string>I Have Seen</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5014642</integer>
-			<key>Total Time</key><integer>307430</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:56:05Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253378247</integer>
-			<key>Play Date UTC</key><date>2007-02-04T04:10:47Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8694E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/01%20I%20Have%20Seen.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1941</key>
-		<dict>
-			<key>Track ID</key><integer>1941</integer>
-			<key>Name</key><string>Polaris</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4702418</integer>
-			<key>Total Time</key><integer>288134</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:56:31Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253253306</integer>
-			<key>Play Date UTC</key><date>2007-02-02T17:28:26Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86951</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/02%20Polaris.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1942</key>
-		<dict>
-			<key>Track ID</key><integer>1942</integer>
-			<key>Name</key><string>Destiny</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5504946</integer>
-			<key>Total Time</key><integer>337709</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:57:04Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253274952</integer>
-			<key>Play Date UTC</key><date>2007-02-02T23:29:12Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86953</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/03%20Destiny.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1943</key>
-		<dict>
-			<key>Track ID</key><integer>1943</integer>
-			<key>Name</key><string>Give It Away: Mü</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5175442</integer>
-			<key>Total Time</key><integer>317368</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:57:40Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247465882</integer>
-			<key>Play Date UTC</key><date>2006-11-27T17:51:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86955</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/04%20Give%20It%20Away.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1944</key>
-		<dict>
-			<key>Track ID</key><integer>1944</integer>
-			<key>Name</key><string>Simple Things</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4314322</integer>
-			<key>Total Time</key><integer>264148</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:58:10Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247466147</integer>
-			<key>Play Date UTC</key><date>2006-11-27T17:55:47Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-02T19:45:56Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86957</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/05%20Simple%20Things.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1945</key>
-		<dict>
-			<key>Track ID</key><integer>1945</integer>
-			<key>Name</key><string>Red Dust</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5547394</integer>
-			<key>Total Time</key><integer>340356</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:58:49Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3251350562</integer>
-			<key>Play Date UTC</key><date>2007-01-11T16:56:02Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86959</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/06%20Red%20Dust.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1946</key>
-		<dict>
-			<key>Track ID</key><integer>1946</integer>
-			<key>Name</key><string>Distractions</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5159666</integer>
-			<key>Total Time</key><integer>316393</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:59:26Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253468832</integer>
-			<key>Play Date UTC</key><date>2007-02-05T05:20:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8695B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/07%20Distractions.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1947</key>
-		<dict>
-			<key>Track ID</key><integer>1947</integer>
-			<key>Name</key><string>In the Waiting Line</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4445826</integer>
-			<key>Total Time</key><integer>272275</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T20:59:57Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252413651</integer>
-			<key>Play Date UTC</key><date>2007-01-24T00:14:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8695D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/08%20In%20the%20Waiting%20Line.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1948</key>
-		<dict>
-			<key>Track ID</key><integer>1948</integer>
-			<key>Name</key><string>Out of Town</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4699794</integer>
-			<key>Total Time</key><integer>287972</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T21:00:37Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253294905</integer>
-			<key>Play Date UTC</key><date>2007-02-03T05:01:45Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B8695F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/09%20Out%20of%20Town.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1949</key>
-		<dict>
-			<key>Track ID</key><integer>1949</integer>
-			<key>Name</key><string>This World</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5474130</integer>
-			<key>Total Time</key><integer>335828</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T21:01:14Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253287595</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:59:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86961</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/10%20This%20World.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1950</key>
-		<dict>
-			<key>Track ID</key><integer>1950</integer>
-			<key>Name</key><string>Likufanele</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6048594</integer>
-			<key>Total Time</key><integer>371332</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T21:01:55Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>4</integer>
-			<key>Play Date</key><integer>3253539327</integer>
-			<key>Play Date UTC</key><date>2007-02-06T00:55:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86963</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/11%20Likufanele.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1951</key>
-		<dict>
-			<key>Track ID</key><integer>1951</integer>
-			<key>Name</key><string>End Theme</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3595202</integer>
-			<key>Total Time</key><integer>219705</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T21:02:17Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3249490761</integer>
-			<key>Play Date UTC</key><date>2006-12-21T04:19:21Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86965</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/12%20End%20Theme.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1952</key>
-		<dict>
-			<key>Track ID</key><integer>1952</integer>
-			<key>Name</key><string>Salt Water Sound</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5394482</integer>
-			<key>Total Time</key><integer>330906</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T21:02:47Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3247836625</integer>
-			<key>Play Date UTC</key><date>2006-12-02T00:50:25Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86967</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/13%20Salt%20Water%20Sound.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1953</key>
-		<dict>
-			<key>Track ID</key><integer>1953</integer>
-			<key>Name</key><string>Spinning</string>
-			<key>Artist</key><string>Zero 7</string>
-			<key>Album Artist</key><string>Zero 7</string>
-			<key>Album</key><string>Simple Things</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5916338</integer>
-			<key>Total Time</key><integer>363158</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>14</integer>
-			<key>Track Count</key><integer>14</integer>
-			<key>Year</key><integer>2001</integer>
-			<key>Date Modified</key><date>2005-05-09T21:03:25Z</date>
-			<key>Date Added</key><date>2006-11-09T20:13:03Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>6</integer>
-			<key>Play Date</key><integer>3253108411</integer>
-			<key>Play Date UTC</key><date>2007-02-01T01:13:31Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>87139F8602B86969</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Zero%207/Simple%20Things/14%20Spinning.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1954</key>
-		<dict>
-			<key>Track ID</key><integer>1954</integer>
-			<key>Name</key><string>Fly</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5919547</integer>
-			<key>Total Time</key><integer>361184</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:42:46Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3252296520</integer>
-			<key>Play Date UTC</key><date>2007-01-22T15:42:00Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63B1</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/01%20Fly.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1955</key>
-		<dict>
-			<key>Track ID</key><integer>1955</integer>
-			<key>Name</key><string>Here I Come</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4627091</integer>
-			<key>Total Time</key><integer>280472</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:42:51Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>29</integer>
-			<key>Play Date</key><integer>3253683374</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:56:14Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-14T18:55:06Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63B4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/02%20Here%20I%20Come.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1956</key>
-		<dict>
-			<key>Track ID</key><integer>1956</integer>
-			<key>Name</key><string>Colours</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6165791</integer>
-			<key>Total Time</key><integer>375372</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:42:56Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>10</integer>
-			<key>Play Date</key><integer>3253626193</integer>
-			<key>Play Date UTC</key><date>2007-02-07T01:03:13Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63B6</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/03%20Colours.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1957</key>
-		<dict>
-			<key>Track ID</key><integer>1957</integer>
-			<key>Name</key><string>Nobody Never</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3999428</integer>
-			<key>Total Time</key><integer>241114</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:42:55Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>12</integer>
-			<key>Play Date</key><integer>3253626435</integer>
-			<key>Play Date UTC</key><date>2007-02-07T01:07:15Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63B8</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/04%20Nobody%20Never.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1958</key>
-		<dict>
-			<key>Track ID</key><integer>1958</integer>
-			<key>Name</key><string>Soto Mundo</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6400866</integer>
-			<key>Total Time</key><integer>388654</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:43:13Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>31</integer>
-			<key>Play Date</key><integer>3253711770</integer>
-			<key>Play Date UTC</key><date>2007-02-08T00:49:30Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63BA</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/05%20Soto%20Mundo.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1959</key>
-		<dict>
-			<key>Track ID</key><integer>1959</integer>
-			<key>Name</key><string>Pil</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4094363</integer>
-			<key>Total Time</key><integer>247685</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:43:30Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>12</integer>
-			<key>Play Date</key><integer>3253626682</integer>
-			<key>Play Date UTC</key><date>2007-02-07T01:11:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63BC</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/06%20Pil.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1960</key>
-		<dict>
-			<key>Track ID</key><integer>1960</integer>
-			<key>Name</key><string>Little Things</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7283717</integer>
-			<key>Total Time</key><integer>443244</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:43:15Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253625079</integer>
-			<key>Play Date UTC</key><date>2007-02-07T00:44:39Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63BE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/07%20Little%20Things.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1961</key>
-		<dict>
-			<key>Track ID</key><integer>1961</integer>
-			<key>Name</key><string>Mote</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4194556</integer>
-			<key>Total Time</key><integer>253212</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:43:26Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>14</integer>
-			<key>Play Date</key><integer>3253626935</integer>
-			<key>Play Date UTC</key><date>2007-02-07T01:15:35Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63C0</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/08%20Mote.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1962</key>
-		<dict>
-			<key>Track ID</key><integer>1962</integer>
-			<key>Name</key><string>Slipaway</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4472288</integer>
-			<key>Total Time</key><integer>272507</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:43:27Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>14</integer>
-			<key>Play Date</key><integer>3253627208</integer>
-			<key>Play Date UTC</key><date>2007-02-07T01:20:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63C2</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/09%20Slipaway.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1963</key>
-		<dict>
-			<key>Track ID</key><integer>1963</integer>
-			<key>Name</key><string>After Hours</string>
-			<key>Artist</key><string>2 Bit Pie</string>
-			<key>Album Artist</key><string>2 Bit Pie</string>
-			<key>Album</key><string>2 Pie Island</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7271699</integer>
-			<key>Total Time</key><integer>443383</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-26T17:43:41Z</date>
-			<key>Date Added</key><date>2006-11-26T17:42:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3253682117</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:35:17Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A63C4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/2%20Bit%20Pie/2%20Pie%20Island/10%20After%20Hours.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1964</key>
-		<dict>
-			<key>Track ID</key><integer>1964</integer>
-			<key>Name</key><string>Nothing At All</string>
-			<key>Artist</key><string>Wired All Wrong</string>
-			<key>Album Artist</key><string>Wired All Wrong</string>
-			<key>Album</key><string>Break Out the Battle Tapes</string>
-			<key>Genre</key><string>Alternative</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3262691</integer>
-			<key>Total Time</key><integer>198087</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>10</integer>
-			<key>Year</key><integer>2006</integer>
-			<key>Date Modified</key><date>2006-11-27T05:49:28Z</date>
-			<key>Date Added</key><date>2006-11-27T05:49:21Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253465074</integer>
-			<key>Play Date UTC</key><date>2007-02-05T04:17:54Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8D7DB9C4CF0A6BBE</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Wired%20All%20Wrong/Break%20Out%20the%20Battle%20Tapes/03%20Nothing%20At%20All.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1965</key>
-		<dict>
-			<key>Track ID</key><integer>1965</integer>
-			<key>Name</key><string>Groove Salad: a nicely chilled plate of ambient beats and grooves. [SomaFM]</string>
-			<key>Genre</key><string>Ambient Chill</string>
-			<key>Kind</key><string>MPEG audio stream</string>
-			<key>Date Added</key><date>2006-11-29T18:53:13Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>A nicely chilled plate of ambient beats and grooves. Listener supported, commercial free.</string>
-			<key>Play Count</key><integer>15</integer>
-			<key>Play Date</key><integer>3252582951</integer>
-			<key>Play Date UTC</key><date>2007-01-25T23:15:51Z</date>
-			<key>Persistent ID</key><string>B16FC77EA12CDEA4</string>
-			<key>Track Type</key><string>URL</string>
-			<key>Location</key><string>http://pri.kts-af.net/redir/index.pls?esid=8b4fbce948857b4cf0c1d9ba2f7d3f1e&#38;url_no=1&#38;client_id=7&#38;uid=68efed4d03ec7e45fd3978262c107180&#38;clicksrc=xml</string>
-		</dict>
-		<key>1966</key>
-		<dict>
-			<key>Track ID</key><integer>1966</integer>
-			<key>Name</key><string>This Is What It Means</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>1344234</integer>
-			<key>Total Time</key><integer>79526</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:52:01Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>16</integer>
-			<key>Play Date</key><integer>3253188850</integer>
-			<key>Play Date UTC</key><date>2007-02-01T23:34:10Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2006-12-03T17:19:28Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FBF4</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/01%20This%20Is%20What%20It%20Means.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1967</key>
-		<dict>
-			<key>Track ID</key><integer>1967</integer>
-			<key>Name</key><string>True to Form</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>9074913</integer>
-			<key>Total Time</key><integer>554955</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:52:24Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>19</integer>
-			<key>Play Date</key><integer>3253285303</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:21:43Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FBF7</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/02%20True%20to%20Form.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1968</key>
-		<dict>
-			<key>Track ID</key><integer>1968</integer>
-			<key>Name</key><string>Know Your Enemy</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5874644</integer>
-			<key>Total Time</key><integer>358143</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:52:22Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>16</integer>
-			<key>Play Date</key><integer>3253766826</integer>
-			<key>Play Date UTC</key><date>2007-02-08T16:07:06Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FBF9</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/03%20Know%20Your%20Enemy.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1969</key>
-		<dict>
-			<key>Track ID</key><integer>1969</integer>
-			<key>Name</key><string>Marrakech</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5670878</integer>
-			<key>Total Time</key><integer>345627</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:52:23Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>16</integer>
-			<key>Play Date</key><integer>3253708135</integer>
-			<key>Play Date UTC</key><date>2007-02-07T23:48:55Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FBFB</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/04%20Marrakech.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1970</key>
-		<dict>
-			<key>Track ID</key><integer>1970</integer>
-			<key>Name</key><string>I'm Still Awake</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6296708</integer>
-			<key>Total Time</key><integer>384056</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:53:09Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>14</integer>
-			<key>Play Date</key><integer>3253532423</integer>
-			<key>Play Date UTC</key><date>2007-02-05T23:00:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FBFD</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/05%20I'm%20Still%20Awake.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1971</key>
-		<dict>
-			<key>Track ID</key><integer>1971</integer>
-			<key>Name</key><string>Visible Noise</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7081170</integer>
-			<key>Total Time</key><integer>432354</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:53:16Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>26</integer>
-			<key>Play Date</key><integer>3253686182</integer>
-			<key>Play Date UTC</key><date>2007-02-07T17:43:02Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FBFF</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/06%20Visible%20Noise.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1972</key>
-		<dict>
-			<key>Track ID</key><integer>1972</integer>
-			<key>Name</key><string>We Are In Control</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5964550</integer>
-			<key>Total Time</key><integer>363646</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:53:13Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>19</integer>
-			<key>Play Date</key><integer>3253543690</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:08:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FC01</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/07%20We%20Are%20In%20Control.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1973</key>
-		<dict>
-			<key>Track ID</key><integer>1973</integer>
-			<key>Name</key><string>Higher Than a Skyscraper</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5491053</integer>
-			<key>Total Time</key><integer>334574</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:53:38Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>15</integer>
-			<key>Play Date</key><integer>3253683093</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:51:33Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FC03</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/08%20Higher%20Than%20a%20Skyscraper.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1974</key>
-		<dict>
-			<key>Track ID</key><integer>1974</integer>
-			<key>Name</key><string>Steal You Away</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5359555</integer>
-			<key>Total Time</key><integer>326401</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T19:24:20Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>19</integer>
-			<key>Play Date</key><integer>3251363360</integer>
-			<key>Play Date UTC</key><date>2007-01-11T20:29:20Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-06T00:02:07Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FC05</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/09%20Steal%20You%20Away.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1975</key>
-		<dict>
-			<key>Track ID</key><integer>1975</integer>
-			<key>Name</key><string>Gravastar</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4960414</integer>
-			<key>Total Time</key><integer>301834</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T19:25:24Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3251288417</integer>
-			<key>Play Date UTC</key><date>2007-01-10T23:40:17Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FC07</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/10%20Gravastar.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1976</key>
-		<dict>
-			<key>Track ID</key><integer>1976</integer>
-			<key>Name</key><string>Out of the Dark</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>7169172</integer>
-			<key>Total Time</key><integer>437717</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:53:54Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>16</integer>
-			<key>Play Date</key><integer>3252570751</integer>
-			<key>Play Date UTC</key><date>2007-01-25T19:52:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FC09</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/11%20Out%20of%20the%20Dark.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1977</key>
-		<dict>
-			<key>Track ID</key><integer>1977</integer>
-			<key>Name</key><string>Blackout</string>
-			<key>Artist</key><string>Hybrid</string>
-			<key>Album Artist</key><string>Hybrid</string>
-			<key>Album</key><string>Morning Sci-Fi</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6402781</integer>
-			<key>Total Time</key><integer>392578</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>12</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-11-30T18:54:09Z</date>
-			<key>Date Added</key><date>2006-11-30T18:51:55Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>15</integer>
-			<key>Play Date</key><integer>3253680141</integer>
-			<key>Play Date UTC</key><date>2007-02-07T16:02:21Z</date>
-			<key>Rating</key><integer>40</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>109CFA90F099FC0B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Hybrid/Morning%20Sci-Fi/12%20Blackout.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1978</key>
-		<dict>
-			<key>Track ID</key><integer>1978</integer>
-			<key>Name</key><string>12 Visa Röster - M.U.L.E.</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6956641</integer>
-			<key>Total Time</key><integer>217391</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Date Modified</key><date>2006-12-14T03:08:20Z</date>
-			<key>Date Added</key><date>2006-12-14T03:08:26Z</date>
-			<key>Bit Rate</key><integer>256</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Persistent ID</key><string>AAC8FF0F51C01DB6</string>
-			<key>Track Type</key><string>File</string>
-			<key>File Type</key><integer>1297106739</integer>
-			<key>File Creator</key><integer>1752133483</integer>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Unknown%20Artist/Unknown%20Album/12%20Visa%20Ro%CC%88ster%20-%20M.U.L.E..mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1979</key>
-		<dict>
-			<key>Track ID</key><integer>1979</integer>
-			<key>Name</key><string>Sex On Wheels (Astro &#38; Glyde Summer Soltice Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6352688</integer>
-			<key>Total Time</key><integer>388120</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:10:48Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253374922</integer>
-			<key>Play Date UTC</key><date>2007-02-04T03:15:22Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85326</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/01%20Sex%20On%20Wheels%20(Astro%20&#38;%20Glyde%20Summer%20Soltice%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1980</key>
-		<dict>
-			<key>Track ID</key><integer>1980</integer>
-			<key>Name</key><string>Leathersex (Paul Lancaster Wipe Clean Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5806362</integer>
-			<key>Total Time</key><integer>354381</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:10:45Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253262228</integer>
-			<key>Play Date UTC</key><date>2007-02-02T19:57:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85329</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/02%20Leathersex%20(Paul%20Lancaster%20Wipe%20Clean%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1981</key>
-		<dict>
-			<key>Track ID</key><integer>1981</integer>
-			<key>Name</key><string>And This Is What the Devil Does (This Is What Ebon Does Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5209452</integer>
-			<key>Total Time</key><integer>317670</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:10:46Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>14</integer>
-			<key>Play Date</key><integer>3253191537</integer>
-			<key>Play Date UTC</key><date>2007-02-02T00:18:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D8532B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/03%20And%20This%20Is%20What%20the%20Devil%20Does%20(This%20Is%20What%20Ebon%20Does%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1982</key>
-		<dict>
-			<key>Track ID</key><integer>1982</integer>
-			<key>Name</key><string>A Daisy Chain for Satan (P's White Rabbit Re-Rub)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5919809</integer>
-			<key>Total Time</key><integer>361510</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:06Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>8</integer>
-			<key>Play Date</key><integer>3253191898</integer>
-			<key>Play Date UTC</key><date>2007-02-02T00:24:58Z</date>
-			<key>Skip Count</key><integer>2</integer>
-			<key>Skip Date</key><date>2007-01-10T22:29:21Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D8532D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/04%20A%20Daisy%20Chain%20for%20Satan%20(P's%20White%20Rabbit%20Re-Rub).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1983</key>
-		<dict>
-			<key>Track ID</key><integer>1983</integer>
-			<key>Name</key><string>Waiting for Mommy (Bryan Zentz Dealin' With the Devil Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5669082</integer>
-			<key>Total Time</key><integer>345975</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:09Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>15</integer>
-			<key>Play Date</key><integer>3251371588</integer>
-			<key>Play Date UTC</key><date>2007-01-11T22:46:28Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D8532F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/05%20Waiting%20for%20Mommy%20(Bryan%20Zentz%20Dealin'%20With%20the%20Devil%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1984</key>
-		<dict>
-			<key>Track ID</key><integer>1984</integer>
-			<key>Name</key><string>Disko Fleshpot (Phunk Investigation's Club Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6271807</integer>
-			<key>Total Time</key><integer>383127</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:08Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>11</integer>
-			<key>Play Date</key><integer>3252380429</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:00:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85331</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/06%20Disko%20Fleshpot%20(Phunk%20Investigation's%20Club%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1985</key>
-		<dict>
-			<key>Track ID</key><integer>1985</integer>
-			<key>Name</key><string>Radio Silicon (Freakus' for Laura-Lorenza &#38; Mark Verbos Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5381772</integer>
-			<key>Total Time</key><integer>328305</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:22Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>12</integer>
-			<key>Play Date</key><integer>3252380757</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:05:57Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85333</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/07%20Radio%20Silicon%20(Freakus'%20for%20Laura-Lorenza%20&#38;%20Mark%20Verbos%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1986</key>
-		<dict>
-			<key>Track ID</key><integer>1986</integer>
-			<key>Name</key><string>Kooler Than Jesus (Tomie Sunshine &#38; Mark Verbos Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6036852</integer>
-			<key>Total Time</key><integer>368545</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:27Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>22</integer>
-			<key>Play Date</key><integer>3253558191</integer>
-			<key>Play Date UTC</key><date>2007-02-06T06:09:51Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85335</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/08%20Kooler%20Than%20Jesus%20(Tomie%20Sunshine%20&#38;%20Mark%20Verbos%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1987</key>
-		<dict>
-			<key>Track ID</key><integer>1987</integer>
-			<key>Name</key><string>Days of Swine &#38; Roses (D:Fuse &#38; Mike Hiratzka Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6190386</integer>
-			<key>Total Time</key><integer>378158</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:26Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>19</integer>
-			<key>Play Date</key><integer>3253251166</integer>
-			<key>Play Date UTC</key><date>2007-02-02T16:52:46Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85337</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/09%20Days%20of%20Swine%20&#38;%20Roses%20(D_Fuse%20&#38;%20Mike%20Hiratzka%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1988</key>
-		<dict>
-			<key>Track ID</key><integer>1988</integer>
-			<key>Name</key><string>Asylum Disciple (Blue Room Project Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6179783</integer>
-			<key>Total Time</key><integer>377438</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:38Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253349909</integer>
-			<key>Play Date UTC</key><date>2007-02-03T20:18:29Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D85339</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/10%20Asylum%20Disciple%20(Blue%20Room%20Project%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1989</key>
-		<dict>
-			<key>Track ID</key><integer>1989</integer>
-			<key>Name</key><string>Bad Life (Kemek the Dope Computer Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5961766</integer>
-			<key>Total Time</key><integer>364064</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:41Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>12</integer>
-			<key>Play Date</key><integer>3253251908</integer>
-			<key>Play Date UTC</key><date>2007-02-02T17:05:08Z</date>
-			<key>Rating</key><integer>20</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D8533B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/11%20Bad%20Life%20(Kemek%20the%20Dope%20Computer%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1990</key>
-		<dict>
-			<key>Track ID</key><integer>1990</integer>
-			<key>Name</key><string>Cuz Its Hot (Nee &#38; Shreeve Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5036799</integer>
-			<key>Total Time</key><integer>307128</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:43Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>20</integer>
-			<key>Play Date</key><integer>3253712898</integer>
-			<key>Play Date UTC</key><date>2007-02-08T01:08:18Z</date>
-			<key>Rating</key><integer>60</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D8533D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/12%20Cuz%20Its%20Hot%20(Nee%20&#38;%20Shreeve%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1991</key>
-		<dict>
-			<key>Track ID</key><integer>1991</integer>
-			<key>Name</key><string>Dimentia 66 (Grayarea Mix)</string>
-			<key>Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album Artist</key><string>My Life With the Thrill Kill Kult</string>
-			<key>Album</key><string>My Life Remixed - a Remix Tribute</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5620506</integer>
-			<key>Total Time</key><integer>342214</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Track Count</key><integer>13</integer>
-			<key>Year</key><integer>2005</integer>
-			<key>Date Modified</key><date>2006-12-30T00:11:50Z</date>
-			<key>Date Added</key><date>2006-12-30T00:10:25Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>13</integer>
-			<key>Play Date</key><integer>3253454582</integer>
-			<key>Play Date UTC</key><date>2007-02-05T01:23:02Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-11T23:01:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>8A29B85AE3D8533F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/My%20Life%20With%20the%20Thrill%20Kill%20Kult/My%20Life%20Remixed%20-%20a%20Remix%20Tribute/13%20Dimentia%2066%20(Grayarea%20Mix).m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1992</key>
-		<dict>
-			<key>Track ID</key><integer>1992</integer>
-			<key>Name</key><string>Back from Space</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4914777</integer>
-			<key>Total Time</key><integer>292755</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:57:46Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253357848</integer>
-			<key>Play Date UTC</key><date>2007-02-03T22:30:48Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F1C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/01%20Back%20from%20Space.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1993</key>
-		<dict>
-			<key>Track ID</key><integer>1993</integer>
-			<key>Name</key><string>Verbal Feat. Mc Decimal R.</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>3974468</integer>
-			<key>Total Time</key><integer>235286</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:57:43Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253459774</integer>
-			<key>Play Date UTC</key><date>2007-02-05T02:49:34Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F1F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/02%20Verbal%20Feat.%20Mc%20Decimal%20R..m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1994</key>
-		<dict>
-			<key>Track ID</key><integer>1994</integer>
-			<key>Name</key><string>Chronic Tronic</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>6124264</integer>
-			<key>Total Time</key><integer>367152</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:57:45Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253294452</integer>
-			<key>Play Date UTC</key><date>2007-02-03T04:54:12Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F21</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/03%20Chronic%20Tronic.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1995</key>
-		<dict>
-			<key>Track ID</key><integer>1995</integer>
-			<key>Name</key><string>Searchers</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5764115</integer>
-			<key>Total Time</key><integer>345000</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:00Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3251359171</integer>
-			<key>Play Date UTC</key><date>2007-01-11T19:19:31Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-17T15:24:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F23</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/04%20Searchers.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1996</key>
-		<dict>
-			<key>Track ID</key><integer>1996</integer>
-			<key>Name</key><string>Hey Blondie</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4562005</integer>
-			<key>Total Time</key><integer>271207</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:57:58Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3252557184</integer>
-			<key>Play Date UTC</key><date>2007-01-25T16:06:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F25</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/05%20Hey%20Blondie.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1997</key>
-		<dict>
-			<key>Track ID</key><integer>1997</integer>
-			<key>Name</key><string>Rosies</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5405088</integer>
-			<key>Total Time</key><integer>322918</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:02Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3251487850</integer>
-			<key>Play Date UTC</key><date>2007-01-13T07:04:10Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F27</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/06%20Rosies.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1998</key>
-		<dict>
-			<key>Track ID</key><integer>1998</integer>
-			<key>Name</key><string>Cosmo Retro Intro Outro</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>4181761</integer>
-			<key>Total Time</key><integer>247662</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:12Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>5</integer>
-			<key>Play Date</key><integer>3253546458</integer>
-			<key>Play Date UTC</key><date>2007-02-06T02:54:18Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F29</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/07%20Cosmo%20Retro%20Intro%20Outro.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>1999</key>
-		<dict>
-			<key>Track ID</key><integer>1999</integer>
-			<key>Name</key><string>Triple Science</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5006056</integer>
-			<key>Total Time</key><integer>298374</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:16Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F2B</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/08%20Triple%20Science.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2000</key>
-		<dict>
-			<key>Track ID</key><integer>2000</integer>
-			<key>Name</key><string>El Wraith</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5997859</integer>
-			<key>Total Time</key><integer>359373</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:19Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253426375</integer>
-			<key>Play Date UTC</key><date>2007-02-04T17:32:55Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F2D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/09%20El%20Wraith.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2001</key>
-		<dict>
-			<key>Track ID</key><integer>2001</integer>
-			<key>Name</key><string>Proper Hoodidge</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5452249</integer>
-			<key>Total Time</key><integer>325820</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:24Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252381811</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:23:31Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F2F</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/10%20Proper%20Hoodidge.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2002</key>
-		<dict>
-			<key>Track ID</key><integer>2002</integer>
-			<key>Name</key><string>Mighty Micro People</string>
-			<key>Artist</key><string>Amon Tobin</string>
-			<key>Album Artist</key><string>Amon Tobin</string>
-			<key>Album</key><string>Out from Out Where</string>
-			<key>Genre</key><string>Electronic</string>
-			<key>Kind</key><string>Protected AAC audio file</string>
-			<key>Size</key><integer>5779533</integer>
-			<key>Total Time</key><integer>348088</integer>
-			<key>Disc Number</key><integer>1</integer>
-			<key>Disc Count</key><integer>1</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Track Count</key><integer>11</integer>
-			<key>Year</key><integer>2002</integer>
-			<key>Date Modified</key><date>2007-01-11T18:58:28Z</date>
-			<key>Date Added</key><date>2007-01-11T18:57:28Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252407529</integer>
-			<key>Play Date UTC</key><date>2007-01-23T22:32:09Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>4513774E3D165F31</string>
-			<key>Track Type</key><string>File</string>
-			<key>Protected</key><true/>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Amon%20Tobin/Out%20from%20Out%20Where/11%20Mighty%20Micro%20People.m4p</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2003</key>
-		<dict>
-			<key>Track ID</key><integer>2003</integer>
-			<key>Name</key><string>Little Moon</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4161546</integer>
-			<key>Total Time</key><integer>164048</integer>
-			<key>Track Number</key><integer>11</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:20:56Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253284748</integer>
-			<key>Play Date UTC</key><date>2007-02-03T02:12:28Z</date>
-			<key>Skip Count</key><integer>1</integer>
-			<key>Skip Date</key><date>2007-01-25T00:20:11Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF3777D</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/11%20Little%20Moon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2004</key>
-		<dict>
-			<key>Track ID</key><integer>2004</integer>
-			<key>Name</key><string>Not My Friend</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4415498</integer>
-			<key>Total Time</key><integer>174550</integer>
-			<key>Track Number</key><integer>5</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:12:56Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252383367</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:49:27Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37780</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/05%20Not%20My%20Friend.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2005</key>
-		<dict>
-			<key>Track ID</key><integer>2005</integer>
-			<key>Name</key><string>Wake Me Up</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4229130</integer>
-			<key>Total Time</key><integer>166791</integer>
-			<key>Track Number</key><integer>9</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:18:20Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252384140</integer>
-			<key>Play Date UTC</key><date>2007-01-23T16:02:20Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37782</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/09%20Wake%20Me%20Up.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2006</key>
-		<dict>
-			<key>Track ID</key><integer>2006</integer>
-			<key>Name</key><string>Sinkin' Soon</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6905866</integer>
-			<key>Total Time</key><integer>278386</integer>
-			<key>Track Number</key><integer>2</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:08:56Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252382776</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:39:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37784</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/02%20Sinkin'%20Soon.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2007</key>
-		<dict>
-			<key>Track ID</key><integer>2007</integer>
-			<key>Name</key><string>My Dear Country</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5152778</integer>
-			<key>Total Time</key><integer>205296</integer>
-			<key>Track Number</key><integer>8</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:17:02Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253263936</integer>
-			<key>Play Date UTC</key><date>2007-02-02T20:25:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37786</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/08%20My%20Dear%20Country.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2008</key>
-		<dict>
-			<key>Track ID</key><integer>2008</integer>
-			<key>Name</key><string>Rosie's Lullaby</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5910538</integer>
-			<key>Total Time</key><integer>236852</integer>
-			<key>Track Number</key><integer>12</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:22:30Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252384758</integer>
-			<key>Play Date UTC</key><date>2007-01-23T16:12:38Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37788</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/12%20Rosie's%20Lullaby.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2009</key>
-		<dict>
-			<key>Track ID</key><integer>2009</integer>
-			<key>Name</key><string>The Sun Doesn't Like You</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>4540426</integer>
-			<key>Total Time</key><integer>179826</integer>
-			<key>Track Number</key><integer>3</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:10:08Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252382956</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:42:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF3778A</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/03%20The%20Sun%20Doesn't%20Like%20You.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2010</key>
-		<dict>
-			<key>Track ID</key><integer>2010</integer>
-			<key>Name</key><string>Not Too Late</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5298186</integer>
-			<key>Total Time</key><integer>211408</integer>
-			<key>Track Number</key><integer>13</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:23:50Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:29Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>3</integer>
-			<key>Play Date</key><integer>3253282704</integer>
-			<key>Play Date UTC</key><date>2007-02-03T01:38:24Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF3778C</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/13%20Not%20Too%20Late.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2011</key>
-		<dict>
-			<key>Track ID</key><integer>2011</integer>
-			<key>Name</key><string>Until The End</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5900298</integer>
-			<key>Total Time</key><integer>236486</integer>
-			<key>Track Number</key><integer>4</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:11:50Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:30Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252383192</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:46:32Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF3778E</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/04%20Until%20The%20End.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2012</key>
-		<dict>
-			<key>Track ID</key><integer>2012</integer>
-			<key>Name</key><string>Broken</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5052426</integer>
-			<key>Total Time</key><integer>201090</integer>
-			<key>Track Number</key><integer>7</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:15:32Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:30Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252383768</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:56:08Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37790</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/07%20Broken.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2013</key>
-		<dict>
-			<key>Track ID</key><integer>2013</integer>
-			<key>Name</key><string>Thinking About You</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5042186</integer>
-			<key>Total Time</key><integer>200672</integer>
-			<key>Track Number</key><integer>6</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:14:14Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:31Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3253529436</integer>
-			<key>Play Date UTC</key><date>2007-02-05T22:10:36Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37792</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/06%20Thinking%20About%20You.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2014</key>
-		<dict>
-			<key>Track ID</key><integer>2014</integer>
-			<key>Name</key><string>Wish I Could</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>6428682</integer>
-			<key>Total Time</key><integer>258481</integer>
-			<key>Track Number</key><integer>1</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:07:08Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:32Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3252382498</integer>
-			<key>Play Date UTC</key><date>2007-01-23T15:34:58Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37794</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/01%20Wish%20I%20Could.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2015</key>
-		<dict>
-			<key>Track ID</key><integer>2015</integer>
-			<key>Name</key><string>Be My Somebody</string>
-			<key>Artist</key><string>Norah Jones</string>
-			<key>Album Artist</key><string>Norah Jones</string>
-			<key>Album</key><string>Not Too Late</string>
-			<key>Genre</key><string>Jazz</string>
-			<key>Kind</key><string>MPEG audio file</string>
-			<key>Size</key><integer>5425162</integer>
-			<key>Total Time</key><integer>216659</integer>
-			<key>Track Number</key><integer>10</integer>
-			<key>Year</key><integer>2007</integer>
-			<key>Date Modified</key><date>2007-01-18T02:19:50Z</date>
-			<key>Date Added</key><date>2007-01-23T15:29:32Z</date>
-			<key>Bit Rate</key><integer>192</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Play Count</key><integer>2</integer>
-			<key>Play Date</key><integer>3252561563</integer>
-			<key>Play Date UTC</key><date>2007-01-25T17:19:23Z</date>
-			<key>Artwork Count</key><integer>1</integer>
-			<key>Persistent ID</key><string>C1DB72E05EF37796</string>
-			<key>Track Type</key><string>File</string>
-			<key>Location</key><string>file://localhost/Users/Howard/Music/iTunes/iTunes%20Music/Norah%20Jones/Not%20Too%20Late/10%20Be%20My%20Somebody.mp3</string>
-			<key>File Folder Count</key><integer>-1</integer>
-			<key>Library Folder Count</key><integer>-1</integer>
-		</dict>
-		<key>2016</key>
-		<dict>
-			<key>Track ID</key><integer>2016</integer>
-			<key>Name</key><string>Analog Voyager - Various Esoteric Beats and Grooves with Shelby LaPre on RadioPower.org</string>
-			<key>Genre</key><string>downtempo,alternative,electronic/dance</string>
-			<key>Kind</key><string>MPEG audio stream</string>
-			<key>Date Added</key><date>2007-01-30T17:35:54Z</date>
-			<key>Bit Rate</key><integer>56</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Downtempo, Ambient, Trip-Hop, Electronica</string>
-			<key>Play Count</key><integer>1</integer>
-			<key>Play Date</key><integer>3253020327</integer>
-			<key>Play Date UTC</key><date>2007-01-31T00:45:27Z</date>
-			<key>Persistent ID</key><string>D03DAC75D3D46A1F</string>
-			<key>Track Type</key><string>URL</string>
-			<key>Location</key><string>http://pri.kts-af.net/redir/index.pls?esid=62756317921f57d916a10d5db366f8fe&#38;url_no=1&#38;client_id=7&#38;uid=68efed4d03ec7e45fd3978262c107180&#38;clicksrc=xml</string>
-		</dict>
-		<key>2017</key>
-		<dict>
-			<key>Track ID</key><integer>2017</integer>
-			<key>Name</key><string>radioioAmbient</string>
-			<key>Genre</key><string>Ambient</string>
-			<key>Kind</key><string>MPEG audio stream</string>
-			<key>Date Added</key><date>2007-01-30T17:36:32Z</date>
-			<key>Bit Rate</key><integer>128</integer>
-			<key>Sample Rate</key><integer>44100</integer>
-			<key>Comments</key><string>Sensual, evocative and thoughtful exotic electronica</string>
-			<key>Persistent ID</key><string>D03DAC75D3D46A23</string>
-			<key>Track Type</key><string>URL</string>
-			<key>Location</key><string>http://pri.kts-af.net/redir/index.pls?esid=3efcb31a424be238ba5cad88f8168980&#38;url_no=2&#38;client_id=7&#38;uid=68efed4d03ec7e45fd3978262c107180&#38;clicksrc=xml</string>
-		</dict>
-	</dict>
-	<key>Playlists</key>
-	<array>
-		<dict>
-			<key>Name</key><string>Library</string>
-			<key>Master</key><true/>
-			<key>Playlist ID</key><integer>2018</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DC6</string>
-			<key>Visible</key><false/>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>294</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>295</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>296</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>297</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>298</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>299</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>300</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>301</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>302</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>303</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>304</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>305</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>306</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>308</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>309</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>310</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>311</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>312</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>313</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>314</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>315</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>316</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>318</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>319</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>320</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>321</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>322</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>323</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>324</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>325</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>326</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>327</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>328</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>329</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>330</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>331</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>332</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>333</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>334</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>335</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>336</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>337</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>338</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>339</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>341</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>343</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>344</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>345</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>346</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>347</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>348</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>349</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>350</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>351</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>352</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>354</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>355</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>356</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>357</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>358</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>359</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>360</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>361</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>362</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>363</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>364</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>365</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>366</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>367</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>368</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>369</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>370</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>371</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>372</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>373</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>376</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>377</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>378</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>379</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>380</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>381</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>382</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>383</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>384</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>385</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>386</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>387</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>388</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>389</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>390</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>391</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>392</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>393</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>394</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>395</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>396</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>397</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>398</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>399</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>400</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>401</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>402</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>403</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>405</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>407</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>408</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>409</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>410</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>411</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>412</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>413</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>414</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>415</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>416</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>418</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>419</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>420</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>421</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>423</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>424</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>425</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>426</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>427</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>428</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>429</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>430</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>431</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>432</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>433</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>434</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>435</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>437</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>438</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>439</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>440</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>441</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>442</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>443</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>445</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>446</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>447</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>448</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>449</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>450</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>451</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>452</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>453</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>454</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>455</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>456</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>458</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>459</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>460</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>461</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>462</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>463</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>464</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>465</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>466</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>467</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>468</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>469</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>470</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>471</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>472</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>473</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>474</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>475</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>477</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>478</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>479</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>480</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>481</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>482</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>483</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>484</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>485</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>486</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>487</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>488</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>489</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>490</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>491</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>492</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>493</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>494</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>495</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>496</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>497</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>498</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>499</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>500</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>501</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>502</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>503</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>504</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>505</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>506</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>507</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>508</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>509</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>510</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>512</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>513</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>514</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>515</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>516</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>517</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>518</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>519</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>520</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>521</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>522</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>523</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>524</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>525</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>526</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>527</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>528</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>529</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>530</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>531</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>532</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>534</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>535</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>536</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>537</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>538</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>539</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>540</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>541</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>542</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>546</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>547</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>548</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>549</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>550</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>551</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>552</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>553</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>554</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>555</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>556</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>557</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>559</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>560</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>562</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>563</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>564</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>566</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>567</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>568</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>569</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>570</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>571</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>572</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>573</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>574</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>575</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>576</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>577</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>578</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>579</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>580</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>581</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>582</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>583</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>584</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>585</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>586</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>587</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>588</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>589</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>590</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>591</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>592</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>593</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>594</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>595</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>596</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>597</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>598</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>599</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>600</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>601</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>603</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>604</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>605</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>606</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>607</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>609</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>610</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>612</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>615</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>616</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>617</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>619</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>620</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>622</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>623</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>624</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>625</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>626</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>627</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>628</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>629</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>630</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>631</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>632</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>634</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>635</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>636</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>637</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>638</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>639</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>640</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>641</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>642</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>643</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>645</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>646</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>647</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>648</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>649</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>651</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>652</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>653</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>654</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>655</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>656</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>657</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>658</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>659</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>660</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>661</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>662</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>663</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>664</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>665</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>667</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>668</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>669</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>670</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>671</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>672</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>673</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>674</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>675</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>676</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>677</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>678</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>679</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>680</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>681</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>682</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>683</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>684</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>685</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>686</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>687</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>688</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>689</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>690</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>691</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>692</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>693</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>694</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>695</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>696</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>697</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>699</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>700</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>701</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>702</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>703</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>704</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>705</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>707</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>708</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>709</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>710</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>711</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>712</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>713</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>714</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>715</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>716</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>717</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>718</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>719</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>720</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>722</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>723</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>724</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>725</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>726</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>727</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>729</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>730</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>731</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>732</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>733</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>734</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>735</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>736</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>737</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>738</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>739</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>740</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>741</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>742</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>743</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>744</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>745</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>746</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>747</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>748</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>749</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>750</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>751</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>752</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>753</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>754</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>755</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>756</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>757</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>758</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>759</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>760</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>761</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>763</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>764</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>766</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>767</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>768</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>769</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>770</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>771</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>772</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>773</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>774</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>775</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>776</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>777</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>780</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>781</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>782</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>783</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>784</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>785</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>786</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>787</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>788</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>790</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>791</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>792</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>793</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>794</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>795</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>796</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>797</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>798</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>799</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>801</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>802</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>803</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>805</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>806</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>807</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>808</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>811</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>812</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>813</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>814</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>815</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>816</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>817</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>818</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>819</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>820</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>821</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>822</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>823</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>824</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>825</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>826</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>827</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>828</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>829</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>830</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>831</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>832</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>833</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>835</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>836</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>837</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>838</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>839</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>840</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>841</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>842</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>843</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>844</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>845</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>847</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>849</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>850</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>851</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>852</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>854</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>856</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>857</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>858</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>859</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>860</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>861</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>862</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>863</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>866</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>868</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>869</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>870</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>871</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>872</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>873</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>874</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>876</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>878</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>879</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>880</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>881</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>882</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>883</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>884</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>885</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>886</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>887</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>888</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>889</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>890</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>891</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>892</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>893</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>894</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>895</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>896</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>897</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>898</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>899</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>900</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>901</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>902</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>903</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>904</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>905</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>906</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>907</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>908</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>909</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>910</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>911</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>912</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>913</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>914</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>915</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>916</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>917</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>918</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>919</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>920</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>921</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>922</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>923</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>924</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>925</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>926</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>927</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>928</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>929</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>930</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>931</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>932</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>933</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>934</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>935</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>936</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>937</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>938</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>939</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>940</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>941</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>942</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>943</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>944</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>945</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>946</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>948</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>949</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>950</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>951</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>952</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>953</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>964</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>965</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>978</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>991</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1003</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1004</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1005</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1006</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1007</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1008</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1009</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1010</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1011</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1012</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1013</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1014</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1015</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1016</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1017</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1018</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1019</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1020</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1021</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1022</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1023</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1024</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1025</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1026</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1027</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1028</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1029</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1030</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1031</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1032</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1033</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1034</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1035</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1036</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1037</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1038</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1039</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1040</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1041</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1042</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1043</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1044</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1045</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1046</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1047</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1048</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1049</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1050</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1051</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1052</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1053</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1054</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1055</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1056</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1057</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1058</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1059</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1060</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1061</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1062</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1063</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1064</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1065</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1066</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1067</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1068</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1069</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1070</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1071</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1072</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1073</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1074</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1075</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1076</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1077</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1078</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1079</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1080</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1081</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1082</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1083</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1084</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1085</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1086</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1087</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1088</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1089</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1090</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1091</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1092</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1093</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1094</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1095</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1096</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1097</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1098</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1099</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1100</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1101</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1102</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1103</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1104</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1105</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1106</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1107</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1108</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1109</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1110</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1111</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1112</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1113</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1114</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1115</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1116</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1117</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1118</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1119</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1120</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1121</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1122</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1123</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1124</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1125</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1126</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1127</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1128</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1129</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1130</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1131</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1132</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1133</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1134</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1135</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1136</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1137</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1138</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1139</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1140</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1141</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1142</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1143</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1144</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1145</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1146</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1147</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1148</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1149</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1150</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1151</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1152</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1153</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1154</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1155</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1156</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1157</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1158</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1159</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1160</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1161</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1162</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1163</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1164</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1165</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1166</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1167</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1168</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1169</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1170</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1171</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1172</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1173</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1174</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1175</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1176</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1177</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1178</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1179</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1180</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1181</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1182</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1183</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1184</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1185</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1186</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1187</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1188</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1189</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1190</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1191</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1192</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1193</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1194</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1195</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1196</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1197</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1198</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1199</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1200</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1201</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1202</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1203</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1204</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1205</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1206</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1207</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1208</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1209</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1210</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1211</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1212</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1213</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1214</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1215</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1216</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1217</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1218</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1219</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1220</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1221</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1222</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1223</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1224</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1225</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1226</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1227</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1228</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1229</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1230</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1231</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1232</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1233</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1234</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1235</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1236</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1237</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1238</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1239</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1240</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1241</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1242</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1243</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1244</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1245</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1246</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1247</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1248</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1249</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1250</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1251</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1252</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1253</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1254</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1255</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1256</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1257</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1258</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1259</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1260</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1261</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1262</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1263</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1264</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1265</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1266</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1267</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1268</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1269</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1270</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1271</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1272</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1273</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1274</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1275</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1276</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1277</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1278</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1279</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1280</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1281</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1282</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1283</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1284</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1285</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1286</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1287</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1288</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1289</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1290</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1291</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1292</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1293</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1294</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1295</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1296</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1297</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1298</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1299</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1300</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1301</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1302</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1303</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1304</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1305</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1306</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1308</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1309</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1310</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1311</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1312</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1313</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1314</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1315</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1316</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1318</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1319</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1320</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1321</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1322</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1323</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1324</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1325</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1326</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1327</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1328</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1329</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1330</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1331</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1332</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1333</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1334</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1335</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1336</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1337</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1338</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1339</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1341</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1343</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1344</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1345</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1346</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1347</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1348</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1349</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1350</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1351</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1352</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1354</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1355</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1356</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1357</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1358</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1359</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1360</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1361</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1362</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1363</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1364</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1365</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1366</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1367</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1368</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1369</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1370</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1371</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1372</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1373</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1376</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1377</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1378</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1379</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1380</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1381</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1382</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1383</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1384</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1385</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1386</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1387</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1388</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1389</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1390</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1391</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1392</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1393</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1394</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1395</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1396</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1397</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1398</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1399</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1400</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1401</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1402</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1403</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1405</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1407</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1408</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1409</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1410</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1411</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1412</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1413</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1414</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1415</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1416</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1418</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1419</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1420</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1421</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1423</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1424</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1425</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1426</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1427</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1428</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1429</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1430</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1431</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1432</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1433</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1434</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1435</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1437</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1438</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1439</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1440</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1441</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1442</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1443</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1445</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1446</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1447</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1448</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1449</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1450</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1451</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1452</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1453</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1454</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1455</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1456</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1458</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1459</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1460</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1461</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1462</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1463</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1464</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1465</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1466</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1467</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1468</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1469</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1470</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1471</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1472</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1473</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1474</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1475</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1477</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1478</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1479</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1480</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1481</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1482</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1483</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1484</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1485</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1486</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1487</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1488</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1489</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1490</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1491</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1492</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1493</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1494</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1495</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1496</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1497</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1498</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1499</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1500</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1501</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1502</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1503</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1504</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1505</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1506</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1507</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1508</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1509</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1510</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1512</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1513</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1514</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1515</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1516</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1517</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1518</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1519</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1520</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1521</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1522</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1523</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1524</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1525</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1526</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1527</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1528</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1529</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1530</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1531</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1532</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1534</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1535</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1536</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1537</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1538</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1539</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1540</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1541</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1542</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1546</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1547</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1548</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1549</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1550</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1551</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1552</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1553</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1554</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1555</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1556</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1557</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1559</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1560</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1562</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1563</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1564</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1566</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1567</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1568</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1569</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1570</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1571</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1572</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1573</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1574</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1575</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1576</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1577</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1578</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1579</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1580</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1581</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1582</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1583</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1584</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1585</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1586</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1587</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1588</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1589</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1590</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1591</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1592</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1593</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1594</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1595</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1596</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1597</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1598</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1599</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1600</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1601</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1603</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1604</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1605</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1606</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1607</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1609</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1610</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1612</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1615</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1616</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1617</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1619</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1620</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1622</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1623</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1624</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1625</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1626</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1627</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1628</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1629</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1630</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1631</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1632</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1634</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1635</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1636</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1637</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1638</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1639</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1640</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1641</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1642</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1643</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1645</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1646</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1647</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1648</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1649</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1651</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1652</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1653</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1654</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1655</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1656</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1657</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1658</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1659</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1660</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1661</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1662</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1663</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1664</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1665</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1667</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1668</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1669</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1670</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1671</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1672</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1673</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1674</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1675</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1676</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1677</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1678</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1679</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1680</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1681</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1682</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1683</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1684</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1685</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1686</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1687</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1688</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1689</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1690</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1691</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1692</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1693</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1694</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1695</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1696</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1697</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1699</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1700</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1701</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1702</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1703</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1704</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1705</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1707</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1708</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1709</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1710</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1711</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1712</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1713</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1714</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1715</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1716</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1717</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1718</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1719</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1720</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1722</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1723</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1724</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1725</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1726</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1727</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1729</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1730</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1731</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1732</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1733</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1734</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1735</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1736</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1737</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1738</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1739</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1740</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1741</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1742</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1743</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1744</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1745</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1746</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1747</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1748</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1749</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1750</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1751</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1752</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1753</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1754</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1755</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1756</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1757</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1758</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1759</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1760</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1761</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1763</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1764</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1766</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1767</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1768</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1769</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1770</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1771</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1772</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1773</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1774</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1775</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1776</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1777</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1780</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1781</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1782</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1783</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1784</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1785</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1786</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1787</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1788</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1790</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1791</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1792</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1793</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1794</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1795</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1796</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1797</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1798</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1799</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1801</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1802</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1803</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1805</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1806</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1807</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1808</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1811</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1812</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1813</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1814</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1815</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1816</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1817</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1818</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1819</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1820</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1821</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1822</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1823</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1824</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1825</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1826</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1827</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1828</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1829</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1830</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1831</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1832</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1833</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1835</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1836</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1837</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1838</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1839</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1840</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1841</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1842</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1843</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1844</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1845</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1847</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1849</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1850</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1851</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1852</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1854</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1856</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1857</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1858</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1859</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1860</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1861</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1862</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1863</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1866</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1868</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1869</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1870</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1871</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1872</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1873</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1874</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1876</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1878</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1879</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1880</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1881</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1882</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1883</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1884</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1885</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1886</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1887</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1888</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1889</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1890</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1891</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1892</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1893</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1894</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1895</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1896</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1897</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1898</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1899</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1900</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1901</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1902</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1903</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1904</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1905</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1906</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1907</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1908</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1909</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1910</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1911</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1912</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1913</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1914</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1915</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1916</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1917</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1918</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1919</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1920</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1921</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1922</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1923</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1924</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1925</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1926</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1927</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1928</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1929</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1930</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1931</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1932</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1933</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1934</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1935</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1936</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1937</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1938</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1939</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1940</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1941</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1942</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1943</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1944</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1945</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1946</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1948</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1949</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1950</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1951</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1952</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1953</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1964</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1978</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1991</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2003</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2004</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2005</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2006</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2007</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2008</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2009</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2010</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2011</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2012</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2013</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2014</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2015</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Analog Voyager</string>
-			<key>Playlist ID</key><integer>7297</integer>
-			<key>Playlist Persistent ID</key><string>D03DAC75D3D46A1E</string>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>2016</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Audiobooks</string>
-			<key>Playlist ID</key><integer>5503</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DD3</string>
-			<key>Visible</key><false/>
-			<key>All Items</key><true/>
-			<key>Audiobooks</key><true/>
-		</dict>
-		<dict>
-			<key>Name</key><string>Groove Salad on SomaFM</string>
-			<key>Playlist ID</key><integer>7244</integer>
-			<key>Playlist Persistent ID</key><string>B16FC77EA12CDEA3</string>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>1965</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Movies</string>
-			<key>Playlist ID</key><integer>5497</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DD1</string>
-			<key>Visible</key><false/>
-			<key>All Items</key><true/>
-			<key>Movies</key><true/>
-		</dict>
-		<dict>
-			<key>Name</key><string>Music</string>
-			<key>Playlist ID</key><integer>3773</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DD0</string>
-			<key>All Items</key><true/>
-			<key>Music</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>316</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>719</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>788</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>792</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>794</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>797</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>649</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1202</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1203</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1236</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1411</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1421</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1802</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1805</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1807</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1835</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>303</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>305</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>559</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>311</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1559</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1563</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1569</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1573</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1597</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1600</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1606</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1609</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1615</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1616</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>552</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1620</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>708</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>716</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>749</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>772</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>777</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>787</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>790</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>795</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>655</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>813</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>858</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>620</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>915</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>619</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1137</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1138</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1192</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1205</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1260</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1261</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1383</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1550</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1743</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>548</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1812</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1826</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1840</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1913</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>484</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>446</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>497</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>308</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>315</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>337</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>475</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>377</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>382</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>391</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1557</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1575</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1576</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1582</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1588</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>541</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>550</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1625</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1627</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1628</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1630</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1640</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1660</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1663</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>714</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>737</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>740</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>743</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>745</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>752</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>768</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>783</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>805</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>819</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>822</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1674</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>478</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>854</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>861</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>881</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>625</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>890</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>900</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>910</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>911</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>923</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>927</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>932</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1026</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1061</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1085</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1093</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1100</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1111</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1139</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1157</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1169</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1193</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1195</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1204</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1206</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1209</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>549</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1240</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1249</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1252</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1259</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1275</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1291</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>638</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1356</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1367</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1468</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1474</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1475</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1496</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1514</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1515</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1532</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>462</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1718</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1723</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1724</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>510</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1801</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1808</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1821</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1847</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1849</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1904</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1906</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1914</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1917</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1922</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1933</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1941</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1953</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>468</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>300</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>491</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>513</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>519</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>310</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>587</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>371</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>471</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>376</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1566</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1567</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1578</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1612</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1638</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1641</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>525</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>583</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>466</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>499</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>710</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>720</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>744</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>746</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>747</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>748</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>755</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>756</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>759</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>796</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>802</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>467</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>489</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>841</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1680</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>847</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>852</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>871</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>421</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>918</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>941</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>943</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>948</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1030</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1032</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>469</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1078</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1116</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1127</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1156</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1159</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1164</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1181</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1186</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1191</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1218</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1230</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1267</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1271</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1272</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1314</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1366</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1405</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>605</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1699</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1420</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1440</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1448</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1479</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1482</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1492</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>656</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>463</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1798</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1813</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>651</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>584</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1879</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1886</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1902</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1910</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1936</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>575</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>294</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>630</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>412</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>295</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>296</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>297</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>298</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>299</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>301</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>302</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>304</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>639</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>492</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>493</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>494</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>495</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>496</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>512</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>514</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>515</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>516</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>517</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>518</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>520</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>521</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>522</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>523</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>524</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>617</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>306</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>309</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>312</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>313</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>314</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>318</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>319</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>320</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>321</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>322</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>323</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>324</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>325</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>326</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>327</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>328</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>329</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>330</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>331</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>332</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>333</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>334</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>335</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>336</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>338</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>339</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>341</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>343</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>344</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>345</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>346</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>347</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>348</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>349</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>350</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>351</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>352</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>354</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>355</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>356</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1553</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1554</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>440</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>357</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1555</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>622</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>420</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>423</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>567</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>358</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>570</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>359</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>592</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>360</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>361</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>362</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>363</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>364</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>365</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>366</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>367</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>368</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>369</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>370</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>372</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>373</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>413</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>576</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>563</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>597</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>425</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>433</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>631</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>571</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>378</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>379</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>380</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>381</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>383</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>384</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>385</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>386</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>387</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>388</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>389</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>390</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>392</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>393</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>394</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>395</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>396</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>397</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>398</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>399</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>400</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>401</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>402</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>403</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>601</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>556</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>594</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>405</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>582</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1556</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1560</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1562</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1564</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1568</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1570</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1571</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1572</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1574</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1577</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1579</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1580</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1581</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1583</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1584</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1585</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1586</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1587</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1589</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1590</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1591</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1592</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1593</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1594</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1595</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1596</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1598</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1599</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>652</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>645</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>634</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>577</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>409</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>407</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>616</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>551</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>430</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>646</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1601</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1603</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1604</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1605</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1607</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1610</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1617</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>546</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>547</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>553</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1619</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1622</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1623</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1624</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1626</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1629</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1631</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1632</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1634</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1635</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1636</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1637</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1639</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1642</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1643</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1645</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1646</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1647</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1648</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1649</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1651</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1652</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1653</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1654</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1655</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1656</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1657</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1658</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1659</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1661</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1662</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1664</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1665</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>598</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1667</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>632</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>642</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>532</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>659</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>660</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>661</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>662</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>663</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>664</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>665</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>667</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>668</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>669</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>670</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>671</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>672</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>673</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>674</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>675</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>676</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>677</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>678</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>679</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>680</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>681</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>682</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>683</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>615</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>427</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>684</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>647</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>685</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>435</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>686</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>687</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>688</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>689</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>690</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>691</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>692</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>693</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1668</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>694</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>593</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>695</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>696</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>697</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>627</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>529</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>599</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>490</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>699</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>542</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>477</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>700</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1669</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1670</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1671</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>701</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>702</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>703</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>704</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>705</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>707</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>709</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>711</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>712</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>713</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>715</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>717</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>718</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>722</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>723</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>527</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>724</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>725</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>726</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>727</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>729</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>730</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>731</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>732</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>733</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>734</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>735</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>736</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>738</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>739</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>741</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>742</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>750</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>751</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>753</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>754</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>757</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>758</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>760</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>761</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>763</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>764</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>766</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>767</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>769</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>770</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>771</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>773</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>774</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>775</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>776</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>780</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>781</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>782</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>784</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>785</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>786</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>791</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>793</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>798</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>799</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>801</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>803</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>806</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>807</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>808</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>509</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>811</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>812</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>648</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>653</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>442</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>814</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>815</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>816</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>817</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>818</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>820</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>821</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>823</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>824</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>825</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>826</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>827</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>828</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>829</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>595</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>830</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>831</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>832</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>833</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>835</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>836</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>837</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>838</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>839</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>840</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>842</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>843</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>560</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1672</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1673</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1675</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1676</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1677</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1678</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1679</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1681</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1682</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1683</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1684</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1685</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1686</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1687</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1688</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1689</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1690</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1691</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1692</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1693</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1694</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1695</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1696</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1697</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>844</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>845</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>849</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>850</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>411</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>851</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>414</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>856</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>857</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>859</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>860</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>862</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>863</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>866</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>868</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>869</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>870</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>872</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>873</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>874</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>876</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>415</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>636</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>878</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>879</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>434</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>416</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>880</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>882</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>883</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>884</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>885</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>886</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>887</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>888</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>889</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>438</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>437</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>891</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>892</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>893</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>894</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>895</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>896</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>897</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>898</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>899</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>901</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>902</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>903</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>904</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>905</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>906</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>907</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>908</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>909</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>912</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>913</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>914</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>916</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>917</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>919</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>920</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>921</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>922</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>501</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>481</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>924</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>925</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>926</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>928</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>929</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>930</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>931</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>933</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>934</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>935</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>936</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>937</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>938</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>939</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>940</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>942</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>944</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>945</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>946</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>949</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>950</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>951</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>539</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>952</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>953</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>507</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>964</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>965</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>978</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>991</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>480</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1003</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1004</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1005</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>658</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1006</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1007</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1008</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1009</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1010</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1011</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1012</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1013</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1014</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1015</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1016</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1017</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1018</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1019</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1020</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1021</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1022</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1023</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1024</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1025</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1027</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1028</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1029</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1031</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1033</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1034</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1035</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1036</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1037</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1038</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1039</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1040</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1041</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>609</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1042</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1043</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1044</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1045</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1046</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1047</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1048</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1049</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1050</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1051</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1052</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1053</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1054</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1055</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1056</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1057</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>581</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1058</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>540</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>505</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1059</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1060</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>470</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1062</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>526</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1063</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1064</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1065</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1066</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1067</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1068</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1069</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1070</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1071</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>555</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>447</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1072</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>590</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1073</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1074</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1075</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1076</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1077</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1079</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1080</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1081</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1082</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1083</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1084</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1086</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1087</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1088</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1089</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1090</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1091</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1092</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1094</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1095</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1096</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1097</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1098</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1099</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1101</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1102</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1103</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1104</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1105</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>482</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1106</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1107</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1108</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1109</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1110</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1112</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1113</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1114</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1115</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1117</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1118</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1119</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1120</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1121</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1122</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1123</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1124</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1125</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1126</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1128</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1129</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1130</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1131</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1132</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1133</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>506</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1134</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1135</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1136</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1140</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1141</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1142</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1143</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1144</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1145</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>445</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>635</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>574</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1991</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1146</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>641</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1147</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1148</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1149</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1150</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1151</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1152</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1153</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1154</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1155</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>530</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1158</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1160</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1161</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1162</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1163</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1165</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1166</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1167</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1168</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1170</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1171</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1172</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1173</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1174</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1175</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1176</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1177</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1178</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1179</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>441</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>626</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>604</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>443</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1180</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1182</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1183</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1184</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1185</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1187</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1188</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1189</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1190</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>572</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>502</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2014</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2006</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2009</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2011</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2004</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2013</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2012</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2007</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2005</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2015</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2003</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2008</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2010</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>432</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>534</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>535</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>474</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>424</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1194</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1196</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1197</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1198</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1199</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1200</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1201</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>472</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1207</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1208</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1210</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1211</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1212</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1213</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>657</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1214</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1215</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1216</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1217</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1219</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1220</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1221</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1222</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1223</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1224</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1225</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1226</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1227</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1228</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1229</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1231</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1232</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1233</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1234</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1235</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>573</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>586</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>606</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>610</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>629</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1237</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>607</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1238</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1239</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1241</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1242</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1243</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1244</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1245</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1246</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1247</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1248</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1250</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>554</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1251</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1253</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1254</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1255</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1256</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1257</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1258</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1262</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1263</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1264</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1265</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1266</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1268</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1269</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1270</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1273</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1274</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1276</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1277</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1278</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1279</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1280</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1281</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1282</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1283</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1284</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1285</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1286</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1287</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1288</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1289</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1290</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1292</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1293</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1294</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1295</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1296</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1297</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1298</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1299</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1300</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1301</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1302</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1303</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1304</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1305</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1306</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1308</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1309</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1310</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1311</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1312</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1313</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1315</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1316</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1318</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1319</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1320</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1321</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1322</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1323</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1324</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1325</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1326</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1327</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1328</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1329</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1330</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1331</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1332</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1333</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1334</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1335</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1336</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1337</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1338</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1339</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1341</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1343</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1344</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1345</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1346</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1347</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1348</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1349</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1350</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1351</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1352</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1354</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1355</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1357</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1358</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1359</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1360</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1361</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1362</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1363</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1364</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1365</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1368</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1369</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1370</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1371</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1372</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1373</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1376</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1377</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1378</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1379</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1380</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1381</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1382</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1384</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1385</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1386</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1387</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1388</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1389</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1390</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1391</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1392</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1393</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1394</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1395</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1396</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1397</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1398</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>596</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1399</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1400</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1401</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1402</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1403</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1407</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1408</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1409</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>612</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1410</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>579</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1700</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1701</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1702</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1703</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1704</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1705</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1707</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1708</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1709</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1710</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>488</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1711</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>654</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1412</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1413</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1414</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1415</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1416</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1418</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1419</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>585</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>473</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>486</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1423</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1424</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1425</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1426</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1427</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1428</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1429</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1430</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1431</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1432</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1433</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1434</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1435</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>538</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1437</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1438</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1439</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1441</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1442</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1443</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1445</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1446</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1447</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1449</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1450</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1451</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1452</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1453</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1454</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1455</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1456</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1458</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1459</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1460</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1461</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1462</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1463</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1464</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1465</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1466</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1467</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>503</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>537</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1469</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1470</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1471</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1472</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1473</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1477</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1478</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>564</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1480</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1481</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1483</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1484</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1485</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1486</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1487</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1488</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1489</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1490</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1491</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>591</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1493</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1494</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1495</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1497</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1498</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1499</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1500</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1501</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1502</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1503</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1504</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1505</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1506</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1507</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1508</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1509</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1510</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>603</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>580</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>498</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>508</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>589</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>562</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>431</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>557</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>410</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1512</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>600</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1513</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>408</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1516</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1517</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1518</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1519</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1520</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1521</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1522</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1523</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1524</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1525</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1526</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1527</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1528</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1529</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1530</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>504</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1531</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>566</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>637</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>428</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>429</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1534</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1535</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1536</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1537</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1538</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1539</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1540</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1541</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1542</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>460</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>461</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>464</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>465</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>487</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1546</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1547</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1548</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1549</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1551</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1552</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1712</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1713</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1714</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1715</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1716</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1717</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1719</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1720</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1722</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1725</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1726</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1727</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1729</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1730</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1731</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1732</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1733</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1734</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1735</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1736</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1737</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1738</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1739</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1740</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1741</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>643</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1742</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1744</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1745</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1746</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1747</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1748</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1749</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1750</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1751</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1752</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1753</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1754</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>531</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>536</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1755</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>485</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1756</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>578</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1757</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1758</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1759</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1760</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1761</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1763</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1764</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1766</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1767</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1768</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1769</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1770</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1771</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1772</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1773</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1774</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1775</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1776</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1777</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1780</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1781</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1782</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1783</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1784</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1785</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1786</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1787</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1788</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1790</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1791</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1792</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1793</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1794</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1795</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1796</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1797</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>426</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>569</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1799</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1803</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1806</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1811</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1814</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1815</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1816</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1817</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1818</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1819</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1820</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1822</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1823</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1824</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1825</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>479</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1827</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1828</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1829</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1830</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1831</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>528</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1832</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1833</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1836</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1837</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1838</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1839</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1841</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1842</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1843</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1844</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1845</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1850</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1851</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1852</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>500</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1854</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>419</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1856</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1857</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1858</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1859</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1860</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1861</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1862</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1863</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1866</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1868</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1869</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1870</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1871</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1872</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1873</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1874</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1876</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>568</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>448</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>449</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>450</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>451</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>452</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>453</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>454</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>455</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>456</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>458</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>459</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1878</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1880</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1881</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1882</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1883</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1884</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1885</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1887</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1888</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1889</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1890</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1891</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>588</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>439</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1892</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1893</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1894</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1895</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1896</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1897</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1898</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1899</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1900</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1901</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1903</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>623</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>624</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1964</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>628</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1905</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1907</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1908</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1909</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1911</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1912</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1915</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1916</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1918</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1919</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1920</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1921</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1923</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1924</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1925</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1926</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1927</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1928</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1929</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1930</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1931</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1932</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1934</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1935</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1937</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1938</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>418</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>640</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1939</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1940</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1942</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1943</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1944</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1945</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1946</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1948</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1949</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1950</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1951</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1952</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>483</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1978</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>New for Evaluation</string>
-			<key>Playlist ID</key><integer>7248</integer>
-			<key>Playlist Persistent ID</key><string>730096378DEDF386</string>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>1954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1991</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Party Shuffle</string>
-			<key>Playlist ID</key><integer>3742</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DCD</string>
-			<key>Party Shuffle</key><true/>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>448</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>489</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>802</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1117</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Podcasts</string>
-			<key>Playlist ID</key><integer>3766</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DCF</string>
-			<key>Visible</key><false/>
-			<key>Podcasts</key><true/>
-			<key>All Items</key><true/>
-		</dict>
-		<dict>
-			<key>Name</key><string>Purchased</string>
-			<key>Playlist ID</key><integer>5506</integer>
-			<key>Playlist Persistent ID</key><string>87139F8602B84FA1</string>
-			<key>Purchased Music</key><true/>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>1954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1991</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>radioioAmbient</string>
-			<key>Playlist ID</key><integer>7301</integer>
-			<key>Playlist Persistent ID</key><string>D03DAC75D3D46A22</string>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>2017</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>TV Shows</string>
-			<key>Playlist ID</key><integer>5500</integer>
-			<key>Playlist Persistent ID</key><string>C0BFB3784DAA9DD2</string>
-			<key>Visible</key><false/>
-			<key>All Items</key><true/>
-			<key>TV Shows</key><true/>
-		</dict>
-		<dict>
-			<key>Name</key><string>Two Stars</string>
-			<key>Playlist ID</key><integer>5555</integer>
-			<key>Playlist Persistent ID</key><string>8D7DB9C4CF0A5E54</string>
-			<key>All Items</key><true/>
-			<key>Smart Info</key>
-			<data>
-			AQEAAwAAAAIAAAAZAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAA==
-			</data>
-			<key>Smart Criteria</key>
-			<data>
-			U0xzdAABAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAAAQAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAACcAAAAAAAAAAAAAAAAAAAAB
-			AAAAAAAAACcAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-			</data>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>305</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1805</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>740</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1600</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>932</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>768</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>708</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>772</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1061</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1261</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1259</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1835</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1192</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>797</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>792</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>745</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>649</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>475</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>620</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>805</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>777</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>854</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1111</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1849</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1291</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1630</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>484</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1933</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1563</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1100</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1628</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1620</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>927</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>308</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1609</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1468</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1260</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1640</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>382</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>391</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>752</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>822</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1575</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>788</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>303</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>915</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>749</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1475</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>446</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>559</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>625</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>638</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>655</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1474</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>794</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1674</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1723</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>478</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>497</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1559</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1616</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>552</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1496</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1663</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>548</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1922</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1718</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1904</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1615</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1206</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1202</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>719</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1569</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1606</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1193</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1252</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1356</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>550</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>923</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1367</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>315</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1169</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1953</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1383</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1203</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>890</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1724</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1275</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1588</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1204</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1914</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1209</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>783</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1660</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>861</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1195</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1139</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>910</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>337</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1808</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>900</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1847</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1743</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1532</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>795</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1840</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1236</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1205</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>881</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1514</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1137</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>716</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1801</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1582</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1913</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1557</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1812</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1802</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1906</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1157</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1917</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>737</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>819</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1597</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>743</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>549</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1807</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>911</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>462</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>311</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1627</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1821</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1026</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>541</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1421</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1826</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1085</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>787</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1576</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1550</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1240</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1941</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>813</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1138</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1411</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1515</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1960</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>790</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1967</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>858</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1093</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1573</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1625</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>377</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>619</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>316</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1249</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>714</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>510</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Unrated Songs</string>
-			<key>Playlist ID</key><integer>5856</integer>
-			<key>Playlist Persistent ID</key><string>8D7DB9C4CF0A5E56</string>
-			<key>All Items</key><true/>
-			<key>Smart Info</key>
-			<data>
-			AQEAAwAAAAIAAAAZAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAA==
-			</data>
-			<key>Smart Criteria</key>
-			<data>
-			U0xzdAABAAEAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABkAAABAAAAAAAAAAAAAAAAAAAAAAAAA
-			AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAABEAAAAAAAAABQAAAAAAAAAAAAAAAAAAAAB
-			AAAAAAAAABQAAAAAAAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAAAAAAAAAAA=
-			</data>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>1956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1957</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>575</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>294</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>630</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>412</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>295</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>296</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>297</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>298</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>299</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>301</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>302</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>304</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>639</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>492</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>493</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>494</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>495</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>496</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>512</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>514</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>515</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>516</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>517</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>518</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>520</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>521</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>522</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>523</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>617</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>306</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>309</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>312</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>313</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>314</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1995</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>318</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>319</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>320</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>321</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>322</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>323</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>324</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>325</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>326</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>327</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>328</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>329</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>330</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>331</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>332</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>333</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>334</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>335</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>336</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>338</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>339</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>341</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>343</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>344</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>345</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>346</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>347</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>348</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>349</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>350</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>351</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>352</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>354</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>355</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>356</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1553</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1554</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>440</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>357</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1555</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>622</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>420</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>423</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>567</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>358</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>570</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>359</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>592</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>360</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>361</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>362</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>363</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>364</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>365</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>366</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>367</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>368</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>369</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>370</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>372</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>373</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>413</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>576</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>563</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>425</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>433</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>631</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>571</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>378</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>379</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>380</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>381</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>383</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>384</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>385</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>386</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>387</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>388</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>389</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>390</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>392</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>393</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>394</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>395</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>396</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>397</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>398</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>399</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>400</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>401</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>403</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>601</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>556</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>594</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>405</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>582</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1556</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1560</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1562</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1564</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1568</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1570</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1572</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1574</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1577</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1579</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1580</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1581</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1583</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1584</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1585</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1586</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1587</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1589</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1590</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1591</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1592</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1593</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1594</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1595</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1596</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1598</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1599</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>652</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>645</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>634</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>577</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>409</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>407</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>616</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>551</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>430</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>646</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1601</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1603</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1604</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1605</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1607</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1610</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1617</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>546</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>547</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>553</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1619</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1622</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1623</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1624</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1626</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1629</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1631</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1632</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1633</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1634</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1635</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1636</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1637</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1639</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1642</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1643</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1645</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1646</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1647</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1648</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1649</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1651</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1652</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1653</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1654</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1655</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1656</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1657</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1658</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1659</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1661</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1662</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1664</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1665</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>598</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1667</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>632</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>642</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>532</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>659</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>660</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>661</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>662</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>663</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>664</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>665</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>667</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>668</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>669</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>670</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>671</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>672</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>673</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>674</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>675</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>676</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>677</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>678</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>679</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>680</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>681</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>682</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>683</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>615</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>427</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>684</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>647</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>685</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>435</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>686</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>687</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>688</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>689</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>690</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>691</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>692</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>693</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1668</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>694</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>593</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>695</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>696</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>697</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>627</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>529</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>599</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>490</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>699</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>542</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>477</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>700</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1669</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1670</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1671</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>701</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>702</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>703</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>704</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>705</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>707</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>709</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>711</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>712</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>713</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>715</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>717</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>718</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>722</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>723</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>527</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>724</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>725</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>726</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>727</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>729</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>730</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>731</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>732</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>733</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>734</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>735</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>736</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>738</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>739</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>741</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>742</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>750</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>751</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>753</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>754</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>757</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>758</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>760</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>761</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>763</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>764</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>766</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>767</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>769</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>770</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>771</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>774</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>775</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>776</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>780</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>781</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>782</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>784</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>785</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>786</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>791</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>793</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>798</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>799</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>801</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>803</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>806</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>807</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>808</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>509</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>811</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>812</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>648</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>442</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>814</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>815</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>816</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>817</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>818</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>820</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>821</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>823</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>824</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>825</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>826</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>827</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>828</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>829</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>595</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>830</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>831</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>832</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>833</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>835</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>836</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>837</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>838</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>839</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>840</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>842</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>560</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1672</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1673</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1675</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1676</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1677</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1678</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1679</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1681</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1682</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1683</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1684</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1685</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1686</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1687</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1688</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1689</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1690</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1691</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1692</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1693</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1694</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1695</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1696</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1697</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>844</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>845</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>849</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>850</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>411</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>851</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>414</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>856</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>857</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>859</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>860</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>862</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>863</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>866</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>868</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>869</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>870</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>872</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>873</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>874</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>876</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>415</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>636</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1974</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1975</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>878</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>879</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>434</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>416</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>880</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>882</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>883</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>884</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>885</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>886</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>887</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>888</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>889</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>438</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>437</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>891</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>892</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>893</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>894</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>895</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>896</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>897</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>898</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>899</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>901</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>902</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>903</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>904</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>905</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>906</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>907</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>908</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>909</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>912</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>913</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>914</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>916</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>917</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>919</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>920</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>921</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>922</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>501</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>481</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>924</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>925</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>926</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>928</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>929</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>930</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>931</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>933</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>934</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>935</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>936</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>937</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>938</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>939</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>940</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>942</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>944</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>945</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>946</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>949</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>950</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>951</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>539</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>952</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>953</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>507</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>954</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>956</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>959</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>961</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>962</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>963</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>964</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>965</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>966</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>968</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>969</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>970</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>972</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>973</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>976</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>977</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>978</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>982</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>989</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>991</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>992</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>993</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>994</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>480</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>996</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>997</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>998</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>999</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1000</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1001</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1002</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1003</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1004</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1005</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>658</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1006</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1007</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1008</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1009</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1010</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1011</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1012</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1013</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1014</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1015</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1016</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1017</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1018</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1019</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1020</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1021</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1022</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1023</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1024</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1025</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1027</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1028</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1029</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1031</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1033</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1034</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1035</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1036</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1037</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1038</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1039</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1040</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1041</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>609</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1042</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1044</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1045</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1046</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1047</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1048</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1049</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1050</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1051</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1052</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1053</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1054</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1055</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1056</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>581</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1058</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>540</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>505</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1059</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1060</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>470</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1062</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>526</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1063</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1064</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1065</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1066</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1067</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1068</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1069</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1070</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1071</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>555</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>447</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1072</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>590</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1073</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1074</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1075</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1076</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1077</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1079</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1080</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1081</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1082</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1083</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1084</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1086</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1087</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1088</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1089</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1090</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1091</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1092</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1094</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1096</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1097</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1098</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1099</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1101</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1102</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1103</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1104</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1105</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>482</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1106</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1107</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1108</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1109</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1110</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1112</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1113</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1114</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1115</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1117</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1118</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1119</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1120</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1121</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1122</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1123</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1124</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1125</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1126</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1128</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1129</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1130</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1131</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1132</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1133</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>506</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1134</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1135</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1136</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1140</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1141</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1142</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1143</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1144</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1145</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>445</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>635</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>574</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1979</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1980</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1981</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1983</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1984</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1985</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1988</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1991</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1146</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>641</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1147</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1148</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1149</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1150</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1151</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1152</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1153</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1154</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1155</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>530</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1158</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1160</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1161</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1162</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1163</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1165</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1166</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1167</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1168</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1170</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1171</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1172</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1173</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1174</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1175</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1176</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1177</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1178</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1179</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>441</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>626</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>604</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>443</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1182</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1183</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1184</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1185</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1187</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1188</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1189</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1190</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>572</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>502</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2014</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2006</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2009</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2011</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2004</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2013</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2012</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2007</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2005</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2015</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2003</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2008</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>2010</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>432</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>534</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>535</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>474</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>424</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1196</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1197</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1198</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>472</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1207</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1208</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1210</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1211</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1212</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>657</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1214</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1215</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1216</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1217</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1219</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1220</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1221</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1222</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1223</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1224</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1225</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1226</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1227</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1228</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1229</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1231</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1232</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1233</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1234</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1235</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>573</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>586</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>606</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>610</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>629</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1237</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>607</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1238</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1239</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1241</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1242</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1243</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1244</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1245</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1246</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1247</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1248</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1250</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>644</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>554</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1251</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1253</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1254</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1255</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1256</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1257</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1258</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1262</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1263</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1264</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1265</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1266</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1268</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1269</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1270</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1273</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1274</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1276</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1277</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1278</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1279</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1280</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1281</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1282</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1283</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1284</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1285</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1286</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1287</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1288</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1289</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1290</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1292</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1293</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1294</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1295</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1296</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1297</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1298</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1299</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1300</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1301</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1302</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1303</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1304</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1305</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1306</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1308</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1309</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1310</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1311</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1312</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1313</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1315</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1316</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1317</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1318</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1319</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1320</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1321</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1322</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1323</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1324</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1325</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1326</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1327</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1328</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1329</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1330</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1331</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1332</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1333</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1334</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1335</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1336</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1337</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1338</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1339</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1340</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1341</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1342</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1343</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1344</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1345</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1346</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1347</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1348</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1349</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1350</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1351</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1352</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1353</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1354</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1355</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1357</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1358</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1359</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1360</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1361</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1362</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1363</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1364</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1365</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1368</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1369</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1370</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1371</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1372</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1373</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1374</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1376</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1377</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1378</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1379</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1380</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1381</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1382</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1384</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1385</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1386</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1387</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1388</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1389</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1390</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1391</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1392</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1393</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1394</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1395</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1396</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1398</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>596</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1399</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1400</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1401</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1402</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1403</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1406</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1407</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1408</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1409</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>612</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1410</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>579</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1700</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1701</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1702</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1703</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1704</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1705</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1706</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1707</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1708</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1709</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>488</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1711</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>654</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1412</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1413</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1414</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1415</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1416</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1417</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1418</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1419</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>585</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>473</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>486</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1423</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1424</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1425</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1426</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1427</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1428</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1429</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1430</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1432</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1433</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1434</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1435</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1436</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>538</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1437</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1438</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1439</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1441</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1442</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1443</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1445</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1446</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1447</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1449</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1450</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1451</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1452</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1453</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1454</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1455</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1456</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1457</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1458</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1459</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1460</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1461</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1462</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1463</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1464</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1465</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1466</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1467</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>503</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>537</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1469</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1470</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1471</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1472</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1473</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1477</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1478</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>564</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1480</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1481</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1483</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1484</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1485</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1486</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1487</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1488</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1489</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1490</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1491</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>591</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1493</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1494</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1495</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1497</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1498</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1499</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1500</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1501</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1502</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1503</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1504</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1505</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1506</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1507</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1508</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1509</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1510</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>603</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>580</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>498</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>508</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>589</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>562</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>431</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>557</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>410</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1512</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>600</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1513</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>408</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1516</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1517</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1518</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1519</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1520</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1521</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1522</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1523</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1524</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1525</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1526</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1527</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1528</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1529</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1530</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>504</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1531</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>566</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>637</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>429</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1533</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1534</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1535</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1536</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1537</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1538</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1539</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1540</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1541</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1542</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>460</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>461</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>464</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>465</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>487</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1546</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1547</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1548</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1549</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1551</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1552</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1712</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1713</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1714</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1715</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1716</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1717</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1719</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1720</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1722</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1725</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1726</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1727</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1729</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1730</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1731</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1732</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1733</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1734</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1735</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1736</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1737</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1738</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1739</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1740</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1741</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>643</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1742</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1744</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1745</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1746</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1747</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1748</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1749</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1750</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1751</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1752</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1753</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1754</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>531</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>536</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1755</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>485</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1756</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>578</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1757</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1758</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1759</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1760</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1761</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1763</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1764</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1766</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1767</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1768</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1769</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1770</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1771</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1772</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1773</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1774</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1775</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1776</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1777</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1780</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1781</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1782</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1783</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1784</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1785</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1786</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1787</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1788</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1790</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1791</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1792</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1793</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1794</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1795</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1796</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1797</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>426</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>569</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1799</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1803</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1806</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1811</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1814</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1815</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1816</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1817</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1818</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1819</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1820</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1822</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1823</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1824</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1825</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>479</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1827</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1828</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1829</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1830</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1831</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>528</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1832</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1833</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1836</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1837</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1838</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1839</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1841</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1842</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1843</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1844</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1845</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1850</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1851</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1852</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>500</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1854</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>419</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1856</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1857</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1858</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1859</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1860</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1861</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1862</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1863</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1864</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1866</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1868</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1869</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1870</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1871</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1872</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1873</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1874</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1876</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>448</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>449</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>450</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>451</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>452</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>453</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>454</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>455</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>456</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>459</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1878</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1880</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1881</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1882</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1883</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1884</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1885</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1887</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1888</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1889</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1890</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1891</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>588</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>439</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1892</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1893</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1894</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1895</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1896</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1897</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1898</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1899</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1900</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1901</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1903</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>623</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>624</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1964</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>628</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1905</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1907</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1908</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1909</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1911</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1912</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1915</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1916</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1918</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1919</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1920</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1921</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1923</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1924</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1925</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1926</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1927</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1928</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1929</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1930</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1931</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1932</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1934</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1935</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1937</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1938</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>418</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>640</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1939</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1940</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1942</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1943</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1944</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1945</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1946</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1948</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1949</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1950</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1951</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1952</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>483</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1978</integer>
-				</dict>
-			</array>
-		</dict>
-		<dict>
-			<key>Name</key><string>Workout Mix</string>
-			<key>Playlist ID</key><integer>5783</integer>
-			<key>Playlist Persistent ID</key><string>8D7DB9C4CF0A5E55</string>
-			<key>All Items</key><true/>
-			<key>Playlist Items</key>
-			<array>
-				<dict>
-					<key>Track ID</key><integer>1511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>779</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>789</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>853</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1809</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1608</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>404</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1855</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1192</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1444</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1800</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>728</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1990</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1987</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1191</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>721</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1260</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1810</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>476</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>618</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>544</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>375</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>834</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1203</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1558</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>466</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>765</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>499</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1181</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1955</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>611</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>602</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1186</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>762</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1986</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1698</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>650</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>867</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>947</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1621</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1561</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>778</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1666</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1865</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1202</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1848</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1804</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>877</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>545</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1847</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1204</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1205</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>511</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>469</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>543</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1958</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1879</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1422</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1252</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1875</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>613</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>307</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1492</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1565</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>846</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1971</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>1614</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>584</integer>
-				</dict>
-				<dict>
-					<key>Track ID</key><integer>303</integer>
-				</dict>
-			</array>
-		</dict>
-	</array>
-</dict>
-</plist>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/unavailablefile.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/unavailablefile.txt
deleted file mode 100644
index 3ced7b7..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app1/unavailablefile.txt
+++ /dev/null
@@ -1 +0,0 @@
-This file should not be available to clients.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/components/SimpleLayout.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/components/SimpleLayout.tml
deleted file mode 100644
index 7304486..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/components/SimpleLayout.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <head>
-      <title>Foo</title>
-  </head>
-  <body>
-      <t:body />
-  </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/DTDFromComponent.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/DTDFromComponent.tml
deleted file mode 100644
index fb708e8..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/DTDFromComponent.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html t:type="SimpleLayout" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    flubber
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/DTDFromPage.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/DTDFromPage.tml
deleted file mode 100644
index 152eeca..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/DTDFromPage.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-<html>
-    <head>
-        <title>
-            DTDFromPage
-        </title>
-    </head>
-    <body>
-        slagheap
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/MultipleDTD.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/MultipleDTD.tml
deleted file mode 100644
index 76c3267..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/MultipleDTD.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
- "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-<html t:type="SimpleLayout" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  blubber
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/NoDTD.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/NoDTD.tml
deleted file mode 100644
index 762eda2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/NoDTD.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html>
-    <head>
-        <title>
-            NoDTD
-        </title>
-    </head>
-    <body>
-        no_dtd_loser
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/ResultPageForActionLink.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/ResultPageForActionLink.tml
deleted file mode 100644
index 72fc7f2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/ResultPageForActionLink.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-<p>

-You chose: ${number}

-</p>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForASO.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForASO.tml
deleted file mode 100644
index 42ef2a1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForASO.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-FooString is: ${fooString}
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForActionLink.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForActionLink.tml
deleted file mode 100644
index 65a66ab..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForActionLink.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    <p>

-        <a t:id="link1" t:type="ActionLink" context="123" t:mixins="forceid">abc</a>

-    </p>

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForActionLinkWithStream.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForActionLinkWithStream.tml
deleted file mode 100644
index 4e363e3..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForActionLinkWithStream.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    <p>

-        <a id="mylink" t:type="ActionLink">Click me</a>

-    </p>

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForAsset.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForAsset.tml
deleted file mode 100644
index 83f2ce1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForAsset.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <head>
-    <link rel="stylesheet" href="${stylePath}" />
-  </head>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForForm.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForForm.tml
deleted file mode 100644
index fe3c9c6..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForForm.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-<p><t:form t:id="form1">

-	<input t:type="TextField" t:id="t1" value="value" size="50"/>

-</t:form></p>

-<p>

-	You entered: ${value}.

-</p>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHead.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHead.tml
deleted file mode 100644
index cfa3c4c..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHead.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-<head>
-	<title>testing</title>
-</head>
-<body>
-<p>OK!</p>
-</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHttpError.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHttpError.tml
deleted file mode 100644
index 137c736..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHttpError.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-	<body>
-		<p>Test page for HTTP errors</p>
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHttpHeaders.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHttpHeaders.tml
deleted file mode 100644
index afe6ca0..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForHttpHeaders.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-	<body>
-		<p>Test page for HTTP headers</p>
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForIf.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForIf.tml
deleted file mode 100644
index 65e4221..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForIf.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-  <t:if test="true">

-    <p id="1">abc.</p>

-  </t:if>

-  <t:if test="false">

-    <p id="2">def.</p>

-  </t:if>

-  <t:if test="property1">

-    <p id="3">111.</p>

-  </t:if>

-  <t:if test="property2">

-    <p id="4">222.</p>

-  </t:if>

-  <t:if test="true">

-      <p id="5">blah.</p>

-      <t:parameter name="else">

-          <p id="6">hey.</p>

-      </t:parameter>

-  </t:if>

-  <t:if test="false">

-      <p id="7">blah.</p>

-      <t:parameter name="else">

-          <p id="8">hey.</p>

-      </t:parameter>

-  </t:if>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLocale.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLocale.tml
deleted file mode 100644
index fe205ce..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLocale.tml
+++ /dev/null
@@ -1,4 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <p id="id1">English page</p>
-    <p t:type="ActionLink" t:id="changeLocale" t:mixins="forceid">Change locale</p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLocale_fr.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLocale_fr.tml
deleted file mode 100644
index c01b354..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLocale_fr.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-<p id="id1">French page</p>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLoop.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLoop.tml
deleted file mode 100644
index 3133536..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForLoop.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-<p>

-<t:loop source="1..3">abc</t:loop>

-</p>

-<p>

-<span id="1"><t:loop source="array" value="value">${value}</t:loop></span>

-</p>

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForRedirectURL.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForRedirectURL.tml
deleted file mode 100644
index afbb64d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForRedirectURL.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-	<body>
-		<p>Test page for redirect URLs</p>
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForSubmit.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForSubmit.tml
deleted file mode 100644
index 89490ee..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForSubmit.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-<p>
-<form t:id="form1">
-	<input t:id="t1" t:type="TextField"/>
-	<span t:id="capitalize1"/>
-</form>	
-<form t:id="form2">
-	<span t:id="capitalize2"/>
-	<input t:id="t2" t:type="TextField"/>
-</form></p>
-<input type="submit" id="orphanedSubmit"/>

-<t:form t:id="form3">

-    <input t:id="submitImage" t:type="submit" image="prop:spacerImage"/>

-</t:form>
-<p>
-Value is: ${value}.
-</p>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForUnless.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForUnless.tml
deleted file mode 100644
index 2309a60..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPageForUnless.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <t:unless test="true">
-    <p id="1">abc.</p>
-  </t:unless>
-  <t:unless test="false">
-    <p id="2">def.</p>
-  </t:unless>
-  <t:unless test="property1">
-    <p id="3">111.</p>
-  </t:unless>
-  <t:unless test="property2">
-    <p id="4">222.</p>
-  </t:unless>
-  <t:unless test="true">
-      <p id="5">blah.</p>
-      <t:parameter name="else">
-          <p id="6">hey.</p>
-      </t:parameter>
-  </t:unless>
-  <t:unless test="false">
-      <p id="7">blah.</p>
-      <t:parameter name="else">
-          <p id="8">hey.</p>
-      </t:parameter>
-  </t:unless>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPrefixMethod.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPrefixMethod.tml
deleted file mode 100644
index 8c45e92..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/app2/pages/TestPrefixMethod.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <span id="value">${value}</span>
-    <span id="value2">${value2}</span>
-    <span id="value3">${value3}</span>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/components/Layout.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/components/Layout.tml
deleted file mode 100644
index 8d8746e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/components/Layout.tml
+++ /dev/null
@@ -1,31 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-  <head>
-    <title>LinkTrans: ${componentresources.pagename}</title>
-  </head>
-  <body>
-    <h1>${componentresources.pagename}</h1>
-
-    <t:body/>
-
-    <hr/>
-
-    <p>
-      Current locale:
-      <span id="currentLocale">${componentresources.locale}</span>
-    </p>
-
-    <ul>
-      <li>
-        <t:pagelink page="index">back to index</t:pagelink>
-      </li>
-      <li>
-        <t:pagelink page="${componentResources.pageName}">refresh</t:pagelink>
-      </li>
-      <t:loop source="localeNames" value="localeName">
-        <li>
-          <t:eventlink event="locale" context="localeName">${localeName}</t:eventlink>
-        </li>
-      </t:loop>
-    </ul>
-  </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/pages/Index.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/pages/Index.tml
deleted file mode 100644
index fb29888..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/pages/Index.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-
-  <ul>
-    <li>
-      <t:pagelink page="view" context="literal:toys">View Toys</t:pagelink>
-    </li>
-
-    <li>
-      <t:pagelink page="view" context="literal:games">View Games</t:pagelink>
-    </li>
-  </ul>
-
-</t:layout>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/pages/View.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/pages/View.tml
deleted file mode 100644
index e137032..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/linktrans/pages/View.tml
+++ /dev/null
@@ -1,19 +0,0 @@
-<t:layout xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-
-  <p>
-    You are viewing
-    <span id="content">${content}</span>
-    .
-  </p>
-
-  <p>
-    Count:
-    <span id="count">${count}</span>
-  </p>
-
-  <p>
-
-    <t:actionlink t:id="increment">increment</t:actionlink>
-  </p>
-  
-</t:layout>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.1.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.1.properties
deleted file mode 100644
index bdfa821..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.1.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-
-greeting=Initial Message
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.1.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.1.tml
deleted file mode 100644
index 7210c63..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.1.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-    <body>
-        <dl>
-            <dt>Property:</dt>
-            <dd id="property">${number}</dd>
-            <dt>Template:</dt>
-            <dd id="template">Initial Template Version</dd>
-            <dt>Message:</dt>
-            <dd id="message">${message:greeting}</dd>
-        </dl>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.2.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.2.properties
deleted file mode 100644
index f0b8fe5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.2.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-
-greeting=Updated Message
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.2.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.2.tml
deleted file mode 100644
index b417cbf..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/Index.2.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-    <body>
-        <dl>
-            <dt>Property:</dt>
-            <dd id="property">${number}</dd>
-            <dt>Template:</dt>
-            <dd id="template">Updated Template Version</dd>
-            <dt>Message:</dt>
-            <dd id="message">${message:greeting}</dd>
-        </dl>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/web.xml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/web.xml
deleted file mode 100644
index f57a80a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/integration/reload/web.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Reload App</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.apache.tapestry5.integration.reload</param-value>
-    </context-param>
-    <context-param>
-      <param-name>tapestry.page-pool-enabled</param-name>
-      <param-value>true</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/ValidationTestMessages.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/ValidationTestMessages.properties
deleted file mode 100644
index 3232c6d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/ValidationTestMessages.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2006, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-contributed=This message was contributed inside ValidationTestMessages.
-number-format-exception=Number Format Exception
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/ValidationTestMessages_fr.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/ValidationTestMessages_fr.properties
deleted file mode 100644
index 31273f2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/ValidationTestMessages_fr.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-contributed=Zees eez Cohntributahd.
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/pageload/Fred.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/pageload/Fred.tml
deleted file mode 100644
index 8990519..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/pageload/Fred.tml
+++ /dev/null
@@ -1 +0,0 @@
-<html> Used by ComponentTemplateSourceImplTest </html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/AppCatalog.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/AppCatalog.properties
deleted file mode 100644
index 1b582c3..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/AppCatalog.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-app-catalog-source=AppCatalog
-app-catalog-overridden=Value from AppCatalog
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SimpleComponent.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SimpleComponent.properties
deleted file mode 100644
index bb37b28..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SimpleComponent.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2006, 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-color=color
-framework=Tapestry
-source=SimpleComponent
-app-catalog-overridden=Overridden by Component
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SimpleComponent_en_GB.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SimpleComponent_en_GB.properties
deleted file mode 100644
index 59e7ef9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SimpleComponent_en_GB.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-color=colour
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SubclassComponent.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SubclassComponent.properties
deleted file mode 100644
index 9babdaf..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SubclassComponent.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-metal=steel
-source=SubclassComponent
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SubclassComponent_en_GB.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SubclassComponent_en_GB.properties
deleted file mode 100644
index 654e1fb..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/SubclassComponent_en_GB.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-metal=aluminium
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script.txt
deleted file mode 100644
index 9ed0652..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-<html><head></head><body><p>Ready to be updated with scripts.</p><script type="text/javascript">doSomething();
-doSomethingElse();
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script_links.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script_links.txt
deleted file mode 100644
index 6ce1ac9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script_links.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<html><head><script src="foo.js" type="text/javascript"/><script src="bar/baz.js" type="text/javascript"/></head><body><p>Ready to be updated with scripts.</p><script type="text/javascript">Tapestry.onDOMLoaded(function() {
-pageInitialization();
-});
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script_links_at_top.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script_links_at_top.txt
deleted file mode 100644
index 401d51e..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_script_links_at_top.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-<?xml version="1.0"?>
-<html><head><script src="foo.js" type="text/javascript"/><script src="bar/baz.js" type="text/javascript"/></head><body><p>Ready to be updated with scripts at top.</p><script type="text/javascript">Tapestry.onDOMLoaded(function() {
-pageInitialization();
-});
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_style_links.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_style_links.txt
deleted file mode 100644
index 87ffb13..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/add_style_links.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<html><head><link type="text/css" rel="stylesheet" href="foo.css"/><link media="print" type="text/css" rel="stylesheet" href="bar/baz.css"/></head><body><p>Ready to be updated with styles.</p></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/added_scripts_go_before_existing_script.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/added_scripts_go_before_existing_script.txt
deleted file mode 100644
index 52cf7b8..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/added_scripts_go_before_existing_script.txt
+++ /dev/null
@@ -1 +0,0 @@
-<html><head><script src="/foo.js" type="text/javascript"></script><meta></meta><script></script></head></html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/basic.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/basic.tml
deleted file mode 100644
index 80785b6..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/basic.tml
+++ /dev/null
@@ -1,27 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>

-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:bar="bar">
-    <head>
-        <title>Test</title>
-    </head>
-    <body>
-        <t:comp id="fred" type="If" value="foo">
-            <p>You have been served!</p>
-        </t:comp>
-        <p t:id="barney" class="error">
-            You are barney!<br/>You are barney!
-        </p>
-        pre<!-- A comment! -->post
-        
-        <pre>
-line 1
-line 2            
-line 3: <![CDATA[This text contains <invalid markup>]]>
-        </pre>
-        
-        <bar:baz biff="boo">
-            Zippy!
-        </bar:baz>        
-    </body>
-</html>  <!-- Spaces and comments at end -->
-
-
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/block_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/block_element.tml
deleted file mode 100644
index de28436..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/block_element.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <t:block id="block0">
-        <!-- block0 content -->
-    </t:block>
-    
-    <t:block>
-        <!-- anon block content -->
-    </t:block>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/body_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/body_element.tml
deleted file mode 100644
index 397d2d0..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/body_element.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-Before

-<t:body/>

-After

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/cdata.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/cdata.tml
deleted file mode 100644
index f6ba4d3..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/cdata.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xml:space="preserve">
-    <![CDATA[CDATA: &lt;foo&gt; &amp; &lt;bar&gt; and <baz>]]>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/comment.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/comment.tml
deleted file mode 100644
index f2f679c..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/comment.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html>
-    <!-- Single line comment -->
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/comment_element_ignored.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/comment_element_ignored.tml
deleted file mode 100644
index 9f2f937..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/comment_element_ignored.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xml:space="preserve">
-    <t:Fred t:id="fred">
-        fred's body
-        <t:remove>
-            Text, <!-- comments -->, <![CDATA[cdata text]]> and whitespace are simply excised.
-
-            <span>
-                <t:block id="asIfItDidNotExist"/>
-                <t:aGhostAPhantom/>
-            </span>
-        </t:remove>
-    </t:Fred>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/complex_component_type.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/complex_component_type.tml
deleted file mode 100644
index dda9171..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/complex_component_type.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <t:subfolder.nifty t:id="foo"/>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component.tml
deleted file mode 100644
index 1effd8a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component.tml
+++ /dev/null
@@ -1,4 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-    <t:somecomponent t:id="fred"/>

-</html>

-    
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/componentWithBody.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/componentWithBody.tml
deleted file mode 100644
index 7ec1938..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/componentWithBody.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">
-    <t:Fred t:id="fred">
-        fred's body
-    </t:Fred>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/componentWithParameters.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/componentWithParameters.tml
deleted file mode 100644
index 9fa92f9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/componentWithParameters.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-    <t:Fred t:id="fred" cherry="bomb" align="right">

-        fred's body

-    </t:Fred>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_ids.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_ids.tml
deleted file mode 100644
index 9aee27b..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_ids.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:border t:id="border" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-  <t:Zebra t:id="zebra"/>
-  <t:Nebraska/>
-  <t:comp t:id="bomb"/>
-</t:border>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_inside_library_namespace.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_inside_library_namespace.tml
deleted file mode 100644
index 69ed520..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_inside_library_namespace.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:s="tapestry-library:subfolder">
-    <s:nifty t:id="foo"/>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_with_mixins.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_with_mixins.tml
deleted file mode 100644
index add6166..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/component_with_mixins.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-    <t:comp t:id="fred" t:mixins="Barney"/>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/container_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/container_element.tml
deleted file mode 100644
index e309b3a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/container_element.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-A bit of text.
-
-<foo/>
-
-Some more text.
-
-</t:container>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/container_must_be_root.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/container_must_be_root.tml
deleted file mode 100644
index 89be2b3..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/container_must_be_root.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:content xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <p>
-        <t:container>Not allowed to be nested!</t:container>
-    </p>
-</t:content>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/content_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/content_element.tml
deleted file mode 100644
index d82274d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/content_element.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-      xmlns:p="tapestry:parameter">
-    <t:willBeLost/>
-    <t:content>
-        <body t:type="layout">
-            <p>Page content</p>
-        </body>
-    </t:content>
-
-    <t:content>
-        This is not even seen!
-    </t:content>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/content_within_body_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/content_within_body_element.tml
deleted file mode 100644
index 80b6cd0..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/content_within_body_element.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-    <t:body>

-        Some text (starts on line 2)

-        <!-- A comment -->

-        <![CDATA[ CData text ]]>

-    </t:body>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/empty_document_with_scripts_at_top.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/empty_document_with_scripts_at_top.txt
deleted file mode 100644
index fb443b4..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/empty_document_with_scripts_at_top.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-<?xml version="1.0"?>
-<html><head><script src="foo.js" type="text/javascript"/><script src="bar/baz.js" type="text/javascript"/><link media="print" type="text/css" rel="stylesheet" href="style.css"/></head><body><script type="text/javascript">pageInitialization();
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/empty_string_mixins_is_null.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/empty_string_mixins_is_null.tml
deleted file mode 100644
index 179ce91..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/empty_string_mixins_is_null.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-    <span t:id="fred" t:mixins=""/>

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/existing_head_used_if_present.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/existing_head_used_if_present.txt
deleted file mode 100644
index 1ed8f2d..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/existing_head_used_if_present.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<html><head><link type="text/css" rel="stylesheet" href="foo.css"/><!-- existing head --></head><body>body content</body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_in_normal_text.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_in_normal_text.tml
deleted file mode 100644
index 213c769..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_in_normal_text.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-

-Expansion #1[${expansion1}]

-

-Expansion #2[${expansion2}]

-

-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_must_be_on_one_line.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_must_be_on_one_line.tml
deleted file mode 100644
index 20c24c4..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_must_be_on_one_line.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-

-    ${expansions

-    must

-    be

-    on a single

-    line}

-

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_not_allowed_in_attributes.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_not_allowed_in_attributes.tml
deleted file mode 100644
index 9640d21..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_not_allowed_in_attributes.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" exp="${not-an-expansion}">

-

-</html>

diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_not_allowed_in_cdata.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_not_allowed_in_cdata.tml
deleted file mode 100644
index c1e812f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/expansions_not_allowed_in_cdata.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">

-

-    <![CDATA[${not-an-expansion}]]>

-

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extend_must_be_root.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extend_must_be_root.tml
deleted file mode 100644
index 07d579a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extend_must_be_root.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:content xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <p>
-        <t:extend>Not allowed to be nested!</t:extend>
-    </p>
-</t:content>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extension_point.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extension_point.tml
deleted file mode 100644
index d9ecd49..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extension_point.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html t:type="layout" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-      xmlns:p="tapestry:parameter">
-    <body>
-        <t:extension-point id="title">
-            <h1>Default Title</h1>
-        </t:extension-point>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extension_point_must_have_id.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extension_point_must_have_id.tml
deleted file mode 100644
index 6424033..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/extension_point_must_have_id.tml
+++ /dev/null
@@ -1,4 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-             xmlns:p="tapestry:parameter">
-    <t:extension-point></t:extension-point>
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_frameset_doctype.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_frameset_doctype.tml
deleted file mode 100644
index 2101b47..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_frameset_doctype.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC

-	"-//W3C//DTD HTML 4.01 Frameset//EN"

-	"http://www.w3.org/TR/html4/frameset.dtd">

-
-<html>
-	<head>
-		<title>HTML 4 Frameset Test</title>
-	</head>
-	<body>
-		&lt;Test&gt;
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_strict_doctype.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_strict_doctype.tml
deleted file mode 100644
index f521290..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_strict_doctype.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC

-	"-//W3C//DTD HTML 4.01//EN"

-	"http://www.w3.org/TR/html4/strict.dtd">

-
-<html>
-	<head>
-		<title>HTML 4 Strict Test</title>
-	</head>
-	<body>
-		&lt;Test&gt;
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_transitional_doctype.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_transitional_doctype.tml
deleted file mode 100644
index faa5490..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html4_transitional_doctype.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE HTML PUBLIC

-	"-//W3C//DTD HTML 4.01 Transitional//EN"

-	"http://www.w3.org/TR/html4/loose.dtd">

-
-<html>
-	<head>
-		<title>HTML 4 Transitional Test</title>
-	</head>
-	<body>
-		&lt;Test&gt;
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html_entity.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html_entity.tml
deleted file mode 100644
index 92d959b..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/html_entity.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

-"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

-<html>
-    nbsp:[&nbsp;]
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/ie_conditional_stylesheet.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/ie_conditional_stylesheet.txt
deleted file mode 100644
index fb17c1f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/ie_conditional_stylesheet.txt
+++ /dev/null
@@ -1,5 +0,0 @@
-<html><head><link type="text/css" rel="stylesheet" href="everybody.css"></link>
-<!--[if IE]>
-<link type="text/css" rel="stylesheet" href="just_ie.css"></link>
-<![endif]-->
-</head></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/immediate_initialization.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/immediate_initialization.txt
deleted file mode 100644
index bf98910..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/immediate_initialization.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><head><meta></meta><script></script></head><body><script type="text/javascript">Tapestry.init({"fred":"barney"});
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/include_generator_meta.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/include_generator_meta.txt
deleted file mode 100644
index 63b5bb0..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/include_generator_meta.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<html><head><meta content="Apache Tapestry Framework (version 1.2.3)" name="generator"/></head><body><p>Ready to be marked with generator meta.</p></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/instrumented_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/instrumented_element.tml
deleted file mode 100644
index 9fe04f5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/instrumented_element.tml
+++ /dev/null
@@ -1 +0,0 @@
-<html t:id="fred" t:type="Fred" param="value" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"/>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_block_id.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_block_id.tml
deleted file mode 100644
index 1e5e86b..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_block_id.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <t:block id="not-valid"/>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_component_id.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_component_id.tml
deleted file mode 100644
index d5fc8b5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_component_id.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <t:foo t:id="not-valid"/>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_library_namespace_path.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_library_namespace_path.tml
deleted file mode 100644
index c052d90..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/invalid_library_namespace_path.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:s="tapestry-library:subfolder/">
-    <s:nifty t:id="foo"/>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/justHTML.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/justHTML.tml
deleted file mode 100644
index 18b24a2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/justHTML.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<html xml:space="preserve">
-    <head>
-        <title>title</title>
-    </head>
-    <body>
-        <p class="important">Tapestry rocks!
-
-            Line 2
-
-        </p>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/messages/utf8.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/messages/utf8.properties
deleted file mode 100644
index f15bdcc..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/messages/utf8.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-tapestry=タペストリー
-version=5
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/minimal_whitespace_maintained_inside_tags.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/minimal_whitespace_maintained_inside_tags.tml
deleted file mode 100644
index 0384fd4..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/minimal_whitespace_maintained_inside_tags.tml
+++ /dev/null
@@ -1,8 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    Whitespace
-    <em>around tags</em>
-
-    is maintained.
-
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/misplaced_parameter.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/misplaced_parameter.tml
deleted file mode 100644
index a1910db..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/misplaced_parameter.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-             xmlns:p="tapestry:parameter">
-
-    <not-a-component>
-        <p:foo/>
-    </not-a-component>
-
-</t:container>
-
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/missing_id_in_replace_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/missing_id_in_replace_element.tml
deleted file mode 100644
index 4011aba..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/missing_id_in_replace_element.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:replace>
-
-    </t:replace>
-</t:extend>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/mixin_requires_id_or_type.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/mixin_requires_id_or_type.tml
deleted file mode 100644
index 8ceb9f1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/mixin_requires_id_or_type.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <span t:mixins="Whatever" param="value" />    
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/multilineComment.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/multilineComment.tml
deleted file mode 100644
index 708a03f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/multilineComment.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<html xml:space="preserve">
-    <!-- Line one
-         Line two
-         Line three -->
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/multiple_expansions_on_one_line.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/multiple_expansions_on_one_line.tml
deleted file mode 100644
index 505439f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/multiple_expansions_on_one_line.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">
-    <dd>${classLoader} [${classLoader.class.name}]</dd>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/name_attribute_of_parameter_element_blank.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/name_attribute_of_parameter_element_blank.tml
deleted file mode 100644
index 3898be3..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/name_attribute_of_parameter_element_blank.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <t:comp id="foo">
-        <t:parameter name=""/>
-    </t:comp>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/name_attribute_of_parameter_element_omitted.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/name_attribute_of_parameter_element_omitted.tml
deleted file mode 100644
index 4f846e6..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/name_attribute_of_parameter_element_omitted.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <t:comp id="foo">
-        <t:parameter/>
-    </t:comp>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/namespaced_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/namespaced_element.tml
deleted file mode 100644
index de1575a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/namespaced_element.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<foo:bar xmlns:foo="http://foo.com" foo:biff="baz" xml:space="preserve">
-    <gnip/>
-</foo:bar>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/nested_content_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/nested_content_element.tml
deleted file mode 100644
index 619738b..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/nested_content_element.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:content xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <p>
-        <t:content>Not allowed to be nested!</t:content>
-    </p>
-</t:content>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/no_body_element.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/no_body_element.txt
deleted file mode 100644
index 3043202..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/no_body_element.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<html><head><script src="foo.js" type="text/javascript"/></head><notbody><p>Ready to be updated with scripts.</p></notbody></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/omit_generator_meta_on_no_html_root.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/omit_generator_meta_on_no_html_root.txt
deleted file mode 100644
index ad91c64..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/omit_generator_meta_on_no_html_root.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<no_html>Generator meta only added if root is html tag.</no_html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/only_replace_within_extend.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/only_replace_within_extend.tml
deleted file mode 100644
index 37b2ae2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/only_replace_within_extend.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd" xmlns:p="tapestry:parameter">
-    <p>Not allowed.</p>
-</t:extend>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/other_initialization.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/other_initialization.txt
deleted file mode 100644
index 6529897..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/other_initialization.txt
+++ /dev/null
@@ -1,4 +0,0 @@
-<html><head><meta></meta><script></script></head><body><script type="text/javascript">Tapestry.onDOMLoaded(function() {
-Tapestry.init({"fred":"barney"});
-});
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/overrides.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/overrides.tml
deleted file mode 100644
index 9cea3e7..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/overrides.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<t:extend xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd"
-          xmlns:p="tapestry:parameter">
-    <t:replace id="alpha">beta</t:replace>
-    <t:replace id="gamma">
-        <p>Hi!</p>
-    </t:replace>
-</t:extend>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_element.tml
deleted file mode 100644
index afafeb9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_element.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">
-
-    <t:mycomp t:id="foo">
-        <t:parameter name="fred">
-            <!-- fred content -->
-        </t:parameter>
-    </t:mycomp>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_namespace_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_namespace_element.tml
deleted file mode 100644
index 7236f28..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_namespace_element.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter" xml:space="preserve">
-
-    <t:mycomp t:id="foo">
-        <p:fred>
-            <!-- fred content -->
-        </p:fred>
-    </t:mycomp>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_namespace_with_attributes.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_namespace_with_attributes.tml
deleted file mode 100644
index 8b856e2..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/parameter_namespace_with_attributes.tml
+++ /dev/null
@@ -1,9 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xmlns:p="tapestry:parameter" xml:space="preserve">
-
-    <t:mycomp t:id="foo">
-        <p:fred name="foo">
-            <!-- fred content -->
-        </p:fred>
-    </t:mycomp>
-
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/preamble_content.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/preamble_content.txt
deleted file mode 100644
index 27e5aa4..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/preamble_content.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-<!-- preamble start -->preamble text<![CDATA[CDATA content]]>&nbsp;<!-- content after root element in preamble --><root/>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/pretty_print_initialization.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/pretty_print_initialization.txt
deleted file mode 100644
index 6ea9ec4..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/pretty_print_initialization.txt
+++ /dev/null
@@ -1,8 +0,0 @@
-<html><head><meta></meta><script></script></head><body><script type="text/javascript">Tapestry.init({
-  "fred" : [
-    "barney",
-    "wilma",
-    "betty"
-  ]
-});
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/replace_must_be_under_extend.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/replace_must_be_under_extend.tml
deleted file mode 100644
index fd1d272..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/replace_must_be_under_extend.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:content xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <p>
-        <t:replace>Not allowed to be nested!</t:replace>
-    </p>
-</t:content>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/root_element_is_component.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/root_element_is_component.tml
deleted file mode 100644
index 493eb5c..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/root_element_is_component.tml
+++ /dev/null
@@ -1 +0,0 @@
-<t:Fred t:id="fred" param="value" xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd"/>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/script_written_raw.txt b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/script_written_raw.txt
deleted file mode 100644
index 118c225..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/script_written_raw.txt
+++ /dev/null
@@ -1,2 +0,0 @@
-<html><head></head><body><p>Ready to be updated with scripts.</p><script type="text/javascript">for (var i = 0; i < 5; i++)  { doIt(i); }
-</script></body></html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/simple.dtd b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/simple.dtd
deleted file mode 100644
index be05ea6..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/simple.dtd
+++ /dev/null
@@ -1 +0,0 @@
-<!ELEMENT foo (#PCDATA)>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/space_preserved_in_block.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/space_preserved_in_block.tml
deleted file mode 100644
index 77d25c0..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/space_preserved_in_block.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <t:block xml:space="preserve">
-        line in the middle
-    </t:block>
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/space_preserved_in_container.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/space_preserved_in_container.tml
deleted file mode 100644
index 25542f5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/space_preserved_in_container.tml
+++ /dev/null
@@ -1,5 +0,0 @@
-<t:container xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd" xml:space="preserve">
-    <span>
-        some text
-    </span>
-</t:container>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/system_doctype.xml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/system_doctype.xml
deleted file mode 100644
index 4c6e638..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/system_doctype.xml
+++ /dev/null
@@ -1,2 +0,0 @@
-<!DOCTYPE foo SYSTEM "src/test/resources/org/apache/tapestry5/internal/services/simple.dtd" >
-<foo>bar</foo>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.css b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.css
deleted file mode 100644
index 9798fcc..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.css
+++ /dev/null
@@ -1,4 +0,0 @@
-body {
-    margin: 0;
-    padding: 0;
-}
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.gif b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.gif
deleted file mode 100644
index 42118f9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.gif
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.js b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.js
deleted file mode 100644
index 71f1a5a..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/test.js
+++ /dev/null
@@ -1 +0,0 @@
-var x = 5;
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/unexpected_attribute_in_block_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/unexpected_attribute_in_block_element.tml
deleted file mode 100644
index 2f110b9..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/unexpected_attribute_in_block_element.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <t:block name="block0">
-        <!-- block0 content -->
-    </t:block>
-    
-    <t:block>
-        <!-- anon block content -->
-    </t:block>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/unexpected_attribute_in_parameter_element.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/unexpected_attribute_in_parameter_element.tml
deleted file mode 100644
index 6865b62..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/unexpected_attribute_in_parameter_element.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    
-    <t:comp id="foo">
-    <t:parameter name="beverly" grok="clearly"/>
-    </t:comp>
-    
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_frameset_doctype.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_frameset_doctype.tml
deleted file mode 100644
index fd5a661..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_frameset_doctype.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC
-	"-//W3C//DTD XHTML 1.0 Frameset//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd">
-
-<html>
-	<head>
-		<title>XHTML 1.0 Frameset Test</title>
-	</head>
-	<body>
-		&lt;Test&gt;
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_strict_doctype.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_strict_doctype.tml
deleted file mode 100644
index 49c4c8f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_strict_doctype.tml
+++ /dev/null
@@ -1,12 +0,0 @@
-<!DOCTYPE html PUBLIC
-	"-//W3C//DTD XHTML 1.0 Strict//EN"
-	"http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
-
-<html>
-	<head>
-		<title>XHTML 1.0 Strict Test</title>
-	</head>
-	<body>
-		&lt;Test&gt;
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_transitional_doctype.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_transitional_doctype.tml
deleted file mode 100644
index 45fae6c..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xhtml1_transitional_doctype.tml
+++ /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>
-	<head>
-		<title>XHTML 1.0 Transitional Test</title>
-	</head>
-	<body>
-		&lt;Test&gt;
-	</body>
-</html>
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xmlEntity.tml b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xmlEntity.tml
deleted file mode 100644
index e376de1..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/internal/services/xmlEntity.tml
+++ /dev/null
@@ -1,3 +0,0 @@
-<html>
-lt:&lt; gt:&gt; amp:&amp;
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/noversion.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/noversion.properties
deleted file mode 100644
index 521e65f..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/noversion.properties
+++ /dev/null
@@ -1 +0,0 @@
-no-version-specified=here
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/version.properties b/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/version.properties
deleted file mode 100644
index 5572ff5..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/apache/tapestry5/version.properties
+++ /dev/null
@@ -1 +0,0 @@
-version=1.2.3.4
diff --git a/maint-5-2/tapestry-core/src/test/resources/org/example/pages/style.css b/maint-5-2/tapestry-core/src/test/resources/org/example/pages/style.css
deleted file mode 100644
index 2f176ef..0000000
--- a/maint-5-2/tapestry-core/src/test/resources/org/example/pages/style.css
+++ /dev/null
@@ -1 +0,0 @@
-//Some CSS
\ No newline at end of file
diff --git a/maint-5-2/tapestry-func/pom.xml b/maint-5-2/tapestry-func/pom.xml
deleted file mode 100644
index 480d0e3..0000000
--- a/maint-5-2/tapestry-func/pom.xml
+++ /dev/null
@@ -1,78 +0,0 @@
-<?xml version="1.0"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.tapestry</groupId>
-  <artifactId>tapestry-func</artifactId>
-  <packaging>jar</packaging>
-  <!-- This should change to tapestry-project -->
-  <parent>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-project</artifactId>
-    <version>5.2.6</version>
-  </parent>
-  <name>Tapestry Functional Flows</name>
-  <description>
-        Light-weight functional programming for Flows of values.
-    </description>
-  <inceptionYear>2010</inceptionYear>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-      </plugin>
-      <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>${cobertura-plugin-version}</version>
-        <executions>
-          <execution>
-            <id>clean</id>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>summary</report>
-              <report>dependencies</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <!-- Version 2.1 is broken. -->
-        <version>${cobertura-plugin-version}</version>
-      </plugin>
-    </plugins>
-  </reporting>
-</project>
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java
deleted file mode 100644
index bbae11d..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/AbstractFlow.java
+++ /dev/null
@@ -1,249 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Abstract base class for implementations of {@link Flow}. Subclasses typically override some methods
- * for either efficiency, or for the concern they embrace.
- * 
- * @since 5.2.0
- */
-abstract class AbstractFlow<T> implements Flow<T>
-{
-    /**
-     * Method limited to just AbstractFlow and its subclasses. Forces a resolve of the entire Flow,
-     * and results in a mutable list of the values in the flow.
-     */
-    protected List<T> toMutableList()
-    {
-        return toMutableList(this);
-    }
-
-    protected static <T> List<T> toMutableList(Flow<T> flow)
-    {
-        List<T> result = new ArrayList<T>();
-
-        for (T value : flow)
-        {
-            result.add(value);
-        }
-
-        return result;
-    }
-
-    public Iterator<T> iterator()
-    {
-        return new Iterator<T>()
-        {
-            private Flow<T> current = AbstractFlow.this;
-
-            public boolean hasNext()
-            {
-                return !current.isEmpty();
-            }
-
-            public T next()
-            {
-                T next = current.first();
-
-                current = current.rest();
-
-                return next;
-            }
-
-            public void remove()
-            {
-                throw new UnsupportedOperationException("Flows are immutable.");
-            }
-
-        };
-    }
-
-    public Flow<T> concat(List<? extends T> list)
-    {
-        return concat(F.flow(list));
-    }
-
-    public <V extends T> Flow<T> append(V... values)
-    {
-        return concat(F.flow(values));
-    }
-
-    public Flow<T> concat(Flow<? extends T> other)
-    {
-        return F.lazy(new LazyConcat<T>(this, other));
-    }
-
-    /** Subclasses may override this for efficiency. */
-    public Flow<T> each(Worker<? super T> worker)
-    {
-        assert worker != null;
-
-        for (T value : this)
-        {
-            worker.work(value);
-        }
-
-        return this;
-    }
-
-    public Flow<T> filter(Predicate<? super T> predicate)
-    {
-        assert predicate != null;
-
-        return F.lazy(new LazyFilter<T>(predicate, this));
-    }
-
-    public <X> Flow<X> map(Mapper<T, X> mapper)
-    {
-        assert mapper != null;
-
-        return F.lazy(new LazyMapper<T, X>(mapper, this));
-    }
-
-    public <X, Y> Flow<Y> map(Mapper2<T, X, Y> mapper, Flow<? extends X> flow)
-    {
-        assert mapper != null;
-        assert flow != null;
-
-        if (this.isEmpty() || flow.isEmpty())
-            return F.emptyFlow();
-
-        return F.lazy(new LazyMapper2<T, X, Y>(mapper, this, flow));
-    }
-
-    public <A> A reduce(Reducer<A, T> reducer, A initial)
-    {
-        assert reducer != null;
-
-        A accumulator = initial;
-
-        Flow<T> cursor = this;
-
-        while (!cursor.isEmpty())
-        {
-            accumulator = reducer.reduce(accumulator, cursor.first());
-            cursor = cursor.rest();
-        }
-
-        return accumulator;
-    }
-
-    public <X> Flow<X> mapcat(Mapper<T, Flow<X>> mapper)
-    {
-        Flow<Flow<X>> flows = map(mapper);
-
-        if (flows.isEmpty())
-            return F.emptyFlow();
-
-        return flows.rest().reduce(new Reducer<Flow<X>, Flow<X>>()
-        {
-            public Flow<X> reduce(Flow<X> accumulator, Flow<X> value)
-            {
-                return accumulator.concat(value);
-            }
-        }, flows.first());
-    }
-
-    public Flow<T> remove(Predicate<? super T> predicate)
-    {
-        assert predicate != null;
-
-        return filter(predicate.invert());
-    }
-
-    public Flow<T> reverse()
-    {
-        if (isEmpty())
-            return F.emptyFlow();
-
-        return new ArrayFlow<T>(this).reverse();
-    }
-
-    public Flow<T> sort()
-    {
-        if (isEmpty())
-            return F.emptyFlow();
-
-        return new ArrayFlow<T>(this).sort();
-    }
-
-    public Flow<T> sort(Comparator<? super T> comparator)
-    {
-        if (isEmpty())
-            return F.emptyFlow();
-
-        return new ArrayFlow<T>(this).sort(comparator);
-    }
-
-    public List<T> toList()
-    {
-        if (isEmpty())
-            return Collections.emptyList();
-
-        return Collections.unmodifiableList(toMutableList());
-    }
-
-    @SuppressWarnings("unchecked")
-    public T[] toArray(Class<T> type)
-    {
-        assert type != null;
-
-        List<T> list = toMutableList();
-
-        Object array = Array.newInstance(type, list.size());
-
-        return list.toArray((T[]) array);
-    }
-
-    public int count()
-    {
-        return isEmpty() ? 0 : 1 + rest().count();
-    }
-
-    public Flow<T> take(int length)
-    {
-        return F.lazy(new LazyTake<T>(length, this));
-    }
-
-    public Flow<T> drop(int length)
-    {
-        assert length >= 0;
-
-        if (length == 0)
-            return this;
-
-        return F.lazy(new LazyDrop<T>(length, this));
-    }
-
-    public Set<T> toSet()
-    {
-        Set<T> set = new HashSet<T>();
-
-        each(F.addToCollection(set));
-
-        return Collections.unmodifiableSet(set);
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java
deleted file mode 100644
index 7fc6cde..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/ArrayFlow.java
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Implementation of {@link Flow} based on an internal array of objects.
- * 
- * @since 5.2.0
- */
-class ArrayFlow<T> extends AbstractFlow<T>
-{
-    private final T[] values;
-
-    private final int start, count;
-
-    // Guarded by this
-    private Flow<T> rest;
-
-    /** Creates an ArrayFlow from the values in the other flow. */
-    ArrayFlow(Flow<T> flow)
-    {
-        this(toMutableList(flow));
-    }
-
-    @SuppressWarnings("unchecked")
-    ArrayFlow(Collection<T> values)
-    {
-        this((T[]) values.toArray());
-    }
-
-    ArrayFlow(T[] values)
-    {
-        this(values, 0, values.length);
-    }
-
-    ArrayFlow(T[] values, int start, int count)
-    {
-        this.values = values;
-        this.start = start;
-        this.count = count;
-    }
-
-    public Flow<T> each(Worker<? super T> worker)
-    {
-        for (int i = 0; i < count; i++)
-            worker.work(values[start + i]);
-
-        return this;
-    }
-
-    public <A> A reduce(Reducer<A, T> reducer, A initial)
-    {
-        assert reducer != null;
-
-        A accumulator = initial;
-
-        for (int i = 0; i < count; i++)
-        {
-            T value = values[start + i];
-
-            accumulator = reducer.reduce(accumulator, value);
-        }
-
-        return accumulator;
-    }
-
-    public List<T> toList()
-    {
-        return Arrays.asList(values).subList(start, start + count);
-    }
-
-    public Flow<T> reverse()
-    {
-        if (values.length < 2)
-            return this;
-
-        List<T> newValues = new ArrayList<T>();
-
-        newValues.addAll(Arrays.asList(values));
-
-        Collections.reverse(newValues);
-
-        return new ArrayFlow<T>(newValues);
-    }
-
-    public boolean isEmpty()
-    {
-        return false;
-    }
-
-    protected List<T> toMutableList()
-    {
-        List<T> result = new ArrayList<T>(count);
-
-        for (int i = 0; i < count; i++)
-        {
-            result.add(values[start + i]);
-        }
-
-        return result;
-    }
-
-    @SuppressWarnings("unchecked")
-    public Flow<T> sort()
-    {
-        if (values.length < 2)
-            return this;
-
-        List<Comparable> newValues = (List<Comparable>) toMutableList();
-
-        Collections.sort(newValues);
-
-        return new ArrayFlow<T>((List<T>) newValues);
-    }
-
-    public Flow<T> sort(Comparator<? super T> comparator)
-    {
-        assert comparator != null;
-
-        if (values.length < 2)
-            return this;
-
-        List<T> newValues = toMutableList();
-
-        Collections.sort(newValues, comparator);
-
-        return new ArrayFlow<T>(newValues);
-    }
-
-    public Iterator<T> iterator()
-    {
-        return toList().iterator();
-    }
-
-    public T first()
-    {
-        return values[start];
-    }
-
-    public synchronized Flow<T> rest()
-    {
-        if (rest == null)
-            rest = buildRest();
-
-        return rest;
-    }
-
-    private Flow<T> buildRest()
-    {
-        if (count < 2)
-            return F.emptyFlow();
-
-        return new ArrayFlow<T>(values, start + 1, count - 1);
-    }
-
-    public int count()
-    {
-        return count;
-    }
-
-    public Flow<T> take(int length)
-    {
-        if (length < 1)
-            return F.emptyFlow();
-
-        return new ArrayFlow<T>(values, start, Math.min(count, length));
-    }
-
-    public Flow<T> drop(int length)
-    {
-        assert length >= 0;
-
-        if (length == 0)
-            return this;
-
-        if (length >= count)
-            return F.emptyFlow();
-
-        return new ArrayFlow<T>(values, start + length, count - length);
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java
deleted file mode 100644
index 4f7f9b9..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/EmptyFlow.java
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * An implementation of {@link Flow} for empty flows. This allows for some easy optimizations.
- * 
- * @since 5.2.0
- */
-class EmptyFlow<T> extends AbstractFlow<T>
-{
-    public T first()
-    {
-        return null;
-    }
-
-    public boolean isEmpty()
-    {
-        return true;
-    }
-
-    public Flow<T> rest()
-    {
-        return this;
-    }
-
-    /** Does nothing; returns this empty list. */
-    public Flow<T> each(Worker<? super T> worker)
-    {
-        return this;
-    }
-
-    /** Does nothing; returns this empty list. */
-    public Flow<T> filter(Predicate<? super T> predicate)
-    {
-        return this;
-    }
-
-    /** Does nothing; returns this empty list. */
-    public Flow<T> remove(Predicate<? super T> predicate)
-    {
-        return this;
-    }
-
-    /** Does nothing; returns this empty list (as a Flow<X>). */
-    public <X> Flow<X> map(Mapper<T, X> mapper)
-    {
-        return F.emptyFlow();
-    }
-
-    /** Does nothing; returns the initial value. */
-    public <A> A reduce(Reducer<A, T> reducer, A initial)
-    {
-        return initial;
-    }
-
-    /** Does nothing; returns this empty list. */
-    public Flow<T> reverse()
-    {
-        return this;
-    }
-
-    /** Does nothing; returns this empty list. */
-    public Flow<T> sort()
-    {
-        return this;
-    }
-
-    /** Does nothing; returns this empty list. */
-    public Flow<T> sort(Comparator<? super T> comparator)
-    {
-        return this;
-    }
-
-    /** Returns the empty list. */
-    public List<T> toList()
-    {
-        return Collections.emptyList();
-    }
-
-    /** Returns the other list (i.e. empty ++ other == other). */
-    @SuppressWarnings("unchecked")
-    public Flow<T> concat(Flow<? extends T> other)
-    {
-        return (Flow<T>) other;
-    }
-
-    public <X> Flow<X> mapcat(Mapper<T, Flow<X>> mapper)
-    {
-        return F.emptyFlow();
-    }
-
-    public int count()
-    {
-        return 0;
-    }
-
-    public Flow<T> take(int length)
-    {
-        return this;
-    }
-
-    public Flow<T> drop(int length)
-    {
-        return this;
-    }
-
-    public Set<T> toSet()
-    {
-        return Collections.emptySet();
-    }
-
-    
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java
deleted file mode 100644
index c0b813a..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/F.java
+++ /dev/null
@@ -1,336 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Collection;
-import java.util.Iterator;
-
-/**
- * Functional operations on collections with generics support. The core interface is {@link Flow} to which operations
- * and transformations
- * (in terms of {@link Predicate}s, {@link Mapper}s and {@link Reducer}s) to create new Flows. Flows are initially
- * created
- * using {@link #flow(Collection)} and {@link #flow(Object...)}.
- * <p>
- * F will be used a bit, thus it has a short name (for those who don't like static imports). It provides a base set of
- * Predicate, Mapper and Reducer factories. A good development pattern for applications is to provide a similar,
- * application-specific, set of such factories.
- * 
- * @since 5.2.0
- */
-@SuppressWarnings("all")
-public class F
-{
-    final static Flow<?> EMPTY_FLOW = new EmptyFlow();
-
-    @SuppressWarnings("unchecked")
-    static <T> Flow<T> emptyFlow()
-    {
-        return (Flow<T>) EMPTY_FLOW;
-    }
-
-    public static <T> Predicate<T> eql(final T value)
-    {
-        return new Predicate<T>()
-        {
-            public boolean accept(T object)
-            {
-                return object.equals(value);
-            };
-        };
-    }
-
-    public static Predicate<Number> eq(final long value)
-    {
-        return new Predicate<Number>()
-        {
-            public boolean accept(Number object)
-            {
-                return object.longValue() == value;
-            }
-        };
-    }
-
-    public static Predicate<Number> neq(long value)
-    {
-        return eq(value).invert();
-    }
-
-    public static Predicate<Number> gt(final long value)
-    {
-        return new Predicate<Number>()
-        {
-            public boolean accept(Number object)
-            {
-                return object.longValue() > value;
-            }
-        };
-    }
-
-    public static Predicate<Number> gteq(long value)
-    {
-        return eq(value).or(gt(value));
-    }
-
-    public static Predicate<Number> lt(long value)
-    {
-        return gteq(value).invert();
-    }
-
-    public static Predicate<Number> lteq(long value)
-    {
-        return gt(value).invert();
-    }
-
-    public static <T> Predicate<T> isNull()
-    {
-        return new Predicate<T>()
-        {
-            public boolean accept(T object)
-            {
-                return object == null;
-            }
-        };
-    }
-
-    public static <T> Predicate<T> notNull()
-    {
-        Predicate<T> isNull = isNull();
-
-        return isNull.invert();
-    }
-
-    public static <T> Mapper<T, String> stringValueOf()
-    {
-        return new Mapper<T, String>()
-        {
-            public String map(T value)
-            {
-                return String.valueOf(value);
-            };
-        };
-    }
-
-    /** Returns a Mapper that ignores its input value and always returns a predetermined result. */
-    public static <S, T> Mapper<S, T> always(final T fixedResult)
-    {
-        return new Mapper<S, T>()
-        {
-            public T map(S input)
-            {
-                return fixedResult;
-            }
-        };
-    }
-
-    /**
-     * Mapper factory that combines a Predicate with two {@link Mapper}s; evaluating the predicate selects one of the
-     * two mappers.
-     * 
-     * @param predicate
-     *            evaluated to selected a coercion
-     * @param ifAccepted
-     *            used when predicate evaluates to true
-     * @param ifRejected
-     *            used when predicate evaluates to false
-     */
-    public static <S, T> Mapper<S, T> select(final Predicate<? super S> predicate, final Mapper<S, T> ifAccepted,
-            final Mapper<S, T> ifRejected)
-    {
-        assert predicate != null;
-        assert ifAccepted != null;
-        assert ifRejected != null;
-
-        return new Mapper<S, T>()
-        {
-            public T map(S input)
-            {
-                Mapper<S, T> active = predicate.accept(input) ? ifAccepted : ifRejected;
-
-                return active.map(input);
-            }
-        };
-    }
-
-    /**
-     * Override of {@link #select(Predicate, Mapper, Mapper)} where rejected values are replaced with null.
-     */
-    public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted)
-    {
-        return select(predicate, ifAccepted, (T) null);
-    }
-
-    /**
-     * Override of {@link #select(Predicate, Mapper)} where rejected values are replaced with a fixed value.
-     */
-    public static <S, T> Mapper<S, T> select(Predicate<? super S> predicate, Mapper<S, T> ifAccepted, T ifRejectedValue)
-    {
-        Mapper<S, T> rejectedMapper = always(ifRejectedValue);
-
-        return select(predicate, ifAccepted, rejectedMapper);
-    }
-
-    /** The identity mapper simply returns the input unchanged. */
-    public static <S> Mapper<S, S> identity()
-    {
-        return new Mapper<S, S>()
-        {
-            public S map(S input)
-            {
-                return input;
-            }
-        };
-    }
-
-    /** Allows a Mapper that maps to boolean to be used as a Predicate. */
-    public static <S> Predicate<S> toPredicate(final Mapper<S, Boolean> mapper)
-    {
-        assert mapper != null;
-
-        return new Predicate<S>()
-        {
-            public boolean accept(S object)
-            {
-                return mapper.map(object);
-            };
-        };
-    }
-
-    public static Reducer<Integer, Integer> SUM_INTS = new Reducer<Integer, Integer>()
-    {
-        public Integer reduce(Integer accumulator, Integer value)
-        {
-            return accumulator + value;
-        };
-    };
-
-    public static Mapper2<Integer, Integer, Integer> ADD_INTS = new Mapper2<Integer, Integer, Integer>()
-    {
-        public Integer map(Integer first, Integer second)
-        {
-            return first + second;
-        };
-    };
-
-    /**
-     * Extracts the values from the collection to form a {@link Flow}. The Collection
-     * may change after the Flow is created without affecting the Flow.
-     */
-    public static <T> Flow<T> flow(Collection<T> values)
-    {
-        assert values != null;
-
-        if (values.isEmpty())
-            return emptyFlow();
-
-        return new ArrayFlow<T>(values);
-    }
-
-    /**
-     * Creates a new Flow from the values. You should not change the values array
-     * after invoking this method (i.e., no defensive copy of the values is made).
-     */
-    public static <T> Flow<T> flow(T... values)
-    {
-        if (values.length == 0)
-            return emptyFlow();
-
-        return new ArrayFlow<T>(values);
-    }
-
-    /**
-     * Creates a lazy Flow from the {@link Iterator} obtained from the iterable. The Flow
-     * will be threadsafe as long as the iterable yields a new Iterator on each invocation <em>and</em> the underlying
-     * iterable object is not modified while the Flow is evaluating. In other words, not extremely threadsafe.
-     */
-    public static <T> Flow<T> flow(Iterable<T> iterable)
-    {
-        assert iterable != null;
-
-        return lazy(new LazyIterator<T>(iterable.iterator()));
-    }
-
-    /**
-     * Creates a lazy Flow that returns integers in the given range. The range starts
-     * with the lower value and counts by 1 up to the upper range (which is not part of
-     * the Flow). If lower equals upper, the Flow is empty. If upper is less than lower,
-     * the Flow counts down instead.
-     * 
-     * @param lower
-     *            start of range (inclusive)
-     * @param upper
-     *            end of range (exclusive)
-     */
-    public static Flow<Integer> range(int lower, int upper)
-    {
-        if (lower == upper)
-            return F.emptyFlow();
-
-        if (lower < upper)
-            return lazy(new LazyRange(lower, upper, 1));
-
-        return lazy(new LazyRange(lower, upper, -1));
-    }
-
-    /**
-     * Creates a {@link Flow} from a {@linkplain LazyFunction lazy function}.
-     */
-    public static <T> Flow<T> lazy(LazyFunction<T> function)
-    {
-        assert function != null;
-
-        return new LazyFlow<T>(function);
-    }
-
-    /**
-     * Creates an <em>infinite</em> series of numbers.
-     * <p>
-     * Attempting to get the {@linkplain Flow#count()} of the series will form an infinite loop.
-     */
-    public static Flow<Integer> series(int start, int delta)
-    {
-        return lazy(new LazySeries(start, delta));
-    }
-
-    /**
-     * Creates a lazy, infinte Flow consisting of the initial value, then the result of passing
-     * the initial value through the Mapper, and so forth, which each step value passed through the mapper
-     * to form the next step value.
-     */
-    public static <T> Flow<T> iterate(final T initial, final Mapper<T, T> mapper)
-    {
-        assert mapper != null;
-
-        return F.lazy(new LazyFunction<T>()
-        {
-
-            public LazyContinuation<T> next()
-            {
-                return new LazyContinuation<T>(initial, new LazyIterate<T>(initial, mapper));
-            }
-        });
-    }
-
-    public static <T> Worker<T> addToCollection(final Collection<T> coll)
-    {
-        return new Worker<T>()
-        {
-            public void work(T value)
-            {
-                coll.add(value);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java
deleted file mode 100644
index 3af3bfd..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Flow.java
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Comparator;
-import java.util.List;
-import java.util.Set;
-
-/**
- * A Flow is a a functional interface for working with an ordered collection of values.
- * A given Flow contains only values of a particular type. Standard operations allow for
- * filtering the Flow, or appending values to the Flow. Since Flows are immutable, all operations
- * on Flows return new immutable Flows. Flows are thread safe (to the extent that the {@link Mapper}s, {@link Predicate}
- * s, {@link Worker}s and {@link Reducer}s applied to the Flow are).
- * Flows are <em>lazy</em>: filtering, mapping, and concatenating Flows will do so with no, or a minimum, of evaluation.
- * However, converting a Flow into a {@link List} will force a realization of the entire Flow.
- * <p>
- * In some cases, a Flow may be an infinite, lazily evaluated sequence. Operations that iterate over all values (such as
- * {@link #count()} or {@link #reduce(Reducer, Object)}) may become infinite loops.
- * <p>
- * Using Flows allows for a very fluid interface.
- * <p>
- * Flows are initially created using {@link F#flow(java.util.Collection)} or {@link F#flow(Object...)}.
- * 
- * @since 5.2.0
- * @see F#lazy(LazyFunction)
- */
-public interface Flow<T> extends Iterable<T>
-{
-    /** Maps a Flow into a new Flow with different type values. Mapping is a lazy operation. */
-    <X> Flow<X> map(Mapper<T, X> mapper);
-
-    /**
-     * Combines two Flows using a two-parameter Mapper. Each value of
-     * this Flow, and the corresponding value of the other flow are passed through the Mapper
-     * to provide the values of the output Flow. The length of the result Flow is
-     * the smaller of the lengths of the two input Flows. Mapping is a lazy operation.
-     */
-    <X, Y> Flow<Y> map(Mapper2<T, X, Y> mapper, Flow<? extends X> flow);
-
-    /**
-     * Given a {@link Mapper} that maps a T to a Flow<X>, this method will lazily concatenate
-     * all the output flows into a single Flow<X>.
-     */
-    <X> Flow<X> mapcat(Mapper<T, Flow<X>> mapper);
-
-    /**
-     * Filters values, keeping only values where the predicate is true, returning a new Flow with just
-     * the retained values.
-     */
-    Flow<T> filter(Predicate<? super T> predicate);
-
-    /** Removes values where the predicate returns true, returning a new Flow with just the remaining values. */
-    Flow<T> remove(Predicate<? super T> predicate);
-
-    /**
-     * Applies a Reducer to the values of the Flow. The Reducer is passed the initial value
-     * and the first value from the Flow. The result is captured as the accumulator and passed
-     * to the Reducer with the next value from the Flow, and so on. The final accumulator
-     * value is returned. If the flow is empty, the initial value is returned.
-     * <p>
-     * Reducing is a non-lazy operation; it will fully realize the values of the Flow.
-     */
-    <A> A reduce(Reducer<A, T> reducer, A initial);
-
-    /**
-     * Applies the worker to each value in the Flow, then returns the flow for further behaviors.
-     * <p>
-     * Each is a non-lazy operation; it will fully realize the values of the Flow.
-     */
-    Flow<T> each(Worker<? super T> worker);
-
-    /**
-     * Converts the Flow into an unmodifiable list of values. This is a non-lazy operation that will fully realize
-     * the values of the Flow.
-     */
-    List<T> toList();
-
-    /**
-     * Converts the Flow into an unmodifiable set of values. This is a non-lazy operation that will fully realize
-     * the values of the Flow.
-     */
-    Set<T> toSet();
-
-    /**
-     * Converts the Flow into an array of values (due to type erasure, you have to remind the Flow about the
-     * type).
-     */
-    T[] toArray(Class<T> type);
-
-    /** Returns a new flow with the same elements but in reverse order. */
-    Flow<T> reverse();
-
-    /** Returns true if the Flow contains no values. This <em>may</em> realize the first value in the Flow. */
-    boolean isEmpty();
-
-    /** Returns a new Flow with the other Flow's elements appended to this Flow's. This is a lazy operation. */
-    Flow<T> concat(Flow<? extends T> other);
-
-    /** Returns a new Flow with the values in the list appended to this Flow. This is a lazy operation. */
-    Flow<T> concat(List<? extends T> list);
-
-    /** Appends any number of type compatible values to the end of this Flow. This is a lazy operation. */
-    <V extends T> Flow<T> append(V... values);
-
-    /**
-     * Sorts this Flow, forming a new Flow. This is a non-lazy operation; it will fully realize the values of the Flow.
-     * 
-     * @throws ClassCastException
-     *             if type <T> does not extend {@link Comparable}
-     */
-    Flow<T> sort();
-
-    /**
-     * Sorts this Flow using the comparator, forming a new Flow. This is a non-lazy operation; it will fully realize the
-     * values of the Flow.
-     */
-    Flow<T> sort(Comparator<? super T> comparator);
-
-    /**
-     * Returns the first value in the Flow. Returns null for empty flows, but remember that null is a valid
-     * value within a flow, so use {@link #isEmpty() to determine if a flow is actually empty. The first value can be
-     * realized without realizing the full Flow.
-     */
-    T first();
-
-    /**
-     * Returns a new Flow containing all but the first value in this Flow. If this Flow has only a single item,
-     * or is empty, this will return an empty Flow.
-     */
-    Flow<T> rest();
-
-    /**
-     * Returns the number of values in the Flow. This forces the realization of much of the Flow (i.e., because
-     * each value will need to be passed through any {@link Predicate}s).
-     */
-    int count();
-
-    /**
-     * Returns a new Flow containing just the first values from
-     * this Flow.
-     * 
-     * @param length
-     *            maximum number of values in the Flow
-     */
-    Flow<T> take(int length);
-
-    /**
-     * Returns a new Flow with the first values omitted.
-     * 
-     * @param length
-     *            number of values to drop
-     */
-    Flow<T> drop(int length);
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyConcat.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyConcat.java
deleted file mode 100644
index f55726f..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyConcat.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-@SuppressWarnings("unchecked")
-class LazyConcat<T> implements LazyFunction<T>
-{
-    private final Flow<T> left, right;
-
-    public LazyConcat(Flow<T> first, Flow<? extends T> second)
-    {
-        this.left = first;
-        this.right = (Flow<T>) second;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        if (left.isEmpty())
-        {
-            if (right.isEmpty())
-                return null;
-
-            return new LazyContinuation<T>(new LazyFirst<T>(right), new LazyWalk<T>(right.rest()));
-        }
-
-        return new LazyContinuation<T>(new LazyFirst<T>(left), new LazyConcat<T>(left.rest(), right));
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyContinuation.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyContinuation.java
deleted file mode 100644
index b395054..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyContinuation.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * The result of the evaluation of a {@link LazyFunction}.
- * 
- * @since 5.2.0
- */
-public class LazyContinuation<T>
-{
-    private final LazyValue<T> nextValue;
-
-    private final LazyFunction<T> nextFunction;
-
-    public LazyContinuation(T nextValue, LazyFunction<T> nextFunction)
-    {
-        this(new StaticValue<T>(nextValue), nextFunction);
-    }
-
-    public LazyContinuation(LazyValue<T> nextValue, LazyFunction<T> nextFunction)
-    {
-        assert nextValue != null;
-        assert nextFunction != null;
-
-        this.nextValue = nextValue;
-        this.nextFunction = nextFunction;
-    }
-
-    /**
-     * Returns, indirectly, the next value computed by the lazy function. The LazyValue represents
-     * a deferred computation.
-     */
-    public LazyValue<T> nextValue()
-    {
-        return nextValue;
-    }
-
-    /** Returns a new lazy function that will return the next continuation. */
-    public LazyFunction<T> nextFunction()
-    {
-        return nextFunction;
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyDrop.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyDrop.java
deleted file mode 100644
index 41e3679..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyDrop.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyDrop<T> implements LazyFunction<T>
-{
-    private final int length;
-
-    private Flow<T> flow;
-
-    public LazyDrop(int length, Flow<T> flow)
-    {
-        this.length = length;
-        this.flow = flow;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        for (int i = 0; i < length; i++)
-        {
-            if (flow.isEmpty())
-                return null;
-
-            flow = flow.rest();
-        }
-
-        // The case where the flow contains exactly length values.
-
-        if (flow.isEmpty())
-            return null;
-
-        return new LazyContinuation<T>(flow.first(), new LazyWalk<T>(flow.rest()));
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFilter.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFilter.java
deleted file mode 100644
index c7daa29..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFilter.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyFilter<T> implements LazyFunction<T>
-{
-    private final Predicate<? super T> predicate;
-
-    private final Flow<T> flow;
-
-    public LazyFilter(Predicate<? super T> predicate, Flow<T> flow)
-    {
-        this.predicate = predicate;
-        this.flow = flow;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        Flow<T> cursor = flow;
-
-        while (!cursor.isEmpty())
-        {
-            T potential = cursor.first();
-
-            if (predicate.accept(potential))
-                return new LazyContinuation<T>(potential, new LazyFilter<T>(predicate, cursor.rest()));
-            
-            cursor = cursor.rest();
-        }
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFirst.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFirst.java
deleted file mode 100644
index 595cf1c..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFirst.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyFirst<T> implements LazyValue<T>
-{
-    private final Flow<T> flow;
-
-    public LazyFirst(Flow<T> flow)
-    {
-        this.flow = flow;
-    }
-
-    public T get()
-    {
-        return flow.first();
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFlow.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFlow.java
deleted file mode 100644
index dc9944f..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFlow.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyFlow<T> extends AbstractFlow<T>
-{
-    // All instance variables guarded by this
-
-    // Retained up until resolve() is called
-    
-    private LazyFunction<T> lazyFunction;
-
-    // Set inside resolve()
-    private boolean empty;
-
-    // Set inside resolve(), used and discarded inside first()
-    private LazyValue<T> lazyFirst;
-
-    // Set inside resolve()
-    private Flow<T> rest;
-
-    // Set inside first()
-    private T first;
-
-    public LazyFlow(LazyFunction<T> lazyFunction)
-    {
-        this.lazyFunction = lazyFunction;
-    }
-
-    public synchronized T first()
-    {
-        resolve();
-
-        // Immediately after resolving, all we have is the function to call to get
-        // the first object. And once we get that object, we don't need (or want) the
-        // function.
-
-        if (lazyFirst != null)
-        {
-            first = lazyFirst.get();
-            lazyFirst = null;
-        }
-
-        return first;
-    }
-
-    public synchronized boolean isEmpty()
-    {
-        resolve();
-
-        return empty;
-    }
-
-    public synchronized Flow<T> rest()
-    {
-        resolve();
-
-        return rest;
-    }
-
-    private synchronized void resolve()
-    {
-        if (lazyFunction == null)
-            return;
-
-        LazyContinuation<T> continuation = lazyFunction.next();
-
-        if (continuation == null)
-        {
-            empty = true;
-            rest = F.emptyFlow();
-        }
-        else
-        {
-            lazyFirst = continuation.nextValue();
-
-            rest = new LazyFlow<T>(continuation.nextFunction());
-        }
-
-        lazyFunction = null;
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFunction.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFunction.java
deleted file mode 100644
index bffebe3..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyFunction.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * A lazy function is used to populate a {@link Flow} incrementally. Lazy functions allow calculations to be
- * deferred. They also support infinitely large Flows, where successive values are computed just as needed.
- * 
- * @since 5.2.0
- */
-public interface LazyFunction<T>
-{
-    /**
-     * Calculates the next value for the function. The return value is tricky: it combines the next value in the
-     * {@link Flow} with a function to compute the value after that as a {@link LazyContinuation}. Alternately, a
-     * LazyFunction can return null to indicate that it has returned all the values it can.
-     * 
-     * @return continuation containing next value and next function, or null when no more values can be produced
-     */
-    LazyContinuation<T> next();
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyIterate.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyIterate.java
deleted file mode 100644
index c916b34..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyIterate.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * Continuously re-applies a function, represented as a {@link Mapper}, to a value.
- */
-class LazyIterate<T> implements LazyFunction<T>
-{
-    private final T previousValue;
-
-    private final Mapper<T, T> mapper;
-
-    public LazyIterate(T previousValue, Mapper<T, T> mapper)
-    {
-        this.previousValue = previousValue;
-        this.mapper = mapper;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        T current = mapper.map(previousValue);
-
-        return new LazyContinuation<T>(current, new LazyIterate<T>(current, mapper));
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyIterator.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyIterator.java
deleted file mode 100644
index f2eb36b..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyIterator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Iterator;
-
-/**
- * Converts an {@link Iterator} into a {@link LazyFunction}.
- */
-class LazyIterator<T> implements LazyFunction<T>
-{
-    private final Iterator<T> iterator;
-
-    public LazyIterator(Iterator<T> iterator)
-    {
-        this.iterator = iterator;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        if (!iterator.hasNext())
-            return null;
-
-        return new LazyContinuation<T>(iterator.next(), this);
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapped2Value.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapped2Value.java
deleted file mode 100644
index ea11f7d..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapped2Value.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyMapped2Value<T, X, Y> implements LazyValue<Y>
-{
-    private final Flow<T> left;
-
-    private final Flow<X> right;
-
-    private final Mapper2<T, X, Y> mapper;
-
-    public LazyMapped2Value(Flow<T> left, Flow<X> right, Mapper2<T, X, Y> mapper)
-    {
-        this.left = left;
-        this.right = right;
-        this.mapper = mapper;
-    }
-
-    public Y get()
-    {
-        return mapper.map(left.first(), right.first());
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMappedValue.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMappedValue.java
deleted file mode 100644
index d418447..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMappedValue.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyMappedValue<T, X> implements LazyValue<X>
-{
-    private final Flow<T> flow;
-
-    private final Mapper<T, X> mapper;
-
-    public LazyMappedValue(Flow<T> input, Mapper<T, X> mapper)
-    {
-        this.flow = input;
-        this.mapper = mapper;
-    }
-
-    public X get()
-    {
-        return mapper.map(flow.first());
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapper.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapper.java
deleted file mode 100644
index 52bc33e..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyMapper<T, X> implements LazyFunction<X>
-{
-    private final Mapper<T, X> mapper;
-
-    private final Flow<T> flow;
-
-    public LazyMapper(Mapper<T, X> mapper, Flow<T> flow)
-    {
-        this.mapper = mapper;
-        this.flow = flow;
-    }
-
-    public LazyContinuation<X> next()
-    {
-        if (flow.isEmpty())
-            return null;
-
-        LazyValue<X> nextValue = new LazyMappedValue<T, X>(flow, mapper);
-
-        return new LazyContinuation<X>(nextValue, new LazyMapper<T, X>(mapper, flow.rest()));
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapper2.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapper2.java
deleted file mode 100644
index 3a66f59..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyMapper2.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyMapper2<T, X, Y> implements LazyFunction<Y>
-{
-    private final Mapper2<T, X, Y> mapper;
-
-    private final Flow<T> left;
-
-    private final Flow<X> right;
-
-    @SuppressWarnings("unchecked")
-    public LazyMapper2(Mapper2<T, X, Y> mapper, Flow<T> left, Flow<? extends X> right)
-    {
-        this.mapper = mapper;
-        this.left = left;
-        this.right = (Flow<X>) right;
-    }
-
-    public LazyContinuation<Y> next()
-    {
-        if (left.isEmpty() || right.isEmpty())
-            return null;
-
-        LazyValue<Y> nextValue = new LazyMapped2Value<T, X, Y>(left, right, mapper);
-
-        return new LazyContinuation<Y>(nextValue, new LazyMapper2<T, X, Y>(mapper, left.rest(), right.rest()));
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyRange.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyRange.java
deleted file mode 100644
index bf7016b..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyRange.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyRange implements LazyFunction<Integer>
-{
-    private final int lower, upper, delta;
-
-    public LazyRange(int lower, int upper, int delta)
-    {
-        this.lower = lower;
-        this.upper = upper;
-        this.delta = delta;
-    }
-
-    public LazyContinuation<Integer> next()
-    {
-        if (delta < 0 && lower + delta < upper)
-            return null;
-
-        if (delta > 0 && lower + delta > upper)
-            return null;
-
-        return new LazyContinuation<Integer>(lower, new LazyRange(lower + delta, upper, delta));
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazySeries.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazySeries.java
deleted file mode 100644
index d4a201a..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazySeries.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazySeries implements LazyFunction<Integer>
-{
-    private final int current, delta;
-
-    public LazySeries(int current, int delta)
-    {
-        this.current = current;
-        this.delta = delta;
-    }
-
-    public LazyContinuation<Integer> next()
-    {
-        return new LazyContinuation<Integer>(current, new LazySeries(current + delta, delta));
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyTake.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyTake.java
deleted file mode 100644
index 1abab12..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyTake.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class LazyTake<T> implements LazyFunction<T>
-{
-    private final int length;
-
-    private final Flow<T> flow;
-
-    public LazyTake(int length, Flow<T> flow)
-    {
-        this.length = length;
-        this.flow = flow;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        if (flow.isEmpty() || length < 1)
-            return null;
-
-        return new LazyContinuation<T>(new LazyFirst<T>(flow), new LazyTake<T>(length - 1, flow.rest()));
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyValue.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyValue.java
deleted file mode 100644
index 778fdea..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyValue.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * A function that returns a value, allowing the computation of that value to be deferred as late as possible.
- */
-public interface LazyValue<T>
-{
-    /** Compute and return the value. */
-    T get();
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyWalk.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyWalk.java
deleted file mode 100644
index 65307a1..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/LazyWalk.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * Used by {@link LazyConcat} to walk down the values of the second flow.
- */
-class LazyWalk<T> implements LazyFunction<T>
-{
-    private final Flow<T> flow;
-
-    public LazyWalk(Flow<T> flow)
-    {
-        this.flow = flow;
-    }
-
-    public LazyContinuation<T> next()
-    {
-        if (flow.isEmpty())
-            return null;
-
-        return new LazyContinuation<T>(new LazyFirst<T>(flow), new LazyWalk<T>(flow.rest()));
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java
deleted file mode 100644
index afc43bc..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * Base class used with {@link Flow#map(Mapper)} to
- * define how Flow values are mapped from one type
- * to another (or otherwise transformed).
- * 
- * @since 5.2.0
- */
-public abstract class Mapper<S, T>
-{
-    /** Implemented in subclasses to map a source value to a target value. */
-    public abstract T map(S value);
-
-    /**
-     * Combines this mapper (S --&gt;T) with another mapper (T --&gt;X) to form
-     * a composite mapper (S --&gt; X).
-     */
-    public final <X> Mapper<S, X> combine(final Mapper<T, X> other)
-    {
-        assert other != null;
-        
-        final Mapper<S, T> stMapper = this;
-
-        return new Mapper<S, X>()
-        {
-            public X map(S value)
-            {
-
-                T tValue = stMapper.map(value);
-
-                return other.map(tValue);
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java
deleted file mode 100644
index ec6f3dd..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Mapper2.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * A generalization of {@link Mapper} for a two-input function.
- */
-public abstract class Mapper2<A, B, C>
-{
-    /**
-     * Take, as input, two values (from two flows) and return a computed value of
-     * the third type.
-     */
-    public abstract C map(A first, B second);
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java
deleted file mode 100644
index c8b1401..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Predicate.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-
-/**
- * Used when filtering a collection of objects of a given type; the predicate is passed
- * each object in turn, and returns true to include the object in the result collection.
- * <p>
- * The {@link F} class includes a number of Predicate factory methods.
- * 
- * @since 5.2.0
- * @see Flow#filter(Predicate)
- * @see Flow#remove(Predicate)
- */
-public abstract class Predicate<T>
-{
-    /**
-     * This method is overridden in subclasses to define which objects the Predicate will accept
-     * and which it will reject.
-     */
-    public abstract boolean accept(T object);
-
-    /**
-     * Combines this Predicate with another compatible Predicate to form a new Predicate, which is returned. The
-     * new Predicate is true only if both of the combined Predicates are true.
-     */
-    public final Predicate<T> and(final Predicate<? super T> other)
-    {
-        assert other != null;
-
-        final Predicate<T> left = this;
-
-        return new Predicate<T>()
-        {
-            public boolean accept(T object)
-            {
-                return left.accept(object) && other.accept(object);
-            };
-        };
-    }
-
-    /**
-     * Combines this Predicate with another compatible Predicate to form a new Predicate, which is returned. The
-     * new Predicate is true if either of the combined Predicates are true.
-     */
-    public final Predicate<T> or(final Predicate<? super T> other)
-    {
-        assert other != null;
-
-        final Predicate<T> left = this;
-
-        return new Predicate<T>()
-        {
-            public boolean accept(T object)
-            {
-                return left.accept(object) || other.accept(object);
-            };
-        };
-    }
-
-    /**
-     * Inverts this Predicate, returning a new Predicate that inverts the value returned from {@link #accept}.
-     */
-    public final Predicate<T> invert()
-    {
-        final Predicate<T> normal = this;
-
-        return new Predicate<T>()
-        {
-            public boolean accept(T object)
-            {
-                return !normal.accept(object);
-            };
-        };
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Reducer.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Reducer.java
deleted file mode 100644
index 49cbfad..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Reducer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * A reducer takes an accumulator value and a single value from a collection and computes a new
- * accumulator value.
- * <A> type of accumulator
- * <T> type of collection value
- * 
- * @since 5.2.0
- */
-public interface Reducer<A, T>
-{
-    A reduce(A accumulator, T value);
-}
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/StaticValue.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/StaticValue.java
deleted file mode 100644
index 75fd254..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/StaticValue.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-class StaticValue<T> implements LazyValue<T>
-{
-    private final T nextValue;
-
-    StaticValue(T nextValue)
-    {
-        this.nextValue = nextValue;
-    }
-
-    public T get()
-    {
-        return nextValue;
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java b/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java
deleted file mode 100644
index e5a7c18..0000000
--- a/maint-5-2/tapestry-func/src/main/java/org/apache/tapestry5/func/Worker.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-/**
- * An operational function used with a {@link Flow}.
- * 
- * @since 5.2.0
- * @see Flow#each(Worker)
- */
-public abstract class Worker<T>
-{
-    /**
-     * Perform the operation on some object of type T.
-     */
-    public abstract void work(T value);
-
-    /**
-     * Combines this worker with the other worker, forming a new composite worker. In the composite,
-     * the value from the Flow is passed first to this worker, then to the other worker.
-     */
-    public Worker<T> combine(final Worker<? super T> other)
-    {
-        assert other != null;
-
-        final Worker<T> first = this;
-
-        return new Worker<T>()
-        {
-            public void work(T value)
-            {
-                first.work(value);
-                other.work(value);
-            }
-
-        };
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/site/apt/index.apt b/maint-5-2/tapestry-func/src/site/apt/index.apt
deleted file mode 100644
index ca35650..0000000
--- a/maint-5-2/tapestry-func/src/site/apt/index.apt
+++ /dev/null
@@ -1,9 +0,0 @@
- ----
- tapestry-func
- ----
- 
-Tapestry Functional Flows
-
-  Lightweight framework for bringing functional style development to the construction and transformation of collections
-  of objects (known as {{{../javadocs/org/apache/tapestry5/func/Flow.html}Flows}}).
-  
diff --git a/maint-5-2/tapestry-func/src/site/site.xml b/maint-5-2/tapestry-func/src/site/site.xml
deleted file mode 100644
index f7dfe71..0000000
--- a/maint-5-2/tapestry-func/src/site/site.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<project name="Tapestry Func">
-  <bannerLeft>
-    <name>Tapestry 5</name>
-    <href>http://tapestry.apache.org/</href>
-    <src>images/tapestry_banner.gif</src>
-  </bannerLeft>
-  <bannerRight>
-    <name>Apache</name>
-    <href>http://www.apache.org</href>
-    <src>images/asf_logo_wide.gif</src>
-  </bannerRight>
-  <skin>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>maven-skin</artifactId>
-    <version>1.1</version>
-  </skin>
-
-  <publishDate format="dd MMM yyyy"/>
-
-  <version/>
-
-  <body>
-
-
-    <menu ref="parent"/>
-    <!--
-
-      This is probably useful but it drives me crazy whenever I reload a page. <head> <script
-      src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script> <script
-      type="text/javascript">_uacct = "UA-400821-1"; urchinTracker();</script> </head>
-    -->
-
-
-
-    <menu ref="reports"/>
-
-  </body>
-</project>
diff --git a/maint-5-2/tapestry-func/src/test/conf/testng.xml b/maint-5-2/tapestry-func/src/test/conf/testng.xml
deleted file mode 100644
index 0a06c77..0000000
--- a/maint-5-2/tapestry-func/src/test/conf/testng.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="Tapestry Func">
-  <test name="Functional Programming Library">
-    <packages>
-      <package name="org.apache.tapestry5.func"/>
-    </packages>
-  </test>
-</suite>
diff --git a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/BaseFuncTest.java b/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/BaseFuncTest.java
deleted file mode 100644
index 903b315..0000000
--- a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/BaseFuncTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.testng.Assert;
-
-public class BaseFuncTest extends Assert
-{
-
-    protected Mapper<String, Integer> stringToLength = new Mapper<String, Integer>()
-    {
-        public Integer map(String input)
-        {
-            return input.length();
-        }
-    };
-
-    protected Mapper<Integer, Boolean> toEven = new Mapper<Integer, Boolean>()
-    {
-        public Boolean map(Integer input)
-        {
-            return evenp.accept(input);
-        }
-    };
-
-    protected Predicate<Number> evenp = new Predicate<Number>()
-    {
-        public boolean accept(Number object)
-        {
-            return object.longValue() % 2 == 0;
-        };
-    };
-
-    protected Flow<Integer> filteredEmpty = F.flow(1, 3, 5, 7).filter(evenp);
-
-    protected <T> void assertFlowValues(Flow<T> actual, T... expected)
-    {
-        assertListsEquals(actual.toList(), expected);
-    }
-
-    protected <T> void assertListsEquals(List<T> actual, T... expected)
-    {
-        assertEquals(actual, Arrays.asList(expected));
-    }
-
-    protected void unreachable()
-    {
-        throw new RuntimeException("Should not be reachable.");
-    }
-
-}
diff --git a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/FlowToSetTests.java b/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/FlowToSetTests.java
deleted file mode 100644
index 54b9854..0000000
--- a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/FlowToSetTests.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Set;
-
-import org.testng.annotations.Test;
-
-public class FlowToSetTests extends BaseFuncTest
-{
-    @Test
-    public void empty_flow_to_set()
-    {
-        assertSame(F.emptyFlow().toSet(), Collections.EMPTY_SET);
-    }
-
-    @Test
-    public void nonempty_flow()
-    {
-        Set<Integer> set = F.range(1, 10).filter(evenp).toSet();
-
-        assertTrue(set.containsAll(Arrays.asList(2, 4, 6, 8)));
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java b/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java
deleted file mode 100644
index c112a37..0000000
--- a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/FuncTest.java
+++ /dev/null
@@ -1,585 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Locale;
-
-import org.testng.annotations.Test;
-
-public class FuncTest extends BaseFuncTest
-{
-
-    @Test
-    public void flow_reverse()
-    {
-        assertFlowValues(F.flow(1, 2, 3).reverse(), 3, 2, 1);
-    }
-
-    @Test
-    public void combine_mappers()
-    {
-        List<Boolean> even = F.flow("Mary", "had", "a", "little", "lamb").map(stringToLength.combine(toEven)).toList();
-
-        assertListsEquals(even, true, false, false, true, true);
-    }
-
-    @Test
-    public void map_empty_collection_is_the_empty_list()
-    {
-        List<String> source = Arrays.asList();
-
-        List<Integer> lengths = F.flow(source).map(stringToLength).toList();
-
-        assertSame(lengths, Collections.EMPTY_LIST);
-    }
-
-    @Test
-    public void each()
-    {
-        List<String> source = Arrays.asList("Mary", "had", "a", "little", "lamb");
-
-        final StringBuffer buffer = new StringBuffer();
-
-        Worker<String> worker = new Worker<String>()
-        {
-            public void work(String value)
-            {
-                if (buffer.length() > 0)
-                    buffer.append(" ");
-
-                buffer.append(value);
-            }
-        };
-
-        F.flow(source).each(worker);
-
-        assertEquals(buffer.toString(), "Mary had a little lamb");
-    }
-
-    @Test
-    public void each_on_non_array_flow()
-    {
-        List<String> source = Arrays.asList("Mary", "had", "a", "little", "lamb");
-
-        final StringBuffer buffer = new StringBuffer();
-
-        Worker<String> worker = new Worker<String>()
-        {
-            public void work(String value)
-            {
-                if (buffer.length() > 0)
-                    buffer.append(" ");
-
-                buffer.append(value);
-            }
-        };
-
-        F.flow(source).filter(new Predicate<String>()
-        {
-            public boolean accept(String object)
-            {
-                return object.contains("a");
-            }
-        }).each(worker);
-
-        assertEquals(buffer.toString(), "Mary had a lamb");
-    }
-
-    @Test
-    public void flow_each()
-    {
-        Flow<String> flow = F.flow("Mary", "had", "a", "little", "lamb");
-
-        final StringBuffer buffer = new StringBuffer();
-
-        Worker<String> worker = new Worker<String>()
-        {
-            public void work(String value)
-            {
-                if (buffer.length() > 0)
-                    buffer.append(" ");
-
-                buffer.append(value);
-            }
-        };
-
-        assertSame(flow.each(worker), flow);
-
-        assertEquals(buffer.toString(), "Mary had a little lamb");
-    }
-
-    @Test
-    public void combine_workers()
-    {
-        final StringBuffer buffer = new StringBuffer();
-
-        Worker<String> appendWorker = new Worker<String>()
-        {
-            public void work(String value)
-            {
-                if (buffer.length() > 0)
-                    buffer.append(" ");
-
-                buffer.append(value);
-            }
-        };
-
-        Worker<String> appendLength = new Worker<String>()
-        {
-            public void work(String value)
-            {
-                buffer.append("(");
-                buffer.append(value.length());
-                buffer.append(")");
-            }
-        };
-
-        F.flow("Mary", "had", "a", "little", "lamb").each(appendWorker.combine(appendLength));
-
-        assertEquals(buffer.toString(), "Mary(4) had(3) a(1) little(6) lamb(4)");
-    }
-
-    @Test
-    public void filter()
-    {
-        List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
-
-        List<Integer> output = F.flow(input).filter(evenp).toList();
-
-        assertListsEquals(output, 2, 4, 6);
-    }
-
-    @Test
-    public void flow_filter()
-    {
-        assertFlowValues(F.flow(1, 2, 3, 4, 5, 6, 7).filter(evenp), 2, 4, 6);
-    }
-
-    @Test
-    public void remove()
-    {
-        List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
-
-        List<Integer> output = F.flow(input).remove(evenp).toList();
-
-        assertListsEquals(output, 1, 3, 5, 7);
-    }
-
-    @Test
-    public void flow_remove()
-    {
-        List<Integer> output = F.flow(1, 2, 3, 4, 5, 6, 7).remove(evenp).toList();
-
-        assertListsEquals(output, 1, 3, 5, 7);
-    }
-
-    @Test
-    public void filter_empty_is_the_empty_list()
-    {
-        List<Integer> input = Arrays.asList();
-
-        List<Integer> output = F.flow(input).filter(evenp).toList();
-
-        assertSame(output, Collections.EMPTY_LIST);
-    }
-
-    @Test
-    public void combine_predicate_with_and()
-    {
-        List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
-
-        List<Integer> output = F.flow(input).filter(evenp.and(F.gt(3))).toList();
-
-        assertListsEquals(output, 4, 6);
-    }
-
-    @Test
-    public void numeric_comparison()
-    {
-        List<Integer> input = Arrays.asList(1, 2, 3, 4, 5, 6, 7);
-
-        assertEquals(F.flow(input).filter(F.eq(3)).toList(), Arrays.asList(3));
-        assertEquals(F.flow(input).filter(F.neq(3)).toList(), Arrays.asList(1, 2, 4, 5, 6, 7));
-        assertEquals(F.flow(input).filter(F.lt(3)).toList(), Arrays.asList(1, 2));
-        assertEquals(F.flow(input).filter(F.lteq(3)).toList(), Arrays.asList(1, 2, 3));
-        assertEquals(F.flow(input).filter(F.gteq(3)).toList(), Arrays.asList(3, 4, 5, 6, 7));
-    }
-
-    @Test
-    public void select_and_filter()
-    {
-        Predicate<String> combinedp = F.toPredicate(stringToLength.combine(toEven));
-
-        Mapper<String, String> identity = F.identity();
-        Predicate<String> isNull = F.isNull();
-
-        // Converting to null and then filtering out nulls is the hard way to do filter or remove,
-        // but exercises the code we want to test.
-
-        List<String> filtered = F.flow("Mary", "had", "a", "little", "lamb").map(F.select(combinedp, identity))
-                .remove(isNull).toList();
-
-        assertListsEquals(filtered, "Mary", "little", "lamb");
-    }
-
-    @Test
-    public void null_and_not_null()
-    {
-        Predicate<String> isNull = F.isNull();
-        Predicate<String> isNotNull = F.notNull();
-
-        assertEquals(isNull.accept(null), true);
-        assertEquals(isNotNull.accept(null), false);
-
-        assertEquals(isNull.accept("foo"), false);
-        assertEquals(isNotNull.accept("bar"), true);
-    }
-
-    @Test
-    public void array_flow_reduce()
-    {
-        int total = F.flow(F.flow("Mary", "had", "a", "little", "lamb").map(stringToLength).toList()).reduce(
-                F.SUM_INTS, 0);
-
-        assertEquals(total, 18);
-    }
-
-    @Test
-    public void general_flow_reduce()
-    {
-        int total = F.flow("Mary", "had", "a", "little", "lamb").map(stringToLength).reduce(F.SUM_INTS, 0);
-
-        assertEquals(total, 18);
-    }
-
-    @Test
-    public void reverse_a_short_list_is_same_object()
-    {
-        Flow<Integer> empty = F.flow();
-
-        assertSame(empty.reverse(), empty);
-
-        Flow<Integer> one = F.flow(1);
-
-        assertSame(one.reverse(), one);
-    }
-
-    @Test
-    public void concat_flows()
-    {
-        Flow<Integer> first = F.flow(1, 2, 3);
-
-        Flow<Integer> updated = first.concat(F.flow(4, 5, 6));
-
-        assertFlowValues(updated, 1, 2, 3, 4, 5, 6);
-    }
-
-    @Test
-    public void concat_onto_empty_list()
-    {
-        Flow<Integer> empty = F.flow();
-        Flow<Integer> flow = F.flow(1, 2, 3);
-
-        assertSame(empty.concat(flow), flow);
-    }
-
-    @Test
-    public void concat_list_onto_flow()
-    {
-        Flow<Integer> first = F.flow(1, 2, 3);
-
-        Flow<Integer> updated = first.concat(Arrays.asList(4, 5, 6));
-
-        assertFlowValues(updated, 1, 2, 3, 4, 5, 6);
-    }
-
-    @Test
-    public void append_values_onto_flow()
-    {
-        Flow<Integer> first = F.flow(1, 2, 3);
-
-        Flow<Integer> updated = first.append(4, 5, 6);
-
-        assertFlowValues(updated, 1, 2, 3, 4, 5, 6);
-    }
-
-    @Test
-    public void sort_comparable_list()
-    {
-        assertFlowValues(F.flow("fred", "barney", "wilma", "betty").sort(), "barney", "betty", "fred", "wilma");
-    }
-
-    @Test
-    public void sort_a_short_list_returns_same()
-    {
-        Flow<String> zero = F.flow();
-
-        Comparator<String> comparator = new Comparator<String>()
-        {
-            public int compare(String o1, String o2)
-            {
-                return o1.length() - o2.length();
-            }
-        };
-
-        assertSame(zero.sort(), zero);
-        assertSame(zero.sort(comparator), zero);
-
-        Flow<String> one = F.flow("Hello");
-
-        assertSame(one.sort(), one);
-        assertSame(one.sort(comparator), one);
-    }
-
-    @Test
-    public void sort_using_explicit_comparator()
-    {
-        Flow<String> flow = F.flow("a", "eeeee", "ccc", "bb", "dddd");
-        Comparator<String> comparator = new Comparator<String>()
-        {
-            public int compare(String o1, String o2)
-            {
-                return o1.length() - o2.length();
-            }
-        };
-
-        assertFlowValues(flow.sort(comparator), "a", "bb", "ccc", "dddd", "eeeee");
-    }
-
-    @Test(expectedExceptions = ClassCastException.class)
-    public void unable_to_sort_a_flow_of_non_comparables()
-    {
-        Flow<Locale> flow = F.flow(Locale.ENGLISH, Locale.FRANCE);
-
-        flow.sort();
-    }
-
-    @Test
-    public void flows_are_iterable()
-    {
-        Flow<Integer> flow = F.flow(1, 3, 5, 7);
-
-        int total = 0;
-
-        for (int i : flow)
-        {
-            total += i;
-        }
-
-        assertEquals(total, 16);
-    }
-
-    @Test
-    public void first_of_non_empty_flow()
-    {
-        assertEquals(F.flow("Mary", "had", "a", "little", "lamb").first(), "Mary");
-    }
-
-    @Test
-    public void rest_of_non_empty_flow()
-    {
-        assertFlowValues(F.flow("Mary", "had", "a", "little", "lamb").rest(), "had", "a", "little", "lamb");
-    }
-
-    @Test
-    public void flow_rest_is_cached()
-    {
-        Flow<Integer> flow = F.flow(1, 2, 3);
-
-        assertSame(flow.rest(), flow.rest());
-    }
-
-    @Test
-    public void first_of_empty_is_null()
-    {
-        assertNull(F.flow().first());
-    }
-
-    @Test
-    public void rest_of_empty_is_still_empty_and_not_null()
-    {
-        assertTrue(F.flow().rest().isEmpty());
-    }
-
-    @Test
-    public void list_of_empty_flow_is_empty()
-    {
-        assertTrue(filteredEmpty.isEmpty());
-        assertSame(filteredEmpty.toList(), Collections.EMPTY_LIST);
-    }
-
-    @Test
-    public void operations_on_empty_list_yield_empty()
-    {
-        assertSame(filteredEmpty.reverse(), F.EMPTY_FLOW);
-        assertSame(filteredEmpty.sort(), F.EMPTY_FLOW);
-        assertSame(filteredEmpty.sort(new Comparator<Integer>()
-        {
-            public int compare(Integer o1, Integer o2)
-            {
-                unreachable();
-
-                return 0;
-            }
-        }), F.EMPTY_FLOW);
-    }
-
-    @Test
-    public void sort_non_array_flow()
-    {
-        assertFlowValues(filteredEmpty.append(7, 3, 9).sort(), 3, 7, 9);
-    }
-
-    @Test
-    public void reverse_non_array_flow()
-    {
-        assertFlowValues(filteredEmpty.append(1, 2, 3).reverse(), 3, 2, 1);
-    }
-
-    @Test(expectedExceptions = UnsupportedOperationException.class)
-    public void remove_on_flow_iterator_is_not_supported()
-    {
-        Flow<Integer> flow = F.flow(1, 2, 3).filter(evenp);
-
-        Iterator<Integer> it = flow.iterator();
-
-        assertTrue(it.hasNext());
-        assertEquals(it.next(), new Integer(2));
-
-        it.remove();
-    }
-
-    @Test
-    public void sort_with_comparator_on_non_array_flow()
-    {
-        Flow<String> flow = F.flow("Mary", "had", "a", "little", "lamb");
-
-        List<String> result = flow.filter(new Predicate<String>()
-        {
-            public boolean accept(String object)
-            {
-                return object.contains("a");
-            }
-        }).sort(new Comparator<String>()
-        {
-            public int compare(String o1, String o2)
-            {
-                return o1.length() - o2.length();
-
-            };
-        }).toList();
-
-        assertListsEquals(result, "a", "had", "Mary", "lamb");
-    }
-
-    @Test
-    public void each_on_empty_flow()
-    {
-        Flow<Integer> flow = F.emptyFlow();
-
-        assertSame(flow.each(new Worker<Integer>()
-        {
-            public void work(Integer value)
-            {
-                unreachable();
-            }
-        }), flow);
-    }
-
-    @Test
-    public void remove_on_empty_flow()
-    {
-        Flow<Integer> flow = F.emptyFlow();
-
-        assertSame(flow.remove(evenp), flow);
-    }
-
-    @Test
-    public void reduce_on_empty_flow()
-    {
-        Flow<Integer> flow = F.emptyFlow();
-        Integer initial = 99;
-
-        assertSame(flow.reduce(new Reducer<Integer, Integer>()
-        {
-            public Integer reduce(Integer accumulator, Integer value)
-            {
-                unreachable();
-
-                return null;
-            }
-        }, initial), initial);
-    }
-
-    @Test
-    public void count_of_the_empty_flow_is_zero()
-    {
-        assertEquals(F.flow().count(), 0);
-    }
-
-    @Test
-    public void count_of_array_flow()
-    {
-        assertEquals(F.flow(1, 2, 3).count(), 3);
-    }
-
-    @Test
-    public void count_of_a_filtered_flow()
-    {
-        Flow<String> flow = F.flow("Mary", "had", "a", "little", "lamb");
-
-        assertEquals(flow.filter(F.isNull()).count(), 0);
-        assertEquals(flow.filter(F.notNull()).count(), 5);
-    }
-
-    @Test
-    public void concat_empty_list()
-    {
-        Flow<Integer> flow = F.flow(1, 3);
-
-        assertFlowValues(flow.concat(flow.filter(evenp)), 1, 3);
-    }
-
-    @Test
-    public void to_array()
-    {
-        Flow<Integer> flow = F.range(1, 10).drop(2).take(3);
-
-        assertTrue(Arrays.equals(flow.toArray(Integer.class), new Integer[]
-        { 3, 4, 5 }));
-    }
-
-    @Test
-    public void lazy_flow_from_iterable()
-    {
-        Iterable<Integer> iterable = new Iterable<Integer>()
-        {
-
-            public Iterator<Integer> iterator()
-            {
-                return Arrays.asList(9, 7, 1).iterator();
-            }
-        };
-
-        Flow<Integer> flow = F.flow(iterable);
-
-        assertFlowValues(flow, 9, 7, 1);
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/MapperTest.java b/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/MapperTest.java
deleted file mode 100644
index 5412671..0000000
--- a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/MapperTest.java
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicInteger;
-
-import org.testng.annotations.Test;
-
-public class MapperTest extends BaseFuncTest
-{
-    protected Mapper<Integer, Flow<Integer>> sequencer = new Mapper<Integer, Flow<Integer>>()
-    {
-
-        public Flow<Integer> map(Integer value)
-        {
-            Flow<Integer> flow = F.flow();
-
-            for (int i = 0; i < value; i++)
-                flow = flow.append(value);
-
-            return flow;
-        }
-    };
-
-    @Test
-    public void map()
-    {
-        List<String> source = Arrays.asList("Mary", "had", "a", "little", "lamb");
-
-        List<Integer> lengths = F.flow(source).map(stringToLength).toList();
-
-        assertListsEquals(lengths, 4, 3, 1, 6, 4);
-    }
-
-    @Test
-    public void flow_map()
-    {
-        assertFlowValues(F.flow("Mary", "had", "a", "little", "lamb").map(stringToLength), 4, 3, 1, 6, 4);
-    }
-
-    @Test
-    public void map_of_filtered_empty_is_empty()
-    {
-        assertTrue(filteredEmpty.map(new Mapper<Integer, Integer>()
-        {
-            public Integer map(Integer value)
-            {
-                unreachable();
-
-                return value;
-            }
-        }).isEmpty());
-    }
-
-    @Test
-    public void mapcat_on_empty_flow_is_empty()
-    {
-        Flow<Integer> flow = F.flow();
-
-        assertSame(flow.mapcat(sequencer), flow);
-
-        assertTrue(filteredEmpty.mapcat(sequencer).isEmpty());
-    }
-
-    @Test
-    public void mapcat()
-    {
-        Flow<Integer> flow = F.flow(3, 1, 2);
-
-        assertFlowValues(flow.mapcat(sequencer), 3, 3, 3, 1, 2, 2);
-    }
-
-    @Test
-    public void count_of_a_mapped_filtered_empty_flow()
-    {
-        Flow<Integer> flow = F.flow("Mary", "had", "etc.").filter(F.isNull()).map(stringToLength);
-
-        assertTrue(flow.isEmpty());
-        assertEquals(flow.count(), 0);
-    }
-
-    @Test
-    public void toString_mapper()
-    {
-        Flow<Integer> flow = F.flow(1, 2, 3);
-
-        assertFlowValues(flow.map(F.<Integer> stringValueOf()), "1", "2", "3");
-    }
-
-    @Test
-    public void no_excess_mapping()
-    {
-        final AtomicInteger count = new AtomicInteger();
-
-        Mapper<Integer, Integer> doubler = new Mapper<Integer, Integer>()
-        {
-            public Integer map(Integer value)
-            {
-                count.incrementAndGet();
-
-                return value * 2;
-            }
-        };
-
-        assertFlowValues(F.range(1, 100).filter(F.gt(10)).map(doubler).take(3), 22, 24, 26);
-
-        assertEquals(count.get(), 3);
-
-        count.set(0);
-
-        // Because of laziness, its possible to count all the values in some mapped lists, without
-        // ever actually running the mapper to determine the final value.
-
-        assertEquals(F.range(1, 100).map(doubler).count(), 99);
-        assertEquals(count.get(), 0);
-
-        // Because values are now lazily evaluated as well as flows, we can count the size of a flow
-        // without ever actually calculating (via the mapper) an output value.
-
-        Flow<Integer> flow = F.range(1, 100).map(doubler).concat(F.range(1, 10).map(doubler));
-        assertEquals(flow.count(), 108);
-        assertEquals(count.get(), 0);
-
-        assertFlowValues(flow.take(2), 2, 4);
-        assertEquals(count.get(), 2);
-
-        count.set(0);
-
-        // Isn't this nifty; take-ing from a flow will create a flow that references parts
-        // of the original flow, and previously computed values (2 and 4) are still accessible!
-
-        assertFlowValues(flow.take(3), 2, 4, 6);
-        assertEquals(count.get(), 1);
-    }
-
-    @Test
-    public void map2_empty_is_the_empty_flow()
-    {
-        Flow<Integer> flow = F.flow(1, 2, 3);
-
-        assertSame(flow.map(F.ADD_INTS, filteredEmpty), F.EMPTY_FLOW);
-        assertSame(filteredEmpty.map(F.ADD_INTS, flow), F.EMPTY_FLOW);
-    }
-
-    @Test
-    public void map2()
-    {
-        Flow<Integer> left = F.range(10, 13);
-        Flow<Integer> right = F.series(20, 2);
-
-        assertFlowValues(left.map(F.ADD_INTS, right), 10 + 20, 11 + 22, 12 + 24);
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/RangeTests.java b/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/RangeTests.java
deleted file mode 100644
index 4c76838..0000000
--- a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/RangeTests.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import org.testng.annotations.Test;
-
-public class RangeTests extends BaseFuncTest
-{
-    @Test
-    public void empty_range_if_values_equal()
-    {
-        assertTrue(F.range(9, 9).isEmpty());
-    }
-
-    @Test
-    public void ascending_range()
-    {
-
-        assertFlowValues(F.range(5, 8), 5, 6, 7);
-    }
-
-    @Test
-    public void descending_range()
-    {
-        assertFlowValues(F.range(8, 5), 8, 7, 6);
-    }
-
-    @Test
-    public void series()
-    {
-        Flow<Integer> series = F.series(3, 5);
-
-        assertFlowValues(series.take(5), 3, 8, 13, 18, 23);
-    }
-
-    @Test
-    public void filtered_series()
-    {
-        Flow<Integer> series = F.series(1, 1);
-
-        assertFlowValues(series.filter(evenp).take(4), 2, 4, 6, 8);
-    }
-
-    @Test
-    public void iterate()
-    {
-        Mapper<Integer, Integer> times2 = new Mapper<Integer, Integer>()
-        {
-            public Integer map(Integer value)
-            {
-                return 2 * value;
-            }
-        };
-
-        assertFlowValues(F.iterate(1, times2).take(5), 1, 2, 4, 8, 16);
-    }
-}
diff --git a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/TakeDropTests.java b/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/TakeDropTests.java
deleted file mode 100644
index 8690682..0000000
--- a/maint-5-2/tapestry-func/src/test/java/org/apache/tapestry5/func/TakeDropTests.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.func;
-
-import org.testng.annotations.Test;
-
-public class TakeDropTests extends BaseFuncTest
-{
-    @Test
-    public void take_from_empty_list()
-    {
-        assertSame(F.flow().take(34), F.EMPTY_FLOW);
-    }
-
-    @Test
-    public void take_from_flow()
-    {
-        assertFlowValues(F.series(1, 1).remove(evenp).take(2), 1, 3);
-    }
-
-    @Test
-    public void take_from_array_flow()
-    {
-        Flow<Integer> flow = F.flow(1, 2, 3, 4, 5);
-
-        assertFlowValues(flow.take(2), 1, 2);
-
-        assertFlowValues(flow.take(99), 1, 2, 3, 4, 5);
-
-        assertSame(flow.take(0), F.EMPTY_FLOW);
-    }
-
-    @Test
-    public void take_and_drop()
-    {
-        // This can go much, much larger but starts taking a while. Don't hold a reference to the start
-        // of the series or it can run out of memory.
-        int length = 100000;
-
-        assertFlowValues(F.series(1, 1).filter(evenp).drop(length).take(3), 2 * length + 2, 2 * length + 4,
-                2 * length + 6);
-    }
-
-    @Test
-    public void drop_from_empty_is_empty()
-    {
-        assertSame(F.flow().drop(99), F.EMPTY_FLOW);
-    }
-
-    @Test
-    public void drop_exact_size_of_flow_is_empty()
-    {
-        assertTrue(F.range(1, 10).filter(evenp).drop(4).isEmpty());
-    }
-
-    @Test
-    public void lazy_drop_more_than_available()
-    {
-        assertTrue(F.range(1, 10).filter(evenp).drop(5).isEmpty());
-    }
-
-    @Test
-    public void drop_all_from_array_flow_is_empty_flow()
-    {
-        assertSame(F.flow(1, 2, 3).drop(3), F.EMPTY_FLOW);
-    }
-
-    @Test
-    public void drop_zero_from_array_flow_is_same()
-    {
-        Flow<Integer> flow = F.flow(1, 2, 3);
-
-        assertSame(flow.drop(0), flow);
-    }
-
-    @Test
-    public void drop_from_array_flow()
-    {
-        assertFlowValues(F.range(1, 10).reverse().drop(2), 7, 6, 5, 4, 3, 2, 1);
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/LICENSE.txt b/maint-5-2/tapestry-hibernate-core/LICENSE.txt
deleted file mode 100644
index 18a3697..0000000
--- a/maint-5-2/tapestry-hibernate-core/LICENSE.txt
+++ /dev/null
@@ -1,715 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
--------------------------------------------------------------------------------
-   
-HIBERNATE
-
-Hibernate is not bundled with tapestry-hibernate, but is bound to it.   
-   
-		  GNU LESSER GENERAL PUBLIC LICENSE
-		       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-		  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-		     
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
-   
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate-core/NOTICE.txt b/maint-5-2/tapestry-hibernate-core/NOTICE.txt
deleted file mode 100644
index c5b9d10..0000000
--- a/maint-5-2/tapestry-hibernate-core/NOTICE.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product makes use of the Hibernate Object Relational Mapping Framework, which
-is released under the Lesser GNU Public License.
-http://hibernate.org
-
-
-
-
diff --git a/maint-5-2/tapestry-hibernate-core/pom.xml b/maint-5-2/tapestry-hibernate-core/pom.xml
deleted file mode 100644
index 9fdd3fb..0000000
--- a/maint-5-2/tapestry-hibernate-core/pom.xml
+++ /dev/null
@@ -1,160 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-hibernate-core</artifactId>
-    <name>Tapestry Hibernate Support</name>
-    <description>
-        Basic Hibernate services for Tapestry, useable outside of a Tapestry web application
-    </description>
-    <packaging>jar</packaging>
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-    <inceptionYear>2007</inceptionYear>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-ioc</artifactId>
-        </dependency>
-
-        <!-- Testing -->
-
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-test</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.14</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>hsqldb</groupId>
-            <artifactId>hsqldb</artifactId>
-            <version>1.8.0.7</version>
-            <scope>test</scope>
-        </dependency>
-
-        <!-- This is the default version of Hibernate used; Maven provides the ability to override this dependency, though
-it can be tricky because there are overlapping third-party dependencies with slightly different version numbers. -->
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-core</artifactId>
-            <version>${hibernate-version}</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.transaction</groupId>
-                    <artifactId>jta</artifactId>
-                </exclusion>
-                <!-- Make sure we use the version defined by tapestry-ioc. -->
-                <exclusion>
-                    <groupId>org.slf4j</groupId>
-                    <artifactId>slf4j-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-
-        <dependency>
-            <groupId>geronimo-spec</groupId>
-            <artifactId>geronimo-spec-jta</artifactId>
-            <version>1.0-M1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.hibernate</groupId>
-            <artifactId>hibernate-c3p0</artifactId>
-            <version>${hibernate-version}</version>
-        </dependency>
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Tapestry-Module-Classes>
-                                org.apache.tapestry5.hibernate.HibernateCoreModule
-                            </Tapestry-Module-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-
-        </plugins>
-    </build>
-
-    <repositories>
-        <repository>
-            <id>jboss</id>
-            <name>JBoss</name>
-            <url>https://repository.jboss.org/nexus/content/repositories/releases/</url>
-        </repository>
-    </repositories>
-
-    <reporting>
-        <plugins>
-            <!--            <plugin>
-               <groupId>org.codehaus.mojo</groupId>
-               <artifactId>cobertura-maven-plugin</artifactId>
-               <version>${cobertura-plugin-version}</version>
-           </plugin> -->
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-    
-    <properties>
-        <hibernate-version>3.6.0.Final</hibernate-version>
-    </properties>
-</project>
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConfigurer.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConfigurer.java
deleted file mode 100644
index 34bb517..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConfigurer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import org.hibernate.cfg.Configuration;
-
-/**
- * Defines the interface for a chain-of-command that updates Hibernate configuration in some way before the {@link
- * org.hibernate.SessionFactory} is created.
- */
-public interface HibernateConfigurer
-{
-    /**
-     * Passed the configuration so as to make changes.
-     */
-    void configure(Configuration configuration);
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java
deleted file mode 100644
index 219d0c7..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateConstants.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-/**
- * Defines constants used inside the Tapestry Hibernate intergration.
- */
-public class HibernateConstants
-{
-    /**
-     * @deprecated Use {@link org.apache.tapestry5.hibernate.HibernateSymbols#PROVIDE_ENTITY_VALUE_ENCODERS} instead.
-     */
-    public static final String PROVIDE_ENTITY_VALUE_ENCODERS_SYMBOL = HibernateSymbols.PROVIDE_ENTITY_VALUE_ENCODERS;
-
-    /**
-     * @deprecated Use {@link org.apache.tapestry5.hibernate.HibernateSymbols#DEFAULT_CONFIGURATION} instead
-     */
-    public static final String DEFAULT_CONFIGURATION = HibernateSymbols.DEFAULT_CONFIGURATION;
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCore.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCore.java
deleted file mode 100644
index 776c29e..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCore.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import java.lang.annotation.*;
-
-
-/**
- * Marker annotation used to identify services defined in the {@link org.apache.tapestry5.hibernate.HibernateCoreModule}.
- */
-@Target({ElementType.PARAMETER, ElementType.FIELD})
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-public @interface HibernateCore
-{
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java
deleted file mode 100644
index a5d687c..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateCoreModule.java
+++ /dev/null
@@ -1,142 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import org.apache.tapestry5.internal.hibernate.*;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-import org.hibernate.Session;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.List;
-
-/**
- * Defines core services that support initialization of Hibernate and access to the Hibernate {@link
- * org.hibernate.Session}.
- */
-@SuppressWarnings({ "JavaDoc" })
-@Marker(HibernateCore.class)
-public class HibernateCoreModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(HibernateTransactionDecorator.class, HibernateTransactionDecoratorImpl.class);
-        binder.bind(HibernateTransactionAdvisor.class, HibernateTransactionAdvisorImpl.class);
-        binder.bind(HibernateConfigurer.class, DefaultHibernateConfigurer.class).withId("DefaultHibernateConfigurer");
-    }
-
-
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(HibernateSymbols.DEFAULT_CONFIGURATION, "true");
-        configuration.add(HibernateSymbols.EARLY_START_UP, "false");
-    }
-
-    public static void contributeRegistryStartup(OrderedConfiguration<Runnable> configuration,
-
-                                                 @Symbol(HibernateSymbols.EARLY_START_UP)
-                                                 final boolean earlyStartup,
-
-                                                 final HibernateSessionSource sessionSource)
-    {
-        configuration.add("HibernateStartup", new Runnable()
-        {
-            public void run()
-            {
-                if (earlyStartup)
-                    sessionSource.getConfiguration();
-            }
-        });
-    }
-
-    public static HibernateEntityPackageManager buildHibernateEntityPackageManager(
-            final Collection<String> packageNames)
-    {
-        return new HibernateEntityPackageManager()
-        {
-            public Collection<String> getPackageNames()
-            {
-                return packageNames;
-            }
-        };
-    }
-
-    /**
-     * The session manager manages sessions on a per-thread/per-request basis. Any active transaction will be rolled
-     * back at {@linkplain org.apache.tapestry5.ioc.Registry#cleanupThread() thread cleanup time}.  The thread is
-     * cleaned up automatically in a Tapestry web application.
-     */
-    @Scope(ScopeConstants.PERTHREAD)
-    public static HibernateSessionManager buildHibernateSessionManager(HibernateSessionSource sessionSource,
-                                                                       PerthreadManager perthreadManager)
-    {
-        HibernateSessionManagerImpl service = new HibernateSessionManagerImpl(sessionSource);
-
-        perthreadManager.addThreadCleanupListener(service);
-
-        return service;
-    }
-
-    public static Session buildSession(HibernateSessionManager sessionManager,
-                                       PropertyShadowBuilder propertyShadowBuilder)
-    {
-        // Here's the thing: the tapestry.hibernate.Session class doesn't have to be per-thread,
-        // since
-        // it will invoke getSession() on the HibernateSessionManager service (which is per-thread).
-        // On
-        // first invocation per request,
-        // this forces the HSM into existence (which creates the session and begins the
-        // transaction).
-        // Thus we don't actually create
-        // a session until we first try to access it, then the session continues to exist for the
-        // rest
-        // of the request.
-
-        return propertyShadowBuilder.build(sessionManager, "session", Session.class);
-    }
-
-    public static HibernateSessionSource buildHibernateSessionSource(Logger logger, List<HibernateConfigurer> config,
-                                                                     RegistryShutdownHub hub)
-    {
-        HibernateSessionSourceImpl hss = new HibernateSessionSourceImpl(logger, config);
-
-        hub.addRegistryShutdownListener(hss);
-
-        return hss;
-    }
-
-    /**
-     * Adds the following configurers: <dl> <dt>Default <dd> performs default hibernate configuration <dt>PackageName
-     * <dd> loads entities by package name</dl>
-     */
-    public static void contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> config,
-
-                                                        @Local
-                                                        HibernateConfigurer defaultHibernateConfigurer)
-    {
-        config.add("Default", defaultHibernateConfigurer);
-        config.addInstance("PackageName", PackageNameHibernateConfigurer.class);
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateEntityPackageManager.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateEntityPackageManager.java
deleted file mode 100644
index f70d8b4..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateEntityPackageManager.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-import java.util.Collection;
-
-/**
- * Contains a set of contributed package names from which to load entities.
- * <p/>
- * The service's configuration is the names of Java packages to search for Hibernate entities.
- */
-@UsesConfiguration(String.class)
-public interface HibernateEntityPackageManager
-{
-    /**
-     * Returns packages from which read entity classes
-     */
-    Collection<String> getPackageNames();
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSessionManager.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSessionManager.java
deleted file mode 100644
index 9c95d0c..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSessionManager.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import org.hibernate.Session;
-
-/**
- * Manages the Hibernate session for the current thread. This includes creating the session as needed, allowing the
- * session to checkpoint (commit the current transaction and continue) and commit the transaction automatically at the
- * end of the request.
- * <p/>
- * Remember that in Tapestry, action requests and render requests are entirely separate, and you will see a separate
- * request and a separate transaction for each. Care should be taken to ensure that entity objects that are retained (in
- * the session, as persistent field values) between requests are handled correctly (they tend to become detached
- * instances).
- * <p/>
- * This implementation of this service is per-thread.
- */
-public interface HibernateSessionManager
-{
-    /**
-     * Gets the active session for this request, creating it as necessary. When the session is first created, a
-     * transaction is started.
-     *
-     * @return the request's session
-     * @see HibernateSessionSource
-     */
-    Session getSession();
-
-    /**
-     * Commits the current transaction (which will cause a flush of data to the database), then starts a new transaction
-     * to replace it.
-     */
-    void commit();
-
-    /**
-     * Aborts the current transaction, and starts a new transaction to replace it.
-     */
-    void abort();
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSessionSource.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSessionSource.java
deleted file mode 100644
index 70d8e99..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSessionSource.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.Configuration;
-
-/**
- * Responsible for creating a Hibernate session as needed. Internally, is responsible for Hibernate {@link
- * Configuration}, resulting in a {@link SessionFactory}.
- * <p/>
- * The service's configuration is a {@linkplain org.apache.tapestry5.ioc.services.ChainBuilder chain of command} of
- * configurator objects.
- */
-@UsesOrderedConfiguration(HibernateConfigurer.class)
-public interface HibernateSessionSource
-{
-    /**
-     * Creates a new session using the {@link #getSessionFactory() SessionFactory} created at service startup.
-     */
-    Session create();
-
-    /**
-     * Returns the SessionFactory from which Hibernate sessions are created.
-     */
-    SessionFactory getSessionFactory();
-
-    /**
-     * Returns the final configuration used to create the {@link SessionFactory}. The configuration is immutable.
-     */
-    Configuration getConfiguration();
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java
deleted file mode 100644
index da95626..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateSymbols.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-/**
- * Configuration symbols, for use with contributions to {@link org.apache.tapestry5.ioc.services.ApplicationDefaults}.
- *
- * @since 5.1.0.0
- */
-public class HibernateSymbols
-{
-    /**
-     * If "true", then Hibernate will be started up at application launch, rather than lazily.
-     */
-    public static final String EARLY_START_UP = "tapestry.hibernate.early-startup";
-
-    /**
-     * If true, then the last {@link org.apache.tapestry5.hibernate.HibernateConfigurer} will invoke {@link
-     * org.hibernate.cfg.Configuration#configure()}, to read the application's <code>hibernate.cfg.xml</code>. This
-     * should be set to false for applications that configure exclusively in code.
-     */
-    public static final String DEFAULT_CONFIGURATION = "tapestry.hibernate.default-configuration";
-
-    /**
-     * If true (the default), then {@link org.apache.tapestry5.ValueEncoder}s are automatically created for each entity.
-     * Override to "false" to handle entity value encoding explicitly.
-     */
-    public static final String PROVIDE_ENTITY_VALUE_ENCODERS = "tapestry.hibernate.provide-entity-value-encoders";
-
-    /**
-     * If true, then "entity" persistence strategy is used to store Hibernate entities as {@code Session State Objects}.
-     * 
-     * @since 5.2.0.0
-     */
-    public static final String ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED = "tapestry.hibernate.entity-session-state-persistence-strategy-enabled";
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateTransactionAdvisor.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateTransactionAdvisor.java
deleted file mode 100644
index ea76770..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateTransactionAdvisor.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-
-/**
- * A replacement for {@link org.apache.tapestry5.hibernate.HibernateTransactionDecorator}.
- *
- * @since 5.1.0.0
- */
-public interface HibernateTransactionAdvisor
-{
-    /**
-     * Identifies any methods with the {@link org.apache.tapestry5.hibernate.annotations.CommitAfter} annotation and
-     * applies the transaction logic to those methods.
-     *
-     * @param receiver advice receiver
-     */
-    void addTransactionCommitAdvice(MethodAdviceReceiver receiver);
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateTransactionDecorator.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateTransactionDecorator.java
deleted file mode 100644
index 73b5d9b..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/HibernateTransactionDecorator.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-/**
- * Service that can create an interceptor that wraps around a service implementation. After invoking service methods
- * marked by {@link org.apache.tapestry5.hibernate.annotations.CommitAfter} the current transaction is committed.
- * Declared exceptions will also {@linkplain org.apache.tapestry5.hibernate.HibernateSessionManager#commit() commit the
- * transaction}; runtime exceptions will {@linkplain org.apache.tapestry5.hibernate.HibernateSessionManager#abort() the
- * transaction}.
- * <p/>
- * It is recommended that you switch from the use of decoration to the use of advice; use the {@link
- * org.apache.tapestry5.hibernate.HibernateTransactionAdvisor} (from a service advisor method) instead.
- */
-public interface HibernateTransactionDecorator
-{
-    /**
-     * Builds a transaction interceptor instance around the delegate.
-     *
-     * @param <T>
-     * @param serviceInterface interface implemented by the delegate
-     * @param delegate         existing object to be wrapped
-     * @param serviceId        id of service
-     * @return a new object implementing the interface that can be used in place of the delegate, providing
-     *         transactional behavior
-     */
-    <T> T build(Class<T> serviceInterface, T delegate, String serviceId);
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/annotations/CommitAfter.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/annotations/CommitAfter.java
deleted file mode 100644
index 9c4930f..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/hibernate/annotations/CommitAfter.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate.annotations;
-
-import org.apache.tapestry5.ioc.annotations.UseWith;
-import org.apache.tapestry5.ioc.annotations.AnnotationUseContext;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-import static org.apache.tapestry5.ioc.annotations.AnnotationUseContext.*;
-
-/**
- * Marks a method of a service (or a component method) as transactional: the active transaction should {@linkplain
- * org.apache.tapestry5.hibernate.HibernateSessionManager#commit() commit} after invoking the method.  Runtime
- * exceptions will abort the transaction, checked exceptions will <em>also commit</em> the transaction.
- *
- * @see org.apache.tapestry5.hibernate.HibernateTransactionAdvisor
- * @see org.apache.tapestry5.hibernate.HibernateTransactionDecorator
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith({COMPONENT, MIXIN, PAGE})
-public @interface CommitAfter
-{
-
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java
deleted file mode 100644
index 348c71f..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurer.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateConfigurer;
-import org.apache.tapestry5.hibernate.HibernateSymbols;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.hibernate.cfg.Configuration;
-
-/**
- * Simply calls configure() to do the default Hibernate configuration.  This will read the hibernate.cfg.xml file.
- */
-public final class DefaultHibernateConfigurer implements HibernateConfigurer
-{
-    private final boolean defaultConfiguration;
-
-    public DefaultHibernateConfigurer(
-            @Symbol(HibernateSymbols.DEFAULT_CONFIGURATION)
-            boolean defaultConfiguration)
-    {
-        this.defaultConfiguration = defaultConfiguration;
-    }
-
-    public void configure(Configuration configuration)
-    {
-        if (defaultConfiguration) configuration.configure();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateCoreMessages.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateCoreMessages.java
deleted file mode 100644
index 0edf93c..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateCoreMessages.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-import java.util.Collection;
-
-public class HibernateCoreMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(HibernateCoreMessages.class);
-
-    public static String startupTiming(long toConfigure, long overall)
-    {
-        return MESSAGES.format("startup-timing", toConfigure, overall);
-    }
-
-    public static String entityCatalog(Collection entityNames)
-    {
-        return MESSAGES.format("entity-catalog", InternalUtils.joinSorted(entityNames));
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateSessionManagerImpl.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateSessionManagerImpl.java
deleted file mode 100644
index cdcf56f..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateSessionManagerImpl.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateSessionManager;
-import org.apache.tapestry5.hibernate.HibernateSessionSource;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.hibernate.Session;
-import org.hibernate.Transaction;
-
-public class HibernateSessionManagerImpl implements HibernateSessionManager, ThreadCleanupListener
-{
-    private final Session session;
-
-    private Transaction transaction;
-
-    public HibernateSessionManagerImpl(HibernateSessionSource source)
-    {
-        session = source.create();
-
-        startNewTransaction();
-    }
-
-    private void startNewTransaction()
-    {
-        transaction = session.beginTransaction();
-    }
-
-    public void abort()
-    {
-        transaction.rollback();
-        startNewTransaction();
-    }
-
-    public void commit()
-    {
-        transaction.commit();
-        startNewTransaction();
-    }
-
-    public Session getSession()
-    {
-        return session;
-    }
-
-    /**
-     * Rollsback the transaction at the end of the request, then closes the session. This means that any uncommitted
-     * changes are lost; code should inject the HSM and invoke {@link #commit()} after making any changes, if they
-     * should persist.
-     */
-    public void threadDidCleanup()
-    {
-        transaction.rollback();
-
-        session.close();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateSessionSourceImpl.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateSessionSourceImpl.java
deleted file mode 100644
index d18e1f5..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateSessionSourceImpl.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import java.util.List;
-
-import org.apache.tapestry5.hibernate.HibernateConfigurer;
-import org.apache.tapestry5.hibernate.HibernateSessionSource;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.hibernate.Session;
-import org.hibernate.SessionFactory;
-import org.hibernate.cfg.AnnotationConfiguration;
-import org.hibernate.cfg.Configuration;
-import org.slf4j.Logger;
-
-public class HibernateSessionSourceImpl implements HibernateSessionSource, RegistryShutdownListener
-{
-    private final SessionFactory sessionFactory;
-
-    private final Configuration configuration;
-
-    public HibernateSessionSourceImpl(Logger logger, List<HibernateConfigurer> hibernateConfigurers)
-    {
-        long startTime = System.currentTimeMillis();
-
-        configuration = new AnnotationConfiguration();
-
-        for (HibernateConfigurer configurer : hibernateConfigurers)
-            configurer.configure(configuration);
-
-        long configurationComplete = System.currentTimeMillis();
-
-        sessionFactory = configuration.buildSessionFactory();
-
-        long factoryCreated = System.currentTimeMillis();
-
-        logger.info(HibernateCoreMessages.startupTiming(configurationComplete - startTime, factoryCreated - startTime));
-
-        logger.info(HibernateCoreMessages.entityCatalog(sessionFactory.getAllClassMetadata().keySet()));
-    }
-
-    public Session create()
-    {
-        return sessionFactory.openSession();
-    }
-
-    public SessionFactory getSessionFactory()
-    {
-        return sessionFactory;
-    }
-
-    public Configuration getConfiguration()
-    {
-        return configuration;
-    }
-
-    public void registryDidShutdown()
-    {
-        sessionFactory.close();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionAdvisorImpl.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionAdvisorImpl.java
deleted file mode 100644
index 3c9a7b0..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionAdvisorImpl.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateSessionManager;
-import org.apache.tapestry5.hibernate.HibernateTransactionAdvisor;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-
-import java.lang.reflect.Method;
-
-public class HibernateTransactionAdvisorImpl implements HibernateTransactionAdvisor
-{
-    private final HibernateSessionManager manager;
-
-    /**
-     * The rules for advice are the same for any method: commit on success or checked exception, abort on thrown
-     * exception ... so we can use a single shared advice object.
-     */
-    private final MethodAdvice advice = new MethodAdvice()
-    {
-        public void advise(Invocation invocation)
-        {
-            try
-            {
-                invocation.proceed();
-            }
-            catch (RuntimeException ex)
-            {
-                manager.abort();
-
-                throw ex;
-            }
-
-            // For success or checked exception, commit the transaction.
-
-            manager.commit();
-        }
-    };
-
-    public HibernateTransactionAdvisorImpl(HibernateSessionManager manager)
-    {
-        this.manager = manager;
-    }
-
-    public void addTransactionCommitAdvice(MethodAdviceReceiver receiver)
-    {
-        for (Method m : receiver.getInterface().getMethods())
-        {
-            if (m.getAnnotation(CommitAfter.class) != null)
-            {
-                receiver.adviseMethod(m, advice);
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionDecoratorImpl.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionDecoratorImpl.java
deleted file mode 100644
index c848844..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionDecoratorImpl.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateTransactionAdvisor;
-import org.apache.tapestry5.hibernate.HibernateTransactionDecorator;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-
-public class HibernateTransactionDecoratorImpl implements HibernateTransactionDecorator
-{
-    private final AspectDecorator aspectDecorator;
-
-    private final HibernateTransactionAdvisor advisor;
-
-    public HibernateTransactionDecoratorImpl(AspectDecorator aspectDecorator, HibernateTransactionAdvisor advisor)
-    {
-        this.aspectDecorator = aspectDecorator;
-        this.advisor = advisor;
-    }
-
-    public <T> T build(Class<T> serviceInterface, T delegate, String serviceId)
-    {
-        assert serviceInterface != null;
-        assert delegate != null;
-        assert InternalUtils.isNonBlank(serviceId);
-        String description = String.format("<Hibernate Transaction interceptor for %s(%s)>",
-                                           serviceId,
-                                           serviceInterface.getName());
-
-        AspectInterceptorBuilder<T> builder = aspectDecorator.createBuilder(serviceInterface, delegate, description);
-
-        advisor.addTransactionCommitAdvice(builder);
-
-        return builder.build();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/PackageNameHibernateConfigurer.java b/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/PackageNameHibernateConfigurer.java
deleted file mode 100644
index 6a223c1..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/java/org/apache/tapestry5/internal/hibernate/PackageNameHibernateConfigurer.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateConfigurer;
-import org.apache.tapestry5.hibernate.HibernateEntityPackageManager;
-import org.apache.tapestry5.ioc.services.ClassNameLocator;
-import org.hibernate.cfg.AnnotationConfiguration;
-import org.hibernate.cfg.Configuration;
-
-/**
- * Adds entity classes from a given set of packages to the configuration.
- */
-public final class PackageNameHibernateConfigurer implements HibernateConfigurer
-{
-    private final HibernateEntityPackageManager packageManager;
-
-    private final ClassNameLocator classNameLocator;
-
-    public PackageNameHibernateConfigurer(HibernateEntityPackageManager packageManager,
-            ClassNameLocator classNameLocator)
-    {
-        this.packageManager = packageManager;
-        this.classNameLocator = classNameLocator;
-    }
-
-    public void configure(Configuration configuration)
-    {
-        AnnotationConfiguration cfg = (AnnotationConfiguration) configuration;
-
-        ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
-
-        for (String packageName : packageManager.getPackageNames())
-        {
-            cfg.addPackage(packageName);
-
-            for (String className : classNameLocator.locateClassNames(packageName))
-            {
-                try
-                {
-                    Class entityClass = contextClassLoader.loadClass(className);
-
-                    cfg.addAnnotatedClass(entityClass);
-                }
-                catch (ClassNotFoundException ex)
-                {
-                    throw new RuntimeException(ex);
-                }
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/main/resources/org/apache/tapestry5/internal/hibernate/HibernateCoreStrings.properties b/maint-5-2/tapestry-hibernate-core/src/main/resources/org/apache/tapestry5/internal/hibernate/HibernateCoreStrings.properties
deleted file mode 100644
index f90ff8d..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/main/resources/org/apache/tapestry5/internal/hibernate/HibernateCoreStrings.properties
+++ /dev/null
@@ -1,16 +0,0 @@
-# Copyright 2008, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-startup-timing=Hibernate startup: %,d ms to configure, %,d ms overall.
-entity-catalog=Configured Hibernate entities: %s
diff --git a/maint-5-2/tapestry-hibernate-core/src/site/apt/conf.apt b/maint-5-2/tapestry-hibernate-core/src/site/apt/conf.apt
deleted file mode 100644
index 66309bb..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/site/apt/conf.apt
+++ /dev/null
@@ -1,72 +0,0 @@
-  ----
-  Configuration
-  ----
-
-Configuring Hibernate
-
-  The Tapestry Hibernate Library is responsible for configuring Hibernate for you. This is done in a just-in-time manner, the first time
-  a Hibernate Session is required.
-
-* HibernateSessionSource Configuration
-
-  One way to configure hibernate is to create a <<<hibernate.cfg.xml>>> file and place it in the root of your application (i.e., under src/main/resources).  Most Hibernate-specific
-  configuration occurs in this file. Another way is to contribute objects that perform configuration (such as setting event listeners). Example:
-
-+----+
-public static void contributeHibernateSessionSource(OrderedConfiguration<HibernateConfigurer> config)
-{
-  config.add("Widget", new WidgetHibernateConfigurer());
-}
-+----+
-
-  Note that the configuration is an OrderedConfiguration. The library contributes two configurers by default:
-
-   * <<Default>> - performs default hibernate configuration
-
-   * <<PackageName>> - loads entities by package name as contributed to the HibernateEntityPackageManager service
-
-* HibernateEntityPackageManager Configuration
-
-  This configuration is a set of package names, identifying where to search for entity classes.
-
-  For each package contributed, the library will:
-
-  * {{{http://www.hibernate.org/hib_docs/annotations/api/org/hibernate/cfg/AnnotationConfiguration.html#addPackage(java.lang.String)}Add the package to the configuration}},
-    which will load annotations from the package-info class within the named package, if present.
-
-  * Every Java class in the package (or any subpackage) will be {{{http://www.hibernate.org/hib_docs/annotations/api/org/hibernate/cfg/AnnotationConfiguration.html#addAnnotatedClass(java.lang.Class)}added as an annotated class}}.
-    This excludes inner classes, but includes all other classes.
-
-  []
-
-  By default, the package <application-root-package>.entities is scanned as described above. If you have additional packages containing
-  entities, you must
-  {{{../tapestry-ioc/configuration.html}contribute}} them to the tapestry.hibernate.HibernateEntityPackageManager
-  service configuration.
-
-  Example:
-
-+----+
-public static void contributeHibernateEntityPackageManager(Configuration<String> configuration)
-{
-  configuration.add("org.example.myapp.domain");
-}
-+----+
-
-  You may add as many packages in this manner as you wish. This option is most often used when the entities themselves are contained in a library included
-  within an application, rather than part of the application directly.
-
-Hibernate Symbols
-
-  The Hibernate integration includes a number of {{{../tapestry-ioc/symbols.html}symbols}} used to control certain features:
-
-  [tapestry.hibernate.provide-entity-value-encoders] If true (the default) then ValueEncoders are automatically provided for all Hibernate entities (ValueEncoders are used
-  to encode the primary keys of entities as strings that can be included in URLs).  Set to false if you
-  want direct control over this feature.
-
-  [tapestry.hibernate.default-configuration] If true (the default), then the application must include a <<<hibernate.cfg.xml>>> file.  If your application  configures
-  itself entirely in code, you should set this symbol to false.
-
-  [tapestry.hibernate.early-startup]
-  If "true", the Hibernate is initialized when the application starts up.  The default is "false", to start Hibernate up lazily, on
-  first use.
diff --git a/maint-5-2/tapestry-hibernate-core/src/site/apt/index.apt b/maint-5-2/tapestry-hibernate-core/src/site/apt/index.apt
deleted file mode 100644
index 4f17365..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/site/apt/index.apt
+++ /dev/null
@@ -1,23 +0,0 @@
- ----
- About Core Hibernate Support
- ----
-
-Core Hibernate Support
-
-  This library contains basic Hibernate support package without dependencies on the
-  {{{../tapestry-core/}tapestry-core}} module
-  (the web framework part of Tapestry); it only requires
-  the
-  {{{../tapestry-ioc/}tapestry-ioc}} module.  This makes it useful in non-web applications, such as back-end processing.
-
-  The {{{../tapestry-hibernate/}tapestry-hibernate}} module extends this further, adding features to support the
-  creation of CRUD (Create/Read/Update/Delete) database applications in Tapestry.
-
-Licensing Issues
-
-  Hibernate is licensed under the Lesser GNU Public License. This is more restrictive license than the Apache Software
-  License used by the rest of Tapestry. The restrictions mostly apply to redistributing Hibernate, especially in
-  any altered form, and will likely be irrelvant to the vast majority of users, but you should be aware.
-
-  This library is compiled against version <<3.3.1.GA>> of Hibernate (and version 3.4.0.GA of hibernate-annotations),
-  but should work with more recent versions.
diff --git a/maint-5-2/tapestry-hibernate-core/src/site/site.xml b/maint-5-2/tapestry-hibernate-core/src/site/site.xml
deleted file mode 100644
index cfc3df8..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/site/site.xml
+++ /dev/null
@@ -1,52 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Core Hibernate Support">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="About" href="index.html"/>
-            <item name="Configuration" href="conf.html"/>
-            <item name="User guide" href="../tapestry-hibernate/userguide.html"/>
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/conf/testng.xml b/maint-5-2/tapestry-hibernate-core/src/test/conf/testng.xml
deleted file mode 100644
index f4f9e2f..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/conf/testng.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!--
-   Copyright 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Core Hibernate" parallel="false" thread-count="10" annotations="1.5" verbose="2">
-    <test name="Tapestry Hibernate Internal APIs">
-        <packages>
-            <package name="org.apache.tapestry5.internal.hibernate"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurerFilterTest.java b/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurerFilterTest.java
deleted file mode 100644
index 4937f30..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/DefaultHibernateConfigurerFilterTest.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.hibernate.cfg.Configuration;
-import org.testng.annotations.Test;
-
-@Test
-public class DefaultHibernateConfigurerFilterTest extends TestBase
-{
-    public void configure_with_default_configuration_on() throws Exception
-    {
-        Configuration config = newMock(Configuration.class);
-        expect(config.configure()).andReturn(config);
-
-        replay();
-
-        new DefaultHibernateConfigurer(true).configure(config);
-
-        verify();
-    }
-
-    public void configure_with_default_configuration_off() throws Exception
-    {
-        Configuration config = newMock(Configuration.class);
-
-        replay();
-
-        new DefaultHibernateConfigurer(false).configure(config);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateSessionSourceImplTest.java b/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateSessionSourceImplTest.java
deleted file mode 100644
index 515c076..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateSessionSourceImplTest.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateConfigurer;
-import org.apache.tapestry5.hibernate.HibernateEntityPackageManager;
-import org.apache.tapestry5.hibernate.HibernateSessionSource;
-import org.apache.tapestry5.ioc.internal.services.ClassNameLocatorImpl;
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.example.app0.entities.User;
-import org.hibernate.Session;
-import org.hibernate.cfg.Configuration;
-import org.hibernate.metadata.ClassMetadata;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.List;
-
-public class HibernateSessionSourceImplTest extends IOCTestCase
-{
-    private final Logger log = LoggerFactory.getLogger("tapestry.hibernate.HibernateSessionSourceTest");
-
-    @Test
-    public void startup_without_packages()
-    {
-        Collection<String> packageNames = CollectionFactory.newList("org.example.myapp.entities",
-                "org.example.app0.entities");
-        HibernateEntityPackageManager packageManager = newMock(HibernateEntityPackageManager.class);
-        TestBase.expect(packageManager.getPackageNames()).andReturn(packageNames);
-
-        List<HibernateConfigurer> filters = Arrays.asList(new DefaultHibernateConfigurer(true),
-                new PackageNameHibernateConfigurer(packageManager, new ClassNameLocatorImpl(
-                        new ClasspathURLConverterImpl())));
-
-        replay();
-        HibernateSessionSource source = new HibernateSessionSourceImpl(log, filters);
-
-        Session session = source.create();
-        Assert.assertNotNull(session);
-
-        // make sure it found the entity in the package
-        ClassMetadata meta = session.getSessionFactory().getClassMetadata(User.class);
-        Assert.assertEquals(meta.getEntityName(), "org.example.app0.entities.User");
-
-        verify();
-    }
-
-    @Test
-    public void get_configuration()
-    {
-        HibernateConfigurer configurer = new HibernateConfigurer()
-        {
-            public void configure(Configuration configuration)
-            {
-                configuration.setProperty("foo", "bar");
-                configuration.configure();
-            }
-        };
-        HibernateSessionSource source = new HibernateSessionSourceImpl(log, Arrays.asList(configurer));
-
-        Configuration config = source.getConfiguration();
-        Assert.assertNotNull(config);
-        Assert.assertEquals("bar", config.getProperty("foo"));
-
-        // Configuration was immutable in 5.1, but Hibernate 3.6.0.Final made that impossible
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionDecoratorImplTest.java b/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionDecoratorImplTest.java
deleted file mode 100644
index 6e5830e..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateTransactionDecoratorImplTest.java
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateSessionManager;
-import org.apache.tapestry5.hibernate.HibernateTransactionDecorator;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.IOCUtilities;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.Assert;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.sql.SQLException;
-
-@SuppressWarnings({ "ThrowableInstanceNeverThrown" })
-public class HibernateTransactionDecoratorImplTest extends IOCTestCase
-{
-    private Registry registry;
-
-    private AspectDecorator aspectDecorator;
-
-    @BeforeClass
-    public void setup()
-    {
-        registry = IOCUtilities.buildDefaultRegistry();
-
-        aspectDecorator = registry.getService(AspectDecorator.class);
-    }
-
-
-    @AfterClass
-    public void shutdown()
-    {
-        registry.shutdown();
-
-        aspectDecorator = null;
-        registry = null;
-    }
-
-    @Test
-    public void undecorated()
-    {
-        VoidService delegate = newMock(VoidService.class);
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        VoidService interceptor = decorator.build(VoidService.class, delegate, "foo.Bar");
-
-        delegate.undecorated();
-
-        replay();
-        interceptor.undecorated();
-        verify();
-
-        assertToString(interceptor);
-    }
-
-    @Test
-    public void void_method()
-    {
-        VoidService delegate = newMock(VoidService.class);
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        VoidService interceptor = decorator.build(VoidService.class, delegate, "foo.Bar");
-
-        delegate.voidMethod();
-        manager.commit();
-
-        replay();
-        interceptor.voidMethod();
-        verify();
-
-        assertToString(interceptor);
-    }
-
-    @Test
-    public void void_method_with_param()
-    {
-        VoidService delegate = newMock(VoidService.class);
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        VoidService interceptor = decorator.build(VoidService.class, delegate, "foo.Bar");
-
-        delegate.voidMethodWithParam(777);
-        manager.commit();
-
-        replay();
-        interceptor.voidMethodWithParam(777);
-        verify();
-
-        assertToString(interceptor);
-    }
-
-    @Test
-    public void runtime_exception_will_abort_transaction() throws Exception
-    {
-        Performer delegate = newMock(Performer.class);
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        RuntimeException re = new RuntimeException("Unexpected.");
-
-        delegate.perform();
-        TestBase.setThrowable(re);
-        manager.abort();
-
-        replay();
-
-        Performer interceptor = decorator.build(Performer.class, delegate, "foo.Bar");
-
-        try
-        {
-            interceptor.perform();
-            TestBase.unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            Assert.assertSame(ex, re);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void checked_exception_will_commit_transaction() throws Exception
-    {
-        Performer delegate = newMock(Performer.class);
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        SQLException se = new SQLException("Checked.");
-
-        delegate.perform();
-        TestBase.setThrowable(se);
-        manager.commit();
-
-        replay();
-
-        Performer interceptor = decorator.build(Performer.class, delegate, "foo.Bar");
-
-        try
-        {
-            interceptor.perform();
-            TestBase.unreachable();
-        }
-        catch (SQLException ex)
-        {
-            Assert.assertSame(ex, se);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void return_type_method()
-    {
-        ReturnTypeService delegate = newTestService();
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        ReturnTypeService interceptor = decorator.build(ReturnTypeService.class, delegate, "foo.Bar");
-
-        delegate.returnTypeMethod();
-
-        manager.commit();
-
-        replay();
-        Assert.assertEquals(interceptor.returnTypeMethod(), "Foo");
-        verify();
-    }
-
-    @Test
-    public void return_type_method_with_param()
-    {
-        ReturnTypeService delegate = newTestService();
-        HibernateSessionManager manager = newMock(HibernateSessionManager.class);
-        HibernateTransactionDecorator decorator = newHibernateSessionManagerDecorator(manager);
-        ReturnTypeService interceptor = decorator.build(ReturnTypeService.class, delegate, "foo.Bar");
-
-        delegate.returnTypeMethodWithParam(5, 3);
-
-        manager.commit();
-
-        replay();
-        Assert.assertEquals(interceptor.returnTypeMethodWithParam(5, 3), 8);
-        verify();
-
-        Assert.assertEquals(
-                interceptor.toString(),
-                "Baz");
-    }
-
-    private HibernateTransactionDecorator newHibernateSessionManagerDecorator(HibernateSessionManager manager)
-    {
-        return new HibernateTransactionDecoratorImpl(aspectDecorator, new HibernateTransactionAdvisorImpl(manager));
-    }
-
-    private void assertToString(VoidService interceptor)
-    {
-        Assert.assertEquals(
-                interceptor.toString(),
-                "<Hibernate Transaction interceptor for foo.Bar(" + getClass().getName() + "$VoidService)>");
-    }
-
-    private ReturnTypeService newTestService()
-    {
-        return new ReturnTypeService()
-        {
-
-            public String returnTypeMethod()
-            {
-                return "Foo";
-            }
-
-            public int returnTypeMethodWithParam(int first, int second)
-            {
-                return first + second;
-            }
-
-            public String toString()
-            {
-                return "Baz";
-            }
-        };
-    }
-
-    public interface ReturnTypeService
-    {
-        @CommitAfter
-        String returnTypeMethod();
-
-        @CommitAfter
-        int returnTypeMethodWithParam(int first, int second);
-
-        String toString();
-    }
-
-    public interface VoidService
-    {
-        void undecorated();
-
-        @CommitAfter
-        void voidMethod();
-
-        @CommitAfter
-        void voidMethodWithParam(long id);
-    }
-
-    public interface Performer
-    {
-        @CommitAfter
-        void perform() throws SQLException;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/java/org/example/app0/entities/User.java b/maint-5-2/tapestry-hibernate-core/src/test/java/org/example/app0/entities/User.java
deleted file mode 100644
index c07f1d8..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/java/org/example/app0/entities/User.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.entities;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Version;
-
-@Entity
-public class User
-{
-    // NOTE: Hibernate doesn't understand the '_' syntax. It will end up putting underscores on all the properties
-    @Id
-    @GeneratedValue
-    private Long id;
-
-    private String firstName;
-
-    private String lastName;
-
-    private String email;
-
-    private String encodedPassword;
-
-    @Version
-    private int version;
-
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public String getEncodedPassword()
-    {
-        return encodedPassword;
-    }
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public int getVersion()
-    {
-        return version;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public void setEncodedPassword(String encodedPassword)
-    {
-        this.encodedPassword = encodedPassword;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/resources/hibernate.cfg.xml b/maint-5-2/tapestry-hibernate-core/src/test/resources/hibernate.cfg.xml
deleted file mode 100644
index 91123c5..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/resources/hibernate.cfg.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!-- 
-   Copyright 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE hibernate-configuration PUBLIC
-        "-//Hibernate/Hibernate Configuration DTD//EN"
-        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
-
-    <session-factory>
-        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
-        <property name="hibernate.connection.url">jdbc:hsqldb:mem:test</property>
-        <property name="hibernate.connection.username">sa</property>
-        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
-
-        <property name="show_sql">true</property>
-        <property name="format_sql">true</property>
-        <property name="hbm2ddl.auto">update</property>
-
-        <property name="hibernate.c3p0.min_size">5</property>
-        <property name="hibernate.c3p0.max_size">20</property>
-        <property name="hibernate.c3p0.timeout">300</property>
-        <property name="hibernate.c3p0.max_statements">50</property>
-        <property name="hibernate.c3p0.idle_test_period">3000</property>
-    </session-factory>
-
-
-</hibernate-configuration>
diff --git a/maint-5-2/tapestry-hibernate-core/src/test/resources/log4j.properties b/maint-5-2/tapestry-hibernate-core/src/test/resources/log4j.properties
deleted file mode 100644
index 9597f32..0000000
--- a/maint-5-2/tapestry-hibernate-core/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,29 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=WARN, A1
-
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry5.TapestryFilter=info
-log4j.category.org.apache.tapestry=error
-log4j.category.tapestry=error
-log4j.category.tapestry.ioc.ClassFactory=error
-
-log4j.category.tapestry.hibernate=info
diff --git a/maint-5-2/tapestry-hibernate/LICENSE.txt b/maint-5-2/tapestry-hibernate/LICENSE.txt
deleted file mode 100644
index 18a3697..0000000
--- a/maint-5-2/tapestry-hibernate/LICENSE.txt
+++ /dev/null
@@ -1,715 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-
--------------------------------------------------------------------------------
-   
-HIBERNATE
-
-Hibernate is not bundled with tapestry-hibernate, but is bound to it.   
-   
-		  GNU LESSER GENERAL PUBLIC LICENSE
-		       Version 2.1, February 1999
-
- Copyright (C) 1991, 1999 Free Software Foundation, Inc.
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- Everyone is permitted to copy and distribute verbatim copies
- of this license document, but changing it is not allowed.
-
-[This is the first released version of the Lesser GPL.  It also counts
- as the successor of the GNU Library Public License, version 2, hence
- the version number 2.1.]
-
-			    Preamble
-
-  The licenses for most software are designed to take away your
-freedom to share and change it.  By contrast, the GNU General Public
-Licenses are intended to guarantee your freedom to share and change
-free software--to make sure the software is free for all its users.
-
-  This license, the Lesser General Public License, applies to some
-specially designated software packages--typically libraries--of the
-Free Software Foundation and other authors who decide to use it.  You
-can use it too, but we suggest you first think carefully about whether
-this license or the ordinary General Public License is the better
-strategy to use in any particular case, based on the explanations below.
-
-  When we speak of free software, we are referring to freedom of use,
-not price.  Our General Public Licenses are designed to make sure that
-you have the freedom to distribute copies of free software (and charge
-for this service if you wish); that you receive source code or can get
-it if you want it; that you can change the software and use pieces of
-it in new free programs; and that you are informed that you can do
-these things.
-
-  To protect your rights, we need to make restrictions that forbid
-distributors to deny you these rights or to ask you to surrender these
-rights.  These restrictions translate to certain responsibilities for
-you if you distribute copies of the library or if you modify it.
-
-  For example, if you distribute copies of the library, whether gratis
-or for a fee, you must give the recipients all the rights that we gave
-you.  You must make sure that they, too, receive or can get the source
-code.  If you link other code with the library, you must provide
-complete object files to the recipients, so that they can relink them
-with the library after making changes to the library and recompiling
-it.  And you must show them these terms so they know their rights.
-
-  We protect your rights with a two-step method: (1) we copyright the
-library, and (2) we offer you this license, which gives you legal
-permission to copy, distribute and/or modify the library.
-
-  To protect each distributor, we want to make it very clear that
-there is no warranty for the free library.  Also, if the library is
-modified by someone else and passed on, the recipients should know
-that what they have is not the original version, so that the original
-author's reputation will not be affected by problems that might be
-introduced by others.
-
-  Finally, software patents pose a constant threat to the existence of
-any free program.  We wish to make sure that a company cannot
-effectively restrict the users of a free program by obtaining a
-restrictive license from a patent holder.  Therefore, we insist that
-any patent license obtained for a version of the library must be
-consistent with the full freedom of use specified in this license.
-
-  Most GNU software, including some libraries, is covered by the
-ordinary GNU General Public License.  This license, the GNU Lesser
-General Public License, applies to certain designated libraries, and
-is quite different from the ordinary General Public License.  We use
-this license for certain libraries in order to permit linking those
-libraries into non-free programs.
-
-  When a program is linked with a library, whether statically or using
-a shared library, the combination of the two is legally speaking a
-combined work, a derivative of the original library.  The ordinary
-General Public License therefore permits such linking only if the
-entire combination fits its criteria of freedom.  The Lesser General
-Public License permits more lax criteria for linking other code with
-the library.
-
-  We call this license the "Lesser" General Public License because it
-does Less to protect the user's freedom than the ordinary General
-Public License.  It also provides other free software developers Less
-of an advantage over competing non-free programs.  These disadvantages
-are the reason we use the ordinary General Public License for many
-libraries.  However, the Lesser license provides advantages in certain
-special circumstances.
-
-  For example, on rare occasions, there may be a special need to
-encourage the widest possible use of a certain library, so that it becomes
-a de-facto standard.  To achieve this, non-free programs must be
-allowed to use the library.  A more frequent case is that a free
-library does the same job as widely used non-free libraries.  In this
-case, there is little to gain by limiting the free library to free
-software only, so we use the Lesser General Public License.
-
-  In other cases, permission to use a particular library in non-free
-programs enables a greater number of people to use a large body of
-free software.  For example, permission to use the GNU C Library in
-non-free programs enables many more people to use the whole GNU
-operating system, as well as its variant, the GNU/Linux operating
-system.
-
-  Although the Lesser General Public License is Less protective of the
-users' freedom, it does ensure that the user of a program that is
-linked with the Library has the freedom and the wherewithal to run
-that program using a modified version of the Library.
-
-  The precise terms and conditions for copying, distribution and
-modification follow.  Pay close attention to the difference between a
-"work based on the library" and a "work that uses the library".  The
-former contains code derived from the library, whereas the latter must
-be combined with the library in order to run.
-
-		  GNU LESSER GENERAL PUBLIC LICENSE
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
-
-  0. This License Agreement applies to any software library or other
-program which contains a notice placed by the copyright holder or
-other authorized party saying it may be distributed under the terms of
-this Lesser General Public License (also called "this License").
-Each licensee is addressed as "you".
-
-  A "library" means a collection of software functions and/or data
-prepared so as to be conveniently linked with application programs
-(which use some of those functions and data) to form executables.
-
-  The "Library", below, refers to any such software library or work
-which has been distributed under these terms.  A "work based on the
-Library" means either the Library or any derivative work under
-copyright law: that is to say, a work containing the Library or a
-portion of it, either verbatim or with modifications and/or translated
-straightforwardly into another language.  (Hereinafter, translation is
-included without limitation in the term "modification".)
-
-  "Source code" for a work means the preferred form of the work for
-making modifications to it.  For a library, complete source code means
-all the source code for all modules it contains, plus any associated
-interface definition files, plus the scripts used to control compilation
-and installation of the library.
-
-  Activities other than copying, distribution and modification are not
-covered by this License; they are outside its scope.  The act of
-running a program using the Library is not restricted, and output from
-such a program is covered only if its contents constitute a work based
-on the Library (independent of the use of the Library in a tool for
-writing it).  Whether that is true depends on what the Library does
-and what the program that uses the Library does.
-  
-  1. You may copy and distribute verbatim copies of the Library's
-complete source code as you receive it, in any medium, provided that
-you conspicuously and appropriately publish on each copy an
-appropriate copyright notice and disclaimer of warranty; keep intact
-all the notices that refer to this License and to the absence of any
-warranty; and distribute a copy of this License along with the
-Library.
-
-  You may charge a fee for the physical act of transferring a copy,
-and you may at your option offer warranty protection in exchange for a
-fee.
-
-  2. You may modify your copy or copies of the Library or any portion
-of it, thus forming a work based on the Library, and copy and
-distribute such modifications or work under the terms of Section 1
-above, provided that you also meet all of these conditions:
-
-    a) The modified work must itself be a software library.
-
-    b) You must cause the files modified to carry prominent notices
-    stating that you changed the files and the date of any change.
-
-    c) You must cause the whole of the work to be licensed at no
-    charge to all third parties under the terms of this License.
-
-    d) If a facility in the modified Library refers to a function or a
-    table of data to be supplied by an application program that uses
-    the facility, other than as an argument passed when the facility
-    is invoked, then you must make a good faith effort to ensure that,
-    in the event an application does not supply such function or
-    table, the facility still operates, and performs whatever part of
-    its purpose remains meaningful.
-
-    (For example, a function in a library to compute square roots has
-    a purpose that is entirely well-defined independent of the
-    application.  Therefore, Subsection 2d requires that any
-    application-supplied function or table used by this function must
-    be optional: if the application does not supply it, the square
-    root function must still compute square roots.)
-
-These requirements apply to the modified work as a whole.  If
-identifiable sections of that work are not derived from the Library,
-and can be reasonably considered independent and separate works in
-themselves, then this License, and its terms, do not apply to those
-sections when you distribute them as separate works.  But when you
-distribute the same sections as part of a whole which is a work based
-on the Library, the distribution of the whole must be on the terms of
-this License, whose permissions for other licensees extend to the
-entire whole, and thus to each and every part regardless of who wrote
-it.
-
-Thus, it is not the intent of this section to claim rights or contest
-your rights to work written entirely by you; rather, the intent is to
-exercise the right to control the distribution of derivative or
-collective works based on the Library.
-
-In addition, mere aggregation of another work not based on the Library
-with the Library (or with a work based on the Library) on a volume of
-a storage or distribution medium does not bring the other work under
-the scope of this License.
-
-  3. You may opt to apply the terms of the ordinary GNU General Public
-License instead of this License to a given copy of the Library.  To do
-this, you must alter all the notices that refer to this License, so
-that they refer to the ordinary GNU General Public License, version 2,
-instead of to this License.  (If a newer version than version 2 of the
-ordinary GNU General Public License has appeared, then you can specify
-that version instead if you wish.)  Do not make any other change in
-these notices.
-
-  Once this change is made in a given copy, it is irreversible for
-that copy, so the ordinary GNU General Public License applies to all
-subsequent copies and derivative works made from that copy.
-
-  This option is useful when you wish to copy part of the code of
-the Library into a program that is not a library.
-
-  4. You may copy and distribute the Library (or a portion or
-derivative of it, under Section 2) in object code or executable form
-under the terms of Sections 1 and 2 above provided that you accompany
-it with the complete corresponding machine-readable source code, which
-must be distributed under the terms of Sections 1 and 2 above on a
-medium customarily used for software interchange.
-
-  If distribution of object code is made by offering access to copy
-from a designated place, then offering equivalent access to copy the
-source code from the same place satisfies the requirement to
-distribute the source code, even though third parties are not
-compelled to copy the source along with the object code.
-
-  5. A program that contains no derivative of any portion of the
-Library, but is designed to work with the Library by being compiled or
-linked with it, is called a "work that uses the Library".  Such a
-work, in isolation, is not a derivative work of the Library, and
-therefore falls outside the scope of this License.
-
-  However, linking a "work that uses the Library" with the Library
-creates an executable that is a derivative of the Library (because it
-contains portions of the Library), rather than a "work that uses the
-library".  The executable is therefore covered by this License.
-Section 6 states terms for distribution of such executables.
-
-  When a "work that uses the Library" uses material from a header file
-that is part of the Library, the object code for the work may be a
-derivative work of the Library even though the source code is not.
-Whether this is true is especially significant if the work can be
-linked without the Library, or if the work is itself a library.  The
-threshold for this to be true is not precisely defined by law.
-
-  If such an object file uses only numerical parameters, data
-structure layouts and accessors, and small macros and small inline
-functions (ten lines or less in length), then the use of the object
-file is unrestricted, regardless of whether it is legally a derivative
-work.  (Executables containing this object code plus portions of the
-Library will still fall under Section 6.)
-
-  Otherwise, if the work is a derivative of the Library, you may
-distribute the object code for the work under the terms of Section 6.
-Any executables containing that work also fall under Section 6,
-whether or not they are linked directly with the Library itself.
-
-  6. As an exception to the Sections above, you may also combine or
-link a "work that uses the Library" with the Library to produce a
-work containing portions of the Library, and distribute that work
-under terms of your choice, provided that the terms permit
-modification of the work for the customer's own use and reverse
-engineering for debugging such modifications.
-
-  You must give prominent notice with each copy of the work that the
-Library is used in it and that the Library and its use are covered by
-this License.  You must supply a copy of this License.  If the work
-during execution displays copyright notices, you must include the
-copyright notice for the Library among them, as well as a reference
-directing the user to the copy of this License.  Also, you must do one
-of these things:
-
-    a) Accompany the work with the complete corresponding
-    machine-readable source code for the Library including whatever
-    changes were used in the work (which must be distributed under
-    Sections 1 and 2 above); and, if the work is an executable linked
-    with the Library, with the complete machine-readable "work that
-    uses the Library", as object code and/or source code, so that the
-    user can modify the Library and then relink to produce a modified
-    executable containing the modified Library.  (It is understood
-    that the user who changes the contents of definitions files in the
-    Library will not necessarily be able to recompile the application
-    to use the modified definitions.)
-
-    b) Use a suitable shared library mechanism for linking with the
-    Library.  A suitable mechanism is one that (1) uses at run time a
-    copy of the library already present on the user's computer system,
-    rather than copying library functions into the executable, and (2)
-    will operate properly with a modified version of the library, if
-    the user installs one, as long as the modified version is
-    interface-compatible with the version that the work was made with.
-
-    c) Accompany the work with a written offer, valid for at
-    least three years, to give the same user the materials
-    specified in Subsection 6a, above, for a charge no more
-    than the cost of performing this distribution.
-
-    d) If distribution of the work is made by offering access to copy
-    from a designated place, offer equivalent access to copy the above
-    specified materials from the same place.
-
-    e) Verify that the user has already received a copy of these
-    materials or that you have already sent this user a copy.
-
-  For an executable, the required form of the "work that uses the
-Library" must include any data and utility programs needed for
-reproducing the executable from it.  However, as a special exception,
-the materials to be distributed need not include anything that is
-normally distributed (in either source or binary form) with the major
-components (compiler, kernel, and so on) of the operating system on
-which the executable runs, unless that component itself accompanies
-the executable.
-
-  It may happen that this requirement contradicts the license
-restrictions of other proprietary libraries that do not normally
-accompany the operating system.  Such a contradiction means you cannot
-use both them and the Library together in an executable that you
-distribute.
-
-  7. You may place library facilities that are a work based on the
-Library side-by-side in a single library together with other library
-facilities not covered by this License, and distribute such a combined
-library, provided that the separate distribution of the work based on
-the Library and of the other library facilities is otherwise
-permitted, and provided that you do these two things:
-
-    a) Accompany the combined library with a copy of the same work
-    based on the Library, uncombined with any other library
-    facilities.  This must be distributed under the terms of the
-    Sections above.
-
-    b) Give prominent notice with the combined library of the fact
-    that part of it is a work based on the Library, and explaining
-    where to find the accompanying uncombined form of the same work.
-
-  8. You may not copy, modify, sublicense, link with, or distribute
-the Library except as expressly provided under this License.  Any
-attempt otherwise to copy, modify, sublicense, link with, or
-distribute the Library is void, and will automatically terminate your
-rights under this License.  However, parties who have received copies,
-or rights, from you under this License will not have their licenses
-terminated so long as such parties remain in full compliance.
-
-  9. You are not required to accept this License, since you have not
-signed it.  However, nothing else grants you permission to modify or
-distribute the Library or its derivative works.  These actions are
-prohibited by law if you do not accept this License.  Therefore, by
-modifying or distributing the Library (or any work based on the
-Library), you indicate your acceptance of this License to do so, and
-all its terms and conditions for copying, distributing or modifying
-the Library or works based on it.
-
-  10. Each time you redistribute the Library (or any work based on the
-Library), the recipient automatically receives a license from the
-original licensor to copy, distribute, link with or modify the Library
-subject to these terms and conditions.  You may not impose any further
-restrictions on the recipients' exercise of the rights granted herein.
-You are not responsible for enforcing compliance by third parties with
-this License.
-
-  11. If, as a consequence of a court judgment or allegation of patent
-infringement or for any other reason (not limited to patent issues),
-conditions are imposed on you (whether by court order, agreement or
-otherwise) that contradict the conditions of this License, they do not
-excuse you from the conditions of this License.  If you cannot
-distribute so as to satisfy simultaneously your obligations under this
-License and any other pertinent obligations, then as a consequence you
-may not distribute the Library at all.  For example, if a patent
-license would not permit royalty-free redistribution of the Library by
-all those who receive copies directly or indirectly through you, then
-the only way you could satisfy both it and this License would be to
-refrain entirely from distribution of the Library.
-
-If any portion of this section is held invalid or unenforceable under any
-particular circumstance, the balance of the section is intended to apply,
-and the section as a whole is intended to apply in other circumstances.
-
-It is not the purpose of this section to induce you to infringe any
-patents or other property right claims or to contest validity of any
-such claims; this section has the sole purpose of protecting the
-integrity of the free software distribution system which is
-implemented by public license practices.  Many people have made
-generous contributions to the wide range of software distributed
-through that system in reliance on consistent application of that
-system; it is up to the author/donor to decide if he or she is willing
-to distribute software through any other system and a licensee cannot
-impose that choice.
-
-This section is intended to make thoroughly clear what is believed to
-be a consequence of the rest of this License.
-
-  12. If the distribution and/or use of the Library is restricted in
-certain countries either by patents or by copyrighted interfaces, the
-original copyright holder who places the Library under this License may add
-an explicit geographical distribution limitation excluding those countries,
-so that distribution is permitted only in or among countries not thus
-excluded.  In such case, this License incorporates the limitation as if
-written in the body of this License.
-
-  13. The Free Software Foundation may publish revised and/or new
-versions of the Lesser General Public License from time to time.
-Such new versions will be similar in spirit to the present version,
-but may differ in detail to address new problems or concerns.
-
-Each version is given a distinguishing version number.  If the Library
-specifies a version number of this License which applies to it and
-"any later version", you have the option of following the terms and
-conditions either of that version or of any later version published by
-the Free Software Foundation.  If the Library does not specify a
-license version number, you may choose any version ever published by
-the Free Software Foundation.
-
-  14. If you wish to incorporate parts of the Library into other free
-programs whose distribution conditions are incompatible with these,
-write to the author to ask for permission.  For software which is
-copyrighted by the Free Software Foundation, write to the Free
-Software Foundation; we sometimes make exceptions for this.  Our
-decision will be guided by the two goals of preserving the free status
-of all derivatives of our free software and of promoting the sharing
-and reuse of software generally.
-
-			    NO WARRANTY
-
-  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
-WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
-EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
-OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
-KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
-PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
-LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
-THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
-
-  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
-AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
-FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
-LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
-RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
-FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
-SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
-DAMAGES.
-
-		     END OF TERMS AND CONDITIONS
-		     
-           How to Apply These Terms to Your New Libraries
-
-  If you develop a new library, and you want it to be of the greatest
-possible use to the public, we recommend making it free software that
-everyone can redistribute and change.  You can do so by permitting
-redistribution under these terms (or, alternatively, under the terms of the
-ordinary General Public License).
-
-  To apply these terms, attach the following notices to the library.  It is
-safest to attach them to the start of each source file to most effectively
-convey the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-    <one line to give the library's name and a brief idea of what it does.>
-    Copyright (C) <year>  <name of author>
-
-    This library is free software; you can redistribute it and/or
-    modify it under the terms of the GNU Lesser General Public
-    License as published by the Free Software Foundation; either
-    version 2.1 of the License, or (at your option) any later version.
-
-    This library is distributed in the hope that it will be useful,
-    but WITHOUT ANY WARRANTY; without even the implied warranty of
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
-    Lesser General Public License for more details.
-
-    You should have received a copy of the GNU Lesser General Public
-    License along with this library; if not, write to the Free Software
-    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
-
-Also add information on how to contact you by electronic and paper mail.
-
-You should also get your employer (if you work as a programmer) or your
-school, if any, to sign a "copyright disclaimer" for the library, if
-necessary.  Here is a sample; alter the names:
-
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the
-  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
-
-  <signature of Ty Coon>, 1 April 1990
-  Ty Coon, President of Vice
-
-That's all there is to it!
-
-
-   
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/NOTICE.txt b/maint-5-2/tapestry-hibernate/NOTICE.txt
deleted file mode 100644
index c5b9d10..0000000
--- a/maint-5-2/tapestry-hibernate/NOTICE.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product makes use of the Hibernate Object Relational Mapping Framework, which
-is released under the Lesser GNU Public License.
-http://hibernate.org
-
-
-
-
diff --git a/maint-5-2/tapestry-hibernate/pom.xml b/maint-5-2/tapestry-hibernate/pom.xml
deleted file mode 100644
index 50dd2f6..0000000
--- a/maint-5-2/tapestry-hibernate/pom.xml
+++ /dev/null
@@ -1,133 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-hibernate</artifactId>
-    <name>Tapestry/Hibernate Integration Library</name>
-    <description>
-        Provides support for simple CRUD applications built on top of
-        Tapestry and Hibernate
-    </description>
-    <packaging>jar</packaging>
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-    <inceptionYear>2007</inceptionYear>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-core</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-hibernate-core</artifactId>
-        </dependency>
-
-
-        <!-- Testing -->
-
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-test</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>hsqldb</groupId>
-            <artifactId>hsqldb</artifactId>
-            <version>1.8.0.7</version>
-            <scope>test</scope>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.14</version>
-            <scope>test</scope>
-        </dependency>
-
-
-    </dependencies>
-
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Tapestry-Module-Classes>
-                                org.apache.tapestry5.hibernate.HibernateModule
-                            </Tapestry-Module-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-
-        </plugins>
-    </build>
-
-    <repositories>
-        <repository>
-            <id>jboss</id>
-            <name>JBoss</name>
-            <url>https://repository.jboss.org/nexus/content/repositories/releases/</url>
-        </repository>
-    </repositories>
-
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateGridDataSource.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateGridDataSource.java
deleted file mode 100644
index 0a2df60..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateGridDataSource.java
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import java.util.List;
-
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.grid.SortConstraint;
-import org.hibernate.Criteria;
-import org.hibernate.Session;
-import org.hibernate.criterion.Order;
-import org.hibernate.criterion.Projections;
-
-/**
- * A simple implementation of {@link org.apache.tapestry5.grid.GridDataSource} based on a Hibernate Session and a known
- * entity class.  This implementation does support multiple {@link org.apache.tapestry5.grid.SortConstraint sort
- * constraints}; however it assumes a direct mapping from sort constraint property to Hibernate property.
- * <p/>
- * This class is <em>not</em> thread-safe; it maintains internal state.
- * <p/>
- * Typically, an instance of this object is created fresh as needed (that is, it is not stored between requests).
- */
-public class HibernateGridDataSource implements GridDataSource
-{
-    private final Session session;
-
-    private final Class entityType;
-
-    private int startIndex;
-
-    private List preparedResults;
-
-    public HibernateGridDataSource(Session session, Class entityType)
-    {
-        assert session != null;
-        assert entityType != null;
-        this.session = session;
-        this.entityType = entityType;
-    }
-
-    /**
-     * Returns the total number of rows for the configured entity type.
-     */
-    public int getAvailableRows()
-    {
-        Criteria criteria = session.createCriteria(entityType);
-
-        applyAdditionalConstraints(criteria);
-
-        criteria.setProjection(Projections.rowCount());
-
-        Number result = (Number) criteria.uniqueResult();
-
-        return result.intValue();
-    }
-
-    /**
-     * Prepares the results, performing a query (applying the sort results, and the provided start and end index). The
-     * results can later be obtained from {@link #getRowValue(int)} }.
-     *
-     * @param startIndex      index, from zero, of the first item to be retrieved
-     * @param endIndex        index, from zero, of the last item to be retrieved
-     * @param sortConstraints zero or more constraints used to set the order of the returned values
-     */
-    public void prepare(int startIndex, int endIndex, List<SortConstraint> sortConstraints)
-    {
-        assert sortConstraints != null;
-        Criteria crit = session.createCriteria(entityType);
-
-        crit.setFirstResult(startIndex).setMaxResults(endIndex - startIndex + 1);
-
-        for (SortConstraint constraint : sortConstraints)
-        {
-
-            String propertyName = constraint.getPropertyModel().getPropertyName();
-
-            switch (constraint.getColumnSort())
-            {
-
-                case ASCENDING:
-
-                    crit.addOrder(Order.asc(propertyName));
-                    break;
-
-                case DESCENDING:
-                    crit.addOrder(Order.desc(propertyName));
-                    break;
-
-                default:
-            }
-        }
-
-        applyAdditionalConstraints(crit);
-
-        this.startIndex = startIndex;
-
-        preparedResults = crit.list();
-    }
-
-    /**
-     * Invoked after the main criteria has been set up (firstResult, maxResults and any sort contraints). This gives
-     * subclasses a chance to apply additional constraints before the list of results is obtained from the criteria.
-     * This implementation does nothing and may be overridden.
-     */
-    protected void applyAdditionalConstraints(Criteria crit)
-    {
-    }
-
-    /**
-     * Returns a row value at the given index (which must be within the range defined by the call to {@link
-     * #prepare(int, int, java.util.List)} ).
-     *
-     * @param index of object
-     * @return object at that index
-     */
-    public Object getRowValue(int index)
-    {
-        return preparedResults.get(index - startIndex);
-    }
-
-    /**
-     * Returns the entity type, as provided via the constructor.
-     */
-    public Class getRowType()
-    {
-        return entityType;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java
deleted file mode 100644
index a792793..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernateModule.java
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate;
-
-import java.util.Iterator;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.internal.InternalConstants;
-import org.apache.tapestry5.internal.hibernate.CommitAfterWorker;
-import org.apache.tapestry5.internal.hibernate.EntityApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.internal.hibernate.EntityPersistentFieldStrategy;
-import org.apache.tapestry5.internal.hibernate.HibernateEntityValueEncoder;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.services.AliasContribution;
-import org.apache.tapestry5.services.ApplicationStateContribution;
-import org.apache.tapestry5.services.ApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.ComponentClassTransformWorker;
-import org.apache.tapestry5.services.LibraryMapping;
-import org.apache.tapestry5.services.PersistentFieldStrategy;
-import org.apache.tapestry5.services.ValueEncoderFactory;
-import org.hibernate.Session;
-import org.hibernate.mapping.PersistentClass;
-
-/**
- * Supplements the services defined by {@link org.apache.tapestry5.hibernate.HibernateCoreModule} with additional
- * services and configuration specific to Tapestry web application.
- */
-@SuppressWarnings({"JavaDoc"})
-public class HibernateModule
-{
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(HibernateSymbols.PROVIDE_ENTITY_VALUE_ENCODERS, "true");
-        configuration.add(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED, "false");
-    }
-
-    /**
-     * Contributes the package "&lt;root&gt;.entities" to the configuration, so that it will be scanned for annotated
-     * entity classes.
-     */
-    public static void contributeHibernateEntityPackageManager(Configuration<String> configuration,
-
-                                                               @Symbol(InternalConstants.TAPESTRY_APP_PACKAGE_PARAM)
-                                                               String appRootPackage)
-    {
-        configuration.add(appRootPackage + ".entities");
-    }
-
-
-    public static void contributeAlias(Configuration<AliasContribution> configuration, @HibernateCore Session session)
-    {
-        configuration.add(AliasContribution.create(Session.class, session));
-    }
-
-
-    /**
-     * Contributes {@link ValueEncoderFactory}s for all registered Hibernate entity classes. Encoding and decoding are
-     * based on the id property value of the entity using type coercion. Hence, if the id can be coerced to a String and
-     * back then the entity can be coerced.
-     */
-    @SuppressWarnings("unchecked")
-    public static void contributeValueEncoderSource(MappedConfiguration<Class, ValueEncoderFactory> configuration,
-                                                    @Symbol(HibernateSymbols.PROVIDE_ENTITY_VALUE_ENCODERS)
-                                                    boolean provideEncoders,
-                                                    final HibernateSessionSource sessionSource,
-                                                    final Session session,
-                                                    final TypeCoercer typeCoercer,
-                                                    final PropertyAccess propertyAccess,
-                                                    final LoggerSource loggerSource)
-    {
-        if (!provideEncoders) return;
-
-        org.hibernate.cfg.Configuration config = sessionSource.getConfiguration();
-        Iterator<PersistentClass> mappings = config.getClassMappings();
-        while (mappings.hasNext())
-        {
-            final PersistentClass persistentClass = mappings.next();
-            final Class entityClass = persistentClass.getMappedClass();
-            
-            if(entityClass != null)
-            {
-                ValueEncoderFactory factory = new ValueEncoderFactory()
-                {
-                    public ValueEncoder create(Class type)
-                    {
-                        return new HibernateEntityValueEncoder(entityClass, persistentClass, session, propertyAccess,
-                                                               typeCoercer, loggerSource.getLogger(entityClass));
-                    }
-                };
-    
-                configuration.add(entityClass, factory);
-            
-            }
-        }
-    }
-
-    /**
-     * Contributes the following: <dl> <dt>entity</dt> <dd>Stores the id of the entity and reloads from the {@link
-     * Session}</dd> </dl>
-     */
-    public static void contributePersistentFieldManager(
-            MappedConfiguration<String, PersistentFieldStrategy> configuration)
-    {
-        configuration.addInstance(HibernatePersistenceConstants.ENTITY, EntityPersistentFieldStrategy.class);
-    }
-    
-    /**
-     * Contributes the following strategy: <dl> <dt>entity</dt> <dd>Stores the id of the entity and reloads from the {@link
-     * Session}</dd> </dl>
-     */
-    public void contributeApplicationStatePersistenceStrategySource(
-            MappedConfiguration<String, ApplicationStatePersistenceStrategy> configuration)
-    {
-        configuration.addInstance(HibernatePersistenceConstants.ENTITY, EntityApplicationStatePersistenceStrategy.class);
-    }
-    
-    /**
-     * Contributes {@link ApplicationStateContribution}s for all registered Hibernate entity classes.
-     * 
-     * @param configuration Configuration to contribute
-     * @param entitySessionStatePersistenceStrategyEnabled indicates if contribution should take place
-     * @param sessionSource creates Hibernate session
-     */
-    public static void contributeApplicationStateManager(MappedConfiguration<Class, ApplicationStateContribution> configuration,
-    		                                      @Symbol(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED)
-                                                  boolean entitySessionStatePersistenceStrategyEnabled,
-    		                                      HibernateSessionSource sessionSource)
-    {
-    	
-    	if(!entitySessionStatePersistenceStrategyEnabled)
-    		return;
-
-        org.hibernate.cfg.Configuration config = sessionSource.getConfiguration();
-        Iterator<PersistentClass> mappings = config.getClassMappings();
-        while (mappings.hasNext())
-        {
-
-            final PersistentClass persistentClass = mappings.next();
-            final Class entityClass = persistentClass.getMappedClass();
-            
-            configuration.add(entityClass, new ApplicationStateContribution(HibernatePersistenceConstants.ENTITY));
-        }
-    }
-
-    /**
-     * Adds the CommitAfter annotation work, to process the {@link org.apache.tapestry5.hibernate.annotations.CommitAfter}
-     * annotation.
-     */
-    public static void contributeComponentClassTransformWorker(
-            OrderedConfiguration<ComponentClassTransformWorker> configuration)
-    {
-        // If logging is enabled, we want logging to be the first advice, wrapping around the commit advice.
-
-        configuration.addInstance("CommitAfter", CommitAfterWorker.class, "after:Log");
-    }
-    
-    /**
-     * Contribution to the {@link org.apache.tapestry5.services.ComponentClassResolver} service configuration.
-     */
-    public static void contributeComponentClassResolver(Configuration<LibraryMapping> configuration)
-    {
-        configuration.add(new LibraryMapping("hibernate", "org.apache.tapestry5.hibernate"));
-    }
-
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernatePersistenceConstants.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernatePersistenceConstants.java
deleted file mode 100644
index d623df6..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/HibernatePersistenceConstants.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.hibernate;
-
-import org.apache.tapestry5.PersistenceConstants;
-
-/**
- * Constants for persistent field strategies.
- * 
- * @see org.apache.tapestry5.annotations.Persist#value()
- * @see PersistenceConstants
- * @since 5.2.0
- */
-public class HibernatePersistenceConstants
-{
-    /**
-     * If the field's value is a persistent Hibernate entity its type and primary key is stored in the
-     * {@link org.apache.tapestry5.services.Session}. Otherwise,
-     * the value is stored as per {@link PersistenceConstants#SESSION}.
-     */
-    public static final String ENTITY = "entity";
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/pages/Statistics.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/pages/Statistics.java
deleted file mode 100644
index 5d99bb7..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/hibernate/pages/Statistics.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate.pages;
-
-import java.util.Collection;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.annotations.ContentType;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.hibernate.Session;
-import org.hibernate.metadata.ClassMetadata;
-import org.hibernate.stat.CollectionStatistics;
-import org.hibernate.stat.EntityStatistics;
-import org.hibernate.stat.QueryStatistics;
-import org.hibernate.stat.SecondLevelCacheStatistics;
-
-/**
- * Page used to see the Hibernate statistics.
- * 
- * @since 5.1.0.2
- *
- */
-@ContentType("text/html")
-public class Statistics {
-   @Inject
-   private Session session;
-
-   @Property
-   @Inject
-   @Symbol(SymbolConstants.PRODUCTION_MODE)
-   private boolean productionMode;
-
-   @Property
-   private String currentEntityName;
-
-   @Property
-   private String currentCollectionRoleName;
-
-   @Property
-   private String currentQuery;
-
-   @Property
-   private String currentSecondLevelCacheRegionName;
-
-   @Property
-   private org.hibernate.stat.Statistics statistics;
-
-   void onActivate() {
-     this.statistics = this.session.getSessionFactory().getStatistics();
-   }
-
-   @SuppressWarnings("unchecked")
-   public Collection<ClassMetadata> getAllClassMetadata() {
-     return this.session.getSessionFactory().getAllClassMetadata().values
-();
-   }
-
-   public EntityStatistics getEntityStatistics() {
-     return this.statistics.getEntityStatistics(this.currentEntityName);
-   }
-
-   public CollectionStatistics getCollectionStatistics() {
-     return this.statistics
-           .getCollectionStatistics(this.currentCollectionRoleName);
-   }
-
-   public QueryStatistics getQueryStatistics() {
-     return this.statistics.getQueryStatistics(this.currentQuery);
-   }
-
-   public SecondLevelCacheStatistics getSecondLevelCacheStatistics() {
-     return this.statistics
-           .getSecondLevelCacheStatistics
-(this.currentSecondLevelCacheRegionName);
-   }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/CommitAfterWorker.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/CommitAfterWorker.java
deleted file mode 100644
index 5a5b0f5..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/CommitAfterWorker.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.hibernate.HibernateSessionManager;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.model.MutableComponentModel;
-import org.apache.tapestry5.services.*;
-
-/**
- * Searches for methods that have the {@link org.apache.tapestry5.hibernate.annotations.CommitAfter} annotation and adds
- * logic around the method to commit or abort the transaction.  The commit/abort logic is the same as for the {@link
- * org.apache.tapestry5.hibernate.HibernateTransactionDecorator} service.
- */
-public class CommitAfterWorker implements ComponentClassTransformWorker
-{
-    private final HibernateSessionManager manager;
-
-    private final ComponentMethodAdvice advice = new ComponentMethodAdvice()
-    {
-        public void advise(ComponentMethodInvocation invocation)
-        {
-            try
-            {
-                invocation.proceed();
-
-                // Success or checked exception:
-
-                manager.commit();
-            }
-            catch (RuntimeException ex)
-            {
-                manager.abort();
-
-                throw ex;
-            }
-        }
-    };
-
-    public CommitAfterWorker(HibernateSessionManager manager)
-    {
-        this.manager = manager;
-    }
-
-    public void transform(ClassTransformation transformation, MutableComponentModel model)
-    {
-        for (TransformMethodSignature sig : transformation.findMethodsWithAnnotation(CommitAfter.class))
-        {
-            transformation.advise(sig, advice);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/EntityApplicationStatePersistenceStrategy.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/EntityApplicationStatePersistenceStrategy.java
deleted file mode 100644
index 4a3f0ab..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/EntityApplicationStatePersistenceStrategy.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.hibernate;
-
-import java.io.Serializable;
-
-import org.apache.tapestry5.internal.services.SessionApplicationStatePersistenceStrategy;
-import org.apache.tapestry5.services.ApplicationStateCreator;
-import org.apache.tapestry5.services.Request;
-import org.hibernate.HibernateException;
-
-/**
- * Persists Hibernate entities as SSOs by storing their primary key in the {@link org.apache.tapestry5.services.Session}.
- * 
- * @see org.apache.tapestry5.internal.hibernate.PersistedEntity
- */
-public class EntityApplicationStatePersistenceStrategy extends SessionApplicationStatePersistenceStrategy 
-{
-
-	private final org.hibernate.Session hibernateSession;
-
-	public EntityApplicationStatePersistenceStrategy(Request request, org.hibernate.Session hibernateSession) 
-	{
-		super(request);
-		this.hibernateSession = hibernateSession;
-	}
-
-	@SuppressWarnings("unchecked")
-	public <T> T get(Class<T> ssoClass, ApplicationStateCreator<T> creator) 
-	{
-		final Object persistedValue =  getOrCreate(ssoClass, creator);
-		
-		if(persistedValue instanceof PersistedEntity)
-		{
-			final PersistedEntity persisted = (PersistedEntity) persistedValue;
-			
-			Object restored = persisted.restore(this.hibernateSession);
-			
-			//shall we maybe throw an exception instead?
-			if(restored == null)
-			{
-				set(ssoClass, null);
-				return (T) getOrCreate(ssoClass, creator);
-			}
-
-			return (T) restored;
-		}
-		
-		return (T) persistedValue;
-	}
-
-	public <T> void set(Class<T> ssoClass, T sso) 
-	{	
-		final String key = buildKey(ssoClass);
-		Object entity;
-		
-		if(sso != null)
-		{
-			try 
-			{
-				final String entityName = this.hibernateSession.getEntityName(sso);
-				final Serializable id = this.hibernateSession.getIdentifier(sso);
-	
-				entity = new PersistedEntity(entityName, id);
-			} 
-			catch (final HibernateException ex) 
-			{
-				// if entity not attached to a Hibernate Session yet, store it as usual sso
-				entity = sso;
-			}
-		}
-		else
-		{
-			entity = sso;
-		}
-		
-		getSession().setAttribute(key, entity);
-	}
-
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/EntityPersistentFieldStrategy.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/EntityPersistentFieldStrategy.java
deleted file mode 100644
index f5e6f2f..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/EntityPersistentFieldStrategy.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.internal.services.AbstractSessionPersistentFieldStrategy;
-import org.apache.tapestry5.services.Request;
-import org.hibernate.HibernateException;
-import org.hibernate.Session;
-
-import java.io.Serializable;
-
-/**
- * Persists Hibernate entities by storing their id in the session.
- *
- * @see org.apache.tapestry5.internal.hibernate.PersistedEntity
- */
-public class EntityPersistentFieldStrategy extends AbstractSessionPersistentFieldStrategy
-{
-    private final Session session;
-
-    public EntityPersistentFieldStrategy(Session session, Request request)
-    {
-        super("entity:", request);
-
-        this.session = session;
-    }
-
-    @Override
-    protected Object convertApplicationValueToPersisted(Object newValue)
-    {
-        try
-        {
-            String entityName = session.getEntityName(newValue);
-            Serializable id = session.getIdentifier(newValue);
-
-            return new PersistedEntity(entityName, id);
-        }
-        catch (HibernateException ex)
-        {
-            throw new IllegalArgumentException(HibernateMessages.entityNotAttached(newValue), ex);
-        }
-    }
-
-    @Override
-    protected Object convertPersistedToApplicationValue(Object persistedValue)
-    {
-        PersistedEntity persisted = (PersistedEntity) persistedValue;
-
-        return persisted.restore(session);
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
deleted file mode 100644
index 079c087..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoder.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import java.io.Serializable;
-
-import org.apache.tapestry5.ValueEncoder;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.hibernate.Session;
-import org.hibernate.mapping.PersistentClass;
-import org.hibernate.mapping.Property;
-import org.slf4j.Logger;
-
-public final class HibernateEntityValueEncoder<E> implements ValueEncoder<E>
-{
-    private final Class<E> entityClass;
-
-    private final Session session;
-
-    private final TypeCoercer typeCoercer;
-
-    private final String idPropertyName;
-
-    private final PropertyAdapter propertyAdapter;
-
-    private final Logger logger;
-
-    public HibernateEntityValueEncoder(Class<E> entityClass, PersistentClass persistentClass, Session session,
-            PropertyAccess propertyAccess, TypeCoercer typeCoercer, Logger logger)
-    {
-        this.entityClass = entityClass;
-        this.session = session;
-        this.typeCoercer = typeCoercer;
-        this.logger = logger;
-
-        Property property = persistentClass.getIdentifierProperty();
-
-        idPropertyName = property.getName();
-
-        propertyAdapter = propertyAccess.getAdapter(this.entityClass).getPropertyAdapter(idPropertyName);
-    }
-
-    public String toClient(E value)
-    {
-        if (value == null)
-            return null;
-
-        Object id = propertyAdapter.get(value);
-
-        if (id == null)
-            throw new IllegalStateException(String.format(
-                    "Entity %s has an %s property of null; this probably means that it has not been persisted yet.",
-                    value, idPropertyName));
-
-        return typeCoercer.coerce(id, String.class);
-    }
-
-    @SuppressWarnings("unchecked")
-    public E toValue(String clientValue)
-    {
-        if (InternalUtils.isBlank(clientValue))
-            return null;
-
-        Object id = null;
-
-        try
-        {
-
-            id = typeCoercer.coerce(clientValue, propertyAdapter.getType());
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(String.format(
-                    "Exception converting '%s' to instance of %s (id type for entity %s): %s", clientValue,
-                    propertyAdapter.getType().getName(), entityClass.getName(), InternalUtils.toMessage(ex)), ex);
-        }
-
-        Serializable ser = (Serializable) id;
-
-        E result = (E) session.get(entityClass, ser);
-
-        if (result == null)
-        {
-            // We don't identify the entity type in the message because the logger is based on the
-            // entity type.
-            logger.error(String.format("Unable to convert client value '%s' into an entity instance.", clientValue));
-        }
-
-        return result;
-    }
-
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateMessages.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateMessages.java
deleted file mode 100644
index a498c5b..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/HibernateMessages.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-public class HibernateMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(HibernateMessages.class);
-
-    public static String sessionPersistedEntityLoadFailure(String entityName, Object id, Throwable cause)
-    {
-        return MESSAGES.format("session-persisted-entity-load-failure", entityName, id, cause);
-    }
-
-    public static String entityNotAttached(Object entity)
-    {
-        return MESSAGES.format("entity-not-attached", entity);
-    }
-
-    public static String commitTransactionInterceptor(String serviceId, Class serviceInterface)
-    {
-        return MESSAGES.format("commit-transaction-interceptor", serviceId, serviceInterface.getName());
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/PersistedEntity.java b/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/PersistedEntity.java
deleted file mode 100644
index 18fe5fd..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/java/org/apache/tapestry5/internal/hibernate/PersistedEntity.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.annotations.ImmutableSessionPersistedObject;
-import org.hibernate.Session;
-
-import java.io.Serializable;
-
-/**
- * Encapsulates a Hibernate entity name with an entity id.
- */
-@ImmutableSessionPersistedObject
-public class PersistedEntity implements Serializable
-{
-    private static final long serialVersionUID = 897120520279686518L;
-
-    private final String entityName;
-
-    private final Serializable id;
-
-    public PersistedEntity(String entityName, Serializable id)
-    {
-        this.entityName = entityName;
-        this.id = id;
-    }
-
-    public Object restore(Session session)
-    {
-        try
-        {
-            return session.get(entityName, id);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(HibernateMessages.sessionPersistedEntityLoadFailure(entityName, id, ex));
-        }
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("<PersistedEntity: %s(%s)>", entityName, id);
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/hibernate/pages/Statistics.properties b/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/hibernate/pages/Statistics.properties
deleted file mode 100644
index c9fbacf..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/hibernate/pages/Statistics.properties
+++ /dev/null
@@ -1,15 +0,0 @@
-# Copyright 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-hibernate-statistics-hidden=Hibernate statistics are only available in development mode.
diff --git a/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/hibernate/pages/Statistics.tml b/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/hibernate/pages/Statistics.tml
deleted file mode 100644
index bc57d03..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/hibernate/pages/Statistics.tml
+++ /dev/null
@@ -1,69 +0,0 @@
-<html xml:space="default"

-	xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">

-	<head>

-		<title>Hibernate Statistics</title>

-	</head>

-	<body>

-		<t:unless test="productionMode">

-			<h1>Hibernate Statistics</h1>

-			<ul>

-				<li>

-					<a href="#EntitiesStatistics">

-						Entities Statistics

-					</a>

-				</li>

-				<li>

-					<a href="#CollectionStatistics">

-						Collection Statistics

-					</a>

-				</li>

-				<li>

-					<a href="#QueriesStatistics">Queries Statistics</a>

-				</li>

-				<li>

-					<a href="#SecondLevelCacheStatistics">

-						Second Level Cache Statistics

-					</a>

-				</li>

-			</ul>

-

-			<h1>Session Factory Statistics</h1>

-			<t:beandisplay object="statistics" />

-

-			<a name="EntitiesStatistics" />

-			<h1>Entities Statistics</h1>

-			<t:loop source="statistics.entityNames"

-				value="currentEntityName">

-				<h2>${currentEntityName}</h2>

-				<t:beandisplay object="entityStatistics" />

-			</t:loop>

-

-			<a name="CollectionStatistics" />

-			<h1>Collection Statistics</h1>

-			<t:loop source="statistics.collectionRoleNames"

-				value="currentCollectionRoleName">

-				<h2>${currentCollectionRoleName}</h2>

-				<t:beandisplay object="collectionStatistics" />

-			</t:loop>

-

-			<a name="QueriesStatistics" />

-			<h1>Queries Statistics</h1>

-			<t:loop source="statistics.queries" value="currentQuery">

-				<t:beandisplay object="queryStatistics" />

-			</t:loop>

-

-			<a name="SecondLevelCacheStatistics" />

-			<h1>Second Level Cache Statistics</h1>

-			<t:loop source="statistics.secondLevelCacheRegionNames"

-				value="currentSecondLevelCacheRegionName">

-				<t:beandisplay object="secondLevelCacheStatistics" />

-			</t:loop>

-

-            <t:parameter name="else">

-                <p>

-                    <em>${message:hibernate-statistics-hidden}</em>

-                </p>

-            </t:parameter>

-		</t:unless>

-	</body>

-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/internal/hibernate/HibernateStrings.properties b/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/internal/hibernate/HibernateStrings.properties
deleted file mode 100644
index 7eda452..0000000
--- a/maint-5-2/tapestry-hibernate/src/main/resources/org/apache/tapestry5/internal/hibernate/HibernateStrings.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-session-persisted-entity-load-failure=Failed to load session-persisted entity %s(%s): %s
-entity-not-attached=Failed persisting an entity in the session. Only entities attached to a Hibernate Session can be persisted. entity: %s
-commit-transaction-interceptor=<Hibernate Transaction interceptor for %s(%s)>
diff --git a/maint-5-2/tapestry-hibernate/src/site/apt/index.apt b/maint-5-2/tapestry-hibernate/src/site/apt/index.apt
deleted file mode 100644
index 30824c4..0000000
--- a/maint-5-2/tapestry-hibernate/src/site/apt/index.apt
+++ /dev/null
@@ -1,38 +0,0 @@
- ----
- About Tapestry/Hibernate
- ----
-
-Tapestry/Hibernate Integration Library
-
-  This library integrates into Tapestry 5 to provide out-of-the-box support for using Hibernate 3 as the backend for
-  normal CRUD style applications.
-  
-  For at least the first pass, this will represent access to the native Hibernate interfaces, exposed in a
-  thread-safe manner, within a <session-per-request> strategy.
-  
-  A number of more esoteric ideas in Hibernate are not supported, including nested transactions and supporting multiple
-  persistence units.
-
-  The {{{../tapestry-hibernate-core/}tapestry-hibernate-core}} module allows non-Tapestry applications to access
-  Hibernate.
-  
-Licensing Issues
-
-  Hibernate is licensed under the Lesser GNU Public License. This is more restrictive license than the Apache Software
-  License used by the rest of Tapestry. The restrictions mostly apply to redistricuting Hibernate, especially in
-  any altered form, and will likely be irrelvant to the vast majority of users, but you should be aware.
-  
-  This library is compiled against version <<3.3.1.GA>> of Hibernate (and version 3.4.0.GA of hibernate-annotations),
-  but should work with more recent versions.
-  
-
-What's New?
-
-  * Transactions are now <aborted> (no longer <committed>) at the end of each request: you must now
-    explicitly commit the transaction if changes are to be saved.
-
-  * The new @CommitAfter annotation for component and service methods can now commit the transaction
-    automatically after the method is invoked.
-
-  * {{{../apidocs/org/apache/tapestry5/hibernate/HibernateGridDataSource.html}HibernateGridDataSource}} can be used
-    with the Grid component to support optimized queries against large data sets.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/site/apt/statistics.apt b/maint-5-2/tapestry-hibernate/src/site/apt/statistics.apt
deleted file mode 100644
index 6a50a89..0000000
--- a/maint-5-2/tapestry-hibernate/src/site/apt/statistics.apt
+++ /dev/null
@@ -1,34 +0,0 @@
-  ----
-  Hibernate Statistics
-  ----
-  
-Hibernate Statistics
-
-  If you enable Hibernate statistics by setting the property <hibernate.generate_statistics> to <true>, 
-  Hibernate will expose a number of useful metrics. The page "Statistics" is used to expose these metrics. 
-  This page is only available in development mode.
-  
-[images/hibernate-statistics.png] Hibernate Statistics
-  
-[images/hibernate-statistics-2.png] Hibernate Statistics
-  
-
-Hibernate Configuration to enable the Statistics
-  
-+----+
-<!DOCTYPE hibernate-configuration PUBLIC
-    "-//Hibernate/Hibernate Configuration DTD//EN"
-    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-    
-<hibernate-configuration>
-
-    ...
-
-    <property name="hibernate.generate_statistics">true</property>
-    
-  </session-factory>
-
-</hibernate-configuration>
-+----+
-
-  
diff --git a/maint-5-2/tapestry-hibernate/src/site/apt/userguide.apt b/maint-5-2/tapestry-hibernate/src/site/apt/userguide.apt
deleted file mode 100644
index ffd92b5..0000000
--- a/maint-5-2/tapestry-hibernate/src/site/apt/userguide.apt
+++ /dev/null
@@ -1,219 +0,0 @@
-  ----
-  User Guide
-  ----
-  
-Entity value encoding
-
-  Value encoders are automatically created for all mapped Hibernate entity types. This is done by encoding the entity as it's 
-  id (coerced to a String) and decoding the entity by looking it up in the Hibernate Session using the encoded id. Consider
-  the following example:
-  
-+----+
-public class ViewPerson
-{
-  @Property
-  private Person person;
-  
-  void onActivate(Person person)
-  {
-    this.person = person;
-  }
-  
-  Person onPassivate()
-  {
-    return person;
-  }
-}
-+----+   
-
-+----+
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-<body>
-  The person's name is: ${person.name}
-</body>
-</html>
-+----+
-
-  Accessing the page as <</viewperson/152>> would load the Person entity with id 152 and use that as the page context.
-
-Using @PageActivationContext
-
-  If you prefer to use annotations, you may let Tapestry generate the page activation context handlers for you.
-  Relying on an existing ValueEncoder for the corresponding property you can use the @PageActivationContext annotation.
-  The disadvantage is that you can't access the handlers in a unit test.
-  
-  
-+----+
-public class ViewPerson
-{
-  @Property
-  @PageActivationContext
-  private Person person;
-  
-}
-+----+ 
-
-Using @Persist with entities
-
-  If you wish to persist an entity in the session, you may use the "entity" persistence strategy:
-  
-+----+
-public class ViewPerson
-{
-  @Persist("entity")
-  @Property
-  private Person person;
-  
-  void onActivate(Person person)
-  {
-    this.person = person;
-  }
-  
-}
-+----+   
-  
-  This persistence strategy works with any Hibernate entity that is associated with a valid Hibernate Session by persisting only the id
-  of the entity. Notice that no onPassivate() method is needed; when the page renders the entity is loaded by the id stored in the session.
-  
-Using @SessionState with entities
-
-  The default strategy for persisting Session State Objects is "session". Storing a Hibernate entity into a <HttpSession> is problematic 
-  because the stored entity is detached from the Hibernate session. Similar to @Persist("entity") you may use the "entity" persistence 
-  strategy to persist Hibernate entities as SSOs:
-  
-+----+
-public class Index
-{
-  @SessionState
-  @Property
-  private Person person;
-  
-  ...
-  
-}
-+----+  
-
-	For this purpose you need to set the value of the symbol <HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED> 
-	to <true>:
-	
-+----+
-public class AppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED, "true");
-    }
-}
-+----+  
-
-	Alternatively you can apply the "entity" persistence strategy to a single Hibernate entity:
-	
-+----+
-public class AppModule
-{
-    public void contributeApplicationStateManager(MappedConfiguration<Class, ApplicationStateContribution> configuration)
-    {
-    	configuration.add(Person.class, new ApplicationStateContribution(HibernatePersistenceConstants.ENTITY));
-    }
-}
-+----+  
-
-Committing Changes
-
-  All Hibernate operations occur in a transaction, but that transaction is aborted at the end of each request; thus
-  any changes you make will be <lost> unless the transaction is committed.
-
-  The correct way to commit the transaction is via the @CommitAfter annotation:
-
-+----+
-public class EditPerson
-{
-  @Persist("entity")
-  @Property
-  private Person person;
-
-  @InjectPage
-  private PersonIndex personIndex;
-
-  void onActivate(Person person)
-  {
-    this.person = person;
-  }
-
-  Object onPassivate() { return person; }
-
-  @CommitAfter
-  Object onSuccess()
-  {
-    return personIndex;
-  }
-}
-+----+
-
-  In this example, the Person object may be updated by a form; the form's success event handler method,
-  onSuccess() has the @CommitAfter annotation.
-
-  Behind the scenes, the @CommitAfter annotation causes the
-  {{{../apidocs/org/apache/tapestry5/hibernate/HibernateSessionManager.html}HibernateSessionManager}}'s commit() method to be
-  executed before the method returns.
-
-  The transaction will be committed when the method completes normally.
-
-  The transaction will be <aborted> if the method throws a RuntimeException.
-
-  The transaction will be <<committed>> if the method throws a <checked> exception (one listed in the throws clause of the method).
-
-Managing Transactions using DAOs
-
-   As your application grows, you will likely create a Data Access Object layer between your pages and the Hibernate APIs.
-
-   The @CommitAfter annotation can be useful there as well.
-
-   You may use @CommitAfter on method of your service interface, then use a decorator to provide the transaction
-   management logic.
-
-   First definine your DAO's service interface:
-
-+---+
-public interface PersonDAO
-{
-  Person findByName(String name);
-
-  @CommitAfter
-  void add(Person newPerson);
-
-  @CommitAfter
-  void update(Person person);
-
-  @CommitAfter
-  void delete(Person person);
-}
-+---+
-
-   Next, define your service in your application's Module class:
-
-+---+
-public class AppModule
-{
-   public static void bind(ServiceBinder binder)
-   {
-      binder.bind(PersonDAO.class, PersonDAOImpl.class);
-   }
-}
-+---+
-
-   Finally, you should use the HibernateTransactionAdvisor to add transaction advice:
-
-+---+
-    @Match("*DAO")
-    public static void adviseTransactions(HibernateTransactionAdvisor advisor, MethodAdviceReceiver receiver)
-    {
-        advisor.addTransactionCommitAdvice(receiver);
-    }
-+---+
-
-  This advice method is configured to match against any service whose id ends with "DAO", such as "PersonDAO".
-
-  The advisor scans the service interface and identifies any methods with the @CommitAfter annotation.
-
-  
diff --git a/maint-5-2/tapestry-hibernate/src/site/resources/images/hibernate-statistics-2.png b/maint-5-2/tapestry-hibernate/src/site/resources/images/hibernate-statistics-2.png
deleted file mode 100644
index 4fe32d6..0000000
--- a/maint-5-2/tapestry-hibernate/src/site/resources/images/hibernate-statistics-2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-hibernate/src/site/resources/images/hibernate-statistics.png b/maint-5-2/tapestry-hibernate/src/site/resources/images/hibernate-statistics.png
deleted file mode 100644
index 9211168..0000000
--- a/maint-5-2/tapestry-hibernate/src/site/resources/images/hibernate-statistics.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-hibernate/src/site/site.xml b/maint-5-2/tapestry-hibernate/src/site/site.xml
deleted file mode 100644
index af5cb15..0000000
--- a/maint-5-2/tapestry-hibernate/src/site/site.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Hibernate Integration">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="About" href="index.html"/>
-            <item name="Configuration" href="../tapestry-hibernate-core/conf.html"/>
-            <item name="User guide" href="userguide.html"/>
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-            <item name="Hibernate statistics" href="statistics.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-hibernate/src/test/conf/testng.xml b/maint-5-2/tapestry-hibernate/src/test/conf/testng.xml
deleted file mode 100644
index ae459a0..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/conf/testng.xml
+++ /dev/null
@@ -1,30 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapestry Hibernate" parallel="false" thread-count="10" annotations="1.5" verbose="2">
-    <parameter name="tapestry.integration-webapp" value="src/test/webapp"/>
-    <test name="Tapestry Hibernate Internal APIs">
-        <packages>
-            <package name="org.apache.tapestry5.internal.hibernate"/>
-        </packages>
-    </test>
-    <test name="Tapestry Hibernate Integration Tests">
-        <packages>
-            <package name="org.apache.tapestry5.hibernate.integration"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-hibernate/src/test/conf/webdefault.xml b/maint-5-2/tapestry-hibernate/src/test/conf/webdefault.xml
deleted file mode 100644
index 34083c9..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/integration/TapestryHibernateIntegrationTests.java b/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/integration/TapestryHibernateIntegrationTests.java
deleted file mode 100644
index bdba2f4..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/hibernate/integration/TapestryHibernateIntegrationTests.java
+++ /dev/null
@@ -1,163 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.hibernate.integration;
-
-import org.apache.tapestry5.internal.hibernate.PersistedEntity;
-import org.apache.tapestry5.test.AbstractIntegrationTestSuite;
-import org.example.app0.entities.User;
-import org.testng.annotations.Test;
-
-@Test(sequential = true, groups = "integration")
-public class TapestryHibernateIntegrationTests extends AbstractIntegrationTestSuite
-{
-    public TapestryHibernateIntegrationTests()
-    {
-        super("src/test/webapp");
-    }
-
-    public void valueencode_all_entity_types() throws Exception
-    {
-        open("/encodeentities");
-
-        assertEquals(getText("//span[@id='name']").length(), 0);
-
-        // need to create an entity in order to link with one
-        clickAndWait("link=create an entity");
-        assertEquals(getText("//span[@id='name']"), "name");
-
-        // should return null for missing objects
-        open("/encodeentities/9999");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-    }
-
-    public void persist_entities()
-    {
-        open("/persistentity");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-
-        clickAndWait("link=create entity");
-        assertText("//span[@id='name']", "name");
-
-        // shouldn't save the change to the name because it's reloaded every time
-        clickAndWait("link=change the name");
-        assertText("//span[@id='name']", "name");
-
-        // can set back to null
-        clickAndWait("link=set to null");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-
-        // deleting an entity that is still persisted. just remove the entity from the session if it's not found.
-        clickAndWait("link=create entity");
-        assertText("//span[@id='name']", "name");
-        clickAndWait("link=delete");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-
-        // transient objects cannot be persisted
-        clickAndWait("link=set to transient");
-        assertTextPresent("Error persisting");
-    }
-    
-    public void sso_entities()
-    {
-    	open("/ssoentity");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-        assertText("//span[@id='persistedEntityClassName']", User.class.getName());
-        
-        clickAndWait("link=persist entity");
-        assertText("//span[@id='name']", "name");
-        assertText("//span[@id='persistedEntityClassName']", PersistedEntity.class.getName());
-        
-        // can set back to null
-        clickAndWait("link=set to null");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-        assertText("//span[@id='persistedEntityClassName']", User.class.getName());
-        
-        clickAndWait("link=persist entity");
-        assertText("//span[@id='name']", "name");
-        assertText("//span[@id='persistedEntityClassName']", PersistedEntity.class.getName());
-        clickAndWait("link=delete");
-        assertEquals(getText("//span[@id='name']").length(), 0);
-        assertText("//span[@id='persistedEntityClassName']", User.class.getName());
-        
-        clickAndWait("link=persist entity");
-        assertText("//span[@id='name']", "name");
-        assertText("//span[@id='persistedEntityClassName']", PersistedEntity.class.getName());
-        clickAndWait("link=set to transient");
-        assertText("//span[@id='persistedEntityClassName']", User.class.getName());
-    }
-
-    /**
-     * TAPESTRY-2244
-     */
-    public void using_cached_with_form()
-    {
-        start("Cached Form", "setup");
-        assertTextSeries("name_%d", 0);
-
-        type("name", "name1");
-        clickAndWait(SUBMIT);
-        assertTextSeries("name_%d", 0, "name1");
-
-        type("name", "name2");
-        clickAndWait(SUBMIT);
-        assertTextSeries("name_%d", 0, "name1", "name2");
-    }
-
-    public void commit_after_on_component_methods()
-    {
-        start("CommitAfter Demo");
-
-        assertText("name", "Diane");
-
-        clickAndWait("link=change name");
-
-        assertText("name", "Frank");
-
-        clickAndWait("link=runtime exception");
-
-        assertText("name", "Frank");
-
-        clickAndWait("link=checked exception");
-
-        assertText("name", "Troy");
-
-    }
-
-    public void grid()
-    {
-        start("Grid Demo", "setup");
-
-        clickAndWait("link=First Name");
-
-        assertText("//td[@class='firstName t-sort-column-ascending']", "Joe_1");
-
-        clickAndWait("link=First Name");
-
-        assertText("//td[@class='firstName t-sort-column-descending']", "Joe_9");
-    }
-    
-    public void hibernate_statistics()
-    {
-    	open(BASE_URL + "hibernate/Statistics");
-    	
-    	assertTextPresent("Hibernate Statistics");
-    	
-    	assertTextPresent("Entities Statistics");
-    	
-    	assertTextPresent(User.class.getName());
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/EntityPersistentFieldStrategyTest.java b/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/EntityPersistentFieldStrategyTest.java
deleted file mode 100644
index 3b9b008..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/EntityPersistentFieldStrategyTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.hibernate.HibernateException;
-import org.hibernate.Session;
-import org.testng.annotations.Test;
-
-@Test
-public class EntityPersistentFieldStrategyTest extends TapestryTestCase
-{
-    public void not_an_entity()
-    {
-        String nonEntity = "foo";
-        Session session = newMock(Session.class);
-        EntityPersistentFieldStrategy strategy = new EntityPersistentFieldStrategy(session, null);
-
-        expect(session.getEntityName(nonEntity)).andThrow(new HibernateException("error"));
-
-        replay();
-
-        try
-        {
-            strategy.postChange("pageName", "", "fieldName", nonEntity);
-
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Failed persisting an entity in the session. Only entities attached to a Hibernate Session can be persisted. entity: foo");
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java b/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
deleted file mode 100644
index 2f6c1bb..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/HibernateEntityValueEncoderTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.hibernate.Session;
-import org.hibernate.mapping.Property;
-import org.hibernate.mapping.RootClass;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class HibernateEntityValueEncoderTest extends IOCTestCase
-{
-    private Registry registry;
-    private PropertyAccess access;
-    private TypeCoercer typeCoercer;
-
-    @BeforeClass
-    public void setup()
-    {
-        registry = buildRegistry();
-
-        access = registry.getService(PropertyAccess.class);
-        typeCoercer = registry.getService(TypeCoercer.class);
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        registry.shutdown();
-
-        registry = null;
-        access = null;
-        typeCoercer = null;
-    }
-
-    @Test
-    public void to_client_id_null()
-    {
-        Session session = mockSession();
-        Logger logger = mockLogger();
-
-        replay();
-
-        RootClass persistentClass = new RootClass();
-        Property idProperty = new Property();
-        idProperty.setName("id");
-        persistentClass.setIdentifierProperty(idProperty);
-        SampleEntity entity = new SampleEntity();
-
-        HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
-                SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
-
-        try
-        {
-            encoder.toClient(entity);
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertMessageContains(ex,
-                    "Entity org.apache.tapestry5.internal.hibernate.SampleEntity",
-                    "has an id property of null");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void to_value_not_found()
-    {
-        Session session = mockSession();
-        Logger logger = mockLogger();
-
-        expect(session.get(SampleEntity.class, new Long(12345))).andReturn(null);
-
-        logger.error("Unable to convert client value '12345' into an entity instance.");
-
-        replay();
-
-        RootClass persistentClass = new RootClass();
-        Property idProperty = new Property();
-        idProperty.setName("id");
-        persistentClass.setIdentifierProperty(idProperty);
-        SampleEntity entity = new SampleEntity();
-
-        HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
-                SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
-
-        assertNull(encoder.toValue("12345"));
-
-        verify();
-    }
-
-    @Test
-    public void to_value_bad_type_coercion()
-    {
-        Session session = mockSession();
-        Logger logger = mockLogger();
-
-        replay();
-
-        RootClass persistentClass = new RootClass();
-        Property idProperty = new Property();
-        idProperty.setName("id");
-        persistentClass.setIdentifierProperty(idProperty);
-
-        HibernateEntityValueEncoder<SampleEntity> encoder = new HibernateEntityValueEncoder<SampleEntity>(
-                SampleEntity.class, persistentClass, session, access, typeCoercer, logger);
-
-        try
-        {
-            encoder.toValue("xyz");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Exception converting 'xyz' to instance of java.lang.Long (id type for entity org.apache.tapestry5.internal.hibernate.SampleEntity)");
-        }
-
-        assertNull(encoder.toValue(""));
-
-        verify();
-    }
-
-    protected final Session mockSession()
-    {
-        return newMock(Session.class);
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/SampleEntity.java b/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/SampleEntity.java
deleted file mode 100644
index b219279..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/apache/tapestry5/internal/hibernate/SampleEntity.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.hibernate;
-
-import javax.persistence.Entity;
-import javax.persistence.Id;
-
-/**
- * Fake entity used by {@link org.apache.tapestry5.internal.hibernate.HibernateEntityValueEncoderTest}.
- */
-@Entity
-public class SampleEntity
-{
-    @Id
-    private Long id;
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/entities/User.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/entities/User.java
deleted file mode 100644
index a6fb6ab..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/entities/User.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.entities;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.Id;
-import javax.persistence.Version;
-
-@Entity
-public class User
-{
-	// NOTE: Hibernate doesn't understand the '_' syntax. It will end up putting underscores on all the properties
-    @Id @GeneratedValue
-    private Long id;
-
-    private String firstName;
-
-    private String lastName;
-
-    private String email;
-
-    private String encodedPassword;
-
-    @Version
-    private int version;
-
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public String getEncodedPassword()
-    {
-        return encodedPassword;
-    }
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public int getVersion()
-    {
-        return version;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public void setEncodedPassword(String encodedPassword)
-    {
-        this.encodedPassword = encodedPassword;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/CachedForm.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/CachedForm.java
deleted file mode 100644
index 1ea0b68..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/CachedForm.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.pages;
-
-import org.apache.tapestry5.annotations.Cached;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.app0.entities.User;
-import org.example.app0.services.UserDAO;
-import org.hibernate.Session;
-
-import java.util.List;
-
-@SuppressWarnings("unused")
-public class CachedForm
-{
-    @Property
-    private String name;
-
-    @Property
-    private User user;
-
-    @Property
-    private int index;
-
-    @Inject
-    private Session session;
-
-    @Inject
-    private UserDAO userDAO;
-
-    @CommitAfter
-    void onSuccess()
-    {
-        User user = new User();
-        user.setFirstName(name);
-
-        session.save(user);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Cached
-    public List<User> getUsers()
-    {
-        return session.createQuery("from User").list();
-    }
-
-    void onActionFromSetup()
-    {
-        userDAO.deleteAll();
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/CommitAfterDemo.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/CommitAfterDemo.java
deleted file mode 100644
index 6fcff30..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/CommitAfterDemo.java
+++ /dev/null
@@ -1,82 +0,0 @@
-package org.example.app0.pages;
-
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.example.app0.entities.User;
-
-import java.sql.SQLException;
-
-/**
- * Demos the CommitAfter annotation on component methods.
- */
-public class CommitAfterDemo
-{
-    private User user;
-
-    void onActivate(User user)
-    {
-        this.user = user;
-    }
-
-    Object onPassivate()
-    {
-        return user;
-    }
-
-    public User getUser()
-    {
-        return user;
-    }
-
-    public void setUser(User user)
-    {
-        this.user = user;
-    }
-
-
-    @CommitAfter
-    void onChangeName()
-    {
-        user.setFirstName("Frank");
-    }
-
-    @CommitAfter
-    void doChangeNameWithRuntimeException()
-    {
-        user.setFirstName("Bill");
-
-        throw new RuntimeException("To avoid commit.");
-    }
-
-    void onChangeNameWithRuntimeException()
-    {
-        try
-        {
-            doChangeNameWithRuntimeException();
-        }
-        catch (Exception ex)
-        {
-            // Ignore
-        }
-    }
-
-    @CommitAfter
-    void doChangeNameWithCheckedException() throws SQLException
-
-    {
-        user.setFirstName("Troy");
-
-        throw new SQLException("Doesn't matter.");
-    }
-
-    void onChangeNameWithCheckedException()
-    {
-        try
-        {
-            doChangeNameWithCheckedException();
-        }
-        catch (Exception ex)
-        {
-            // Ignore
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/EncodeEntities.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/EncodeEntities.java
deleted file mode 100644
index d9ffcbf..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/EncodeEntities.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.pages;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.app0.entities.User;
-import org.hibernate.Session;
-
-import java.util.List;
-
-public class EncodeEntities
-{
-    @Inject
-    private Session session;
-
-    @SuppressWarnings("unused")
-    @Property
-    private User user;
-
-    @CommitAfter
-    void onCreate()
-    {
-        User user = new User();
-        user.setFirstName("name");
-
-        session.save(user);
-    }
-
-    @SuppressWarnings("unchecked")
-    User onPassivate()
-    {
-    	// Use ordering so that we get the most recently inserted users first.    	
-        List<User> users = session.createQuery("from User order by id desc").list();
-        if (users.isEmpty())
-            return null;
-
-        return users.get(0);
-    }
-
-    void onActivate(User user)
-    {
-        this.user = user;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/GridDemo.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/GridDemo.java
deleted file mode 100644
index 0541116..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/GridDemo.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.pages;
-
-import org.apache.tapestry5.grid.GridDataSource;
-import org.apache.tapestry5.hibernate.HibernateGridDataSource;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.app0.entities.User;
-import org.example.app0.services.UserDAO;
-import org.hibernate.Session;
-
-public class GridDemo
-{
-    @Inject
-    private Session session;
-
-    @Inject
-    private UserDAO userDAO;
-
-    public GridDataSource getSource()
-    {
-        return new HibernateGridDataSource(session, User.class);
-    }
-
-    @CommitAfter
-    void onActionFromSetup()
-    {
-        userDAO.deleteAll();
-
-        for (int i = 1; i <= 20; i++)
-        {
-            User user = new User();
-
-            String suffix = String.valueOf(i);
-
-            user.setFirstName("Joe_" + suffix);
-            user.setLastName("User");
-            user.setEncodedPassword("####");
-            user.setEmail("joe" + suffix + "@null.com");
-
-            session.persist(user);
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/PersistEntity.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/PersistEntity.java
deleted file mode 100644
index 50cc55a..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/PersistEntity.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.hibernate.HibernateSessionManager;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.app0.entities.User;
-import org.example.app0.services.UserDAO;
-import org.hibernate.Session;
-
-import java.util.List;
-
-public class PersistEntity
-{
-    @Persist("entity")
-    @Property
-    private User user;
-
-    @Inject
-    private UserDAO userDAO;
-
-    @Inject
-    private Session session;
-
-    @Inject
-    private HibernateSessionManager manager;
-
-    void onCreateEntity()
-    {
-        User user = new User();
-        user.setFirstName("name");
-
-        userDAO.add(user);
-
-        this.user = user;
-    }
-
-    void onChangeName()
-    {
-        user.setFirstName("name2");
-
-        // No commit, so no real change.
-    }
-
-    void onSetToTransient()
-    {
-        user = new User();
-    }
-
-    void onSetToNull()
-    {
-        user = null;
-    }
-
-    void onDelete()
-    {
-        List<User> users = userDAO.findAll();
-
-        userDAO.delete(users.toArray(new User[0]));
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/SSOEntity.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/SSOEntity.java
deleted file mode 100644
index be2047c..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/SSOEntity.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.app0.pages;
-
-import java.util.List;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.SessionState;
-import org.apache.tapestry5.internal.hibernate.PersistedEntity;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.Session;
-import org.example.app0.entities.User;
-import org.example.app0.services.UserDAO;
-
-public class SSOEntity 
-{
-    @SessionState
-    @Property
-    private User user;
-
-    @Inject
-    private UserDAO userDAO;
-    
-    @Inject
-    private Request request;
-    
-    void onPersistEntity()
-    {
-        User user = new User();
-        user.setFirstName("name");
-
-        userDAO.add(user);
-
-        this.user = user;
-    }
-    
-    void onSetToNull()
-    {
-        user = null;
-    }
-    
-    void onSetToTransient()
-    {
-        user = new User();
-    }
-    
-    void onDelete()
-    {
-        List<User> users = userDAO.findAll();
-
-        userDAO.delete(users.toArray(new User[0]));
-        System.err.println("DELETED");
-    }
-    
-    public String getPersistedEntityClassName()
-    {
-    	Session session = request.getSession(true);
-    	
-    	Object value = session.getAttribute("sso:"+User.class.getName());
-    	
-    	System.err.println("getPersistedEntityClassName(): "+value);
-    	
-    	return value.getClass().getName();
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/Start.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/Start.java
deleted file mode 100644
index 4a7832c..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/pages/Start.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.app0.entities.User;
-import org.example.app0.services.UserDAO;
-
-public class Start
-{
-
-    @InjectPage
-    private CommitAfterDemo commitAfterDemo;
-
-    @Inject
-    private UserDAO userDAO;
-
-    Object onActionFromCommitAfter()
-    {
-        User user = new User();
-
-        user.setFirstName("Diane");
-
-        userDAO.add(user);
-
-        commitAfterDemo.setUser(user);
-
-        return commitAfterDemo;
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/AppModule.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/AppModule.java
deleted file mode 100644
index 58871e3..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/AppModule.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.hibernate.HibernateModule;
-import org.apache.tapestry5.hibernate.HibernateSymbols;
-import org.apache.tapestry5.hibernate.HibernateTransactionDecorator;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.Match;
-import org.apache.tapestry5.ioc.annotations.SubModule;
-
-@SubModule(HibernateModule.class)
-public class AppModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(UserDAO.class, UserDAOImpl.class);
-    }
-
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-        configuration.add(HibernateSymbols.ENTITY_SESSION_STATE_PERSISTENCE_STRATEGY_ENABLED, "true");
-    }
-
-    @Match("*DAO")
-    public static <T> T decorateTransactionally(HibernateTransactionDecorator decorator, Class<T> serviceInterface,
-            T delegate, ServiceResources resources)
-    {
-        return decorator.build(serviceInterface, delegate, resources.getServiceId());
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/UserDAO.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/UserDAO.java
deleted file mode 100644
index 6eef4d5..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/UserDAO.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.services;
-
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.example.app0.entities.User;
-
-import java.util.List;
-
-public interface UserDAO
-{
-    @CommitAfter
-    void add(User user);
-
-    List<User> findAll();
-
-    @CommitAfter
-    void delete(User... users);
-
-    @CommitAfter
-    void deleteAll();
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/UserDAOImpl.java b/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/UserDAOImpl.java
deleted file mode 100644
index f0d0cbc..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/java/org/example/app0/services/UserDAOImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.app0.services;
-
-import org.example.app0.entities.User;
-import org.hibernate.Session;
-
-import java.util.List;
-
-public class UserDAOImpl implements UserDAO
-{
-    private final Session session;
-
-    public UserDAOImpl(Session session)
-    {
-        this.session = session;
-    }
-
-    public void add(User user)
-    {
-        session.save(user);
-    }
-
-    @SuppressWarnings({ "unchecked" })
-    public List<User> findAll()
-    {
-        return (List<User>) session.createQuery("from User").list();
-    }
-
-    public void delete(User... users)
-    {
-        for (User user : users) session.delete(user);
-    }
-
-    public void deleteAll()
-    {
-        for (User u : findAll())
-        {
-            session.delete(u);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-hibernate/src/test/resources/hibernate.cfg.xml b/maint-5-2/tapestry-hibernate/src/test/resources/hibernate.cfg.xml
deleted file mode 100644
index 103e2f7..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/resources/hibernate.cfg.xml
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version='1.0' encoding='utf-8'?>
-<!--
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE hibernate-configuration PUBLIC
-    "-//Hibernate/Hibernate Configuration DTD//EN"
-    "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-
-<hibernate-configuration>
-
-  <session-factory>
-    <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
-    <property name="hibernate.connection.url">jdbc:hsqldb:mem:test</property>
-    <property name="hibernate.connection.username">sa</property>
-    <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
-
-    <property name="show_sql">true</property>
-    <property name="format_sql">true</property>
-    <property name="hbm2ddl.auto">update</property>
-
-    <property name="hibernate.c3p0.min_size">5</property>
-    <property name="hibernate.c3p0.max_size">20</property>
-    <property name="hibernate.c3p0.timeout">300</property>
-    <property name="hibernate.c3p0.max_statements">50</property>
-    <property name="hibernate.c3p0.idle_test_period">3000</property>
-
-    <property name="hibernate.generate_statistics">true</property>
-  </session-factory>
-
-
-</hibernate-configuration>
diff --git a/maint-5-2/tapestry-hibernate/src/test/resources/log4j.properties b/maint-5-2/tapestry-hibernate/src/test/resources/log4j.properties
deleted file mode 100644
index cb997f2..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=info, A1
-
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry5.TapestryFilter=info
-log4j.category.org.apache.tapestry=error
-log4j.category.tapestry=error
-log4j.category.tapestry.ioc.ClassFactory=error
-
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/CachedForm.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/CachedForm.tml
deleted file mode 100644
index 9605ffa..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/CachedForm.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <h1>@Cached with a form</h1>
-
-        <p>Entered data:</p>
-
-        <ul>
-            <t:loop index="index" source="users" value="user">
-                <li id="name_${index}">${user.firstName}</li>
-            </t:loop>
-        </ul>
-
-        <hr/>
-
-        <t:form>
-            <t:label for="name"/>:
-            <t:textfield t:id="name" t:validate="required"/>
-            <input type="submit"/>
-        </t:form>
-
-        <p>
-            <t:actionlink t:id="setup">setup</t:actionlink>
-        </p>
-
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/CommitAfterDemo.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/CommitAfterDemo.tml
deleted file mode 100644
index db25443..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/CommitAfterDemo.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <body>
-        <p>Entity name:
-            <span id="name">${user?.firstName}</span>
-        </p>
-
-        <ul>
-            <li>
-                <t:eventlink event="changeName">change name</t:eventlink>
-                (succesfully)
-            </li>
-
-            <li>
-                <t:eventlink event="changeNameWithRuntimeException">runtime exception</t:eventlink>
-                (will abort, so no change)
-            </li>
-
-            <li>
-                <t:eventlink event="changeNameWithCheckedException">checked exception</t:eventlink>
-                (will commit, so we'll see the change)
-            </li>
-        </ul>
-
-
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/EncodeEntities.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/EncodeEntities.tml
deleted file mode 100644
index 098573f..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/EncodeEntities.tml
+++ /dev/null
@@ -1,6 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-<body>
-	<p>entity name: <span id="name"><t:if test="user">${user.firstName}</t:if></span></p>
-	<p>create entity: <t:eventlink event="create" t:id="createentity">create an entity</t:eventlink></p>
-</body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/GridDemo.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/GridDemo.tml
deleted file mode 100644
index 9471759..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/GridDemo.tml
+++ /dev/null
@@ -1,17 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Grid Data Source Demo</title>
-    </head>
-    <body>
-        <h2>Demo of the Hibernate GridDataSource
-        </h2>
-
-        <t:grid source="source"/>
-
-        <p>
-            <t:actionlink t:id="setup">setup</t:actionlink>
-            the data
-        </p>
-
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/PersistEntity.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/PersistEntity.tml
deleted file mode 100644
index 6329cf5..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/PersistEntity.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-<body>
-	<p>entity name: <span id="name"><t:if test="user">${user.firstName}</t:if></span></p>
-	<p><t:eventlink event="createEntity">create entity</t:eventlink></p>
-	<p><t:eventlink event="changeName">change the name</t:eventlink></p>
-	<p><t:eventlink event="setToNull">set to null</t:eventlink></p>
-	<p><t:eventlink event="delete">delete</t:eventlink></p>
-	<p><t:eventlink event="setToTransient">set to transient</t:eventlink></p>
-</body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/SSOEntity.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/SSOEntity.tml
deleted file mode 100644
index f7b0cf1..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/SSOEntity.tml
+++ /dev/null
@@ -1,10 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-<body>
-	<p>entity name: <span id="name">${user?.firstName}</span></p>
-	<p>persisted entity class name: <span id="persistedEntityClassName">${persistedEntityClassName}</span></p>
-	<p><t:eventlink event="persistEntity">persist entity</t:eventlink></p>
-	<p><t:eventlink event="setToNull">set to null</t:eventlink></p>
-	<p><t:eventlink event="setToTransient">set to transient</t:eventlink></p>
-	<p><t:eventlink event="delete">delete</t:eventlink></p>
-</body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/Start.tml b/maint-5-2/tapestry-hibernate/src/test/webapp/Start.tml
deleted file mode 100644
index e602297..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/Start.tml
+++ /dev/null
@@ -1,20 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Start Page</title>
-    </head>
-    <body>
-        <h2>Test application for tapestry-hibernate integration tests</h2>
-
-        <ul>
-            <li>
-                <t:actionlink t:id="commitAfter">CommitAfter Demo</t:actionlink>
-            </li>
-            <li>
-                <t:pagelink page="GridDemo">Grid Demo</t:pagelink>
-            </li>
-            <li>
-                <t:pagelink page="CachedForm">Cached Form</t:pagelink>
-            </li>
-        </ul>
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-hibernate/src/test/webapp/WEB-INF/web.xml b/maint-5-2/tapestry-hibernate/src/test/webapp/WEB-INF/web.xml
deleted file mode 100644
index 376f6c5..0000000
--- a/maint-5-2/tapestry-hibernate/src/test/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Tapestry-Hibernate Integration Test Application</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.example.app0</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-ioc/LICENSE.txt b/maint-5-2/tapestry-ioc/LICENSE.txt
deleted file mode 100644
index 61b38cc..0000000
--- a/maint-5-2/tapestry-ioc/LICENSE.txt
+++ /dev/null
@@ -1,380 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-   
--------------------------------------------------------------------------------
-
-JAVASSIST
-
-Javassist is not bundled with tapestry-ioc, but tapestry-ioc is not functional without Javassist.
-Javassist is distributed under a dual license: Mozilla Public License or LGPL (Lesser Gnu Public License). Tapestry
-invokes the MPL for compatibility with the Apache Software License.
-
-MOZILLA PUBLIC LICENSE
-Version 1.1
-
-1. Definitions.
-
-      1.0.1. "Commercial Use" means distribution or otherwise making the Covered Code available to a third party.
-
-      1.1. ''Contributor'' means each entity that creates or contributes to the creation of Modifications.
-
-      1.2. ''Contributor Version'' means the combination of the Original Code, prior Modifications used by a Contributor, and the Modifications made by that particular Contributor.
-
-      1.3. ''Covered Code'' means the Original Code or Modifications or the combination of the Original Code and Modifications, in each case including portions thereof.
-
-      1.4. ''Electronic Distribution Mechanism'' means a mechanism generally accepted in the software development community for the electronic transfer of data.
-
-      1.5. ''Executable'' means Covered Code in any form other than Source Code.
-
-      1.6. ''Initial Developer'' means the individual or entity identified as the Initial Developer in the Source Code notice required by Exhibit A.
-
-      1.7. ''Larger Work'' means a work which combines Covered Code or portions thereof with code not governed by the terms of this License.
-
-      1.8. ''License'' means this document.
-
-      1.8.1. "Licensable" means having the right to grant, to the maximum extent possible, whether at the time of the initial grant or subsequently acquired, any and all of the rights conveyed herein.
-
-      1.9. ''Modifications'' means any addition to or deletion from the substance or structure of either the Original Code or any previous Modifications. When Covered Code is released as a series of files, a Modification is:
-            A. Any addition to or deletion from the contents of a file containing Original Code or previous Modifications.
-
-            B. Any new file that contains any part of the Original Code or previous Modifications.
-
-      1.10. ''Original Code'' means Source Code of computer software code which is described in the Source Code notice required by Exhibit A as Original Code, and which, at the time of its release under this License is not already Covered Code governed by this License.
-
-      1.10.1. "Patent Claims" means any patent claim(s), now owned or hereafter acquired, including without limitation,  method, process, and apparatus claims, in any patent Licensable by grantor.
-
-      1.11. ''Source Code'' means the preferred form of the Covered Code for making modifications to it, including all modules it contains, plus any associated interface definition files, scripts used to control compilation and installation of an Executable, or source code differential comparisons against either the Original Code or another well known, available Covered Code of the Contributor's choice. The Source Code can be in a compressed or archival form, provided the appropriate decompression or de-archiving software is widely available for no charge.
-
-      1.12. "You'' (or "Your")  means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License or a future version of this License issued under Section 6.1. For legal entities, "You'' includes any entity which controls, is controlled by, or is under common control with You. For purposes of this definition, "control'' means (a) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (b) ownership of more than fifty percent (50%) of the outstanding shares or beneficial ownership of such entity.
-
-2. Source Code License.
-
-      2.1. The Initial Developer Grant.
-      The Initial Developer hereby grants You a world-wide, royalty-free, non-exclusive license, subject to third party intellectual property claims:
-            (a)  under intellectual property rights (other than patent or trademark) Licensable by Initial Developer to use, reproduce, modify, display, perform, sublicense and distribute the Original Code (or portions thereof) with or without Modifications, and/or as part of a Larger Work; and
-
-            (b) under Patents Claims infringed by the making, using or selling of Original Code, to make, have made, use, practice, sell, and offer for sale, and/or otherwise dispose of the Original Code (or portions thereof).
-            (c) the licenses granted in this Section 2.1(a) and (b) are effective on the date Initial Developer first distributes Original Code under the terms of this License.
-
-            (d) Notwithstanding Section 2.1(b) above, no patent license is granted: 1) for code that You delete from the Original Code; 2) separate from the Original Code;  or 3) for infringements caused by: i) the modification of the Original Code or ii) the combination of the Original Code with other software or devices.
-
-      2.2. Contributor Grant.
-      Subject to third party intellectual property claims, each Contributor hereby grants You a world-wide, royalty-free, non-exclusive license
-
-            (a)  under intellectual property rights (other than patent or trademark) Licensable by Contributor, to use, reproduce, modify, display, perform, sublicense and distribute the Modifications created by such Contributor (or portions thereof) either on an unmodified basis, with other Modifications, as Covered Code and/or as part of a Larger Work; and
-
-            (b) under Patent Claims infringed by the making, using, or selling of  Modifications made by that Contributor either alone and/or in combination with its Contributor Version (or portions of such combination), to make, use, sell, offer for sale, have made, and/or otherwise dispose of: 1) Modifications made by that Contributor (or portions thereof); and 2) the combination of  Modifications made by that Contributor with its Contributor Version (or portions of such combination).
-
-            (c) the licenses granted in Sections 2.2(a) and 2.2(b) are effective on the date Contributor first makes Commercial Use of the Covered Code.
-
-            (d)    Notwithstanding Section 2.2(b) above, no patent license is granted: 1) for any code that Contributor has deleted from the Contributor Version; 2)  separate from the Contributor Version;  3)  for infringements caused by: i) third party modifications of Contributor Version or ii)  the combination of Modifications made by that Contributor with other software  (except as part of the Contributor Version) or other devices; or 4) under Patent Claims infringed by Covered Code in the absence of Modifications made by that Contributor.
-
-
-3. Distribution Obligations.
-
-      3.1. Application of License.
-      The Modifications which You create or to which You contribute are governed by the terms of this License, including without limitation Section 2.2. The Source Code version of Covered Code may be distributed only under the terms of this License or a future version of this License released under Section 6.1, and You must include a copy of this License with every copy of the Source Code You distribute. You may not offer or impose any terms on any Source Code version that alters or restricts the applicable version of this License or the recipients' rights hereunder. However, You may include an additional document offering the additional rights described in Section 3.5.
-
-      3.2. Availability of Source Code.
-      Any Modification which You create or to which You contribute must be made available in Source Code form under the terms of this License either on the same media as an Executable version or via an accepted Electronic Distribution Mechanism to anyone to whom you made an Executable version available; and if made available via Electronic Distribution Mechanism, must remain available for at least twelve (12) months after the date it initially became available, or at least six (6) months after a subsequent version of that particular Modification has been made available to such recipients. You are responsible for ensuring that the Source Code version remains available even if the Electronic Distribution Mechanism is maintained by a third party.
-
-      3.3. Description of Modifications.
-      You must cause all Covered Code to which You contribute to contain a file documenting the changes You made to create that Covered Code and the date of any change. You must include a prominent statement that the Modification is derived, directly or indirectly, from Original Code provided by the Initial Developer and including the name of the Initial Developer in (a) the Source Code, and (b) in any notice in an Executable version or related documentation in which You describe the origin or ownership of the Covered Code.
-
-      3.4. Intellectual Property Matters
-            (a) Third Party Claims.
-            If Contributor has knowledge that a license under a third party's intellectual property rights is required to exercise the rights granted by such Contributor under Sections 2.1 or 2.2, Contributor must include a text file with the Source Code distribution titled "LEGAL'' which describes the claim and the party making the claim in sufficient detail that a recipient will know whom to contact. If Contributor obtains such knowledge after the Modification is made available as described in Section 3.2, Contributor shall promptly modify the LEGAL file in all copies Contributor makes available thereafter and shall take other steps (such as notifying appropriate mailing lists or newsgroups) reasonably calculated to inform those who received the Covered Code that new knowledge has been obtained.
-
-            (b) Contributor APIs.
-            If Contributor's Modifications include an application programming interface and Contributor has knowledge of patent licenses which are reasonably necessary to implement that API, Contributor must also include this information in the LEGAL file.
-
-                (c)    Representations.
-            Contributor represents that, except as disclosed pursuant to Section 3.4(a) above, Contributor believes that Contributor's Modifications are Contributor's original creation(s) and/or Contributor has sufficient rights to grant the rights conveyed by this License.
-
-
-      3.5. Required Notices.
-      You must duplicate the notice in Exhibit A in each file of the Source Code.  If it is not possible to put such notice in a particular Source Code file due to its structure, then You must include such notice in a location (such as a relevant directory) where a user would be likely to look for such a notice.  If You created one or more Modification(s) You may add your name as a Contributor to the notice described in Exhibit A.  You must also duplicate this License in any documentation for the Source Code where You describe recipients' rights or ownership rights relating to Covered Code.  You may choose to offer, and to charge a fee for, warranty, support, indemnity or liability obligations to one or more recipients of Covered Code. However, You may do so only on Your own behalf, and not on behalf of the Initial Developer or any Contributor. You must make it absolutely clear than any such warranty, support, indemnity or liability obligation is offered by You alone, and You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of warranty, support, indemnity or liability terms You offer.
-
-      3.6. Distribution of Executable Versions.
-      You may distribute Covered Code in Executable form only if the requirements of Section 3.1-3.5 have been met for that Covered Code, and if You include a notice stating that the Source Code version of the Covered Code is available under the terms of this License, including a description of how and where You have fulfilled the obligations of Section 3.2. The notice must be conspicuously included in any notice in an Executable version, related documentation or collateral in which You describe recipients' rights relating to the Covered Code. You may distribute the Executable version of Covered Code or ownership rights under a license of Your choice, which may contain terms different from this License, provided that You are in compliance with the terms of this License and that the license for the Executable version does not attempt to limit or alter the recipient's rights in the Source Code version from the rights set forth in this License. If You distribute the Executable version under a different license You must make it absolutely clear that any terms which differ from this License are offered by You alone, not by the Initial Developer or any Contributor. You hereby agree to indemnify the Initial Developer and every Contributor for any liability incurred by the Initial Developer or such Contributor as a result of any such terms You offer.
-
-      3.7. Larger Works.
-      You may create a Larger Work by combining Covered Code with other code not governed by the terms of this License and distribute the Larger Work as a single product. In such a case, You must make sure the requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
-      If it is impossible for You to comply with any of the terms of this License with respect to some or all of the Covered Code due to statute, judicial order, or regulation then You must: (a) comply with the terms of this License to the maximum extent possible; and (b) describe the limitations and the code they affect. Such description must be included in the LEGAL file described in Section 3.4 and must be included with all distributions of the Source Code. Except to the extent prohibited by statute or regulation, such description must be sufficiently detailed for a recipient of ordinary skill to be able to understand it.
-
-5. Application of this License.
-
-      This License applies to code to which the Initial Developer has attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
-      6.1. New Versions.
-      Netscape Communications Corporation (''Netscape'') may publish revised and/or new versions of the License from time to time. Each version will be given a distinguishing version number.
-
-      6.2. Effect of New Versions.
-      Once Covered Code has been published under a particular version of the License, You may always continue to use it under the terms of that version. You may also choose to use such Covered Code under the terms of any subsequent version of the License published by Netscape. No one other than Netscape has the right to modify the terms applicable to Covered Code created under this License.
-
-      6.3. Derivative Works.
-      If You create or use a modified version of this License (which you may only do in order to apply it to code which is not already Covered Code governed by this License), You must (a) rename Your license so that the phrases ''Mozilla'', ''MOZILLAPL'', ''MOZPL'', ''Netscape'', "MPL", ''NPL'' or any confusingly similar phrase do not appear in your license (except to note that your license differs from this License) and (b) otherwise make it clear that Your version of the license contains terms which differ from the Mozilla Public License and Netscape Public License. (Filling in the name of the Initial Developer, Original Code or Contributor in the notice described in Exhibit A shall not of themselves be deemed to be modifications of this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
-      COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS'' BASIS, WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT, YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
-      8.1.  This License and the rights granted hereunder will terminate automatically if You fail to comply with terms herein and fail to cure such breach within 30 days of becoming aware of the breach. All sublicenses to the Covered Code which are properly granted shall survive any termination of this License. Provisions which, by their nature, must remain in effect beyond the termination of this License shall survive.
-
-      8.2.  If You initiate litigation by asserting a patent infringement claim (excluding declatory judgment actions) against Initial Developer or a Contributor (the Initial Developer or Contributor against whom You file such action is referred to as "Participant")  alleging that:
-
-      (a)  such Participant's Contributor Version directly or indirectly infringes any patent, then any and all rights granted by such Participant to You under Sections 2.1 and/or 2.2 of this License shall, upon 60 days notice from Participant terminate prospectively, unless if within 60 days after receipt of notice You either: (i)  agree in writing to pay Participant a mutually agreeable reasonable royalty for Your past and future use of Modifications made by such Participant, or (ii) withdraw Your litigation claim with respect to the Contributor Version against such Participant.  If within 60 days of notice, a reasonable royalty and payment arrangement are not mutually agreed upon in writing by the parties or the litigation claim is not withdrawn, the rights granted by Participant to You under Sections 2.1 and/or 2.2 automatically terminate at the expiration of the 60 day notice period specified above.
-
-      (b)  any software, hardware, or device, other than such Participant's Contributor Version, directly or indirectly infringes any patent, then any rights granted to You by such Participant under Sections 2.1(b) and 2.2(b) are revoked effective as of the date You first made, used, sold, distributed, or had made, Modifications made by that Participant.
-
-      8.3.  If You assert a patent infringement claim against Participant alleging that such Participant's Contributor Version directly or indirectly infringes any patent where such claim is resolved (such as by license or settlement) prior to the initiation of patent infringement litigation, then the reasonable value of the licenses granted by such Participant under Sections 2.1 or 2.2 shall be taken into account in determining the amount or value of any payment or license.
-
-      8.4.  In the event of termination under Sections 8.1 or 8.2 above,  all end user license agreements (excluding distributors and resellers) which have been validly granted by You or any distributor hereunder prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
-      UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE, OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL, WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
-      The Covered Code is a ''commercial item,'' as that term is defined in 48 C.F.R. 2.101 (Oct. 1995), consisting of ''commercial computer software'' and ''commercial computer software documentation,'' as such terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48 C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995), all U.S. Government End Users acquire Covered Code with only those rights set forth herein.
-
-11. MISCELLANEOUS.
-
-      This License represents the complete agreement concerning subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. This License shall be governed by California law provisions (except to the extent applicable law, if any, provides otherwise), excluding its conflict-of-law provisions. With respect to disputes in which at least one party is a citizen of, or an entity chartered or registered to do business in the United States of America, any litigation relating to this License shall be subject to the jurisdiction of the Federal Courts of the Northern District of California, with venue lying in Santa Clara County, California, with the losing party responsible for costs, including without limitation, court costs and reasonable attorneys' fees and expenses. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any law or regulation which provides that the language of a contract shall be construed against the drafter shall not apply to this License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
-      As between Initial Developer and the Contributors, each party is responsible for claims and damages arising, directly or indirectly, out of its utilization of rights under this License and You agree to work with Initial Developer and Contributors to distribute such responsibility on an equitable basis. Nothing herein is intended or shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
-      Initial Developer may designate portions of the Covered Code as ÒMultiple-Licensed?.  ÒMultiple-Licensed? means that the Initial Developer permits you to utilize portions of the Covered Code under Your choice of the MPL or the alternative licenses, if any, specified by the Initial Developer in the file described in Exhibit A.
-
-
-EXHIBIT A -Mozilla Public License.
-
-      The contents of this file are subject to the Mozilla Public License Version 1.1 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
-      http://www.mozilla.org/MPL/
-
-      Software distributed under the License is distributed on an "AS IS" basis, WITHOUT WARRANTY OF
-      ANY KIND, either express or implied. See the License for the specific language governing rights and
-      limitations under the License.
-
-      The Original Code is Javassist.
-
-      The Initial Developer of the Original Code is Shigeru Chiba. Portions created by the Initial Developer are
-        Copyright (C) 1999-2006 Shigeru Chiba. All Rights Reserved.
-
-      Contributor(s): ______________________________________.
-
-      Alternatively, the contents of this file may be used under the terms of the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), in which case the provisions of the LGPL are applicable instead of those above. If you wish to allow use of your version of this file only under the terms of the LGPL, and not to allow others to use your version of this file under the terms of the MPL, indicate your decision by deleting the provisions above and replace them with the notice and other provisions required by the LGPL. If you do not delete the provisions above, a recipient may use your version of this file under the terms of either the MPL or the LGPL.
-
diff --git a/maint-5-2/tapestry-ioc/NOTICE.txt b/maint-5-2/tapestry-ioc/NOTICE.txt
deleted file mode 100644
index a588f98..0000000
--- a/maint-5-2/tapestry-ioc/NOTICE.txt
+++ /dev/null
@@ -1,6 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product makes use of the Javassist library, distributed under
-the terms of the Mozilla Public License.
-http://www.jboss.com/products/javassist
diff --git a/maint-5-2/tapestry-ioc/pom.xml b/maint-5-2/tapestry-ioc/pom.xml
deleted file mode 100644
index fbc93a7..0000000
--- a/maint-5-2/tapestry-ioc/pom.xml
+++ /dev/null
@@ -1,146 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-ioc</artifactId>
-    <packaging>jar</packaging>
-    <!-- This should change to tapestry-project -->
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-    <name>Tapestry Inversion of Control Container</name>
-    <description>
-        A code-centric, high-performance, simple Inversion of Control
-        container.
-    </description>
-    <inceptionYear>2006</inceptionYear>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry5-annotations</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-func</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-        
-        <dependency>
-            <groupId>javassist</groupId>
-            <artifactId>javassist</artifactId>
-            <version>3.12.1.GA</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-api</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-
-        <!-- SLF4J now supports earlier versions of Log4J more cleanly, but still nice to include
-             a fully compatible version. -->
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.14</version>
-        </dependency>
-
-        <!-- 0.00001% of applications will need to override this dependency to not use Log4J. -->
-        <dependency>
-            <groupId>org.slf4j</groupId>
-            <artifactId>slf4j-log4j12</artifactId>
-            <version>1.6.1</version>
-        </dependency>
-
-
-        <!-- Override parent pom: needed at compile time. -->
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <scope>provided</scope>
-        </dependency>
-        <!-- Override parent pom: needed at compile time. -->
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <!-- Looks like if you override scope, you have to provide version (and classifier) as well.
-   Or perhaps this has something to do with classifier. -->
-            <version>${testng-version}</version>
-            <scope>provided</scope>
-        </dependency>
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-            </plugin>	    
-	    <plugin>
-		<groupId>org.codehaus.mojo</groupId>
-		<artifactId>clirr-maven-plugin</artifactId>
-		<configuration>
-		    <comparisonVersion>5.1.0.5</comparisonVersion>
-		    <excludes>
-			<exclude>**/internal/**</exclude>
-			<exclude>**/test/**</exclude>
-		    </excludes>
-		</configuration>
-	    </plugin>
-        </plugins>
-    </reporting>
-    <repositories>
-        <repository>
-            <!-- Needed to keep up with latest Javassist versions. -->
-            <id>jboss</id>
-            <url>https://repository.jboss.org/nexus/content/repositories/releases</url>
-        </repository>
-    </repositories>
-</project>
diff --git a/maint-5-2/tapestry-ioc/src/images/ioc-overview.graffle b/maint-5-2/tapestry-ioc/src/images/ioc-overview.graffle
deleted file mode 100644
index 1221344..0000000
--- a/maint-5-2/tapestry-ioc/src/images/ioc-overview.graffle
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-ioc/src/images/type-coercer.graffle b/maint-5-2/tapestry-ioc/src/images/type-coercer.graffle
deleted file mode 100644
index 35e04be..0000000
--- a/maint-5-2/tapestry-ioc/src/images/type-coercer.graffle
+++ /dev/null
@@ -1,2138 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActiveLayerIndex</key>
-	<integer>0</integer>
-	<key>ApplicationVersion</key>
-	<array>
-		<string>com.omnigroup.OmniGraffle</string>
-		<string>129.18</string>
-	</array>
-	<key>AutoAdjust</key>
-	<true/>
-	<key>CanvasColor</key>
-	<dict>
-		<key>w</key>
-		<string>1</string>
-	</dict>
-	<key>CanvasOrigin</key>
-	<string>{0, 0}</string>
-	<key>CanvasScale</key>
-	<real>1</real>
-	<key>ColumnAlign</key>
-	<integer>1</integer>
-	<key>ColumnSpacing</key>
-	<real>36</real>
-	<key>CreationDate</key>
-	<string>2007-02-11 09:26:40 -0800</string>
-	<key>Creator</key>
-	<string>Howard Lewis Ship</string>
-	<key>DisplayScale</key>
-	<string>1 in = 1 in</string>
-	<key>GraphDocumentVersion</key>
-	<integer>5</integer>
-	<key>GraphicsList</key>
-	<array>
-		<dict>
-			<key>Bounds</key>
-			<string>{{161.5, 168.6}, {61, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>65</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\i\fs24 \cf0 null}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-			<key>ID</key>
-			<integer>80</integer>
-			<key>Points</key>
-			<array>
-				<string>{167.455, 204.571}</string>
-				<string>{102.33, 252.254}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>65</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{165, 558}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>78</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 File}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{46.5, 472.8}, {61, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>48</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Object}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{32, 168.6}, {90, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>ID</key>
-			<integer>59</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Collection}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{43, 320.8}, {68, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>54</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Object[]}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{46.5, 396.8}, {61, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>52</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 List}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-			<key>ID</key>
-			<integer>51</integer>
-			<key>Points</key>
-			<array>
-				<string>{341, 426}</string>
-				<string>{341, 386}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>50</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{307, 427}, {68, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>50</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Number}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-			<key>ID</key>
-			<integer>49</integer>
-			<key>Points</key>
-			<array>
-				<string>{108.5, 490.8}</string>
-				<string>{164, 490.8}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>48</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-			<key>ID</key>
-			<integer>47</integer>
-			<key>Points</key>
-			<array>
-				<string>{314.254, 357.254}</string>
-				<string>{109.572, 282.669}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{43, 252.8}, {68, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>42</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Boolean}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{442.5, 333}, {61, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>NSKern</key>
-				<real>0.0</real>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>40</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 \expnd0\expndtw0\kerning0
-Float}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{217, 259}, {61, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>37</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Integer}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{446, 259}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>35</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Short}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{312.5, 259}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>33</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Byte}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{314, 349}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>30</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Long}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{147, 349}, {90, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>ID</key>
-			<integer>28</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 BigInteger}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{165, 472.8}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>4</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 String}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{296, 525}, {90, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>b</key>
-					<string>0</string>
-					<key>g</key>
-					<string>0</string>
-					<key>r</key>
-					<string>0</string>
-				</dict>
-			</dict>
-			<key>ID</key>
-			<integer>25</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 BigDecimal}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{442.5, 472.8}, {61, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Helvetica</string>
-				<key>NSKern</key>
-				<real>0.0</real>
-				<key>Size</key>
-				<real>12</real>
-			</dict>
-			<key>ID</key>
-			<integer>5</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.721691</string>
-						<key>g</key>
-						<string>0.996139</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-					<key>FillType</key>
-					<integer>2</integer>
-					<key>GradientColor</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>1</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.156298</string>
-						<key>g</key>
-						<string>0.676951</string>
-						<key>r</key>
-						<string>0.684443</string>
-					</dict>
-					<key>CornerRadius</key>
-					<real>6</real>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\ansi\ansicpg1252\cocoartf949\cocoasubrtf270
-{\fonttbl\f0\fswiss\fcharset0 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 \expnd0\expndtw0\kerning0
-Double}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-			<key>ID</key>
-			<integer>43</integer>
-			<key>Points</key>
-			<array>
-				<string>{180.943, 471.937}</string>
-				<string>{158, 432.8}</string>
-				<string>{130, 349}</string>
-				<string>{89.7605, 289.628}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>40</integer>
-			</dict>
-			<key>ID</key>
-			<integer>41</integer>
-			<key>Points</key>
-			<array>
-				<string>{473, 471.8}</string>
-				<string>{473, 370}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>5</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-			<key>ID</key>
-			<integer>39</integer>
-			<key>Points</key>
-			<array>
-				<string>{453.078, 472.116}</string>
-				<string>{360.91, 385.673}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>FilledArrow</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>5</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>37</integer>
-			</dict>
-			<key>ID</key>
-			<integer>38</integer>
-			<key>Points</key>
-			<array>
-				<string>{321.58, 348.307}</string>
-				<string>{266.92, 295.693}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>35</integer>
-			</dict>
-			<key>ID</key>
-			<integer>36</integer>
-			<key>Points</key>
-			<array>
-				<string>{364.747, 350.809}</string>
-				<string>{449.253, 293.191}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>33</integer>
-			</dict>
-			<key>ID</key>
-			<integer>34</integer>
-			<key>Points</key>
-			<array>
-				<string>{340.683, 348}</string>
-				<string>{339.817, 296}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-			<key>ID</key>
-			<integer>32</integer>
-			<key>Points</key>
-			<array>
-				<string>{213.727, 472.748}</string>
-				<string>{319.273, 385.052}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>30</integer>
-			</dict>
-			<key>ID</key>
-			<integer>31</integer>
-			<key>Points</key>
-			<array>
-				<string>{238, 367}</string>
-				<string>{313, 367}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>28</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>28</integer>
-			</dict>
-			<key>ID</key>
-			<integer>29</integer>
-			<key>Points</key>
-			<array>
-				<string>{192, 471.8}</string>
-				<string>{192, 386}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>5</integer>
-			</dict>
-			<key>ID</key>
-			<integer>27</integer>
-			<key>Points</key>
-			<array>
-				<string>{386.694, 539.111}</string>
-				<string>{435, 535}</string>
-				<string>{456.873, 509.558}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>25</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>25</integer>
-			</dict>
-			<key>ID</key>
-			<integer>26</integer>
-			<key>Points</key>
-			<array>
-				<string>{218.84, 500.203}</string>
-				<string>{300.079, 528.664}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>5</integer>
-			</dict>
-			<key>ID</key>
-			<integer>24</integer>
-			<key>Points</key>
-			<array>
-				<string>{220, 490.828}</string>
-				<string>{393, 491}</string>
-				<string>{441.5, 490.879}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>52</integer>
-			</dict>
-			<key>ID</key>
-			<integer>53</integer>
-			<key>Points</key>
-			<array>
-				<string>{77, 471.8}</string>
-				<string>{77, 433.8}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>48</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>52</integer>
-			</dict>
-			<key>ID</key>
-			<integer>55</integer>
-			<key>Points</key>
-			<array>
-				<string>{77, 357.8}</string>
-				<string>{77, 395.8}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>54</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>42</integer>
-			</dict>
-			<key>ID</key>
-			<integer>60</integer>
-			<key>Points</key>
-			<array>
-				<string>{77, 205.6}</string>
-				<string>{77, 251.8}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>59</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>78</integer>
-			</dict>
-			<key>ID</key>
-			<integer>79</integer>
-			<key>Points</key>
-			<array>
-				<string>{192, 509.8}</string>
-				<string>{192, 557}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>YES</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>4</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-	</array>
-	<key>GridInfo</key>
-	<dict/>
-	<key>GuidesLocked</key>
-	<string>NO</string>
-	<key>GuidesVisible</key>
-	<string>YES</string>
-	<key>HPages</key>
-	<integer>1</integer>
-	<key>ImageCounter</key>
-	<integer>1</integer>
-	<key>IsPalette</key>
-	<string>NO</string>
-	<key>KeepToScale</key>
-	<false/>
-	<key>Layers</key>
-	<array>
-		<dict>
-			<key>Lock</key>
-			<string>NO</string>
-			<key>Name</key>
-			<string>Layer 1</string>
-			<key>Print</key>
-			<string>YES</string>
-			<key>View</key>
-			<string>YES</string>
-		</dict>
-	</array>
-	<key>LayoutInfo</key>
-	<dict/>
-	<key>LinksVisible</key>
-	<string>NO</string>
-	<key>MagnetsVisible</key>
-	<string>NO</string>
-	<key>MasterSheet</key>
-	<string>Master 1</string>
-	<key>MasterSheets</key>
-	<array>
-		<dict>
-			<key>ActiveLayerIndex</key>
-			<integer>0</integer>
-			<key>AutoAdjust</key>
-			<true/>
-			<key>CanvasColor</key>
-			<dict>
-				<key>w</key>
-				<string>1</string>
-			</dict>
-			<key>CanvasOrigin</key>
-			<string>{0, 0}</string>
-			<key>CanvasScale</key>
-			<real>1</real>
-			<key>ColumnAlign</key>
-			<integer>1</integer>
-			<key>ColumnSpacing</key>
-			<real>36</real>
-			<key>DisplayScale</key>
-			<string>1 in = 1 in</string>
-			<key>GraphicsList</key>
-			<array/>
-			<key>GridInfo</key>
-			<dict/>
-			<key>HPages</key>
-			<integer>1</integer>
-			<key>IsPalette</key>
-			<string>NO</string>
-			<key>KeepToScale</key>
-			<false/>
-			<key>Layers</key>
-			<array>
-				<dict>
-					<key>Lock</key>
-					<string>NO</string>
-					<key>Name</key>
-					<string>Layer 1</string>
-					<key>Print</key>
-					<string>YES</string>
-					<key>View</key>
-					<string>YES</string>
-				</dict>
-			</array>
-			<key>LayoutInfo</key>
-			<dict/>
-			<key>Orientation</key>
-			<integer>2</integer>
-			<key>OutlineStyle</key>
-			<string>Basic</string>
-			<key>RowAlign</key>
-			<integer>1</integer>
-			<key>RowSpacing</key>
-			<real>36</real>
-			<key>SheetTitle</key>
-			<string>Master 1</string>
-			<key>UniqueID</key>
-			<integer>1</integer>
-			<key>VPages</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>ModificationDate</key>
-	<string>2008-03-27 17:18:27 -0700</string>
-	<key>Modifier</key>
-	<string>Howard Lewis Ship</string>
-	<key>NotesVisible</key>
-	<string>NO</string>
-	<key>Orientation</key>
-	<integer>2</integer>
-	<key>OriginVisible</key>
-	<string>NO</string>
-	<key>OutlineStyle</key>
-	<string>Basic</string>
-	<key>PageBreaks</key>
-	<string>YES</string>
-	<key>PrintInfo</key>
-	<dict>
-		<key>NSBottomMargin</key>
-		<array>
-			<string>coded</string>
-			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>
-		</array>
-		<key>NSLeftMargin</key>
-		<array>
-			<string>coded</string>
-			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>
-		</array>
-		<key>NSPaperSize</key>
-		<array>
-			<string>size</string>
-			<string>{612, 792}</string>
-		</array>
-		<key>NSRightMargin</key>
-		<array>
-			<string>coded</string>
-			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>
-		</array>
-		<key>NSTopMargin</key>
-		<array>
-			<string>coded</string>
-			<string>BAtzdHJlYW10eXBlZIHoA4QBQISEhAhOU051bWJlcgCEhAdOU1ZhbHVlAISECE5TT2JqZWN0AIWEASqEhAFklwCG</string>
-		</array>
-	</dict>
-	<key>ReadOnly</key>
-	<string>NO</string>
-	<key>RowAlign</key>
-	<integer>1</integer>
-	<key>RowSpacing</key>
-	<real>36</real>
-	<key>SheetTitle</key>
-	<string>Canvas 1</string>
-	<key>SmartAlignmentGuidesActive</key>
-	<string>YES</string>
-	<key>SmartDistanceGuidesActive</key>
-	<string>YES</string>
-	<key>UniqueID</key>
-	<integer>1</integer>
-	<key>UseEntirePage</key>
-	<true/>
-	<key>VPages</key>
-	<integer>1</integer>
-	<key>WindowInfo</key>
-	<dict>
-		<key>CurrentSheet</key>
-		<integer>0</integer>
-		<key>DrawerOpen</key>
-		<true/>
-		<key>DrawerTab</key>
-		<string>Outline</string>
-		<key>DrawerWidth</key>
-		<real>209</real>
-		<key>Frame</key>
-		<string>{{506, 384}, {591, 809}}</string>
-		<key>VisibleRegion</key>
-		<string>{{0, 61}, {576, 695}}</string>
-		<key>Zoom</key>
-		<real>1</real>
-	</dict>
-</dict>
-</plist>
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
deleted file mode 100644
index ec9f16e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/IOCSymbols.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5;
-
-// Note: refactored this down into the ioc package where it belongs.
-
-/**
- * @deprecated Use {@link org.apache.tapestry5.ioc.IOCSymbols} instead. To be removed after Tapestry 5.2.
- * @since 5.1.0
- */
-public class IOCSymbols extends org.apache.tapestry5.ioc.IOCSymbols
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AdvisorDef.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AdvisorDef.java
deleted file mode 100644
index ef71125..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AdvisorDef.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-/**
- * Definition of a service advisor, which (by default) is derived from a service advisor method. Service advisor methods
- * are static or instance methods on module classes prefixed with "advise". When a service is realized, a list of
- * matching AdvisorDefs is generated, then ordered, and from each a {@link org.apache.tapestry5.ioc.ServiceAdvisor} is
- * obtained and invoked.
- * <p/>
- * Note: service decorators (via {@link org.apache.tapestry5.ioc.def.DecoratorDef} are applied <em>around</em> the
- * interceptor generated via service advisors, (for compatibility with Tapestry 5.0). In general, you should use service
- * decoration or service advice, not both.
- *
- * @since 5.1.0.0
- */
-public interface AdvisorDef
-{
-    /**
-     * Returns the id of the advisor, which is derived from the advisor method name.
-     */
-    String getAdvisorId();
-
-    /**
-     * Returns ordering constraints for this advisor, to order it relative to other advisors.
-     *
-     * @return zero or more constraint strings
-     */
-    String[] getConstraints();
-
-    /**
-     * Creates an object that can provide the service advice (in the default case, by invoking the advise method on the
-     * module class or instance).
-     *
-     * @param moduleSource used to obtain the module instance
-     * @param resources    used to provide injections into the advise method
-     * @return advisor
-     */
-    ServiceAdvisor createAdvisor(ModuleBuilderSource moduleSource, ServiceResources resources);
-
-    /**
-     * Used to determine which services may be advised. When advising a service, first the advisors that target the
-     * service are identified, then ordering occurs, then the {@link org.apache.tapestry5.ioc.ServiceAdvisor}s are
-     * obtained and invoked.
-     *
-     * @param serviceDef identifies a service that may be advised
-     * @return true if this advisor applies to the service
-     */
-    boolean matches(ServiceDef serviceDef);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AdvisorDef2.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AdvisorDef2.java
deleted file mode 100644
index b26636c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AdvisorDef2.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc;
-
-/**
- * Extended version of {@link org.apache.tapestry5.ioc.AdvisorDef} introduced to determine any
- * module method annotated with {@link org.apache.tapestry5.ioc.annotations.Advise} as an advisor
- * method. Before version 5.2 an advice is applied to any service whose id matched the pattern
- * provided by {@link org.apache.tapestry5.ioc.annotations.Match} annotation. As of version 5.2 a
- * service to advice may also be identified by a combination of
- * {@link org.apache.tapestry5.ioc.annotations.Advise} annotation and a set of marker annotations.
- *
- * @since 5.2.2
- */
-public interface AdvisorDef2 extends AdvisorDef, Markable
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AnnotationProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AnnotationProvider.java
deleted file mode 100644
index e08ffbe..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/AnnotationProvider.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.lang.annotation.Annotation;
-
-/**
- * A source of annotations. This interface is used to mask where the annotations come from (for example, from a Method,
- * a Class, or some other source).
- */
-public interface AnnotationProvider
-{
-    /**
-     * Searches for the specified annotation, returning the matching annotation instance.
-     *
-     * @param <T>
-     * @param annotationClass used to select the annotation to return«
-     * @return the annotation, or null if not found
-     */
-    <T extends Annotation> T getAnnotation(Class<T> annotationClass);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/BaseLocatable.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/BaseLocatable.java
deleted file mode 100644
index 2e2d953..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/BaseLocatable.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Base implementation of {@link org.apache.tapestry5.ioc.Locatable}.
- */
-public class BaseLocatable implements Locatable
-{
-    private final Location location;
-
-    protected BaseLocatable(Location location)
-    {
-        this.location = location;
-    }
-
-    public final Location getLocation()
-    {
-        return location;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Configuration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Configuration.java
deleted file mode 100644
index 03814f5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Configuration.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Object passed into a service contributor method that allows the method provide contributed values to the service's
- * configuration.
- * <p/>
- * A service can <em>collect</em> contributions in three different ways:
- * <ul>
- * <li>As an un-ordered collection of values</li>
- * <li>As an ordered list of values (where each value has a unique id, pre-requisites and post-requisites)</li>
- * <li>As a map of keys and values
- * </ul>
- * <p/>
- * This implementation is used for un-ordered configuration data.
- * <p/>
- * The service defines the <em>type</em> of contribution, in terms of a base class or service interface. Contributions
- * must be compatible with the type.
- */
-public interface Configuration<T>
-{
-    /**
-     * Adds an object to the service's contribution.
-     * 
-     * @param object
-     *            to add to the service's configuration
-     */
-    void add(T object);
-
-    /**
-     * Automatically instantiates an instance of the class, with dependencies injected, and adds it to the
-     * configuration. When the configuration type is an interface and the class to be contributed is a local file,
-     * then a reloadable proxy for the class will be created and contributed.
-     * 
-     * @param clazz
-     *            what class to instantiate
-     * @since 5.1.0.0
-     */
-    void addInstance(Class<? extends T> clazz);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
deleted file mode 100644
index 986e168..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCConstants.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class IOCConstants
-{
-    /**
-     * @deprecated Use {@link org.apache.tapestry5.ioc.ScopeConstants#DEFAULT} instead. To be removed after Tapestry
-     *             5.2.
-     */
-    public static final String DEFAULT_SCOPE = ScopeConstants.DEFAULT;
-
-    /**
-     * @deprecated Use {@link org.apache.tapestry5.ioc.ScopeConstants#PERTHREAD} instead. To be removed after Tapestry
-     *             5.2.
-     */
-    public static final String PERTHREAD_SCOPE = ScopeConstants.PERTHREAD;
-
-    public static final String MODULE_BUILDER_MANIFEST_ENTRY_NAME = "Tapestry-Module-Classes";
-
-    public static final String MASTER_OBJECT_PROVIDER_SERVICE_ID = "MasterObjectProvider";
-
-    /**
-     * Name of a JVM System Property (but not, alas, a configuration symbol) that is used to disable
-     * live service reloading entirely (i.e., reverting to Tapestry 5.1 behavior).
-     * 
-     * @since 5.2.2
-     */
-    public static final String SERVICE_CLASS_RELOADING_ENABLED = "tapestry.service-reloading-enabled";
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java
deleted file mode 100644
index 6cd871f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCSymbols.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Configuration symbols used by the IoC container.
- *
- * @since 5.2.2
- */
-public class IOCSymbols
-{
-    /**
-     * The minimum size of the thread pool. The default is 3.
-     */
-    public static final String THREAD_POOL_CORE_SIZE = "tapestry.thread-pool.core-pool-size";
-
-    /**
-     * Maximium size of the pool before submitted invocations must wait to execute; the default is 20.
-     */
-    public static final String THREAD_POOL_MAX_SIZE = "tapestry.thread-pool.max-pool-size";
-
-    /**
-     * Time in milliseconds (via {@link org.apache.tapestry5.ioc.util.TimeInterval}) to keep waiting threads alive.
-     * Default is one minute (an epoch in application time).
-     */
-    public static final String THREAD_POOL_KEEP_ALIVE = "tapestry.thread-pool.keep-alive";
-
-    /**
-     * By default, the {@link org.apache.tapestry5.ioc.services.ParallelExecutor} service uses a thread pool. In
-     * environments (such as Google Application Engine) where thread creation is not allowed, this can be set to
-     * "false", and deferred logic will, instead, execute immediately.
-     *
-     * @since 5.1.0.3
-     */
-    public static final String THREAD_POOL_ENABLED = "tapestry.thread-pool-enabled";
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCUtilities.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCUtilities.java
deleted file mode 100644
index 2574f9a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IOCUtilities.java
+++ /dev/null
@@ -1,160 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import static org.apache.tapestry5.ioc.IOCConstants.MODULE_BUILDER_MANIFEST_ENTRY_NAME;
-import org.apache.tapestry5.ioc.annotations.SubModule;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Enumeration;
-import java.util.jar.Manifest;
-
-/**
- * A collection of utility methods for a couple of different areas, including creating the initial {@link
- * org.apache.tapestry5.ioc.Registry}.
- */
-public final class IOCUtilities
-{
-    private IOCUtilities()
-    {
-    }
-
-    /**
-     * Construct a default Registry, including modules identifed via the Tapestry-Module-Classes Manifest entry. The
-     * registry will have been {@linkplain Registry#performRegistryStartup() started up} before it is returned.
-     *
-     * @return constructed Registry, after startup
-     * @see #addDefaultModules(RegistryBuilder)
-     */
-    public static Registry buildDefaultRegistry()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-
-        addDefaultModules(builder);
-
-        Registry registry = builder.build();
-
-        registry.performRegistryStartup();
-
-        return registry;
-    }
-
-    /**
-     * Scans the classpath for JAR Manifests that contain the Tapestry-Module-Classes attribute and adds each
-     * corresponding class to the RegistryBuilder. In addition, looks for a system property named "tapestry.modules" and
-     * adds all of those modules as well. The tapestry.modules approach is intended for development.
-     *
-     * @param builder the builder to which modules will be added
-     * @see SubModule
-     * @see RegistryBuilder#add(String)
-     */
-    public static void addDefaultModules(RegistryBuilder builder)
-    {
-        try
-        {
-            Enumeration<URL> urls = builder.getClassLoader().getResources("META-INF/MANIFEST.MF");
-
-            while (urls.hasMoreElements())
-            {
-                URL url = urls.nextElement();
-
-                addModulesInManifest(builder, url);
-            }
-
-            addModulesInList(builder, System.getProperty("tapestry.modules"));
-
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex.getMessage(), ex);
-        }
-    }
-
-    private static void addModulesInManifest(RegistryBuilder builder, URL url)
-    {
-        InputStream in = null;
-
-        Throwable fail = null;
-
-        try
-        {
-            in = url.openStream();
-
-            Manifest mf = new Manifest(in);
-
-            in.close();
-
-            in = null;
-
-            String list = mf.getMainAttributes().getValue(MODULE_BUILDER_MANIFEST_ENTRY_NAME);
-
-            addModulesInList(builder, list);
-        }
-        catch (RuntimeException ex)
-        {
-            fail = ex;
-        }
-        catch (IOException ex)
-        {
-            fail = ex;
-        }
-        finally
-        {
-            close(in);
-        }
-
-        if (fail != null)
-            throw new RuntimeException(String.format("Exception loading module(s) from manifest %s: %s",
-                                                     url.toString(),
-                                                     InternalUtils.toMessage(fail)), fail);
-
-    }
-
-    static void addModulesInList(RegistryBuilder builder, String list)
-    {
-        if (list == null) return;
-
-        String[] classnames = list.split(",");
-
-        for (String classname : classnames)
-        {
-            builder.add(classname.trim());
-        }
-    }
-
-    /**
-     * Closes an input stream (or other Closeable), ignoring any exception.
-     *
-     * @param closeable the thing to close, or null to close nothing
-     */
-    private static void close(Closeable closeable)
-    {
-        if (closeable != null)
-        {
-            try
-            {
-                closeable.close();
-            }
-            catch (IOException ex)
-            {
-                // Ignore.
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IdMatcher.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IdMatcher.java
deleted file mode 100644
index 4e5acc0..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/IdMatcher.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * A matcher of <em>fully qualified<em> ids.
- */
-public interface IdMatcher
-{
-    /**
-     * Returns true if the provided input id matches the pattern defined by this matcher instance.
-     *
-     * @param id the fully qualfied id
-     * @return true on match, false otherwise
-     */
-    boolean matches(String id);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java
deleted file mode 100644
index 048a503..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invocation.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * A method invocation passed to a {@link org.apache.tapestry5.ioc.MethodAdvice}.
- */
-public interface Invocation
-{
-    /**
-     * Returns the name of the method being invoked.
-     */
-    String getMethodName();
-
-    /**
-     * Returns the type of the method result, which may be a primitive type (i.e., int.class) or even void
-     * (void.class).
-     */
-    Class getResultType();
-
-    /**
-     * Returns the number of parameters passed to the method.
-     */
-    int getParameterCount();
-
-    /**
-     * Returns the type of the parameter at the index.
-     */
-    Class getParameterType(int index);
-
-    /**
-     * Returns the indicated parameter (may return null if the parameter is null).
-     */
-    Object getParameter(int index);
-
-    /**
-     * Replaces a parameter in the invocation.
-     * 
-     * @param index
-     *            of parameter to update
-     * @param newParameter
-     *            new parameter value (may be null)
-     */
-    void override(int index, Object newParameter);
-
-    /**
-     * Proceed with the invocation of the advised method. If the invocation results in a <em>runtime</em> exception,
-     * that is thrown. A checked exception is detected by invoking {@link #isFail()}.
-     */
-    void proceed();
-
-    /**
-     * If true, then the proceeded invocation threw a checked exception.
-     */
-    boolean isFail();
-
-    /**
-     * If the invocation failed (with a checked exception), then rethrow the exception wrapped in a
-     * RuntimeException.
-     * 
-     * @since 5.2.0
-     */
-    void rethrow();
-
-    /**
-     * After invoking {@link #proceed()}, used to obtain the thrown (checked) exception, if assignable to the provided
-     * type.
-     * 
-     * @param throwableClass
-     *            the type of exception to match
-     * @return the exception, if the proceeded invocation threw a checked exception, and the exception is assignable to
-     *         the provided type. In other cases, null is returned.
-     */
-    <T extends Throwable> T getThrown(Class<T> throwableClass);
-
-    /**
-     * Overrides the thrown exception. The passed exception should be a checked exception of the method. Note that for
-     * runtime exceptions, or even {@link Error}s, those can just be thrown. Sets the fail flag.
-     * 
-     * @param thrown
-     * @throws IllegalArgumentException
-     *             if thrown is null, or not a declared exception of the method
-     */
-    void overrideThrown(Exception thrown);
-
-    /**
-     * The return value after {@link #proceed()}, which may be null.
-     */
-    Object getResult();
-
-    /**
-     * Overrides the result. Clears the thrown exception (if any).
-     */
-    void overrideResult(Object newResult);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invokable.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invokable.java
deleted file mode 100644
index 9c65f27..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Invokable.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-
-/**
- * Similiar to {@link Runnable} execpt that it returns a value. Used to represent any operation which can return a
- * value.
- *
- * @param <T> the return value type
- * @see org.apache.tapestry5.ioc.OperationTracker#invoke(String, Invokable)
- */
-public interface Invokable<T>
-{
-    /**
-     * Called to produce a value.
-     */
-    T invoke();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Locatable.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Locatable.java
deleted file mode 100644
index 37b6551..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Locatable.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Interface implemented by objects which carry a location tag. Defines a readable property, location.
- */
-@SuppressWarnings({"JavaDoc"})
-public interface Locatable
-{
-    /**
-     * Returns the location associated with this object for error reporting purposes.
-     */
-    Location getLocation();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Location.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Location.java
deleted file mode 100644
index e6688c2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Location.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * A kind of tag applied to other objects to identify where they came from, in terms of a file (the resource), a line
- * number, and a column number. This is part of "line precise exception reporting", whereby errors at runtime can be
- * tracked backwards to the files from which they were parsed or otherwise constructed.
- */
-public interface Location
-{
-    /**
-     * The resource from which the object tagged with a location was derived.
-     */
-    Resource getResource();
-
-    /**
-     * The line number within the resource, if known, or -1 otherwise.
-     */
-    int getLine();
-
-    /**
-     * The column number within the line if known, or -1 otherwise.
-     */
-    int getColumn();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/LoggerSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/LoggerSource.java
deleted file mode 100644
index ff0d8e1..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/LoggerSource.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.slf4j.Logger;
-
-/**
- * A wrapper around SLF4J's LoggerFactory that exists to allow particular projects to "hook" the creation of Logger
- * instances.
- */
-public interface LoggerSource
-{
-    /**
-     * Creates or retrieves a log based on Class. This is rarely used in Tapestry IOC.
-     */
-    Logger getLogger(Class clazz);
-
-    /**
-     * Creates or retrieves a log based on name. Typically, the name will be a service id.
-     */
-    Logger getLogger(String name);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MappedConfiguration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MappedConfiguration.java
deleted file mode 100644
index 47c6026..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MappedConfiguration.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Object passed into a service contributor method that allows the method provide contributed values to the service's
- * configuration.
- * <p/>
- * A service can <em>collect</em> contributions in three different ways:
- * <ul>
- * <li>As an un-ordered collection of values</li>
- * <li>As an ordered list of values (where each value has a unique id, pre-requisites and post-requisites)</li>
- * <li>As a map of keys and values
- * </ul>
- * <p/>
- * The service defines the <em>type</em> of contribution, in terms of a base class or service interface. Contributions
- * must be compatible with the type.
- */
-public interface MappedConfiguration<K, V>
-{
-
-    /**
-     * Adds a keyed object to the service's contribution.
-     * 
-     * @param key
-     *            unique id for the value
-     * @param value
-     *            to contribute
-     * @throws IllegalArgumentException
-     *             if key is not unique
-     */
-    void add(K key, V value);
-
-    /**
-     * Overrides an existing contribution by its key.
-     * 
-     * @param key
-     *            unique id of value to override
-     * @param value
-     *            new value, or null to remove the key entirely
-     * @since 5.1.0.0
-     */
-    void override(K key, V value);
-
-    /**
-     * Adds a keyed object as an instantiated instance (with dependencies injected) of a class. When the value
-     * type is an interface and the class to be contributed is a local file,
-     * then a reloadable proxy for the value class will be created and contributed.
-     * 
-     * @param key
-     *            unique id for the value
-     * @param clazz
-     *            class to instantiate and contribute
-     * @since 5.1.0.0
-     */
-    void addInstance(K key, Class<? extends V> clazz);
-
-    /**
-     * Overrides an existing contribution with a new instance. When the value
-     * type is an interface and the class to be contributed is a local file,
-     * then a reloadable proxy for the value class will be created and contributed.
-     * 
-     * @param key
-     *            unique id of value to override
-     * @param clazz
-     *            class to instantiate as override
-     */
-    void overrideInstance(K key, Class<? extends V> clazz);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Markable.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Markable.java
deleted file mode 100644
index 8e50ebf..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Markable.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc;
-
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-
-/**
- * Interface implemented by objects which need to disambiguate services with marker annotations.
- *
- * @since 5.2.2
- */
-public interface Markable
-{
-    /**
-     * Returns an optional set of <em>marker annotation</em>. Marker annotations are used to disambiguate services; the
-     * combination of a marker annotation and a service type is expected to be unique. Note that it is not possible
-     * to identify which annotations are markers and which are not when this set is constructed, so it may include
-     * non-marker annotations.
-     *
-     * @see ServiceDef#getMarkers()
-     */
-    Set<Class> getMarkers();
-
-    /**
-     * Returns the service interface associated with the service.
-     *
-     * @see ServiceDef#getServiceInterface()
-     */
-    Class getServiceInterface();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MessageFormatter.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MessageFormatter.java
deleted file mode 100644
index e90eb65..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MessageFormatter.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Obtained from a {@link org.apache.tapestry5.ioc.Messages}, used to format messages for a specific localized message
- * key.
- */
-public interface MessageFormatter
-{
-    /**
-     * Formats the message. The arguments are passed to {@link java.util.Formatter} as is with one exception: Object of
-     * type {@link Throwable} are converted to their {@link Throwable#getMessage()} (or, if that is null, to the name of
-     * the class).
-     *
-     * @param args
-     * @return formatted string
-     */
-    String format(Object... args);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Messages.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Messages.java
deleted file mode 100644
index 93d13a5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Messages.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Provides access to a messages catalog, a set of properties files that provide localized messages for a particular
- * locale. The message catalog consists of keys and values and follows the semantics of a Java {@link
- * java.util.ResourceBundle} with some changes.
- */
-public interface Messages
-{
-    /**
-     * Returns true if the bundle contains the named key.
-     */
-    boolean contains(String key);
-
-    /**
-     * Returns the localized message for the given key. If catalog does not contain such a key, then a modified version
-     * of the key is returned (converted to upper case and enclosed in brackets).
-     *
-     * @param key
-     * @return localized message for key, or placeholder
-     */
-    String get(String key);
-
-    /**
-     * Returns a formatter for the message, which can be used to substitute arguments (as per {@link
-     * java.util.Formatter}).
-     *
-     * @param key
-     * @return formattable object
-     */
-    MessageFormatter getFormatter(String key);
-
-    /**
-     * Convienience for accessing a formatter and formatting a localized message with arguments.
-     */
-
-    String format(String key, Object... args);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MethodAdvice.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MethodAdvice.java
deleted file mode 100644
index 0436c48..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MethodAdvice.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * For Tapestry IoC, Aspects provide a limited amount of advise, i.e., advising method invocations. That's the only join
- * point available (method invocations of service interface methods); full AOP systems such as AspectJ can do much, much
- * more, such as advising field access and even object construction.
- *
- * @see org.apache.tapestry5.ioc.services.AspectDecorator
- */
-public interface MethodAdvice
-{
-    /**
-     * Allows the Aspect to advise the invocation.  The Aspect is free to inspect and even replace parameters. Most
-     * Aspects will then invoke {@link org.apache.tapestry5.ioc.Invocation#proceed()}.  The Aspect may then inspect and
-     * replace any checked thrown exceptions. Some Aspects (for example, caching) may selectively decide to bypass the
-     * invocation entirely, and instead invoke some other method or otherwise set a return value or thrown exception.
-     *
-     * @param invocation to advise
-     */
-    void advise(Invocation invocation);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MethodAdviceReceiver.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MethodAdviceReceiver.java
deleted file mode 100644
index 0d2f58a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/MethodAdviceReceiver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.lang.reflect.Method;
-
-/**
- * Interface used with service advisor methods to define advice.  Allows advice on specific methods, or on all methods.
- */
-public interface MethodAdviceReceiver
-{
-    /**
-     * Adds advice for a specific method of the aspect interceptor being constructed.
-     *
-     * @param method method (of the interface for which an interceptor is being constructed) to be advised. Multiple
-     *               advice is allowed for a single method; the advice will be executed in the order it is added.
-     * @param advice the advice for this particular method.   Advice must be threadsafe.
-     */
-    void adviseMethod(Method method, MethodAdvice advice);
-
-    /**
-     * Advises <em>all</em> methods of the interface with the given advice.
-     */
-    void adviseAllMethods(MethodAdvice advice);
-
-    /**
-     * Returns the interface for which methods may be advised.
-     *
-     * @see org.apache.tapestry5.ioc.services.MethodIterator
-     * @since 5.1.0.0
-     */
-    Class getInterface();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ModuleBuilderSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ModuleBuilderSource.java
deleted file mode 100644
index a914a4f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ModuleBuilderSource.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * The source for the module instance needed by any service builders, service contributors and service decorators that
- * are mapped to instance methods.
- * <p/>
- * Allows the creation of the module instance to be deferred until actually needed; in practical terms, when the
- * builder/decorator/contributor is a <em>static</em> method on the module builder class, then a module instance is not
- * needed. This allows Tapestry IOC to work around a tricky chicken-and-the-egg problem, whereby the constructor of a
- * module instance requires contributions that originate in the same module.
- * <p/>
- * The term "module builder" has been deprecated; the current term is "module class", but this interface is left as-is
- * for backwards compatibility.
- */
-public interface ModuleBuilderSource
-{
-    /**
-     * Returns the instantiated version of the Tapestry IoC module class.
-     */
-    Object getModuleBuilder();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectCreator.java
deleted file mode 100644
index b5a3b8f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectCreator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Interface used to encapsulate any strategy used defer the creation of some object until just as needed.
- */
-public interface ObjectCreator
-{
-    /**
-     * Create and return the object.  In some limited circumstances, the implementation may cache the result, returning
-     * the same object for repeated calls.
-     */
-    Object createObject();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectLocator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectLocator.java
deleted file mode 100644
index 6d4d384..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectLocator.java
+++ /dev/null
@@ -1,140 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.MasterObjectProvider;
-
-/**
- * Defines an object which can provide access to services defined within a {@link org.apache.tapestry5.ioc.Registry}, or
- * to objects or object instances available by other means. Services are accessed via service id, or
- * (when appropriate)
- * by just service interface. The Registry itself implements this interface, as does
- * {@link org.apache.tapestry5.ioc.ServiceResources}.
- */
-public interface ObjectLocator
-{
-    /**
-     * Obtains a service via its unique service id. Returns the service's proxy. The service proxy
-     * implements the same
-     * interface as the actual service, and is used to instantiate the actual service only as needed
-     * (this is
-     * transparent to the application).
-     * 
-     * @param <T>
-     * @param serviceId
-     *            unique Service id used to locate the service object (may contain <em>symbols</em>,
-     *            which
-     *            will be expanded), case is ignored
-     * @param serviceInterface
-     *            the interface implemented by the service (or an interface extended by the service
-     *            interface)
-     * @return the service instance
-     * @throws RuntimeException
-     *             if the service is not defined, or if an error occurs instantiating it
-     */
-    <T> T getService(String serviceId, Class<T> serviceInterface);
-
-    /**
-     * Locates a service given just a service interface. A single service must implement the service
-     * interface (which
-     * can be hard to guarantee). The search takes into account inheritance of the service interface
-     * (not the service <em>implementation</em>), which may result in a failure due to extra
-     * matches.
-     * 
-     * @param <T>
-     * @param serviceInterface
-     *            the interface the service implements
-     * @return the service's proxy
-     * @throws RuntimeException
-     *             if the service does not exist (this is considered programmer error), or multiple
-     *             services directly implement, or extend from, the service interface
-     */
-    <T> T getService(Class<T> serviceInterface);
-
-    /**
-     * Obtains an object indirectly, using the {@link org.apache.tapestry5.ioc.services.MasterObjectProvider} service.
-     * 
-     * @param objectType
-     *            the type of object to be returned
-     * @param annotationProvider
-     *            provides access to annotations on the field or parameter for which a value is to
-     *            be
-     *            obtained, which may be utilized in selecting an appropriate object, use
-     *            <strong>null</strong> when annotations are not available (in which case, selection
-     *            will
-     *            be based only on the object type)
-     * @param <T>
-     * @return the requested object
-     * @see ObjectProvider
-     */
-    <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider);
-
-    /**
-     * Autobuilds a class by finding the public constructor with the most parameters. Services and other resources or
-     * dependencies will be injected into the parameters of the constructor and into private fields marked with the
-     * {@link Inject} annotation. There are two cases: constructing a service implementation, and constructing
-     * an arbitrary object. In the former case, many <em>service resources</em> are also available for injection, not
-     * just dependencies or objects provided via
-     * {@link MasterObjectProvider#provide(Class, AnnotationProvider, ObjectLocator, boolean)}.
-     * 
-     * @param <T>
-     * @param clazz
-     *            the type of object to instantiate
-     * @return the instantiated instance
-     * @throws RuntimeException
-     *             if the autobuild fails
-     * @see MasterObjectProvider
-     */
-    <T> T autobuild(Class<T> clazz);
-
-    /**
-     * Preferred version of {@link #autobuild(Class)} that tracks the operation using
-     * {@link OperationTracker#invoke(String, Invokable)}.
-     * 
-     * @param <T>
-     * @param description
-     *            description used with {@link OperationTracker}
-     * @param clazz
-     *            the type of object to instantiate
-     * @return the instantiated instance
-     * @throws RuntimeException
-     *             if the autobuild fails
-     * @see MasterObjectProvider
-     * @since 5.2.0
-     */
-    <T> T autobuild(String description, Class<T> clazz);
-
-    /**
-     * Creates a proxy. The proxy will defer invocation of {@link #autobuild(Class)} until
-     * just-in-time (that is, first method invocation). In a limited number of cases, it is necessary to use such a
-     * proxy to prevent service construction cycles, particularly when contributing (directly or indirectly) to the
-     * {@link org.apache.tapestry5.ioc.services.MasterObjectProvider} (which is itself at the heart
-     * of autobuilding).
-     * <p>
-     * If the class file for the class is a file on the file system (not a file packaged in a JAR), then the proxy will
-     * <em>autoreload</em>: changing the class file will result in the new class being reloaded and re-instantiated
-     * (with dependencies).
-     * 
-     * @param <T>
-     * @param interfaceClass
-     *            the interface implemented by the proxy
-     * @param implementationClass
-     *            a concrete class that implements the interface
-     * @return a proxy
-     * @see #autobuild(Class)
-     */
-    <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectProvider.java
deleted file mode 100644
index c0e80bc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ObjectProvider.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Object providers represent an alternate way to locate an object provided somewhere in the {@link
- * org.apache.tapestry5.ioc.Registry}. Instead of using a just the service id to gain access to a service within the
- * Registry, object providers in different flavors are capable of vending, or even creating, objects of disparate types
- * from disparate sources.
- * <p/>
- * Object providers are consulted in a strict order, and the first non-null result is taken.
- * <p/>
- * In many cases, an object provider searches for additional annotations on the element (usually a parameter, or perhaps
- * a field) for which a value is required.
- */
-public interface ObjectProvider
-{
-    /**
-     * Provides an object based on an expression. The process of providing objects occurs within a particular
-     * <em>context</em>, which will typically be a service builder method, service contributor method, or service
-     * decorator method. The locator parameter provides access to the services visible <em>to that context</em>.
-     *
-     * @param objectType         the expected object type
-     * @param annotationProvider provides access to annotations (typically, the field or parameter to which an
-     *                           injection-related annotation is attached); annotations on the field or parameter may
-     *                           also be used when resolving the desired object
-     * @param locator            locator for the <em>context</em> in which the provider is being used
-     * @param <T>
-     * @return the requested object, or null if this object provider can not supply an object
-     * @throws RuntimeException if the expression can not be evaluated, or the type of object identified is not
-     *                          assignable to the type specified by the objectType parameter
-     */
-    <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OperationTracker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OperationTracker.java
deleted file mode 100644
index 8fb1ee3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OperationTracker.java
+++ /dev/null
@@ -1,39 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Used to track some set of operations in such a way that a failure (a thrown RuntimeException) will be logged along
- * with a trace of the stack of operations.
- */
-public interface OperationTracker
-{
-    /**
-     * Executes the operation.
-     *
-     * @param description used if there is an exception
-     * @param operation   to execute
-     */
-    void run(String description, Runnable operation);
-
-    /**
-     * Executes the operation, returning its value.
-     *
-     * @param description used if there is an exception
-     * @param operation   to invoke
-     * @return result of operation
-     */
-    <T> T invoke(String description, Invokable<T> operation);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderConstraint.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderConstraint.java
deleted file mode 100644
index 4cdbd26..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderConstraint.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents an order constraints for {@link OrderedConfiguration}.
- * 
- * @since 5.2.0.0
- */
-public class OrderConstraint
-{
-    private static final String ALL = "*";
-    
-    private List<String> constraints = new ArrayList<String>();
-    
-    /**
-     * Adds an <i>after:id</i> constraint.
-     */
-    public OrderConstraint after(String id)
-    {
-        constraints.add("after:" + id);
-        
-        return this;
-    }
-    
-    /**
-     * Adds an <i>after:*</i> constraint.
-     */
-    public OrderConstraint afterAll()
-    {
-        return after(ALL);
-    }
-    /**
-     * Adds a <i>before:id</i> constraint.
-     */
-    public OrderConstraint before(String id)
-    {
-        constraints.add("before:" + id);
-        
-        return this;
-    }
-    
-    /**
-     * Adds a <i>before:*</i> constraint.
-     */
-    public OrderConstraint beforeAll()
-    {
-        return before(ALL);
-    }
-    
-    /**
-     * Returns all constraints as array of strings.
-     */
-    public String[] build()
-    {
-        return constraints.toArray(new String[]{});
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderConstraintBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderConstraintBuilder.java
deleted file mode 100644
index 5085edc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderConstraintBuilder.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc;
-
-/**
- * Constructs order constraints for {@link OrderedConfiguration}.
- * 
- * @since 5.2.0.0
- */
-public final class OrderConstraintBuilder
-{
-    /**
-     * Adds an <i>after:id</i> constraint.
-     */
-    public static OrderConstraint after(String id)
-    {
-        return new OrderConstraint().after(id);
-    }
-    
-    /**
-     * Adds an <i>after:*</i> constraint.
-     */
-    public static OrderConstraint afterAll()
-    {
-        return new OrderConstraint().afterAll();
-    }
-    
-    /**
-     * Adds a <i>before:id</i> constraint.
-     */
-    public static OrderConstraint before(String id)
-    {
-        return new OrderConstraint().before(id);
-    }
-    
-    /**
-     * Adds a <i>before:*</i> constraint.
-     */
-    public static OrderConstraint beforeAll()
-    {
-        return new OrderConstraint().beforeAll();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Orderable.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Orderable.java
deleted file mode 100644
index 7805a08..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Orderable.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2006, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A wrapper that allows objects of a target type to be ordered. Each Orderable object is given a unique id and a set of
- * pre-requisites (objects which should be ordered earlier) and post-requisites (objects which should be ordered
- * later).
- *
- * @param <T>
- */
-public class Orderable<T>
-{
-    private final String id;
-
-    private final T target;
-
-    private final String[] constraints;
-
-    /**
-     * @param id     unique identifier for the target object
-     * @param target the object to be ordered; this may also be null (in which case the id represents a placeholder)
-     */
-
-    public Orderable(String id, T target, String... constraints)
-    {
-        assert InternalUtils.isNonBlank(id);
-        this.id = id;
-        this.target = target;
-        this.constraints = constraints;
-    }
-
-    public String getId()
-    {
-        return id;
-    }
-
-    public T getTarget()
-    {
-        return target;
-    }
-
-    public String[] getConstraints()
-    {
-        return constraints;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder buffer = new StringBuilder("Orderable[");
-
-        buffer.append(id);
-
-        for (String c : constraints)
-        {
-            buffer.append(" ");
-            buffer.append(c);
-        }
-
-        buffer.append(" ");
-        buffer.append(target.toString());
-        buffer.append("]");
-
-        return buffer.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderedConfiguration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderedConfiguration.java
deleted file mode 100644
index d6f4af0..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/OrderedConfiguration.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2006, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Object passed into a service contributor method that allows the method provide contributed values to the service's
- * configuration.
- * <p/>
- * A service can <em>collect</em> contributions in three different ways:
- * <ul>
- * <li>As an un-ordered collection of values</li>
- * <li>As an ordered list of values (where each value has a unique id, pre-requisites and post-requisites)</li>
- * <li>As a map of keys and values
- * </ul>
- * <p/>
- * The service defines the <em>type</em> of contribution, in terms of a base class or service interface. Contributions
- * must be compatible with the type.
- */
-public interface OrderedConfiguration<T>
-{
-    /**
-     * Adds an ordered object to a service's contribution. Each object has an id (which must be unique). Optionally,
-     * pre-requisites (a list of ids that must precede this object) and post-requisites (ids that must follow) can be
-     * provided.
-     * 
-     * @param id
-     *            a unique id for the object; the id will be fully qualified with the contributing module's id
-     * @param constraints
-     *            used to order the object relative to other contributed objects
-     * @parm object to add to the service's configuration
-     */
-    void add(String id, T object, String... constraints);
-
-    /**
-     * Overrides a normally contributed object. Each override must match a single normally contributed object.
-     * 
-     * @param id
-     *            identifies object to override
-     * @param object
-     *            overriding object (may be null)
-     * @param constraints
-     *            contrains for the overridden object, replacing constraints for the original object (even if
-     *            omitted, in which case the override object will have no orderring contraints)
-     * @since 5.1.0.0
-     */
-    void override(String id, T object, String... constraints);
-
-    /**
-     * Adds an ordered object by instantiating (with dependencies) the indicated class. When the configuration type is
-     * an interface and the class to be contributed is a local file,
-     * then a reloadable proxy for the class will be created and contributed.
-     * 
-     * @param id
-     *            of contribution (used for ordering)
-     * @param clazz
-     *            class to instantiate
-     * @param constraints
-     *            used to order the object relative to other contributed objects
-     * @since 5.1.0.0
-     */
-    void addInstance(String id, Class<? extends T> clazz, String... constraints);
-
-    /**
-     * Instantiates an object and adds it as an override. When the configuration type is an interface and the class to
-     * be contributed is a local file,
-     * then a reloadable proxy for the class will be created and contributed.
-     * 
-     * @param id
-     *            of object to override
-     * @param clazz
-     *            to instantiate
-     * @param constraints
-     *            override contraints
-     * @since 5.1.0.0
-     */
-    void overrideInstance(String id, Class<? extends T> clazz, String... constraints);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Registry.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Registry.java
deleted file mode 100644
index e977226..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Registry.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-
-/**
- * Public access to the IoC service registry.
- */
-public interface Registry extends ObjectLocator
-{
-    /**
-     * Invoked at the end of a request to discard any thread-specific information accumulated during the current
-     * request.
-     *
-     * @see org.apache.tapestry5.ioc.services.PerthreadManager
-     * @see org.apache.tapestry5.ioc.services.ThreadCleanupListener
-     */
-    void cleanupThread();
-
-    /**
-     * Shuts down a Registry instance. Notifies all listeners that the registry has shutdown. Further method invocations
-     * on the Registry are no longer allowed, and the Registry instance should be discarded.
-     *
-     * @see org.apache.tapestry5.ioc.services.RegistryShutdownHub
-     * @see org.apache.tapestry5.ioc.services.RegistryShutdownListener
-     */
-    void shutdown();
-
-    /**
-     * Invoked to eagerly load services marked with the {@link EagerLoad} annotation, and to execute all contributions
-     * to the Startup service.
-     */
-    void performRegistryStartup();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java
deleted file mode 100644
index 9da2071..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/RegistryBuilder.java
+++ /dev/null
@@ -1,229 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.SubModule;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl;
-import org.apache.tapestry5.ioc.internal.LoggerSourceImpl;
-import org.apache.tapestry5.ioc.internal.RegistryImpl;
-import org.apache.tapestry5.ioc.internal.RegistryWrapper;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.TapestryIOCModule;
-import org.slf4j.Logger;
-
-import java.lang.reflect.AnnotatedElement;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Set;
-
-/**
- * Used to construct the IoC {@link org.apache.tapestry5.ioc.Registry}. This class is <em>not</em> thread-safe. The
- * Registry, once created, <em>is</em> thread-safe.
- */
-public final class RegistryBuilder
-{
-    private final OneShotLock lock = new OneShotLock();
-
-    /**
-     * Module defs, keyed on module id.
-     */
-    final List<ModuleDef> modules = CollectionFactory.newList();
-
-    private final ClassLoader classLoader;
-
-    private final Logger logger;
-
-    private final LoggerSource loggerSource;
-
-    private final ClassFactory classFactory;
-
-    private final Set<Class> addedModuleClasses = CollectionFactory.newSet();
-
-    public RegistryBuilder()
-    {
-        this(Thread.currentThread().getContextClassLoader());
-    }
-
-    public RegistryBuilder(ClassLoader classLoader)
-    {
-        this(classLoader, new LoggerSourceImpl());
-    }
-
-    public RegistryBuilder(ClassLoader classLoader, LoggerSource loggerSource)
-    {
-        this.classLoader = classLoader;
-        this.loggerSource = loggerSource;
-        logger = loggerSource.getLogger(RegistryBuilder.class);
-
-        // Make the ClassFactory appear to be a service inside TapestryIOCModule, even before that
-        // module exists.
-
-        Logger classFactoryLogger = loggerSource.getLogger(TapestryIOCModule.class.getName() + ".ClassFactory");
-
-        classFactory = new ClassFactoryImpl(this.classLoader, classFactoryLogger);
-
-        add(TapestryIOCModule.class);
-    }
-
-    /**
-     * Adds a {@link ModuleDef} to the registry, returning the builder for further configuration.
-     */
-    public RegistryBuilder add(ModuleDef moduleDef)
-    {
-        lock.check();
-
-        // TODO: Some way to ensure that duplicate modules are not being added.
-        // Part of TAPESTRY-2117 is in add(Class...) and that may be as much as we can
-        // do as there is no concept of ModuleDef identity.
-
-        modules.add(moduleDef);
-
-        return this;
-    }
-
-    /**
-     * Adds a number of modules (as module classes) to the registry, returning the builder for further configuration.
-     *
-     * @see org.apache.tapestry5.ioc.annotations.SubModule
-     */
-    public RegistryBuilder add(Class... moduleClasses)
-    {
-        lock.check();
-
-        List<Class> queue = CollectionFactory.newList(Arrays.asList(moduleClasses));
-
-        while (!queue.isEmpty())
-        {
-            Class c = queue.remove(0);
-
-            // Quietly ignore previously added classes.
-
-            if (addedModuleClasses.contains(c)) continue;
-
-            addedModuleClasses.add(c);
-
-            logger.info("Adding module definition for " + c);
-
-            ModuleDef def = new DefaultModuleDefImpl(c, logger, classFactory);
-            add(def);
-
-            SubModule annotation = ((AnnotatedElement) c).getAnnotation(SubModule.class);
-
-            if (annotation == null) continue;
-
-            queue.addAll(Arrays.asList(annotation.value()));
-        }
-
-        return this;
-    }
-
-    /**
-     * Adds a  modle class (specified by fully qualified class name) to the registry, returning the builder
-     * for further configuration.
-     *
-     * @see org.apache.tapestry5.ioc.annotations.SubModule
-     */
-    public RegistryBuilder add(String classname)
-    {
-        lock.check();
-
-        try
-        {
-            Class builderClass = Class.forName(classname, true, classLoader);
-
-            add(builderClass);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(String.format("Failure loading Tapestry IoC module class %s: %s",
-                                                     classname, InternalUtils.toMessage(ex), ex));
-        }
-
-        return this;
-    }
-
-    /**
-     * Constructs and returns the registry; this may only be done once. The caller is responsible for invoking {@link
-     * org.apache.tapestry5.ioc.Registry#performRegistryStartup()}.
-     */
-    public Registry build()
-    {
-        lock.lock();
-
-        RegistryImpl registry = new RegistryImpl(modules, classFactory, loggerSource);
-
-        return new RegistryWrapper(registry);
-    }
-
-    public ClassLoader getClassLoader()
-    {
-        return classLoader;
-    }
-
-    public Logger getLogger()
-    {
-        return logger;
-    }
-    
-    /**
-     * Constructs the registry, adds a {@link ModuleDef} and a number of modules (as module classes) to the registry and 
-     * performs registry startup. The returned registry is ready to use. The caller is must not invoke {@link
-     * org.apache.tapestry5.ioc.Registry#performRegistryStartup()}.
-     * 
-     * @param moduleDef {@link ModuleDef} to add 
-     * @param moduleClasses modules (as module classes) to add
-     * 
-     * @return {@link Registry}
-     * 
-     * @since 5.2.0
-     */
-    public static Registry buildAndStartupRegistry(ModuleDef moduleDef, Class... moduleClasses)
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-        
-        if(moduleDef != null)
-            builder.add(moduleDef);
-        
-        builder.add(moduleClasses);
-        
-        Registry registry = builder.build();
-        
-        registry.performRegistryStartup();
-        
-        return registry;
-    }
-    
-    /**
-     * Constructs the registry, adds a number of modules (as module classes) to the registry and 
-     * performs registry startup. The returned registry is ready to use. The caller is must not invoke {@link
-     * org.apache.tapestry5.ioc.Registry#performRegistryStartup()}.
-     * 
-     * @param moduleDef {@link ModuleDef} to add 
-     * @param moduleClasses modules (as module classes) to add
-     * 
-     * @return {@link Registry}
-     * 
-     * @since 5.2.0
-     */
-    public static Registry buildAndStartupRegistry(Class... moduleClasses)
-    {   
-        return buildAndStartupRegistry(null, moduleClasses);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ReloadAware.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ReloadAware.java
deleted file mode 100644
index e6f6a60..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ReloadAware.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-import org.apache.tapestry5.services.UpdateListenerHub;
-
-/**
- * Optional interface that may be implemented by a service implementation (or even
- * a {@linkplain ObjectLocator#proxy(Class, Class) proxy} to give the service implementation
- * more control over its lifecyle.
- * 
- * @since 5.2.2
- */
-public interface ReloadAware
-{
-    /**
-     * Invoked when Tapestry {@linkplain UpdateListenerHub#fireCheckForUpdates() notices
-     * that the implementation class has changed}. The existing instance is notified, so that
-     * it can cleanly shutdown now, before being re-instantiated. This is necessary when the
-     * service implementation retains some form of external resources.
-     * <p>
-     * In addition, the implementation may request an immediate reload. Normally, reloading of the service is deferred
-     * until a method of the proxy object is invoked (this causes the normal just-in-time instantiation of the
-     * implementation). When this method returns true, the implementation is re-created immediately. This is most often
-     * the case for services that are {@linkplain EagerLoad eagerly loaded} in the first place.
-     * 
-     * @return true if the service should be reloaded immediately, false if reload should be deferred
-     */
-    boolean shutdownImplementationForReload();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Resource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Resource.java
deleted file mode 100644
index aa431f5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/Resource.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Locale;
-
-/**
- * Represents a resource on the server that may be used for server side processing, or may be exposed to the client
- * side. Generally, this represents an abstraction on top of files on the class path and files stored in the web
- * application context.
- * <p/>
- * Resources are often used as map keys; they should be immutable and should implement hashCode() and equals().
- */
-public interface Resource
-{
-
-    /**
-     * Returns true if the resource exists; if a stream to the content of the file may be openned.
-     *
-     * @return true if the resource exists, false if it does not
-     */
-    boolean exists();
-
-    /**
-     * Opens a stream to the content of the resource, or returns null if the resource does not exist.
-     *
-     * @return an open, buffered stream to the content, if available
-     */
-    InputStream openStream() throws IOException;
-
-    /**
-     * Returns the URL for the resource, or null if it does not exist.
-     */
-    URL toURL();
-
-    /**
-     * Returns a localized version of the resource. May return null if no such resource exists.
-     */
-    Resource forLocale(Locale locale);
-
-    /**
-     * Returns a Resource based on a relative path, relative to the folder containing the resource. Understands the "."
-     * (current folder) and ".." (parent folder) conventions, and treats multiple sequential slashes as a single slash.
-     */
-    Resource forFile(String relativePath);
-
-    /**
-     * Returns a new Resource with the extension changed (or, if the resource does not have an extension, the extension
-     * is added). The new Resource may not exist (that is, {@link #toURL()} may return null.
-     *
-     * @param extension to apply to the resource, such as "html" or "properties"
-     * @return the new resource
-     */
-    Resource withExtension(String extension);
-
-    /**
-     * Returns the portion of the path up to the last forward slash; this is the directory or folder portion of the
-     * Resource.
-     */
-    String getFolder();
-
-    /**
-     * Returns the file portion of the Resource path, everything that follows the final forward slash.
-     */
-    String getFile();
-
-    /**
-     * Return the path (the combination of folder and file).
-     */
-    String getPath();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ScopeConstants.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ScopeConstants.java
deleted file mode 100644
index 88951f7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ScopeConstants.java
+++ /dev/null
@@ -1,41 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-
-/**
- * Defines constants for built-in scopes (used with the {@link org.apache.tapestry5.ioc.annotations.Scope} annotation.
- */
-public class ScopeConstants
-{
-    /**
-     * The default scope is a singleton within the {@link org.apache.tapestry5.ioc.Registry}. A single instance will be
-     * created on demand.  The lifespan of the instance lasts until the registry is {@linkplain Registry#shutdown() shut
-     * down}. <p/>Some implementations will want to know when the Registry is shutdown; they should register for
-     * notifications via the {@link org.apache.tapestry5.ioc.services.RegistryShutdownHub} service.
-     */
-    public static final String DEFAULT = "singleton";
-
-    /**
-     * An alternate scope provided with Tapestry; a per-thread instance is created on demand, behind a shared proxy.
-     * Method invocations on the shared proxy are forwarded to the per-thread instance. Each per-thread instance lasts
-     * until the {@linkplain Registry#cleanupThread() thread is cleaned up} (at the end of a request for a web
-     * application). <p>Some implementations will want to be notified before being discarded and should register with
-     * the {@link org.apache.tapestry5.ioc.services.PerthreadManager} to receive notifications.
-     *
-     * @see org.apache.tapestry5.ioc.internal.services.PerThreadServiceLifecycle
-     */
-    public static final String PERTHREAD = "perthread";
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceAdvisor.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceAdvisor.java
deleted file mode 100644
index 0867198..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceAdvisor.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Provided by a {@link org.apache.tapestry5.ioc.AdvisorDef} to perform the advice (by invoking methods on a {@link
- * MethodAdviceReceiver}).
- *
- * @since 5.1.0.0
- */
-public interface ServiceAdvisor
-{
-    /**
-     * Passed the reciever, allows the code (usually a method on a module class) to advice some or all methods.
-     *
-     * @param methodAdviceReceiver
-     */
-    void advise(MethodAdviceReceiver methodAdviceReceiver);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBinder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBinder.java
deleted file mode 100644
index bdb7983..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBinder.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-/**
- * Allows a module to bind service interfaces to service implementation classes in support of autobuilding services. A
- * ServiceBinder is passed to to a method with the following signature: <code>public static void bind(ServiceBinder
- * binder)</code>. This is an adaptation of ideas from <a href="http://code.google.com/p/google-guice/">Guice</a>.
- */
-public interface ServiceBinder
-{
-    /**
-     * Defines a service in terms of an implementation class, without a service interface. In this case, the service
-     * will not be proxiable (proxying requires a service interface) and {@link ServiceDef#getServiceInterface()} will
-     * return the implementation class. In this situation, the service will not be proxied; it will be instantiated
-     * fully on first reference (ignoring its scope, if any) and will not be decorated.
-     *
-     * @param <T>
-     * @param implementationClass class to instantiate as the service
-     * @return binding options, used to specify additional details about the service
-     */
-    <T> ServiceBindingOptions bind(Class<T> implementationClass);
-
-    /**
-     * Alternative implementation that supports a callback to build the service, rather than instantiating a particular
-     * class.
-     *
-     * @param serviceInterface interface implemented by the service
-     * @param builder          constructs the core service implementation
-     * @return binding options, used to specify additional details about the service
-     */
-    <T> ServiceBindingOptions bind(Class<T> serviceInterface, ServiceBuilder<T> builder);
-
-    /**
-     * Binds the service interface to a service implementation class. The default service name is the unqualified name
-     * of the service interface. The default service scope is "singleton", unless the service implementation class
-     * includes the {@link Scope} annotation.
-     *
-     * @param <T>
-     * @param serviceInterface      service interface (used when locating services, and when building proxies)
-     * @param serviceImplementation implementation class that implements the service interface
-     * @return binding options, used to specify additional details about the service
-     */
-    <T> ServiceBindingOptions bind(Class<T> serviceInterface,
-                                   Class<? extends T> serviceImplementation);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBindingOptions.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBindingOptions.java
deleted file mode 100644
index 09e26f4..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBindingOptions.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-import java.lang.annotation.Annotation;
-
-/**
- * Allows additional options for a service to be specified, overriding hard coded defaults or defaults from annotations
- * on the service.
- * 
- * @see org.apache.tapestry5.ioc.def.ServiceDef2
- */
-public interface ServiceBindingOptions
-{
-    /**
-     * Allows a specific service id for the service to be provided, rather than the default (from the service
-     * interface). This is useful when multiple services implement the same interface, since service ids must be
-     * unique.
-     * 
-     * @param id
-     * @return this binding options, for further configuration
-     */
-    ServiceBindingOptions withId(String id);
-
-    /**
-     * Sets the scope of the service, overriding the {@link Scope} annotation on the service implementation class.
-     * 
-     * @param scope
-     * @return this binding options, for further configuration
-     * @see org.apache.tapestry5.ioc.ScopeConstants
-     */
-    ServiceBindingOptions scope(String scope);
-
-    /**
-     * Turns eager loading on for this service. This may also be accomplished using the {@link EagerLoad} annotation on
-     * the service implementation class.
-     * 
-     * @return this binding options, for further configuration
-     */
-    ServiceBindingOptions eagerLoad();
-
-    /**
-     * Disallows service decoration for this service.
-     * 
-     * @return this binding options, for further configuration
-     */
-    ServiceBindingOptions preventDecoration();
-
-    /**
-     * Identifies a service for which live class reloading is not desired. This primarily applies to certain
-     * internal Tapestry services, and is necessary during the development of Tapestry itself. In user applications,
-     * services defined in library modules are not subject to reloading because the class files are stored in JARs, not
-     * as local file system files.
-     * 
-     * @since 5.2.0
-     */
-    ServiceBindingOptions preventReloading();
-
-    /**
-     * Defines the marker interface(s) for the service, used to connect injections by type at the point of injection
-     * with a particular service implementation, based on the intersection of type and marker interface. The containing
-     * module will sometimes provide a set of default marker annotations for all services within the module, this method
-     * allows that default to be extended.
-     * 
-     * @param <T>
-     * @param marker
-     *            one or more markers to add
-     * @return this binding options, for further configuration
-     */
-    <T extends Annotation> ServiceBindingOptions withMarker(Class<T>... marker);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBuilder.java
deleted file mode 100644
index fbdad0d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBuilder.java
+++ /dev/null
@@ -1,29 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * A callback used to create a service implementation.
- */
-public interface ServiceBuilder<T>
-{
-    /**
-     * Construct the service.  A non-null object that implements the service interface must be returned.
-     *
-     * @param resources used to lookup dependencies or access resources
-     * @return the core service implementation
-     */
-    T buildService(ServiceResources resources);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBuilderResources.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBuilderResources.java
deleted file mode 100644
index d07439d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceBuilderResources.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Extends {@link org.apache.tapestry5.ioc.ServiceResources} with additional methods needed only by the service builder
- * method, related to accessing a service's configuration. Services may have a <em>single</em> configuration in one of
- * three flavors: unordered, ordered or mapped.
- */
-public interface ServiceBuilderResources extends ServiceResources, ModuleBuilderSource
-{
-    <T> Collection<T> getUnorderedConfiguration(Class<T> valueType);
-
-    <T> List<T> getOrderedConfiguration(Class<T> valueType);
-
-    <K, V> Map<K, V> getMappedConfiguration(Class<K> keyType, Class<V> valueType);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceDecorator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceDecorator.java
deleted file mode 100644
index 7a9d0d3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceDecorator.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * A service decorator is derived from a {@link org.apache.tapestry5.ioc.def.DecoratorDef} and is responsible for
- * building an interceptor around an existing implementation (called the "delegate").
- *
- * @see org.apache.tapestry5.ioc.ServiceAdvisor
- */
-public interface ServiceDecorator
-{
-    /**
-     * Creates a new interceptor object implementing the same service interface as the delegate object.
-     *
-     * @param delegate an existing object implementing the service interface.
-     * @return a new object implementing the same service interface, or delegate or null if the decorator chooses not to
-     *         create a new interceptor.
-     */
-    Object createInterceptor(Object delegate);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceLifecycle.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceLifecycle.java
deleted file mode 100644
index f0956e3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceLifecycle.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Allows certain types of lifecycles to control exactly how services are instantiated.
- */
-public interface ServiceLifecycle
-{
-    /**
-     * Returns the same creator, or a new one, that encapsulates the creation of the core service implementation.
-     *
-     * @param resources source of information about the service to be created, and source of additional services or
-     *                  other resources that may be needed when constructing the core service implementation
-     * @param creator   object capable of creating the service implementation on demand. This is a wrapper around the
-     *                  service's builder method.
-     * @return the service or equivalent service proxy
-     */
-    Object createService(ServiceResources resources, ObjectCreator creator);
-
-    /**
-     * Returns true if the lifecycle is a singleton (a service that will only be created once).  Return false if the
-     * underlying service instance may be created multiple times (for example, the {@link
-     * org.apache.tapestry5.ioc.ScopeConstants#PERTHREAD} scope}. A future version of Tapestry IoC may optimize for the
-     * later case.
-     *
-     * @return true for singletons, false   for services that can be repeatedly constructed
-     */
-    boolean isSingleton();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceLifecycle2.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceLifecycle2.java
deleted file mode 100644
index f9ad64f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceLifecycle2.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Extension to {@link org.apache.tapestry5.ioc.ServiceLifecycle} that adds an additional method.
- */
-public interface ServiceLifecycle2   extends ServiceLifecycle
-{
-    /**
-     * If true, then lifecycle requires a proxy, meaning it is only useable with services that properly define a service
-     * interface. The default (singleton) scope does not require a proxy, but most other service scopes do. The default
-     * (when wrapping a {@link org.apache.tapestry5.ioc.ServiceLifecycle} as a {@link
-     * org.apache.tapestry5.ioc.ServiceLifecycle2} is to return true.
-     *
-     * @return true if proxying is necesssary, false otherwise
-     */
-    boolean requiresProxy();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceResources.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceResources.java
deleted file mode 100644
index d7dd1e5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/ServiceResources.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.slf4j.Logger;
-
-/**
- * Contains resources that may be provided to a service when it initializes, which includes other services defined in
- * the registry. ServiceResources provides access to other services (it extends {@link
- * org.apache.tapestry5.ioc.ObjectLocator}).
- */
-public interface ServiceResources extends ObjectLocator
-{
-    /**
-     * Returns the fully qualified id of the service.
-     */
-    String getServiceId();
-
-    /**
-     * Returns the service interface implemented by the service.
-     */
-    Class getServiceInterface();
-
-    /**
-     * Returns a Logger appropriate for logging messages. This includes debug level messages about the creation and
-     * configuration of the underlying service, as well as debug, warning, or error level messages from the service
-     * itself. Often service interceptors will make use of the service's logger.
-     */
-    Logger getLogger();
-
-    /**
-     * Returns an object that can be used to track operations related to constructing, configuring, decorating and
-     * initializing the service.
-     */
-    OperationTracker getTracker();
-    
-    /**
-     * Returns the service implementation class.
-     * 
-     * @since 5.2.0
-     */
-    Class getImplementationClass();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Advise.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Advise.java
deleted file mode 100644
index e02d611..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Advise.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * An annotation that may be placed on a advisor method of a module. The annotation may/should be used in combination with
- * marker annotations to disambiguate the service to advise. This annotation was introduced as an alternative
- * to the naming convention for advisor methods.
- *
- * @since 5.2.2
- *
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-public @interface Advise
-{
-    /**
-     * Type of the service to advise.
-     */
-    Class serviceInterface();
-   
-    /**
-     * Id of the advisor.
-     */
-    String id() default "";
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Contribute.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Contribute.java
deleted file mode 100644
index 46da545..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Contribute.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * An annotation that may be placed on a contributor method of a module. The annotation may/should be used in combination with
- * {@link Marker} annotation to disambiguate the service to contribute into. This annotation was introduced as an alternative 
- * to the naming convention for contributor methods.
- * 
- * @since 5.2.0
- *
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-public @interface Contribute
-{
-    /**
-     * Type of the service to contribute into.
-     */
-    Class value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Decorate.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Decorate.java
deleted file mode 100644
index d9a22b3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Decorate.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * An annotation that may be placed on a decorator method of a module. The annotation may/should be used in combination with
- * marker annotations to disambiguate the service to advise. This annotation was introduced as an alternative
- * to the naming convention for decorator methods.
- *
- * @since 5.2.2
- *
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-public @interface Decorate
-{
-    /**
-     * Type of the service to decorate.
-     */
-    Class serviceInterface();
-   
-    /**
-     * Id of the decorator.
-     */
-    String id() default "";
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/EagerLoad.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/EagerLoad.java
deleted file mode 100644
index c97142b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/EagerLoad.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Marker annotation placed on a service builder method to indicate that the service should be eagerly loaded: realized
- * as if a service method had been invoked. Service realization invokes the service builder method and applys any
- * decorators to the service.
- * <p/>
- * This annotation may also be placed directly on a service implementation class, when using autobuilding via the {@link
- * org.apache.tapestry5.ioc.ServiceBinder}.
- */
-@Target(
-        { TYPE, METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface EagerLoad
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Marker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Marker.java
deleted file mode 100644
index afd217d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Marker.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Used to define one or more {@linkplain ServiceDef#getMarkers() marker annotations} for a service implementation. This
- * allows for injection based on the combination of type and marker interface. These marker interfaces should not have
- * any values. The mere presence of the marker annotation is all that is needed.
- * <p/>
- * When applied to a module class, this sets the default markers for all services within the module.  Markers are
- * additive, so a Marker annotation on the implementation class and/or specified with {@link
- * org.apache.tapestry5.ioc.ServiceBindingOptions#withMarker(Class[])} will accumulate; a service may have any number of
- * markers.  Generally one or two is enough.
- */
-@Target(
-        { TYPE, METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith({AnnotationUseContext.SERVICE, AnnotationUseContext.MODULE})
-public @interface Marker
-{
-    /**
-     * The type of annotation (which will be present at the injection point).
-     */
-    Class[] value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Match.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Match.java
deleted file mode 100644
index 5dd18c8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Match.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Optional, but typically used, annotation for service decorator methods, used to define which services the decorator
- * applies to. This annotation defines a number of <em>patterns</em> that allow services across multiple modules to be
- * selected. A decorator is applied to a service if any of its patterns match the service.
- * <p/>
- * TODO: Describe pattern glob-match syntax
- * <p/>
- * When the Match annotation is not supplied, then the decorator only applies to a single service: the service whose id
- * matches the decorators id; that is, method <code>decorateMyService()</code> would decorate only the service provided
- * by the <code>buildMyService()</code> method, within the same module.
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE_DECORATOR)
-public @interface Match
-{
-
-    /**
-     * Defines a list of patterns matched against potential service ids to identify to which services the decorator
-     * applies. A decorator is applied if <em>any</em> of the patterns match.
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/NotLazy.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/NotLazy.java
deleted file mode 100644
index 0e47aa6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/NotLazy.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-/**
- * Marks a method as specifically not-lazy, even if other methods in the same interface are being {@linkplain
- * org.apache.tapestry5.ioc.services.LazyAdvisor advised as lazy}.
- *
- * @since 5.1.0.0
- */
-@Target(ElementType.METHOD)
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface NotLazy
-{
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Order.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Order.java
deleted file mode 100644
index c5e080f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Order.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Used with a service decorator method to control the order in which decorations occur. Identifies other decorators
- * which should occur before the annotated decorator.
- *
- * @see org.apache.tapestry5.ioc.def.DecoratorDef
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE_DECORATOR)
-public @interface Order
-{
-    /**
-     * Any number of ordering constraint strings.
-     */
-    String[] value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/PreventServiceDecoration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/PreventServiceDecoration.java
deleted file mode 100644
index 9b7157e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/PreventServiceDecoration.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-/**
- * Marks a service as not eligible for decoration. This is useful for services that, if decorated, can cause cycle
- * dependency errors; for example, {@link org.apache.tapestry5.ioc.services.MasterObjectProvider}, or services
- * <em>contributed to</em> MasterObjectProvider, are good candidates for this annotation.
- * <p/>
- * The annotation can be applied to service implementation class or to a service builder method in a module class.
- * <p/>
- * The annotation may also be placed on a module class, to indicate that all services defined for the module should not
- * allow decoration.
- * <p/>
- * Service decoration includes the decoration mechanism (from Tapestry 5.0) and the newer service advice mechanism (from
- * Tapestry 5.1).
- *
- * @see org.apache.tapestry5.ioc.def.ServiceDef2#isPreventDecoration()
- * @since 5.1.0.0
- */
-@Target({ ElementType.TYPE, ElementType.METHOD })
-@Retention(RetentionPolicy.RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface PreventServiceDecoration
-{
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Scope.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Scope.java
deleted file mode 100644
index 64333ee..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Scope.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.services.ServiceLifecycleSource;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * An optional annotation that may be placed on a service building method of a module, or on the implementation class
- * (when using service binding). The annotation overrides the default scope for services (the default being a global
- * singleton that is instantiated on demand) for an alternate lifecycle. Alternate lifecycles are typically used to bind
- * a service implementation to a single thread or request. Modules may define new scopes. Each scope should have a
- * corresponding {@link ServiceLifecycle} implementation. The linkage from scope name to service lifecycle occurs via a
- * contribution to the {@link ServiceLifecycleSource} service configuration.
- * <p/>
- * The annotation may also be placed directly on a service implementation class, when using service binding (via
- * the {@link ServiceBinder}).
- *
- * @see org.apache.tapestry5.ioc.ScopeConstants
- */
-@Target(
-        {TYPE, METHOD})
-@Retention(RUNTIME)
-@Documented
-@UseWith({AnnotationUseContext.SERVICE, AnnotationUseContext.MODULE})
-public @interface Scope
-{
-    /**
-     * An identifier used to look up a non-default {@link ServiceLifecycle}.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/ServiceId.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/ServiceId.java
deleted file mode 100644
index 358972f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/ServiceId.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * An optional annotation that may be placed on a service building method of a module, or on the implementation class
- * (when using service binding via the {@link org.apache.tapestry5.ioc.ServiceBinder}). The annotation overrides the
- * default id for services (the default service id is the simple name of the service interface).
- */
-@Target({ TYPE, METHOD })
-@Retention(RUNTIME)
-@Documented
-@UseWith({AnnotationUseContext.SERVICE, AnnotationUseContext.MODULE})
-public @interface ServiceId
-{
-    /**
-     * An identifier of a service.
-     */
-    String value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Startup.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Startup.java
deleted file mode 100644
index 0dfce63..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/Startup.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.annotations;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * An annotation that may be placed on a startup method of a module. A startup method is an simple way 
- * to provide extra logic to be executed at {@link org.apache.tapestry5.ioc.Registry#performRegistryStartup()}.
- * Instead of making contributions to the <i>RegistryStartup</i> service configuration you can provide startup 
- * methods inside your modules.
- * 
- * @since 5.2.0
- *
- */
-@Target(METHOD)
-@Retention(RUNTIME)
-@Documented
-public @interface Startup
-{
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/SubModule.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/SubModule.java
deleted file mode 100644
index d180372..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/SubModule.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.TYPE;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Attached to a module class, this annotation identifies other module classes that should also be added to the
- * Registry. This is often easier than updating the JAR Manifest.
- */
-@Target(TYPE)
-@Retention(RUNTIME)
-@Documented
-@UseWith(AnnotationUseContext.MODULE)
-public @interface SubModule
-{
-
-    /**
-     * One or more classes that are also modules and should also be loaded.
-     */
-    Class[] value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesConfiguration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesConfiguration.java
deleted file mode 100644
index 2e03557..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesConfiguration.java
+++ /dev/null
@@ -1,34 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-
-/**
- * A documentation-only interface placed on service interfaces for services which have an {@linkplain
- * org.apache.tapestry5.ioc.Configuration unordered configuration}, to identify the type of contribution.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.CLASS)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface UsesConfiguration
-{
-    /**
-     * The type of object which may be contributed into the service's configuration.
-     */
-    Class value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesMappedConfiguration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesMappedConfiguration.java
deleted file mode 100644
index a336365..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesMappedConfiguration.java
+++ /dev/null
@@ -1,41 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-/**
- * A documentation-only interface placed on service interfaces for services which have a {@linkplain
- * org.apache.tapestry5.ioc.MappedConfiguration mapped configuration}, to identify the type of key (often, a String),
- * and type ofcontribution.
- * <p/>
- * Remember that when the key type is String, the map will be case-insensitive.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.CLASS)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface UsesMappedConfiguration
-{
-    /**
-     * The type of key used to identify contribution values.
-     */
-    Class key() default String.class;
-
-    /**
-     * The type of object which may be contributed into the service's configuration.
-     */
-    Class value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesOrderedConfiguration.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesOrderedConfiguration.java
deleted file mode 100644
index 7c608f6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/annotations/UsesOrderedConfiguration.java
+++ /dev/null
@@ -1,33 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.annotations;
-
-import java.lang.annotation.*;
-
-/**
- * A documentation-only interface placed on service interfaces for services which have an {@linkplain
- * org.apache.tapestry5.ioc.OrderedConfiguration ordered configuration}, to identify the type of contribution.
- */
-@Target(ElementType.TYPE)
-@Retention(RetentionPolicy.CLASS)
-@Documented
-@UseWith(AnnotationUseContext.SERVICE)
-public @interface UsesOrderedConfiguration
-{
-    /**
-     * The type of object which may be contributed into the service's configuration.
-     */
-    Class value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ContributionDef.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ContributionDef.java
deleted file mode 100644
index eb964e6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ContributionDef.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.def;
-
-import org.apache.tapestry5.ioc.*;
-
-/**
- * Contribution to a service configuration.
- * <p/>
- * The toString() method of the ContributionDef will be used for some exception reporting and should clearly identify
- * where the contribution comes from; the normal behavior is to identify the class and method of the contribution
- * method.
- */
-public interface ContributionDef
-{
-    /**
-     * Identifies the service contributed to.
-     */
-    String getServiceId();
-
-    /**
-     * Performs the work needed to contribute into the standard, unordered configuration.
-     *
-     * @param moduleSource  the source, if needed, of the module  instance associated with the contribution
-     * @param resources     allows access to services visible to the module
-     * @param configuration the unordered configuration into which values should be loaded. This instance will
-     *                      encapsulate all related error checks (such as passing of nulls or inappropriate classes).
-     */
-    void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    Configuration configuration);
-
-    /**
-     * Performs the work needed to contribute into the ordered configuration.
-     *
-     * @param moduleSource  the source, if needed, of the module instance associated with the contribution
-     * @param resources     allows access to services visible to the module
-     * @param configuration the ordered configuration into which values should be loaded. This instance will encapsulate
-     *                      all related error checks (such as passing of nulls or inappropriate classes).
-     */
-    void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    OrderedConfiguration configuration);
-
-    /**
-     * Performs the work needed to contribute into the mapped configuration.
-     *
-     * @param moduleSource  the source, if needed, of the module instance associated with the contribution
-     * @param resources     allows access to services visible to the module
-     * @param configuration the mapped configuration into which values should be loaded. This instance will encapsulate
-     *                      all related error checks (such as passing of null keys or values or inappropriate classes,
-     *                      or duplicate keys).
-     */
-    void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    MappedConfiguration configuration);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ContributionDef2.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ContributionDef2.java
deleted file mode 100644
index 41a5868..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ContributionDef2.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.def;
-
-import org.apache.tapestry5.ioc.Markable;
-import org.apache.tapestry5.ioc.annotations.Contribute;
-
-/**
- * Extended version of {@link org.apache.tapestry5.ioc.def.ContributionDef} introduced to determine any
- * module method annotated with {@link Contribute} as a contributor method. As of version 5.2 a contribution
- * identifies the service contributed either by the service id or by a combination of {@link Contribute} annotation and
- * a set of marker annotations. This means that {@link #getServiceId()} may to return <code>null</code> if
- * {@link #getServiceInterface()} returns a non <code>null</code> value.
- * 
- * @since 5.2.0
- */
-public interface ContributionDef2 extends ContributionDef, Markable
-{
-	
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/DecoratorDef.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/DecoratorDef.java
deleted file mode 100644
index 7c3c663..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/DecoratorDef.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.def;
-
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.ServiceResources;
-
-/**
- * Definition of a service decorator, which (by default) is derived from a service decorator method.
- * <p/>
- * A note on decorator scheduling. The scheduling is based on the desired order of <em>behavior</em>. Thus, if logging
- * should occur before security checks, and security checks should occur before transaction management, then the desired
- * decorator order is Logging, Security, Transactions. This might be specified as having Security occur after Logging,
- * and Transactions occur after Security. It might also be specified by having Logging ordered "before:*", and
- * Transactions ordered "after:*" with no specified scheduling for Security.
- * <p/>
- * Once this order is established, decorators are <em>applied</em> in reverse order. Each decorator's job is to create
- * an <em>interceptor</em> for the service, that delegates to the next implementation. This implies that the decorators
- * are executed last to first. In the above example, the core service implementation would be passed to the Transaction
- * decorator, resulting in the Transaction interceptor. The Transaction interceptor would be passed to the Security
- * decorator, resulting in the Security interceptor. The Security interceptor would be passed to the Logging decorator,
- * resulting in the Logging interceptor. Thus at runtime, the Logging interceptor will execute first, then delegate to
- * the Security interceptor, which would delegate to the Transaction interceptor, which would finally delegate to the
- * core service implementation.
- * <p/>
- * Service decorators are part of the initial version of Tapestry IoC.  Starting in release 5.1, their use has been
- * deprecated, in favor of {@link org.apache.tapestry5.ioc.AdvisorDef}, which is based on {@link
- * org.apache.tapestry5.ioc.services.AspectInterceptorBuilder}.
- * <p/>
- * Note: service decorators are applied <em>around</em> the interceptor generated via any {@link
- * org.apache.tapestry5.ioc.AdvisorDef}s (for compatibility with Tapestry 5.0). In general, you should use service
- * decoration or service advice, not both.
- */
-public interface DecoratorDef
-{
-    /**
-     * Returns the id of the decorator, which is derived from the decorator method name.
-     */
-    String getDecoratorId();
-
-    /**
-     * Returns zero or more ordering constraint strings, used to order the decorated relative to the other decorators.
-     */
-
-    String[] getConstraints();
-
-    /**
-     * Creates an object that can perform the decoration (in the default case, by invoking the decorator method on the
-     * module class or instance.
-     *
-     * @param moduleSource access to the the module  instance associated with the module containing the decorator (not
-     *                     necessarily the module containing the service being decorated)
-     * @param resources    the resources visible <em>to the decorator</em> (which may be in a different module than the
-     *                     service being decorated). Other resource properties (serviceId, serviceInterface, log, etc.)
-     *                     are for the service being decorated.
-     */
-    ServiceDecorator createDecorator(ModuleBuilderSource moduleSource,
-                                     ServiceResources resources);
-
-    /**
-     * Used to determine which services may be decorated by this decorator. When decorating a service, first the
-     * decorators that target the service are identified, then ordering occurs, then the {@link ServiceDecorator}s are
-     * invoked.
-     *
-     * @param serviceDef
-     * @return true if the decorator applies to the service
-     */
-    boolean matches(ServiceDef serviceDef);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/DecoratorDef2.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/DecoratorDef2.java
deleted file mode 100644
index 00da15f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/DecoratorDef2.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.def;
-
-import org.apache.tapestry5.ioc.Markable;
-
-/**
- * Extended version of {@link org.apache.tapestry5.ioc.def.DecoratorDef} introduced to determine any
- * module method annotated with {@link org.apache.tapestry5.ioc.annotations.Decorate} as a decorator
- * method. Before version 5.2 a decorator was applied to any service whose id matched the pattern
- * provided
- * by {@link org.apache.tapestry5.ioc.annotations.Match} annotation. As of version 5.2 a service to
- * decorate may also be identified by a
- * combination of {@link org.apache.tapestry5.ioc.annotations.Advise} annotation and
- * a set of marker annotations.
- *
- * @since 5.2.2
- */
-public interface DecoratorDef2 extends DecoratorDef, Markable
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ModuleDef.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ModuleDef.java
deleted file mode 100644
index b69a728..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ModuleDef.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.def;
-
-import org.slf4j.Logger;
-
-import java.util.Set;
-
-/**
- * Defines the contents of a module. In the default case, this is information about the services provided by the module
- * builder class.
- */
-public interface ModuleDef
-{
-    /**
-     * Returns the ids of the services built/provided by the module.
-     */
-    Set<String> getServiceIds();
-
-    /**
-     * Returns a service definition via the service's id. Ideally, the returned value should be an instance of {@link
-     * org.apache.tapestry5.ioc.def.ServiceDef2}, and will be converted to such if necessary.
-     *
-     * @param serviceId the id of the service to retrieve  (case is ignored)
-     * @return service definition or null if it doesn't exist
-     */
-    ServiceDef getServiceDef(String serviceId);
-
-    /**
-     * Returns all the decorator definitions built/provided by this module.
-     */
-    Set<DecoratorDef> getDecoratorDefs();
-
-    /**
-     * Returns all the contribution definitions built/provided by this module.
-     */
-    Set<ContributionDef> getContributionDefs();
-
-    /**
-     * Returns the class that will be instantiated. Annotated instance methods of this class are invoked to build
-     * services, to decorate/intercept services, and make contributions to other services.
-     * <p/>
-     * Note: this name is maintained for compatibilty; the term "module builder" is now just "module class".
-     */
-    Class getBuilderClass();
-
-    /**
-     * Returns the name used to create a {@link Logger} instance. This is typically the builder class name.
-     */
-    String getLoggerName();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ModuleDef2.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ModuleDef2.java
deleted file mode 100644
index 60f8855..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ModuleDef2.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.def;
-
-import org.apache.tapestry5.ioc.AdvisorDef;
-
-import java.util.Set;
-
-/**
- * Extended version of {@link org.apache.tapestry5.ioc.def.ModuleDef} introduced in Tapestry 5.1 to allow for service
- * advisors (an improvement on service decorators).
- *
- * @since 5.1.0.0
- */
-public interface ModuleDef2 extends ModuleDef
-{
-    /**
-     * Returns all the service advisor definitions built/provided by this module.
-     */
-    Set<AdvisorDef> getAdvisorDefs();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ServiceDef.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ServiceDef.java
deleted file mode 100644
index b2ee9c9..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ServiceDef.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.def;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.services.ServiceLifecycleSource;
-
-import java.util.Set;
-
-/**
- * Service definition derived, by default, from a service builder method. This has been extended in Tapestry 5.1 with
- * {@link org.apache.tapestry5.ioc.def.ServiceDef2}, which adds additional methods.
- */
-@SuppressWarnings("rawtypes")
-public interface ServiceDef
-{
-    /**
-     * Returns an {@link ObjectCreator} that can create the core service implementation.
-     * 
-     * @param resources
-     *            used to resolve dependencies of the service, or access its configuration
-     * @return an object that can (later) be used to instantiate the service itself
-     */
-    ObjectCreator createServiceCreator(ServiceBuilderResources resources);
-
-    /**
-     * Returns the service id, derived from the method name or the unqualified service interface name. Service ids must
-     * be unique among <em>all</em> services in all modules. Service ids are used in a heavy handed way to support
-     * ultimate disambiguation, but their primary purpose is to support service contribution methods.
-     */
-    String getServiceId();
-
-    /**
-     * Returns an optional set of <em>marker annotations</em>. Marker annotations are used to disambiguate services; the
-     * combination of a marker annotation and a service type is expected to be unique. The annotation is placed on the
-     * field or method/constructor parameter and the service is located by combining the marker with service type (the
-     * parameter or field type).
-     * 
-     * @return the marker annotations for the service (possibly empty), including any default marker annotations
-     *         from the containing module.
-     */
-    Set<Class> getMarkers();
-
-    /**
-     * Returns the service interface associated with this service. This is the interface exposed to the outside world,
-     * as well as the one used to build proxies. In cases where the service is <em>not</em> defined in terms of an
-     * interface, this will return the actual implementation class of the service. Services without a true service
-     * interface are <strong>not proxied</strong>, which has a number of ramifications (such as losing lazy
-     * instantiation capabilities and other more interesting lifecycles).
-     */
-    Class getServiceInterface();
-
-    /**
-     * Returns the lifecycle defined for the service. This is indicated by adding a
-     * {@link org.apache.tapestry5.ioc.annotations.Scope} annotation to the service builder method for the service.
-     * <p/>
-     * Services that are not proxied will ignore their scope; such services are always treated as singletons.
-     * @see ServiceLifecycle
-     * @see ServiceLifecycleSource
-     */
-    String getServiceScope();
-
-    /**
-     * Returns true if the service should be eagerly loaded at Registry startup.
-     * 
-     * @see org.apache.tapestry5.ioc.annotations.EagerLoad
-     */
-    boolean isEagerLoad();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ServiceDef2.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ServiceDef2.java
deleted file mode 100644
index 325f81a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/def/ServiceDef2.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.def;
-
-/**
- * Extension to {@link org.apache.tapestry5.ioc.def.ServiceDef} containing new methods added for Tapestry 5.1.
- */
-public interface ServiceDef2 extends ServiceDef
-{
-    /**
-     * Returns true if the service should not be decorated.  Most services allow decoration, unless the {@link
-     * org.apache.tapestry5.ioc.annotations.PreventServiceDecoration} annotation is present.
-     */
-    boolean isPreventDecoration();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractConfigurationImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractConfigurationImpl.java
deleted file mode 100644
index b663be9..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractConfigurationImpl.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-public abstract class AbstractConfigurationImpl<T>
-{
-    private final Class<T> contributionType;
-
-    private final ObjectLocator locator;
-
-    public AbstractConfigurationImpl(Class<T> contributionType, ObjectLocator locator)
-    {
-        this.contributionType = contributionType;
-        this.locator = locator;
-    }
-
-    protected T instantiate(Class<? extends T> clazz)
-    {
-        assert clazz != null;
-
-        if (contributionType.isInterface() && InternalUtils.isLocalFile(clazz))
-            return locator.proxy(contributionType, clazz);
-
-        return locator.autobuild(clazz);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractMethodInvokingInstrumenter.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractMethodInvokingInstrumenter.java
deleted file mode 100644
index 98f125b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractMethodInvokingInstrumenter.java
+++ /dev/null
@@ -1,122 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.slf4j.Logger;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Map;
-
-/**
- * Based class for service decorators and service advisors that work by invoking a module method.
- *
- * @since 5.1.0.0
- */
-public class AbstractMethodInvokingInstrumenter
-{
-    private final ModuleBuilderSource moduleSource;
-
-    protected final Map<Class, Object> resourcesDefaults = CollectionFactory.newMap();
-
-    private final ServiceResources resources;
-
-    private final ClassFactory classFactory;
-
-    protected final Method method;
-
-    protected final Class serviceInterface;
-
-    protected final String serviceId;
-    
-    private final Logger logger;
-
-    public AbstractMethodInvokingInstrumenter(
-            ModuleBuilderSource moduleSource, Method method, ServiceResources resources, ClassFactory classFactory)
-    {
-        this.moduleSource = moduleSource;
-        this.method = method;
-        this.resources = resources;
-        this.classFactory = classFactory;
-
-        serviceId = resources.getServiceId();
-
-        resourcesDefaults.put(String.class, serviceId);
-        resourcesDefaults.put(ObjectLocator.class, resources);
-        resourcesDefaults.put(ServiceResources.class, resources);
-        logger = resources.getLogger();
-        resourcesDefaults.put(Logger.class, logger);
-        serviceInterface = resources.getServiceInterface();
-        resourcesDefaults.put(Class.class, serviceInterface);
-        resourcesDefaults.put(OperationTracker.class, resources.getTracker());
-    }
-
-    @Override
-    public String toString()
-    {
-        return classFactory.getMethodLocation(method).toString();
-    }
-
-    private Object getModuleInstance()
-    {
-        return InternalUtils.isStatic(method)
-               ? null
-               : moduleSource.getModuleBuilder();
-    }
-
-    protected Object invoke(InjectionResources injectionResources)
-    {
-        Object result = null;
-        Throwable failure = null;
-
-        if (logger.isDebugEnabled())
-            logger.debug(String.format("Invoking method %s", this));
-
-        try
-        {
-            Object[] parameters = InternalUtils.calculateParametersForMethod(
-                    method,
-                    resources,
-                    injectionResources, resources.getTracker());
-
-            result = method.invoke(getModuleInstance(), parameters);
-        }
-        catch (InvocationTargetException ite)
-        {
-            failure = ite.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            failure = ex;
-        }
-
-        if (failure != null)
-            throw new RuntimeException(
-                    String.format("Exception invoking method %s: %s",
-                                  this,
-                                  InternalUtils.toMessage(failure)),
-                    failure);
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
deleted file mode 100644
index 9781e36..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractReloadableObjectCreator.java
+++ /dev/null
@@ -1,282 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.io.File;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.util.Set;
-
-import javassist.CannotCompileException;
-import javassist.ClassPath;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.Loader;
-import javassist.LoaderClassPath;
-import javassist.NotFoundException;
-import javassist.Translator;
-import javassist.expr.ConstructorCall;
-import javassist.expr.ExprEditor;
-import javassist.expr.FieldAccess;
-import javassist.expr.MethodCall;
-import javassist.expr.NewExpr;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ReloadAware;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryClassPool;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.URLChangeTracker;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.services.UpdateListener;
-import org.slf4j.Logger;
-
-@SuppressWarnings("all")
-public abstract class AbstractReloadableObjectCreator implements ObjectCreator, UpdateListener, Translator
-{
-    private class InternalLoader extends Loader
-    {
-        public InternalLoader(ClassLoader parent, ClassPool pool)
-        {
-            super(parent, pool);
-        }
-
-        @Override
-        protected Class findClass(String name) throws ClassNotFoundException
-        {
-            if (shouldLoadClassNamed(name))
-                return super.findClass(name);
-
-            return null; // Force delegation to parent class loader
-        }
-    }
-
-    private final ClassLoader baseClassLoader;
-
-    private final String implementationClassName;
-
-    private final String classFilePath;
-
-    private final Logger logger;
-
-    private final OperationTracker tracker;
-
-    private final URLChangeTracker changeTracker = new URLChangeTracker();
-
-    /**
-     * The set of class names that should be loaded by the class loader. This is necessary to support
-     * reloading the class when a base class changes, and to properly support access to protected methods.
-     */
-    private final Set<String> classesToLoad = CollectionFactory.newSet();
-
-    private Object instance;
-
-    private boolean firstTime = true;
-
-    protected AbstractReloadableObjectCreator(ClassLoader baseClassLoader, String implementationClassName,
-            Logger logger, OperationTracker tracker)
-    {
-        this.baseClassLoader = baseClassLoader;
-        this.implementationClassName = implementationClassName;
-        this.logger = logger;
-        this.tracker = tracker;
-
-        classFilePath = ClassFabUtils.getPathForClassNamed(implementationClassName);
-    }
-
-    public synchronized void checkForUpdates()
-    {
-        if (instance == null)
-            return;
-
-        if (!changeTracker.containsChanges())
-            return;
-
-        if (logger.isDebugEnabled())
-            logger.debug(String.format("Implementation class %s has changed and will be reloaded on next use.",
-                    implementationClassName));
-
-        changeTracker.clear();
-
-        boolean reloadNow = informInstanceOfReload();
-
-        instance = reloadNow ? createInstance() : null;
-    }
-
-    private boolean informInstanceOfReload()
-    {
-        if (instance instanceof ReloadAware)
-        {
-            ReloadAware ra = (ReloadAware) instance;
-
-            return ra.shutdownImplementationForReload();
-        }
-
-        return false;
-    }
-
-    public synchronized Object createObject()
-    {
-        if (instance == null)
-            instance = createInstance();
-
-        return instance;
-    }
-
-    private Object createInstance()
-    {
-        return tracker.invoke(String.format("Reloading class %s.", implementationClassName), new Invokable<Object>()
-        {
-            public Object invoke()
-            {
-                Class reloadedClass = reloadImplementationClass();
-
-                return createInstance(reloadedClass);
-            };
-        });
-    }
-
-    /**
-     * Invoked when an instance of the class is needed. It is the responsibility of this method (as implemented in a
-     * subclass) to instantiate the class and inject dependencies into the class.
-     * 
-     * @see InternalUtils#findAutobuildConstructor(Class)
-     */
-    abstract protected Object createInstance(Class clazz);
-
-    private Class reloadImplementationClass()
-    {
-        if (logger.isDebugEnabled())
-            logger.debug(String.format("%s class %s.", firstTime ? "Loading" : "Reloading", implementationClassName));
-
-        ClassFactoryClassPool pool = new ClassFactoryClassPool(baseClassLoader);
-
-        ClassLoader threadDeadlockBuffer = new URLClassLoader(new URL[0], baseClassLoader);
-
-        Loader loader = new InternalLoader(threadDeadlockBuffer, pool);
-
-        ClassPath path = new LoaderClassPath(loader);
-
-        pool.appendClassPath(path);
-
-        classesToLoad.clear();
-        add(implementationClassName);
-
-        try
-        {
-            loader.addTranslator(pool, this);
-
-            Class result = loader.loadClass(implementationClassName);
-
-            firstTime = false;
-
-            return result;
-        }
-        catch (Throwable ex)
-        {
-            throw new RuntimeException(String.format("Unable to %s class %s: %s", firstTime ? "load" : "reload",
-                    implementationClassName, InternalUtils.toMessage(ex)), ex);
-        }
-    }
-
-    private boolean shouldLoadClassNamed(String name)
-    {
-        return classesToLoad.contains(name);
-    }
-
-    private void add(String className)
-    {
-        if (classesToLoad.contains(className))
-            return;
-
-        logger.debug(String.format("Marking class %s to be (re-)loaded", className));
-
-        classesToLoad.add(className);
-    }
-
-    public void onLoad(ClassPool pool, String className) throws NotFoundException, CannotCompileException
-    {
-        logger.debug(String.format("BEGIN Analyzing %s", className));
-
-        analyze(pool, className);
-
-        trackClassFileChanges(className);
-
-        logger.debug(String.format("  END Analyzing %s", className));
-    }
-
-    private void analyze(ClassPool pool, String className) throws NotFoundException, CannotCompileException
-    {
-        CtClass ctClass = pool.get(className);
-
-        CtClass[] nestedClasses = ctClass.getNestedClasses();
-
-        for (CtClass nc : nestedClasses)
-        {
-            add(nc.getName());
-        }
-
-        ctClass.instrument(new ExprEditor()
-        {
-            public void edit(ConstructorCall c) throws CannotCompileException
-            {
-                if (c.getMethodName().equals("this"))
-                    return;
-
-                String cn = c.getClassName();
-
-                String classFilePath = ClassFabUtils.getPathForClassNamed(cn);
-
-                URL url = baseClassLoader.getResource(classFilePath);
-
-                // If the base class is also a file on the file system then mark
-                // that it should be loaded by the same class loader. This serves two
-                // purposes: first, if the base class is in the same package then
-                // protected access will work properly. Secondly, if the base implementation
-                // changes, the service implementation will be reloaded.
-
-                if (url != null && url.getProtocol().equals("file"))
-                    add(cn);
-            }
-        });
-    }
-
-    private void trackClassFileChanges(String className)
-    {
-        if (isInnerClassName(className))
-            return;
-
-        String path = ClassFabUtils.getPathForClassNamed(className);
-
-        URL url = baseClassLoader.getResource(path);
-
-        if (url != null && url.getProtocol().equals("file"))
-            changeTracker.add(url);
-    }
-
-    private boolean isInnerClassName(String className)
-    {
-        return className.indexOf('$') >= 0;
-    }
-
-    /** Does nothing. */
-    public void start(ClassPool pool) throws NotFoundException, CannotCompileException
-    {
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractServiceCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractServiceCreator.java
deleted file mode 100644
index c98f0d6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractServiceCreator.java
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.*;
-import static org.apache.tapestry5.ioc.internal.ConfigurationType.*;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.DelegatingInjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.MapInjectionResources;
-import org.slf4j.Logger;
-
-import java.lang.reflect.ParameterizedType;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Abstract implementation of {@link ObjectCreator} geared towards the creation of the core service implementation,
- * either by invoking a service builder method on a module, or by invoking a constructor.
- */
-public abstract class AbstractServiceCreator implements ObjectCreator
-{
-    protected final String serviceId;
-
-    private final Map<Class, Object> injectionResources = CollectionFactory.newMap();
-
-    protected final ServiceBuilderResources resources;
-
-    protected final Logger logger;
-
-    private final static Map<Class, ConfigurationType> PARAMETER_TYPE_TO_CONFIGURATION_TYPE = CollectionFactory.newMap();
-
-    protected final String creatorDescription;
-
-    static
-    {
-        PARAMETER_TYPE_TO_CONFIGURATION_TYPE.put(Collection.class, UNORDERED);
-        PARAMETER_TYPE_TO_CONFIGURATION_TYPE.put(List.class, ORDERED);
-        PARAMETER_TYPE_TO_CONFIGURATION_TYPE.put(Map.class, MAPPED);
-    }
-
-    public AbstractServiceCreator(ServiceBuilderResources resources, String creatorDescription)
-    {
-        serviceId = resources.getServiceId();
-
-        this.resources = resources;
-        this.creatorDescription = creatorDescription;
-        logger = resources.getLogger();
-
-        injectionResources.put(ObjectLocator.class, resources);
-        injectionResources.put(ServiceResources.class, resources);
-        injectionResources.put(Logger.class, logger);
-        injectionResources.put(Class.class, resources.getServiceInterface());
-        injectionResources.put(OperationTracker.class, resources.getTracker());
-    }
-
-    /**
-     * Returns a map (based on injectionResources) that includes (possibly) an additional mapping containing the
-     * collected configuration data. This involves scanning the parameters and generic types.
-     */
-    protected final InjectionResources createInjectionResources()
-    {
-        InjectionResources core = new MapInjectionResources(injectionResources);
-
-        InjectionResources configurations = new InjectionResources()
-        {
-            private boolean seenOne;
-
-            public <T> T findResource(Class<T> resourceType, Type genericType)
-            {
-                ConfigurationType thisType = PARAMETER_TYPE_TO_CONFIGURATION_TYPE.get(resourceType);
-
-                if (thisType == null) return null;
-
-                if (seenOne)
-                    throw new RuntimeException(IOCMessages.tooManyConfigurationParameters(creatorDescription));
-
-
-                seenOne = true;
-
-                switch (thisType)
-                {
-                    case UNORDERED:
-
-                        return resourceType.cast(getUnorderedConfiguration(genericType));
-
-                    case ORDERED:
-
-                        return resourceType.cast(getOrderedConfiguration(genericType));
-
-                    case MAPPED:
-
-                        return resourceType.cast(getMappedConfiguration(genericType));
-                }
-
-                return null;
-            }
-        };
-
-
-        return new DelegatingInjectionResources(core, configurations);
-    }
-
-    @SuppressWarnings("unchecked")
-    private List getOrderedConfiguration(Type genericType)
-    {
-        Class valueType = findParameterizedTypeFromGenericType(genericType);
-        
-        return resources.getOrderedConfiguration(valueType);
-    }
-
-
-    @SuppressWarnings("unchecked")
-    private Collection getUnorderedConfiguration(Type genericType)
-    {
-        Class valueType = findParameterizedTypeFromGenericType(genericType);
-
-        return resources.getUnorderedConfiguration(valueType);
-    }
-
-    @SuppressWarnings("unchecked")
-    private Map getMappedConfiguration(Type genericType)
-    {
-        Class keyType = findParameterizedTypeFromGenericType(genericType, 0);
-        Class valueType = findParameterizedTypeFromGenericType(genericType, 1);
-
-        if (keyType == null || valueType == null)
-            throw new IllegalArgumentException(IOCMessages.genericTypeNotSupported(genericType));
-
-        return resources.getMappedConfiguration(keyType, valueType);
-    }
-
-    /**
-     * Extracts from a generic type the underlying parameterized type. I.e., for List<Runnable>, will return Runnable.
-     * This is limited to simple parameterized types, not the more complex cases involving wildcards and upper/lower
-     * boundaries.
-     *
-     * @param type the genetic type of the parameter, i.e., List<Runnable>
-     * @return the parameterize type (i.e. Runnable.class if type represents List<Runnable>).
-     */
-
-    // package private for testing
-    static Class findParameterizedTypeFromGenericType(Type type)
-    {
-        Class result = findParameterizedTypeFromGenericType(type, 0);
-
-        if (result == null) throw new IllegalArgumentException(IOCMessages.genericTypeNotSupported(type));
-
-        return result;
-    }
-
-    /**
-     * "Sniffs" a generic type to find the underlying parameterized type. If the Type is a class, then Object.class is
-     * returned. Otherwise, the type must be a ParameterizedType. We check to make sure it has the correct number of a
-     * actual types (1 for a Collection or List, 2 for a Map). The actual types must be classes (wildcards just aren't
-     * supported)
-     *
-     * @param type      a Class or ParameterizedType to inspect
-     * @param typeIndex the index within the ParameterizedType to extract
-     * @return the actual type, or Object.class if the input type is not generic, or null if any other pre-condition is
-     *         not met
-     */
-    private static Class findParameterizedTypeFromGenericType(Type type, int typeIndex)
-    {
-        // For a raw Class type, it means the parameter is not parameterized (i.e. Collection, not
-        // Collection<Foo>), so we can return Object.class to allow no restriction.
-
-        if (type instanceof Class) return Object.class;
-
-        if (!(type instanceof ParameterizedType)) return null;
-
-        ParameterizedType pt = (ParameterizedType) type;
-
-        Type[] types = pt.getActualTypeArguments();
-
-        Type actualType = types[typeIndex];
-
-        return actualType instanceof Class ? (Class) actualType : null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractServiceInstrumenter.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractServiceInstrumenter.java
deleted file mode 100644
index 3817054..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AbstractServiceInstrumenter.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Method;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.IdMatcher;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-/**
- * Abstract base class for implementations of {@link org.apache.tapestry5.ioc.ServiceDecorator} (i.e., old school) and
- * {@link org.apache.tapestry5.ioc.ServiceAdvisor} (i.e., new school). "Instrumenter" is a rought approximation of what
- * these two approaches have in common: instrumenting of method calls of a service.
- * 
- * @since 5.1.0.0
- */
-public class AbstractServiceInstrumenter
-{
-    protected final Method method;
-
-    protected final IdMatcher idMatcher;
-
-    protected final String[] constraints;
-
-    protected final ClassFactory classFactory;
-   
-    private final Set<Class> markers;
-   
-    private final Class serviceInterface;
-
-    public AbstractServiceInstrumenter(Method method, String[] patterns, String[] constraints, Class serviceInterface, Set<Class> markers, ClassFactory classFactory)
-    {
-        this.method = method;
-        this.serviceInterface = serviceInterface;
-        this.markers = markers;
-        this.classFactory = classFactory;
-
-        assert patterns != null;
-
-        List<IdMatcher> matchers = CollectionFactory.newList();
-
-        for (String pattern : patterns)
-        {
-            IdMatcher matcher = new IdMatcherImpl(pattern);
-            matchers.add(matcher);
-        }
-
-        idMatcher = new OrIdMatcher(matchers);
-
-        this.constraints = constraints != null ? constraints : new String[0];
-    }
-
-    @Override
-    public String toString()
-    {
-        return InternalUtils.asString(method, classFactory);
-    }
-
-    public String[] getConstraints()
-    {
-        return constraints;
-    }
-
-    /**
-     * Returns true if <em>any</em> provided pattern matches the id of the service.
-     */
-    public boolean matches(ServiceDef serviceDef)
-    {
-        String serviceId = serviceDef.getServiceId();
-
-        return idMatcher.matches(serviceId);
-    }
-
-    public Set<Class> getMarkers()
-    {
-        return markers;
-    }
-
-    public Class getServiceInterface()
-    {
-        return serviceInterface;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AdvisorDefImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AdvisorDefImpl.java
deleted file mode 100644
index 5994db4..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AdvisorDefImpl.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Method;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.AdvisorDef2;
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ServiceAdvisor;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-public class AdvisorDefImpl extends AbstractServiceInstrumenter implements AdvisorDef2
-{
-    private final String advisorId;
-
-    public AdvisorDefImpl(Method method, String[] patterns, String[] constraints, ClassFactory classFactory,
-                          String advisorId, Class serviceInterface, Set<Class> markers)
-    {
-        super(method, patterns, constraints, serviceInterface, markers, classFactory);
-        assert InternalUtils.isNonBlank(advisorId);
-
-        this.advisorId = advisorId;
-    }
-
-    public ServiceAdvisor createAdvisor(ModuleBuilderSource moduleSource, ServiceResources resources)
-    {
-        return new ServiceAdvisorImpl(moduleSource, method, resources, classFactory);
-    }
-
-    public String getAdvisorId()
-    {
-        return advisorId;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AdvisorStackBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AdvisorStackBuilder.java
deleted file mode 100644
index f5bb4ea..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/AdvisorStackBuilder.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceAdvisor;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-
-import java.util.List;
-
-/**
- * Equivalent of {@link org.apache.tapestry5.ioc.internal.InterceptorStackBuilder}, but works using an {@link
- * org.apache.tapestry5.ioc.services.AspectInterceptorBuilder} that receives advice from {@link
- * org.apache.tapestry5.ioc.ServiceAdvisor}s.
- *
- * @since 5.1.0.0
- */
-public class AdvisorStackBuilder implements ObjectCreator
-{
-    private final ServiceDef serviceDef;
-
-    private final ObjectCreator delegate;
-
-    private final AspectDecorator aspectDecorator;
-
-    private final InternalRegistry registry;
-
-    /**
-     * @param serviceDef      the service that is ultimately being constructed
-     * @param delegate        responsible for creating the object to be decorated
-     * @param aspectDecorator used to create the {@link org.apache.tapestry5.ioc.services.AspectInterceptorBuilder}
-     *                        passed to each {@link org.apache.tapestry5.ioc.ServiceAdvisor}
-     * @param registry
-     */
-    public AdvisorStackBuilder(ServiceDef serviceDef, ObjectCreator delegate,
-                               AspectDecorator aspectDecorator, InternalRegistry registry)
-    {
-        this.serviceDef = serviceDef;
-        this.delegate = delegate;
-        this.registry = registry;
-        this.aspectDecorator = aspectDecorator;
-    }
-
-    public Object createObject()
-    {
-        Object service = delegate.createObject();
-
-        List<ServiceAdvisor> advisors = registry.findAdvisorsForService(serviceDef);
-
-        if (advisors.isEmpty())
-            return service;
-
-        final AspectInterceptorBuilder builder = aspectDecorator.createBuilder(serviceDef.getServiceInterface(),
-                                                                               service,
-                                                                               String.format("<AspectProxy for %s(%s)>",
-                                                                                             serviceDef.getServiceId(),
-                                                                                             serviceDef.getServiceInterface().getName()));
-        for (final ServiceAdvisor advisor : advisors)
-        {
-            registry.run("Invoking " + advisor, new Runnable()
-            {
-                public void run()
-                {
-                    advisor.advise(builder);
-                }
-            });
-        }
-
-        return builder.build();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ConfigurationType.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ConfigurationType.java
deleted file mode 100644
index 39b850f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ConfigurationType.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Defines the three types of configurations a service may request.
- */
-public enum ConfigurationType
-{
-
-    /**
-     * @see org.apache.tapestry5.ioc.Configuration
-     */
-    UNORDERED,
-    /**
-     * @see org.apache.tapestry5.ioc.OrderedConfiguration
-     */
-    ORDERED,
-    /**
-     * @see org.apache.tapestry5.ioc.MappedConfiguration
-     */
-    MAPPED
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ConstructorServiceCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ConstructorServiceCreator.java
deleted file mode 100644
index b5ae04f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ConstructorServiceCreator.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-
-/**
- * A service creator based on an implementation class' constructor, rather than a service builder method.
- */
-public class ConstructorServiceCreator extends AbstractServiceCreator
-{
-    private final Constructor constructor;
-
-    public ConstructorServiceCreator(ServiceBuilderResources resources, String creatorDescription,
-                                     Constructor constructor)
-    {
-        super(resources, creatorDescription);
-
-        this.constructor = constructor;
-    }
-
-    @Override
-    public String toString()
-    {
-        return creatorDescription;
-    }
-
-    public Object createObject()
-    {
-        Throwable failure = null;
-        Object result = null;
-
-        InternalUtils.validateConstructorForAutobuild(constructor);
-
-        InjectionResources injectionResources = createInjectionResources();
-
-        try
-        {
-            Object[] parameters = InternalUtils.calculateParametersForConstructor(constructor, resources,
-                                                                                  injectionResources,
-                                                                                  resources.getTracker());
-
-            if (logger.isDebugEnabled()) logger.debug(IOCMessages.invokingConstructor(creatorDescription));
-
-            result = constructor.newInstance(parameters);
-
-            InternalUtils.injectIntoFields(result, resources, injectionResources, resources.getTracker());
-        }
-        catch (InvocationTargetException ite)
-        {
-            failure = ite.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            failure = ex;
-        }
-
-        if (failure != null)
-            throw new RuntimeException(IOCMessages.constructorError(creatorDescription, serviceId, failure), failure);
-
-        InternalUtils.invokePostInjectionMethods(result, resources, injectionResources, resources.getTracker());
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ContributionDefImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ContributionDefImpl.java
deleted file mode 100644
index fa72037..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ContributionDefImpl.java
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.DelegatingInjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MapInjectionResources;
-import org.apache.tapestry5.ioc.internal.util.WrongConfigurationTypeGuard;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.slf4j.Logger;
-
-public class ContributionDefImpl implements ContributionDef2
-{
-    private final String serviceId;
-
-    private final Method contributorMethod;
-
-    private final ClassFactory classFactory;
-    
-    private final Set<Class> markers;
-    
-    private final Class serviceInterface;
-
-    private static final Class[] CONFIGURATION_TYPES = new Class[] {Configuration.class, MappedConfiguration.class,
-            OrderedConfiguration.class};
-
-    public ContributionDefImpl(String serviceId, Method contributorMethod, ClassFactory classFactory, Class serviceInterface, Set<Class> markers)
-    {
-        this.serviceId = serviceId;
-        this.contributorMethod = contributorMethod;
-        this.classFactory = classFactory;
-        this.serviceInterface = serviceInterface;
-        this.markers = markers;
-    }
-
-    @Override
-    public String toString()
-    {
-        return InternalUtils.asString(contributorMethod, classFactory);
-    }
-
-    public String getServiceId()
-    {
-        return serviceId;
-    }
-
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           Configuration configuration)
-    {
-        invokeMethod(moduleSource, resources, Configuration.class, configuration);
-    }
-
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           OrderedConfiguration configuration)
-    {
-        invokeMethod(moduleSource, resources, OrderedConfiguration.class, configuration);
-    }
-
-    public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                           MappedConfiguration configuration)
-    {
-        invokeMethod(moduleSource, resources, MappedConfiguration.class, configuration);
-    }
-
-    private <T> void invokeMethod(ModuleBuilderSource source, ServiceResources resources,
-                                  Class<T> parameterType, T parameterValue)
-    {
-        Map<Class, Object> resourceMap = CollectionFactory.newMap();
-
-        resourceMap.put(parameterType, parameterValue);
-        resourceMap.put(ObjectLocator.class, resources);
-        resourceMap.put(Logger.class, resources.getLogger());
-
-        InjectionResources injectionResources = new MapInjectionResources(resourceMap);
-
-        // For each of the other configuration types that is not expected, add a guard.
-
-        for (Class t : CONFIGURATION_TYPES)
-        {
-            if (parameterType != t)
-            {
-                injectionResources = new DelegatingInjectionResources(
-                        new WrongConfigurationTypeGuard(resources.getServiceId(), t, parameterType),
-                        injectionResources);
-            }
-        }
-
-
-        Throwable fail = null;
-
-        Object moduleInstance = InternalUtils.isStatic(contributorMethod) ? null : source
-                .getModuleBuilder();
-
-        try
-        {
-            Object[] parameters = InternalUtils.calculateParametersForMethod(
-                    contributorMethod,
-                    resources,
-                    injectionResources, resources.getTracker());
-
-            contributorMethod.invoke(moduleInstance, parameters);
-        }
-        catch (InvocationTargetException ex)
-        {
-            fail = ex.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            fail = ex;
-        }
-
-        if (fail != null)
-            throw new RuntimeException(IOCMessages
-                    .contributionMethodError(contributorMethod, fail), fail);
-    }
-
-    public Set<Class> getMarkers()
-    {
-        return markers;
-    }
-
-    public Class getServiceInterface()
-    {
-        return serviceInterface;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DecoratorDefImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DecoratorDefImpl.java
deleted file mode 100644
index 2800f04..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DecoratorDefImpl.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Method;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.def.DecoratorDef2;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-public class DecoratorDefImpl extends AbstractServiceInstrumenter implements DecoratorDef2
-{
-    private final String decoratorId;
-
-    public DecoratorDefImpl(Method decoratorMethod, String[] patterns, String[] constraints, ClassFactory classFactory,
-                            String decoratorId, Class serviceInterface, Set<Class> markers
-    )
-    {
-        super(decoratorMethod, patterns, constraints, serviceInterface, markers, classFactory);
-        assert InternalUtils.isNonBlank(decoratorId);
-
-        this.decoratorId = decoratorId;
-
-
-    }
-
-    public ServiceDecorator createDecorator(ModuleBuilderSource moduleSource,
-                                            ServiceResources resources)
-    {
-        return new ServiceDecoratorImpl(method, moduleSource, resources, classFactory);
-    }
-
-    public String getDecoratorId()
-    {
-        return decoratorId;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java
deleted file mode 100644
index 430fe9c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImpl.java
+++ /dev/null
@@ -1,609 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Iterator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.AdvisorDef;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.annotations.Advise;
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.Decorate;
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Match;
-import org.apache.tapestry5.ioc.annotations.Order;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.annotations.ServiceId;
-import org.apache.tapestry5.ioc.annotations.Startup;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef2;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.slf4j.Logger;
-
-/**
- * Starting from the Class for a module, identifies all the services (service builder methods),
- * decorators (service
- * decorator methods) and (not yet implemented) contributions (service contributor methods).
- */
-public class DefaultModuleDefImpl implements ModuleDef2, ServiceDefAccumulator
-{
-    /**
-     * The prefix used to identify service builder methods.
-     */
-    private static final String BUILD_METHOD_NAME_PREFIX = "build";
-
-    /**
-     * The prefix used to identify service decorator methods.
-     */
-    private static final String DECORATE_METHOD_NAME_PREFIX = "decorate";
-
-    /**
-     * The prefix used to identify service contribution methods.
-     */
-    private static final String CONTRIBUTE_METHOD_NAME_PREFIX = "contribute";
-
-    private static final String ADVISE_METHOD_NAME_PREFIX = "advise";
-
-    private final static Map<Class, ConfigurationType> PARAMETER_TYPE_TO_CONFIGURATION_TYPE = CollectionFactory
-            .newMap();
-
-    private final Class moduleClass;
-
-    private final Logger logger;
-
-    private final ClassFactory classFactory;
-
-    /**
-     * Keyed on service id.
-     */
-    private final Map<String, ServiceDef> serviceDefs = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Keyed on decorator id.
-     */
-    private final Map<String, DecoratorDef> decoratorDefs = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, AdvisorDef> advisorDefs = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Set<ContributionDef> contributionDefs = CollectionFactory.newSet();
-
-    private final Set<Class> defaultMarkers = CollectionFactory.newSet();
-
-    private final static Set<Method> OBJECT_METHODS = CollectionFactory.newSet(Object.class.getMethods());
-
-    static
-    {
-        PARAMETER_TYPE_TO_CONFIGURATION_TYPE.put(Configuration.class, ConfigurationType.UNORDERED);
-        PARAMETER_TYPE_TO_CONFIGURATION_TYPE.put(OrderedConfiguration.class, ConfigurationType.ORDERED);
-        PARAMETER_TYPE_TO_CONFIGURATION_TYPE.put(MappedConfiguration.class, ConfigurationType.MAPPED);
-    }
-
-    /**
-     * @param moduleClass
-     *            the class that is responsible for building services, etc.
-     * @param logger
-     *            based on the class name of the module
-     * @param classFactory
-     *            factory used to create new classes at runtime or locate method line numbers for
-     *            error
-     *            reporting
-     */
-    public DefaultModuleDefImpl(Class<?> moduleClass, Logger logger, ClassFactory classFactory)
-    {
-        this.moduleClass = moduleClass;
-        this.logger = logger;
-        this.classFactory = classFactory;
-
-        Marker annotation = moduleClass.getAnnotation(Marker.class);
-
-        if (annotation != null)
-        {
-            InternalUtils.validateMarkerAnnotations(annotation.value());
-            defaultMarkers.addAll(Arrays.asList(annotation.value()));
-        }
-
-        // Want to verify that every public method is meaningful to Tapestry IoC. Remaining methods
-        // might
-        // have typos, i.e., "createFoo" that should be "buildFoo".
-
-        Set<Method> methods = CollectionFactory.newSet(moduleClass.getMethods());
-
-        methods.removeAll(OBJECT_METHODS);
-        removeSyntheticMethods(methods);
-
-        boolean modulePreventsServiceDecoration = moduleClass.getAnnotation(PreventServiceDecoration.class) != null;
-
-        grind(methods, modulePreventsServiceDecoration);
-        bind(methods, modulePreventsServiceDecoration);
-
-        if (methods.isEmpty())
-            return;
-
-        throw new RuntimeException(String.format("Module class %s contains unrecognized public methods: %s.",
-                moduleClass.getName(), InternalUtils.joinSorted(methods)));
-    }
-
-    /**
-     * Identifies the module class and a list of service ids within the module.
-     */
-    @Override
-    public String toString()
-    {
-        return String.format("ModuleDef[%s %s]", moduleClass.getName(), InternalUtils.joinSorted(serviceDefs.keySet()));
-    }
-
-    public Class getBuilderClass()
-    {
-        return moduleClass;
-    }
-
-    public Set<String> getServiceIds()
-    {
-        return serviceDefs.keySet();
-    }
-
-    public ServiceDef getServiceDef(String serviceId)
-    {
-        return serviceDefs.get(serviceId);
-    }
-
-    private void removeSyntheticMethods(Set<Method> methods)
-    {
-        Iterator<Method> iterator = methods.iterator();
-
-        while (iterator.hasNext())
-        {
-            Method m = iterator.next();
-
-            if (m.isSynthetic() || m.getName().startsWith("$"))
-            {
-                iterator.remove();
-            }
-        }
-    }
-
-    private void grind(Set<Method> remainingMethods, boolean modulePreventsServiceDecoration)
-    {
-        Method[] methods = moduleClass.getMethods();
-
-        Comparator<Method> c = new Comparator<Method>()
-        {
-            // By name, ascending, then by parameter count, descending.
-
-            public int compare(Method o1, Method o2)
-            {
-                int result = o1.getName().compareTo(o2.getName());
-
-                if (result == 0)
-                    result = o2.getParameterTypes().length - o1.getParameterTypes().length;
-
-                return result;
-            }
-        };
-
-        Arrays.sort(methods, c);
-
-        for (Method m : methods)
-        {
-            String name = m.getName();
-
-            if (name.startsWith(BUILD_METHOD_NAME_PREFIX))
-            {
-                addServiceDef(m, modulePreventsServiceDecoration);
-                remainingMethods.remove(m);
-                continue;
-            }
-
-            if (name.startsWith(DECORATE_METHOD_NAME_PREFIX) || m.isAnnotationPresent(Decorate.class))
-            {
-                addDecoratorDef(m);
-                remainingMethods.remove(m);
-                continue;
-            }
-
-            if (name.startsWith(CONTRIBUTE_METHOD_NAME_PREFIX) || m.isAnnotationPresent(Contribute.class))
-            {
-                addContributionDef(m);
-                remainingMethods.remove(m);
-                continue;
-            }
-
-            if (name.startsWith(ADVISE_METHOD_NAME_PREFIX) || m.isAnnotationPresent(Advise.class))
-            {
-                addAdvisorDef(m);
-                remainingMethods.remove(m);
-                continue;
-            }
-
-            if (m.isAnnotationPresent(Startup.class))
-            {
-                addStartupDef(m);
-                remainingMethods.remove(m);
-                continue;
-            }
-        }
-    }
-
-    private void addStartupDef(Method method)
-    {
-        Set<Class> markers = Collections.emptySet();
-        
-        ContributionDef2 def = new ContributionDefImpl("RegistryStartup", method, classFactory, Runnable.class, markers);
-        
-        contributionDefs.add(def);
-    }
-
-    private void addContributionDef(Method method)
-    {
-        Contribute annotation = method.getAnnotation(Contribute.class);
-
-        Class serviceInterface = annotation == null ? null : annotation.value();
-
-        String serviceId = annotation != null ? null : stripMethodPrefix(method, CONTRIBUTE_METHOD_NAME_PREFIX);
-
-        Class returnType = method.getReturnType();
-        if (!returnType.equals(void.class))
-            logger.warn(IOCMessages.contributionWrongReturnType(method));
-
-        ConfigurationType type = null;
-
-        for (Class parameterType : method.getParameterTypes())
-        {
-            ConfigurationType thisParameter = PARAMETER_TYPE_TO_CONFIGURATION_TYPE.get(parameterType);
-
-            if (thisParameter != null)
-            {
-                if (type != null)
-                    throw new RuntimeException(IOCMessages.tooManyContributionParameters(method));
-
-                type = thisParameter;
-            }
-        }
-
-        if (type == null)
-            throw new RuntimeException(IOCMessages.noContributionParameter(method));
-
-        Set<Class> markers = extractMarkers(method, Contribute.class);
-
-        ContributionDef2 def = new ContributionDefImpl(serviceId, method, classFactory, serviceInterface, markers);
-
-        contributionDefs.add(def);
-    }
-
-    private void addDecoratorDef(Method method)
-    {
-        Decorate annotation = method.getAnnotation(Decorate.class);
-       
-        Class serviceInterface = annotation == null ? null : annotation.serviceInterface();
-       
-        // TODO: methods just named "decorate"
-
-        String decoratorId = annotation == null? stripMethodPrefix(method, DECORATE_METHOD_NAME_PREFIX) : extractId(serviceInterface, annotation.id());
-
-        // TODO: Check for duplicates
-
-        Class returnType = method.getReturnType();
-
-        if (returnType.isPrimitive() || returnType.isArray())
-            throw new RuntimeException(IOCMessages.decoratorMethodWrongReturnType(method));
-       
-        Set<Class> markers = extractMarkers(method, Decorate.class);
-
-        DecoratorDef def = new DecoratorDefImpl(method, extractPatterns(annotation, decoratorId, method),
-                extractConstraints(method), classFactory, decoratorId, serviceInterface, markers);
-
-        decoratorDefs.put(decoratorId, def);
-    }
-
-    private <T extends Annotation> String[] extractPatterns(T annotation, String id, Method method)
-    {
-        if(annotation != null)
-            return new String[]{};
-       
-        Match match = method.getAnnotation(Match.class);
-
-        if (match == null)
-            return new String[]
-            { id };
-
-        return match.value();
-    }
-
-    private String[] extractConstraints(Method method)
-    {
-        Order order = method.getAnnotation(Order.class);
-
-        if (order == null)
-            return null;
-
-        return order.value();
-    }
-
-    private void addAdvisorDef(Method method)
-    {
-        Advise annotation = method.getAnnotation(Advise.class);
-       
-        Class serviceInterface = annotation == null ? null : annotation.serviceInterface();
-       
-        // TODO: methods just named "decorate"
-
-        String advisorId = annotation == null ? stripMethodPrefix(method, ADVISE_METHOD_NAME_PREFIX) : extractId(serviceInterface, annotation.id());
-
-        // TODO: Check for duplicates
-
-        Class returnType = method.getReturnType();
-
-        if (!returnType.equals(void.class))
-            throw new RuntimeException(String.format("Advise method %s does not return void.", toString(method)));
-
-        boolean found = false;
-
-        for (Class pt : method.getParameterTypes())
-        {
-            if (pt.equals(MethodAdviceReceiver.class))
-            {
-                found = true;
-
-                break;
-            }
-        }
-
-        if (!found)
-            throw new RuntimeException(String.format("Advise method %s must take a parameter of type %s.",
-                    toString(method), MethodAdviceReceiver.class.getName()));
-       
-        Set<Class> markers = extractMarkers(method, Advise.class);
-       
-        AdvisorDef def = new AdvisorDefImpl(method, extractPatterns(annotation, advisorId, method), extractConstraints(method),
-                classFactory, advisorId, serviceInterface, markers);
-
-        advisorDefs.put(advisorId, def);
-
-    }
-    
-    private String extractId(Class serviceInterface, String id)
-    {
-    	return InternalUtils.isBlank(id) ? serviceInterface.getSimpleName() : id;
-    }
-
-    private String toString(Method method)
-    {
-        return InternalUtils.asString(method, classFactory);
-    }
-
-    private String stripMethodPrefix(Method method, String prefix)
-    {
-        return method.getName().substring(prefix.length());
-    }
-
-    /**
-     * Invoked for public methods that have the proper prefix.
-     */
-    private void addServiceDef(final Method method, boolean modulePreventsServiceDecoration)
-    {
-        ServiceId serviceIdAnnotation = method.getAnnotation(ServiceId.class);
-
-        String serviceId;
-
-        if (serviceIdAnnotation != null)
-        {
-            serviceId = serviceIdAnnotation.value();
-        }
-        else
-        {
-            serviceId = stripMethodPrefix(method, BUILD_METHOD_NAME_PREFIX);
-        }
-
-        // If the method name was just "build()", then work from the return type.
-
-        if (serviceId.equals(""))
-            serviceId = method.getReturnType().getSimpleName();
-
-        // Any number of parameters is fine, we'll adapt. Eventually we have to check
-        // that we can satisfy the parameters requested. Thrown exceptions of the method
-        // will be caught and wrapped, so we don't need to check those. But we do need a proper
-        // return type.
-
-        Class returnType = method.getReturnType();
-
-        if (returnType.isPrimitive() || returnType.isArray())
-            throw new RuntimeException(IOCMessages.buildMethodWrongReturnType(method));
-
-        String scope = extractServiceScope(method);
-        boolean eagerLoad = method.isAnnotationPresent(EagerLoad.class);
-
-        boolean preventDecoration = modulePreventsServiceDecoration
-                || method.getAnnotation(PreventServiceDecoration.class) != null;
-
-        ObjectCreatorSource source = new ObjectCreatorSource()
-        {
-            public ObjectCreator constructCreator(ServiceBuilderResources resources)
-            {
-                return new ServiceBuilderMethodInvoker(resources, getDescription(), method);
-            }
-
-            public String getDescription()
-            {
-                return DefaultModuleDefImpl.this.toString(method);
-            }
-        };
-
-        Set<Class> markers = CollectionFactory.newSet(defaultMarkers);
-        markers.addAll(extractServiceDefMarkers(method));
-
-        ServiceDefImpl serviceDef = new ServiceDefImpl(returnType, null, serviceId, markers, scope, eagerLoad,
-                preventDecoration, source);
-
-        addServiceDef(serviceDef);
-    }
-
-    private Collection<Class> extractServiceDefMarkers(Method method)
-    {
-        Marker annotation = method.getAnnotation(Marker.class);
-
-        if (annotation == null)
-            return Collections.emptyList();
-
-        return CollectionFactory.newList(annotation.value());
-    }
-
-    @SuppressWarnings("rawtypes")
-    private Set<Class> extractMarkers(Method method, final Class annotationClassToSkip)
-    {
-        return F.flow(method.getAnnotations()).map(new Mapper<Annotation, Class>()
-        {
-            public Class map(Annotation value)
-            {
-                return value.annotationType();
-            };
-        }).filter(new Predicate<Class>()
-        {
-            public boolean accept(Class object)
-            {
-                return !object.equals(annotationClassToSkip);
-
-            }
-        }).toSet();
-    }
-
-    public void addServiceDef(ServiceDef serviceDef)
-    {
-        String serviceId = serviceDef.getServiceId();
-
-        ServiceDef existing = serviceDefs.get(serviceId);
-
-        if (existing != null)
-            throw new RuntimeException(IOCMessages.buildMethodConflict(serviceId, serviceDef.toString(),
-                    existing.toString()));
-
-        serviceDefs.put(serviceId, serviceDef);
-    }
-
-    private String extractServiceScope(Method method)
-    {
-        Scope scope = method.getAnnotation(Scope.class);
-
-        return scope != null ? scope.value() : ScopeConstants.DEFAULT;
-    }
-
-    public Set<DecoratorDef> getDecoratorDefs()
-    {
-        return toSet(decoratorDefs);
-    }
-
-    public Set<ContributionDef> getContributionDefs()
-    {
-        return contributionDefs;
-    }
-
-    public String getLoggerName()
-    {
-        return moduleClass.getName();
-    }
-
-    /**
-     * See if the build class defined a bind method and invoke it.
-     * 
-     * @param remainingMethods
-     *            set of methods as yet unaccounted for
-     * @param modulePreventsServiceDecoration
-     *            true if {@link org.apache.tapestry5.ioc.annotations.PreventServiceDecoration} on
-     *            module
-     *            class
-     */
-    private void bind(Set<Method> remainingMethods, boolean modulePreventsServiceDecoration)
-    {
-        Throwable failure;
-        Method bindMethod = null;
-
-        try
-        {
-            bindMethod = moduleClass.getMethod("bind", ServiceBinder.class);
-
-            if (!Modifier.isStatic(bindMethod.getModifiers()))
-                throw new RuntimeException(IOCMessages.bindMethodMustBeStatic(toString(bindMethod)));
-
-            ServiceBinderImpl binder = new ServiceBinderImpl(this, bindMethod, classFactory, defaultMarkers,
-                    modulePreventsServiceDecoration);
-
-            bindMethod.invoke(null, binder);
-
-            binder.finish();
-
-            remainingMethods.remove(bindMethod);
-
-            return;
-        }
-        catch (NoSuchMethodException ex)
-        {
-            // No problem! Many modules will not have such a method.
-
-            return;
-        }
-        catch (IllegalArgumentException ex)
-        {
-            failure = ex;
-        }
-        catch (IllegalAccessException ex)
-        {
-            failure = ex;
-        }
-        catch (InvocationTargetException ex)
-        {
-            failure = ex.getTargetException();
-        }
-
-        String methodId = toString(bindMethod);
-
-        throw new RuntimeException(IOCMessages.errorInBindMethod(methodId, failure), failure);
-    }
-
-    public Set<AdvisorDef> getAdvisorDefs()
-    {
-        return toSet(advisorDefs);
-    }
-
-    private <K, V> Set<V> toSet(Map<K, V> map)
-    {
-        return CollectionFactory.newSet(map.values());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/EagerLoadServiceProxy.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/EagerLoadServiceProxy.java
deleted file mode 100644
index 5ad53cd..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/EagerLoadServiceProxy.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Interface implemented by all service proxies. Service proxies are always {@link
- * org.apache.tapestry5.ioc.services.RegistryShutdownListener}s, they also can be eager-load
- */
-public interface EagerLoadServiceProxy
-{
-    void eagerLoadService();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/GlobPatternMatcher.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/GlobPatternMatcher.java
deleted file mode 100644
index d7e13ac..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/GlobPatternMatcher.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.regex.Pattern;
-
-/**
- * Used when matching identifiers.  In the early days of T5 IoC, matching was based on shell-style glob matches (a '*'
- * could represent zero or more characters).  But that was limiting so now we check to see if the provided pattern looks
- * like a glob (just characters and asterisks, for compatibility with older code) and, if not, we assume it is a regular
- * expression.
- */
-public class GlobPatternMatcher
-{
-    private final Pattern pattern;
-
-    private final static Pattern oldStyleGlob =
-            Pattern.compile("[a-z\\*]+", Pattern.CASE_INSENSITIVE);
-
-    public GlobPatternMatcher(String pattern)
-    {
-        this.pattern = compilePattern(pattern);
-    }
-
-    private static Pattern compilePattern(String pattern)
-    {
-        return Pattern.compile(createRegexpFromGlob(pattern), Pattern.CASE_INSENSITIVE);
-    }
-
-    private static String createRegexpFromGlob(String pattern)
-    {
-        return oldStyleGlob.matcher(pattern).matches()
-               ? pattern.replace("*", ".*")
-               : pattern;
-    }
-
-
-    public boolean matches(String input)
-    {
-        return pattern.matcher(input).matches();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java
deleted file mode 100644
index a92053f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IOCMessages.java
+++ /dev/null
@@ -1,326 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import static org.apache.tapestry5.ioc.internal.util.InternalUtils.asString;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import static org.apache.tapestry5.ioc.services.ClassFabUtils.toJavaClassName;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-final class IOCMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(IOCMessages.class);
-
-    static String buildMethodConflict(String serviceId, String conflict, String existing)
-    {
-        return MESSAGES.format("build-method-conflict", serviceId, conflict, existing);
-    }
-
-    static String buildMethodWrongReturnType(Method method)
-    {
-        return MESSAGES.format("build-method-wrong-return-type", asString(method), method
-                .getReturnType().getCanonicalName());
-    }
-
-    static String decoratorMethodWrongReturnType(Method method)
-    {
-        return MESSAGES.format("decorator-method-wrong-return-type", asString(method), method
-                .getReturnType().getCanonicalName());
-    }
-
-    public static String builderLocked()
-    {
-        return MESSAGES.get("builder-locked");
-    }
-
-    static String serviceWrongInterface(String serviceId, Class actualInterface, Class requestedInterface)
-    {
-        return MESSAGES.format("service-wrong-interface", serviceId, actualInterface.getName(),
-                               requestedInterface.getName());
-    }
-
-    static String instantiateBuilderError(Class builderClass, Throwable cause)
-    {
-        return MESSAGES.format("instantiate-builder-error", builderClass.getName(), cause);
-    }
-
-    static String builderMethodError(String methodId, String serviceId, Throwable cause)
-    {
-        return MESSAGES.format("builder-method-error", methodId, serviceId, cause);
-    }
-
-    static String constructorError(String creatorDescription, String serviceId, Throwable cause)
-    {
-        return MESSAGES.format("constructor-error", creatorDescription, serviceId, cause);
-    }
-
-    static String builderMethodReturnedNull(String methodId, String serviceId)
-    {
-        return MESSAGES.format("builder-method-returned-null", methodId, serviceId);
-    }
-
-    static String noServiceMatchesType(Class serviceInterface)
-    {
-        return MESSAGES.format("no-service-matches-type", serviceInterface.getName());
-    }
-
-    static String manyServiceMatches(Class serviceInterface, List<String> ids)
-    {
-        StringBuilder buffer = new StringBuilder();
-
-        for (int i = 0; i < ids.size(); i++)
-        {
-            if (i > 0) buffer.append(", ");
-
-            buffer.append(ids.get(i));
-        }
-
-        return MESSAGES.format("many-service-matches", serviceInterface.getName(), ids.size(), buffer.toString());
-    }
-
-    static String unknownScope(String name)
-    {
-        return MESSAGES.format("unknown-scope", name);
-    }
-
-    static String decoratorReturnedWrongType(Method method, String serviceId, Object returned, Class serviceInterface)
-    {
-        return MESSAGES.format("decorator-returned-wrong-type", asString(method), serviceId, returned,
-                               serviceInterface.getName());
-    }
-
-    static String creatingService(String serviceId)
-    {
-        return MESSAGES.format("creating-service", serviceId);
-    }
-
-    static String invokingMethod(String methodId)
-    {
-        return MESSAGES.format("invoking-method", methodId);
-    }
-
-    static String invokingConstructor(String creatorDescription)
-    {
-        return MESSAGES.format("invoking-constructor", creatorDescription);
-    }
-
-    static String invokingMethod(ContributionDef def)
-    {
-        // The toString() of a contribution def is the name of the method.
-        return MESSAGES.format("invoking-method", def);
-    }
-
-    static String recursiveServiceBuild(ServiceDef def)
-    {
-        return MESSAGES.format("recursive-service-build", def.getServiceId(), def.toString());
-    }
-
-    static String contributionWrongReturnType(Method method)
-    {
-        return MESSAGES.format("contribution-wrong-return-type", asString(method),
-                               toJavaClassName(method.getReturnType()));
-    }
-
-    static String tooManyContributionParameters(Method method)
-    {
-        return MESSAGES.format("too-many-contribution-parameters", asString(method));
-    }
-
-    static String noContributionParameter(Method method)
-    {
-        return MESSAGES.format("no-contribution-parameter", asString(method));
-    }
-
-    static String contributionMethodError(Method method, Throwable cause)
-    {
-        return MESSAGES.format("contribution-method-error", asString(method), cause);
-    }
-
-    static String contributionWasNull(String serviceId)
-    {
-        return MESSAGES.format("contribution-was-null", serviceId);
-    }
-
-    static String contributionKeyWasNull(String serviceId)
-    {
-        return MESSAGES.format("contribution-key-was-null", serviceId);
-    }
-
-    static String contributionWrongValueType(String serviceId, Class actualClass,
-                                             Class expectedClass)
-    {
-        return MESSAGES.format("contribution-wrong-value-type", serviceId, actualClass
-                .getName(), expectedClass.getName());
-    }
-
-    static String contributionWrongKeyType(String serviceId, Class actualClass,
-                                           Class expectedClass)
-    {
-        return MESSAGES.format("contribution-wrong-key-type", serviceId, actualClass.getName(),
-                               expectedClass.getName());
-    }
-
-    static String tooManyConfigurationParameters(String methodId)
-    {
-        return MESSAGES.format("too-many-configuration-parameters", methodId);
-    }
-
-    static String genericTypeNotSupported(Type type)
-    {
-        return MESSAGES.format("generic-type-not-supported", type);
-    }
-
-    static String contributionDuplicateKey(String serviceId, ContributionDef existingDef)
-    {
-        return MESSAGES.format("contribution-duplicate-key", serviceId, existingDef);
-    }
-
-    static String errorBuildingService(String serviceId, ServiceDef serviceDef, Throwable cause)
-    {
-        return MESSAGES.format("error-building-service", serviceId, serviceDef, cause);
-    }
-
-    static String noPublicConstructors(Class moduleClass)
-    {
-        return MESSAGES.format("no-public-constructors", moduleClass.getName());
-    }
-
-    static String tooManyPublicConstructors(Class moduleClass, Constructor constructor)
-    {
-        return MESSAGES.format("too-many-public-constructors", moduleClass.getName(), constructor);
-    }
-
-    static String recursiveModuleConstructor(Class builderClass, Constructor constructor)
-    {
-        return MESSAGES.format("recursive-module-constructor", builderClass.getName(), constructor);
-    }
-
-    static String constructedConfiguration(Collection result)
-    {
-        return MESSAGES.format("constructed-configuration", result);
-    }
-
-    static String constructedConfiguration(Map result)
-    {
-        return MESSAGES.format("constructed-configuration", result);
-    }
-
-    static String serviceConstructionFailed(ServiceDef serviceDef, Throwable cause)
-    {
-        return MESSAGES.format("service-construction-failed", serviceDef.getServiceId(), cause);
-    }
-
-    static String serviceIdConflict(String serviceId, ServiceDef existing, ServiceDef conflicting)
-    {
-        return MESSAGES.format("service-id-conflict", serviceId, existing, conflicting);
-    }
-
-    static String noConstructor(Class implementationClass, String serviceId)
-    {
-        return MESSAGES.format("no-constructor", implementationClass.getName(), serviceId);
-    }
-
-    static String bindMethodMustBeStatic(String methodId)
-    {
-        return MESSAGES.format("bind-method-must-be-static", methodId);
-    }
-
-    static String errorInBindMethod(String methodId, Throwable cause)
-    {
-        return MESSAGES.format("error-in-bind-method", methodId, cause);
-    }
-
-    static String noAutobuildConstructor(Class clazz)
-    {
-        return MESSAGES.format("no-autobuild-constructor", clazz.getName());
-    }
-
-    static String autobuildConstructorError(String constructorDescription, Throwable cause)
-    {
-        return MESSAGES.format("autobuild-constructor-error", constructorDescription, cause);
-    }
-
-    private static String toJavaClassNames(List<Class> classes)
-    {
-        List<String> names = CollectionFactory.newList();
-
-        for (Class<?> clazz : classes)
-        {
-            names.add(ClassFabUtils.toJavaClassName(clazz));
-        }
-
-        return InternalUtils.joinSorted(names);
-    }
-
-    static String noServicesMatchMarker(Class objectType, List<Class> markers)
-    {
-        return MESSAGES.format("no-services-match-marker",
-                               ClassFabUtils.toJavaClassName(objectType),
-                               toJavaClassNames(markers));
-    }
-
-    static String manyServicesMatchMarker(Class objectType, List<Class> markers,
-                                          Collection<ServiceDef2> matchingServices)
-    {
-        return MESSAGES.format("many-services-match-marker",
-                               ClassFabUtils.toJavaClassName(objectType),
-                               toJavaClassNames(markers),
-                               InternalUtils.joinSorted(matchingServices));
-    }
-
-    static String overlappingServiceProxyProviders()
-    {
-        return MESSAGES.get("overlapping-service-proxy-providers");
-    }
-
-    static String unexpectedServiceProxyProvider()
-    {
-        return MESSAGES.get("unexpected-service-proxy-provider");
-    }
-
-    static String noProxyProvider(String serviceId)
-    {
-        return MESSAGES.format("no-proxy-provider", serviceId);
-    }
-
-    static String noConventionServiceImplementationFound(Class clazz)
-    {
-        return MESSAGES.format("no-convention-service-implementation-found", clazz.getName(), clazz.getName());
-    }
-    
-    static String contributionForNonexistentService(ContributionDef cd)
-    {
-        return MESSAGES.format("contribution-for-nonexistent-service", cd, cd.getServiceId());
-    }
-    
-    static String contributionForUnqualifiedService(ContributionDef2 cd)
-    {
-        return MESSAGES.format("contribution-for-unqualified-service", cd, cd.getServiceInterface(), cd.getMarkers());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IdMatcherImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IdMatcherImpl.java
deleted file mode 100644
index a2fe889..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/IdMatcherImpl.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.IdMatcher;
-
-/**
- * A wrapper around a {@link GlobPatternMatcher} used to glob-match service ids.
- */
-public class IdMatcherImpl implements IdMatcher
-{
-    private final GlobPatternMatcher globMatcher;
-
-    public IdMatcherImpl(String pattern)
-    {
-        globMatcher = new GlobPatternMatcher(pattern);
-    }
-
-    public boolean matches(String id)
-    {
-        return globMatcher.matches(id);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InterceptorStackBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InterceptorStackBuilder.java
deleted file mode 100644
index a3fd4b8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InterceptorStackBuilder.java
+++ /dev/null
@@ -1,86 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * Responsible for constructing the interceptor stack, on demand, by invoking an ordered series of decorators ({@link
- * org.apache.tapestry5.ioc.def.DecoratorDef} (which are converted into {@link ServiceDecorator}s).
- */
-public class InterceptorStackBuilder implements ObjectCreator
-{
-    private final ServiceDef serviceDef;
-
-    private final ObjectCreator delegate;
-
-    private final InternalRegistry registry;
-
-    /**
-     * @param serviceDef service begin decorated
-     * @param delegate   responsible for creating the object to be decorated
-     * @param registry   access to service decorators
-     */
-    public InterceptorStackBuilder(ServiceDef serviceDef, ObjectCreator delegate,
-                                   InternalRegistry registry)
-    {
-        this.serviceDef = serviceDef;
-        this.delegate = delegate;
-        this.registry = registry;
-    }
-
-    public Object createObject()
-    {
-        Object current = delegate.createObject();
-
-        List<ServiceDecorator> decorators = registry.findDecoratorsForService(serviceDef);
-
-        // We get the decorators ordered according to their dependencies. However, we want to
-        // process from the last interceptor to the first, so we reverse the list.
-
-        Collections.reverse(decorators);
-
-        for (final ServiceDecorator decorator : decorators)
-        {
-            final Object delegate = current;
-
-            Object interceptor =
-                    registry.invoke("Invoking " + decorator, new Invokable<Object>()
-                    {
-                        public Object invoke()
-                        {
-                            return decorator.createInterceptor(delegate);
-                        }
-                    });
-
-            // Decorator methods may return null; this indicates that the decorator chose not to
-            // decorate.
-
-            if (interceptor != null) current = interceptor;
-        }
-
-        // The stack of interceptors (plus the core service implementation) are "represented" to the
-        // outside world
-        // as the outermost interceptor. That will still be buried inside the service proxy.
-
-        return current;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InternalRegistry.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InternalRegistry.java
deleted file mode 100644
index f17394b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InternalRegistry.java
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.ServiceAdvisor;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.ServiceLifecycle2;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-import org.slf4j.Logger;
-
-/**
- * Internal view of the module registry, adding additional methods needed by modules.
- */
-public interface InternalRegistry extends Registry, RegistryShutdownHub, OperationTracker
-{
-    /**
-     * As with {@link org.apache.tapestry5.ioc.Registry#getObject(Class, org.apache.tapestry5.ioc.AnnotationProvider)},
-     * but handles the {@link org.apache.tapestry5.ioc.annotations.Local} annotation.
-     * 
-     * @param objectType
-     *            type of object o be injected
-     * @param annotationProvider
-     *            access to annotations at point of injection
-     * @param locator
-     *            used to resolve any subsequent injections
-     * @param localModule
-     *            module to limit services to, if Local annotaton present
-     * @return the service or object
-     */
-    <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator,
-            Module localModule);
-
-    /**
-     * Returns a service lifecycle by service scope name.
-     * 
-     * @param scope
-     *            the name of the service scope (case insensitive)
-     * @return the lifecycle corresponding to the scope
-     * @throws RuntimeException
-     *             if the lifecycle name does not match a known lifecycle
-     */
-    ServiceLifecycle2 getServiceLifecycle(String scope);
-
-    /**
-     * Searches for decorators for a particular service. The resulting {@link org.apache.tapestry5.ioc.def.DecoratorDef}
-     * s
-     * are ordered, then converted into {@link ServiceDecorator}s.
-     */
-    List<ServiceDecorator> findDecoratorsForService(ServiceDef serviceDef);
-
-    /**
-     * Searches for advisors for a particular service, returning them in order of application.
-     * 
-     * @since 5.1.0.0
-     */
-    List<ServiceAdvisor> findAdvisorsForService(ServiceDef serviceDef);
-
-    /**
-     * Builds up an unordered collection by invoking service contributor methods that target the service (from any
-     * module, unless the service is private).
-     * 
-     * @param <T>
-     * @param serviceDef
-     *            defines the service for which configuration data is being assembled
-     * @param valueType
-     *            identifies the type of object allowed into the collection
-     * @return the final collection
-     */
-    <T> Collection<T> getUnorderedConfiguration(ServiceDef serviceDef, Class<T> valueType);
-
-    /**
-     * Builds up an ordered collection by invoking service contributor methods that target the service (from any module,
-     * unless the service is private). Once all values have been added (each with an id, and pre/post constraints), the
-     * values are ordered, null values dropped, and the final sorted list is returned.
-     * 
-     * @param <T>
-     * @param serviceDef
-     *            defines the service for which configuration data is being assembled
-     * @param valueType
-     *            identifies the type of object allowed into the collection
-     * @return the final ordered list
-     */
-    <T> List<T> getOrderedConfiguration(ServiceDef serviceDef, Class<T> valueType);
-
-    /**
-     * Builds up a map of key/value pairs by invoking service contribution methods that tharget the service (from any
-     * module, unless the service is private). Values and keys may not be null. Invalid values (keys or values that are
-     * the wrong type, or duplicate keys) result in warnings and are ignored.
-     * 
-     * @param <K, V>
-     * @param serviceDef
-     *            defines the service for which configuration data is being assembled
-     * @param keyType
-     *            identifies the type of key object allowed into the map
-     * @param valueType
-     *            identifies the type of value object allowed into the map
-     * @return the final ordered list
-     */
-    <K, V> Map<K, V> getMappedConfiguration(ServiceDef serviceDef, Class<K> keyType, Class<V> valueType);
-
-    /**
-     * Convieience for creating a new {@link org.apache.tapestry5.ioc.services.ClassFab} instance using a
-     * {@link org.apache.tapestry5.ioc.services.ClassFactory}.
-     * 
-     * @param serviceInterface
-     *            the interface to be implemented by the provided class
-     */
-    ClassFab newClass(Class serviceInterface);
-
-    /**
-     * Given an input string that <em>may</em> contain symbols, returns the string with any and all symbols fully
-     * expanded.
-     * 
-     * @param input
-     * @return expanded input
-     */
-    String expandSymbols(String input);
-
-    /**
-     * Returns a logger for the service, which consists of the Module's {@link Module#getLoggerName() log name} suffixed
-     * with a period and the service id.
-     * 
-     * @param serviceId
-     * @return the logger for the service
-     */
-    Logger getServiceLogger(String serviceId);
-
-    /**
-     * Creates a just-in-time (and possibly, live reloading) proxy for the indicated class and interface, using the
-     * provided locator to autobuild the implementationClass (when necessary).
-     * 
-     * @since 5.2.0
-     */
-    <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass, ObjectLocator locator);
-
-    /**
-     * Returns a Set of Annotation classes that are used as service markers.
-     * 
-     * @since 5.2.0
-     */
-    Set<Class> getMarkerAnnotations();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InternalServiceDef.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InternalServiceDef.java
deleted file mode 100644
index f04bc6f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/InternalServiceDef.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-
-public interface InternalServiceDef extends ServiceDef2
-{
-    /**
-     * Returns the service implementation class.
-     * 
-     * @return implementations class or {@code null}
-     */
-    Class getImplementationClass();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/LifecycleWrappedServiceCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/LifecycleWrappedServiceCreator.java
deleted file mode 100644
index 3717b9c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/LifecycleWrappedServiceCreator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.ServiceResources;
-
-/**
- * Wrapper around a lifecycle, a set of resources for a service, and an underlying {@link ObjectCreator} for a service
- * that allows the service lifecycle to alter the way that the service is created (this is needed for the more advanced,
- * non-singleton types of service lifecycles).
- */
-public class LifecycleWrappedServiceCreator implements ObjectCreator
-{
-     private final ServiceLifecycle lifecycle;
-
-    private final ServiceResources resources;
-
-    private final ObjectCreator creator;
-
-    public LifecycleWrappedServiceCreator(ServiceLifecycle lifecycle, ServiceResources resources, ObjectCreator creator)
-    {
-        this.lifecycle = lifecycle;
-        this.resources = resources;
-        this.creator = creator;
-    }
-
-    /**
-     * Passes the resources and the service creator through the {@link org.apache.tapestry5.ioc.ServiceLifecycle}.
-     */
-    public Object createObject()
-    {
-        return lifecycle.createService(resources, creator);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/LoggerSourceImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/LoggerSourceImpl.java
deleted file mode 100644
index 4e90c8e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/LoggerSourceImpl.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Simple wrapper around SLF4J's LoggerFactory. The concept here is that Log implementations could be provided that
- * promote warnings or errors upto thrown exceptions, for people who like their IOC container extra finicky. In
- * addition, the extra layer makes things a lot easier to mock.
- */
-public class LoggerSourceImpl implements LoggerSource
-{
-    public Logger getLogger(Class clazz)
-    {
-        return LoggerFactory.getLogger(clazz);
-    }
-
-    public Logger getLogger(String name)
-    {
-        return LoggerFactory.getLogger(name);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/MappedConfigurationOverride.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/MappedConfigurationOverride.java
deleted file mode 100644
index 102ef97..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/MappedConfigurationOverride.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.def.ContributionDef;
-
-import java.util.Map;
-
-public class MappedConfigurationOverride<K, V>
-{
-    private final Map<K, V> configuration;
-
-    private final K key;
-
-    private final V overrideValue;
-
-    private final ContributionDef contribDef;
-
-    public MappedConfigurationOverride(ContributionDef contribDef, Map<K, V> configuration, K key, V overrideValue)
-    {
-        this.contribDef = contribDef;
-        this.configuration = configuration;
-        this.key = key;
-        this.overrideValue = overrideValue;
-    }
-
-    void apply()
-    {
-        if (!configuration.containsKey(key))
-            throw new IllegalArgumentException(
-                    String.format("Override for key %s (at %s) does not match an existing key.", key, contribDef));
-
-        if (overrideValue == null)
-            configuration.remove(key);
-        else
-            configuration.put(key, overrideValue);
-    }
-
-    public ContributionDef getContribDef()
-    {
-        return contribDef;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/Module.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/Module.java
deleted file mode 100644
index 3b93193..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/Module.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.Collection;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.AdvisorDef;
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-
-/**
- * A module within the Tapestry IoC registry. Each Module is constructed around a corresponding module builder instance;
- * the methods and annotations of that instance define the services provided by the module.
- */
-public interface Module extends ModuleBuilderSource
-{
-    /**
-     * Locates a service given a service id and the corresponding service interface type.
-     *
-     * @param <T>
-     * @param serviceId        identifies the service to access
-     * @param serviceInterface the interface the service implements
-     * @return the service's proxy
-     * @throws RuntimeException if there is an error instantiating the service proxy
-     */
-    <T> T getService(String serviceId, Class<T> serviceInterface);
-
-    /**
-     * Locates the ids of all services that implement the provided service interface, or whose service interface is
-     * assignable to the provided service interface (is a super-class or super-interface).
-     *
-     * @param serviceInterface the interface to search for
-     * @return a collection of service ids
-     */
-    Collection<String> findServiceIdsForInterface(Class serviceInterface);
-
-    /**
-     * Iterates over any decorator definitions defined by the module and returns those that apply to the provided
-     * service definition.
-     *
-     * @param serviceDef for which decorators are being assembled
-     * @return set of decorators, possibly empty (but not null)
-     */
-    Set<DecoratorDef> findMatchingDecoratorDefs(ServiceDef serviceDef);
-
-    /**
-     * Iterates over any advisor definitions defined by the module and returns those that apply to the provided service
-     * definition.
-     *
-     * @param serviceDef for which advisors are being assembled
-     * @return set of advisors, possibly empty but not null
-     * @since 5.1.0.0
-     */
-    Set<AdvisorDef> findMatchingServiceAdvisors(ServiceDef serviceDef);
-
-    /**
-     * Finds any contributions that are targeted at the indicated service.
-     */
-    Set<ContributionDef2> getContributorDefsForService(ServiceDef serviceDef);
-
-    /**
-     * Locates services with the {@link org.apache.tapestry5.ioc.annotations.EagerLoad} annotation and generates proxies
-     * for them, then adds them to the proxies list for instantiation.
-     *
-     * @param proxies collection of proxies to which any eager load services in the module should be added
-     */
-    void collectEagerLoadServices(Collection<EagerLoadServiceProxy> proxies);
-
-    /**
-     * Returns the service definition for the given service id.
-     *
-     * @param serviceId unique id for the service (caseless)
-     * @return the service definition or null
-     */
-    ServiceDef2 getServiceDef(String serviceId);
-
-    /**
-     * Returns the name used to obtain a logger for the module. Services within the module suffix this with a period and
-     * the service id.
-     *
-     * @return module logger name
-     */
-    String getLoggerName();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ModuleImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ModuleImpl.java
deleted file mode 100644
index 196931d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ModuleImpl.java
+++ /dev/null
@@ -1,605 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import static java.lang.String.format;
-
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.AdvisorDef;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Markable;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.ServiceLifecycle2;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ModuleDef2;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-import org.apache.tapestry5.ioc.internal.services.JustInTimeObjectCreator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MapInjectionResources;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.services.Status;
-import org.slf4j.Logger;
-
-@SuppressWarnings("all")
-public class ModuleImpl implements Module
-{
-    private final InternalRegistry registry;
-
-    private final ServiceActivityTracker tracker;
-
-    private final ModuleDef2 moduleDef;
-
-    private final ClassFactory classFactory;
-
-    private final Logger logger;
-
-    /**
-     * Lazily instantiated. Access is guarded by BARRIER.
-     */
-    private Object moduleInstance;
-
-    // Set to true when invoking the module constructor. Used to
-    // detect endless loops caused by irresponsible dependencies in
-    // the constructor.
-    private boolean insideConstructor;
-
-    /**
-     * Keyed on fully qualified service id; values are instantiated services (proxies). Guarded by BARRIER.
-     */
-    private final Map<String, Object> services = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, ServiceDef2> serviceDefs = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * The barrier is shared by all modules, which means that creation of *any* service for any module is single
-     * threaded.
-     */
-    private final static ConcurrentBarrier BARRIER = new ConcurrentBarrier();
-
-    public ModuleImpl(InternalRegistry registry, ServiceActivityTracker tracker, ModuleDef moduleDef,
-            ClassFactory classFactory, Logger logger)
-    {
-        this.registry = registry;
-        this.tracker = tracker;
-        this.moduleDef = InternalUtils.toModuleDef2(moduleDef);
-        this.classFactory = classFactory;
-        this.logger = logger;
-
-        for (String id : moduleDef.getServiceIds())
-        {
-            ServiceDef sd = moduleDef.getServiceDef(id);
-
-            ServiceDef2 sd2 = InternalUtils.toServiceDef2(sd);
-
-            serviceDefs.put(id, sd2);
-        }
-    }
-
-    public <T> T getService(String serviceId, Class<T> serviceInterface)
-    {
-        assert InternalUtils.isNonBlank(serviceId);
-        assert serviceInterface != null;
-        ServiceDef2 def = getServiceDef(serviceId);
-
-        // RegistryImpl should already have checked that the service exists.
-        assert def != null;
-
-        Object service = findOrCreate(def, null);
-
-        try
-        {
-            return serviceInterface.cast(service);
-        }
-        catch (ClassCastException ex)
-        {
-            // This may be overkill: I don't know how this could happen
-            // given that the return type of the method determines
-            // the service interface.
-
-            throw new RuntimeException(IOCMessages.serviceWrongInterface(serviceId, def.getServiceInterface(),
-                    serviceInterface));
-        }
-    }
-
-    public Set<DecoratorDef> findMatchingDecoratorDefs(ServiceDef serviceDef)
-    {
-        Set<DecoratorDef> result = CollectionFactory.newSet();
-
-        for (DecoratorDef def : moduleDef.getDecoratorDefs())
-        {
-            if (def.matches(serviceDef) || markerMatched(serviceDef, InternalUtils.toDecoratorDef2(def)))
-                result.add(def);
-        }
-
-        return result;
-    }
-
-    public Set<AdvisorDef> findMatchingServiceAdvisors(ServiceDef serviceDef)
-    {
-        Set<AdvisorDef> result = CollectionFactory.newSet();
-
-        for (AdvisorDef def : moduleDef.getAdvisorDefs())
-        {
-            if (def.matches(serviceDef) || markerMatched(serviceDef, InternalUtils.toAdvisorDef2(def)))
-                result.add(def);
-        }
-
-        return result;
-    }
-
-    @SuppressWarnings("unchecked")
-    public Collection<String> findServiceIdsForInterface(Class serviceInterface)
-    {
-        assert serviceInterface != null;
-        Collection<String> result = CollectionFactory.newList();
-
-        for (ServiceDef2 def : serviceDefs.values())
-        {
-            if (serviceInterface.isAssignableFrom(def.getServiceInterface()))
-                result.add(def.getServiceId());
-        }
-
-        return result;
-    }
-
-    /**
-     * Locates the service proxy for a particular service (from the service definition).
-     * 
-     * @param def
-     *            defines the service
-     * @param eagerLoadProxies
-     *            collection into which proxies for eager loaded services are added (or null)
-     * @return the service proxy
-     */
-    private Object findOrCreate(final ServiceDef2 def, final Collection<EagerLoadServiceProxy> eagerLoadProxies)
-    {
-        final String key = def.getServiceId();
-
-        final Invokable create = new Invokable()
-        {
-            public Object invoke()
-            {
-                // In a race condition, two threads may try to create the same service simulatenously.
-                // The second will block until after the first creates the service.
-
-                Object result = services.get(key);
-
-                // Normally, result is null, unless some other thread slipped in and created the service
-                // proxy.
-
-                if (result == null)
-                {
-                    result = create(def, eagerLoadProxies);
-
-                    services.put(key, result);
-                }
-
-                return result;
-            }
-        };
-
-        Invokable find = new Invokable()
-        {
-            public Object invoke()
-            {
-                Object result = services.get(key);
-
-                if (result == null)
-                    result = BARRIER.withWrite(create);
-
-                return result;
-            }
-        };
-
-        return BARRIER.withRead(find);
-    }
-
-    public void collectEagerLoadServices(final Collection<EagerLoadServiceProxy> proxies)
-    {
-        Runnable work = new Runnable()
-        {
-            public void run()
-            {
-                for (ServiceDef2 def : serviceDefs.values())
-                {
-                    if (def.isEagerLoad())
-                        findOrCreate(def, proxies);
-                }
-            }
-        };
-
-        registry.run("Eager loading services", work);
-    }
-
-    /**
-     * Creates the service and updates the cache of created services.
-     * 
-     * @param eagerLoadProxies
-     *            a list into which any eager loaded proxies should be added
-     */
-    private Object create(final ServiceDef2 def, final Collection<EagerLoadServiceProxy> eagerLoadProxies)
-    {
-        final String serviceId = def.getServiceId();
-
-        final Logger logger = registry.getServiceLogger(serviceId);
-
-        String description = IOCMessages.creatingService(serviceId);
-
-        if (logger.isDebugEnabled())
-            logger.debug(description);
-
-        final Module module = this;
-
-        Invokable operation = new Invokable()
-        {
-            public Object invoke()
-            {
-                try
-                {
-                    ServiceBuilderResources resources = new ServiceResourcesImpl(registry, module, def, classFactory,
-                            logger);
-
-                    // Build up a stack of operations that will be needed to realize the service
-                    // (by the proxy, at a later date).
-
-                    ObjectCreator creator = def.createServiceCreator(resources);
-
-                    Class serviceInterface = def.getServiceInterface();
-
-                    ServiceLifecycle2 lifecycle = registry.getServiceLifecycle(def.getServiceScope());
-
-                    // For non-proxyable services, we immediately create the service implementation
-                    // and return it. There's no interface to proxy, which throws out the possibility of
-                    // deferred instantiation, service lifecycles, and decorators.
-
-                    if (!serviceInterface.isInterface())
-                    {
-                        if (lifecycle.requiresProxy())
-                            throw new IllegalArgumentException(
-                                    String.format(
-                                            "Service scope '%s' requires a proxy, but the service does not have a service interface (necessary to create a proxy). Provide a service interface or select a different service scope.",
-                                            def.getServiceScope()));
-
-                        return creator.createObject();
-                    }
-
-                    creator = new OperationTrackingObjectCreator(registry, "Invoking " + creator.toString(), creator);
-
-                    creator = new LifecycleWrappedServiceCreator(lifecycle, resources, creator);
-
-                    // Marked services (or services inside marked modules) are not decorated.
-                    // TapestryIOCModule prevents decoration of its services. Note that all decorators will decorate
-                    // around the aspect interceptor, which wraps around the core service implementation.
-
-                    boolean allowDecoration = !def.isPreventDecoration();
-
-                    if (allowDecoration)
-                    {
-                        creator = new AdvisorStackBuilder(def, creator, getAspectDecorator(), registry);
-                        creator = new InterceptorStackBuilder(def, creator, registry);
-                    }
-
-                    // Add a wrapper that checks for recursion.
-
-                    creator = new RecursiveServiceCreationCheckWrapper(def, creator, logger);
-
-                    creator = new OperationTrackingObjectCreator(registry, "Realizing service " + serviceId, creator);
-
-                    JustInTimeObjectCreator delegate = new JustInTimeObjectCreator(tracker, creator, serviceId);
-
-                    Object proxy = createProxy(resources, delegate);
-
-                    registry.addRegistryShutdownListener(delegate);
-
-                    // Occasionally eager load service A may invoke service B from its service builder method; if
-                    // service B is eager loaded, we'll hit this method but eagerLoadProxies will be null. That's OK
-                    // ... service B is being realized anyway.
-
-                    if (def.isEagerLoad() && eagerLoadProxies != null)
-                        eagerLoadProxies.add(delegate);
-
-                    tracker.setStatus(serviceId, Status.VIRTUAL);
-
-                    return proxy;
-                }
-                catch (Exception ex)
-                {
-                    throw new RuntimeException(IOCMessages.errorBuildingService(serviceId, def, ex), ex);
-                }
-            }
-        };
-
-        return registry.invoke(description, operation);
-    }
-
-    private AspectDecorator getAspectDecorator()
-    {
-        return registry.invoke("Obtaining AspectDecorator service", new Invokable<AspectDecorator>()
-        {
-            public AspectDecorator invoke()
-            {
-                return registry.getService(AspectDecorator.class);
-            }
-        });
-    }
-
-    private final Runnable instantiateModule = new Runnable()
-    {
-        public void run()
-        {
-            moduleInstance = registry.invoke("Constructing module class " + moduleDef.getBuilderClass().getName(),
-                    new Invokable()
-                    {
-                        public Object invoke()
-                        {
-                            return instantiateModuleInstance();
-                        }
-                    });
-        }
-    };
-
-    private final Invokable provideModuleInstance = new Invokable<Object>()
-    {
-        public Object invoke()
-        {
-            if (moduleInstance == null)
-                BARRIER.withWrite(instantiateModule);
-
-            return moduleInstance;
-        }
-    };
-
-    public Object getModuleBuilder()
-    {
-        return BARRIER.withRead(provideModuleInstance);
-    }
-
-    private Object instantiateModuleInstance()
-    {
-        Class moduleClass = moduleDef.getBuilderClass();
-
-        Constructor[] constructors = moduleClass.getConstructors();
-
-        if (constructors.length == 0)
-            throw new RuntimeException(IOCMessages.noPublicConstructors(moduleClass));
-
-        if (constructors.length > 1)
-        {
-            // Sort the constructors ascending by number of parameters (descending); this is really
-            // just to allow the test suite to work properly across different JVMs (which will
-            // often order the constructors differently).
-
-            Comparator<Constructor> comparator = new Comparator<Constructor>()
-            {
-                public int compare(Constructor c1, Constructor c2)
-                {
-                    return c2.getParameterTypes().length - c1.getParameterTypes().length;
-                }
-            };
-
-            Arrays.sort(constructors, comparator);
-
-            logger.warn(IOCMessages.tooManyPublicConstructors(moduleClass, constructors[0]));
-        }
-
-        Constructor constructor = constructors[0];
-
-        if (insideConstructor)
-            throw new RuntimeException(IOCMessages.recursiveModuleConstructor(moduleClass, constructor));
-
-        ObjectLocator locator = new ObjectLocatorImpl(registry, this);
-        Map<Class, Object> resourcesMap = CollectionFactory.newMap();
-
-        resourcesMap.put(Logger.class, logger);
-        resourcesMap.put(ObjectLocator.class, locator);
-        resourcesMap.put(OperationTracker.class, registry);
-
-        InjectionResources resources = new MapInjectionResources(resourcesMap);
-
-        Throwable fail = null;
-
-        try
-        {
-            insideConstructor = true;
-
-            Object[] parameterValues = InternalUtils.calculateParameters(locator, resources,
-                    constructor.getParameterTypes(), constructor.getGenericParameterTypes(),
-                    constructor.getParameterAnnotations(), registry);
-
-            Object result = constructor.newInstance(parameterValues);
-
-            InternalUtils.injectIntoFields(result, locator, resources, registry);
-
-            return result;
-        }
-        catch (InvocationTargetException ex)
-        {
-            fail = ex.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            fail = ex;
-        }
-        finally
-        {
-            insideConstructor = false;
-        }
-
-        throw new RuntimeException(IOCMessages.instantiateBuilderError(moduleClass, fail), fail);
-    }
-
-    private Object createProxy(ServiceResources resources, ObjectCreator creator)
-    {
-        String serviceId = resources.getServiceId();
-        Class serviceInterface = resources.getServiceInterface();
-
-        String toString = format("<Proxy for %s(%s)>", serviceId, serviceInterface.getName());
-
-        return createProxyInstance(creator, serviceId, serviceInterface, resources.getImplementationClass(), toString);
-    }
-
-    private Object createProxyInstance(ObjectCreator creator, String serviceId, Class serviceInterface,
-            Class serviceImplementation, String description)
-    {
-        ServiceProxyToken token = SerializationSupport.createToken(serviceId);
-
-        ClassFab classFab = registry.newClass(serviceInterface);
-
-        classFab.addField("creator", Modifier.PRIVATE | Modifier.FINAL, ObjectCreator.class);
-        classFab.addField("token", Modifier.PRIVATE | Modifier.FINAL, ServiceProxyToken.class);
-
-        classFab.addConstructor(new Class[]
-        { ObjectCreator.class, ServiceProxyToken.class }, null, "{ creator = $1; token = $2; }");
-
-        // Make proxies serializable by writing the token to the stream.
-
-        classFab.addInterface(Serializable.class);
-
-        // This is the "magic" signature that allows an object to substitute some other
-        // object for itself.
-        MethodSignature writeReplaceSig = new MethodSignature(Object.class, "writeReplace", null, new Class[]
-        { ObjectStreamException.class });
-
-        classFab.addMethod(Modifier.PRIVATE, writeReplaceSig, "return token;");
-
-        // Now delegate all the methods.
-
-        String body = format("return (%s) creator.createObject();", serviceInterface.getName());
-
-        MethodSignature sig = new MethodSignature(serviceInterface, "delegate", null, null);
-
-        classFab.addMethod(Modifier.PRIVATE, sig, body);
-
-        classFab.proxyMethodsToDelegate(serviceInterface, "delegate()", description);
-
-        if (serviceImplementation != null)
-        {
-            classFab.copyClassAnnotationsFromDelegate(serviceImplementation);
-
-            classFab.copyMethodAnnotationsFromDelegate(serviceInterface, serviceImplementation);
-        }
-
-        Class proxyClass = classFab.createClass();
-
-        try
-        {
-            return proxyClass.getConstructors()[0].newInstance(creator, token);
-        }
-        catch (Exception ex)
-        {
-            // Exceptions should not happen.
-
-            throw new RuntimeException(ex.getMessage(), ex);
-        }
-    }
-
-    @SuppressWarnings("all")
-    public Set<ContributionDef2> getContributorDefsForService(ServiceDef serviceDef)
-    {
-        Set<ContributionDef2> result = CollectionFactory.newSet();
-
-        for (ContributionDef next : moduleDef.getContributionDefs())
-        {
-            ContributionDef2 def = InternalUtils.toContributionDef2(next);
-
-            if (serviceDef.getServiceId().equalsIgnoreCase(def.getServiceId()))
-            {
-                result.add(def);
-            }
-            else
-            {
-                if(markerMatched(serviceDef, def))
-                {
-                    result.add(def);
-                }
-            }
-        }
-
-        return result;
-    }
-   
-    private boolean markerMatched(ServiceDef serviceDef, Markable markable)
-    {
-        if (!serviceDef.getServiceInterface().equals(markable.getServiceInterface()))
-            return false;;
-
-        Set<Class> contributionMarkers = CollectionFactory.newSet(markable.getMarkers());
-
-        if (contributionMarkers.contains(Local.class))
-        {
-            // If @Local is present, filter out services that aren't in the same module.
-            // Don't consider @Local to be a marker annotation
-            // for the later match, however.
-
-            if (!isLocalServiceDef(serviceDef))
-                return false;
-
-            contributionMarkers.remove(Local.class);
-        }
-
-        // Filter out any stray annotations that aren't used by some
-        // service, in any module, as a marker annotation.
-
-        contributionMarkers.retainAll(registry.getMarkerAnnotations());
-
-        return serviceDef.getMarkers().containsAll(contributionMarkers);
-    }
-
-    private boolean isLocalServiceDef(ServiceDef serviceDef)
-    {
-        return serviceDefs.containsKey(serviceDef.getServiceId());
-    }
-
-    public ServiceDef2 getServiceDef(String serviceId)
-    {
-        return serviceDefs.get(serviceId);
-    }
-
-    public String getLoggerName()
-    {
-        return moduleDef.getLoggerName();
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("ModuleImpl[%s]", moduleDef.getLoggerName());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/NullAnnotationProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/NullAnnotationProvider.java
deleted file mode 100644
index 0034fef..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/NullAnnotationProvider.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-import java.lang.annotation.Annotation;
-
-/**
- * A null implementation of {@link AnnotationProvider}, used when there is not appropriate source of annotations.
- */
-public class NullAnnotationProvider implements AnnotationProvider
-{
-    /**
-     * Always returns null.
-     */
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ObjectCreatorSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ObjectCreatorSource.java
deleted file mode 100644
index 5633fcc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ObjectCreatorSource.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-
-/**
- * An object which can, when passed a {@link ServiceBuilderResources}, create a corresponding {@link ObjectCreator}. A
- * secondary responsibility is to provide a description of the creator, which is usually based on the name of the method
- * or constructor to be invoked, and is ultimately used in some debugging or error output.
- */
-public interface ObjectCreatorSource
-{
-    /**
-     * Provides an ObjectCreator that can be used to ultimately instantiate the core service implementation.
-     */
-    ObjectCreator constructCreator(ServiceBuilderResources resources);
-
-    /**
-     * Returns a description of the method or constructor that creates the service.
-     */
-    String getDescription();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ObjectLocatorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ObjectLocatorImpl.java
deleted file mode 100644
index 0e7a31b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ObjectLocatorImpl.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-
-/**
- * Base service locator class used when only the module is known (i.e., when instantiating a module
- * class).
- */
-public class ObjectLocatorImpl implements ObjectLocator
-{
-    private final InternalRegistry registry;
-
-    private final Module module;
-
-    public ObjectLocatorImpl(InternalRegistry registry, Module module)
-    {
-        this.registry = registry;
-        this.module = module;
-    }
-
-    public <T> T getService(String serviceId, Class<T> serviceInterface)
-    {
-        String expandedServiceId = registry.expandSymbols(serviceId);
-
-        return registry.getService(expandedServiceId, serviceInterface);
-    }
-
-    public <T> T getService(Class<T> serviceInterface)
-    {
-        return registry.getService(serviceInterface);
-    }
-
-    public <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
-    {
-        return registry.getObject(objectType, annotationProvider, this, module);
-    }
-
-    public <T> T autobuild(Class<T> clazz)
-    {
-        return registry.autobuild(clazz);
-    }
-
-    public <T> T autobuild(String description, Class<T> clazz)
-    {
-        return registry.autobuild(description, clazz);
-    }
-
-    public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
-    {
-        return registry.proxy(interfaceClass, implementationClass, this);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationException.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationException.java
deleted file mode 100644
index d8b97e0..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationException.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-/**
- * An exception caught and reported by an {@link org.apache.tapestry5.ioc.OperationTracker}; the trace property
- * identifies what operations were active at the time of the exception.
- */
-public class OperationException extends TapestryException
-{
-    private static final long serialVersionUID = -7555673473832355909L;
-
-    private final String[] trace;
-
-    public OperationException(Throwable cause, String[] trace)
-    {
-        super(cause.getMessage(), cause);
-
-        this.trace = trace;
-    }
-
-    public String[] getTrace()
-    {
-        return trace;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationTrackerImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationTrackerImpl.java
deleted file mode 100644
index dfab227..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationTrackerImpl.java
+++ /dev/null
@@ -1,127 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.Stack;
-import org.slf4j.Logger;
-
-/**
- * Core implementation that manages a logger and catches and reports exception.
- * 
- * @see org.apache.tapestry5.ioc.internal.PerThreadOperationTracker
- */
-public class OperationTrackerImpl implements OperationTracker
-{
-    private final Logger logger;
-
-    private final Stack<String> operations = CollectionFactory.newStack();
-
-    private boolean logged;
-
-    public OperationTrackerImpl(Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    public void run(String description, final Runnable operation)
-    {
-        assert InternalUtils.isNonBlank(description);
-        assert operation != null;
-        invoke(description, new Invokable<Void>()
-        {
-            public Void invoke()
-            {
-                operation.run();
-
-                return null;
-            }
-        });
-    }
-
-    public <T> T invoke(String description, Invokable<T> operation)
-    {
-        assert InternalUtils.isNonBlank(description);
-        assert operation != null;
-        operations.push(description);
-
-        try
-        {
-            return operation.invoke();
-        }
-        catch (RuntimeException ex)
-        {
-            logAndRethrow(ex);
-
-            throw ex;
-        }
-        catch (Error ex)
-        {
-            if (!logged)
-            {
-                log(ex);
-                logged = true;
-            }
-            
-            throw ex;
-        }
-        finally
-        {
-            operations.pop();
-
-            // We've finally backed out of the operation stack ... but there may be more to come!
-
-            if (operations.isEmpty())
-                logged = false;
-        }
-    }
-
-    private void logAndRethrow(Throwable ex)
-    {
-        if (!logged)
-        {
-            String[] trace = log(ex);
-
-            logged = true;
-
-            throw new OperationException(ex, trace);
-        }
-    }
-
-    private String[] log(Throwable ex)
-    {
-        logger.error(InternalUtils.toMessage(ex));
-        logger.error("Operations trace:");
-
-        Object[] snapshot = operations.getSnapshot();
-        String[] trace = new String[snapshot.length];
-
-        for (int i = 0; i < snapshot.length; i++)
-        {
-            trace[i] = snapshot[i].toString();
-
-            logger.error(String.format("[%2d] %s", i + 1, trace[i]));
-        }
-        return trace;
-    }
-
-    boolean isEmpty()
-    {
-        return operations.isEmpty();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationTrackingObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationTrackingObjectCreator.java
deleted file mode 100644
index 7a0e0ba..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OperationTrackingObjectCreator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-//  Copyright 2008,, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.OperationTracker;
-
-/**
- * Makes sure the operations tracker is notified knows that a service is being realized.
- */
-public class OperationTrackingObjectCreator implements ObjectCreator
-{
-    private final OperationTracker tracker;
-
-    private final String message;
-
-    private final ObjectCreator delegate;
-
-    public OperationTrackingObjectCreator(OperationTracker tracker, String message, ObjectCreator delegate)
-    {
-        this.tracker = tracker;
-        this.message = message;
-        this.delegate = delegate;
-    }
-
-    public Object createObject()
-    {
-        Invokable<Object> operation = new Invokable<Object>()
-        {
-            public Object invoke()
-            {
-                return delegate.createObject();
-            }
-        };
-
-        return tracker.invoke(message, operation);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OrIdMatcher.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OrIdMatcher.java
deleted file mode 100644
index 57d1378..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OrIdMatcher.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.IdMatcher;
-
-import java.util.Collection;
-
-/**
- * A wrapper around a collection of IdMatchers. A match occurs if <em>any</em> matcher matches.
- */
-public final class OrIdMatcher implements IdMatcher
-{
-    private final IdMatcher[] matchers;
-
-    public OrIdMatcher(Collection<IdMatcher> matchers)
-    {
-        this.matchers = matchers.toArray(new IdMatcher[matchers.size()]);
-    }
-
-    public boolean matches(String id)
-    {
-        for (IdMatcher m : matchers)
-            if (m.matches(id)) return true;
-
-        return false;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OrderedConfigurationOverride.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OrderedConfigurationOverride.java
deleted file mode 100644
index 419851f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/OrderedConfigurationOverride.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.Orderer;
-
-class OrderedConfigurationOverride<T>
-{
-    private final Orderer<T> orderer;
-
-    private final String id;
-
-    private final T replacementObject;
-
-    private final String[] constraints;
-
-    private final ContributionDef contribDef;
-
-    OrderedConfigurationOverride(Orderer<T> orderer, String id, T replacementObject, String[] constraints,
-                                 ContributionDef contribDef)
-    {
-        this.orderer = orderer;
-        this.id = id;
-        this.replacementObject = replacementObject;
-        this.constraints = constraints;
-        this.contribDef = contribDef;
-    }
-
-    void apply()
-    {
-        try
-        {
-            orderer.override(id, replacementObject, constraints);
-        }
-        catch (Exception ex)
-        {
-            String message = String.format("Failure processing override from %s: %s",
-                                           contribDef,
-                                           InternalUtils.toMessage(ex));
-
-            throw new RuntimeException(message, ex);
-        }
-    }
-
-    public ContributionDef getContribDef()
-    {
-        return contribDef;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/PerThreadOperationTracker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/PerThreadOperationTracker.java
deleted file mode 100644
index 1055d5f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/PerThreadOperationTracker.java
+++ /dev/null
@@ -1,75 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.slf4j.Logger;
-
-/**
- * Manages a per-thread OperationTracker using a ThreadLocal.
- */
-public class PerThreadOperationTracker implements OperationTracker
-{
-    private final Logger logger;
-
-    private final ThreadLocal<OperationTrackerImpl> perThread = new ThreadLocal<OperationTrackerImpl>()
-    {
-        @Override
-        protected OperationTrackerImpl initialValue()
-        {
-            return new OperationTrackerImpl(logger);
-        }
-    };
-
-    public PerThreadOperationTracker(Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    synchronized OperationTracker get()
-    {
-        return perThread.get();
-    }
-
-    synchronized void cleanup()
-    {
-        if (perThread.get().isEmpty()) perThread.remove();
-    }
-
-    public void run(String description, Runnable operation)
-    {
-        try
-        {
-            get().run(description, operation);
-        }
-        finally
-        {
-            cleanup();
-        }
-    }
-
-    public <T> T invoke(String description, Invokable<T> operation)
-    {
-        try
-        {
-            return get().invoke(description, operation);
-        }
-        finally
-        {
-            cleanup();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/QuietOperationTracker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/QuietOperationTracker.java
deleted file mode 100644
index 0ea7bc6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/QuietOperationTracker.java
+++ /dev/null
@@ -1,34 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.OperationTracker;
-
-/**
- * Minimal implementation used for testing, that does no logging, tracking, or exception catching.
- */
-public class QuietOperationTracker implements OperationTracker
-{
-    public void run(String description, Runnable operation)
-    {
-        operation.run();
-    }
-
-    public <T> T invoke(String description, Invokable<T> operation)
-    {
-        return operation.invoke();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RecursiveServiceCreationCheckWrapper.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RecursiveServiceCreationCheckWrapper.java
deleted file mode 100644
index ed956b9..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RecursiveServiceCreationCheckWrapper.java
+++ /dev/null
@@ -1,75 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.slf4j.Logger;
-
-/**
- * Decorator for {@link org.apache.tapestry5.ioc.ObjectCreator} that ensures the service is only created once. This
- * detects a situation where the service builder for a service directly or indirectly invokes methods on the service
- * itself. This would show up as a second call up the ServiceCreator stack injected into the proxy, potentially leading
- * to endless recursion. We try to identify that recursion and produce a useable exception report.
- */
-public class RecursiveServiceCreationCheckWrapper implements ObjectCreator
-{
-    private final ServiceDef serviceDef;
-
-    private final ObjectCreator delegate;
-
-    private final Logger logger;
-
-    private boolean locked;
-
-    public RecursiveServiceCreationCheckWrapper(ServiceDef serviceDef, ObjectCreator delegate,
-                                                Logger logger)
-    {
-        this.serviceDef = serviceDef;
-        this.delegate = delegate;
-        this.logger = logger;
-    }
-
-    /**
-     * We could make this method synchronized, but in the context of creating a service for a proxy, it will already be
-     * synchronized (inside the proxy).
-     */
-    public Object createObject()
-    {
-        if (locked)
-            throw new IllegalStateException(IOCMessages.recursiveServiceBuild(serviceDef));
-
-        // Set the lock, to ensure that recursive service construction fails.
-
-        locked = true;
-
-        try
-        {
-            return delegate.createObject();
-        }
-        catch (RuntimeException ex)
-        {
-            logger.error(IOCMessages.serviceConstructionFailed(serviceDef, ex), ex);
-
-            // Release the lock on failure; the service is now in an unknown state, but we may
-            // be able to continue from here.
-
-            locked = false;
-
-            throw ex;
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java
deleted file mode 100644
index c1249a4..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryImpl.java
+++ /dev/null
@@ -1,1102 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Flow;
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.AdvisorDef;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.IOCConstants;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceAdvisor;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.ServiceLifecycle2;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-import org.apache.tapestry5.ioc.internal.services.PerthreadManagerImpl;
-import org.apache.tapestry5.ioc.internal.services.RegistryShutdownHubImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MapInjectionResources;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.internal.util.Orderer;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MasterObjectProvider;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.ioc.services.ServiceLifecycleSource;
-import org.apache.tapestry5.ioc.services.Status;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TapestryIOCModule;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-import org.apache.tapestry5.services.UpdateListenerHub;
-import org.slf4j.Logger;
-
-@SuppressWarnings("all")
-public class RegistryImpl implements Registry, InternalRegistry, ServiceProxyProvider
-{
-    private static final String SYMBOL_SOURCE_SERVICE_ID = "SymbolSource";
-
-    private static final String REGISTRY_SHUTDOWN_HUB_SERVICE_ID = "RegistryShutdownHub";
-
-    static final String PERTHREAD_MANAGER_SERVICE_ID = "PerthreadManager";
-
-    private static final String SERVICE_ACTIVITY_SCOREBOARD_SERVICE_ID = "ServiceActivityScoreboard";
-
-    /**
-     * The set of marker annotations for a builtin service.
-     */
-    private final static Set<Class> BUILTIN = CollectionFactory.newSet();
-
-    static
-    {
-        BUILTIN.add(Builtin.class);
-    }
-
-    /**
-     * Used to obtain the {@link org.apache.tapestry5.ioc.services.ClassFactory} service, which is
-     * crucial when creating
-     * runtime classes for proxies and the like.
-     */
-    static final String CLASS_FACTORY_SERVICE_ID = "ClassFactory";
-
-    static final String LOGGER_SOURCE_SERVICE_ID = "LoggerSource";
-
-    private final OneShotLock lock = new OneShotLock();
-
-    private final OneShotLock eagerLoadLock = new OneShotLock();
-
-    private final Map<String, Object> builtinServices = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, Class> builtinTypes = CollectionFactory.newCaseInsensitiveMap();
-
-    private final RegistryShutdownHubImpl registryShutdownHub;
-
-    private final LoggerSource loggerSource;
-
-    /**
-     * Map from service id to the Module that contains the service.
-     */
-    private final Map<String, Module> serviceIdToModule = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, ServiceLifecycle2> lifecycles = CollectionFactory.newCaseInsensitiveMap();
-
-    private final PerthreadManager perthreadManager;
-
-    private final ClassFactory classFactory;
-
-    private final ServiceActivityTracker tracker;
-
-    private SymbolSource symbolSource;
-
-    private final Map<Module, Set<ServiceDef2>> moduleToServiceDefs = CollectionFactory.newMap();
-
-    /**
-     * From marker type to a list of marked service instances.
-     */
-    private final Map<Class, List<ServiceDef2>> markerToServiceDef = CollectionFactory.newMap();
-
-    private final Set<ServiceDef2> allServiceDefs = CollectionFactory.newSet();
-
-    private final OperationTracker operationTracker;
-
-    /**
-     * Constructs the registry from a set of module definitions and other resources.
-     * 
-     * @param moduleDefs
-     *            defines the modules (and builders, decorators, etc., within)
-     * @param classFactory
-     *            TODO
-     * @param loggerSource
-     *            used to obtain Logger instances
-     */
-    public RegistryImpl(Collection<ModuleDef> moduleDefs, ClassFactory classFactory, LoggerSource loggerSource)
-    {
-        this.loggerSource = loggerSource;
-
-        operationTracker = new PerThreadOperationTracker(loggerSource.getLogger(Registry.class));
-
-        final ServiceActivityTrackerImpl scoreboardAndTracker = new ServiceActivityTrackerImpl();
-
-        tracker = scoreboardAndTracker;
-
-        this.classFactory = classFactory;
-
-        Logger logger = loggerForBuiltinService(PERTHREAD_MANAGER_SERVICE_ID);
-
-        perthreadManager = new PerthreadManagerImpl(logger);
-
-        logger = loggerForBuiltinService(REGISTRY_SHUTDOWN_HUB_SERVICE_ID);
-
-        registryShutdownHub = new RegistryShutdownHubImpl(logger);
-
-        lifecycles.put("singleton", new SingletonServiceLifecycle());
-
-        registryShutdownHub.addRegistryShutdownListener(new RegistryShutdownListener()
-        {
-            public void registryDidShutdown()
-            {
-                scoreboardAndTracker.shutdown();
-            }
-        });
-
-        for (ModuleDef def : moduleDefs)
-        {
-            logger = this.loggerSource.getLogger(def.getLoggerName());
-
-            Module module = new ModuleImpl(this, tracker, def, classFactory, logger);
-
-            Set<ServiceDef2> moduleServiceDefs = CollectionFactory.newSet();
-
-            for (String serviceId : def.getServiceIds())
-            {
-                ServiceDef2 serviceDef = module.getServiceDef(serviceId);
-
-                moduleServiceDefs.add(serviceDef);
-                allServiceDefs.add(serviceDef);
-
-                Module existing = serviceIdToModule.get(serviceId);
-
-                if (existing != null)
-                    throw new RuntimeException(IOCMessages.serviceIdConflict(serviceId,
-                            existing.getServiceDef(serviceId), serviceDef));
-
-                serviceIdToModule.put(serviceId, module);
-
-                // The service is defined but will not have gone further than that.
-                tracker.define(serviceDef, Status.DEFINED);
-
-                for (Class marker : serviceDef.getMarkers())
-                    InternalUtils.addToMapList(markerToServiceDef, marker, serviceDef);
-            }
-
-            moduleToServiceDefs.put(module, moduleServiceDefs);
-        }
-
-        addBuiltin(SERVICE_ACTIVITY_SCOREBOARD_SERVICE_ID, ServiceActivityScoreboard.class, scoreboardAndTracker);
-        addBuiltin(LOGGER_SOURCE_SERVICE_ID, LoggerSource.class, this.loggerSource);
-        addBuiltin(CLASS_FACTORY_SERVICE_ID, ClassFactory.class, this.classFactory);
-        addBuiltin(PERTHREAD_MANAGER_SERVICE_ID, PerthreadManager.class, perthreadManager);
-        addBuiltin(REGISTRY_SHUTDOWN_HUB_SERVICE_ID, RegistryShutdownHub.class, registryShutdownHub);
-
-        validateContributeDefs(moduleDefs);
-
-        scoreboardAndTracker.startup();
-
-        SerializationSupport.setProvider(this);
-    }
-
-    /**
-     * Validate that each module's ContributeDefs correspond to an actual service.
-     */
-    private void validateContributeDefs(Collection<ModuleDef> moduleDefs)
-    {
-        for (ModuleDef module : moduleDefs)
-        {
-            Set<ContributionDef> contributionDefs = module.getContributionDefs();
-
-            for (ContributionDef cd : contributionDefs)
-            {
-                String serviceId = cd.getServiceId();
-
-                ContributionDef2 cd2 = InternalUtils.toContributionDef2(cd);
-
-                if (cd2.getServiceId() != null)
-                {
-                    if (!serviceIdToModule.containsKey(serviceId)) { throw new IllegalArgumentException(
-                            IOCMessages.contributionForNonexistentService(cd)); }
-                }
-                else if (!isContributionForExistentService(module, cd2)) { throw new IllegalArgumentException(
-                        IOCMessages.contributionForUnqualifiedService(cd2)); }
-            }
-        }
-
-    }
-
-    /**
-     * Invoked when the contribution method didn't follow the naming convention and so doesn't identify
-     * a service by id; instead there was an @Contribute to identify the service interface.
-     */
-    @SuppressWarnings("all")
-    private boolean isContributionForExistentService(ModuleDef moduleDef, final ContributionDef2 cd)
-    {
-        final Set<Class> contributionMarkers = new HashSet(cd.getMarkers());
-
-        boolean localOnly = contributionMarkers.contains(Local.class);
-
-        Flow<ServiceDef2> serviceDefs = localOnly ? getLocalServiceDefs(moduleDef) : F.flow(allServiceDefs);
-
-        contributionMarkers.retainAll(getMarkerAnnotations());
-        contributionMarkers.remove(Local.class);
-
-        // Match services with the correct interface AND having as markers *all* the marker annotations
-        
-        Flow<ServiceDef2> filtered = serviceDefs.filter(new Predicate<ServiceDef2>()
-        {
-            public boolean accept(ServiceDef2 object)
-            {
-                return object.getServiceInterface().equals(cd.getServiceInterface());
-            }
-        }.and(new Predicate<ServiceDef2>()
-        {
-            public boolean accept(ServiceDef2 serviceDef)
-            {
-                return serviceDef.getMarkers().containsAll(contributionMarkers);
-            }
-        }));
-
-        // That's a lot of logic; the good news is it will short-circuit as soon as it finds a single match,
-        // thanks to the laziness inside Flow.
-
-        return !filtered.isEmpty();
-    }
-
-    private Flow<ServiceDef2> getLocalServiceDefs(final ModuleDef moduleDef)
-    {
-        return F.flow(moduleDef.getServiceIds()).map(new Mapper<String, ServiceDef2>()
-        {
-            public ServiceDef2 map(String value)
-            {
-                return InternalUtils.toServiceDef2(moduleDef.getServiceDef(value));
-            }
-        });
-    }
-
-    /**
-     * It's not unreasonable for an eagerly-loaded service to decide to start a thread, at which
-     * point we raise issues
-     * about improper publishing of the Registry instance from the RegistryImpl constructor. Moving
-     * eager loading of
-     * services out to its own method should ensure thread safety.
-     */
-    public void performRegistryStartup()
-    {
-        eagerLoadLock.lock();
-
-        List<EagerLoadServiceProxy> proxies = CollectionFactory.newList();
-
-        for (Module m : moduleToServiceDefs.keySet())
-            m.collectEagerLoadServices(proxies);
-
-        // TAPESTRY-2267: Gather up all the proxies before instantiating any of them.
-
-        for (EagerLoadServiceProxy proxy : proxies)
-            proxy.eagerLoadService();
-
-        getService("RegistryStartup", Runnable.class).run();
-
-        cleanupThread();
-    }
-
-    public Logger getServiceLogger(String serviceId)
-    {
-        Module module = serviceIdToModule.get(serviceId);
-
-        assert module != null;
-
-        return loggerSource.getLogger(module.getLoggerName() + "." + serviceId);
-    }
-
-    private Logger loggerForBuiltinService(String serviceId)
-    {
-        return loggerSource.getLogger(TapestryIOCModule.class + "." + serviceId);
-    }
-
-    private <T> void addBuiltin(final String serviceId, final Class<T> serviceInterface, T service)
-    {
-        builtinTypes.put(serviceId, serviceInterface);
-        builtinServices.put(serviceId, service);
-
-        // Make sure each of the builtin services is also available via the Builtin annotation
-        // marker.
-
-        ServiceDef2 serviceDef = new ServiceDef2()
-        {
-            public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
-            {
-                return null;
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return BUILTIN;
-            }
-
-            public String getServiceId()
-            {
-                return serviceId;
-            }
-
-            public Class getServiceInterface()
-            {
-                return serviceInterface;
-            }
-
-            public String getServiceScope()
-            {
-                return ScopeConstants.DEFAULT;
-            }
-
-            public boolean isEagerLoad()
-            {
-                return false;
-            }
-
-            public boolean isPreventDecoration()
-            {
-                return true;
-            }
-        };
-
-        for (Class marker : serviceDef.getMarkers())
-        {
-            InternalUtils.addToMapList(markerToServiceDef, marker, serviceDef);
-            allServiceDefs.add(serviceDef);
-        }
-
-        tracker.define(serviceDef, Status.BUILTIN);
-    }
-
-    public synchronized void shutdown()
-    {
-        lock.lock();
-
-        registryShutdownHub.fireRegistryDidShutdown();
-
-        SerializationSupport.clearProvider(this);
-    }
-
-    public <T> T getService(String serviceId, Class<T> serviceInterface)
-    {
-        lock.check();
-
-        T result = checkForBuiltinService(serviceId, serviceInterface);
-        if (result != null)
-            return result;
-
-        // Checking serviceId and serviceInterface is overkill; they have been checked and rechecked
-        // all the way to here.
-
-        Module containingModule = locateModuleForService(serviceId);
-
-        return containingModule.getService(serviceId, serviceInterface);
-    }
-
-    private <T> T checkForBuiltinService(String serviceId, Class<T> serviceInterface)
-    {
-        Object service = builtinServices.get(serviceId);
-
-        if (service == null)
-            return null;
-
-        try
-        {
-            return serviceInterface.cast(service);
-        }
-        catch (ClassCastException ex)
-        {
-            throw new RuntimeException(IOCMessages.serviceWrongInterface(serviceId, builtinTypes.get(serviceId),
-                    serviceInterface));
-        }
-    }
-
-    public void cleanupThread()
-    {
-        lock.check();
-
-        perthreadManager.cleanup();
-    }
-
-    private Module locateModuleForService(String serviceId)
-    {
-        Module module = serviceIdToModule.get(serviceId);
-
-        if (module == null)
-            throw new UnknownValueException(String.format("Service id '%s' is not defined by any module.", serviceId),
-                    new AvailableValues("Defined service ids", serviceIdToModule));
-
-        return module;
-    }
-
-    public <T> Collection<T> getUnorderedConfiguration(ServiceDef serviceDef, Class<T> objectType)
-    {
-        lock.check();
-
-        final Collection<T> result = CollectionFactory.newList();
-
-        for (Module m : moduleToServiceDefs.keySet())
-            addToUnorderedConfiguration(result, objectType, serviceDef, m);
-
-        return result;
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> List<T> getOrderedConfiguration(ServiceDef serviceDef, Class<T> objectType)
-    {
-        lock.check();
-
-        String serviceId = serviceDef.getServiceId();
-        Logger logger = getServiceLogger(serviceId);
-
-        Orderer<T> orderer = new Orderer<T>(logger);
-        Map<String, OrderedConfigurationOverride<T>> overrides = CollectionFactory.newCaseInsensitiveMap();
-
-        for (Module m : moduleToServiceDefs.keySet())
-            addToOrderedConfiguration(orderer, overrides, objectType, serviceDef, m);
-
-        // An ugly hack ... perhaps we should introduce a new builtin service so that this can be
-        // accomplished in the normal way?
-
-        if (serviceId.equals("MasterObjectProvider"))
-        {
-            ObjectProvider contribution = new ObjectProvider()
-            {
-                public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-                {
-                    return findServiceByMarkerAndType(objectType, annotationProvider, null);
-                }
-            };
-
-            orderer.add("ServiceByMarker", (T) contribution);
-        }
-
-        for (OrderedConfigurationOverride<T> override : overrides.values())
-            override.apply();
-
-        return orderer.getOrdered();
-    }
-
-    public <K, V> Map<K, V> getMappedConfiguration(ServiceDef serviceDef, Class<K> keyType, Class<V> objectType)
-    {
-        lock.check();
-
-        // When the key type is String, then a case insensitive map is used.
-
-        Map<K, V> result = newConfigurationMap(keyType);
-        Map<K, ContributionDef> keyToContribution = newConfigurationMap(keyType);
-        Map<K, MappedConfigurationOverride<K, V>> overrides = newConfigurationMap(keyType);
-
-        for (Module m : moduleToServiceDefs.keySet())
-            addToMappedConfiguration(result, overrides, keyToContribution, keyType, objectType, serviceDef, m);
-
-        for (MappedConfigurationOverride<K, V> override : overrides.values())
-        {
-            override.apply();
-        }
-
-        return result;
-    }
-
-    @SuppressWarnings("unchecked")
-    private <K, V> Map<K, V> newConfigurationMap(Class<K> keyType)
-    {
-        if (keyType.equals(String.class))
-        {
-            Map<String, K> result = CollectionFactory.newCaseInsensitiveMap();
-
-            return (Map<K, V>) result;
-        }
-
-        return CollectionFactory.newMap();
-    }
-
-    private <K, V> void addToMappedConfiguration(Map<K, V> map, Map<K, MappedConfigurationOverride<K, V>> overrides,
-            Map<K, ContributionDef> keyToContribution, Class<K> keyClass, Class<V> valueType, ServiceDef serviceDef,
-            final Module module)
-    {
-        String serviceId = serviceDef.getServiceId();
-        Set<ContributionDef2> contributions = module.getContributorDefsForService(serviceDef);
-
-        if (contributions.isEmpty())
-            return;
-
-        Logger logger = getServiceLogger(serviceId);
-
-        boolean debug = logger.isDebugEnabled();
-
-        final ServiceResources resources = new ServiceResourcesImpl(this, module, serviceDef, classFactory, logger);
-
-        for (final ContributionDef def : contributions)
-        {
-            final MappedConfiguration<K, V> validating = new ValidatingMappedConfigurationWrapper<K, V>(valueType,
-                    resources, map, overrides, serviceId, def, keyClass, keyToContribution);
-
-            String description = IOCMessages.invokingMethod(def);
-
-            if (debug)
-                logger.debug(description);
-
-            operationTracker.run(description, new Runnable()
-            {
-                public void run()
-                {
-                    def.contribute(module, resources, validating);
-                }
-            });
-        }
-    }
-
-    private <T> void addToUnorderedConfiguration(Collection<T> collection, Class<T> valueType, ServiceDef serviceDef,
-            final Module module)
-    {
-        String serviceId = serviceDef.getServiceId();
-        Set<ContributionDef2> contributions = module.getContributorDefsForService(serviceDef);
-
-        if (contributions.isEmpty())
-            return;
-
-        Logger logger = getServiceLogger(serviceId);
-
-        boolean debug = logger.isDebugEnabled();
-
-        final ServiceResources resources = new ServiceResourcesImpl(this, module, serviceDef, classFactory, logger);
-
-        for (final ContributionDef def : contributions)
-        {
-            final Configuration<T> validating = new ValidatingConfigurationWrapper<T>(valueType, resources, collection,
-                    serviceId);
-
-            String description = IOCMessages.invokingMethod(def);
-
-            if (debug)
-                logger.debug(description);
-
-            operationTracker.run(description, new Runnable()
-            {
-                public void run()
-                {
-                    def.contribute(module, resources, validating);
-                }
-            });
-        }
-    }
-
-    private <T> void addToOrderedConfiguration(Orderer<T> orderer,
-            Map<String, OrderedConfigurationOverride<T>> overrides, Class<T> valueType, ServiceDef serviceDef,
-            final Module module)
-    {
-        String serviceId = serviceDef.getServiceId();
-        Set<ContributionDef2> contributions = module.getContributorDefsForService(serviceDef);
-
-        if (contributions.isEmpty())
-            return;
-
-        Logger logger = getServiceLogger(serviceId);
-        boolean debug = logger.isDebugEnabled();
-
-        final ServiceResources resources = new ServiceResourcesImpl(this, module, serviceDef, classFactory, logger);
-
-        for (final ContributionDef def : contributions)
-        {
-            final OrderedConfiguration<T> validating = new ValidatingOrderedConfigurationWrapper<T>(valueType,
-                    resources, orderer, overrides, def, serviceId);
-
-            String description = IOCMessages.invokingMethod(def);
-
-            if (debug)
-                logger.debug(description);
-
-            operationTracker.run(description, new Runnable()
-            {
-                public void run()
-                {
-
-                    def.contribute(module, resources, validating);
-                }
-            });
-        }
-    }
-
-    public <T> T getService(Class<T> serviceInterface)
-    {
-        lock.check();
-
-        List<String> serviceIds = findServiceIdsForInterface(serviceInterface);
-
-        if (serviceIds == null)
-            serviceIds = Collections.emptyList();
-
-        switch (serviceIds.size())
-        {
-            case 0:
-
-                throw new RuntimeException(IOCMessages.noServiceMatchesType(serviceInterface));
-
-            case 1:
-
-                String serviceId = serviceIds.get(0);
-
-                return getService(serviceId, serviceInterface);
-
-            default:
-
-                Collections.sort(serviceIds);
-
-                throw new RuntimeException(IOCMessages.manyServiceMatches(serviceInterface, serviceIds));
-        }
-    }
-
-    private List<String> findServiceIdsForInterface(Class serviceInterface)
-    {
-        List<String> result = CollectionFactory.newList();
-
-        for (Module module : moduleToServiceDefs.keySet())
-            result.addAll(module.findServiceIdsForInterface(serviceInterface));
-
-        for (Map.Entry<String, Object> entry : builtinServices.entrySet())
-        {
-            if (serviceInterface.isInstance(entry.getValue()))
-                result.add(entry.getKey());
-        }
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    public ServiceLifecycle2 getServiceLifecycle(String scope)
-    {
-        lock.check();
-
-        ServiceLifecycle result = lifecycles.get(scope);
-
-        if (result == null)
-        {
-            ServiceLifecycleSource source = getService("ServiceLifecycleSource", ServiceLifecycleSource.class);
-
-            result = source.get(scope);
-        }
-
-        if (result == null)
-            throw new RuntimeException(IOCMessages.unknownScope(scope));
-
-        return InternalUtils.toServiceLifecycle2(result);
-    }
-
-    public List<ServiceDecorator> findDecoratorsForService(ServiceDef serviceDef)
-    {
-        lock.check();
-
-        assert serviceDef != null;
-
-        Logger logger = getServiceLogger(serviceDef.getServiceId());
-
-        Orderer<ServiceDecorator> orderer = new Orderer<ServiceDecorator>(logger);
-
-        for (Module module : moduleToServiceDefs.keySet())
-        {
-            Set<DecoratorDef> decoratorDefs = module.findMatchingDecoratorDefs(serviceDef);
-
-            if (decoratorDefs.isEmpty())
-                continue;
-
-            ServiceResources resources = new ServiceResourcesImpl(this, module, serviceDef, classFactory, logger);
-
-            for (DecoratorDef decoratorDef : decoratorDefs)
-            {
-                ServiceDecorator decorator = decoratorDef.createDecorator(module, resources);
-
-                orderer.add(decoratorDef.getDecoratorId(), decorator, decoratorDef.getConstraints());
-            }
-        }
-
-        return orderer.getOrdered();
-    }
-
-    public List<ServiceAdvisor> findAdvisorsForService(ServiceDef serviceDef)
-    {
-        lock.check();
-
-        assert serviceDef != null;
-
-        Logger logger = getServiceLogger(serviceDef.getServiceId());
-
-        Orderer<ServiceAdvisor> orderer = new Orderer<ServiceAdvisor>(logger);
-
-        for (Module module : moduleToServiceDefs.keySet())
-        {
-            Set<AdvisorDef> advisorDefs = module.findMatchingServiceAdvisors(serviceDef);
-
-            if (advisorDefs.isEmpty())
-                continue;
-
-            ServiceResources resources = new ServiceResourcesImpl(this, module, serviceDef, classFactory, logger);
-
-            for (AdvisorDef advisorDef : advisorDefs)
-            {
-                ServiceAdvisor advisor = advisorDef.createAdvisor(module, resources);
-
-                orderer.add(advisorDef.getAdvisorId(), advisor, advisorDef.getConstraints());
-            }
-        }
-
-        return orderer.getOrdered();
-    }
-
-    public ClassFab newClass(Class serviceInterface)
-    {
-        lock.check();
-
-        return classFactory.newClass(serviceInterface);
-    }
-
-    public <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator,
-            Module localModule)
-    {
-        lock.check();
-
-        AnnotationProvider effectiveProvider = annotationProvider != null ? annotationProvider
-                : new NullAnnotationProvider();
-
-        // We do a check here for known marker/type combinations, so that you can use a marker
-        // annotation
-        // to inject into a contribution method that contributes to MasterObjectProvider.
-        // We also force a contribution into MasterObjectProvider to accomplish the same thing.
-
-        T result = findServiceByMarkerAndType(objectType, annotationProvider, localModule);
-
-        if (result != null)
-            return result;
-
-        MasterObjectProvider masterProvider = getService(IOCConstants.MASTER_OBJECT_PROVIDER_SERVICE_ID,
-                MasterObjectProvider.class);
-
-        return masterProvider.provide(objectType, effectiveProvider, locator, true);
-    }
-
-    private Collection<ServiceDef2> filterByType(Class<?> objectType, Collection<ServiceDef2> serviceDefs)
-    {
-        Collection<ServiceDef2> result = CollectionFactory.newSet();
-
-        for (ServiceDef2 sd : serviceDefs)
-        {
-            if (objectType.isAssignableFrom(sd.getServiceInterface()))
-            {
-                result.add(sd);
-            }
-        }
-
-        return result;
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T> T findServiceByMarkerAndType(Class<T> objectType, AnnotationProvider provider, Module localModule)
-    {
-        if (provider == null)
-            return null;
-
-        boolean localOnly = localModule != null && provider.getAnnotation(Local.class) != null;
-
-        Set<ServiceDef2> matches = CollectionFactory.newSet();
-
-        matches.addAll(filterByType(objectType, localOnly ? moduleToServiceDefs.get(localModule) : allServiceDefs));
-
-        List<Class> markers = CollectionFactory.newList();
-
-        if (localOnly)
-            markers.add(Local.class);
-
-        for (Class marker : markerToServiceDef.keySet())
-        {
-            if (provider.getAnnotation(marker) == null)
-                continue;
-
-            markers.add(marker);
-
-            matches = intersection(matches, markerToServiceDef.get(marker));
-        }
-
-        // If didn't see @Local or any recognized marker annotation, then don't try to filter that
-        // way.
-        // Continue on, eventually to the MasterObjectProvider service.
-
-        if (markers.isEmpty())
-            return null;
-
-        switch (matches.size())
-        {
-
-            case 1:
-
-                ServiceDef def = matches.iterator().next();
-
-                return getService(def.getServiceId(), objectType);
-
-            case 0:
-
-                // It's no accident that the user put the marker annotation at the injection
-                // point, since it matches a known marker annotation, it better be there for
-                // a reason. So if we don't get a match, we have to assume the user expected
-                // one, and that is an error.
-
-                // This doesn't help when the user places an annotation they *think* is a marker
-                // but isn't really a marker (because no service is marked by the annotation).
-
-                throw new RuntimeException(IOCMessages.noServicesMatchMarker(objectType, markers));
-
-            default:
-                throw new RuntimeException(IOCMessages.manyServicesMatchMarker(objectType, markers, matches));
-        }
-    }
-
-    /**
-     * Filters the set into a new set, containing only elements shared between the set and the
-     * filter collection.
-     * 
-     * @param set
-     *            to be filtered
-     * @param filter
-     *            values to keep from the set
-     * @return a new set containing only the shared values
-     */
-    private static <T> Set<T> intersection(Set<T> set, Collection<T> filter)
-    {
-        if (set.isEmpty())
-            return Collections.emptySet();
-
-        Set<T> result = CollectionFactory.newSet();
-
-        for (T elem : filter)
-        {
-            if (set.contains(elem))
-                result.add(elem);
-        }
-
-        return result;
-    }
-
-    public <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
-    {
-        return getObject(objectType, annotationProvider, this, null);
-    }
-
-    public void addRegistryShutdownListener(RegistryShutdownListener listener)
-    {
-        lock.check();
-
-        registryShutdownHub.addRegistryShutdownListener(listener);
-    }
-
-    public String expandSymbols(String input)
-    {
-        lock.check();
-
-        // Again, a bit of work to avoid instantiating the SymbolSource until absolutely necessary.
-
-        if (!InternalUtils.containsSymbols(input))
-            return input;
-
-        return getSymbolSource().expandSymbols(input);
-    }
-
-    /**
-     * Defers obtaining the symbol source until actually needed.
-     */
-    private synchronized SymbolSource getSymbolSource()
-    {
-        if (symbolSource == null)
-            symbolSource = getService(SYMBOL_SOURCE_SERVICE_ID, SymbolSource.class);
-
-        return symbolSource;
-    }
-
-    public <T> T autobuild(String description, final Class<T> clazz)
-    {
-        return invoke(description, new Invokable<T>()
-        {
-            public T invoke()
-            {
-                return autobuild(clazz);
-            }
-        });
-    }
-
-    public <T> T autobuild(final Class<T> clazz)
-    {
-        assert clazz != null;
-        final Constructor constructor = InternalUtils.findAutobuildConstructor(clazz);
-
-        if (constructor == null)
-            throw new RuntimeException(IOCMessages.noAutobuildConstructor(clazz));
-
-        Map<Class, Object> resourcesMap = CollectionFactory.newMap();
-        resourcesMap.put(OperationTracker.class, RegistryImpl.this);
-
-        final InjectionResources resources = new MapInjectionResources(resourcesMap);
-
-        final Invokable<T> operation = new Invokable<T>()
-        {
-            public T invoke()
-            {
-                InternalUtils.validateConstructorForAutobuild(constructor);
-
-                Object result = invokeConstructor(constructor, resources);
-
-                InternalUtils.injectIntoFields(result, RegistryImpl.this, resources, RegistryImpl.this);
-
-                return clazz.cast(result);
-            }
-        };
-
-        T result = invoke("Autobuilding instance of class " + clazz.getName(), operation);
-
-        InternalUtils.invokePostInjectionMethods(result, this, resources, this);
-
-        return result;
-    }
-
-    public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
-    {
-        return proxy(interfaceClass, implementationClass, this);
-    }
-
-    public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass, ObjectLocator locator)
-    {
-        assert interfaceClass != null;
-        assert implementationClass != null;
-        
-        if (InternalUtils.SERVICE_CLASS_RELOADING_ENABLED && InternalUtils.isLocalFile(implementationClass))
-            return createReloadingProxy(interfaceClass, implementationClass, locator);
-
-        return createNonReloadingProxy(interfaceClass, implementationClass, locator);
-    }
-
-    private <T> T createNonReloadingProxy(Class<T> interfaceClass, final Class<? extends T> implementationClass,
-            final ObjectLocator locator)
-    {
-        final ObjectCreator autobuildCreator = new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return locator.autobuild(implementationClass);
-            }
-        };
-
-        ObjectCreator justInTime = new ObjectCreator()
-        {
-            private Object delegate;
-
-            public synchronized Object createObject()
-            {
-                if (delegate == null)
-                    delegate = autobuildCreator.createObject();
-
-                return delegate;
-            }
-        };
-
-        return classFactory.createProxy(interfaceClass, implementationClass, justInTime,
-                String.format("<Autobuild proxy %s(%s)>", implementationClass.getName(), interfaceClass.getName()));
-    }
-
-    private <T> T createReloadingProxy(Class<T> interfaceClass, final Class<? extends T> implementationClass,
-            ObjectLocator locator)
-    {
-        ReloadableObjectCreator creator = new ReloadableObjectCreator(implementationClass.getClassLoader(),
-                implementationClass.getName(), loggerSource.getLogger(implementationClass), this, locator);
-
-        getService(UpdateListenerHub.class).addUpdateListener(creator);
-
-        return classFactory.createProxy(interfaceClass, implementationClass, creator,
-                String.format("<Autoreload proxy %s(%s)>", implementationClass.getName(), interfaceClass.getName()));
-    }
-
-    public Object provideServiceProxy(String serviceId)
-    {
-        return getService(serviceId, Object.class);
-    }
-
-    public void run(String description, Runnable operation)
-    {
-        operationTracker.run(description, operation);
-    }
-
-    public <T> T invoke(String description, Invokable<T> operation)
-    {
-        return operationTracker.invoke(description, operation);
-    }
-
-    private Object invokeConstructor(final Constructor constructor, final InjectionResources resources)
-    {
-        final String description = classFactory.getConstructorLocation(constructor).toString();
-
-        return invoke("Invoking " + description, new Invokable<Object>()
-        {
-            public Object invoke()
-            {
-                Throwable failure;
-
-                try
-                {
-                    Object[] parameters = InternalUtils.calculateParametersForConstructor(constructor,
-                            RegistryImpl.this, resources, RegistryImpl.this);
-
-                    return constructor.newInstance(parameters);
-                }
-                catch (InvocationTargetException ite)
-                {
-                    failure = ite.getTargetException();
-                }
-                catch (Exception ex)
-                {
-                    failure = ex;
-                }
-
-                throw new RuntimeException(IOCMessages.autobuildConstructorError(description, failure), failure);
-            }
-        });
-    }
-
-    public Set<Class> getMarkerAnnotations()
-    {
-        return markerToServiceDef.keySet();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryWrapper.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryWrapper.java
deleted file mode 100644
index b1ce58f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/RegistryWrapper.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.Registry;
-
-/**
- * A wrapper around {@link InternalRegistry} that exists to expand symbols in a service id before
- * invoking {@link ObjectLocator#getService(Class)}.
- */
-public class RegistryWrapper implements Registry
-{
-    private final InternalRegistry registry;
-
-    public RegistryWrapper(final InternalRegistry registry)
-    {
-        this.registry = registry;
-    }
-
-    public void cleanupThread()
-    {
-        registry.cleanupThread();
-    }
-
-    public void shutdown()
-    {
-        registry.shutdown();
-    }
-
-    public <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
-    {
-        return registry.getObject(objectType, annotationProvider);
-    }
-
-    public <T> T getService(String serviceId, Class<T> serviceInterface)
-    {
-        String expandedServiceId = registry.expandSymbols(serviceId);
-
-        return registry.getService(expandedServiceId, serviceInterface);
-    }
-
-    public <T> T getService(Class<T> serviceInterface)
-    {
-        return registry.getService(serviceInterface);
-    }
-
-    public <T> T autobuild(Class<T> clazz)
-    {
-        return registry.autobuild(clazz);
-    }
-
-    public <T> T autobuild(String description, Class<T> clazz)
-    {
-        return registry.autobuild(description, clazz);
-    }
-
-    public void performRegistryStartup()
-    {
-        registry.performRegistryStartup();
-    }
-
-    public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
-    {
-        return registry.proxy(interfaceClass, implementationClass);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableObjectCreator.java
deleted file mode 100644
index 48c802b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableObjectCreator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.slf4j.Logger;
-
-/**
- * Reloadable object creator for non-service objects.
- */
-public class ReloadableObjectCreator extends AbstractReloadableObjectCreator
-{
-    private final ObjectLocator locator;
-
-    public ReloadableObjectCreator(ClassLoader baseClassLoader, String implementationClassName, Logger logger,
-            OperationTracker tracker, ObjectLocator locator)
-    {
-        super(baseClassLoader, implementationClassName, logger, tracker);
-
-        this.locator = locator;
-    }
-
-    @Override
-    protected Object createInstance(Class clazz)
-    {
-        return locator.autobuild(clazz);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableObjectCreatorSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableObjectCreatorSource.java
deleted file mode 100644
index cde7338..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableObjectCreatorSource.java
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Method;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.services.UpdateListenerHub;
-
-/**
- * Responsible for creating a {@link ReloadableServiceImplementationObjectCreator} for a service implementation.
- */
-public class ReloadableObjectCreatorSource implements ObjectCreatorSource
-{
-    private final ClassFactory classFactory;
-
-    private final Method bindMethod;
-
-    private final Class serviceInterfaceClass;
-
-    private final Class serviceImplementationClass;
-
-    private final boolean eagerLoad;
-
-    public ReloadableObjectCreatorSource(ClassFactory classFactory, Method bindMethod, Class serviceInterfaceClass,
-            Class serviceImplementationClass, boolean eagerLoad)
-    {
-        this.classFactory = classFactory;
-        this.bindMethod = bindMethod;
-        this.serviceInterfaceClass = serviceInterfaceClass;
-        this.serviceImplementationClass = serviceImplementationClass;
-        this.eagerLoad = eagerLoad;
-    }
-
-    public ObjectCreator constructCreator(final ServiceBuilderResources resources)
-    {
-        return new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return createReloadableProxy(resources);
-            }
-        };
-    }
-
-    public String getDescription()
-    {
-        return String.format("Reloadable %s via %s", serviceImplementationClass.getName(), classFactory
-                .getMethodLocation(bindMethod));
-    }
-
-    private Object createReloadableProxy(ServiceBuilderResources resources)
-    {
-        ReloadableServiceImplementationObjectCreator reloadableCreator = new ReloadableServiceImplementationObjectCreator(
-                resources, classFactory.getClassLoader(), serviceImplementationClass.getName());
-
-        resources.getService(UpdateListenerHub.class).addUpdateListener(reloadableCreator);
-
-        if (eagerLoad)
-            reloadableCreator.createObject();
-
-        return classFactory.createProxy(serviceInterfaceClass, serviceImplementationClass, reloadableCreator, getDescription());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableServiceImplementationObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableServiceImplementationObjectCreator.java
deleted file mode 100644
index 31611eb..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ReloadableServiceImplementationObjectCreator.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Constructor;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Returns an {@link ObjectCreator} for lazily instantiating a given implementation class (with dependencies).
- * Once an instance is instantiated, it is cached ... until any underlying .class file changes, at which point
- * the class (and its class dependencies, such as base classes) are reloaded and a new instance instantiated.
- */
-@SuppressWarnings("all")
-public class ReloadableServiceImplementationObjectCreator extends AbstractReloadableObjectCreator
-{
-    private final ServiceBuilderResources resources;
-
-    public ReloadableServiceImplementationObjectCreator(ServiceBuilderResources resources, ClassLoader baseClassLoader,
-            String implementationClassName)
-    {
-        super(baseClassLoader, implementationClassName, resources.getLogger(), resources.getTracker());
-
-        this.resources = resources;
-    }
-
-    protected Object createInstance(Class clazz)
-    {
-        final Constructor constructor = InternalUtils.findAutobuildConstructor(clazz);
-
-        if (constructor == null)
-            throw new RuntimeException(String.format(
-                    "Service implementation class %s does not have a suitable public constructor.", clazz.getName()));
-
-        ObjectCreator constructorServiceCreator = new ConstructorServiceCreator(resources, constructor.toString(),
-                constructor);
-
-        return constructorServiceCreator.createObject();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/SerializationSupport.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/SerializationSupport.java
deleted file mode 100644
index 851205c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/SerializationSupport.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.lang.ref.WeakReference;
-
-/**
- * Serialization support for service proxies.
- */
-class SerializationSupport
-{
-    private static final Logger LOGGER = LoggerFactory.getLogger(SerializationSupport.class);
-
-    // We use a weak reference so that the underlying Registry can be reclaimed by the garbage collector
-    // even if it is not explicitly shut down.
-
-    private static WeakReference<ServiceProxyProvider> providerRef;
-
-    static synchronized void setProvider(ServiceProxyProvider proxyProvider)
-    {
-        ServiceProxyProvider existing = currentProvider();
-
-        if (existing != null) LOGGER.error(IOCMessages.overlappingServiceProxyProviders());
-
-        providerRef = new WeakReference<ServiceProxyProvider>(proxyProvider);
-    }
-
-    // Only invoked from synchronized blocks
-    private static ServiceProxyProvider currentProvider()
-    {
-        return providerRef == null ? null : providerRef.get();
-    }
-
-    static synchronized void clearProvider(ServiceProxyProvider proxyProvider)
-    {
-        ServiceProxyProvider existing = currentProvider();
-
-        // The registry does a setProvider() at startup, and we want to make sure that we're the only Registry, that
-        // there hasn't been another setProvider() by another Registry.
-
-        if (existing != proxyProvider)
-        {
-            LOGGER.error(IOCMessages.unexpectedServiceProxyProvider());
-            return;
-        }
-
-        // Good. It's all the expected simple case, without duelling registries. Kill the reference
-        // to the registry.
-
-        providerRef = null;
-    }
-
-    static synchronized Object readResolve(String serviceId)
-    {
-        ServiceProxyProvider provider = currentProvider();
-
-        if (provider == null) throw new RuntimeException(IOCMessages.noProxyProvider(serviceId));
-
-        return provider.provideServiceProxy(serviceId);
-    }
-
-    static ServiceProxyToken createToken(String serviceId)
-    {
-        return new ServiceProxyToken(serviceId);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceActivityTracker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceActivityTracker.java
deleted file mode 100644
index 6ea3730..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceActivityTracker.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.ioc.services.Status;
-
-/**
- * Used to update the status of services defined by the {@link ServiceActivityScoreboard}.
- */
-public interface ServiceActivityTracker
-{
-
-    /**
-     * Defines a service in the tracker with an initial status.
-     *
-     * @param serviceDef    the service being defined
-     * @param initialStatus typically {@link Status#BUILTIN} or {@link Status#DEFINED}
-     */
-    void define(ServiceDef serviceDef, Status initialStatus);
-
-    /**
-     * Updates the status for the service.
-     *
-     * @param serviceId identifies the service, which must be previously defined
-     * @param status    the new status value
-     */
-    void setStatus(String serviceId, Status status);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceActivityTrackerImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceActivityTrackerImpl.java
deleted file mode 100644
index 4aea702..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceActivityTrackerImpl.java
+++ /dev/null
@@ -1,112 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ServiceActivity;
-import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.ioc.services.Status;
-
-import java.util.List;
-import java.util.Map;
-import java.util.TreeMap;
-
-public class ServiceActivityTrackerImpl implements ServiceActivityScoreboard,
-        ServiceActivityTracker
-{
-    public static class MutableServiceActivity implements ServiceActivity
-    {
-        private final ServiceDef serviceDef;
-
-        private Status status;
-
-        public MutableServiceActivity(ServiceDef serviceDef, Status status)
-        {
-            this.serviceDef = serviceDef;
-            this.status = status;
-        }
-
-        public String getServiceId()
-        {
-            return serviceDef.getServiceId();
-        }
-
-        public Class getServiceInterface()
-        {
-            return serviceDef.getServiceInterface();
-        }
-
-        public String getScope()
-        {
-            return serviceDef.getServiceScope();
-        }
-
-        // Mutable properties must be synchronized
-
-        public synchronized Status getStatus()
-        {
-            return status;
-        }
-
-        synchronized void setStatus(Status status)
-        {
-            this.status = status;
-        }
-    }
-
-    /**
-     * Tree map keeps everything in order by key (serviceId).
-     */
-    private final Map<String, MutableServiceActivity> serviceIdToServiceStatus = new TreeMap<String, MutableServiceActivity>();
-
-    public synchronized List<ServiceActivity> getServiceActivity()
-    {
-        // Need to wrap the values in a new list because
-        // a) we don't want people arbitrarily changing the internal state of
-        // _serviceIdtoServiceStatus
-        // b) values() is Collection and we want to return List
-
-        // Note: ugly code here to keep Sun compiler happy.
-
-        List<ServiceActivity> result = CollectionFactory.newList();
-
-        result.addAll(serviceIdToServiceStatus.values());
-
-        return result;
-    }
-
-    void startup()
-    {
-        // Does nothing, first pass does not use a worker thread
-    }
-
-    void shutdown()
-    {
-        // Does nothing, first pass does not use a worker thread
-    }
-
-    public synchronized void define(ServiceDef serviceDef, Status initialStatus)
-    {
-        serviceIdToServiceStatus.put(serviceDef.getServiceId(), new MutableServiceActivity(
-                serviceDef, initialStatus));
-    }
-
-    public synchronized void setStatus(String serviceId, Status status)
-    {
-        serviceIdToServiceStatus.get(serviceId).setStatus(status);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceAdvisorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceAdvisorImpl.java
deleted file mode 100644
index 74ad8e5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceAdvisorImpl.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ServiceAdvisor;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.MapInjectionResources;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-
-public class ServiceAdvisorImpl extends AbstractMethodInvokingInstrumenter implements ServiceAdvisor
-{
-    public ServiceAdvisorImpl(ModuleBuilderSource moduleSource, Method method, ServiceResources resources,
-                              ClassFactory classFactory)
-    {
-        super(moduleSource, method, resources, classFactory);
-    }
-
-    /**
-     * Invokes the configured method, passing the builder. The method will always take, as a parameter, a
-     * MethodAdvisor.
-     */
-    public void advise(MethodAdviceReceiver methodAdviceReceiver)
-    {
-        Map<Class, Object> resources = CollectionFactory.newMap(this.resourcesDefaults);
-
-        resources.put(MethodAdviceReceiver.class, methodAdviceReceiver);
-
-        InjectionResources injectionResources = new MapInjectionResources(resources);
-
-        // By design, advise methods return void, so we know that the return value is null.
-
-        invoke(injectionResources);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java
deleted file mode 100644
index da82c09..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBinderImpl.java
+++ /dev/null
@@ -1,336 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.ServiceBindingOptions;
-import org.apache.tapestry5.ioc.ServiceBuilder;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.annotations.ServiceId;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-@SuppressWarnings("all")
-public class ServiceBinderImpl implements ServiceBinder, ServiceBindingOptions
-{
-    private final OneShotLock lock = new OneShotLock();
-
-    private final Method bindMethod;
-
-    private final ServiceDefAccumulator accumulator;
-
-    private final ClassFactory classFactory;
-
-    private final Set<Class> defaultMarkers;
-
-    private final boolean moduleDefaultPreventDecoration;
-
-    public ServiceBinderImpl(ServiceDefAccumulator accumulator, Method bindMethod, ClassFactory classFactory,
-            Set<Class> defaultMarkers, boolean moduleDefaultPreventDecoration)
-    {
-        this.accumulator = accumulator;
-        this.bindMethod = bindMethod;
-        this.classFactory = classFactory;
-        this.defaultMarkers = defaultMarkers;
-        this.moduleDefaultPreventDecoration = moduleDefaultPreventDecoration;
-
-        clear();
-    }
-
-    private String serviceId;
-
-    private Class serviceInterface;
-
-    private Class serviceImplementation;
-
-    private final Set<Class> markers = CollectionFactory.newSet();
-
-    private ObjectCreatorSource source;
-
-    private boolean eagerLoad;
-
-    private String scope;
-
-    private boolean preventDecoration;
-
-    private boolean preventReloading;
-
-    public void finish()
-    {
-        lock.lock();
-
-        flush();
-    }
-
-    protected void flush()
-    {
-        if (serviceInterface == null)
-            return;
-
-        // source will be null when the implementation class is provided; non-null when using
-        // a ServiceBuilder callback
-
-        if (source == null)
-            source = createObjectCreatorSourceFromImplementationClass();
-
-        // Combine service-specific markers with those inherited form the module.
-        Set<Class> markers = CollectionFactory.newSet(defaultMarkers);
-        markers.addAll(this.markers);
-
-        ServiceDef serviceDef = new ServiceDefImpl(serviceInterface, serviceImplementation, serviceId, markers, scope, eagerLoad,
-                preventDecoration, source);
-
-        accumulator.addServiceDef(serviceDef);
-
-        clear();
-    }
-
-    private void clear()
-    {
-        serviceId = null;
-        serviceInterface = null;
-        serviceImplementation = null;
-        source = null;
-        this.markers.clear();
-        eagerLoad = false;
-        scope = null;
-        preventDecoration = moduleDefaultPreventDecoration;
-        preventReloading = false;
-    }
-
-    private ObjectCreatorSource createObjectCreatorSourceFromImplementationClass()
-    {
-        if (InternalUtils.SERVICE_CLASS_RELOADING_ENABLED && !preventReloading && isProxiable() && reloadableScope() && InternalUtils.isLocalFile(serviceImplementation))
-            return createReloadableConstructorBasedObjectCreatorSource();
-
-        return createStandardConstructorBasedObjectCreatorSource();
-    }
-
-    private boolean isProxiable()
-    {
-        return serviceInterface.isInterface();
-    }
-
-    private boolean reloadableScope()
-    {
-        return scope.equalsIgnoreCase(ScopeConstants.DEFAULT);
-    }
-
-    private ObjectCreatorSource createStandardConstructorBasedObjectCreatorSource()
-    {
-        final Constructor constructor = InternalUtils.findAutobuildConstructor(serviceImplementation);
-
-        if (constructor == null)
-            throw new RuntimeException(IOCMessages.noConstructor(serviceImplementation, serviceId));
-
-        return new ObjectCreatorSource()
-        {
-            public ObjectCreator constructCreator(ServiceBuilderResources resources)
-            {
-                return new ConstructorServiceCreator(resources, getDescription(), constructor);
-            }
-
-            public String getDescription()
-            {
-                return String.format("%s via %s", classFactory.getConstructorLocation(constructor), classFactory
-                        .getMethodLocation(bindMethod));
-            }
-        };
-    }
-
-    private ObjectCreatorSource createReloadableConstructorBasedObjectCreatorSource()
-    {
-        return new ReloadableObjectCreatorSource(classFactory, bindMethod, serviceInterface, serviceImplementation,
-                eagerLoad);
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> ServiceBindingOptions bind(Class<T> serviceClass)
-    {
-        if (serviceClass.isInterface())
-        {
-            try
-            {
-                String expectedImplName = serviceClass.getName() + "Impl";
-
-                ClassLoader classLoader = classFactory.getClassLoader();
-
-                Class<T> implementationClass = (Class<T>) classLoader.loadClass(expectedImplName);
-
-                if (!implementationClass.isInterface() && serviceClass.isAssignableFrom(implementationClass)) { return bind(
-                        serviceClass, implementationClass); }
-                throw new RuntimeException(IOCMessages.noServiceMatchesType(serviceClass));
-            }
-            catch (ClassNotFoundException ex)
-            {
-                throw new RuntimeException(IOCMessages.noConventionServiceImplementationFound(serviceClass));
-            }
-        }
-
-        return bind(serviceClass, serviceClass);
-    }
-
-    public <T> ServiceBindingOptions bind(Class<T> serviceInterface, final ServiceBuilder<T> builder)
-    {
-        assert serviceInterface != null;
-        assert builder != null;
-        lock.check();
-
-        flush();
-
-        this.serviceInterface = serviceInterface;
-        this.scope = ScopeConstants.DEFAULT;
-
-        serviceId = serviceInterface.getSimpleName();
-
-        this.source = new ObjectCreatorSource()
-        {
-            public ObjectCreator constructCreator(final ServiceBuilderResources resources)
-            {
-                return new ObjectCreator()
-                {
-                    public Object createObject()
-                    {
-                        return builder.buildService(resources);
-                    }
-                };
-            }
-
-            public String getDescription()
-            {
-                return classFactory.getMethodLocation(bindMethod).toString();
-            }
-        };
-
-        return this;
-    }
-
-    public <T> ServiceBindingOptions bind(Class<T> serviceInterface, Class<? extends T> serviceImplementation)
-    {
-        assert serviceInterface != null;
-        assert serviceImplementation != null;
-        lock.check();
-
-        flush();
-
-        this.serviceInterface = serviceInterface;
-
-        this.serviceImplementation = serviceImplementation;
-
-        // Set defaults for the other properties.
-
-        eagerLoad = serviceImplementation.getAnnotation(EagerLoad.class) != null;
-
-        ServiceId serviceIdAnnotation = serviceImplementation.getAnnotation(ServiceId.class);
-
-        if (serviceIdAnnotation != null)
-        {
-            serviceId = serviceIdAnnotation.value();
-        }
-        else
-        {
-            serviceId = serviceInterface.getSimpleName();
-        }
-
-        Scope scope = serviceImplementation.getAnnotation(Scope.class);
-
-        this.scope = scope != null ? scope.value() : ScopeConstants.DEFAULT;
-
-        Marker marker = serviceImplementation.getAnnotation(Marker.class);
-
-        if (marker != null)
-        {
-            InternalUtils.validateMarkerAnnotations(marker.value());
-            markers.addAll(Arrays.asList(marker.value()));
-        }
-
-        preventDecoration |= serviceImplementation.getAnnotation(PreventServiceDecoration.class) != null;
-
-        return this;
-    }
-
-    public ServiceBindingOptions eagerLoad()
-    {
-        lock.check();
-
-        eagerLoad = true;
-
-        return this;
-    }
-
-    public ServiceBindingOptions preventDecoration()
-    {
-        lock.check();
-
-        preventDecoration = true;
-
-        return this;
-    }
-
-    public ServiceBindingOptions preventReloading()
-    {
-        lock.check();
-
-        preventReloading = true;
-
-        return this;
-    }
-
-    public ServiceBindingOptions withId(String id)
-    {
-        assert InternalUtils.isNonBlank(id);
-        lock.check();
-
-        serviceId = id;
-
-        return this;
-    }
-
-    public ServiceBindingOptions scope(String scope)
-    {
-        assert InternalUtils.isNonBlank(scope);
-        lock.check();
-
-        this.scope = scope;
-
-        return this;
-    }
-
-    public <T extends Annotation> ServiceBindingOptions withMarker(Class<T>... marker)
-    {
-        lock.check();
-
-        InternalUtils.validateMarkerAnnotations(marker);
-
-        markers.addAll(Arrays.asList(marker));
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvoker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvoker.java
deleted file mode 100644
index 3d072e2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvoker.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-
-/**
- * Basic implementation of {@link org.apache.tapestry5.ioc.ObjectCreator} that handles invoking a method on the module
- * builder, and figures out the correct parameters to pass into the annotated method.
- */
-public class ServiceBuilderMethodInvoker extends AbstractServiceCreator
-{
-    private final Method builderMethod;
-
-    public ServiceBuilderMethodInvoker(ServiceBuilderResources resources,
-                                       String creatorDescription, Method method)
-    {
-        super(resources, creatorDescription);
-
-        builderMethod = method;
-    }
-
-    /**
-     * Invoked from the proxy to create the actual service implementation.
-     */
-    public Object createObject()
-    {
-        // Defer getting (and possibly instantitating) the module instance until the last possible
-        // moment. If the method is static, there's no need to even get the builder.
-
-        Object moduleInstance = InternalUtils.isStatic(builderMethod)
-                                ? null
-                                : resources.getModuleBuilder();
-
-        Object result = null;
-        Throwable failure = null;
-
-        try
-        {
-            Object[] parameters = InternalUtils.calculateParametersForMethod(
-                    builderMethod,
-                    resources,
-                    createInjectionResources(), resources.getTracker());
-
-            if (logger.isDebugEnabled())
-                logger.debug(IOCMessages.invokingMethod(creatorDescription));
-
-            result = builderMethod.invoke(moduleInstance, parameters);
-        }
-        catch (InvocationTargetException ite)
-        {
-            failure = ite.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            failure = ex;
-        }
-
-        if (failure != null)
-            throw new RuntimeException(IOCMessages.builderMethodError(
-                    creatorDescription,
-                    serviceId,
-                    failure), failure);
-
-        if (result == null)
-            throw new RuntimeException(IOCMessages.builderMethodReturnedNull(
-                    creatorDescription,
-                    serviceId));
-
-        return result;
-    }
-
-    @Override
-    public String toString()
-    {
-        return creatorDescription;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorImpl.java
deleted file mode 100644
index 5f6b46d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorImpl.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InjectionResources;
-import org.apache.tapestry5.ioc.internal.util.MapInjectionResources;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-import java.lang.reflect.Method;
-import java.util.Map;
-
-/**
- * A wrapper around a decorator method.
- */
-public class ServiceDecoratorImpl extends AbstractMethodInvokingInstrumenter implements ServiceDecorator
-{
-
-    public ServiceDecoratorImpl(Method method, ModuleBuilderSource moduleSource,
-                                ServiceResources resources, ClassFactory classFactory)
-    {
-        super(moduleSource, method, resources, classFactory);
-    }
-
-    public Object createInterceptor(Object delegate)
-    {
-        // Create a copy of the parameters map so that Object.class points to the delegate instance.
-
-        Map<Class, Object> resources = CollectionFactory.newMap(this.resourcesDefaults);
-
-        resources.put(Object.class, delegate);
-        resources.put(serviceInterface, delegate);
-
-        InjectionResources injectionResources = new MapInjectionResources(resources);
-
-        Object result = invoke(injectionResources);
-
-        if (result != null && !serviceInterface.isInstance(result))
-        {
-            throw new RuntimeException(IOCMessages.decoratorReturnedWrongType(
-                    method,
-                    serviceId,
-                    result,
-                    serviceInterface));
-        }
-
-        return result;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDefAccumulator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDefAccumulator.java
deleted file mode 100644
index 0167ec7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDefAccumulator.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-/**
- * Simple interface used when invoking a bind() method on a module class.
- *
- * @see org.apache.tapestry5.ioc.internal.ServiceBinderImpl
- */
-public interface ServiceDefAccumulator
-{
-    void addServiceDef(ServiceDef serviceDef);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDefImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDefImpl.java
deleted file mode 100644
index a3050c5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceDefImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-
-public class ServiceDefImpl implements InternalServiceDef
-{
-    private final Class serviceInterface;
-    
-    private final Class serviceImplementation;
-
-    private final String serviceId;
-
-    private final String scope;
-
-    private final boolean eagerLoad;
-
-    private final ObjectCreatorSource source;
-
-    private final Set<Class> markers;
-
-    private final boolean preventDecoration;
-
-    /**
-     * @param serviceInterface  interface implemented by the service (or the service implementation class, for
-     *                          non-proxied services)
-     * @param serviceImplementation service implementation class if exists                
-     * @param serviceId         unique id for the service
-     * @param markers           set of marker annotation classes (will be retained not copied)
-     * @param scope             scope of the service (i.e., {@link org.apache.tapestry5.ioc.ScopeConstants#DEFAULT}).
-     * @param eagerLoad         if true, the service is realized at startup, rather than on-demand
-     * @param preventDecoration if true, the service may not be decorated
-     * @param source            used to create the service implementation when needed
-     */
-    ServiceDefImpl(Class serviceInterface, Class serviceImplementation, String serviceId, Set<Class> markers, String scope,
-                   boolean eagerLoad, boolean preventDecoration, ObjectCreatorSource source)
-    {
-        this.serviceInterface = serviceInterface;
-        this.serviceImplementation = serviceImplementation;
-        this.serviceId = serviceId;
-        this.scope = scope;
-        this.eagerLoad = eagerLoad;
-        this.preventDecoration = preventDecoration;
-        this.source = source;
-
-        this.markers = markers;
-    }
-
-    @Override
-    public String toString()
-    {
-        return source.getDescription();
-    }
-
-    public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
-    {
-        return source.constructCreator(resources);
-    }
-
-    public String getServiceId()
-    {
-        return serviceId;
-    }
-
-    public Class getServiceInterface()
-    {
-        return serviceInterface;
-    }
-
-    public String getServiceScope()
-    {
-        return scope;
-    }
-
-    public boolean isEagerLoad()
-    {
-        return eagerLoad;
-    }
-
-    public Set<Class> getMarkers()
-    {
-        return markers;
-    }
-
-    public boolean isPreventDecoration()
-    {
-        return preventDecoration;
-    }
-
-    public Class getImplementationClass()
-    {
-        return serviceImplementation;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
deleted file mode 100644
index 83eec6b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used in concert with {@link org.apache.tapestry5.ioc.internal.SerializationSupport} to convert service tokens back
- * into service proxies.
- */
-public interface ServiceProxyProvider
-{
-    /**
-     * Look up the service and return it's proxy.
-     *
-     * @param serviceId the id of the service to obtain
-     * @return the service proxy
-     * @throws RuntimeException if the service does not exist or does not have a proxy
-     */
-    Object provideServiceProxy(String serviceId);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyToken.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyToken.java
deleted file mode 100644
index af81421..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceProxyToken.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.io.InvalidObjectException;
-import java.io.ObjectStreamException;
-import java.io.Serializable;
-
-/**
- * Token that replaces a service proxy when the proxy is serialized.
- */
-class ServiceProxyToken implements Serializable
-{
-    private final String serviceId;
-
-    ServiceProxyToken(String serviceId)
-    {
-        this.serviceId = serviceId;
-    }
-
-    Object readResolve() throws ObjectStreamException
-    {
-        try
-        {
-            return SerializationSupport.readResolve(serviceId);
-        }
-        catch (Exception ex)
-        {
-            ObjectStreamException ose = new InvalidObjectException(ex.getMessage());
-            ose.initCause(ex);
-
-            throw ose;
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
deleted file mode 100644
index 826dd45..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ServiceResourcesImpl.java
+++ /dev/null
@@ -1,182 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Constructor;
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.slf4j.Logger;
-
-/**
- * Implementation of {@link org.apache.tapestry5.ioc.ServiceBuilderResources}. We just have one
- * implementation that
- * fills the purposes of methods that need a {@link org.apache.tapestry5.ioc.ServiceResources} (which includes service
- * decorator methods) as well as methods that need a {@link org.apache.tapestry5.ioc.ServiceBuilderResources} (which is
- * just service builder methods). Since it is most commonly used for the former, we'll just leave
- * the name as
- * ServiceResourcesImpl.
- */
-@SuppressWarnings("all")
-public class ServiceResourcesImpl extends ObjectLocatorImpl implements ServiceBuilderResources
-{
-    private final InternalRegistry registry;
-
-    private final Module module;
-
-    private final InternalServiceDef serviceDef;
-
-    private final Logger logger;
-
-    private final ClassFactory classFactory;
-
-    public ServiceResourcesImpl(InternalRegistry registry, Module module, ServiceDef serviceDef,
-            ClassFactory classFactory, Logger logger)
-    {
-        super(registry, module);
-
-        this.registry = registry;
-        this.module = module;
-        this.serviceDef = InternalUtils.toInternalServiceDef(serviceDef);
-        this.classFactory = classFactory;
-        this.logger = logger;
-    }
-
-    public String getServiceId()
-    {
-        return serviceDef.getServiceId();
-    }
-
-    public Class getServiceInterface()
-    {
-        return serviceDef.getServiceInterface();
-    }
-
-    public Logger getLogger()
-    {
-        return logger;
-    }
-
-    public <T> Collection<T> getUnorderedConfiguration(final Class<T> valueType)
-    {
-        Collection<T> result = registry.invoke(
-                "Collecting unordered configuration for service " + serviceDef.getServiceId(),
-                new Invokable<Collection<T>>()
-                {
-                    public Collection<T> invoke()
-                    {
-                        return registry.getUnorderedConfiguration(serviceDef, valueType);
-                    }
-                });
-
-        logConfiguration(result);
-
-        return result;
-    }
-
-    private void logConfiguration(Collection configuration)
-    {
-        if (logger.isDebugEnabled())
-            logger.debug(IOCMessages.constructedConfiguration(configuration));
-    }
-
-    public <T> List<T> getOrderedConfiguration(final Class<T> valueType)
-    {
-        List<T> result = registry.invoke("Collecting ordered configuration for service " + serviceDef.getServiceId(),
-                new Invokable<List<T>>()
-                {
-                    public List<T> invoke()
-                    {
-                        return registry.getOrderedConfiguration(serviceDef, valueType);
-                    }
-                });
-
-        logConfiguration(result);
-
-        return result;
-    }
-
-    public <K, V> Map<K, V> getMappedConfiguration(final Class<K> keyType, final Class<V> valueType)
-    {
-        Map<K, V> result = registry.invoke("Collecting mapped configuration for service " + serviceDef.getServiceId(),
-                new Invokable<Map<K, V>>()
-                {
-                    public Map<K, V> invoke()
-                    {
-                        return registry.getMappedConfiguration(serviceDef, keyType, valueType);
-                    }
-                });
-
-        if (logger.isDebugEnabled())
-            logger.debug(IOCMessages.constructedConfiguration(result));
-
-        return result;
-    }
-
-    public Object getModuleBuilder()
-    {
-        return module.getModuleBuilder();
-    }
-
-    @Override
-    public <T> T autobuild(String description, final Class<T> clazz)
-    {
-        assert clazz != null;
-
-        return registry.invoke(description, new Invokable<T>()
-        {
-            public T invoke()
-            {
-                Constructor constructor = InternalUtils.findAutobuildConstructor(clazz);
-
-                if (constructor == null)
-                    throw new RuntimeException(IOCMessages.noAutobuildConstructor(clazz));
-
-                String description = classFactory.getConstructorLocation(constructor).toString();
-
-                ObjectCreator creator = new ConstructorServiceCreator(ServiceResourcesImpl.this, description,
-                        constructor);
-
-                return clazz.cast(creator.createObject());
-            }
-        });
-    }
-
-    @Override
-    public <T> T autobuild(final Class<T> clazz)
-    {
-        assert clazz != null;
-
-        return autobuild("Autobuilding instance of class " + clazz.getName(), clazz);
-    }
-
-    public OperationTracker getTracker()
-    {
-        return registry;
-    }
-
-    public Class getImplementationClass()
-    {
-        return serviceDef.getImplementationClass();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/SingletonServiceLifecycle.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/SingletonServiceLifecycle.java
deleted file mode 100644
index 3a838cf..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/SingletonServiceLifecycle.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceLifecycle2;
-import org.apache.tapestry5.ioc.ServiceResources;
-
-/**
- * The basic implementation of a service lifecycle, which simply uses the {@link org.apache.tapestry5.ioc.ObjectCreator}
- * to create an instance of the service when asked.
- */
-public class SingletonServiceLifecycle implements ServiceLifecycle2
-{
-    public Object createService(ServiceResources resources, ObjectCreator creator)
-    {
-        return creator.createObject();
-    }
-
-    public boolean isSingleton()
-    {
-        return true;
-    }
-
-    public boolean requiresProxy()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingConfigurationWrapper.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingConfigurationWrapper.java
deleted file mode 100644
index c7a08b9..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingConfigurationWrapper.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.Collection;
-
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.ObjectLocator;
-
-/**
- * Wraps a {@link java.util.Collection} as a {@link org.apache.tapestry5.ioc.Configuration} and perform validation that
- * collected value are of the correct type.
- */
-public class ValidatingConfigurationWrapper<T> extends AbstractConfigurationImpl<T> implements Configuration<T>
-{
-    private final String serviceId;
-
-    private final Class<T> expectedType;
-
-    private final Collection<T> collection;
-
-    public ValidatingConfigurationWrapper(Class<T> expectedType, ObjectLocator locator, Collection<T> collection,
-            String serviceId)
-    {
-        super(expectedType, locator);
-
-        this.collection = collection;
-        this.serviceId = serviceId;
-        this.expectedType = expectedType;
-    }
-
-    public void add(T object)
-    {
-        if (object == null)
-            throw new NullPointerException(IOCMessages.contributionWasNull(serviceId));
-
-        // Sure, we say it is type T ... but is it really?
-
-        if (!expectedType.isInstance(object))
-            throw new IllegalArgumentException(IOCMessages.contributionWrongValueType(serviceId, object.getClass(),
-                    expectedType));
-
-        collection.add(object);
-    }
-
-    public void addInstance(Class<? extends T> clazz)
-    {
-        add(instantiate(clazz));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingMappedConfigurationWrapper.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingMappedConfigurationWrapper.java
deleted file mode 100644
index a598db5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingMappedConfigurationWrapper.java
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-
-/**
- * A wrapper around a Map that provides the {@link org.apache.tapestry5.ioc.MappedConfiguration} interface, and provides
- * two forms of validation for mapped configurations:
- * <ul>
- * <li>If either key or value is null, then a warning is logged</li>
- * <li>If the key has previously been stored (by some other {@link org.apache.tapestry5.ioc.def.ContributionDef}, then a
- * warning is logged</li>
- * </ul>
- * <p/>
- * When a warning is logged, the key/value pair is not added to the delegate.
- * <p/>
- * Handles instantiation of instances.
- * 
- * @param <K>
- * @param <V>
- */
-public class ValidatingMappedConfigurationWrapper<K, V> extends AbstractConfigurationImpl<V> implements
-        MappedConfiguration<K, V>
-{
-    private final Map<K, V> map;
-
-    private final Map<K, MappedConfigurationOverride<K, V>> overrides;
-
-    private final String serviceId;
-
-    private final ContributionDef contributionDef;
-
-    private final Class<K> expectedKeyType;
-
-    private final Class<V> expectedValueType;
-
-    private final Map<K, ContributionDef> keyToContributor;
-
-    public ValidatingMappedConfigurationWrapper(Class<V> expectedValueType, ObjectLocator locator, Map<K, V> map,
-            Map<K, MappedConfigurationOverride<K, V>> overrides, String serviceId, ContributionDef contributionDef,
-            Class<K> expectedKeyType, Map<K, ContributionDef> keyToContributor)
-    {
-        super(expectedValueType, locator);
-
-        this.map = map;
-        this.overrides = overrides;
-        this.serviceId = serviceId;
-        this.contributionDef = contributionDef;
-        this.expectedKeyType = expectedKeyType;
-        this.expectedValueType = expectedValueType;
-        this.keyToContributor = keyToContributor;
-    }
-
-    public void add(K key, V value)
-    {
-        validateKey(key);
-
-        if (value == null)
-            throw new NullPointerException(IOCMessages.contributionWasNull(serviceId));
-
-        validateValue(value);
-
-        ContributionDef existing = keyToContributor.get(key);
-
-        if (existing != null)
-            throw new IllegalArgumentException(IOCMessages.contributionDuplicateKey(serviceId, existing));
-
-        map.put(key, value);
-
-        // Remember that this key is provided by this contribution, when looking
-        // for future conflicts.
-
-        keyToContributor.put(key, contributionDef);
-    }
-
-    private void validateValue(V value)
-    {
-        if (!expectedValueType.isInstance(value))
-            throw new IllegalArgumentException(IOCMessages.contributionWrongValueType(serviceId, value.getClass(),
-                    expectedValueType));
-    }
-
-    private void validateKey(K key)
-    {
-        if (key == null)
-            throw new NullPointerException(IOCMessages.contributionKeyWasNull(serviceId));
-
-        if (!expectedKeyType.isInstance(key))
-            throw new IllegalArgumentException(IOCMessages.contributionWrongKeyType(serviceId, key.getClass(),
-                    expectedKeyType));
-    }
-
-    public void addInstance(K key, Class<? extends V> clazz)
-    {
-        add(key, instantiate(clazz));
-    }
-
-    public void override(K key, V value)
-    {
-        validateKey(key);
-
-        if (value != null)
-            validateValue(value);
-
-        MappedConfigurationOverride<K, V> existing = overrides.get(key);
-
-        if (existing != null)
-            throw new IllegalArgumentException(String.format(
-                    "Contribution key %s has already been overridden (by %s).", key, existing.getContribDef()));
-
-        overrides.put(key, new MappedConfigurationOverride<K, V>(contributionDef, map, key, value));
-    }
-
-    public void overrideInstance(K key, Class<? extends V> clazz)
-    {
-        override(key, instantiate(clazz));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingOrderedConfigurationWrapper.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingOrderedConfigurationWrapper.java
deleted file mode 100644
index adc5cef..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/ValidatingOrderedConfigurationWrapper.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.Orderer;
-
-/**
- * Wraps a {@link java.util.List} as a {@link org.apache.tapestry5.ioc.OrderedConfiguration}, implementing validation of
- * values provided to an {@link org.apache.tapestry5.ioc.OrderedConfiguration}.
- * 
- * @param <T>
- */
-public class ValidatingOrderedConfigurationWrapper<T> extends AbstractConfigurationImpl<T> implements
-        OrderedConfiguration<T>
-{
-    private final Orderer<T> orderer;
-
-    private final String serviceId;
-
-    private final Class<T> expectedType;
-
-    private final Map<String, OrderedConfigurationOverride<T>> overrides;
-
-    private final ContributionDef contribDef;
-
-    public ValidatingOrderedConfigurationWrapper(Class<T> expectedType, ObjectLocator locator, Orderer<T> orderer,
-            Map<String, OrderedConfigurationOverride<T>> overrides, ContributionDef contribDef, String serviceId)
-    {
-        super(expectedType, locator);
-
-        this.orderer = orderer;
-        this.overrides = overrides;
-        this.contribDef = contribDef;
-        this.serviceId = serviceId;
-        this.expectedType = expectedType;
-    }
-
-    public void add(String id, T object, String... constraints)
-    {
-        checkValid(object);
-
-        orderer.add(id, object, constraints);
-    }
-
-    public void override(String id, T object, String... constraints)
-    {
-        assert InternalUtils.isNonBlank(id);
-        checkValid(object);
-
-        OrderedConfigurationOverride<T> existing = overrides.get(id);
-
-        if (existing != null)
-            throw new IllegalArgumentException(String.format("Contribution '%s' has already been overridden (by %s).",
-                    id, existing.getContribDef()));
-
-        overrides.put(id, new OrderedConfigurationOverride<T>(orderer, id, object, constraints, contribDef));
-    }
-
-    public void addInstance(String id, Class<? extends T> clazz, String... constraints)
-    {
-        add(id, instantiate(clazz), constraints);
-    }
-
-    public void overrideInstance(String id, Class<? extends T> clazz, String... constraints)
-    {
-        override(id, instantiate(clazz), constraints);
-    }
-
-    private void checkValid(T object)
-    {
-        if (object == null || expectedType.isInstance(object))
-            return;
-
-        throw new IllegalArgumentException(IOCMessages.contributionWrongValueType(serviceId, object.getClass(),
-                expectedType));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractFab.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractFab.java
deleted file mode 100644
index 846e477..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractFab.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2005, 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import javassist.CtClass;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.slf4j.Logger;
-
-/**
- * Base class for {@link org.apache.tapestry5.ioc.internal.services.ClassFabImpl}. This code is a fork from HiveMind; it
- * is kept seperate from ClassFabImpl in case we want to re-introduce the idea of an InterfaceFab.
- */
-public class AbstractFab
-{
-    protected final OneShotLock lock = new OneShotLock();
-
-    private final CtClass ctClass;
-
-    private final CtClassSource source;
-
-    private final Logger logger;
-
-    public AbstractFab(CtClassSource source, CtClass ctClass, Logger logger)
-    {
-        this.ctClass = ctClass;
-        this.source = source;
-        this.logger = logger;
-    }
-
-    public void addInterface(Class interfaceClass)
-    {
-        lock.check();
-
-        CtClass ctInterfaceClass = source.toCtClass(interfaceClass);
-
-        try
-        {
-            for (CtClass existing : ctClass.getInterfaces())
-                if (existing == ctInterfaceClass) return;
-        }
-        catch (Exception ex)
-        {
-            // Don't think this code is actually reachable.
-        }
-
-        ctClass.addInterface(ctInterfaceClass);
-    }
-
-    protected CtClass[] toCtClasses(Class[] inputClasses)
-    {
-        if (inputClasses == null || inputClasses.length == 0) return null;
-
-        int count = inputClasses.length;
-        CtClass[] result = new CtClass[count];
-
-        for (int i = 0; i < count; i++)
-        {
-            CtClass ctClass = toCtClass(inputClasses[i]);
-
-            result[i] = ctClass;
-        }
-
-        return result;
-    }
-
-    protected CtClass toCtClass(Class inputClass)
-    {
-        return source.toCtClass(inputClass);
-    }
-
-    public Class createClass()
-    {
-        lock.lock();
-
-        if (logger.isDebugEnabled()) logger.debug(String.format("Creating class from %s", this));
-
-        return source.createClass(ctClass);
-    }
-
-    protected CtClass getCtClass()
-    {
-        return ctClass;
-    }
-
-    protected CtClassSource getSource()
-    {
-        return source;
-    }
-    
-    protected Logger getLogger()
-    {
-        return logger;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java
deleted file mode 100644
index 59b0d7b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocation.java
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.Method;
-
-import org.apache.tapestry5.ioc.Invocation;
-
-/**
- * Base class for {@link org.apache.tapestry5.ioc.Invocation}, which is extended with a dynamically generated class
- * generated for each individual class and method.
- */
-@SuppressWarnings("all")
-public abstract class AbstractInvocation implements Invocation
-{
-    private final MethodInfo methodInfo;
-
-    private final Method method;
-
-    private Throwable thrown;
-
-    private Object result;
-
-    private int adviceIndex = 0;
-
-    protected AbstractInvocation(MethodInfo methodInfo)
-    {
-        this.methodInfo = methodInfo;
-
-        method = methodInfo.getMethod();
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("Invocation[%s]", method);
-    }
-
-    public String getMethodName()
-    {
-        return method.getName();
-    }
-
-    public Class getResultType()
-    {
-        return method.getReturnType();
-    }
-
-    public int getParameterCount()
-    {
-        return method.getParameterTypes().length;
-    }
-
-    public Class getParameterType(int index)
-    {
-        return method.getParameterTypes()[index];
-    }
-
-    public boolean isFail()
-    {
-        return thrown != null;
-    }
-
-    public void rethrow()
-    {
-        if (thrown != null)
-            throw new RuntimeException(thrown);
-    }
-
-    public <T extends Throwable> T getThrown(Class<T> throwableClass)
-    {
-        assert throwableClass != null;
-
-        if (throwableClass.isInstance(thrown))
-            return throwableClass.cast(thrown);
-
-        return null;
-    }
-
-    public void overrideThrown(Exception thrown)
-    {
-        assert thrown != null;
-
-        for (Class t : method.getExceptionTypes())
-        {
-            if (t.isInstance(thrown))
-            {
-                this.thrown = thrown;
-                return;
-            }
-        }
-
-        throw new IllegalArgumentException(String.format("Exception %s is not a declared exception of method %s.",
-                thrown.getClass().getName(), method));
-    }
-
-    public Object getResult()
-    {
-        return result;
-    }
-
-    public void overrideResult(Object newResult)
-    {
-        result = newResult;
-        thrown = null;
-    }
-
-    public void proceed()
-    {
-        if (adviceIndex >= methodInfo.getAdviceCount())
-        {
-            invokeDelegateMethod();
-            return;
-        }
-
-        methodInfo.getAdvice(adviceIndex++).advise(this);
-    }
-
-    /**
-     * This method is filled in, in the dynamically generated subclass.
-     */
-    protected abstract void invokeDelegateMethod();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AccessableObjectAnnotationProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AccessableObjectAnnotationProvider.java
deleted file mode 100644
index ea34e2a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AccessableObjectAnnotationProvider.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AccessibleObject;
-
-/**
- * Provides access to annotations of an accessable object such as a {@link java.lang.reflect.Method} or {@link
- * java.lang.reflect.Field}.
- */
-public class AccessableObjectAnnotationProvider implements AnnotationProvider
-{
-    private final AccessibleObject object;
-
-    public AccessableObjectAnnotationProvider(AccessibleObject object)
-    {
-        this.object = object;
-    }
-
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return object.getAnnotation(annotationClass);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("AnnotationProvider[%s]", object);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AdvisedMethodInvocationBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AdvisedMethodInvocationBuilder.java
deleted file mode 100644
index 122eb12..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AdvisedMethodInvocationBuilder.java
+++ /dev/null
@@ -1,271 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.concurrent.atomic.AtomicLong;
-
-/**
- * Manages a single method of an advised service, responsible for constructing a subclass of {@link
- * org.apache.tapestry5.ioc.internal.services.AbstractInvocation}.
- */
-public class AdvisedMethodInvocationBuilder
-{
-    /**
-     * Parameters of the invocation are stored as fields name "p0", "p1", etc.
-     */
-    private static final String PARAMETER_FIELD = "p";
-
-    private static final String DELEGATE_FIELD_NAME = "delegate";
-
-    private static final int PRIVATE_FINAL = Modifier.PRIVATE | Modifier.FINAL;
-
-    private static final MethodSignature GET_PARAMETER_SIGNATURE = new MethodSignature(Object.class, "getParameter",
-                                                                                       new Class[] {int.class}, null);
-
-    private static final MethodSignature OVERRIDE_SIGNATURE = new MethodSignature(void.class, "override",
-                                                                                  new Class[] {int.class, Object.class},
-                                                                                  null);
-
-    private static final MethodSignature INVOKE_DELEGATE_METHOD_SIGNATURE = new MethodSignature(void.class,
-                                                                                                "invokeDelegateMethod",
-                                                                                                null, null);
-
-    private static final AtomicLong UID_GENERATOR = new AtomicLong(System.currentTimeMillis());
-
-    private final Class serviceInterface;
-
-    private final Method method;
-
-    private final MethodInfo info;
-
-    private final ClassFab classFab;
-
-    public AdvisedMethodInvocationBuilder(ClassFactory classFactory, Class serviceInterface, Method method)
-    {
-        this.serviceInterface = serviceInterface;
-        this.method = method;
-
-        info = new MethodInfo(method);
-
-        String name = "Invocation$" + serviceInterface.getSimpleName() +
-                "$" + method.getName() +
-                "$" + Long.toHexString(UID_GENERATOR.getAndIncrement());
-
-        classFab = classFactory.newClass(name, AbstractInvocation.class);
-
-        addInfrastructure();
-        addGetParameter();
-        addOverride();
-        addInvokeDelegateMethod();
-
-        classFab.addToString(String.format("<Method invocation %s>", method));
-    }
-
-    private void addInfrastructure()
-    {
-        List<Class> constructorTypes = CollectionFactory.newList();
-
-        // First two parameters are fixed:
-
-        // Passed to the AbstractInvocation base class
-        constructorTypes.add(MethodInfo.class);
-        BodyBuilder constructorBuilder = new BodyBuilder().begin().addln("super($1);");
-
-        // Stored for chaining purposes.
-        classFab.addField(DELEGATE_FIELD_NAME, PRIVATE_FINAL, serviceInterface);
-        constructorTypes.add(serviceInterface);
-        constructorBuilder.addln("%s = $2;", DELEGATE_FIELD_NAME);
-
-        // Now, a field for each method parameter. 
-        for (int i = 0; i < method.getParameterTypes().length; i++)
-        {
-            Class type = method.getParameterTypes()[i];
-
-            String name = PARAMETER_FIELD + i;
-
-            classFab.addField(name, type);
-
-            constructorTypes.add(type);
-
-            // $0 is this
-            // $1 is MethodInfo
-            // $2 is delegate
-            // $3 is first method parameter ...
-
-            constructorBuilder.addln("%s = $%d;", name, i + 3);
-        }
-
-        constructorBuilder.end();
-
-        Class[] typesArray = constructorTypes.toArray(new Class[constructorTypes.size()]);
-
-        classFab.addConstructor(typesArray, null, constructorBuilder.toString());
-    }
-
-    private void addGetParameter()
-    {
-        Class[] parameterTypes = method.getParameterTypes();
-
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        builder.addln("switch ($1)").begin();
-
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            // ($w) will wrap a primitive as a wrapper type
-            builder.addln("case %d: return ($w) %s%d;", i, PARAMETER_FIELD, i);
-        }
-
-        builder.addln("default: throw new IllegalArgumentException(\"Parameter index out of range.\");");
-
-        builder.end().end(); // switch and method
-
-        classFab.addMethod(Modifier.PUBLIC, GET_PARAMETER_SIGNATURE, builder.toString());
-    }
-
-    private void addOverride()
-    {
-        Class[] parameterTypes = method.getParameterTypes();
-
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        builder.addln("switch ($1)").begin();
-
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            Class type = parameterTypes[i];
-            String typeName = ClassFabUtils.toJavaClassName(type);
-
-            builder.addln("case %d: %s%d = %s; return;",
-                          i, PARAMETER_FIELD, i,
-                          ClassFabUtils.castReference("$2", typeName));
-        }
-
-        builder.addln("default: throw new IllegalArgumentException(\"Parameter index out of range.\");");
-
-        builder.end().end(); // switch and method
-
-        classFab.addMethod(Modifier.PUBLIC, OVERRIDE_SIGNATURE, builder.toString());
-    }
-
-    private void addInvokeDelegateMethod()
-    {
-        Class returnType = method.getReturnType();
-        Class[] exceptionTypes = method.getExceptionTypes();
-
-        boolean isNonVoid = !returnType.equals(void.class);
-        boolean hasChecked = exceptionTypes.length > 0;
-
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        if (hasChecked) builder.addln("try").begin();
-
-        if (isNonVoid)
-            builder.add("%s result = ", ClassFabUtils.toJavaClassName(returnType));
-
-        builder.add("%s.%s(", DELEGATE_FIELD_NAME, method.getName());
-
-        for (int i = 0; i < method.getParameterTypes().length; i++)
-        {
-            if (i > 0) builder.add(", ");
-
-            builder.add(PARAMETER_FIELD + i);
-        }
-
-        builder.addln(");"); // Call on delegate
-
-        if (isNonVoid)
-        {
-            builder.add("overrideResult(($w) result);");
-        }
-
-        if (hasChecked)
-        {
-            builder.end();   // try
-
-            for (Class exception : exceptionTypes)
-            {
-                builder.addln("catch (%s ex) { overrideThrown(ex); }", exception.getName());
-            }
-        }
-
-        builder.end(); // method
-
-        classFab.addMethod(Modifier.PUBLIC, INVOKE_DELEGATE_METHOD_SIGNATURE, builder.toString());
-    }
-
-    public void addAdvice(MethodAdvice advice)
-    {
-        info.addAdvice(advice);
-    }
-
-    /**
-     * Invoked at the end of construction of the interceptor to intercept the method invocation and hook it into the
-     * advice.
-     *
-     * @param interceptorClassFab classfab for the service interceptor under construction
-     * @param injector            allows constant values to be injected into the interceptor class as final fields
-     */
-    public void commit(ClassFab interceptorClassFab, String delegateFieldName, ConstantInjector injector)
-    {
-        Class invocationClass = classFab.createClass();
-
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        builder.addln("%s invocation = new %<s(%s, %s, $$);",
-                      invocationClass.getName(),
-                      injector.inject(MethodInfo.class, info),
-                      delegateFieldName);
-
-        builder.addln("invocation.proceed();");
-
-        Class[] exceptionTypes = method.getExceptionTypes();
-
-        builder.addln("if (invocation.isFail())").begin();
-
-        for (Class exceptionType : exceptionTypes)
-        {
-            String name = exceptionType.getSimpleName().toLowerCase();
-
-            String exceptionTypeFieldName = injector.inject(Class.class, exceptionType);
-
-            builder.addln("%s %s = (%s) invocation.getThrown(%s);", exceptionType.getName(), name,
-                          exceptionType.getName(), exceptionTypeFieldName);
-            builder.addln("if (%s != null) throw %s;", name, name);
-        }
-
-        builder.addln(
-                "throw new IllegalStateException(\"Impossible exception thrown from intercepted invocation.\");");
-
-        builder.end(); // if fail
-
-        builder.addln("return ($r) invocation.getResult();");
-
-        builder.end();
-
-        interceptorClassFab.addMethod(Modifier.PUBLIC, new MethodSignature(method), builder.toString());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationMemberValueVisitor.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationMemberValueVisitor.java
deleted file mode 100644
index e8847a7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationMemberValueVisitor.java
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-import javassist.bytecode.ConstPool;
-import javassist.bytecode.annotation.Annotation;
-import javassist.bytecode.annotation.AnnotationMemberValue;
-import javassist.bytecode.annotation.ArrayMemberValue;
-import javassist.bytecode.annotation.BooleanMemberValue;
-import javassist.bytecode.annotation.ByteMemberValue;
-import javassist.bytecode.annotation.CharMemberValue;
-import javassist.bytecode.annotation.ClassMemberValue;
-import javassist.bytecode.annotation.DoubleMemberValue;
-import javassist.bytecode.annotation.EnumMemberValue;
-import javassist.bytecode.annotation.FloatMemberValue;
-import javassist.bytecode.annotation.IntegerMemberValue;
-import javassist.bytecode.annotation.LongMemberValue;
-import javassist.bytecode.annotation.MemberValue;
-import javassist.bytecode.annotation.MemberValueVisitor;
-import javassist.bytecode.annotation.ShortMemberValue;
-import javassist.bytecode.annotation.StringMemberValue;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-public class AnnotationMemberValueVisitor implements MemberValueVisitor
-{
-    private final ConstPool constPool;
-
-    private final CtClassSource classSource;
-
-    private final Object value;
-
-    public AnnotationMemberValueVisitor(final ConstPool constPool, final CtClassSource classSource, final Object value)
-    {
-        this.constPool = constPool;
-        this.classSource = classSource;
-        this.value = value;
-    }
-
-    public void visitAnnotationMemberValue(final AnnotationMemberValue mb)
-    {
-        Class annotationType = getClass(value);
-        
-        final Method[] methods = annotationType.getDeclaredMethods();
-
-        for (final Method method : methods)
-        {
-            try
-            {
-                final Object result = method.invoke(value);
-
-                final MemberValue memberValue = Annotation.createMemberValue(
-                        this.constPool,
-                        this.classSource.toCtClass(result.getClass()));
-
-                memberValue.accept(new AnnotationMemberValueVisitor(this.constPool, this.classSource, result));
-                
-                mb.getValue().addMemberValue(method.getName(), memberValue);
-            }
-            catch (Exception e)
-            {
-                throw new RuntimeException(e);
-            }
-        }
-        
-    }
-
-    public void visitArrayMemberValue(final ArrayMemberValue mb)
-    {
-        final Object[] array = (Object[]) this.value;
-
-        final List<MemberValue> members = CollectionFactory.newList();
-        
-        for (final Object object : array)
-        {
-            try
-            {
-                final MemberValue memberValue = Annotation.createMemberValue(
-                        this.constPool,
-                        this.classSource.toCtClass(getClass(object)));
-
-                memberValue.accept(new AnnotationMemberValueVisitor(this.constPool, this.classSource, object));
-
-                members.add(memberValue);
-            }
-            catch (final Exception e)
-            {
-                throw new RuntimeException(e);
-            }
-        }
-
-        mb.setValue(members.toArray(new MemberValue[] {}));
-    }
-    
-    private Class getClass(Object object)
-    {
-        if(object instanceof java.lang.annotation.Annotation)
-        {
-            return ((java.lang.annotation.Annotation)object).annotationType();
-        }
-        
-        return object.getClass();
-    }
-
-    public void visitBooleanMemberValue(final BooleanMemberValue mb)
-    {
-        mb.setValue((Boolean) this.value);
-    }
-
-    public void visitByteMemberValue(final ByteMemberValue mb)
-    {
-        mb.setValue((Byte) this.value);
-    }
-
-    public void visitCharMemberValue(final CharMemberValue mb)
-    {
-        mb.setValue((Character) this.value);
-    }
-
-    public void visitDoubleMemberValue(final DoubleMemberValue mb)
-    {
-        mb.setValue((Double) this.value);
-    }
-
-    public void visitEnumMemberValue(final EnumMemberValue mb)
-    {
-        final Enum enumeration = (Enum) this.value;
-        
-        final Class type = enumeration.getDeclaringClass();
-        mb.setType(type.getName());
-        mb.setValue(enumeration.name());
-    }
-
-    public void visitFloatMemberValue(final FloatMemberValue mb)
-    {
-        mb.setValue((Float) this.value);
-    }
-
-    public void visitIntegerMemberValue(final IntegerMemberValue mb)
-    {
-        mb.setValue((Integer) this.value);
-    }
-
-    public void visitLongMemberValue(final LongMemberValue mb)
-    {
-        mb.setValue((Long) this.value);
-    }
-
-    public void visitShortMemberValue(final ShortMemberValue mb)
-    {
-        mb.setValue((Short) this.value);
-    }
-
-    public void visitStringMemberValue(final StringMemberValue mb)
-    {
-        mb.setValue((String) this.value);
-    }
-
-    public void visitClassMemberValue(final ClassMemberValue mb)
-    {
-        mb.setValue(((Class) this.value).getName());
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationProviderChain.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationProviderChain.java
deleted file mode 100644
index 7e40327..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AnnotationProviderChain.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-import java.lang.annotation.Annotation;
-import java.util.List;
-
-/**
- * Chain of command for {@link org.apache.tapestry5.ioc.AnnotationProvider}.
- */
-public class AnnotationProviderChain implements AnnotationProvider
-{
-    private final AnnotationProvider[] providers;
-
-    public AnnotationProviderChain(AnnotationProvider[] providers)
-    {
-        this.providers = providers;
-    }
-
-    /**
-     * Creates an AnnotationProvider from the list of providers.  Returns either an {@link AnnotationProviderChain} or
-     * the sole element in the list.
-     */
-    public static AnnotationProvider create(List<AnnotationProvider> providers)
-    {
-        int size = providers.size();
-
-        if (size == 1) return providers.get(0);
-
-        return new AnnotationProviderChain(providers.toArray(new AnnotationProvider[providers.size()]));
-    }
-
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        for (AnnotationProvider p : providers)
-        {
-            T result = p.getAnnotation(annotationClass);
-
-            if (result != null) return result;
-        }
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AspectDecoratorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AspectDecoratorImpl.java
deleted file mode 100644
index 02021a7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AspectDecoratorImpl.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.Method;
-
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-
-@PreventServiceDecoration
-public class AspectDecoratorImpl implements AspectDecorator
-{
-    private final ClassFactory classFactory;
-
-    public AspectDecoratorImpl(@Builtin
-    ClassFactory classFactory)
-    {
-        this.classFactory = classFactory;
-    }
-
-    public <T> T build(Class<T> serviceInterface, T delegate, MethodAdvice advice, String description)
-    {
-        assert advice != null;
-        AspectInterceptorBuilder<T> builder = createBuilder(serviceInterface, delegate, description);
-
-        builder.adviseAllMethods(advice);
-
-        return builder.build();
-    }
-
-    public <T> AspectInterceptorBuilder<T> createBuilder(final Class<T> serviceInterface, final T delegate,
-            final String description)
-    {
-        assert serviceInterface != null;
-        assert delegate != null;
-        assert InternalUtils.isNonBlank(description);
-        return new AspectInterceptorBuilder<T>()
-        {
-            private AspectInterceptorBuilder<T> builder;
-
-            public void adviseMethod(Method method, MethodAdvice advice)
-            {
-                getBuilder().adviseMethod(method, advice);
-            }
-
-            public void adviseAllMethods(MethodAdvice advice)
-            {
-                getBuilder().adviseAllMethods(advice);
-            }
-
-            public Class getInterface()
-            {
-                return serviceInterface;
-            }
-
-            public T build()
-            {
-                return builder == null ? delegate : builder.build();
-            }
-
-            private AspectInterceptorBuilder<T> getBuilder()
-            {
-                if (builder == null)
-                    builder = new AspectInterceptorBuilderImpl<T>(classFactory, serviceInterface, delegate, description);
-
-                return builder;
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AspectInterceptorBuilderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AspectInterceptorBuilderImpl.java
deleted file mode 100644
index aba91b2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AspectInterceptorBuilderImpl.java
+++ /dev/null
@@ -1,169 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-
-@SuppressWarnings("all")
-public class AspectInterceptorBuilderImpl<T> implements AspectInterceptorBuilder<T>
-{
-    private final ClassFactory classFactory;
-
-    private final Class<T> serviceInterface;
-
-    private final ClassFab interceptorFab;
-
-    private final ConstantInjectorImpl injector;
-
-    private final String delegateFieldName;
-
-    private final String description;
-
-    private final OneShotLock lock = new OneShotLock();
-
-    private final Set<Method> remainingMethods = CollectionFactory.newSet();
-
-    private final Map<Method, AdvisedMethodInvocationBuilder> methodToBuilder = CollectionFactory.newMap();
-
-    /**
-     * Set to true if we ever see toString() as a method of the interface; either advised or pass thru. If false at the
-     * end, we add our own implementation.
-     */
-    private boolean sawToString;
-
-    public AspectInterceptorBuilderImpl(ClassFactory classFactory, Class<T> serviceInterface, T delegate,
-            String description)
-    {
-        this.classFactory = classFactory;
-        this.serviceInterface = serviceInterface;
-        this.description = description;
-
-        interceptorFab = this.classFactory.newClass(serviceInterface);
-
-        injector = new ConstantInjectorImpl(interceptorFab);
-
-        delegateFieldName = injector.inject(serviceInterface, delegate);
-
-        remainingMethods.addAll(Arrays.asList(serviceInterface.getMethods()));
-    }
-
-    public void adviseMethod(Method method, MethodAdvice advice)
-    {
-        assert method != null;
-        assert advice != null;
-
-        lock.check();
-
-        AdvisedMethodInvocationBuilder builder = methodToBuilder.get(method);
-
-        if (builder == null)
-        {
-            if (!remainingMethods.contains(method))
-                throw new IllegalArgumentException(String.format("Method %s is not defined for interface %s.", method,
-                        serviceInterface));
-
-            // One less method to pass thru to the delegate
-
-            remainingMethods.remove(method);
-
-            sawToString |= ClassFabUtils.isToString(method);
-
-            builder = new AdvisedMethodInvocationBuilder(classFactory, serviceInterface, method);
-
-            methodToBuilder.put(method, builder);
-        }
-
-        builder.addAdvice(advice);
-    }
-
-    public void adviseAllMethods(MethodAdvice advice)
-    {
-        for (Method m : serviceInterface.getMethods())
-            adviseMethod(m, advice);
-    }
-
-    public Class getInterface()
-    {
-        return serviceInterface;
-    }
-
-    public T build()
-    {
-        lock.lock();
-
-        // Finish up each method that has been advised
-
-        for (AdvisedMethodInvocationBuilder builder : methodToBuilder.values())
-        {
-            builder.commit(interceptorFab, delegateFieldName, injector);
-        }
-
-        // Hit all the methods that haven't been referenced so far.
-
-        addPassthruMethods();
-
-        // And if we haven't seen a toString(), we can add it now.
-
-        if (!sawToString)
-            interceptorFab.addToString(description);
-
-        injector.implementConstructor();
-
-        Class interceptorClass = interceptorFab.createClass();
-
-        Object[] parameters = injector.getParameters();
-
-        try
-        {
-            Constructor constructor = interceptorClass.getConstructors()[0];
-
-            Object raw = constructor.newInstance(parameters);
-
-            return serviceInterface.cast(raw);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private void addPassthruMethods()
-    {
-        for (Method m : remainingMethods)
-        {
-            sawToString |= ClassFabUtils.isToString(m);
-
-            MethodSignature sig = new MethodSignature(m);
-
-            String body = String.format("return ($r) %s.%s($$);", delegateFieldName, m.getName());
-
-            interceptorFab.addMethod(Modifier.PUBLIC, sig, body);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AutobuildObjectProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AutobuildObjectProvider.java
deleted file mode 100644
index 6f0dafd..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/AutobuildObjectProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-//  Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.Autobuild;
-
-/**
- * Checks for the {@link org.apache.tapestry5.ioc.annotations.Autobuild} annotation and, if so
- * invokes {@link org.apache.tapestry5.ioc.ObjectLocator#autobuild(Class)} on it.
- */
-public class AutobuildObjectProvider implements ObjectProvider
-{
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider,
-            ObjectLocator locator)
-    {
-        Autobuild annotation = annotationProvider.getAnnotation(Autobuild.class);
-
-        if (annotation != null)
-            return locator
-                    .autobuild("Autobuilding instance of " + objectType.getName(), objectType);
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilder.java
deleted file mode 100644
index 40abdbd..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilder.java
+++ /dev/null
@@ -1,237 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodIterator;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.slf4j.Logger;
-
-import static java.lang.String.format;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * Used by the {@link org.apache.tapestry5.ioc.internal.services.PipelineBuilderImpl} to create bridge classes and to
- * create instances of bridge classes. A bridge class implements the <em>service</em> interface. Within the chain,
- * bridge 1 is passed to filter 1. Invoking methods on bridge 1 will invoke methods on filter 2.
- */
-class BridgeBuilder<S, F>
-{
-    private final Logger logger;
-
-    private final Class<S> serviceInterface;
-
-    private final Class<F> filterInterface;
-
-    private final ClassFab classFab;
-
-    private final FilterMethodAnalyzer filterMethodAnalyzer;
-
-    private Constructor constructor;
-
-    BridgeBuilder(Logger logger, Class<S> serviceInterface, Class<F> filterInterface,
-                  ClassFactory classFactory)
-    {
-        this.logger = logger;
-        this.serviceInterface = serviceInterface;
-        this.filterInterface = filterInterface;
-
-        classFab = classFactory.newClass(this.serviceInterface);
-
-        filterMethodAnalyzer = new FilterMethodAnalyzer(serviceInterface);
-    }
-
-    private void createClass()
-    {
-        List<MethodSignature> serviceMethods = newList();
-        List<MethodSignature> filterMethods = newList();
-
-        createInfrastructure();
-
-        MethodIterator mi = new MethodIterator(serviceInterface);
-
-        while (mi.hasNext())
-        {
-            serviceMethods.add(mi.next());
-        }
-
-        boolean toStringMethodExists = mi.getToString();
-
-        mi = new MethodIterator(filterInterface);
-
-        while (mi.hasNext())
-        {
-            filterMethods.add(mi.next());
-        }
-
-        while (!serviceMethods.isEmpty())
-        {
-            MethodSignature ms = serviceMethods.remove(0);
-
-            addBridgeMethod(ms, filterMethods);
-        }
-
-        reportExtraFilterMethods(filterMethods);
-
-        if (!toStringMethodExists)
-        {
-            String toString = format(
-                    "<PipelineBridge from %s to %s>",
-                    serviceInterface.getName(),
-                    filterInterface.getName());
-            classFab.addToString(toString);
-        }
-
-        Class bridgeClass = classFab.createClass();
-
-        constructor = bridgeClass.getConstructors()[0];
-    }
-
-    private void createInfrastructure()
-    {
-        classFab.addField("_next", Modifier.PRIVATE | Modifier.FINAL, serviceInterface);
-        classFab.addField("_filter", Modifier.PRIVATE | Modifier.FINAL, filterInterface);
-
-        classFab.addConstructor(new Class[]
-                { serviceInterface, filterInterface }, null, "{ _next = $1; _filter = $2; }");
-
-        classFab.addInterface(serviceInterface);
-    }
-
-    /**
-     * Instantiates a bridge object.
-     *
-     * @param nextBridge the next Bridge object in the pipeline, or the terminator service
-     * @param filter     the filter object for this step of the pipeline
-     */
-    public S instantiateBridge(S nextBridge, F filter)
-    {
-        if (constructor == null) createClass();
-
-        try
-        {
-            Object instance = constructor.newInstance(nextBridge, filter);
-
-            return serviceInterface.cast(instance);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private void reportExtraFilterMethods(List filterMethods)
-    {
-        Iterator i = filterMethods.iterator();
-
-        while (i.hasNext())
-        {
-            MethodSignature ms = (MethodSignature) i.next();
-
-            logger.error(ServiceMessages
-                    .extraFilterMethod(ms, filterInterface, serviceInterface));
-        }
-    }
-
-    /**
-     * Finds a matching method in filterMethods for the given service method. A matching method has the same signature
-     * as the service interface method, but with an additional parameter matching the service interface itself.
-     * <p/>
-     * The matching method signature from the list of filterMethods is removed and code generation strategies for making
-     * the two methods call each other are added.
-     */
-    private void addBridgeMethod(MethodSignature ms, List filterMethods)
-    {
-        Iterator i = filterMethods.iterator();
-
-        while (i.hasNext())
-        {
-            MethodSignature fms = (MethodSignature) i.next();
-
-            int position = filterMethodAnalyzer.findServiceInterfacePosition(ms, fms);
-
-            if (position >= 0)
-            {
-                addBridgeMethod(position, ms, fms);
-                i.remove();
-                return;
-            }
-        }
-
-        String message = ServiceMessages.unmatchedServiceMethod(ms, filterInterface);
-
-        logger.error(message);
-
-        String code = format("throw new %s(\"%s\");", RuntimeException.class.getName(), message);
-
-        classFab.addMethod(Modifier.PUBLIC, ms, code);
-    }
-
-    /**
-     * Adds a method to the class which bridges from the service method to the corresponding method in the filter
-     * interface. The next service (either another Bridge, or the terminator at the end of the pipeline) is passed to
-     * the filter).
-     */
-    private void addBridgeMethod(int position, MethodSignature ms, MethodSignature fms)
-    {
-        StringBuilder buffer = new StringBuilder(100);
-
-        buffer.append("return ($r) _filter.");
-        buffer.append(ms.getName());
-        buffer.append("(");
-
-        boolean comma = false;
-        int filterParameterCount = fms.getParameterTypes().length;
-
-        for (int i = 0; i < position; i++)
-        {
-            if (comma) buffer.append(", ");
-
-            buffer.append("$");
-            // Add one to the index to get the parameter symbol ($0 is the implicit
-            // this parameter).
-            buffer.append(i + 1);
-
-            comma = true;
-        }
-
-        if (comma) buffer.append(", ");
-
-        // _next is the variable in -this- Bridge that points to the -next- Bridge
-        // or the terminator for the pipeline. The filter is expected to reinvoke the
-        // method on the _next that's passed to it.
-
-        buffer.append("_next");
-
-        for (int i = position + 1; i < filterParameterCount; i++)
-        {
-            buffer.append(", $");
-            buffer.append(i);
-        }
-
-        buffer.append(");");
-
-        // This should work, unless the exception types turn out to not be compatble. We still
-        // don't do a check on that, and not sure that Javassist does either!
-
-        classFab.addMethod(Modifier.PUBLIC, ms, buffer.toString());
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CachingObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CachingObjectCreator.java
deleted file mode 100644
index cf907a0..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CachingObjectCreator.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-
-/**
- * An {@link org.apache.tapestry5.ioc.ObjectCreator} that delegates to another {@link
- * org.apache.tapestry5.ioc.ObjectCreator} and caches the result.
- */
-public class CachingObjectCreator implements ObjectCreator
-{
-    private boolean cached;
-
-    private Object cachedValue;
-
-    private ObjectCreator delegate;
-
-    public CachingObjectCreator(ObjectCreator delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    public synchronized Object createObject()
-    {
-        if (!cached)
-        {
-            cachedValue = delegate.createObject();
-            cached = true;
-            delegate = null;
-        }
-
-        return cachedValue;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ChainBuilderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ChainBuilderImpl.java
deleted file mode 100644
index 0f4c043..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ChainBuilderImpl.java
+++ /dev/null
@@ -1,202 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newConcurrentMap;
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-
-import static java.lang.String.format;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.Map;
-
-public class ChainBuilderImpl implements ChainBuilder
-{
-    private final ClassFactory classFactory;
-
-    /**
-     * Map, keyed on service interface, of implementation Class.
-     */
-
-    private final Map<Class, Class> cache = newConcurrentMap();
-
-    public ChainBuilderImpl(@Builtin ClassFactory classFactory)
-    {
-        this.classFactory = classFactory;
-    }
-
-    @SuppressWarnings("unchecked")
-    public <T> T build(Class<T> commandInterface, List<T> commands)
-    {
-        Class<T> chainClass = findImplementationClass(commandInterface);
-
-        return createInstance(chainClass, commands);
-    }
-
-    private Class findImplementationClass(Class commandInterface)
-    {
-        Class result = cache.get(commandInterface);
-
-        if (result == null)
-        {
-            result = constructImplementationClass(commandInterface);
-            cache.put(commandInterface, result);
-        }
-
-        return result;
-    }
-
-    private Class constructImplementationClass(Class commandInterface)
-    {
-        // In rare, rare cases, a race condition to create an implementation class
-        // for the same interface may occur. We just let that happen, and there'll
-        // be two different classes corresponding to the same interface.
-
-        String name = ClassFabUtils.generateClassName(commandInterface);
-
-        ClassFab cf = classFactory.newClass(name, Object.class);
-
-        addInfrastructure(cf, commandInterface);
-
-        addMethods(cf, commandInterface);
-
-        return cf.createClass();
-    }
-
-    private void addInfrastructure(ClassFab cf, Class commandInterface)
-    {
-        // Array types are very, very tricky to deal with.
-        // Also, generics don't help (<T> new T[]) is still java.lang.Object[].
-
-        String arrayClassName = commandInterface.getCanonicalName() + "[]";
-        String jvmName = ClassFabUtils.toJVMBinaryName(arrayClassName);
-
-        Class array;
-
-        try
-        {
-            ClassLoader loader = commandInterface.getClass().getClassLoader();
-            if (loader == null) loader = Thread.currentThread().getContextClassLoader();
-
-            array = Class.forName(jvmName, true, loader);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        cf.addInterface(commandInterface);
-        cf.addField("_commands", Modifier.PRIVATE | Modifier.FINAL, array);
-
-        BodyBuilder builder = new BodyBuilder();
-        builder.addln("_commands = (%s[]) $1.toArray(new %<s[0]);", commandInterface.getName());
-
-        cf.addConstructor(new Class[] { List.class }, null, builder.toString());
-    }
-
-    @SuppressWarnings("unchecked")
-    private <T> T createInstance(Class<T> instanceClass, List<T> commands)
-    {
-        try
-        {
-            Constructor<T> ctor = (Constructor<T>) instanceClass.getConstructors()[0];
-
-            return instanceClass.cast(ctor.newInstance(commands));
-        }
-        catch (Exception ex)
-        {
-            // This should not be reachable!
-            throw new RuntimeException(ex);
-        }
-
-    }
-
-    private void addMethods(ClassFab cf, Class commandInterface)
-    {
-        MethodIterator mi = new MethodIterator(commandInterface);
-
-        while (mi.hasNext())
-        {
-            MethodSignature sig = mi.next();
-
-            addMethod(cf, commandInterface, sig);
-        }
-
-        if (!mi.getToString()) cf.addToString(format("<Command chain of %s>", commandInterface.getName()));
-    }
-
-    private void addMethod(ClassFab cf, Class commandInterface, MethodSignature sig)
-    {
-        Class returnType = sig.getReturnType();
-
-        if (returnType.equals(void.class))
-        {
-            addVoidMethod(cf, commandInterface, sig);
-            return;
-        }
-
-        String defaultValue = defaultForReturnType(returnType);
-
-        BodyBuilder builder = new BodyBuilder();
-        builder.begin();
-
-        builder.addln("%s result = %s;", ClassFabUtils.toJavaClassName(returnType), defaultValue);
-        builder.addln("for (int i = 0; i < _commands.length; i++)");
-
-        builder.begin();
-        builder.addln("result = _commands[i].%s($$);", sig.getName());
-
-        builder.addln("if (result != %s) break;", defaultValue);
-
-        builder.end();
-
-        builder.addln("return result;");
-        builder.end();
-
-        cf.addMethod(Modifier.PUBLIC, sig, builder.toString());
-    }
-
-    private String defaultForReturnType(Class returnType)
-    {
-        // For all object and array types.
-
-        if (!returnType.isPrimitive()) return "null";
-
-        if (returnType.equals(boolean.class)) return "false";
-
-        // Assume, then, that it is a numeric type (this method
-        // isn't called for type void). Javassist seems to be
-        // able to handle 0 for all numeric types.
-
-        return "0";
-    }
-
-    private void addVoidMethod(ClassFab cf, Class commandInterface, MethodSignature sig)
-    {
-        BodyBuilder builder = new BodyBuilder();
-
-        builder.begin();
-
-        builder.addln("for (int i = 0; i < _commands.length; i++)");
-        builder.addln("  _commands[i].%s($$);", sig.getName());
-
-        builder.end();
-
-        cf.addMethod(Modifier.PUBLIC, sig, builder.toString());
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFabImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFabImpl.java
deleted file mode 100644
index 733e280..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFabImpl.java
+++ /dev/null
@@ -1,557 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static java.lang.String.format;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newSet;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Formatter;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javassist.CannotCompileException;
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtField;
-import javassist.CtMethod;
-import javassist.NotFoundException;
-import javassist.bytecode.AnnotationsAttribute;
-import javassist.bytecode.ClassFile;
-import javassist.bytecode.ConstPool;
-import javassist.bytecode.MethodInfo;
-import javassist.bytecode.ParameterAnnotationsAttribute;
-import javassist.bytecode.annotation.MemberValue;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.MethodIterator;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.slf4j.Logger;
-
-/**
- * Implementation of {@link org.apache.tapestry5.ioc.services.ClassFab}. Hides, as much as possible, the underlying
- * library (Javassist).
- */
-@SuppressWarnings("all")
-public class ClassFabImpl extends AbstractFab implements ClassFab
-{
-    private static final Map<Class, String> DEFAULT_RETURN = newMap();
-
-    static
-    {
-        DEFAULT_RETURN.put(boolean.class, "false");
-        DEFAULT_RETURN.put(long.class, "0L");
-        DEFAULT_RETURN.put(float.class, "0.0f");
-        DEFAULT_RETURN.put(double.class, "0.0d");
-    }
-
-    /**
-     * Add fields, methods, and constructors are added, their psuedo-code is appended to this description, which is used
-     * by toString().
-     */
-    private final StringBuilder description = new StringBuilder();
-
-    private final Formatter formatter = new Formatter(description);
-
-    private final Set<MethodSignature> addedSignatures = newSet();
-
-    public ClassFabImpl(CtClassSource source, CtClass ctClass, Logger logger)
-    {
-        super(source, ctClass, logger);
-    }
-
-    /**
-     * Returns a representation of the fabricated class, including inheritance, fields, constructors, methods and method
-     * bodies.
-     */
-    @Override
-    public String toString()
-    {
-        StringBuilder buffer = new StringBuilder("ClassFab[\n");
-
-        try
-        {
-            buffer.append(buildClassAndInheritance());
-
-            buffer.append(description.toString());
-        }
-        catch (Exception ex)
-        {
-            buffer.append(" *** ");
-            buffer.append(ex);
-        }
-
-        buffer.append("\n]");
-
-        return buffer.toString();
-    }
-
-    private String buildClassAndInheritance() throws NotFoundException
-    {
-        StringBuilder buffer = new StringBuilder();
-
-        buffer.append(Modifier.toString(getCtClass().getModifiers()));
-        buffer.append(" class ");
-        buffer.append(getName());
-        buffer.append(" extends ");
-        buffer.append(getCtClass().getSuperclass().getName());
-        buffer.append("\n");
-
-        CtClass[] interfaces = getCtClass().getInterfaces();
-
-        if (interfaces.length > 0)
-        {
-            buffer.append("  implements ");
-
-            for (int i = 0; i < interfaces.length; i++)
-            {
-                if (i > 0)
-                    buffer.append(", ");
-
-                buffer.append(interfaces[i].getName());
-            }
-
-            buffer.append("\n\n");
-        }
-
-        return buffer.toString();
-    }
-
-    /**
-     * Returns the name of the class fabricated by this instance.
-     */
-    String getName()
-    {
-        return getCtClass().getName();
-    }
-
-    public void addField(String name, Class type)
-    {
-        addField(name, Modifier.PRIVATE, type);
-    }
-
-    public void addField(String name, int modifiers, Class type)
-    {
-        lock.check();
-
-        CtClass ctType = toCtClass(type);
-
-        try
-        {
-            CtField field = new CtField(ctType, name, getCtClass());
-            field.setModifiers(modifiers);
-
-            getCtClass().addField(field);
-        }
-        catch (CannotCompileException ex)
-        {
-            // Have yet to find a way to make this happen!
-            throw new RuntimeException(ServiceMessages.unableToAddField(name, getCtClass(), ex), ex);
-        }
-
-        formatter.format("%s %s %s;\n\n", Modifier.toString(modifiers), ClassFabUtils.toJavaClassName(type), name);
-    }
-
-    public void proxyMethodsToDelegate(Class serviceInterface, String delegateExpression, String toString)
-    {
-        lock.check();
-
-        addInterface(serviceInterface);
-
-        MethodIterator mi = new MethodIterator(serviceInterface);
-
-        while (mi.hasNext())
-        {
-            MethodSignature sig = mi.next();
-
-            // ($r) properly handles void methods for us, which keeps this simple.
-
-            String body = format("return ($r) %s.%s($$);", delegateExpression, sig.getName());
-
-            addMethod(Modifier.PUBLIC, sig, body);
-        }
-
-        if (!mi.getToString())
-            addToString(toString);
-    }
-
-    public void addToString(String toString)
-    {
-        lock.check();
-
-        MethodSignature sig = new MethodSignature(String.class, "toString", null, null);
-
-        // TODO: Very simple quoting here, will break down if the string itself contains
-        // double quotes or various other characters that need escaping.
-
-        addMethod(Modifier.PUBLIC, sig, format("return \"%s\";", toString));
-    }
-
-    public void addMethod(int modifiers, MethodSignature ms, String body)
-    {
-        lock.check();
-
-        if (addedSignatures.contains(ms))
-            throw new RuntimeException(ServiceMessages.duplicateMethodInClass(ms, this));
-
-        CtClass ctReturnType = toCtClass(ms.getReturnType());
-
-        CtClass[] ctParameters = toCtClasses(ms.getParameterTypes());
-        CtClass[] ctExceptions = toCtClasses(ms.getExceptionTypes());
-
-        CtMethod method = new CtMethod(ctReturnType, ms.getName(), ctParameters, getCtClass());
-
-        try
-        {
-            method.setModifiers(modifiers);
-            method.setBody(body);
-            method.setExceptionTypes(ctExceptions);
-
-            getCtClass().addMethod(method);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ServiceMessages.unableToAddMethod(ms, getCtClass(), ex), ex);
-        }
-
-        addedSignatures.add(ms);
-
-        // modifiers, return type, name
-
-        formatter.format("%s %s %s", Modifier.toString(modifiers), ClassFabUtils.toJavaClassName(ms.getReturnType()),
-                ms.getName());
-
-        // parameters, exceptions and body from this:
-        addMethodDetailsToDescription(ms.getParameterTypes(), ms.getExceptionTypes(), body);
-
-        description.append("\n\n");
-    }
-
-    public void addNoOpMethod(MethodSignature signature)
-    {
-        lock.check();
-
-        Class returnType = signature.getReturnType();
-
-        if (returnType.equals(void.class))
-        {
-            addMethod(Modifier.PUBLIC, signature, "return;");
-            return;
-        }
-
-        String value = "null";
-        if (returnType.isPrimitive())
-        {
-            value = DEFAULT_RETURN.get(returnType);
-            if (value == null)
-                value = "0";
-        }
-
-        addMethod(Modifier.PUBLIC, signature, "return " + value + ";");
-    }
-
-    public void addConstructor(Class[] parameterTypes, Class[] exceptions, String body)
-    {
-        assert InternalUtils.isNonBlank(body);
-        lock.check();
-
-        CtClass[] ctParameters = toCtClasses(parameterTypes);
-        CtClass[] ctExceptions = toCtClasses(exceptions);
-
-        try
-        {
-            CtConstructor constructor = new CtConstructor(ctParameters, getCtClass());
-            constructor.setExceptionTypes(ctExceptions);
-            constructor.setBody(body);
-
-            getCtClass().addConstructor(constructor);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ServiceMessages.unableToAddConstructor(getCtClass(), ex), ex);
-        }
-
-        description.append("public ");
-
-        // This isn't quite right; we should strip the package portion off of the name.
-        // However, fabricated classes are almost always in the "default" package, so
-        // this is OK.
-
-        description.append(getName());
-
-        addMethodDetailsToDescription(parameterTypes, exceptions, body);
-
-        description.append("\n\n");
-    }
-
-    /**
-     * Adds a listing of method (or constructor) parameters and thrown exceptions, and the body, to the description
-     * 
-     * @param parameterTypes
-     *            types of method parameters, or null
-     * @param exceptions
-     *            types of throw exceptions, or null
-     * @param body
-     *            body of method or constructor
-     */
-    private void addMethodDetailsToDescription(Class[] parameterTypes, Class[] exceptions, String body)
-    {
-        description.append("(");
-
-        int count = InternalUtils.size(parameterTypes);
-        for (int i = 0; i < count; i++)
-        {
-            if (i > 0)
-                description.append(", ");
-
-            description.append(ClassFabUtils.toJavaClassName(parameterTypes[i]));
-
-            description.append(" $");
-            description.append(i + 1);
-        }
-
-        description.append(")");
-
-        count = InternalUtils.size(exceptions);
-        for (int i = 0; i < count; i++)
-        {
-            if (i == 0)
-                description.append("\n  throws ");
-            else
-                description.append(", ");
-
-            // Since this can never be an array type, we don't need to use getJavaClassName
-
-            description.append(exceptions[i].getName());
-        }
-
-        description.append("\n");
-        description.append(body);
-    }
-    
-    public void copyClassAnnotationsFromDelegate(Class delegateClass)
-    {
-        lock.check();
-        
-        for (Annotation annotation : delegateClass.getAnnotations())
-        {
-            try
-            {
-                addAnnotation(annotation);
-            }
-            catch (RuntimeException ex) 
-            {
-                //Annotation processing may cause exceptions thrown by Javassist. 
-                //To provide backward compatibility we have to continue even though copying a particular annotation failed.
-                getLogger().error(String.format("Failed to copy annotation '%s' from '%s'", annotation.annotationType(), delegateClass.getName()));
-            }
-        }   
-    }
-    
-    public void copyMethodAnnotationsFromDelegate(Class serviceInterface, Class delegateClass)
-    {
-        lock.check();
-        
-        for(MethodSignature sig: addedSignatures)
-        {   
-            if(getMethod(sig, serviceInterface) == null)
-                continue;
-            
-            Method method = getMethod(sig, delegateClass);
-            
-            assert method != null;
-            
-            CtMethod ctMethod = getCtMethod(sig);
-            
-            Annotation[] annotations = method.getAnnotations();
-            
-            for (Annotation annotation : annotations)
-            {   
-                try
-                {
-                    addMethodAnnotation(ctMethod, annotation);   
-                }
-                catch (RuntimeException ex) 
-                {
-                    //Annotation processing may cause exceptions thrown by Javassist. 
-                    //To provide backward compatibility we have to continue even though copying a particular annotation failed.
-                    getLogger().error(String.format("Failed to copy annotation '%s' from method '%s' of class '%s'", 
-                            annotation.annotationType(), method.getName(), delegateClass.getName()));
-                }
-            }
-            
-            try
-            {
-            	addMethodParameterAnnotation(ctMethod, method.getParameterAnnotations());
-            }
-            catch (RuntimeException ex) 
-            {
-                //Annotation processing may cause exceptions thrown by Javassist. 
-                //To provide backward compatibility we have to continue even though copying a particular annotation failed.
-                getLogger().error(String.format("Failed to copy parameter annotations from method '%s' of class '%s'", 
-                		method.getName(), delegateClass.getName()));
-            }
-        }
-    }
-    
-    private CtMethod getCtMethod(MethodSignature sig)
-    {
-        try
-        {
-            return getCtClass().getDeclaredMethod(sig.getName(), toCtClasses(sig.getParameterTypes()));
-        }
-        catch (NotFoundException e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-    
-    private Method getMethod(MethodSignature sig, Class clazz)
-    {
-        try
-        {
-            return clazz.getMethod(sig.getName(), sig.getParameterTypes());
-        }
-        catch (Exception e)
-        {
-            return null;
-        }
-    }
-
-    private void addAnnotation(Annotation annotation)
-    {
-        
-        final ClassFile classFile = getClassFile();
-        
-        AnnotationsAttribute attribute = (AnnotationsAttribute) classFile.getAttribute(AnnotationsAttribute.visibleTag);
-        
-        if (attribute == null)
-        {
-            attribute = new AnnotationsAttribute(getConstPool(), AnnotationsAttribute.visibleTag);
-        }
-        
-        final javassist.bytecode.annotation.Annotation copy = toJavassistAnnotation(annotation);
-        
-        
-        attribute.addAnnotation(copy);
-        
-        classFile.addAttribute(attribute);
-        
-    }
-    
-    private void addMethodAnnotation(final CtMethod ctMethod, final Annotation annotation) {
-
-        MethodInfo methodInfo = ctMethod.getMethodInfo();
-
-        AnnotationsAttribute attribute = (AnnotationsAttribute) methodInfo
-            .getAttribute(AnnotationsAttribute.visibleTag);
-
-        if (attribute == null) {
-            attribute = new AnnotationsAttribute(getConstPool(), AnnotationsAttribute.visibleTag);
-        }
-
-        final javassist.bytecode.annotation.Annotation copy = toJavassistAnnotation(annotation);
-
-        attribute.addAnnotation(copy);
-
-        methodInfo.addAttribute(attribute);
-
-    }
-
-    private void addMethodParameterAnnotation(final CtMethod ctMethod, final Annotation[][] parameterAnnotations) {
-
-        MethodInfo methodInfo = ctMethod.getMethodInfo();
-
-        ParameterAnnotationsAttribute attribute = (ParameterAnnotationsAttribute) methodInfo
-            .getAttribute(ParameterAnnotationsAttribute.visibleTag);
-
-        if (attribute == null) {
-            attribute = new ParameterAnnotationsAttribute(getConstPool(), ParameterAnnotationsAttribute.visibleTag);
-        }
-        
-        List<javassist.bytecode.annotation.Annotation[]> result = CollectionFactory.newList();
-        
-        for (Annotation[] next : parameterAnnotations) 
-        {
-        	List<javassist.bytecode.annotation.Annotation> list = CollectionFactory.newList();
-        	
-			for (Annotation annotation : next) 
-			{
-		        final javassist.bytecode.annotation.Annotation copy = toJavassistAnnotation(annotation);
-		        
-		        list.add(copy);
-			}
-			
-			result.add(list.toArray(new javassist.bytecode.annotation.Annotation[]{}));
-		}
-        
-        javassist.bytecode.annotation.Annotation[][] annotations = result.toArray(new javassist.bytecode.annotation.Annotation[][]{});
-        
-        attribute.setAnnotations(annotations);
-        
-        methodInfo.addAttribute(attribute);
-    }
-    
-    private ClassFile getClassFile()
-    {
-        return getCtClass().getClassFile();
-    }
-    
-    private ConstPool getConstPool() 
-    {   
-        return getClassFile().getConstPool();
-    }
-    
-    private javassist.bytecode.annotation.Annotation toJavassistAnnotation(final Annotation source)
-    {
-
-        final Class<? extends Annotation> annotationType = source.annotationType();
-
-        final ConstPool constPool = getConstPool();
-
-        final javassist.bytecode.annotation.Annotation copy = new javassist.bytecode.annotation.Annotation(
-                annotationType.getName(), constPool);
-
-        final Method[] methods = annotationType.getDeclaredMethods();
-
-        for (final Method method : methods)
-        {
-            try
-            {
-                CtClass ctType = toCtClass(method.getReturnType());
-                
-                final MemberValue memberValue = javassist.bytecode.annotation.Annotation.createMemberValue(constPool, ctType);
-                final Object value = method.invoke(source);
-
-                memberValue.accept(new AnnotationMemberValueVisitor(constPool, getSource(), value));
-
-                copy.addMemberValue(method.getName(), memberValue);
-            }
-            catch (final Exception e)
-            {
-                throw new RuntimeException(e);
-            }
-        }
-
-        return copy;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java
deleted file mode 100644
index 74a9583..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryClassPool.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import javassist.*;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.security.AccessController;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.security.ProtectionDomain;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * Used to ensure that {@link javassist.ClassPool#appendClassPath(javassist.ClassPath)} is invoked within a synchronized
- * lock, and also handles tricky class loading issues (caused by the creation of classes, and class loaders, at
- * runtime).
- */
-public class ClassFactoryClassPool extends ClassPool
-{
-
-    // Kind of duplicating some logic from ClassPool to avoid a deadlock-producing synchronized block.
-
-    private static final Method defineClass = findMethod("defineClass", String.class, byte[].class,
-                                                         int.class, int.class);
-
-    private static final Method defineClassWithProtectionDomain = findMethod("defineClass", String.class, byte[].class,
-                                                                             int.class, int.class,
-                                                                             ProtectionDomain.class);
-
-    private static Method findMethod(final String methodName, final Class... parameterTypes)
-    {
-        try
-        {
-            return AccessController.doPrivileged(new PrivilegedExceptionAction<Method>()
-            {
-                public Method run() throws Exception
-                {
-                    Class cl = Class.forName("java.lang.ClassLoader");
-
-                    Method result = cl.getDeclaredMethod(methodName, parameterTypes);
-
-                    // Just make it accessible; no particular reason to make it unaccessible again.
-
-                    result.setAccessible(true);
-
-                    return result;
-                }
-            });
-        }
-        catch (PrivilegedActionException ex)
-        {
-            throw new RuntimeException(String.format("Unable to initialize ClassFactoryClassPool: %s",
-                                                     InternalUtils.toMessage(ex)), ex);
-        }
-    }
-
-    /**
-     * Used to identify which class loaders have already been integrated into the pool.
-     */
-    private final Set<ClassLoader> allLoaders = CollectionFactory.newSet();
-
-    private final Map<ClassLoader, ClassPath> leafLoaders = CollectionFactory.newMap();
-
-    public ClassFactoryClassPool(ClassLoader contextClassLoader)
-    {
-        super(null);
-
-        addClassLoaderIfNeeded(contextClassLoader);
-    }
-
-    /**
-     * Returns the nearest super-class of the provided class that can be converted to a {@link CtClass}. This is used to
-     * filter out Hibernate-style proxies (created as subclasses of oridnary classes). This will automatically add the
-     * class' classLoader to the pool's class path.
-     *
-     * @param clazz class to import
-     * @return clazz, or a super-class of clazz
-     */
-    public Class importClass(Class clazz)
-    {
-        addClassLoaderIfNeeded(clazz.getClassLoader());
-
-        while (true)
-        {
-            try
-            {
-                String name = ClassFabUtils.toJavaClassName(clazz);
-
-                get(name);
-
-                break;
-            }
-            catch (NotFoundException ex)
-            {
-                clazz = clazz.getSuperclass();
-            }
-        }
-
-        return clazz;
-    }
-
-    /**
-     * Convienience method for adding to the ClassPath for a particular class loader.
-     * <p/>
-     *
-     * @param loader the class loader to add (derived from a loaded class, and may be null for some system classes)
-     */
-    public synchronized void addClassLoaderIfNeeded(ClassLoader loader)
-    {
-        Set<ClassLoader> leaves = leafLoaders.keySet();
-        if (loader == null || leaves.contains(loader) || allLoaders.contains(loader)) return;
-
-        // Work out if this loader is a child of a loader we have already.
-        ClassLoader existingLeaf = loader;
-        while (existingLeaf != null && !leaves.contains(existingLeaf))
-        {
-            existingLeaf = existingLeaf.getParent();
-        }
-
-        if (existingLeaf != null)
-        {
-            // The new loader is a child of an existing leaf.
-            // So we remove the old leaf before we add the new loader
-            ClassPath priorPath = leafLoaders.get(existingLeaf);
-            removeClassPath(priorPath);
-            leafLoaders.remove(existingLeaf);
-        }
-
-        ClassPath path = new LoaderClassPath(loader);
-        leafLoaders.put(loader, path);
-        insertClassPath(path);
-
-        ClassLoader l = loader;
-        while (l != null)
-        {
-            allLoaders.add(l);
-            l = l.getParent();
-        }
-    }
-
-    /**
-     * Overriden to remove a deadlock producing synchronized block. We expect that the defineClass() methods will have
-     * been marked as accessible statically (by this class), so there's no need to set them accessible again.
-     */
-    @Override
-    public Class toClass(CtClass ct, ClassLoader loader, ProtectionDomain domain)
-            throws CannotCompileException
-    {
-        Throwable failure;
-
-        try
-        {
-            byte[] b = ct.toBytecode();
-
-            boolean hasDomain = domain != null;
-
-            Method method = hasDomain ? defineClassWithProtectionDomain : defineClass;
-
-            Object[] args = hasDomain
-                            ? new Object[] {ct.getName(), b, 0, b.length, domain}
-                            : new Object[] {ct.getName(), b, 0, b.length};
-
-            return (Class) method.invoke(loader, args);
-        }
-        catch (InvocationTargetException ite)
-        {
-            failure = ite.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            failure = ex;
-        }
-
-        throw new CannotCompileException(
-                String.format("Failure defining new class %s: %s",
-                              ct.getName(),
-                              InternalUtils.toMessage(failure)), failure);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryImpl.java
deleted file mode 100644
index 344b5b7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryImpl.java
+++ /dev/null
@@ -1,274 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static java.lang.String.format;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtMethod;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * Implementation of {@link org.apache.tapestry5.ioc.services.ClassFactory}.
- */
-@SuppressWarnings("all")
-public class ClassFactoryImpl implements ClassFactory
-{
-    private final Logger logger;
-
-    /**
-     * ClassPool shared by all modules (all CtClassSource instances).
-     */
-    private final ClassFactoryClassPool pool;
-
-    private final CtClassSource classSource;
-
-    private final ClassLoader loader;
-
-    public ClassFactoryImpl(ClassLoader classLoader)
-    {
-        this(classLoader, LoggerFactory.getLogger(ClassFactoryImpl.class));
-    }
-
-    public ClassFactoryImpl()
-    {
-        this(Thread.currentThread().getContextClassLoader());
-    }
-
-    /**
-     * Main constructor where a specific class loader and log is provided.
-     */
-    public ClassFactoryImpl(ClassLoader classLoader, Logger log)
-    {
-        this(classLoader, new ClassFactoryClassPool(classLoader), log);
-    }
-
-    /**
-     * Special constructor used when the class pool is provided externally.
-     */
-    public ClassFactoryImpl(ClassLoader classLoader, ClassFactoryClassPool pool, Logger logger)
-    {
-        this(classLoader, pool, new CtClassSourceImpl(pool, classLoader), logger);
-    }
-
-    public ClassFactoryImpl(ClassLoader classLoader, ClassFactoryClassPool pool, CtClassSource classSource,
-            Logger logger)
-    {
-        loader = classLoader;
-
-        this.pool = pool;
-
-        this.classSource = classSource;
-
-        this.logger = logger;
-    }
-
-    public ClassFab newClass(Class serviceInterface)
-    {
-        String name = ClassFabUtils.generateClassName(serviceInterface);
-
-        ClassFab cf = newClass(name, Object.class);
-
-        cf.addInterface(serviceInterface);
-
-        return cf;
-    }
-
-    public ClassFab newClass(String name, Class superClass)
-    {
-        if (logger.isDebugEnabled())
-            logger.debug(String.format("Create ClassFab for %s (extends %s)", name, superClass.getName()));
-
-        try
-        {
-            CtClass ctNewClass = classSource.newClass(name, superClass);
-
-            return new ClassFabImpl(classSource, ctNewClass, logger);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ServiceMessages.unableToCreateClass(name, superClass, ex), ex);
-        }
-    }
-
-    public Class importClass(Class clazz)
-    {
-        return pool.importClass(clazz);
-    }
-
-    public int getCreatedClassCount()
-    {
-        return classSource.getCreatedClassCount();
-    }
-
-    public ClassLoader getClassLoader()
-    {
-        return loader;
-    }
-
-    public Location getMethodLocation(Method method)
-    {
-        assert method != null;
-
-        // TODO: Is it worth caching this? Probably not as it usually is only
-        // invoked perhaps at startup and in the event of errors.
-
-        Class declaringClass = method.getDeclaringClass();
-        Class effectiveClass = importClass(declaringClass);
-
-        CtClass ctClass = classSource.toCtClass(effectiveClass);
-
-        StringBuilder builder = new StringBuilder("(");
-
-        for (Class parameterType : method.getParameterTypes())
-        {
-            builder.append(ClassFabUtils.getTypeCode(parameterType));
-        }
-
-        builder.append(")");
-        builder.append(ClassFabUtils.getTypeCode(method.getReturnType()));
-
-        try
-        {
-            CtMethod ctMethod = ctClass.getMethod(method.getName(), builder.toString());
-
-            int lineNumber = ctMethod.getMethodInfo().getLineNumber(0);
-
-            String sourceFile = ctMethod.getDeclaringClass().getClassFile2().getSourceFile();
-
-            String description = String.format("%s (at %s:%d)", InternalUtils.asString(method), sourceFile, lineNumber);
-
-            return new StringLocation(description, lineNumber);
-        }
-        catch (Exception ex)
-        {
-            return new StringLocation(InternalUtils.asString(method), 0);
-        }
-    }
-
-    public Location getConstructorLocation(Constructor constructor)
-    {
-        assert constructor != null;
-
-        StringBuilder builder = new StringBuilder();
-
-        Class declaringClass = constructor.getDeclaringClass();
-
-        builder.append(declaringClass.getName());
-        builder.append("(");
-
-        CtClass ctClass = classSource.toCtClass(declaringClass);
-
-        StringBuilder descripton = new StringBuilder("(");
-
-        Class[] parameterTypes = constructor.getParameterTypes();
-        for (int i = 0; i < parameterTypes.length; i++)
-        {
-            Class parameterType = parameterTypes[i];
-
-            if (i > 0)
-                builder.append(", ");
-
-            builder.append(parameterType.getSimpleName());
-
-            descripton.append(ClassFabUtils.getTypeCode(parameterType));
-        }
-
-        builder.append(")");
-
-        // A constructor resembles a method of type void
-        descripton.append(")V");
-
-        int lineNumber = 0;
-
-        try
-        {
-            CtConstructor ctConstructor = ctClass.getConstructor(descripton.toString());
-
-            lineNumber = ctConstructor.getMethodInfo().getLineNumber(0);
-
-            String sourceFile = ctConstructor.getDeclaringClass().getClassFile2().getSourceFile();
-
-            builder.append(String.format(" (at %s:%d)", sourceFile, lineNumber));
-        }
-        catch (Exception ex)
-        {
-            // Leave the line number as 0 (aka "unknown").
-        }
-
-        return new StringLocation(builder.toString(), lineNumber);
-    }
-
-    public <T> T createProxy(Class<T> proxyInterface, ObjectCreator delegateCreator, String description)
-    {
-        return createProxy(proxyInterface, null, delegateCreator, description);
-    }
-
-    public <T> T createProxy(Class<T> proxyInterface, Class<? extends T> delegateClass, ObjectCreator delegateCreator, String description)
-    {
-        ClassFab classFab = newClass(proxyInterface);
-
-        classFab.addField("_creator", Modifier.PRIVATE | Modifier.FINAL, ObjectCreator.class);
-
-        classFab.addConstructor(new Class[]
-        { ObjectCreator.class }, null, "_creator = $1;");
-
-        String body = format("return (%s) _creator.createObject();", proxyInterface.getName());
-
-        MethodSignature sig = new MethodSignature(proxyInterface, "_delegate", null, null);
-
-        classFab.addMethod(Modifier.PRIVATE, sig, body);
-        
-        classFab.proxyMethodsToDelegate(proxyInterface, "_delegate()", description);
-        
-        if(delegateClass != null)
-        {
-            classFab.copyClassAnnotationsFromDelegate(delegateClass);
-            
-            classFab.copyMethodAnnotationsFromDelegate(proxyInterface, (Class)delegateClass);
-        }
-        
-        Class proxyClass = classFab.createClass();
-
-        try
-        {
-            Object proxy = proxyClass.getConstructors()[0].newInstance(delegateCreator);
-
-            return proxyInterface.cast(proxy);
-        }
-        catch (Exception ex)
-        {
-            // This should never happen, so we won't go to a lot of trouble
-            // reporting it.
-            throw new RuntimeException(ex.getMessage(), ex);
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java
deleted file mode 100644
index 2bb400c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImpl.java
+++ /dev/null
@@ -1,324 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassNameLocator;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.ioc.util.Stack;
-
-import java.io.*;
-import java.net.JarURLConnection;
-import java.net.URL;
-import java.net.URLConnection;
-import java.util.Collection;
-import java.util.Enumeration;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.regex.Pattern;
-
-public class ClassNameLocatorImpl implements ClassNameLocator
-{
-    private static final String CLASS_SUFFIX = ".class";
-
-    private final ClassLoader contextClassLoader = Thread.currentThread().getContextClassLoader();
-
-    private final ClasspathURLConverter converter;
-
-    // This matches normal class files but not inner class files (which contain a '$'.
-
-    private final Pattern CLASS_NAME_PATTERN = Pattern.compile("^\\p{javaJavaIdentifierStart}[\\p{javaJavaIdentifierPart}&&[^\\$]]*\\.class$", Pattern.CASE_INSENSITIVE);
-
-    private final Pattern FOLDER_NAME_PATTERN = Pattern.compile("^\\p{javaJavaIdentifierStart}[\\p{javaJavaIdentifierPart}]*$", Pattern.CASE_INSENSITIVE);
-
-    static class Queued
-    {
-        final URL packageURL;
-
-        final String packagePath;
-
-        public Queued(final URL packageURL, final String packagePath)
-        {
-            this.packageURL = packageURL;
-            this.packagePath = packagePath;
-        }
-    }
-
-    public ClassNameLocatorImpl(ClasspathURLConverter converter)
-    {
-        this.converter = converter;
-    }
-
-    /**
-     * Synchronization should not be necessary, but perhaps the underlying ClassLoader's are sensitive to threading.
-     */
-    public synchronized Collection<String> locateClassNames(String packageName)
-    {
-        String packagePath = packageName.replace('.', '/') + "/";
-
-        try
-        {
-
-            return findClassesWithinPath(packagePath);
-
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private Collection<String> findClassesWithinPath(String packagePath) throws IOException
-    {
-        Collection<String> result = CollectionFactory.newList();
-
-        Enumeration<URL> urls = contextClassLoader.getResources(packagePath);
-
-        while (urls.hasMoreElements())
-        {
-            URL url = urls.nextElement();
-
-            URL converted = converter.convert(url);
-
-            scanURL(packagePath, result, converted);
-        }
-
-        return result;
-    }
-
-    private void scanURL(String packagePath, Collection<String> componentClassNames, URL url) throws IOException
-    {
-        URLConnection connection = url.openConnection();
-
-        JarFile jarFile;
-
-        if (connection instanceof JarURLConnection)
-        {
-            jarFile = ((JarURLConnection) connection).getJarFile();
-        }
-        else
-        {
-            jarFile = getAlternativeJarFile(url);
-        }
-
-        if (jarFile != null)
-        {
-            scanJarFile(packagePath, componentClassNames, jarFile);
-        }
-        else if (supportsDirStream(url))
-        {
-            Stack<Queued> queue = CollectionFactory.newStack();
-
-            queue.push(new Queued(url, packagePath));
-
-            while (!queue.isEmpty())
-            {
-                Queued queued = queue.pop();
-
-                scanDirStream(queued.packagePath, queued.packageURL, componentClassNames, queue);
-            }
-        }
-        else
-        {
-            // Try scanning file system.
-            String packageName = packagePath.replace("/", ".");
-            if (packageName.endsWith("."))
-            {
-                packageName = packageName.substring(0, packageName.length() - 1);
-            }
-            scanDir(packageName, new File(url.getFile()), componentClassNames);
-        }
-
-    }
-
-    /**
-     * Check whether container supports opening a stream on a dir/package to get a list of its contents.
-     *
-     * @param packageURL
-     * @return
-     */
-    private boolean supportsDirStream(URL packageURL)
-    {
-        InputStream is = null;
-        try
-        {
-            is = packageURL.openStream();
-            return true;
-        }
-        catch (FileNotFoundException ex)
-        {
-            return false;
-        }
-        catch (IOException e)
-        {
-            return false;
-        }
-        finally
-        {
-            InternalUtils.close(is);
-        }
-    }
-
-    private void scanDirStream(String packagePath, URL packageURL, Collection<String> componentClassNames,
-                               Stack<Queued> queue) throws IOException
-    {
-        InputStream is;
-
-        try
-        {
-            is = new BufferedInputStream(packageURL.openStream());
-        }
-        catch (FileNotFoundException ex)
-        {
-            // This can happen for certain application servers (JBoss 4.0.5 for example), that
-            // export part of the exploded WAR for deployment, but leave part (WEB-INF/classes)
-            // unexploded.
-
-            return;
-        }
-
-        Reader reader = new InputStreamReader(is);
-        LineNumberReader lineReader = new LineNumberReader(reader);
-
-        String packageName = null;
-
-        try
-        {
-            while (true)
-            {
-                String line = lineReader.readLine();
-
-                if (line == null) break;
-
-                if (CLASS_NAME_PATTERN.matcher(line).matches())
-                {
-                    if (packageName == null) packageName = packagePath.replace('/', '.');
-
-                    // packagePath ends with '/', packageName ends with '.'
-
-                    String fullClassName = packageName + line.substring(0, line.length() - CLASS_SUFFIX.length());
-
-                    componentClassNames.add(fullClassName);
-
-                    continue;
-                }
-
-                // This should match just directories.  It may also match files that have no extension;
-                // when we read those, none of the lines should look like class files.
-
-                if (FOLDER_NAME_PATTERN.matcher(line).matches())
-                {
-                    URL newURL = new URL(packageURL.toExternalForm() + line + "/");
-                    String newPackagePath = packagePath + line + "/";
-
-                    queue.push(new Queued(newURL, newPackagePath));
-                }
-            }
-
-            lineReader.close();
-            lineReader = null;
-        }
-        finally
-        {
-            InternalUtils.close(lineReader);
-        }
-
-    }
-
-    private void scanJarFile(String packagePath, Collection<String> componentClassNames, JarFile jarFile)
-    {
-        Enumeration<JarEntry> e = jarFile.entries();
-
-        while (e.hasMoreElements())
-        {
-            String name = e.nextElement().getName();
-
-            if (!name.startsWith(packagePath)) continue;
-
-            if (!name.endsWith(CLASS_SUFFIX)) continue;
-
-            if (name.contains("$")) continue;
-
-            // Strip off .class and convert the slashes back to periods.
-
-            String className = name.substring(0, name.length() - CLASS_SUFFIX.length()).replace("/", ".");
-
-            componentClassNames.add(className);
-        }
-    }
-
-    /**
-     * Scan a dir for classes. Will recursively look in the supplied directory and all sub directories.
-     *
-     * @param packageName         Name of package that this directory corresponds to.
-     * @param dir                 Dir to scan for clases.
-     * @param componentClassNames List of class names that have been found.
-     */
-    private void scanDir(String packageName, File dir, Collection<String> componentClassNames)
-    {
-        if (dir.exists() && dir.isDirectory())
-        {
-            for (File file : dir.listFiles())
-            {
-                String fileName = file.getName();
-                if (file.isDirectory())
-                {
-                    scanDir(packageName + "." + fileName, file, componentClassNames);
-                }
-                else if (fileName.endsWith(CLASS_SUFFIX))
-                {
-                    String className = packageName + "." + fileName.substring(0,
-                                                                              fileName.length() - CLASS_SUFFIX.length());
-                    componentClassNames.add(className);
-                }
-            }
-        }
-    }
-
-    /**
-     * For URLs to JARs that do not use JarURLConnection - allowed by the servlet spec - attempt to produce a JarFile
-     * object all the same. Known servlet engines that function like this include Weblogic and OC4J. This is not a full
-     * solution, since an unpacked WAR or EAR will not have JAR "files" as such.
-     *
-     * @param url URL of jar
-     * @return JarFile or null
-     * @throws java.io.IOException If error occurs creating jar file
-     */
-    private JarFile getAlternativeJarFile(URL url) throws IOException
-    {
-        String urlFile = url.getFile();
-        // Trim off any suffix - which is prefixed by "!/" on Weblogic
-        int separatorIndex = urlFile.indexOf("!/");
-
-        // OK, didn't find that. Try the less safe "!", used on OC4J
-        if (separatorIndex == -1)
-        {
-            separatorIndex = urlFile.indexOf('!');
-        }
-        if (separatorIndex != -1)
-        {
-            String jarFileUrl = urlFile.substring(0, separatorIndex);
-            // And trim off any "file:" prefix.
-            if (jarFileUrl.startsWith("file:"))
-            {
-                jarFileUrl = jarFileUrl.substring("file:".length());
-            }
-            return new JarFile(jarFileUrl);
-        }
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java
deleted file mode 100644
index 9c3d6ed..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClassPropertyAdapterImpl.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
-import org.apache.tapestry5.ioc.internal.util.GenericsUtils;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.Map;
-
-public class ClassPropertyAdapterImpl implements ClassPropertyAdapter
-{
-    private final Map<String, PropertyAdapter> adapters = newCaseInsensitiveMap();
-
-    private final Class beanType;
-
-    public ClassPropertyAdapterImpl(Class beanType, List<PropertyDescriptor> descriptors)
-    {
-        this.beanType = beanType;
-
-        for (PropertyDescriptor pd : descriptors)
-        {
-            // Indexed properties will have a null propertyType (and a non-null
-            // indexedPropertyType). We ignore indexed properties.
-
-            if (pd.getPropertyType() == null)
-                continue;
-
-            Method readMethod = pd.getReadMethod();
-
-            Class propertyType = readMethod == null ? pd.getPropertyType() : GenericsUtils.extractGenericReturnType(
-                    beanType, readMethod);
-
-            PropertyAdapter pa = new PropertyAdapterImpl(this, pd.getName(), propertyType, readMethod, pd
-                    .getWriteMethod());
-
-            adapters.put(pa.getName(), pa);
-        }
-
-        // Now, add any public fields that do not conflict
-
-        for (Field f : beanType.getFields())
-        {
-            if(Modifier.isStatic(f.getModifiers()))
-                continue;
-            
-            String name = f.getName();
-
-            if (!adapters.containsKey(name))
-            {
-                Class propertyType = GenericsUtils.extractGenericFieldType(beanType, f);
-                PropertyAdapter pa = new PropertyAdapterImpl(this, name, propertyType, f);
-
-                adapters.put(name, pa);
-            }
-        }
-    }
-
-    public Class getBeanType()
-    {
-        return beanType;
-    }
-
-    @Override
-    public String toString()
-    {
-        String names = InternalUtils.joinSorted(adapters.keySet());
-
-        return String.format("<ClassPropertyAdaptor %s : %s>", beanType.getName(), names);
-    }
-
-    public List<String> getPropertyNames()
-    {
-        return InternalUtils.sortedKeys(adapters);
-    }
-
-    public PropertyAdapter getPropertyAdapter(String name)
-    {
-        return adapters.get(name);
-    }
-
-    public Object get(Object instance, String propertyName)
-    {
-        return adaptorFor(propertyName).get(instance);
-    }
-
-    public void set(Object instance, String propertyName, Object value)
-    {
-        adaptorFor(propertyName).set(instance, value);
-    }
-
-    private PropertyAdapter adaptorFor(String name)
-    {
-        PropertyAdapter pa = adapters.get(name);
-
-        if (pa == null)
-            throw new IllegalArgumentException(ServiceMessages.noSuchProperty(beanType, name));
-
-        return pa;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClasspathResourceSymbolProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClasspathResourceSymbolProvider.java
deleted file mode 100644
index 0bf89e0..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClasspathResourceSymbolProvider.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.ClasspathResource;
-
-/**
- * Makes a {@link org.apache.tapestry5.ioc.Resource} on the classpath available as a {@link
- * org.apache.tapestry5.ioc.services.SymbolProvider}
- *
- * @since 5.1.0.5
- */
-public class ClasspathResourceSymbolProvider extends ResourceSymbolProvider
-{
-    public ClasspathResourceSymbolProvider(String path)
-    {
-        super(new ClasspathResource(path));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClasspathURLConverterImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClasspathURLConverterImpl.java
deleted file mode 100644
index a0336fe..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ClasspathURLConverterImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-
-import java.net.URL;
-
-/**
- * Default implementation that returns the URLs unchanged.
- */
-public class ClasspathURLConverterImpl implements ClasspathURLConverter
-{
-    public URL convert(URL url)
-    {
-        return url;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CompoundCoercion.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CompoundCoercion.java
deleted file mode 100644
index f66e090..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CompoundCoercion.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.Coercion;
-
-/**
- * Combines two coercions to create a coercsion through an intermediate type.
- *
- * @param <S> The source (input) type
- * @param <I> The intermediate type
- * @param <T> The target (output) type
- */
-public class CompoundCoercion<S, I, T> implements Coercion<S, T>
-{
-    private final Coercion<S, I> op1;
-
-    private final Coercion<I, T> op2;
-
-    public CompoundCoercion(Coercion<S, I> op1, Coercion<I, T> op2)
-    {
-        this.op1 = op1;
-        this.op2 = op2;
-    }
-
-    public T coerce(S input)
-    {
-        // Run the input through the first operation (S --> I), then run the result of that through
-        // the second operation (I --> T).
-
-        I intermediate = op1.coerce(input);
-
-        return op2.coerce(intermediate);
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("%s, %s", op1, op2);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ConstantInjector.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ConstantInjector.java
deleted file mode 100644
index 5fdc94e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ConstantInjector.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used to inject constants into fields via the constructor.
- */
-public interface ConstantInjector
-{
-    /**
-     * Injects a value.  On the first injection of the value, it is assigned a field (of the given type).
-     *
-     * @param type     type of field
-     * @param instance instance of the type
-     * @return name of field in generated class containing the value
-     */
-    <T> String inject(Class<T> type, T instance);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ConstantInjectorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ConstantInjectorImpl.java
deleted file mode 100644
index 6d720f6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ConstantInjectorImpl.java
+++ /dev/null
@@ -1,110 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-import org.apache.tapestry5.ioc.util.IdAllocator;
-
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.Map;
-
-public class ConstantInjectorImpl implements ConstantInjector
-{
-    private final ClassFab classFab;
-
-    private final IdAllocator allocator = new IdAllocator("_");
-
-    private class InjectedValue
-    {
-        final Class type;
-        final Object value;
-        final String fieldName;
-
-        private InjectedValue(Class type, Object value, String fieldName)
-        {
-            this.type = type;
-            this.value = value;
-            this.fieldName = fieldName;
-        }
-    }
-
-    private final List<InjectedValue> injections = CollectionFactory.newList();
-
-    private final Map<Object, String> instanceToFieldName = CollectionFactory.newMap();
-
-    public ConstantInjectorImpl(ClassFab classFab)
-    {
-        this.classFab = classFab;
-    }
-
-    public <T> String inject(Class<T> type, T instance)
-    {
-        String fieldName = instanceToFieldName.get(instance);
-
-        if (fieldName == null)
-        {
-            fieldName = allocator.allocateId(type.getSimpleName().toLowerCase());
-
-            injections.add(new InjectedValue(type, instance, fieldName));
-
-            classFab.addField(fieldName, Modifier.PRIVATE | Modifier.FINAL, type);
-
-            instanceToFieldName.put(instance, fieldName);
-        }
-
-        return fieldName;
-    }
-
-    void implementConstructor()
-    {
-        int count = injections.size();
-
-        Class[] types = new Class[count];
-
-        BodyBuilder builder = new BodyBuilder().begin();
-
-        for (int i = 0; i < count; i++)
-        {
-            InjectedValue injected = injections.get(i);
-
-            types[i] = injected.type;
-
-            builder.addln("%s = $%d;", injected.fieldName, i + 1);
-        }
-
-        builder.end();
-
-        classFab.addConstructor(types, null, builder.toString());
-    }
-
-    public Object[] getParameters()
-    {
-        int count = injections.size();
-
-        Object[] values = new Object[count];
-
-        for (int i = 0; i < count; i++)
-        {
-            InjectedValue injected = injections.get(i);
-
-            values[i] = injected.value;
-        }
-
-        return values;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CtClassSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CtClassSource.java
deleted file mode 100644
index aac6235..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CtClassSource.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import javassist.CtClass;
-
-/**
- * Used when generating new classes on the fly.
- *
- * @see org.apache.tapestry5.ioc.services.ClassFactory
- */
-public interface CtClassSource
-{
-    /**
-     * Returns the number of classes created.
-     */
-    int getCreatedClassCount();
-
-    /**
-     * Converts an existing class to a CtClass instance.
-     */
-    CtClass toCtClass(Class searchClass);
-
-    /**
-     * Converts a class name to a CtClass instance.
-     */
-    CtClass toCtClass(String name);
-
-    /**
-     * Createa a new CtClass instance.
-     */
-    CtClass newClass(String name, Class superClass);
-
-    /**
-     * Used after constructing the CtClass fully, to convert it into a Class ready to be instantiated.
-     */
-    Class createClass(CtClass ctClass);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CtClassSourceImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CtClassSourceImpl.java
deleted file mode 100644
index 0eab204..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/CtClassSourceImpl.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import javassist.CtClass;
-import javassist.NotFoundException;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-
-import java.security.ProtectionDomain;
-
-/**
- * Wrapper around Javassist's {@link javassist.ClassPool} that manages the creation of new instances of {@link
- * javassist.CtClass} and converts finished CtClass's into instantiable Classes.
- */
-public class CtClassSourceImpl implements CtClassSource
-{
-    private static final String WRITE_DIR = System.getProperty("javassist-write-dir");
-
-    private final ClassFactoryClassPool pool;
-
-    private final ClassLoader loader;
-
-    private final ProtectionDomain domain = getClass().getProtectionDomain();
-
-    private int createdClassCount = 0;
-
-    /**
-     * Returns the number of classes (and interfaces) created by this source.
-     */
-    public synchronized int getCreatedClassCount()
-    {
-        return createdClassCount;
-    }
-
-    public CtClassSourceImpl(ClassFactoryClassPool pool, ClassLoader loader)
-    {
-        this.pool = pool;
-        this.loader = loader;
-    }
-
-    public synchronized CtClass toCtClass(Class searchClass)
-    {
-        ClassLoader loader = searchClass.getClassLoader();
-
-        // Add the class loader for the searchClass to the class pool and
-        // delegating class loader if needed.
-
-        pool.addClassLoaderIfNeeded(loader);
-
-        String name = ClassFabUtils.toJavaClassName(searchClass);
-
-        return toCtClass(name);
-    }
-
-    public CtClass toCtClass(String name)
-    {
-        try
-        {
-            return pool.get(name);
-        }
-        catch (NotFoundException ex)
-        {
-            throw new RuntimeException(ServiceMessages.unableToLookupClass(name, ex), ex);
-        }
-    }
-
-    public CtClass newClass(String name, Class superClass)
-    {
-        CtClass ctSuperClass = toCtClass(superClass);
-
-        return pool.makeClass(name, ctSuperClass);
-    }
-
-
-    public Class createClass(CtClass ctClass)
-    {
-        if (WRITE_DIR != null) writeClass(ctClass);
-
-        try
-        {
-            Class result = pool.toClass(ctClass, loader, domain);
-
-            synchronized (this)
-            {
-                createdClassCount++;
-            }
-
-            return result;
-        }
-        catch (Throwable ex)
-        {
-            throw new RuntimeException(ServiceMessages.unableToWriteClass(ctClass, ex), ex);
-        }
-    }
-
-    private void writeClass(CtClass ctClass)
-    {
-        try
-        {
-            ctClass.debugWriteFile(WRITE_DIR);
-        }
-        catch (Exception ex)
-        {
-            ex.printStackTrace(System.err);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/DefaultImplementationBuilderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/DefaultImplementationBuilderImpl.java
deleted file mode 100644
index 617c83b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/DefaultImplementationBuilderImpl.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newConcurrentMap;
-import org.apache.tapestry5.ioc.services.*;
-
-import static java.lang.String.format;
-import java.util.Map;
-
-/**
- *
- */
-public class DefaultImplementationBuilderImpl implements DefaultImplementationBuilder
-{
-    private final Map<Class, Object> cache = newConcurrentMap();
-
-    private final ClassFactory classFactory;
-
-    public DefaultImplementationBuilderImpl(@Builtin ClassFactory classFactory)
-    {
-        this.classFactory = classFactory;
-    }
-
-    public <S> S createDefaultImplementation(Class<S> serviceInterface)
-    {
-        S instance = serviceInterface.cast(cache.get(serviceInterface));
-
-        if (instance == null)
-        {
-            instance = createInstance(serviceInterface);
-            cache.put(serviceInterface, instance);
-        }
-
-        return instance;
-    }
-
-    /**
-     * Creates a class and an instance of that class. Updates the cache and returns the instance.
-     */
-    private <S> S createInstance(Class<S> serviceInterface)
-    {
-        // In rare race conditions, we may end up creating two (or more)
-        // NOOP class/instance pairs for the same interface. You need multiple threads
-        // asking for a NOOP class for the same interface pretty much simulataneously.
-        // We just let this happen.
-
-        Class<S> noopClass = createClass(serviceInterface);
-
-        try
-        {
-            S instance = noopClass.newInstance();
-
-            cache.put(serviceInterface, instance);
-
-            return instance;
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private <S> Class<S> createClass(Class<S> serviceInterface)
-    {
-        ClassFab cf = classFactory.newClass(serviceInterface);
-
-        MethodIterator mi = new MethodIterator(serviceInterface);
-
-        while (mi.hasNext())
-        {
-            MethodSignature sig = mi.next();
-
-            cf.addNoOpMethod(sig);
-        }
-
-        if (!mi.getToString()) cf.addToString(format("<NoOp %s>", serviceInterface.getName()));
-
-        return cf.createClass();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalysisImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalysisImpl.java
deleted file mode 100644
index 48a153a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalysisImpl.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.ExceptionAnalysis;
-import org.apache.tapestry5.ioc.services.ExceptionInfo;
-
-import static java.util.Collections.unmodifiableList;
-import java.util.List;
-
-/**
- *
- */
-public class ExceptionAnalysisImpl implements ExceptionAnalysis
-{
-    private final List<ExceptionInfo> infos;
-
-    public ExceptionAnalysisImpl(final List<ExceptionInfo> infos)
-    {
-        this.infos = unmodifiableList(infos);
-    }
-
-    public List<ExceptionInfo> getExceptionInfos()
-    {
-        return infos;
-    }
-
-    @Override
-    public String toString()
-    {
-        ExceptionInfo first = infos.get(0);
-
-        return String.format("ExceptionAnalysis[%s -- %s]", first.getClassName(), first
-                .getMessage());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java
deleted file mode 100644
index fb96a59..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImpl.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.*;
-
-import java.util.*;
-
-public class ExceptionAnalyzerImpl implements ExceptionAnalyzer
-{
-    private final PropertyAccess propertyAccess;
-
-    private final Set<String> throwableProperties;
-
-    /**
-     * A tuple used to communicate up a lavel both the exception info
-     * and the next exception in the stack.
-     */
-    private class ExceptionData
-    {
-        final ExceptionInfo exceptionInfo;
-        final Throwable cause;
-
-        public ExceptionData(ExceptionInfo exceptionInfo, Throwable cause)
-        {
-            this.exceptionInfo = exceptionInfo;
-            this.cause = cause;
-        }
-    }
-
-    public ExceptionAnalyzerImpl(PropertyAccess propertyAccess)
-    {
-        this.propertyAccess = propertyAccess;
-
-        throwableProperties = CollectionFactory.newSet(this.propertyAccess.getAdapter(Throwable.class)
-                .getPropertyNames());
-    }
-
-    public ExceptionAnalysis analyze(Throwable rootException)
-    {
-        List<ExceptionInfo> list = CollectionFactory.newList();
-
-        Throwable t = rootException;
-
-        ExceptionInfo previousInfo = null;
-
-        while (t != null)
-        {
-            ExceptionData data = extractData(t);
-
-            ExceptionInfo info = data.exceptionInfo;
-
-            if (addsValue(previousInfo, info))
-            {
-                list.add(info);
-                previousInfo = info;
-            }
-
-            t = data.cause;
-        }
-
-        return new ExceptionAnalysisImpl(list);
-    }
-
-    /**
-     * We want to filter out exceptions that do not provide any additional value. Additional value includes: an
-     * exception message not present in the containing exception or a property value not present in the containing
-     * exception. Also the first exception is always valued and the last exception (with the stack trace) is valued.
-     * 
-     * @param previousInfo
-     * @param info
-     * @return
-     */
-    private boolean addsValue(ExceptionInfo previousInfo, ExceptionInfo info)
-    {
-        if (previousInfo == null)
-            return true;
-
-        if (!info.getStackTrace().isEmpty())
-            return true;
-
-        if (!previousInfo.getMessage().contains(info.getMessage()))
-            return true;
-
-        for (String name : info.getPropertyNames())
-        {
-            if (info.getProperty(name).equals(previousInfo.getProperty(name)))
-                continue;
-
-            // Found something new and different at this level.
-
-            return true;
-        }
-
-        // This exception adds nothing that is not present at a higher level.
-
-        return false;
-    }
-
-    private ExceptionData extractData(Throwable t)
-    {
-        Map<String, Object> properties = CollectionFactory.newMap();
-
-        ClassPropertyAdapter adapter = propertyAccess.getAdapter(t);
-
-        Throwable cause = null;
-
-        for (String name : adapter.getPropertyNames())
-        {
-            PropertyAdapter pa = adapter.getPropertyAdapter(name);
-
-            if (!pa.isRead())
-                continue;
-
-            if (cause == null && Throwable.class.isAssignableFrom(pa.getType()))
-            {
-                // Ignore the property, but track it as the cause.
-
-                Throwable nestedException = (Throwable) pa.get(t);
-
-                // Handle the case where an exception is its own cause (avoid endless loop!)
-                if (t != nestedException)
-                    cause = nestedException;
-
-                continue;
-            }
-
-            // Otherwise, ignore properties defined by the Throwable class
-
-            if (throwableProperties.contains(name))
-                continue;
-
-            Object value = pa.get(t);
-
-            if (value == null)
-                continue;
-
-            // An interesting property, let's save it for the analysis.
-
-            properties.put(name, value);
-        }
-
-        // Provide the stack trace only at the deepest exception.
-
-        List<StackTraceElement> stackTrace = Collections.emptyList();
-
-        // Usually, I'd use a terniary expression here, but Generics gets in
-        // the way here.
-
-        if (cause == null)
-            stackTrace = Arrays.asList(t.getStackTrace());
-
-        ExceptionInfo info = new ExceptionInfoImpl(t, properties, stackTrace);
-
-        return new ExceptionData(info, cause);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionInfoImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionInfoImpl.java
deleted file mode 100644
index 51820c3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionInfoImpl.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ExceptionInfo;
-
-import static java.util.Collections.unmodifiableList;
-import java.util.List;
-import java.util.Map;
-
-public class ExceptionInfoImpl implements ExceptionInfo
-{
-    private final String className;
-
-    private final String message;
-
-    private final Map<String, Object> properties;
-
-    private final List<StackTraceElement> stackTrace;
-
-    public ExceptionInfoImpl(Throwable t, Map<String, Object> properties, List<StackTraceElement> stackTrace)
-    {
-        className = t.getClass().getName();
-        message = t.getMessage() != null ? t.getMessage() : "";
-
-        this.properties = properties;
-        this.stackTrace = unmodifiableList(stackTrace);
-    }
-
-    public String getClassName()
-    {
-        return className;
-    }
-
-    public String getMessage()
-    {
-        return message;
-    }
-
-    public Object getProperty(String name)
-    {
-        return properties.get(name);
-    }
-
-    public List<String> getPropertyNames()
-    {
-        return InternalUtils.sortedKeys(properties);
-    }
-
-    public List<StackTraceElement> getStackTrace()
-    {
-        return stackTrace;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionTrackerImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionTrackerImpl.java
deleted file mode 100644
index 43a1540..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ExceptionTrackerImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.util.Set;
-
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ExceptionTracker;
-
-@Scope(ScopeConstants.PERTHREAD)
-@PreventServiceDecoration
-public class ExceptionTrackerImpl implements ExceptionTracker
-{
-    private final Set<Throwable> exceptions = CollectionFactory.newSet();
-
-    public boolean exceptionLogged(Throwable exception)
-    {
-        boolean result = exceptions.contains(exception);
-
-        exceptions.add(exception);
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/FilterMethodAnalyzer.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/FilterMethodAnalyzer.java
deleted file mode 100644
index f2d553e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/FilterMethodAnalyzer.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.MethodSignature;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.PipelineBuilderImpl} to analyze service interface methods
- * against filter interface methods to find the position of the extra service parameter (in the filter method).
- */
-public class FilterMethodAnalyzer
-{
-    private final Class serviceInterface;
-
-    FilterMethodAnalyzer(Class serviceInterface)
-    {
-        this.serviceInterface = serviceInterface;
-    }
-
-    public int findServiceInterfacePosition(MethodSignature ms, MethodSignature fms)
-    {
-        if (ms.getReturnType() != fms.getReturnType()) return -1;
-
-        if (!ms.getName().equals(fms.getName())) return -1;
-
-        Class[] filterParameters = fms.getParameterTypes();
-        int filterParameterCount = filterParameters.length;
-        Class[] serviceParameters = ms.getParameterTypes();
-
-        if (filterParameterCount != (serviceParameters.length + 1)) return -1;
-
-        // TODO: check compatible exceptions!
-
-        // This needs work; it assumes the first occurance of the service interface
-        // in the filter interface method signature is the right match. That will suit
-        // most of the time.
-
-        boolean found = false;
-        int result = -1;
-
-        for (int i = 0; i < filterParameterCount; i++)
-        {
-            if (filterParameters[i] == serviceInterface)
-            {
-                result = i;
-                found = true;
-                break;
-            }
-        }
-
-        if (!found) return -1;
-
-        // Check that all the parameters before and after the service interface still
-        // match.
-
-        for (int i = 0; i < result; i++)
-        {
-            if (filterParameters[i] != serviceParameters[i]) return -1;
-        }
-
-        for (int i = result + 1; i < filterParameterCount; i++)
-        {
-            if (filterParameters[i] != serviceParameters[i - 1]) return -1;
-        }
-
-        return result;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/JustInTimeObjectCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/JustInTimeObjectCreator.java
deleted file mode 100644
index e38b551..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/JustInTimeObjectCreator.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.EagerLoadServiceProxy;
-import org.apache.tapestry5.ioc.internal.ServiceActivityTracker;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.apache.tapestry5.ioc.services.Status;
-
-/**
- * Invoked from a fabricated service delegate to get or realize (instantiate and configure) the service implementation.
- * This includes synchronization logic, to prevent multiple threads from attempting to realize the same service at the
- * same time (a service should be realized only once). The additional interfaces implemented by this class support eager
- * loading of services (at application startup), and orderly shutdown of proxies.
- */
-public class JustInTimeObjectCreator implements ObjectCreator, EagerLoadServiceProxy,
-        RegistryShutdownListener
-{
-    private final ServiceActivityTracker tracker;
-
-    private volatile ObjectCreator creator;
-
-    private volatile Object object;
-
-    private final String serviceId;
-
-    public JustInTimeObjectCreator(ServiceActivityTracker tracker, ObjectCreator creator,
-                                   String serviceId)
-    {
-        this.tracker = tracker;
-        this.creator = creator;
-        this.serviceId = serviceId;
-    }
-
-    /**
-     * Checks to see if the proxy has been shutdown, then invokes {@link ObjectCreator#createObject()} if it has not
-     * already done so.
-     *
-     * @throws IllegalStateException if the registry has been shutdown
-     */
-    public Object createObject()
-    {
-        if (object == null)
-            obtainObjectFromCreator();
-
-        return object;
-    }
-
-    private synchronized void obtainObjectFromCreator()
-    {
-        if (object != null) return;
-
-        try
-        {
-            object = creator.createObject();
-
-            // And if that's successful ...
-
-            tracker.setStatus(serviceId, Status.REAL);
-
-            creator = null;
-        }
-        catch (RuntimeException ex)
-        {
-            throw new RuntimeException(ServiceMessages.serviceBuildFailure(serviceId, ex), ex);
-        }
-    }
-
-    /**
-     * Invokes {@link #createObject()} to force the creation of the underlying service.
-     */
-    public void eagerLoadService()
-    {
-        // Force object creation now
-
-        createObject();
-    }
-
-    /**
-     * Sets the shutdown flag and releases the object and the creator.
-     */
-    public void registryDidShutdown()
-    {
-        creator = new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                throw new IllegalStateException(ServiceMessages.registryShutdown(serviceId));
-            }
-        };
-
-        object = null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LazyAdvisorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LazyAdvisorImpl.java
deleted file mode 100644
index 61689db..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LazyAdvisorImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.Method;
-
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.annotations.NotLazy;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.LazyAdvisor;
-import org.apache.tapestry5.ioc.services.ThunkCreator;
-
-@PreventServiceDecoration
-public class LazyAdvisorImpl implements LazyAdvisor
-{
-    private final ThunkCreator thunkCreator;
-
-    public LazyAdvisorImpl(ThunkCreator thunkCreator)
-    {
-        this.thunkCreator = thunkCreator;
-    }
-
-    public void addLazyMethodInvocationAdvice(MethodAdviceReceiver methodAdviceReceiver)
-    {
-        for (Method m : methodAdviceReceiver.getInterface().getMethods())
-        {
-            if (filter(m))
-                addAdvice(m, methodAdviceReceiver);
-        }
-    }
-
-    private void addAdvice(Method method, MethodAdviceReceiver receiver)
-    {
-        final Class thunkType = method.getReturnType();
-
-        final String description = String.format("<%s Thunk for %s>", thunkType.getName(), InternalUtils
-                .asString(method));
-
-        MethodAdvice advice = new MethodAdvice()
-        {
-            /**
-             * When the method is invoked, we don't immediately proceed. Intead, we return a thunk instance
-             * that defers its behavior to the lazily invoked invocation.
-             */
-            public void advise(final Invocation invocation)
-            {
-                ObjectCreator deferred = new ObjectCreator()
-                {
-                    public Object createObject()
-                    {
-                        invocation.proceed();
-
-                        return invocation.getResult();
-                    }
-                };
-
-                ObjectCreator cachingObjectCreator = new CachingObjectCreator(deferred);
-
-                Object thunk = thunkCreator.createThunk(thunkType, cachingObjectCreator, description);
-
-                invocation.overrideResult(thunk);
-            }
-        };
-
-        receiver.adviseMethod(method, advice);
-    }
-
-    private boolean filter(Method method)
-    {
-        if (method.getAnnotation(NotLazy.class) != null)
-            return false;
-
-        if (!method.getReturnType().isInterface())
-            return false;
-
-        for (Class extype : method.getExceptionTypes())
-        {
-            if (!RuntimeException.class.isAssignableFrom(extype))
-                return false;
-        }
-
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingAdvice.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingAdvice.java
deleted file mode 100644
index 3e147d3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingAdvice.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.services.ExceptionTracker;
-import org.slf4j.Logger;
-
-public class LoggingAdvice implements MethodAdvice
-{
-    private final MethodLogger methodLogger;
-
-    public LoggingAdvice(Logger logger, ExceptionTracker exceptionTracker)
-    {
-        methodLogger = new MethodLogger(logger, exceptionTracker);
-    }
-
-    public void advise(Invocation invocation)
-    {
-        boolean debug = methodLogger.isDebugEnabled();
-
-        if (!debug)
-        {
-            invocation.proceed();
-            return;
-        }
-
-        methodLogger.entry(invocation);
-
-        try
-        {
-            invocation.proceed();
-        }
-        catch (RuntimeException ex)
-        {
-            methodLogger.fail(invocation, ex);
-
-            throw ex;
-        }
-
-        if (invocation.isFail())
-        {
-            Exception thrown = invocation.getThrown(Exception.class);
-
-            methodLogger.fail(invocation, thrown);
-
-            return;
-        }
-
-        methodLogger.exit(invocation);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingAdvisorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingAdvisorImpl.java
deleted file mode 100644
index 51102d2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingAdvisorImpl.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.services.ExceptionTracker;
-import org.apache.tapestry5.ioc.services.LoggingAdvisor;
-import org.slf4j.Logger;
-
-@PreventServiceDecoration
-public class LoggingAdvisorImpl implements LoggingAdvisor
-{
-    private final ExceptionTracker exceptionTracker;
-
-    public LoggingAdvisorImpl(ExceptionTracker exceptionTracker)
-    {
-        this.exceptionTracker = exceptionTracker;
-    }
-
-    public <T> void addLoggingAdvice(Logger logger, MethodAdviceReceiver receiver)
-    {
-        MethodAdvice advice = new LoggingAdvice(logger, exceptionTracker);
-
-        receiver.adviseAllMethods(advice);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingDecoratorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingDecoratorImpl.java
deleted file mode 100644
index f5cc903..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/LoggingDecoratorImpl.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-import org.apache.tapestry5.ioc.services.LoggingAdvisor;
-import org.apache.tapestry5.ioc.services.LoggingDecorator;
-import org.slf4j.Logger;
-
-@PreventServiceDecoration
-public class LoggingDecoratorImpl implements LoggingDecorator
-{
-    private final AspectDecorator aspectDecorator;
-
-    private final LoggingAdvisor advisor;
-
-    public LoggingDecoratorImpl(AspectDecorator aspectDecorator, LoggingAdvisor advisor)
-    {
-        this.aspectDecorator = aspectDecorator;
-        this.advisor = advisor;
-    }
-
-    public <T> T build(Class<T> serviceInterface, T delegate, String serviceId, final Logger logger)
-    {
-        AspectInterceptorBuilder<T> builder = aspectDecorator.createBuilder(serviceInterface, delegate, String.format(
-                "<Logging interceptor for %s(%s)>", serviceId, serviceInterface.getName()));
-        advisor.addLoggingAdvice(logger, builder);
-
-        return builder.build();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MapSymbolProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MapSymbolProvider.java
deleted file mode 100644
index 749f3db..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MapSymbolProvider.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-
-import java.util.Map;
-
-/**
- * Provides symbol values from a Map of symbol names and symbol values (typically provided by a Tapestry IOC service
- * configuration).
- */
-public class MapSymbolProvider implements SymbolProvider
-{
-    private final Map<String, String> configuration;
-
-    public MapSymbolProvider(final Map<String, String> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public String valueForSymbol(String symbolName)
-    {
-        return configuration.get(symbolName);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MasterObjectProviderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MasterObjectProviderImpl.java
deleted file mode 100644
index 3ca5701..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MasterObjectProviderImpl.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.MasterObjectProvider;
-
-import java.util.List;
-
-@PreventServiceDecoration
-public class MasterObjectProviderImpl implements MasterObjectProvider
-{
-    private final List<ObjectProvider> configuration;
-
-    private final OperationTracker tracker;
-
-    public MasterObjectProviderImpl(List<ObjectProvider> configuration, OperationTracker tracker)
-    {
-        this.configuration = configuration;
-        this.tracker = tracker;
-    }
-
-    public <T> T provide(final Class<T> objectType, final AnnotationProvider annotationProvider,
-                         final ObjectLocator locator,
-                         final boolean required)
-    {
-        return tracker.invoke(String.format("Resolving object of type %s using MasterObjectProvider",
-                                            ClassFabUtils.toJavaClassName(objectType)), new Invokable<T>()
-        {
-            public T invoke()
-            {
-                for (ObjectProvider provider : configuration)
-                {
-                    T result = provider.provide(objectType, annotationProvider, locator);
-
-                    if (result != null) return result;
-                }
-
-                // If required, then we must obtain it the hard way, by
-                // seeing if there's a single service that implements the interface.
-
-                if (required) return locator.getService(objectType);
-
-                return null;
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MethodInfo.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MethodInfo.java
deleted file mode 100644
index ae16a48..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MethodInfo.java
+++ /dev/null
@@ -1,54 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.lang.reflect.Method;
-import java.util.List;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.AdvisedMethodInvocationBuilder} to track the method being
- * invoked, and the list of {@link org.apache.tapestry5.ioc.MethodAdvice} associated with the method.
- */
-public class MethodInfo
-{
-    private final Method method;
-
-    private final List<MethodAdvice> advice = CollectionFactory.newList();
-
-    public MethodInfo(Method method)
-    {
-        this.method = method;
-    }
-
-    void addAdvice(MethodAdvice advice)
-    {
-        this.advice.add(advice);
-    }
-
-    public int getAdviceCount() { return advice.size(); }
-
-    public MethodAdvice getAdvice(int index)
-    {
-        return advice.get(index);
-    }
-
-    public Method getMethod()
-    {
-        return method;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MethodLogger.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MethodLogger.java
deleted file mode 100644
index 468f609..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/MethodLogger.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.services.ExceptionTracker;
-import org.slf4j.Logger;
-
-import static java.lang.String.format;
-import java.util.Iterator;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.LoggingDecoratorImpl} to delegate out logging behavior to a
- * seperate object.
- */
-public final class MethodLogger
-{
-    private static final int BUFFER_SIZE = 200;
-
-    private static final String ENTER = "ENTER";
-
-    private static final String EXIT = " EXIT";
-
-    private static final String FAIL = " FAIL";
-
-    private final Logger logger;
-
-    private final ExceptionTracker exceptionTracker;
-
-    public MethodLogger(Logger logger, ExceptionTracker exceptionTracker)
-    {
-        this.logger = logger;
-        this.exceptionTracker = exceptionTracker;
-    }
-
-    public boolean isDebugEnabled()
-    {
-        return logger.isDebugEnabled();
-    }
-
-    /**
-     * Invoked when a method is first entered
-     *
-     * @param invocation identifies method invoked as well as parameters passed to method
-     */
-    public void entry(Invocation invocation)
-    {
-        StringBuilder buffer = new StringBuilder(BUFFER_SIZE);
-
-        buffer.append(format("[%s] %s(", ENTER, invocation.getMethodName()));
-
-        for (int i = 0; i < invocation.getParameterCount(); i++)
-        {
-            if (i > 0) buffer.append(", ");
-
-            convert(buffer, invocation.getParameter(i));
-        }
-
-        buffer.append(")");
-
-        logger.debug(buffer.toString());
-    }
-
-    private void convert(StringBuilder buffer, Object object)
-    {
-        if (object == null)
-        {
-            buffer.append("null");
-            return;
-        }
-
-        // Minimal, alas: Doesn't handle embedded quotes and other
-        // characters. Really want to convert the string back to what it
-        // would look like as source code.
-
-        if (object instanceof String)
-        {
-            buffer.append("\"");
-            buffer.append(object.toString());
-            buffer.append("\"");
-            return;
-        }
-
-        if (object instanceof Object[])
-        {
-            Object[] values = (Object[]) object;
-            buffer.append('{');
-
-            for (int i = 0; i < values.length; i++)
-            {
-                if (i > 0) buffer.append(", ");
-
-                convert(buffer, values[i]);
-            }
-
-            buffer.append('}');
-            return;
-        }
-
-        if (object instanceof Iterable)
-        {
-            Iterable itr = (Iterable) object;
-            boolean first = true;
-
-            buffer.append('[');
-            Iterator i = itr.iterator();
-            while (i.hasNext())
-            {
-                if (!first) buffer.append(", ");
-
-                convert(buffer, i.next());
-                first = false;
-            }
-            buffer.append(']');
-            return;
-        }
-
-        // Might need to add a few more, for things like character values ...
-
-        buffer.append(object.toString());
-    }
-
-    /**
-     * Invoked when a method exits (possibly returning a value).
-     *
-     * @param invocation identifies method invocation and  result value
-     */
-    public void exit(Invocation invocation)
-    {
-        StringBuilder buffer = new StringBuilder(BUFFER_SIZE);
-
-        buffer.append(format("[%s] %s", EXIT, invocation.getMethodName()));
-
-        if (invocation.getResultType() != void.class)
-        {
-            buffer.append(" [");
-            convert(buffer, invocation.getResult());
-            buffer.append(']');
-        }
-
-        logger.debug(buffer.toString());
-    }
-
-    /**
-     * Invoked when method invocation instead throws an exception.
-     *
-     * @param invocation identifies method invocation which failed
-     * @param t          exception throws by method invocation
-     */
-    public void fail(Invocation invocation, Throwable t)
-    {
-        logger.debug(
-                format("[%s] %s -- %s", FAIL,
-                       invocation.getMethodName(),
-                       t.getClass().getName()),
-                exceptionTracker.exceptionLogged(t) ? null : t);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java
deleted file mode 100644
index 7d685b2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutor.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.services.ParallelExecutor;
-
-import java.util.concurrent.ExecutionException;
-import java.util.concurrent.Future;
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.TimeoutException;
-
-/**
- * Implementation of {@link ParallelExecutor} used when {@linkplain org.apache.tapestry5.ioc.IOCSymbols#THREAD_POOL_ENABLED
- * the thread pool is disabled}.
- *
- * @since 5.1.0.3
- */
-public class NonParallelExecutor implements ParallelExecutor
-{
-    public <T> Future<T> invoke(Invokable<T> invocable)
-    {
-        final T result = invocable.invoke();
-
-        return new Future<T>()
-        {
-            public boolean cancel(boolean mayInterruptIfRunning)
-            {
-                return false;
-            }
-
-            public boolean isCancelled()
-            {
-                return false;
-            }
-
-            public boolean isDone()
-            {
-                return true;
-            }
-
-            public T get() throws InterruptedException, ExecutionException
-            {
-                return result;
-            }
-
-            public T get(long timeout, TimeUnit unit) throws InterruptedException, ExecutionException, TimeoutException
-            {
-                return result;
-            }
-        };
-    }
-
-    public <T> T invoke(Class<T> proxyType, Invokable<T> invocable)
-    {
-        return invocable.invoke();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ParallelExecutorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ParallelExecutorImpl.java
deleted file mode 100644
index 29d6dea..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ParallelExecutorImpl.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.util.concurrent.Callable;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Future;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.services.ParallelExecutor;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.ThunkCreator;
-
-public class ParallelExecutorImpl implements ParallelExecutor
-{
-    private final ThunkCreator thunkCreator;
-
-    private final ExecutorService executorService;
-
-    private final PerthreadManager perthreadManager;
-
-    public ParallelExecutorImpl(ExecutorService executorService, ThunkCreator thunkCreator,
-                                PerthreadManager perthreadManager)
-    {
-        this.executorService = executorService;
-        this.thunkCreator = thunkCreator;
-        this.perthreadManager = perthreadManager;
-    }
-
-    public <T> Future<T> invoke(Invokable<T> invocable)
-    {
-        assert invocable != null;
-
-        return executorService.submit(toCallable(invocable));
-    }
-
-    private <T> Callable<T> toCallable(final Invokable<T> invocable)
-    {
-        return new Callable<T>()
-        {
-            public T call() throws Exception
-            {
-                try
-                {
-                    return invocable.invoke();
-                }
-                finally
-                {
-                    perthreadManager.cleanup();
-                }
-            }
-        };
-    }
-
-    public <T> T invoke(Class<T> proxyType, Invokable<T> invocable)
-    {
-        final Future<T> future = invoke(invocable);
-
-        ObjectCreator creator = new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                try
-                {
-                    return future.get();
-                }
-                catch (Exception ex)
-                {
-                    throw new RuntimeException(ex);
-                }
-            }
-        };
-
-        String description = String.format("FutureThunk[%s]", proxyType.getName());
-
-        return thunkCreator.createThunk(proxyType, new CachingObjectCreator(creator), description);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerThreadServiceCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerThreadServiceCreator.java
deleted file mode 100644
index ea0c530..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerThreadServiceCreator.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-
-/**
- * Provides per-thread implementations of services.
- */
-public class PerThreadServiceCreator implements ObjectCreator
-{
-    private final PerThreadValue<Object> perThreadValue;
-
-    private final ObjectCreator delegate;
-
-    public PerThreadServiceCreator(PerthreadManager perthreadManager, ObjectCreator delegate)
-    {
-        perThreadValue = perthreadManager.createValue();
-
-        this.delegate = delegate;
-    }
-
-    /**
-     * For each thread, the first call will use the delegate {@link org.apache.tapestry5.ioc.ObjectCreator} to create
-     * an instance, and later calls will reuse the same per-thread instance. The instance is stored in the
-     * {@link org.apache.tapestry5.ioc.services.PerthreadManager} and will be released at the end of the request.
-     */
-    public Object createObject()
-    {
-        if (perThreadValue.exists())
-            return perThreadValue.get();
-
-        return perThreadValue.set(delegate.createObject());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerThreadServiceLifecycle.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerThreadServiceLifecycle.java
deleted file mode 100644
index e253618..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerThreadServiceLifecycle.java
+++ /dev/null
@@ -1,114 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.services.*;
-
-import static java.lang.String.format;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Modifier;
-
-/**
- * Allows a service to exist "per thread" (in each thread). This involves an inner proxy, which caches an object derived
- * from a {@link org.apache.tapestry5.ioc.ObjectCreator} as a key in the {@link org.apache.tapestry5.ioc.services.PerthreadManager}.
- * Method invocations are delegated to the per-thread service instance.
- * <p/>
- * This scheme ensures that, although the service builder method will be invoked many times over the life of the
- * application, the service decoration process occurs only once. The final calling chain is: Service Proxy --&gt;
- * Decorator(s) --&gt; PerThread Proxy --&gt; (per thread) instance.
- */
-@SuppressWarnings("all")
-public class PerThreadServiceLifecycle implements ServiceLifecycle
-{
-    private static final String PER_THREAD_METHOD_NAME = "_perThreadInstance";
-
-    private final PerthreadManager perthreadManager;
-
-    private final ClassFactory classFactory;
-
-    public PerThreadServiceLifecycle(@Builtin
-    PerthreadManager perthreadManager,
-
-                                     @Builtin
-                                     ClassFactory classFactory)
-    {
-        this.perthreadManager = perthreadManager;
-        this.classFactory = classFactory;
-    }
-
-    /**
-     * Returns false; this lifecycle represents a service that will be created many times (by each thread).
-     */
-    public boolean isSingleton()
-    {
-        return false;
-    }
-
-    public Object createService(ServiceResources resources, ObjectCreator creator)
-    {
-        Class proxyClass = createProxyClass(resources);
-
-        ObjectCreator perThreadCreator = new PerThreadServiceCreator(perthreadManager, creator);
-
-        try
-        {
-            Constructor ctor = proxyClass.getConstructors()[0];
-
-            return ctor.newInstance(perThreadCreator);
-        }
-        catch (InvocationTargetException ex)
-        {
-            throw new RuntimeException(ex.getCause());
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private Class createProxyClass(ServiceResources resources)
-    {
-        Class serviceInterface = resources.getServiceInterface();
-
-        ClassFab cf = classFactory.newClass(serviceInterface);
-
-        cf.addField("_creator", Modifier.PRIVATE | Modifier.FINAL, ObjectCreator.class);
-
-        // Constructor takes a ServiceCreator
-
-        cf.addConstructor(new Class[]
-                { ObjectCreator.class }, null, "_creator = $1;");
-
-        String body = format("return (%s) _creator.createObject();", serviceInterface.getName());
-
-        MethodSignature sig = new MethodSignature(serviceInterface, PER_THREAD_METHOD_NAME, null,
-                                                  null);
-
-        cf.addMethod(Modifier.PRIVATE, sig, body);
-
-        String toString = format(
-                "<PerThread Proxy for %s(%s)>",
-                resources.getServiceId(),
-                serviceInterface.getName());
-
-        cf.proxyMethodsToDelegate(serviceInterface, PER_THREAD_METHOD_NAME + "()", toString);
-
-        return cf.createClass();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
deleted file mode 100644
index a3d001f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImpl.java
+++ /dev/null
@@ -1,218 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.locks.Lock;
-import java.util.concurrent.locks.ReentrantLock;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.DummyLock;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.JDKUtils;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.slf4j.Logger;
-
-@SuppressWarnings("all")
-public class PerthreadManagerImpl implements PerthreadManager
-{
-    private static final String LISTENERS_KEY = "PerthreadManager.listenerList";
-
-    private final Lock lock;
-
-    private static class MapHolder extends ThreadLocal<Map>
-    {
-        @Override
-        protected Map initialValue()
-        {
-            return CollectionFactory.newMap();
-        }
-    }
-
-    private final Logger logger;
-
-    private final MapHolder holder = new MapHolder();
-
-    public PerthreadManagerImpl(Logger logger)
-    {
-        this(logger, JDKUtils.JDK_1_5);
-    }
-
-    PerthreadManagerImpl(Logger logger, boolean useSynchronization)
-    {
-        this.logger = logger;
-
-        lock = useSynchronization ? new ReentrantLock() : new DummyLock();
-    }
-
-    private Map getPerthreadMap()
-    {
-        try
-        {
-            lock.lock();
-
-            return holder.get();
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    private List<ThreadCleanupListener> getListeners()
-    {
-        List<ThreadCleanupListener> result = (List<ThreadCleanupListener>) get(LISTENERS_KEY);
-
-        if (result == null)
-        {
-            result = CollectionFactory.newList();
-            put(LISTENERS_KEY, result);
-        }
-
-        return result;
-    }
-
-    public void addThreadCleanupListener(ThreadCleanupListener listener)
-    {
-        getListeners().add(listener);
-    }
-
-    /**
-     * Instructs the hub to notify all its listeners (for the current thread).
-     * It also discards its list of listeners.
-     */
-    public void cleanup()
-    {
-        List<ThreadCleanupListener> listeners = getListeners();
-
-        put(LISTENERS_KEY, null);
-
-        for (ThreadCleanupListener listener : listeners)
-        {
-            try
-            {
-                listener.threadDidCleanup();
-            }
-            catch (Exception ex)
-            {
-                logger.warn(ServiceMessages.threadCleanupError(listener, ex), ex);
-            }
-        }
-
-        // Listeners should not re-add themselves or store any per-thread state
-        // here,
-        // it will be lost.
-
-        try
-        {
-            lock.lock();
-
-            // Discard the per-thread map of values.
-
-            holder.remove();
-        }
-        finally
-        {
-            lock.unlock();
-        }
-    }
-
-    public void put(Object key, Object value)
-    {
-        getPerthreadMap().put(key, value);
-    }
-
-    public Object get(Object key)
-    {
-        return getPerthreadMap().get(key);
-    }
-
-    private static Object NULL_VALUE = new Object();
-
-    <T> PerThreadValue<T> createValue(final Object key)
-    {
-        return new PerThreadValue<T>()
-        {
-            public T get()
-            {
-                return get(null);
-            }
-
-            public T get(T defaultValue)
-            {
-                Map map = getPerthreadMap();
-
-                if (map.containsKey(key))
-                {
-                    Object storedValue = map.get(key);
-
-                    if (storedValue == NULL_VALUE)
-                        return null;
-
-                    return (T) storedValue;
-                }
-
-                return defaultValue;
-            }
-
-            public T set(T newValue)
-            {
-                put(key, newValue == null ? NULL_VALUE : newValue);
-
-                return newValue;
-            }
-
-            public boolean exists()
-            {
-                return getPerthreadMap().containsKey(key);
-            }
-        };
-    }
-
-    public <T> PerThreadValue<T> createValue()
-    {
-        return createValue(InternalUtils.nextUUID());
-    }
-
-    public void run(Runnable runnable)
-    {
-        assert runnable != null;
-
-        try
-        {
-            runnable.run();
-        }
-        finally
-        {
-            cleanup();
-        }
-    }
-
-    public <T> T invoke(Invokable<T> invokable)
-    {
-        try
-        {
-            return invokable.invoke();
-        }
-        finally
-        {
-            cleanup();
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PipelineBuilderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PipelineBuilderImpl.java
deleted file mode 100644
index a27717c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PipelineBuilderImpl.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.DefaultImplementationBuilder;
-import org.apache.tapestry5.ioc.services.PipelineBuilder;
-import org.slf4j.Logger;
-
-import java.util.List;
-
-public class PipelineBuilderImpl implements PipelineBuilder
-{
-    private final ClassFactory classFactory;
-
-    private final DefaultImplementationBuilder defaultImplementationBuilder;
-
-    public PipelineBuilderImpl(@Builtin ClassFactory classFactory,
-
-                               DefaultImplementationBuilder defaultImplementationBuilder)
-    {
-        this.classFactory = classFactory;
-        this.defaultImplementationBuilder = defaultImplementationBuilder;
-    }
-
-    public <S, F> S build(Logger logger, Class<S> serviceInterface, Class<F> filterInterface, List<F> filters)
-    {
-        S terminator = defaultImplementationBuilder.createDefaultImplementation(serviceInterface);
-
-        return build(logger, serviceInterface, filterInterface, filters, terminator);
-    }
-
-    public <S, F> S build(Logger logger, Class<S> serviceInterface, Class<F> filterInterface, List<F> filters,
-                          S terminator)
-    {
-        if (filters.isEmpty()) return terminator;
-
-        BridgeBuilder<S, F> bb = new BridgeBuilder<S, F>(logger, serviceInterface, filterInterface, classFactory);
-
-        // The first bridge will point to the terminator.
-        // Like service decorators, we work deepest (last)
-        // to shallowest (first)
-
-        S next = terminator;
-        int count = filters.size();
-
-        for (int i = count - 1; i >= 0; i--)
-        {
-            F filter = filters.get(i);
-
-            next = bb.instantiateBridge(next, filter);
-        }
-
-        return next;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java
deleted file mode 100644
index e37158b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImpl.java
+++ /dev/null
@@ -1,205 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-
-import java.beans.BeanInfo;
-import java.beans.IntrospectionException;
-import java.beans.Introspector;
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-@SuppressWarnings("unchecked")
-public class PropertyAccessImpl implements PropertyAccess
-{
-    private final Map<Class, ClassPropertyAdapter> adapters = CollectionFactory.newConcurrentMap();
-
-    public Object get(Object instance, String propertyName)
-    {
-        return getAdapter(instance).get(instance, propertyName);
-    }
-
-    public void set(Object instance, String propertyName, Object value)
-    {
-        getAdapter(instance).set(instance, propertyName, value);
-    }
-
-    /**
-     * Clears the cache of adapters and asks the {@link Introspector} to clear its cache.
-     */
-    public synchronized void clearCache()
-    {
-        adapters.clear();
-
-        Introspector.flushCaches();
-    }
-
-    public ClassPropertyAdapter getAdapter(Object instance)
-    {
-        return getAdapter(instance.getClass());
-    }
-
-    public ClassPropertyAdapter getAdapter(Class forClass)
-    {
-        ClassPropertyAdapter result = adapters.get(forClass);
-
-        if (result == null)
-        {
-            result = buildAdapter(forClass);
-            adapters.put(forClass, result);
-        }
-
-        return result;
-    }
-
-    /**
-     * Builds a new adapter and updates the _adapters cache. This not only guards access to the adapter cache, but also
-     * serializes access to the Java Beans Introspector, which is not thread safe. In addition, handles the case where
-     * the class in question is an interface, accumulating properties inherited from super-classes.
-     */
-    private synchronized ClassPropertyAdapter buildAdapter(Class forClass)
-    {
-        // In some race conditions, we may hit this method for the same class multiple times.
-        // We just let it happen, replacing the old ClassPropertyAdapter with a new one.
-
-        try
-        {
-            BeanInfo info = Introspector.getBeanInfo(forClass);
-
-            List<PropertyDescriptor> descriptors = CollectionFactory.newList();
-
-            addAll(descriptors, info.getPropertyDescriptors());
-
-            // TAP5-921 - Introspector misses interface methods not implemented in an abstract class
-            if (forClass.isInterface() || Modifier.isAbstract(forClass.getModifiers()) )
-                addPropertiesFromExtendedInterfaces(forClass, descriptors);
-
-            addPropertiesFromScala(forClass, descriptors);
-
-            return new ClassPropertyAdapterImpl(forClass, descriptors);
-        }
-        catch (Throwable ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    private <T> void addAll(List<T> list, T[] array)
-    {
-        list.addAll(Arrays.asList(array));
-    }
-
-    private void addPropertiesFromExtendedInterfaces(Class forClass, List<PropertyDescriptor> descriptors)
-            throws IntrospectionException
-    {
-        LinkedList<Class> queue = CollectionFactory.newLinkedList();
-
-        // Seed the queue
-        addAll(queue, forClass.getInterfaces());
-
-        while (!queue.isEmpty())
-        {
-            Class c = queue.removeFirst();
-
-            BeanInfo info = Introspector.getBeanInfo(c);
-
-            // Duplicates occur and are filtered out in ClassPropertyAdapter which stores
-            // a property name to descriptor map.
-            addAll(descriptors, info.getPropertyDescriptors());
-            addAll(queue, c.getInterfaces());
-        }
-    }
-
-    private void addPropertiesFromScala(Class forClass, List<PropertyDescriptor> descriptors)
-            throws IntrospectionException
-    {
-        for (Method method : forClass.getMethods())
-        {
-            addPropertyIfScalaGetterMethod(forClass, descriptors, method);
-        }
-    }
-
-    private void addPropertyIfScalaGetterMethod(Class forClass, List<PropertyDescriptor> descriptors, Method method)
-            throws IntrospectionException
-    {
-        if (!isScalaGetterMethod(method))
-            return;
-
-        PropertyDescriptor propertyDescriptor = new PropertyDescriptor(method.getName(), forClass, method.getName(),
-                null);
-
-        // found a getter, looking for the setter now
-        try
-        {
-            Method setterMethod = findScalaSetterMethod(forClass, method);
-
-            propertyDescriptor.setWriteMethod(setterMethod);
-        }
-        catch (NoSuchMethodException e)
-        {
-            // ignore
-        }
-
-        // check if the same property was already discovered with java bean accessors
-
-        addScalaPropertyIfNoJavaBeansProperty(descriptors, propertyDescriptor, method);
-    }
-
-    private void addScalaPropertyIfNoJavaBeansProperty(List<PropertyDescriptor> descriptors,
-            PropertyDescriptor propertyDescriptor, Method getterMethod)
-    {
-        boolean found = false;
-
-        for (PropertyDescriptor currentPropertyDescriptor : descriptors)
-        {
-            if (currentPropertyDescriptor.getName().equals(getterMethod.getName()))
-            {
-                found = true;
-
-                break;
-            }
-        }
-
-        if (!found)
-            descriptors.add(propertyDescriptor);
-    }
-
-    private Method findScalaSetterMethod(Class forClass, Method getterMethod) throws NoSuchMethodException
-    {
-        return forClass.getMethod(getterMethod.getName() + "_$eq", getterMethod.getReturnType());
-    }
-
-    private boolean isScalaGetterMethod(Method method)
-    {
-        try
-        {
-            return Modifier.isPublic(method.getModifiers()) && method.getParameterTypes().length == 0
-                    && !method.getReturnType().equals(Void.TYPE)
-                    && method.getDeclaringClass().getDeclaredField(method.getName()) != null;
-        }
-        catch (NoSuchFieldException ex)
-        {
-            return false;
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
deleted file mode 100644
index 484af9f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyAdapterImpl.java
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.List;
-
-public class PropertyAdapterImpl implements PropertyAdapter
-{
-    private final ClassPropertyAdapter classAdapter;
-
-    private final String name;
-
-    private final Method readMethod;
-
-    private final Method writeMethod;
-
-    private final Class type;
-
-    private final boolean castRequired;
-
-    private AnnotationProvider annotationProvider;
-
-    private final Field field;
-
-    private final Class declaringClass;
-
-    PropertyAdapterImpl(ClassPropertyAdapter classAdapter, String name, Class type, Method readMethod,
-            Method writeMethod)
-    {
-        this.classAdapter = classAdapter;
-        this.name = name;
-        this.type = type;
-
-        this.readMethod = readMethod;
-        this.writeMethod = writeMethod;
-
-        declaringClass = readMethod != null ? readMethod.getDeclaringClass() : writeMethod.getDeclaringClass();
-
-        castRequired = readMethod != null && readMethod.getReturnType() != type;
-
-        field = null;
-    }
-
-    PropertyAdapterImpl(ClassPropertyAdapter classAdapter, String name, Class type, Field field)
-    {
-        this.classAdapter = classAdapter;
-        this.name = name;
-        this.type = type;
-
-        this.field = field;
-
-        declaringClass = field.getDeclaringClass();
-
-        castRequired = field.getType() != type;
-
-        readMethod = null;
-        writeMethod = null;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    public Method getReadMethod()
-    {
-        return readMethod;
-    }
-
-    public Class getType()
-    {
-        return type;
-    }
-
-    public Method getWriteMethod()
-    {
-        return writeMethod;
-    }
-
-    public boolean isRead()
-    {
-        return field != null || readMethod != null;
-    }
-
-    public boolean isUpdate()
-    {
-        return field != null || writeMethod != null;
-    }
-
-    public Object get(Object instance)
-    {
-        if (field == null && readMethod == null)
-            throw new UnsupportedOperationException(ServiceMessages.readNotSupported(instance, name));
-
-        Throwable fail;
-
-        try
-        {
-            if (field == null)
-                return readMethod.invoke(instance);
-            else
-                return field.get(instance);
-        }
-        catch (InvocationTargetException ex)
-        {
-            fail = ex.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            fail = ex;
-        }
-
-        throw new RuntimeException(ServiceMessages.readFailure(name, instance, fail), fail);
-    }
-
-    public void set(Object instance, Object value)
-    {
-        if (field == null && writeMethod == null)
-            throw new UnsupportedOperationException(ServiceMessages.writeNotSupported(instance, name));
-
-        Throwable fail;
-
-        try
-        {
-            if (field == null)
-                writeMethod.invoke(instance, value);
-            else
-                field.set(instance, value);
-
-            return;
-        }
-        catch (InvocationTargetException ex)
-        {
-            fail = ex.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            fail = ex;
-        }
-
-        throw new RuntimeException(ServiceMessages.writeFailure(name, instance, fail), fail);
-    }
-
-    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-    {
-        return getAnnnotationProvider().getAnnotation(annotationClass);
-    }
-
-    /**
-     * Creates (as needed) the annotation provider for this property.
-     */
-    private synchronized AnnotationProvider getAnnnotationProvider()
-    {
-        if (annotationProvider == null)
-        {
-            List<AnnotationProvider> providers = CollectionFactory.newList();
-
-            if (readMethod != null)
-                providers.add(new AccessableObjectAnnotationProvider(readMethod));
-
-            if (writeMethod != null)
-                providers.add(new AccessableObjectAnnotationProvider(writeMethod));
-
-            // There's an assumption here, that the fields match the property name (we ignore case
-            // which leads to a manageable ambiguity) and that the field and the getter/setter
-            // are in the same class (i.e., that we don't have a getter exposing a protected field inherted
-            // from a base class, or some other oddity).
-
-            Class cursor = getBeanType();
-
-            out: while (cursor != null)
-            {
-                for (Field f : cursor.getDeclaredFields())
-                {
-                    if (f.getName().equalsIgnoreCase(name))
-                    {
-                        providers.add(new AccessableObjectAnnotationProvider(f));
-
-                        break out;
-                    }
-                }
-
-                cursor = cursor.getSuperclass();
-            }
-
-            annotationProvider = AnnotationProviderChain.create(providers);
-        }
-
-        return annotationProvider;
-    }
-
-    public boolean isCastRequired()
-    {
-        return castRequired;
-    }
-
-    public ClassPropertyAdapter getClassAdapter()
-    {
-        return classAdapter;
-    }
-
-    public Class getBeanType()
-    {
-        return classAdapter.getBeanType();
-    }
-
-    public boolean isField()
-    {
-        return field != null;
-    }
-
-    public Field getField()
-    {
-        return field;
-    }
-
-    public Class getDeclaringClass()
-    {
-        return declaringClass;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java
deleted file mode 100644
index f06a8e9..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/PropertyShadowBuilderImpl.java
+++ /dev/null
@@ -1,107 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-
-import static java.lang.String.format;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Modifier;
-
-public class PropertyShadowBuilderImpl implements PropertyShadowBuilder
-{
-    private final ClassFactory classFactory;
-
-    private final PropertyAccess propertyAccess;
-
-    public PropertyShadowBuilderImpl(@Builtin
-    ClassFactory classFactory,
-
-    PropertyAccess propertyAccess)
-    {
-        this.classFactory = classFactory;
-        this.propertyAccess = propertyAccess;
-    }
-
-    public <T> T build(Object source, String propertyName, Class<T> propertyType)
-    {
-        Class sourceClass = source.getClass();
-        PropertyAdapter adapter = propertyAccess.getAdapter(sourceClass).getPropertyAdapter(propertyName);
-
-        // TODO: Perhaps extend ClassPropertyAdapter to do these checks?
-
-        if (adapter == null)
-            throw new RuntimeException(ServiceMessages.noSuchProperty(sourceClass, propertyName));
-
-        if (!adapter.isRead())
-            throw new RuntimeException(ServiceMessages.readNotSupported(source, propertyName));
-
-        if (!propertyType.isAssignableFrom(adapter.getType()))
-            throw new RuntimeException(ServiceMessages.propertyTypeMismatch(propertyName, sourceClass,
-                    adapter.getType(), propertyType));
-
-        ClassFab cf = classFactory.newClass(propertyType);
-
-        cf.addField("_source", Modifier.PRIVATE | Modifier.FINAL, sourceClass);
-
-        cf.addConstructor(new Class[]
-        { sourceClass }, null, "_source = $1;");
-
-        BodyBuilder body = new BodyBuilder();
-        body.begin();
-
-        body.addln("%s result = _source.%s();", sourceClass.getName(), adapter.getReadMethod().getName());
-
-        body.addln("if (result == null)");
-        body.begin();
-        body.addln("throw new NullPointerException(%s.buildMessage(_source, \"%s\"));", getClass().getName(),
-                propertyName);
-        body.end();
-
-        body.addln("return result;");
-
-        body.end();
-
-        MethodSignature sig = new MethodSignature(propertyType, "_delegate", null, null);
-        cf.addMethod(Modifier.PRIVATE, sig, body.toString());
-
-        String toString = format("<Shadow: property %s of %s>", propertyName, source);
-
-        cf.proxyMethodsToDelegate(propertyType, "_delegate()", toString);
-
-        Class shadowClass = cf.createClass();
-
-        try
-        {
-            Constructor cc = shadowClass.getConstructors()[0];
-
-            Object instance = cc.newInstance(source);
-
-            return propertyType.cast(instance);
-        }
-        catch (Exception ex)
-        {
-            // Should not be reachable
-            throw new RuntimeException(ex);
-        }
-
-    }
-
-    public static final String buildMessage(Object source, String propertyName)
-    {
-        return String.format("Unable to delegate method invocation to property '%s' of %s, because the property is null.", propertyName, source);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/RegistryShutdownHubImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/RegistryShutdownHubImpl.java
deleted file mode 100644
index 703a256..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/RegistryShutdownHubImpl.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newThreadSafeList;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.slf4j.Logger;
-
-import java.util.List;
-
-public class RegistryShutdownHubImpl implements RegistryShutdownHub
-{
-    private final OneShotLock lock = new OneShotLock();
-
-    private final Logger logger;
-
-    private final List<RegistryShutdownListener> listeners = newThreadSafeList();
-
-    public RegistryShutdownHubImpl(Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    public void addRegistryShutdownListener(RegistryShutdownListener listener)
-    {
-        lock.check();
-
-        listeners.add(listener);
-    }
-
-    /**
-     * Fires the {@link RegistryShutdownListener#registryDidShutdown()} method on each listener. At the end, all the
-     * listeners are discarded.
-     */
-    public void fireRegistryDidShutdown()
-    {
-        lock.lock();
-
-        for (RegistryShutdownListener l : listeners)
-        {
-            try
-            {
-                l.registryDidShutdown();
-            }
-            catch (Exception ex)
-            {
-                logger.error(ServiceMessages.shutdownListenerError(l, ex), ex);
-            }
-        }
-
-        listeners.clear();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/RegistryStartup.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/RegistryStartup.java
deleted file mode 100644
index a6b3d0c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/RegistryStartup.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.slf4j.Logger;
-
-import java.util.List;
-
-/**
- * Startup service for Tapestry IoC: automatically invoked at {@linkplain Registry#performRegistryStartup() registry
- * startup} to execute a series of operations, via its ordered configuration of Runnable objects.
- */
-public class RegistryStartup implements Runnable
-{
-    private final Logger logger;
-
-    private final List<Runnable> configuration;
-
-    private final OneShotLock lock = new OneShotLock();
-
-    public RegistryStartup(Logger logger, final List<Runnable> configuration)
-    {
-        this.logger = logger;
-        this.configuration = configuration;
-    }
-
-    /**
-     * Invokes run() on each contributed object. If the object throws a runtime exception, it is logged but startup
-     * continues anyway. This method may only be {@linkplain OneShotLock invoked once}.
-     */
-    public void run()
-    {
-        lock.lock();
-
-        // Do we want extra exception catching here?
-
-        for (Runnable r : configuration)
-        {
-            try
-            {
-                r.run();
-            }
-            catch (RuntimeException ex)
-            {
-                logger.error(ServiceMessages.startupFailure(ex));
-            }
-        }
-
-        // We don't need them any more since this method can only be run once. It's a insignificant
-        // savings, but still a nice thing to do.
-
-        configuration.clear();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ResourceSymbolProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ResourceSymbolProvider.java
deleted file mode 100644
index 0222ab7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ResourceSymbolProvider.java
+++ /dev/null
@@ -1,82 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.Map;
-import java.util.Properties;
-
-/**
- * Makes a {@link org.apache.tapestry5.ioc.Resource} available as a {@link org.apache.tapestry5.ioc.services.SymbolProvider}
- *
- * @since 5.1.0.5
- */
-public class ResourceSymbolProvider implements SymbolProvider
-{
-    private final Resource resource;
-
-    private final Map<String, String> properties = CollectionFactory.newCaseInsensitiveMap();
-
-    public ResourceSymbolProvider(final Resource resource)
-    {
-        this.resource = resource;
-
-        readProperties();
-    }
-
-    private void readProperties()
-    {
-        Properties p = new Properties();
-
-        InputStream is = null;
-
-        try
-        {
-            is = resource.openStream();
-
-            p.load(is);
-
-            is.close();
-
-            is = null;
-
-            for (Map.Entry<Object, Object> entry : p.entrySet())
-            {
-                String key = entry.getKey().toString();
-
-                properties.put(key, p.getProperty(key));
-            }
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-        finally
-        {
-            InternalUtils.close(is);
-        }
-    }
-
-    public String valueForSymbol(String symbolName)
-    {
-        return properties.get(symbolName);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceMessages.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceMessages.java
deleted file mode 100644
index 94e9683..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceMessages.java
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import javassist.CtClass;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-
-public class ServiceMessages
-{
-    private final static Messages MESSAGES = MessagesImpl.forClass(ServiceMessages.class);
-
-    private ServiceMessages()
-    {
-    }
-
-    public static String unableToAddMethod(MethodSignature signature, CtClass ctClass, Throwable cause)
-    {
-        return MESSAGES.format("unable-to-add-method", signature, ctClass.getName(), cause);
-    }
-
-    public static String unableToAddConstructor(CtClass ctClass, Throwable cause)
-    {
-        return MESSAGES.format("unable-to-add-constructor", ctClass.getName(), cause);
-    }
-
-    public static String unableToAddField(String fieldName, CtClass ctClass, Throwable cause)
-    {
-        return MESSAGES.format("unable-to-add-field", fieldName, ctClass.getName(), cause);
-    }
-
-    public static String unableToCreateClass(String className, Class superClass, Throwable cause)
-    {
-        return MESSAGES.format("unable-to-create-class", className, superClass.getName(), cause);
-    }
-
-    public static String unableToLookupClass(String className, Throwable cause)
-    {
-        return MESSAGES.format("unable-to-lookup-class", className, cause);
-    }
-
-    public static String unableToWriteClass(CtClass ctClass, Throwable cause)
-    {
-        return MESSAGES.format("unable-to-write-class", ctClass.getName(), cause);
-    }
-
-    public static String duplicateMethodInClass(MethodSignature ms, ClassFabImpl fab)
-    {
-        return MESSAGES.format("duplicate-method-in-class", ms, fab.getName());
-    }
-
-    public static String loggingInterceptor(String serviceId, Class serviceInterface)
-    {
-        return MESSAGES.format("logging-interceptor", serviceId, serviceInterface.getName());
-    }
-
-    public static String threadCleanupError(ThreadCleanupListener listener, Throwable cause)
-    {
-        return MESSAGES.format("thread-cleanup-error", listener, cause);
-    }
-
-    public static String noSuchProperty(Class clazz, String propertyName)
-    {
-        return MESSAGES.format("no-such-property", clazz.getName(), propertyName);
-    }
-
-    public static String readNotSupported(Object instance, String propertyName)
-    {
-        return MESSAGES.format("read-not-supported", instance.getClass().getName(), propertyName);
-    }
-
-    public static String writeNotSupported(Object instance, String propertyName)
-    {
-        return MESSAGES.format("write-not-supported", instance.getClass().getName(), propertyName);
-    }
-
-    public static String readFailure(String propertyName, Object instance, Throwable cause)
-    {
-        return MESSAGES.format("read-failure", propertyName, instance, cause);
-    }
-
-    public static String writeFailure(String propertyName, Object instance, Throwable cause)
-    {
-        return MESSAGES.format("write-failure", propertyName, instance, cause);
-    }
-
-    public static String propertyTypeMismatch(String propertyName, Class sourceClass, Class propertyType,
-            Class expectedType)
-    {
-        return MESSAGES.format("property-type-mismatch", propertyName, sourceClass.getName(), propertyType.getName(),
-                expectedType.getName());
-    }
-
-    public static String extraFilterMethod(MethodSignature sig, Class filterInterface, Class serviceInterface)
-    {
-        return MESSAGES.format("extra-filter-method", sig, filterInterface.getName(), serviceInterface.getName());
-    }
-
-    public static String unmatchedServiceMethod(MethodSignature sig, Class filterInterface)
-    {
-        return MESSAGES.format("unmatched-service-method", sig, filterInterface.getName());
-    }
-
-    public static String unknownObjectProvider(String prefix, String reference)
-    {
-        return MESSAGES.format("unknown-object-provider", prefix, reference);
-    }
-
-    public static String shutdownListenerError(Object listener, Throwable cause)
-    {
-        return MESSAGES.format("shutdown-listener-error", listener, cause);
-    }
-
-    public static String noCoercionFound(Class sourceType, Class targetType, String coercions)
-    {
-        return MESSAGES.format("no-coercion-found", sourceType.getName(), targetType.getName(), coercions);
-    }
-
-    public static String recursiveSymbol(String symbolName, String path)
-    {
-        return MESSAGES.format("recursive-symbol", symbolName, path);
-    }
-
-    public static String symbolUndefined(String symbolName)
-    {
-        return MESSAGES.format("symbol-undefined", symbolName);
-    }
-
-    public static String symbolUndefinedInPath(String symbolName, String path)
-    {
-        return MESSAGES.format("symbol-undefined-in-path", symbolName, path);
-    }
-
-    public static String missingSymbolCloseBrace(String input)
-    {
-        return MESSAGES.format("missing-symbol-close-brace", input);
-    }
-
-    public static String missingSymbolCloseBraceInPath(String input, String path)
-    {
-        return MESSAGES.format("missing-symbol-close-brace-in-path", input, path);
-    }
-
-    public static String failedCoercion(Object input, Class targetType, Coercion coercion, Throwable cause)
-    {
-        return MESSAGES.format("failed-coercion", String.valueOf(input), ClassFabUtils.toJavaClassName(targetType),
-                coercion, cause);
-    }
-
-    public static String registryShutdown(String serviceId)
-    {
-        return MESSAGES.format("registry-shutdown", serviceId);
-    }
-
-    public static String serviceBuildFailure(String serviceId, Throwable cause)
-    {
-        return MESSAGES.format("service-build-failure", serviceId, cause);
-    }
-
-    public static String startupFailure(Throwable cause)
-    {
-        return MESSAGES.format("startup-failure", cause);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceOverrideImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceOverrideImpl.java
deleted file mode 100644
index cf29dad..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ServiceOverrideImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.services.ServiceOverride;
-
-@PreventServiceDecoration
-public class ServiceOverrideImpl implements ServiceOverride
-{
-    private final Map<Class, Object> configuration;
-
-    public ServiceOverrideImpl(Map<Class, Object> configuration)
-    {
-        this.configuration = configuration;
-    }
-
-    public ObjectProvider getServiceOverrideProvider()
-    {
-        return new ObjectProvider()
-        {
-            public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-            {
-                return objectType.cast(configuration.get(objectType));
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/StrategyBuilderImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/StrategyBuilderImpl.java
deleted file mode 100644
index fe6ffd6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/StrategyBuilderImpl.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.*;
-import org.apache.tapestry5.ioc.util.BodyBuilder;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
-public class StrategyBuilderImpl implements StrategyBuilder
-{
-    private final ClassFactory classFactory;
-
-    public StrategyBuilderImpl(@Builtin ClassFactory classFactory)
-    {
-        this.classFactory = classFactory;
-    }
-
-    public <S> S build(StrategyRegistry<S> registry)
-    {
-        Class<S> interfaceClass = registry.getAdapterType();
-
-        // TODO: Could cache the implClass by interfaceClass ...
-
-        Class implClass = createImplClass(interfaceClass);
-
-        try
-        {
-            Object raw = implClass.getConstructors()[0].newInstance(registry);
-
-            return interfaceClass.cast(raw);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(ex);
-        }
-    }
-
-    public <S> S build(Class<S> adapterType, Map<Class, S> registrations)
-    {
-        StrategyRegistry<S> registry = StrategyRegistry.newInstance(adapterType, registrations);
-
-        return build(registry);
-    }
-
-    private Class createImplClass(Class interfaceClass)
-    {
-        ClassFab cf = classFactory.newClass(interfaceClass);
-
-        String interfaceClassName = interfaceClass.getName();
-
-        cf.addField("_registry", Modifier.PRIVATE | Modifier.FINAL, StrategyRegistry.class);
-        cf.addConstructor(new Class[]
-                {StrategyRegistry.class}, null, "_registry = $1;");
-
-        BodyBuilder builder = new BodyBuilder();
-
-        MethodIterator mi = new MethodIterator(interfaceClass);
-
-        while (mi.hasNext())
-        {
-            MethodSignature sig = mi.next();
-
-            // TODO: Checks for methods that don't have at least one parameter, or don't have a
-            // compatible 1st parameter. Currently, we'll get a Javassist exception.
-
-            builder.clear();
-            builder.begin();
-
-            builder.addln("Object selector = $1;");
-            builder.addln(
-                    "%s adapter = (%<s) _registry.getByInstance(selector);",
-                    interfaceClassName);
-            builder.addln("return ($r) adapter.%s($$);", sig.getName());
-
-            builder.end();
-
-            cf.addMethod(Modifier.PUBLIC, sig, builder.toString());
-        }
-
-        if (!mi.getToString())
-            cf.addToString(String.format("<Strategy for %s>", interfaceClassName));
-
-        return cf.createClass();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/StringLocation.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/StringLocation.java
deleted file mode 100644
index 3a94d04..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/StringLocation.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * Implementation of {@link Location} used when the underlying resource isn't really known.
- */
-public final class StringLocation implements Location
-{
-    private final String description;
-
-    private final int line;
-
-    public StringLocation(String description, int line)
-    {
-        this.description = description;
-        this.line = line;
-    }
-
-    @Override
-    public String toString()
-    {
-        return description;
-    }
-
-    /**
-     * Returns 0.
-     */
-    public int getColumn()
-    {
-        return 0;
-    }
-
-    public int getLine()
-    {
-        return line;
-    }
-
-    /**
-     * Returns null; we don't know where the file really is (it's probably a class on the class path).
-     */
-    public Resource getResource()
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SymbolObjectProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SymbolObjectProvider.java
deleted file mode 100644
index 5c5a847..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SymbolObjectProvider.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-/**
- * Performs an injection based on a {@link Symbol} annotation.
- */
-public class SymbolObjectProvider implements ObjectProvider
-{
-    private final SymbolSource symbolSource;
-
-    private final TypeCoercer typeCoercer;
-
-    public SymbolObjectProvider(@Builtin SymbolSource symbolSource,
-
-                                @Builtin TypeCoercer typeCoercer)
-    {
-        this.symbolSource = symbolSource;
-        this.typeCoercer = typeCoercer;
-    }
-
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-    {
-        Symbol annotation = annotationProvider.getAnnotation(Symbol.class);
-
-        if (annotation == null) return null;
-
-        Object value = symbolSource.valueForSymbol(annotation.value());
-
-        IntermediateType it = annotationProvider.getAnnotation(IntermediateType.class);
-
-        if (it != null) value = typeCoercer.coerce(value, it.value());
-
-        return typeCoercer.coerce(value, objectType);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SymbolSourceImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SymbolSourceImpl.java
deleted file mode 100644
index 0f37db7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SymbolSourceImpl.java
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newLinkedList;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-public class SymbolSourceImpl implements SymbolSource
-{
-    private final List<SymbolProvider> providers;
-
-    /**
-     * Cache of symbol name to fully expanded symbol value.
-     */
-    private final Map<String, String> cache = CollectionFactory.newConcurrentMap();
-
-    /**
-     * Contains execution data needed when performing an expansion (largely, to check for endless recursion).
-     */
-    private class SymbolExpansion
-    {
-        private final LinkedList<String> expandingSymbols = newLinkedList();
-
-        String expandSymbols(String input)
-        {
-            StringBuilder builder = null;
-
-            int startx = 0;
-
-            while (true)
-            {
-                int symbolx = input.indexOf("${", startx);
-
-                // Special case: if the string contains no symbols then return it as is.
-
-                if (startx == 0 && symbolx < 0) return input;
-
-                // The string has at least one symbol, so its OK to create the StringBuilder
-
-                if (builder == null) builder = new StringBuilder();
-
-                // No more symbols found, so add in the rest of the string.
-
-                if (symbolx < 0)
-                {
-                    builder.append(input.substring(startx));
-                    break;
-                }
-
-                builder.append(input.substring(startx, symbolx));
-
-                int endx = input.indexOf("}", symbolx);
-
-                if (endx < 0)
-                {
-                    String message = expandingSymbols.isEmpty() ? ServiceMessages
-                            .missingSymbolCloseBrace(input) : ServiceMessages
-                            .missingSymbolCloseBraceInPath(input, path());
-
-                    throw new RuntimeException(message);
-                }
-
-                String symbolName = input.substring(symbolx + 2, endx);
-
-                builder.append(valueForSymbol(symbolName));
-
-                // Restart the search after the '}'
-
-                startx = endx + 1;
-            }
-
-            return builder.toString();
-        }
-
-        String valueForSymbol(String symbolName)
-        {
-            String value = cache.get(symbolName);
-
-            if (value == null)
-            {
-                value = expandSymbol(symbolName);
-
-                cache.put(symbolName, value);
-            }
-
-            return value;
-        }
-
-        String expandSymbol(String symbolName)
-        {
-            if (expandingSymbols.contains(symbolName))
-            {
-                expandingSymbols.add(symbolName);
-                throw new RuntimeException(ServiceMessages.recursiveSymbol(
-                        symbolName,
-                        pathFrom(symbolName)));
-            }
-
-            expandingSymbols.addLast(symbolName);
-
-            String value = null;
-
-            for (SymbolProvider provider : providers)
-            {
-                value = provider.valueForSymbol(symbolName);
-
-                if (value != null) break;
-            }
-
-            if (value == null)
-            {
-
-                String message = expandingSymbols.size() == 1 ? ServiceMessages
-                        .symbolUndefined(symbolName) : ServiceMessages.symbolUndefinedInPath(
-                        symbolName,
-                        path());
-
-                throw new RuntimeException(message);
-            }
-
-            // The value may have symbols that need expansion.
-
-            String result = expandSymbols(value);
-
-            // And we're done expanding this symbol
-
-            expandingSymbols.removeLast();
-
-            return result;
-
-        }
-
-        String path()
-        {
-            StringBuilder builder = new StringBuilder();
-
-            boolean first = true;
-
-            for (String symbolName : expandingSymbols)
-            {
-                if (!first) builder.append(" --> ");
-
-                builder.append(symbolName);
-
-                first = false;
-            }
-
-            return builder.toString();
-        }
-
-        String pathFrom(String startSymbolName)
-        {
-            StringBuilder builder = new StringBuilder();
-
-            boolean first = true;
-            boolean match = false;
-
-            for (String symbolName : expandingSymbols)
-            {
-                if (!match)
-                {
-                    if (symbolName.equals(startSymbolName))
-                        match = true;
-                    else
-                        continue;
-                }
-
-                if (!first) builder.append(" --> ");
-
-                builder.append(symbolName);
-
-                first = false;
-            }
-
-            return builder.toString();
-        }
-    }
-
-    public SymbolSourceImpl(final List<SymbolProvider> providers)
-    {
-        this.providers = providers;
-    }
-
-    public String expandSymbols(String input)
-    {
-        return new SymbolExpansion().expandSymbols(input);
-    }
-
-    public String valueForSymbol(String symbolName)
-    {
-        String value = cache.get(symbolName);
-
-        // If already in the cache, then return it. Otherwise, let the SE find the value and
-        // update the cache.
-
-        return value != null ? value : new SymbolExpansion().valueForSymbol(symbolName);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SystemPropertiesSymbolProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SystemPropertiesSymbolProvider.java
deleted file mode 100644
index 023f785..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/SystemPropertiesSymbolProvider.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-
-/**
- * Obtains symbol values from JVM System properties. This implementation is usually ordered first, so that explicit
- * overrides, provided as JVM system properties, can take effect.
- */
-public class SystemPropertiesSymbolProvider implements SymbolProvider
-{
-    public String valueForSymbol(String symbolName)
-    {
-        return System.getProperty(symbolName);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ThreadLocaleImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ThreadLocaleImpl.java
deleted file mode 100644
index 1c16ae3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ThreadLocaleImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.util.Locale;
-
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-
-@Scope(ScopeConstants.PERTHREAD)
-public class ThreadLocaleImpl implements ThreadLocale
-{
-    private Locale locale = Locale.getDefault();
-
-    public Locale getLocale()
-    {
-        return locale;
-    }
-
-    public void setLocale(Locale locale)
-    {
-        assert locale != null;
-
-        this.locale = locale;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ThunkCreatorImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ThunkCreatorImpl.java
deleted file mode 100644
index 3bcdc8f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ThunkCreatorImpl.java
+++ /dev/null
@@ -1,131 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Modifier;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodIterator;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.services.ThunkCreator;
-
-@SuppressWarnings("all")
-public class ThunkCreatorImpl implements ThunkCreator
-{
-    /**
-     * Map from an interface type to a corresponding "thunk" class that implements the interface.
-     */
-    private final Map<Class, Class> interfaceToThunkClass = CollectionFactory.newConcurrentMap();
-
-    private final ClassFactory classFactory;
-
-    private final MethodSignature toStringSignature = new MethodSignature(String.class, "toString", null, null);
-
-    private static final int PRIVATE_FINAL = Modifier.FINAL + Modifier.PRIVATE;
-
-    private static final String DESCRIPTION_FIELD = "_$description";
-    private static final String CREATOR_FIELD = "_$creator";
-    private static final String DELEGATE_METHOD = "_$delegate";
-
-    public ThunkCreatorImpl(@Builtin ClassFactory classFactory)
-    {
-        this.classFactory = classFactory;
-    }
-
-    public <T> T createThunk(Class<T> proxyType, ObjectCreator objectCreator, String description)
-    {
-        assert proxyType != null;
-        assert objectCreator != null;
-        assert InternalUtils.isNonBlank(description);
-        if (!proxyType.isInterface())
-            throw new IllegalArgumentException(
-                    String.format("Thunks may only be created for interfaces; %s is a class.",
-                                  ClassFabUtils.toJavaClassName(proxyType)));
-
-        final Class thunkClass = getThunkClass(proxyType);
-
-        Throwable failure;
-
-        try
-        {
-            return proxyType.cast(thunkClass.getConstructors()[0].newInstance(description, objectCreator));
-        }
-        catch (InvocationTargetException ex)
-        {
-            failure = ex.getTargetException();
-        }
-        catch (Exception ex)
-        {
-            failure = ex;
-        }
-
-        throw new RuntimeException(String.format("Exception instantiating thunk class %s: %s",
-                                                 thunkClass.getName(),
-                                                 InternalUtils.toMessage(failure)),
-                                   failure);
-    }
-
-    private Class getThunkClass(Class type)
-    {
-        Class result = interfaceToThunkClass.get(type);
-
-        if (result == null)
-        {
-            result = constructThunkClass(type);
-            interfaceToThunkClass.put(type, result);
-        }
-
-        return result;
-    }
-
-    private Class constructThunkClass(Class interfaceType)
-    {
-        ClassFab classFab = classFactory.newClass(interfaceType);
-
-        classFab.addField(DESCRIPTION_FIELD, PRIVATE_FINAL, String.class);
-
-        classFab.addField(CREATOR_FIELD, PRIVATE_FINAL, ObjectCreator.class);
-
-        classFab.addConstructor(new Class[] { String.class, ObjectCreator.class }, null,
-                                String.format("{ %s = $1; %s = $2; }", DESCRIPTION_FIELD, CREATOR_FIELD));
-
-        MethodSignature sig = new MethodSignature(interfaceType, DELEGATE_METHOD, null, null);
-
-        classFab.addMethod(Modifier.PRIVATE, sig, String.format("return ($r) %s.createObject();", CREATOR_FIELD));
-
-        MethodIterator mi = new MethodIterator(interfaceType);
-
-        while (mi.hasNext())
-        {
-            sig = mi.next();
-
-            classFab.addMethod(Modifier.PUBLIC, sig,
-                               String.format("return ($r) %s().%s($$);", DELEGATE_METHOD, sig.getName()));
-        }
-
-        if (!mi.getToString())
-            classFab.addMethod(Modifier.PUBLIC, toStringSignature, String.format("return %s;", DESCRIPTION_FIELD));
-
-        return classFab.createClass();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java
deleted file mode 100644
index 330521f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImpl.java
+++ /dev/null
@@ -1,418 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.util.Collection;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.WeakHashMap;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InheritanceSearch;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.CoercionTuple;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.AvailableValues;
-import org.apache.tapestry5.ioc.util.UnknownValueException;
-
-@SuppressWarnings("all")
-public class TypeCoercerImpl implements TypeCoercer
-{
-    // Constructed from the service's configuration.
-
-    private final Map<Class, List<CoercionTuple>> sourceTypeToTuple = CollectionFactory.newMap();
-
-    /**
-     * A coercion to a specific target type. Manages a cache of coercions to specific types.
-     */
-    private class TargetCoercion
-    {
-        private final Class type;
-
-        private final Map<Class, Coercion> cache = CollectionFactory.newConcurrentMap();
-
-        TargetCoercion(Class type)
-        {
-            this.type = type;
-        }
-
-        void clearCache()
-        {
-            cache.clear();
-        }
-
-        Object coerce(Object input)
-        {
-
-            Class sourceType = input != null ? input.getClass() : void.class;
-
-            if (type.isAssignableFrom(sourceType))
-                return input;
-
-            Coercion c = getCoercion(sourceType);
-
-            try
-            {
-                return type.cast(c.coerce(input));
-            }
-            catch (Exception ex)
-            {
-                throw new RuntimeException(ServiceMessages.failedCoercion(input, type, c, ex), ex);
-            }
-        }
-
-        String explain(Class sourceType)
-        {
-            return getCoercion(sourceType).toString();
-        }
-
-        private Coercion getCoercion(Class sourceType)
-        {
-            Coercion c = cache.get(sourceType);
-
-            if (c == null)
-            {
-                c = findOrCreateCoercion(sourceType, type);
-                cache.put(sourceType, c);
-            }
-            return c;
-        }
-    }
-
-    /**
-     * Map from a target type to a TargetCoercion for that type.
-     */
-    private final Map<Class, TargetCoercion> typeToTargetCoercion = new WeakHashMap<Class, TargetCoercion>();
-
-    private static final Coercion NO_COERCION = new Coercion<Object, Object>()
-    {
-        public Object coerce(Object input)
-        {
-            return input;
-        }
-    };
-
-    private static final Coercion COERCION_NULL_TO_OBJECT = new Coercion<Void, Object>()
-    {
-        public Object coerce(Void input)
-        {
-            return null;
-        }
-
-        @Override
-        public String toString()
-        {
-            return "null --> null";
-        }
-    };
-
-    public TypeCoercerImpl(Collection<CoercionTuple> tuples)
-    {
-        for (CoercionTuple tuple : tuples)
-        {
-            Class key = tuple.getSourceType();
-
-            InternalUtils.addToMapList(sourceTypeToTuple, key, tuple);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    public Object coerce(Object input, Class targetType)
-    {
-        assert targetType != null;
-        Class effectiveTargetType = ClassFabUtils.getWrapperType(targetType);
-
-        if (effectiveTargetType.isInstance(input))
-            return input;
-
-        return getTargetCoercion(effectiveTargetType).coerce(input);
-    }
-
-    @SuppressWarnings("unchecked")
-    public <S, T> Coercion<S, T> getCoercion(Class<S> sourceType, Class<T> targetType)
-    {
-        assert sourceType != null;
-        assert targetType != null;
-        Class effectiveSourceType = ClassFabUtils.getWrapperType(sourceType);
-        Class effectiveTargetType = ClassFabUtils.getWrapperType(targetType);
-
-        if (effectiveTargetType.isAssignableFrom(effectiveSourceType))
-            return NO_COERCION;
-
-        return getTargetCoercion(effectiveTargetType).getCoercion(effectiveSourceType);
-    }
-
-    @SuppressWarnings("unchecked")
-    public <S, T> String explain(Class<S> sourceType, Class<T> targetType)
-    {
-        assert sourceType != null;
-        assert targetType != null;
-        Class effectiveTargetType = ClassFabUtils.getWrapperType(targetType);
-        Class effectiveSourceType = ClassFabUtils.getWrapperType(sourceType);
-
-        // Is a coercion even necessary? Not if the target type is assignable from the
-        // input value.
-
-        if (effectiveTargetType.isAssignableFrom(effectiveSourceType))
-            return "";
-
-        return getTargetCoercion(targetType).explain(sourceType);
-    }
-
-    private synchronized TargetCoercion getTargetCoercion(Class targetType)
-    {
-        TargetCoercion tc = typeToTargetCoercion.get(targetType);
-
-        if (tc == null)
-        {
-            tc = new TargetCoercion(targetType);
-            typeToTargetCoercion.put(targetType, tc);
-        }
-
-        return tc;
-    }
-
-    public synchronized void clearCache()
-    {
-        // There's no need to clear the typeToTargetCoercion map, as it is a WeakHashMap and
-        // will release the keys for classes that are no longer in existence. On the other hand,
-        // there's likely all sorts of references to unloaded classes inside each TargetCoercion's
-        // individual cache, so clear all those.
-
-        for (TargetCoercion tc : typeToTargetCoercion.values())
-        {
-            // Can tc ever be null?
-
-            tc.clearCache();
-        }
-    }
-
-    /**
-     * Here's the real meat; we do a search of the space to find coercions, or a system of
-     * coercions, that accomplish
-     * the desired coercion.
-     * <p/>
-     * There's <strong>TREMENDOUS</strong> room to improve this algorithm. For example, inheritance lists could be
-     * cached. Further, there's probably more ways to early prune the search. However, even with dozens or perhaps
-     * hundreds of tuples, I suspect the search will still grind to a conclusion quickly.
-     * <p/>
-     * The order of operations should help ensure that the most efficient tuple chain is located. If you think about how
-     * tuples are added to the queue, there are two factors: size (the number of steps in the coercion) and
-     * "class distance" (that is, number of steps up the inheritance hiearchy). All the appropriate 1 step coercions
-     * will be considered first, in class distance order. Along the way, we'll queue up all the 2 step coercions, again
-     * in class distance order. By the time we reach some of those, we'll have begun queing up the 3 step coercions, and
-     * so forth, until we run out of input tuples we can use to fabricate multi-step compound coercions, or reach a
-     * final response.
-     * <p/>
-     * This does create a good number of short lived temporary objects (the compound tuples), but that's what the GC is
-     * really good at.
-     * 
-     * @param sourceType
-     * @param targetType
-     * @return coercer from sourceType to targetType
-     */
-    @SuppressWarnings("unchecked")
-    private Coercion findOrCreateCoercion(Class sourceType, Class targetType)
-    {
-        if (sourceType == void.class)
-            return searchForNullCoercion(targetType);
-
-        // These are instance variables because this method may be called concurrently.
-        // On a true race, we may go to the work of seeking out and/or fabricating
-        // a tuple twice, but it's more likely that different threads are looking
-        // for different source/target coercions.
-
-        Set<CoercionTuple> consideredTuples = CollectionFactory.newSet();
-        LinkedList<CoercionTuple> queue = CollectionFactory.newLinkedList();
-
-        seedQueue(sourceType, consideredTuples, queue);
-
-        while (!queue.isEmpty())
-        {
-            CoercionTuple tuple = queue.removeFirst();
-
-            // If the tuple results in a value type that is assignable to the desired target type,
-            // we're done! Later, we may add a concept of "cost" (i.e. number of steps) or
-            // "quality" (how close is the tuple target type to the desired target type). Cost
-            // is currently implicit, as compound tuples are stored deeper in the queue,
-            // so simpler coercions will be located earlier.
-
-            Class tupleTargetType = tuple.getTargetType();
-
-            if (targetType.isAssignableFrom(tupleTargetType))
-                return tuple.getCoercion();
-
-            // So .. this tuple doesn't get us directly to the target type.
-            // However, it *may* get us part of the way. Each of these
-            // represents a coercion from the source type to an intermediate type.
-            // Now we're going to look for conversions from the intermediate type
-            // to some other type.
-
-            queueIntermediates(sourceType, tuple, consideredTuples, queue);
-        }
-
-        // Not found anywhere. Identify the source and target type and a (sorted) list of
-        // all the known coercions.
-
-        throw new UnknownValueException(String.format("Could not find a coercion from type %s to type %s.", sourceType
-                .getName(), targetType.getName()), buildCoercionCatalog());
-    }
-
-    /**
-     * Coercion from null is special; we match based on the target type and its not a spanning
-     * search. In many cases, we
-     * return a pass-thru that leaves the value as null.
-     * 
-     * @param targetType
-     *            desired type
-     * @return the coercion
-     */
-    private Coercion searchForNullCoercion(Class targetType)
-    {
-        List<CoercionTuple> tuples = sourceTypeToTuple.get(void.class);
-
-        // We know it will never be null, because we make contributions
-        // to ensure this, but a little check doesn't hurt.
-
-        if (tuples != null)
-        {
-            for (CoercionTuple tuple : tuples)
-            {
-                Class tupleTargetType = tuple.getTargetType();
-
-                if (targetType.equals(tupleTargetType))
-                    return tuple.getCoercion();
-            }
-        }
-
-        // Typical case: no match, this coercion passes the null through
-        // as null.
-
-        return COERCION_NULL_TO_OBJECT;
-    }
-
-    /**
-     * Builds a string listing all the coercions configured for the type coercer, sorted
-     * alphabetically.
-     */
-    @SuppressWarnings("unchecked")
-    private AvailableValues buildCoercionCatalog()
-    {
-        List<CoercionTuple> masterList = CollectionFactory.newList();
-
-        for (List<CoercionTuple> list : sourceTypeToTuple.values())
-        {
-            masterList.addAll(list);
-        }
-
-        return new AvailableValues("Configured coercions", masterList);
-    }
-
-    /**
-     * Seeds the pool with the initial set of coercions for the given type.
-     */
-    private void seedQueue(Class sourceType, Set<CoercionTuple> consideredTuples, LinkedList<CoercionTuple> queue)
-    {
-        // Work from the source type up looking for tuples
-
-        for (Class c : new InheritanceSearch(sourceType))
-        {
-            List<CoercionTuple> tuples = sourceTypeToTuple.get(c);
-
-            if (tuples == null)
-                continue;
-
-            for (CoercionTuple tuple : tuples)
-            {
-                queue.addLast(tuple);
-                consideredTuples.add(tuple);
-            }
-
-            // Don't pull in Object -> type coercions when doing
-            // a search from null.
-
-            if (sourceType == void.class)
-                return;
-        }
-    }
-
-    /**
-     * Creates and adds to the pool a new set of coercions based on an intermediate tuple. Adds
-     * compound coercion tuples
-     * to the end of the queue.
-     * 
-     * @param sourceType
-     *            the source type of the coercion
-     * @param intermediateTuple
-     *            a tuple that converts from the source type to some intermediate type (that is not
-     *            assignable to the target type)
-     * @param consideredTuples
-     *            set of tuples that have already been added to the pool (directly, or as a compound
-     *            coercion)
-     * @param queue
-     *            the work queue of tuples
-     */
-    @SuppressWarnings("unchecked")
-    private void queueIntermediates(Class sourceType, CoercionTuple intermediateTuple,
-            Set<CoercionTuple> consideredTuples, LinkedList<CoercionTuple> queue)
-    {
-        Class intermediateType = intermediateTuple.getTargetType();
-
-        for (Class c : new InheritanceSearch(intermediateType))
-        {
-            List<CoercionTuple> tuples = sourceTypeToTuple.get(c);
-
-            if (tuples == null)
-                continue;
-
-            for (CoercionTuple tuple : tuples)
-            {
-                if (consideredTuples.contains(tuple))
-                    continue;
-
-                Class newIntermediateType = tuple.getTargetType();
-
-                // If this tuple is for coercing from an intermediate type back towards our
-                // initial source type, then ignore it. This should only be an optimization,
-                // as branches that loop back towards the source type will
-                // eventually be considered and discarded.
-
-                if (sourceType.isAssignableFrom(newIntermediateType))
-                    continue;
-
-                // The intermediateTuple coercer gets from S --> I1 (an intermediate type).
-                // The current tuple's coercer gets us from I2 --> X. where I2 is assignable
-                // from I1 (i.e., I2 is a superclass/superinterface of I1) and X is a new
-                // intermediate type, hopefully closer to our eventual target type.
-
-                Coercion compoundCoercer = new CompoundCoercion(intermediateTuple.getCoercion(), tuple.getCoercion());
-
-                CoercionTuple compoundTuple = new CoercionTuple(sourceType, newIntermediateType, compoundCoercer, false);
-
-                // So, every tuple that is added to the queue can take as input the sourceType.
-                // The target type may be another intermdiate type, or may be something
-                // assignable to the target type, which will bring the search to a succesful
-                // conclusion.
-
-                queue.addLast(compoundTuple);
-                consideredTuples.add(tuple);
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/UpdateListenerHubImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/UpdateListenerHubImpl.java
deleted file mode 100644
index 9fde2ae..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/UpdateListenerHubImpl.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.ref.WeakReference;
-import java.util.Iterator;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.services.UpdateListener;
-import org.apache.tapestry5.services.UpdateListenerHub;
-
-@PreventServiceDecoration
-public class UpdateListenerHubImpl implements UpdateListenerHub
-{
-    private final List<WeakReference<UpdateListener>> listeners = CollectionFactory.newThreadSafeList();
-
-    public void addUpdateListener(UpdateListener listener)
-    {
-        assert listener != null;
-        listeners.add(new WeakReference<UpdateListener>(listener));
-    }
-
-    /**
-     * Notifies all {@link UpdateListener}s.
-     */
-    public void fireCheckForUpdates()
-    {
-        List<WeakReference<UpdateListener>> deadReferences = CollectionFactory.newList();
-
-        Iterator<WeakReference<UpdateListener>> i = listeners.iterator();
-
-        while (i.hasNext())
-        {
-            WeakReference<UpdateListener> reference = i.next();
-
-            UpdateListener listener = reference.get();
-
-            if (listener == null)
-                deadReferences.add(reference);
-            else
-                listener.checkForUpdates();
-        }
-
-        if (!deadReferences.isEmpty())
-            listeners.removeAll(deadReferences);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ValueObjectProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ValueObjectProvider.java
deleted file mode 100644
index 828c669..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/services/ValueObjectProvider.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Value;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-
-/**
- * Provides an object when the {@link Value} annotation is present. The string value has symbols expanded, and then is
- * {@link TypeCoercer coerced} to the associated type.   The value may first be coerced to an intermediate type if the
- * {@link IntermediateType} annotation is present.
- */
-public class ValueObjectProvider implements ObjectProvider
-{
-    private final SymbolSource symbolSource;
-
-    private final TypeCoercer typeCoercer;
-
-    public ValueObjectProvider(@Builtin SymbolSource symbolSource,
-
-                               @Builtin TypeCoercer typeCoercer)
-    {
-        this.symbolSource = symbolSource;
-        this.typeCoercer = typeCoercer;
-    }
-
-    public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-    {
-        Value annotation = annotationProvider.getAnnotation(Value.class);
-
-        if (annotation == null) return null;
-
-        String value = annotation.value();
-        Object expanded = symbolSource.expandSymbols(value);
-
-        IntermediateType intermediate = annotationProvider.getAnnotation(IntermediateType.class);
-
-        if (intermediate != null) expanded = typeCoercer.coerce(expanded, intermediate.value());
-
-        return typeCoercer.coerce(expanded, objectType);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/AbstractResource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/AbstractResource.java
deleted file mode 100644
index 37ba6b8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/AbstractResource.java
+++ /dev/null
@@ -1,153 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.io.BufferedInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.net.URL;
-import java.util.Locale;
-
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * Abstract implementation of {@link Resource}. Subclasses must implement the abstract methods {@link Resource#toURL()}
- * and {@link #newResource(String)} as well as toString(), hashCode() and equals().
- */
-public abstract class AbstractResource implements Resource
-{
-    private final String path;
-
-    protected AbstractResource(String path)
-    {
-        assert path != null;
-        this.path = path;
-    }
-
-    public final String getPath()
-    {
-        return path;
-    }
-
-    public final String getFile()
-    {
-        int slashx = path.lastIndexOf('/');
-
-        return path.substring(slashx + 1);
-    }
-
-    public final String getFolder()
-    {
-        int slashx = path.lastIndexOf('/');
-
-        return (slashx < 0) ? "" : path.substring(0, slashx);
-    }
-
-    public final Resource forFile(String relativePath)
-    {
-        assert relativePath != null;
-        StringBuilder builder = new StringBuilder(getFolder());
-
-        for (String term : relativePath.split("/"))
-        {
-            // This will occur if the relative path contains sequential slashes
-
-            if (term.equals("")) continue;
-
-            if (term.equals(".")) continue;
-
-            if (term.equals(".."))
-            {
-                int slashx = builder.lastIndexOf("/");
-
-                // TODO: slashx < 0 (i.e., no slash)
-
-                // Trim path to content before the slash
-
-                builder.setLength(slashx);
-                continue;
-            }
-
-            // TODO: term blank or otherwise invalid?
-            // TODO: final term should not be "." or "..", or for that matter, the
-            // name of a folder, since a Resource should be a file within
-            // a folder.
-
-            if (builder.length() > 0) builder.append("/");
-
-            builder.append(term);
-        }
-
-        return createResource(builder.toString());
-    }
-
-    public final Resource forLocale(Locale locale)
-    {
-        for (String path : new LocalizedNameGenerator(this.path, locale))
-        {
-            Resource potential = createResource(path);
-
-            if (potential.exists()) return potential;
-        }
-
-        return null;
-    }
-
-    public final Resource withExtension(String extension)
-    {
-        assert InternalUtils.isNonBlank(extension);
-        int dotx = path.lastIndexOf('.');
-
-        if (dotx < 0) return createResource(path + "." + extension);
-
-        return createResource(path.substring(0, dotx + 1) + extension);
-    }
-
-    /**
-     * Creates a new resource, unless the path matches the current Resource's path (in which case, this resource is
-     * returned).
-     */
-    private Resource createResource(String path)
-    {
-        if (this.path.equals(path)) return this;
-
-        return newResource(path);
-    }
-
-    /**
-     * Simple check for whether {@link #toURL()} returns null or not.
-     */
-    public boolean exists()
-    {
-        return toURL() != null;
-    }
-
-    /**
-     * Obtains the URL for the Resource and opens the stream, wrapped by a BufferedInputStream.
-     */
-    public InputStream openStream() throws IOException
-    {
-        URL url = toURL();
-
-        if (url == null) return null;
-
-        return new BufferedInputStream(url.openStream());
-    }
-
-    /**
-     * Factory method provided by subclasses.
-     */
-    protected abstract Resource newResource(String path);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/ClasspathResource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/ClasspathResource.java
deleted file mode 100644
index 85eb8cb..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/ClasspathResource.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.net.URL;
-
-import org.apache.tapestry5.ioc.Resource;
-
-/**
- * Implementation of {@link Resource} for files on the classpath (as defined by a {@link ClassLoader}).
- */
-public final class ClasspathResource extends AbstractResource
-{
-    private final ClassLoader classLoader;
-
-    // Guarded by this
-    private URL url;
-
-    // Guarded by this
-    private boolean urlResolved;
-
-    public ClasspathResource(String path)
-    {
-        this(Thread.currentThread().getContextClassLoader(), path);
-    }
-
-    public ClasspathResource(ClassLoader classLoader, String path)
-    {
-        super(path);
-        assert classLoader != null;
-
-        this.classLoader = classLoader;
-    }
-
-    @Override
-    protected Resource newResource(String path)
-    {
-        return new ClasspathResource(classLoader, path);
-    }
-
-    public synchronized URL toURL()
-    {
-        if (!urlResolved)
-        {
-            url = classLoader.getResource(getPath());
-            urlResolved = true;
-        }
-
-        return url;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == null) return false;
-
-        if (obj == this) return true;
-
-        if (obj.getClass() != getClass()) return false;
-
-        ClasspathResource other = (ClasspathResource) obj;
-
-        return other.classLoader == classLoader && other.getPath().equals(getPath());
-    }
-
-    @Override
-    public int hashCode()
-    {
-        return 227 ^ getPath().hashCode();
-    }
-
-    @Override
-    public String toString()
-    {
-        return "classpath:" + getPath();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/CollectionFactory.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/CollectionFactory.java
deleted file mode 100644
index eb50c84..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/CollectionFactory.java
+++ /dev/null
@@ -1,148 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.util.CaseInsensitiveMap;
-import org.apache.tapestry5.ioc.util.Stack;
-
-import java.util.*;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-import java.util.concurrent.CopyOnWriteArrayList;
-
-/**
- * Static factory methods to ease the creation of new collection types (when using generics). Most of these method
- * leverage the compiler's ability to match generic types by return value. Typical usage (with a static import):
- * <p/>
- * <pre>
- * Map&lt;Foo, Bar&gt; map = newMap();
- * </pre>
- * <p/>
- * <p/>
- * This is a replacement for:
- * <p/>
- * <pre>
- * Map&lt;Foo, Bar&gt; map = new HashMap&lt;Foo, Bar&gt;();
- * </pre>
- */
-public final class CollectionFactory
-{
-    /**
-     * Constructs and returns a generic {@link HashMap} instance.
-     */
-    public static <K, V> Map<K, V> newMap()
-    {
-        return new HashMap<K, V>();
-    }
-
-    /**
-     * Constructs and returns a generic {@link java.util.HashSet} instance.
-     */
-    public static <T> Set<T> newSet()
-    {
-        return new HashSet<T>();
-    }
-
-    /**
-     * Contructs a new {@link HashSet} and initializes it using the provided collection.
-     */
-    public static <T, V extends T> Set<T> newSet(Collection<V> values)
-    {
-        return new HashSet<T>(values);
-    }
-
-    public static <T, V extends T> Set<T> newSet(V... values)
-    {
-        // Was a call to newSet(), but Sun JDK can't handle that. Fucking generics.
-        return new HashSet<T>(Arrays.asList(values));
-    }
-
-    /**
-     * Constructs a new {@link java.util.HashMap} instance by copying an existing Map instance.
-     */
-    public static <K, V> Map<K, V> newMap(Map<? extends K, ? extends V> map)
-    {
-        return new HashMap<K, V>(map);
-    }
-
-    /**
-     * Constructs a new concurrent map, which is safe to access via multiple threads.
-     */
-    public static <K, V> ConcurrentMap<K, V> newConcurrentMap()
-    {
-        return new ConcurrentHashMap<K, V>();
-    }
-
-    /**
-     * Contructs and returns a new generic {@link java.util.ArrayList} instance.
-     */
-    public static <T> List<T> newList()
-    {
-        return new ArrayList<T>();
-    }
-
-    /**
-     * Creates a new, fully modifiable list from an initial set of elements.
-     */
-    public static <T, V extends T> List<T> newList(V... elements)
-    {
-        // Was call to newList(), but Sun JDK can't handle that.
-        return new ArrayList<T>(Arrays.asList(elements));
-    }
-
-    /**
-     * Useful for queues.
-     */
-    public static <T> LinkedList<T> newLinkedList()
-    {
-        return new LinkedList<T>();
-    }
-
-    /**
-     * Constructs and returns a new {@link java.util.ArrayList} as a copy of the provided collection.
-     */
-    public static <T, V extends T> List<T> newList(Collection<V> list)
-    {
-        return new ArrayList<T>(list);
-    }
-
-    /**
-     * Constructs and returns a new {@link java.util.concurrent.CopyOnWriteArrayList}.
-     */
-    public static <T> List<T> newThreadSafeList()
-    {
-        return new CopyOnWriteArrayList<T>();
-    }
-
-    public static <T> Stack<T> newStack()
-    {
-        return new Stack<T>();
-    }
-
-    public static <T> Stack<T> newStack(int initialSize)
-    {
-        return new Stack<T>(initialSize);
-    }
-
-    public static <V> Map<String, V> newCaseInsensitiveMap()
-    {
-        return new CaseInsensitiveMap<V>();
-    }
-
-    public static <V> Map<String, V> newCaseInsensitiveMap(Map<String, ? extends V> map)
-    {
-        return new CaseInsensitiveMap<V>(map);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/ConcurrentBarrier.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/ConcurrentBarrier.java
deleted file mode 100644
index fd33d1f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/ConcurrentBarrier.java
+++ /dev/null
@@ -1,251 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Invokable;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.ReadWriteLock;
-import java.util.concurrent.locks.ReentrantReadWriteLock;
-
-/**
- * A barrier used to execute code in a context where it is guarded by read/write locks. In addition, handles upgrading
- * read locks to write locks (and vice versa). Execution of code within a lock is in terms of a {@link Runnable} object
- * (that returns no value), or a {@link Invokable} object (which does return a value).
- */
-public class ConcurrentBarrier
-{
-    private final ReadWriteLock lock = new ReentrantReadWriteLock();
-
-    /**
-     * This is, of course, a bit of a problem. We don't have an avenue for ensuring that this ThreadLocal is destroyed
-     * at the end of the request, and that means a thread can hold a reference to the class and the class loader which
-     * loaded it. This may cause redeployment problems (leaked classes and class loaders). Apparently JDK 1.6 provides
-     * the APIs to check to see if the current thread has a read lock. So, we tend to remove the TL, rather than set its
-     * value to false.
-     */
-    private static class ThreadBoolean extends ThreadLocal<Boolean>
-    {
-        @Override
-        protected Boolean initialValue()
-        {
-            return false;
-        }
-    }
-
-    private final ThreadBoolean threadHasReadLock = new ThreadBoolean();
-
-    /**
-     * Invokes the object after acquiring the read lock (if necessary). If invoked when the read lock has not yet been
-     * acquired, then the lock is acquired for the duration of the call. If the lock has already been acquired, then the
-     * status of the lock is not changed.
-     * <p/>
-     * TODO: Check to see if the write lock is acquired and <em>not</em> acquire the read lock in that situation.
-     * Currently this code is not re-entrant. If a write lock is already acquired and the thread attempts to get the
-     * read lock, then the thread will hang. For the moment, all the uses of ConcurrentBarrier are coded in such a way
-     * that reentrant locks are not a problem.
-     *
-     * @param <T>
-     * @param invokable
-     * @return the result of invoking the invokable
-     */
-    public <T> T withRead(Invokable<T> invokable)
-    {
-        boolean readLockedAtEntry;
-
-        synchronized (threadHasReadLock)
-        {
-            readLockedAtEntry = threadHasReadLock.get();
-        }
-
-        if (!readLockedAtEntry)
-        {
-            lock.readLock().lock();
-
-            synchronized (threadHasReadLock)
-            {
-                threadHasReadLock.set(true);
-            }
-        }
-
-        try
-        {
-            return invokable.invoke();
-        }
-        finally
-        {
-            if (!readLockedAtEntry)
-            {
-                lock.readLock().unlock();
-
-                synchronized (threadHasReadLock)
-                {
-                    threadHasReadLock.remove();
-                }
-            }
-        }
-    }
-
-    /**
-     * As with {@link #withRead(Invokable)}, creating an {@link Invokable} wrapper around the runnable object.
-     */
-    public void withRead(final Runnable runnable)
-    {
-        Invokable<Void> invokable = new Invokable<Void>()
-        {
-            public Void invoke()
-            {
-                runnable.run();
-
-                return null;
-            }
-        };
-
-        withRead(invokable);
-    }
-
-    /**
-     * Acquires the exclusive write lock before invoking the Invokable. The code will be executed exclusively, no other
-     * reader or writer threads will exist (they will be blocked waiting for the lock). If the current thread has a read
-     * lock, it is released before attempting to acquire the write lock, and re-acquired after the write lock is
-     * released. Note that in that short window, between releasing the read lock and acquiring the write lock, it is
-     * entirely possible that some other thread will sneak in and do some work, so the {@link Invokable} object should
-     * be prepared for cases where the state has changed slightly, despite holding the read lock. This usually manifests
-     * as race conditions where either a) some parallel unrelated bit of work has occured or b) duplicate work has
-     * occured. The latter is only problematic if the operation is very expensive.
-     *
-     * @param <T>
-     * @param invokable
-     */
-    public <T> T withWrite(Invokable<T> invokable)
-    {
-        boolean readLockedAtEntry = releaseReadLock();
-
-        lock.writeLock().lock();
-
-        try
-        {
-            return invokable.invoke();
-        }
-        finally
-        {
-            lock.writeLock().unlock();
-            restoreReadLock(readLockedAtEntry);
-        }
-    }
-
-    private boolean releaseReadLock()
-    {
-        boolean readLockedAtEntry;
-
-        synchronized (threadHasReadLock)
-        {
-            readLockedAtEntry = threadHasReadLock.get();
-        }
-
-        if (readLockedAtEntry)
-        {
-            lock.readLock().unlock();
-
-            synchronized (threadHasReadLock)
-            {
-                threadHasReadLock.set(false);
-            }
-        }
-
-        return readLockedAtEntry;
-    }
-
-    private void restoreReadLock(boolean readLockedAtEntry)
-    {
-        if (readLockedAtEntry)
-        {
-            lock.readLock().lock();
-
-            synchronized (threadHasReadLock)
-            {
-                threadHasReadLock.set(true);
-            }
-        }
-        else
-        {
-            synchronized (threadHasReadLock)
-            {
-                threadHasReadLock.remove();
-            }
-        }
-    }
-
-    /**
-     * As with {@link #withWrite(Invokable)}, creating an {@link Invokable} wrapper around the runnable object.
-     */
-    public void withWrite(final Runnable runnable)
-    {
-        Invokable<Void> invokable = new Invokable<Void>()
-        {
-            public Void invoke()
-            {
-                runnable.run();
-
-                return null;
-            }
-        };
-
-        withWrite(invokable);
-    }
-
-    /**
-     * Try to aquire the exclusive write lock and invoke the Runnable. If the write lock is obtained within the specfied
-     * timeout, then this method behaves as {@link #withWrite(Runnable)} and will return true. If the write lock is not
-     * obtained within the timeout then the runnable is never invoked and the method will return false.
-     *
-     * @param runnable    Runnable object to execute inside the write lock.
-     * @param timeout     Time to wait for write lock.
-     * @param timeoutUnit Units of timeout.
-     * @return true if lock was obtained & runnabled executed. False otherwise.
-     */
-    public boolean tryWithWrite(final Runnable runnable, long timeout, TimeUnit timeoutUnit)
-    {
-        boolean readLockedAtEntry = releaseReadLock();
-
-        boolean obtainedLock = false;
-
-        try
-        {
-            try
-            {
-                obtainedLock = lock.writeLock().tryLock(timeout, timeoutUnit);
-
-                if (obtainedLock) runnable.run();
-
-            }
-            catch (InterruptedException e)
-            {
-                obtainedLock = false;
-            }
-            finally
-            {
-                if (obtainedLock) lock.writeLock().unlock();
-            }
-        }
-        finally
-        {
-            restoreReadLock(readLockedAtEntry);
-        }
-
-        return obtainedLock;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DelegatingInjectionResources.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DelegatingInjectionResources.java
deleted file mode 100644
index a677eb2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DelegatingInjectionResources.java
+++ /dev/null
@@ -1,40 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.lang.reflect.Type;
-
-/**
- * Chain of command for InjectionDefaultProvider.
- */
-public class DelegatingInjectionResources implements InjectionResources
-{
-    private final InjectionResources first;
-    private final InjectionResources next;
-
-    public DelegatingInjectionResources(InjectionResources first,
-                                        InjectionResources next)
-    {
-        this.first = first;
-        this.next = next;
-    }
-
-    public <T> T findResource(Class<T> type, Type genericType)
-    {
-        T result = first.findResource(type, null);
-
-        return result != null ? result : next.findResource(type, genericType);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DependencyNode.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DependencyNode.java
deleted file mode 100644
index 04ca3e5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DependencyNode.java
+++ /dev/null
@@ -1,137 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Orderable;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.slf4j.Logger;
-
-import java.util.List;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.util.Orderer} to establish backward dependencies for {@link
- * org.apache.tapestry5.ioc.Orderable} objects.
- *
- * @param <T>
- */
-
-class DependencyNode<T>
-{
-    private final Logger logger;
-
-    private final Orderable<T> orderable;
-
-    private final List<DependencyNode<T>> dependencies = CollectionFactory.newList();
-
-    DependencyNode(Logger logger, Orderable<T> orderable)
-    {
-        this.logger = logger;
-        this.orderable = orderable;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder buffer = new StringBuilder(String.format("[%s", getId()));
-
-        boolean first = true;
-
-        for (DependencyNode<T> node : dependencies)
-        {
-
-            buffer.append(first ? ": " : ", ");
-
-            buffer.append(node.toString());
-
-            first = false;
-        }
-
-        buffer.append("]");
-
-        return buffer.toString();
-    }
-
-    /**
-     * Returns the underlying {@link Orderable}'s id.
-     */
-    public String getId()
-    {
-        return orderable.getId();
-    }
-
-    void addDependency(DependencyNode<T> node)
-    {
-        if (node.isReachable(this))
-        {
-            logger.warn(UtilMessages.dependencyCycle(node, this));
-            return;
-        }
-
-        // Make this node depend on the other node.
-        // That forces the other node's orderable
-        // to appear before this node's orderable.
-
-        dependencies.add(node);
-    }
-
-    boolean isReachable(DependencyNode<T> node)
-    {
-        if (this == node) return true;
-
-        // Quick fast pass for immediate dependencies
-
-        for (DependencyNode<T> d : dependencies)
-        {
-            if (d == node) return true;
-        }
-
-        // Slower second pass looks for
-        // indirect dependencies
-
-        for (DependencyNode<T> d : dependencies)
-        {
-            if (d.isReachable(node)) return true;
-        }
-
-        return false;
-    }
-
-    /**
-     * Returns the {@link Orderable} objects for this node ordered based on dependencies.
-     */
-    List<Orderable<T>> getOrdered()
-    {
-        List<Orderable<T>> result = newList();
-
-        fillOrder(result);
-
-        return result;
-    }
-
-    private void fillOrder(List<Orderable<T>> list)
-    {
-        if (list.contains(orderable)) return;
-
-        // Recusively add dependencies
-
-        for (DependencyNode<T> node : dependencies)
-        {
-            node.fillOrder(list);
-        }
-
-        list.add(orderable);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DummyLock.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DummyLock.java
deleted file mode 100644
index bb5d903..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/DummyLock.java
+++ /dev/null
@@ -1,58 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.util.concurrent.TimeUnit;
-import java.util.concurrent.locks.Condition;
-import java.util.concurrent.locks.Lock;
-
-/**
- * Acts like a Lock but all operations are no-ops.
- */
-public class DummyLock implements Lock
-{
-    public void lock()
-    {
-    }
-
-    public void lockInterruptibly() throws InterruptedException
-    {
-    }
-
-    /**
-     * Returns null.
-     */
-    public Condition newCondition()
-    {
-        return null;
-    }
-
-    /** @return true */
-    public boolean tryLock()
-    {
-        return true;
-    }
-
-    /** @return true */
-    public boolean tryLock(long time, TimeUnit unit) throws InterruptedException
-    {
-        return true;
-    }
-
-    public void unlock()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
deleted file mode 100644
index 70cbc3b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/GenericsUtils.java
+++ /dev/null
@@ -1,219 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.lang.reflect.*;
-import java.util.LinkedList;
-
-/**
- * Static methods related to the use of JDK 1.5 generics.
- */
-@SuppressWarnings("unchecked")
-public class GenericsUtils
-{
-    /**
-     * Analyzes the method (often defined in a base class) in the context of a particular concrete implementation of the
-     * class to establish the generic type of a property. This works when the property type is defined as a class
-     * generic parameter.
-     * 
-     * @param containingClassType
-     *            class containing the method, used to reason about generics
-     * @param method
-     *            method (possibly from a base class of type) to extract
-     * @return the generic type if it may be determined, or the raw type (that is, with type erasure, most often
-     *         Object)
-     */
-    public static Class extractGenericReturnType(Class containingClassType, Method method)
-    {
-        return extractActualTypeAsClass(containingClassType, method.getDeclaringClass(), method.getGenericReturnType(),
-                method.getReturnType());
-
-    }
-
-    /**
-     * Analyzes the field in the context of a particular concrete implementation of the class to establish
-     * the generic type of a (public) field. This works when the field type is defined as a class
-     * generic parameter.
-     * 
-     * @param containingClassType
-     *            class containing the method, used to reason about generics
-     * @param field
-     *            public field to extract type from
-     * @return the generic type if it may be determined, or the raw type (that is, with type erasure, most often
-     * @since 5.2.0
-     */
-    public static Class extractGenericFieldType(Class containingClassType, Field field)
-    {
-        return extractActualTypeAsClass(containingClassType, field.getDeclaringClass(), field.getGenericType(),
-                field.getType());
-    }
-
-    /**
-     * @param owner
-     *            - type that owns the field
-     * @param field
-     *            - field that is generic
-     * @return Type
-     */
-    public static Type extractActualType(Type owner, Field field)
-    {
-        return extractActualType(owner, field.getDeclaringClass(), field.getGenericType(), field.getType());
-    }
-
-    /**
-     * @param owner
-     *            - type that owns the field
-     * @param method
-     *            - method with generic return type
-     * @return Type
-     */
-    public static Type extractActualType(Type owner, Method method)
-    {
-        return extractActualType(owner, method.getDeclaringClass(), method.getGenericReturnType(),
-                method.getReturnType());
-    }
-
-    /**
-     * Extracts the Class used as a type argument when declaring a
-     * 
-     * @param containingType
-     *            - the type which the method is being/will be called on
-     * @param declaringClass
-     *            - the class that the method is actually declared in (base class)
-     * @param type
-     *            - the generic type from the field/method being inspected
-     * @param defaultType
-     *            - the default type to return if no parameterized type can be found
-     * @return a Class or ParameterizedType that the field/method can reliably be cast to.
-     * @since 5.2.?
-     */
-    private static Type extractActualType(final Type containingType, final Class declaringClass, final Type type,
-            final Class defaultType)
-    {
-
-        if (type instanceof ParameterizedType) { return type; }
-        if (!(type instanceof TypeVariable))
-            return defaultType;
-
-        TypeVariable typeVariable = (TypeVariable) type;
-
-        if (!declaringClass.isAssignableFrom(asClass(containingType))) { throw new RuntimeException(String.format(
-                "%s must be a subclass of %s", declaringClass.getName(), asClass(containingType).getName())); }
-
-        // First, check to see if we are operating on a parameterized type already.
-        Type extractedType = type;
-        if (containingType instanceof ParameterizedType)
-        {
-            final int i = getTypeVariableIndex(asClass(containingType), typeVariable);
-            extractedType = ((ParameterizedType) containingType).getActualTypeArguments()[i];
-            if (extractedType instanceof Class || extractedType instanceof ParameterizedType) { return extractedType; }
-        }
-
-        // Somewhere between declaringClass and containingClass are the parameter type arguments
-        // We are going to drop down the containingClassType until we find the declaring class.
-        // The class that extends declaringClass will define the ParameterizedType or a new TypeVariable
-
-        final LinkedList<Type> classStack = new LinkedList<Type>();
-        Type cur = containingType;
-        while (cur != null && !asClass(cur).equals(declaringClass))
-        {
-            classStack.add(0, cur);
-            cur = asClass(cur).getSuperclass();
-        }
-
-        int typeArgumentIndex = getTypeVariableIndex(declaringClass, (TypeVariable) extractedType);
-
-        for (Type descendant : classStack)
-        {
-            final Class descendantClass = asClass(descendant);
-            final ParameterizedType parameterizedType = (ParameterizedType) descendantClass.getGenericSuperclass();
-
-            extractedType = parameterizedType.getActualTypeArguments()[typeArgumentIndex];
-
-            if (extractedType instanceof Class || extractedType instanceof ParameterizedType) { return extractedType; }
-
-            if (extractedType instanceof TypeVariable)
-            {
-                typeArgumentIndex = getTypeVariableIndex(descendantClass, (TypeVariable) extractedType);
-            }
-            else
-            {
-                // I don't know what else this could be?
-                break;
-            }
-        }
-
-        return defaultType;
-    }
-
-    /**
-     * Convenience method to get actual type as raw class.
-     * 
-     * @param containingClassType
-     * @param declaringClass
-     * @param type
-     * @param defaultType
-     * @return
-     * @see #extractActualType(Type, Class, Type, Class)
-     */
-    private static Class extractActualTypeAsClass(Class containingClassType, Class<?> declaringClass, Type type,
-            Class<?> defaultType)
-    {
-        final Type actualType = extractActualType(containingClassType, declaringClass, type, defaultType);
-
-        return asClass(actualType);
-    }
-
-    public static Class asClass(Type actualType)
-    {
-        if (actualType instanceof ParameterizedType)
-        {
-            final Type rawType = ((ParameterizedType) actualType).getRawType();
-            if (rawType instanceof Class)
-            {
-                // The sun implementation returns Class<?>, but there is room in the interface for it to be
-                // something else so to be safe ignore whatever "something else" might be.
-                // TODO: consider logging for that day when "something else" causes some confusion
-                return (Class) rawType;
-            }
-        }
-
-        return (Class) actualType;
-    }
-
-    /**
-     * Find the index of the TypeVariable in the classes parameters. The offset can be used on a subclass to find
-     * the actual type.
-     * 
-     * @param clazz
-     *            - the parameterized class
-     * @param typeVar
-     *            - the type variable in question.
-     * @return the index of the type variable in the classes type parameters.
-     */
-    private static int getTypeVariableIndex(Class clazz, TypeVariable typeVar)
-    {
-        // the label from the class (the T in List<T>, the K and V in Map<K,V>, etc)
-        String typeVarName = typeVar.getName();
-        int typeArgumentIndex = 0;
-        final TypeVariable[] typeParameters = clazz.getTypeParameters();
-        for (; typeArgumentIndex < typeParameters.length; typeArgumentIndex++)
-        {
-            if (typeParameters[typeArgumentIndex].getName().equals(typeVarName))
-                break;
-        }
-        return typeArgumentIndex;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/IdToDependencyNode.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/IdToDependencyNode.java
deleted file mode 100644
index 3f4a1bc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/IdToDependencyNode.java
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.IdMatcher;
-import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.IdMatcherImpl;
-import org.apache.tapestry5.ioc.internal.OrIdMatcher;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Used to order objects into an "execution" order. Each object must have a unique id. It may specify a list of
- * constraints which identify the ordering of the objects.
- */
-public class IdToDependencyNode<T>
-{
-  private final OneShotLock lock = new OneShotLock();
-
-  private final Logger logger;
-
-  private final List<Orderable> orderables = CollectionFactory.newList();
-
-  private final Map<String, Orderable<T>> idToOrderable = CollectionFactory.newCaseInsensitiveMap();
-
-  private final Map<String, DependencyNode<T>> idToDependencyNode = CollectionFactory.newCaseInsensitiveMap();
-
-  // Special node that is always dead last: all other nodes are a dependency
-  // of the trailer.
-
-  private DependencyNode<T> trailer;
-
-  interface DependencyLinker<T>
-  {
-    void link(DependencyNode<T> source, DependencyNode<T> target);
-  }
-
-  // before: source is added as a dependency of target, so source will
-  // appear before target.
-
-  final DependencyLinker<T> before = new DependencyLinker<T>()
-  {
-    public void link(DependencyNode<T> source, DependencyNode<T> target)
-    {
-      target.addDependency(source);
-    }
-  };
-
-  // after: target is added as a dependency of source, so source will appear
-  // after target.
-
-  final DependencyLinker<T> after = new DependencyLinker<T>()
-  {
-    public void link(DependencyNode<T> source, DependencyNode<T> target)
-    {
-      source.addDependency(target);
-    }
-  };
-
-  public IdToDependencyNode(Logger logger)
-  {
-    this.logger = logger;
-  }
-
-  /**
-   * Adds an object to be ordered.
-   *
-   * @param orderable
-   */
-  public void add(Orderable<T> orderable)
-  {
-    lock.check();
-
-    String id = orderable.getId();
-
-    if (idToOrderable.containsKey(id))
-    {
-      logger.warn(UtilMessages.duplicateOrderer(id));
-      return;
-    }
-
-    orderables.add(orderable);
-
-    idToOrderable.put(id, orderable);
-  }
-
-  /**
-   * Adds an object to be ordered.
-   *
-   * @param id          unique, qualified id for the target
-   * @param target      the object to be ordered (or null as a placeholder)
-   * @param constraints optional, variable constraints
-   * @see #add(org.apache.tapestry5.ioc.Orderable)
-   */
-
-  public void add(String id, T target, String... constraints)
-  {
-    lock.check();
-
-    add(new Orderable<T>(id, target, constraints));
-  }
-
-  public List<T> getOrdered()
-  {
-    lock.lock();
-
-    initializeGraph();
-
-    List<T> result = newList();
-
-    for (Orderable<T> orderable : trailer.getOrdered())
-    {
-      T target = orderable.getTarget();
-
-      // Nulls are placeholders that are skipped.
-
-      if (target != null) result.add(target);
-    }
-
-    return result;
-  }
-
-  private void initializeGraph()
-  {
-    trailer = new DependencyNode<T>(logger, new Orderable<T>("*-trailer-*", null));
-
-    addNodes();
-
-    addDependencies();
-  }
-
-  private void addNodes()
-  {
-    for (Orderable<T> orderable : orderables)
-    {
-      DependencyNode<T> node = new DependencyNode<T>(logger, orderable);
-
-      idToDependencyNode.put(orderable.getId(), node);
-
-      trailer.addDependency(node);
-    }
-  }
-
-  private void addDependencies()
-  {
-    for (Orderable<T> orderable : orderables)
-    {
-      addDependencies(orderable);
-    }
-  }
-
-  private void addDependencies(Orderable<T> orderable)
-  {
-    String sourceId = orderable.getId();
-
-    for (String constraint : orderable.getConstraints())
-    {
-      addDependencies(sourceId, constraint);
-    }
-  }
-
-  private void addDependencies(String sourceId, String constraint)
-  {
-    int colonx = constraint.indexOf(':');
-
-    String type = colonx > 0 ? constraint.substring(0, colonx) : null;
-
-    DependencyLinker<T> linker = null;
-
-    if ("after".equals(type))
-      linker = after;
-    else if ("before".equals(type)) linker = before;
-
-    if (linker == null)
-    {
-      logger.warn(UtilMessages.constraintFormat(constraint, sourceId));
-      return;
-    }
-
-    String patternList = constraint.substring(colonx + 1);
-
-    linkNodes(sourceId, patternList, linker);
-  }
-
-  private void linkNodes(String sourceId, String patternList, DependencyLinker<T> linker)
-  {
-    Collection<DependencyNode<T>> nodes = findDependencies(sourceId, patternList);
-
-    DependencyNode<T> source = idToDependencyNode.get(sourceId);
-
-    for (DependencyNode<T> target : nodes)
-    {
-      linker.link(source, target);
-    }
-  }
-
-  private Collection<DependencyNode<T>> findDependencies(String sourceId, String patternList)
-  {
-    IdMatcher matcher = buildMatcherForPattern(patternList);
-
-    Collection<DependencyNode<T>> result = newList();
-
-    for (String id : idToDependencyNode.keySet())
-    {
-      if (sourceId.equals(id)) continue;
-
-      if (matcher.matches(id)) result.add(idToDependencyNode.get(id));
-    }
-
-    return result;
-  }
-
-  private IdMatcher buildMatcherForPattern(String patternList)
-  {
-    List<IdMatcher> matchers = newList();
-
-    for (String pattern : patternList.split(","))
-    {
-      IdMatcher matcher = new IdMatcherImpl(pattern.trim());
-
-      matchers.add(matcher);
-    }
-
-    return matchers.size() == 1 ? matchers.get(0) : new OrIdMatcher(matchers);
-  }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearch.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearch.java
deleted file mode 100644
index bdd6d1e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearch.java
+++ /dev/null
@@ -1,154 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.Set;
-
-/**
- * Used to search from a particular class up the inheritance hierarchy of extended classes and implemented interfaces.
- * <p/>
- * The search starts with the initial class (provided in the constructor). It progresses up the inheritance chain, but
- * skips java.lang.Object.
- * <p/>
- * Once classes are exhausted, the inheritance hiearchy is searched. This is a breadth-first search, rooted in the
- * interfaces implemented by the initial class at its super classes.
- * <p/>
- * Once all interfaces are exhausted, java.lang.Object is returned (it is always returned last).
- * <p/>
- * Two minor tweak to normal inheritance rules: <ul> <li> Normally, the parent class of an <em>object</em> array is
- * java.lang.Object, which is odd because Foo[] is assignable to Object[]. Thus, we tweak the search so that the
- * effective super class of Foo[] is Object[]. <li> The "super class" of a primtive type is its <em>wrapper type</em>,
- * with the exception of void, whose "super class" is left at its normal value (Object.class) </ul>
- * <p/>
- * This class implements the {@link Iterable} interface, so it can be used directly in a for loop: <code> for (Class
- * search : new InheritanceSearch(startClass)) { ... } </code>
- * <p/>
- * This class is not threadsafe.
- */
-public class InheritanceSearch implements Iterator<Class>, Iterable<Class>
-{
-    private Class searchClass;
-
-    private final Set<Class> addedInterfaces = CollectionFactory.newSet();
-
-    private final LinkedList<Class> interfaceQueue = CollectionFactory.newLinkedList();
-
-    private enum State
-    {
-        CLASS, INTERFACE, DONE
-    }
-
-    private State state;
-
-    public InheritanceSearch(Class searchClass)
-    {
-        this.searchClass = searchClass;
-
-        queueInterfaces(searchClass);
-
-        state = searchClass == Object.class ? State.INTERFACE : State.CLASS;
-    }
-
-    private void queueInterfaces(Class searchClass)
-    {
-        for (Class intf : searchClass.getInterfaces())
-        {
-            if (addedInterfaces.contains(intf)) continue;
-
-            interfaceQueue.addLast(intf);
-            addedInterfaces.add(intf);
-        }
-    }
-
-    public Iterator<Class> iterator()
-    {
-        return this;
-    }
-
-    public boolean hasNext()
-    {
-        return state != State.DONE;
-    }
-
-    public Class next()
-    {
-        switch (state)
-        {
-            case CLASS:
-
-                Class result = searchClass;
-
-                searchClass = parentOf(searchClass);
-
-                if (searchClass == null) state = State.INTERFACE;
-                else queueInterfaces(searchClass);
-
-                return result;
-
-            case INTERFACE:
-
-                if (interfaceQueue.isEmpty())
-                {
-                    state = State.DONE;
-                    return Object.class;
-                }
-
-                Class intf = interfaceQueue.removeFirst();
-
-                queueInterfaces(intf);
-
-                return intf;
-
-            default:
-                throw new IllegalStateException();
-        }
-
-    }
-
-    /**
-     * Returns the parent of the given class. Tweaks inheritance for object arrays. Returns null instead of
-     * Object.class.
-     */
-    private Class parentOf(Class clazz)
-    {
-        if (clazz != void.class && clazz.isPrimitive()) return ClassFabUtils.getWrapperType(clazz);
-
-        if (clazz.isArray() && clazz != Object[].class)
-        {
-            Class componentType = clazz.getComponentType();
-
-            while (componentType.isArray()) componentType = componentType.getComponentType();
-
-            if (!componentType.isPrimitive()) return Object[].class;
-        }
-
-        Class parent = clazz.getSuperclass();
-
-        return parent != Object.class ? parent : null;
-    }
-
-    /**
-     * @throws UnsupportedOperationException always
-     */
-    public void remove()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InjectionResources.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InjectionResources.java
deleted file mode 100644
index fa48157..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InjectionResources.java
+++ /dev/null
@@ -1,34 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.lang.reflect.Type;
-
-/**
- * Provides for the injection of specific types of values as <em>resources</em> as opposed to services or objects
- * obtained from {@link org.apache.tapestry5.ioc.services.MasterObjectProvider}. This includes values such as a
- * service's id, logger or service interface class.
- */
-public interface InjectionResources
-{
-    /**
-     * Given the field type, provide the matching resource value, or null.
-     *
-     * @param type        type of field or parameter
-     * @param genericType generic type information associated with field or parameter
-     * @return the  corresponding value, or null
-     */
-    <T> T findResource(Class<T> type, Type genericType);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java
deleted file mode 100644
index 175d20d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/InternalUtils.java
+++ /dev/null
@@ -1,1203 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Field;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.lang.reflect.Type;
-import java.net.URL;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicLong;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.apache.tapestry5.func.Mapper;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.AdvisorDef;
-import org.apache.tapestry5.ioc.AdvisorDef2;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.IOCConstants;
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceAdvisor;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.ServiceLifecycle2;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.InjectResource;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.ioc.annotations.PostInjection;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.ContributionDef2;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.DecoratorDef2;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ModuleDef2;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-import org.apache.tapestry5.ioc.internal.InternalServiceDef;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.Coercion;
-
-/**
- * Utilities used within various internal implementations of the tapestry-ioc module.
- */
-@SuppressWarnings("all")
-public class InternalUtils
-{
-    /** @since 5.2.2 */
-    public static final boolean SERVICE_CLASS_RELOADING_ENABLED = Boolean.parseBoolean(System.getProperty(
-            IOCConstants.SERVICE_CLASS_RELOADING_ENABLED, "true"));
-
-    /**
-     * Leading punctuation on member names that is stripped off to form a property name or new member name.
-     */
-    private static final String NAME_PREFIX = "_$";
-
-    /**
-     * Pattern used to eliminate leading and trailing underscores and dollar signs.
-     */
-    private static final Pattern NAME_PATTERN = Pattern.compile("^[_|$]*([\\p{javaJavaIdentifierPart}]+?)[_|$]*$",
-            Pattern.CASE_INSENSITIVE);
-
-    /**
-     * Converts a method to a user presentable string using a {@link ClassFactory} to obtain a {@link Location} (where
-     * possible). {@link #asString(Method)} is used under the covers, to present a detailed, but not excessive,
-     * description of the class, method and parameters.
-     * 
-     * @param method
-     *            method to convert to a string
-     * @param classFactory
-     *            used to obtain the {@link Location}
-     * @return the method formatted for presentation to the user
-     */
-    public static String asString(Method method, ClassFactory classFactory)
-    {
-        Location location = classFactory.getMethodLocation(method);
-
-        return location != null ? location.toString() : asString(method);
-    }
-
-    /**
-     * Converts a method to a user presentable string consisting of the containing class name, the method name, and the
-     * short form of the parameter list (the class name of each parameter type, shorn of the package name portion).
-     * 
-     * @param method
-     * @return short string representation
-     */
-    public static String asString(Method method)
-    {
-        StringBuilder buffer = new StringBuilder();
-
-        buffer.append(method.getDeclaringClass().getName());
-        buffer.append(".");
-        buffer.append(method.getName());
-        buffer.append("(");
-
-        for (int i = 0; i < method.getParameterTypes().length; i++)
-        {
-            if (i > 0)
-                buffer.append(", ");
-
-            String name = method.getParameterTypes()[i].getSimpleName();
-
-            buffer.append(name);
-        }
-
-        return buffer.append(")").toString();
-    }
-
-    /**
-     * Returns the size of an object array, or null if the array is empty.
-     */
-
-    public static int size(Object[] array)
-    {
-        return array == null ? 0 : array.length;
-    }
-
-    public static int size(Collection collection)
-    {
-        return collection == null ? 0 : collection.size();
-    }
-
-    /**
-     * Strips leading "_" and "$" and trailing "_" from the name.
-     */
-    public static String stripMemberName(String memberName)
-    {
-        assert InternalUtils.isNonBlank(memberName);
-        Matcher matcher = NAME_PATTERN.matcher(memberName);
-
-        if (!matcher.matches())
-            throw new IllegalArgumentException(String.format("Input '%s' is not a valid Java identifier.", memberName));
-
-        return matcher.group(1);
-    }
-
-    /**
-     * Strips leading characters defined by {@link InternalUtils#NAME_PREFIX}, then adds the prefix back in.
-     */
-    public static String createMemberName(String memberName)
-    {
-        return NAME_PREFIX + stripMemberName(memberName);
-    }
-
-    /**
-     * Converts an enumeration (of Strings) into a sorted list of Strings.
-     */
-    public static List<String> toList(Enumeration e)
-    {
-        List<String> result = CollectionFactory.newList();
-
-        while (e.hasMoreElements())
-        {
-            String name = (String) e.nextElement();
-
-            result.add(name);
-        }
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    /**
-     * Finds a specific annotation type within an array of annotations.
-     * 
-     * @param <T>
-     * @param annotations
-     *            to search
-     * @param annotationClass
-     *            to match
-     * @return the annotation instance, if found, or null otherwise
-     */
-    public static <T extends Annotation> T findAnnotation(Annotation[] annotations, Class<T> annotationClass)
-    {
-        for (Annotation a : annotations)
-        {
-            if (annotationClass.isInstance(a))
-                return annotationClass.cast(a);
-        }
-
-        return null;
-    }
-
-    private static Object calculateInjection(Class injectionType, Type genericType, final Annotation[] annotations,
-            ObjectLocator locator, InjectionResources resources)
-    {
-        AnnotationProvider provider = new AnnotationProvider()
-        {
-            public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-            {
-                return findAnnotation(annotations, annotationClass);
-            }
-        };
-
-        // At some point, it would be nice to eliminate InjectService, and rely
-        // entirely on service interface type and point-of-injection markers.
-
-        InjectService is = provider.getAnnotation(InjectService.class);
-
-        if (is != null)
-        {
-            String serviceId = is.value();
-
-            return locator.getService(serviceId, injectionType);
-        }
-
-        // In the absence of @InjectService, try some autowiring. First, does the
-        // parameter type match one of the resources (the parameter defaults)?
-
-        if (provider.getAnnotation(Inject.class) == null)
-        {
-            Object result = resources.findResource(injectionType, genericType);
-
-            if (result != null)
-                return result;
-        }
-
-        // Otherwise, make use of the MasterObjectProvider service to resolve this type (plus
-        // any other information gleaned from additional annotation) into the correct object.
-
-        return locator.getObject(injectionType, provider);
-    }
-
-    public static Object[] calculateParametersForMethod(Method method, ObjectLocator locator,
-            InjectionResources resources, OperationTracker tracker)
-    {
-
-        return calculateParameters(locator, resources, method.getParameterTypes(), method.getGenericParameterTypes(),
-                method.getParameterAnnotations(), tracker);
-    }
-
-    public static Object[] calculateParametersForConstructor(Constructor constructor, ObjectLocator locator,
-            InjectionResources resources, OperationTracker tracker)
-    {
-
-        return calculateParameters(locator, resources, constructor.getParameterTypes(),
-                constructor.getGenericParameterTypes(), constructor.getParameterAnnotations(), tracker);
-    }
-
-    public static Object[] calculateParameters(final ObjectLocator locator, final InjectionResources resources,
-            Class[] parameterTypes, final Type[] genericTypes, Annotation[][] parameterAnnotations,
-            OperationTracker tracker)
-    {
-        int parameterCount = parameterTypes.length;
-
-        Object[] parameters = new Object[parameterCount];
-
-        for (int i = 0; i < parameterCount; i++)
-        {
-            final Class type = parameterTypes[i];
-            final Type genericType = genericTypes[i];
-            final Annotation[] annotations = parameterAnnotations[i];
-
-            String description = String.format("Determining injection value for parameter #%d (%s)", i + 1,
-                    ClassFabUtils.toJavaClassName(type));
-
-            final Invokable<Object> operation = new Invokable<Object>()
-            {
-                public Object invoke()
-                {
-                    return calculateInjection(type, genericType, annotations, locator, resources);
-                }
-            };
-
-            parameters[i] = tracker.invoke(description, operation);
-        }
-
-        return parameters;
-    }
-
-    /**
-     * Injects into the fields (of all visibilities) when the {@link org.apache.tapestry5.ioc.annotations.Inject} or
-     * {@link org.apache.tapestry5.ioc.annotations.InjectService} annotations are present.
-     * 
-     * @param object
-     *            to be initialized
-     * @param locator
-     *            used to resolve external dependencies
-     * @param resources
-     *            provides injection resources for fields
-     * @param tracker
-     *            track operations
-     */
-    public static void injectIntoFields(final Object object, final ObjectLocator locator,
-            final InjectionResources resources, OperationTracker tracker)
-    {
-        Class clazz = object.getClass();
-
-        while (clazz != Object.class)
-        {
-            Field[] fields = clazz.getDeclaredFields();
-
-            for (final Field f : fields)
-            {
-                // Ignore all static fields.
-
-                if (Modifier.isStatic(f.getModifiers()))
-                    continue;
-
-                final AnnotationProvider ap = new AnnotationProvider()
-                {
-                    public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-                    {
-                        return f.getAnnotation(annotationClass);
-                    }
-                };
-
-                String description = String.format("Calculating injection value for field '%s' (%s)", f.getName(),
-                        ClassFabUtils.toJavaClassName(f.getType()));
-
-                tracker.run(description, new Runnable()
-                {
-                    public void run()
-                    {
-                        final Class<?> fieldType = f.getType();
-
-                        InjectService is = ap.getAnnotation(InjectService.class);
-                        if (is != null)
-                        {
-                            inject(object, f, locator.getService(is.value(), fieldType));
-                            return;
-                        }
-
-                        if (ap.getAnnotation(Inject.class) != null)
-                        {
-                            inject(object, f, locator.getObject(fieldType, ap));
-                            return;
-                        }
-
-                        if (ap.getAnnotation(InjectResource.class) != null)
-                        {
-                            Object value = resources.findResource(fieldType, f.getGenericType());
-
-                            if (value == null)
-                                throw new RuntimeException(UtilMessages.injectResourceFailure(f.getName(), fieldType));
-
-                            inject(object, f, value);
-
-                            return;
-                        }
-
-                        // Ignore fields that do not have the necessary annotation.
-
-                    }
-                });
-            }
-
-            clazz = clazz.getSuperclass();
-        }
-    }
-
-    public static void invokePostInjectionMethods(final Object object, final ObjectLocator locator,
-            final InjectionResources injectionResources, final OperationTracker tracker)
-    {
-        for (final Method m : object.getClass().getMethods())
-        {
-            if (m.getAnnotation(PostInjection.class) == null)
-                continue;
-
-            String description = String.format("Invoking post-inject method %s", m);
-
-            tracker.run(description, new Runnable()
-            {
-                public void run()
-                {
-                    Throwable fail = null;
-
-                    try
-                    {
-                        Object[] parameters = InternalUtils.calculateParametersForMethod(m, locator,
-                                injectionResources, tracker);
-
-                        m.invoke(object, parameters);
-                    }
-                    catch (InvocationTargetException ex)
-                    {
-                        fail = ex.getTargetException();
-                    }
-                    catch (Exception ex)
-                    {
-                        fail = ex;
-                    }
-
-                    if (fail != null)
-                        throw new RuntimeException(String
-                                .format("Exception invoking method %s: %s", m, toMessage(fail)), fail);
-                }
-            });
-        }
-    }
-
-    private synchronized static void inject(Object target, Field field, Object value)
-    {
-        try
-        {
-            if (!field.isAccessible())
-                field.setAccessible(true);
-
-            field.set(target, value);
-
-            // Is there a need to setAccessible back to false?
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(String.format("Unable to set field '%s' of %s to %s: %s", field.getName(),
-                    target, value, toMessage(ex)));
-        }
-    }
-
-    /**
-     * Joins together some number of elements to form a comma separated list.
-     */
-    public static String join(List elements)
-    {
-        return join(elements, ", ");
-    }
-
-    /**
-     * Joins together some number of elements. If a value in the list is the empty string, it is replaced with the
-     * string "(blank)".
-     * 
-     * @param elements
-     *            objects to be joined together
-     * @param separator
-     *            used between elements when joining
-     */
-    public static String join(List elements, String separator)
-    {
-        switch (elements.size())
-        {
-            case 0:
-                return "";
-
-            case 1:
-                return elements.get(0).toString();
-
-            default:
-
-                StringBuilder buffer = new StringBuilder();
-                boolean first = true;
-
-                for (Object o : elements)
-                {
-                    if (!first)
-                        buffer.append(separator);
-
-                    String string = String.valueOf(o);
-
-                    if (string.equals(""))
-                        string = "(blank)";
-
-                    buffer.append(string);
-
-                    first = false;
-                }
-
-                return buffer.toString();
-        }
-    }
-
-    /**
-     * Creates a sorted copy of the provided elements, then turns that into a comma separated list.
-     * 
-     * @return the elements converted to strings, sorted, joined with comma ... or "(none)" if the elements are null or
-     *         empty
-     */
-    public static String joinSorted(Collection elements)
-    {
-        if (elements == null || elements.isEmpty())
-            return "(none)";
-
-        List<String> list = CollectionFactory.newList();
-
-        for (Object o : elements)
-            list.add(String.valueOf(o));
-
-        Collections.sort(list);
-
-        return join(list);
-    }
-
-    /**
-     * Returns true if the input is null, or is a zero length string (excluding leading/trailing whitespace).
-     */
-
-    public static boolean isBlank(String input)
-    {
-        return input == null || input.length() == 0 || input.trim().length() == 0;
-    }
-
-    /**
-     * Returns true if the input is an empty collection.
-     */
-
-    public static boolean isEmptyCollection(Object input)
-    {
-        if (input instanceof Collection) { return ((Collection) input).isEmpty(); }
-
-        return false;
-    }
-
-    public static boolean isNonBlank(String input)
-    {
-        return !isBlank(input);
-    }
-
-    /**
-     * Capitalizes a string, converting the first character to uppercase.
-     */
-    public static String capitalize(String input)
-    {
-        if (input.length() == 0)
-            return input;
-
-        return input.substring(0, 1).toUpperCase() + input.substring(1);
-    }
-
-    /**
-     * Sniffs the object to see if it is a {@link Location} or {@link Locatable}. Returns null if null or not
-     * convertable to a location.
-     */
-
-    public static Location locationOf(Object location)
-    {
-        if (location == null)
-            return null;
-
-        if (location instanceof Location)
-            return (Location) location;
-
-        if (location instanceof Locatable)
-            return ((Locatable) location).getLocation();
-
-        return null;
-    }
-
-    /**
-     * Extracts the string keys from a map and returns them in sorted order. The keys are converted to strings.
-     * 
-     * @param map
-     *            the map to extract keys from (may be null)
-     * @return the sorted keys, or the empty set if map is null
-     */
-
-    public static List<String> sortedKeys(Map map)
-    {
-        if (map == null)
-            return Collections.emptyList();
-
-        List<String> keys = CollectionFactory.newList();
-
-        for (Object o : map.keySet())
-            keys.add(String.valueOf(o));
-
-        Collections.sort(keys);
-
-        return keys;
-    }
-
-    public static <K, V> Set<K> keys(Map<K, V> map)
-    {
-        if (map == null)
-            return Collections.emptySet();
-
-        return map.keySet();
-    }
-
-    /**
-     * Gets a value from a map (which may be null).
-     * 
-     * @param <K>
-     * @param <V>
-     * @param map
-     *            the map to extract from (may be null)
-     * @param key
-     * @return the value from the map, or null if the map is null
-     */
-
-    public static <K, V> V get(Map<K, V> map, K key)
-    {
-        if (map == null)
-            return null;
-
-        return map.get(key);
-    }
-
-    /**
-     * Returns true if the method provided is a static method.
-     */
-    public static boolean isStatic(Method method)
-    {
-        return Modifier.isStatic(method.getModifiers());
-    }
-
-    public static <T> Iterator<T> reverseIterator(final List<T> list)
-    {
-        final ListIterator<T> normal = list.listIterator(list.size());
-
-        return new Iterator<T>()
-        {
-            public boolean hasNext()
-            {
-                return normal.hasPrevious();
-            }
-
-            public T next()
-            {
-                // TODO Auto-generated method stub
-                return normal.previous();
-            }
-
-            public void remove()
-            {
-                throw new UnsupportedOperationException();
-            }
-        };
-    }
-
-    /**
-     * Return true if the input string contains the marker for symbols that must be expanded.
-     */
-    public static boolean containsSymbols(String input)
-    {
-        return input.contains("${");
-    }
-
-    /**
-     * Searches the string for the final period ('.') character and returns everything after that. The input string is
-     * generally a fully qualified class name, though tapestry-core also uses this method for the occasional property
-     * expression (which is also dot separated). Returns the input string unchanged if it does not contain a period
-     * character.
-     */
-    public static String lastTerm(String input)
-    {
-        assert InternalUtils.isNonBlank(input);
-        int dotx = input.lastIndexOf('.');
-
-        if (dotx < 0)
-            return input;
-
-        return input.substring(dotx + 1);
-    }
-
-    /**
-     * Searches a class for the "best" constructor, the public constructor with the most parameters. Returns null if
-     * there are no public constructors. If there is more than one constructor with the maximum number of parameters, it
-     * is not determined which will be returned (don't build a class like that!). In addition, if a constructor is
-     * annotated with {@link org.apache.tapestry5.ioc.annotations.Inject}, it will be used (no check for multiple such
-     * constructors is made, only at most a single constructor should have the annotation).
-     * 
-     * @param clazz
-     *            to search for a constructor for
-     * @return the constructor to be used to instantiate the class, or null if no appropriate constructor was found
-     */
-    public static Constructor findAutobuildConstructor(Class clazz)
-    {
-        Constructor[] constructors = clazz.getConstructors();
-
-        switch (constructors.length)
-        {
-            case 1:
-
-                return constructors[0];
-
-            case 0:
-
-                return null;
-
-            default:
-                break;
-        }
-
-        for (Constructor c : constructors)
-        {
-            if (c.getAnnotation(Inject.class) != null)
-                return c;
-        }
-
-        // Choose a constructor with the most parameters.
-
-        Comparator<Constructor> comparator = new Comparator<Constructor>()
-        {
-            public int compare(Constructor o1, Constructor o2)
-            {
-                return o2.getParameterTypes().length - o1.getParameterTypes().length;
-            }
-        };
-
-        Arrays.sort(constructors, comparator);
-
-        return constructors[0];
-    }
-
-    /**
-     * Adds a value to a specially organized map where the values are lists of objects. This somewhat simulates a map
-     * that allows multiple values for the same key.
-     * 
-     * @param map
-     *            to store value into
-     * @param key
-     *            for which a value is added
-     * @param value
-     *            to add
-     * @param <K>
-     *            the type of key
-     * @param <V>
-     *            the type of the list
-     */
-    public static <K, V> void addToMapList(Map<K, List<V>> map, K key, V value)
-    {
-        List<V> list = map.get(key);
-
-        if (list == null)
-        {
-            list = CollectionFactory.newList();
-            map.put(key, list);
-        }
-
-        list.add(value);
-    }
-
-    /**
-     * Validates that the marker annotation class had a retention policy of runtime.
-     * 
-     * @param markerClass
-     *            the marker annotation class
-     */
-    public static void validateMarkerAnnotation(Class markerClass)
-    {
-        Retention policy = (Retention) markerClass.getAnnotation(Retention.class);
-
-        if (policy != null && policy.value() == RetentionPolicy.RUNTIME)
-            return;
-
-        throw new IllegalArgumentException(UtilMessages.badMarkerAnnotation(markerClass));
-    }
-
-    public static void validateMarkerAnnotations(Class[] markerClasses)
-    {
-        for (Class markerClass : markerClasses)
-            validateMarkerAnnotation(markerClass);
-    }
-
-    public static void close(Closeable stream)
-    {
-        if (stream != null)
-            try
-            {
-                stream.close();
-            }
-            catch (IOException ex)
-            {
-                // Ignore.
-            }
-    }
-
-    /**
-     * Extracts the message from an exception. If the exception's message is null, returns the exceptions class name.
-     * 
-     * @param exception
-     *            to extract message from
-     * @return message or class name
-     */
-    public static String toMessage(Throwable exception)
-    {
-        String message = exception.getMessage();
-
-        if (message != null)
-            return message;
-
-        return exception.getClass().getName();
-    }
-
-    public static void validateConstructorForAutobuild(Constructor constructor)
-    {
-        Class clazz = constructor.getDeclaringClass();
-
-        if (!Modifier.isPublic(clazz.getModifiers()))
-            throw new IllegalArgumentException(String.format(
-                    "Class %s is not a public class and may not be autobuilt.", clazz.getName()));
-
-        if (!Modifier.isPublic(constructor.getModifiers()))
-            throw new IllegalArgumentException(
-                    String.format(
-                            "Constructor %s is not public and may not be used for autobuilding an instance of the class. "
-                                    + "You should make the constructor public, or mark an alternate public constructor with the @Inject annotation.",
-                            constructor));
-    }
-
-    public static InternalServiceDef toInternalServiceDef(final ServiceDef sd)
-    {
-        if (sd instanceof InternalServiceDef)
-            return (InternalServiceDef) sd;
-
-        return new InternalServiceDef()
-        {
-            public boolean isPreventDecoration()
-            {
-                return false;
-            }
-
-            public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
-            {
-                return sd.createServiceCreator(resources);
-            }
-
-            public String getServiceId()
-            {
-                return sd.getServiceId();
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return sd.getMarkers();
-            }
-
-            public Class getServiceInterface()
-            {
-                return sd.getServiceInterface();
-            }
-
-            public String getServiceScope()
-            {
-                return sd.getServiceScope();
-            }
-
-            public boolean isEagerLoad()
-            {
-                return sd.isEagerLoad();
-            }
-
-            public Class getImplementationClass()
-            {
-                return null;
-            }
-        };
-    }
-
-    public static ServiceDef2 toServiceDef2(final ServiceDef sd)
-    {
-        if (sd instanceof ServiceDef2)
-            return (ServiceDef2) sd;
-
-        return new ServiceDef2()
-        {
-            public boolean isPreventDecoration()
-            {
-                return false;
-            }
-
-            public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
-            {
-                return sd.createServiceCreator(resources);
-            }
-
-            public String getServiceId()
-            {
-                return sd.getServiceId();
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return sd.getMarkers();
-            }
-
-            public Class getServiceInterface()
-            {
-                return sd.getServiceInterface();
-            }
-
-            public String getServiceScope()
-            {
-                return sd.getServiceScope();
-            }
-
-            public boolean isEagerLoad()
-            {
-                return sd.isEagerLoad();
-            }
-        };
-    }
-
-    public static ModuleDef2 toModuleDef2(final ModuleDef md)
-    {
-        if (md instanceof ModuleDef2)
-            return (ModuleDef2) md;
-
-        return new ModuleDef2()
-        {
-            public Set<AdvisorDef> getAdvisorDefs()
-            {
-                return Collections.emptySet();
-            }
-
-            public Class getBuilderClass()
-            {
-                return md.getBuilderClass();
-            }
-
-            public Set<ContributionDef> getContributionDefs()
-            {
-                return md.getContributionDefs();
-            }
-
-            public Set<DecoratorDef> getDecoratorDefs()
-            {
-                return md.getDecoratorDefs();
-            }
-
-            public String getLoggerName()
-            {
-                return md.getLoggerName();
-            }
-
-            public ServiceDef getServiceDef(String serviceId)
-            {
-                return md.getServiceDef(serviceId);
-            }
-
-            public Set<String> getServiceIds()
-            {
-                return md.getServiceIds();
-            }
-        };
-    }
-
-    /** @since 5.1.0.2 */
-    public static ServiceLifecycle2 toServiceLifecycle2(final ServiceLifecycle lifecycle)
-    {
-        if (lifecycle instanceof ServiceLifecycle2)
-            return (ServiceLifecycle2) lifecycle;
-
-        return new ServiceLifecycle2()
-        {
-            public boolean requiresProxy()
-            {
-                return true;
-            }
-
-            public Object createService(ServiceResources resources, ObjectCreator creator)
-            {
-                return lifecycle.createService(resources, creator);
-            }
-
-            public boolean isSingleton()
-            {
-                return lifecycle.isSingleton();
-            }
-        };
-    }
-
-    /** @since 5.2.0 */
-    public static <T extends Comparable<T>> List<T> matchAndSort(Collection<? extends T> collection,
-            Predicate<T> predicate)
-    {
-        assert predicate != null;
-
-        List<T> result = CollectionFactory.newList();
-
-        for (T object : collection)
-        {
-            if (predicate.accept(object))
-                result.add(object);
-        }
-
-        Collections.sort(result);
-
-        return result;
-    }
-
-    /**
-     * @since 5.2.0
-     */
-    public static ContributionDef2 toContributionDef2(final ContributionDef contribution)
-    {
-        if (contribution instanceof ContributionDef2)
-            return (ContributionDef2) contribution;
-
-        return new ContributionDef2()
-        {
-
-            public Set<Class> getMarkers()
-            {
-                return Collections.emptySet();
-            }
-
-            public Class getServiceInterface()
-            {
-                return null;
-            }
-
-            public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    Configuration configuration)
-            {
-                contribution.contribute(moduleSource, resources, configuration);
-            }
-
-            public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    OrderedConfiguration configuration)
-            {
-                contribution.contribute(moduleSource, resources, configuration);
-            }
-
-            public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    MappedConfiguration configuration)
-            {
-                contribution.contribute(moduleSource, resources, configuration);
-            }
-
-            public String getServiceId()
-            {
-                return contribution.getServiceId();
-            }
-
-        };
-    }
-   
-    /**
-     * @since 5.2.2
-     */
-    public static AdvisorDef2 toAdvisorDef2(final AdvisorDef advisor)
-    {
-        if (advisor instanceof AdvisorDef2)
-            return (AdvisorDef2) advisor;
-       
-        return new AdvisorDef2()
-        {
-
-            public ServiceAdvisor createAdvisor(ModuleBuilderSource moduleSource, ServiceResources resources)
-            {
-                return advisor.createAdvisor(moduleSource, resources);
-            }
-
-            public String getAdvisorId()
-            {
-                return advisor.getAdvisorId();
-            }
-
-            public String[] getConstraints()
-            {
-                return advisor.getConstraints();
-            }
-
-            public boolean matches(ServiceDef serviceDef)
-            {
-                return advisor.matches(serviceDef);
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return Collections.emptySet();
-            }
-
-            public Class getServiceInterface()
-            {
-                return null;
-            }
-           
-        };
-    }
-   
-    /**
-     * @since 5.2.2
-     */
-    public static DecoratorDef2 toDecoratorDef2(final DecoratorDef decorator)
-    {
-        if (decorator instanceof DecoratorDef2)
-            return (DecoratorDef2) decorator;
-       
-        return new DecoratorDef2()
-        {
-
-            public ServiceDecorator createDecorator(ModuleBuilderSource moduleSource, ServiceResources resources)
-            {
-                return decorator.createDecorator(moduleSource, resources);
-            }
-
-            public String[] getConstraints()
-            {
-                return decorator.getConstraints();
-            }
-
-            public String getDecoratorId()
-            {
-                return decorator.getDecoratorId();
-            }
-
-            public boolean matches(ServiceDef serviceDef)
-            {
-                return decorator.matches(serviceDef);
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return Collections.emptySet();
-            }
-
-            public Class getServiceInterface()
-            {
-                return null;
-            }
-           
-        };
-    }
-
-    /**
-     * Determines if the indicated class is stored as a locally accessible file
-     * (and not, typically, as a file inside a JAR). This is related to automatic
-     * reloading of services.
-     * 
-     * @since 5.2.0
-     */
-    public static boolean isLocalFile(Class clazz)
-    {
-        String path = ClassFabUtils.getPathForClass(clazz);
-
-        ClassLoader loader = clazz.getClassLoader();
-
-        // System classes have no visible class loader, and are not local files.
-
-        if (loader == null)
-            return false;
-
-        URL classFileURL = loader.getResource(path);
-
-        return classFileURL != null && classFileURL.getProtocol().equals("file");
-    }
-
-    /**
-     * Wraps a {@lihk Coercion} as a {@link Mapper}.
-     * 
-     * @since 5.2.0
-     */
-    public static <S, T> Mapper<S, T> toMapper(final Coercion<S, T> coercion)
-    {
-        assert coercion != null;
-
-        return new Mapper<S, T>()
-        {
-
-            public T map(S value)
-            {
-                return coercion.coerce(value);
-            }
-        };
-    }
-
-    private static final AtomicLong uuidGenerator = new AtomicLong(System.nanoTime());
-
-    /**
-     * Generates a unique value for the current execution of the application. This initial UUID value
-     * is not easily predictable; subsequent UUIDs are allocated in ascending series.
-     * 
-     * @since 5.2.0
-     */
-    public static long nextUUID()
-    {
-        return uuidGenerator.incrementAndGet();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/JDKUtils.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/JDKUtils.java
deleted file mode 100644
index c114794..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/JDKUtils.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-/**
- * Internal utilities for identifying the JDK version, used in the rare cases
- * that we are patching around JDK bugs.
- */
-public class JDKUtils
-{
-    /**
-     * Is the running JVM JDK 1.5?
-     */
-    public static final boolean JDK_1_5 = isVersion("1.5");
-
-    private static boolean isVersion(String versionId)
-    {
-        return System.getProperty("java.specification.version").equals(versionId);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/LocalizedNameGenerator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/LocalizedNameGenerator.java
deleted file mode 100644
index 81df3e2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/LocalizedNameGenerator.java
+++ /dev/null
@@ -1,230 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.util.Iterator;
-import java.util.Locale;
-import java.util.NoSuchElementException;
-
-/**
- * Used in a wide variety of resource searches. Generates a series of name variations from a path (which must include a
- * suffix) and locale.
- * <p/>
- * This class is not threadsafe.
- */
-public class LocalizedNameGenerator implements Iterator<String>, Iterable<String>
-{
-    private final int baseNameLength;
-
-    private final String suffix;
-
-    private final StringBuilder builder;
-
-    private final String language;
-
-    private final String country;
-
-    private final String variant;
-
-    private int state;
-
-    private int prevState;
-
-    private static final int INITIAL = 0;
-
-    private static final int LCV = 1;
-
-    private static final int LC = 2;
-
-    private static final int LV = 3;
-
-    private static final int L = 4;
-
-    private static final int BARE = 5;
-
-    private static final int EXHAUSTED = 6;
-
-    public LocalizedNameGenerator(String path, Locale locale)
-    {
-        int dotx = path.lastIndexOf('.');
-
-        // When there is no dot in the name, pretend it exists after the
-        // end of the string. The locale extensions will be tacked on there.
-
-        if (dotx == -1) dotx = path.length();
-
-        // TODO: Case where there is no suffix
-
-        String baseName = path.substring(0, dotx);
-
-        suffix = path.substring(dotx);
-
-        baseNameLength = dotx;
-
-        language = locale.getLanguage();
-        country = locale.getCountry();
-        variant = locale.getVariant();
-
-        state = INITIAL;
-        prevState = INITIAL;
-
-        builder = new StringBuilder(baseName);
-
-        advance();
-    }
-
-    private void advance()
-    {
-        prevState = state;
-
-        while (state != EXHAUSTED)
-        {
-            state++;
-
-            switch (state)
-            {
-                case LCV:
-
-                    if (InternalUtils.isBlank(variant)) continue;
-
-                    return;
-
-                case LC:
-
-                    if (InternalUtils.isBlank(country)) continue;
-
-                    return;
-
-                case LV:
-
-                    // If country is null, then we've already generated this string
-                    // as state LCV and we can continue directly to state L
-
-                    if (InternalUtils.isBlank(variant) || InternalUtils.isBlank(country)) continue;
-
-                    return;
-
-                case L:
-
-                    if (InternalUtils.isBlank(language)) continue;
-
-                    return;
-
-                case BARE:
-                default:
-                    return;
-            }
-        }
-    }
-
-    /**
-     * Returns true if there are more name variants to be returned, false otherwise.
-     */
-
-    public boolean hasNext()
-    {
-        return state != EXHAUSTED;
-    }
-
-    /**
-     * Returns the next localized variant.
-     *
-     * @throws NoSuchElementException if all variants have been returned.
-     */
-
-    public String next()
-    {
-        if (state == EXHAUSTED) throw new NoSuchElementException();
-
-        String result = build();
-
-        advance();
-
-        return result;
-    }
-
-    private String build()
-    {
-        builder.setLength(baseNameLength);
-
-        if (state == LC || state == LCV || state == L)
-        {
-            builder.append('_');
-            builder.append(language);
-        }
-
-        // For LV, we want two underscores between language
-        // and variant.
-
-        if (state == LC || state == LCV || state == LV)
-        {
-            builder.append('_');
-
-            if (state != LV) builder.append(country);
-        }
-
-        if (state == LV || state == LCV)
-        {
-            builder.append('_');
-            builder.append(variant);
-        }
-
-        if (suffix != null) builder.append(suffix);
-
-        return builder.toString();
-    }
-
-    public Locale getCurrentLocale()
-    {
-        switch (prevState)
-        {
-            case LCV:
-
-                return new Locale(language, country, variant);
-
-            case LC:
-
-                return new Locale(language, country, "");
-
-            case LV:
-
-                return new Locale(language, "", variant);
-
-            case L:
-
-                return new Locale(language, "", "");
-
-            default:
-                return null;
-        }
-    }
-
-    /**
-     * @throws UnsupportedOperationException
-     */
-    public void remove()
-    {
-        throw new UnsupportedOperationException();
-    }
-
-    /**
-     * So that LNG may be used with the for loop.
-     */
-    public Iterator<String> iterator()
-    {
-        return this;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/LocationImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/LocationImpl.java
deleted file mode 100644
index 211ca3b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/LocationImpl.java
+++ /dev/null
@@ -1,108 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-
-import java.util.Formatter;
-
-/**
- * Implementation class for {@link org.apache.tapestry5.ioc.Location}.
- */
-public final class LocationImpl implements Location
-{
-    private final Resource resource;
-
-    private final int line;
-
-    private final int column;
-
-    private static final int UNKNOWN = -1;
-
-    public LocationImpl(Resource resource)
-    {
-        this(resource, UNKNOWN);
-    }
-
-    public LocationImpl(Resource resource, int line)
-    {
-        this(resource, line, UNKNOWN);
-    }
-
-    public LocationImpl(Resource resource, int line, int column)
-    {
-        this.resource = resource;
-        this.line = line;
-        this.column = column;
-    }
-
-    public Resource getResource()
-    {
-        return resource;
-    }
-
-    public int getLine()
-    {
-        return line;
-    }
-
-    public int getColumn()
-    {
-        return column;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder buffer = new StringBuilder(resource.toString());
-        Formatter formatter = new Formatter(buffer);
-
-        if (line != UNKNOWN) formatter.format(", line %d", line);
-
-        if (column != UNKNOWN) formatter.format(", column %d", column);
-
-        return buffer.toString();
-    }
-
-    @Override
-    public int hashCode()
-    {
-        final int PRIME = 31;
-        int result = 1;
-        result = PRIME * result + column;
-        result = PRIME * result + line;
-        result = PRIME * result + ((resource == null) ? 0 : resource.hashCode());
-        return result;
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (this == obj) return true;
-        if (obj == null) return false;
-        if (getClass() != obj.getClass()) return false;
-        final LocationImpl other = (LocationImpl) obj;
-        if (column != other.column) return false;
-        if (line != other.line) return false;
-        if (resource == null)
-        {
-            if (other.resource != null) return false;
-        }
-        else if (!resource.equals(other.resource)) return false;
-        return true;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MapInjectionResources.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MapInjectionResources.java
deleted file mode 100644
index 92aeb67..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MapInjectionResources.java
+++ /dev/null
@@ -1,34 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.lang.reflect.Type;
-import java.util.Map;
-
-/**
- * InjectionDefaultProvider that operates using a Map from type to value.
- */
-public class MapInjectionResources implements InjectionResources
-{
-    private final Map<Class, Object> map;
-
-    public MapInjectionResources(Map<Class, Object> map) {this.map = map;}
-
-    @SuppressWarnings({"unchecked"})
-    public <T> T findResource(Class<T> type, Type genericType)
-    {
-        return (T) map.get(type);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImpl.java
deleted file mode 100644
index 5c2da80..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImpl.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-
-import java.util.Locale;
-
-
-public class MessageFormatterImpl implements MessageFormatter
-{
-    private final String format;
-
-    private final Locale locale;
-
-    public MessageFormatterImpl(String format, Locale locale)
-    {
-        this.format = format;
-        this.locale = locale;
-    }
-
-    public String format(Object... args)
-    {
-        for (int i = 0; i < args.length; i++)
-        {
-            Object arg = args[i];
-
-            if (Throwable.class.isInstance(arg))
-            {
-                args[i] = InternalUtils.toMessage((Throwable) arg);
-            }
-        }
-
-        // Might be tempting to create a Formatter object and just keep reusing it ... but
-        // Formatters are not threadsafe.
-
-        return String.format(locale, format, args);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MessagesImpl.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MessagesImpl.java
deleted file mode 100644
index 0c542a8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/MessagesImpl.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.util.AbstractMessages;
-
-import java.util.Enumeration;
-import java.util.Locale;
-import java.util.Map;
-import java.util.ResourceBundle;
-
-/**
- * Implementation of {@link org.apache.tapestry5.ioc.Messages} based around a {@link java.util.ResourceBundle}.
- */
-public class MessagesImpl extends AbstractMessages
-{
-    private final Map<String, String> properties = CollectionFactory.newCaseInsensitiveMap();
-
-    /**
-     * Finds the messages for a given Messages utility class. Strings the trailing "Messages" and replaces it with
-     * "Strings" to form the base path. Loads the bundle using the default locale, and the class' class loader.
-     *
-     * @param forClass
-     * @return Messages for the class
-     */
-    public static Messages forClass(Class forClass)
-    {
-        String className = forClass.getName();
-        String stringsClassName = className.replaceAll("Messages$", "Strings");
-
-        Locale locale = Locale.getDefault();
-
-        ResourceBundle bundle = ResourceBundle.getBundle(stringsClassName, locale, forClass.getClassLoader());
-
-        return new MessagesImpl(locale, bundle);
-    }
-
-    public MessagesImpl(Locale locale, ResourceBundle bundle)
-    {
-        super(locale);
-
-        // Our best (threadsafe) chance to determine all the available keys.
-        Enumeration<String> e = bundle.getKeys();
-        while (e.hasMoreElements())
-        {
-            String key = e.nextElement();
-            String value = bundle.getString(key);
-
-            properties.put(key, value);
-        }
-    }
-
-    @Override
-    protected String valueForKey(String key)
-    {
-        return properties.get(key);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java
deleted file mode 100644
index 059f258..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/OneShotLock.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-/**
- * Logic for handling one shot semantics for classes; classes that include a method (or methods) that "locks down" the
- * instance, to prevent it from being used again in the future.
- */
-public class OneShotLock
-{
-    private boolean lock;
-
-    /**
-     * Checks to see if the lock has been set (via {@link #lock()}).
-     *
-     * @throws IllegalStateException if the lock is set
-     */
-    public synchronized void check()
-    {
-        innerCheck();
-    }
-
-    private void innerCheck()
-    {
-        if (lock)
-        {
-            // The depth to find the caller of the check() or lock() method varies between JDKs.
-
-
-            StackTraceElement[] elements = Thread.currentThread().getStackTrace();
-
-            int i = 0;
-            while (!elements[i].getMethodName().equals("innerCheck"))
-                i++;
-
-            throw new IllegalStateException(UtilMessages.oneShotLock(elements[i + 2]));
-        }
-    }
-
-    /**
-     * Checks the lock, then sets it.
-     */
-    public synchronized void lock()
-    {
-        innerCheck();
-
-        lock = true;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/Orderer.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/Orderer.java
deleted file mode 100644
index 565f6e8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/Orderer.java
+++ /dev/null
@@ -1,267 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.IdMatcher;
-import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.IdMatcherImpl;
-import org.apache.tapestry5.ioc.internal.OrIdMatcher;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.slf4j.Logger;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Used to order objects into an "execution" order. Each object must have a unique id. It may specify a list of
- * constraints which identify the ordering of the objects.
- */
-public class Orderer<T>
-{
-    private final OneShotLock lock = new OneShotLock();
-
-    private final Logger logger;
-
-    private final List<Orderable> orderables = CollectionFactory.newList();
-
-    private final Map<String, Orderable<T>> idToOrderable = CollectionFactory.newCaseInsensitiveMap();
-
-    private final Map<String, DependencyNode<T>> dependencyNodesById = CollectionFactory.newCaseInsensitiveMap();
-
-    // Special node that is always dead last: all other nodes are a dependency
-    // of the trailer.
-
-    private DependencyNode<T> trailer;
-
-    interface DependencyLinker<T>
-    {
-        void link(DependencyNode<T> source, DependencyNode<T> target);
-    }
-
-    // before: source is added as a dependency of target, so source will
-    // appear before target.
-
-    final DependencyLinker<T> _before = new DependencyLinker<T>()
-    {
-        public void link(DependencyNode<T> source, DependencyNode<T> target)
-        {
-            target.addDependency(source);
-        }
-    };
-
-    // after: target is added as a dependency of source, so source will appear
-    // after target.
-
-    final DependencyLinker<T> _after = new DependencyLinker<T>()
-    {
-        public void link(DependencyNode<T> source, DependencyNode<T> target)
-        {
-            source.addDependency(target);
-        }
-    };
-
-    public Orderer(Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    /**
-     * Adds an object to be ordered.
-     *
-     * @param orderable
-     */
-    public void add(Orderable<T> orderable)
-    {
-        lock.check();
-
-        String id = orderable.getId();
-
-        if (idToOrderable.containsKey(id))
-        {
-            logger.warn(UtilMessages.duplicateOrderer(id));
-            return;
-        }
-
-        orderables.add(orderable);
-
-        idToOrderable.put(id, orderable);
-    }
-
-    public void override(Orderable<T> orderable)
-    {
-        lock.check();
-
-        String id = orderable.getId();
-
-        Orderable<T> existing = idToOrderable.get(id);
-
-        if (existing == null)
-            throw new IllegalArgumentException(
-                    String.format("Override for object '%s' is invalid as it does not match an existing object.", id));
-
-        orderables.remove(existing);
-        orderables.add(orderable);
-
-        idToOrderable.put(id, orderable);
-    }
-
-    /**
-     * Adds an object to be ordered.
-     *
-     * @param id          unique, qualified id for the target
-     * @param target      the object to be ordered (or null as a placeholder)
-     * @param constraints optional, variable constraints
-     * @see #add(Orderable)
-     */
-
-    public void add(String id, T target, String... constraints)
-    {
-        lock.check();
-
-        add(new Orderable<T>(id, target, constraints));
-    }
-
-    public void override(String id, T target, String... constraints)
-    {
-        lock.check();
-
-        override(new Orderable<T>(id, target, constraints));
-    }
-
-    public List<T> getOrdered()
-    {
-        lock.lock();
-
-        initializeGraph();
-
-        List<T> result = newList();
-
-        for (Orderable<T> orderable : trailer.getOrdered())
-        {
-            T target = orderable.getTarget();
-
-            // Nulls are placeholders that are skipped.
-
-            if (target != null) result.add(target);
-        }
-
-        return result;
-    }
-
-    private void initializeGraph()
-    {
-        trailer = new DependencyNode<T>(logger, new Orderable<T>("*-trailer-*", null));
-
-        addNodes();
-
-        addDependencies();
-    }
-
-    private void addNodes()
-    {
-        for (Orderable<T> orderable : orderables)
-        {
-            DependencyNode<T> node = new DependencyNode<T>(logger, orderable);
-
-            dependencyNodesById.put(orderable.getId(), node);
-
-            trailer.addDependency(node);
-        }
-    }
-
-    private void addDependencies()
-    {
-        for (Orderable<T> orderable : orderables)
-        {
-            addDependencies(orderable);
-        }
-    }
-
-    private void addDependencies(Orderable<T> orderable)
-    {
-        String sourceId = orderable.getId();
-
-        for (String constraint : orderable.getConstraints())
-        {
-            addDependencies(sourceId, constraint);
-        }
-    }
-
-    private void addDependencies(String sourceId, String constraint)
-    {
-        int colonx = constraint.indexOf(':');
-
-        String type = colonx > 0 ? constraint.substring(0, colonx) : null;
-
-        DependencyLinker<T> linker = null;
-
-        if ("after".equals(type))
-            linker = _after;
-        else if ("before".equals(type)) linker = _before;
-
-        if (linker == null)
-        {
-            logger.warn(UtilMessages.constraintFormat(constraint, sourceId));
-            return;
-        }
-
-        String patternList = constraint.substring(colonx + 1);
-
-        linkNodes(sourceId, patternList, linker);
-    }
-
-    private void linkNodes(String sourceId, String patternList, DependencyLinker<T> linker)
-    {
-        Collection<DependencyNode<T>> nodes = findDependencies(sourceId, patternList);
-
-        DependencyNode<T> source = dependencyNodesById.get(sourceId);
-
-        for (DependencyNode<T> target : nodes)
-        {
-            linker.link(source, target);
-        }
-    }
-
-    private Collection<DependencyNode<T>> findDependencies(String sourceId, String patternList)
-    {
-        IdMatcher matcher = buildMatcherForPattern(patternList);
-
-        Collection<DependencyNode<T>> result = newList();
-
-        for (String id : dependencyNodesById.keySet())
-        {
-            if (sourceId.equals(id)) continue;
-
-            if (matcher.matches(id)) result.add(dependencyNodesById.get(id));
-        }
-
-        return result;
-    }
-
-    private IdMatcher buildMatcherForPattern(String patternList)
-    {
-        List<IdMatcher> matchers = newList();
-
-        for (String pattern : patternList.split(","))
-        {
-            IdMatcher matcher = new IdMatcherImpl(pattern.trim());
-
-            matchers.add(matcher);
-        }
-
-        return matchers.size() == 1 ? matchers.get(0) : new OrIdMatcher(matchers);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/TapestryException.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/TapestryException.java
deleted file mode 100644
index 7332a9d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/TapestryException.java
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-
-/**
- * Exception class used as a replacement for {@link java.lang.RuntimeException} when the exception is related to a
- * particular location.
- */
-public class TapestryException extends RuntimeException implements Locatable
-{
-    private static final long serialVersionUID = 6396903640977182682L;
-
-    private transient final Location location;
-
-    /**
-     * @param message  a message (may be null)
-     * @param location implements {@link Location} or {@link Locatable}
-     * @param cause    if not null, the root cause of the exception
-     */
-    public TapestryException(String message, Object location, Throwable cause)
-    {
-        this(message, InternalUtils.locationOf(location), cause);
-    }
-
-    /**
-     * @param message a message (may be null)
-     * @param cause   if not null, the root cause of the exception, also used to set the location
-     */
-    public TapestryException(String message, Throwable cause)
-    {
-        this(message, cause, cause);
-    }
-
-    /**
-     * @param message  a message (may be null)
-     * @param location location to associated with the exception, or null if not known
-     * @param cause    if not null, the root cause of the exception
-     */
-    public TapestryException(String message, Location location, Throwable cause)
-    {
-        super(message, cause);
-
-        this.location = location;
-    }
-
-    public Location getLocation()
-    {
-        return location;
-    }
-
-    @Override
-    public String toString()
-    {
-        if (location == null) return super.toString();
-
-        return String.format("%s [at %s]", super.toString(), location);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/URLChangeTracker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/URLChangeTracker.java
deleted file mode 100644
index 43ece0f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/URLChangeTracker.java
+++ /dev/null
@@ -1,242 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-
-import java.io.File;
-import java.io.IOException;
-import java.net.URL;
-import java.util.Map;
-
-/**
- * Given a (growing) set of URLs, can periodically check to see if any of the underlying resources has changed. This
- * class is capable of using either millisecond-level granularity or second-level granularity. Millisecond-level
- * granularity is used by default. Second-level granularity is provided for compatibility with browsers vis-a-vis
- * resource caching -- that's how granular they get with their "If-Modified-Since", "Last-Modified" and "Expires"
- * headers.
- */
-public class URLChangeTracker
-{
-    private static final long FILE_DOES_NOT_EXIST_TIMESTAMP = -1L;
-
-    private final Map<File, Long> fileToTimestamp = CollectionFactory.newConcurrentMap();
-
-    private final boolean granularitySeconds;
-
-    private final boolean trackFolderChanges;
-
-    private final ClasspathURLConverter classpathURLConverter;
-
-    public static final ClasspathURLConverter DEFAULT_CONVERTER = new ClasspathURLConverterImpl();
-
-    /**
-     * Creates a tracker using the default (does nothing) URL converter, with default (millisecond)
-     * granularity and folder tracking disabled.
-     * 
-     * @since 5.2.1
-     */
-    public URLChangeTracker()
-    {
-        this(DEFAULT_CONVERTER, false, false);
-    }
-
-    /**
-     * Creates a new URL change tracker with millisecond-level granularity and folder checking enabled.
-     * 
-     * @param classpathURLConverter
-     *            used to convert URLs from one protocol to another
-     */
-    public URLChangeTracker(ClasspathURLConverter classpathURLConverter)
-    {
-        this(classpathURLConverter, false);
-
-    }
-
-    /**
-     * Creates a new URL change tracker, using either millisecond-level granularity or second-level granularity and
-     * folder checking enabled.
-     * 
-     * @param classpathURLConverter
-     *            used to convert URLs from one protocol to another
-     * @param granularitySeconds
-     *            whether or not to use second granularity (as opposed to millisecond granularity)
-     */
-    public URLChangeTracker(ClasspathURLConverter classpathURLConverter, boolean granularitySeconds)
-    {
-        this(classpathURLConverter, granularitySeconds, true);
-    }
-
-    /**
-     * Creates a new URL change tracker, using either millisecond-level granularity or second-level granularity.
-     * 
-     * @param classpathURLConverter
-     *            used to convert URLs from one protocol to another
-     * @param granularitySeconds
-     *            whether or not to use second granularity (as opposed to millisecond granularity)
-     * @param trackFolderChanges
-     *            if true, then adding a file URL will also track the folder containing the file (this
-     *            is useful when concerned about additions to a folder)
-     * @since 5.2.1
-     */
-    public URLChangeTracker(ClasspathURLConverter classpathURLConverter, boolean granularitySeconds,
-            boolean trackFolderChanges)
-    {
-        this.granularitySeconds = granularitySeconds;
-        this.classpathURLConverter = classpathURLConverter;
-        this.trackFolderChanges = trackFolderChanges;
-    }
-
-    /**
-     * Stores a new URL into the tracker, or returns the previous time stamp for a previously added URL. Filters out all
-     * non-file URLs.
-     * 
-     * @param url
-     *            of the resource to add, or null if not known
-     * @return the current timestamp for the URL (possibly rounded off for granularity reasons), or 0 if the URL is
-     *         null
-     */
-    public long add(URL url)
-    {
-        if (url == null)
-            return 0;
-
-        URL converted = classpathURLConverter.convert(url);
-
-        if (!converted.getProtocol().equals("file"))
-            return timestampForNonFileURL(converted);
-
-        File resourceFile = ClassFabUtils.toFileFromFileProtocolURL(converted);
-
-        if (fileToTimestamp.containsKey(resourceFile))
-            return fileToTimestamp.get(resourceFile);
-
-        long timestamp = readTimestamp(resourceFile);
-
-        // A quick and imperfect fix for TAPESTRY-1918. When a file
-        // is added, add the directory containing the file as well.
-
-        fileToTimestamp.put(resourceFile, timestamp);
-
-        if (trackFolderChanges)
-        {
-            File dir = resourceFile.getParentFile();
-
-            if (!fileToTimestamp.containsKey(dir))
-            {
-                long dirTimestamp = readTimestamp(dir);
-                fileToTimestamp.put(dir, dirTimestamp);
-            }
-        }
-
-        return timestamp;
-    }
-
-    private long timestampForNonFileURL(URL url)
-    {
-        long timestamp;
-
-        try
-        {
-            timestamp = url.openConnection().getLastModified();
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        return applyGranularity(timestamp);
-    }
-
-    /**
-     * Clears all URL and timestamp data stored in the tracker.
-     */
-    public void clear()
-    {
-        fileToTimestamp.clear();
-    }
-
-    /**
-     * Re-acquires the last updated timestamp for each URL and returns true if any timestamp has changed.
-     */
-    public boolean containsChanges()
-    {
-        boolean result = false;
-
-        // This code would be highly suspect if this method was expected to be invoked
-        // concurrently, but CheckForUpdatesFilter ensures that it will be invoked
-        // synchronously.
-
-        for (Map.Entry<File, Long> entry : fileToTimestamp.entrySet())
-        {
-            long newTimestamp = readTimestamp(entry.getKey());
-            long current = entry.getValue();
-
-            if (current == newTimestamp)
-                continue;
-
-            result = true;
-            entry.setValue(newTimestamp);
-        }
-
-        return result;
-    }
-
-    /**
-     * Returns the time that the specified file was last modified, possibly rounded down to the nearest second.
-     */
-    private long readTimestamp(File file)
-    {
-        if (!file.exists())
-            return FILE_DOES_NOT_EXIST_TIMESTAMP;
-
-        return applyGranularity(file.lastModified());
-    }
-
-    private long applyGranularity(long timestamp)
-    {
-        // For coarse granularity (accurate only to the last second), remove the milliseconds since
-        // the last full second. This is for compatibility with client HTTP requests, which
-        // are only accurate to one second. The extra level of detail creates false positives
-        // for changes, and undermines HTTP response caching in the client.
-
-        if (granularitySeconds)
-            return timestamp - (timestamp % 1000);
-
-        return timestamp;
-    }
-
-    /**
-     * Needed for testing; changes file timestamps so that a change will be detected by {@link #containsChanges()}.
-     */
-    public void forceChange()
-    {
-        for (Map.Entry<File, Long> e : fileToTimestamp.entrySet())
-        {
-            e.setValue(0l);
-        }
-    }
-
-    /**
-     * Needed for testing.
-     */
-    int trackedFileCount()
-    {
-        return fileToTimestamp.size();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/UtilMessages.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/UtilMessages.java
deleted file mode 100644
index 124e5a8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/UtilMessages.java
+++ /dev/null
@@ -1,57 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-
-class UtilMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(UtilMessages.class);
-
-    private UtilMessages()
-    {
-    }
-
-    static String dependencyCycle(DependencyNode dependency, DependencyNode node)
-    {
-        return MESSAGES.format("dependency-cycle", dependency.getId(), node.getId());
-    }
-
-    static String duplicateOrderer(String id)
-    {
-        return MESSAGES.format("duplicate-orderer", id);
-    }
-
-    static String constraintFormat(String constraint, String id)
-    {
-        return MESSAGES.format("constraint-format", constraint, id);
-    }
-
-    static String oneShotLock(StackTraceElement element)
-    {
-        return MESSAGES.format("one-shot-lock", element);
-    }
-
-    static String badMarkerAnnotation(Class annotationClass)
-    {
-        return MESSAGES.format("bad-marker-annotation", annotationClass.getName());
-    }
-
-    static String injectResourceFailure(String fieldName, Class fieldType)
-    {
-        return MESSAGES.format("inject-resource-failure", fieldName, ClassFabUtils.toJavaClassName(fieldType));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/WrongConfigurationTypeGuard.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/WrongConfigurationTypeGuard.java
deleted file mode 100644
index b18cb0a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/internal/util/WrongConfigurationTypeGuard.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.lang.reflect.Type;
-
-/**
- * Used when invoking a contribute method to guard against a request for the wrong type of configuration interface.
- */
-public class WrongConfigurationTypeGuard implements InjectionResources
-{
-    private final String serviceId;
-
-    private final Class guardType;
-
-    private final Class expectedType;
-
-    public WrongConfigurationTypeGuard(String serviceId, Class guardType, Class expectedType)
-    {
-        this.serviceId = serviceId;
-        this.guardType = guardType;
-        this.expectedType = expectedType;
-    }
-
-    public <T> T findResource(Class<T> type, Type genericType)
-    {
-        if (type == guardType)
-            throw new IllegalArgumentException(String.format("Service '%s' is configured using %s, not %s.",
-                                                             serviceId,
-                                                             expectedType.getName(), guardType.getName()));
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ApplicationDefaults.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ApplicationDefaults.java
deleted file mode 100644
index 2c20119..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ApplicationDefaults.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Used to disambiguate which version of {@link SymbolProvider} is being referenced. Contributions to the
- * ApplicationDefaults symbol source are overridden by JVM System properties.
- * 
- * @see FactoryDefaults
- */
-@Target(
-{ PARAMETER, FIELD, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface ApplicationDefaults
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/AspectDecorator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/AspectDecorator.java
deleted file mode 100644
index 220651a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/AspectDecorator.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.MethodAdvice;
-
-/**
- * A decorator used to create an interceptor that delegates each method's invocation to an {@link
- * org.apache.tapestry5.ioc.MethodAdvice} for advice.  Advice can inspect or change method parameters, inspect or change
- * the method's return value, and inspect and change thrown exceptions (checked and unchecked).
- */
-public interface AspectDecorator
-{
-    /**
-     * Intercepts method invocations on the delegate and passes them through the provided aspect. Note that the advice
-     * <em>must</em> be thread-safe.
-     *
-     * @param serviceInterface defines the interface of the interceptor and delegate
-     * @param delegate         the object on which methods will be invoked
-     * @param advice           intercepts the method invocations on the delegate
-     * @param description      used as the toString() of the returned interceptor, unless toString() is part of the
-     *                         service interface
-     * @return the interceptor, wrapping the delegate with all the advice
-     */
-    <T> T build(Class<T> serviceInterface, T delegate, MethodAdvice advice, String description);
-
-    /**
-     * Creates a builder that can be used to create the interceptor.  This is used when only some of the methods need to
-     * be advised, or when different methods need to recieve different advice, or when multiple advice is to be
-     * applied.
-     *
-     * @param serviceInterface defines the interface of the interceptor and the delegate
-     * @param delegate         the object on which methods will be invokes
-     * @param description      used as the toString() of the interceptor unless toString() is part of the service
-     *                         interface
-     * @return a builder that can be used to generate the final interceptor
-     */
-    <T> AspectInterceptorBuilder<T> createBuilder(Class<T> serviceInterface, T delegate, String description);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/AspectInterceptorBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/AspectInterceptorBuilder.java
deleted file mode 100644
index 918e038..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/AspectInterceptorBuilder.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-
-/**
- * A builder may be obtained from the {@link org.apache.tapestry5.ioc.services.AspectDecorator} and allows more
- * controlled creation of the created interceptor; it allows different methods to be given different advice, and allows
- * methods to be omitted (in which case the method invocation passes through without advice).
- */
-public interface AspectInterceptorBuilder<T> extends MethodAdviceReceiver
-{
-
-    /**
-     * Builds and returns the interceptor.  Any methods that have not been advised will become "pass thrus".
-     */
-    T build();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Builtin.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Builtin.java
deleted file mode 100644
index ce0bac7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Builtin.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-/**
- * Marks services provided by this module that may need to be unambiguously referenced. Injecting with this marker
- * annotation and the correct type ensure that the version defined in this module is used, even if another module
- * provides a service with the same service interface.
- */
-@Target(
-        { PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface Builtin
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ChainBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ChainBuilder.java
deleted file mode 100644
index 4505528..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ChainBuilder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.List;
-
-/**
- * A service which can assemble an implementation based on a command interface, and an ordered list of objects
- * implementing that interface (the "commands"). This is an implementation of the Gang of Four Chain Of Command
- * pattern.
- * <p/>
- * For each method in the interface, the chain implementation will call the corresponding method on each command object
- * in turn (with the order defined by the list). If any of the command objects return true, then the chain of command
- * stops and the initial method invocation returns true. Otherwise, the chain of command continues to the next command
- * (and will return false if none of the commands returns true).
- * <p/>
- * For methods whose return type is not boolean, the chain stops with the first non-null (for object types), or non-zero
- * (for numeric types). The chain returns the value that was returned by the command. If the method return type is void,
- * all commands will be invoked.
- * <p/>
- * Method invocations will also be terminated if an exception is thrown.
- */
-public interface ChainBuilder
-{
-    /**
-     * Creates a chain instance from a command interface and a list of commands (implementing the interface).
-     */
-    <T> T build(Class<T> commandInterface, List<T> commands);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFab.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFab.java
deleted file mode 100644
index 1999e60..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFab.java
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Used when fabricating a new class. Represents a wrapper around the Javassist library.
- * <p/>
- * The core concept of Javassist is how method bodies (as well as constructor bodies, etc.) are specified ... as a very
- * Java-like scripting language. Details are available at the <a href="http://jboss.org/products/javassist">Javassist
- * home page</a>.
- * <p/>
- * Method bodies look largely like Java. References to java classes must be fully qualified. Several special variables
- * are used: <ul> <li><code>$0</code> first parameter, equivalent to <code>this</code> in Java code (and can't be used
- * when creating a static method) <li><code>$1, $2, ...</code> actual parameters to the method <li><code>$args</code>
- * all the parameters as an <code>Object[]</code> <li><code>$r</code> the return type of the method, typically used as
- * <code>return ($r) ...</code>. <code>$r</code> is valid with method that return <code>void</code>. This also handles
- * conversions between wrapper types and primitive types. <li><code>$w</code> conversion from primitive type to wrapper
- * type, used as <code>($w) foo()</code> where <code>foo()</code> returns a primitive type and a wrapper type is needed
- * <li> </ul>
- * <p/>
- * ClassFab instances are not thread safe.
- * <p/>
- * ClassFab instances are created by a {@link org.apache.tapestry5.ioc.services.ClassFactory}.
- */
-public interface ClassFab
-{
-    /**
-     * Adds the specified interface as an interface implemented by this class. It is not an error to invoke this method
-     * multiple times with the same interface class (and the interface is only added once).
-     */
-    void addInterface(Class interfaceClass);
-
-    /**
-     * Adds a new field with the given name and type. The field is added as a private field.
-     */
-    void addField(String name, Class type);
-
-    /**
-     * Adds a new field with the provided modifiers.
-     */
-    void addField(String name, int modifiers, Class Type);
-
-    /**
-     * Adds a method. The method is a public instance method.
-     *
-     * @param modifiers Modifiers for the method (see {@link java.lang.reflect.Modifier}).
-     * @param signature defines the name, return type, parameters and exceptions thrown
-     * @param body      The body of the method.
-     * @return a method fabricator, used to add catch handlers.
-     * @throws RuntimeException if a method with that signature has already been added, or if there is a Javassist
-     *                          compilation error
-     */
-    void addMethod(int modifiers, MethodSignature signature, String body);
-
-    /**
-     * Adds a constructor to the class. The constructor will be public.
-     *
-     * @param parameterTypes the type of each parameter, or null if the constructor takes no parameters.
-     * @param exceptions     the type of each exception, or null if the constructor throws no exceptions.
-     * @param body           The body of the constructor.
-     */
-    void addConstructor(Class[] parameterTypes, Class[] exceptions, String body);
-
-    /**
-     * Adds an implementation of toString, as a method that returns a fixed string.
-     */
-    void addToString(String toString);
-
-    /**
-     * Makes the fabricated class implement the provided service interface. The interface will be added, and all methods
-     * in the interface will be delegate wrappers. If toString() is not part of the delegate interface, then an
-     * implementation will be supplied that returns the provided string. This method is used when creating objects that
-     * proxy their behavior to some other object.
-     *
-     * @param serviceInterface   the interface to implement
-     * @param delegateExpression the expression used to find the delegate on which methods should be invoked. Typically
-     *                           a field name, such as "_delegate", or a method to invoke, such as "_service()".
-     * @param toString           fixed value to be returned as the description of the resultant object
-     */
-    void proxyMethodsToDelegate(Class serviceInterface, String delegateExpression, String toString);
-    
-    /**
-     * Copies annotations from delegate class to the fabricated class. 
-     * 
-     * @param delegateClass class of the delegate
-     * 
-     * @since 5.2.0
-     */
-    void copyClassAnnotationsFromDelegate(Class delegateClass);
-    
-    /**
-     * Copies method annotations from delegate class to the methods of the fabricated class. 
-     * 
-     * @param serviceInterface service interface
-     * @param delegateClass class of the delegate
-     * 
-     * @since 5.2.0
-     */
-    void copyMethodAnnotationsFromDelegate(Class serviceInterface, Class delegateClass);
-
-    /**
-     * Invoked last to create the class. This will enforce that all abstract methods have been implemented in the
-     * (concrete) class.
-     */
-    Class createClass();
-
-    /**
-     * Adds a public no-op method. The method will return null, false, or zero as per the return type (if not void).
-     */
-
-    void addNoOpMethod(MethodSignature signature);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java
deleted file mode 100644
index 4bcddfe..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFabUtils.java
+++ /dev/null
@@ -1,347 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import static java.lang.String.format;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Map;
-import java.util.concurrent.atomic.AtomicLong;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-
-/**
- * Handy method useful when creating new classes using {@link org.apache.tapestry5.ioc.services.ClassFab}.
- */
-@SuppressWarnings("all")
-public final class ClassFabUtils
-{
-    private static final AtomicLong UID_GENERATOR = new AtomicLong(System.currentTimeMillis());
-
-    public static String nextUID()
-    {
-        return Long.toHexString(UID_GENERATOR.getAndIncrement());
-    }
-
-    /**
-     * Generates a unique class name, which will be in the default package.
-     */
-    public static synchronized String generateClassName(String baseName)
-    {
-        return "$" + baseName + "_" + nextUID();
-    }
-
-    /**
-     * Returns a class name derived from the provided interfaceClass. The package part of the interface name is stripped
-     * out, and the result passed to {@link #generateClassName(String)}.
-     */
-    public static String generateClassName(Class interfaceClass)
-    {
-        return generateClassName(interfaceClass.getSimpleName());
-    }
-
-    /**
-     * Javassist needs the class name to be as it appears in source code, even for arrays. Invoking getName() on a Class
-     * instance representing an array returns the internal format (i.e, "[...;" or something). This returns it as it
-     * would appear in Java code.
-     */
-    public static String toJavaClassName(Class inputClass)
-    {
-        if (inputClass.isArray())
-            return toJavaClassName(inputClass.getComponentType()) + "[]";
-
-        return inputClass.getName();
-    }
-
-    /**
-     * Returns true if the method is the standard toString() method. Very few interfaces will ever include this method
-     * as part of the interface, but we have to be sure.
-     */
-    public static boolean isToString(Method method)
-    {
-        if (!method.getName().equals("toString"))
-            return false;
-
-        if (method.getParameterTypes().length > 0)
-            return false;
-
-        return method.getReturnType().equals(String.class);
-    }
-
-    public static Class getPrimitiveType(String primitiveTypeName)
-    {
-        return PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.get(primitiveTypeName).primitiveType;
-    }
-
-    private static class PrimitiveInfo
-    {
-        private final Class primitiveType;
-
-        private final String typeCode;
-
-        private final Class wrapperType;
-
-        private final String unwrapMethod;
-
-        public PrimitiveInfo(Class primitiveType, String typeCode, Class wrapperType, String unwrapMethod)
-        {
-            this.primitiveType = primitiveType;
-            this.typeCode = typeCode;
-            this.wrapperType = wrapperType;
-            this.unwrapMethod = unwrapMethod;
-        }
-    }
-
-    private static final Map<String, PrimitiveInfo> PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO = newMap();
-    private static final Map<Class, PrimitiveInfo> WRAPPER_TYPE_TO_PRIMITIVE_INFO = newMap();
-
-    static
-    {
-        add(boolean.class, "Z", Boolean.class, "booleanValue");
-        add(short.class, "S", Short.class, "shortValue");
-        add(int.class, "I", Integer.class, "intValue");
-        add(long.class, "J", Long.class, "longValue");
-        add(float.class, "F", Float.class, "floatValue");
-        add(double.class, "D", Double.class, "doubleValue");
-        add(char.class, "C", Character.class, "charValue");
-        add(byte.class, "B", Byte.class, "byteValue");
-    }
-
-    private static void add(Class primitiveType, String typeCode, Class wrapperType, String unwrapMethod)
-    {
-        PrimitiveInfo info = new PrimitiveInfo(primitiveType, typeCode, wrapperType, unwrapMethod);
-
-        PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.put(primitiveType.getName(), info);
-
-        WRAPPER_TYPE_TO_PRIMITIVE_INFO.put(wrapperType, info);
-    }
-
-    /**
-     * Translates types from standard Java format to Java VM format. For example, java.util.Locale remains
-     * java.util.Locale, but int[][] is translated to [[I and java.lang.Object[] to [Ljava.lang.Object;
-     */
-    public static String toJVMBinaryName(String type)
-    {
-        // if it is not an array, just return the type itself
-        if (!type.endsWith("[]"))
-            return type;
-
-        // if it is an array, convert it to JavaVM-style format
-        StringBuilder buffer = new StringBuilder();
-
-        while (type.endsWith("[]"))
-        {
-            buffer.append("[");
-            type = type.substring(0, type.length() - 2);
-        }
-
-        PrimitiveInfo pi = PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.get(type);
-
-        if (pi != null)
-        {
-            buffer.append(pi.typeCode);
-        }
-        else
-        {
-            buffer.append("L");
-            buffer.append(type);
-            buffer.append(";");
-        }
-
-        return buffer.toString();
-    }
-
-    /**
-     * Given a wrapper type, determines the corresponding primitive type.
-     */
-    public static Class getPrimitiveType(Class wrapperType)
-    {
-        return WRAPPER_TYPE_TO_PRIMITIVE_INFO.get(wrapperType).primitiveType;
-    }
-
-    /**
-     * Returns the wrapper type for an input type; for most types, this is the type. For primitive types, it is the
-     * corresponding wrapper type.
-     * 
-     * @param type
-     *            type to check
-     * @return type or corresponding wrapper type
-     */
-    public static Class getWrapperType(Class type)
-    {
-        PrimitiveInfo info = PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.get(type.getName());
-
-        return info == null ? type : info.wrapperType;
-    }
-
-    /**
-     * Takes a reference and casts it to the desired type. If the desired type is a primitive type, then the reference
-     * is cast to the correct wrapper type and a call to the correct unwrapper method is added. The end result is code
-     * that can be assigned to a field or parameter of the desired type (even if desired type is a primitive).
-     * 
-     * @param reference
-     *            to be cast
-     * @param desiredType
-     *            desired object or primitive type
-     * @return Javassist code to peform the cast
-     */
-    public static String castReference(String reference, String desiredType)
-    {
-        if (isPrimitiveType(desiredType))
-        {
-            PrimitiveInfo info = PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.get(desiredType);
-
-            return String.format("((%s)%s).%s()", info.wrapperType.getName(), reference, info.unwrapMethod);
-        }
-
-        return String.format("(%s)%s", desiredType, reference);
-    }
-
-    /**
-     * Given a primitive type, finds the unwrap method of the corresponding wrapper type.
-     * 
-     * @param primitiveType
-     * @return method name
-     */
-    public static String getUnwrapMethodName(Class primitiveType)
-    {
-        return PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.get(primitiveType.getName()).unwrapMethod;
-    }
-
-    /**
-     * Given a type name, determines if that is the name of a primitive type.
-     */
-    public static boolean isPrimitiveType(String typeName)
-    {
-        return PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.containsKey(typeName);
-    }
-
-    /**
-     * Converts a Class to a JVM type code (the way class information is expressed in a class file).
-     */
-    public static String getTypeCode(Class type)
-    {
-        if (type.equals(void.class))
-            return "V";
-
-        if (type.isPrimitive())
-            return PRIMITIVE_TYPE_NAME_TO_PRIMITIVE_INFO.get(type.getName()).typeCode;
-
-        if (type.isArray())
-            return "[" + getTypeCode(type.getComponentType());
-
-        return "L" + type.getName().replace('.', '/') + ";";
-    }
-
-    /**
-     * Creates a proxy for a given service interface around an {@link org.apache.tapestry5.ioc.ObjectCreator} that can
-     * provide (on demand) an object (implementing the service interface) to delegate to. The ObjectCreator will be
-     * invoked on every method invocation (if it is caching, that should be internal to its implementation).
-     * 
-     * @param <T>
-     * @param classFab
-     *            used to create the new class
-     * @param serviceInterface
-     *            the interface the proxy will implement
-     * @param creator
-     *            the createor which will provide an instance of the interface
-     * @param description
-     *            description to be returned from the proxy's toString() method
-     * @return the instantiated proxy object
-     * @deprecated Use {@link ClassFactory#createProxy(Class, ObjectCreator, String)} instead
-     */
-    public static <T> T createObjectCreatorProxy(ClassFab classFab, Class<T> serviceInterface, ObjectCreator creator,
-            String description)
-    {
-        classFab.addField("_creator", Modifier.PRIVATE | Modifier.FINAL, ObjectCreator.class);
-
-        classFab.addConstructor(new Class[]
-        { ObjectCreator.class }, null, "_creator = $1;");
-
-        String body = format("return (%s) _creator.createObject();", serviceInterface.getName());
-
-        MethodSignature sig = new MethodSignature(serviceInterface, "_delegate", null, null);
-
-        classFab.addMethod(Modifier.PRIVATE, sig, body);
-
-        classFab.proxyMethodsToDelegate(serviceInterface, "_delegate()", description);
-        Class proxyClass = classFab.createClass();
-
-        try
-        {
-            Object proxy = proxyClass.getConstructors()[0].newInstance(creator);
-
-            return serviceInterface.cast(proxy);
-        }
-        catch (Exception ex)
-        {
-            // This should never happen, so we won't go to a lot of trouble
-            // reporting it.
-            throw new RuntimeException(ex.getMessage(), ex);
-        }
-    }
-
-    /**
-     * Given a Class instance, convert the name into a path that can be used to locate
-     * the underlying class file on the classpath.
-     * 
-     * @since 5.2.0
-     */
-    public static String getPathForClass(Class clazz)
-    {
-        assert clazz != null;
-
-        return getPathForClassNamed(clazz.getName());
-    }
-
-    /**
-     * Given a fully qualified class name, converts to a path on the classpath.
-     * 
-     * @since 5.2.0
-     */
-    public static String getPathForClassNamed(String className)
-    {
-        return className.replace('.', '/') + ".class";
-    }
-
-    /**
-     * Converts a URL with protocol "file" to a File instance.
-     * 
-     * @since 5.2.0
-     */
-    public static File toFileFromFileProtocolURL(URL url)
-    {
-        assert url != null;
-
-        if (!url.getProtocol().equals("file"))
-            throw new IllegalArgumentException(String.format("URL %s does not use the 'file' protocol.", url));
-
-        // http://weblogs.java.net/blog/kohsuke/archive/2007/04/how_to_convert.html
-
-        try
-        {
-            return new File(url.toURI());
-        }
-        catch (URISyntaxException ex)
-        {
-            return new File(url.getPath());
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFactory.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFactory.java
deleted file mode 100644
index bb21bf7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassFactory.java
+++ /dev/null
@@ -1,125 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.ObjectCreator;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-
-/**
- * Service used when dynamically creating new classes.
- */
-public interface ClassFactory
-{
-    /**
-     * Simplified version of {@link #newClass(String, Class)} that generates a name based on the service interface name,
-     * extends from java.lang.Object, and automatically adds the serviceInterface to the returned ClassFab. This is the
-     * most common use when creating the kinds of proxies used throughout Tapestry IoC.
-     * 
-     * @param serviceInterface
-     */
-    ClassFab newClass(Class serviceInterface);
-
-    /**
-     * Creates a {@link ClassFab} object for the given name; the new class is a subclass of the indicated class. The new
-     * class is always public and concrete.
-     * 
-     * @param name
-     *            the full qualified name of the class to create (note that it is common to place created classes
-     *            in the default package)
-     * @param superClass
-     *            the parent class, which is often java.lang.Object
-     */
-
-    ClassFab newClass(String name, Class superClass);
-
-    /**
-     * Imports the class to make it referenceable within the factory. The class loader for the class is added to the
-     * class path. The class itself is returned, if its bytecode is available. If not, a search up the inhertance occurs
-     * until a proper class (that can be referenced in generated bytecode) is found. This is necessary to handle cases
-     * where a class is generated at runtime, outside of the class factory, and bytecode is not available for it.
-     * 
-     * @param clazz
-     * @return a referenceable super-class
-     */
-    Class importClass(Class clazz);
-
-    /**
-     * Returns the number of classes (and interfaces) actually created.
-     */
-
-    int getCreatedClassCount();
-
-    /**
-     * Returns the class loader used when creating new classes; this is generally the same as the current thread's
-     * context class loader (except perhaps during testing).
-     */
-    ClassLoader getClassLoader();
-
-    /**
-     * Converts a method to a {@link Location}, which includes information about the source file name and line number.
-     * 
-     * @param method
-     *            to look up
-     * @return the location, or null if the necessary information is not available
-     */
-    Location getMethodLocation(Method method);
-
-    /**
-     * Return a string representation for the constructor (including class and parameters) and (if available) file name
-     * and line number.
-     */
-    Location getConstructorLocation(Constructor constructor);
-
-    /**
-     * Creates a proxy for an interface. All methods of the interface are delegated through the
-     * object returned from the {@link ObjectCreator} (which is accessed on each method invocation, so it
-     * is responsible for caching of the true delegate). The description will be used for the toString() method
-     * (unless toString() is part of the proxy interface).
-     * 
-     * @param <T>
-     *            type of proxy
-     * @param proxyInterface
-     *            proxy interface class
-     * @parame delegateCreator
-     *            creates the delegate
-     * @param description
-     *            used for the toString() method
-     * @since 5.2.0
-     */
-    <T> T createProxy(Class<T> proxyInterface, ObjectCreator delegateCreator, String description);
-
-    /**
-     * Creates a proxy for an interface. All methods of the interface are delegated through the
-     * object returned from the {@link ObjectCreator} (which is accessed on each method invocation, so it
-     * is responsible for caching of the true delegate). The description will be used for the toString() method
-     * (unless toString() is part of the proxy interface).
-     * 
-     * @param <T>
-     *            type of proxy
-     * @param proxyInterface
-     *            proxy interface class
-     * @parame delegateClass
-     *            delegate class
-     * @parame delegateCreator
-     *            creates the delegate
-     * @param description
-     *            used for the toString() method
-     * @since 5.2.0
-     */
-    <T> T createProxy(Class<T> proxyInterface, Class<? extends T> delegateClass, ObjectCreator delegateCreator, String description);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassNameLocator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassNameLocator.java
deleted file mode 100644
index 3c9ded8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassNameLocator.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.Collection;
-
-/**
- * Scans the classpath for top-level classes within particular packages.
- *
- * @see org.apache.tapestry5.ioc.services.ClasspathURLConverter
- */
-public interface ClassNameLocator
-{
-    /**
-     * Searches for all classes under the given package name. This consists of all top-level classes in the indicated
-     * package (or any sub-package), but excludes inner classes. No other filtering (beyond inner classes) occurs, so
-     * there's no guarantee that the class names returned are public (for example).
-     *
-     * @param packageName
-     * @return fully qualified class names
-     */
-    Collection<String> locateClassNames(String packageName);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassPropertyAdapter.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassPropertyAdapter.java
deleted file mode 100644
index 02c9f67..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClassPropertyAdapter.java
+++ /dev/null
@@ -1,64 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.List;
-
-/**
- * Organizes all {@link org.apache.tapestry5.ioc.services.PropertyAdapter}s for a particular class.
- * <p/>
- * Only provides access to <em>simple</em> properties. Indexed properties are ignored.
- * <p/>
- * When accessing properties by name, the case of the name is ignored.
- */
-public interface ClassPropertyAdapter
-{
-    /**
-     * Returns the names of all properties, sorted into alphabetic order.
-     */
-    List<String> getPropertyNames();
-
-    /**
-     * Returns the type of bean this adapter provides properties for.
-     */
-    Class getBeanType();
-
-    /**
-     * Returns the property adapter with the given name, or null if no such adapter exists.
-     *
-     * @param name of the property (case is ignored)
-     */
-    PropertyAdapter getPropertyAdapter(String name);
-
-    /**
-     * Reads the value of a property.
-     *
-     * @param instance     the object to read a value from
-     * @param propertyName the name of the property to read (case is ignored)
-     * @throws UnsupportedOperationException if the property is write only
-     * @throws IllegalArgumentException      if property does not exist
-     */
-    Object get(Object instance, String propertyName);
-
-    /**
-     * Updates the value of a property.
-     *
-     * @param instance     the object to update
-     * @param propertyName the name of the property to update (case is ignored)
-     * @throws UnsupportedOperationException if the property is read only
-     * @throws IllegalArgumentException      if property does not exist
-     */
-    void set(Object instance, String propertyName, Object value);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClasspathURLConverter.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClasspathURLConverter.java
deleted file mode 100644
index 8cf436e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ClasspathURLConverter.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.net.URL;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.services.ClassNameLocator} to convert URLs from one protocol to another. This
- * is a hook for supporting OSGi, allowing "bundleresource" and "bundleentry" protocols to be converted to "jar:" or
- * "file:".
- */
-public interface ClasspathURLConverter
-{
-    /**
-     * Passed a URL provided by {@link ClassLoader#getResources(String)} to check to see if can be converted.
-     *
-     * @param url to check
-     * @return the url, or an equivalent url of type jar: or file:
-     */
-    URL convert(URL url);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Coercion.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Coercion.java
deleted file mode 100644
index b7a4cc8..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Coercion.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Responsible for converting from one type to another. This is used primarily around component parameters.
- *
- * @param <S> the source type (input)
- * @param <T> the target type (output)
- */
-public interface Coercion<S, T>
-{
-    /**
-     * Converts an input value.
-     *
-     * @param input the input value
-     */
-    T coerce(S input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java
deleted file mode 100644
index d0bf574..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/CoercionTuple.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-
-/**
- * An immutable object that represents a mapping from one type to another. This is also the contribution type when
- * building the {@link org.apache.tapestry5.ioc.services.TypeCoercer} service. Wraps a
- * {@link org.apache.tapestry5.ioc.services.Coercion} object that performs the work with additional properties that
- * describe
- * the input and output types of the coercion, needed when searching for an appropriate coercion (or sequence of
- * coercions).
- * 
- * @param <S>
- *            source (input) type
- * @param <T>
- *            target (output) type
- */
-public final class CoercionTuple<S, T>
-{
-    private final Class<S> sourceType;
-
-    private final Class<T> targetType;
-
-    private final Coercion<S, T> coercion;
-
-    /**
-     * Wraps an arbitrary coercion with an implementation of toString() that identifies the source and target types.
-     */
-    private class CoercionWrapper<WS, WT> implements Coercion<WS, WT>
-    {
-        private final Coercion<WS, WT> coercion;
-
-        public CoercionWrapper(Coercion<WS, WT> coercion)
-        {
-            this.coercion = coercion;
-        }
-
-        public WT coerce(WS input)
-        {
-            return coercion.coerce(input);
-        }
-
-        @Override
-        public String toString()
-        {
-            return String.format("%s --> %s", convert(sourceType), convert(targetType));
-        }
-    }
-
-    private String convert(Class type)
-    {
-        if (void.class.equals(type))
-            return "null";
-
-        String name = ClassFabUtils.toJavaClassName(type);
-
-        int dotx = name.lastIndexOf('.');
-
-        // Strip off a package name of "java.lang"
-
-        if (dotx > 0 && name.substring(0, dotx).equals("java.lang"))
-            return name.substring(dotx + 1);
-
-        return name;
-    }
-
-    /**
-     * Standard constructor, which defaults wrap to true.
-     */
-    public CoercionTuple(Class<S> sourceType, Class<T> targetType, Coercion<S, T> coercion)
-    {
-        this(sourceType, targetType, coercion, true);
-    }
-
-    /**
-     * Convenience constructor to help with generics.
-     * 
-     * @since 5.2.0
-     */
-    public static <S, T> CoercionTuple<S, T> create(Class<S> sourceType, Class<T> targetType, Coercion<S, T> coercion)
-    {
-        return new CoercionTuple<S, T>(sourceType, targetType, coercion);
-    }
-
-    /**
-     * Internal-use constructor.
-     * 
-     * @param sourceType
-     *            the source (or input) type of the coercion
-     * @param targetType
-     *            the target (or output) type of the coercion
-     * @param coercion
-     *            the object that performs the coercion
-     * @param wrap
-     *            if true, the coercion is wrapped to provide a useful toString()
-     */
-    public CoercionTuple(Class<S> sourceType, Class<T> targetType, Coercion<S, T> coercion, boolean wrap)
-    {
-        assert sourceType != null;
-        assert targetType != null;
-        assert coercion != null;
-        this.sourceType = sourceType;
-        this.targetType = targetType;
-        this.coercion = wrap ? new CoercionWrapper<S, T>(coercion) : coercion;
-    }
-
-    @Override
-    public String toString()
-    {
-        return coercion.toString();
-    }
-
-    public Coercion<S, T> getCoercion()
-    {
-        return coercion;
-    }
-
-    public Class<S> getSourceType()
-    {
-        return sourceType;
-    }
-
-    public Class<T> getTargetType()
-    {
-        return targetType;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/DefaultImplementationBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/DefaultImplementationBuilder.java
deleted file mode 100644
index 0f95965..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/DefaultImplementationBuilder.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Creates default implementatons of a class.
- *
- * @see org.apache.tapestry5.ioc.services.ClassFab#addNoOpMethod(MethodSignature)
- */
-public interface DefaultImplementationBuilder
-{
-    /**
-     * Creates a new implementation of the provided interface. Each method in the interface will be implemented as a
-     * noop method. The method will ignore any parameters and return null, or 0, or false (or return nothing if the
-     * method is void).
-     *
-     * @param <S>
-     * @param serviceInterface
-     * @return
-     */
-    <S> S createDefaultImplementation(Class<S> serviceInterface);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionAnalysis.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionAnalysis.java
deleted file mode 100644
index 142d4d6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionAnalysis.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.List;
-
-/**
- * An analysis of an exception (including nested exceptions).
- * <p/>
- * TODO: Make serializable and/or convert to XML format.
- */
-public interface ExceptionAnalysis
-{
-    /**
-     * Returns the analyzed exception info for each exception. The are ordered outermost exception to innermost.
-     */
-    List<ExceptionInfo> getExceptionInfos();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionAnalyzer.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionAnalyzer.java
deleted file mode 100644
index 6d6e091..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionAnalyzer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Analyzes an exception, providing an analysis. The analysis easily exposes properties of the exception, the stack
- * trace, and nested exceptions.
- */
-public interface ExceptionAnalyzer
-{
-    ExceptionAnalysis analyze(Throwable rootException);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionInfo.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionInfo.java
deleted file mode 100644
index 3d360d2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionInfo.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.List;
-
-/**
- * Contains information about an analyzed exception.
- * 
- * @see {@link org.apache.tapestry5.ioc.services.ExceptionAnalysis}
- */
-public interface ExceptionInfo
-{
-    /**
-     * The exception class name.
-     */
-    String getClassName();
-
-    /**
-     * The message associated with the exception, possibly null.
-     */
-    String getMessage();
-
-    /**
-     * Returns the names of the properties of the exception, sorted alphabetically.
-     */
-    List<String> getPropertyNames();
-
-    /**
-     * Returns a specific property of the exception by name.
-     */
-    Object getProperty(String name);
-
-    /**
-     * Returns the stack trace elements. Generally this is an empty list except for the deepest exception.
-     */
-    List<StackTraceElement> getStackTrace();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionTracker.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionTracker.java
deleted file mode 100644
index ed1445d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ExceptionTracker.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.services.LoggingDecorator} to track which exceptions have been logged during
- * the current request (the ExceptionTracker is perthread). This keeps redundant information from appearing in the
- * console output.
- */
-public interface ExceptionTracker
-{
-    /**
-     * Returns true if the indicated exception has already been logged (it is assumed that the exception will be logged
-     * if this method returns false). The exception is recorded for later checks.
-     *
-     * @param exception to check
-     * @return false if the exception has not been previously checked, true otherwise
-     */
-    boolean exceptionLogged(Throwable exception);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/FactoryDefaults.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/FactoryDefaults.java
deleted file mode 100644
index d7bf13a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/FactoryDefaults.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Used to disambiguate which version of {@link SymbolProvider} is being referenced. Symbols defined by contributing to
- * FactoryDefaults are overridden by contributions to {@link ApplicationDefaults}.
- */
-@Target(
-        { PARAMETER, FIELD, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface FactoryDefaults
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/FieldValueConduit.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/FieldValueConduit.java
deleted file mode 100644
index b8e8609..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/FieldValueConduit.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-
-/**
- * Used as a replacement for a field.
- * 
- * @since 5.2.0
- */
-public interface FieldValueConduit
-{
-
-    /**
-     * Reads the current value of the field.
-     * 
-     * @return current value (possibly null)
-     */
-    Object get();
-
-    /**
-     * Sets the value of the field
-     * 
-     * @param newValue
-     *            to be captured
-     */
-    void set(Object newValue);
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LazyAdvisor.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LazyAdvisor.java
deleted file mode 100644
index 6db5eb4..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LazyAdvisor.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-
-/**
- * An advisor that identifies methods which can be evaluated lazily and advises them. A method can be evaluated lazily
- * if it returns an interface type and if it throws no checked exceptions. Lazy evaluation should be handled carefully,
- * as if any of the parameters to a method are mutable, or the internal state of the invoked service changes, the lazily
- * evaluated results may not match the immediately evaluated result. This effect is greatly exaggerated if the lazy
- * return object is evaluated in a different thread than when it was generated.
- * <p/>
- * Another consideration is that exceptions that would occur immediately in the non-lazy case are also deferred, often
- * losing much context in the process.
- * <p/>
- * Use laziness with great care.
- * <p/>
- * Use the {@link org.apache.tapestry5.ioc.annotations.NotLazy} annotation on methods that should not be advised.
- *
- * @since 5.1.0.0
- */
-public interface LazyAdvisor
-{
-    void addLazyMethodInvocationAdvice(MethodAdviceReceiver methodAdviceReceiver);
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LoggingAdvisor.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LoggingAdvisor.java
deleted file mode 100644
index ce7018b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LoggingAdvisor.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-import org.slf4j.Logger;
-
-/**
- * A service used in conjuction with a service advisor method to add logging advice to a service.
- *
- * @since 5.1.0.0
- */
-public interface LoggingAdvisor
-{
-    /**
-     * Adds logging advice to all methods of the object.
-     *
-     * @param logger               log used for debug level logging messages by the interceptor
-     * @param methodAdviceReceiver
-     * @return a new object implementing the interface that can be used in place of the delegate, providing logging
-     *         behavior around each method call on the service interface
-     */
-    <T> void addLoggingAdvice(Logger logger, MethodAdviceReceiver methodAdviceReceiver);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LoggingDecorator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LoggingDecorator.java
deleted file mode 100644
index be0c43e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/LoggingDecorator.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.slf4j.Logger;
-
-/**
- * Service that can create a logging interceptor that wraps around a service implementation (or interceptor). The
- * interceptor works with the service's log to log, at debug level, method entry (with arguments), method exit (with
- * return value, if any) as well as any thrown exceptions.
- * <p/>
- * This represents the Tapestry 5.0 decorator approach; for Tapestry 5.1 you may want to use the {@link
- * org.apache.tapestry5.ioc.services.LoggingAdvisor} in conjunction with a service advisor method.
- */
-public interface LoggingDecorator
-{
-    /**
-     * Builds a logging interceptor instance.
-     *
-     * @param <T>
-     * @param serviceInterface interface implemented by the delegate
-     * @param delegate         existing object to be wrapped
-     * @param serviceId        id of service
-     * @param logger           log used for debug level logging messages by the interceptor
-     * @return a new object implementing the interface that can be used in place of the delegate, providing logging
-     *         behavior around each method call on the service interface
-     */
-    <T> T build(Class<T> serviceInterface, T delegate, String serviceId, Logger logger);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MasterObjectProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MasterObjectProvider.java
deleted file mode 100644
index 55637df..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MasterObjectProvider.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-
-/**
- * A service that acts as a chain-of-command over a number of {@link org.apache.tapestry5.ioc.ObjectProvider}, but
- * allows for the case where no object may be provided.
- * <p/>
- * This service is itself a key part of Tapestry's general injection mechanism; it is used when instantiating a service
- * implementation instance, invoking module methods (service builder, decorator, or contribution methods), when
- * {@linkplain ObjectLocator#autobuild(Class) autobuilding} objects of any type.
- */
-@UsesOrderedConfiguration(ObjectProvider.class)
-public interface MasterObjectProvider
-{
-    /**
-     * Provides an object based on an expression. The process of providing objects occurs within a particular
-     * <em>context</em>, which will typically be a service builder method, service contributor method, or service
-     * decorator method. The locator parameter provides access to the services visible <em>to that context</em>.
-     * <p/>
-     * When the value is required and no {@link ObjectProvider} provided a non-null value, then {@link
-     * ObjectLocator#getService(Class)} is invoked, to provide a uniquely matching service, or throw a failure exception
-     * if no <em>single</em> service can be found.
-     *
-     * @param objectType         the expected object type
-     * @param annotationProvider provides access to annotations (typically, the field or parameter to which an
-     *                           injection-related annotation is attached); annotations on the field or parameter may
-     *                           also be used when resolving the desired object
-     * @param locator            locator for the <em>context</em> in which the provider is being used
-     * @param required           if true (normal case) a value must be provided; if false then it is allowed for no
-     *                           ObjectProvider to provide a value, and this method may return null to indicate the
-     *                           failure
-     * @param <T>
-     * @return the requested object, or null if this object provider can not supply an object
-     * @throws RuntimeException if the expression can not be evaluated, or the type of object identified is not
-     *                          assignable to the type specified by the objectType parameter
-     */
-    <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator, boolean required);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MethodIterator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MethodIterator.java
deleted file mode 100644
index 2070d1d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MethodIterator.java
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import java.lang.reflect.Method;
-import java.util.*;
-
-/**
- * Utility used to iterate over the publically visible methods of a class or interface. The MethodIterator understands
- * some complications that can occur when a class inherits the same method from multiple interfaces and with slightly
- * different signatures (due to the fact that declared thrown exceptions can vary slightly for the "same" method).
- *
- * @see org.apache.tapestry5.ioc.services.MethodSignature#isOverridingSignatureOf(MethodSignature)
- */
-public class MethodIterator
-{
-    private boolean toString;
-
-    private int index = 0;
-
-    private final int count;
-
-    private final List<MethodSignature> signatures;
-
-    private static final Comparator<MethodSignature> COMPARATOR = new Comparator<MethodSignature>()
-    {
-        public int compare(MethodSignature o1, MethodSignature o2)
-        {
-
-            return o1.getName().compareTo(o2.getName());
-        }
-    };
-
-
-    public MethodIterator(Class subjectClass)
-    {
-        Method[] methods = subjectClass.getMethods();
-
-        Map<String, MethodSignature> map = newMap();
-
-        for (int i = 0; i < methods.length; i++)
-            processMethod(methods[i], map);
-
-        signatures = newList(map.values());
-        count = signatures.size();
-
-
-        Collections.sort(signatures, COMPARATOR);
-    }
-
-    private void processMethod(Method m, Map<String, MethodSignature> map)
-    {
-        toString |= ClassFabUtils.isToString(m);
-
-        MethodSignature sig = new MethodSignature(m);
-        String uid = sig.getUniqueId();
-
-        MethodSignature existing = map.get(uid);
-
-        if (existing == null || sig.isOverridingSignatureOf(existing)) map.put(uid, sig);
-    }
-
-    public boolean hasNext()
-    {
-        return index < count;
-    }
-
-    /**
-     * Returns the next method (as a {@link MethodSignature}, returning null when all are exhausted. Each method
-     * signature is returned exactly once (even if the same method signature is defined in multiple inherited classes or
-     * interfaces). The method signatures returned in ascending order, according to the "natural ordering".
-     *
-     * @throws NoSuchElementException if there are no more signatures
-     */
-    public MethodSignature next()
-    {
-        if (index >= count) throw new NoSuchElementException();
-
-        return signatures.get(index++);
-    }
-
-    /**
-     * Returns true if the method <code>public String toString()</code> is part of the interface. This will be known
-     * immediately after iterator contruction (it is not necessary to iterate the methods first).
-     */
-    public boolean getToString()
-    {
-        return toString;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MethodSignature.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MethodSignature.java
deleted file mode 100644
index 756bff1..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/MethodSignature.java
+++ /dev/null
@@ -1,289 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.lang.reflect.Method;
-import java.util.Arrays;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * A representation of a {@link java.lang.reflect.Method}, identifying the name, return type, parameter types and
- * exception types. Actual Method objects are tied to a particular class, and don't compare well with other otherwise
- * identical Methods from other classes or interface; MethodSignatures are distinct from classes and compare well.
- * <p/>
- * Because the intended purpose is to compare methods from interfaces (which are always public and abstract) we don't
- * bother to actually track the modifiers. In addition, at this time, MethodSignature <em>does not distinguish between
- * instance and static methods</em>.
- * <p/>
- * This version of MethodSignature works with <em>loaded</em> classes, and it usually used in the context of
- * {@link org.apache.tapestry5.ioc.services.ClassFab} to create new classes and subclasses.
- */
-@SuppressWarnings("all")
-public class MethodSignature
-{
-    private int hashCode = -1;
-
-    private final Class returnType;
-
-    private final String name;
-
-    private final Class[] parameterTypes;
-
-    private final Class[] exceptionTypes;
-
-    public MethodSignature(Class returnType, String name, Class[] parameterTypes, Class[] exceptionTypes)
-    {
-        assert returnType != null;
-        this.returnType = returnType;
-        assert InternalUtils.isNonBlank(name);
-        this.name = name;
-
-        // Can be null!
-        this.parameterTypes = parameterTypes;
-        this.exceptionTypes = exceptionTypes;
-    }
-
-    public MethodSignature(Method m)
-    {
-        this(m.getReturnType(), m.getName(), m.getParameterTypes(), m.getExceptionTypes());
-    }
-
-    /**
-     * Returns the exceptions for this method. Caution: do not modify the returned array. May return null.
-     */
-    public Class[] getExceptionTypes()
-    {
-        return exceptionTypes;
-    }
-
-    public String getName()
-    {
-        return name;
-    }
-
-    /**
-     * Returns the parameter types for this method. May return null. Caution: do not modify the returned array.
-     */
-    public Class[] getParameterTypes()
-    {
-        return parameterTypes;
-    }
-
-    public Class getReturnType()
-    {
-        return returnType;
-    }
-
-    @Override
-    public int hashCode()
-    {
-        if (hashCode == -1)
-        {
-
-            hashCode = returnType.hashCode();
-
-            hashCode = 31 * hashCode + name.hashCode();
-
-            int count = InternalUtils.size(parameterTypes);
-
-            for (int i = 0; i < count; i++)
-                hashCode = 31 * hashCode + parameterTypes[i].hashCode();
-
-            count = InternalUtils.size(exceptionTypes);
-
-            for (int i = 0; i < count; i++)
-                hashCode = 31 * hashCode + exceptionTypes[i].hashCode();
-        }
-
-        return hashCode;
-    }
-
-    /**
-     * Returns true if the other object is an instance of MethodSignature with <em>identical</em> values for return
-     * type, name, parameter types and exception types.
-     * 
-     * @see #isOverridingSignatureOf(MethodSignature)
-     */
-    @Override
-    public boolean equals(Object o)
-    {
-        if (o == null || !(o instanceof MethodSignature))
-            return false;
-
-        MethodSignature ms = (MethodSignature) o;
-
-        if (returnType != ms.returnType)
-            return false;
-
-        if (!name.equals(ms.name))
-            return false;
-
-        if (mismatch(parameterTypes, ms.parameterTypes))
-            return false;
-
-        return !mismatch(exceptionTypes, ms.exceptionTypes);
-    }
-
-    private boolean mismatch(Class[] a1, Class[] a2)
-    {
-        int a1Count = InternalUtils.size(a1);
-        int a2Count = InternalUtils.size(a2);
-
-        if (a1Count != a2Count)
-            return true;
-
-        // Hm. What if order is important (for exceptions)? We're really saying here that they
-        // were derived from the name Method.
-
-        for (int i = 0; i < a1Count; i++)
-        {
-            if (a1[i] != a2[i])
-                return true;
-        }
-
-        return false;
-    }
-
-    @Override
-    public String toString()
-    {
-        StringBuilder buffer = new StringBuilder();
-
-        buffer.append(ClassFabUtils.toJavaClassName(returnType));
-        buffer.append(" ");
-        buffer.append(name);
-        buffer.append("(");
-
-        for (int i = 0; i < InternalUtils.size(parameterTypes); i++)
-        {
-            if (i > 0)
-                buffer.append(", ");
-
-            buffer.append(ClassFabUtils.toJavaClassName(parameterTypes[i]));
-        }
-
-        buffer.append(")");
-
-        int _exceptionCount = InternalUtils.size(exceptionTypes);
-        String _exceptionNames[] = new String[_exceptionCount];
-        for (int i = 0; i < _exceptionCount; i++)
-        {
-            _exceptionNames[i] = exceptionTypes[i].getName();
-        }
-
-        Arrays.sort(_exceptionNames);
-
-        for (int i = 0; i < _exceptionCount; i++)
-        {
-            if (i == 0)
-                buffer.append(" throws ");
-            else
-                buffer.append(", ");
-
-            buffer.append(_exceptionNames[i]);
-        }
-
-        return buffer.toString();
-    }
-
-    /**
-     * Returns a string consisting of the name of the method and its parameter types. This is similar to
-     * {@link #toString()}, but omits the return type and information about thrown exceptions. A unique id is used by
-     * {@link MethodIterator} to identify overlapping methods (methods with the same name and parameter types but with
-     * different thrown exceptions).
-     * 
-     * @see #isOverridingSignatureOf(MethodSignature)
-     */
-    public String getUniqueId()
-    {
-        StringBuilder buffer = new StringBuilder(name);
-        buffer.append("(");
-
-        for (int i = 0; i < InternalUtils.size(parameterTypes); i++)
-        {
-            if (i > 0)
-                buffer.append(",");
-
-            buffer.append(ClassFabUtils.toJavaClassName(parameterTypes[i]));
-        }
-
-        buffer.append(")");
-
-        return buffer.toString();
-    }
-
-    /**
-     * Returns true if this signature has the same return type, name and parameters types as the method signature passed
-     * in, and this signature's exceptions "trump" (are the same as, or super-implementations of, all exceptions thrown
-     * by the other method signature).
-     */
-
-    public boolean isOverridingSignatureOf(MethodSignature ms)
-    {
-        if (returnType != ms.returnType)
-            return false;
-
-        if (!name.equals(ms.name))
-            return false;
-
-        if (mismatch(parameterTypes, ms.parameterTypes))
-            return false;
-
-        return exceptionsEncompass(ms.exceptionTypes);
-    }
-
-    /**
-     * The nuts and bolts of checking that another method signature's exceptions are a subset of this signature's.
-     */
-
-    @SuppressWarnings("unchecked")
-    private boolean exceptionsEncompass(Class[] otherExceptions)
-    {
-        int ourCount = InternalUtils.size(exceptionTypes);
-        int otherCount = InternalUtils.size(otherExceptions);
-
-        // If we have no exceptions, then ours encompass theirs only if they
-        // have no exceptions, either.
-
-        if (ourCount == 0)
-            return otherCount == 0;
-
-        boolean[] matched = new boolean[otherCount];
-        int unmatched = otherCount;
-
-        for (int i = 0; i < ourCount && unmatched > 0; i++)
-        {
-            for (int j = 0; j < otherCount; j++)
-            {
-                // Ignore exceptions that have already been matched
-
-                if (matched[j])
-                    continue;
-
-                // When one of our exceptions is a super-class of one of their exceptions,
-                // then their exceptions is matched.
-
-                if (exceptionTypes[i].isAssignableFrom(otherExceptions[j]))
-                {
-                    matched[j] = true;
-                    unmatched--;
-                }
-            }
-        }
-
-        return unmatched == 0;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java
deleted file mode 100644
index 1e9be40..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ParallelExecutor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.Invokable;
-
-import java.util.concurrent.Future;
-
-/**
- * A service that allows work to occur in parallel using a thread pool. The thread pool is started lazily, and is
- * shutdown when the Registry is shutdown.
- *
- * @see org.apache.tapestry5.ioc.IOCSymbols
- * @since 5.1.0.1
- */
-public interface ParallelExecutor
-{
-    /**
-     * Submits the invocable object to be executed in a pooled thread. Returns a Future object representing the eventual
-     * result of the invocable's operation.  The actual operation will be wrapped such that {@link
-     * PerthreadManager#cleanup()} is invoked after the operation completes.
-     *
-     * @param invocable to execute in a thread
-     * @param <T>
-     * @return Future result of that invocation
-     */
-    <T> Future<T> invoke(Invokable<T> invocable);
-
-    /**
-     * As with {@link #invoke(org.apache.tapestry5.ioc.Invokable)}, but the result is wrapped inside a {@linkplain
-     * org.apache.tapestry5.ioc.services.ThunkCreator thunk}. Invoking methods on the thunk will block until the value
-     * is available.
-     *
-     * @param proxyType return type, used to create the thunk
-     * @param invocable object that will eventually execute and return a value
-     * @param <T>
-     * @return the thunk
-     */
-    <T> T invoke(Class<T> proxyType, Invokable<T> invocable);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerThreadValue.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerThreadValue.java
deleted file mode 100644
index a607e8b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerThreadValue.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * A wrapper around {@link PerthreadManager#get(Object)} and {@link PerthreadManager#put(Object, Object)}.
- * 
- * @since 5.2.0
- */
-public interface PerThreadValue<T>
-{
-    /** Is a value stored (even null)? */
-    boolean exists();
-
-    /** Reads the current per-thread value, or returns null if no value has been stored. */
-    T get();
-
-    /**
-     * Gets the current per-thread value if it exists (even if null), or the defaultValue
-     * if no value has been stored.
-     */
-    T get(T defaultValue);
-
-    /** Sets the current per-thread value, then returns that value. */
-    T set(T newValue);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java
deleted file mode 100644
index 051720c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PerthreadManager.java
+++ /dev/null
@@ -1,80 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.Invokable;
-
-/**
- * Manages per-thread data, and provides a way for listeners to know when such data should be cleaned up. Typically,
- * data is cleaned up at the end of the request (in a web application). Tapestry IoC has any number of objects that need
- * to know when this event occurs, so that they can clean up any per-thread/per-request state.
- * <p/>
- * Due to <a href="https://issues.apache.org/jira/browse/TAPESTRY-2141">TAPESTRY-2141<a> (and the underlying JDK 1.5 bug
- * <a href="http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=5025230">5025230</a>), this service has expanded to
- * manage per-thread data (not just end-of-request listeners).
- */
-public interface PerthreadManager
-{
-    /**
-     * Adds a listener to the hub. All listeners are discarded at the {@link #cleanup()}.
-     * 
-     * @param listener
-     *            to add
-     */
-    void addThreadCleanupListener(ThreadCleanupListener listener);
-
-    /**
-     * Immediately performs a cleanup of the thread, notifying all listeners then discarding the thread locale and the
-     * map it stores.
-     */
-    void cleanup();
-
-    /**
-     * Returns an object stored in the per-thread map. When the object is a string, the expected name is <em>service
-     * id</em>.<em>subkey</em>. Unlike most of Tapestry, such keys <em>will</em> be case sensitive.
-     * 
-     * @param key
-     *            key used to retrieve object
-     * @return corresponding per-thread object, or null
-     * @deprecated use {@link PerthreadManager#createValue()} instead
-     */
-    Object get(Object key);
-
-    /**
-     * Stores a value into the per-thread map.
-     * 
-     * @deprecated use {@link PerthreadManager#createValue()} instead
-     */
-    void put(Object key, Object value);
-
-    /**
-     * Creates a value using a unique internal key.
-     * 
-     * @since 5.2.0
-     */
-    <T> PerThreadValue<T> createValue();
-
-    /**
-     * Invokes {@link Runnable#run()}, providing a try...finally to {@linkplain #cleanup() cleanup} after.
-     * 
-     * @since 5.2.0
-     */
-    void run(Runnable runnable);
-
-    /**
-     * Returns the result from the invocation, providing a try...finally to {@linkplain #cleanup() cleanup} after.
-     */
-    <T> T invoke(Invokable<T> invokable);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PipelineBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PipelineBuilder.java
deleted file mode 100644
index 2eca461..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PipelineBuilder.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.slf4j.Logger;
-
-import java.util.List;
-
-/**
- * Creates a pipeline from a service inteface and an ordered list of filters. Each filter is defined in terms of a
- * filter interface: the filter interface is a variant of the service interface, where each method has an additional
- * parameter that is an instance of the service interface. Typically, this service parameter (often named "delegate") is
- * either the first or the last parameter of each method.
- * <p/>
- * The implementation of a filter method is expected to pass all of its parameters to the service instance passed into
- * it.
- * <p/>
- * The interesting thing is that there may be multiple filters in the pipeline. A fabricated "bridge" object (that
- * implements the service interface) is created to let each filter invoke methods on the next filter down the pipeline.
- * This simplifies the model for creating pipelines, as each filter is coded as if it was directly "in front of" the
- * terminator. In fact, it may be indirectly invoking methods on the next filter in the pipeline via a bridge instance.
- * <p/>
- * The builder is fairly smart about matching up service interface methods to filter interface methods, but keeping it
- * simple is also a good idea.
- */
-public interface PipelineBuilder
-{
-    /**
-     * Creates a pipeline from the filters and a terminator.
-     *
-     * @param <S>              service type
-     * @param <F>              filter type
-     * @param logger           logs any warnings generated when constructing the pipeline
-     * @param serviceInterface
-     * @param filterInterface
-     * @param filters          sorted list of filters
-     * @param terminator       end of the pipeline
-     * @return an object that encapsulates the filters and the terminator
-     */
-    <S, F> S build(Logger logger, Class<S> serviceInterface, Class<F> filterInterface, List<F> filters, S terminator);
-
-    /**
-     * Creates a pipeline from just the filters. A {@link DefaultImplementationBuilder default implementation} is
-     * created as the terminator.
-     *
-     * @param <S>
-     * @param <F>
-     * @param logger
-     * @param serviceInterface
-     * @param filterInterface
-     * @param filters
-     * @return
-     */
-    <S, F> S build(Logger logger, Class<S> serviceInterface, Class<F> filterInterface, List<F> filters);
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyAccess.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyAccess.java
deleted file mode 100644
index a7422d0..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyAccess.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2006, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * A wrapper around the JavaBean Introspector that allows more manageable access to JavaBean properties of objects.
- * <p/>
- * Only provides access to <em>simple</em> properties. Indexed properties are ignored.
- * <p>
- * Starting in Tapestry 5.2, public fields can now be accessed as if they were properly JavaBean properties. Where there
- * is a name conflict, the true property will be favored over the field access.
- */
-public interface PropertyAccess
-{
-    /**
-     * Reads the value of a property.
-     * 
-     * @throws UnsupportedOperationException
-     *             if the property is write only
-     * @throws IllegalArgumentException
-     *             if property does not exist
-     */
-    Object get(Object instance, String propertyName);
-
-    /**
-     * Updates the value of a property.
-     * 
-     * @throws UnsupportedOperationException
-     *             if the property is read only
-     * @throws IllegalArgumentException
-     *             if property does not exist
-     */
-    void set(Object instance, String propertyName, Object value);
-
-    /**
-     * Returns the adapter for a particular object instance. A convienience over invoking {@link #getAdapter(Class)}.
-     */
-    ClassPropertyAdapter getAdapter(Object instance);
-
-    /**
-     * Returns the adapter used to access properties within the indicated class.
-     */
-    ClassPropertyAdapter getAdapter(Class forClass);
-
-    /**
-     * Discards all stored property access information, discarding all created class adapters.
-     */
-    void clearCache();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyAdapter.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyAdapter.java
deleted file mode 100644
index 8bd1dc6..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyAdapter.java
+++ /dev/null
@@ -1,126 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Method;
-
-/**
- * Provides access to a single property within a class. Acts as an {@link org.apache.tapestry5.ioc.AnnotationProvider};
- * when searching for annotations, the read method (if present) is checked first, followed by the write method, followed
- * by the underlying field (when the property name matches the field name).
- * <p/>
- * Starting in release 5.2, this property may actually be a public field.
- * 
- * @see org.apache.tapestry5.ioc.services.ClassPropertyAdapter
- */
-@SuppressWarnings("unchecked")
-public interface PropertyAdapter extends AnnotationProvider
-{
-    /**
-     * Returns the name of the property (or public field).
-     */
-    String getName();
-
-    /**
-     * Returns true if the property is readable (i.e., has a getter method or is a public field).
-     */
-    boolean isRead();
-
-    /**
-     * Returns the method used to read the property, or null if the property is not readable (or is a public field).
-     */
-    public Method getReadMethod();
-
-    /**
-     * Returns true if the property is writeable (i.e., has a setter method or is a public field).
-     */
-    boolean isUpdate();
-
-    /**
-     * Returns the method used to update the property, or null if the property is not writeable (or a public field).
-     */
-    public Method getWriteMethod();
-
-    /**
-     * Reads the property value.
-     * 
-     * @param instance
-     *            to read from
-     * @throws UnsupportedOperationException
-     *             if the property is write only
-     */
-    Object get(Object instance);
-
-    /**
-     * Updates the property value. The provided value must not be null if the property type is primitive, and must
-     * otherwise be of the proper type.
-     * 
-     * @param instance
-     *            to update
-     * @param value
-     *            new value for the property
-     * @throws UnsupportedOperationException
-     *             if the property is read only
-     */
-    void set(Object instance, Object value);
-
-    /**
-     * Returns the type of the property.
-     */
-    Class getType();
-
-    /**
-     * Returns true if the return type of the read method is not the same as the property type. This can occur when the
-     * property has been defined using generics, in which case, the method's type may be Object when the property type
-     * is something more specific. This method is primarily used when generating runtime code related to the property.
-     */
-    boolean isCastRequired();
-
-    /**
-     * Returns the {@link org.apache.tapestry5.ioc.services.ClassPropertyAdapter} that provides access to other
-     * properties defined by the same class.
-     */
-    ClassPropertyAdapter getClassAdapter();
-
-    /**
-     * Returns the type of bean to which this property belongs. This is the same as
-     * {@link org.apache.tapestry5.ioc.services.ClassPropertyAdapter#getBeanType()}.
-     */
-    Class getBeanType();
-
-    /**
-     * Returns true if the property is actually a public field.
-     * 
-     * @since 5.2
-     */
-    boolean isField();
-
-    /**
-     * Returns the field if the property is a public field or null if the property is accessed via the read method.
-     * 
-     * @since 5.2
-     */
-    Field getField();
-
-    /**
-     * The class in which the property (or public field) is defined.
-     * 
-     * @since 5.2
-     */
-    Class getDeclaringClass();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.java
deleted file mode 100644
index 95ecc33..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Creates a "shadow" of a property of an object. The shadow has the same type as the property, and delegates all method
- * invocations to the property. Each method invocation on the shadow re-acquires the value of the property from the
- * underlying object and delegates to the current value of the property.
- * <p/>
- * Typically, the object in question is another service, one with the "perthread" service lifecycle. This allows a
- * global singleton to shadow a value that is specific to the current thread (and therefore, the current request).
- */
-public interface PropertyShadowBuilder
-{
-    /**
-     * @param <T>
-     * @param source       the object from which a property will be extracted
-     * @param propertyName the name of a property of the object, which must be readable
-     * @param propertyType the expected type of the property, the actual property type must be assignable to this type
-     * @return the shadow
-     */
-    <T> T build(Object source, String propertyName, Class<T> propertyType);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/RegistryShutdownHub.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/RegistryShutdownHub.java
deleted file mode 100644
index 24a473f..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/RegistryShutdownHub.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-/**
- * Event hub for notifications when the IOC {@link org.apache.tapestry5.ioc.Registry} shuts down.
- */
-public interface RegistryShutdownHub
-{
-    /**
-     * Adds a listener for eventual notification.
-     */
-    void addRegistryShutdownListener(RegistryShutdownListener listener);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/RegistryShutdownListener.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/RegistryShutdownListener.java
deleted file mode 100644
index bf195b1..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/RegistryShutdownListener.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.EventListener;
-
-/**
- * Event listener interfaces for objects that need to know when the Registry shutsdown.
- */
-public interface RegistryShutdownListener extends EventListener
-{
-    /**
-     * Invoked when the registry shuts down, giving services a chance to perform any final operations. Service
-     * implementations should not attempt to invoke methods on other services (via proxies) as the service proxies may
-     * themselves be shutdown.
-     */
-    void registryDidShutdown();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceActivity.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceActivity.java
deleted file mode 100644
index 93e49c2..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceActivity.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.def.ServiceDef;
-
-/**
- * Provided by the {@link ServiceActivityScoreboard} to track a single service's state and activity.
- *
- * @see ServiceDef
- */
-public interface ServiceActivity
-{
-    /**
-     * The unique id for the service.
-     */
-    String getServiceId();
-
-    /**
-     * The interface implemented by the service (this may occasionally be a class, for non-proxied services).
-     */
-    Class getServiceInterface();
-
-    /**
-     * The scope of the service (typically "singleton" or "perthread").
-     */
-    String getScope();
-
-    /**
-     * Indicates the lifecycle status of the service.
-     */
-    Status getStatus();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceActivityScoreboard.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceActivityScoreboard.java
deleted file mode 100644
index ebfa99e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceActivityScoreboard.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.List;
-
-/**
- * Provides access to the runtime details about services in the {@link org.apache.tapestry5.ioc.Registry}.
- */
-public interface ServiceActivityScoreboard
-{
-    /**
-     * Returns the status of all services, sorted alphabetically by service id.
-     */
-    List<ServiceActivity> getServiceActivity();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceLifecycleSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceLifecycleSource.java
deleted file mode 100644
index 13a1523..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceLifecycleSource.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Provides access to user defined lifecycles (beyond the two built-in lifecycles: "singleton" and "primitive"). The
- * user defined lifecycles are contributed into the service's configuration.
- * <p/>
- * Note that the default scope {@linkplain org.apache.tapestry5.ioc.ScopeConstants#DEFAULT "singleton"} is special and
- * not a contribution.
- */
-@UsesMappedConfiguration(ServiceLifecycle.class)
-public interface ServiceLifecycleSource
-{
-    /**
-     * Used to locate a configuration lifecycle, by name.
-     * 
-     * @param scope
-     * @return the named lifecycle, or null if the name is not found
-     */
-    ServiceLifecycle get(String scope);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceOverride.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceOverride.java
deleted file mode 100644
index 383c8cc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ServiceOverride.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * Used to override built in services. Simply contribute a mapping from a type to an instance of that type. Anywhere
- * that exact type is injected, without specifying markers or other annotations, the contributed instance will be
- * injected, even if there is already a service that implements the interface.
- * <p>
- * In fact, this is <em>not</em> limited to overriding services; any object that can be injected based solely on type
- * can be contributed.
- * 
- * @since 5.1.0.0
- */
-@UsesMappedConfiguration(key = Class.class, value = Object.class)
-public interface ServiceOverride
-{
-    /**
-     * Returns a provider based on the configuration; this is wired into the
-     * {@link org.apache.tapestry5.ioc.services.MasterObjectProvider}'s configuration.
-     */
-    ObjectProvider getServiceOverrideProvider();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Status.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Status.java
deleted file mode 100644
index b62b112..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/Status.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.Registry;
-
-/**
- * Used in {@link ServiceActivity} to identify the state of the service in terms of its overall lifecycle.
- */
-public enum Status
-{
-    /**
-     * A builtin service that exists before the {@link Registry} is constructed.
-     */
-    BUILTIN,
-
-    /**
-     * The service is defined in a module, but has not yet been referenced.
-     */
-    DEFINED,
-
-    /**
-     * A proxy has been created for the service, but no methods of the proxy have been invoked.
-     */
-    VIRTUAL,
-
-    /**
-     * A service implementation for the service has been created.
-     */
-    REAL
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/StrategyBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/StrategyBuilder.java
deleted file mode 100644
index 6ddac07..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/StrategyBuilder.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-
-import java.util.Map;
-
-/**
- * A service implementation builder that operates around a {@link StrategyRegistry}, implementing a version of the Gang
- * of Four Strategy pattern.
- * <p/>
- * The constructed service is configured with a number of adapters (that implement the same service interface). Method
- * invocations on the service are routed to one of the adapters.
- * <p/>
- * The first parameter of each method is used to select the appropriate adapter.
- * <p/>
- * The ideal interface for use with this builder has only one method.
- */
-public interface StrategyBuilder
-{
-    /**
-     * Given a number of adapters implementing the service interface, builds a "dispatcher" implementations that
-     * delegates to the one of the adapters. It is an error if any of the methods takes no parameters.
-     *
-     * @param <S>      the service interface type
-     * @param registry defines the adapters based on parameter type (of the first parameter)
-     * @return a service implementation
-     */
-    <S> S build(StrategyRegistry<S> registry);
-
-    /**
-     * @param registrations map frm class to the adapter type
-     * @param <S>
-     * @return the dispatcher
-     * @since 5.1.0.0
-     */
-    <S> S build(Class<S> adapterType, Map<Class, S> registrations);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/SymbolProvider.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/SymbolProvider.java
deleted file mode 100644
index 7d39037..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/SymbolProvider.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesMappedConfiguration;
-
-/**
- * A provider of values for symbols, used by the {@link org.apache.tapestry5.ioc.services.SymbolSource} service.
- * <p/>
- * This is the service interface for the FactoryDefaults and ApplicationDefaults services; each of these takes a
- * configuration mapping symbols to their values.
- */
-@UsesMappedConfiguration(String.class)
-public interface SymbolProvider
-{
-    /**
-     * Returns the value for the symbol, or null if this provider can not provide a value. The value itself may contain
-     * symbols that will be recursively expanded.
-     *
-     * @param symbolName
-     * @return the value or null
-     */
-    String valueForSymbol(String symbolName);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/SymbolSource.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/SymbolSource.java
deleted file mode 100644
index 52c1c41..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/SymbolSource.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.apache.tapestry5.ioc.annotations.Value;
-
-/**
- * Used to manage <em>symbols</em>, configuration properties whose value is evaluated at runtime. Symbols use the Ant
- * syntax: <code>${foo.bar.baz}</code> where <code>foo.bar.baz</code> is the name of the symbol. The symbol may appear
- * inside some annotation, such as {@link Value}.
- * <p/>
- * The SymbolSource service configuration is an ordered list of {@link org.apache.tapestry5.ioc.services.SymbolProvider}s.
- * Two key SymbolProvider services are FactoryDefaults and ApplicationDefaults.
- */
-@UsesOrderedConfiguration(SymbolProvider.class)
-public interface SymbolSource
-{
-    /**
-     * Expands the value for a particular symbol. This may involve recursive expansion, if the immediate value for the
-     * symbol itself contains symbols.
-     *
-     * @param symbolName
-     * @return the expanded string
-     * @throws RuntimeException if the symbol name can not be expanded (no {@link SymbolProvider} can provide its
-     *                          value), or if an expansion is directly or indirectly recursive
-     */
-    String valueForSymbol(String symbolName);
-
-    /**
-     * Given an input string that <em>may</em> contain symbols, returns the string with any and all symbols fully
-     * expanded.
-     *
-     * @param input
-     * @return expanded input
-     */
-    String expandSymbols(String input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java
deleted file mode 100644
index 8f786cc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TapestryIOCModule.java
+++ /dev/null
@@ -1,482 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import static org.apache.tapestry5.ioc.OrderConstraintBuilder.after;
-import static org.apache.tapestry5.ioc.OrderConstraintBuilder.before;
-
-import java.io.File;
-import java.lang.reflect.Array;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-import java.util.concurrent.LinkedBlockingQueue;
-import java.util.concurrent.ThreadPoolExecutor;
-import java.util.concurrent.TimeUnit;
-
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.services.*;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.apache.tapestry5.services.UpdateListenerHub;
-
-/**
- * Defines the base set of services for the Tapestry IOC container.
- */
-@SuppressWarnings("all")
-@Marker(Builtin.class)
-public final class TapestryIOCModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(LoggingDecorator.class, LoggingDecoratorImpl.class);
-        binder.bind(ChainBuilder.class, ChainBuilderImpl.class);
-        binder.bind(PropertyAccess.class, PropertyAccessImpl.class);
-        binder.bind(StrategyBuilder.class, StrategyBuilderImpl.class);
-        binder.bind(PropertyShadowBuilder.class, PropertyShadowBuilderImpl.class);
-        binder.bind(PipelineBuilder.class, PipelineBuilderImpl.class).preventReloading();
-        binder.bind(DefaultImplementationBuilder.class, DefaultImplementationBuilderImpl.class);
-        binder.bind(ExceptionTracker.class, ExceptionTrackerImpl.class);
-        binder.bind(ExceptionAnalyzer.class, ExceptionAnalyzerImpl.class);
-        binder.bind(TypeCoercer.class, TypeCoercerImpl.class).preventReloading();
-        binder.bind(ThreadLocale.class, ThreadLocaleImpl.class);
-        binder.bind(SymbolSource.class, SymbolSourceImpl.class);
-        binder.bind(SymbolProvider.class, MapSymbolProvider.class).withId("ApplicationDefaults")
-                .withMarker(ApplicationDefaults.class);
-        binder.bind(SymbolProvider.class, MapSymbolProvider.class).withId("FactoryDefaults")
-                .withMarker(FactoryDefaults.class);
-        binder.bind(Runnable.class, RegistryStartup.class).withId("RegistryStartup");
-        binder.bind(MasterObjectProvider.class, MasterObjectProviderImpl.class).preventReloading();
-        binder.bind(ClassNameLocator.class, ClassNameLocatorImpl.class);
-        binder.bind(AspectDecorator.class, AspectDecoratorImpl.class);
-        binder.bind(ClasspathURLConverter.class, ClasspathURLConverterImpl.class);
-        binder.bind(ServiceOverride.class, ServiceOverrideImpl.class);
-        binder.bind(LoggingAdvisor.class, LoggingAdvisorImpl.class);
-        binder.bind(LazyAdvisor.class, LazyAdvisorImpl.class);
-        binder.bind(ThunkCreator.class, ThunkCreatorImpl.class);
-        binder.bind(UpdateListenerHub.class, UpdateListenerHubImpl.class).preventReloading();
-    }
-
-    /**
-     * Provides access to additional service lifecycles. One lifecycle is built in ("singleton") but additional ones are
-     * accessed via this service (and its mapped configuration). Only proxiable services (those with explicit service
-     * interfaces) can be managed in terms of a lifecycle.
-     */
-    @PreventServiceDecoration
-    public static ServiceLifecycleSource build(Map<String, ServiceLifecycle> configuration)
-    {
-        final Map<String, ServiceLifecycle2> lifecycles = CollectionFactory.newCaseInsensitiveMap();
-
-        for (String name : configuration.keySet())
-        {
-            lifecycles.put(name, InternalUtils.toServiceLifecycle2(configuration.get(name)));
-        }
-
-        return new ServiceLifecycleSource()
-        {
-            public ServiceLifecycle get(String scope)
-            {
-                return lifecycles.get(scope);
-            }
-        };
-    }
-
-    /**
-     * Contributes the "perthread" scope.
-     */
-    @Contribute(ServiceLifecycleSource.class)
-    public static void providePerthreadScope(MappedConfiguration<String, ServiceLifecycle> configuration)
-    {
-        configuration.addInstance(ScopeConstants.PERTHREAD, PerThreadServiceLifecycle.class);
-    }
-
-    /**
-     * <dl>
-     * <dt>AnnotationBasedContributions</dt>
-     * <dd>Empty placeholder used to seperate annotation-based ObjectProvider contributions (which come before) from
-     * non-annotation based (ServiceOverride here, Alias in tapestry-core) which come after.</dd>
-     * <dt>Value</dt>
-     * <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Value} annotation</dd>
-     * <dt>Symbol</dt>
-     * <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Symbol} annotations</dd>
-     * <dt>Autobuild</dt>
-     * <dd>Supports the {@link org.apache.tapestry5.ioc.annotations.Autobuild} annotation</dd>
-     * <dt>ServiceOverride</dt>
-     * <dd>Allows simple service overrides via the {@link org.apache.tapestry5.ioc.services.ServiceOverride} service
-     * (and its configuration)
-     * </dl>
-     */
-    @Contribute(MasterObjectProvider.class)
-    public static void setupObjectProviders(OrderedConfiguration<ObjectProvider> configuration, @Local
-    final ServiceOverride serviceOverride)
-    {
-        configuration.add("AnnotationBasedContributions", null);
-
-        configuration.addInstance("Value", ValueObjectProvider.class, before("AnnotationBasedContributions").build());
-        configuration.addInstance("Symbol", SymbolObjectProvider.class, before("AnnotationBasedContributions").build());
-        configuration.add("Autobuild", new AutobuildObjectProvider(), before("AnnotationBasedContributions").build());
-
-        ObjectProvider wrapper = new ObjectProvider()
-        {
-            public <T> T provide(Class<T> objectType, AnnotationProvider annotationProvider, ObjectLocator locator)
-            {
-                return serviceOverride.getServiceOverrideProvider().provide(objectType, annotationProvider, locator);
-            }
-        };
-
-        configuration.add("ServiceOverride", wrapper, after("AnnotationBasedContributions").build());
-    }
-
-    /**
-     * Contributes a set of standard type coercions to the {@link TypeCoercer} service:
-     * <ul>
-     * <li>Object to String</li>
-     * <li>String to Double</li>
-     * <li>String to BigDecimal</li>
-     * <li>BigDecimal to Double</li>
-     * <li>Double to BigDecimal</li>
-     * <li>String to BigInteger</li>
-     * <li>BigInteger to Long</li>
-     * <li>String to Long</li>
-     * <li>Long to Byte</li>
-     * <li>Long to Short</li>
-     * <li>Long to Integer</li>
-     * <li>Double to Long</li>
-     * <li>Double to Float</li>
-     * <li>Float to Double</li>
-     * <li>Long to Double</li>
-     * <li>String to Boolean ("false" is always false, other non-blank strings are true)</li>
-     * <li>Long to Boolean (true if long value is non zero)</li>
-     * <li>Null to Boolean (always false)</li>
-     * <li>Collection to Boolean (false if empty)</li>
-     * <li>Object[] to List</li>
-     * <li>primitive[] to List</li>
-     * <li>Object to List (by wrapping as a singleton list)</li>
-     * <li>String to File</li>
-     * <li>String to {@link org.apache.tapestry5.ioc.util.TimeInterval}</li>
-     * <li>{@link org.apache.tapestry5.ioc.util.TimeInterval} to Long</li>
-     * <li>Object to Object[] (wrapping the object as an array)</li>
-     * <li>Collection to Object[] (via the toArray() method)
-     * </ul>
-     */
-    @Contribute(TypeCoercer.class)
-    public static void provideBasicTypeCoercions(Configuration<CoercionTuple> configuration)
-    {
-        add(configuration, Object.class, String.class, new Coercion<Object, String>()
-        {
-            public String coerce(Object input)
-            {
-                return input.toString();
-            }
-        });
-
-        add(configuration, String.class, Double.class, new Coercion<String, Double>()
-        {
-            public Double coerce(String input)
-            {
-                return new Double(input);
-            }
-        });
-
-        // String to BigDecimal is important, as String->Double->BigDecimal would lose
-        // precision.
-
-        add(configuration, String.class, BigDecimal.class, new Coercion<String, BigDecimal>()
-        {
-            public BigDecimal coerce(String input)
-            {
-                return new BigDecimal(input);
-            }
-        });
-
-        add(configuration, BigDecimal.class, Double.class, new Coercion<BigDecimal, Double>()
-        {
-            public Double coerce(BigDecimal input)
-            {
-                return input.doubleValue();
-            }
-        });
-
-        add(configuration, String.class, BigInteger.class, new Coercion<String, BigInteger>()
-        {
-            public BigInteger coerce(String input)
-            {
-                return new BigInteger(input);
-            }
-        });
-
-        add(configuration, String.class, Long.class, new Coercion<String, Long>()
-        {
-            public Long coerce(String input)
-            {
-                return new Long(input);
-            }
-        });
-
-        add(configuration, Long.class, Byte.class, new Coercion<Long, Byte>()
-        {
-            public Byte coerce(Long input)
-            {
-                return input.byteValue();
-            }
-        });
-
-        add(configuration, Long.class, Short.class, new Coercion<Long, Short>()
-        {
-            public Short coerce(Long input)
-            {
-                return input.shortValue();
-            }
-        });
-
-        add(configuration, Long.class, Integer.class, new Coercion<Long, Integer>()
-        {
-            public Integer coerce(Long input)
-            {
-                return input.intValue();
-            }
-        });
-
-        add(configuration, Number.class, Long.class, new Coercion<Number, Long>()
-        {
-            public Long coerce(Number input)
-            {
-                return input.longValue();
-            }
-        });
-
-        add(configuration, Double.class, Float.class, new Coercion<Double, Float>()
-        {
-            public Float coerce(Double input)
-            {
-                return input.floatValue();
-            }
-        });
-
-        add(configuration, Long.class, Double.class, new Coercion<Long, Double>()
-        {
-            public Double coerce(Long input)
-            {
-                return input.doubleValue();
-            }
-        });
-
-        add(configuration, String.class, Boolean.class, new Coercion<String, Boolean>()
-        {
-            public Boolean coerce(String input)
-            {
-                String trimmed = input == null ? "" : input.trim();
-
-                if (trimmed.equalsIgnoreCase("false") || trimmed.length() == 0)
-                    return false;
-
-                // Any non-blank string but "false"
-
-                return true;
-            }
-        });
-
-        add(configuration, Long.class, Boolean.class, new Coercion<Long, Boolean>()
-        {
-            public Boolean coerce(Long input)
-            {
-                return input.longValue() != 0;
-            }
-        });
-
-        add(configuration, void.class, Boolean.class, new Coercion<Void, Boolean>()
-        {
-            public Boolean coerce(Void input)
-            {
-                return false;
-            }
-        });
-
-        add(configuration, Collection.class, Boolean.class, new Coercion<Collection, Boolean>()
-        {
-            public Boolean coerce(Collection input)
-            {
-                return !input.isEmpty();
-            }
-        });
-
-        add(configuration, Object.class, List.class, new Coercion<Object, List>()
-        {
-            public List coerce(Object input)
-            {
-                return Collections.singletonList(input);
-            }
-        });
-
-        add(configuration, Object[].class, List.class, new Coercion<Object[], List>()
-        {
-            public List coerce(Object[] input)
-            {
-                return Arrays.asList(input);
-            }
-        });
-
-        add(configuration, Float.class, Double.class, new Coercion<Float, Double>()
-        {
-            public Double coerce(Float input)
-            {
-                return input.doubleValue();
-            }
-        });
-
-        Coercion primitiveArrayCoercion = new Coercion<Object, List>()
-        {
-            public List<Object> coerce(Object input)
-            {
-                int length = Array.getLength(input);
-                Object[] array = new Object[length];
-                for (int i = 0; i < length; i++)
-                {
-                    array[i] = Array.get(input, i);
-                }
-                return Arrays.asList(array);
-            }
-        };
-
-        add(configuration, byte[].class, List.class, primitiveArrayCoercion);
-        add(configuration, short[].class, List.class, primitiveArrayCoercion);
-        add(configuration, int[].class, List.class, primitiveArrayCoercion);
-        add(configuration, long[].class, List.class, primitiveArrayCoercion);
-        add(configuration, float[].class, List.class, primitiveArrayCoercion);
-        add(configuration, double[].class, List.class, primitiveArrayCoercion);
-        add(configuration, char[].class, List.class, primitiveArrayCoercion);
-        add(configuration, boolean[].class, List.class, primitiveArrayCoercion);
-
-        add(configuration, String.class, File.class, new Coercion<String, File>()
-        {
-            public File coerce(String input)
-            {
-                return new File(input);
-            }
-        });
-
-        add(configuration, String.class, TimeInterval.class, new Coercion<String, TimeInterval>()
-        {
-            public TimeInterval coerce(String input)
-            {
-                return new TimeInterval(input);
-            }
-        });
-
-        add(configuration, TimeInterval.class, Long.class, new Coercion<TimeInterval, Long>()
-        {
-            public Long coerce(TimeInterval input)
-            {
-                return input.milliseconds();
-            }
-        });
-
-        add(configuration, Object.class, Object[].class, new Coercion<Object, Object[]>()
-        {
-            public Object[] coerce(Object input)
-            {
-                return new Object[]
-                { input };
-            }
-        });
-
-        add(configuration, Collection.class, Object[].class, new Coercion<Collection, Object[]>()
-        {
-            public Object[] coerce(Collection input)
-            {
-                return input.toArray();
-            }
-        });
-    }
-
-    private static <S, T> void add(Configuration<CoercionTuple> configuration, Class<S> sourceType,
-            Class<T> targetType, Coercion<S, T> coercion)
-    {
-        CoercionTuple<S, T> tuple = new CoercionTuple<S, T>(sourceType, targetType, coercion);
-
-        configuration.add(tuple);
-    }
-
-    @Contribute(SymbolSource.class)
-    public static void setupStandardSymbolProviders(OrderedConfiguration<SymbolProvider> configuration,
-            @ApplicationDefaults
-            SymbolProvider applicationDefaults,
-
-            @FactoryDefaults
-            SymbolProvider factoryDefaults)
-    {
-        configuration.add("SystemProperties", new SystemPropertiesSymbolProvider(), "before:*");
-        configuration.add("ApplicationDefaults", applicationDefaults, "after:SystemProperties");
-        configuration.add("FactoryDefaults", factoryDefaults, "after:ApplicationDefaults");
-    }
-
-    public static ParallelExecutor buildDeferredExecution(@Symbol(IOCSymbols.THREAD_POOL_CORE_SIZE)
-    int coreSize,
-
-    @Symbol(IOCSymbols.THREAD_POOL_MAX_SIZE)
-    int maxSize,
-
-    @Symbol(IOCSymbols.THREAD_POOL_KEEP_ALIVE)
-    @IntermediateType(TimeInterval.class)
-    int keepAliveMillis,
-
-    @Symbol(IOCSymbols.THREAD_POOL_ENABLED)
-    boolean threadPoolEnabled,
-
-    PerthreadManager perthreadManager,
-
-    RegistryShutdownHub shutdownHub,
-
-    ThunkCreator thunkCreator)
-    {
-
-        if (!threadPoolEnabled)
-            return new NonParallelExecutor();
-
-        final ThreadPoolExecutor executorService = new ThreadPoolExecutor(coreSize, maxSize, keepAliveMillis,
-                TimeUnit.MILLISECONDS, new LinkedBlockingQueue());
-
-        shutdownHub.addRegistryShutdownListener(new RegistryShutdownListener()
-        {
-            public void registryDidShutdown()
-            {
-                executorService.shutdown();
-            }
-        });
-
-        return new ParallelExecutorImpl(executorService, thunkCreator, perthreadManager);
-    }
-
-    @Contribute(SymbolProvider.class)
-    @FactoryDefaults
-    public static void setupDefaultSymbols(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(IOCSymbols.THREAD_POOL_CORE_SIZE, "3");
-        configuration.add(IOCSymbols.THREAD_POOL_MAX_SIZE, "20");
-        configuration.add(IOCSymbols.THREAD_POOL_KEEP_ALIVE, "1 m");
-        configuration.add(IOCSymbols.THREAD_POOL_ENABLED, "true");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThreadCleanupListener.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThreadCleanupListener.java
deleted file mode 100644
index 6af799a..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThreadCleanupListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import java.util.EventListener;
-
-/**
- * Listener interface for object that need to know about thread event cleanup.
- * <p/>
- * Note that registration with the {@link org.apache.tapestry5.ioc.services.PerthreadManager} is a one-shot affair; it
- * lasts no longer than the next cleanup.
- */
-public interface ThreadCleanupListener extends EventListener
-{
-    /**
-     * Invoked by {@link org.apache.tapestry5.ioc.services.PerthreadManager} service when a thread performs and
-     * end-of-request cleanup.
-     */
-    void threadDidCleanup();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThreadLocale.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThreadLocale.java
deleted file mode 100644
index 358b8da..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThreadLocale.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.Registry;
-
-import java.util.Locale;
-
-/**
- * Stores the locale <em>for the current thread</em>. This value persists until {@link Registry#cleanupThread()} is
- * invoked.
- */
-public interface ThreadLocale
-{
-    /**
-     * Updates the locale for the current thread.
-     *
-     * @param locale the new locale (may not be null)
-     */
-    void setLocale(Locale locale);
-
-    /**
-     * Returns the thread's locale, which will be the JVM's default locale, until {@link #setLocale(Locale)} is
-     * invoked.
-     *
-     * @return the thread's locale
-     */
-    Locale getLocale();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThunkCreator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThunkCreator.java
deleted file mode 100644
index 643fd13..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/ThunkCreator.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-
-/**
- * A <a href="http://en.wikipedia.org/wiki/Thunk">thunk</a> is a delayed calculation. In Java and Tapestry terms, a
- * Thunk is a proxy object of a particular interface that delegates all methods to an object of the same type obtained
- * from an {@link org.apache.tapestry5.ioc.ObjectProvider}. This is used by {@link
- * org.apache.tapestry5.ioc.services.LazyAdvisor} to build lazy thunk proxies.
- *
- * @since 5.1.0.1
- */
-public interface ThunkCreator
-{
-    /**
-     * Creates a Thunk of the given proxy type.
-     *
-     * @param proxyType     type of object to create (must be an interface)
-     * @param objectCreator provides an instance of the same type on demand (may be invoked multiple times)
-     * @param description   to be returned from the thunk's toString() method
-     * @param <T>           type of thunk
-     * @return thunk of given type
-     */
-    <T> T createThunk(Class<T> proxyType, ObjectCreator objectCreator, String description);
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TypeCoercer.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TypeCoercer.java
deleted file mode 100644
index 6fa18bc..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/services/TypeCoercer.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.annotations.UsesConfiguration;
-
-/**
- * Makes use of {@link org.apache.tapestry5.ioc.services.Coercion}s to convert between an input value (of some specific
- * type) and a desired output type. Smart about coercing, even if it requires multiple coercion steps (i.e., via an
- * intermediate type, such as String).
- */
-@UsesConfiguration(CoercionTuple.class)
-public interface TypeCoercer
-{
-    /**
-     * Performs a coercion from an input type to a desired output type. When the target type is a primitive, the actual
-     * conversion will be to the equivalent wrapper type. In some cases, the TypeCoercer will need to search for an
-     * appropriate coercion, and may even combine existing coercions to form new ones; in those cases, the results of
-     * the search are cached.
-     * <p/>
-     * <p/>
-     * The TypeCoercer also caches the results of a coercion search.
-     * 
-     * @param <S>
-     *            source type (input)
-     * @param <T>
-     *            target type (output)
-     * @param input
-     * @param targetType
-     *            defines the target type
-     * @return the coerced value
-     */
-    <S, T> T coerce(S input, Class<T> targetType);
-
-    /**
-     * Given a source and target type, computes the coercion that will be used.
-     * <p>
-     * Note: holding the returned coercion past the time when {@linkplain #clearCache() the cache is cleared} can cause
-     * a memory leak, especially in the context of live reloading (wherein holding a reference to a single class make
-     * keep an entire ClassLoader from being reclaimed).
-     * 
-     * @since 5.2.0
-     * @param <S>
-     *            source type (input)
-     * @param <T>
-     *            target type (output)
-     * @param sourceType
-     *            type to coerce from
-     * @param targetType
-     *            defines the target type
-     * @return the coercion that will ultimately be used
-     */
-    <S, T> Coercion<S, T> getCoercion(Class<S> sourceType, Class<T> targetType);
-
-    /**
-     * Used primarily inside test suites, this method performs the same steps as {@link #coerce(Object, Class)}, but
-     * returns a string describing the series of coercision, such as "Object --&gt; String --&gt; Long --&gt; Integer".
-     * 
-     * @param <S>
-     *            source type (input)
-     * @param <T>
-     *            target type (output)
-     * @param sourceType
-     *            the source coercion type (use void.class for coercions from null)
-     * @param targetType
-     *            defines the target type
-     * @return a string identifying the series of coercions, or the empty string if no coercion is necessary
-     */
-    <S, T> String explain(Class<S> sourceType, Class<T> targetType);
-
-    /**
-     * Clears cached information stored by the TypeCoercer.
-     */
-    void clearCache();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java
deleted file mode 100644
index cb3b5a9..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/IOCTestCase.java
+++ /dev/null
@@ -1,461 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.services.*;
-
-import static java.lang.Thread.sleep;
-import static org.easymock.EasyMock.isA;
-import org.slf4j.Logger;
-
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.lang.annotation.Annotation;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.Locale;
-
-/**
- * Add factory and trainer methods for the public interfaces of Tapestry IOC.
- */
-public class IOCTestCase extends TestBase
-{
-
-    /**
-     * Builds a Registry for the provided modules; caller should shutdown the Registry when done.
-     */
-    protected final Registry buildRegistry(Class... moduleClasses)
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-
-        builder.add(moduleClasses);
-
-        return builder.build();
-    }
-
-    protected final Method findMethod(Class clazz, String methodName)
-    {
-        for (Method method : clazz.getMethods())
-        {
-            if (method.getName().equals(methodName))
-                return method;
-        }
-
-        throw new IllegalArgumentException(String.format("Class %s does not provide a method named '%s'.",
-                clazz.getName(), methodName));
-    }
-
-    protected final Method findMethod(Object subject, String methodName)
-    {
-        return findMethod(subject.getClass(), methodName);
-    }
-
-    protected final Method findMethod(String methodName)
-    {
-        return findMethod(this, methodName);
-    }
-
-    /**
-     * Combines a series of lines by forming a string with a line separator after each line.
-     */
-    protected final String join(String... lines)
-    {
-        StringBuilder result = new StringBuilder();
-
-        for (String line : lines)
-        {
-            result.append(line);
-            result.append("\n");
-        }
-
-        return result.toString();
-    }
-
-    protected final AnnotationProvider mockAnnotationProvider()
-    {
-        return newMock(AnnotationProvider.class);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected final <T> Configuration<T> mockConfiguration()
-    {
-        return newMock(Configuration.class);
-    }
-
-    protected final ContributionDef mockContributionDef()
-    {
-        return newMock(ContributionDef.class);
-    }
-
-    protected final DecoratorDef mockDecoratorDef()
-    {
-        return newMock(DecoratorDef.class);
-    }
-
-    protected final Location mockLocation()
-    {
-        return newMock(Location.class);
-    }
-
-    protected final Logger mockLogger()
-    {
-        return newMock(Logger.class);
-    }
-
-    protected final void stub_isDebugEnabled(Logger logger, boolean enabled)
-    {
-        expect(logger.isDebugEnabled()).andStubReturn(enabled);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected final <K, V> MappedConfiguration<K, V> mockMappedConfiguration()
-    {
-        return newMock(MappedConfiguration.class);
-    }
-
-    protected final MessageFormatter mockMessageFormatter()
-    {
-        return newMock(MessageFormatter.class);
-    }
-
-    protected final Messages mockMessages()
-    {
-        return newMock(Messages.class);
-    }
-
-    protected final ModuleDef mockModuleDef()
-    {
-        return newMock(ModuleDef.class);
-    }
-
-    protected final ObjectCreator mockObjectCreator()
-    {
-        return newMock(ObjectCreator.class);
-    }
-
-    protected final ObjectProvider mockObjectProvider()
-    {
-        return newMock(ObjectProvider.class);
-    }
-
-    @SuppressWarnings("unchecked")
-    protected final <T> OrderedConfiguration<T> mockOrderedConfiguration()
-    {
-        return newMock(OrderedConfiguration.class);
-    }
-
-    protected final Resource mockResource()
-    {
-        return newMock(Resource.class);
-    }
-
-    /**
-     * Frequently used as a placeholder for an arbitrary service (but its nice and simple).
-     */
-    protected final Runnable mockRunnable()
-    {
-        return newMock(Runnable.class);
-    }
-
-    protected final ServiceBuilderResources mockServiceBuilderResources()
-    {
-        return newMock(ServiceBuilderResources.class);
-    }
-
-    protected final ServiceDecorator mockServiceDecorator()
-    {
-        return newMock(ServiceDecorator.class);
-    }
-
-    protected final ServiceDef mockServiceDef()
-    {
-        return newMock(ServiceDef.class);
-    }
-
-    protected final ObjectLocator mockObjectLocator()
-    {
-        return newMock(ObjectLocator.class);
-    }
-
-    protected final ServiceResources mockServiceResources()
-    {
-        return newMock(ServiceResources.class);
-    }
-
-    protected final SymbolSource mockSymbolSource()
-    {
-        return newMock(SymbolSource.class);
-    }
-
-    protected final ThreadLocale mockThreadLocale()
-    {
-        return newMock(ThreadLocale.class);
-    }
-
-    protected final TypeCoercer mockTypeCoercer()
-    {
-        return newMock(TypeCoercer.class);
-    }
-
-    protected final void stub_contains(Messages messages, boolean contained)
-    {
-        expect(messages.contains(isA(String.class))).andStubReturn(contained);
-    }
-
-    protected <S, T> void train_coerce(TypeCoercer coercer, S input, Class<T> expectedType, T coercedValue)
-    {
-        expect(coercer.coerce(input, expectedType)).andReturn(coercedValue);
-    }
-
-    protected final void train_contains(Messages messages, String key, boolean result)
-    {
-        expect(messages.contains(key)).andReturn(result).atLeastOnce();
-    }
-
-    protected final void train_createInterceptor(ServiceDecorator decorator, Object coreObject, Object interceptor)
-    {
-        expect(decorator.createInterceptor(coreObject)).andReturn(interceptor);
-    }
-
-    protected final void train_createObject(ObjectCreator creator, Object service)
-    {
-        expect(creator.createObject()).andReturn(service);
-    }
-
-    protected final void train_expandSymbols(SymbolSource source, String input)
-    {
-        train_expandSymbols(source, input, input);
-    }
-
-    protected final void train_expandSymbols(SymbolSource source, String input, String expanded)
-    {
-        expect(source.expandSymbols(input)).andReturn(expanded);
-    }
-
-    protected final void train_forFile(Resource resource, String relativePath, Resource file)
-    {
-        expect(resource.forFile(relativePath)).andReturn(file);
-    }
-
-    protected final void train_forLocale(Resource base, Locale locale, Resource resource)
-    {
-        expect(base.forLocale(locale)).andReturn(resource);
-    }
-
-    /**
-     * Have to put the result before the varargs.
-     */
-    protected void train_format(MessageFormatter formatter, String result, Object... arguments)
-    {
-        expect(formatter.format(arguments)).andReturn(result);
-    }
-
-    protected final void train_get(Messages messages, String key, String message)
-    {
-        expect(messages.get(key)).andReturn(message).atLeastOnce();
-    }
-
-    protected final void train_getLocale(ThreadLocale threadLocale, Locale locale)
-    {
-        expect(threadLocale.getLocale()).andReturn(locale);
-    }
-
-    protected final void train_getLogger(LoggerSource source, String serviceId, Logger logger)
-    {
-        expect(source.getLogger(serviceId)).andReturn(logger).atLeastOnce();
-    }
-
-    protected final void train_getMessageFormatter(Messages messages, String key, MessageFormatter formatter)
-    {
-        expect(messages.getFormatter(key)).andReturn(formatter).atLeastOnce();
-    }
-
-    protected final void train_getPath(Resource r, String path)
-    {
-        expect(r.getPath()).andReturn(path).atLeastOnce();
-    }
-
-    protected final <T> void train_getService(ObjectLocator locator, Class<T> serviceInterface, T service)
-    {
-        expect(locator.getService(serviceInterface)).andReturn(service);
-    }
-
-    protected final <T> void train_getService(ObjectLocator locator, String serviceId, Class<T> serviceInterface,
-            T service)
-    {
-        expect(locator.getService(serviceId, serviceInterface)).andReturn(service);
-    }
-
-    protected final void train_getServiceId(ServiceDef def, String serviceId)
-    {
-        expect(def.getServiceId()).andReturn(serviceId).atLeastOnce();
-    }
-
-    protected final void train_getServiceId(ServiceResources resources, String serviceId)
-    {
-        expect(resources.getServiceId()).andReturn(serviceId).atLeastOnce();
-    }
-
-    protected final void train_getServiceInterface(ServiceDef def, Class serviceInterface)
-    {
-        expect(def.getServiceInterface()).andReturn(serviceInterface).atLeastOnce();
-    }
-
-    protected final void train_getServiceInterface(ServiceResources resources, Class serviceInterface)
-    {
-        expect(resources.getServiceInterface()).andReturn(serviceInterface).atLeastOnce();
-    }
-
-    protected final void train_getLogger(ServiceResources resources, Logger log)
-    {
-        expect(resources.getLogger()).andReturn(log).atLeastOnce();
-    }
-
-    protected final void train_isDebugEnabled(Logger log, boolean debugEnabled)
-    {
-        expect(log.isDebugEnabled()).andReturn(debugEnabled);
-    }
-
-    protected final void train_isTraceEnabled(Logger log, boolean traceEnabled)
-    {
-        expect(log.isTraceEnabled()).andReturn(traceEnabled);
-    }
-
-    protected final void train_matches(DecoratorDef decoratorDef, ServiceDef serviceDef, boolean matches)
-    {
-        expect(decoratorDef.matches(serviceDef)).andReturn(matches);
-    }
-
-    protected final <T> void train_provide(ObjectProvider provider, Class<T> objectType,
-            AnnotationProvider annotationProvider, ObjectLocator locator, T object)
-    {
-        expect(provider.provide(objectType, annotationProvider, locator)).andReturn(object);
-    }
-
-    protected final void train_toURL(Resource resource, URL url)
-    {
-        expect(resource.toURL()).andReturn(url).atLeastOnce();
-    }
-
-    protected final <T extends Annotation> void train_getAnnotation(AnnotationProvider annotationProvider,
-            Class<T> annotationClass, T annotation)
-    {
-        expect(annotationProvider.getAnnotation(annotationClass)).andReturn(annotation);
-    }
-
-    protected final MasterObjectProvider mockMasterObjectProvider()
-    {
-        return newMock(MasterObjectProvider.class);
-    }
-
-    protected final void train_value(IntermediateType it, Class value)
-    {
-        expect(it.value()).andReturn(value);
-    }
-
-    protected final IntermediateType newIntermediateType()
-    {
-        return newMock(IntermediateType.class);
-    }
-
-    protected final PropertyAdapter mockPropertyAdapter()
-    {
-        return newMock(PropertyAdapter.class);
-    }
-
-    protected final ClassPropertyAdapter mockClassPropertyAdapter()
-    {
-        return newMock(ClassPropertyAdapter.class);
-    }
-
-    protected final PropertyAccess mockPropertyAccess()
-    {
-        return newMock(PropertyAccess.class);
-    }
-
-    protected final <T> void train_autobuild(ObjectLocator locator, Class<T> beanClass, T instance)
-    {
-        expect(locator.autobuild(beanClass)).andReturn(instance);
-    }
-
-    protected final void train_get(PerthreadManager manager, String key, Object object)
-    {
-        expect(manager.get(key)).andReturn(object);
-    }
-
-    protected final PerthreadManager mockPerthreadManager()
-    {
-        return newMock(PerthreadManager.class);
-    }
-
-    protected final ServiceResources mockServiceResources(OperationTracker tracker)
-    {
-        ServiceResources resources = mockServiceResources();
-
-        train_getTracker(resources, tracker);
-
-        return resources;
-    }
-
-    protected final void train_getTracker(ServiceResources resources, OperationTracker tracker)
-    {
-        expect(resources.getTracker()).andReturn(tracker).atLeastOnce();
-    }
-
-    protected final ServiceBuilderResources mockServiceBuilderResources(OperationTracker tracker)
-    {
-        ServiceBuilderResources resources = mockServiceBuilderResources();
-
-        train_getTracker(resources, tracker);
-
-        return resources;
-    }
-
-    protected final void train_valueForSymbol(SymbolSource symbolSource, String symbolName, String value)
-    {
-        expect(symbolSource.valueForSymbol(symbolName)).andReturn(value).atLeastOnce();
-    }
-
-    /**
-     * Touches the file, changing the last modified time to the current time.
-     * Does not return until the last modified time for the file actually changes (how long that takes
-     * is JDK, OS and file system dependent).
-     */
-    protected final void touch(File f) throws Exception
-    {
-        long startModified = f.lastModified();
-
-        while (true)
-        {
-            f.setLastModified(System.currentTimeMillis());
-
-            long newModified = f.lastModified();
-
-            if (newModified != startModified)
-                return;
-
-            // Sleep 1/20 second and try again
-
-            sleep(50);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/MockTester.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/MockTester.java
deleted file mode 100644
index ddea0f5..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/MockTester.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-import org.easymock.EasyMock;
-import org.easymock.IMocksControl;
-
-/**
- * Contains core logic used by {@link TestBase}, allowing for mock objects to be used outside of a TestNG-based test
- * suite. A <em>single</em> standard mock control is used for all mock instances. The control does not care about
- * execution order, but will balk at any unexpected method invocations. This class is thread safe (it used a thread
- * local to store the mock control).
- */
-public final class MockTester
-{
-    private static class ThreadLocalControl extends ThreadLocal<IMocksControl>
-    {
-        @Override
-        protected IMocksControl initialValue()
-        {
-            return EasyMock.createControl();
-        }
-    }
-
-    private final ThreadLocalControl localControl = new ThreadLocalControl();
-
-    /**
-     * Invoked after an individual unit test (i.e., a test method invocation) to discard the mock control.
-     */
-    public synchronized void cleanup()
-    {
-        localControl.remove();
-    }
-
-    public synchronized IMocksControl getMocksControl()
-    {
-        return localControl.get();
-    }
-
-    /**
-     * Creates a new mock object of the indicated type. The shared mock control does <strong>not</strong> check order,
-     * but does fail on any unexpected method invocations.
-     *
-     * @param <T>       the type of the mock object
-     * @param mockClass the class to mock
-     * @return the mock object, ready for training
-     */
-    public <T> T newMock(Class<T> mockClass)
-    {
-        return getMocksControl().createMock(mockClass.getSimpleName(), mockClass);
-    }
-
-    /**
-     * Switches each mock object created by {@link #newMock(Class)} into replay mode (out of the initial training
-     * mode).
-     */
-    public void replay()
-    {
-        getMocksControl().replay();
-    }
-
-    /**
-     * Verifies that all trained methods have been invoked on all mock objects (created by {@link #newMock(Class)}, then
-     * switches each mock object back to training mode.
-     */
-    public void verify()
-    {
-        IMocksControl control = getMocksControl();
-
-        control.verify();
-        control.reset();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/TestBase.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/TestBase.java
deleted file mode 100644
index cdbc4ce..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/TestBase.java
+++ /dev/null
@@ -1,150 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-
-import org.easymock.Capture;
-import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-import org.easymock.IExpectationSetters;
-import org.easymock.IMocksControl;
-import org.testng.annotations.AfterMethod;
-
-/**
- * Manages a set of EasyMock mock objects. Used as a base class for test cases.
- * <p/>
- * Extends from {@link org.testng.Assert} to bring in all the public static assert methods without requiring extra
- * imports.
- * <p/>
- * Provides a common mock factory method, {@link #newMock(Class)}. A single <em>standard</em> mock control is used for
- * all mock objects. Standard mocks do not care about the exact order in which methods are invoked, though they are as
- * rigourous as strict mocks when checking that parameters are the correct values.
- * <p/>
- * This base class is created with the intention of use within a TestNG test suite; if using JUnit, you can get the same
- * functionality using {@link MockTester}.
- * <p/>
- * This class is thread safe (it uses a thread local to store the mock control). In theory, this should allow TestNG to
- * execute tests in parallel.
- * 
- * @see org.easymock.EasyMock#createControl()
- * @see org.apache.tapestry5.ioc.test.MockTester
- */
-public class TestBase extends TestUtils
-{
-    private static class ThreadLocalControl extends ThreadLocal<IMocksControl>
-    {
-        @Override
-        protected IMocksControl initialValue()
-        {
-            return EasyMock.createControl();
-        }
-    }
-
-    private final MockTester tester = new MockTester();
-
-    /**
-     * Returns the {@link IMocksControl} for this thread.
-     */
-    protected final IMocksControl getMocksControl()
-    {
-        return tester.getMocksControl();
-    }
-
-    /**
-     * Discards any mock objects created during the test.
-     */
-    @AfterMethod(alwaysRun = true)
-    public final void discardMockControl()
-    {
-        tester.cleanup();
-    }
-
-    /**
-     * Creates a new mock object of the indicated type. The shared mock control does <strong>not</strong> check order,
-     * but does fail on any unexpected method invocations.
-     * 
-     * @param <T>
-     *            the type of the mock object
-     * @param mockClass
-     *            the class to mock
-     * @return the mock object, ready for training
-     */
-    protected final <T> T newMock(Class<T> mockClass)
-    {
-        return tester.newMock(mockClass);
-    }
-
-    /**
-     * Switches each mock object created by {@link #newMock(Class)} into replay mode (out of the initial training
-     * mode).
-     */
-    protected final void replay()
-    {
-        tester.replay();
-    }
-
-    /**
-     * Verifies that all trained methods have been invoked on all mock objects (created by {@link #newMock(Class)}, then
-     * switches each mock object back to training mode.
-     */
-    protected final void verify()
-    {
-        tester.verify();
-    }
-
-    /**
-     * Convienience for {@link EasyMock#expectLastCall()} with {@link IExpectationSetters#andThrow(Throwable)}.
-     * 
-     * @param throwable
-     *            the exception to be thrown by the most recent method call on any mock
-     */
-    protected static void setThrowable(Throwable throwable)
-    {
-        EasyMock.expectLastCall().andThrow(throwable);
-    }
-
-    /**
-     * Convienience for {@link EasyMock#expectLastCall()} with
-     * {@link IExpectationSetters#andAnswer(org.easymock.IAnswer)}.
-     * 
-     * @param answer
-     *            callback for the most recent method invocation
-     */
-    protected static void setAnswer(IAnswer answer)
-    {
-        EasyMock.expectLastCall().andAnswer(answer);
-    }
-
-    /**
-     * Convienience for {@link EasyMock#expect(Object)}.
-     * 
-     * @param <T>
-     * @param value
-     * @return expectation setter, for setting return value, etc.
-     */
-    @SuppressWarnings("unchecked")
-    protected static <T> IExpectationSetters<T> expect(T value)
-    {
-        return EasyMock.expect(value);
-    }
-
-    /**
-     * A factory method to create EasyMock Capture objects.
-     */
-    protected static <T> Capture<T> newCapture()
-    {
-        return new Capture<T>();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/TestUtils.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/TestUtils.java
deleted file mode 100644
index de75381..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/test/TestUtils.java
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-import java.lang.reflect.Field;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.testng.Assert;
-
-/**
- * Extra assertions on top of the standard set, packaged as a base class for easy referencing in tests. Also,
- * utilities for instantiation objects and setting and reading private fields of those objects.
- * 
- * @since 5.2.0
- */
-public class TestUtils extends Assert
-{
-
-    /**
-     * Invoked from code that should not be reachable. For example, place a call to unreachable() after invoking a
-     * method that is expected to throw an exception.
-     */
-    public static void unreachable()
-    {
-        fail("This code should not be reachable.");
-    }
-
-    /**
-     * Asserts that the message property of the throwable contains each of the provided substrings.
-     * 
-     * @param t
-     *            throwable to check
-     * @param substrings
-     *            some number of expected substrings
-     */
-    public static void assertMessageContains(Throwable t, String... substrings)
-    {
-        String message = t.getMessage();
-
-        for (String substring : substrings)
-            assertTrue(message.contains(substring), String.format("String '%s' not found in '%s'.", substring, message));
-    }
-
-    /**
-     * Compares two lists for equality; first all the elements are individually compared for equality (if the lists are
-     * of unequal length, only elements up to the shorter length are compared). Then the length of the lists are
-     * compared. This generally gives
-     * 
-     * @param <T>
-     *            type of objects to compare
-     * @param actual
-     *            actual values to check
-     * @param expected
-     *            expected values
-     */
-    public static <T> void assertListsEquals(List<T> actual, List<T> expected)
-    {
-        int count = Math.min(actual.size(), expected.size());
-
-        try
-        {
-            for (int i = 0; i < count; i++)
-            {
-                assertEquals(actual.get(i), expected.get(i), String.format("Element #%d.", i));
-            }
-
-            assertEquals(actual.size(), expected.size(), "List size.");
-        }
-        catch (AssertionError ae)
-        {
-            showLists(actual, expected);
-
-            throw ae;
-        }
-    }
-
-    protected static <T> void showLists(List<T> actual, List<T> expected)
-    {
-        List<String> actualStrings = toStrings(actual);
-        List<String> expectedStrings = toStrings(expected);
-
-        String format = String.format("%%3d: [%%-%ds] [%%-%ds]\n", maxLength(actualStrings), maxLength(expectedStrings));
-
-        int count = Math.max(actual.size(), expected.size());
-
-        System.out.flush();
-        System.err.flush();
-        
-        System.err.println("List results differ (actual  vs. expected):");
-        
-        for (int i = 0; i < count; i++)
-        {
-            System.err.printf(format, i, get(actualStrings, i), get(expectedStrings, i));
-        }
-    }
-
-    private static String get(List<String> list, int index)
-    {
-        if (index < list.size())
-            return list.get(index);
-
-        return "";
-    }
-
-    private static int maxLength(List<String> list)
-    {
-        int result = 0;
-
-        for (String s : list)
-        {
-            result = Math.max(result, s.length());
-        }
-
-        return result;
-    }
-
-    private static <T> List<String> toStrings(List<T> list)
-    {
-        List<String> result = new ArrayList<String>();
-
-        for (T t : list)
-        {
-            result.add(String.valueOf(t));
-        }
-
-        return result;
-    }
-
-    /**
-     * Convenience for {@link #assertListsEquals(List, List)}.
-     * 
-     * @param <T>
-     *            type of objects to compare
-     * @param actual
-     *            actual values to check
-     * @param expected
-     *            expected values
-     */
-    public static <T> void assertListsEquals(List<T> actual, T... expected)
-    {
-        assertListsEquals(actual, Arrays.asList(expected));
-    }
-
-    /**
-     * Convenience for {@link #assertListsEquals(List, List)}.
-     * 
-     * @param <T>
-     *            type of objects to compare
-     * @param actual
-     *            actual values to check
-     * @param expected
-     *            expected values
-     */
-    public static <T> void assertArraysEqual(T[] actual, T... expected)
-    {
-        assertListsEquals(Arrays.asList(actual), expected);
-    }
-
-    /**
-     * Initializes private fields (via reflection).
-     * 
-     * @param object
-     *            object to be updated
-     * @param fieldValues
-     *            string field names and corresponding field values
-     * @return the object
-     */
-    public static <T> T set(T object, Object... fieldValues)
-    {
-        assert object != null;
-        Class objectClass = object.getClass();
-
-        for (int i = 0; i < fieldValues.length; i += 2)
-        {
-            String fieldName = (String) fieldValues[i];
-            Object fieldValue = fieldValues[i + 1];
-
-            try
-            {
-                Field field = findField(objectClass, fieldName);
-
-                field.setAccessible(true);
-
-                field.set(object, fieldValue);
-            }
-            catch (Exception ex)
-            {
-                throw new RuntimeException(String.format("Unable to set field '%s' of %s to %s: %s", fieldName, object,
-                        fieldValue, InternalUtils.toMessage(ex)), ex);
-            }
-        }
-
-        return object;
-    }
-
-    /**
-     * Reads the content of a private field.
-     * 
-     * @param object
-     *            to read the private field from
-     * @param fieldName
-     *            name of field to read
-     * @return value stored in the field
-     * @since 5.1.0.5
-     */
-    public static Object get(Object object, String fieldName)
-    {
-        assert object != null;
-        assert InternalUtils.isNonBlank(fieldName);
-        try
-        {
-            Field field = findField(object.getClass(), fieldName);
-
-            field.setAccessible(true);
-
-            return field.get(object);
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(String.format("Unable to read field '%s' of %s: %s", fieldName, object,
-                    InternalUtils.toMessage(ex)), ex);
-        }
-    }
-
-    private static Field findField(Class objectClass, String fieldName)
-    {
-
-        Class cursor = objectClass;
-
-        while (cursor != null)
-        {
-            try
-            {
-                return cursor.getDeclaredField(fieldName);
-            }
-            catch (NoSuchFieldException ex)
-            {
-                // Ignore.
-            }
-
-            cursor = cursor.getSuperclass();
-        }
-
-        throw new RuntimeException(String.format("Class %s does not contain a field named '%s'.",
-                objectClass.getName(), fieldName));
-    }
-
-    /**
-     * Creates a new instance of the object using its default constructor, and initializes it (via
-     * {@link #set(Object, Object[])}).
-     * 
-     * @param objectType
-     *            typeof object to instantiate
-     * @param fieldValues
-     *            string field names and corresponding field values
-     * @return the initialized instance
-     */
-    public static <T> T create(Class<T> objectType, Object... fieldValues)
-    {
-        T result = null;
-
-        try
-        {
-            result = objectType.newInstance();
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException(String.format("Unable to instantiate instance of %s: %s", objectType.getName(),
-                    InternalUtils.toMessage(ex)), ex);
-        }
-
-        return set(result, fieldValues);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/AbstractMessages.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/AbstractMessages.java
deleted file mode 100644
index d96c7aa..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/AbstractMessages.java
+++ /dev/null
@@ -1,106 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
-import org.apache.tapestry5.ioc.internal.util.ConcurrentBarrier;
-import org.apache.tapestry5.ioc.internal.util.MessageFormatterImpl;
-
-import java.util.Locale;
-import java.util.Map;
-
-/**
- * Abstract implementation of {@link Messages} that doesn't know where values come from (that information is supplied in
- * a subclass, via the {@link #valueForKey(String)} method).
- */
-public abstract class AbstractMessages implements Messages
-{
-    private final ConcurrentBarrier barrier = new ConcurrentBarrier();
-
-    /**
-     * String key to MF instance.
-     */
-    private final Map<String, MessageFormatter> cache = newCaseInsensitiveMap();
-
-    private final Locale locale;
-
-    protected AbstractMessages(Locale locale)
-    {
-        this.locale = locale;
-    }
-
-    /**
-     * Invoked to provide the value for a particular key. This may be invoked multiple times even for the same key. The
-     * implementation should <em>ignore the case of the key</em>.
-     *
-     * @param key the key to obtain a value for (case insensitive)
-     * @return the value for the key, or null if this instance can not provide the value
-     */
-    protected abstract String valueForKey(String key);
-
-
-    public boolean contains(String key)
-    {
-        return valueForKey(key) != null;
-    }
-
-    public String get(String key)
-    {
-        if (contains(key)) return valueForKey(key);
-
-        return String.format("[[missing key: %s]]", key);
-    }
-
-    public MessageFormatter getFormatter(final String key)
-    {
-        MessageFormatter result = barrier.withRead(new Invokable<MessageFormatter>()
-        {
-            public MessageFormatter invoke()
-            {
-                return cache.get(key);
-            }
-        });
-
-        if (result != null) return result;
-
-        final MessageFormatter newFormatter = buildMessageFormatter(key);
-
-        barrier.withWrite(new Runnable()
-        {
-            public void run()
-            {
-                cache.put(key, newFormatter);
-            }
-        });
-
-        return newFormatter;
-    }
-
-    private MessageFormatter buildMessageFormatter(String key)
-    {
-        String format = get(key);
-
-        return new MessageFormatterImpl(format, locale);
-    }
-
-    public String format(String key, Object... args)
-    {
-        return getFormatter(key).format(args);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/AvailableValues.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/AvailableValues.java
deleted file mode 100644
index c4c5c6d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/AvailableValues.java
+++ /dev/null
@@ -1,87 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Used (as part of a {@link UnknownValueException} to identify what available values
- * are present.
- * 
- * @since 5.2.0
- */
-public class AvailableValues
-{
-    private final String valueType;
-
-    private final List<String> values;
-
-    /**
-     * @param valueType
-     *            a word or phrase that describes what the values are such as "component types" or "service ids"
-     *@param values
-     *            a set of objects defining the values; the values will be converted to strings and sorted into
-     *            ascending order
-     */
-    public AvailableValues(String valueType, Collection<?> values)
-    {
-        this.valueType = valueType;
-        this.values = sortValues(values);
-    }
-
-    public AvailableValues(String valueType, Map<?, ?> map)
-    {
-        this(valueType, map.keySet());
-    }
-
-    private static List<String> sortValues(Collection<?> values)
-    {
-        List<String> result = CollectionFactory.newList();
-
-        for (Object v : values)
-        {
-            result.add(String.valueOf(v));
-        }
-
-        Collections.sort(result);
-
-        return Collections.unmodifiableList(result);
-    }
-
-    /** The type of value, i.e., "component types" or "service ids". */
-    public String getValueType()
-    {
-        return valueType;
-    }
-
-    /** The values, as strings, in sorted order. */
-    public List<String> getValues()
-    {
-        return values;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("AvailableValues[%s: %s]", valueType, InternalUtils.join(values));
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/BodyBuilder.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/BodyBuilder.java
deleted file mode 100644
index 9b5ee51..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/BodyBuilder.java
+++ /dev/null
@@ -1,165 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.services.MethodSignature;
-
-import java.util.Formatter;
-
-/**
- * Utility class for assembling the <em>body</em> used with Javassist when defining a method or constructor. Basically,
- * assists with formatting and with indentation. This makes the code that assembles a method body much simpler ... and
- * it makes the result neater, which will be easier to debug (debugging dynamically generated code is hard enough that
- * it should be easy to read the input code before worrying about why it doesn't compile or execute properly).
- * <p/>
- * This class is not threadsafe.
- * <p/>
- * Most of the methods return the BodyBuilder, to form a fluent interface.
- */
-public final class BodyBuilder
-{
-    /**
-     * Feels right for the size of a typical body.
-     */
-    private static final int DEFAULT_LENGTH = 200;
-
-    private static final String INDENT = "  ";
-
-    private final StringBuilder buffer = new StringBuilder(DEFAULT_LENGTH);
-
-    private final Formatter formatter = new Formatter(buffer);
-
-    // Per level of nesting depth (two spaces).
-
-    private int nestingDepth = 0;
-
-    private boolean atNewLine = true;
-
-    /**
-     * Clears the builder, returning it to its initial, empty state.
-     */
-    public BodyBuilder clear()
-    {
-        nestingDepth = 0;
-        atNewLine = true;
-        buffer.setLength(0);
-
-        return this;
-    }
-
-    /**
-     * Adds text to the current line, without ending the line.
-     *
-     * @param format string format, as per {@link java.util.Formatter}
-     * @param args   arguments referenced by format specifiers
-     */
-    public BodyBuilder add(String format, Object... args)
-    {
-        add(format, args, false);
-
-        return this;
-    }
-
-    /**
-     * Adds text to the current line and ends the line.
-     *
-     * @param format string format, as per {@link java.util.Formatter}
-     * @param args   arguments referenced by format specifiers
-     */
-    public BodyBuilder addln(String format, Object... args)
-    {
-        add(format, args, true);
-
-        return this;
-    }
-
-    private BodyBuilder add(String format, Object[] args, boolean newLine)
-    {
-        indent();
-
-        // Format output, send to buffer
-
-        formatter.format(format, args);
-
-        if (newLine) newline();
-
-        return this;
-    }
-
-    private void newline()
-    {
-        buffer.append("\n");
-        atNewLine = true;
-    }
-
-    /**
-     * Begins a new block. Emits a "{", properly indented, on a new line.
-     */
-    public BodyBuilder begin()
-    {
-        if (!atNewLine) newline();
-
-        indent();
-        buffer.append("{");
-        newline();
-
-        nestingDepth++;
-
-        return this;
-    }
-
-    /**
-     * Ends the current block. Emits a "}", propertly indented, on a new line.
-     */
-    public BodyBuilder end()
-    {
-        if (!atNewLine) newline();
-
-        // TODO: Could check here if nesting depth goes below zero.
-
-        nestingDepth--;
-
-        indent();
-        buffer.append("}");
-
-        newline();
-
-        return this;
-    }
-
-    private void indent()
-    {
-        if (atNewLine)
-        {
-            for (int i = 0; i < nestingDepth; i++)
-                buffer.append(INDENT);
-
-            atNewLine = false;
-        }
-    }
-
-    /**
-     * Returns the current contents of the buffer. This value is often passed to methods such as {@link
-     * org.apache.tapestry5.ioc.services.ClassFab#addConstructor(Class[], Class[], String)} or {@link
-     * org.apache.tapestry5.ioc.services.ClassFab#addMethod(int, MethodSignature, String)}.
-     * <p/>
-     * A BodyBuilder can be used again after invoking toString(), typically by invoking {@link #clear()}.
-     */
-    @Override
-    public String toString()
-    {
-        return buffer.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.java
deleted file mode 100644
index 09f464d..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.java
+++ /dev/null
@@ -1,493 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import java.io.Serializable;
-import java.util.*;
-
-/**
- * An mapped collection where the keys are always strings and access to values is case-insensitive. The case of keys in
- * the map is <em>maintained</em>, but on any access to a key (directly or indirectly), all key comparisons are
- * performed in a case-insensitive manner. The map implementation is intended to support a reasonably finite number
- * (dozens or hundreds, not thousands or millions of key/value pairs. Unlike HashMap, it is based on a sorted list of
- * entries rather than hash bucket. It is also geared towards a largely static map, one that is created and then used
- * without modification.
- *
- * @param <V> the type of value stored
- */
-public class CaseInsensitiveMap<V> extends AbstractMap<String, V> implements Serializable
-{
-    private static final long serialVersionUID = 3362718337611953298L;
-
-    private static final int NULL_HASH = Integer.MIN_VALUE;
-
-    private static final int DEFAULT_SIZE = 20;
-
-    private static class CIMEntry<V> implements Map.Entry<String, V>, Serializable
-    {
-        private static final long serialVersionUID = 6713986085221148350L;
-
-        private String key;
-
-        private final int hashCode;
-
-        V value;
-
-        public CIMEntry(final String key, final int hashCode, V value)
-        {
-            this.key = key;
-            this.hashCode = hashCode;
-            this.value = value;
-        }
-
-        public String getKey()
-        {
-            return key;
-        }
-
-        public V getValue()
-        {
-            return value;
-        }
-
-        public V setValue(V value)
-        {
-            V result = this.value;
-
-            this.value = value;
-
-            return result;
-        }
-
-        /**
-         * Returns true if both keys are null, or if the provided key is the same as, or case-insensitively equal to,
-         * the entrie's key.
-         *
-         * @param key to compare against
-         * @return true if equal
-         */
-        @SuppressWarnings({ "StringEquality" })
-        boolean matches(String key)
-        {
-            return key == this.key || (key != null && key.equalsIgnoreCase(this.key));
-        }
-
-        boolean valueMatches(Object value)
-        {
-            return value == this.value || (value != null && value.equals(this.value));
-        }
-    }
-
-    private class EntrySetIterator implements Iterator
-    {
-        int expectedModCount = modCount;
-
-        int index;
-
-        int current = -1;
-
-        public boolean hasNext()
-        {
-            return index < size;
-        }
-
-        public Object next()
-        {
-            check();
-
-            if (index >= size) throw new NoSuchElementException();
-
-            current = index++;
-
-            return entries[current];
-        }
-
-        public void remove()
-        {
-            check();
-
-            if (current < 0) throw new NoSuchElementException();
-
-            new Position(current, true).remove();
-
-            expectedModCount = modCount;
-        }
-
-        private void check()
-        {
-            if (expectedModCount != modCount) throw new ConcurrentModificationException();
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    private class EntrySet extends AbstractSet
-    {
-        @Override
-        public Iterator iterator()
-        {
-            return new EntrySetIterator();
-        }
-
-        @Override
-        public int size()
-        {
-            return size;
-        }
-
-        @Override
-        public void clear()
-        {
-            CaseInsensitiveMap.this.clear();
-        }
-
-        @Override
-        public boolean contains(Object o)
-        {
-            if (!(o instanceof Map.Entry)) return false;
-
-            Map.Entry e = (Map.Entry) o;
-
-            Position position = select(e.getKey());
-
-            return position.isFound() && position.entry().valueMatches(e.getValue());
-        }
-
-        @Override
-        public boolean remove(Object o)
-        {
-            if (!(o instanceof Map.Entry)) return false;
-
-            Map.Entry e = (Map.Entry) o;
-
-            Position position = select(e.getKey());
-
-            if (position.isFound() && position.entry().valueMatches(e.getValue()))
-            {
-                position.remove();
-                return true;
-            }
-
-            return false;
-        }
-
-    }
-
-    private class Position
-    {
-        private final int cursor;
-
-        private final boolean found;
-
-        Position(int cursor, boolean found)
-        {
-            this.cursor = cursor;
-            this.found = found;
-        }
-
-        boolean isFound()
-        {
-            return found;
-        }
-
-        CIMEntry<V> entry()
-        {
-            return entries[cursor];
-        }
-
-        V get()
-        {
-            return found ? entries[cursor].value : null;
-        }
-
-        V remove()
-        {
-            if (!found) return null;
-
-            V result = entries[cursor].value;
-
-            // Remove the entry by shifting everything else down.
-
-            System.arraycopy(entries, cursor + 1, entries, cursor, size - cursor - 1);
-
-            // We shifted down, leaving one (now duplicate) entry behind.
-
-            entries[--size] = null;
-
-            // A structural change for sure
-
-            modCount++;
-
-            return result;
-        }
-
-        @SuppressWarnings("unchecked")
-        V put(String key, int hashCode, V newValue)
-        {
-            if (found)
-            {
-                CIMEntry<V> e = entries[cursor];
-
-                V result = e.value;
-
-                // Not a structural change, so no change to modCount
-
-                // Update the key (to maintain case). By definition, the hash code
-                // will not change.
-
-                e.key = key;
-                e.value = newValue;
-
-                return result;
-            }
-
-            // Not found, we're going to add it.
-
-            int newSize = size + 1;
-
-            if (newSize == entries.length)
-            {
-                // Time to expand!
-
-                int newCapacity = (size * 3) / 2 + 1;
-
-                CIMEntry<V>[] newEntries = new CIMEntry[newCapacity];
-
-                System.arraycopy(entries, 0, newEntries, 0, cursor);
-
-                System.arraycopy(entries, cursor, newEntries, cursor + 1, size - cursor);
-
-                entries = newEntries;
-            }
-            else
-            {
-                // Open up a space for the new entry
-
-                System.arraycopy(entries, cursor, entries, cursor + 1, size - cursor);
-            }
-
-            CIMEntry<V> newEntry = new CIMEntry<V>(key, hashCode, newValue);
-            entries[cursor] = newEntry;
-
-            size++;
-
-            // This is definately a structural change
-
-            modCount++;
-
-            return null;
-        }
-
-    }
-
-    // The list of entries. This is kept sorted by hash code. In some cases, there may be different
-    // keys with the same hash code in adjacent indexes.
-    private CIMEntry<V>[] entries;
-
-    private int size = 0;
-
-    // Used by iterators to check for concurrent modifications
-
-    private transient int modCount = 0;
-
-    private transient Set<Map.Entry<String, V>> entrySet;
-
-    public CaseInsensitiveMap()
-    {
-        this(DEFAULT_SIZE);
-    }
-
-    @SuppressWarnings("unchecked")
-    public CaseInsensitiveMap(int size)
-    {
-        entries = new CIMEntry[Math.max(size, 3)];
-    }
-
-    public CaseInsensitiveMap(Map<String, ? extends V> map)
-    {
-        this(map.size());
-
-        for (Map.Entry<String, ? extends V> entry : map.entrySet())
-        {
-            put(entry.getKey(), entry.getValue());
-        }
-    }
-
-    @Override
-    public void clear()
-    {
-        for (int i = 0; i < size; i++)
-            entries[i] = null;
-
-        size = 0;
-        modCount++;
-    }
-
-    @Override
-    public boolean isEmpty()
-    {
-        return size == 0;
-    }
-
-    @Override
-    public int size()
-    {
-        return size;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public V put(String key, V value)
-    {
-        int hashCode = caseInsenitiveHashCode(key);
-
-        return select(key, hashCode).put(key, hashCode, value);
-    }
-
-    @Override
-    public boolean containsKey(Object key)
-    {
-        return select(key).isFound();
-    }
-
-    @Override
-    public V get(Object key)
-    {
-        return select(key).get();
-    }
-
-    @Override
-    public V remove(Object key)
-    {
-        return select(key).remove();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Override
-    public Set<Map.Entry<String, V>> entrySet()
-    {
-        if (entrySet == null) entrySet = new EntrySet();
-
-        return entrySet;
-    }
-
-    private Position select(Object key)
-    {
-        if (key == null || key instanceof String)
-        {
-            String keyString = (String) key;
-            return select(keyString, caseInsenitiveHashCode(keyString));
-        }
-
-        return new Position(0, false);
-    }
-
-    /**
-     * Searches the elements for the index of the indicated key and (case insensitive) hash code. Sets the _cursor and
-     * _found attributes.
-     */
-    private Position select(String key, int hashCode)
-    {
-        if (size == 0) return new Position(0, false);
-
-        int low = 0;
-        int high = size - 1;
-
-        int cursor;
-
-        while (low <= high)
-        {
-            cursor = (low + high) >> 1;
-
-            CIMEntry e = entries[cursor];
-
-            if (e.hashCode < hashCode)
-            {
-                low = cursor + 1;
-                continue;
-            }
-
-            if (e.hashCode > hashCode)
-            {
-                high = cursor - 1;
-                continue;
-            }
-
-            return tunePosition(key, hashCode, cursor);
-        }
-
-        return new Position(low, false);
-    }
-
-    /**
-     * select() has located a matching hashCode, but there's an outlying possibility that multiple keys share the same
-     * hashCode. Backup the cursor until we get to locate the initial hashCode match, then march forward until the key
-     * is located, or the hashCode stops matching.
-     *
-     * @param key
-     * @param hashCode
-     */
-    private Position tunePosition(String key, int hashCode, int cursor)
-    {
-        boolean found = false;
-
-        while (cursor > 0)
-        {
-            if (entries[cursor - 1].hashCode != hashCode) break;
-
-            cursor--;
-        }
-
-        while (true)
-        {
-            if (entries[cursor].matches(key))
-            {
-                found = true;
-                break;
-            }
-
-            // Advance to the next entry.
-
-            cursor++;
-
-            // If out of entries,
-            if (cursor >= size || entries[cursor].hashCode != hashCode) break;
-        }
-
-        return new Position(cursor, found);
-    }
-
-    static int caseInsenitiveHashCode(String input)
-    {
-        if (input == null) return NULL_HASH;
-
-        int length = input.length();
-        int hash = 0;
-
-        // This should end up more or less equal to input.toLowerCase().hashCode(), unless String
-        // changes its implementation. Let's hope this is reasonably fast.
-
-        for (int i = 0; i < length; i++)
-        {
-            int ch = input.charAt(i);
-
-            int caselessCh = Character.toLowerCase(ch);
-
-            hash = 31 * hash + caselessCh;
-        }
-
-        return hash;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/ExceptionUtils.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/ExceptionUtils.java
deleted file mode 100644
index 479ad1c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/ExceptionUtils.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-/**
- * Contains static methods useful for manipulating exceptions.
- */
-public class ExceptionUtils
-{
-    /**
-     * Locates a particular type of exception, working its way via the cause property of each exception in the exception
-     * stack.
-     *
-     * @param t    the outermost exception
-     * @param type the type of exception to search for
-     * @return the first exception of the given type, if found, or null
-     */
-    public static <T extends Throwable> T findCause(Throwable t, Class<T> type)
-    {
-        Throwable current = t;
-
-        while (current != null)
-        {
-            if (type.isInstance(current)) return type.cast(current);
-
-            // Not a match, work down.
-
-            current = current.getCause();
-        }
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/IdAllocator.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/IdAllocator.java
deleted file mode 100644
index fde8d07..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/IdAllocator.java
+++ /dev/null
@@ -1,189 +0,0 @@
-// Copyright 2004, 2005, 2006, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import java.util.HashMap;
-import java.util.IdentityHashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-/**
- * Used to "uniquify" names within a given context. A base name is passed in, and the return value is the base name, or
- * the base name extended with a suffix to make it unique.
- * <p/>
- * This class is not threadsafe.
- */
-
-public final class IdAllocator
-{
-    private static final String SEPARATOR = "_";
-
-    /**
-     * Map from allocated id to a generator for names associated with the allocated id.
-     */
-    private final Map<String, NameGenerator> generatorMap;
-
-    private final String namespace;
-
-    /**
-     * Generates unique names with a particular prefix.
-     */
-    private static class NameGenerator implements Cloneable
-    {
-        private final String baseId;
-
-        private int index;
-
-        NameGenerator(String baseId)
-        {
-            this.baseId = baseId + SEPARATOR;
-        }
-
-        public String nextId()
-        {
-            return baseId + index++;
-        }
-
-        /**
-         * Clones this instance, returning an equivalent but separate copy.
-         */
-        @SuppressWarnings(
-        { "CloneDoesntDeclareCloneNotSupportedException" })
-        @Override
-        public NameGenerator clone()
-        {
-            try
-            {
-                return (NameGenerator) super.clone();
-            }
-            catch (CloneNotSupportedException ex)
-            {
-                // Unreachable!
-                throw new RuntimeException(ex);
-            }
-        }
-    }
-
-    /**
-     * Creates a new allocator with no namespace.
-     */
-    public IdAllocator()
-    {
-        this("");
-    }
-
-    /**
-     * Creates a new allocator with the provided namespace.
-     */
-    public IdAllocator(String namespace)
-    {
-        this(namespace, new HashMap<String, NameGenerator>());
-    }
-
-    private IdAllocator(String namespace, Map<String, NameGenerator> generatorMap)
-    {
-        this.namespace = namespace;
-        this.generatorMap = generatorMap;
-    }
-
-    /**
-     * Returns a list of all allocated ids, sorted alphabetically.
-     */
-    public List<String> getAllocatedIds()
-    {
-        return InternalUtils.sortedKeys(generatorMap);
-    }
-
-    /**
-     * Creates a clone of this IdAllocator instance, copying the allocator's namespace and key map.
-     */
-    @SuppressWarnings(
-    { "CloneDoesntCallSuperClone" })
-    @Override
-    public IdAllocator clone()
-    {
-        // Copying the generatorMap is tricky; multiple keys will point to the same NameGenerator
-        // instance. We need to clone the NameGenerators, then build a new map around the clones.
-
-        IdentityHashMap<NameGenerator, NameGenerator> transformMap = new IdentityHashMap<NameGenerator, NameGenerator>();
-
-        for (NameGenerator original : generatorMap.values())
-        {
-            NameGenerator copy = original.clone();
-
-            transformMap.put(original, copy);
-        }
-
-        Map<String, NameGenerator> mapCopy = CollectionFactory.newMap();
-
-        for (String key : generatorMap.keySet())
-        {
-            NameGenerator original = generatorMap.get(key);
-            NameGenerator copy = transformMap.get(original);
-
-            mapCopy.put(key, copy);
-        }
-
-        return new IdAllocator(namespace, mapCopy);
-    }
-
-    /**
-     * Allocates the id. Repeated calls for the same name will return "name", "name_0", "name_1", etc.
-     */
-    public String allocateId(String name)
-    {
-        String key = name + namespace;
-
-        NameGenerator g = generatorMap.get(key);
-        String result;
-
-        if (g == null)
-        {
-            g = new NameGenerator(key);
-            result = key;
-        }
-        else
-            result = g.nextId();
-
-        // Handle the degenerate case, where a base name of the form "foo_0" has been
-        // requested. Skip over any duplicates thus formed.
-
-        while (generatorMap.containsKey(result))
-            result = g.nextId();
-
-        generatorMap.put(result, g);
-
-        return result;
-    }
-
-    /**
-     * Checks to see if a given name has been allocated.
-     */
-    public boolean isAllocated(String name)
-    {
-        return generatorMap.containsKey(name);
-    }
-
-    /**
-     * Clears the allocator, resetting it to freshly allocated state.
-     */
-    public void clear()
-    {
-        generatorMap.clear();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java
deleted file mode 100644
index eeafea1..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/Stack.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-/**
- * A simple, streamlined implementation of {@link java.util.Stack}. The implementation is <em>not</em> threadsafe.
- *
- * @param <E> the type of elements stored in the map
- * @see CollectionFactory#newStack()
- */
-public class Stack<E>
-{
-    private static final int MINIMUM_SIZE = 3;
-
-    private static final int DEFAULT_ARRAY_SIZE = 20;
-
-    private Object[] items;
-
-    private int index = -1;
-
-    /**
-     * Normal constructor supporting an initial size of 20.
-     */
-    public Stack()
-    {
-        this(DEFAULT_ARRAY_SIZE);
-    }
-
-    /**
-     * @param initialSize the initial size of the internal array (which will be expanded as necessary). For best
-     *                    efficiency, set this to the maximum depth of the stack.
-     */
-    public Stack(int initialSize)
-    {
-        items = new Object[Math.max(initialSize, MINIMUM_SIZE)];
-    }
-
-    /**
-     * Returns true if the stack is empty.
-     */
-    public boolean isEmpty()
-    {
-        return index < 0;
-    }
-
-    /**
-     * Returns the number of items currently in the stack.
-     */
-    public int getDepth()
-    {
-        return index + 1;
-    }
-
-    /**
-     * Clears the stack, the same as popping off all elements.
-     */
-    public void clear()
-    {
-        for (int i = 0; i <= index; i++) items[i] = null;
-
-        index = -1;
-    }
-
-    /**
-     * Pushes a new item onto the stack.
-     */
-    public void push(E item)
-    {
-        index++;
-
-        if (index == items.length)
-        {
-            int newCapacity = (items.length * 3) / 2 + 1;
-            Object[] newItems = new Object[newCapacity];
-            System.arraycopy(items, 0, newItems, 0, items.length);
-
-            items = newItems;
-        }
-
-        items[index] = item;
-    }
-
-    /**
-     * Pops the top element off the stack and returns it.
-     *
-     * @return the top element of the stack
-     * @throws IllegalStateException if the stack is empty
-     */
-    @SuppressWarnings("unchecked")
-    public E pop()
-    {
-        checkIfEmpty();
-
-        Object result = items[index];
-
-        items[index] = null;
-
-        index--;
-
-        return (E) result;
-    }
-
-    private void checkIfEmpty()
-    {
-        if (index < 0) throw new IllegalStateException(UtilMessages.stackIsEmpty());
-    }
-
-    /**
-     * Returns the top element of the stack without affecting the stack.
-     *
-     * @return top element on the stack
-     * @throws IllegalStateException if the stack is empty
-     */
-    @SuppressWarnings("unchecked")
-    public E peek()
-    {
-        checkIfEmpty();
-
-        return (E) items[index];
-    }
-
-    /**
-     * Describes the stack, listing the element in order of depth (top element first).
-     *
-     * @return string description of the stack
-     */
-    @Override
-    public String toString()
-    {
-        StringBuilder builder = new StringBuilder("Stack[");
-
-        for (int i = index; i >= 0; i--)
-        {
-            if (i != index) builder.append(", ");
-
-            builder.append(String.valueOf(items[i]));
-        }
-
-        builder.append("]");
-
-        return builder.toString();
-    }
-
-    /**
-     * Returns a snapshot of the current state of the stack as an array of objects. The first object is the deepest in
-     * the stack, the last object is the most shallowest (most recently pushed onto the stack).  The returned array may
-     * be manipulated (it is a copy).
-     *
-     * @return the stack as an object array
-     */
-    public Object[] getSnapshot()
-    {
-        Object[] result = new Object[index + 1];
-
-        System.arraycopy(items, 0, result, 0, index + 1);
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/StrategyRegistry.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/StrategyRegistry.java
deleted file mode 100644
index da7a8d3..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/StrategyRegistry.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InheritanceSearch;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A key component in implementing the "Gang of Four" Strategy pattern. A StrategyRegistry will match up a given input
- * type with a registered strategy for that type.
- *
- * @param <A> the type of the strategy adapter
- */
-public final class StrategyRegistry<A>
-{
-    private final Class<A> adapterType;
-
-    private final boolean allowNonMatch;
-
-    private final Map<Class, A> registrations = CollectionFactory.newMap();
-
-    private final Map<Class, A> cache = CollectionFactory.newConcurrentMap();
-
-    /**
-     * Used to identify types for which there is no matching adapter; we're using it as if it were a ConcurrentSet.
-     */
-    private final Map<Class, Boolean> unmatched = CollectionFactory.newConcurrentMap();
-
-    private StrategyRegistry(Class<A> adapterType, Map<Class, A> registrations, boolean allowNonMatch)
-    {
-        this.adapterType = adapterType;
-        this.allowNonMatch = allowNonMatch;
-
-        this.registrations.putAll(registrations);
-    }
-
-    /**
-     * Creates a strategy registry for the given adapter type. The registry will be configured to require matches.
-     *
-     * @param adapterType   the type of adapter retrieved from the registry
-     * @param registrations map of registrations (the contents of the map are copied)
-     */
-    public static <A> StrategyRegistry<A> newInstance(Class<A> adapterType,
-                                                      Map<Class, A> registrations)
-    {
-        return newInstance(adapterType, registrations, false);
-    }
-
-    /**
-     * Creates a strategy registry for the given adapter type.
-     *
-     * @param adapterType   the type of adapter retrieved from the registry
-     * @param registrations map of registrations (the contents of the map are copied)
-     * @param allowNonMatch if true, then the registry supports non-matches when retrieving an adapter
-     */
-    public static <A> StrategyRegistry<A> newInstance(
-            Class<A> adapterType,
-            Map<Class, A> registrations, boolean allowNonMatch)
-    {
-        return new StrategyRegistry<A>(adapterType, registrations, allowNonMatch);
-    }
-
-    public void clearCache()
-    {
-        cache.clear();
-        unmatched.clear();
-    }
-
-    public Class<A> getAdapterType()
-    {
-        return adapterType;
-    }
-
-    /**
-     * Gets an adapter for an object. Searches based on the value's class, unless the value is null, in which case, a
-     * search on class void is used.
-     *
-     * @param value for which an adapter is needed
-     * @return the adapter for the value or null if not found (and allowNonMatch is true)
-     * @throws IllegalArgumentException if no matching adapter may be found and allowNonMatch is false
-     */
-
-    public A getByInstance(Object value)
-    {
-        return get(value == null ? void.class : value.getClass());
-    }
-
-    /**
-     * Searches for an adapter corresponding to the given input type.
-     *
-     * @param type the type to search
-     * @return the adapter for the type or null if not found (and allowNonMatch is true)
-     * @throws IllegalArgumentException if no matching adapter may be found   and allowNonMatch is false
-     */
-    public A get(Class type)
-    {
-
-        A result = cache.get(type);
-
-        if (result != null) return result;
-
-        if (unmatched.containsKey(type)) return null;
-
-
-        result = findMatch(type);
-
-        // This may be null in the case that there is no match and we're allowing that to not
-        // be an error.  That's why we check via containsKey.
-
-        if (result != null)
-        {
-            cache.put(type, result);
-        }
-        else
-        {
-            unmatched.put(type, true);
-        }
-
-        return result;
-    }
-
-    private A findMatch(Class type)
-    {
-        for (Class t : new InheritanceSearch(type))
-        {
-            A result = registrations.get(t);
-
-            if (result != null) return result;
-        }
-
-        if (allowNonMatch) return null;
-
-        // Report the error. These things really confused the hell out of people in Tap4, so we're
-        // going the extra mile on the exception message.
-
-        List<String> names = CollectionFactory.newList();
-        for (Class t : registrations.keySet())
-            names.add(t.getName());
-
-        throw new IllegalArgumentException(UtilMessages
-                .noStrategyAdapter(type, adapterType, names));
-    }
-
-    /**
-     * Returns the registered types for which adapters are available.
-     */
-    public Collection<Class> getTypes()
-    {
-        return CollectionFactory.newList(registrations.keySet());
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("StrategyRegistry[%s]", adapterType.getName());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/TimeInterval.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/TimeInterval.java
deleted file mode 100644
index e1780e4..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/TimeInterval.java
+++ /dev/null
@@ -1,194 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-/**
- * Used to represent a period of time, specifically as a configuration value. This is often used to specify timeouts.
- * <p/>
- * TimePeriods are parsed from strings.
- * <p/>
- * The string specifys a number of terms. The values of all the terms are summed together to form the total time period.
- * Each term consists of a number followed by a unit. Units (from largest to smallest) are: <dl> <dt>y <dd>year <dt>d
- * <dd>day <dt>h <dd>hour <dt>m <dd>minute <dt>s <dd>second <dt>ms <dd>millisecond </dl> <p>  Example: "2 h 30 m". By
- * convention, terms are specified largest to smallest.  A term without a unit is assumed to be milliseconds.  Units are
- * case insensitive ("h" or "H" are treated the same).
- */
-public class TimeInterval
-{
-    private static final Map<String, Long> UNITS = CollectionFactory.newCaseInsensitiveMap();
-
-    private static final long MILLISECOND = 1000l;
-
-    static
-    {
-        UNITS.put("ms", 1l);
-        UNITS.put("s", MILLISECOND);
-        UNITS.put("m", 60 * MILLISECOND);
-        UNITS.put("h", 60 * UNITS.get("m"));
-        UNITS.put("d", 24 * UNITS.get("h"));
-        UNITS.put("y", 365 * UNITS.get("d"));
-    }
-
-    /**
-     * The unit keys, sorted in descending order.
-     */
-    private static final String[] UNIT_KEYS =
-    { "y", "d", "h", "m", "s", "ms" };
-
-    private static final Pattern PATTERN = Pattern.compile("\\s*(\\d+)\\s*([a-z]*)", Pattern.CASE_INSENSITIVE);
-
-    private final long milliseconds;
-
-    /**
-     * Creates a TimeInterval for a string.
-     * 
-     * @param input
-     *            the string specifying the amount of time in the period
-     */
-    public TimeInterval(String input)
-    {
-        this(parseMilliseconds(input));
-    }
-
-    public TimeInterval(long milliseconds)
-    {
-        this.milliseconds = milliseconds;
-    }
-
-    public long milliseconds()
-    {
-        return milliseconds;
-    }
-
-    public long seconds()
-    {
-        return milliseconds / MILLISECOND;
-    }
-
-    /**
-     * Converts the milliseconds back into a string (compatible with {@link #TimeInterval(String)}).
-     * 
-     * @since 5.2.0
-     */
-    public String toDescription()
-    {
-        StringBuilder builder = new StringBuilder();
-
-        String sep = "";
-
-        long remainder = milliseconds;
-
-        for (String key : UNIT_KEYS)
-        {
-            if (remainder == 0)
-                break;
-
-            long value = UNITS.get(key);
-
-            long units = remainder / value;
-
-            if (units > 0)
-            {
-                builder.append(sep);
-                builder.append(units);
-                builder.append(key);
-
-                sep = " ";
-
-                remainder = remainder % value;
-            }
-        }
-
-        return builder.toString();
-    }
-
-    static long parseMilliseconds(String input)
-    {
-        long milliseconds = 0l;
-
-        Matcher matcher = PATTERN.matcher(input);
-
-        matcher.useAnchoringBounds(true);
-
-        // TODO: Notice non matching characters and reject input, including at end
-
-        int lastMatchEnd = -1;
-
-        while (matcher.find())
-        {
-            int start = matcher.start();
-
-            if (lastMatchEnd + 1 < start)
-            {
-                String invalid = input.substring(lastMatchEnd + 1, start);
-                throw new RuntimeException(UtilMessages.invalidTimeIntervalInput(invalid, input));
-            }
-
-            lastMatchEnd = matcher.end();
-
-            long count = Long.parseLong(matcher.group(1));
-            String units = matcher.group(2);
-
-            if (units.length() == 0)
-            {
-                milliseconds += count;
-                continue;
-            }
-
-            Long unitValue = UNITS.get(units);
-
-            if (unitValue == null)
-                throw new RuntimeException(UtilMessages.invalidTimeIntervalUnit(units, input, UNITS.keySet()));
-
-            milliseconds += count * unitValue;
-        }
-
-        if (lastMatchEnd + 1 < input.length())
-        {
-            String invalid = input.substring(lastMatchEnd + 1);
-            throw new RuntimeException(UtilMessages.invalidTimeIntervalInput(invalid, input));
-        }
-
-        return milliseconds;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("TimeInterval[%d ms]", milliseconds);
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == null)
-            return false;
-
-        if (obj instanceof TimeInterval)
-        {
-            TimeInterval tp = (TimeInterval) obj;
-
-            return milliseconds == tp.milliseconds;
-        }
-
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/UnknownValueException.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/UnknownValueException.java
deleted file mode 100644
index 470b611..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/UnknownValueException.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-
-/**
- * Special exception used when a value (typically from a map) is referenced that does not exist. Uses a
- * {@link AvailableValues} object
- * to track what the known values are.
- * 
- * @since 5.2.0
- */
-public class UnknownValueException extends TapestryException
-{
-    private final AvailableValues availableValues;
-
-    public UnknownValueException(String message, AvailableValues availableValues)
-    {
-        this(message, null, null, availableValues);
-    }
-
-    public UnknownValueException(String message, Object location, Throwable cause, AvailableValues availableValues)
-    {
-        super(message, location, cause);
-
-        this.availableValues = availableValues;
-    }
-
-    public AvailableValues getAvailableValues()
-    {
-        return availableValues;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/UtilMessages.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/UtilMessages.java
deleted file mode 100644
index c3af135..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/ioc/util/UtilMessages.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-
-import java.util.Collection;
-
-/**
- * Static messages
- */
-class UtilMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(UtilMessages.class);
-
-    private UtilMessages()
-    {
-    }
-
-    static String noStrategyAdapter(Class inputType, Class adapterType, Collection<String> catalog)
-    {
-        return MESSAGES.format("no-strategy-adapter", inputType.getName(), adapterType.getName(),
-                               InternalUtils.joinSorted(catalog));
-    }
-
-    static String stackIsEmpty()
-    {
-        return MESSAGES.get("stack-is-empty");
-    }
-
-    static String invalidTimeIntervalUnit(String unit, String input, Collection<String> units)
-    {
-        return MESSAGES.format("invalid-time-interval-unit", unit, input, InternalUtils.joinSorted(units));
-    }
-
-    static String invalidTimeIntervalInput(String invalid, String input)
-    {
-        return MESSAGES.format("invalid-time-interval-input", invalid, input);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/services/UpdateListener.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/services/UpdateListener.java
deleted file mode 100644
index ad0633e..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/services/UpdateListener.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-/**
- * Interface for objects which can periodically check for updates.
- * <p>
- * Note that this interface has moved from module tapestry-core to tapestry-ioc, but has kept the same package (for
- * backwards compatibility reasons).
- * 
- * @see org.apache.tapestry5.services.UpdateListenerHub
- * @since 5.1.0.0
- */
-public interface UpdateListener
-{
-    /**
-     * Invoked to force the receiver to check for updates to whatever underlying resources it makes use of.
-     */
-    void checkForUpdates();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/services/UpdateListenerHub.java b/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/services/UpdateListenerHub.java
deleted file mode 100644
index a0f5dd7..0000000
--- a/maint-5-2/tapestry-ioc/src/main/java/org/apache/tapestry5/services/UpdateListenerHub.java
+++ /dev/null
@@ -1,49 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.services;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-
-/**
- * Manages a set of {@link org.apache.tapestry5.services.UpdateListener}s. Periodically (say, every request during
- * development, or every minute or so during production), request processing is locked down so that only a single thread
- * is active, and the active thread invokes {@link #fireCheckForUpdates()}. Various services that are dependent on
- * external resource files (such as classes or template files) can check to see if any file they've used has changed. If
- * so, the service can invalidate its internal cache, or notify other services (typically via
- * {@link org.apache.tapestry5.services.InvalidationListener} that they should do the same.
- * <p>
- * Note that this interface has moved from module tapestry-core to tapestry-ioc, but has kept the same package (for
- * backwards compatibility reasons).
- * <p>
- * A <em>weak reference</em> to the listener is kept; this ensures that registering as a listener will not prevent a
- * listener instance from being reclaimed by the garbage collector (this is useful as proxies created by
- * {@link ObjectLocator#proxy(Class, Class)} may register as listeners, but still be ephemeral).
- * 
- * @since 5.1.0.0
- */
-public interface UpdateListenerHub
-{
-    /**
-     * Adds a listener.
-     */
-    void addUpdateListener(UpdateListener listener);
-
-    /**
-     * Invoked periodically to allow services to check if underlying state has changed. For example, a template file may
-     * have changed. Listeners will typically notify applicable listeners of their own (they usually implement
-     * {@link org.apache.tapestry5.services.InvalidationEventHub}) when such a change occurs.
-     */
-    void fireCheckForUpdates();
-}
diff --git a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties b/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties
deleted file mode 100644
index 6116a33..0000000
--- a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/IOCStrings.properties
+++ /dev/null
@@ -1,83 +0,0 @@
- # Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-build-method-conflict=Service %s (defined by %s) conflicts with previously defined service defined by %s.
-build-method-wrong-return-type=Method %s is named like a service builder method, \
- but the return type (%s) is not acceptable (try an interface).
-decorator-method-wrong-return-type=Method %s is named like a service decorator method, \
-  but the return type (%s) is not acceptable (try Object).
-builder-locked=The Registry Builder has created the Registry, further operations are not allowed.
-service-wrong-interface=Service '%s' implements interface %s, which is not compatible with the requested type %s.
-instantiate-builder-error=Unable to instantiate class %s as a module: %s
-builder-method-error=Error invoking service builder method %s (for service '%s'): %s
-constructor-error=Error invoking constructor %s (for service '%s'): %s
-builder-method-returned-null=Builder method %s (for service '%s') returned null.
-no-service-matches-type=No service implements the interface %s.
-many-service-matches=Service interface %s is matched by %d services: %s.  \
-  Automatic dependency resolution requires that exactly one service implement the interface.
-no-services-match-marker=Unable to locate any service assignable to type %s with marker annotation(s) %s.
-many-services-match-marker=Unable to locate a single service assignable to type %s with marker annotation(s) %s.  \
- All of the following services match: %s.
-unknown-scope=Unknown service scope '%s'.
-decorator-returned-wrong-type=Decorator method %s (invoked for service '%s') returned %s, \
-  which is not assignable to the %s service interface.
-creating-service=Creating service '%s'.
-invoking-method=Invoking method %s.
-invoking-constructor=Invoking constructor %s.
-recursive-service-build=Construction of service '%s' has failed due to recursion: \
-  the service depends on itself in some way. \
-  Please check %s for references to another service that is itself dependent on service '%1$s'.
-contribution-wrong-return-type=Method %s is named like a service contributor method, \
-  but the return type (%s) is not appropriate (it should be void). The return value will be ignored.
-too-many-contribution-parameters=Service contribution method %s contains more than one parameter of type Configuration, \
-  OrderedConfiguration, or MappedConfiguration. Exactly one such parameter is required for a service contribution method.
-too-many-configuration-parameters=Service builder method %s contains more than one parameter of type \
-  Collection, List, or Map. Parameters of this type are the way in which service configuration values, \
-  collected from service contributor methods, are provided to the service builder. \
-  Services are only allowed a single configuration
-no-contribution-parameter=Service contribution method %s does not contain a parameter of type \
-  Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method \
-  make contributions into the service's configuration.
-contribution-method-error=Error invoking service contribution method %s: %s
-contribution-was-null=Service contribution (to service '%s') was null.
-contribution-key-was-null=Key for service contribution (to service '%s') was null.
-contribution-wrong-value-type=Service contribution (to service '%s') was an instance of %s, \
-  which is not assignable to the configuration type %s.
-contribution-wrong-key-type=Key for service contribution (to service '%s') was an instance of %s, \
-  but the expected key type was %s.
-contribution-duplicate-key=Service contribution (to service '%s') conflicts with existing contribution (by %s).
-generic-type-not-supported=Generic type '%s' is not supported. Only simple parameterized lists are \
-  supported.
-error-building-service=Error building service proxy for service '%s' (at %s): %s
-no-public-constructors=Module class %s does not contain any public constructors.
-too-many-public-constructors=Module class %s contains more than one public constructor. \
-  The first constructor, %s, is being used. \
-  You should change the class to have only a single public constructor.
-recursive-module-constructor=The constructor for module class %s is recursive: it depends on itself in some way. \
-  The constructor, %s, is in some way is triggering a service builder, decorator or contribution method within the class.
-constructed-configuration=Constructed configuration: %s
-service-construction-failed=Construction of service %s failed: %s
-service-id-conflict=Service id '%s' has already been defined by %s and may not be redefined by %s. \
- You should rename one of the service builder methods.
-no-constructor=Class %s (implementation of service '%s') does not contain any public constructors.
-bind-method-must-be-static=Method %s appears to be a service binder method, but is an instance method, not a static method.
-error-in-bind-method=Error invoking service binder method %s: %s
-no-autobuild-constructor=Class %s does not contain a public constructor needed to autobuild.
-autobuild-constructor-error=Error invoking constructor %s: %s
-overlapping-service-proxy-providers=Setting a new service proxy provider when there's already an existing provider. This may indicate that you have multiple IoC Registries.
-unexpected-service-proxy-provider=Unexpected service proxy provider when clearing the provider. This may indicate that you have multiple IoC Registries.
-no-proxy-provider=Service token for service '%s' can not be converted back into a proxy because no proxy provider has been registered. This may indicate that an IoC Registry has not been started yet.
-no-convention-service-implementation-found=No service implements the interface %s. Please provide the implementation %sImpl or bind the service interface to a service implementation.
-contribution-for-nonexistent-service=Contribution %s is for service '%s', which does not exist.
-contribution-for-unqualified-service=Contribution %s is for service '%s' qualified with marker annotations %s, which does not exist.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/services/ServiceStrings.properties b/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/services/ServiceStrings.properties
deleted file mode 100644
index dbda843..0000000
--- a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/services/ServiceStrings.properties
+++ /dev/null
@@ -1,42 +0,0 @@
-# Copyright 2006, 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-unable-to-add-method=Unable to add method %s to class %s: %s
-unable-to-add-field=Unable to add field %s to class %s: %s
-unable-to-add-constructor=Unable to add constructor to class %s: %s
-unable-to-create-class=Unable to create class %s as subclass of %s: %s
-unable-to-lookup-class=Unable to lookup class %s: %s
-unable-to-write-class=Unable to create class %s: %s
-duplicate-method-in-class=Attempt to redefine method %s of class %s.
-logging-interceptor=<Logging interceptor for %s(%s)>
-thread-cleanup-error=Error invoking listener %s: %s
-no-such-property=Class %s does not contain a property named '%s'.
-read-not-supported=Class %s does not provide an accessor ('getter') method for property '%s'.
-write-not-supported=Class %s does not provide an mutator ('setter') method for property '%s'.
-read-failure=Error reading property '%s' of %s: %s
-write-failure=Error updating property '%s' of %s: %s
-property-type-mismatch=Property '%s' of class %s is of type %s, which is not assignable to type %s.
-extra-filter-method=Method %s of filter interface %s does not have a matching method in %s.
-unmatched-service-method=Method %s has no match in filter interface %s.
-unknown-object-proxyProvider=Object proxyProvider '%s' does not exist (in object reference '%s').
-shutdown-listener-error=Error notifying %s of registry shutdown: %s
-recursive-symbol=Symbol '%s' is defined in terms of itself (%s).
-symbol-undefined=Symbol '%s' is not defined.
-symbol-undefined-in-path=Symbol '%s' is not defined (in %s). 
-missing-symbol-close-brace=Input string '%s' is missing a symbol closing brace.
-missing-symbol-close-brace-in-path=Input string '%s' is missing a symbol closing brace (in %s).
-failed-coercion=Coercion of %s to type %s (via %s) failed: %s
-registry-shutdown=Proxy for service %s is no longer active because the IOC Registry has been shut down.
-service-build-failure=Exception constructing service '%s': %s
-startup-failure=An exception occurred during startup: %s
diff --git a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/util/UtilStrings.properties b/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/util/UtilStrings.properties
deleted file mode 100644
index 174917b..0000000
--- a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/internal/util/UtilStrings.properties
+++ /dev/null
@@ -1,20 +0,0 @@
-# Copyright 2006, 2008, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-dependency-cycle=Unable to add '%s' as a dependency of '%s', as that forms a dependency cycle ('%<s' depends on itself via '%1$s'). The dependency has been ignored.
-duplicate-orderer=Could not add object with duplicate id '%s'.  The duplicate object has been ignored.
-constraint-format=Could not parse ordering constraint '%s' (for '%s'). The constraint has been ignored.
-one-shot-lock=Method %s may no longer be invoked.
-bad-marker-annotation=Marker annotation class %s is not valid because it is not visible at runtime. Add a @Retention(RetentionPolicy.RUNTIME) to the class.
-inject-resource-failure=Unable to determine resource value to inject into field '%s' (of type %s).
diff --git a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/util/UtilStrings.properties b/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/util/UtilStrings.properties
deleted file mode 100644
index 04fef1c..0000000
--- a/maint-5-2/tapestry-ioc/src/main/resources/org/apache/tapestry5/ioc/util/UtilStrings.properties
+++ /dev/null
@@ -1,18 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-no-strategy-adapter=No adapter from type %s to type %s is available (registered types are %s).
-stack-is-empty=Stack is empty.
-invalid-time-interval-unit=Unknown time interval unit '%s' (in '%s').  Defined units: %s.
-invalid-time-interval-input=Unexpected string '%s' (in time interval '%s').
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/advice.apt b/maint-5-2/tapestry-ioc/src/site/apt/advice.apt
deleted file mode 100644
index 8f8c65b..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/advice.apt
+++ /dev/null
@@ -1,148 +0,0 @@
-  ---
-  Service Advisors
-  ---
-
-Service Advisors
-
-  Service advice represents a powerful meta-programming facility availble to services. In fact, it is a kind
-  of limited Aspect Oriented Programming.
-
-  Service advice allows you to intercept method invocations on your services; you have the abillity
-  to see what methods get invoked, what the parameters are. You can let the normal code do it work, and then
-  inspect or event adjust the return value, or any thrown exceptions.  And you can do this all in normal Java code.
-
-  A common example of method-level service advice is to log method entry and exit, complete with
-  parameter values, return values, and thrown exceptions. Other approaches include security checks, transaction
-  management, and other broadly spanning concerns.
-
-  Let's start with a (contrived) example. Let's say you have an existing set of services that have methods
-  that sometimes return null, and you want them to return an empty string instead because you are getting some NullPointerExceptions.
-
-  You could track down the implementation of each service and fix the logic that provides a return value ...
-  or you could advise the methods:
-
-----
-  @Match("*")
-  public static void adviseNonNull(MethodAdviceReciever receiver)
-  {
-    MethodAdvice advice = new MethodAdvice()
-    {
-      void advise(Invocation invocation)
-      {
-        invocation.proceed();
-
-        if (invocation.getResultType().equals(String.class) && invocation.getResult().equals(null))
-          invocation.overrideResult("");
-      }
-    };
-
-    receiver.adviseAllMethods(advice);
-  };
-----
-
-  This is a method that is placed in a module class. Note the terminology: <advise> is the verb ("to advise a method")
-  and <advice> is the noun ("with this advice"). The
-  {{{../apidocs/org/apache/tapestry5/ioc/MethodAdviceReceiver.html}MethodAdviceReceiver}}
-  is a wrapper around the service being advised: you can add advice to some or all methods of the service, and also
-  obtain the interface of the service.  It is automatically passed into service advisor methods.
-
-  The {{{injection.html}guide to injection}} describes what can be injected into a service advisor method.
-
-  Service advisor methods {must} have a parameter of type MethodAdviceReciever.
-
-  A service will often be advised multiple times; any method may have any number of advice objects applied to it.
-  Some methods may not get any advice. All of this is acceptible.
-
-  Service advisor methods are always void methods (this is different than {{{decorator.html}service decorator methods}}).
-
-  The {{{../apidocs/org/apache/tapestry5/ioc/annotations/Match.html}@Match}}
-  annotation indicates that this advice applies to all services (both your own, and those defined by Tapestry).
-  You will want to narrow down which services are actually targetted in most cases.
-
-  Note that some services, especially those built-in to Tapestry IoC, are marked as
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/PreventServiceDecoration.html}not subject to decoration}},
-  this applies to service advice as well as service decoration.
-
-  The {{{../apidocs/org/apache/tapestry5/ioc/MethodAdvice.html}MethodAdvice}} interface is very simple; it receives an
-  {{{../apidocs/org/apache/tapestry5/ioc/Invocation.html}Invocation}} representing a method call. Invocation
-  has methods for inspecting the type and value of the parameters, and for overriding the values of the parameters.
-
-  The call to proceed() allows the invocation to continue; that is, the original method is invoked.  If the method has been advised
-  multiple times, the call to proceed() may chain into the next MethodAdvice object.  In any case,
-  after invoking proceed(), you may inspect
-  and override the result (the return value).
-
-  Advice is pretty efficient, but it would still be better to apply it only to methods that make sense.
-  We can improve our service advisor method to only advise methods that return String:
-
-----
-  @Match("*")
-  public static void adviseNonNull(MethodAdviceReciever receiver)
-  {
-    MethodAdvice advice = new MethodAdvice()
-    {
-      void advise(Invocation invocation)
-      {
-        invocation.proceed();
-
-        if (invocation.getResult().equals(null))
-          invocation.overrideResult("");
-      }
-    };
-
-    for (Method m : receiver.getServiceInterface().getMethods())
-    {
-      if (m.getReturnType().equals(String.class))
-        reciever.adviseMethod(m, advice);
-    }
-  };
-----
-
-Built-in Advice
-
-Tapestry includes two built-in advisor services.
-
-* Logging Advice
-
-  Logging advice is built into Tapestry.  You can apply logging advice to your services very easily:
-
----
-  @Match("*")
-  public static void adviseLogging(LoggingAdvisor loggingAdvisor, Logger logger, MethodAdviceReciever reciever)
-  {
-    loggingAdvisor.addLoggingAdvice(logger, reciever);
-  }
----
-
-  {{{../apidocs/org/apache/tapestry5/ioc/services/LoggingAdvisor.html}LoggingAdvisor}} is
-  a built-in Tapestry IoC service.  This demonstrates how services can be injected into
-  service advisor methods.   The Logger parameter is the logger for the service being advised.
-
-* Lazy Advice
-
-  {{{../apidocs/org/apache/tapestry5/ioc/services/LazyAdvisor.html}LazyAdvisor}}
-  makes method invocations lazy: methods that return an interface (rather than a value)
-  will not execute immediately; instead, the method invocation is postponed
-  until a method of the return value is invoked.
-
-Matching And Orderering
-
-  Each service advice method gets a unique id, obtained by stripping the "advise" prefix from the method name.
-  Advice ids must be unique across all modules.
-
-  If the @Match annotation is omitted, the advice will match against a service with the same id.
-
-  In many cases, the order in which the advice is given is very important; for example, you may want
-  logging first, then transaction management, then security checks.  The
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Order.html}@Order}} annotation allows you
-  to explictly set the order.  
-
-Decorators and Advice
-
-  {{{decorator.html}Service decorators}} are another way to achieve the same thing; service advisors are a more
-  recent addition, added in Tapestry 5.1.
-
-  It is not recommended that you mix advice and decoration.  If you do, decoration take precendence; all decorators
-  will be in effect before any advice (internally, they are two seperate steps, with advice being processed and the
-  result of that used by the decorators).
-
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/autoload.apt b/maint-5-2/tapestry-ioc/src/site/apt/autoload.apt
deleted file mode 100644
index ee3a8d0..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/autoload.apt
+++ /dev/null
@@ -1,94 +0,0 @@
- ---
- Autoloading Modules
- ---
-
-Autoloading Modules
-
-  An important part of Tapestry IoC is the autoloading of modules; this allows new features to be added to an application
-  just by "dropping in" a JAR that contains a module: the services in the module are automatically integrated
-  into the overall service registry, along with any configuration or other supporting code and resources.
-
-  An example of this is the {{{../tapestry-upload/index.html}tapestry-upload}} library, which introduces
-  an Upload component, along with supporting services related to handling file upload requests.
-
-  The core Tapestry IoC module is automatically included.  When using the Tapestry web framework, the core Tapestry module
-  is also included, as is an optional per-application module, plus any autoloaded modules.
-
-  Module autoloading isn't 100% free ... you must tell Tapestry IoC where the modules to load are located, which
-  can be done via a Manifest file entry, or via an annotation.
-
-JAR Manifest Entries
-
-  When setting up the registry, Tapestry can automatically locate modules packaged into JARs.
-  It does this by searching for a particular global manifest entry.
-
-  The manifest entry name is "Tapestry-Module-Classes".  The value is a comma-separated list
-  of fully qualified class names of module classes (this allows a single
-  JAR to contain multiple, related modules).  Whitespace is ignored.
-
-  Example:
-
-+-----------------------------------------------------------------------------------+
-Manifest-Version: 1.0
-Tapestry-Module-Classes: org.example.mylib.LibModule, org.example.mylib.internal.InternalModule
-+-----------------------------------------------------------------------------------+
-
-  If you are using Maven 2, then getting these entries into your JAR's manifest
-  is as simple as some configuration in your pom.xml:
-
-+-----------------------------------------------------------------------------------+
-<project>
-  . . .
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <configuration>
-          <archive>
-            <manifestEntries>
-              <Tapestry-Module-Classes>org.example.mylib.LibModule,
-                org.example.mylib.internal.InternalModule</Tapestry-Module-Classes>
-            </manifestEntries>
-          </archive>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-  . . .
-</project>
-+-----------------------------------------------------------------------------------+
-
-
-  More details are provided in the
-  {{{http://maven.apache.org/guides/mini/guide-manifest.html}Maven Manifest Guide}}.
-
-SubModule Annotation
-
-  Often, you will have several different modules working together that should all be loaded
-  as a unit.
-
-  One approach is to update the module ids into the manifest, as shown in the previous extension.
-
-  This can become tedious, and somewhat brittle in the face of refactorings (such as renaming of classes
-  or packages).
-
-  A better alternative is the
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/SubModule.html}@SubModule annotation}}.
-
-  The value for this annotation is a list of <additional> classes to be treated as module classes,
-  exactly as if they were identified in the manifest. Despite the name, there is no hierarchy of modules in
-  Tapestry IoC.
-
-  Example:
-
-+----+
-@SubModule(
-{ InternalTransformModule.class })
-public final class InternalModule
-{
-  . . .
-+----+
-
-  In general, your should only need to identify a single module in the JAR manifest, and make use of
-  @SubModule to pull in any additional module classes.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/case.apt b/maint-5-2/tapestry-ioc/src/site/apt/case.apt
deleted file mode 100644
index f5b2833..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/case.apt
+++ /dev/null
@@ -1,25 +0,0 @@
- ----
- Case Insensitivity
- ----
- 
-Case Insensitivity
-
-  Ever get frustrated because you typed the right thing with the wrong case and your system blew up?  We do.
-  
-  Tapestry IOC attempts to be case insensitive for all the main constructs:
-   
-  * Service ids.
-  
-  * Object provider prefixes.
-  
-  * Message keys.
-  
-  []
-  
-  Thus, <<<getService("Baz", Baz.class)>>> is preferred, but <<<getService("BAZ", Baz.class)>>> (or any variation thereof) will work just exactly as well.  This also extends to other naming conventions,
-  such as <<<contributeFoo>>> methods. It also applies to values inside annotations.
-  
-  Just case is ignored --
-  other punctuation, as well as whitespace, must exactly match.
-  
-  Under the covers, this is supported by the {{{../apidocs/org/apache/tapestry5/ioc/CaseInsensitiveMap.html}CaseInsensitiveMap}} class.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/coerce.apt b/maint-5-2/tapestry-ioc/src/site/apt/coerce.apt
deleted file mode 100644
index 7124bcf..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/coerce.apt
+++ /dev/null
@@ -1,81 +0,0 @@
- ----
- Type Coercion
- ----
- 
-Type Coercion
-
-  Tapestry frequently must coerce objects from one type to another. By coercion, we mean to convert an object of some type into a new object
-  of a different type with similar content: a common example is coercing a string into an integer or a double.
-  
-  Although these types of coercions happens more inside
-  tapestry-core (inlcuding coercions of {{{../tapestry-core/guide/coercion.html}component parameters}}), this
-  may also happen inside tapestry-ioc, such as when injecting a value, rather than a service, into a builder method.
-  
-  Like everything else in Tapestry, type coercions are extensible.  At the root is the
-  {{{../apidocs/org/apache/tapestry5/ioc/services/TypeCoercer.html}TypeCoercer}} service. Its configuration consists
-  of a number of 
-  {{{../apidocs/org/apache/tapestry5/ioc/services/CoercionTuple.html}CoercionTuple}}s.  Each tuple defines how to coerce from one type to another.
-  The initial set of coercions is focused primarily on coercions between different numeric types:
-  
-[images/type-coercer.png] Default Type Coercions  
-
-  There's a few special coercions related to null there; Object --\> List wraps a lone object as a singleton list, we then need
-  null --\> List to ensure that null stays null (rather than a singleton list whose lone element is a null). 
-  
-  Tapestry can <interpolate> necessary coercions.  For example, say it is necessary to coerce a StringBuffer to an Integer; the
-  TypeCoercer will chain together a series of coercions:
-  
-   * Object --\> String
-   
-   * String --\> Long
-   
-   * Long --\> Integer
-   
-   []
-
-Coercing from null
-
-  Coercing from null is special; it is not a spanning search as with the other types.
-  Either there is a specific coercion from null to the desired type, or no coercion
-  takes places (and the coerced value is null).
-
-  The only built-in null coercion is from null to boolean (which is always false).
-   
-Contributing new Coercions
-
-  TypeCoercer is extensible, you may add new coercions as desired.  For example, let's say you have a Money type that represents
-  an amount of some currency, and you want to be able to convert from  BigDecimal to Money.  Further, let's assume that
-  Money has a constructor that accepts a BigDecimal as its parameter.  We'll use a little Tapestry IOC configuration jujitsu to
-  inform the TypeCoercer about this coercion.
-  
-+---+    
-   public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration)
-   {
-     Coercion<BigDecimal, Money> coercion = new Coercion<BigDecimal, Money>()
-     {
-       public Money coerce(BigDecimal input)
-       {
-         return new Money(input);
-       }
-     };
-     
-     configuration.add(new CoercionTuple<BigDecimal, Money>(BigDecimal.class, Money.class, coercion));     
-   }
-+---+  
-
-  Further, since TypeCoercer knows how to convert Double to BigDecimal, or even Integer (to Long to Double) to BigDecimal, all of those coercions would
-  work as well.
-  
-  When creating a coercion from null, use Void.class as the source type.  For example, the builtin coercion from null to Boolean is implemented as:
-  
-+----+
-  configuration.add(new CoercionTuple(void.class, Boolean.class,
-        new Coercion<Void, Boolean>()
-        {
-            public Boolean coerce(Void input)
-            {
-                return false;
-            }
-        }));
-+---+          
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/command.apt b/maint-5-2/tapestry-ioc/src/site/apt/command.apt
deleted file mode 100644
index f4b4cd8..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/command.apt
+++ /dev/null
@@ -1,74 +0,0 @@
- ----
- Chain of Command
- ----
- 
-Chain of Command
- 
-  One of the most useful of the Gang Of Four Design Patterns is the <<command>> pattern.
-
-  With the command pattern, a complex process is broken down into many individual steps.  The
-  steps are the <commands> in the command pattern.  A key part of this is that the commands
-  are expected to implement some common interface. The commands are carefully arrainged into
-  a specific order.
-
-  The process operates by working down the list of commands. Each command is given a chance
-  to operate. A command can terminate the process either by throwing an exception, or by
-  returning true.
-  
-  The return type of the command method does not have to be boolean:  For object types,
-  any non-null value short-circuits the process. For numeric type, any non-zero value.
-  For void methods, only throwing an exception will short circuit the process.
-  
-  Often, the command interface consists of a single method. When the command interface
-  has multiple methods, each can be thought of as its own chain.
-  
-  This is a useful pattern because it makes it very easy to <extend> a given process,
-  simply by providing new commands and specifying where they fit into the overall
-  process. Most often chain of command is combined with an ordered 
-  {{{configuration.html}configuration}} to define what the list of commands are (and in what
-  order they should execute).
-  
-ChainBuilder Service
-
-  Because this pattern is used so often inside Tapestry, a built-in service exists
-  to create implementations of the pattern as needed.  The
-  {{{../apidocs/org/apache/tapestry5/ioc/services/ChainBuilder.html}ChainBuilder}}
-  service takes care of all the work:
-  
-+----+
-public interface ChainBuilder
-{
-  <T> T build(Class<T> commandInterface, List<T> commands);
-}
-+----+
-
-  All that generics parameterization just ensures that the command interface matches
-  the items in the list, and confirms that a single instance of the command interface
-  will be returned.
-
-  Invoking this method returns an object that encapsulates the chain of command for a
-  particular interface and a particular list of commands implementing that interface.  
-  
-  This can be used inside a service builder method.  Nothing says a service builder method
-  just has to  instantiate a class; it is only required to return an appropriate object.
-  We can just let the ChainBuilder service create that object.
-  
-+----+
-  public static MyChainService build(List<MyChainService> commands,
-    @InjectService("ChainBuilder")
-    ChainBuilder chainBuilder)
-  {
-     return chainBuilder.build(MyChainService.class, commands);
-  }
-+----+
-
-  Here, the behavior of the MyChainService is defined by its configuration: an ordered
-  list of MyChainService commands that are contributed by one or more modules.
-  
-  Internally, the ChainBuilder creates a new class that implements the service interface.
-  The list of commands is converted into an array, which is used inside the service implementation
-  (for maximum efficiency).  Therefore, changing the list after creating the chain
-  instance will not affect the chain instance's behavior.
-  
-  ChainBuilder will reuse the fabricated class for any number of chains of the same
-  command interface.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/configuration.apt b/maint-5-2/tapestry-ioc/src/site/apt/configuration.apt
deleted file mode 100644
index 0e7856a..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/configuration.apt
+++ /dev/null
@@ -1,329 +0,0 @@
- ----
- Tapestry IoC Configurations
- ----
- 
-Tapestry IoC Configurations
-
-  One of the key concepts on Tapestry IoC is <distributed configuration>. This is a
-  concept borrowed from the Eclipse Plugin API and evidenced in 
-  Apache HiveMind prior to Tapestry 5 IoC.
-  
-  So ... nice term, what does it mean?
-  
-  Distributed configuration is the key feature of Tapestry IoC that supports <extensibility>
-  and <modularity>.
-  
-  The distributed part refers to the fact that <any module> may make <contributions> to 
-  any service's configuration.
-  
-  This seems esoteric, but is quite handy, and is best explained by example.
-  
-  Say you are building a service that, say, maps a file extension
-  to an interface called FileServicer. There's a bunch of different services, all implementing the
-  FileServicer interface, across many different modules, each doing something specific for a
-  particular type of file (identified by the file's extension).  
-  
-  A central service uses this configuration to select a particular FileService interface:
-  
-+------+
-  public static FileServiceDispatcher buildFileServicerDispatcher(Map<String,FileServicer> contributions)
-  {
-    return new FileServiceDispatcherImpl(contributions);
-  } 
-+------+
-
-  In order to provide a value for the contribution parameter, Tapestry will <collect> contributions
-  from service contribution methods. It will ensure that the keys and values match the generic
-  types shown (String for the key, FileServicer for the value). The map will be assembled and passed into
-  the service builder method, and from there, into the FileServiceDispatcherImpl constructor.
-  
-  So where do the values come from?  Service contributor methods, methods that start with
-  "contribute":
-  
-+------+
-  public static void contributeFileServicerDispatcher(MappedConfiguration<String,FileServicer> configuration)
-  {
-    configuration.add("txt", new TextFileServicer());
-    configuration.add("pdf", new PDFFileServicer());
-  }  
-+------+
-
-  Like service builder and service decorator methods, we can inject services if we like:
-  
-+------+
-  public static void contributeFileServicerDispatcher(MappedConfiguration<String,FileServicer> configuration,
-  
-    @InjectService("TextFileServicer") FileServicer textFileServicer,
-    
-    @InjectService("PDFFileServicer") FileServicer pdfFileServicer,
-  {
-    configuration.add("txt", textFileServicer);
-    configuration.add("pdf", pdfFileServicer);
-  }  
-+------+  
-   
-  The <<extensibility>> comes from the fact multiple modules may all contribute to the same
-  service configuration:
-  
-+------+
-  public static void contributeFileServicerDispatcher(MappedConfiguration<String,FileServicer> configuration)
-  {
-    configuration.add("doc", new WordFileServicer());
-    configuration.add("ppt", new PowerPointFileServicer());
-  }  
-+------+
-
-  Now the FileServicerDispatcher builder method gets a Map with at least four entries in it.
-
-  Because Tapestry IoC is highly dynamic (it scans the visible JAR manifest files to identify
-  module classes), the FileServicerDispatcher service may be in one module, and the
-  other contributing modules (such as the one that contributes the Office file services) may be written at 
-  a much later date. With no change to the FileServicerDispatcher service or its module class,
-  the new services "plug into" the overall solution, simply by having their JAR's on runtime classpath. 
-  
-Naming conventions vs. Annotations
-	
-	If you prefer annotations over naming conventions you can use the {{{../apidocs/org/apache/tapestry5/ioc/annotations/Contribute.html}@Contribute}}
-	annotation. As of version 5.2 this annotation that may be placed on a contributor method of a module instead of starting the methods name 
-	with "contribute". The value of the annotation is the type of the service to contribute into. 
-	
-	
-  <<Note>>: the primary reasons to use @Contribute and marker annotations is twofold:
-  
-  * There is no longer a linkage between the contribution method name and the service id, which is much more refactoring
-    safe: if you change the service interface name, or the id of the service, your method will still be invoked when
-    using @Contribute.
-    
-  * It makes it much easier for an {{{cookbook/override.html}override}} of the service to get the
-    configuration intended for the original service.
-    
-  [] 	
-	
-	The following example is an alternative for the contribution method above.
-	
-+------+
-  @Contribute(FileServiceDispatcher.class)
-  public static void arbitraryMethodName(MappedConfiguration<String,FileServicer> configuration)
-  {
-    configuration.add("doc", new WordFileServicer());
-    configuration.add("ppt", new PowerPointFileServicer());
-  }  
-+------+
-
-	If you have several implementations of a service interface, you have to disambiguate the services. For this purpose the 
-	marker  annotations should be placed on the contributor method.
-	
-+------+
-  @Contribute(FileServiceDispatcher.class)
-  @Red @Blue
-  public static void arbitraryMethodName(MappedConfiguration<String,FileServicer> configuration)
-  {
-    configuration.add("doc", new WordFileServicer());
-    configuration.add("ppt", new PowerPointFileServicer());
-  }  
-+------+  
-
-  In this example, the method will only be invoked when constructing a service configuration where
-  the service itself has both the Red and Blue marker annotations.  Tapestry knows which annotations
-  are marker annotations, and which marker annotations apply to the service, via
-  the {{{../apidocs/org/apache/tapestry5/ioc/annotations/Marker.html}@Marker}} annotation on the service implementation.
-
-	If the special {{{../apidocs/org/apache/tapestry5/ioc/annotations/Local.html}@Local}} annotation is present, 
-	then contribution is made only to the configuration of a service being constructed in the same module.
-	
-  It is not impossible that the same contribution method will be invoked to contribute to the configuration
-  of multiple different services.
-
-+------+
-  @Contribute(FileServiceDispatcher.class)
-  @Local
-  public static void arbitraryMethodName(MappedConfiguration<String,FileServicer> configuration)
-  {
-    configuration.add("doc", new WordFileServicer());
-    configuration.add("ppt", new PowerPointFileServicer());
-  }  
-+------+ 
-
-Configuration Types
-
-  There are three different styles of configurations (with matching contributions):
-  
-  * Unordered Collection. Contributions are simply added in and order is not important.
-  
-  * Ordered List.  Contributions are provided as an ordered list. Contributions must
-    establish the order by giving each contributed object a unique id,
-    by establishing forward and backward dependencies between the values.
-    
-  * Map. Contributions provide unique keys and corresponding values.
-  
-  []
-  
-* Unordered Collection
-
-  A service builder method can collect an unordered list of values by defining
-  a parameter of type java.util.Collection.  Further, you should parameterize
-  the type of collection.  Tapestry will identify the parameterized type
-  and ensure that all contributions match.
-  
-  One thing to remember is that the order in which contributions occur
-  is unspecified. There will be a possibly large number modules, each having
-  zero or more methods that contribute into the service.  The order in which these
-  methods are invoked is unknown.
-  
-  For example, here's a kind of Startup service that needs some Runnable
-  objects.  It doesn't care what order the Runnable objects are executed in.
-  
-+------+
-  public static Runnable buildStartup(final Collection<Runnable> configuration)
-  {
-    return new Runnable()
-    {
-      public void run()
-      {
-        for (Runnable contribution : configuration)
-          contribution.run();
-      }
-    };
-  }  
-+------+
-
-  Here we don't even need a separate class for the implementation,
-  we use a inner class for the implementation. The point is, the configuration
-  is provided to the builder method, which passes it along to the implementation
-  of the service.  
-  
-  On the contribution side, a service contribution method sees a 
-  {{{../apidocs/org/apache/tapestry5/ioc/Configuration.html}Configuration}} object:
-  
-+------+
-  public static void contributeStartup(Configuration<Runnable> configuration)
-  {
-    configuration.add(new JMSStartup());
-    configuration.add(new FileSystemStartup());
-  }    
-+------+
-   
-  The Configuration interface defines just a single method:  add().  This is very
-  intentional: the only thing you can do is add new items. If we passed in a Collection,
-  you might be tempted to check it for values, or remove them ... but that flys in the face
-  of the fact that the order of execution of these service contribution methods is 
-  entirely unknown.
-  
-  For readability (if Java any longer supports that concept), we've parameterized the
-  configuration parameter of the method, constraining it to instances of java.lang.Runnable,
-  so as to match the corresponding parameter.  This is optional, but often very helpful.  In any case,
-  attempting to contribute an object that doesn't extend or implement the type (Runnable) will result
-  in a runtime warning (and the value will be ignored).
-  
-  Tapestry supports only this simple form of parameterized types.  Java generics supports a wider
-  form, "wildcards", that Tapestry doesn't understand.
-  
-
-* {Ordered List}
-
-  Ordered lists are much more common. With an ordered list, the contributions are sorted into a
-  proper order before being provided to the service builder method.
-  
-  Again, the order in which service contribution methods are invoked is unknown. Therefore, the order in
-  which objects are added to the configuration is not known. Instead, we enforce an order on the items
-  <after> all the contributions have been added.  As with {{{decorator.html}service decorators}}, we
-  set the order by giving each contributed object a unique id, and identifying (by id) which items
-  must preceded it in the list, and which must follow.
-  
-  So, if we changed our Startup service to require a specific order for startup:
-  
-+------+
-  public static Runnable buildStartup(final List<Runnable> configuration)
-  {
-    return new Runnable()
-    {
-      public void run()
-      {
-        for (Runnable contribution : configuration)
-          contribution.run();
-      }
-    };
-  }  
-+------+  
-
-  Notice that the service builder method is shielded from the details of how the items are
-  ordered. It doesn't have to know about ids and pre- and post-requisites.  By using
-  a parameter type of List, we've triggered Tapestry to collected all the ordering information.
-  
-  For our service contribution methods, we must provide a parameter
-  of type 
-  {{{../apidocs/org/apache/tapestry5/ioc/OrderedConfiguration.html}OrderedConfiguration}}:
- 
-+------+
-  public static void contributeStartup(OrderedConfiguration<Runnable> configuration)
-  {
-    configuration.add("JMS", new JMSStartup());
-    configuration.add("FileSystem", new FileSystemStartup(), "after:CacheSetup");
-  }    
-+------+
-  
-  Often, you don't care about ordering, the first form of the add method is used then.   The ordering algorithm will find a spot for the
-  object (here the JMSStartup instance) based on the constraints of other contributed objects.
-  
-  For the "FileSystem" contribution, a constraint has been specified, indicating
-  that FileSystem should be ordered after some other contribution named "CacheSetup". Any number of such
-  {{{order.html}ordering constraints}} may be specified (the add() method accepts
-  a variable number of arguments).
-  
-  The object passed in may be null; this is valid, and is considered a "join point": points of reference in the
-  list that don't actually have any meaning of their own, but can be used when ordering other elements.
-  <TODO: Show example for chain of command, once that's put together.> 
-  
-  Null values, once ordered,
-  are editted out (the List passed to the service builder method does not include any nulls). Again, they are
-  allowed as placeholders, for the actual contributed objects to organize themselves around.
-  
-  
-* Mapped Configurations
-
-  As discussed in the earlier examples, mapped configurations are also supported.  The keys passed in must
-  be unique.  When conflicts occur, Tapestry will log warnings (identifying the source, in terms of invoked methods, of
-  the conflict), and ignore the conflicting value.
-  
-  Neither the key nor the value may be null.
-  
-  For mapped configurations where the key type is String, a 
-  {{{../apidocs/org/apache/tapestry5/ioc/util/CaseInsensitiveMap.html}CaseInsensitiveMap}}
-  will be  automatically used (and passed to the service builder method), to help ensure that {{{case.html}case insensitivity}} 
-  is automatic and pervasive.
-
-Injecting Classes
-
-  All three configuration interfaces have a second method, addInstance().  This method takes a class, not an instance.
-  The class is instantiated and contributed. If the constructor for the class takes dependencies, those are injected as well.
-
-Injecting Resources
-
-  In addition to injecting services into a contributor method (via
-  the @InjectService and @Inject annotations), 
-  Tapestry will key off of the parameter type to allow
-  other things to be injected.
-  
-  
-  * {{{../apidocs/org/apache/tapestry5/ioc/ObjectLocator.html}ObjectLocator}}:  access to other services visible
-  to the contributing module
-
-  * org.slf4j.Logger: the Logger for the service being contributed to
-  
-  []
-  
-  No annotation is needed for these cases.
-
-Configuration Overrides
-
-  <<New in 5.1>> The OrderedConfiguration and MappedConfiguration interfaces now support overrides.  An override is a replacement
-  for a normally contributed object. An override <must> match a contributed object, and each contributed object may be overidden
-  at most once.
-
-  The new object replaces the original object; alternately, you may override the original object with null.
-
-  This allows you to fine tune configuration values that are contributed from modules that you are using, rather than just those
-  that you write yourself.  It is powerful and a bit dangerous.
-
-  In Tapestry 5.0, services that wanted to support this kind of override behavior had to implement it on an ad-hoc basis,
-  such as ApplicationDefaults overriding FactoryDefaults.  In many cases, that is stil useful.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/basics.apt b/maint-5-2/tapestry-ioc/src/site/apt/cookbook/basics.apt
deleted file mode 100644
index 72868f9..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/basics.apt
+++ /dev/null
@@ -1,145 +0,0 @@
- ----
- Basic Services and Injection
- ----
-
-Basic Services and Injection
-
-  A good part of the basics is convention: what to name your classes, what packages to put them in and so forth.
-
-  In many cases, these conventions are just a little stronger: you may have to do some amount of
-  extra configuration if you choose to go your own way.
-
-Getting Started
-
-  Like anything else, you want to choose a package for your application, such as org.example.myapp.
-  
-  By convention, services go in a package named "services".
-
-  Module classes are suffixed with "Module".
-
-  Thus, you might start with a module class org.example.myapp.services.MyAppModule.
-
-Simple Services
-
-  The simplest services don't have any special configuration or dependencies.  They are defined as services so that
-  they can be shared.
-
-  For example, the {{{../../apidocs/org/apache/tapestry5/ioc/services/PropertyAccess.html}PropertyAccess}} service
-  is used in multiple places around the framework to access properties of objects (its a wrapper around
-  the Java Beans Introspector and a bit of reflection).  This is defined in the
-  {{{../../apidocs/org/apache/tapestry5/ioc/services/TapestryIOCModule.html}TapestryIOCModule}}.
-
-  It's useful to share PropertyAccess, because it does a lot of useful caching internally.
-
-  The PropertyAccess service is defined inside TapestryIOCModule's bind() method:
-
-+----+
-  public static void bind(ServiceBinder binder)
-  {
-    . . .
-    binder.bind(PropertyAccess.class, PropertyAccessImpl.class);
-    binder.bind(ExceptionAnalyzer.class, ExceptionAnalyzerImpl.class);
-    . . .
-  }
-+----+
-  
-  This example includes {{{../../apidocs/org/apache/tapestry5/ioc/services/ExceptionAnalyzer.html}ExceptionAnalyzer}},
-  because it has a dependency on PropertyAccess:
-
-+----+
-public class ExceptionAnalyzerImpl implements ExceptionAnalyzer
-{
-    private final PropertyAccess propertyAccess;
-
-    public ExceptionAnalyzerImpl(PropertyAccess propertyAccess)
-    {
-        this.propertyAccess = propertyAccess;
-    }
-
-    . . .
-}
-+----+
-
-  And that's the essence of Tapestry IoC right there; the bind() plus the constructor is <all> that's necessary.
-
-Service Disambiguation
-
-  In the previous example, we relied on the fact that only a single service implements the PropertyAccess interface.
-  Had more than one done so, Tapestry would have thrown an exception when the ExceptionAnalyzer service was realized (it isn't
-  until a service is realized that dependencies are resolved).
-
-  That's normally ok; in many situations, it makes sense that only a single service implement a particular interface.
-
-  But there are often exceptions to the rule, and in those cases, we must provide more information to 
-  Tapestry when a service is defined, and when it is injected, in order to disambiguate -- to inform Tapestry which
-  particular version of service to inject.
-
-  This example demonstrates a number of ideas that we haven't discussed so far, so try not to get
-  too distracted by some of the details.  One of the main concepts introduced here is <service builder methods>.  
-  These are methods, of a Tapestry IoC Module class, that act as an alternate way
-  to define a service.  You often used a service builder method if you are doing more than simply instantiating a class.
-
-  A service builder method is a method of a Module, prefixed with the word "build".  This defines a service, and
-  dependency injection occurs on the parameters of the service builder method.
-
-  The Tapestry web framework includes the concept of an "asset": a resource that may be inside a web application, or packaged
-  inside a JAR.  Assets are represented as the type {{{../../apidcos/org/apache/tapestry5/Asset.html}Asset}}.
-
-  In fact, there are different implementations of this class: one for context resources (part of the web application), the other
-  for classpath resources (packaged inside a JAR).  The Asset instances are created via
-  {{{../../apidocs/org/apache/tapesty/services/AssetFactory.html}AssetFactory}} services.
-
-  Tapestry defines two such services, in the
-  {{{../../apidocs/org/apache/tapestry5/services/TapestryModule.html}TapestryModule}}.
-
-+---+
-  @Marker(ClasspathProvider.class)
-  public AssetFactory buildClasspathAssetFactory(ResourceCache resourceCache,
-
-  ClasspathAssetAliasManager aliasManager)
-  {
-    ClasspathAssetFactory factory = new ClasspathAssetFactory(resourceCache, aliasManager);
-
-    resourceCache.addInvalidationListener(factory);
-
-    return factory;
-  }
-
-  @Marker(ContextProvider.class)
-  public AssetFactory buildContextAssetFactory(ApplicationGlobals globals)
-  {
-    return new ContextAssetFactory(request, globals.getContext());
-  }
-+---+
-
-  Service builder methods are used here for two purposes:  For the ClasspathAssetFactory, we are registering the new service as a
-  listener of events from another service.  For the ContextAssetFactory, we are extracting a value from an injected service and passing
-  <that> to the constructor.
-
-  What's important is that the services are differentiated not just in terms of their id (which is defined by the name of the method,
-  after stripping off "build"), but in terms of their <marker annotation>.
-
-  The {{{../../apidocs/org/apache/tapestry5/ioc/annotations/Marker.html}Marker}} annotation provides the discriminator.  When
-  the service type is supplemented with the ClasspathProvider annotation, the ClasspathAssetFactory is injected.  When the
-  service type is supplemented with the ContextProvider annotation, the ContextAssetFactory is injected.
-
-  Here's an example.  Again, we've jumped the gun with this <service contributor method> (we'll get into the why and how of these later), but
-  you can see how Tapestry is figuring out which service to inject based on the presence of those annotations:
-
-+----+
-  public void contributeAssetSource(MappedConfiguration<String, AssetFactory> configuration,
-      @ContextProvider
-      AssetFactory contextAssetFactory,
-
-      @ClasspathProvider
-      AssetFactory classpathAssetFactory)
-  {
-    configuration.add("context", contextAssetFactory);
-    configuration.add("classpath", classpathAssetFactory);
-  }
-+---+
-
-  This is far from the final word on injection and disambiguation; we'll be coming back to this concept repeatedly.  And in later chapters
-  of the cookbook, we'll also go into more detail about the many other concepts present in this example.  The important part is
-  that Tapestry <primarily> works off the parameter type (at the point of injection), but when that is insufficient (you'll know ... there will be an error) you
-  can provide additional information, in the form of annotations, to straighten things out.
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/index.apt b/maint-5-2/tapestry-ioc/src/site/apt/cookbook/index.apt
deleted file mode 100644
index 094cf72..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/index.apt
+++ /dev/null
@@ -1,20 +0,0 @@
- ----
- Tapestry IoC Cookbook
- ----
-
-Tapestry IoC Cookbook
-
-  Tapestry IoC, though designed specifically for the needs of the Tapestry web framework,  may also be employed as a stand-alone IoC container, separate
-  from the rest of Tapestry.
-
-  Tapestry IoC is a sophisticated tool that takes some experience to use properly.
-
-  The existing documentation is factually correct, but is designed more as a reference, rather than giving the big picture.  In the Cookbook,
-  we'll try to show how Tapestry IoC is really used, and build up towards that big picture.
-
-  The cookbook will show a bit more about how to use Tapestry IoC, using real examples from the Tapestry code base (both the tapestry-ioc
-  and tapestry-core modules).
-
-  A word of caution: several of the examples have been taken from Tapestry's <internal> code base.  Tapestry internals are
-  private, subject to change at any time, so be aware that if you go peeking at the internal source code, it may have
-  changed since the corresponding documentation was written.  
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/override.apt b/maint-5-2/tapestry-ioc/src/site/apt/cookbook/override.apt
deleted file mode 100644
index 8e30843..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/override.apt
+++ /dev/null
@@ -1,96 +0,0 @@
- ----
- Overriding Services
- ----
-
-Overriding Services
-
-  Tapestry is designed to be easy to customize, and the IoC container is key to that customizability.
-
-  Part of Tapestry's core functionality is resolving injected objects; that is, when Tapestry is building an object
-  or service and sees a constructor parameter or a field, what value does it plug in?  Most of the time,
-  the injected object is a service defined elsewhere within the container (and, in fact, that actual instance
-  will be a proxy to the service, which may not have been fully realized yet).
-
-  However, there are cases where you might want to override how Tapestry operates in some specific way.
-
-  The strategy used to determine what object gets injected where is
-  {{{../injection.html}defined inside Tapestry IoC itself}}; thus we can take advantage of
-  several features of the IoC container in order to take control over specific injections.
-
-Overriding Services
-
-  In most cases, services are injected by matching just type; there no @InjectService annotation,
-  just a method or constructor parameter whose type matches the service's interface.
-
-  In this case, it is very easy to supply your own alternate implementation of a service.
-
-  <<AppModule.java>> (partial)
-
-----
-  public static void contributeServiceOverride(MappedConfiguration<Class,Object> configuration)
-  {
-    configuration.add(SomeServiceType.class, new SomeServiceType() { . . . });
-  }
-----
-
-  In this example, the service to be overriden is provided as an  inner class implementing the interface.
-
-  Sometimes you'll want to define the override as a service of its own: this is useful if you want
-  to inject a Logger specific to the service, or if the overriding implementation needs a configuration:
-
-
-  <<AppModule.java>> (partial)
-
-----
-  public static void bind(ServiceBinder binder)
-  {
-    binder.bind(SomeServiceType.class, SomeServiceTypeOverrideImpl.class).withId("Override");
-  }
-
-  public static void contributeServiceOverride(MappedConfiguration<Class,Object> configuration, @Local SomeServiceType override)
-  {
-    configuration.add(SomeServiceType.class, override);
-  }
-----
-
-  Here we're defining a service local to this module using the bind() method.
-
-  Every service in the IoC container must have a unique id, that's why we used the withId() method; if we we hadn't,
-  the default service id would have been "SomeServiceType" which is a likely conflict with the very service we're trying to
-  override.
-
-  We can inject our overriding implementation of SomeServiceType using the special
-  @{{{../../apidocs/org/apache/tapestry5/annotations/Local.html}Local}} annotation, which indicates that a service
-  within the same module only should be injected: otherwise there would be a problem because the override parameter
-  would need to be resolved using the MasterObjectProvider and, ultimately, the ServiceOverride service; this would cause
-  Tapestry to throw an exception indicating that ServiceOverride depends on itself.  We defuse that situation by using
-  @Local, which prevents the MasterObjectProvider service from being used to resolve the override parameter.
-
-Decorating Services
-
-  Another option is to {{{../deocrator.html}decorate}} the existing service.  Perhaps you want to extend some of the behavior
-  of the service but keep the rest.
-
-  Alternately, this approach is useful to override a service that is matched using marker annotations.
-
-  <<AppModule.java>> (partial)
-
-----
-  public SomeServiceType decorateSomeServiceType(SomeServiceType original)
-  {
-    return new SomeServiceType() { . . . };
-  }
-----
-
-  This decorate method is invoked because its name matches the service id of the original service, "SomeServiceType"
-  (you have to adjust the name to match the service id).
-
-  It is passed the original service and its job it to return an <interceptor>, and object that implements the same
-  interface, wrapping around the original service.
-
-  Note that the object passed in as original may be the core service implementation, or it may be some other
-  interceptor from some other decorator for the same service (often, such a parameter is named "delegate" to highlight
-  this ambiguity).
-
-
-
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/patterns.apt b/maint-5-2/tapestry-ioc/src/site/apt/cookbook/patterns.apt
deleted file mode 100644
index dab842e..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/patterns.apt
+++ /dev/null
@@ -1,140 +0,0 @@
- ----
- Using Patterns
- ----
-
-Using Patterns
-
-  Tapestry IoC has support for implementing several of the
-  {{{http://en.wikipedia.org/wiki/Design_pattern_(computer_science)}Gang Of Four Design Patterns}}.
-  In fact, the IoC container itself is a pumped up version of the Factory pattern.
-
-  The basis for these patterns is often the use of <service builder methods>, where
-  a {{{servconf.html}configuration}} for the service is combined with a factory to produce
-  the service implementation on the fly.
-  
-Chain of Command Pattern
-
-  Let's look at another example, again from the Tapestry code base.  The
-  {{{../../apidocs/org/apache/tapestry5/services/InjectionProvider.html}InjectProvider}} interface
-  is used to process the @Inject annotation on the fields of a Tapestry page or component.
-  Many different instances are combined together to form a
-  {{{../command.html}chain of command}}.
-
-  The interface has only a single method (this is far from uncommon):
-
-+---+
-public interface InjectionProvider
-{
-  boolean provideInjection(String fieldName, Class fieldType, ObjectLocator locator,
-      ClassTransformation transformation, MutableComponentModel componentModel);
-}
-+---+
-
-  The return type indicates whether the provider was able to do something.  For example,
-  the AssetInjectionProvider checks to see if there's an @Path annotation on the field, and
-  if so, converts the path to an asset, works with the ClassTransformation object to 
-  implement injection, and returns true to indicate success.  Returns true terminates
-  the chain early, and that true value is ultimately returned to the caller.
-
-  In other cases, it returns false and the chain of command continues down to the
-  next provider.  If no provider is capable of 
-  handling the injection, then the value false is ultimately returned.
-
-  The InjectionProvider service is built up via contributions.  These are the contributions
-  from the TapestryModule:
-
-+---+
-public static void contributeInjectionProvider(
-    OrderedConfiguration<InjectionProvider> configuration,
-    MasterObjectProvider masterObjectProvider,
-    ObjectLocator locator,
-    SymbolSource symbolSource,
-    AssetSource assetSource)
-{
-  configuration.add("Default", new DefaultInjectionProvider(masterObjectProvider, locator));
-
-  configuration.add("ComponentResources", new ComponentResourcesInjectionProvider());
-
-  configuration.add(
-      "CommonResources",
-      new CommonResourcesInjectionProvider(),
-      "after:Default");
-
-  configuration.add(
-      "Asset",
-      new AssetInjectionProvider(symbolSource, assetSource),
-      "before:Default");
-
-  configuration.add("Block", new BlockInjectionProvider(), "before:Default");
-  configuration.add("Service", new ServiceInjectionProvider(locator), "after:*");
-}
-+---+
-
-  And, of course, other contributions could be made in other modules ... if you wanted to
-  add in your own form of injection.
-
-  The configuration is converted into a service via a service builder method:
-
-+----+
-  public InjectionProvider build(List<InjectionProvider> configuration, ChainBuilder chainBuilder)
-  {
-    return chainBuilder.build(InjectionProvider.class, configuration);
-  }
-+---+
-
-  Now, let's see how this is used.  The InjectWorker class looks for fields with
-  the InjectAnnotation, and uses the chain of command to inject the appropriate value.  However,
-  to InjectWorker, there is no chain ... just a <single> object that implements the InjectionProvider interface.
-
-+----+
-public class InjectWorker implements ComponentClassTransformWorker
-{
-  private final ObjectLocator locator;
-
-  // Really, a chain of command
-
-  private final InjectionProvider injectionProvider;
-
-  public InjectWorker(ObjectLocator locator, InjectionProvider injectionProvider)
-  {
-    this.locator = locator;
-    this.injectionProvider = injectionProvider;
-  }
-
-  public final void transform(ClassTransformation transformation, MutableComponentModel model)
-  {
-    for (String fieldName : transformation.findFieldsWithAnnotation(Inject.class))
-    {
-      Inject annotation = transformation.getFieldAnnotation(fieldName, Inject.class);
-
-      try
-      {
-        String fieldType = transformation.getFieldType(fieldName);
-
-        Class type = transformation.toClass(fieldType);
-
-        boolean success = injectionProvider.provideInjection(
-            fieldName,
-            type,
-            locator,
-            transformation,
-            model);
-
-        if (success) transformation.claimField(fieldName, annotation);
-      }
-      catch (RuntimeException ex)
-      {
-        throw new RuntimeException(ServicesMessages.fieldInjectionError(transformation
-            .getClassName(), fieldName, ex), ex);
-      }
-
-    }
-  }
-}
-+----+
-
-  Reducing the chain to a single object vastly simplifies the code: we've <factored out> the loop implicit in the chain of command.
-  That eliminates a lot of code, and that's less code to test, and fewer paths through InjectWorker, which lowers its complexity further.  
-  We don't have to test the cases where the list of injection providers is empty, or consists of only a single object, or where it's the third
-  object in that returns true: it looks like a single object, it acts like a single object ... but its implementation uses many objects.
-
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/servconf.apt b/maint-5-2/tapestry-ioc/src/site/apt/cookbook/servconf.apt
deleted file mode 100644
index 817c41f..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/cookbook/servconf.apt
+++ /dev/null
@@ -1,205 +0,0 @@
- ----
- Service Configurations
- ----
-
-Service Configurations
-
-  This is an area of Tapestry IoC that is often least well understood.  Tapestry services often must have some configuration to fine tune
-  exactly what they do.  One of the interactions between modules is that these service configurations are shared: they may
-  be contributed into by any module.
-
-  Let's start with the most basic kind, the unordered configuration.
-
-Unordered Service Configurations
-
-  One of Tapestry's features is the ability to package assets (images, style sheets, javascript libraries, etc.) inside JAR files
-  and expose those to the client.  For example, an application URL /assets/org/example/mylib/mylib.js would refer to
-  a file, myllib.js, stored on the classpath in the /org/example/mylib folder.
-
-  That's fine for most cases, but for certain file extensions, we don't want to allow a client browser to "troll" for the files, as the
-  contents could compromise security.  For example, downloading a .class file is bad: a clever client might download one that contains
-  a hardcoded user name or password.
-
-  Thus, for certain file extensions, Tapestry guards the resource by attaching an MD5 digest for the resource to the URL. 
-  The checksum is derived from the file contents; thus it can't be spoofed from the client unless the client already has the file contents.
-
-  This is controlled by the 
-  {{{../../apidocs/org/apache/tapestry5/services/ResourceDigestGenerator.html}ResourceDigestGenerator}} service, which uses its
-  configuration to determine which file extensions require an MD5 digest.
-
-* Contributing to a Service
-
-  The Tapestry module makes a contribution into the service configuration:
-
-+-----+
-  public static void contributeResourceDigestGenerator(Configuration<String> configuration)
-  {
-    configuration.add("class");
-    configuration.add("tml");
-  }
-+----+
-
-  This is a <service contribution method>, a method that is invoked to provide values for a configuration.  We'll see how the
-  service receives these contributions shortly.  The 
-  {{{../../apidocs/org/apache/tapestry5/ioc/Configuration.html}Configuration}} object is how
-  values are added to the service's configuration. Other parameters to a service configuration method are injected
-  much as with a service's constructor, or a service builder method.
-
-  How does Tapestry know which service configuration to update?  It's from the name of the method, anything
-  after the "contribute" prefix is the id of the service to contribute to (the match against service id is  
-  case insensitive).
-
-  Here, the configuration receives two values:  "class" (a compiled Java class) and "tml" (a Tapestry component template).
-
-  Say your application stored a file on the classpath needed by your application; for illustrative purposes, perhaps it
-  is a PGP private key.  You don't want any client to able to download a .pgp file, no matter how unlikely that
-  would be.  Thus:
-
-+----+
-public class MyAppModule
-{
- public static void contributeResourceDigestGenerator(Configuration<String> configuration)
- {
-   configuration.add("pgp");
- }
-}
-+----+
-
-  The contribution in MyAppModule doesn't <replace> the normal contribution, it is <combined>.  The end result is that
-  .class, .tml and .pgp files would <all> be protected.
-
-* Receiving the Configuration
-
-  A service receives the configuration as an injected parameter ... not of type Configuration (that's used for <making> contributions), but
-  instead is  of type Collection:
-
-+----+
-public class ResourceDigestGeneratorImpl implements ResourceDigestGenerator
-{
-  private final Set<String> digestExtensions;
-
-  public ResourceDigestGeneratorImpl(Collection<String> configuration)
-  {
-      digestExtensions = new HashSet<String>(configuration);
-  }
-
-  . . .
-}
-+---+
-
-  In many cases, the configuration is simply stored into an instance variable; in this example, the value is transformed
-  from a Collection to a Set.
-
-  These kinds of unordered configurations are surprisingly rare in Tapestry (the only other notable one is for the
-  {{{../coerce.html}TypeCoercer}} service).  However, as you can see, setting up such a configuration is quite easy.
-
-Ordered Configurations
-
-  Ordered configurations are very similar to unordered configurations ... the difference is that the configuration
-  is provided to the service as a parameter of type List.  This is used when the order of operations counts.  Often
-  these configurations are related to a design pattern such as
-  {{{../command.html}Chain of Command}} or
-  {{{../pipeline.html}Pipeline}}.
-
-  Here, the example is the
-  {{{../../apidocs/org/apache/tapestry5/services/Dispatcher.html}Dispatcher}} interface; a Dispatcher inside Tapestry
-  is roughly equivalent to a servlet, though a touch more active.  It is passed a Request and decides if the URL
-  for the Request is something it can handle; if so it will process the request, send a response, and return true.
-
-  Alternately, if the Request can't be handled, the Dispatcher returns false.
-
-+----+
-public void contributeMasterDispatcher(OrderedConfiguration<Dispatcher> configuration, . . .)
-{
-  // Looks for the root path and renders the start page
-
-  configuration.add("RootPath", new RootPathDispatcher(. . .), "before:Asset");
-
-  // This goes first because an asset to be streamed may have an file extension, such as
-  // ".html", that will confuse the later dispatchers.
-
-  configuration.add(
-          "Asset",
-          new AssetDispatcher(. . .),
-          "before:PageRender");
-
-  configuration.add("PageRender", new PageRenderDispatcher(. . .));
-
-  configuration.add("ComponentAction", new ComponentActionDispatcher(. . .), "after:PageRender");
-}
-+---+
-
-  With an {{{../../apidcos/org/apache/tapestry5/ioc/OrderedConfiguration.html}OrderedConfiguration}},
-  each contribution gets a name, which must be unique.  Here the names are RootPath, Asset, PageRender and ComponentAction.
-
-  The add() method takes a name, the contributed object for that name, and then zero or more optional constraints.
-  The constraints control the ordering.  The "after:" constraint ensures that the contribution is ordered after
-  the other named contribution, the "before:" contribution is the opposite.
-
-  The ordering occurs on the complete set of contributions, from all modules. 
-
-  Here, we need a specific order, used to make sure that the Dispatchers don't get confused about which URLs
-  are appropriate ... for example, an asset URL might be /assets/tapestry5/tapestry.js.  This looks just like
-  a component action URL (for page "assets/tapestry5/tapestry" and component "js"). Given that software is totally lacking
-  in basic common-sense, we instead use careful ordering of the Dipstachers to ensure that AssetDispatcher is checked <before> 
-  the ComponentAction dispatcher.
-
-* Receiving the Configuration
-
-  The configuration, once assembled and ordered, is provided as a List.
-
-  The MasterDispatcher service configuration defines a {{{../command.apt}Chain of Command}} and we can
-  provide the implementation using virtually no code:
-
-+----+
-  public static Dispatcher buildMasterDispatcher(List<Dispatcher> configuration, ChainBuilder chainBuilder)
-  {
-    return chainBuilder.build(Dispatcher.class, configuration);
-  }
-+----+
-
-  {{{../../apidocs/org/apache/tapestry5/ioc/services/ChainBuilder.html}ChainBuilder}} is a service that
-  <builds other services>.  Here it creates an object of type Dispatcher in terms of the list of Dispatchers.
-  This is one of the most common uses of service builder methods ... for when the service implementation
-  doesn't exist, but can be constructed at runtime.
-
-Mapped Configurations
-
-  The last type of service configuration is
-  the mapped service configuration.  Here we relate a key, often a string, to some value.  The contributions
-  are ultimately combined to form a Map.
-
-  Tapestry IoC's {{{../symbols.html}symbols}} mechanism allows configuration values to be defined and perhaps overridden, then
-  provided to services via injection, using
-  the  {{{../../apidocs/org/apache/tapestry5/ioc/annotations/Value.html}Value}} annotation.
-
-  The first step is to contribute values.
-
-+----+
-  public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-  {
-    configuration.add(SymbolConstants.FILE_CHECK_INTERVAL, "1000"); // 1 second
-    configuration.add(SymbolConstants.FILE_CHECK_UPDATE_TIMEOUT, "50"); // 50 milliseconds
-    configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
-    configuration.add("tapestry.default-cookie-max-age", "604800"); // One week
-    configuration.add("tapestry.start-page-name", "start");
-    configuration.add("tapestry.scriptaculous", "classpath:${tapestry.scriptaculous.path}");
-    configuration.add(
-            "tapestry.scriptaculous.path",
-            "org/apache/tapestry5/scriptaculous_1_7_1_beta_3");
-    configuration.add("tapestry.jscalendar.path", "org/apache/tapestry5/jscalendar-1.0");
-    configuration.add("tapestry.jscalendar", "classpath:${tapestry.jscalendar.path}");
-  }
-+---+
-
-  These contribution set up a number of defaults used to configure various Tapestry services. As you can see, you
-  can even define symbol values in terms of other symbol values.
-
-  Mapped configurations don't have to be keyed on Strings (enums or Class are other common key types).  When a mapped
-  configuration <is> keyed on String, then a case-insensitive map is used.
-
-
-
-
-
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/decorator.apt b/maint-5-2/tapestry-ioc/src/site/apt/decorator.apt
deleted file mode 100644
index 2c5732a..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/decorator.apt
+++ /dev/null
@@ -1,342 +0,0 @@
- ----
- Tapestry IoC Decorators
- ----
- 
-Tapestry IoC Decorators
-
-  <<Decoration has been replaced, in Tapestry 5.1, with {{{advice.html}advice}},
-  which is a simpler mechanism for accomplishing the same thing.>>
-
-  <Decoration> is the name of a popular design pattern.  Using decoration,
-  an existing object's behavior can be extended without changing the implementation
-  of the object.
-  
-  Instead, a new object is placed <around> the existing object.  The rest of the world
-  sees this new object, termed an <<interceptor>>.  The interceptor implements the
-  same  interface as the underlying object being decorated.
-  
-  A common example for this is the Java I/O library.  The abstract InputStream
-  base class has a very simple API for reading bytes from a stream (and a few
-  other things).  Subclasses of InputStream provide a wide array of other options
-  such as buffering, encryption or decryption, as well as control over the source
-  of data read by the stream.  All of these <concerns> are encapsulated in different
-  implementations of InputStream, and all can be connected together in a kind of
-  pipline, using the common InputStream API.
-  
-  Tapestry IoC uses a similar approach, where a one or more of interceptor objects,
-  all implementing the service interface, are strung together.  The service's
-  proxy (responsible for just-in-time instantiation of the service implementation)
-  is at one end of this pipeline, the core service implementation is at the other.
-  
-  For each method in the service interface, the interceptor object can perform
-  some operations before and after re-invoking the same method on the
-  core service implementation.  This is another design pattern: <delegation>.  An interceptor
-  can even catch exceptions thrown by the underlying implementation and react to them.
-  A sufficiently clever interceptor could retry a method if an exception is thrown, or
-  could "soften" a checked exception by wrapping it in a RuntimeException.
-  
-  Decorators often are used in the context of <cross-cutting concerns>, such as logging or
-  transaction management. This approach is a kind of <aspect oriented design>.
-  
-  One such cross cutting concern is lazy initialization of services.  In Apache HiveMind, services
-  are created only as needed, when a method of a service interface is first invoked.
-  This concern is supplied by the Tapestry IoC framework itself, but similar
-  concerns are easily implemented as decorations.
-  
-  Whereas the popular AspectJ framework changes the compiled bytecode of your
-  classes (it calls the process "weaving"),
-  with Tapestry IoC, the approach is to wrap your existing classes in new objects. These
-  wrapper objects are often dynamically created at runtime.
-  
-  It is also common to have <multiple> decorations on a single service. In this case,
-  a whole stack of interceptor objects will be created, each delegating to the next.
-  Tapestry IoC provides control over the order in which such decorations occur.
-  
-  Decorations are driven by service decoration methods. Often, a reusable service
-  exists to do the grunt work of creating and instantiating a new class.
-  
-Service Decoration Methods
-
-+---------------------+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.services.LoggingDecorator;
-import org.slf4j.Logger;
-
-public class MyAppModule
-{
-  public static Indexer build()
-  {
-    return new IndexerImpl();
-  }
-  
-  public static <T> T decorateIndexer(Class<T> serviceInterface, T delegate, 
-    String serviceId, Logger logger,
-    
-    LoggingDecorator decorator)
-  {
-    return decorator.build(serviceInterface, delegate, serviceId, logger);
-  } 
-}
-+---------------------+
-
-   The method decorateIndexer() is a service decorator method because it starts with the
-   word "decorate".  In this simple case, only the myapp.Indexer service will be decorated,
-   even if there are other services in this module or others ... this is because
-   of the name match ("decorateIndexer" and "buildIndexer"), but we'll shortly see how
-   annotations can be used to target many services for decoration.
-   
-   We are using the parameterized types here (the \<T\>), to reinforce the fact that the delegate object
-   passed in (which will be the core service implementation, or some other interceptor)
-   must implement the service interface, and that the decorator method must return an
-   instance of the service interface.
-   
-   The values that may be provided to a decorator method are exactly the same as for a builder
-   method, with one addition:  The underlying service will be passed in
-   as a parameter of type java.lang.Object (after type erasure, the <<<T delegate>>> parameter
-   becomes <<<Object delegate>>>).
-
-
-   In the above example, the decorator method receives the core service implementation,
-   the service interface for the Indexer service, the Log for the Indexer service,
-   and an interceptor factory that generates logging interceptors.
-   
-   The "heavy lifting" is provided by the factory, which will create a new interceptor
-   that logs method entry before delegating to the core service implementation. The interceptor
-   will also log method parameters, return values, and even log exceptions.
-   
-   The return value of the method is the new interceptor. You may return null if your
-   decorator method decides not to decorate the supplied service.
-
-
-   Alternately, when targetting services whose type is known at compile time, you may provide
-   a parameter whose type matches the service interface.  For example, decorateIndexer() will
-   always be applied to the Indexer service, whose type (Indexer) is known. We could therefore rewrite
-   decorateIndexer() as:
-
-+---------------------+
-  public static Indexer decorateIndexer(Indexer delegate, Logger logger, LoggingDecorator decorator)
-  {
-    return decorator.build(Indexer.class, delegate, "Indexer", logger);
-  }
-+---------------------+
-
-
-
-   Of course, nothing stops you from combining building with decorating inside
-   the service builder method:
-   
-   
-+---------------------+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.services.LoggingDecorator;
-import org.slf4j.Logger;
-
-public class MyAppModule
-{
-  public static Indexer build(Logger logger, LoggingDecorator decorator)
-  {
-    return decorator.build(Indexer.class, logger,  new IndexerImpl());
-  } 
-}
-+---------------------+   
-
-  But as we'll see, its possible to have a single decorator method work on many different
-  services by using annotations.
-  
-Targetting Multiple Services
-
-  By using the
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Match.html}@Match annnotation}},
-  you may identify which services are to be decorated.
-  
-  The value specified in the Match annotation is one or more patterns. These patterns
-  are used to match services. Patterns take two forms: glob patterns and regular expressions.
-
-  In a glob pattern, a "*" at the start or end of a string
-  will match zero or more characters.              Regular expressions provide a lot more matching power, but require
-  a more involved syntax.
-
-  In either case, the matching is case insensitive.
-  
-  For example, to target all the services in your module:
-  
-+---------------------+    
-  @Match("*")
-  public static <T> T decorateLogging(Class<T> serviceInterface, T delegate, 
-    String serviceId, Logger logger,
-    LoggingDecorator decorator)
-  {
-    return decorator.build(serviceInterface, delegate, serviceId, logger);
-  }   
-+---------------------+  
-
-  You can use multiple patterns with @Match, in which case, the decorator will be applied
-  to a service that matches <any> of the patterns. For instance, if you only wanted
-  logging for your data access and business logic services, you might end up with
-  <<<@Match("Data*", "*Logic")>>> (based, of course, on how you name your services). 
-  
-  As the preceding example showed, a simple "glob" matching is supported, where a asterisk ('*')
-  may be used at the start or end of the match string to match any number of characters.
-  As elsewhere, matching is case insensitive.
-
-
-  Thus, <<<@Match("*")>>> is dangerous, because it will match every service in every
-  module.  
-  
-  <Note: It is not possible to decorate the services of the TapestryIOCModule.>
-  
-  <Note: Another idea will be other ways of matching services: base on inheritance of the
-  service interface and/or based on the presence of particular class annotations on the
-  service interface. None of this has been implemented yet, and can readily be accompllished
-  inside the decorator method (which will return null if it decides the service doesn't
-  need decoration).>
-  
-    
-Ordering of Decorators
-
-   In cases where multiple decorators will apply to a single service, you can control
-   the order in which decorators are applied using  an additional annotation:
-   {{{../apidocs/org/apache/tapestry5/ioc/annotations/Order.html}@Order}}.
-   
-   This annotation allows any number of {{{order.html}ordering constraints}}
-   to be specified for the decorator, to order it relative to
-   any other decorators.
-   
-   For example, you almost always want logging decorators to come first, so:
-   
-+---------------------+    
-  @Match("*")
-  @Order("before:*")
-  public static <T> T decorateLogging(Class<T> serviceInterface, T delegate, 
-    String serviceId, Logger logger,
-    LoggingDecorator decorator)
-  {
-    return decorator.build(serviceInterface, delegate, serviceId, logger);
-  }   
-+---------------------+     
-   
-   
-   "before:*" indicates that this decorator should come before any decorator in <any> module.
-   
-   <<Note:>> the ordering of decorators is in terms of the <effect> desired.
-   Internally, the decorators are invoked
-   last to first (since each once receives the "next" interceptor as its delegate).
-   So the core service implementation is created (via a service builder method)
-   and that is passed to the last decorator method. The interceptor created there
-   is passed to the the next-to-last decorator method, and so forth.
-
-   It should now be evident that the delegate passed into a decorator method is sometimes
-   the core service implementation, and some times an interceptor object created by some other
-   decorator method.
-
-Creating your own Decorators
-
-  Decorators are a limited form of Aspect Oriented Programming, so we have
-  borrowed some of that terminology here.
-
-  A decorator exists to create an <interceptor>.  The interceptor wraps around
-  the service (because these interceptors can get chained, we talk about the "delegate" and not the "service").
-
-  Each method of the interceptor will take <advice>.  Advice
-  is provided by a {{{../apidocs/org/apache/tapestry5/ioc/MethodAdvice.html}MethodAdvice}} instance.
-  The sole method, <<<advise()>>>, receives an
-   {{{../apidocs/org/apache/tapestry5/ioc/Invocation.html}Invocation}}.
-  MethodAdvice gives you a chance to see what the method invocation <is>; you can query
-  the name of the method, and the types and values of the parameters.
-
-  The MethodAdvice can override the parameters if necessary, then invoke <<<proceed()>>>.  This
-  call invokes the corresponding method on the original object, the delegate.
-
-  If the method call throws a runtime exception, that exception is not caught.  Your method advice can
-  put a try ... catch block around the call to proceed() if interested in catching runtime exceptions.
-
-  Checked exceptions are not thrown (since they are not part of the proceed() method's signature).  Instead
-  the invocation's <<<isFail()>>> method will return true.  You can then retrieve the exception or override it.
-
-  In the normal success case, you can ask for the return value and even override it before
-  returning from the advise() method.
-
-  In other words, you have total control.  Your MethodAdvice can query or change parameters, decide whether
-  it proceed into the original code, it can intercept exceptions that are thrown and replace them, and can
-  query or even replace the return value.
-
-  The
-  {{{../apidocs/org/apache/tapestry5/ioc/services/AspectDecorator.html}AspectDecorator}} service
-  is how you put your MethodAdvice into action.
-
-  By way of an example, we'll show an implementation of the LoggingDecorator service:
-
-+----+
-public class LoggingDecoratorImpl implements LoggingDecorator
-{
-    private final AspectDecorator aspectDecorator;
-
-    private final ExceptionTracker exceptionTracker;
-
-    public LoggingDecoratorImpl(AspectDecorator aspectDecorator, ExceptionTracker exceptionTracker)
-    {
-        this.aspectDecorator = aspectDecorator;
-        this.exceptionTracker = exceptionTracker;
-    }
-
-    public <T> T build(Class<T> serviceInterface, T delegate, String serviceId, final Logger logger)
-    {
-        final ServiceLogger serviceLogger = new ServiceLogger(logger, exceptionTracker);
-
-        MethodAdvice advice = new MethodAdvice()
-        {
-            public void advise(Invocation invocation)
-            {
-                boolean debug = logger.isDebugEnabled();
-
-                if (debug) serviceLogger.entry(invocation);
-
-                try
-                {
-                    invocation.proceed();
-                }
-                catch (RuntimeException ex)
-                {
-                    if (debug) serviceLogger.fail(invocation, ex);
-
-                    throw ex;
-                }
-
-                if (!debug) return;
-
-                if (invocation.isFail())
-                {
-                    Exception thrown = invocation.getThrown(Exception.class);
-
-                    serviceLogger.fail(invocation, thrown);
-
-                    return;
-                }
-
-                serviceLogger.exit(invocation);
-            }
-        };
-
-        return aspectDecorator.build(serviceInterface, delegate, advice,
-                                      String.format("<Logging interceptor for %s(%s)>", serviceId,
-                                                    serviceInterface.getName()));
-    }
-}
-+---+
-
-  <The actual code has been refactored slightly since this documentation was written.> 
-
-  Most of the logging logic occurs inside the ServiceLogger object, the MethodAdvice exists to call the right methods at
-  the right time.  A Logger doesn't <change> parameter values (or thrown exceptions, or the result), it just
-  captures and logs the data.
-
-  Notice that for runtime exceptions, we catch the exception, log it, and rethrow it.
-
-  For checked exceptions, we use isFail() and getThrown().
-
-  The AspectDecorator service can also be used in more complicated ways: it is possible to
-  only advise some of the methods and not others, or use different advice for different methods.  Check the
-  JavaDoc for more details.
-
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/index.apt b/maint-5-2/tapestry-ioc/src/site/apt/index.apt
deleted file mode 100644
index 4d491ff..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/index.apt
+++ /dev/null
@@ -1,216 +0,0 @@
- ----
- Tapestry IoC Introduction
- ----
- 
-Tapestry Inversion of Control Container
-
-  The inner construction of the Tapestry framework is based on {{{http://www.martinfowler.com/articles/injection.html}inversion of control}},
-  a design approach that allows a working system to be fabricated from many small, easily testable pieces.
-  
-  An additional benefit of using IoC (Inversion of Control) is that, by breaking a complex system into small pieces, it becomes easier to
-  modify and extend the system, by overriding or replacing selected parts of the system.
-  
-  The use of IoC in Tapestry represents an evolution from Tapestry 3 to Tapestry 4 to Tapestry 5.  Tapestry 3 did not use IoC, though it included
-  some weaker mechanisms, such as extensions, that served a similar purpose.  To make large scale changes to the behavior of Tapestry 3 required
-  subclassing key classes and overriding methods.
-  
-  Tapestry 4 introduced the use of the {{{http://hivemind.apache.org/}Apache HiveMind}} IoC container.  In fact, the HiveMind project was created 
-  specifically for use as the IoC container for Tapestry 4.  Tapestry 4 has met its goals for extensibility and configurability, largely
-  because of HiveMind's flexibility.
-  
-  Tapestry 5 extends on this, replacing HiveMind with a new container specifically build for Tapestry 5,
-  designed for greater ease of use, expressiveness and performance. HiveMind itself has been subsequently shelved; T5 IoC
-  can be considered a streamlined and improved HiveMind. And T5 IoC can be used separately from the rest of Tapestry!
-  
-* Why Not Spring?
-
-  {{{http://www.springframework.org}Spring}} is the most successful IoC container project. The Spring project combines a very good IoC container,
-  integrated {{{http://aspectj.org}AspectJ}} support, and a large number of libraries built on top of the container. Spring is an excellent
-  <application> container, but lacks a number of features necessary for a <framework> container:
-  
-  * Spring beans can be wired together by name (or id), but it is not possible to introduce additional naming abstractions. Tapestry 4's 
-    "infrastructure:" abstraction was the key to allowing easy spot overrides of internal Tapestry services without having to
-    duplicate the large web of interrelated services (nearly 200 in Tapestry 4.0).
-        
-  * Although Spring allows beans to be intercepted, it does so in the form of a new bean, leaving the un-intercepted bean visible
-    (and subject to misuse).  Tapestry IoC "wraps" the service inside interceptors, preventing unintercepted access
-    to the core service implementation.
-  
-  * Spring's XML configuration files are quite verbose. This has improved with
-    Spring 2.0, but still far more verbose that T5 IoC module classes.
-    
-  * Spring has a simple map/list/value configuration scheme, but it is not distributed; it is part of a single bean definition. 
-    Tapestry 5 IoC allows a service configuration to be assembled from multiple modules. This is very important
-    for seamless extensibility of the framework, with zero configuration (just drop the module into the classpath and 
-    everything hooks together).
-  
-* Why Not HiveMind?
-
-  The difficulty of managing the release schedules of two complex frameworks has proven to be an issue. HiveMind's 2.0 release will
-  incorporate ideas similar to those present in Tapestry 5 IoC, 
-  but will also maintain legacy support for the existing XML-driven approach.
-  
-  The use of HiveMind is also related to one of the common criticisms of Tapestry 4: startup time. The time it takes to parse and
-  organize all that XML shows up as several seconds of startup time. It is <hoped> that creating a streamlined IoC container that is not
-  driven by XML will alleviate those issues.
-  
-  With the advent of new technologies (in particular, 
-  {{{http://java.sun.com/j2se/1.5.0/docs/guide/language/annotations.html}JDK 1.5 Annotations}}, 
-  and runtime class generation via 
-  {{{http://www.jboss.org/products/javassist}Javassist}})
-  some of the precepts of HiveMind have been undermined.  That is to say, in HiveMind (and Spring), all that XML is an awkward
-  way to describe a few basic Java operations: instantiating classes and invoking methods on those classes (to inject
-  dependencies into the instantiated instances).  The central concept in Tapestry IoC is to eliminate XML and build an equivalent
-  system around simple objects and methods.
-  
-  Tapestry IoC also represents many simplifications of HiveMind, representing lessons learned while creating both
-  HiveMind and Tapestry 4.  HiveMind itself has wound down (it is not longer in active development), with the user base
-  moving to Tapestry 5.
-
-* Why not Guice?
-
-  {{{http://code.google.com/p/google-guice/}Google Guice}} is a newcomer to the IoC landscape.  Guice and T5 IoC are very close and, in fact,
-  T5 IoC expressly borrows many great and innovative ideas from Guice. Guice abandons not only XML but even any concept of a service id ...
-  for injection, services are matched by type and perhaps filtered based on annotations.
-
-  Guice is still missing some core ideas needed in T5 IoC.  There's no concept of configurations or anything similar.
-  And there are limitations on injection based on scope (a request scoped value can't be injected into a global scope service; in T5 IoC, scope
-  is internal to the proxy and never an issue).
-  
-Goals
-
-  As with Tapestry 5 in general, the goal of Tapestry IoC is greater simplicity, greater power, and an avoidance of XML.
-  
-  Existing IoC containers such as HiveMind and Spring contain large amounts of XML configuration that exists to
-  describe how and when to instantiate a particular JavaBean, and how to provide that bean with its dependencies (either
-  by constructor injection, or by property injection).  Other XML is used to hook objects into some form of lifecycle ... 
-  typically callback methods invoked when the object is instantiated and configured, or when it is being discarded.
-
-  The core concept of Tapestry IoC is that
-  the Java language itself 
-  is the easiest and most succinct way to describe object creation and method invocation. Any approximation in
-  XML is ultimately more verbose and unwieldy.  As the {{{service.html#injection} examples}} show, a small amount of Java code and a
-  handful of naming conventions and annotations is far simpler
-  and easier than a big chunk of XML.
-
-  In addition, moving from XML to Java code encourages testing; you can unit test the 
-  service builder methods of your  module  class, but you can't realistically unit test an XML descriptor.
-  
-  Tapestry IoC modules are easily packaged into JAR files, supporting 
-  zero-configuration usage: just drop the JAR onto the classpath.
-  
-  Another goal is "developer friendliness". This is a true cross-cutting concern, and one not likely to be packaged
-  into an aspect any time soon. The Tapestry IoC framework is designed to be easy to use and easy to understand.
-  Further, when things go wrong, it actively attempts to help you via 
-	comprehensive checks and carefully composed error messages. Further,
-  all user-visible objects implement
-  {{{http://howardlewisship.com/blog/2003/08/importance-of-tostring.html}a reasonable toString() method}},
-  to help you understand what's going when you inevitably try to figure things out in the debugger. 
-  
-  In terms of building services using Tapestry IoC ... the objective here is "lightness", a term borrowed from the board
-  game {{{http://boardgamegeek.com/game/188}Go}}. In Go, two players place stones on an initially empty board, 
-  creating walls to enclose territory or eliminate the encroaching stones played by the opponent. The winner at the
-  end of the game controls the most territory, and it is the constant tension between taking territory and defending
-  existing territory that drives the game.   In Go, groups of playing stones are "light" (or have "good shape")
-  when the minimum number of them control the maximum area on the board.  Playing "heavy" just gives your opponent a free
-  chance to take control of another section of the board.
-  
-  In software development, we are also attempting to create complex systems
-  from simple pieces, but our tension is derived from the need to add functionality balanced against the need
-  to test and maintain existing code.  Too often in the world of software development, the need to add functionality
-  trumps all, and testing and maintenance is deferred ... until too late.
-  
-  IoC containers in general, and Tapestry IoC very specifically, exist to address this issue, to provide the foundations
-  for balancing the need to quickly add functionality against the need to test new functionality and maintain
-  existing functionality.  IoC containers provide the means to break large, complex, monolithic blocks into light, small, testable
-  pieces.   
-  
-  When building a registry of services, lightness refers to the proper division of responsibility, the seperation of
-  concerns, and the limiting of dependencies between different parts of the system. This style is often
-  called {{{http://www.ccs.neu.edu/research/demeter/demeter-method/LawOfDemeter/general-formulation.html}Law of Demeter}}.
-  Using an IoC container makes it easier to embrace this approach, since one critical concern, which objects are responsible for 
-  instantiating which others, is entirely managed by the container. With this lifecycle concern removed, it becomes very
-  easy to reduce complex chunks of code into small, testable, reusable services.
-  
-  "Light" means:
-  
-  * Small interfaces of two or three methods.
-  
-  * Small methods, with two or three parameters (because dependencies are injected in behind the scenes, rather than
-    passed into the method).
-    
-  * Anonymous communication via events, rather than explicit method invocations. The service implementation can
-    implement an event listener interface.
-  
-  []
-  
-  See {{{http://www.pragmaticprogrammer.com/ppbook/index.shtml}The Pragmatic Programmer}} for more insights into
-  building solid code.
-  
-Overview
-
-  The Tapestry IoC container takes over all the plumbing necessary for a highly scalable, extensible, thread-safe, testable
-  application.  Please see the {{{overview.html}overview}} for more details.  
-  
-Terminology
-
-  The basic unit in Tapestry IoC is a <<service>>.  A service consists of a <<service interface>> and a <<service implementation>>.
-  The service interface is an ordinary Java interface.  The service implementation is a Java object that implements the 
-  service interface.  Often there will
-  only be a single service per service interface, but in some situations, there may be many different services and service implementations
-  all sharing the same service interface.
-  
-  
-  Services are identified by a unique id.  Typically, a service id matches the unqualified name of the service interface, but
-  this is simply a convention.
-  
-  Services are aggregated into <<modules>>:
-      
-  * A module is defined by a <<module class>>, a specific class containing a mix of static or instance methods, used to define
-    services, decorate them (see below), or contribute to service configurations (again, more below).
-  
-  * Methods of the module class define the services provided by the module, 
-    and the same methods are responsible
-    for instantiating the service implementation.
-    
-  []
-  
-  The methods which define and construct services are called <<service builder methods>>.
-  
-  The <<registry>> is the outside world's view of the modules and services. From the registry, it is possible to obtain
-  a service, via its unique id or by its service interface.  Access by unique id is <caseless> (meaning, a match will be found
-  even the case of the search key doesn't match the case of the service id itself). 
-    
-    
-  Services may be <<decorated>> by <<service decorator methods>>.  These methods create
-  <<interceptor>> objects that wrap around core service implementations, adding behavior such
-  as logging, security access, or transaction management.  Interceptors implement the same
-  service interface as the service.
-  Control is given over the order in which decorators are applied to a service.
-  
-  A service may have a <<configuration>>. The configuration is either a map, a collection, or an ordered list. The service defines the type
-  of object allowed to be contributed into the configuration. The configuration is constructed
-  from <<contributions>> provided by one or more modules.   <<Service contributor methods>> are invoked to contribute objects into
-  configurations.
-    
-  Services are instantiated as needed. In this case, "need" translates to "when a method of the service is invoked".
-  A service is represented (to the outside world, or to other services) as a <<proxy>> that implements
-  the service interface. The first time a method is invoked on the proxy, the full service (consisting of the core service implementation wrapped with any interceptors) is
-  constructed. This occurs in a completely <<thread-safe>> manner. Just-in-time instantiation allows for more complex, more finely grained networks of services, and improves
-  startup time.
-
-  Instantiating a service, injecting dependencies, and decorating the service are all parts of service <<realization>>, the point
-  at which a service transitions from virtual (just a proxy) to real (fully instantiated and ready to operate). 
-
-  Services define a <<scope>> that controls when the service is constructed, as well as its visibility.  The default scope is <<singleton>>, meaning a single
-  global instance created as needed.  Other scopes allow service implementations to be bound to the current thread (i.e., the current
-  request in a servlet application).
-  
-  <<Dependencies>> are other services (or other objects) that are needed by a service implementation. These 
-  dependencies can be <<injected>> into a service builder method and provided, from there, to a service implementation via
-  its constructor, or via methods on the service implementation. These may also be referred to as <<collaborators>>, especially
-  in the context of writing unit tests.
-
-  The <<point of Injection>> is a field, method parameter, or constructor parameter that receives an injected value.
-  The type of service (or other dependency) is determined by the type of the field or parameter. Often,
-  annotations further identify what is to be injected, or in the case of field injection, that an injection is required.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/injection.apt b/maint-5-2/tapestry-ioc/src/site/apt/injection.apt
deleted file mode 100644
index 4d38507..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/injection.apt
+++ /dev/null
@@ -1,306 +0,0 @@
- ---
- Injection in Detail
- ---
-
-Injection in Detail
-
- Injection in Tapestry IoC can be a complicated subject for a number of reasons:
-
- * Injection can occur in many places: on fields, and on parameters to methods and constructors of certain objects.
-
- * Parts of Injection are themselves defined in terms of Tapestry IoC services, many of which are extensible.
-
- []
-
- Despite this, injection generally <Just Works>: most of the time, you want
- Tapestry to inject a service, and only a single
- service implements the service interface.
-
- This document discusses what to do when you hit a case
- that doesn't Just Work, or when you want to extend the injection logic in some way.
-
- Some aspects of this discussion reflect Tapestry IoC used within a Tapestry web application: the
- tapestry-core module makes some extensions to injection. 
-
-Injection Triggers
-
-  Injection is triggered in a number of ways:
-
-  * A field in a component class, autobuilt object, or service implementation class the
-    {{{../apidocs/org/apache/tapestry5/ioc/annotations/Inject.html}Inject}} annotation.
-
-  * A method parameter to a service builder method, a decorator method, or a contribute method (in a Tapestry IoC module class).
-
-  * A constructor parameter to an autobuilt object, or a service implementation class.
-
-  * Any of the above with an {{{../apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html}InjectService}}
-    annotation.
-
-  []
-
-  Injection also covers a related matter: providing special resources to a service or component.  For a service,
-  the service's id (as a string) or extensible configuration (as a Collection, List or Map) may be provided.
-  For a component, the component's id, locale, message catalog, or component resources may be provided.
-
-Standard Injection Processing
-
-    This section describes standard injection, which applies at the IoC layer: autobuild objects and
-    service implementations. The steps for injection
-    into Tapestry components are slightly different and are covered later.
-
-    So a the point of injection, Tapestry has identified a field or parameter that should be injected.  At
-    this point, Tapestry knows the following:
-
-    * The field name (if field injection).  The parameter name is not available.
-
-    * The field or parameter type, as a Java class. In many cases, this will be enough to identify what object shall be injected.
-
-    * Any additional annotations on the field or parameter.
-
-    []
-
-    Tapestry proceeds with this information.
-
-
-* Check for InjectService
-
-    Tapestry checks first for the InjectService annotation.  The value of this annotation is the service id
-    to inject.  When InjectService is present at the point of injection, that process is done, though it can
-    fail if the service id indicated does not exist, or if the service's interface is not compatible with
-    the field's type.
-
-* Check for service resources
-
-   This step applies only to IoC layer injection (not to injection into components).
-
-   When the Inject annotation is <not present> at the point of injection, Tapestry checks to see
-   if a resource can be injected.  When the Inject annotation is present, this step is skipped (this is necessary
-   when the object to be injected has a type that conflicts with a resource type, such as List or Class).
-
-   [org.slf4j.Logger]
-   The Logger of the service being constructed (or the logger of the Module class being instantiated).
-
-   [{{{../apidocs/org/apache/tapestry5/ioc/ObjectLocator.html}ObjectLocator}}]
-   For contribute methods, used to locate additional objects.
-
-   [{{{../apidocs/org/apache/tapestry5/ioc/ServiceResources.html}ServiceResources}}]
-   For service builder methods, an extended version of ObjectLocator.
-
-   [Class]
-   The service interface type.
-
-   [{{{../apidocs/org/apache/tapestry5/ioc/OperationTracker.html}OperationTracker}}]
-   Used to track deeply nested operations so that errors can be reported sensibly.
-
-   [Object, or service interface type]
-   Passed to decorator methods.
-
-   [Collection, List, Map]
-   Assembled service configurations passed to service builder methods (or service class constructors).
-
-   [Configuration, OrderedConfiguration, MappedConfiguration]
-   Configuration passed to contribute methods, to build service configurations.
-
-   If field type does not match any of the available resource types, or the Inject annotation is present,
-   logic continues to the next step.
-
-   Injection of resources into fields is triggered by the presence of the
-   {{{../apidocs/org/apache/tapestry5/ioc/annotations/InjectResource.html}InjectResource}}
-   annotation, whereas injection of resources into parameters occurs when the Inject or InjectService
-   annotation is <not> present.  These rules are slightly tricky, which reflects a desire to avoid
-   any annotations except when needed, and the fact that field injection came much later than
-   parameter injection.
-
-* Service Lookup by Type and Annotations
-
-  Tapestry attempts to find a matching <service>.
-
-  First, it generates a set of services whose service interface is compatible with the injection type. This
-  is based on assignability.
-
-  If the {{{../apidocs/org/apache/tapestry5/ioc/annotations/Local.html}Local}} annotation is present, then
-  services not from the module containing the service being constructed will be eliminated.
-
-  Tapestry then works through the known marker annotations. For each marker annotation that is present
-  at the point of annotation, Tapestry eliminates services which do not have the marker.  Thus, if multiple
-  marker annotations are present, the final service must have <all of them>.
-
-  At the end, of this, Tapestry determines how many services match.
-
-  * If there is a single matching service, then the value to inject as been identified.
-
-  * If there are no matches, and there were no marker annotations at the point of injection,
-    then the Tapestry continues to the next step.
-
-  * Otherwise there were either no matches, or too many matches: Tapestry will throw a RuntimeException.
-
-  []
-
-* MasterObjectProvider Lookup
-
-  This is the point at which Tapestry's extensibility comes into play. MasterObjectProvider is a service,
-  with a configuration of
-  {{{../apidocs/org/apache/tapestry5/ioc/ObjectProvider.html}ObjectProvider}}s.
-
-  The MasterObjectProvider is also the point at which Tapestry's IoC layer injection, and Tapestry's component injection,
-  unite.
-
-  As a chain-of-command, each of the following ObjectProviders will be considered and will attempt
-  to identify the object to be injected.
-
-  <<Note:>> a common problem when extending injection is that contributions into the MasterObjectProvider
-  configuration have to be handled carefully. Any dependencies of the contributed objects
-  should be resolvable using the early stages of the injection process, otherwise
-  MasterObjectProvider will have to be instantiated in order to handle its own injection: Tapestry will detect
-  this impossibility and throw an exception.  In addition, the
-  {{{coerce.html}TypeCoercer}} service is used by several ObjectProvider implementations,
-   so the same restrictions apply to TypeCoercer service contributions.
-
-** Value ObjectProvider
-
-   Checks for the presence of the
-   {{{../apidocs/org/apache/tapestry5/ioc/annotations/Value.html}Value}} annotation.
-   If present, then the annotations value is evaluated (to expand any symbol references), and the
-   TypeCoercer coverts the resulting String to the injection type.
-
-** Symbol ObjectProvider
-
-   Similar to the Value ObjectProvider: the
-   {{{../apidocs/org/apache/tapestry5/ioc/annotations/Symbol.html}Symbol}} annotation's value
-   (if present) is lookup up and converted to the injection type.
-
-** Autobuild ObjectProvider
-
-   Checks to see if the
-   {{{../apidocs/org/apache/tapestry5/ioc/annotation/Autobuild.html}Autobuild}} annotation is present and,
-   if so, autobuilds the value for the parameter. Of course, the object being built will itself
-   be configured via injection.
-
-** ServiceOverride ObjectProvider
-
-   Checks any contributions to the
-   {{{../apidocs/org/apache/tapestry5/ioc/services/ServiceOverride.html}ServiceOverride}} service. Contributions
-   map a type to an object of that type. Thus, ServiceOverrides will override injections of services
-   that are not qualified with a marker annotation.
-
-** Alias ObjectProvider  (tapestry-core)
-
-  Uses the
-  {{{../apidocs/org/apache/tapestry5/services/Alias.html}Alias}} service to look for an object
-  that can be injected.
-
-  This is commonly used to override a built-in service by contributing an object with the
-  exact same interface.           This is an older and more complex version of the ServiceOverride provider.
-
-** Asset ObjectProvider (tapestry-core)
-
-  Checks for the
-  {{{../apidocs/org/apache/tapestry5/annotations/Path.html}Path}}    annotation.
-
-   If present, the annotation's value has embedded symbols expanded, and is converted into an Asset (which must
-   exist).
-
-   The TypeCoercer can then convert the Asset to the injection type.
-
-** Service ObjectProvider (tapestry-core)
-
-  Looks for the  {{{../apidocs/org/apache/tapestry5/annotations/Service.html}Service}} annotation;
-  if present, the annotation's value is the exact service id to inject.  This is necessary because
-  injections into <component> fields are always triggered by the Inject annotation.
-
-** SpringBean ObjectProvider (tapestry-spring)
-
-   Attempts to resolve a Spring bean purely by object type (Spring qualifiers are not supported). If no beans
-   are assignable to the type, then processing continues. If exactly one is assignable, it is used as the injection value.
-   If more than one bean is assignable, it is an error (and a list of matching beans names will be part of the thrown
-   exception).
-
-* Service Lookup
-
-  If none of the ObjectProviders can identify the value to inject, a last step occurs: lookup by service type.
-  If exactly <one> service matches the injection type, then that service is injected.
-
-  Otherwise, the lookup fails because either no services match, or more than one matches.
-
-Post-Injection Methods
-
-  Autobuilt objects (services and the like, but <not> components) may have post-injection methods.
-
-  Any public method may have the
-  {{{../apidocs/org/apache/tapestry5/annotations/PostInjection.html}PostInjection}} annotation.
-
-  Such methods are invoked after constructor and/or field injection.  Only <<public methods>> will
-  be invoked.  Any return value is ignored.
-
-  Further injections may take place using the parameters of the method.
-
-  Often this is used to perform additional setup, such as registerring a service as a listener of
-  events produced by another service:
-
-----
-public class MyServiceImpl implements MyService, UpdateListener
-{
-  @PostInjection
-  public void registerAsListener(UpdateListenerHub hub)
-  {
-    hub.addUpdateListener(this);
-  }
-}
-----  
-
-
-Component Injection
-
-  Inside Tapestry components, injection occurs exclusively on <fields> and is always triggered
-  by the Inject annotation.
-
-  Component field injection is very similar to IoC layer, but with a different set of
-  injectable resources.
-
-  Injection is the responsibility of the
-  {{{../apidocs/org/apache/tapestry5/services/InjectionProvider.html}InjectionProvider}}
-  service, which is a chain-of-command across a number of implementations.
-
-* Block InjectionProvider
-
-  Checks if the field type is Block.  If so, determines the block id
-  to inject (either from the field name, or from an
-  {{{../apidocs/org/apache/tapestry5/annotations/Id.html}Id}}, if present).
-
-* Default InjectionProvider
-
-  Uses the MasterObjectProvider service to provide the injectable value.  The Service Lookup stage
-  is skipped.
-
-* ComponentResources InjectionProvider
-
-  Injects fields of type ComponentResources.
-
-* CommonResources InjectionProvider
-
-  Injects fields with common resources:
-
-  * String: the components' complete id
-
-  * org.slf4j.Logger: Logger for the component (based on component class name)
-
-  * Locale: locale for the containing page (page locale is immutable)
-
-  * Messages: Component's message catalog
-
-  []
-  
-* Asset InjectionProvider
-
-  Triggered by the Path annotation: the Path value has symbols expanded, and is then converted to
-  an Asset.
-
-* Service InjectionProvider
-
-  Equivalent to the Service Lookup phase in an IoC layer injection.
-
-@InjectService in Components
-
-  This is now supported; you may use the
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html}InjectService}} annotation on component
-  fields.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/logging.apt b/maint-5-2/tapestry-ioc/src/site/apt/logging.apt
deleted file mode 100644
index 891b748..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/logging.apt
+++ /dev/null
@@ -1,79 +0,0 @@
- ----
- Logging
- ----
- 
-Logging in Tapestry
-
-	Logging in Tapestry is based on the
-	{{{http://www.slf4j.org/}Simple Logging Facade for Java (SLF4J)}}.  You can think of SLF4J as a leaner, meaner replacement
-	for {{{http://commons.apache.org/logging/}commons-logging}}.
-	
-	In theory, SLF4J is a wrapper around any of a number of logging systems, including 
-	{{{http://logging.apache.org/log4j/docs/}Log4J}}
-	or the built-in JDK logging.  In practice, it is almost always used with Log4J and no additional build configuration is needed. 
-	
-	Your application <will> need to provide a <<log4j.properties>> file (or its XML equivalent).  See 
-	{{{http://logging.apache.org/log4j/docs/manual.html}the Log4J manual}} for more information.
-
-Accessing Loggers
-
-  Loggers are a special kind of resource that is injected into a service.  In Tapestry IoC, Loggers an be injected into
-  service constructors, or into service builder methods.
-  
-  In Tapestry Core (the web framework), Loggers for components can be injected into component fields.
-  
-  This often confuses people, because the standard idiom is to create a Logger based on the class name and inject it into a static field.  In Tapestry, the Logger
-  is created on your code's behalf and provided to you, and stored into a final private field. 
-  
-  In terms of seperation of concerns, Tapestry's approach is superior ... the concern of creating loggers is offloaded
-  into the framework, and you code retains the concern of actually logging useful information.  However this is largely theoretical.
-  
-  For a pragamatic standpoint, injecting Loggers makes it easier to test <logging> code using the same techniques used to test other code: via the injection
-  of Mock Object implementations of the Logger interface.  This is something to consider when writing your own services, components and test.
-  
-Configuring Tapestry for other Logging Toolkits
-
-  The default configuration uses Log4J.
-  
-  If you need to use another logging system, that can be accomplished using Maven dependency control.
-  
-  You can exclude some of the dependencies that Tapestry introduces, and replace them with your own.  For example, to switch over to JDK logging, update your pom as follows:
-  
-----
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-ioc</artifactId>
-      <version>5.0.x</version>
-      <exclusions>
-      
-        <exclusion>
-          <groupId>org.slf4j</groupId>
-          <artifactId>slf4j-log4j12</artifactId>
-        </exclusion>
-      
-        <exclusion>
-          <groupId>log4j</groupId>
-          <artifactId>log4j</groupId>
-        </exclusion>
-
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-	  <artifactId>slf4j-jdk14</artifactId>
-	  <version>1.4.3</version>
-    </dependency>
-  </dependencies>
-----
-
-  This pulls out the log4j support normally included with Tapestry, and replaces it with the SLF4J library that wraps around JDK 1.4 logging.  
-
-  In all likelyhood, you'll replace <tapestry-ioc> with <tapestry-core> (assuming you are building a web application using Tapestry, rather than using Tapestry IoC as part of some other
-  application).  And, of course, version numbers change all the time!
-      
-  
-  
-	
-	
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/module.apt b/maint-5-2/tapestry-ioc/src/site/apt/module.apt
deleted file mode 100644
index fc528a5..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/module.apt
+++ /dev/null
@@ -1,271 +0,0 @@
- ---
- Tapestry IoC Modules
- ---
- 
-Tapestry IoC Modules
- 
-  You inform Tapestry about your services and contributions by providing a module class.
-
-  The module class is a plain Java class.  A system of annotations and naming conventions allow
-  Tapestry to determine what services are provided by the module.
-
-  A module class exists for the following reasons:
-
-  * To <bind> service interfaces to service implementations
-
-  * To contribute configuration data <into> services
-
-  * To <decorate> services by providing <interceptors> around them
-
-  * To provide explicit code for building a service
-  
-  * To set a default <marker> for all services defined in the module
-
-  []
-
-
-  All public methods of a module class must be meaningful to Tapestry (be one of the categories above).  Any extra
-  public methods result in startup exceptions (because the method may contain a typo).
-
-Service Builder Methods
-
-  Service builder methods were the original way to define a service and provide the logic to construct it;
-  although this is now more commonly (and succinctly) accomplished using the bind() method, there are
-  still many cases where service builder methods are useful.
-
-  Service builder methods are public methods. They are often static. Here's a trivial example:
-
-+-----------------------------------------------------------------------------------+
-package org.example.myapp.services;
-
-public class MyAppModule
-{
-  public static Indexer build()
-  {
-    return new IndexerImpl();
-  }
-}
-+-----------------------------------------------------------------------------------+
-
-  Any public method (static or instance) whose name starts with "build" is a service builder method, implicitly
-  defining a service within the module. 
-  
-  
-  Here we're defining a service around
-  the Indexer service interface (presumably also in the org.example.myapp.services
-  package).
-  
-  
-  Every service has a unique id, used to identify it throughout the Registry of services (the Registry
-  is the combined sum of all services from all modules). If you don't provide an explicit service id,
-  as in this example, the service id  is drawn from the return type; this service has an id of "Indexer".
-  
-  
-  You can give a service an explicit id by adding it to the method name:  buildIndexer().  This is useful
-  when you do not want the service id to match the service interface name (for example, when you have different
-  services that implement the same interface), or when you need to avoid name collisions on the 
-  method name (Java allows only a single method with a given name and set of parameters, even if the return
-  types are differenty, so if you have two different service builder methods that take the same parameters,
-  you should give them explicit service ids in the method name).
-  
-  
-  Tapestry IoC is {{{case.html}case insensitive}}; later we can
-  refer to this service as "indexer" or "INDEXER" or any variation thereof, and connect to
-  this service.
-  
-  Service ids must be unique; if another module contributes a service with the id "Indexer" 
-  (or any case variation thereof) a runtime exception will occur when the Registry is created.
-
-  We could extend this example by adding additional service builder methods, or by showing
-  how to inject dependencies. See {{{service.html#Injecting Dependencies}the service documentation}} 
-  for more details.
-  
-Autobuilding Services
-
-  An alternate, and usually preferred, way to define a service is via a module's bind() method.  The previous
-  example can be rewritten as:
-  
-+---+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class MyAppModule
-{
-  public static void bind(ServiceBinder binder)
-  {
-     binder.bind(Indexer.class, IndexerImpl.class);
-  }
-}
-+----+  
-
-  The {{{service.html}service}} documentation goes into much greater detail about autobuilding of services. In most cases,
-  autobuilding is the <preferred> approach.
-
-  Generally speaking, you should always bind and autobuild your services. The only exceptions are when:
-
-  * You wish to do more than just instantiate a class; for example, to register the class as an event listener with some other service.
-
-  * There is <no implementation class>; in some cases, you can create your implementation on the fly using JDK dynamic proxies or bytecode generation.
-
-  []
-
-  The bind() method must be static; an exception is thrown if the bind() method exists but is an instance method.
-
-{Cacheing Services}
-
-  You will occasionally find yourself in the position of injecting the same services
-  into your service builder or service decorator methods repeatedly (this occurs much less often since the introduction of
-  service autobuilding). This can result in quite
-  a bit of redundant typing.  Less code is better code, so as an alternative, you may define a <constructor> for your
-  module that accepts annotated parameters (as with 
-  {{{service.html#Injecting Dependencies}service builder injection}}).
-  
-  This gives you a chance to store common services in instance variables for later use inside 
-  service builder methods.
-  
-+-----------------------------------------------------------------------------------+
-
-public class MyModule
-{   
-  private final JobScheduler scheduler;
-  private final FileSystem fileSystem;
-  
-  public MyModule(JobScheduler scheduler, FileSystem fileSystem)
-  {
-    this.scheduler = scheduler;
-    this.fileSystem = fileSystem;
-  }
-  
-  public Indexer build()
-  {
-    IndexerImpl indexer = new IndexerImpl(fileSystem);
-      
-    scheduler.scheduleDailyJob(indexer);
-      
-    return indexer;
-  }
-}
-+-----------------------------------------------------------------------------------+
-
-  Notice that we've switched from <static> methods to <instance> methods.  Since the builder
-  methods are not static, the MyModule class will be instantiated so that the methods may be
-  invoked. The constructor receives two common dependencies, which are stored into instance
-  fields that may later be used inside service builder methods such as buildIndexer().
-  
-  This approach is far from required; all the builder methods of your module can be static if you wish.
-  It is used when you have many common dependencies and wish to avoid defining those
-  dependencies as parameters to multiple methods.
-
-  Tapestry IoC automatically resolves the parameter type (JobScheduler and FileSystem, in the example)
-  to the corresponding services that implement that type. When there's more than one
-  service that implements the service interface, you'll get an error (but additional annotations
-  and configuration can be used to ensure the correct service injected).
- 
-  For modules, there are two additional parameter types that are used to refer to <resources> that
-  can be provided to the module instance (rather than <services> which may be injected).    
-      
-  * {{{http://www.slf4j.org/api/org/slf4j/Logger.html}org.slf4j.Logger}}: logger for the module (derived from the module's class name)
-   
-  * {{{../apidocs/org/apache/tapestry5/ioc/ObjectLocator.html}ObjectLocator}}:  access to other services
-  
-  []
-  
-  Note that the fields are final: this is important. Tapestry IoC is thread-safe and you largely
-  never have to think about concurrency issues. But in a busy application, different services may be
-  built by different threads simultaneously. Each module class is a singleton, instantiated at most once, and
-  making these fields final ensures that the values are available across multiple threads.
-  Refer to Brian Goetz's {{{http://www.javaconcurrencyinpractice.com/}Java Concurrency in Practice}}
-  for a more complete explanation of the relationship between final fields, constructors, and threads ...
-  or just trust us!
-  
-  Care should be taken with this approach: in some circumstances, you may force a situation in which
-  the module constructor is dependent on itself. For example, if you invoke a method on any injected services
-  defined within the same module from the module class' constructor,
-  then the service implementation will be needed. Creating service implementations
-  requires the module builder instance ... that's a recursive reference. 
-    
-  Tapestry detects these scenarios and throws a runtime exception to prevent an endless loop.
-
-Module Class Implementation Notes
-
-  Module classes are designed to be very, very simple to implement.
-    
-  Again, keep the methods very simple. Use {{{service.html#Injecting Dependencies}parameter injection}}
-  to gain access to the dependencies you need.
-  
-  Be careful about inheritance. Tapestry will see all <public> methods,
-  even those inherited from base classes.  Tapestry <only> sees public methods.  
-  
-  By convention, module class names end in Module and are final classes.
-  
-  You don't <have> to define your methods as static. The use of static methods is only absolutely
-  necessary in a few cases, where the constructor for a module is dependent on contributions
-  from the same module (this creates a chicken-and-the-egg situation that is resolved through
-  static methods).
-  
-Default Marker
-
-  Services are often referenced by a particular marker interface on the method or contructor parameter. Tapestry
-  will use the intersection of services with that exact marker and assignable by type to find a unique service
-  to inject.  
-  
-  Often, all services in a module should share a marker, this can be specified with a @Marker annotation
-  on the module class.  For example, the TapestryIOCModule:
-  
-+---+
-@Marker(Builtin.class)
-public final class TapestryIOCModule
-{
-  . . .
-+---+
-
-  This references a particular annotation class, Builtin:
-  
-+---+
-@Target(
-{ PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface Builtin
-{
-
-}
-+----+
-
-  The annotation can be applied to method and constructor parameters, for use within the IoC container.  It can also be applied
-  to fields, though this is specific to the Tapestry web framework.
-
-Field Injection
-
-  The {{{../apidocs/org/apache/tapestry5/annotations/Inject.html}Inject}}
-  and {{{../apidocs/org/apache/tapestry5/annotations/InjectService.html}InjectService}}
-  annotations may be used on instance fields of a module class, as an alternative
-  to passing dependencies of the module in via the constructor.
-
-  Caution: injection via fields uses reflection to make the fields accessible. In
-  addition, it may not be as thread-safe as using the constructor to assign to
-  final fields.
-
-  Using this style, the previous example of a module class may be
-  rewritten:
-
-+-----------------------------------------------------------------------------------+
-public class MyModule
-{
-  @Inject
-  private JobScheduler scheduler;
-
-  @Inject
-  private FileSystem fileSystem;
-
-  public Indexer build()
-  {
-    IndexerImpl indexer = new IndexerImpl(fileSystem);
-      
-    scheduler.scheduleDailyJob(indexer);
-
-    return indexer;
-  }
-}
-+-----------------------------------------------------------------------------------+
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/order.apt b/maint-5-2/tapestry-ioc/src/site/apt/order.apt
deleted file mode 100644
index 599439c..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/order.apt
+++ /dev/null
@@ -1,59 +0,0 @@
- ----
- Ordering by Constraints
- ----
- 
-Ordering by Constraints
-
-  Tapestry IoC has two specific areas where it must put some form of contribution into
-  a specific order:
-  
-  * {{{configuration.html#Ordered List}Ordered Configurations}}, where different modules
-    may contribute into a service's configuration
-    
-  * {{{decorator.html}Service Decorators}} which must be applied to services from 
-    a number of modules.
-    
-  []
-  
-  In both these cases, objects (either contributions to a configuration, or decorators)
-  are assigning qualified ids, simple ids qualified with the containing/contributing
-  module's id.
-  
-  Because the contributions can come from different modules, and there isn't a specific
-  order in which the service contribution methods are invoked, there is no
-  natural ordering of the contributed objects.
-  
-  Instead, <constraints> are applied to each contribution.  These constraints
-  control what other objects must come before a contribution, or come after.
-  
-  The constraints are specified using the
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Order.html}Order}} annotation (for
-  service decorator methods), or as variable arguments at the end of the add() method
-  for ordered configurations.
-  
-  Often a single contribution will have more than one constraint.
-  
-Constraint Types
-  
-  Each constraint string begins with a prefix, "before:" or "after:", used to
-  identify  the type of constraint.
-  
-  The remainder of the constraint string is a comma-separated list of <patterns>. The
-  contributed object will be ordered before or after the contributions identified by
-  the patterns.
-  
-Constraint {Match Patterns}
-
-  A constraint match pattern is used to select one or more objects by their id.
-  
-  Match patterns support a very simple kind of wildcard matching.  A "*" may
-  appear at the start, or end, or both of the pattern, and will match zero or more
-  characters there.  Thus you can have patterns such as "Data*" or "*Logic" or even "*User*".
-
-  Matching is case insensitive.
-
-  
-  
-  
-  
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/overview.apt b/maint-5-2/tapestry-ioc/src/site/apt/overview.apt
deleted file mode 100644
index b3c0738..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/overview.apt
+++ /dev/null
@@ -1,398 +0,0 @@
- ----
- Tapestry IoC Overview
- ----
- 
-Tapestry IoC Overview
-
-  Even today, with the overwhelming success of {{{http://www.springframework.org}Spring}} and the rise of 
-  smaller, simpler approaches to building application that stand in sharp contrast to the ultra-heavyweight
-  EJB approach, many people still have trouble wrapping their heads around Inversion of Control.
-  
-  Really understanding IoC is a new step for many developers.  If you can remember back to when you made the transition
-  from procedural programming (in C, or BASIC) to object oriented programming, you might remember the point where you "got it". The point
-  where it made sense to have methods on objects, and data inside objects.  
-  
-  Inversion of Control builds upon those ideas.  The goal is to make coding more robust (that is, with fewer errors), more reusable and
-  to make code much easier to test.
-  
-  Most developers are used to a more <monolithic> design, they have a few core objects and a <<<main()>>> method somewhere
-  that starts the ball rolling.  <<<main()>>> instantiates the first couple of classes, and those classes
-  end up instantiating and using all the other classes in the system.
-  
-  That's an <unmanaged> system.  Most desktop applications are unmanaged, so it's a very familiar pattern, and easy to get your head around.
-
-  By contrast, web applications are a <managed> environment.  You don't write a main(), you don't control startup.  You <configure>
-  the Servlet API to tell it about your servlet classes to be instantiated, and their lifecycle is totally controlled by
-  the servlet container. 
-
-  Inversion of Control is just a more general application of this approach. The container is ultimately responsible for
-  instantiating and configuring the objects you tell it about, and running their entire lifecycle of those objects.
-
-  Building web applications are more complicated than monolithic applications, largely because of <multithreading>.
-  Your code will be servicing many different users simultaneously across many different threads.  This tends to complicate the
-  code you write, since some fundamental aspects of object oriented development get called into question: in particular, the use
-  of <internal state>, values stored inside instance variables, since in a multi-threaded environment, that's no longer the safe
-  place it is in traditional development.  Shared objects plus internal state plus multiple threads equals an broken, unpredictable application.
-  
-  Frameworks such as Tapestry -- both the IoC container, and the web framework itself -- exist to help.
-  
-  When thinking in terms of IoC, <<small is beautiful>>.  What does that mean?  It means small classes and small methods
-  are easier to code than large ones.  At one extreme, we have servlets circa 1997 (and Visual Basic before that) with methods a thousand lines long,
-  and no distinction between business logic and view logic.  Everything mixed together into an untestable jumble.
-  
-  At the other extreme is IoC: small objects, each with a specific purpose, collaborating with other small objects. 
-  
-  Using unit tests, in collaboration with tools such as {{{http://easymock.org/}EasyMock}}, you can have a code base that is easy to maintain,
-  easy to extend, and easy to test. And by factoring out a lot of <plumbing> code, your code base will not only be easier to work with, it will be smaller.
-  
-Living on the Frontier
-
-  Coding applications the traditional way is like being a homesteader on the American frontier in the 1800's.  You're responsible for
-  every aspect of your house: every board, every nail, every stick of furniture is something you personally created. There <is> a great
-  comfort in total self reliance. Even if your house is small, the windows are a bit drafty or the floorboards creak a little, you know exactly <why> 
-  things are not-quite perfect.
-  
-  Flash forward to modern cities or modern suburbia and it's a whole different story.  Houses are built to specification from design plans, made
-  from common materials, by many specializing tradespeople. Construction codes dictate how plumbing, wiring and framing should be performed.   
-  A home-owner may not even know how to drive a nail, but can still take comfort
-  in draft-free windows, solid floors and working plumbing.
-  
-  To extend the metaphor, a  house in a town is not alone and self-reliant the way a frontier house is.  The town house
-  is situated on a street, in a neighborhood, within a town. The town provides services
-  (utilities, police, fire control, streets and sewers) to houses in a uniform way. Each house just needs to connect up to those services.
-  
-The World of the Container
-
-  So the IoC container is the "town" and in the world of the IoC container, everything has a name, a place, and a relationship
-  to everything else in the container.  Tapestry calls this world "The Registry".
-  
-[images/ioc-overview.png] IoC Overview
-
-  Here we're seeing a few services from the built-in Tapestry IoC module, and a few of the services from the Tapestry web framework module.
-  In fact, there are over 100 services, all interrelated, in the Registry ... and that's before you add your own to the mix.  The IoC Registry
-  treats all the services uniformly, regardless of whether they are part of Tapestry, or part of your application, or part of an add-on library.
-  
-  Tapestry IoC's job is to make all of these services available to each other, and to the outside world.  The outside world could
-  be a standalone application, or it could be an application built on top of the Tapestry web framework.
-  
-Service Lifecycle
-
-  
-  Tapestry services are <lazy>, which means they are not fully instantiated until they are absolutely needed.  Often, what looks like a service
-  is really a proxy object ... the first time any method of the proxy is invoked, 
-  the actual service is instantiated and initialized (Tapestry uses the term <realized> for this process).  Of course, this is all absolutely
-  thread-safe.
-  
-  Initially a service is <defined>, meaning some module has defined the service. Later, the service will be <virtual>, meaning a proxy
-  has been created.  This occurs most often because some other service <depends> on it, but hasn't gotten around to invoking methods on it.  Finally, a service
-  that is ready to use is <realized>.  What's nice is that your code neither knows nor cares about the lifecycle of the service, because of the magic of the proxy.
-
-  In fact, when a  Tapestry web application starts up, before it services its first request, only about 20% of the services have been realized; the remainder
-  are defined or virtual.
-  
-Class vs. Service
-
-  A Tapestry service is more than just a class.  First of all, it is a combination of an <interface> that defines the operations of the service,
-  and an <implementation class> that implements the interface. 
-  
-  Why this extra division?  Having a service interface is what lets Tapestry create proxies and perform other operations.  It's also a very good practice to
-  code to an interface, rather than a specific implementation.  You'll often be surprised at the kinds of things you can accomplish by substituting
-  one implementation for another.
-  
-  Tapestry is also very aware that a service will have dependencies on other services.  It may also have other needs ... for example, in Tapestry IoC, the 
-  container provides services with access to Loggers.
-  
-  Tapestry IoC also has support for other configuration that may be provided to services when they are realized.
-
-Dependency Injection
-
-  Inversion of Control refers to the fact that the container, here Tapestry IoC's Registry, instantiates your classes.  It decides on when the classes
-  get instantiated.
-  
-  Dependency Injection is a key part of <realization>: this is how a service is provided with the other services it needs to operate.  For example,
-  a Data Access Object service may be injected with a ConnectionPool service.
-  
-  In Tapestry, injection occurs through constructors, through parameters to service builder methods, or through direct injection
-  into fields.   Tapestry prefers constructor injection, as this emphasizes
-  that dependencies should be stored in <<final>> variables.  This is the best approach towards ensuring thread safety.
-  
-  In any case, injection "just happens".  Tapestry finds the constructor of your class and analyzes the parameters to determine what to pass in.  In some cases,
-  it uses just the parameter type to find a match, in other cases, annotations on the parameters may also be used.  It also scans through the fields
-  of your service implementation class to identify which should have injected values written into them.
-  
-Why can't I just use <<<new>>>?
-
-  I've had this question asked me many a time.  All these new concepts seem alien.  All that XML (in the Spring or HiveMind IoC containers; Tapestry IoC uses no XML) is a burden.
-  What's wrong with <<<new>>>?
-
-  The problem with new is that it rigidly connects one implementation to another implementation.  Let's follow a progression that reflects how a lot of projects
-  get written.  It will show that in the real world, <<<new>>> is not as simple as it first seems.
-
-  This example is built around some work I've done recently involving a Java Messaging Service queue, part of an application performance monitoring
-  subsystem for a large application.  Code inside each server collects performance data of various types and sends it, via a shared JMS queue,
-  to a central server for collection and reporting.
-
-  This code is for a metric that periodically counts the number of rows in a key database table. Other implementations of MetricProducer
-  will be responsible for measuring CPU utilization, available disk space, number of requests per second, and so forth.
-
-+----+
-public class TableMetricProducer implements MetricProducer
-{
-  . . . 
-
-  public void execute() 
-  {
-
-    int rowCount = . . .;
-    Metric metric = new Metric("app/clients", System.currentTimeMillis(), rowCount);
-
-    new QueueWriter().sendMetric(metric);
-  }
-}
-+----+
- 
-  I've elided some of the details (this code will need a database URL or a connection pool to operate), 
-  so as to focus on the one method and it's relationship to the QueueWriter class.
- 
-  Obviously, this code has a problem ... we're creating a new QueueWriter for each metric we write into the queue, and the QueueWriter presumably is going to
-  open the JMS queue fresh each time, an expensive operation.  Thus:
-
-+----+
-public class TableMetricProducer implements MetricProducer
-{
-  . . . 
-
-  private final QueueWriter queueWriter = new QueueWriter();
-
-  public void execute() 
-  {
-    int rowCount = . . .;
-    Metric metric = new Metric("app/clients", System.currentTimeMillis(), rowCount);
-
-   queueWriter.sendMetric(metric);
-  }
-+-----+
-
-  That's better.  It's not perfect ... a proper system might know when the application was being shutdown and would shut down the JMS Connection
-  inside the QueueWriter as well.
-
-  Here's a more immediate problem:  JMS connections are really meant to be shared, and we'll have lots of little classes collecting different metrics.  So we need
-  to make the QueueWriter shareable:
-
-+----+
-  private final QueueWriter queueWriter = QueueWriter.getInstance();
-+----+
-
-  ... and inside class QueueWriter:
-
-+----+
-public class QueueWriter
-{
-  private static QueueWriter instance;
-
-  private QueueWriter()
-  {
-    ...
-  }
-
-  public static getInstance()
-  {
-    if (instance == null)
-      instance = new QueueWriter();
-
-    return instance;
-  }
-}
-+-----+
-
-  Much better!  Now all the metric producers running inside all the threads can share a single QueueWriter.  Oh wait ...
-
-+-----+
-  public synchronized static getInstance()
-  {
-    if (instance == null)
-      instance = new QueueWriter();
-
-    return instance;
-  }
-+----+
-
-  Is that necessary?  Yes.  Will the code work without it? Yes -- <<99.9% of the time>>.  In fact, this is a very common error
-  in systems that manually code a lot of these construction patterns: forgetting to properly synchronize access.  These things often work in development and testing,
-  but fail (with infuriating infrequency) in production, as it takes two or more threads running simultaneously to reveal the
-  coding error.
-
-  Wow, we're a long way from a simple <<<new>>> already, and we're talking about just one service. But let's detour into <testing>.
-
-  How would you test TableMetricProducer?  One way would be to let it run and try to find the message or messages it writes
-  in the queue, but that seems fraught with difficulties.  It's more of an integration test, and is certainly something
-  that you'd want to execute at some stage of your development, but not as part of a quick-running unit test suite.
-
-  Instead, let's split QueueWriter in two:  a QueueWriter interface, and a QueueWriterImpl implementation class. This will allow
-  us to run TableMetricProducer against a <mock implementation> of QueueWriter, rather than the real thing.  This is one
-  of the immediate benefits of <coding to an interface> rather than <coding to an implementation>.
-
-  We'll need to change
-  TableMetricProducer to take the QueueWriter as a constructor parameter.
-
-+----+
-public class TableMetricProducer implements MetricProducer
-{
-  private final QueueWriter queueWriter;
-
-  /**
-   * The normal constructor.
-   *
-   */
-  public TableMetricProducer(. . .)
-  {
-    this(QueueWriterImpl.getInstance(), . . .);
-  }
-
-  /**
-   * Constructor used for testing.
-   *
-   */
-  TableMetricProducer(QueueWriter queueWriter, . . .)
-  {
-    queueWriter = queueWriter;
-    . . . 
-  }
-
-  public void execute() 
-  {
-    int rowCount = . . .;
-    Metric metric = new Metric("app/clients", System.currentTimeMillis(), rowCount);
-
-   queueWriter.sendMetric(metric);
-  }
-}
-+----+
-
-  This still isn't ideal, as we still have an explicit linkage between TableMetricProducer and QueueWriterImpl.
-
-  What we're seeing here is that there are multple <concerns> inside the little bit of code in this example.  TableMetricProducer has an unwanted
-  <construction concern> about which implementation of QueueWriter to instantiate (this shows up as two constructors,
-  rather than just one).  QueueWriterImpl has an additional <lifecycle concern>, in terms
-  of managing the singleton.
-
-  These extra concerns, combined with the use of static variables and methods, are a <bad design smell>.  It's not yet very stinky, because
-  this example is so small, but these problems tend to multiply as an application grows larger and more complex, especially as services
-  start to truly collaborate in earnest.
-
-  For comparison, lets see what the Tapestry IoC implementation would look like:
-
-+----+
-public class MonitorModule
-{
-  public static void bind(ServiceBinder binder)
-  {
-    binder.bind(QueueWriter.class, QueueWriterImpl.class);
-    binder.bind(MetricScheduler.class, MetricSchedulerImpl.class);
-  }
-
-  public void contributeMetricScheduler(Configuration<MetricProducer> configuration, QueueWriter queueWriter, . . .)
-  {
-    configuration.add(new TableMetricProducer(queueWriter, . . .))
-  }
-}
-+----+
-
-  Again, I've elided out a few details related to the database the TableMetricProducer will point at (in fact, Tapestry IoC
-  provides a lot of support for configuration of this type as well, which is yet another concern).
-
-  The MonitorModule class is a Tapestry IoC module: a class that defines and configures services.
-
-  The bind() method is the principle way that services are made known to the Registry:  here we're binding
-  a service interface to a service implementation.  QueueWriter we've discussed already,
-  and MetricScheduler is a service that is responsible for determining when MetricProducer instances
-  run.
-
-  The contributeMetricScheduler() method allows the module to <contribute> into the MetricProducer service's <configuration>. More testability:
-  the MetricProducer isn't tied to a pre-set list of producers, instead it will have a Collection\<MetricProducer\> injected into its
-  constructor.  Thus, when we're coding the MetricProducerImpl class, we can test it against mock implementations of MetricProducer.
-
-  The QueueWriter service in injected into the contributeMetricScheduler() method.   Since there's only one QueueWriter service,
-  Tapestry IoC is able to "find" the correct service based entirely on type.  If, eventually, there's more than one QueueWriter service
-  (perhaps pointing at different JMS queues), you would use an annotation on the parameter to help Tapestry connect the parameter to the appropriate service.
-
-  Presumably, there'd be a couple of other parameters to the contributeMetricScheduler() method, to inject in a database URL or connection pool
-  (that would, in turn, be passed to TableMetricProducer).
-
-  A new TableMetricProducer instance is created and contributed in.  We could contribute as many producers as we like here.  Other modules could also
-  define a contributeMetricScheduler() method and contribute their own MetricProducer instances.
-
-  Meanwhile, the QueueWriterImpl class no longer needs the <<<instance>>> variable or getInstance() method, and the TableMetricProducer
-  only needs a single constructor.
-
-Advantages of IoC: Summary
-
-  It would be ludicrous for us to claim that applications built without an IoC container are doomed to failure. There is overwhelming evidence
-  that applications have been built without containers and have been perfectly successful.
-
-  What we are saying is that IoC techniques and discipline will lead to applications that are:
-
-  * More testable -- smaller, simpler classes; coding to interfaces allows use of mock implementations
-
-  * More robust -- smaller, simpler classes; use of final variables; thread safety baked in
-
-  * More scalable -- thread safety baked in
-
-  * Easier to maintain -- less code, simpler classes
-
-  * Easier to extend -- new features are often additions (new services, new contributions) rather than changes to existing classes
-
-  []
-
-  What we're saying is that an IoC container allows you to work faster and smarter.
-
-
-  Many of these traits work together; for example, a more testable application is inherently more robust. Having a test suite
-  makes it easier to maintain and extend your code, because its much easier to see if new features break existing ones. 
-  Simpler code plus tests also lowers the cost of entry for new developers
-  coming on board, which allows for more developers to work efficiently on the same code base.  The clean separation between
-  interface and implementation also allows multiple developers to work on different aspects of the same code
-  base with a lowered risk of interference and conflict.
-
-  By contrast, traditional applications, which we term <monolithic> applications, are often very difficult to test, because 
-  there are fewer classes, and each class has multiple concerns. A lack of tests makes it more difficult to
-  add new features without breaking existing features. Further, the monolithic approach 
-  more often leads to implementations being linked to other implementations, yet another hurdle standing in the  way of testing.
-
-  Let's end with a metaphor.
-
-  Over a decade ago, when Java first came on the scene, it was the first mainstream language to support garbage collection.
-  This was very controversial: the garbage collector was seen as unnecessary, and a waste of resources.  Among
-  C and C++ developers, the attitude was "Why do I need a garbage collector?  If I call malloc() I can call free()."
-
-  I don't know about you, but I don't think I could ever go back to a non-garbage collected environment. Having the GC
-  around makes it much easier to code in a way I find natural: many small related objects working together. It turns out
-  that knowing when to call free() is more difficult than it sounds.  The Objective-C language tried to solve this with retain
-  counts on objects and that still lead to memory leaks when it was applied to object <graphs> rather than object <trees>.  
-
-  Roll the clock forward a decade and the common consensus has shifted considerably. Objective-C 2.0 features
-  true garbage collection and GC libraries are available for C and C++.  All scripting languages, including Ruby and Python, feature
-  garbage collection as well.  A new language <without> garbage collection is now considered an anomaly.
-
-  The point is, the lifecycle of objects turns out to be far more complicated than it looks at first glance. We've come to accept that our
-  own applications lack the ability to police their objects as they are no longer needed (they literally lack the ability to determine
-  <when> an object is no longer needed) and the garbage collector, a kind of higher authority, takes over that job very effetively.  The end result?
-  Less code and fewer bugs.  And a careful study shows that the Java memory allocator and garbage collector (the two are
-  quite intimately tied together) is actually
-  <<more>> efficient that malloc() and free().
-
-  So we've come to accept that the <death concern> is better handled outside of our own code.  The use of Inversion of Control
-  is simply the flip side of that: the <lifecycle and construction concerns> are also better handled by an outside authority as well: the IoC container. 
-  These concerns govern when a service is <realized> and how its dependencies and configuration are injected.  As with
-  the garbage collector, ceding these chores to the container
-  results in less code and fewer bugs, and lets you concentrate on the things that should matter to you: your business logic, your application -- and not
-  a whole bunch of boilerplate plumbing!
-
-
-  
-
-
-  
-  
-  
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/parallel.apt b/maint-5-2/tapestry-ioc/src/site/apt/parallel.apt
deleted file mode 100644
index 7683bd7..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/parallel.apt
+++ /dev/null
@@ -1,56 +0,0 @@
-  ---
-  Parallel Execution
-  ---
-
-Parallel Execution
-
-  The
-  {{{../apidocs/org/apache/tapestry5/ioc/services/ParallelExecutor.html}ParallelExecutor}}
-  allows a computation to occur in parallel.
-
-  It can be used in two ways.  First, with an explicit Future:
-
-----
-   Future<String> future = executor.invoke(new Invokable<String>() { ... });
-----
-
-   The executor will submit the Invokable to a thread pool for execution in the background.
-
-   The ultimate value of the Invokable is available from invoking get() on the Future; this will
-   block until the value is ready.
-
-   Other methods on  Future can cancel the execution, or get the value only if it is ready
-   within a timeout.
-
-   The thread pool is started automatically as needed, and will shutdown when the Registry
-   itself is shutdown.
-
-   Another alternative will return an object, not a Future:
-
-----
-  RSSFeed feed = executor.invoke(RSSFeed.class, new Invokable<RSSFeed>() { ... });
-----
-
-  This only works if the type is an interface.  A proxy for the interface is created around
-  the Future object; any invocation on the proxy will invoke get() on the Future.
-  
-
-Configuration
-
-  Configuraton symbols are defined in
-  {{{../apidocs/org/apache/tapestry5/ioc/IOCSymbols.html}IOCSymbols}}.
-
-  [tapestry.thread-pool-enabled]
-    If "true", the default, then the thread pool will operate. If "false", then
-    ParallelExecutor's implementation changes to invoke the Invokable immediately, not
-    in a pooled thread.
-
-  [tapestry.thread-pool.core-pool-size]
-    Minimum size of the thread pool. Defaults to 3.
-
-  [tapestry.thread-pool.max-pool-size]
-    Maximum number of threads (active or inactive) in the thread pool. Defaults to 20.
-
-  [tapestry.thread-pool.keep-alive]
-    Time to keep waiting threads alive. Defaults to "1 m" (one minute). 
-
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/pipeline.apt b/maint-5-2/tapestry-ioc/src/site/apt/pipeline.apt
deleted file mode 100644
index a8fe464..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/pipeline.apt
+++ /dev/null
@@ -1,102 +0,0 @@
- ----
- Building Pipelines
- ----
- 
-Building Pipelines
-
-  A common pattern within Tapestry is the use of filtering pipelines.   Another name
-  for a pipeline is a <filter chain>; an example of this is the Filter and FilterChain
-  interfaces inside the Servlet API.
-
-  In this pattern, an existing service is decorated with a filter.
-  The filter will delegate to the service, but has the chance to
-  alter or replace parameters before invoking the method, and
-  can perform operations before returning.  This is
-  similar to {{{command.html}chain of command}}, but differs in that
-  there are two interfaces (the service interface and the filter interface)
-  and that each filter invokes the next filter via the service interface.
-  In chain of command, the chain invokes each method, which must return 
-  before the next command in the chain is invoked.
-  
-  The service interface and the filter interface are closely related:
-  the filter interface must match the service interface method for method,
-  but each method of the filter interface must have an additional parameter
-  whose type is the service interface. For example, a pipeline
-  that performed string transformations might use the following interfaces:
-  
-+------+
-public interface StringTransformService
-{
-  String transform(String input);
-}
-
-public interface StringTransformFilter
-{
-  String transform(String input, StringTransformService delegate);
-}
-+-----+
-
-  An implementation of the filter might look like:
-  
-+-----+
-public class UpcasePreFilter implements StringTransformFilter
-{
-  public String transform(String input, StringTransformService delegate)
-  {
-    return delegate.transform(input.toUpperCase());
-  }
-}
-+-----+
-
-  Alternately, the filter could pass input to delegate unchanged, but invoke
-  toUpperCase() on the result:
-  
-+-----+
-public class UpcasePostFilter implements StringTransformFilter
-{
-  public String transform(String input, StringTransformService delegate)
-  {
-    return delegate.transform(input).toUpperCase();
-  }
-}
-+-----+  
-
-  The
-  {{{../apidocs/org/apache/tapestry5/ioc/services/PipelineBuilder.html}PipelineBuilder}}
-  service is useful for constructing pipelines. The service is often injected
-  into a service builder method, along with an ordered configuration of services.
-  
-  What the builder accomplishes is to represent each <filter> in the pipeline as
-  an instance of the <service> interface.
-  
-[images/PipelineCallingSequence.png] Pipeline Calling Sequence
-  
-  The bridges are created by the PipelineBuilder service.  The terminator
-  must be provided.  The bridges and the terminator implement the service interface.
-  
-+-----+
-  public static StringTransformService build(
-    @InjectService("PipelineBuilder")
-    PipelineBuilder builder,
-    List<StringTransformFilter> configuration,
-    Log serviceLog)
-    {
-      
-      StringTransformService terminator = new StringTransformService()
-      {
-        public String transform(String input)
-        {
-          return input;
-        }
-      };
-      
-      return builder.build(log,
-        StringTransformService.class, StringTransformFilter.class,
-        configuration,
-        terminator);
-    }    
-+-----+
-
-  Here, we create the terminator for the pipeline as an inner class instance,
-  and feed that into the builder. The result is a new service that encapsulates
-  the entire pipeline.  When there are no filters, this is just the terminator.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/provider.apt b/maint-5-2/tapestry-ioc/src/site/apt/provider.apt
deleted file mode 100644
index c51bf70..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/provider.apt
+++ /dev/null
@@ -1,104 +0,0 @@
- ----
- Object Providers
- ----
-
-Object Providers
-
-  When you don't provide the {{{../apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html}InjectService}} annotation
-  on a parameter (to a service builder method or constructor), Tapestry will
-  resolve the parameter automatically.
-  
-  This is called <object injection>, rather than <service injection>, because the value that will ultimately
-  be injected is not necessarily a service; it may be some arbitrary object.
-  
-  If this sounds vague, its because there is not just one
-  {{{../apidocs/org/apache/tapestry5/ioc/ObjectProvider.html}ObjectProvider}}; there's a whole set of them,
-  forming a {{{command.html}chain of command}}.  The commands in the chain may provide an object
-  based on the parameter type, or based on additional annotations on the parameter.
-  
-  There are several built-in object providers:
-  
-  * Check for {{{../apidocs/org/apache/tapestry5/ioc/annotations/Value.html}Value}} annotation
-
-  * Check for {{{../apidocs/org/apache/tapestry5/ioc/annotations/Symbol.html}Symbol}} annotation
-
-  * Check for a <unique> service in the Registry whose service interface matches the parameter type
-  
-  []
-  
-  Usually, the @Inject annotation is supplemented by an additional annotation which
-  triggers a specific  ObjectProvider to provide the value.
-  
-@Value Annotation Provider
-
-  The Value annotation
-  allows a literal value to be injected.  When combined with 
-  {{{symbols.html}symbols}}, they represent a way for parts of the overall service
-  network to be spot-configured.  For example:
-  
-+----+
-  public MyService build(@Value("${max-seconds}") long maxSeconds)
-  {
-    return new MyServiceImpl(maxSeconds);
-  }
-+----+
-
-  Here, the MyService service requires a configuration of a number of seconds.
-  The value is supplied as a symbol, with a factory default that may be overwritten
-  with an application default.
-
-  Usually, the symbol reference is only part of the string, i.e. <<<@Value("$\{report.dir}/$\{report.name}.txt")>>>
-
-@Symbol Annotation Provider
-
-   This is closely related to the @Value annotation approach, except that the annotation
-   directly specifies a symbol name.
-
-+----+
-  public MyService build(@Symbol("max-seconds") long maxSeconds)
-  {
-    return new MyServiceImpl(maxSeconds);
-  }
-+----+
-
-Service Provider
-
-  This is always that last object provider checked.
-  
-  A <single> service must exist whose service interface matches the parameter type.  This is <not> an exact match: a search is made for any and all
-  services whose service interface is a super class of the parameter type.  
-  
-  An exception is thrown if there are no matches, or if there are multiple matches.
-
-  
-Alias Object Provider
-
-  The {{{../tapestry-core/}tapestry-core}} module
-  defines the 
-  {{{../tapestry-core/guide/alias.html}Alias object provider}},
-   which is used as a way to override services or
-  disambiguate services (when multiple services implement the same interface).  
-    
-Defining New Providers
-
-  New providers can be specified by contributing to the
-  MasterObjectProvider service's configuration.  The configuration
-  is mapped, with the keys being the provider prefix, and the values
-  being the object provider implementation.
-  
-  Example:
-  
-+-----+
-  public void contributeMasterObjectProvider(OrderedConfiguration<ObjectProvider> configuration)
-  {
-    configuration.add("MyObject", new MyObjectProvider());
-  }
-+-----+
-
-  This establishes a name for the object provider (useful if the exact order of execution of the
-  provider, relative to other providers, is relevant). 
-
-  Of course, this is a simplified example. In a real scenario, the provider is most likely
-  a service with its own dependencies.      
-  
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/reload.apt b/maint-5-2/tapestry-ioc/src/site/apt/reload.apt
deleted file mode 100644
index b93999e..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/reload.apt
+++ /dev/null
@@ -1,57 +0,0 @@
- ----
- Service Implementation Reloading
- ----
- 
-Service Implementation Reloading
-
-  Tapestry's ability to live reload page and component classes is a huge boon to development productivity, but what about reloading services?
-  
-  On the one hand, a good application design keeps the page and component classes "thin" and moves logic into the services layer, for easier
-  reuse across pages.  On the other hand, services don't auto-reload the way pages do, which makes developing that way less agile.
-  
-  Starting in release 5.2, service implementations now reload.  There's a number of restrictions on this, and a couple of
-  {{{http://en.wikipedia.org/wiki/Leaky_abstraction}leaky abstractions}}, but on the whole its quite serviceable.
-  
-  As of release 5.2, you can change your service implementation, and Tapestry picks up the change immediately. A service can even change its
-  dependencies when being reloaded ... but it can't change its interface.
-  
-Limitations
-
-  * Reloading only works for services, and only for services with the default service scope (i.e., global singletons).  Live reloading
-    does not apply to <modules>, <service interfaces>, contributions, or anything but just the service implementation.
-  
-  * Reloading is limited to proxyable services: services with an interface and an implementation of that interface.
-  
-  * Reloading requires that the underlying class files be simple, local, filesystem files (not, for example, files inside a JAR).
-      
-  * If a service has internal state of any kind, that state is lost when the class is reloaded and the service re-instantiated. However, if
-    a service has a configuration, the configuration will be <reconstructed> and injected into the service.
-    
-  * Services are decorated only once, so any decorations or advice applies to the initially loaded version of the class, and will not be
-    recalculated when the class changes.
-      
-  []
-  
-Class Loader Issues
-
-  Tapestry creates a new class loader for <each service implementation>. When the underlying .class file changes, the class loader
-  is discarded along with the instance, and a new class loader is created.
-  
-  The class loader only loads the service implementation class, and any inner classes for the service implementation.  
-  All other classes are loaded by the standard class loader for the application.
-  
-  Because of how class loaders work, the class will no longer be able to access package private classes and members of other classes
-  in the same package. You may see some odd IllegalAccessErrors and need to change the visibility of package-private classes to be public.
-  
-  The JVM should be able to eventually garbage collect the class loader.  However, if the class publishes itself to some other service (for example,
-  adding itself as a listener to an event published by some other service), then the instance and the garbage collector
-  will be leaked.  <<Be careful about publishing any instances of a reloadable class>>.
-  
-Update Checks
-
-  Update checks are normally driven by tapestry-core, which periodically checks for changed templates, message catalogs, and component classes. Checks 
-  for changed service implementation classes occur at the same time.  
-  
-  In an application that is not driven by the web tier, you will need to periodically invoke the fireCheckForUpdates() method of the
-  {{{../apidocs/org/apache/tapestry5/services/UpdateListenerHub.html}UpdateListenerHub}} service (which was moved from tapestry-core to tapestry-ioc
-  for this purpose).
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/run.apt b/maint-5-2/tapestry-ioc/src/site/apt/run.apt
deleted file mode 100644
index 90ad745..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/run.apt
+++ /dev/null
@@ -1,77 +0,0 @@
- ----
- Starting the Tapestry IoC Registry
- ----
- 
-Starting the Tapestry IoC Registry
-
- Primarily, you will use the IoC Registry as part of a Tapestry application.
- In those situations, the 
- {{{../apidocs/org/apache/tapestry5/TapestryFilter.html}TapestryFilter}} will
- be responsible for starting and stopping the registry.
- 
- However, you may want to do some integration testing using the Registry
- from within a test case, or you may even use Tapestry IoC separately from
- Tapestry.
- 
-Building the Registry
-
-  The class
-  {{{../apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html}RegistryBuilder}}
-  is used to create a Registry.
-  
-+---+
-RegistryBuilder builder = new RegistryBuilder();
-
-builder.add(AppModule.class, UtilModule.class);
-
-Registry registry = builder.build();
-
-registry.performRegistryStartup();
-+---+
-
-  You may invoke add() as many times as you wish, or pass as many module classes
-  as you wish.
-  
-  Using this approach, you will form a Registry containing
-  the builtin services from the
-  {{{../apidocs/org/apache/tapestry5/ioc/services/TapestryIoCModule.html}Tapestry IoC module}}, plus
-  the modules you explicitly list.
-  
-  The call to performRegistryStartup() is necessary to ensure that any services marked with the
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html}EagerLoad}} annotation are, in fact,
-  loaded.
-  
-  As of version 5.2 the class
-  {{{../apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html}RegistryBuilder}}
-  has convenience methods to build and start a Registry. The static method 
-  {{{../apidocs/org/apache/tapestry5/ioc/RegistryBuilder.html#buildAndStartupRegistry(java.lang.Class...)}RegistryBuilder.buildAndStartupRegistry(Class...)}} 
-  constructs a registry, adds a number of modules to the registry and performs registry startup. The returned registry is ready to use.
-  
-+---+
-Registry registry = RegistryBuilder.buildAndStartupRegistry(AppModule.class, UtilModule.class);
-+---+
-  
-Building the Default Registry
-
-  The default registry is available by invoking the static method
-  {{{../apidocs/org/apache/tapestry5/ioc/IOCUtilities.html#buildDefaultRegistry()}IOCUtilities.buildDefaultRegistry()}}.
-  This method builds a Registry using
-  {{{autoload.html}autoloading logic}}, where modules to load
-  are identified via a JAR Manifest entry.
-  
-  In addition, the JVM system property <<<tapestry.modules>>> (if specified) is a list of additional
-  module classes to load.  This is often used in development, where tests may be executed against
-  the local classes, not JARs, and so there no manifest to read.
-  
-  
-Shutting down the Registry
-
-  The method
-  {{{../apidocs/org/apache/tapestry5/ioc/Registry.html#shutdown()}Registry.shutdown()}}
-  will shutdown the Registry. This immediately invalidates all service proxies.
-  Some services may have chosen to register for shutdown notification (for example,
-  to do cleanup work such as closing a database connection).
-  
-  Once the Registry is shutdown, it may not be used again: it will not be possible to
-  access services within the Registry, or invoke methods on services previously
-  acquired.  All you can do is release the Registry to the garbage collector.
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/serialization.apt b/maint-5-2/tapestry-ioc/src/site/apt/serialization.apt
deleted file mode 100644
index b188f6f..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/serialization.apt
+++ /dev/null
@@ -1,51 +0,0 @@
- ----
- Service Serialization
- ----
-
-Service Serialization
-
-  Every once in a while you may need to serialize a service.  For example, you may store an object into
-  the HttpSession that holds a reference to a service.  In a clustered environment, that object will
-  be serialized and broadcast to other servers in the cluster.
-
-  Services in Tapestry are serializable.  Specifically, service <proxies> are serializable.
-
-  Your service implementations <do not> have to be serializable.
-
-  Serialization works as follows:
-
-  * When a proxy is serialized, it instead serializes a <token> object.
-
-  * The token object is what's stored in the output stream.
-
-  * When the token is de-serialized, it locates the service proxy in the current Registry and returns that.
-
-  []
-
-  The end result is very efficient: just the tiny tokens are serialized, not the services with their
-  proxies, configurations, implementations, dependencies, internal state and so forth.
-
-  Again, note that the actual service implementation is not serialized.  Due to Tapestry's lazy  creation policy,
-  the service implementation may not even exist.  Since outside code only sees the proxy, there's no
-  difference.
-
-Registry Resolution
-
-  The one trick here is locating the service proxy.  Tapestry uses a <weak reference> to the Registry to do this.
-  When a Registry starts up, it is stored in the reference, so that de-serialization can work.
-
-  The reference is cleared when you shut down the Registry.  If you stop using the Registry, but fail to
-  shut it down, the weak reference ensures that it will be released to the garbage collector anyway.  Stil, you
-  should shutdown a Registry when done with it.
-
-  This all makes one BIG assumption: that there's just one Registry.  That's normal for a web application, especially
-  when the tapestry-ioc JAR is included as part of the web application's WAR.
-
-  If you are running multiple Registries you will likely see errors in your console:
-
-+---+
-[ERROR] SerializationSupport Setting a new service proxy provider when there's already an existing provider. This may indicate that you have multiple IoC Registries.
-+---+
-
-
-
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/service.apt b/maint-5-2/tapestry-ioc/src/site/apt/service.apt
deleted file mode 100644
index 572744f..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/service.apt
+++ /dev/null
@@ -1,745 +0,0 @@
- ----
- Tapestry IoC Services
- ----
- 
-Tapestry IoC Services
-
-  Services consist of two main parts: a service interface and a service implementation.
-  
-  The service interface is how the service will be represented throughout the rest of the
-  registry. Since what gets passed around is normally a proxy, you can't expect to cast a service
-  object down to the implementation class (you'll see a ClassCastException instead). In other
-  words, you should be careful to ensure that your service interface is complete, since
-  Tapestry IoC effectively walls you off from backdoors such as casts.
-  
-Service Life-cycle
-
-  Every service has a very specific life-cycle.
-
-  * Defined: The service has a definition (from some module) but has not yet been referenced.
-
-  * Virtual: The service has been referenced, so a proxy for the class has been created.
-
-  * Realized: A method on the proxy has been invoked, so the service implementation has 
-    been instantiated, and any decorators applied.
-
-  * Shutdown: The entire Registry has been shut down and with it, all the proxies have been disabled.
-
-  []
-
-  When the Registry is first created, all modules are scanned and the definitions for all services
-  are created.  
-
-  Services will be referenced by either accessing them using the Registry, or as dependencies
-  of other realized services.  
-
-  Tapestry IoC waits until the last possible moment to <realize> the service: that's defined
-  as when a method of the service is invoked. Tapestry is <thread-safe>, so even in a heavily
-  contested, highly threaded envrionment (such as a servlet container or application server) 
-  things <Just Work>.
-
-Service Builder Methods
-
-  Tapestry doesn't know how to instantiate and configure your service; instead it relies
-  on you to provide the code to do so, in a service builder method:
-  
-+-----------------------------------------------------------------------------------+
-package org.example.myapp.services;
-
-public class MyAppModule
-{
-  public static Indexer build()
-  {
-    return new IndexerImpl();
-  }
-}
-+-----------------------------------------------------------------------------------+
-
-  Here the service interface is Indexer (presumably inside the org.example.myapp.services package,
-  since there isn't an import).  Tapestry IoC doesn't know about the IndexerImpl class (the
-  service implementation of the Indexer service), but it does know 
-  about the build() method.
-  
-  That's one of the great innovations of Tapestry IoC: we don't try to encapsulate in XML or annotations
-  all the different ways possible to create a service; those things are best expressed in Java code.
-  For a simple case (as here), it would be hard for external configuration (again, in XML or Java annotations)
-  to be shorter than "new IndexerImpl()".
-
-  <The above paragraph was written before Binding and Autobuilding were introduced.>
-  
-  For more complex and realistic scenarios, such as injecting dependencies via the constructor, or
-  doing more interest work (such as registering the newly created service for events published by some other service),
-  the Java code is simply the most direct, flexible, extensible and readable approach.
-  
-Binding and Autobuilding
-
-  Tapestry IoC can also <autobuild> your service. Autobuilding is the <preferred> way to 
-  instantiate your services.
-
-  Every module may have an optional, static bind() method which is passed a
-  {{{../apidocs/org/apache/tapestry5/ioc/ServiceBinder.html}ServiceBinder}}.  Services may be registered with
-  the container by "binding" a service interface to a service implementation:
-  
-+------+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class MyAppModule
-{
-  public static void bind(ServiceBinder binder)
-  {
-    binder.bind(Indexer.class, IndexerImpl.class);
-  }
-}
-+----+
-
-  You can make repeated calls to ServiceBinder.bind(), to bind additional services.
-
-
-  You might ask, "which is better, a builder method for each service, or a bind() method for the module?"  For simple services,
-  those that are just an instantiated instance with simple dependencies, binding is better than building. That covers
-  at least 90% of all services, so bind away!
-  
-  There are many cases, however, where constructing a service is more than just instantiating a class. Often the new service
-  will (for example) be registered as a listener with some other service. In other cases, the implementation of the
-  service is generated at runtime. These are where the service builder methods are most useful.
-
-  In terms of the evolution of the framework, service builder methods came first, and autobuilding was a later
-  addition, inspired by the terseness of the {{{http://code.google.com/p/google-guice/}Guice}} IoC container.
-
-
-  Following the convention over configuration principle, the autobuilding of services can be even less verbose.
-  If a service interface is passed as a single argument to the bind() method, Tapestry will try to find an implementation in the
-  same package whose name matches the name of the service interface followed by the suffix <Impl>.
-  
-+------+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class MyAppModule
-{
-  public static void bind(ServiceBinder binder)
-  {
-    binder.bind(Indexer.class);
-  }
-}
-+----+
-    
-Service Ids
-
-  Every service will have a unique service id. 
-  
-  When using a service builder method, the service id is the <simple name> of the service interface.
-  
-  This can be overridden by adding the {{{../apidocs/org/apache/tapestry5/ioc/annotations/ServiceId.html}ServiceId}} annotation to the service builder method:
-  
-+---+
-  @ServiceId("FileSystemIndexer")
-  public static Indexer buildIndexer(@InjectService("FileSystem") FileSystem fileSystem)
-  {
-     . . .
-  }
-+----+
-  
-  Another option is to add the service id to the method name, after "build", for example:
-  
-+---+
-  public static Indexer buildFileSystemIndexer(@InjectService("FileSystem") FileSystem fileSystem)
-  {
-     . . .
-  }
-+----+
-
-  Here, the service id is "FileSystemIndexer" not "Indexer".
-  
-  For autobuilt services, the service id can be specified by placing the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/ServiceId.html}ServiceId}} annotation directly 
-  on a service implementation class. 
-
-+---+
-  @ServiceId("FileSystemIndexer")
-  public class IndexerImpl implements Indexer
-  {
-      ...
-  }
-+---+
-
-  When the service is bound, the value of the annotation is used as id:
-  
-+---+
-  binder.bind(Indexer.class, IndexerImpl.class);
-+---+
-  
-  This id can be overriden again by calling the method {{{../apidocs/org/apache/tapestry5/ioc/ServiceBindingOptions.html#withId(java.lang.String)}withId}}
-  
-+---+
-  binder.bind(Indexer.class, IndexerImpl.class).withId("FileSystemIndexer");
-+---+
-  
-{Injecting Dependencies}
-
-  It's pretty unlikely  that your service will be able to operate in a total vacuum. It will
-  have other dependencies.  
-  
-  Dependencies are provided to a service in one of several ways:
-  
-  * As parameters to the service builder method
-  
-  * As parameters to the service implementation class' constructor (for autobuilt services)
-  
-  * As parameters passed to the constructor of the service's module class (to be cached inside instance variables)
-
-  * Directly into fields of the service implementation
-  
-  []
-   
-  
-  For example, let's say the Indexer needs a JobScheduler to control
-  when it executes, and a FileSystem to access files and store indexes.
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer build(JobScheduler scheduler, FileSystem fileSystem)
-  {
-    IndexerImpl indexer = new IndexerImpl(fileSystem);
-      
-    scheduler.scheduleDailyJob(indexer);
-      
-    return indexer;
-  }
-+-----------------------------------------------------------------------------------+
-
-  Tapestry assumes that parameters to builder methods are dependencies; in this example
-  it is able to figure out what services to pass in based just on the type (later we'll
-  see how we can fine tune this with annotations, when the service type is not sufficient
-  to identify a single service).
-
-  This is an example of when you would want to use the service builder method, rather than
-  just binding the service interface to the implementation class: because we want to do something extra,
-  in this case, register the new indexer service with the scheduler.
-  
-  Note that we don't invoke those service builder methods ... we just "advertise" that we need
-  the named services.  Tapestry IoC will provide the necessary proxies and, when we start to
-  invoke methods on those proxies, will ensure that the full service, including its
-  interceptors and its dependencies, are ready to go. Again, this is done in a 
-  thread-safe manner.   
-
-  What happens if there is more than one service that implements the JobScheduler interface, or
-  the FileSystem interface?  You'll see a runtime exception, because Tapestry is unable to resolve
-  it down to a <single> service. At this point, it is necessary to <disambiguate> the link between
-  the service interface and <one> service.  One approach is to use
-  the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/InjectService.html}InjectService}} annotation:
-  
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer build(@InjectService("JobScheduler")
-    JobScheduler scheduler, 
-    
-    @InjectService("FileSystem")
-    FileSystem fileSystem)
-  {
-    IndexerImpl indexer = new IndexerImpl(fileSystem);
-      
-    scheduler.scheduleDailyJob(indexer);
-      
-    return indexer;
-  }
-+-----------------------------------------------------------------------------------+  
-  
-  If you find yourself injecting the same dependencies into multiple service builder 
-  (or service decorator) methods, you can 
-  {{{module.html#Caching Services}cache dependency injections}} in your module, by defining
-  a constructor.  This reduces duplication in your module.
- 
-Disambiguation with Marker Annotations
-
-  In the previous example we were faced with a problem: multiple versions of the JobScheduler
-  service.  They had the same service interface but unique service ids.  If you try to inject
-  based on type, the service to inject will be ambiguous.  Tapestry will throw an exception (identifying
-  the parameter type and the matching services that implement that type).
-
-  The problem is that when injecting a JobScheduler into some other service we need to know 
-  which <one> to inject. Rather than using the service id, another approach is to
-  use a <marker annotation>.
-
-  You may optionally link a service implementation with a marker annotation.
-
-  For example, maybe you have one JobScheduler implementation where the jobs are spread across
-  a number of nodes in a cluster, and you have another JobScheduler where the jobs are all executed exclusively
-  in the current process.
-
-  We can associate those two JobSchedulers with two annotations.
-
-+----+
-@Target(
-{ PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface Clustered
-{
-
-}
-
-@Target(
-{ PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface InProcess
-{
-
-}
-
-
-public class MyModule
-{
-  public static void bind(ServiceBinder binder)
-  {
-    binder.bind(JobScheduler.class, ClusteredJobSchedulerImpl.class).withId("ClusteredJobScheduler").withMarker(Clustered.class);
-    binder.bind(JobScheduler.class, SimpleJobSchedulerImpl.class).withId("InProcessJobScheduler").withMarker(InProcess.class);
-  }
-}
-+---+
-
-  Notice that the marker annotations have no attributes.  Further, we support markers on fields
-  (for use in Tapestry components) as well as parameters.
-
-  To get the right version of the service, you use one of the annotations:
-
-+---+
-public class MyServiceImpl implements MyService
-{
-  private final JobScheduler jobScheduler;
-
-  public MyServiceImpl(@Clustered JobScheduler jobScheduler)
-  {
-    this.jobScheduler = jobScheduler;
-  }
-
-  . . .
-}  
-+---+
-
-  The @Clustered annotation on the parameter is combined with the parameter type (JobScheduler) to find the exact
-  service implementation.
-
-  Why is this better than using the service id?  It's more refactoring-safe.  Service ids can change, which can break
-  your services.  However, using an IDE to rename or move an annotation class or service interface
-  will be able to update all the uses of the annotation or interface.
-
-  With a service builder method, you use the
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Marker.html}@Marker}} annotation:
-
-+---+
-  @Marker(Clustered.class)
-  public JobScheduler buildClusteredJobScheduler()
-  {
-    return . . .;
-  }
-+---+
-
-  The @Marker annotation may also be placed on an implementation class, which means that you may omit
-  the call to withMarker() inside the bind() method.
-
-  Finally, the point of injection may have multiple marker annotations; only services that are marked
-  with <all> those markers will be considered for injection. Each marker annotation creates an increasingly narrow
-  subset from the set of all possible services (compatible with the indicated dependency type).
-
-Local Dependencies
-
-  A special marker interface,
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Local.html}@Local}},
-  indicates a dependency that should only be resolved using services from within <the same module>.   
-
-  @Local can also be combined with other marker annotations.
-
-Injecting Dependencies for Autobuilt Services
-
-  With autobuilt services, there's no service builder method in which to specify injections.
-  
-  Instead, the injections occur on <constructor> for the implementation class:
-  
-+---+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-public class IndexerImpl implements Indexer
-{
-  private final FileSystem fileSystem;
-  
-  public IndexerImpl(@InjectService("FileSystem") FileSystem fileSystem)
-  {
-    this.fileSystem = fileSystem;
-  }
-
-  . . .
-}
-+---+  
-
-  If the class has multiple constructors, the constructor with the <most> parameters will be invoked.
-  Alternately, you may mark a single constructor with the Inject annotation, and Tapestry will use
-  <that> constructor specifically, ignoring all other constructors.
-  
-  Note how we are using final fields for our dependencies; this is generally a Good Idea.
-  These services will often execute inside a multi-threaded environment, such as a web application,
-  and the use of final fields inside a constructor ensures that the fields will be properly published
-  (meaning, "visible to other threads") in accordance with the Java Memory Model.
-  
-  Once thing that is not a good idea is to pass in another service, such as JobScheduler in the previous
-  example, and pass <<<this>>> from a constructor:
-  
-+---+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-public class IndexerImpl implements Indexer
-{
-  private final FileSystem fileSystem;
-  
-  public IndexerImpl(@InjectService("FileSystem") FileSystem fileSystem,
-  
-  @InjectService("JobScheduler") JobScheduler scheduler)
-  {
-    this.fileSystem = fileSystem;
-    
-    scheduler.scheduleDailyJob(this); // Bad Idea
-  }
-
-  . . .
-}
-+---+
- 
-  Understanding why this is a bad idea involves a long detour into inner details of the Java Memory Model.
-  The short form is that other threads may end up invoking methods on the IndexerImpl instance, and its fields
-  (even though they are final, even though they appear to already have been set) may be uninitialized.
-
-Field Injection
-
-  The {{{../apidocs/org/apache/tapestry5/annotations/Inject.html}Inject}}
-  and {{{../apidocs/org/apache/tapestry5/annotations/InjectService.html}InjectService}}
-  annotations may be used on instance fields of a service implementation class, as an alternative
-  to passing dependencies of the service implementation in via the constructor.
-
-  Note that only dependencies are settable this way; if you want resources, including
-  the service's {{{configuration.html}configuration}}, you must pass those through the constructor.
-  You <are> free to mix and match, injecting partially with field injection and partially
-  with constructor injection.
-
-  Caution: injection via fields uses reflection to make the fields accessible. In
-  addition, it may not be as thread-safe as using the constructor to assign to
-  final fields.
-
-+---+
-package org.example.myapp.services;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-public class IndexerImpl implements Indexer
-{
-  @InjectService("FileSystem")
-  private FileSystem fileSystem;
-
-  . . .
-}
-+---+
-
-Defining Service Scope
-
-  Each service has a <lifecycle> that controls when the service implementation is instantiated.
-  There are two built in lifecycles: "singleton" and "perthread", but
-  more can be added.
-  
-  Service lifecycle is specified using the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Scope.html}@Scope annotation}},
-  which is attached to a builder method.  When this annotation is not present, the
-  default scope, "singleton" is used.
-    
-* singleton
-  
-  Most services use the default scope, "singleton".  With this scope a <proxy>
-  is created when the service is first referenced.  By reference, we mean any situation in which
-  the service is requested by name, such as using the @InjectService annotation on a
-  service builder method, or by using the
-  {{{../apidocs/org/apache/tapestry5/ioc/Registry.html}Registry}} API from outside the
-  container.
-  
-  In any case, the service proxy will only create the service implementation when a method
-  on the service interface is invoked. Until then, the service can be thought of as "virtual".
-  As the first method is invoked, the service builder method is invoked, then any service
-  decorations occur.  This construction process, called "realization", occurs only once.
-  
-  You should be aware when writing services that your code must be thread safe; any service
-  you define could be invoked simulataneously by multiple threads. This is rarely an issue
-  in practice, since most services take input, use local variables, and invoke methods on other services,
-  without making use of non-final instance variables.  The few instance variables
-  in a service implementation are usually references to other Tapestry IoC services.
-  
-* perthread
-
-  The perthread service scope exists primarily to help multi-threaded servlet applications,
-  though it has other applications.
-  
-  With perthread, the service proxy will delegate to a local service instance that is associated
-  with the current thread. Two different threads, invoking methods on the same proxy, will
-  ultimately be invoking methods on two different service instances, each reserved to their own thread.
-  
-  This is useful when a service needs to keep request specific state, such as information extracted
-  from the HttpServletRequest (in a web application). The default singleton model would not work
-  in such a multi threaded environment.  Using perthread on select services allows state to be isolated
-  to those services.  Because the dispatch occurs <inside> the proxy, you can treat the service
-  as a global, like any other.
-  
-  You will see that your service builder method is invoked more than once.  It is invoked in each
-  thread where the perthread service is used.
-  
-  At the end of the request, the  Registry's cleanupThread() method is invoked; it will discard
-  any perthread service implementations for the current thread.
-  
-  <<Caution:>> A common technique in Tapestry IoC is to have a service builder method
-  register a core service implementation as an event listener with some event hub service.
-  With non-singleton objects, this can cause a number of problems; the event hub will
-  hold a reference to the per-thread instance, even after that per-thread instance has been
-  cleaned up (discarded by the inner proxy). Simply put, this is a pattern to avoid. For
-  the most part, perthread services should be simple holders of data specific to a thread or
-  a request, and should not have overly complex relationships with the other services
-  in the registry.
-  
-Defining the scope of Autobuilt Services
-
-  There are two options for defining the scope for an autobuilt service.
-  
-   The service implementation class may include the @Scope annotation. This is generally the preferred way
-   to specify scope.
-  
-  In addition, it is possible to specify the scope when binding the service:
-  
-+----+
-  bind(MyServiceInterface.class, MyServiceImpl.class).scope(IOCConstants.PERTHREAD_SCOPE);
-+----+
-
-    
-  
-Eager Loading Services
-
-  Services are normally created only as needed (per the scope discussion above).
-  
-  This can be tweaked slightly; by adding the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/EagerLoad.html}EagerLoad}} annotation to
-  the service builder method, Tapestry will instantiate the service when the Registry is first created.
-  
-  This will cause the service builder method to be invoked, as well as any service decorator methods.
-  
-  This feature is used when a service manages a resource, such as a thread, that needs to be created
-  as soon as the application starts up.  Another common example is a service that listens for events produced
-  by a second service; the first service may need to be created, and start listening, before any of its
-  service methods are invoked (which would normally trigger the instantiation of the service).
-  
-  Many services may be annotated with @EagerLoad; the order in which services are created is not defined. 
-  
-  With the perthread scope, the service builder method will not be invoked (this won't happen until
-  a service method is invoked), but the decorators for
-  the service will be created. 
-  
-Eager Loading Autobuilt Services
-
-  As with service scope, there are two options for indicating that an autobuilt service should be
-  eagerly loaded.
-  
-  The service implementation class may include the @EagerLoad annotation.
-  
-  You may also specify eager loading explicitly when binding the service:
-
-+----+
-  bind(MyServiceInterface.class, MyServiceImpl.class).eagerLoad();
-+----+
-  
-     
-Injecting Resources
-
-  In addition to injecting services, Tapestry will key off of the parameter type to allow
-  other things to be injected.
-  
-  * java.lang.String: unique id for the service
-    
-  * {{{http://www.slf4j.org/api/org/slf4j/Logger.html}org.slf4j.Logger}}: logger for the service
-  
-  * java.lang.Class: service interface implemented by the service to be constructed
-  
-  * {{{../apidocs/org/apache/tapestry5/ioc/ServiceResources.html}ServiceResources}}:  access to other services
-  
-  []
-  
-  No annotation is needed for these cases.
-  
-  See also {{{configuration.html}service configuration}} for additional special cases
-  of resources that can be injected.
-
-  Note: resources may not be injected into fields, they are injectable only via
-  method or constructor parameters.
-
-
-  Example:
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer build(String serviceId, Log serviceLog,  
-     JobScheduler scheduler, FileSystem fileSystem)
-  {
-    IndexerImpl indexer = new IndexerImpl(serviceLog, fileSystem);
-      
-    scheduler.scheduleDailyJob(serviceId, indexer);
-
-    return indexer;
-  }
-+-----------------------------------------------------------------------------------+  
-  
-  The order of parameters is completely irrelevant. They can come first or last or be
-  interspersed however you like.
-  
-  Injecting in the ServiceResources can be handy when you want to calculate the name
-  of a service dependency on the fly.  However, in the general case (where the
-  id of service dependencies is known at build time), it is easier
-  to use the @InjectService annotation.
-      
-  The Log's name (used when configuring logging settings for the service) consists of
-  the module class name and the service id seperated by a period, i.e. "org.example.myapp.MyModule.Indexer". 
-  
-  Further, ServiceResources includes an autobuild() method that allows you to easily trigger
-  the construction of a class, including dependencies.  Thus the previos example could be rewritten as:
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer build(ServiceResources resources, JobScheduler jobScheduler)
-  {
-    IndexerImpl indexer = resources.autobuild(IndexerImpl.class);
-      
-    scheduler.scheduleDailyJob(resources.getServiceId(), indexer);
-
-    return indexer;
-  }
-+-----------------------------------------------------------------------------------+  
-  
-  This works the exact same way with autobuilt services, except that the parameters of the service
-  implementation constructor are considered, rather than the parameters of the service
-  builder method.
-
-  The @InjectService annotation takes precendence over these resources.
-  
-  If the @InjectService annotation is not present, and the parameter type does not exactly match
-  a resource type, then {{{provider.html}object injection}} occurs.   Object injection will find the correct
-  object to inject based on a number of (extensible) factors, including the parameter type and any additional annotations
-  on the parameter.
-  
-  Every once and a while, you'll have a conflict between a resource type and an object injection.  For example,
-  the following does not work as expected:
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer build(String serviceId, Log serviceLog,  
-     JobScheduler scheduler, FileSystem fileSystem,
-     @Value("${index-alerts-email}")
-     String alertEmail)
-  {
-    IndexerImpl indexer = new IndexerImpl(serviceLog, fileSystem, alertEmail);
-      
-    scheduler.scheduleDailyJob(serviceId, indexer);
-
-    return indexer;
-  }
-+-----------------------------------------------------------------------------------+    
-
-  It doesn't work because type String always gets the service id, as a resource (as with the serviceId parameter).
-  In order to get this to work, we need to turn off the resource injection for the alertEmail parameter.
-  That's what the {{{../apidocs/org/apache/tapestry5/ioc/annotations/Inject.html}Inject}} annotation does:
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer build(String serviceId, Log serviceLog,  
-     JobScheduler scheduler, FileSystem fileSystem,
-     @Inject @Value("${index-alerts-email}")
-     String alertEmail)
-  {
-    IndexerImpl indexer = new IndexerImpl(serviceLog, fileSystem, alertEmail);
-      
-    scheduler.scheduleDailyJob(serviceId, indexer);
-
-    return indexer;
-  }
-+-----------------------------------------------------------------------------------+      
-  
-  Here, the alertEmail parameter will recieve the configured alerts email (see
-  {{{symbols.html}the symbols documentation}} for more about this syntax) rather than the service id.
-
-Binding ServiceBuilders
-
-  Yet another option is available: instead of binding an interface to a implemention class,
-  you can bind a service to a
-  {{{../apidocs/org/apache/tapestry5/ioc/ServiceBuilder.html}ServiceBuilder}}, a callback used
-  to create the service implementation.  This is very useful in very rare circumstances.
-
-
-Builtin Services
-
-  A few services within the Tapestry IOC Module are "builtin"; there is no 
-  service builder method
-  in the
-  {{{../apidocs/org/apache/tapestry5/ioc/services/TapestryIOCModule.html}TapestryIOCModule}} class.
-  
-*---------------------+-----------------------------------------------------------------------------------------+
-| <<Service Id>>      | <<Service Interface>>                                                                   |
-*---------------------+-----------------------------------------------------------------------------------------+
-| ClassFactory        | {{{../apidocs/org/apache/tapestry5/ioc/services/ClassFactory.html}ClassFactory}}         |
-*---------------------+-----------------------------------------------------------------------------------------+
-| LoggerSource        | {{{../apidocs/org/apache/tapestry5/ioc/LoggerSource.html}LoggerSource}}                  |
-*---------------------+-----------------------------------------------------------------------------------------+
-| RegistryShutdownHub | {{{../apidocs/org/apache/tapestry5/ioc/RegistryShutdownHub.html}RegistryShutdownHub}}    |
-*---------------------+-----------------------------------------------------------------------------------------+
-| PerthreadManager    | {{{../apidocs/org/apache/tapestry5/ioc/services/PerthreadManager.html}PerthreadManager}} |
-*---------------------+-----------------------------------------------------------------------------------------+
-
-  Consult the JavaDoc for each of these services to identify under what circumstances you'll need to use them.
-  
-Mutually Dependant Services
-
-  One of the benefits of Tapestry IoC's proxy-based approach to just-in-time instantiation 
-  is the automatic support for mutually dependent services.  For example, suppose that
-  the Indexer and the FileSystem needed to talk directly to each other.  Normally, this
-  would cause a "chicken-and-the-egg" problem: which one to create first?
-
-  With Tapestry IoC, this is not even considered a special case:
-  
-+-----------------------------------------------------------------------------------+
-  public static Indexer buildIndexer(JobScheduler scheduler, FileSystem fileSystem)
-  {
-    IndexerImpl indexer = new IndexerImpl(fileSystem);
-  
-    scheduler.scheduleDailyJob(indexer);
-  
-    return indexer;
-  }
-    
-  public static FileSystem buildFileSystem(Indexer indexer)
-  {
-    return new FileSystemImpl(indexer);
-  }  
-+-----------------------------------------------------------------------------------+   
-  
-   Here, Indexer and FileSystem are mutually dependent. Eventually, one or the other
-   of them will be created ... let's say its FileSystem. The buildFileSystem() builder
-   method will be invoked, and a proxy to Indexer will be passed in.  Inside the
-   FileSystemImpl constructor (or at some later date), a method of the Indexer service
-   will be invoked, at which point, the builderIndexer() method is invoked. It still receives
-   the proxy to the FileSystem service.
-   
-   If the order is reversed, such that Indexer is built before FileSystem, everything still
-   works the same.
-   
-   This approach can be very powerful: I've (HLS) used it to break apart untestable
-   monolithic code into two mutually dependent halves, each of which can be unit tested.
-    
-   The exception to this rule is a service that depends on itself <during construction>.
-   This can occur when (indirectly, through other services) building the service
-   tries to invoke a method on the service being built. This can happen when the service
-   implemention's constructor invoke methods on service dependencies passed into it,
-   or when the service builder method itself does the same. This is actually a very rare
-   case and difficult to illustrate.
-        
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/shadow.apt b/maint-5-2/tapestry-ioc/src/site/apt/shadow.apt
deleted file mode 100644
index 05e3391..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/shadow.apt
+++ /dev/null
@@ -1,63 +0,0 @@
- ----
- Shadow Services
- ----
- 
-Shadow Services
-
-  The 
-  {{{../apidocs/org/apache/tapestry5/ioc/services/PropertyShadowBuilder.html}PropertyShadowBuilder}}
-  service is used to build a special, delegating kind of service implementation.
-  
-  Effectively, it is used to allow a property of another service to be exposed as its own service.
-  
-  For example, the tapestry-core module provides a Request property as a shadow of the RequestGlobals
-  service's request property:
-  
-+----+
-public Request build()
-{
-  return shadowBuilder.build(requestGlobals, "request", Request.class);
-}
-+----+
-
-  (shadowBuilder and requestGlobals are injected into the module class instance)
-
-  This can be thought of as similar to:
-  
-+----+
-public Request build()
-{
-  return requestGlobals.getRequest();
-}
-+----+
-    
-  However there is a <critical> difference between the two:  a shadow property is <re-evaluated on each method invocation>.
-  In the former case, the Request service will always obtain the current value of the request property from the
-  per-thread RequestGlobals service. The second example is more than likely broken, since it will expose whatever
-  value is in the request property of the RequestGlobals <at the time the Request service implementation is realized>.
-  
-  Notice that in this example, the Request service is a normal singleton. This service can be freely injected
-  into any service throughout the framework or application. Invoking methods on this service will always delegate
-  to the current thread's request. Callers don't have to be aware of this internal delegation; it just happens.    
-  
-Non-Reflective
-
-  When the shadow is created, reflection is used to translate the property name to a method name.
-  This information is used to build a new class (at runtime) that is instantiated as the service implementation.
-  
-  A typical method is implemented as (approximately):
-  
-+----+
-private final RequestGlobals source;
-
-public String getParameter(String name)
-{
-  return source.getRequest().getParameter(name);
-}
-+----+
-
-  That is, the shadow implementation holds onto the target object (in the above example,
-  the RequestGlobals service) and invokes a method on it directly, not using reflection, no differently
-  than you would if you wrote the code yourself.
-  
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/startup.apt b/maint-5-2/tapestry-ioc/src/site/apt/startup.apt
deleted file mode 100644
index 88c2663..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/startup.apt
+++ /dev/null
@@ -1,49 +0,0 @@
- ----
- Registry Startup
- ----
- 
-Registry Startup
-
-  It is possible to provide extra logic to be executed at Registry startup, by making contributions to the 
-  RegistryStartup service configuration.
-  
-  The values contributed are Runnable objects.  The configuration is ordered, so it is possible to control
-  in what order the objects are executed.
-  
-  RegistryStartup occurs after eager loaded services are instantiated.
-  
-  Here's an example of a module that makes a contribution.
-  
-----
-
-public class MyModule
-{
-  public static void contributeRegistryStartup(OrderedConfiguration<Runnable> configuration)
-  {
-    configuration.add("MyContributionName", new Runnable() { ... });
-  }
-}
-----
-
-  Generally, these contributions are in the form of inner classes; if they were services, they could just be eagerly loaded.
-
-Startup Methods 
-  
-  In Tapestry 5.2 the way of providing extra logic to be executed at Registry startup has been simplified. 
-  Instead of making contributions to the RegistryStartup service configuration you can provide startup methods inside your modules.
-  A startup method is a static or instance method of a module annotated with {{{../apidocs/org/apache/tapestry5/ioc/annotations/Startup.html}Startup}} 
-  annotation. Each module is allowed to contain several startup methods.
-  
-----
-public class MyModule
-{
-
-  @Startup
-  public static void initMyApplication(Logger logger, MyService service)
-  {
-    logger.info("Starting up...");
-    
-    service.init();
-  }
-}
-----
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/strategy.apt b/maint-5-2/tapestry-ioc/src/site/apt/strategy.apt
deleted file mode 100644
index 1e3597c..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/strategy.apt
+++ /dev/null
@@ -1,53 +0,0 @@
- ----
-  Strategy Pattern
- ----
- 
-Strategy Pattern
- 
-  Another of the Gang Of Four patterns, the strategy pattern as implemented in Tapestry IoC is a kind of late binding.
-  
-  The idea is that <adapters> for objects are accessed based on the <actual type> of an object.  These adapters supply additional functionality.  The adapters
-  are located using an {{{../apidocs/org/apache/tapestry5/util/StrategyRegistry.html}StrategyRegistry}}.
-  
-  The lookup of adapters is based on an inheritance search; thus providing an adapter for type java.util.Map will match any object that implements the Map interface.
-  The inheritance search works its way up the class hierarchy looking for a matching registration. If nothing is found, then all the interfaces directly or indirectly
-  implemented by the selector class are checked. java.lang.Object is always the final match.
-  
-  A runtime exception is thrown if no match can be found.
-  
-  As a special case, the value null is search for as if it was an instance of the class void.
-    
-  The {{{../apidocs/org/apache/tapestry5/ioc/services/StrategyBuilder.html}StrategyBuilder}} service creates a service implementation around a strategy registry.
-  
-+---+
-public interface StrategyBuilder
-{
-    <S> S build(StrategyRegistry<S> registry);
-}
-+---+  
-  
-  For a given interface (and matching   StrategyRegistry), a service implementation is created.  The service interface is determined from the
-  strategy registry.
-  
-  The first parameter of each method is the <selector>.  Its type is used to locate an adapter.
-  
-  The corresponding method of the adapter is then invoked, passing all parameters.
-  
-  Every method of the service interface should take at least one parameter.  Generally, such interfaces have only one or two methods.
-  
-Example
-
-  You will usually have a service configuration for defining the adapter registry.
-  
-  You convert the configuration into a StrategyRegistry, and use that to build the final service:
-  
-+---+
-  public static MyStrategyService build(Map<Class, MyStrategyService> configuration,
-    @InjectService("StrategyBuilder")
-    StrategyBuilder builder)
-  {
-     StategyRegistry<MyStrategyService> registry = StrategyRegistry.newInstance(MyStrategyService.class, configuration);
-  
-     return builder.build(registry);
-  }
-+---+
\ No newline at end of file
diff --git a/maint-5-2/tapestry-ioc/src/site/apt/symbols.apt b/maint-5-2/tapestry-ioc/src/site/apt/symbols.apt
deleted file mode 100644
index 4d7c0ad..0000000
--- a/maint-5-2/tapestry-ioc/src/site/apt/symbols.apt
+++ /dev/null
@@ -1,145 +0,0 @@
- ----
- Symbols
- ----
- 
-Symbols
-
-  Tapestry IOC makes use of runtime-evaluated <symbols> to handle certains types of configuration tasks.
-  
-  The syntax of symbols is based on Ant expression, that is, a leading <<<$\{>>> before the symbol name,
-  and a trailing <<<\}>>> after.  The value on the inside is the <symbol name>.  By convention, the symbol
-  name is segmented with periods.
-  
-  These symbols are used inside the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annoations/Value.html}Value}} and
-  {{{../apidocs/org/apache/tapestry5/ioc/annoations/InjectService.html}InjectService}}
-  annotations.
-  
-  For example:
-  
-+----+
-  public static MyService build(
-      @InjectService("${some-service-id}") Collaborator collab)
-  {
-    return . . . ;
-  }
-+---+
-
-  Here, the symbol,
-  <<<some-service-id>>> is  a service id, such as <<<WackyCollaborator>>>.
-     
-  Although not shown here, it is possible to use multple symbols inside the string, or mix literal text with
-  symbols.
-
-Injecting Values from Symbols
-
-  You may also inject symbol values.  For example, if you are interested in whether the application
-  is in production mode or developer mode:
-
----
-public class MyService implements MyServiceInterface
-{
-  private boolean productionMode;
-
-  public MyService(@Value("${tapestry.production-mode}") boolean productionMode, ...)
-  {
-    this.productionMode = productionMode;
-    . . .
-----
-
-  Here Tapestry has {{{coerce.apt}coerced}} the "tapestry.production-mode" symbol to a boolean to be injected.
-
-  An alternate annotation, @Symbol, may be used:
-
----
-public class MyService implements MyServiceInterface
-{
-  private boolean productionMode;
-
-  public MyService(@Symbol(SymbolConstants.PRODUCTION_MODE) boolean productionMode, ...)
-  {
-    this.productionMode = productionMode;
-    . . .
-----
-
-  This is very useful when a constant value is defined for the symbol; it means that the compiler can catch
-  a typo, rather than detecting it a runtime.
-    
-  <<Note:>> When injecting a symbol as a <string> into a service, you must use the @Inject annotation as well as @Value or @Symbol; otherwise
-  Tapestry will inject the service's service id.
-  
-Symbol Resolution
-
-  Symbols are resolved by the
-  {{{../apidocs/org/apache/tapestry5/ioc/services/SymbolSource.html}SymbolSource}} service.  The SymbolSource
-  checks against an ordered list of
-  {{{../apidocs/org/apache/tapestry5/ioc/services/SymbolProvider.html}SymbolProvider}} objects.
-
-  Additional symbol providers may be employed by contributing to the tapestry.ioc.SymbolSource service configuration,
-  which is an ordered list of SymbolProviders.
-  
-  By default, there are three providers:
-  
-* SystemProperties
-
-  The first provider allows JVM System Properties to provide symbol values.  This allows the use
-  of the <<java>> command's <<-D>> option to provide runtime overrides.  This is most often used
-  when testing code, rather than in production.       SystemProperties is always checked first.
-  
-* ApplicationDefaults
-
-  Values not found as System Properties are searched for in the ApplicationDefaults.  This
-  service, ApplicationDefaults, may be configured using a mapped configuration to provide values.
-  
-  From the previous example:
-  
-+----+
-  public void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-  {
-    configuration.add("some-service-id", "WackyCollaborator");
-  }
-+----+
-  
-* FactoryDefaults
-
-  The same as ApplicationDefaults, but checked only if a value is not satisfied by SystemProperties
-  or ApplicationDefaults.
-  
-  Libraries will typically set reasonable defaults as contributions to the FactoryDefaults service configuration.
-  Individual applications may hard code overrides of those defaults using ApplicationDefaults.  Individual developers
-  may override even those defaults by setting JVM System Properties.
-
-  FactoryDefaults is always checked last when resolving symbol names to symbol values.
-  
-Recursive Symbols
-
-  It is possible and valid to define one symbol in terms of one ore more other symbols.
-  
-  
-+----+
-  public void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-  {
-      configuration.add("report.url", "http://${report.host}:${report.port}/${report.path}");
-      configuration.add("report.host", "www.myreportsite.com");
-      configuration.add("report.port", "80");
-      configuration.add("report.path", "/report.cgi");
-  }
-+----+
-  
-  The ordinary default for <<<report.url>>> will be <<<http://www.myreportsite.com:80/report.cgi>>>.
-  
-  However, this can be changed by making an overriding contribution to the ApplicationDefaults service
-  configuration.  
-  
-  Tapestry checks that no symbol is directly or indirectly dependent on itself.  For example, the following contribution is
-  illegal:
-  
-+----+
-  public void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-  {
-      configuration.add("report.path", "${report.url}/report.cgi");
-  }
-+----+  
-  
-  When the <<<report.url>>> is referenced, an exception will be thrown with the message: <<
-  Symbol 'report.path' is defined in terms of itself (report.path --> report.url --> report.path).>>
diff --git a/maint-5-2/tapestry-ioc/src/site/resources/images/PipelineCallingSequence.png b/maint-5-2/tapestry-ioc/src/site/resources/images/PipelineCallingSequence.png
deleted file mode 100644
index 96b5ed2..0000000
--- a/maint-5-2/tapestry-ioc/src/site/resources/images/PipelineCallingSequence.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-ioc/src/site/resources/images/ioc-overview.png b/maint-5-2/tapestry-ioc/src/site/resources/images/ioc-overview.png
deleted file mode 100644
index c317c34..0000000
--- a/maint-5-2/tapestry-ioc/src/site/resources/images/ioc-overview.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-ioc/src/site/resources/images/type-coercer.png b/maint-5-2/tapestry-ioc/src/site/resources/images/type-coercer.png
deleted file mode 100644
index cfb43d5..0000000
--- a/maint-5-2/tapestry-ioc/src/site/resources/images/type-coercer.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-ioc/src/site/site.xml b/maint-5-2/tapestry-ioc/src/site/site.xml
deleted file mode 100644
index f97b94f..0000000
--- a/maint-5-2/tapestry-ioc/src/site/site.xml
+++ /dev/null
@@ -1,91 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2006, 2008, 2009 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry IoC">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-
-    <body>
-
-        <head>
-            <script src="http://www.google-analytics.com/urchin.js" type="text/javascript"></script>
-            <script type="text/javascript">_uacct = "UA-400821-1"; urchinTracker();</script>
-        </head>
-
-        <menu name="Quick Links">
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-        <menu name="Tapestry IoC Container">
-            <item name="Introduction" href="index.html"/>
-            <item name="Overview of Tapestry IoC" href="overview.html"/>
-            <item name="Modules" href="module.html"/>
-            <item name="Module Autoloading" href="autoload.html"/>
-            <item name="Services" href="service.html"/>
-            <item name="Service Reloading" href="reload.html"/>
-            <item name="Advisors" href="advice.html"/>
-            <item name="Decorators" href="decorator.html"/>
-            <item name="Configuration" href="configuration.html"/>
-            <item name="Type Coercion" href="coerce.html"/>
-            <item name="Injection in Detail" href="injection.html"/>
-            <item name="Serialization" href="serialization.html"/>
-            <item name="Case Insensitivity" href="case.html"/>
-            <item name="Symbols" href="symbols.html"/>
-            <item name="Starting the Registry" href="run.html"/>
-            <item name="Object Providers" href="provider.html"/>
-            <item name="Ordering" href="order.html"/>
-            <item name="Logging" href="logging.html"/>
-            <item name="Startup" href="startup.html"/>
-            <item name="Parallel Execution" href="parallel.html"/>
-        </menu>
-
-
-        <menu name="Service Builders">
-            <item name="Chain Of Command" href="command.html"/>
-            <item name="Strategy" href="strategy.html"/>
-            <item name="Pipeline" href="pipeline.html"/>
-            <item name="Shadow Services" href="shadow.html"/>
-        </menu>
-
-        <menu name="Tapestry IoC Cookbook">
-            <item name="Introduction" href="cookbook/index.html"/>
-            <item name="Basics" href="cookbook/basics.html"/>
-            <item name="Service Configurations" href="cookbook/servconf.html"/>
-            <item name="Using Patterns" href="cookbook/patterns.html"/>
-            <item name="Overriding Services" href="cookbook/override.html"/>
-        </menu>
-
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-ioc/src/test/conf/testng.xml b/maint-5-2/tapestry-ioc/src/test/conf/testng.xml
deleted file mode 100644
index 15a7af0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/conf/testng.xml
+++ /dev/null
@@ -1,27 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-  <!--
-    Copyright 2007, 2008 The Apache Software Foundation Licensed under the Apache License, Version
-    2.0 (the "License"); you may not use this file except in compliance with the License. You may
-    obtain a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
-    applicable law or agreed to in writing, software distributed under the License is distributed on
-    an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See
-    the License for the specific language governing permissions and limitations under the License.
-  -->
-
-<suite name="Tapestry IOC" annotations="1.5" verbose="2">
-  <test name="Public APIs">
-    <packages>
-      <package name="org.apache.tapestry5.ioc"/>
-      <package name="org.apache.tapestry5.ioc.services"/>
-      <package name="org.apache.tapestry5.ioc.test"/>
-      <package name="org.apache.tapestry5.ioc.util"/>
-    </packages>
-  </test>
-  <test name="Internals">
-    <packages>
-      <package name="org.apache.tapestry5.ioc.internal"/>
-      <package name="org.apache.tapestry5.ioc.internal.services"/>
-      <package name="org.apache.tapestry5.ioc.internal.util"/>
-    </packages>
-  </test>
-</suite>
diff --git a/maint-5-2/tapestry-ioc/src/test/fakejar/META-INF/MANIFEST.MF b/maint-5-2/tapestry-ioc/src/test/fakejar/META-INF/MANIFEST.MF
deleted file mode 100644
index 5f158d9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/fakejar/META-INF/MANIFEST.MF
+++ /dev/null
@@ -1,7 +0,0 @@
-Manifest-Version: 1.0
-Archiver-Version: Plexus Archiver
-Created-By: Apache Maven
-Built-By: Howard
-Build-Jdk: 1.5.0_13
-Tapestry-Module-Classes: does.not.exist.Module
-
diff --git a/maint-5-2/tapestry-ioc/src/test/java/com/example/Counter.java b/maint-5-2/tapestry-ioc/src/test/java/com/example/Counter.java
deleted file mode 100644
index 13778e7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/com/example/Counter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.example;
-
-public interface Counter
-{
-    int increment();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/com/example/CounterImpl.java b/maint-5-2/tapestry-ioc/src/test/java/com/example/CounterImpl.java
deleted file mode 100644
index dd6cc55..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/com/example/CounterImpl.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.example;
-
-import org.apache.tapestry5.ioc.ReloadAware;
-
-public class CounterImpl implements Counter, ReloadAware
-{
-    {
-        ReloadAwareModule.counterInstantiations++;
-    }
-
-    private int count;
-
-    public boolean shutdownImplementationForReload()
-    {
-        ReloadAwareModule.counterReloads++;
-
-        return true;
-    }
-
-    public synchronized int increment()
-    {
-        return ++count;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadAwareModule.java b/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadAwareModule.java
deleted file mode 100644
index 787ce4d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadAwareModule.java
+++ /dev/null
@@ -1,21 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.example;
-
-public class ReloadAwareModule
-{
-    public static int counterInstantiations, counterReloads;
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadModule.java b/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadModule.java
deleted file mode 100644
index f73f465..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.example;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class ReloadModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        // We'll use Javassist to create an implementation at runtime, then change that implementation.
-        binder.bind(ReloadableService.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadableService.java b/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadableService.java
deleted file mode 100644
index 7173645..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/com/example/ReloadableService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package com.example;
-
-public interface ReloadableService
-{
-    String getStatus();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AdviceDemoModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AdviceDemoModule.java
deleted file mode 100644
index 4e007f7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AdviceDemoModule.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Match;
-import org.apache.tapestry5.ioc.annotations.Order;
-import org.apache.tapestry5.ioc.services.LoggingAdvisor;
-import org.slf4j.Logger;
-
-import java.lang.reflect.Method;
-
-public class AdviceDemoModule
-{
-    public static Greeter buildGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Advice is Easy!";
-            }
-        };
-    }
-
-    @Match("*")
-    public static void adviseLogging(MethodAdviceReceiver receiver, LoggingAdvisor loggingAdvisor, Logger logger)
-    {
-        loggingAdvisor.addLoggingAdvice(logger, receiver);
-    }
-
-    @Order("after:Logging")
-    public static void adviseGreeter(MethodAdviceReceiver receiver)
-    {
-        MethodAdvice advice = new MethodAdvice()
-        {
-            public void advise(Invocation invocation)
-            {
-                invocation.proceed();
-
-                String result = (String) invocation.getResult();
-
-                if (result != null)
-                    invocation.overrideResult(result.toUpperCase());
-            }
-        };
-
-        for (Method m : receiver.getInterface().getMethods())
-        {
-            if (m.getReturnType().equals(String.class))
-            {
-                receiver.adviseMethod(m, advice);
-            }
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AdviceMethodMissingAdvisorParameterModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AdviceMethodMissingAdvisorParameterModule.java
deleted file mode 100644
index 5a2b213..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AdviceMethodMissingAdvisorParameterModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class AdviceMethodMissingAdvisorParameterModule
-{
-    /**
-     * This is an error as advisor methods must take a parameter of type MethodAdvisor.
-     */
-    public static void adviseBar()
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AutobuildInjectionModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AutobuildInjectionModule.java
deleted file mode 100644
index 0223690..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AutobuildInjectionModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Autobuild;
-
-public class AutobuildInjectionModule
-{
-    public static StringTransformer buildStringTransformer(@Autobuild SymbolExpandingTransformer transformer)
-    {
-        return transformer;
-    }
-
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("fred", "flintstone");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AutobuildModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AutobuildModule.java
deleted file mode 100644
index 120ed93..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/AutobuildModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class AutobuildModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(StringHolder.class, StringHolderImpl.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BarneyModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BarneyModule.java
deleted file mode 100644
index 7969317..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BarneyModule.java
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Match;
-import org.apache.tapestry5.ioc.annotations.Order;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Module used to demonstrate decorator ordering.
- */
-
-public class BarneyModule
-{
-    @Match(
-            {"UnorderedNames", "Fred", "PrivateFredAlias"})
-    @Order("after:Beta")
-    public Object decorateGamma(Object delegate, DecoratorList list)
-    {
-        list.add("gamma");
-
-        return null;
-    }
-
-    public Sizer buildSizer(final Map<Class, Sizer> configuration)
-    {
-        return new Sizer()
-        {
-            public int size(Object object)
-            {
-                if (object == null) return 0;
-
-                Sizer sizer = configuration.get(object.getClass());
-
-                if (sizer != null) return sizer.size(object);
-
-                return 1;
-            }
-        };
-    }
-
-    public void contributeSizer(MappedConfiguration<Class, Sizer> configuration)
-    {
-        Sizer listSizer = new Sizer()
-        {
-            public int size(Object object)
-            {
-                List list = (List) object;
-
-                return list.size();
-            }
-        };
-
-        Sizer mapSizer = new Sizer()
-        {
-            public int size(Object object)
-            {
-                Map map = (Map) object;
-
-                return map.size();
-            }
-        };
-
-        // Have to work on concrete class, rather than type, until we move the StrategyFactory
-        // over from HiveMind.
-
-        configuration.add(ArrayList.class, listSizer);
-        configuration.add(HashMap.class, mapSizer);
-    }
-
-    /**
-     * Put DecoratorList in module barney, where so it won't accidentally be decorated (which recusively builds the
-     * service, and is caught as a failure).
-     */
-    public DecoratorList buildDecoratorList()
-    {
-        return new DecoratorList()
-        {
-            private List<String> names = CollectionFactory.newList();
-
-            public void add(String name)
-            {
-                names.add(name);
-            }
-
-            public List<String> getNames()
-            {
-                return names;
-            }
-        };
-    }
-
-    public void contributeUnorderedNames(Configuration<String> configuration)
-    {
-        configuration.add("Gamma");
-    }
-
-    public void contributeStringLookup(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("barney", "BARNEY");
-        configuration.add("betty", "BETTY");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BaseLocatableTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BaseLocatableTest.java
deleted file mode 100644
index e77c68d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BaseLocatableTest.java
+++ /dev/null
@@ -1,52 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class BaseLocatableTest extends IOCTestCase
-{
-
-    static class LocatableFixture extends BaseLocatable
-    {
-        LocatableFixture(Location location)
-        {
-            super(location);
-        }
-    }
-
-    @Test
-    public void location_property_is_readable()
-    {
-        Location location = newMock(Location.class);
-
-        replay();
-
-        Locatable locatable = new LocatableFixture(location);
-
-        verify();
-
-        assertSame(locatable.getLocation(), location);
-    }
-
-    @Test
-    public void null_is_allowed_for_location()
-    {
-        Locatable locatable = new LocatableFixture(null);
-
-        assertNull(locatable.getLocation());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BlueMarker.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BlueMarker.java
deleted file mode 100644
index f8b9330..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/BlueMarker.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Target(
-{ PARAMETER, FIELD, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface BlueMarker
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CaseInsensitiveContributeMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CaseInsensitiveContributeMethodModule.java
deleted file mode 100644
index 2add9c0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CaseInsensitiveContributeMethodModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class CaseInsensitiveContributeMethodModule
-{
-    public void contributeapplicationdefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("it", "works");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConcreteServiceBuilderModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConcreteServiceBuilderModule.java
deleted file mode 100644
index c67b48d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConcreteServiceBuilderModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class ConcreteServiceBuilderModule
-{
-    /**
-     * Of course, this is silly to do now that there is {@link ServiceBinder}.
-     */
-    public StringHolderImpl buildStringHolder()
-    {
-        return new StringHolderImpl();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConfigurationOverrideModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConfigurationOverrideModule.java
deleted file mode 100644
index 4eace29..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConfigurationOverrideModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class ConfigurationOverrideModule
-{
-    public static void contributeOrderedNames(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("wilma", "WILMA", "after:barney");
-        configuration.override("fred", "Mr. Flintstone", "after:*");
-    }
-
-    public void contributeStringLookup(MappedConfiguration<String, String> configuration)
-    {
-        configuration.override("fred", "Mr. Flintstone");
-        configuration.override("wilma", null);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ContributeByClassModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ContributeByClassModule.java
deleted file mode 100644
index a1700a0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ContributeByClassModule.java
+++ /dev/null
@@ -1,73 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.services.ChainBuilder;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-
-public class ContributeByClassModule
-{
-    public static StringTransformer buildMasterStringTransformer(final Collection<StringTransformer> configuration)
-    {
-        return new StringTransformer()
-        {
-            public String transform(String input)
-            {
-                String current = input;
-
-                for (StringTransformer t : configuration)
-                {
-                    current = t.transform(current);
-                }
-                return current;
-            }
-        };
-    }
-
-    public static StringTransformer buildStringTransformerChain(final List<StringTransformer> configuration,
-                                                                ChainBuilder builder)
-    {
-        return builder.build(StringTransformer.class, configuration);
-    }
-
-    public static void contributeMasterStringTransformer(Configuration<StringTransformer> configuration)
-    {
-        configuration.addInstance(UppercaseStringTransformer.class);
-    }
-
-    public static void contributeStringTransformerChain(final OrderedConfiguration<StringTransformer> configuration)
-    {
-        configuration.addInstance("Default", UppercaseStringTransformer.class);
-    }
-
-    public static StringTransformer buildMappedStringTransformer(final Map<String, StringTransformer> configuration)
-    {
-        return new StringTransformer()
-        {
-            public String transform(String input)
-            {
-                return configuration.get("Default").transform(input);
-            }
-        };
-    }
-
-    public static void contributeMappedStringTransformer(MappedConfiguration<String, StringTransformer> configuration)
-    {
-        configuration.addInstance("Default", UppercaseStringTransformer.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionFailureModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionFailureModule.java
deleted file mode 100644
index b717fb2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionFailureModule.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.tapestry5.ioc;
-
-public class ConventionFailureModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Pingable.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionModule.java
deleted file mode 100644
index 81a3377..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionModule.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.tapestry5.ioc;
-
-public class ConventionModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(StringHolder.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionModuleImplementationNotFound.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionModuleImplementationNotFound.java
deleted file mode 100644
index 91d28eb..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ConventionModuleImplementationNotFound.java
+++ /dev/null
@@ -1,9 +0,0 @@
-package org.apache.tapestry5.ioc;
-
-public class ConventionModuleImplementationNotFound
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(StringTransformer.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CountingGreeterImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CountingGreeterImpl.java
deleted file mode 100644
index a647560..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CountingGreeterImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class CountingGreeterImpl implements Greeter
-{
-    public CountingGreeterImpl()
-    {
-        IntegrationTest.countingGreeterInstantiationCount++;
-    }
-
-    public String getGreeting()
-    {
-        return "Hello";
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CyclicMOPModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CyclicMOPModule.java
deleted file mode 100644
index 0a95fd9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/CyclicMOPModule.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.CoercionTuple;
-
-public class CyclicMOPModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("symbol-value", "99");
-    }
-
-    public static Runnable decorateTrigger(Runnable delegate, @Symbol("symbol-value")
-    int value)
-    {
-        return delegate;
-    }
-
-    public static Runnable buildTrigger()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-            }
-        };
-    }
-
-    public static void contributeTypeCoercer(Configuration<CoercionTuple> configuration, @Symbol("symbol-value")
-    int value)
-    {
-        assert value == 99;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DecoratorList.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DecoratorList.java
deleted file mode 100644
index 55f213b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DecoratorList.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-/**
- * Used to track the order in which decorators are invoked.
- */
-public interface DecoratorList
-{
-    void add(String name);
-
-    List<String> getNames();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateConfigurationOverrideModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateConfigurationOverrideModule.java
deleted file mode 100644
index d4fd0b5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateConfigurationOverrideModule.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class DuplicateConfigurationOverrideModule
-{
-    public static void contributeOrderedNames(OrderedConfiguration<String> configuration)
-    {
-        configuration.override("fred", "Fred Flintstone");
-    }
-
-    public void contributeStringLookup(MappedConfiguration<String, String> configuration)
-    {
-        configuration.override("fred", "Frederick Flintstone");
-    }
-}
-
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateFredModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateFredModule.java
deleted file mode 100644
index 2471e8d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateFredModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class DuplicateFredModule
-{
-    public Runnable buildFred()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateServiceTypeModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateServiceTypeModule.java
deleted file mode 100644
index 724c3a2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/DuplicateServiceTypeModule.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class DuplicateServiceTypeModule
-{
-    public Pingable buildFred()
-    {
-        return null;
-    }
-
-    public Pingable buildBarney()
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadModule.java
deleted file mode 100644
index d69d8a0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-
-/**
- * Used to test service eager loading.
- */
-public class EagerLoadModule
-{
-    public static boolean _eagerLoadDidHappen = false;
-
-    @EagerLoad
-    public StringHolder buildStringHolder()
-    {
-        _eagerLoadDidHappen = true;
-
-        return new StringHolderImpl();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadService.java
deleted file mode 100644
index d0e7f97..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public interface EagerLoadService
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadServiceImpl.java
deleted file mode 100644
index b578092..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerLoadServiceImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-
-@EagerLoad
-public class EagerLoadServiceImpl implements EagerLoadService
-{
-    public EagerLoadServiceImpl()
-    {
-        ReloadTest.eagerLoadServiceWasInstantiated = true;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerProxyReloadModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerProxyReloadModule.java
deleted file mode 100644
index 12e16b3..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/EagerProxyReloadModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class EagerProxyReloadModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(EagerLoadService.class, EagerLoadServiceImpl.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ExtraMethodsModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ExtraMethodsModule.java
deleted file mode 100644
index 300b147..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ExtraMethodsModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class ExtraMethodsModule
-{
-    public static void thisMethodIsInvalid()
-    {
-
-    }
-
-    public void soIsThisMethod()
-    {
-
-    }
-
-    void nonPublicMethodsAreOK()
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailInConstructorRunnable.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailInConstructorRunnable.java
deleted file mode 100644
index 1957999..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailInConstructorRunnable.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class FailInConstructorRunnable implements Runnable
-{
-    public FailInConstructorRunnable()
-    {
-        throw new RuntimeException("Failure in Runnable constructor.");
-    }
-
-    public void run()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailedConfigurationOverrideModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailedConfigurationOverrideModule.java
deleted file mode 100644
index 2743f37..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailedConfigurationOverrideModule.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class FailedConfigurationOverrideModule
-{
-    public static void contributeOrderedNames(OrderedConfiguration<String> configuration)
-    {
-        // Failure: wilma doesn't exist
-        configuration.override("wilma", "WILMA", "after:barney");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailedFieldInjectionStringTransformer.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailedFieldInjectionStringTransformer.java
deleted file mode 100644
index 8fd935f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FailedFieldInjectionStringTransformer.java
+++ /dev/null
@@ -1,28 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.InjectResource;
-
-public class FailedFieldInjectionStringTransformer implements StringTransformer
-{
-    @InjectResource
-    private Runnable unknownRunnable;
-
-    public String transform(String input)
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceInjectionModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceInjectionModule.java
deleted file mode 100644
index 50ec696..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceInjectionModule.java
+++ /dev/null
@@ -1,32 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class FieldResourceInjectionModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(FieldResourceService.class);
-        binder.bind(StringTransformer.class, FailedFieldInjectionStringTransformer.class);
-    }
-
-    public static void contributeFieldResourceService(Configuration<String> configuration)
-    {
-        configuration.add("Fred");
-        configuration.add("Barney");
-        configuration.add("Wilma");
-        configuration.add("Betty");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceService.java
deleted file mode 100644
index 8fc2a33..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceService.java
+++ /dev/null
@@ -1,24 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-public interface FieldResourceService
-{
-    String getServiceId();
-
-    List<String> getLabels();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceServiceImpl.java
deleted file mode 100644
index e9b2936..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FieldResourceServiceImpl.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.InjectResource;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-public class FieldResourceServiceImpl implements FieldResourceService
-{
-    @InjectResource
-    private ServiceResources resources;
-
-    @InjectResource
-    private Collection<String> configuration;
-
-    public String getServiceId()
-    {
-        return resources.getServiceId();
-    }
-
-    public List<String> getLabels()
-    {
-        List<String> result = CollectionFactory.newList(configuration);
-
-        Collections.sort(result);
-
-        return result;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FredModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FredModule.java
deleted file mode 100644
index ebb2be1..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/FredModule.java
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Match;
-import org.apache.tapestry5.ioc.annotations.Order;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-/**
- * Module used to demonstrate decorator ordering.
- */
-public class FredModule
-{
-
-    /**
-     * Doesn't matter what the service does, we just want to verify that the decorators are invoked in the order we
-     * expect.
-     */
-    public Runnable buildFred()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-            }
-        };
-    }
-
-    @Match(
-            {"UnorderedNames", "Fred"})
-    @Order("before:Beta")
-    public Object decorateAlpha(Object delegate, DecoratorList list)
-    {
-        list.add("alpha");
-
-        return null;
-    }
-
-    @Match(
-            {"UnorderedNames", "Fred"})
-    public Object decorateBeta(Object delegate, DecoratorList list)
-    {
-        list.add("beta");
-
-        return null;
-    }
-
-    public NameListHolder buildUnorderedNames(Collection<String> configuration)
-    {
-        final List<String> sorted = CollectionFactory.newList(configuration);
-
-        Collections.sort(sorted);
-
-        return new NameListHolder()
-        {
-
-            public List<String> getNames()
-            {
-                return sorted;
-            }
-        };
-    }
-
-    public NameListHolder buildOrderedNames(final List<String> configuration)
-    {
-        return new NameListHolder()
-        {
-
-            public List<String> getNames()
-            {
-                return configuration;
-            }
-        };
-    }
-
-    public void contributeOrderedNames(OrderedConfiguration<String> configuration)
-    {
-        // Order "FRED" after "BARNEY"
-
-        configuration.add("fred", "FRED", "after:barney");
-        configuration.add("barney", "BARNEY");
-    }
-
-    public void contributeUnorderedNames(Configuration<String> configuration)
-    {
-        configuration.add("UnorderedNames");
-        configuration.add("Beta");
-    }
-
-    public StringLookup buildStringLookup(final Map<String, String> configuration)
-    {
-        return new StringLookup()
-        {
-            public String lookup(String key)
-            {
-                return configuration.get(key);
-            }
-
-            public List<String> keys()
-            {
-                return InternalUtils.sortedKeys(configuration);
-            }
-        };
-    }
-
-    public void contributeStringLookup(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("fred", "FRED");
-        configuration.add("wilma", "WILMA");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreenMarker.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreenMarker.java
deleted file mode 100644
index 9044fda..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreenMarker.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Target(
-{ PARAMETER, FIELD, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface GreenMarker
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Greeter.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Greeter.java
deleted file mode 100644
index 4be0b86..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Greeter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public interface Greeter
-{
-    String getGreeting();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterModule.java
deleted file mode 100644
index b3605c5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterModule.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class GreeterModule
-{
-    @Marker(YellowMarker.class)
-    public NameListHolder buildYellowThing()
-    {
-        return null;
-    }
-
-    public Greeter buildHelloGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Hello";
-            }
-        };
-    }
-
-    public Greeter buildGoodbyeGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Goodbye";
-            }
-        };
-    }
-
-    @Marker(BlueMarker.class)
-    public Greeter buildBlueGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Blue";
-            }
-        };
-    }
-
-    @Marker(RedMarker.class)
-    public Greeter buildRedGreeter1()
-    {
-        return null;
-    }
-
-    @Marker(RedMarker.class)
-    public Greeter buildRedGreeter2()
-    {
-        return null;
-    }
-
-    public Greeter buildInjectedBlueGreeter(@BlueMarker
-    Greeter greeter)
-    {
-        return greeter;
-    }
-
-    public Greeter buildInjectedRedGreeter(@RedMarker
-    Greeter greeter)
-    {
-        return greeter;
-    }
-
-    public Greeter buildInjectedYellowGreeter(@YellowMarker
-    Greeter greeter)
-    {
-        return greeter;
-    }
-
-    public Greeter buildGreeter(@InjectService("${greeter}")
-    Greeter greeter)
-    {
-        return greeter;
-    }
-
-    public void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("greeter", "HelloGreeter");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterModule2.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterModule2.java
deleted file mode 100644
index c226c9c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterModule2.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class GreeterModule2
-{
-    @Marker(GreenMarker.class)
-    public Greeter buildGreenGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Green";
-            }
-        };
-    }
-   
-    @Marker(BlueMarker.class)
-    public Greeter buildBlueGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Blue";
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterServiceOverrideModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterServiceOverrideModule.java
deleted file mode 100644
index 9bbede8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/GreeterServiceOverrideModule.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class GreeterServiceOverrideModule
-{
-    public Greeter buildDefaultGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Hello";
-            }
-        };
-    }
-
-    public static void contributeServiceOverride(MappedConfiguration<Class, Object> configuration)
-    {
-        configuration.add(Greeter.class, new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Override Greeting";
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/HelterModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/HelterModule.java
deleted file mode 100644
index 3e1572d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/HelterModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.SubModule;
-
-
-@SubModule(SkelterModule.class)
-public class HelterModule
-{
-    public Runnable buildHelter()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IndirectResources.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IndirectResources.java
deleted file mode 100644
index bb1110a..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IndirectResources.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.slf4j.Logger;
-
-public class IndirectResources
-{
-    private final Logger logger;
-
-    private final ServiceResources serviceResources;
-
-    public IndirectResources(Logger logger, ServiceResources resources)
-    {
-        this.logger = logger;
-        this.serviceResources = resources;
-    }
-
-    public Logger getLogger()
-    {
-        return logger;
-    }
-
-    public ServiceResources getResources()
-    {
-        return serviceResources;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Indirection.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Indirection.java
deleted file mode 100644
index 322b7d0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Indirection.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Used to demonstrate indirection via symbols.
- */
-public interface Indirection
-{
-    String getName();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheck.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheck.java
deleted file mode 100644
index 18ba1e1..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheck.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.slf4j.Logger;
-
-public interface InjectionCheck
-{
-    Logger getLogger();
-
-    Object getValue(String key);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheckImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheckImpl.java
deleted file mode 100644
index dec588a..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheckImpl.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.Map;
-
-import org.slf4j.Logger;
-
-public class InjectionCheckImpl implements InjectionCheck
-{
-
-    private final Logger logger;
-
-    private final Map<String, Object> configuration;
-
-    public InjectionCheckImpl(Logger logger, Map<String, Object> configuration)
-    {
-        this.logger = logger;
-        this.configuration = configuration;
-    }
-
-    public Logger getLogger()
-    {
-        return logger;
-    }
-
-    public Object getValue(String key)
-    {
-        return configuration.get(key);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheckModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheckModule.java
deleted file mode 100644
index 163f988..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InjectionCheckModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.slf4j.Logger;
-
-/**
- * Used to check the ability to inject service resources (including Logger) into
- * contribut methods, etc.
- */
-public class InjectionCheckModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(InjectionCheck.class);
-    }
-
-    public static void contributeInjectionCheck(MappedConfiguration<String, Object> configuration, Logger logger)
-    {
-        configuration.add("logger", logger);
-        configuration.addInstance("indirect-resources", IndirectResources.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntHolder.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntHolder.java
deleted file mode 100644
index db73cec..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntHolder.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public interface IntHolder
-{
-    int getValue();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntHolderImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntHolderImpl.java
deleted file mode 100644
index c6a0274..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntHolderImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class IntHolderImpl implements IntHolder
-{
-    private final int value;
-
-    public IntHolderImpl(final int value)
-    {
-        this.value = value;
-    }
-
-    public int getValue()
-    {
-        return value;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
deleted file mode 100644
index 37d075e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/IntegrationTest.java
+++ /dev/null
@@ -1,1602 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.io.File;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.net.URLClassLoader;
-import java.sql.PreparedStatement;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.internal.AdviseByMarkerModule;
-import org.apache.tapestry5.ioc.internal.AlphabetModule;
-import org.apache.tapestry5.ioc.internal.AlphabetModule2;
-import org.apache.tapestry5.ioc.internal.DecorateByMarkerModule;
-import org.apache.tapestry5.ioc.internal.ExceptionInConstructorModule;
-import org.apache.tapestry5.ioc.internal.ExtraPublicConstructorsModule;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.PrivateConstructorModule;
-import org.apache.tapestry5.ioc.internal.UpcaseService;
-import org.apache.tapestry5.ioc.internal.services.SimpleAnnotation;
-import org.apache.tapestry5.ioc.internal.services.StartupModule2;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.ServiceActivity;
-import org.apache.tapestry5.ioc.services.ServiceActivityScoreboard;
-import org.apache.tapestry5.ioc.services.Status;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.NonmatchingMappedConfigurationOverrideModule;
-import org.easymock.EasyMock;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-/**
- * A few tests that are easiest (or even just possible) by building a Registry and trying out a few
- * things.
- */
-public class IntegrationTest extends IOCInternalTestCase
-{
-    public static int countingGreeterInstantiationCount;
-
-    private Registry buildRegistry()
-    {
-        return buildRegistry(FredModule.class, BarneyModule.class);
-    }
-
-    @Test
-    public void duplicate_service_names_are_failure()
-    {
-        try
-        {
-            buildRegistry(FredModule.class, DuplicateFredModule.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertTrue(ex.getMessage().startsWith("Service id 'Fred' has already been defined by"));
-
-            // Can't check the entire message, because we can't guarantee what order the modules
-            // will be processed in.
-        }
-    }
-
-    @Test
-    public void static_builder_method_does_not_instantiate_builder()
-    {
-        StaticModule.setInstantiated(false);
-        StaticModule.setFredRan(false);
-
-        Registry r = buildRegistry(StaticModule.class);
-
-        Runnable fred = r.getService("Fred", Runnable.class);
-
-        fred.run();
-
-        assertFalse(StaticModule.isInstantiated());
-        assertTrue(StaticModule.getFredRan());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void static_decorator_method_does_not_instantiate_builder()
-    {
-        StaticModule.setInstantiated(false);
-        StaticModule.setDecoratorRan(false);
-
-        Registry r = buildRegistry(StaticModule.class);
-
-        Runnable fred = r.getService("Barney", Runnable.class);
-
-        fred.run();
-
-        assertFalse(StaticModule.isInstantiated());
-        assertTrue(StaticModule.getDecoratorRan());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void static_contributor_method_does_not_instantiate_builder()
-    {
-        StaticModule.setInstantiated(false);
-
-        Registry r = buildRegistry(StaticModule.class);
-
-        NameListHolder holder = r.getService("Names", NameListHolder.class);
-
-        List<String> names = holder.getNames();
-
-        assertEquals(names, Arrays.asList("Fred"));
-
-        assertFalse(StaticModule.isInstantiated());
-
-        r.shutdown();
-    }
-
-    @Test
-    public void shutdown_deactivates_proxies()
-    {
-        Registry r = buildRegistry();
-
-        Runnable service = r.getService("Fred", Runnable.class);
-
-        service.run();
-
-        r.shutdown();
-
-        try
-        {
-            service.run();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Proxy for service Fred is no longer active because the IOC Registry has been shut down.");
-        }
-
-        // Show that toString() still works, even for a shutdown proxy.
-
-        assertEquals(service.toString(), "<Proxy for Fred(java.lang.Runnable)>");
-    }
-
-    /**
-     * Along the way, we also test a few other things, such as decorator matching and automatic
-     * dependency resolution.
-     */
-    @Test
-    public void public_service_decorator_order()
-    {
-        Registry r = buildRegistry();
-
-        Runnable service = r.getService("Fred", Runnable.class);
-
-        // Force creation
-
-        service.run();
-
-        List<String> names = r.getService(DecoratorList.class).getNames();
-
-        // Note that the order of invocation appears backwards, since we build back-to-front
-
-        assertEquals(names, Arrays.asList("gamma", "beta", "alpha"));
-    }
-
-    @Test
-    public void public_service_unordered_configuration()
-    {
-        Registry r = buildRegistry();
-
-        NameListHolder service = r.getService("UnorderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
-    }
-
-    /**
-     * We don't have to do as many public/private etc. tests for the other types of configuration,
-     * because the code
-     * paths are so similar.
-     */
-
-    @Test
-    public void service_ordered_configuration()
-    {
-        Registry r = buildRegistry();
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("BARNEY", "FRED"));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void service_mapped_configuration()
-    {
-        Registry r = buildRegistry();
-
-        Sizer sizer = r.getService("Sizer", Sizer.class);
-
-        assertEquals(sizer.size(null), 0);
-
-        // Have to be exact on type here.
-
-        List list = new ArrayList();
-        list.add(1);
-        list.add(2);
-        list.add(3);
-
-        assertEquals(sizer.size(list), 3);
-
-        Map map = new HashMap();
-        map.put("fred", "flinstone");
-        map.put("barney", "rubble");
-
-        assertEquals(sizer.size(map), 2);
-
-        // Random objects are size 1
-
-        assertEquals(sizer.size(this), 1);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void unknown_scope()
-    {
-        Registry r = buildRegistry(UnknownScopeModule.class);
-
-        try
-        {
-            Runnable runnable = r.getService("UnknownScope", Runnable.class);
-
-            runnable.run();
-
-            unreachable();
-        }
-        catch (Exception ex)
-        {
-            assertMessageContains(ex, "Error building service proxy for service 'UnknownScope'",
-                    "Unknown service scope 'magic'");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void scope_mismatch()
-    {
-        Registry r = buildRegistry(ScopeMismatchModule.class);
-
-        try
-        {
-            r.getService(StringBuilder.class);
-            unreachable();
-        }
-        catch (Exception ex)
-        {
-            assertMessageContains(ex,
-                    "Error building service proxy for service 'ScopeRequiresAProxyAndNoInterfaceIsProvided'",
-                    "Service scope 'perthread' requires a proxy");
-        }
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void simple_perthread() throws Exception
-    {
-        final Registry r = buildRegistry(PerThreadModule.class);
-
-        final StringHolder holder = r.getService(StringHolder.class);
-
-        // Something about some of the other tests causes this one to fail
-        // unless we start with cleanupThread(), there must be a loose ThreadLocal
-        // hanging around causing problems.
-
-        r.cleanupThread();
-
-        holder.setValue("fred");
-        assertEquals(holder.getValue(), "fred", holder.toString());
-
-        Runnable runnable = new Runnable()
-        {
-            public void run()
-            {
-                Assert.assertNull(holder.getValue());
-
-                holder.setValue("barney");
-                assertEquals(holder.getValue(), "barney");
-
-                r.cleanupThread();
-            }
-        };
-
-        Thread t = new Thread(runnable);
-
-        t.start();
-        t.join();
-
-        assertEquals(holder.getValue(), "fred");
-
-        r.cleanupThread();
-
-        r.shutdown();
-    }
-
-    /**
-     * This test fails at times and I'm not sure why. It's some kind of interaction with other tests
-     * but hard to figure
-     * out. Damn ThreadLocals!
-     */
-    @Test
-    public void registry_thread_cleanup()
-    {
-        Registry r = buildRegistry(PerThreadModule.class);
-
-        r.cleanupThread();
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        assertNull(holder.getValue());
-
-        holder.setValue("fred");
-        assertEquals(holder.getValue(), "fred");
-
-        r.cleanupThread();
-
-        assertNull(holder.getValue());
-    }
-
-    @Test
-    public void recursive_module_construction_is_caught()
-    {
-        Registry r = buildRegistry(RecursiveConstructorModule.class);
-
-        try
-        {
-            Runnable runnable = r.getService("Runnable", Runnable.class);
-
-            // We can get the proxy, but invoking a method causes
-            // the module to be instantiated ... but that also invokes a method on
-            // the proxy.
-
-            runnable.run();
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertTrue(ex.getMessage().contains("has failed due to recursion"));
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void eager_service_loading()
-    {
-        Registry r = buildRegistry(EagerLoadModule.class);
-
-        assertFalse(EagerLoadModule._eagerLoadDidHappen, "EagerLoadModule is not in correct initial state.");
-
-        r.performRegistryStartup();
-
-        assertTrue(EagerLoadModule._eagerLoadDidHappen);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void access_to_services_ignores_case()
-    {
-        Registry r = buildRegistry(FredModule.class);
-
-        Runnable fred = r.getService("Fred", Runnable.class);
-
-        assertSame(r.getService("FRED", Runnable.class), fred);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void simple_autobuild()
-    {
-        Registry r = buildRegistry(AutobuildModule.class);
-
-        StringHolder sh = r.getService(StringHolder.class);
-
-        sh.setValue("Foo");
-
-        assertEquals(sh.getValue(), "Foo");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void proxy_annotations() throws Exception
-    {
-        Registry r = buildRegistry(AutobuildModule.class);
-
-        StringHolder sh = r.getService(StringHolder.class);
-
-        SimpleAnnotation annotation = sh.getClass().getAnnotation(SimpleAnnotation.class);
-        assertNotNull(annotation);
-        assertEquals(annotation.value(), "StringHolderImpl");
-
-        Method method = sh.getClass().getMethod("getValue");
-
-        annotation = method.getAnnotation(SimpleAnnotation.class);
-        assertNotNull(annotation);
-        assertEquals(annotation.value(), "StringHolderImpl#getValue()");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void exception_in_autobuild_service_constructor()
-    {
-        Registry r = buildRegistry(ExceptionInConstructorModule.class);
-
-        Pingable pingable = r.getService(Pingable.class);
-
-        try
-        {
-            pingable.ping();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Error invoking constructor", "ExceptionInConstructorServiceImpl()",
-                    "for service 'Pingable'", "Yes, we have no tomatoes.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void non_proxied_service()
-    {
-        Registry r = buildRegistry(NonProxiedServiceModule.class);
-
-        // Note: obtained via the (or an) interface implemented by
-        // the service implementation.
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        assertTrue(holder instanceof StringHolderImpl);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void convention_over_configuration_service()
-    {
-        Registry r = buildRegistry(ConventionModule.class);
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        holder.setValue("Bar");
-
-        assertEquals(holder.getValue(), "Bar");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void convention_over_configuration_service_impl_not_found()
-    {
-        try
-        {
-            buildRegistry(ConventionModuleImplementationNotFound.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "No service implements the interface " + StringTransformer.class.getName()
-                    + ". Please provide");
-        }
-    }
-
-    @Test
-    public void convention_over_configuration_service_wrong_impl_found()
-    {
-        try
-        {
-            buildRegistry(ConventionFailureModule.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "No service implements the interface " + Pingable.class.getName());
-        }
-    }
-
-    @Test
-    public void service_builder_method_uses_autobuild()
-    {
-        Registry r = buildRegistry(ServiceBuilderAutobuilderModule.class);
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        // Check that it works.
-
-        holder.setValue("Foo");
-
-        assertEquals(holder.getValue(), "Foo");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void autobuild_via_registry()
-    {
-        Registry r = buildRegistry();
-
-        StringHolder holder = r.autobuild(StringHolderImpl.class);
-
-        assertSame(holder.getClass(), StringHolderImpl.class);
-
-        // Check that it works.
-
-        holder.setValue("Foo");
-
-        assertEquals(holder.getValue(), "Foo");
-
-        r.shutdown();
-    }
-
-    /** TAP5-967 */
-    @Test
-    public void autobuild_with_description_via_registry()
-    {
-        Registry r = buildRegistry();
-
-        StringHolder holder = r.autobuild("Building StringHolderImpl", StringHolderImpl.class);
-
-        assertSame(holder.getClass(), StringHolderImpl.class);
-
-        // Check that it works.
-
-        holder.setValue("Bar");
-
-        assertEquals(holder.getValue(), "Bar");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void service_builder_method_uses_autobuild_with_failure()
-    {
-        Registry r = buildRegistry(ServiceBuilderAutobuilderModule.class);
-
-        // We can get the proxy.
-
-        Pingable pingable = r.getService(Pingable.class);
-
-        try
-        {
-            // But it fails at realization
-
-            pingable.ping();
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Class org.apache.tapestry5.ioc.UnbuildablePingable does not contain a public constructor needed to autobuild.");
-
-            // Like to check that the message includes the source location
-
-            assertTrue(ex.getMessage().matches(".*\\(at ServiceBuilderAutobuilderModule.java:\\d+\\).*"));
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void autobuild_via_registry_no_constructor()
-    {
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.autobuild(UnbuildablePingable.class);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Class org.apache.tapestry5.ioc.UnbuildablePingable does not contain a public constructor needed to autobuild.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void autobuild_via_registry_constructor_exception()
-    {
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.autobuild(FailInConstructorRunnable.class);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Error invoking constructor org.apache.tapestry5.ioc.FailInConstructorRunnable()",
-                    "Failure in Runnable constructor.");
-
-            // Like to check that the message includes the source location
-
-            assertTrue(ex.getMessage().matches(".*\\(at FailInConstructorRunnable.java:\\d+\\).*"));
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void get_service_by_unknown_id()
-    {
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.getService("PeekABoo", Runnable.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Service id \'PeekABoo\' is not defined by any module.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void request_service_by_type_with_no_matches()
-    {
-
-        Registry r = buildRegistry();
-
-        try
-        {
-            r.getService(PreparedStatement.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "No service implements the interface java.sql.PreparedStatement.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void request_service_by_type_with_multiple_matches()
-    {
-        Registry r = buildRegistry(DuplicateServiceTypeModule.class);
-
-        try
-        {
-            r.getService(Pingable.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Service interface org.apache.tapestry5.ioc.Pingable is matched by 2 services: Barney, Fred.  Automatic dependency resolution requires that exactly one service implement the interface.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void service_build_method_return_type_not_interface()
-    {
-        Registry r = buildRegistry(ConcreteServiceBuilderModule.class);
-
-        StringHolder holder = r.getService(StringHolder.class);
-
-        // No interface means no proxy.
-
-        assertTrue(holder instanceof StringHolderImpl);
-
-        // But the implementation is cached
-
-        assertSame(r.getService(StringHolder.class), holder);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void symbol_in_inject_annotation_is_expanded()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("Greeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Hello");
-        assertEquals(g.toString(), "<Proxy for Greeter(org.apache.tapestry5.ioc.Greeter)>");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void symbol_in_registry_call_for_service_is_expanded()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("${greeter}", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Hello");
-        assertEquals(g.toString(), "<Proxy for HelloGreeter(org.apache.tapestry5.ioc.Greeter)>");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void injection_by_marker_with_single_match()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("InjectedBlueGreeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Blue");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void injection_by_marker_with_multiple_matches()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("InjectedRedGreeter", Greeter.class);
-
-        try
-        {
-            g.getGreeting();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Error invoking service builder method",
-                    "Unable to locate a single service assignable to type org.apache.tapestry5.ioc.Greeter with marker annotation(s) org.apache.tapestry5.ioc.RedMarker",
-                    "org.apache.tapestry5.ioc.GreeterModule.buildRedGreeter1()",
-                    "org.apache.tapestry5.ioc.GreeterModule.buildRedGreeter2()");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void injection_by_marker_with_zero_matches()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        Greeter g = r.getService("InjectedYellowGreeter", Greeter.class);
-
-        try
-        {
-            g.getGreeting();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Error invoking service builder method",
-                    " Unable to locate any service assignable to type org.apache.tapestry5.ioc.Greeter with marker annotation(s) org.apache.tapestry5.ioc.YellowMarker.");
-        }
-
-        r.shutdown();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void builtin_services_available_via_marker_annotation()
-    {
-        Registry r = buildRegistry();
-
-        TypeCoercer tc1 = r.getService("TypeCoercer", TypeCoercer.class);
-
-        Builtin annotation = newMock(Builtin.class);
-
-        AnnotationProvider ap = mockAnnotationProvider();
-
-        train_getAnnotation(ap, Builtin.class, annotation);
-
-        // On the build server, the order of keys inside the RegistryImpl's _markerToServiceDef
-        // is different, and so it *may* query ofr a number of other annotation
-        // besides Builtin.
-
-        expect(ap.getAnnotation(EasyMock.isA(Class.class))).andStubReturn(null);
-
-        replay();
-
-        TypeCoercer tc2 = r.getObject(TypeCoercer.class, ap);
-
-        assertSame(tc1, tc2);
-
-        verify();
-
-        r.shutdown();
-    }
-
-    /**
-     * A cursory test for {@link ServiceActivityScoreboard}, just to see if any data has been
-     * collected.
-     */
-    @Test
-    public void service_activity_scoreboard()
-    {
-        Registry r = buildRegistry(GreeterModule.class);
-
-        ServiceActivityScoreboard scoreboard = r.getService(ServiceActivityScoreboard.class);
-
-        // Force the state of a few services.
-
-        TypeCoercer tc = r.getService("TypeCoercer", TypeCoercer.class);
-
-        tc.coerce("123", Integer.class);
-
-        r.getService("BlueGreeter", Greeter.class);
-
-        // Now get the activity list and poke around.
-
-        List<ServiceActivity> serviceActivity = scoreboard.getServiceActivity();
-
-        assertTrue(serviceActivity.size() > 0);
-
-        for (ServiceActivity a : serviceActivity)
-        {
-            String serviceId = a.getServiceId();
-
-            if (serviceId.equals("ClassFactory"))
-                assertEquals(a.getStatus(), Status.BUILTIN);
-
-            if (serviceId.equals("RedGreeter1"))
-                assertEquals(a.getStatus(), Status.DEFINED);
-
-            if (serviceId.equals("TypeCoercer"))
-                assertEquals(a.getStatus(), Status.REAL);
-
-            if (serviceId.equals("BlueGreeter"))
-                assertEquals(a.getStatus(), Status.VIRTUAL);
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void proxy_autobuild_object()
-    {
-        Registry r = buildRegistry();
-
-        IntegrationTest.countingGreeterInstantiationCount = 0;
-
-        Greeter g = r.proxy(Greeter.class, CountingGreeterImpl.class);
-
-        assertEquals(IntegrationTest.countingGreeterInstantiationCount, 0);
-
-        assertNotNull(g.toString());
-
-        assertEquals(IntegrationTest.countingGreeterInstantiationCount, 0);
-
-        // Show that the class is not instantiated until a method is invoked, and that its
-        // only instantiated once.
-
-        for (int i = 0; i < 5; i++)
-        {
-            assertEquals(g.getGreeting(), "Hello");
-            assertEquals(IntegrationTest.countingGreeterInstantiationCount, 1);
-        }
-
-        r.shutdown();
-    }
-
-    /**
-     * TAPESTRY-2117
-     */
-    @Test
-    public void circular_module_references_are_ignored()
-    {
-        Registry r = buildRegistry(HelterModule.class);
-
-        Runnable helter = r.getService("Helter", Runnable.class);
-        Runnable skelter = r.getService("Skelter", Runnable.class);
-
-        assertNotSame(helter, skelter);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void bind_to_service_builder()
-    {
-        Registry r = buildRegistry(ServiceBuilderModule.class);
-
-        Greeter g = r.getService("Greeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "Greetings from service Greeter.");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void bind_to_service_binder_that_throws_exception()
-    {
-        Registry r = buildRegistry(ServiceBuilderModule.class);
-
-        Greeter g = r.getService("BrokenGreeter", Greeter.class);
-
-        try
-        {
-            g.getGreeting();
-            unreachable();
-        }
-        catch (Exception ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Exception constructing service 'BrokenGreeter': Failure inside ServiceBuilder callback.");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void invalid_class_in_manifest() throws Exception
-    {
-        File fakejar = new File("src/test/fakejar");
-
-        assertTrue(fakejar.exists() && fakejar.isDirectory(), "src/test/fakejar must be an existing directory");
-
-        URL url = fakejar.toURL();
-
-        URLClassLoader loader = new URLClassLoader(new URL[]
-        { url }, Thread.currentThread().getContextClassLoader());
-
-        RegistryBuilder builder = new RegistryBuilder(loader);
-
-        try
-        {
-            IOCUtilities.addDefaultModules(builder);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Exception loading module(s) from manifest",
-                    "Failure loading Tapestry IoC module class does.not.exist.Module");
-        }
-    }
-
-    @Test
-    public void local_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule.class, LocalModule.class);
-
-        StringHolder g = r.getService("LocalGreeterHolder", StringHolder.class);
-
-        // Comes from the @Local DrawlGreeter, even though there are many other Greeter services
-        // available.
-
-        assertEquals(g.getValue(), "Hello, y'all!");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void decorator_receive_delegate_by_specific_type()
-    {
-        Registry r = buildRegistry(GreeterModule.class, SpecificDecoratorModule.class);
-
-        Greeter g = r.getService("HelloGreeter", Greeter.class);
-
-        assertEquals(g.getGreeting(), "HELLO");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void cyclic_dependency_in_MOP() throws Exception
-    {
-        Registry r = buildRegistry(CyclicMOPModule.class);
-
-        Runnable trigger = r.getService("Trigger", Runnable.class);
-
-        try
-        {
-            trigger.run();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Construction of service 'TypeCoercer' has failed due to recursion");
-        }
-
-        r.shutdown();
-    }
-
-    @Test
-    public void no_public_constructor_on_module_builder_class()
-    {
-        Registry r = buildRegistry(PrivateConstructorModule.class);
-
-        try
-        {
-            r.getService("Trigger", Runnable.class).run();
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Module class org.apache.tapestry5.ioc.internal.PrivateConstructorModule does not contain any public constructors.");
-        }
-    }
-
-    @Test
-    public void too_many_public_constructors_on_module_builder_class()
-    {
-        Registry r = buildRegistry(ExtraPublicConstructorsModule.class);
-
-        UpcaseService s = r.getService(UpcaseService.class);
-
-        assertEquals(s.upcase("Hello, ${fred}"), "HELLO, FLINTSTONE");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void unordered_configuration_contribute_by_class()
-    {
-        Registry r = buildRegistry(ContributeByClassModule.class);
-
-        StringTransformer st = r.getService("MasterStringTransformer", StringTransformer.class);
-
-        assertEquals(st.transform("Tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void ordered_configuration_contribute_by_class()
-    {
-        Registry r = buildRegistry(ContributeByClassModule.class);
-
-        StringTransformer st = r.getService("StringTransformerChain", StringTransformer.class);
-
-        assertEquals(st.transform("Tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void mapped_configuration_contribute_by_class()
-    {
-        Registry r = buildRegistry(ContributeByClassModule.class);
-
-        StringTransformer st = r.getService("MappedStringTransformer", StringTransformer.class);
-
-        assertEquals(st.transform("Tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-139
-     */
-    @Test
-    public void autobuild_injection()
-    {
-        Registry r = buildRegistry(AutobuildInjectionModule.class);
-
-        StringTransformer st = r.getService(StringTransformer.class);
-
-        assertEquals(st.transform("Hello, ${fred}"), "Hello, flintstone");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-292
-     */
-    @Test
-    public void field_resource_injection()
-    {
-        Registry r = buildRegistry(FieldResourceInjectionModule.class);
-
-        FieldResourceService s = r.getService(FieldResourceService.class);
-
-        assertEquals(s.getServiceId(), "FieldResourceService");
-        assertListsEquals(s.getLabels(), "Barney", "Betty", "Fred", "Wilma");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-292
-     */
-    @Test
-    public void failed_field_resource_injection()
-    {
-        Registry r = buildRegistry(FieldResourceInjectionModule.class);
-
-        StringTransformer s = r.getService(StringTransformer.class);
-
-        try
-        {
-            s.transform("hello");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Unable to determine resource value to inject into field 'unknownRunnable' (of type java.lang.Runnable).");
-        }
-    }
-
-    /**
-     * TAP5-291
-     */
-    @Test
-    public void post_injection_method_invoked()
-    {
-        Registry r = buildRegistry(PostInjectionMethodModule.class);
-
-        Greeter g = r.getService(Greeter.class);
-
-        assertEquals(g.getGreeting(), "Greetings from ServiceIdGreeter.");
-    }
-
-    /**
-     * TAP5-429
-     */
-    @Test
-    public void contribute_to_unknown_service()
-    {
-        try
-        {
-            buildRegistry(InvalidContributeDefModule.class);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Contribution org.apache.tapestry5.ioc.InvalidContributeDefModule.contributeDoesNotExist(Configuration)",
-                    "is for service 'DoesNotExist', which does not exist.");
-        }
-    }
-
-    /**
-     * TAP5-436
-     */
-    @Test
-    public void extra_methods_on_module_class_are_errors()
-    {
-        try
-        {
-            buildRegistry(ExtraMethodsModule.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Module class org.apache.tapestry5.ioc.ExtraMethodsModule contains unrecognized public methods: ",
-                    "thisMethodIsInvalid()", "soIsThisMethod().");
-        }
-    }
-
-    /**
-     * TAP5-430
-     */
-    @Test
-    public void service_builder_method_marked_for_no_decoration()
-    {
-        Registry r = buildRegistry(PreventDecorationModule.class);
-
-        StringTransformer st = r.getService(StringTransformer.class);
-
-        assertEquals(st.transform("tapestry"), "TAPESTRY");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-430
-     */
-    @Test
-    public void bind_service_marked_for_no_decoration_explicitly()
-    {
-        Registry r = buildRegistry(PreventDecorationModule.class);
-
-        Greeter g = r.getService(Greeter.class);
-
-        assertEquals(g.getGreeting(), "Greetings from ServiceIdGreeter.");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-430
-     */
-    @Test
-    public void bind_service_with_prevent_service_decoration_annotations_on_implementation_class()
-    {
-        Registry r = buildRegistry(PreventDecorationModule.class);
-
-        Rocket rocket = r.getService(Rocket.class);
-
-        assertEquals(rocket.getCountdown(), "3, 2, 1, Launch!");
-
-        r.shutdown();
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void successful_ordered_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class);
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("BARNEY", "WILMA", "Mr. Flintstone"));
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void failed_ordered_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, FailedConfigurationOverrideModule.class);
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        try
-        {
-            service.getNames();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Failure processing override from org.apache.tapestry5.ioc.FailedConfigurationOverrideModule.contributeOrderedNames(OrderedConfiguration)",
-                    "Override for object 'wilma' is invalid as it does not match an existing object.");
-        }
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void duplicate_ordered_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class,
-                DuplicateConfigurationOverrideModule.class);
-
-        NameListHolder service = r.getService("OrderedNames", NameListHolder.class);
-
-        try
-        {
-            service.getNames();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // Can't get too specific since we don't know which module will get processed first
-            assertMessageContains(ex, "Error invoking service contribution method ",
-                    "Contribution 'fred' has already been overridden");
-        }
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void mapped_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class);
-
-        StringLookup sl = r.getService(StringLookup.class);
-
-        // Due to override wilma to null:
-
-        assertListsEquals(sl.keys(), "barney", "betty", "fred");
-
-        assertEquals(sl.lookup("fred"), "Mr. Flintstone");
-    }
-
-    /**
-     * TAP5-437
-     */
-    @Test
-    public void nonmatching_mapped_configuration_override()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class,
-                NonmatchingMappedConfigurationOverrideModule.class);
-
-        StringLookup sl = r.getService(StringLookup.class);
-
-        try
-        {
-            sl.keys();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Exception constructing service 'StringLookup'",
-                    "Error invoking service builder method org.apache.tapestry5.ioc.FredModule.buildStringLookup(Map) ",
-                    "Override for key alley cat (at org.apache.tapestry5.ioc.util.NonmatchingMappedConfigurationOverrideModule.contributeStringLookup(MappedConfiguration)",
-                    "does not match an existing key.");
-        }
-    }
-
-    /**
-     * TAP-437
-     */
-    @Test
-    public void duplicate_override_for_mapped_configuration()
-    {
-        Registry r = buildRegistry(FredModule.class, BarneyModule.class, ConfigurationOverrideModule.class,
-                DuplicateConfigurationOverrideModule.class);
-
-        StringLookup sl = r.getService(StringLookup.class);
-
-        try
-        {
-            sl.keys();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Error invoking service contribution method",
-                    "Contribution key fred has already been overridden");
-        }
-    }
-
-    /**
-     * TAP5-316
-     */
-    @Test
-    public void service_override()
-    {
-        Registry r = buildRegistry(GreeterServiceOverrideModule.class);
-
-        Greeter g = r.getObject(Greeter.class, null);
-
-        assertEquals(g.getGreeting(), "Override Greeting");
-    }
-
-    /**
-     * TAP5-60
-     */
-    @Test
-    public void non_void_advisor_method_is_error()
-    {
-        try
-        {
-            buildRegistry(NonVoidAdvisorMethodModule.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Advise method org.apache.tapestry5.ioc.NonVoidAdvisorMethodModule.adviseFoo(MethodAdviceReceiver)",
-                    "does not return void.");
-        }
-    }
-
-    /**
-     * TAP5-60
-     */
-    @Test
-    public void advisor_methods_must_take_a_method_advisor_parameter()
-    {
-        try
-        {
-            buildRegistry(AdviceMethodMissingAdvisorParameterModule.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                    "Advise method org.apache.tapestry5.ioc.AdviceMethodMissingAdvisorParameterModule.adviseBar()",
-                    "must take a parameter of type org.apache.tapestry5.ioc.MethodAdviceReceiver.");
-        }
-    }
-
-    /**
-     * TAP5-60
-     */
-    @Test
-    public void advise_services()
-    {
-        Registry r = buildRegistry(AdviceDemoModule.class);
-
-        Greeter g = r.getService(Greeter.class);
-
-        assertEquals(g.getGreeting(), "ADVICE IS EASY!");
-    }
-
-    @Test
-    public void contribute_by_annotation()
-    {
-        Registry r = buildRegistry(AlphabetModule.class, AlphabetModule2.class);
-
-        NameListHolder greek = r.getService("Greek", NameListHolder.class);
-
-        assertListsEquals(greek.getNames(), "Alpha", "Beta", "Gamma", "Delta");
-
-        NameListHolder anotherGreek = r.getService("AnotherGreek", NameListHolder.class);
-
-        assertListsEquals(anotherGreek.getNames(), "Alpha", "Beta", "Gamma", "Delta", "Epsilon");
-
-        NameListHolder hebrew = r.getService("Hebrew", NameListHolder.class);
-
-        assertListsEquals(hebrew.getNames(), "Alef", "Bet", "Gimel", "Dalet", "He", "Vav");
-
-        NameListHolder2 holder = r.getService("ServiceWithEmptyConfiguration", NameListHolder2.class);
-
-        assertEquals(holder.getNames(), Arrays.asList());
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void contribute_by_annotation_to_nonexistent_service()
-    {
-        try
-        {
-            buildRegistry(InvalidContributeDefModule2.class);
-            unreachable();
-        }
-        catch (Exception e)
-        {
-            assertMessageContains(
-                    e,
-                    "Contribution org.apache.tapestry5.ioc.InvalidContributeDefModule2.provideConfiguration(OrderedConfiguration)",
-                    "is for service 'interface org.apache.tapestry5.ioc.NameListHolder'",
-                    "qualified with marker annotations [", "interface org.apache.tapestry5.ioc.BlueMarker",
-                    "interface org.apache.tapestry5.ioc.RedMarker", "], which does not exist.");
-        }
-    }
-
-    @Test
-    public void contribute_by_annotation_wrong_marker()
-    {
-        try
-        {
-            buildRegistry(InvalidContributeDefModule3.class);
-            unreachable();
-        }
-        catch (Exception e)
-        {
-            assertMessageContains(
-                    e,
-                    "Contribution org.apache.tapestry5.ioc.InvalidContributeDefModule3.provideConfiguration(OrderedConfiguration)",
-                    "is for service 'interface org.apache.tapestry5.ioc.NameListHolder'",
-                    "qualified with marker annotations [interface org.apache.tapestry5.ioc.BlueMarker], which does not exist.");
-        }
-    }
-
-    @Test
-    public void service_resources_available_when_invoking_contribute_method()
-    {
-        Registry r = buildRegistry(InjectionCheckModule.class);
-
-        InjectionCheck service = r.getService(InjectionCheck.class);
-
-        assertSame(service.getLogger(), service.getValue("logger"));
-
-        IndirectResources il = (IndirectResources) service.getValue("indirect-resources");
-
-        assertSame(service.getLogger(), il.getLogger());
-        assertSame(service.getLogger(), il.getResources().getLogger());
-
-        r.shutdown();
-    }
-   
-    @Test
-    public void advise_by_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, AdviseByMarkerModule.class);
-
-        Greeter green = r.getService("GreenGreeter", Greeter.class);
-
-        assertEquals(green.getGreeting(), "gamma[beta[alpha[Green]]]");
-
-        r.shutdown();
-
-    }
-   
-    @Test
-    public void advise_by_locale_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, AdviseByMarkerModule.class);
-       
-        Greeter red = r.getService("RedGreeter", Greeter.class);
-
-        assertEquals(red.getGreeting(), "delta[Red]");
-
-        r.shutdown();
-
-    }
-   
-    @Test
-    public void decorate_by_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, DecorateByMarkerModule.class);
-
-        Greeter green = r.getService("GreenGreeter", Greeter.class);
-
-        assertEquals(green.getGreeting(), "Decorated by foo[Decorated by baz[Decorated by bar[Green]]]");
-
-        r.shutdown();
-
-    }
-   
-    @Test
-    public void decorate_by_locale_annotation()
-    {
-        Registry r = buildRegistry(GreeterModule2.class, DecorateByMarkerModule.class);
-       
-        Greeter red = r.getService("RedGreeter", Greeter.class);
-
-        assertEquals(red.getGreeting(), "Decorated by barney[Red]");
-
-        r.shutdown();
-
-    }
-
-    @Test
-    public void startup_inside_module()
-    {
-        Registry r = buildRegistry(StartupModule2.class);
-
-        assertFalse(StartupModule2.staticStartupInvoked);
-
-        assertFalse(StartupModule2.instanceStartupInvoked);
-
-        r.performRegistryStartup();
-
-        assertTrue(StartupModule2.staticStartupInvoked);
-
-        assertTrue(StartupModule2.instanceStartupInvoked);
-
-        r.shutdown();
-    }
-
-    @Test
-    public void case_ignored_in_service_id_of_contribute_method()
-    {
-        Registry r = buildRegistry(CaseInsensitiveContributeMethodModule.class);
-
-        SymbolSource symbolSource = r.getService(SymbolSource.class);
-
-        assertEquals(symbolSource.valueForSymbol("it"), "works");
-
-        r.shutdown();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule.java
deleted file mode 100644
index 2665c0c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class InvalidContributeDefModule
-{
-    /**
-     * Its a contribute method, but to a service that does not exist.
-     */
-    public static void contributeDoesNotExist(Configuration<Object> configuration)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule2.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule2.java
deleted file mode 100644
index 0fcb442..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule2.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class InvalidContributeDefModule2
-{
-    @Marker(GreenMarker.class)
-    public NameListHolder build(final List<String> configuration)
-    {
-
-        return new NameListHolder()
-        {
-            public List<String> getNames()
-            {
-                return configuration;
-            }
-        };
-    }
-
-    @Marker(
-    { BlueMarker.class, RedMarker.class })
-    public Runnable buildBlueRedClassSoThatTheyAreMarkerAnnotations()
-    {
-        return null;
-    }
-
-    /**
-     * Its a contribute method, but to a service that does not exist.
-     */
-    @Contribute(NameListHolder.class)
-    @BlueMarker
-    @RedMarker
-    public void provideConfiguration(OrderedConfiguration<String> configuration)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule3.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule3.java
deleted file mode 100644
index 20e0556..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/InvalidContributeDefModule3.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class InvalidContributeDefModule3
-{
-    @Marker(BlueMarker.class)
-    public Runnable build(final List<String> configuration)
-    {
-
-        return new Runnable()
-        {
-            public void run()
-            {
-
-            }
-
-        };
-    }
-
-    /**
-     * Its a contribute method, but to a service that does not exist.
-     */
-    @Contribute(NameListHolder.class)
-    @BlueMarker
-    public void provideConfiguration(OrderedConfiguration<String> configuration)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/LocalModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/LocalModule.java
deleted file mode 100644
index 7cc5340..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/LocalModule.java
+++ /dev/null
@@ -1,46 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Local;
-
-public class LocalModule
-{
-    public Greeter buildDrawlGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Hello, y'all!";
-            }
-        };
-    }
-
-    public StringHolder buildLocalGreeterHolder(final @Local Greeter greeter)
-    {
-        return new StringHolder()
-        {
-            public void setValue(String value)
-            {
-            }
-
-            public String getValue()
-            {
-                return greeter.getGreeting();
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/MarkerModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/MarkerModule.java
deleted file mode 100644
index 781d142..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/MarkerModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class MarkerModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Greeter.class, RedGreeterImpl.class).withId("RedGreeter");
-        binder.bind(Greeter.class, UnknownColorGreeterImpl.class).withId("SecondRedGreeter")
-                .withMarker(RedMarker.class);
-        binder.bind(Greeter.class, RedGreeterImpl.class).withId("SurprisinglyBlueGreeter")
-                .withMarker(BlueMarker.class);
-    }
-
-    @Marker(BlueMarker.class)
-    public Greeter build()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/MasterModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/MasterModule.java
deleted file mode 100644
index a26354b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/MasterModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.SubModule;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.RegistryBuilderTest}.
- */
-@SubModule(
-        { FredModule.class, BarneyModule.class })
-public final class MasterModule
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NameListHolder.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NameListHolder.java
deleted file mode 100644
index 5c61b38..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NameListHolder.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-/**
- * Used for testing of ordered and unordered contributions. The names are contributed in from multiple modules. For
- * unordered contributions, the values are sorted alphabetically. For ordered contributions, the values are ordered as
- * per the contributions.
- */
-public interface NameListHolder
-{
-    public List<String> getNames();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NameListHolder2.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NameListHolder2.java
deleted file mode 100644
index 0d90c4d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NameListHolder2.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-/**
- * Used for testing of ordered and unordered contributions. The names are contributed in from multiple modules. For
- * unordered contributions, the values are sorted alphabetically. For ordered contributions, the values are ordered as
- * per the contributions.
- */
-public interface NameListHolder2
-{
-    public List<String> getNames();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NonProxiedServiceModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NonProxiedServiceModule.java
deleted file mode 100644
index f92f608..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NonProxiedServiceModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class NonProxiedServiceModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(StringHolderImpl.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NonVoidAdvisorMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NonVoidAdvisorMethodModule.java
deleted file mode 100644
index 2ec5058..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/NonVoidAdvisorMethodModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class NonVoidAdvisorMethodModule
-{
-    public static String adviseFoo(MethodAdviceReceiver methodAdviceReceiver)
-    {
-        return "Never Called";
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/OrderConstraintBuilderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/OrderConstraintBuilderTest.java
deleted file mode 100644
index 17ca994..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/OrderConstraintBuilderTest.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class OrderConstraintBuilderTest extends IOCTestCase
-{
-    @Test
-    public void after()
-    {
-        String[] constraints = OrderConstraintBuilder.after("A").build();
-        
-        assertEquals(constraints.length, 1);
-        assertEquals(constraints[0], "after:A");
-    }
-
-    @Test
-    public void afterAll()
-    {
-        String[] constraints = OrderConstraintBuilder.afterAll().build();
-        
-        assertEquals(constraints.length, 1);
-        assertEquals(constraints[0], "after:*");
-    }
-
-    @Test
-    public void before()
-    {
-        String[] constraints = OrderConstraintBuilder.before("B").build();
-        
-        assertEquals(constraints.length, 1);
-        assertEquals(constraints[0], "before:B");
-    }
-
-    @Test
-    public void beforeAll()
-    {
-        String[] constraints = OrderConstraintBuilder.beforeAll().build();
-        
-        assertEquals(constraints.length, 1);
-        assertEquals(constraints[0], "before:*");
-    }
-    
-
-
-    @Test
-    public void combine()
-    {
-        String[] constraints = OrderConstraintBuilder.before("A").after("B").build();
-        
-        assertEquals(constraints.length, 2);
-        assertEquals(constraints[0], "before:A");
-        assertEquals(constraints[1], "after:B");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PerThreadModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PerThreadModule.java
deleted file mode 100644
index d644e58..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PerThreadModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-public class PerThreadModule
-{
-    @Scope(ScopeConstants.PERTHREAD)
-    public StringHolder buildStringHolder()
-    {
-        return new StringHolderImpl();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Pingable.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Pingable.java
deleted file mode 100644
index 6770951..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Pingable.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Interface used as a stand-in for testing for more complicated services.
- */
-public interface Pingable
-{
-    void ping();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PingableImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PingableImpl.java
deleted file mode 100644
index f09accc..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PingableImpl.java
+++ /dev/null
@@ -1,6 +0,0 @@
-package org.apache.tapestry5.ioc;
-
-public class PingableImpl
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PostInjectionMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PostInjectionMethodModule.java
deleted file mode 100644
index 0a4f986..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PostInjectionMethodModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class PostInjectionMethodModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Greeter.class, ServiceIdGreeter.class).withId("ServiceIdGreeter");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PreventDecorationModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PreventDecorationModule.java
deleted file mode 100644
index 22601f1..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/PreventDecorationModule.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Match;
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-
-public class PreventDecorationModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Greeter.class, ServiceIdGreeter.class).withId("ServiceIdGreeter").preventDecoration();
-        binder.bind(Rocket.class, RocketImpl.class);
-    }
-
-    @PreventServiceDecoration
-    public StringTransformer buildStringTransformer()
-    {
-        return new UppercaseStringTransformer();
-    }
-
-    @Match("*")
-    public <T> T decorateEverything(Class<T> type, T instance)
-    {
-        throw new RuntimeException(String.format("Failure to decorate type %s.", type.getName()));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java
deleted file mode 100644
index 1fea4ef..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RecursiveConstructorModule.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.IntegrationTest}.
- */
-public class RecursiveConstructorModule
-{
-
-    public RecursiveConstructorModule(@InjectService("Runnable")
-    Runnable r)
-    {
-        // Invoking a method on the service proxy is going to cause a recursive attempt to
-        // instantiate the module. Hilarity ensues.
-
-        r.run();
-    }
-
-    public Runnable buildRunnable()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RedGreeterImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RedGreeterImpl.java
deleted file mode 100644
index 80d274e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RedGreeterImpl.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-@Marker(RedMarker.class)
-public class RedGreeterImpl implements Greeter
-{
-
-    public String getGreeting()
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RedMarker.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RedMarker.java
deleted file mode 100644
index bed490f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RedMarker.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Target(
-{ PARAMETER, FIELD, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface RedMarker
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java
deleted file mode 100644
index 6ad44f7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTest.java
+++ /dev/null
@@ -1,113 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-
-import java.util.Arrays;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-public class RegistryBuilderTest extends IOCTestCase
-{
-    @Test
-    public void sub_module()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-
-        builder.add(MasterModule.class);
-
-        Registry r = builder.build();
-
-        // Borrowed from IntegrationTest, this will only work if both FredModule and BarneyModule
-        // are loaded.
-
-        NameListHolder service = r.getService("UnorderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
-
-        r.shutdown();
-    }
-
-    @Test
-    public void manifest()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-
-        String value = String.format("%s, %s, %s", FredModule.class.getName(), BarneyModule.class
-                .getName(), RegistryBuilderTestModule.class.getName());
-
-        IOCUtilities.addModulesInList(builder, value);
-
-        Registry registry = builder.build();
-
-        Square service = registry.getService(Square.class);
-
-        assertEquals(service.square(4), 16l);
-
-        // This proves that the IOC works, the service builder method was invoked, that the
-        // ClassFactory service was accessed and used.
-
-        assertEquals(service.toString(), "<Proxy for Square(org.apache.tapestry5.ioc.Square)>");
-
-        registry.shutdown();
-    }
-    
-    @Test
-    public void build_and_startup_registry_from_modules()
-    {
-        Registry r = RegistryBuilder.buildAndStartupRegistry(MasterModule.class);
-        
-        NameListHolder service = r.getService("UnorderedNames", NameListHolder.class);
-
-        List<String> names = service.getNames();
-
-        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
-
-        r.shutdown();
-    }
-    
-    @Test
-    public void build_and_startup_registry_from_moduledef_and_modules()
-    {
-        Logger logger = LoggerFactory.getLogger(getClass());
-        ClassFactory classFactory = new ClassFactoryImpl();
-
-        ModuleDef module = new DefaultModuleDefImpl(ServiceBuilderModule.class, logger, classFactory);
-        
-        Registry r = RegistryBuilder.buildAndStartupRegistry(module, MasterModule.class);
-        
-        NameListHolder nameListHolder = r.getService("UnorderedNames", NameListHolder.class);
-
-        List<String> names = nameListHolder.getNames();
-
-        assertEquals(names, Arrays.asList("Beta", "Gamma", "UnorderedNames"));
-        
-        Greeter gretter = r.getService("Greeter", Greeter.class);
-        
-        assertEquals(gretter.getGreeting(), "Greetings from service Greeter.");
-
-        r.shutdown();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTestModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTestModule.java
deleted file mode 100644
index 9b8732f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RegistryBuilderTestModule.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class RegistryBuilderTestModule
-{
-    /**
-     * Arbitrary interface and service name.
-     */
-    public Square buildSquare()
-    {
-        return new Square()
-        {
-            public long square(long input)
-            {
-                return input * input;
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java
deleted file mode 100644
index 4120f1f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ReloadTest.java
+++ /dev/null
@@ -1,351 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.io.File;
-import java.io.IOException;
-import java.lang.reflect.Modifier;
-import java.net.URL;
-import java.net.URLClassLoader;
-
-import javassist.CannotCompileException;
-import javassist.ClassPool;
-import javassist.CtClass;
-import javassist.CtConstructor;
-import javassist.CtMethod;
-import javassist.NotFoundException;
-
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.apache.tapestry5.services.UpdateListenerHub;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import com.example.Counter;
-import com.example.CounterImpl;
-import com.example.ReloadAwareModule;
-import com.example.ReloadModule;
-import com.example.ReloadableService;
-
-/**
- * Test the ability to perform live class reloading of a service implementation.
- */
-@SuppressWarnings("unchecked")
-public class ReloadTest extends IOCTestCase
-{
-    private static final String PACKAGE = "com.example";
-
-    private static final String CLASS = PACKAGE + ".ReloadableServiceImpl";
-
-    private static final String BASE_CLASS = PACKAGE + ".BaseReloadableServiceImpl";
-
-    private File classesDir;
-
-    private ClassLoader classLoader;
-
-    public static boolean eagerLoadServiceWasInstantiated;
-
-    private File classFile;
-
-    @BeforeClass
-    public void setup() throws Exception
-    {
-        String uid = Long.toHexString(System.currentTimeMillis());
-
-        classesDir = new File(System.getProperty("java.io.tmpdir"), uid);
-
-        // URLClassLoader REQUIRES that File URLs end with a slash! That's a half hour of my life gone!
-
-        URL classesURL = new URL("file:" + classesDir.getCanonicalPath() + "/");
-
-        System.out.println("Reload classes dir: " + classesURL);
-
-        classLoader = new URLClassLoader(new URL[]
-        { classesURL }, Thread.currentThread().getContextClassLoader());
-
-        classFile = new File(classesDir, "com/example/ReloadableServiceImpl.class");
-    }
-
-    @Test
-    public void reload_a_service_implementation() throws Exception
-    {
-        // First, create the initial implementation
-
-        createImplementationClass("initial");
-
-        Registry registry = createRegistry();
-
-        ReloadableService reloadable = registry.getService(ReloadableService.class);
-
-        fireUpdateCheck(registry);
-
-        assertEquals(reloadable.getStatus(), "initial");
-
-        fireUpdateCheck(registry);
-
-        touch(classFile);
-
-        createImplementationClass("updated");
-
-        // Doesn't take effect until after the update check
-
-        assertEquals(reloadable.getStatus(), "initial");
-
-        fireUpdateCheck(registry);
-
-        assertEquals(reloadable.getStatus(), "updated");
-
-        registry.shutdown();
-    }
-
-    @Test
-    public void reload_a_base_class() throws Exception
-    {
-        createImplementationClass(BASE_CLASS, "initial from base");
-
-        ClassPool pool = new ClassPool(null);
-
-        pool.appendSystemPath();
-        pool.appendClassPath(classesDir.getAbsolutePath());
-
-        CtClass ctClass = pool.makeClass(CLASS);
-
-        ctClass.setSuperclass(pool.get(BASE_CLASS));
-
-        ctClass.writeFile(classesDir.getAbsolutePath());
-
-        Registry registry = createRegistry();
-
-        ReloadableService reloadable = registry.getService(ReloadableService.class);
-
-        fireUpdateCheck(registry);
-
-        assertEquals(reloadable.getStatus(), "initial from base");
-
-        touch(new File(classesDir, ClassFabUtils.getPathForClassNamed(BASE_CLASS)));
-
-        createImplementationClass(BASE_CLASS, "updated from base");
-
-        fireUpdateCheck(registry);
-
-        assertEquals(reloadable.getStatus(), "updated from base");
-
-        registry.shutdown();
-
-    }
-
-    @Test
-    public void delete_class() throws Exception
-    {
-        createImplementationClass("before delete");
-
-        Registry registry = createRegistry();
-
-        ReloadableService reloadable = registry.getService(ReloadableService.class);
-
-        assertEquals(reloadable.getStatus(), "before delete");
-
-        assertTrue(classFile.exists(), "The class file must exist.");
-
-        classFile.delete();
-
-        fireUpdateCheck(registry);
-
-        try
-        {
-            reloadable.getStatus();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Unable to reload", CLASS);
-        }
-
-        registry.shutdown();
-    }
-
-    @Test
-    public void reload_a_proxy_object() throws Exception
-    {
-        createImplementationClass("initial proxy");
-
-        Registry registry = createRegistry();
-
-        Class<ReloadableService> clazz = (Class<ReloadableService>) classLoader.loadClass(CLASS);
-
-        ReloadableService reloadable = registry.proxy(ReloadableService.class, clazz);
-
-        assertEquals(reloadable.getStatus(), "initial proxy");
-
-        touch(classFile);
-
-        createImplementationClass("updated proxy");
-
-        fireUpdateCheck(registry);
-
-        assertEquals(reloadable.getStatus(), "updated proxy");
-
-        touch(classFile);
-
-        createImplementationClass("re-updated proxy");
-
-        fireUpdateCheck(registry);
-
-        assertEquals(reloadable.getStatus(), "re-updated proxy");
-
-        registry.shutdown();
-    }
-
-    private void fireUpdateCheck(Registry registry)
-    {
-        registry.getService(UpdateListenerHub.class).fireCheckForUpdates();
-    }
-
-    private Registry createRegistry()
-    {
-        RegistryBuilder builder = new RegistryBuilder(classLoader);
-
-        builder.add(ReloadModule.class);
-
-        return builder.build();
-    }
-
-    @Test
-    public void invalid_service_implementation() throws Exception
-    {
-        createImplementationClass("initial");
-
-        Registry registry = createRegistry();
-
-        ReloadableService reloadable = registry.getService(ReloadableService.class);
-
-        touch(classFile);
-
-        createInvalidImplentationClass();
-
-        fireUpdateCheck(registry);
-
-        try
-        {
-            reloadable.getStatus();
-
-            unreachable();
-        }
-        catch (Exception ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Service implementation class com.example.ReloadableServiceImpl does not have a suitable public constructor.");
-        }
-
-        registry.shutdown();
-    }
-
-    private void createImplementationClass(String status) throws Exception
-    {
-        createImplementationClass(CLASS, status);
-    }
-
-    private void createImplementationClass(String className, String status) throws NotFoundException,
-            CannotCompileException, IOException
-    {
-        ClassPool pool = new ClassPool(null);
-
-        pool.appendSystemPath();
-
-        CtClass ctClass = pool.makeClass(className);
-
-        ctClass.addInterface(pool.get(ReloadableService.class.getName()));
-
-        CtMethod method = new CtMethod(pool.get("java.lang.String"), "getStatus", null, ctClass);
-
-        method.setBody(String.format("return \"%s\";", status));
-
-        ctClass.addMethod(method);
-
-        ctClass.writeFile(classesDir.getAbsolutePath());
-    }
-
-    private void createInvalidImplentationClass() throws Exception
-    {
-        ClassPool pool = new ClassPool(null);
-
-        pool.appendSystemPath();
-
-        CtClass ctClass = pool.makeClass(CLASS);
-
-        ctClass.setModifiers(Modifier.ABSTRACT | Modifier.PUBLIC);
-        ctClass.addInterface(pool.get(ReloadableService.class.getName()));
-
-        CtConstructor constructor = new CtConstructor(new CtClass[0], ctClass);
-
-        constructor.setBody("return $0;");
-
-        constructor.setModifiers(Modifier.PROTECTED);
-
-        ctClass.addConstructor(constructor);
-
-        ctClass.writeFile(classesDir.getAbsolutePath());
-    }
-
-    @Test
-    public void eager_load_service_with_proxy()
-    {
-        eagerLoadServiceWasInstantiated = false;
-
-        Registry r = new RegistryBuilder().add(EagerProxyReloadModule.class).build();
-
-        r.performRegistryStartup();
-
-        assertTrue(eagerLoadServiceWasInstantiated);
-    }
-
-    @Test
-    public void reload_aware() throws Exception
-    {
-        Registry r = buildRegistry(ReloadAwareModule.class);
-
-        assertEquals(ReloadAwareModule.counterInstantiations, 0);
-        assertEquals(ReloadAwareModule.counterReloads, 0);
-
-        Counter counter = r.proxy(Counter.class, CounterImpl.class);
-
-        assertEquals(ReloadAwareModule.counterInstantiations, 0);
-
-        assertEquals(counter.increment(), 1);
-        assertEquals(counter.increment(), 2);
-
-        assertEquals(ReloadAwareModule.counterInstantiations, 1);
-
-        URL classURL = CounterImpl.class.getResource("CounterImpl.class");
-
-        File classFile = new File(classURL.toURI());
-
-        touch(classFile);
-
-        assertEquals(ReloadAwareModule.counterInstantiations, 1);
-        assertEquals(ReloadAwareModule.counterReloads, 0);
-
-        fireUpdateCheck(r);
-
-        assertEquals(ReloadAwareModule.counterInstantiations, 2);
-        assertEquals(ReloadAwareModule.counterReloads, 1);
-
-        // Check that internal state has reset
-
-        assertEquals(counter.increment(), 1);
-
-        r.shutdown();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Rocket.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Rocket.java
deleted file mode 100644
index de24f52..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Rocket.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public interface Rocket
-{
-    public String getCountdown();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RocketImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RocketImpl.java
deleted file mode 100644
index 9384bc8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/RocketImpl.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.PreventServiceDecoration;
-
-@PreventServiceDecoration
-public class RocketImpl implements Rocket
-{
-    public String getCountdown()
-    {
-        return "3, 2, 1, Launch!";
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ScopeMismatchModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ScopeMismatchModule.java
deleted file mode 100644
index 700e753..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ScopeMismatchModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-public class ScopeMismatchModule
-{
-    @Scope(ScopeConstants.PERTHREAD)
-    public StringBuilder buildScopeRequiresAProxyAndNoInterfaceIsProvided()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceBuilderAutobuilderModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceBuilderAutobuilderModule.java
deleted file mode 100644
index e4e9ed3..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceBuilderAutobuilderModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class ServiceBuilderAutobuilderModule
-{
-    public StringHolder build(ServiceResources resources)
-    {
-        return resources.autobuild(StringHolderImpl.class);
-    }
-
-    public Pingable buildPingable(ServiceResources resources)
-    {
-        return resources.autobuild(UnbuildablePingable.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceBuilderModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceBuilderModule.java
deleted file mode 100644
index fcb9b48..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceBuilderModule.java
+++ /dev/null
@@ -1,47 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Used to test the functionality related to {@link org.apache.tapestry5.ioc.ServiceBinder#bind(Class,
- * ServiceBuilder)}.
- */
-public class ServiceBuilderModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Greeter.class, new ServiceBuilder<Greeter>()
-        {
-            public Greeter buildService(ServiceResources resources)
-            {
-                return new Greeter()
-                {
-                    public String getGreeting()
-                    {
-                        return "Greetings from service Greeter.";
-                    }
-                };
-            }
-        });
-
-        binder.bind(Greeter.class, new ServiceBuilder<Greeter>()
-        {
-            public Greeter buildService(ServiceResources resources)
-            {
-                throw new RuntimeException("Failure inside ServiceBuilder callback.");
-            }
-        }).withId("BrokenGreeter");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceIdGreeter.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceIdGreeter.java
deleted file mode 100644
index 4fdc614..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/ServiceIdGreeter.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.PostInjection;
-
-public class ServiceIdGreeter implements Greeter
-{
-    private String greeting;
-
-    public String getGreeting()
-    {
-        return greeting;
-    }
-
-    @PostInjection
-    public void finishSetup(ServiceResources resources)
-    {
-        greeting = String.format("Greetings from %s.", resources.getServiceId());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Sizer.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Sizer.java
deleted file mode 100644
index 0c69470..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Sizer.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Encapsulates a strategy for determining the size of an object. Different implementations are mapped to different
- * types.
- */
-public interface Sizer
-{
-    int size(Object object);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SkelterModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SkelterModule.java
deleted file mode 100644
index 4bdee3d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SkelterModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.SubModule;
-
-@SubModule(HelterModule.class)
-public class SkelterModule
-{
-    public Runnable buildSkelter()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SpecificDecoratorModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SpecificDecoratorModule.java
deleted file mode 100644
index 45dfe66..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SpecificDecoratorModule.java
+++ /dev/null
@@ -1,29 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class SpecificDecoratorModule
-{
-    public Greeter decorateHelloGreeter(final Greeter delegate)
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return delegate.getGreeting().toUpperCase();
-            }
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Square.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Square.java
deleted file mode 100644
index 8824caf..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/Square.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.RegistryBuilderTest}.
- */
-public interface Square
-{
-    long square(long input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java
deleted file mode 100644
index aba450e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StaticModule.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-public class StaticModule
-{
-    private static boolean instantiated;
-
-    private static boolean fredRan;
-
-    private static boolean decoratorRan;
-
-    public StaticModule()
-    {
-        setInstantiated(true);
-    }
-
-    public static Runnable buildFred()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-                setFredRan(true);
-            }
-        };
-    }
-
-    public static Runnable buildBarney()
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-            }
-        };
-    }
-
-    public static Runnable decorateBarney(final Object delegate, String serviseId)
-    {
-        return new Runnable()
-        {
-            public void run()
-            {
-                setDecoratorRan(true);
-
-                ((Runnable) delegate).run();
-            }
-        };
-    }
-
-    static synchronized void setFredRan(boolean fredRan)
-    {
-        StaticModule.fredRan = fredRan;
-    }
-
-    static synchronized boolean getFredRan()
-    {
-        return fredRan;
-    }
-
-    static synchronized void setInstantiated(boolean instantiated)
-    {
-        StaticModule.instantiated = instantiated;
-    }
-
-    static synchronized boolean isInstantiated()
-    {
-        return instantiated;
-    }
-
-    static synchronized void setDecoratorRan(boolean decoratorRan)
-    {
-        StaticModule.decoratorRan = decoratorRan;
-    }
-
-    static synchronized boolean getDecoratorRan()
-    {
-        return decoratorRan;
-    }
-
-    public static NameListHolder buildNames(final Collection<String> configuration)
-    {
-        return new NameListHolder()
-        {
-            public List<String> getNames()
-            {
-                List<String> result = CollectionFactory.newList(configuration);
-
-                Collections.sort(result);
-
-                return result;
-            }
-        };
-    }
-
-    public static void contributeNames(Configuration<String> configuration)
-    {
-        configuration.add("Fred");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringHolder.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringHolder.java
deleted file mode 100644
index 027beb4..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringHolder.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public interface StringHolder
-{
-    void setValue(String value);
-
-    String getValue();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringHolderImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringHolderImpl.java
deleted file mode 100644
index 495d980..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringHolderImpl.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.internal.services.SimpleAnnotation;
-
-/**
- *
- */
-@SimpleAnnotation("StringHolderImpl")
-public class StringHolderImpl implements StringHolder
-{
-    private String value;
-
-    @SimpleAnnotation("StringHolderImpl#getValue()")
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringLookup.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringLookup.java
deleted file mode 100644
index 1a1e4bf..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringLookup.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.util.List;
-
-public interface StringLookup
-{
-    /**
-     * Returns value for given key.
-     */
-    String lookup(String key);
-
-    /**
-     * Returns sorted list of keys.
-     */
-    List<String> keys();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java
deleted file mode 100644
index 30535a2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/StringTransformer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.IntegrationTest}.
- */
-public interface StringTransformer
-{
-    String transform(String input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SymbolExpandingTransformer.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SymbolExpandingTransformer.java
deleted file mode 100644
index 044e3a6..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/SymbolExpandingTransformer.java
+++ /dev/null
@@ -1,29 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.services.SymbolSource;
-
-public class SymbolExpandingTransformer implements StringTransformer
-{
-    private final SymbolSource symbolSource;
-
-    public SymbolExpandingTransformer(SymbolSource symbolSource) {this.symbolSource = symbolSource;}
-
-    public String transform(String input)
-    {
-        return symbolSource.expandSymbols(input);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnbuildablePingable.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnbuildablePingable.java
deleted file mode 100644
index a1edc1a..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnbuildablePingable.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-/**
- * Used to test failure to autobuild a service because of a lack of a public constructor.
- */
-public class UnbuildablePingable implements Pingable
-{
-    private UnbuildablePingable()
-    {
-    }
-
-    public void ping()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnknownColorGreeterImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnknownColorGreeterImpl.java
deleted file mode 100644
index 2dfbd8e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnknownColorGreeterImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class UnknownColorGreeterImpl implements Greeter
-{
-
-    public String getGreeting()
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnknownScopeModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnknownScopeModule.java
deleted file mode 100644
index 166ee21..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UnknownScopeModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-public class UnknownScopeModule
-{
-    @Scope("magic")
-    public Runnable buildUnknownScope()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UppercaseStringTransformer.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UppercaseStringTransformer.java
deleted file mode 100644
index 5cab33f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/UppercaseStringTransformer.java
+++ /dev/null
@@ -1,23 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-public class UppercaseStringTransformer implements StringTransformer
-{
-    public String transform(String input)
-    {
-        return input.toUpperCase();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/YellowMarker.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/YellowMarker.java
deleted file mode 100644
index a32d25d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/YellowMarker.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc;
-
-import java.lang.annotation.Documented;
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.PARAMETER;
-import java.lang.annotation.Retention;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import java.lang.annotation.Target;
-
-@Target(
-        { PARAMETER, FIELD })
-@Retention(RUNTIME)
-@Documented
-public @interface YellowMarker
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AdviseByMarkerModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AdviseByMarkerModule.java
deleted file mode 100644
index 9d5a3ed..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AdviseByMarkerModule.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.GreenMarker;
-import org.apache.tapestry5.ioc.Greeter;
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.MethodAdviceReceiver;
-import org.apache.tapestry5.ioc.RedMarker;
-import org.apache.tapestry5.ioc.annotations.Advise;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Order;
-
-
-public class AdviseByMarkerModule
-{
-   
-    @Advise(serviceInterface=Greeter.class, id="foo")
-    @GreenMarker
-    @Order("before:Greeter")
-    public static void doAdviseOneMoreTime(MethodAdviceReceiver receiver)
-    {
-        doAdvise(receiver, "gamma");
-    }
-   
-    @Advise(serviceInterface=Greeter.class, id="bar")
-    @GreenMarker
-    @Order({"after:foo", "before:Greeter"})
-    public static void doAdviseAgain(MethodAdviceReceiver receiver)
-    {
-        doAdvise(receiver, "beta");
-    }
-    
-    @Advise(serviceInterface=Greeter.class)
-    @GreenMarker
-    public static void doAdvise(MethodAdviceReceiver receiver)
-    {
-        doAdvise(receiver, "alpha");
-    }
-    
-    private static void doAdvise(MethodAdviceReceiver receiver, final String id)
-    {
-        receiver.adviseAllMethods(new MethodAdvice()
-        {
-           
-            public void advise(Invocation invocation)
-            {
-                invocation.proceed();
-               
-                Object result = invocation.getResult();
-               
-                invocation.overrideResult(String.format("%s[%s]", id, result));
-               
-            }
-        });
-    }
-   
-    @Advise(serviceInterface=Greeter.class, id="barney")
-    @Local
-    public static void localAdvise(MethodAdviceReceiver receiver)
-    {
-        doAdvise(receiver, "delta");
-    }
-   
-    @Marker(RedMarker.class)
-    public Greeter buildRedGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Red";
-            }
-        };
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AlphabetModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AlphabetModule.java
deleted file mode 100644
index c3b89dc..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AlphabetModule.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.BlueMarker;
-import org.apache.tapestry5.ioc.GreenMarker;
-import org.apache.tapestry5.ioc.NameListHolder;
-import org.apache.tapestry5.ioc.NameListHolder2;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class AlphabetModule
-{
-    @Marker(BlueMarker.class)
-    public NameListHolder buildGreek(final List<String> configuration)
-    {
-
-        return new NameListHolder()
-        {
-            public List<String> getNames()
-            {
-                return configuration;
-            }
-        };
-    }
-
-    @Contribute(NameListHolder.class)
-    @BlueMarker
-    public void provideGreekConfiguration(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Alpha", "Alpha", "before:*");
-        configuration.add("Beta", "Beta", "after:Alpha");
-    }
-
-    @Contribute(NameListHolder.class)
-    @GreenMarker
-    public void addToHebrew(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Alef", "Alef", "before:*");
-        configuration.add("Bet", "Bet", "after:Alef");
-        configuration.add("Gimel", "Gimel", "after:Bet");
-    }
-
-    @Marker(BlueMarker.class)
-    public NameListHolder2 buildServiceWithEmptyConfiguration(final List<String> configuration)
-    {
-        return new NameListHolder2()
-        {
-            public List<String> getNames()
-            {
-                return configuration;
-            }
-        };
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AlphabetModule2.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AlphabetModule2.java
deleted file mode 100644
index d3d1d3c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/AlphabetModule2.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.List;
-
-import org.apache.tapestry5.ioc.BlueMarker;
-import org.apache.tapestry5.ioc.GreenMarker;
-import org.apache.tapestry5.ioc.NameListHolder;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.RedMarker;
-import org.apache.tapestry5.ioc.annotations.Contribute;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.annotations.Marker;
-
-public class AlphabetModule2
-{
-    @Marker(GreenMarker.class)
-    public NameListHolder buildHebrew(final List<String> configuration)
-    {
-
-        return new NameListHolder()
-        {
-            public List<String> getNames()
-            {
-                return configuration;
-            }
-        };
-    }
-
-    @Marker(BlueMarker.class)
-    public NameListHolder buildAnotherGreek(final List<String> configuration)
-    {
-
-        return new NameListHolder()
-        {
-            public List<String> getNames()
-            {
-                return configuration;
-            }
-        };
-    }
-
-    @Contribute(NameListHolder.class)
-    @BlueMarker
-    public void extendGreekConfiguration(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Gamma", "Gamma", "after:Beta");
-        configuration.add("Delta", "Delta", "after:Gamma");
-    }
-
-    @Contribute(NameListHolder.class)
-    @BlueMarker
-    @Local
-    public void contributeXyz(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Epsilon", "Epsilon", "after:*");
-    }
-
-    @Contribute(NameListHolder.class)
-    @GreenMarker
-    public void someMoreHebrewLetters(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Dalet", "Dalet", "after:Gimel");
-        configuration.add("He", "He", "after:Dalet");
-    }
-
-    public void contributeHebrew(OrderedConfiguration<String> configuration)
-    {
-        configuration.add("Vav", "Vav", "after:He");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ArrayDecoratorMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ArrayDecoratorMethodModule.java
deleted file mode 100644
index 17e2817..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ArrayDecoratorMethodModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class ArrayDecoratorMethodModule
-{
-    public Object[] decorateArray(Object delegate)
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/BuilderMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/BuilderMethodModule.java
deleted file mode 100644
index 053fa3b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/BuilderMethodModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-public class BuilderMethodModule
-{
-    public String[] buildStringArray()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ComplexAutobuildModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ComplexAutobuildModule.java
deleted file mode 100644
index 0302bdb..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ComplexAutobuildModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.StringHolder;
-import org.apache.tapestry5.ioc.StringHolderImpl;
-
-public class ComplexAutobuildModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(StringHolder.class, StringHolderImpl.class).eagerLoad().scope("magic").withId("SH");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributionDefImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributionDefImplTest.java
deleted file mode 100644
index daee377..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ContributionDefImplTest.java
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.lang.reflect.Method;
-
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-public class ContributionDefImplTest extends IOCTestCase implements ModuleBuilderSource
-{
-    private final OperationTracker tracker = new QuietOperationTracker();
-
-    private Object toContribute;
-
-    public Object getModuleBuilder()
-    {
-        return this;
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void unordered_contribution()
-    {
-        toContribute = new Object();
-        Configuration configuration = mockConfiguration();
-        ServiceResources serviceResources = mockServiceResources(tracker);
-        Logger logger = mockLogger();
-
-        train_getLogger(serviceResources, logger);
-        train_getServiceId(serviceResources, "Bif");
-
-        configuration.add(toContribute);
-
-        replay();
-
-        Method m = findMethod("contributeUnordered");
-        ContributionDef def = new ContributionDefImpl("foo.Bar", m, null, null, null);
-
-        def.contribute(this, serviceResources, configuration);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void unordered_collection_with_service_lookup()
-    {
-        Configuration configuration = mockConfiguration();
-        ServiceResources resources = mockServiceResources(tracker);
-        UpcaseService service = mockUpcaseService();
-        Logger logger = mockLogger();
-
-        train_getLogger(resources, logger);
-        train_getService(resources, "zip.Zap", UpcaseService.class, service);
-        train_getServiceId(resources, "Bif");
-
-        configuration.add(service);
-
-        replay();
-
-        Method m = findMethod("contributeUnorderedParameter");
-        ContributionDef def = new ContributionDefImpl("foo.Bar", m, null, null, null);
-
-        def.contribute(this, resources, configuration);
-
-        verify();
-    }
-
-    @Test
-    public void unordered_collection_with_incorrect_configuration_parameter()
-    {
-        Configuration configuration = mockConfiguration();
-        ServiceResources resources = mockServiceResources(tracker);
-        Logger logger = mockLogger();
-
-        train_getLogger(resources, logger);
-        train_getServiceId(resources, "Bif");
-
-        replay();
-
-        Method m = findMethod("contributeUnorderedWrongParameter");
-        ContributionDef def = new ContributionDefImpl("foo.Bar", m, null, null, null);
-
-        try
-        {
-            def.contribute(this, resources, configuration);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Error invoking service contribution method org.apache.tapestry5.ioc.internal.ContributionDefImplTest.contributeUnorderedWrongParameter(MappedConfiguration)",
-                                  "Service 'Bif' is configured using org.apache.tapestry5.ioc.Configuration, not org.apache.tapestry5.ioc.MappedConfiguration."
-            );
-        }
-
-        verify();
-    }
-
-    // From here on in, it's an almost identical code path, so we won't be
-    // as exhaustive.
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void ordered_collection_with_service_lookup()
-    {
-        OrderedConfiguration configuration = mockOrderedConfiguration();
-        ServiceResources resources = mockServiceResources(tracker);
-        UpcaseService service = mockUpcaseService();
-        Logger logger = mockLogger();
-
-        train_getLogger(resources, logger);
-
-        train_getService(resources, "zip.Zap", UpcaseService.class, service);
-        train_getServiceId(resources, "Bif");
-
-        configuration.add("fred", service);
-
-        replay();
-
-        Method m = findMethod("contributeOrderedParameter");
-        ContributionDef def = new ContributionDefImpl("foo.Bar", m, null, null, null);
-
-        def.contribute(this, resources, configuration);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void mapped_collection_with_service_lookup()
-    {
-        MappedConfiguration configuration = mockMappedConfiguration();
-        ServiceResources resources = mockServiceResources(tracker);
-        UpcaseService service = mockUpcaseService();
-        Logger logger = mockLogger();
-
-        train_getLogger(resources, logger);
-
-        train_getService(resources, "zip.Zap", UpcaseService.class, service);
-        train_getServiceId(resources, "Bif");
-
-        configuration.add("upcase", service);
-
-        replay();
-
-        Method m = findMethod("contributeMappedParameter");
-        ContributionDef def = new ContributionDefImpl("foo.Bar", m, null, null, null);
-
-        def.contribute(this, resources, configuration);
-
-        verify();
-    }
-
-    private UpcaseService mockUpcaseService()
-    {
-        return newMock(UpcaseService.class);
-    }
-
-    @SuppressWarnings("unchecked")
-    public void contributeUnordered(Configuration configuration)
-    {
-        configuration.add(toContribute);
-    }
-
-    public void contributeUnorderedParameter(Configuration<UpcaseService> configuration,
-                                             @InjectService("zip.Zap")
-                                             UpcaseService service)
-    {
-        configuration.add(service);
-    }
-
-    public void contributeOrderedParameter(OrderedConfiguration<UpcaseService> configuration,
-                                           @InjectService("zip.Zap")
-                                           UpcaseService service)
-    {
-        configuration.add("fred", service);
-    }
-
-    public void contributeMappedParameter(MappedConfiguration<String, UpcaseService> configuration,
-                                          @InjectService("zip.Zap")
-                                          UpcaseService service)
-    {
-        configuration.add("upcase", service);
-    }
-
-    public void contributeUnorderedWrongParameter(MappedConfiguration configuration)
-    {
-        unreachable();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DecorateByMarkerModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DecorateByMarkerModule.java
deleted file mode 100644
index 041932f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DecorateByMarkerModule.java
+++ /dev/null
@@ -1,99 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.GreenMarker;
-import org.apache.tapestry5.ioc.Greeter;
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.RedMarker;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.Decorate;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Order;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-
-
-public class DecorateByMarkerModule
-{
-   
-    @Decorate(serviceInterface=Greeter.class)
-    @GreenMarker
-    public static <T> T greeter(ServiceResources resources, T delegate, AspectDecorator aspectDecorator)
-    {
-        return doDecorate("foo", resources, delegate, aspectDecorator);
-    }
-   
-    @Decorate(serviceInterface=Greeter.class, id="bar")
-    @GreenMarker
-    @Order("after:Greeter")
-    public static <T> T greeter2(ServiceResources resources, T delegate, AspectDecorator aspectDecorator)
-    {
-        return doDecorate("bar", resources, delegate, aspectDecorator);
-    }
-   
-    @Decorate(serviceInterface=Greeter.class, id="baz")
-    @GreenMarker
-    @Order({"after:Greeter", "before:bar"})
-    public static <T> T greeter3(ServiceResources resources, T delegate, AspectDecorator aspectDecorator)
-    {
-        return doDecorate("baz", resources, delegate, aspectDecorator);
-    }
-   
-    @Decorate(serviceInterface=Greeter.class, id="barney")
-    @Local
-    public static <T> T localAdvise(ServiceResources resources, T delegate, AspectDecorator aspectDecorator)
-    {
-        return doDecorate("barney", resources, delegate, aspectDecorator);
-    }
-   
-    private static <T> T doDecorate(final String decoratorId, ServiceResources resources, T delegate, AspectDecorator aspectDecorator)
-    {
-        Class<T> serviceInterface = resources.getServiceInterface();
-       
-        AspectInterceptorBuilder<T> builder = aspectDecorator.createBuilder(serviceInterface, delegate, String.format(
-                "<Interceptor for %s(%s)>", resources.getServiceId(), serviceInterface.getName()));
-
-        builder.adviseAllMethods(new MethodAdvice()
-        {
-           
-            public void advise(Invocation invocation)
-            {
-                invocation.proceed();
-               
-                Object result = invocation.getResult();
-               
-                invocation.overrideResult(String.format("Decorated by %s[%s]", decoratorId, result));
-               
-            }
-        });
-
-        return builder.build();
-    }
-   
-    @Marker(RedMarker.class)
-    public Greeter buildRedGreeter()
-    {
-        return new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Red";
-            }
-        };
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
deleted file mode 100644
index 69d42a8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultModuleDefImplTest.java
+++ /dev/null
@@ -1,651 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import javassist.bytecode.AccessFlag;
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.services.ClassFactoryImpl;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import static org.easymock.EasyMock.contains;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.List;
-import java.util.Set;
-
-public class DefaultModuleDefImplTest extends IOCTestCase
-{
-    private ClassFactory classFactory;
-
-    private final OperationTracker tracker = new QuietOperationTracker();
-
-    @BeforeClass
-    public void setup()
-    {
-        classFactory = new ClassFactoryImpl();
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        classFactory = null;
-    }
-
-    @Test
-    public void simple_module() throws Exception
-    {
-        String className = SimpleModule.class.getName();
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        // BigDecimal is arbitrary, any class would do.
-
-        ModuleDef md = new DefaultModuleDefImpl(SimpleModule.class, logger, classFactory);
-
-        assertEquals(md.toString(), "ModuleDef[" + className + " Barney, Fred, Wilma]");
-
-        Set<String> ids = md.getServiceIds();
-
-        assertEquals(ids.size(), 3);
-        assertTrue(ids.contains("Fred"));
-        assertTrue(ids.contains("Barney"));
-        assertTrue(ids.contains("Wilma"));
-
-        ServiceDef sd = md.getServiceDef("Fred");
-
-        assertEquals(sd.getServiceId(), "Fred");
-
-        assertEquals(sd.getServiceInterface(), FieService.class);
-
-        assertTrue(sd.toString().contains(className + ".buildFred()"));
-        assertEquals(sd.getServiceScope(), ScopeConstants.DEFAULT);
-        assertEquals(sd.isEagerLoad(), false);
-        assertTrue(sd.getMarkers().isEmpty());
-
-        sd = md.getServiceDef("Wilma");
-        assertEquals(sd.isEagerLoad(), true);
-
-        // Now the decorator method.
-
-        Set<DecoratorDef> defs = md.getDecoratorDefs();
-
-        assertEquals(defs.size(), 1);
-
-        DecoratorDef dd = defs.iterator().next();
-
-        assertEquals(dd.getDecoratorId(), "Logging");
-        assertTrue(dd.toString().contains(className + ".decorateLogging(Class, Object)"));
-
-        verify();
-    }
-
-    @Test
-    public void default_service_id_from_method_annotation()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef def = new DefaultModuleDefImpl(ServiceIdViaAnnotationModule.class, logger, null);
-
-        assertEquals(def.getServiceIds().size(), 2);
-
-        ServiceDef sd = def.getServiceDef("FooService");
-
-        assertEquals(sd.getServiceId(), "FooService");
-
-        verify();
-    }
-    
-    @Test
-    public void default_service_id_from_annotation()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef def = new DefaultModuleDefImpl(ServiceIdViaAnnotationModule.class, logger, null);
-
-        assertEquals(def.getServiceIds().size(), 2);
-
-        ServiceDef sd = def.getServiceDef("BarneyService");
-
-        assertEquals(sd.getServiceId(), "BarneyService");
-
-        verify();
-    }
-    
-    @Test
-    public void default_service_id_from_return_type()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef def = new DefaultModuleDefImpl(DefaultServiceIdModule.class, logger, null);
-
-        assertEquals(def.getServiceIds().size(), 1);
-
-        ServiceDef sd = def.getServiceDef("FieService");
-
-        assertEquals(sd.getServiceId(), "FieService");
-
-        verify();
-    }
-
-    /**
-     * Two different methods both claim to build the same service.
-     */
-    @Test
-    public void service_id_conflict() throws Exception
-    {
-        Method conflictMethod = ServiceIdConflictMethodModule.class.getMethod("buildFred");
-        String conflictMethodString = InternalUtils.asString(conflictMethod, classFactory);
-
-        String expectedMethod = InternalUtils.asString(ServiceIdConflictMethodModule.class
-                .getMethod("buildFred", Object.class), classFactory);
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        // BigDecimal is arbitrary, any class would do.
-
-        try
-        {
-            new DefaultModuleDefImpl(ServiceIdConflictMethodModule.class, logger, classFactory);
-
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Service Fred (defined by org.apache.tapestry5.ioc.internal.ServiceIdConflictMethodModule.buildFred()",
-                                  "conflicts with previously defined service defined by org.apache.tapestry5.ioc.internal.ServiceIdConflictMethodModule.buildFred(Object)");
-        }
-
-
-        verify();
-    }
-
-    @Test
-    public void builder_method_returns_void() throws Exception
-    {
-        Method m = VoidBuilderMethodModule.class.getMethod("buildNull");
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(VoidBuilderMethodModule.class, logger, null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), IOCMessages.buildMethodWrongReturnType(m));
-        }
-
-        verify();
-    }
-
-    @Test
-    public void builder_method_returns_array() throws Exception
-    {
-        Method m = BuilderMethodModule.class.getMethod("buildStringArray");
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(BuilderMethodModule.class, logger, null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), IOCMessages.buildMethodWrongReturnType(m));
-        }
-
-        verify();
-    }
-
-    @Test
-    public void decorator_method_returns_void() throws Exception
-    {
-        invalidDecoratorMethod(VoidDecoratorMethodModule.class, "decorateVoid");
-    }
-
-    private void invalidDecoratorMethod(Class moduleClass, String methodName) throws NoSuchMethodException
-    {
-        Method m = moduleClass.getMethod(methodName, Object.class);
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(moduleClass, logger, null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), IOCMessages.decoratorMethodWrongReturnType(m));
-        }
-
-        verify();
-    }
-
-    @Test
-    public void decorator_method_returns_primitive() throws Exception
-    {
-        invalidDecoratorMethod(PrimitiveDecoratorMethodModule.class, "decoratePrimitive");
-    }
-
-    @Test
-    public void decorator_method_returns_array() throws Exception
-    {
-        invalidDecoratorMethod(ArrayDecoratorMethodModule.class, "decorateArray");
-    }
-
-    @Test
-    public void contribution_without_annotation()
-    {
-        attemptConfigurationMethod(SimpleModule.class, "Barney", "contributeBarney(Configuration)");
-    }
-
-    @Test
-    public void ordered_contribution_method()
-    {
-        attemptConfigurationMethod(OrderedConfigurationModule.class, "Ordered",
-                                   "contributeOrdered(OrderedConfiguration)");
-    }
-
-    @Test
-    public void mapped_contribution_method()
-    {
-        attemptConfigurationMethod(MappedConfigurationModule.class, "Mapped", "contributeMapped(MappedConfiguration)");
-    }
-
-    private void attemptConfigurationMethod(Class moduleClass, String expectedServiceId, String expectedMethodSignature)
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(moduleClass, logger, classFactory);
-
-        Set<ContributionDef> defs = md.getContributionDefs();
-
-        assertEquals(defs.size(), 1);
-
-        ContributionDef cd = defs.iterator().next();
-
-        // The target service id is derived from the method name
-
-        assertEquals(cd.getServiceId(), expectedServiceId);
-
-        // Can't be exact, because the source file & line number are probably attached (and those
-        // can change)
-
-        assertTrue(cd.toString().contains(moduleClass.getName() + "." + expectedMethodSignature));
-
-        verify();
-    }
-
-    @Test
-    public void contribution_with_too_many_parameters() throws Exception
-    {
-        Class moduleClass = TooManyContributionParametersModule.class;
-        Method m = findMethod(moduleClass, "contributeTooMany");
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(moduleClass, logger, null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Service contribution method org.apache.tapestry5.ioc.internal.TooManyContributionParametersModule.contributeTooMany(Configuration, OrderedConfiguration) contains more than one parameter of type Configuration, OrderedConfiguration, or MappedConfiguration. Exactly one such parameter is required for a service contribution method.");
-        }
-
-
-        verify();
-    }
-
-    @Test
-    public void contribution_with_no_contribution_parameter() throws Exception
-    {
-        Class moduleClass = NoUsableContributionParameterModule.class;
-        Method m = findMethod(moduleClass, "contributeNoParameter");
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(moduleClass, logger, null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Service contribution method org.apache.tapestry5.ioc.internal.NoUsableContributionParameterModule.contributeNoParameter(UpcaseService) does not contain a parameter of type Configuration, OrderedConfiguration or MappedConfiguration. This parameter is how the method make contributions into the service's configuration.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void simple_binder_method()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(AutobuildModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("StringHolder");
-
-        assertEquals(sd.getServiceInterface(), StringHolder.class);
-        assertEquals(sd.getServiceId(), "StringHolder");
-        assertEquals(sd.getServiceScope(), ScopeConstants.DEFAULT);
-        assertFalse(sd.isEagerLoad());
-
-        verify();
-    }
-
-    @Test
-    public void bind_service_with_all_options()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(ComplexAutobuildModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("SH");
-
-        assertEquals(sd.getServiceInterface(), StringHolder.class);
-        assertEquals(sd.getServiceId(), "SH");
-        assertEquals(sd.getServiceScope(), "magic");
-        assertTrue(sd.isEagerLoad());
-
-        verify();
-    }
-
-    @Test
-    public void attempt_to_bind_a_service_with_no_public_constructor()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(UninstantiableAutobuildServiceModule.class, logger, classFactory);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Class org.apache.tapestry5.ioc.internal.RunnableServiceImpl (implementation of service \'Runnable\') does not contain any public constructors.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void instance_method_bind_is_error()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(NonStaticBindMethodModule.class, logger, classFactory);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Method org.apache.tapestry5.ioc.internal.NonStaticBindMethodModule.bind(ServiceBinder)",
-                                  "appears to be a service binder method, but is an instance method, not a static method.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void multiple_constructors_on_autobuild_service_implementation()
-    {
-        Logger logger = mockLogger();
-        ServiceBuilderResources resources = mockServiceBuilderResources();
-
-        train_getTracker(resources, tracker);
-
-        train_isDebugEnabled(logger, true);
-
-        // The point is, we're choosing the constructor with the largest number of parameters.
-
-        logger
-                .debug(contains(
-                        "Invoking constructor org.apache.tapestry5.ioc.internal.MultipleConstructorsAutobuildService(StringHolder)"));
-
-        train_getServiceId(resources, "StringHolder");
-        train_getLogger(resources, logger);
-        train_getServiceInterface(resources, StringHolder.class);
-        train_getService(resources, "ToUpperCaseStringHolder", StringHolder.class, new ToUpperCaseStringHolder());
-
-        replay();
-
-        ModuleDef def = new DefaultModuleDefImpl(MutlipleAutobuildServiceConstructorsModule.class, logger,
-                                                 classFactory);
-
-        ServiceDef sd = def.getServiceDef("StringHolder");
-
-        assertNotNull(sd);
-
-        ObjectCreator oc = sd.createServiceCreator(resources);
-
-        StringHolder holder = (StringHolder) oc.createObject();
-
-        holder.setValue("foo");
-        assertEquals(holder.getValue(), "FOO");
-
-        verify();
-    }
-
-    @Test
-    public void exception_from_inside_bind_method()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        try
-        {
-            new DefaultModuleDefImpl(ExceptionInBindMethod.class, logger, classFactory);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertTrue(ex
-                    .getMessage()
-                    .matches(
-                    "Error invoking service binder method org.apache.tapestry5.ioc.internal.ExceptionInBindMethod.bind\\(ServiceBinder\\) " + "\\(at ExceptionInBindMethod.java:\\d+\\): Really, how often is this going to happen\\?"));
-        }
-
-        verify();
-    }
-
-    @Test
-    public void autoload_service_is_eager_load_via_annotation()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(EagerLoadViaAnnotationModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("Runnable");
-
-        assertTrue(sd.isEagerLoad());
-
-        verify();
-    }
-
-    @Test
-    public void service_builder_method_has_marker_annotation()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(MarkerModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("Greeter");
-
-        assertListsEquals(CollectionFactory.newList(sd.getMarkers()), BlueMarker.class);
-
-        verify();
-    }
-
-    @Test
-    public void bound_service_has_marker_annotation()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(MarkerModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("RedGreeter");
-
-        assertListsEquals(CollectionFactory.newList(sd.getMarkers()), RedMarker.class);
-
-        verify();
-    }
-
-    @Test
-    public void bound_service_explicit_marker()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(MarkerModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("SecondRedGreeter");
-
-        assertListsEquals(CollectionFactory.newList(sd.getMarkers()), RedMarker.class);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void explicit_marker_overrides_marker_annotation()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(MarkerModule.class, logger, classFactory);
-
-        ServiceDef sd = md.getServiceDef("SurprisinglyBlueGreeter");
-
-        // BlueMarker from ServiceBindingOptions, RedMarker from @Marker on class
-
-        Set<Class> markers = sd.getMarkers();
-
-        assertTrue(markers.contains(RedMarker.class));
-        assertTrue(markers.contains(BlueMarker.class));
-        assertEquals(markers.size(), 2);
-
-        verify();
-    }
-
-    /**
-     * TAP5-839
-     */
-    @Test
-    public void public_synthetic_methods_are_ignored() throws NoSuchMethodException
-    {
-        Class moduleClass = createSyntheticMethodModuleClass();
-
-        Logger logger = mockLogger();
-
-        replay();
-
-        ModuleDef md = new DefaultModuleDefImpl(moduleClass, logger, classFactory);
-
-        // reality check that a service was found
-        
-        assertEquals(md.getServiceIds().size(), 1);
-
-        verify();
-    }
-
-    private Class createSyntheticMethodModuleClass() throws NoSuchMethodException
-    {
-        ClassFab fab = classFactory.newClass("EnhancedSyntheticMethodModule", SyntheticMethodModule.class);
-
-        int modifiers = Modifier.PUBLIC | AccessFlag.SYNTHETIC;
-
-        // choose arbitrary signature
-
-        MethodSignature signature = new MethodSignature(List.class.getMethod("size"));
-
-        fab.addMethod(modifiers, signature, "return 0;");
-
-        Class moduleClass = fab.createClass();
-
-        // make sure we really managed to create a synthetic method
-
-        assertTrue(moduleClass.getMethod("size").isSynthetic());
-        
-        return moduleClass;
-    }
-
-    // TODO: We're short on tests that ensure that marker annotation are additive (i.e., module
-    // marker annotation are
-    // merged into the set specific to the service).
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultServiceIdModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultServiceIdModule.java
deleted file mode 100644
index 4d75d58..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/DefaultServiceIdModule.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-public class DefaultServiceIdModule
-{
-    public FieService build()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/EagerLoadViaAnnotationModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/EagerLoadViaAnnotationModule.java
deleted file mode 100644
index d2ec410..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/EagerLoadViaAnnotationModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class EagerLoadViaAnnotationModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Runnable.class, EagerLoadViaAnnotationServiceImpl.class);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/EagerLoadViaAnnotationServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/EagerLoadViaAnnotationServiceImpl.java
deleted file mode 100644
index 9c51680..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/EagerLoadViaAnnotationServiceImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-
-@EagerLoad
-public class EagerLoadViaAnnotationServiceImpl implements Runnable
-{
-
-    public void run()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInBindMethod.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInBindMethod.java
deleted file mode 100644
index a2e1f13..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInBindMethod.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class ExceptionInBindMethod
-{
-    public static void bind(ServiceBinder binder)
-    {
-        throw new RuntimeException("Really, how often is this going to happen?");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInConstructorModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInConstructorModule.java
deleted file mode 100644
index 4818545..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInConstructorModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Pingable;
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class ExceptionInConstructorModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Pingable.class, ExceptionInConstructorServiceImpl.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInConstructorServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInConstructorServiceImpl.java
deleted file mode 100644
index f4c9013..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExceptionInConstructorServiceImpl.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Pingable;
-
-public class ExceptionInConstructorServiceImpl implements Pingable
-{
-
-    public ExceptionInConstructorServiceImpl()
-    {
-        throw new RuntimeException("Yes, we have no tomatoes.");
-    }
-
-    public void ping()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExtraPublicConstructorsModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExtraPublicConstructorsModule.java
deleted file mode 100644
index 95bb466..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ExtraPublicConstructorsModule.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.ModuleImplTest}.
- */
-public class ExtraPublicConstructorsModule
-{
-    private final SymbolSource source;
-
-    public ExtraPublicConstructorsModule()
-    {
-        throw new RuntimeException("This constructor should not be invoked.");
-    }
-
-    /**
-     * Should be the first constructor, the one that gets invoked. I'm worried that different compilers or JVMs will
-     * order the constructors differently.
-     */
-    public ExtraPublicConstructorsModule(SymbolSource source)
-    {
-        this.source = source;
-    }
-
-    public UpcaseService buildUpcaser()
-    {
-        return new UpcaseService()
-        {
-            public String upcase(String input)
-            {
-                return source.expandSymbols(input).toUpperCase();
-            }
-        };
-    }
-
-    public void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add("fred", "flintstone");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/FieService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/FieService.java
deleted file mode 100644
index 60f3ed1..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/FieService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * A placeholder for a real service interface.
- */
-public interface FieService
-{
-    void fie();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/FoeService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/FoeService.java
deleted file mode 100644
index 92dbf22..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/FoeService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * A placeholder for a real service interface.
- */
-public interface FoeService
-{
-    int foe();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/GlobPatternMatcherTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/GlobPatternMatcherTest.java
deleted file mode 100644
index ab95d6b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/GlobPatternMatcherTest.java
+++ /dev/null
@@ -1,85 +0,0 @@
-// Copyright 2006, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.testng.Assert;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class GlobPatternMatcherTest extends Assert
-{
-    private boolean globMatch(String input, String pattern)
-    {
-        return new GlobPatternMatcher(pattern).matches(input);
-    }
-
-    @DataProvider
-    public Object[][] matches()
-    {
-        return new Object[][]
-                {
-                        { "fred", "fred" },
-                        { "fred", "FRED" },
-                        { "fred", "*" },
-                        { "", "*" },
-                        { "fred.Barney", "*Barney" },
-                        { "fred.Barney", "*BARNEY" },
-                        { "fred.Barney", "fred*" },
-                        { "fred.Barney", "FRED*" },
-                        { "fredBarney", "*dB*" },
-                        { "fredBarney", "*DB*" },
-                        { "fred.Barney", "*Barney*" },
-                        { "fred.Barney", "*fred*" },
-                        { "fred.Barney", "*FRED*" },
-                        { "MyEntityDAO", ".*dao" },
-                        { "FredDAO", "(fred|barney)dao" }
-                };
-    }
-
-    @Test(dataProvider = "matches")
-    public void successful_glob_match(String input, String pattern)
-    {
-        assertTrue(globMatch(input, pattern));
-    }
-
-
-    @DataProvider
-    public Object[][] mismatches()
-    {
-        return new Object[][]
-                {
-                        { "xfred", "fred" },
-                        { "fredx", "fred" },
-                        { "fred", "xfred" },
-                        { "fred", "fredx" },
-                        { "fred.Barneyx", "*Barney" },
-                        { "fred.Barney", "*Barneyx" },
-                        { "fred.Barney", "*xBarney" },
-                        { "xfred.Barney", "fred*" },
-                        { "fred.Barney", "fredx*" },
-                        { "fred.Barney", "xfred*" },
-                        { "fred.Barney", "*flint*" },
-                        { "MyEntityDAL", ".*dao" },
-                        { "WilmaDAO", "(fred|barney)dao" }
-                };
-    }
-
-
-    @Test(dataProvider = "mismatches")
-    public void unsuccessful_glob_match(String input, String pattern)
-    {
-        assertFalse(globMatch(input, pattern));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java
deleted file mode 100644
index b7b01b5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/IOCInternalTestCase.java
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2006, 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import static org.easymock.EasyMock.isA;
-
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.RegistryBuilder;
-import org.apache.tapestry5.ioc.ServiceDecorator;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterSuite;
-import org.testng.annotations.BeforeSuite;
-
-public class IOCInternalTestCase extends IOCTestCase implements Registry
-{
-    private static Registry registry;
-
-    private static ClassFactory classFactory;
-
-    @AfterMethod
-    public final void cleanupThread()
-    {
-        registry.cleanupThread();
-    }
-
-    public final ClassFactory getClassFactory()
-    {
-        return classFactory;
-    }
-
-    public final <T> T getObject(Class<T> objectType, AnnotationProvider annotationProvider)
-    {
-        return registry.getObject(objectType, annotationProvider);
-    }
-
-    public final <T> T getService(Class<T> serviceInterface)
-    {
-        return registry.getService(serviceInterface);
-    }
-
-    public final <T> T getService(String serviceId, Class<T> serviceInterface)
-    {
-        return registry.getService(serviceId, serviceInterface);
-    }
-
-    public final <T> T autobuild(Class<T> clazz)
-    {
-        return registry.autobuild(clazz);
-    }
-
-    public final <T> T autobuild(String description, Class<T> clazz)
-    {
-        return registry.autobuild(description, clazz);
-    }
-
-    public final void performRegistryStartup()
-    {
-        registry.performRegistryStartup();
-    }
-
-    public <T> T proxy(Class<T> interfaceClass, Class<? extends T> implementationClass)
-    {
-        return registry.proxy(interfaceClass, implementationClass);
-    }
-
-    @BeforeSuite
-    public final void setup_registry()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-
-        registry = builder.build();
-
-        registry.performRegistryStartup();
-
-        classFactory = registry.getService(ClassFactory.class);
-    }
-
-    public final void shutdown()
-    {
-        throw new UnsupportedOperationException("No registry shutdown until @AfterSuite.");
-    }
-
-    @AfterSuite
-    public final void shutdown_registry()
-    {
-        registry.shutdown();
-
-        registry = null;
-        classFactory = null;
-    }
-
-    protected final InternalRegistry mockInternalRegistry()
-    {
-        return newMock(InternalRegistry.class);
-    }
-
-    protected final Module mockModule()
-    {
-        return newMock(Module.class);
-    }
-
-    protected final ObjectCreatorSource mockObjectCreatorSource()
-    {
-        return newMock(ObjectCreatorSource.class);
-    }
-
-    protected final void train_findDecoratorsForService(InternalRegistry registry)
-    {
-        List<ServiceDecorator> result = Collections.emptyList();
-
-        expect(registry.findDecoratorsForService(isA(ServiceDef.class))).andReturn(result);
-    }
-
-    protected final void train_getDescription(ObjectCreatorSource source, String description)
-    {
-        expect(source.getDescription()).andReturn(description).atLeastOnce();
-    }
-
-    protected final <T> void train_getService(InternalRegistry registry, String serviceId,
-            Class<T> serviceInterface, T service)
-    {
-        expect(registry.getService(serviceId, serviceInterface)).andReturn(service);
-    }
-
-    protected ServiceActivityTracker mockServiceActivityTracker()
-    {
-        return newMock(ServiceActivityTracker.class);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/LoggerSourceImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/LoggerSourceImplTest.java
deleted file mode 100644
index e59f38c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/LoggerSourceImplTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.LoggerSource;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-public class LoggerSourceImplTest extends IOCInternalTestCase
-{
-    @Test
-    public void get_by_class()
-    {
-        Class clazz = getClass();
-
-        Logger expected = LoggerFactory.getLogger(clazz);
-        LoggerSource logSource = new LoggerSourceImpl();
-        Logger actual = logSource.getLogger(clazz);
-
-        assertSame(actual, expected);
-    }
-
-    @Test
-    public void get_by_name()
-    {
-        String name = "foo.Bar";
-
-        Logger expected = LoggerFactory.getLogger(name);
-        LoggerSource logSource = new LoggerSourceImpl();
-        Logger actual = logSource.getLogger(name);
-
-        assertSame(actual, expected);
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MappedConfigurationModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MappedConfigurationModule.java
deleted file mode 100644
index 4aafe20..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MappedConfigurationModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.MappedConfiguration;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl}.
- */
-public class MappedConfigurationModule
-{
-    public void contributeMapped(MappedConfiguration configuration)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleBuilderWithId.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleBuilderWithId.java
deleted file mode 100644
index fcff4a5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleBuilderWithId.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class ModuleBuilderWithId
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java
deleted file mode 100644
index 7910b9c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.RegistryBuilder;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Set;
-
-public class ModuleImplTest extends IOCInternalTestCase
-{
-    protected final void train_newClass(InternalRegistry registry, ClassFactory factory, Class serviceInterface)
-    {
-        expect(registry.newClass(serviceInterface)).andReturn(factory.newClass(serviceInterface));
-    }
-
-    @Test
-    public void find_service_ids_for_interface()
-    {
-        InternalRegistry registry = mockInternalRegistry();
-        Logger logger = mockLogger();
-
-        ModuleDef moduleDef = new DefaultModuleDefImpl(ModuleImplTestModule.class, logger, null);
-
-        Module module = new ModuleImpl(registry, null, moduleDef, null, logger);
-
-        replay();
-
-        Collection<String> ids = module.findServiceIdsForInterface(FieService.class);
-
-        assertEquals(ids.size(), 2);
-        assertTrue(ids.contains("Fie"));
-        assertTrue(ids.contains("OtherFie"));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void find_decorator_defs_for_service()
-    {
-        InternalRegistry registry = mockInternalRegistry();
-        ServiceDef serviceDef = mockServiceDef();
-        DecoratorDef def1 = mockDecoratorDef();
-        DecoratorDef def2 = mockDecoratorDef();
-        Set<DecoratorDef> rawDefs = newMock(Set.class);
-        Logger logger = mockLogger();
-
-        ModuleDef moduleDef = mockModuleDef();
-
-        Set<String> serviceIds = Collections.emptySet();
-        expect(moduleDef.getServiceIds()).andReturn(serviceIds);
-
-        expect(moduleDef.getDecoratorDefs()).andReturn(rawDefs);
-
-        expect(rawDefs.iterator()).andReturn(Arrays.asList(def1, def2).iterator());
-
-        train_matches(def1, serviceDef, false);
-        expect(serviceDef.getServiceInterface()).andReturn(Runnable.class);
-        train_matches(def2, serviceDef, true);
-
-        replay();
-
-        Module module = new ModuleImpl(registry, null, moduleDef, null, logger);
-
-        Set<DecoratorDef> defs = module.findMatchingDecoratorDefs(serviceDef);
-
-        assertEquals(defs.size(), 1);
-        assertTrue(defs.contains(def2));
-
-        verify();
-    }
-
-
-    protected void train_expandSymbols(InternalRegistry registry, String input, String expanded)
-    {
-        expect(registry.expandSymbols(input)).andReturn(expanded);
-    }
-
-    private Registry buildRegistry()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-        builder.add(ModuleImplTestModule.class);
-
-        return builder.build();
-    }
-
-    /**
-     * The following tests work better as integration tests.
-     */
-
-    @Test
-    public void integration_tests()
-    {
-        Registry registry = buildRegistry();
-
-        UpcaseService us = registry.getService(UpcaseService.class);
-
-        assertEquals(us.upcase("hello"), "HELLO");
-        assertEquals(us.toString(), "<Proxy for Upcase(org.apache.tapestry5.ioc.internal.UpcaseService)>");
-
-        ToStringService ts = registry.getService(ToStringService.class);
-
-        assertEquals(ts.toString(), "<ToStringService: ToString>");
-
-        registry.shutdown();
-    }
-
-    @Test
-    public void recursive_singleton_integration_test()
-    {
-        Registry registry = buildRegistry();
-
-        FoeService foe = registry.getService("RecursiveFoe", FoeService.class);
-
-        try
-        {
-            foe.foe();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            // The details are checked elsewhere.
-        }
-
-        registry.shutdown();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTestModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTestModule.java
deleted file mode 100644
index fee5716..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ModuleImplTestModule.java
+++ /dev/null
@@ -1,63 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-/**
- * Module class used by {@link ModuleImplTest}.
- */
-public class ModuleImplTestModule
-{
-    public UpcaseService buildUpcase()
-    {
-        return new UpcaseServiceImpl();
-    }
-
-    public FieService buildOtherFie()
-    {
-        return null;
-    }
-
-    public ToStringService buildToString(ServiceResources resources)
-    {
-        final String serviceId = resources.getServiceId();
-
-        return new ToStringService()
-        {
-            @Override
-            public String toString()
-            {
-                return "<ToStringService: " + serviceId + ">";
-            }
-        };
-    }
-
-    public FieService buildFie()
-    {
-        return null;
-    }
-
-    public FoeService buildRecursiveFoe(@InjectService("RecursiveFoe")
-    FoeService self)
-    {
-        // While constructing self, we invoke a method on self.
-
-        self.foe();
-
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MultipleConstructorsAutobuildService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MultipleConstructorsAutobuildService.java
deleted file mode 100644
index dda2326..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MultipleConstructorsAutobuildService.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.StringHolder;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-public class MultipleConstructorsAutobuildService implements StringHolder
-{
-    private final StringHolder delegate;
-
-    public MultipleConstructorsAutobuildService()
-    {
-        this(null);
-    }
-
-    public MultipleConstructorsAutobuildService(@InjectService("ToUpperCaseStringHolder")StringHolder delegate)
-    {
-        this.delegate = delegate;
-    }
-
-    public String getValue()
-    {
-        return delegate.getValue();
-    }
-
-    public void setValue(String value)
-    {
-        delegate.setValue(value);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MutlipleAutobuildServiceConstructorsModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MutlipleAutobuildServiceConstructorsModule.java
deleted file mode 100644
index 651ebad..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/MutlipleAutobuildServiceConstructorsModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.StringHolder;
-
-public class MutlipleAutobuildServiceConstructorsModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(StringHolder.class, ToUpperCaseStringHolder.class).withId("ToUpperCaseStringHolder")
-                .preventReloading();
-        binder.bind(StringHolder.class, MultipleConstructorsAutobuildService.class).preventReloading();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NoDelegateDecoratorMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NoDelegateDecoratorMethodModule.java
deleted file mode 100644
index 629299e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NoDelegateDecoratorMethodModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class NoDelegateDecoratorMethodModule
-{
-    /**
-     * Decorator methods need to define a parameter of type Object which is the delegate object. Typically, it is a
-     * parameterized type, but it has to be there.
-     */
-    public Object decorateNoDelegate()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NoUsableContributionParameterModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NoUsableContributionParameterModule.java
deleted file mode 100644
index 215367c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NoUsableContributionParameterModule.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl}.
- */
-public class NoUsableContributionParameterModule
-{
-    public void contributeNoParameter(@InjectService("foo.Bar")
-    UpcaseService service)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NonStaticBindMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NonStaticBindMethodModule.java
deleted file mode 100644
index bfff2ff..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/NonStaticBindMethodModule.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.StringHolder;
-import org.apache.tapestry5.ioc.StringHolderImpl;
-
-public class NonStaticBindMethodModule
-{
-    public void bind(ServiceBinder binder)
-    {
-        binder.bind(StringHolder.class, StringHolderImpl.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/OrderedConfigurationModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/OrderedConfigurationModule.java
deleted file mode 100644
index 6d13573..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/OrderedConfigurationModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl}.
- */
-public class OrderedConfigurationModule
-{
-    public void contributeOrdered(OrderedConfiguration configuration)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/PrimitiveDecoratorMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/PrimitiveDecoratorMethodModule.java
deleted file mode 100644
index 0256f42..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/PrimitiveDecoratorMethodModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class PrimitiveDecoratorMethodModule
-{
-    public int decoratePrimitive(Object delegate)
-    {
-        return 0;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/PrivateConstructorModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/PrivateConstructorModule.java
deleted file mode 100644
index 8cdcc03..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/PrivateConstructorModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.ModuleImplTest}.
- */
-public class PrivateConstructorModule
-{
-    private PrivateConstructorModule()
-    {
-    }
-
-    public Runnable buildTrigger() { return null; }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ReadManifest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ReadManifest.java
deleted file mode 100644
index 569b1a5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ReadManifest.java
+++ /dev/null
@@ -1,91 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.io.InputStream;
-import static java.lang.String.format;
-import java.net.URL;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Map;
-import java.util.jar.Attributes;
-import java.util.jar.Manifest;
-
-public class ReadManifest
-{
-
-    /**
-     * @param args
-     */
-    public static void main(String[] args) throws Exception
-    {
-        ClassLoader loader = ReadManifest.class.getClassLoader();
-
-        Enumeration<URL> urls = loader.getResources("META-INF/MANIFEST.MF");
-
-        while (urls.hasMoreElements())
-        {
-            URL url = urls.nextElement();
-
-            System.out.println(url);
-
-            InputStream is = url.openStream();
-
-            Manifest mf = new Manifest(is);
-
-            is.close();
-
-            printManifest(mf);
-        }
-
-    }
-
-    static void printManifest(Manifest mf)
-    {
-
-        printAttributes(mf.getMainAttributes());
-
-        if (false)
-        {
-            Map<String, Attributes> entries = mf.getEntries();
-            List<String> keys = newList(entries.keySet());
-            Collections.sort(keys);
-
-            for (String key : keys)
-            {
-                System.out.println(format("  %s", key));
-
-                Attributes a = entries.get(key);
-
-                printAttributes(a);
-
-            }
-        }
-    }
-
-    private static void printAttributes(Attributes a)
-    {
-        for (Object key : a.keySet())
-        {
-            Object value = a.get(key);
-
-            System.out.println(format("    %30s: %s", key, value));
-        }
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/RecursiveServiceCreationCheckWrapperTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/RecursiveServiceCreationCheckWrapperTest.java
deleted file mode 100644
index f4d8ba9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/RecursiveServiceCreationCheckWrapperTest.java
+++ /dev/null
@@ -1,105 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-public class RecursiveServiceCreationCheckWrapperTest extends IOCInternalTestCase
-{
-
-    private static final String SOURCE_DESCRIPTION = "{SOURCE DESCRIPTION}";
-
-    @Test
-    public void ensure_only_called_once() throws Exception
-    {
-        Logger logger = mockLogger();
-        ObjectCreatorSource source = mockObjectCreatorSource();
-        ObjectCreator delegate = mockObjectCreator();
-        Object service = new Object();
-
-        ServiceDef def = new ServiceDefImpl(Runnable.class, null, "Bar", null, "singleton", false, false, source);
-
-        train_createObject(delegate, service);
-
-        train_getDescription(source, SOURCE_DESCRIPTION);
-
-        replay();
-
-        ObjectCreator wrapper = new RecursiveServiceCreationCheckWrapper(def, delegate, logger);
-
-        assertSame(wrapper.createObject(), service);
-
-        try
-        {
-            wrapper.createObject();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Construction of service 'Bar' has failed due to recursion: the service depends on itself in some way.",
-                    SOURCE_DESCRIPTION,
-                    "for references to another service that is itself dependent on service 'Bar'.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void reporting_of_construction_failure() throws Exception
-    {
-        RuntimeException failure = new RuntimeException("Just cranky.");
-        Logger logger = mockLogger();
-        ObjectCreatorSource source = mockObjectCreatorSource();
-        ObjectCreator delegate = mockObjectCreator();
-        Object service = new Object();
-
-        ServiceDef def = new ServiceDefImpl(Runnable.class, null, "Bar", null, "singleton", false, false, source);
-
-        expect(delegate.createObject()).andThrow(failure);
-
-        logger.error("Construction of service Bar failed: Just cranky.", failure);
-
-        replay();
-
-        ObjectCreator wrapper = new RecursiveServiceCreationCheckWrapper(def, delegate, logger);
-
-        try
-        {
-            wrapper.createObject();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertSame(ex, failure);
-        }
-
-        verify();
-
-        // Now test that the locked flag is not set and that the object may still be created.
-
-        train_createObject(delegate, service);
-
-        replay();
-
-        assertSame(service, wrapper.createObject());
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/RunnableServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/RunnableServiceImpl.java
deleted file mode 100644
index 75b5bb5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/RunnableServiceImpl.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * This service implementation is not instantiable, which triggers an exception.
- */
-public class RunnableServiceImpl implements Runnable
-{
-    private RunnableServiceImpl()
-    {
-    }
-
-    public void run()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java
deleted file mode 100644
index 2776b56..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodFixture.java
+++ /dev/null
@@ -1,116 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.ioc.annotations.Value;
-import org.slf4j.Logger;
-import org.testng.Assert;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.ServiceBuilderMethodInvokerTest}.
- */
-public class ServiceBuilderMethodFixture extends Assert
-{
-    FieService fie;
-
-    ServiceResources expectedServiceResources;
-
-    Class expectedServiceInterface;
-
-    Logger expectedLogger;
-
-    FoeService expectedFoe;
-
-    Object expectedConfiguration;
-
-    String expectedString;
-
-    public FieService buildWithUnorderedConfiguration(Collection<Runnable> configuration)
-    {
-        assertSame(configuration, expectedConfiguration);
-
-        return fie;
-    }
-
-    public FieService buildWithOrderedConfiguration(List<Runnable> configuration)
-    {
-        assertSame(configuration, expectedConfiguration);
-
-        return fie;
-    }
-
-    public void methodWithParameterizedList(List<Runnable> list)
-    {
-    }
-
-    public void methodWithList(List list)
-    {
-    }
-
-    public void methodWithWildcardList(List<? super ArrayList> list)
-    {
-
-    }
-
-    public FieService build_noargs()
-    {
-        return fie;
-    }
-
-    public FieService build_injected(@InjectService("Foe")
-    FoeService foe)
-    {
-        assertSame(expectedFoe, foe);
-
-        return fie;
-    }
-
-    public FieService build_auto(FoeService foe)
-    {
-        assertSame(expectedFoe, foe);
-
-        return fie;
-    }
-
-    public FieService build_fail()
-    {
-        throw new RuntimeException("Method failed.");
-    }
-
-    public FieService build_args(ServiceResources resources, Class serviceInterface, Logger log)
-    {
-        assertSame(resources, expectedServiceResources);
-        assertSame(serviceInterface, expectedServiceInterface);
-        assertSame(log, expectedLogger);
-
-        return fie;
-    }
-
-    /** Before 5.2, an @Inject was necessary here. Now we're testing that it no longer is necessary. */
-    public FieService build_with_forced_injection(@Value("Injected")
-    String string)
-    {
-        assertEquals(string, expectedString);
-
-        return fie;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java
deleted file mode 100644
index 3b58cad..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceBuilderMethodInvokerTest.java
+++ /dev/null
@@ -1,404 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import static org.apache.tapestry5.ioc.internal.AbstractServiceCreator.findParameterizedTypeFromGenericType;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-import org.slf4j.Logger;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-import java.lang.reflect.Type;
-import java.util.Collection;
-import java.util.List;
-
-public class ServiceBuilderMethodInvokerTest extends IOCInternalTestCase
-{
-    private static final String SERVICE_ID = "Fie";
-
-    private static final String CREATOR_DESCRIPTION = "{CREATOR DESCRIPTION}";
-
-    private final OperationTracker tracker = new QuietOperationTracker();
-
-    @Test
-    public void noargs_method()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        fixture.fie = mockFieService();
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
-                "build_noargs"));
-
-        Object actual = sc.createObject();
-
-        assertSame(actual, fixture.fie);
-
-        verify();
-    }
-
-    private void trainForConstructor(ServiceBuilderResources resources, Logger logger)
-    {
-        train_getServiceId(resources, SERVICE_ID);
-
-        train_getLogger(resources, logger);
-
-        train_getServiceInterface(resources, FieService.class);
-    }
-
-    @Test
-    public void method_with_args()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        Method method = findMethod(fixture, "build_args");
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-
-        Logger logger = mockLogger();
-
-        fixture.expectedServiceInterface = FieService.class;
-        fixture.expectedServiceResources = resources;
-        fixture.expectedLogger = logger;
-
-        fixture.fie = mockFieService();
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        train_isDebugEnabled(logger, true);
-
-        logger.debug(IOCMessages.invokingMethod(CREATOR_DESCRIPTION));
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
-        Object actual = sc.createObject();
-
-        assertSame(actual, fixture.fie);
-
-        verify();
-    }
-
-    @Test
-    public void inject_annotation_bypasses_resources()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        Method method = findMethod(fixture, "build_with_forced_injection");
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-
-        Logger logger = mockLogger();
-
-        fixture.expectedString = "Injected";
-
-        fixture.fie = mockFieService();
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        train_isDebugEnabled(logger, true);
-
-        logger.debug(IOCMessages.invokingMethod(CREATOR_DESCRIPTION));
-
-        // This simulates what the real stack does when it sees @Value("Injected")
-
-        expect(resources.getObject(eq(String.class), isA(AnnotationProvider.class))).andReturn("Injected");
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
-        Object actual = sc.createObject();
-
-        assertSame(actual, fixture.fie);
-
-        verify();
-    }
-
-    @Test
-    public void injected_service_method()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        fixture.fie = mockFieService();
-        fixture.expectedFoe = newFoe();
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        train_getService(resources, "Foe", FoeService.class, fixture.expectedFoe);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
-                "build_injected"));
-
-        Object actual = sc.createObject();
-
-        assertSame(actual, fixture.fie);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void injected_ordered_collection()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        fixture.fie = mockFieService();
-        List<Runnable> result = newMock(List.class);
-        fixture.expectedConfiguration = result;
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        expect(resources.getOrderedConfiguration(Runnable.class)).andReturn(result);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
-                "buildWithOrderedConfiguration"));
-
-        Object actual = sc.createObject();
-
-        assertSame(actual, fixture.fie);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void injected_unordered_collection()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        fixture.fie = mockFieService();
-        Collection<Runnable> result = newMock(Collection.class);
-        fixture.expectedConfiguration = result;
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        expect(resources.getUnorderedConfiguration(Runnable.class)).andReturn(result);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, findMethod(fixture,
-                "buildWithUnorderedConfiguration"));
-
-        Object actual = sc.createObject();
-
-        assertSame(actual, fixture.fie);
-
-        verify();
-    }
-
-    private FoeService newFoe()
-    {
-        return mockFoeService();
-    }
-
-    @Test
-    public void builder_method_returns_null()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        Method method = findMethod(fixture, "build_noargs");
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
-        try
-        {
-            sc.createObject();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            Assert.assertEquals(ex.getMessage(), "Builder method " + CREATOR_DESCRIPTION
-                    + " (for service 'Fie') returned null.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void builder_method_failed()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        Method method = findMethod(fixture, "build_fail");
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
-        try
-        {
-            sc.createObject();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Error invoking service builder method " + CREATOR_DESCRIPTION
-                    + " (for service 'Fie'): Method failed.");
-
-            Throwable cause = ex.getCause();
-
-            assertEquals(cause.getMessage(), "Method failed.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void auto_dependency()
-    {
-        ServiceBuilderMethodFixture fixture = new ServiceBuilderMethodFixture();
-        Method method = findMethod(fixture, "build_auto");
-
-        ServiceBuilderResources resources = mockServiceBuilderResources(tracker);
-        Logger logger = mockLogger();
-
-        fixture.fie = mockFieService();
-        fixture.expectedFoe = mockFoeService();
-
-        trainForConstructor(resources, logger);
-
-        train_getModuleBuilder(resources, fixture);
-
-        expect(resources.getObject(eq(FoeService.class), isA(AnnotationProvider.class))).andReturn(fixture.expectedFoe);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        ObjectCreator sc = new ServiceBuilderMethodInvoker(resources, CREATOR_DESCRIPTION, method);
-
-        Object actual = sc.createObject();
-
-        verify();
-
-        assertSame(actual, fixture.fie);
-    }
-
-    protected final void train_getModuleBuilder(ServiceBuilderResources resources, Object moduleInstance)
-    {
-        expect(resources.getModuleBuilder()).andReturn(moduleInstance);
-    }
-
-    @Test
-    public void parameterized_type_of_generic_parameter()
-    {
-        Method m = findMethod(ServiceBuilderMethodFixture.class, "methodWithParameterizedList");
-
-        assertEquals(m.getParameterTypes()[0], List.class);
-        Type type = m.getGenericParameterTypes()[0];
-
-        assertEquals(type.toString(), "java.util.List<java.lang.Runnable>");
-        assertEquals(findParameterizedTypeFromGenericType(type), Runnable.class);
-    }
-
-    @Test
-    public void parameterized_type_of_nongeneric_parameter()
-    {
-        Method m = findMethod(ServiceBuilderMethodFixture.class, "methodWithList");
-
-        assertEquals(m.getParameterTypes()[0], List.class);
-        Type type = m.getGenericParameterTypes()[0];
-
-        assertEquals(type.toString(), "interface java.util.List");
-        assertEquals(findParameterizedTypeFromGenericType(type), Object.class);
-    }
-
-    @Test
-    public void parameterize_type_for_non_supported_type()
-    {
-        Method m = findMethod(ServiceBuilderMethodFixture.class, "methodWithWildcardList");
-
-        assertEquals(m.getParameterTypes()[0], List.class);
-        Type type = m.getGenericParameterTypes()[0];
-
-        try
-        {
-            findParameterizedTypeFromGenericType(type);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), IOCMessages.genericTypeNotSupported(type));
-        }
-    }
-
-    private FoeService mockFoeService()
-    {
-        return newMock(FoeService.class);
-    }
-
-    private FieService mockFieService()
-    {
-        return newMock(FieService.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorFixture.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorFixture.java
deleted file mode 100644
index 0353b09..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorFixture.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.testng.Assert;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.ServiceDecoratorImplTest}.
- */
-public class ServiceDecoratorFixture extends Assert
-{
-    Object expectedDelegate;
-
-    Object interceptorToReturn;
-
-    RuntimeException exception;
-
-    public <T> T decoratorReturnsInterceptor(Class<T> serviceInterface, T delegate)
-    {
-        assertSame(serviceInterface, FieService.class);
-        assertSame(delegate, expectedDelegate);
-
-        return serviceInterface.cast(interceptorToReturn);
-    }
-
-    public Object decoratorUntyped(Object delegate)
-    {
-        assertSame(delegate, expectedDelegate);
-
-        return interceptorToReturn;
-    }
-
-    public Object decoratorThrowsException(Object delegate)
-    {
-        throw exception;
-    }
-
-    public Object decorateReturnNull(Object delegate)
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorImplTest.java
deleted file mode 100644
index 89a0d2d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceDecoratorImplTest.java
+++ /dev/null
@@ -1,201 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ModuleBuilderSource;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.easymock.EasyMock;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-public class ServiceDecoratorImplTest extends IOCInternalTestCase
-{
-    private static final String SERVICE_ID = "ioc.Fie";
-
-    private final OperationTracker tracker = new QuietOperationTracker();
-
-    private ModuleBuilderSource newSource(final Object moduleInstance)
-    {
-        return new ModuleBuilderSource()
-        {
-            public Object getModuleBuilder()
-            {
-                return moduleInstance;
-            }
-        };
-    }
-
-    /**
-     * Also, test logging of decorator method invocation.
-     *
-     * @throws Exception
-     */
-    @Test
-    public void decorator_returns_interceptor() throws Exception
-    {
-        ServiceDecoratorFixture fixture = new ServiceDecoratorFixture();
-        Method m = findMethod(fixture, "decoratorReturnsInterceptor");
-
-        ServiceResources resources = mockServiceResources(tracker);
-        Logger logger = mockLogger();
-        fixture.expectedDelegate = mockFieService();
-        fixture.interceptorToReturn = mockFieService();
-        ModuleBuilderSource source = newSource(fixture);
-
-        trainForConstructor(resources, logger);
-
-        train_isDebugEnabled(logger, true);
-
-        logger.debug(EasyMock.contains(
-                "Invoking method org.apache.tapestry5.ioc.internal.ServiceDecoratorFixture.decoratorReturnsInterceptor(Class, Object)"));
-
-        replay();
-
-
-        // Check that the delegate gets passed in; check that the return value of the
-        // decorator method is the return value of the ServiceDecorator.
-
-        ServiceDecoratorImpl decorator = new ServiceDecoratorImpl(m, source, resources,
-                                                                  getClassFactory());
-
-        Object interceptor = decorator.createInterceptor(fixture.expectedDelegate);
-
-        assertSame(interceptor, fixture.interceptorToReturn);
-
-        verify();
-    }
-
-    @Test
-    public void decorator_returns_null_interceptor() throws Exception
-    {
-        ServiceDecoratorFixture fixture = new ServiceDecoratorFixture();
-        ModuleBuilderSource source = newSource(fixture);
-        ServiceResources resources = mockServiceResources(tracker);
-        Logger logger = mockLogger();
-        Object delegate = mockFieService();
-
-        trainForConstructor(resources, logger);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        Method m = findMethod(fixture, "decorateReturnNull");
-
-        ServiceDecoratorImpl decorator = new ServiceDecoratorImpl(m, source, resources,
-                                                                  getClassFactory());
-
-        Object interceptor = decorator.createInterceptor(delegate);
-
-        assertNull(interceptor);
-
-        verify();
-    }
-
-    @Test
-    public void decorator_returns_incorrect_type() throws Exception
-    {
-        ServiceDecoratorFixture fixture = new ServiceDecoratorFixture();
-        ModuleBuilderSource source = newSource(fixture);
-        ServiceResources resources = mockServiceResources(tracker);
-        Logger logger = mockLogger();
-        fixture.expectedDelegate = mockFieService();
-        fixture.interceptorToReturn = newMock(FoeService.class);
-
-        Method m = findMethod(fixture, "decoratorUntyped");
-
-        trainForConstructor(resources, logger);
-
-        train_isDebugEnabled(logger, false);
-
-
-        replay();
-
-        ServiceDecoratorImpl decorator = new ServiceDecoratorImpl(m, source, resources,
-                                                                  getClassFactory());
-
-        try
-        {
-            decorator.createInterceptor(fixture.expectedDelegate);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Decorator method org.apache.tapestry5.ioc.internal.ServiceDecoratorFixture.decoratorUntyped(Object)",
-                                  "(invoked for service 'ioc.Fie') returned FoeService, which is not assignable to the org.apache.tapestry5.ioc.internal.FieService service interface.");
-
-        }
-
-        verify();
-    }
-
-    @Test
-    public void decorator_method_throws_exception() throws Exception
-    {
-        ServiceDecoratorFixture fixture = new ServiceDecoratorFixture();
-        ModuleBuilderSource source = newSource(fixture);
-        ServiceResources resources = mockServiceResources(tracker);
-        Logger logger = mockLogger();
-        Object delegate = mockFieService();
-        fixture.exception = new RuntimeException("Ouch!");
-
-        trainForConstructor(resources, logger);
-
-        train_isDebugEnabled(logger, false);
-
-        replay();
-
-        Method m = findMethod(fixture, "decoratorThrowsException");
-
-        ServiceDecoratorImpl decorator = new ServiceDecoratorImpl(m, source, resources,
-                                                                  getClassFactory());
-
-        try
-        {
-            decorator.createInterceptor(delegate);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Exception invoking method org.apache.tapestry5.ioc.internal.ServiceDecoratorFixture.decoratorThrowsException(Object)",
-                                  "Ouch!");
-
-            Throwable cause = ex.getCause();
-
-            assertSame(cause, fixture.exception);
-        }
-
-        verify();
-    }
-
-    private FieService mockFieService()
-    {
-        return newMock(FieService.class);
-    }
-
-    private void trainForConstructor(ServiceResources resources, Logger logger)
-    {
-        train_getServiceId(resources, SERVICE_ID);
-
-        train_getServiceInterface(resources, FieService.class);
-
-        train_getLogger(resources, logger);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdConflictMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdConflictMethodModule.java
deleted file mode 100644
index e0fb89c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdConflictMethodModule.java
+++ /dev/null
@@ -1,32 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class ServiceIdConflictMethodModule
-{
-    public FieService buildFred()
-    {
-        return null;
-    }
-
-    public FieService buildFred(Object param)
-    {
-        return null;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaAnnotationModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaAnnotationModule.java
deleted file mode 100644
index 1892deb..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaAnnotationModule.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.ServiceId;
-
-public class ServiceIdViaAnnotationModule
-{
-    @ServiceId("FooService")
-    public static Runnable buildSomething()
-    {
-        return new ServiceIdViaMethodAnnotationServiceImpl();
-    }
-
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Runnable.class, ServiceIdViaAnnotationServiceImpl.class);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaAnnotationServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaAnnotationServiceImpl.java
deleted file mode 100644
index 82bfaeb..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaAnnotationServiceImpl.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.annotations.ServiceId;
-
-@ServiceId("BarneyService")
-public class ServiceIdViaAnnotationServiceImpl implements Runnable
-{
-
-    public void run()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaMethodAnnotationServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaMethodAnnotationServiceImpl.java
deleted file mode 100644
index 57992b6..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceIdViaMethodAnnotationServiceImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-
-public class ServiceIdViaMethodAnnotationServiceImpl implements Runnable
-{
-
-    public void run()
-    {
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceProxySerializationTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceProxySerializationTest.java
deleted file mode 100644
index a10aa01..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ServiceProxySerializationTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.io.*;
-
-public class ServiceProxySerializationTest extends IOCTestCase
-{
-    @Test
-    public void serialization_deserialization() throws Exception
-    {
-        Registry r = buildRegistry();
-
-        TypeCoercer proxy = r.getService(TypeCoercer.class);
-
-        byte[] serialized = serialize(proxy);
-
-        TypeCoercer proxy2 = deserialize(TypeCoercer.class, serialized);
-
-        assertSame(proxy2, proxy, "De-serialized proxy is same object if Registry unchanged.");
-
-        r.shutdown();
-
-        r = buildRegistry();
-
-        TypeCoercer proxy3 = deserialize(TypeCoercer.class, serialized);
-
-        assertNotNull(proxy3);
-        assertNotSame(proxy3, proxy, "New proxy should be different, as it is from a different Registry.");
-
-        r.shutdown();
-    }
-
-    @Test
-    public void deserialize_with_no_registry() throws Exception
-    {
-        Registry r = buildRegistry();
-
-        TypeCoercer proxy = r.getService(TypeCoercer.class);
-
-        byte[] serialized = serialize(proxy);
-
-        r.shutdown();
-
-        try
-        {
-            deserialize(TypeCoercer.class, serialized);
-            unreachable();
-        }
-        catch (Exception ex)
-        {
-            assertMessageContains(ex,
-                                  "Service token for service 'TypeCoercer' can not be converted back into a proxy because no proxy provider has been registered");
-        }
-    }
-
-    private byte[] serialize(Object object) throws IOException
-    {
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ObjectOutputStream oos = new ObjectOutputStream(baos);
-
-        oos.writeObject(object);
-
-        oos.close();
-
-        return baos.toByteArray();
-    }
-
-    private <T> T deserialize(Class<T> type, byte[] serialized) throws IOException, ClassNotFoundException
-    {
-        ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(serialized));
-
-        Object raw = ois.readObject();
-
-        ois.close();
-
-        return type.cast(raw);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SimpleModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SimpleModule.java
deleted file mode 100644
index 87b30c6..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SimpleModule.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.annotations.EagerLoad;
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class SimpleModule
-{
-    @Scope("threaded")
-    public FoeService buildBarney()
-    {
-        return null;
-    }
-
-    public FieService buildFred()
-    {
-        return null;
-    }
-
-    @EagerLoad
-    public FoeService buildWilma()
-    {
-        return null;
-    }
-
-    void ignoredMethod()
-    {
-    }
-
-    /**
-     * Minimal decorator method that uses generics to qualify the delegate passed in and the object returned.
-     */
-    public <T> T decorateLogging(Class<T> serviceInterace, T delegate)
-    {
-        return null;
-    }
-
-    /**
-     * Minimal contribution method.
-     */
-    public void contributeBarney(Configuration configuration)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SingletonServiceLifecycleTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SingletonServiceLifecycleTest.java
deleted file mode 100644
index 4cd84ca..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SingletonServiceLifecycleTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ServiceLifecycle;
-import org.apache.tapestry5.ioc.ServiceResources;
-import org.testng.annotations.Test;
-
-public class SingletonServiceLifecycleTest extends IOCInternalTestCase
-{
-    @Test
-    public void test()
-    {
-        ServiceResources resources = mockServiceResources();
-        ObjectCreator creator = mockObjectCreator();
-        Object expected = new Object();
-
-        train_createObject(creator, expected);
-
-        replay();
-
-        ServiceLifecycle lifecycle = new SingletonServiceLifecycle();
-
-        Object actual = lifecycle.createService(resources, creator);
-
-        assertSame(actual, expected);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java
deleted file mode 100644
index bc5b35f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/SyntheticMethodModule.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-// test will enhance this class to contain a public synthetic method
-
-public class SyntheticMethodModule
-{
-    public Object build()
-    {
-        return new Object();
-    }
-
-    /** Methods with a leading '$' are ignored as well, mostly for Scala support. */
-    public Object $ignored()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ToStringService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ToStringService.java
deleted file mode 100644
index e039cfc..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ToStringService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.SingletonServiceLifecycleTest}.
- */
-public interface ToStringService
-{
-    String toString();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ToUpperCaseStringHolder.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ToUpperCaseStringHolder.java
deleted file mode 100644
index 19d7d24..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ToUpperCaseStringHolder.java
+++ /dev/null
@@ -1,33 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.StringHolder;
-
-public class ToUpperCaseStringHolder implements StringHolder
-{
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value.toUpperCase();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/TooManyContributionParametersModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/TooManyContributionParametersModule.java
deleted file mode 100644
index 590f53b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/TooManyContributionParametersModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImpl}.
- */
-public class TooManyContributionParametersModule
-{
-
-    public void contributeTooMany(Configuration configuration1, OrderedConfiguration configuration2)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UninstantiableAutobuildServiceModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UninstantiableAutobuildServiceModule.java
deleted file mode 100644
index c92016f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UninstantiableAutobuildServiceModule.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ServiceBinder;
-
-public class UninstantiableAutobuildServiceModule
-{
-    public static void bind(ServiceBinder binder)
-    {
-        binder.bind(Runnable.class, RunnableServiceImpl.class).preventReloading();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UpcaseService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UpcaseService.java
deleted file mode 100644
index c7cbe63..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UpcaseService.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.SingletonServiceLifecycleTest}.
- */
-public interface UpcaseService
-{
-    /**
-     * Returns the uppercase version of an input string.
-     */
-    String upcase(String input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UpcaseServiceImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UpcaseServiceImpl.java
deleted file mode 100644
index 4c214de..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/UpcaseServiceImpl.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-public class UpcaseServiceImpl implements UpcaseService
-{
-
-    public String upcase(String input)
-    {
-        return input.toUpperCase();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingConfigurationWrapperTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingConfigurationWrapperTest.java
deleted file mode 100644
index 975e7a3..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingConfigurationWrapperTest.java
+++ /dev/null
@@ -1,109 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.annotations.Test;
-
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-public class ValidatingConfigurationWrapperTest extends IOCInternalTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void valid_contribution()
-    {
-        List<Runnable> collection = CollectionFactory.newList();
-        Runnable value = mockRunnable();
-
-        replay();
-
-        Configuration wrapper = new ValidatingConfigurationWrapper(Runnable.class, null,
-                                                                   collection, "foo.Bar");
-
-        wrapper.add(value);
-
-        verify();
-
-        assertListsEquals(collection, value);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void valid_class_contribution()
-    {
-        ObjectLocator locator = mockObjectLocator();
-        final HashMap value = new HashMap();
-        train_autobuild(locator, HashMap.class, value);
-        List<Map> collection = CollectionFactory.newList();
-
-        replay();
-
-        Configuration wrapper = new ValidatingConfigurationWrapper(Map.class, locator,
-                                                                   collection, "foo.Bar");
-
-        wrapper.addInstance(HashMap.class);
-
-        verify();
-
-        assertListsEquals(collection, value);
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void null_contribution()
-    {
-        List<Runnable> collection = CollectionFactory.newList();
-
-        Configuration wrapper = new ValidatingConfigurationWrapper(Runnable.class, null, collection,
-                                                                   "Bar");
-
-        try
-        {
-            wrapper.add(null);
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertEquals(ex.getMessage(), "Service contribution (to service 'Bar') was null.");
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void wrong_type_of_contribution()
-    {
-        List<Runnable> collection = CollectionFactory.newList();
-
-
-        Configuration wrapper = new ValidatingConfigurationWrapper(Runnable.class, null, collection,
-                                                                   "Bar");
-
-        try
-        {
-            wrapper.add("runnable");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Service contribution (to service 'Bar') was an instance of java.lang.String, which is not assignable to the configuration type java.lang.Runnable.");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingMappedConfigurationWrapperTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingMappedConfigurationWrapperTest.java
deleted file mode 100644
index ae9b9e8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingMappedConfigurationWrapperTest.java
+++ /dev/null
@@ -1,227 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import java.util.List;
-import java.util.Map;
-
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.testng.annotations.Test;
-
-public class ValidatingMappedConfigurationWrapperTest extends IOCInternalTestCase
-{
-    private static final String SERVICE_ID = "Baz";
-
-    @Test
-    public void proper_key_and_value()
-    {
-        ContributionDef def = mockContributionDef();
-        Map<Class, ContributionDef> keyToContribution = newMap();
-        ObjectLocator locator = mockObjectLocator();
-        Map<Class, Runnable> map = CollectionFactory.newMap();
-
-        Class key = Integer.class;
-        Runnable value = mockRunnable();
-
-        replay();
-
-        MappedConfiguration<Class, Runnable> wrapper = new ValidatingMappedConfigurationWrapper<Class, Runnable>(
-                Runnable.class, locator, map, null, SERVICE_ID, def, Class.class, keyToContribution);
-
-        wrapper.add(key, value);
-
-        verify();
-
-        assertSame(map.get(key), value);
-        assertSame(keyToContribution.get(Integer.class), def);
-    }
-
-    @Test
-    public void duplicate_key()
-    {
-        ContributionDef def1 = newContributionDef("contributionPlaceholder1");
-        ContributionDef def2 = newContributionDef("contributionPlaceholder2");
-        Map<Class, ContributionDef> keyToContribution = newMap();
-        ObjectLocator locator = mockObjectLocator();
-        Map<Class, Runnable> map = CollectionFactory.newMap();
-
-        keyToContribution.put(Integer.class, def1);
-
-        Class key = Integer.class;
-        Runnable value = mockRunnable();
-
-        replay();
-
-        MappedConfiguration<Class, Runnable> wrapper = new ValidatingMappedConfigurationWrapper<Class, Runnable>(
-                Runnable.class, locator, map, null, SERVICE_ID, def2, Class.class, keyToContribution);
-
-        try
-        {
-            wrapper.add(key, value);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertMessageContains(ex,
-                                  "Service contribution (to service 'Baz') conflicts with existing contribution");
-        }
-
-        verify();
-
-        assertSame(keyToContribution.get(Integer.class), def1);
-        assertTrue(map.isEmpty());
-    }
-
-    @Test
-    public void null_key()
-    {
-        ContributionDef def = newContributionDef("contributionPlaceholder1");
-        Map<Class, ContributionDef> keyToContribution = newMap();
-        Runnable value = mockRunnable();
-        ObjectLocator locator = mockObjectLocator();
-        Map<Class, Runnable> map = CollectionFactory.newMap();
-
-        replay();
-
-        MappedConfiguration<Class, Runnable> wrapper = new ValidatingMappedConfigurationWrapper<Class, Runnable>(
-                Runnable.class, locator, map, null, SERVICE_ID, def, Class.class, keyToContribution);
-
-        try
-        {
-            wrapper.add(null, value);
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertEquals(ex.getMessage(), "Key for service contribution (to service 'Baz') was null.");
-        }
-
-        verify();
-
-        assertTrue(map.isEmpty());
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void wrong_key_type()
-    {
-        ContributionDef def = newContributionDef("contributionPlaceholder1");
-        Map<?, ContributionDef> keyToContribution = CollectionFactory.newMap();
-        Runnable value = mockRunnable();
-        ObjectLocator locator = mockObjectLocator();
-        Map<Class, Runnable> map = CollectionFactory.newMap();
-
-        replay();
-
-        MappedConfiguration wrapper = new ValidatingMappedConfigurationWrapper(Runnable.class, locator, map, null,
-                                                                               SERVICE_ID, def,
-                                                                               Class.class, keyToContribution);
-
-        try
-        {
-            wrapper.add("java.util.List", value);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Key for service contribution (to service 'Baz') was an instance of java.lang.String, but the expected key type was java.lang.Class.");
-        }
-
-        verify();
-
-        assertTrue(map.isEmpty());
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void wrong_value_type()
-    {
-        ContributionDef def = newContributionDef("contributionPlaceholder1");
-        Map<?, ContributionDef> keyToContribution = CollectionFactory.newMap();
-        ObjectLocator locator = mockObjectLocator();
-        Map<Class, Runnable> map = CollectionFactory.newMap();
-
-
-        replay();
-
-        MappedConfiguration wrapper = new ValidatingMappedConfigurationWrapper(Runnable.class, locator, map, null,
-                                                                               SERVICE_ID, def,
-                                                                               Class.class, keyToContribution);
-
-        try
-        {
-            wrapper.add(List.class, "do something");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Service contribution (to service 'Baz') was an instance of java.lang.String, which is not assignable to the configuration type java.lang.Runnable.");
-        }
-
-        verify();
-
-        assertTrue(map.isEmpty());
-    }
-
-    @Test
-    public void null_value()
-    {
-        ContributionDef def = newContributionDef("contributionPlaceholder1");
-        Map<Class, ContributionDef> keyToContribution = CollectionFactory.newMap();
-        Map<Class, Runnable> map = CollectionFactory.newMap();
-        ObjectLocator locator = mockObjectLocator();
-
-        replay();
-
-        MappedConfiguration<Class, Runnable> wrapper = new ValidatingMappedConfigurationWrapper<Class, Runnable>(
-                Runnable.class, locator, map, null, SERVICE_ID, def, Class.class, keyToContribution);
-
-        try
-        {
-            wrapper.add(Integer.class, null);
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertEquals(ex.getMessage(), "Service contribution (to service 'Baz') was null.");
-        }
-
-        verify();
-
-        assertTrue(map.isEmpty());
-    }
-
-    private ContributionDef newContributionDef(String methodName)
-    {
-        return new ContributionDefImpl(SERVICE_ID, findMethod(methodName), getClassFactory(), null, null);
-    }
-
-    public void contributionPlaceholder1()
-    {
-
-    }
-
-    public void contributionPlaceholder2()
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingOrderedConfigurationWrapperTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingOrderedConfigurationWrapperTest.java
deleted file mode 100644
index a41a78b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/ValidatingOrderedConfigurationWrapperTest.java
+++ /dev/null
@@ -1,123 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.internal.util.Orderer;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.HashMap;
-import java.util.Map;
-
-public class ValidatingOrderedConfigurationWrapperTest extends IOCInternalTestCase
-{
-    @Test
-    public void valid_type_long_form()
-    {
-        Runnable contribution = mockRunnable();
-        Runnable pre = mockRunnable();
-        Runnable post = mockRunnable();
-        Logger logger = mockLogger();
-        Orderer<Runnable> orderer = new Orderer<Runnable>(logger);
-
-
-        orderer.add("pre", pre);
-        orderer.add("post", post);
-
-        replay();
-
-        OrderedConfiguration<Runnable> wrapper = new ValidatingOrderedConfigurationWrapper<Runnable>(
-                Runnable.class, null, orderer, null, null, "Service");
-
-        wrapper.add("id", contribution, "after:pre", "before:post");
-
-        verify();
-
-        assertListsEquals(orderer.getOrdered(), pre, contribution, post);
-    }
-
-    @Test
-    public void contribute_valid_class()
-    {
-        Logger logger = mockLogger();
-        Orderer<Map> orderer = new Orderer<Map>(logger);
-        Map pre = new HashMap();
-        Map post = new HashMap();
-        HashMap contribution = new HashMap();
-        ObjectLocator locator = mockObjectLocator();
-
-        train_autobuild(locator, HashMap.class, contribution);
-
-        orderer.add("pre", pre);
-        orderer.add("post", post);
-
-        replay();
-
-        OrderedConfiguration<Map> wrapper = new ValidatingOrderedConfigurationWrapper<Map>(
-                Map.class, locator, orderer, null, null, "Service");
-
-        wrapper.addInstance("id", HashMap.class, "after:pre", "before:post");
-
-        verify();
-
-        assertListsEquals(orderer.getOrdered(), pre, contribution, post);
-    }
-
-    @Test
-    public void null_object_passed_through()
-    {
-        Logger logger = mockLogger();
-        Orderer<Runnable> orderer = new Orderer<Runnable>(logger);
-
-        replay();
-
-        OrderedConfiguration<Runnable> wrapper = new ValidatingOrderedConfigurationWrapper<Runnable>(
-                Runnable.class, null, orderer, null, null, "Service");
-
-        wrapper.add("id", null);
-
-        verify();
-
-        assertTrue(orderer.getOrdered().isEmpty());
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void incorrect_contribution_type_is_passed_through_as_null()
-    {
-        Logger logger = mockLogger();
-        Orderer<Runnable> orderer = new Orderer<Runnable>(logger);
-
-        replay();
-
-        OrderedConfiguration wrapper = new ValidatingOrderedConfigurationWrapper(Runnable.class, null, orderer, null,
-                                                                                 null, "Service");
-
-        try
-        {
-            wrapper.add("id", "string");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Service contribution (to service 'Service') was an instance of java.lang.String, which is not assignable to the configuration type java.lang.Runnable.");
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/VoidBuilderMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/VoidBuilderMethodModule.java
deleted file mode 100644
index 198d307..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/VoidBuilderMethodModule.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class VoidBuilderMethodModule
-{
-    /**
-     * Builder methods should not return void.
-     */
-    public void buildNull()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/VoidDecoratorMethodModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/VoidDecoratorMethodModule.java
deleted file mode 100644
index d8ffa3d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/VoidDecoratorMethodModule.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.DefaultModuleDefImplTest}.
- */
-public class VoidDecoratorMethodModule
-{
-    /**
-     * Decorator methods are not supposed to return void. They can return null.
-     *
-     * @param delegate
-     */
-    public void decorateVoid(Object delegate)
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractIntWrapper.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractIntWrapper.java
deleted file mode 100644
index e63db8b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractIntWrapper.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.ClassFabImplTest}.
- */
-public abstract class AbstractIntWrapper
-{
-    public abstract int getIntValue();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java
deleted file mode 100644
index 1af5251..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AbstractInvocationTest.java
+++ /dev/null
@@ -1,139 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-import java.sql.SQLException;
-
-
-public class AbstractInvocationTest extends TestBase
-{
-    class TestInvocation extends AbstractInvocation
-    {
-        protected TestInvocation(Method method)
-        {
-            this(new MethodInfo(method));
-        }
-
-        protected TestInvocation(MethodInfo method)
-        {
-            super(method);
-        }
-
-        public Object getParameter(int index)
-        {
-            return null;
-        }
-
-        public void override(int index, Object newParameter)
-        {
-        }
-
-        protected void invokeDelegateMethod()
-        {
-        }
-    }
-
-    interface Subject
-    {
-        void go() throws SQLException;
-
-        int count() throws SQLException;
-
-        void execute(Runnable runnable);
-    }
-
-    @Test
-    public void to_string() throws Exception
-    {
-        Invocation iv = new TestInvocation(Runnable.class.getMethod("run"));
-
-        assertEquals(iv.toString(), "Invocation[public abstract void java.lang.Runnable.run()]");
-    }
-
-    @Test
-    public void override_exception() throws Exception
-    {
-        SQLException se = new SQLException();
-
-        Invocation iv = new TestInvocation(Subject.class.getMethod("go"));
-
-        iv.overrideThrown(se);
-
-        assertTrue(iv.isFail());
-        assertSame(iv.getThrown(Exception.class), se);
-    }
-
-    @Test
-    public void get_thrown_returns_null_if_not_a_match() throws Exception
-    {
-        SQLException se = new SQLException();
-
-        Invocation iv = new TestInvocation(Subject.class.getMethod("go"));
-
-        iv.overrideThrown(se);
-
-        assertNull(iv.getThrown(RuntimeException.class));
-    }
-
-    @Test
-    public void override_result_clears_exception() throws Exception
-    {
-        SQLException se = new SQLException();
-        Integer override = new Integer(23);
-
-        Invocation iv = new TestInvocation(Subject.class.getMethod("count"));
-
-        iv.overrideThrown(se);
-
-        assertTrue(iv.isFail());
-
-        iv.overrideResult(override);
-        assertFalse(iv.isFail());
-        assertSame(iv.getResult(), override);
-    }
-
-    @Test
-    public void invalid_exception_for_override() throws Exception
-    {
-        SQLException se = new SQLException();
-
-        Invocation iv = new TestInvocation(Runnable.class.getMethod("run"));
-
-        try
-        {
-            iv.overrideThrown(se);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Exception java.sql.SQLException is not a declared exception of method public abstract void java.lang.Runnable.run().");
-        }
-    }
-
-    @Test
-    public void get_parameter_type() throws Exception
-    {
-        Invocation iv = new TestInvocation(Subject.class.getMethod("execute", Runnable.class));
-
-        assertEquals(iv.getParameterCount(), 1);
-        assertSame(iv.getParameterType(0), Runnable.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AnnotatedBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AnnotatedBean.java
deleted file mode 100644
index 622ab43..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AnnotatedBean.java
+++ /dev/null
@@ -1,55 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.annotations.Scope;
-
-public class AnnotatedBean
-{
-    public String getReadWrite()
-    {
-        return null;
-    }
-
-    public void setReadWrite(String value)
-    {
-    }
-
-    public String getAnnotationOnWrite()
-    {
-        return null;
-    }
-
-    @Scope("onwrite")
-    public void setAnnotationOnWrite(String value)
-    {
-    }
-
-    @Scope("onread")
-    public String getAnnotationOnRead()
-    {
-        return null;
-    }
-
-    @Scope("onwrite")
-    public void setAnnotationOnRead(String value)
-    {
-    }
-
-    public String getReadOnly()
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ArraysSubject.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ArraysSubject.java
deleted file mode 100644
index d7c0871..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ArraysSubject.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface ArraysSubject
-{
-    String[] operation(String[] inputs);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ArraysSubjectImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ArraysSubjectImpl.java
deleted file mode 100644
index 2982679..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ArraysSubjectImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public class ArraysSubjectImpl implements ArraysSubject
-{
-    public String[] operation(String[] inputs)
-    {
-        return inputs;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AspectInterceptorBuilderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AspectInterceptorBuilderImplTest.java
deleted file mode 100644
index 3e7bab4..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/AspectInterceptorBuilderImplTest.java
+++ /dev/null
@@ -1,210 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invocation;
-import org.apache.tapestry5.ioc.MethodAdvice;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-/**
- * Tests a few edge and error cases not covered by {@link org.apache.tapestry5.ioc.internal.services.LoggingDecoratorImplTest}.
- */
-public class AspectInterceptorBuilderImplTest extends IOCInternalTestCase
-{
-    private AspectDecorator decorator;
-
-    @BeforeClass
-    public void setup()
-    {
-        decorator = getService(AspectDecorator.class);
-    }
-
-    public interface Subject
-    {
-        void advised();
-
-        void notAdvised();
-    }
-
-    @Test
-    public void some_methods_not_intercepted() throws Exception
-    {
-        Subject delegate = mockSubject();
-
-        MethodAdvice advice = new MethodAdvice()
-        {
-            public void advise(Invocation invocation)
-            {
-                assertEquals(invocation.getMethodName(), "advised");
-
-                invocation.proceed();
-            }
-        };
-
-        delegate.advised();
-        delegate.notAdvised();
-
-        replay();
-
-        AspectInterceptorBuilder<Subject> builder = decorator.createBuilder(Subject.class, delegate, "<Subject>");
-
-        builder.adviseMethod(Subject.class.getMethod("advised"), advice);
-
-        Subject interceptor = builder.build();
-
-        interceptor.advised();
-        interceptor.notAdvised();
-
-        verify();
-    }
-
-    @Test
-    public void method_not_in_service_interface() throws Exception
-    {
-        Subject delegate = mockSubject();
-
-        MethodAdvice advice = mockAdvice();
-
-        replay();
-
-        AspectInterceptorBuilder<Subject> builder = decorator.createBuilder(Subject.class, delegate, "<Subject>");
-
-        // This method doesn't belong.
-
-        try
-        {
-            builder.adviseMethod(Runnable.class.getMethod("run"), advice);
-
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Method public abstract void java.lang.Runnable.run() is not defined for interface interface org.apache.tapestry5.ioc.internal.services.AspectInterceptorBuilderImplTest$Subject.");
-        }
-
-
-        verify();
-    }
-
-    @Test
-    public void method_with_duplicate_advice() throws Exception
-    {
-        TextTransformer delegate = new TextTransformer()
-        {
-            public String transform(String input)
-            {
-                return input;
-            }
-        };
-
-        MethodAdvice stripFirstLetter = new MethodAdvice()
-        {
-            public void advise(Invocation invocation)
-            {
-                String param = (String) invocation.getParameter(0);
-
-                invocation.override(0, param.substring(1));
-
-                invocation.proceed();
-            }
-        };
-
-        MethodAdvice reverse = new MethodAdvice()
-        {
-            public void advise(Invocation invocation)
-            {
-                String param = (String) invocation.getParameter(0);
-
-                char[] input = param.toCharArray();
-                int count = input.length;
-
-                char[] output = new char[count];
-
-                for (int i = 0; i < count; i++)
-                    output[count - i - 1] = input[i];
-
-                invocation.override(0, new String(output));
-
-                invocation.proceed();
-            }
-        };
-
-        AspectInterceptorBuilder<TextTransformer> builder = decorator.createBuilder(TextTransformer.class, delegate,
-                                                                                    "<TextTransformer>");
-
-        Method method = TextTransformer.class.getMethod("transform", String.class);
-        builder.adviseMethod(method, stripFirstLetter);
-        builder.adviseMethod(method, reverse);
-
-        TextTransformer advised = builder.build();
-
-        // strip first letter THEN reverse
-        assertEquals(advised.transform("Tapestry"), "yrtsepa");
-    }
-
-    @Test
-    public void arrays_as_parameters_and_result()
-    {
-        ArraysSubject delegate = new ArraysSubjectImpl();
-
-        MethodAdvice advice = new MethodAdvice()
-        {
-            public void advise(Invocation invocation)
-            {
-                String[] param = (String[]) invocation.getParameter(0);
-
-                for (int i = 0; i < param.length; i++)
-                {
-                    param[i] = param[i].toUpperCase();
-                }
-
-                invocation.proceed();
-
-                String[] result = (String[]) invocation.getResult();
-
-                for (int i = 0; i < result.length; i++)
-                {
-                    result[i] = i + ":" + result[i];
-                }
-            }
-        };
-
-        ArraysSubject advised = decorator.build(ArraysSubject.class, delegate, advice, "whatever");
-
-        String[] inputs = {"Fred", "Barney"};
-
-        String[] result = advised.operation(inputs);
-
-        assertEquals(result[0], "0:FRED");
-        assertEquals(result[1], "1:BARNEY");
-    }
-
-    protected final MethodAdvice mockAdvice()
-    {
-        return newMock(MethodAdvice.class);
-    }
-
-    protected final Subject mockSubject()
-    {
-        return newMock(Subject.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BeanWithIndexedProperty.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BeanWithIndexedProperty.java
deleted file mode 100644
index 62e3af0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BeanWithIndexedProperty.java
+++ /dev/null
@@ -1,28 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public class BeanWithIndexedProperty
-{
-    public int getPrimitiveProperty()
-    {
-        return 0;
-    }
-
-    public String getIndexedProperty(int index)
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java
deleted file mode 100644
index 0a536da..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/BridgeBuilderTest.java
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.io.Serializable;
-
-public class BridgeBuilderTest extends IOCInternalTestCase
-{
-    private ClassFactory classFactory = new ClassFactoryImpl();
-
-    @Test
-    public void standard_interface_and_filter()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        BridgeBuilder<StandardService, StandardFilter> bb = new BridgeBuilder<StandardService, StandardFilter>(
-                logger, StandardService.class, StandardFilter.class, classFactory);
-
-        StandardFilter sf = new StandardFilter()
-        {
-            public int run(int i, StandardService ss)
-            {
-                return ss.run(i + 1);
-            }
-        };
-
-        StandardService ss = new StandardService()
-        {
-            public int run(int i)
-            {
-                return i * 3;
-            }
-        };
-
-        StandardService bridge = bb.instantiateBridge(ss, sf);
-
-        // The filter adds 1, then the service multiplies by 3.
-        // (5 +_1) * 3 = 18.
-
-        assertEquals(bridge.run(5), 18);
-
-        // Since toString() is not part of the service interface,
-        // it will be implemented in the bridge.
-
-        assertEquals(
-                bridge.toString(),
-                "<PipelineBridge from org.apache.tapestry5.ioc.internal.services.StandardService to org.apache.tapestry5.ioc.internal.services.StandardFilter>");
-
-        verify();
-    }
-
-    @Test
-    public void toString_part_of_service_interface()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        BridgeBuilder<ToStringService, ToStringFilter> bb = new BridgeBuilder<ToStringService, ToStringFilter>(
-                logger, ToStringService.class, ToStringFilter.class, classFactory);
-
-        ToStringFilter f = new ToStringFilter()
-        {
-            public String toString(ToStringService s)
-            {
-                return s.toString().toUpperCase();
-            }
-        };
-
-        ToStringService s = new ToStringService()
-        {
-            @Override
-            public String toString()
-            {
-                return "Service";
-            }
-        };
-
-        ToStringService bridge = bb.instantiateBridge(s, f);
-
-        assertEquals("SERVICE", bridge.toString());
-
-        verify();
-    }
-
-    @Test
-    public void service_interface_method_not_matched_in_filter_interface()
-    {
-        Logger logger = mockLogger();
-        ExtraServiceMethod next = newMock(ExtraServiceMethod.class);
-        Serializable filter = newMock(Serializable.class);
-
-        logger
-                .error("Method void extraServiceMethod() has no match in filter interface java.io.Serializable.");
-
-        replay();
-
-        BridgeBuilder<ExtraServiceMethod, Serializable> bb = new BridgeBuilder<ExtraServiceMethod, Serializable>(
-                logger, ExtraServiceMethod.class, Serializable.class, classFactory);
-
-        ExtraServiceMethod esm = bb.instantiateBridge(next, filter);
-
-        try
-        {
-            esm.extraServiceMethod();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Method void extraServiceMethod() has no match in filter interface java.io.Serializable.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void filter_interface_contains_extra_methods()
-    {
-        Logger logger = mockLogger();
-        Serializable next = newMock(Serializable.class);
-        ExtraFilterMethod filter = newMock(ExtraFilterMethod.class);
-
-        logger
-                .error("Method void extraFilterMethod() of filter interface "
-                        + "org.apache.tapestry5.ioc.internal.services.ExtraFilterMethod does not have a matching method "
-                        + "in java.io.Serializable.");
-
-        replay();
-
-        BridgeBuilder<Serializable, ExtraFilterMethod> bb = new BridgeBuilder<Serializable, ExtraFilterMethod>(
-                logger, Serializable.class, ExtraFilterMethod.class, classFactory);
-
-        assertNotNull(bb.instantiateBridge(next, filter));
-
-        verify();
-    }
-
-    @Test
-    public void service_parameter_in_middle_of_filter_method()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        BridgeBuilder<MiddleService, MiddleFilter> bb = new BridgeBuilder<MiddleService, MiddleFilter>(
-                logger, MiddleService.class, MiddleFilter.class, classFactory);
-
-        MiddleFilter mf = new MiddleFilter()
-        {
-            public void execute(int count, char ch, MiddleService service, StringBuilder buffer)
-            {
-                service.execute(count, ch, buffer);
-
-                buffer.append(' ');
-
-                service.execute(count + 1, Character.toUpperCase(ch), buffer);
-
-            }
-        };
-
-        MiddleService ms = new MiddleService()
-        {
-            public void execute(int count, char ch, StringBuilder buffer)
-            {
-                for (int i = 0; i < count; i++)
-                    buffer.append(ch);
-            }
-        };
-
-        // This also tests building the bridge methods with a void return type.
-
-        MiddleService bridge = bb.instantiateBridge(ms, mf);
-
-        StringBuilder buffer = new StringBuilder("CODE: ");
-
-        bridge.execute(3, 'a', buffer);
-
-        assertEquals("CODE: aaa AAAA", buffer.toString());
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ChainBuilderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ChainBuilderImplTest.java
deleted file mode 100644
index a754bc7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ChainBuilderImplTest.java
+++ /dev/null
@@ -1,191 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.ChainBuilder;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class ChainBuilderImplTest extends IOCInternalTestCase
-{
-    private final ChainBuilder builder = new ChainBuilderImpl(new ClassFactoryImpl());
-
-    @Test
-    public void simple_void_method()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        // Training:
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        Runnable chain = build(Runnable.class, r1, r2);
-
-        chain.run();
-
-        verify();
-
-        Assert.assertEquals(chain.toString(), "<Command chain of java.lang.Runnable>");
-    }
-
-    @Test
-    public void int_method()
-    {
-        ChainCommand c1 = mockChainCommand();
-        ChainCommand c2 = mockChainCommand();
-
-        expect(c1.workInt(7)).andReturn(0);
-
-        expect(c2.workInt(7)).andReturn(99);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workInt(7), 99);
-
-        verify();
-    }
-
-    @Test
-    public void int_method_shortcircuits()
-    {
-        ChainCommand c1 = mockChainCommand();
-        ChainCommand c2 = mockChainCommand();
-
-        expect(c1.workInt(7)).andReturn(88);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workInt(7), 88);
-
-        verify();
-    }
-
-    @Test
-    public void boolean_method()
-    {
-        ChainCommand c1 = mockChainCommand();
-        ChainCommand c2 = mockChainCommand();
-
-        train_workBoolean(c1, true, false);
-        train_workBoolean(c2, true, true);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workBoolean(true), true);
-
-        verify();
-    }
-
-    protected final void train_workBoolean(ChainCommand command, boolean parameter, boolean result)
-    {
-        expect(command.workBoolean(parameter)).andReturn(result);
-    }
-
-    @Test
-    public void string_method()
-    {
-        ChainCommand c1 = mockChainCommand();
-        ChainCommand c2 = mockChainCommand();
-
-        expect(c1.workString("fred")).andReturn(null);
-
-        expect(c2.workString("fred")).andReturn("flintstone");
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workString("fred"), "flintstone");
-
-        verify();
-
-    }
-
-    @Test
-    public void double_method()
-    {
-        ChainCommand c1 = mockChainCommand();
-        ChainCommand c2 = mockChainCommand();
-
-        expect(c1.workDouble(1.2d)).andReturn(0d);
-
-        expect(c2.workDouble(1.2d)).andReturn(3.14d);
-
-        replay();
-
-        ChainCommand chain = build(ChainCommand.class, c1, c2);
-
-        assertEquals(chain.workDouble(1.2d), 3.14d);
-
-        verify();
-    }
-
-    private ChainCommand mockChainCommand()
-    {
-        return newMock(ChainCommand.class);
-    }
-
-    @Test
-    public void fabricated_classes_are_reused()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        Runnable chain1 = build(Runnable.class, r1);
-        Runnable chain2 = build(Runnable.class, r2);
-
-        Assert.assertSame(chain1.getClass(), chain2.getClass());
-
-        // Now make sure that the two instances are independent.
-
-        r1.run();
-
-        replay();
-
-        chain1.run();
-
-        verify();
-
-        r2.run();
-
-        replay();
-
-        chain2.run();
-
-        verify();
-    }
-
-    private <T> T build(Class<T> commandInterface, T... commands)
-    {
-        List<T> list = Arrays.asList(commands);
-
-        return builder.build(commandInterface, list);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ChainCommand.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ChainCommand.java
deleted file mode 100644
index 2cada46..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ChainCommand.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used with {@link org.apache.tapestry5.ioc.internal.services.ChainBuilderImplTest}.
- */
-public interface ChainCommand
-{
-    int workInt(int input);
-
-    boolean workBoolean(boolean input);
-
-    double workDouble(double input);
-
-    String workString(String input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassFabImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassFabImplTest.java
deleted file mode 100644
index 586c844..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassFabImplTest.java
+++ /dev/null
@@ -1,590 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import static java.lang.annotation.ElementType.PARAMETER;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-import static java.util.Arrays.asList;
-
-import java.io.Serializable;
-import java.lang.annotation.Annotation;
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-import java.util.Arrays;
-import java.util.List;
-import java.util.Map;
-import java.util.zip.DataFormatException;
-
-import javassist.CtClass;
-
-import org.apache.tapestry5.ioc.BaseLocatable;
-import org.apache.tapestry5.ioc.annotations.ServiceId;
-import org.apache.tapestry5.ioc.internal.services.LoggingDecoratorImplTest.ToStringService;
-import org.apache.tapestry5.ioc.internal.services.TestAnnotation.Color;
-import org.apache.tapestry5.ioc.internal.services.TestAnnotation.TestAnnotation2;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.slf4j.LoggerFactory;
-import org.testng.annotations.Test;
-
-public class ClassFabImplTest extends IOCTestCase
-{
-    private final CtClassSource source;
-
-    private final PropertyAccess access = new PropertyAccessImpl();
-
-    public interface SampleService
-    {
-        int primitiveMethod(int primitiveValue);
-
-        void voidMethod(String input);
-
-        String objectMethod(String input);
-    }
-
-    public interface SampleToStringService
-    {
-        String toString();
-    }
-    
-    public interface AnnotatedService
-    {
-        void doWork(final String value, final String anotherValue);
-    }
-    
-    @ServiceId(value = "myService")
-    @TestAnnotation(annotationValue={@TestAnnotation2(colors={Color.RED, Color.GREEN})},
-            booleanValue = true, 
-            charValue = 'I', 
-            byteValue = 97, 
-            classValue = AnnotatedServiceImpl.class, 
-            doubleValue = 3.14, 
-            enumValue = Color.RED, 
-            floatValue = 2.718F, 
-            intValue = 123, 
-            longValue = 456L, 
-            shortValue = 3, 
-            stringValue = "foo")
-    public class AnnotatedServiceImpl implements AnnotatedService
-    {
-
-        @TestAnnotation(annotationValue=@TestAnnotation2(colors={Color.BLUE, Color.GREEN}),
-                arrayValue={"barney"},
-                booleanValue = false, 
-                charValue = 'D', 
-                byteValue = 56, 
-                classValue = String.class, 
-                doubleValue = 3.14, 
-                enumValue = Color.BLUE, 
-                floatValue = 2.718F, 
-                intValue = 456, 
-                longValue = 789L, 
-                shortValue = 4, 
-                stringValue = "bar")
-        public void doWork(
-        		@TestMethodParameterAnnotation("baz") @TestMethodParameterAnnotation2("foo") final String value, 
-        		@TestMethodParameterAnnotation("barney") final String anotherValue)
-        {
-
-        }
-    }
-    
-    @Target(PARAMETER )
-    @Retention(RUNTIME)
-    @Documented
-    public @interface TestMethodParameterAnnotation
-    {
-        String value();
-    }
-    
-    @Target(PARAMETER )
-    @Retention(RUNTIME)
-    @Documented
-    public @interface TestMethodParameterAnnotation2
-    {
-        String value();
-    }
-
-    public ClassFabImplTest()
-    {
-        ClassLoader threadLoader = Thread.currentThread().getContextClassLoader();
-
-        ClassFactoryClassPool pool = new ClassFactoryClassPool(threadLoader);
-
-        pool.addClassLoaderIfNeeded(threadLoader);
-
-        source = new CtClassSourceImpl(pool, threadLoader);
-    }
-
-    private ClassFab newClassFab(String className, Class superClass)
-    {
-        CtClass ctClass = source.newClass(className, superClass);
-
-        return new ClassFabImpl(source, ctClass, LoggerFactory.getLogger("ClassFab"));
-    }
-
-    @Test
-    public void create_simple_bean() throws Exception
-    {
-        ClassFab cf = newClassFab("TargetBean", Object.class);
-
-        cf.addField("_stringValue", String.class);
-
-        MethodSignature setStringValue = new MethodSignature(void.class, "setStringValue", new Class[] { String.class },
-                                                             null);
-
-        cf.addMethod(Modifier.PUBLIC, setStringValue, "_stringValue = $1;");
-
-        MethodSignature getStringValue = new MethodSignature(String.class, "getStringValue", null, null);
-
-        cf.addMethod(Modifier.PUBLIC, getStringValue, "return _stringValue;");
-
-        Class targetClass = cf.createClass();
-
-        Object targetBean = targetClass.newInstance();
-
-        access.set(targetBean, "stringValue", "Fred");
-
-        // May keep a test-time dependency on HiveMind, just for PropertyUtils.
-
-        String actual = (String) access.get(targetBean, "stringValue");
-
-        assertEquals(actual, "Fred");
-    }
-
-    @Test
-    public void add_to_string() throws Exception
-    {
-        ClassFab cf = newClassFab("ToString", Object.class);
-
-        cf.addToString("ToString Description");
-
-        Class clazz = cf.createClass();
-
-        Object instance = clazz.newInstance();
-
-        assertEquals(instance.toString(), "ToString Description");
-    }
-
-    @Test
-    public void proxy_methods_to_delegate() throws Exception
-    {
-        ClassFab cf = newClassFab("Delegator", Object.class);
-
-        cf.addField("_delegate", SampleService.class);
-        cf.addConstructor(new Class[] { SampleService.class }, null, "_delegate = $1;");
-
-        cf.proxyMethodsToDelegate(SampleService.class, "_delegate", "<Delegator>");
-
-        SampleService delegate = newMock(SampleService.class);
-
-        Class clazz = cf.createClass();
-
-        SampleService proxy = (SampleService) clazz.getConstructors()[0].newInstance(delegate);
-
-        expect(delegate.primitiveMethod(5)).andReturn(10);
-
-        delegate.voidMethod("fred");
-
-        expect(delegate.objectMethod("barney")).andReturn("rubble");
-
-        replay();
-
-        assertEquals(proxy.primitiveMethod(5), 10);
-
-        proxy.voidMethod("fred");
-
-        assertEquals(proxy.objectMethod("barney"), "rubble");
-        assertEquals(proxy.toString(), "<Delegator>");
-
-        verify();
-    }
-
-    @Test
-    public void proxy_methods_to_delegate_with_to_string() throws Exception
-    {
-        ClassFab cf = newClassFab("ToStringDelegator", Object.class);
-
-        cf.addField("_delegate", ToStringService.class);
-        cf.addConstructor(new Class[] { ToStringService.class }, null, "_delegate = $1;");
-
-        cf.proxyMethodsToDelegate(ToStringService.class, "_delegate", "<ToStringDelegator>");
-
-        ToStringService delegate = new ToStringService()
-        {
-            @Override
-            public String toString()
-            {
-                return "ACTUAL TO-STRING";
-            }
-        };
-
-        Class clazz = cf.createClass();
-
-        ToStringService proxy = (ToStringService) clazz.getConstructors()[0].newInstance(delegate);
-
-        assertEquals(proxy.toString(), "ACTUAL TO-STRING");
-    }
-
-    @Test
-    public void add_constructor() throws Exception
-    {
-        ClassFab cf = newClassFab("ConstructableBean", Object.class);
-
-        cf.addField("_stringValue", String.class);
-        cf.addConstructor(new Class[] { String.class }, null, "{ _stringValue = $1; }");
-
-        MethodSignature getStringValue = new MethodSignature(String.class, "getStringValue", null, null);
-
-        cf.addMethod(Modifier.PUBLIC, getStringValue, "return _stringValue;");
-
-        Class targetClass = cf.createClass();
-
-        try
-        {
-            targetClass.newInstance();
-            unreachable();
-        }
-        catch (InstantiationException ex)
-        {
-        }
-
-        Constructor c = targetClass.getConstructors()[0];
-
-        Object targetBean = c.newInstance(new Object[] { "Buffy" });
-
-        String actual = (String) access.get(targetBean, "stringValue");
-
-        assertEquals("Buffy", actual);
-    }
-
-    @Test
-    public void add_constructor_from_base_class() throws Exception
-    {
-        ClassFab cf = newClassFab("MyIntHolder", AbstractIntWrapper.class);
-
-        cf.addField("_intValue", int.class);
-        cf.addConstructor(new Class[] { int.class }, null, "{ _intValue = $1; }");
-
-        cf.addMethod(Modifier.PUBLIC, new MethodSignature(int.class, "getIntValue", null, null), "return _intValue;");
-
-        Class targetClass = cf.createClass();
-        Constructor c = targetClass.getConstructors()[0];
-
-        AbstractIntWrapper targetBean = (AbstractIntWrapper) c.newInstance(new Object[] { new Integer(137) });
-
-        assertEquals(targetBean.getIntValue(), 137);
-    }
-
-    @Test
-    public void invalid_super_class() throws Exception
-    {
-        ClassFab cf = newClassFab("InvalidSuperClass", List.class);
-
-        try
-        {
-            cf.createClass();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertExceptionSubstring(ex, "Unable to create class InvalidSuperClass");
-        }
-    }
-
-    private void assertExceptionSubstring(Throwable t, String partialMessage)
-    {
-        assertTrue(t.getMessage().contains(partialMessage));
-    }
-
-    @Test
-    public void add_interface() throws Exception
-    {
-        ClassFab cf = newClassFab("SimpleService", Object.class);
-
-        cf.addInterface(SimpleService.class);
-
-        cf.addMethod(Modifier.PUBLIC, new MethodSignature(int.class, "add", new Class[] { int.class, int.class }, null),
-                     "return $1 + $2;");
-
-        Class targetClass = cf.createClass();
-
-        SimpleService s = (SimpleService) targetClass.newInstance();
-
-        assertEquals(207, s.add(99, 108));
-    }
-
-    @Test
-    public void attempt_to_subclass_from_final_class() throws Exception
-    {
-        ClassFab cf = newClassFab("StringSubclass", String.class);
-
-        try
-        {
-            cf.createClass();
-        }
-        catch (RuntimeException ex)
-        {
-            assertExceptionRegexp(ex, "Unable to create class StringSubclass\\: .*");
-        }
-    }
-
-    private void assertExceptionRegexp(Throwable ex, String pattern)
-    {
-        assertTrue(ex.getMessage().matches(pattern));
-    }
-
-    @Test
-    public void create_class_within_non_default_package() throws Exception
-    {
-        ClassFab cf = newClassFab("org.apache.hivemind.InPackage", Object.class);
-
-        Class c = cf.createClass();
-
-        Object o = c.newInstance();
-
-        assertEquals("org.apache.hivemind.InPackage", o.getClass().getName());
-    }
-
-    @Test
-    public void invalid_method_body() throws Exception
-    {
-        ClassFab cf = newClassFab("BadMethodBody", Object.class);
-
-        cf.addInterface(Runnable.class);
-
-        try
-        {
-            cf.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "run", null, null), "fail;");
-        }
-        catch (RuntimeException ex)
-        {
-            assertExceptionSubstring(ex, "Unable to add method void run() to class BadMethodBody:");
-        }
-    }
-
-    @Test
-    public void add_duplicate_method_signature() throws Exception
-    {
-        ClassFab cf = newClassFab("DupeMethodAdd", Object.class);
-
-        cf.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "foo", null, null), "{}");
-
-        try
-        {
-            cf.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "foo", null, null), "{}");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals("Attempt to redefine method void foo() of class DupeMethodAdd.", ex
-                    .getMessage());
-        }
-    }
-
-    @Test
-    public void invalid_constructor_body() throws Exception
-    {
-        ClassFab cf = newClassFab("BadConstructor", Object.class);
-
-        try
-        {
-            cf.addConstructor(null, null, " woops!");
-        }
-        catch (RuntimeException ex)
-        {
-            assertExceptionSubstring(ex, "Unable to add constructor to class BadConstructor");
-        }
-
-    }
-
-    @Test
-    public void invalid_field() throws Exception
-    {
-        ClassFab cf = newClassFab("InvalidField", Object.class);
-
-        // You'd think some of these would fail, but the ultimate failure
-        // occurs when we create the class.
-
-        cf.addField("a%b", String.class);
-        cf.addField("", int.class);
-
-        // Aha! Adding a duplicate fails!
-
-        cf.addField("buffy", int.class);
-
-        try
-        {
-            cf.addField("buffy", String.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Unable to add field buffy to class InvalidField: duplicate field: buffy");
-        }
-
-    }
-
-    @Test
-    public void to_string() throws Exception
-    {
-        ClassFab cf = newClassFab("FredRunnable", BaseLocatable.class);
-
-        cf.addInterface(Runnable.class);
-        cf.addInterface(Serializable.class);
-
-        cf.addField("_map", Map.class);
-
-        cf.addConstructor(new Class[] { Map.class, Runnable.class },
-                          new Class[] { IllegalArgumentException.class, DataFormatException.class }, "{ _map = $1; }");
-
-        MethodSignature sig = new MethodSignature(Map.class, "doTheNasty", new Class[] { int.class, String.class },
-                                                  new Class[] { InstantiationException.class,
-                                                          IllegalAccessException.class });
-
-        cf.addMethod(Modifier.PUBLIC + Modifier.FINAL + Modifier.SYNCHRONIZED, sig, "{ return _map; }");
-
-        String toString = cf.toString();
-
-        assertContains(toString,
-                       "public class FredRunnable extends " + BaseLocatable.class.getName() + "\n" + "  implements java.lang.Runnable, java.io.Serializable");
-
-        assertContains(toString, "private java.util.Map _map;");
-
-        assertContains(toString,
-                       "public FredRunnable(java.util.Map $1, java.lang.Runnable $2)\n" + "  throws java.lang.IllegalArgumentException, java.util.zip.DataFormatException\n" + "{ _map = $1; }");
-
-        assertContains(toString,
-                       "public final synchronized java.util.Map doTheNasty(int $1, java.lang.String $2)\n" + "  throws java.lang.InstantiationException, java.lang.IllegalAccessException\n" + "{ return _map; }");
-
-    }
-
-    @Test
-    public void add_noop_method() throws Exception
-    {
-        ClassFab cf = newClassFab("NoOp", Object.class);
-        cf.addInterface(Runnable.class);
-
-        cf.addNoOpMethod(new MethodSignature(void.class, "run", null, null));
-        cf.addNoOpMethod(new MethodSignature(int.class, "getInt", null, null));
-        cf.addNoOpMethod(new MethodSignature(double.class, "getDouble", null, null));
-
-        Class clazz = cf.createClass();
-
-        Runnable instance = (Runnable) clazz.newInstance();
-
-        instance.run();
-
-        assertEquals(access.get(instance, "int"), 0);
-        assertEquals(access.get(instance, "double"), 0.0d);
-    }
-    
-
-    @Test
-    public void add_annotation() throws Exception
-    {
-        final ClassFab cf = newClassFab("AnnotatedClass", Object.class);
-
-        cf.addField("_delegate", AnnotatedService.class);
-        cf.addConstructor(new Class[] { AnnotatedService.class }, null, "_delegate = $1;");
-
-        cf.proxyMethodsToDelegate(AnnotatedService.class, "_delegate", "Bla bla");
-        cf.copyClassAnnotationsFromDelegate(AnnotatedServiceImpl.class);
-        cf.copyMethodAnnotationsFromDelegate(AnnotatedService.class, AnnotatedServiceImpl.class);
-
-        final Class targetClass = cf.createClass();
-
-        final TestAnnotation a = (TestAnnotation) targetClass.getAnnotation(TestAnnotation.class);
-
-        assertNotNull(a);
-        
-        TestAnnotation2 a2 = a.annotationValue()[0];
-
-        assertNotNull(a2);
-        assertEquals(asList(a2.colors()), asList(Color.RED, Color.GREEN));
-        
-        assertEquals(asList(a.arrayValue()), asList("foo", "bar"));
-        assertTrue(a.booleanValue());
-        assertEquals(a.byteValue(), 97);
-        assertEquals(a.charValue(), 'I');
-        assertEquals(a.classValue(), AnnotatedServiceImpl.class);
-        assertEquals(a.doubleValue(), 3.14);
-        assertEquals(a.enumValue(), Color.RED);
-        assertEquals(a.floatValue(), 2.718F);
-        assertEquals(a.intValue(), 123);
-        assertEquals(a.longValue(), 456L);
-        assertEquals(a.shortValue(), 3);
-        assertEquals(a.stringValue(), "foo");
-
-        assertNotNull(targetClass.getAnnotation(ServiceId.class));
-        
-        Method method = targetClass.getMethod("doWork", String.class, String.class);
-        TestAnnotation methodAnnotation = method.getAnnotation(TestAnnotation.class);
-        
-        assertNotNull(methodAnnotation);
-        
-        a2 = methodAnnotation.annotationValue()[0];
-        
-        assertNotNull(a2);
-        assertEquals(asList(a2.colors()), asList(Color.BLUE, Color.GREEN));
-        assertEquals(Arrays.asList(methodAnnotation.arrayValue()), Arrays.asList("barney"));
-        assertFalse(methodAnnotation.booleanValue());
-        assertEquals(methodAnnotation.byteValue(), 56);
-        assertEquals(methodAnnotation.charValue(), 'D');
-        assertEquals(methodAnnotation.classValue(), String.class);
-        assertEquals(methodAnnotation.doubleValue(), 3.14);
-        assertEquals(methodAnnotation.enumValue(), Color.BLUE);
-        assertEquals(methodAnnotation.floatValue(), 2.718F);
-        assertEquals(methodAnnotation.intValue(), 456);
-        assertEquals(methodAnnotation.longValue(), 789L);
-        assertEquals(methodAnnotation.shortValue(), 4);
-        assertEquals(methodAnnotation.stringValue(), "bar");
-        
-        Annotation[][] parameterAnnotations = method.getParameterAnnotations();
-        
-        assertEquals(parameterAnnotations.length, 2);
-        
-        Annotation[] firstParameterAnnotations = parameterAnnotations[0];
-        
-        assertEquals(firstParameterAnnotations.length, 2);
-        
-        TestMethodParameterAnnotation first = (TestMethodParameterAnnotation) firstParameterAnnotations[0];
-        
-        assertEquals(first.value(), "baz");
-        
-        TestMethodParameterAnnotation2 second = (TestMethodParameterAnnotation2) firstParameterAnnotations[1];
-        
-        assertEquals(second.value(), "foo");
-        
-        Annotation[] secondParameterAnnotation = parameterAnnotations[1];
-        
-        assertEquals(secondParameterAnnotation.length, 1);
-        
-        first = (TestMethodParameterAnnotation) secondParameterAnnotation[0];
-        
-        assertEquals(first.value(), "barney");
-    }  
-
-    private void assertContains(String actual, String expectedSubstring)
-    {
-        assertTrue(actual.contains(expectedSubstring), "Missing substring: " + expectedSubstring);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryImplTest.java
deleted file mode 100644
index 97b9c7d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassFactoryImplTest.java
+++ /dev/null
@@ -1,217 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.lang.reflect.Modifier;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.util.LocationImpl;
-import org.apache.tapestry5.ioc.services.ClassFab;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.ClassFactory;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class ClassFactoryImplTest extends IOCTestCase
-{
-    public static class BaseClass
-    {
-        public void run()
-        {
-        }
-    }
-
-    @Test
-    public void new_class_with_name_and_base_class() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-        String name = ClassFabUtils.generateClassName(Runnable.class);
-
-        ClassFab cf = factory.newClass(name, Object.class);
-        cf.addInterface(Runnable.class);
-
-        addRunMethod(cf);
-
-        Class newClass = cf.createClass();
-
-        Runnable instance = (Runnable) newClass.newInstance();
-
-        instance.run();
-    }
-
-    @Test
-    public void new_class_with_non_object_base_class() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-        String name = ClassFabUtils.generateClassName(Runnable.class);
-
-        ClassFab cf = factory.newClass(name, BaseClass.class);
-        cf.addInterface(Runnable.class);
-
-        Class newClass = cf.createClass();
-
-        Runnable instance = (Runnable) newClass.newInstance();
-
-        instance.run();
-    }
-
-    @Test
-    public void new_class_with_interface() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-
-        ClassFab cf = factory.newClass(Runnable.class);
-
-        addRunMethod(cf);
-
-        Class newClass = cf.createClass();
-
-        Runnable instance = (Runnable) newClass.newInstance();
-
-        instance.run();
-    }
-
-    @Test
-    public void get_method_location() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-
-        Class target = LineNumberBean.class;
-
-        Method m = target.getMethod("fred");
-
-        // 21 is the line containing the close brace
-
-        Location l = factory.getMethodLocation(m);
-        assertEquals(
-                l.toString(),
-                "org.apache.tapestry5.ioc.internal.services.LineNumberBean.fred() (at LineNumberBean.java:25)");
-        assertEquals(l.getLine(), 25);
-
-        m = target.getMethod("betty", String.class, int.class);
-
-        // 25 is the line of the return statement
-
-        assertEquals(
-                factory.getMethodLocation(m).toString(),
-                "org.apache.tapestry5.ioc.internal.services.LineNumberBean.betty(String, int) (at LineNumberBean.java:29)");
-
-        m = target.getDeclaredMethod("wilma", int[].class, Double[][][].class);
-
-        assertEquals(
-                factory.getMethodLocation(m).toString(),
-                "org.apache.tapestry5.ioc.internal.services.LineNumberBean.wilma(int[], Double[][][]) (at LineNumberBean.java:34)");
-    }
-
-    private void addRunMethod(ClassFab cf)
-    {
-        cf.addMethod(Modifier.PUBLIC, new MethodSignature(void.class, "run", null, null), " { } ");
-    }
-
-    @Test
-    public void get_constructor_location() throws Exception
-    {
-        Constructor cc = LineNumberBean.class.getConstructors()[0];
-
-        ClassFactory factory = new ClassFactoryImpl();
-
-        // Eclipse and Sun JDK don't agree on the line number, so we'll accept either.
-
-        assertTrue(factory
-                .getConstructorLocation(cc)
-                .toString()
-                .matches(
-                "org.apache.tapestry5.ioc.internal.services.LineNumberBean\\(String, int\\) \\(at LineNumberBean.java:(19|20)\\)"));
-    }
-
-    /**
-     * Import a class (or two) where the class is from a known and available class loader.
-     */
-    @Test
-    public void import_ordinary_class()
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-
-        assertSame(factory.importClass(Object.class), Object.class);
-        assertSame(factory.importClass(LocationImpl.class), LocationImpl.class);
-    }
-
-    /**
-     * Import a class where the bytecode is not available, to ensure that the super-class (from an available class
-     * loader) is returned.
-     */
-    @Test
-    public void import_proxy_class() throws Exception
-    {
-        ClassFactory alienFactory = new ClassFactoryImpl();
-
-        Class<TargetBean> clazz = TargetBean.class;
-
-        ClassFab cf = alienFactory.newClass(clazz.getName() + "$$Proxy", clazz);
-
-        Class alienClass = cf.createClass();
-
-        ClassFactory factory = new ClassFactoryImpl();
-
-        assertSame(factory.importClass(alienClass), clazz);
-    }
-    
-    
-    @Test
-    public void with_annotations() throws Exception
-    {
-        ClassFactory factory = new ClassFactoryImpl();
-
-        TestService proxy = factory.createProxy(TestService.class, TestServiceImpl.class, new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return new TestServiceImpl();
-            }
-        }, "Proxy<TestService>");
-        
-        Class clazz =  proxy.getClass();
-        
-        SimpleAnnotation annotation = (SimpleAnnotation) clazz.getAnnotation(SimpleAnnotation.class);
-        
-        assertNotNull(annotation);
-        assertEquals(annotation.value(), "TestServiceImpl");
-        
-        Method method = clazz.getMethod("doSomething");
-
-        annotation = method.getAnnotation(SimpleAnnotation.class);
-        assertEquals(annotation.value(), "TestServiceImpl#doSomething");
-    }
-    
-
-    public interface TestService
-    {
-        void doSomething();
-    }
-    
-    @SimpleAnnotation("TestServiceImpl")
-    public class TestServiceImpl implements TestService
-    {
-        @SimpleAnnotation("TestServiceImpl#doSomething")
-        public void doSomething()
-        {
-            
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImplTest.java
deleted file mode 100644
index 1aa0b3c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClassNameLocatorImplTest.java
+++ /dev/null
@@ -1,141 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassNameLocator;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.Collection;
-import java.util.Set;
-
-/**
- * Tricky to test, since the code is literally hunting around inside its own brain. There's a lot of room for unintended
- * consequences here.
- */
-public class ClassNameLocatorImplTest extends Assert
-{
-    private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
-
-    /**
-     * Use various packages in javassist to test this, as those don't change unexpectedly(-ish) and we know they are in
-     * a JAR on the classpath.
-     */
-    @Test
-    public void classes_in_jar_file()
-    {
-        ClassNameLocator locator = new ClassNameLocatorImpl(converter);
-
-        Collection<String> names = locator
-                .locateClassNames("javassist.util");
-
-        assertInList(
-                names,
-                "javassist.util",
-                "HotSwapper",
-                "Trigger");
-        assertNotInList(
-                names,
-                "javassist.util",
-                "Orderer$1");
-    }
-
-    @Test
-    public void classes_in_subpackage_in_jar_file()
-    {
-        ClassNameLocator locator = new ClassNameLocatorImpl(converter);
-
-        Collection<String> names = locator.locateClassNames("javassist.util");
-
-        assertInList(
-                names,
-                "javassist.util",
-                "proxy.ProxyFactory");
-
-    }
-
-    /**
-     * This time, we use a selection of classes from tapestry-ioc, since those will never be packaged inside a JAR at
-     * this time.
-     */
-
-    @Test
-    public void classes_in_local_folders()
-    {
-        ClassNameLocator locator = new ClassNameLocatorImpl(converter);
-
-        Collection<String> names = locator
-                .locateClassNames("org.apache.tapestry5.ioc.services");
-
-        assertInList(names, "org.apache.tapestry5.ioc.services", "SymbolSource", "TapestryIOCModule");
-
-        assertNotInList(names, "org.apache.tapestry5.ioc.services", "TapestryIOCModule$1");
-    }
-
-    @Test
-    public void classes_in_subpackages_in_local_folders()
-    {
-        ClassNameLocator locator = new ClassNameLocatorImpl(converter);
-
-        Collection<String> names = locator.locateClassNames("org.apache.tapestry5");
-
-        assertInList(
-                names,
-                "org.apache.tapestry5",
-                "ioc.Orderable",
-                "ioc.services.ChainBuilder");
-
-        assertNotInList(names, "org.apache.tapestry5.ioc", "services.TapestryIOCModule$1");
-    }
-
-    void assertInList(Collection<String> names, String packageName, String... classNames)
-    {
-        Set<String> classNameSet = CollectionFactory.newSet(names);
-
-        for (String className : classNames)
-        {
-            String fullName = packageName + "." + className;
-
-            if (classNameSet.contains(fullName))
-                continue;
-
-            String message = String.format("%s not found in %s.", fullName, InternalUtils
-                    .joinSorted(names));
-
-            throw new AssertionError(message);
-        }
-    }
-
-    void assertNotInList(Collection<String> names, String packageName, String... classNames)
-    {
-        Set<String> classNameSet = CollectionFactory.newSet(names);
-
-        for (String className : classNames)
-        {
-            String fullName = packageName + "." + className;
-
-            if (!classNameSet.contains(fullName))
-                continue;
-
-            String message = String.format("%s found in %s.", fullName, InternalUtils
-                    .joinSorted(names));
-
-            throw new AssertionError(message);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClasspathResourceSymbolProviderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClasspathResourceSymbolProviderTest.java
deleted file mode 100644
index 4896d38..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ClasspathResourceSymbolProviderTest.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class ClasspathResourceSymbolProviderTest extends Assert
-{
-    private static final String PATH = "org/apache/tapestry5/ioc/internal/services/foo.properties";
-
-    @Test
-    public void access()
-    {
-        ClasspathResourceSymbolProvider provider = new ClasspathResourceSymbolProvider(PATH);
-
-        /* test general access */
-        assertEquals(provider.valueForSymbol("homer"), "simpson");
-        assertEquals(provider.valueForSymbol("monty"), "burns");
-
-        /* check for case-insensitivity */
-        assertEquals(provider.valueForSymbol("HOMER"), "simpson");
-
-        /* non-existent keys should return null */
-        assertNull(provider.valueForSymbol("marge"));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/DefaultImplementationBuilderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/DefaultImplementationBuilderImplTest.java
deleted file mode 100644
index 6ed7ba6..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/DefaultImplementationBuilderImplTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.DefaultImplementationBuilder;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-public class DefaultImplementationBuilderImplTest extends IOCInternalTestCase
-{
-    private DefaultImplementationBuilder builder;
-
-    @BeforeClass
-    public void setup_builder()
-    {
-        builder = getService("DefaultImplementationBuilder", DefaultImplementationBuilder.class);
-    }
-
-    @AfterClass
-    public void cleanup_builder()
-    {
-        builder = null;
-    }
-
-    @Test
-    public void simple_interface()
-    {
-        Runnable r = builder.createDefaultImplementation(Runnable.class);
-
-        r.run();
-
-        assertEquals(r.toString(), "<NoOp java.lang.Runnable>");
-    }
-
-    public interface ToString
-    {
-        String toString();
-    }
-
-    @Test
-    public void interface_has_toString()
-    {
-        ToString ts = builder.createDefaultImplementation(ToString.class);
-
-        assertNull(ts.toString());
-    }
-
-    @Test
-    public void instances_are_cached()
-    {
-        Runnable r1 = null;
-        Runnable r2 = null;
-
-        // With tests in parallel, there's a harmless race condition that can cause r1 != r2
-        // for one pass, so we give it a second chance to prove itself.
-
-        for (int i = 0; i < 2; i++)
-        {
-            r1 = builder.createDefaultImplementation(Runnable.class);
-            r2 = builder.createDefaultImplementation(Runnable.class);
-
-            if (r1 == r2) break;
-        }
-
-        assertSame(r2, r1);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java
deleted file mode 100644
index 9c60d74..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionAnalyzerImplTest.java
+++ /dev/null
@@ -1,215 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.apache.tapestry5.ioc.services.ExceptionAnalysis;
-import org.apache.tapestry5.ioc.services.ExceptionAnalyzer;
-import org.apache.tapestry5.ioc.services.ExceptionInfo;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-
-public class ExceptionAnalyzerImplTest extends IOCInternalTestCase
-{
-    private ExceptionAnalyzer analyzer;
-
-    @BeforeClass
-    public void setup_analyzer()
-    {
-        analyzer = getService("ExceptionAnalyzer", ExceptionAnalyzer.class);
-    }
-
-    @AfterClass
-    public void cleanup_analyzer()
-    {
-        analyzer = null;
-    }
-
-    @Test
-    public void basic_exception()
-    {
-        String message = "Hey! We've Got Not Tomatoes!";
-
-        Throwable t = new RuntimeException(message);
-
-        ExceptionAnalysis ea = analyzer.analyze(t);
-
-        assertEquals(ea.getExceptionInfos().size(), 1);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getClassName(), RuntimeException.class.getName());
-        assertEquals(ei.getMessage(), message);
-
-        assertTrue(ei.getPropertyNames().isEmpty());
-        assertFalse(ei.getStackTrace().isEmpty());
-    }
-
-    @Test
-    public void exception_properties()
-    {
-        Location l = mockLocation();
-
-        replay();
-
-        Throwable t = new TapestryException("Message", l, null);
-
-        ExceptionAnalysis ea = analyzer.analyze(t);
-
-        assertEquals(ea.getExceptionInfos().size(), 1);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getPropertyNames(), Arrays.asList("location"));
-
-        assertEquals(ei.getProperty("location"), l);
-
-        verify();
-    }
-
-    @Test
-    public void nested_exceptions()
-    {
-        Throwable inner = new RuntimeException("Inner");
-        Throwable outer = new RuntimeException("Outer", inner);
-
-        ExceptionAnalysis ea = analyzer.analyze(outer);
-
-        assertEquals(ea.getExceptionInfos().size(), 2);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getMessage(), "Outer");
-        assertTrue(ei.getStackTrace().isEmpty());
-
-        ei = ea.getExceptionInfos().get(1);
-
-        assertEquals(ei.getMessage(), "Inner");
-        assertFalse(ei.getStackTrace().isEmpty());
-    }
-
-    @Test
-    public void middle_exception_removed_with_no_value()
-    {
-        Throwable inner = new RuntimeException("Inner");
-        Throwable middle = new RuntimeException("Middle", inner);
-        Throwable outer = new RuntimeException("Outer: Middle", middle);
-
-        ExceptionAnalysis ea = analyzer.analyze(outer);
-
-        assertEquals(ea.getExceptionInfos().size(), 2);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getMessage(), "Outer: Middle");
-        assertTrue(ei.getStackTrace().isEmpty());
-
-        ei = ea.getExceptionInfos().get(1);
-
-        assertEquals(ei.getMessage(), "Inner");
-        assertFalse(ei.getStackTrace().isEmpty());
-    }
-
-    @Test
-    public void middle_exception_retained_due_to_extra_property()
-    {
-        Location l = mockLocation();
-
-        replay();
-
-        Throwable inner = new RuntimeException("Inner");
-        Throwable middle = new TapestryException("Middle", l, inner);
-        Throwable outer = new RuntimeException("Outer: Middle", middle);
-
-        ExceptionAnalysis ea = analyzer.analyze(outer);
-
-        assertEquals(ea.getExceptionInfos().size(), 3);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getMessage(), "Outer: Middle");
-        assertTrue(ei.getStackTrace().isEmpty());
-
-        ei = ea.getExceptionInfos().get(1);
-
-        assertEquals(ei.getMessage(), "Middle");
-        assertTrue(ei.getStackTrace().isEmpty());
-
-        ei = ea.getExceptionInfos().get(2);
-
-        assertEquals(ei.getMessage(), "Inner");
-        assertFalse(ei.getStackTrace().isEmpty());
-
-        verify();
-    }
-
-    /**
-     * TAPESTRY-2422
-     */
-    @Test
-    public void exception_with_write_only_property()
-    {
-        WriteOnlyPropertyException ex = new WriteOnlyPropertyException();
-
-        ex.setFaultCode(99);
-
-        ExceptionAnalysis ea = analyzer.analyze(ex);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getPropertyNames().size(), 1);
-
-        assertEquals(ei.getProperty("code"), "0099");
-    }
-
-    @SuppressWarnings("all")
-    public static class SelfCausedException extends RuntimeException
-    {
-        public SelfCausedException(String message)
-        {
-            super(message);
-        }
-
-        public Throwable getCause()
-        {
-            return this;
-        }
-    }
-
-    @Test
-    public void exception_that_is_its_own_cause()
-    {
-        String message = "Hey! We've Got Not Tomatoes!";
-
-        Throwable t = new SelfCausedException(message);
-
-        ExceptionAnalysis ea = analyzer.analyze(t);
-
-        assertEquals(ea.getExceptionInfos().size(), 1);
-
-        ExceptionInfo ei = ea.getExceptionInfos().get(0);
-
-        assertEquals(ei.getClassName(), SelfCausedException.class.getName());
-        assertEquals(ei.getMessage(), message);
-
-        assertTrue(ei.getPropertyNames().isEmpty());
-        assertFalse(ei.getStackTrace().isEmpty());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionTrackerImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionTrackerImplTest.java
deleted file mode 100644
index 91e8df3..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExceptionTrackerImplTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.services.ExceptionTracker;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class ExceptionTrackerImplTest extends Assert
-{
-    @Test
-    public void check_exception_tracking()
-    {
-        Throwable t1 = new RuntimeException();
-        Throwable t2 = new RuntimeException();
-
-        ExceptionTracker et = new ExceptionTrackerImpl();
-
-        for (int i = 0; i < 3; i++)
-        {
-            assertEquals(et.exceptionLogged(t1), i != 0);
-            assertEquals(et.exceptionLogged(t2), i != 0);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExtraFilterMethod.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExtraFilterMethod.java
deleted file mode 100644
index 4b43650..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExtraFilterMethod.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface ExtraFilterMethod
-{
-    public void extraFilterMethod();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExtraServiceMethod.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExtraServiceMethod.java
deleted file mode 100644
index daf2bbc..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ExtraServiceMethod.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface ExtraServiceMethod
-{
-    public void extraServiceMethod();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/FilterMethodAnalyzerTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/FilterMethodAnalyzerTest.java
deleted file mode 100644
index b1f2354..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/FilterMethodAnalyzerTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.MethodSignature;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-public class FilterMethodAnalyzerTest extends IOCInternalTestCase
-{
-    private MethodSignature find(Class target, String name)
-    {
-        Method method = findMethod(target, name);
-
-        return new MethodSignature(method);
-    }
-
-    private void assertPosition(String methodName, int expected)
-    {
-        FilterMethodAnalyzer a = new FilterMethodAnalyzer(SampleService.class);
-
-        MethodSignature ms = find(SampleService.class, methodName);
-        MethodSignature fms = find(SampleFilter.class, methodName);
-
-        assertEquals(expected, a.findServiceInterfacePosition(ms, fms));
-    }
-
-    private void assertMismatch(String methodName)
-    {
-        assertPosition(methodName, -1);
-    }
-
-    @Test
-    public void simple_match()
-    {
-        assertPosition("simpleMatch", 0);
-    }
-
-    @Test
-    public void mismatched_parameter_count()
-    {
-        assertMismatch("mismatchParameterCount");
-    }
-
-    @Test
-    public void mismatch_on_method_return_type()
-    {
-        assertMismatch("mismatchReturnType");
-    }
-
-    @Test
-    public void service_interface_not_in_filter_method_signature()
-    {
-        assertMismatch("missingServiceInterface");
-    }
-
-    @Test
-    public void match_with_multiple_parameters()
-    {
-        assertPosition("complexMatch", 2);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/GrandparentInterface.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/GrandparentInterface.java
deleted file mode 100644
index 0a30fd8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/GrandparentInterface.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface GrandparentInterface
-{
-    String getGrandParentProperty();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/JustInTimeObjectCreatorTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/JustInTimeObjectCreatorTest.java
deleted file mode 100644
index 5ee86a2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/JustInTimeObjectCreatorTest.java
+++ /dev/null
@@ -1,83 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.ServiceActivityTracker;
-import org.apache.tapestry5.ioc.services.Status;
-import org.testng.annotations.Test;
-
-public class JustInTimeObjectCreatorTest extends IOCInternalTestCase
-{
-    private static final String SERVICE_ID = "FooBar";
-
-    @Test
-    public void create_after_shutdown()
-    {
-        ObjectCreator creator = mockObjectCreator();
-
-        replay();
-
-        JustInTimeObjectCreator j = new JustInTimeObjectCreator(null, creator, SERVICE_ID);
-
-        j.registryDidShutdown();
-
-        try
-        {
-            j.createObject();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Proxy for service FooBar is no longer active because the IOC Registry has been shut down.");
-        }
-    }
-
-    @Test
-    public void eager_load()
-    {
-        ObjectCreator creator = mockObjectCreator();
-        Object service = new Object();
-        ServiceActivityTracker tracker = mockServiceActivityTracker();
-
-        replay();
-
-        JustInTimeObjectCreator j = new JustInTimeObjectCreator(tracker, creator, SERVICE_ID);
-
-        verify();
-
-        // First access: use the creator to get the actual object.
-
-        train_createObject(creator, service);
-
-        tracker.setStatus(SERVICE_ID, Status.REAL);
-
-        replay();
-
-        j.eagerLoadService();
-
-        verify();
-
-        // This part tests the caching part.
-
-        replay();
-
-        assertSame(j.createObject(), service);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/KindOf.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/KindOf.java
deleted file mode 100644
index 6261f21..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/KindOf.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Converts an object to a string describing the kind of the object.
- */
-public interface KindOf
-{
-    String kindOf(Object value);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LazyAdvisorImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LazyAdvisorImplTest.java
deleted file mode 100644
index de4e829..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LazyAdvisorImplTest.java
+++ /dev/null
@@ -1,180 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Greeter;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.AspectInterceptorBuilder;
-import org.apache.tapestry5.ioc.services.LazyAdvisor;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-/**
- * This tests {@link org.apache.tapestry5.ioc.internal.services.LazyAdvisorImpl}, but also tests a lot of {@link
- * org.apache.tapestry5.ioc.internal.services.ThunkCreatorImpl} (which was refactored out of LazyAdvisorImpl).
- */
-public class LazyAdvisorImplTest extends IOCInternalTestCase
-{
-    private AspectDecorator aspectDecorator;
-
-    private LazyAdvisor lazyAdvisor;
-
-    @BeforeClass
-    public void setup()
-    {
-        aspectDecorator = getService(AspectDecorator.class);
-        lazyAdvisor = getService(LazyAdvisor.class);
-    }
-
-    @Test
-    public void void_methods_are_not_lazy()
-    {
-        LazyService service = mockLazyService();
-
-        service.notLazyBecauseVoid();
-
-        replay();
-
-        LazyService advised = advise(service);
-
-        advised.notLazyBecauseVoid();
-
-        verify();
-    }
-
-    private LazyService mockLazyService()
-    {
-        return newMock(LazyService.class);
-    }
-
-    @Test
-    public void non_interface_return_value()
-    {
-        LazyService service = mockLazyService();
-
-        expect(service.notLazyBecauseOfReturnValue()).andReturn("working hard!");
-
-        replay();
-
-        LazyService advised = advise(service);
-
-        assertEquals(advised.notLazyBecauseOfReturnValue(), "working hard!");
-
-        verify();
-    }
-
-    @Test
-    public void lazy_method()
-    {
-        LazyService service = mockLazyService();
-        Greeter greeter = new Greeter()
-        {
-            public String getGreeting()
-            {
-                return "Hello!";
-            }
-        };
-
-
-        replay();
-
-        LazyService advised = advise(service);
-
-        Greeter thunk = advised.createGreeter();
-
-        assertEquals(thunk.toString(),
-                     "<org.apache.tapestry5.ioc.Greeter Thunk for org.apache.tapestry5.ioc.internal.services.LazyService.createGreeter()>");
-
-        verify();
-
-        expect(service.createGreeter()).andReturn(greeter);
-
-        // Prove that the lazy method is only invoked once.
-
-        replay();
-
-        for (int i = 0; i < 2; i++)
-            assertEquals(thunk.getGreeting(), "Hello!");
-
-        verify();
-    }
-
-    @Test
-    public void checked_exception_prevents_lazy() throws Exception
-    {
-        LazyService service = mockLazyService();
-        Greeter greeter = newMock(Greeter.class);
-
-        expect(service.notLazyCreateGreeter()).andReturn(greeter);
-
-        replay();
-
-        LazyService advised = advise(service);
-
-        Greeter actual = advised.notLazyCreateGreeter();
-
-        assertSame(actual, greeter);
-
-        verify();
-    }
-
-    @Test
-    public void notlazy_annotation()
-    {
-        LazyService service = mockLazyService();
-        Greeter greeter = newMock(Greeter.class);
-
-        expect(service.notLazyFromAnnotationGreeter()).andReturn(greeter);
-
-        replay();
-
-        LazyService advised = advise(service);
-
-        Greeter actual = advised.notLazyFromAnnotationGreeter();
-
-        assertSame(actual, greeter);
-
-        verify();
-
-    }
-
-    @Test
-    public void thunk_class_is_cached()
-    {
-        LazyService service = mockLazyService();
-
-        replay();
-
-        LazyService advised = advise(service);
-
-        Greeter g1 = advised.createGreeter();
-        Greeter g2 = advised.safeCreateCreator();
-
-        assertSame(g2.getClass(), g1.getClass());
-
-        verify();
-    }
-
-    private LazyService advise(LazyService base)
-    {
-        AspectInterceptorBuilder<LazyService> builder = aspectDecorator.createBuilder(LazyService.class, base,
-                                                                                      "<LazyService Proxy>");
-
-        lazyAdvisor.addLazyMethodInvocationAdvice(builder);
-
-        return builder.build();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LazyService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LazyService.java
deleted file mode 100644
index 2dd62e7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LazyService.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Greeter;
-import org.apache.tapestry5.ioc.annotations.NotLazy;
-
-import java.sql.SQLException;
-
-/**
- * Used to test {@link org.apache.tapestry5.ioc.services.LazyAdvisor}, as it has a mix of lazy and not lazy methods.
- */
-public interface LazyService
-{
-    void notLazyBecauseVoid();
-
-    String notLazyBecauseOfReturnValue();
-
-    /**
-     * The only lazy method.
-     */
-    Greeter createGreeter() throws RuntimeException;
-
-    Greeter safeCreateCreator();
-
-    @NotLazy
-    Greeter notLazyFromAnnotationGreeter();
-
-    Greeter notLazyCreateGreeter() throws SQLException;
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LineNumberBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LineNumberBean.java
deleted file mode 100644
index d36a434..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LineNumberBean.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public class LineNumberBean
-{
-    public LineNumberBean(String foo, int bar)
-    {
-    }
-
-    public void fred()
-    {
-    }
-
-    public int betty(String foo, int bar)
-    {
-        return bar;
-    }
-
-    protected String wilma(int[] first, Double[][][] threed)
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LoggingDecoratorImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LoggingDecoratorImplTest.java
deleted file mode 100644
index 7c6c7f4..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/LoggingDecoratorImplTest.java
+++ /dev/null
@@ -1,243 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.AspectDecorator;
-import org.apache.tapestry5.ioc.services.LoggingDecorator;
-import org.slf4j.Logger;
-import org.testng.Assert;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-import org.xml.sax.SAXParseException;
-
-/**
- * Use the LoggingDecorator in a number of ways to verify its behavior. In some ways we are testing the code dynamically
- * generated by the LoggingDecorator as much as we are testing the decorator itself -- one proves the other.
- * <p/>
- * And now this test is used to integration test {@link org.apache.tapestry5.ioc.internal.services.AspectDecoratorImpl}
- * as well.
- */
-public class LoggingDecoratorImplTest extends IOCInternalTestCase
-{
-    private AspectDecorator aspectDecorator;
-
-    @BeforeClass
-    public void setup()
-    {
-        aspectDecorator = getService(AspectDecorator.class);
-    }
-
-    public interface UpcaseService
-    {
-        String upcase(String input);
-    }
-
-    public interface AdderService
-    {
-        long add(long operand1, long operand2);
-    }
-
-    public interface ToStringService
-    {
-        String toString();
-    }
-
-    public interface ExceptionService
-    {
-        void parse() throws SAXParseException;
-    }
-
-    @Test
-    public void void_method()
-    {
-        Logger logger = mockLogger();
-        Runnable delegate = mockRunnable();
-
-        train_isDebugEnabled(logger, true);
-        logger.debug("[ENTER] run()");
-
-        delegate.run();
-
-        logger.debug("[ EXIT] run");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        Runnable interceptor = ld.build(Runnable.class, delegate, "foo.Bar", logger);
-
-        interceptor.run();
-
-        assertEquals(
-                interceptor.toString(),
-                "<Logging interceptor for foo.Bar(java.lang.Runnable)>");
-
-        verify();
-    }
-
-    private LoggingDecoratorImpl newLoggingDecorator()
-    {
-        return new LoggingDecoratorImpl(aspectDecorator, new LoggingAdvisorImpl(new ExceptionTrackerImpl()));
-    }
-
-    @Test
-    public void method_throws_runtime_exception()
-    {
-        Throwable t = new RuntimeException("From delegate.");
-        Logger logger = mockLogger();
-        Runnable delegate = mockRunnable();
-
-        train_isDebugEnabled(logger, true);
-        logger.debug("[ENTER] run()");
-
-        delegate.run();
-        setThrowable(t);
-
-        logger.debug("[ FAIL] run -- " + t.getClass().getName(), t);
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        Runnable interceptor = ld.build(Runnable.class, delegate, "foo.Bar", logger);
-
-        try
-        {
-            interceptor.run();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            Assert.assertSame(ex, t);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void method_throws_checked_exception() throws Exception
-    {
-        Throwable t = new SAXParseException("From delegate.", null);
-        Logger logger = mockLogger();
-        ExceptionService delegate = newMock(ExceptionService.class);
-
-        train_isDebugEnabled(logger, true);
-        logger.debug("[ENTER] parse()");
-
-        delegate.parse();
-        setThrowable(t);
-
-        logger.debug("[ FAIL] parse -- " + t.getClass().getName(), t);
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        ExceptionService interceptor = ld
-                .build(ExceptionService.class, delegate, "foo.Bar", logger);
-
-        try
-        {
-            interceptor.parse();
-            unreachable();
-        }
-        catch (SAXParseException ex)
-        {
-            Assert.assertSame(ex, t);
-        }
-
-        verify();
-    }
-
-    @Test
-    public void object_parameter_and_return_type()
-    {
-        Logger logger = mockLogger();
-        UpcaseService delegate = new UpcaseService()
-        {
-            public String upcase(String input)
-            {
-                return input.toUpperCase();
-            }
-        };
-
-        train_isDebugEnabled(logger, true);
-        logger.debug("[ENTER] upcase(\"barney\")");
-
-        logger.debug("[ EXIT] upcase [\"BARNEY\"]");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        UpcaseService interceptor = ld.build(UpcaseService.class, delegate, "foo.Bar", logger);
-
-        assertEquals(interceptor.upcase("barney"), "BARNEY");
-
-        verify();
-    }
-
-    @Test
-    public void primitive_parameter_and_return_type()
-    {
-        Logger logger = mockLogger();
-        AdderService delegate = new AdderService()
-        {
-            public long add(long operand1, long operand2)
-            {
-                return operand1 + operand2;
-            }
-        };
-
-        train_isDebugEnabled(logger, true);
-        logger.debug("[ENTER] add(6, 13)");
-
-        logger.debug("[ EXIT] add [19]");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        AdderService interceptor = ld.build(AdderService.class, delegate, "foo.Bar", logger);
-
-        assertEquals(interceptor.add(6, 13), 19);
-
-        verify();
-    }
-
-    @Test
-    public void to_string_method_in_service_interface_is_delegated()
-    {
-        Logger logger = mockLogger();
-        ToStringService delegate = new ToStringService()
-        {
-            @Override
-            public String toString()
-            {
-                return "FROM DELEGATE";
-            }
-        };
-
-        train_isDebugEnabled(logger, true);
-        logger.debug("[ENTER] toString()");
-
-        logger.debug("[ EXIT] toString [\"FROM DELEGATE\"]");
-
-        replay();
-
-        LoggingDecorator ld = newLoggingDecorator();
-        ToStringService interceptor = ld.build(ToStringService.class, delegate, "foo.Bar", logger);
-
-        assertEquals(interceptor.toString(), "FROM DELEGATE");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MasterObjectProviderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MasterObjectProviderImplTest.java
deleted file mode 100644
index fb184e3..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MasterObjectProviderImplTest.java
+++ /dev/null
@@ -1,129 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.internal.QuietOperationTracker;
-import org.apache.tapestry5.ioc.services.MasterObjectProvider;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class MasterObjectProviderImplTest extends IOCTestCase
-{
-    @SuppressWarnings("unchecked")
-    @Test
-    public void found_match_first()
-    {
-        ObjectProvider prov1 = mockObjectProvider();
-        ObjectProvider prov2 = mockObjectProvider();
-        Class type = Runnable.class;
-        AnnotationProvider ap = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        Object expected = mockRunnable();
-
-        train_provide(prov1, type, ap, locator, expected);
-
-        List<ObjectProvider> configuration = Arrays.asList(prov1, prov2);
-
-        replay();
-
-        MasterObjectProvider master = new MasterObjectProviderImpl(configuration, new QuietOperationTracker());
-
-        assertSame(master.provide(type, ap, locator, true), expected);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void found_later_match()
-    {
-        ObjectProvider prov1 = mockObjectProvider();
-        ObjectProvider prov2 = mockObjectProvider();
-        Class type = Runnable.class;
-        AnnotationProvider ap = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        Object expected = mockRunnable();
-
-        train_provide(prov1, type, ap, locator, null);
-        train_provide(prov2, type, ap, locator, expected);
-
-        List<ObjectProvider> configuration = Arrays.asList(prov1, prov2);
-
-        replay();
-
-        MasterObjectProvider master = new MasterObjectProviderImpl(configuration, new QuietOperationTracker());
-
-        assertSame(master.provide(type, ap, locator, true), expected);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void no_match_but_optional()
-    {
-        ObjectProvider prov1 = mockObjectProvider();
-        ObjectProvider prov2 = mockObjectProvider();
-        Class type = Runnable.class;
-        AnnotationProvider ap = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-
-        train_provide(prov1, type, ap, locator, null);
-        train_provide(prov2, type, ap, locator, null);
-
-        List<ObjectProvider> configuration = Arrays.asList(prov1, prov2);
-
-        replay();
-
-        MasterObjectProvider master = new MasterObjectProviderImpl(configuration, new QuietOperationTracker());
-
-        assertNull(master.provide(type, ap, locator, false));
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void no_match_and_required()
-    {
-        ObjectProvider prov1 = mockObjectProvider();
-        ObjectProvider prov2 = mockObjectProvider();
-        Class type = Runnable.class;
-        AnnotationProvider ap = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        Object expected = mockRunnable();
-
-        train_provide(prov1, type, ap, locator, null);
-        train_provide(prov2, type, ap, locator, null);
-
-        train_getService(locator, type, expected);
-
-        List<ObjectProvider> configuration = Arrays.asList(prov1, prov2);
-
-        replay();
-
-        MasterObjectProvider master = new MasterObjectProviderImpl(configuration, new QuietOperationTracker());
-
-        assertSame(master.provide(type, ap, locator, true), expected);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MiddleFilter.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MiddleFilter.java
deleted file mode 100644
index fc47fe9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MiddleFilter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface MiddleFilter
-{
-    public void execute(int count, char ch, MiddleService service, StringBuilder buffer);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MiddleService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MiddleService.java
deleted file mode 100644
index 251ebf5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/MiddleService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface MiddleService
-{
-    public void execute(int count, char ch, StringBuilder buffer);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutorTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutorTest.java
deleted file mode 100644
index ef0a406..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelExecutorTest.java
+++ /dev/null
@@ -1,93 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.RegistryBuilder;
-import org.apache.tapestry5.ioc.services.ParallelExecutor;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.concurrent.Future;
-
-public class NonParallelExecutorTest extends TestBase
-{
-    private Registry registry;
-
-    private ParallelExecutor executor;
-
-    @BeforeClass
-    public void setup()
-    {
-        RegistryBuilder builder = new RegistryBuilder();
-        builder.add(NonParallelModule.class);
-
-        registry = builder.build();
-        executor = registry.getService(ParallelExecutor.class);
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        registry.shutdown();
-
-        registry = null;
-        executor = null;
-    }
-
-    @Test
-    public void invoke_proxy()
-    {
-        Invokable<String> inv = newMock(Invokable.class);
-
-        String value = "invokable-value";
-
-        expect(inv.invoke()).andReturn(value);
-
-        replay();
-
-        assertSame(executor.invoke(String.class, inv), value);
-
-        verify();
-    }
-
-    @Test
-    public void invoke_with_future() throws Exception
-    {
-        Invokable<String> inv = newMock(Invokable.class);
-
-        String value = "invokable-value";
-
-        expect(inv.invoke()).andReturn(value);
-
-        replay();
-
-        Future<String> future = executor.invoke(inv);
-
-        assertFalse(future.cancel(true));
-        assertFalse(future.isCancelled());
-        assertTrue(future.isDone());
-        assertSame(future.get(), value);
-        assertSame(future.get(0, null), value);
-
-        verify();
-
-    }
-}
-
-
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java
deleted file mode 100644
index 51d568b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/NonParallelModule.java
+++ /dev/null
@@ -1,26 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.IOCSymbols;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-
-public class NonParallelModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(IOCSymbols.THREAD_POOL_ENABLED, "false");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ParallelExecutorTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ParallelExecutorTest.java
deleted file mode 100644
index 053a7be..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ParallelExecutorTest.java
+++ /dev/null
@@ -1,102 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.StringHolder;
-import org.apache.tapestry5.ioc.StringHolderImpl;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ParallelExecutor;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class ParallelExecutorTest extends IOCInternalTestCase
-{
-    @Test
-    public void thunk_creation()
-    {
-        int count = 100;
-
-        List<StringHolder> thunks = CollectionFactory.newList();
-
-        ParallelExecutor parallelExecutor = getService(ParallelExecutor.class);
-
-        for (int i = 0; i < count; i++)
-        {
-            final String value = String.format("Value[%d]", i);
-
-            Invokable<StringHolder> inv = new Invokable<StringHolder>()
-            {
-                public StringHolder invoke()
-                {
-                    StringHolder holder = new StringHolderImpl();
-                    holder.setValue(value);
-                    
-                    try
-                    {
-                        Thread.sleep(100l);
-                    }
-                    catch (InterruptedException ie)
-                    {
-                        // Swallow
-                    }
-
-                    return holder;
-                }
-            };
-
-            thunks.add(parallelExecutor.invoke(StringHolder.class, inv));
-        }
-
-        for (int j = 0; j < 2; j++)
-        {
-            for (int i = 0; i < count; i++)
-            {
-                assertEquals(thunks.get(i).getValue(), String.format("Value[%d]", i));
-            }
-        }
-    }
-
-    @Test
-    public void exception_thrown_by_invocation()
-    {
-        ParallelExecutor parallelExecutor = getService(ParallelExecutor.class);
-
-        Invokable<StringHolder> inv = new Invokable<StringHolder>()
-        {
-            public StringHolder invoke()
-            {
-                throw new RuntimeException("Future failure!");
-            }
-        };
-
-        StringHolder holder = parallelExecutor.invoke(StringHolder.class, inv);
-
-        assertEquals(holder.toString(), "FutureThunk[org.apache.tapestry5.ioc.StringHolder]");
-
-        try
-        {
-            holder.getValue();
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Future failure!");
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ParentInterface.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ParentInterface.java
deleted file mode 100644
index 1756ae2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ParentInterface.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface ParentInterface extends GrandparentInterface
-{
-    String getParentProperty();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java
deleted file mode 100644
index f21ae7b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PerthreadManagerImplTest.java
+++ /dev/null
@@ -1,216 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Invokable;
-import org.apache.tapestry5.ioc.services.PerThreadValue;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-public class PerthreadManagerImplTest extends IOCTestCase
-{
-    @Test
-    public void no_listeners()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        new PerthreadManagerImpl(logger).cleanup();
-
-        verify();
-    }
-
-    @Test
-    public void listeners_are_one_shot()
-    {
-        Logger logger = mockLogger();
-        ThreadCleanupListener listener = mockThreadCleanupListener();
-
-        listener.threadDidCleanup();
-
-        replay();
-
-        PerthreadManagerImpl hub = new PerthreadManagerImpl(logger);
-
-        hub.addThreadCleanupListener(listener);
-
-        hub.cleanup();
-
-        verify();
-
-        // No more training.
-
-        replay();
-
-        // Listener not invoked.
-
-        hub.cleanup();
-
-        verify();
-    }
-
-    private ThreadCleanupListener mockThreadCleanupListener()
-    {
-        return newMock(ThreadCleanupListener.class);
-    }
-
-    @Test
-    public void listener_cleanup_failure()
-    {
-        final RuntimeException t = new RuntimeException("Boom!");
-
-        Logger logger = mockLogger();
-
-        ThreadCleanupListener listener = new ThreadCleanupListener()
-        {
-
-            public void threadDidCleanup()
-            {
-                throw t;
-            }
-
-        };
-
-        logger.warn(ServiceMessages.threadCleanupError(listener, t), t);
-
-        replay();
-
-        PerthreadManagerImpl hub = new PerthreadManagerImpl(logger);
-
-        hub.addThreadCleanupListener(listener);
-
-        hub.cleanup();
-
-        verify();
-    }
-
-    // @Test
-    // public void listener_list_is_per_thread()
-    // {
-    // ThreadCleanupListener l1 = newThreadCleanupListener();
-    // final ThreadCleanupListener l2 = newThreadCleanupListener();
-    //
-    // Thread thread = new Thread();
-    //
-    // l1.threadDidCleanup();
-    //
-    // replay();
-    //
-    // final PerthreadManager hub = new PerthreadManagerImpl(log);
-    //
-    // hub.addThreadCleanupListener(l1);
-    //
-    // hub.cleanup();
-    //
-    // verify();
-    // }
-
-    @Test
-    public void per_thread_value()
-    {
-        Object key = new Object();
-        Object value = "Tapestry";
-
-        PerthreadManagerImpl m = new PerthreadManagerImpl(null);
-
-        PerThreadValue<Object> v = m.createValue(key);
-
-        assertFalse(v.exists());
-        assertNull(m.get(key));
-        assertNull(v.get());
-
-        v.set(value);
-
-        assertTrue(v.exists());
-        assertSame(m.get(key), value);
-        assertSame(v.get(), value);
-    }
-
-    @Test
-    public void get_with_default()
-    {
-        PerthreadManagerImpl m = new PerthreadManagerImpl(null);
-
-        PerThreadValue<Object> v = m.createValue(new Object());
-
-        Object def = new Object();
-
-        assertSame(v.get(def), def);
-
-        v.set(null);
-
-        assertNull(v.get(def));
-
-        Object x = new Object();
-
-        v.set(x);
-
-        assertSame(v.get(def), x);
-    }
-
-    @Test
-    public void per_thread_null()
-    {
-        PerthreadManagerImpl m = new PerthreadManagerImpl(null);
-
-        PerThreadValue<Object> v = m.createValue(new Object());
-
-        v.set(null);
-
-        assertTrue(v.exists());
-
-        assertNull(v.get());
-    }
-
-    @Test
-    public void run_performs_cleanup()
-    {
-        final PerthreadManagerImpl m = new PerthreadManagerImpl(null);
-
-        m.run(new Runnable()
-        {
-            public void run()
-            {
-                m.put("foo", "bar");
-            }
-        });
-
-        assertNull(m.get("foo"));
-    }
-
-    @Test
-    public void invoke_performs_cleanup()
-    {
-        final PerthreadManagerImpl m = new PerthreadManagerImpl(null);
-
-        String actual = m.invoke(new Invokable<String>()
-        {
-            public String invoke()
-            {
-                m.put("foo", "bar");
-
-                return "baz";
-            }
-        });
-
-        assertEquals(actual, "baz");
-
-        assertNull(m.get("foo"));
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PipelineBuilderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PipelineBuilderImplTest.java
deleted file mode 100644
index a4fec05..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PipelineBuilderImplTest.java
+++ /dev/null
@@ -1,149 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.ioc.services.PipelineBuilder;
-import org.slf4j.Logger;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.List;
-
-/**
- * Integration tests for the PipelineBuilder service.
- */
-public class PipelineBuilderImplTest extends IOCInternalTestCase
-{
-
-    private PipelineBuilder builder;
-
-    private Registry registry;
-
-    @BeforeClass
-    public void setup_builder()
-    {
-        registry = buildRegistry();
-        builder = registry.getService("PipelineBuilder", PipelineBuilder.class);
-    }
-
-    @AfterClass
-    public void shutdown_builder()
-    {
-        registry.shutdown();
-
-        builder = null;
-        registry = null;
-    }
-
-    @Test
-    public void pipeline_with_filters()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        StandardFilter subtracter = new StandardFilter()
-        {
-            public int run(int i, StandardService service)
-            {
-                return service.run(i) - 2;
-            }
-        };
-
-        StandardFilter multiplier = new StandardFilter()
-        {
-            public int run(int i, StandardService service)
-            {
-                return 2 * service.run(i);
-            }
-        };
-
-        StandardFilter adder = new StandardFilter()
-        {
-            public int run(int i, StandardService service)
-            {
-                return service.run(i + 3);
-            }
-        };
-
-        StandardService terminator = new StandardService()
-        {
-            public int run(int i)
-            {
-                return i;
-            }
-        };
-
-        StandardService pipeline = builder.build(
-                logger,
-                StandardService.class,
-                StandardFilter.class,
-                Arrays.asList(subtracter, multiplier, adder),
-                terminator);
-
-        // Should be order subtracter, multipler, adder
-        assertEquals(pipeline.run(5), 14);
-        assertEquals(pipeline.run(10), 24);
-
-        verify();
-    }
-
-    @Test
-    public void pipeline_without_filters_is_terminator()
-    {
-        Logger logger = mockLogger();
-        StandardService terminator = newMock(StandardService.class);
-
-        replay();
-
-        List<StandardFilter> filters = newList();
-
-        StandardService pipeline = builder.build(
-                logger,
-                StandardService.class,
-                StandardFilter.class,
-                filters,
-                terminator);
-
-        assertSame(pipeline, terminator);
-
-        verify();
-    }
-
-    @Test
-    public void pipeline_with_default_terminator()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        List<StandardFilter> filters = newList();
-
-        StandardService pipeline = builder.build(
-                logger,
-                StandardService.class,
-                StandardFilter.class,
-                filters);
-
-        assertEquals(pipeline.run(99), 0);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java
deleted file mode 100644
index 155c499..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/PropertyAccessImplTest.java
+++ /dev/null
@@ -1,752 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.beaneditor.DataType;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.util.Pair;
-import org.apache.tapestry5.ioc.internal.util.StringLongPair;
-import org.apache.tapestry5.ioc.services.ClassPropertyAdapter;
-import org.apache.tapestry5.ioc.services.PropertyAccess;
-import org.apache.tapestry5.ioc.services.PropertyAdapter;
-import org.testng.annotations.Test;
-
-import java.awt.*;
-import java.beans.*;
-import java.util.Arrays;
-import java.util.Random;
-
-public class PropertyAccessImplTest extends IOCInternalTestCase
-{
-    private static final String CLASS_NAME = PropertyAccessImplTest.class.getName();
-
-    private PropertyAccess access = new PropertyAccessImpl();
-
-    private Random random = new Random();
-
-    public static class Bean
-    {
-        public static Double PI = 3.14;
-        
-        @DataType("fred")
-        @Validate("field-value-overridden")
-        private int value;
-
-        @Validate("getter-value-overrides")
-        public int getValue()
-        {
-            return value;
-        }
-
-        public void setValue(int value)
-        {
-            this.value = value;
-        }
-
-        @Override
-        public String toString()
-        {
-            return "PropertyUtilsTestBean";
-        }
-
-        public void setWriteOnly(boolean b)
-        {
-        }
-
-        public String getReadOnly()
-        {
-            return null;
-        }
-    }
-
-    public static class BeanSubclass extends Bean
-    {
-
-    }
-
-    public static class ExceptionBean
-    {
-        public boolean getFailure()
-        {
-            throw new RuntimeException("getFailure");
-        }
-
-        public void setFailure(boolean b)
-        {
-            throw new RuntimeException("setFailure");
-        }
-
-        @Override
-        public String toString()
-        {
-            return "PropertyUtilsExceptionBean";
-        }
-    }
-
-    public static class UglyBean
-    {
-    }
-
-    public static class UglyBeanBeanInfo implements BeanInfo
-    {
-
-        public BeanInfo[] getAdditionalBeanInfo()
-        {
-            return new BeanInfo[0];
-        }
-
-        public BeanDescriptor getBeanDescriptor()
-        {
-            return null;
-        }
-
-        public int getDefaultEventIndex()
-        {
-            return 0;
-        }
-
-        public int getDefaultPropertyIndex()
-        {
-            return 0;
-        }
-
-        public EventSetDescriptor[] getEventSetDescriptors()
-        {
-            return new EventSetDescriptor[0];
-        }
-
-        public Image getIcon(int iconKind)
-        {
-            return null;
-        }
-
-        public MethodDescriptor[] getMethodDescriptors()
-        {
-            return new MethodDescriptor[0];
-        }
-
-        public PropertyDescriptor[] getPropertyDescriptors()
-        {
-            throw new RuntimeException("This is the UglyBean.");
-        }
-
-    }
-
-    public static class ScalaBean
-    {
-        private String value;
-
-        public String getValue()
-        {
-            return value;
-        }
-
-        public void setValue(String value)
-        {
-            this.value = value;
-        }
-
-        public String value()
-        {
-            return value;
-        }
-
-        public void value_$eq(String value)
-        {
-            this.value = value;
-        }
-    }
-
-    public static class ScalaClass
-    {
-        private String value;
-
-        public String value()
-        {
-            return value;
-        }
-
-        public void value_$eq(String value)
-        {
-            this.value = value;
-        }
-    }
-
-    public static class BooleanHolder
-    {
-        private boolean flag;
-
-        public boolean isFlag()
-        {
-            return flag;
-        }
-
-        public void setFlag(boolean flag)
-        {
-            this.flag = flag;
-        }
-    }
-
-    public static class PublicFieldBean
-    {
-        public String value;
-    }
-
-    public static class ShadowedPublicFieldBean
-    {
-        private String _value;
-
-        public String value;
-
-        public String getValue()
-        {
-            return _value;
-        }
-
-        public void setValue(String value)
-        {
-            _value = value;
-        }
-    }
-
-    public static abstract class GenericBean<T>
-    {
-        public T value;
-    }
-
-    public static class GenericStringBean extends GenericBean<String>
-    {
-    }
-
-    public static interface BeanInterface
-    {
-        String getValue();
-
-        void setValue(String v);
-
-        String getOtherValue();
-
-        void setOtherValue(String v);
-
-        int getIntValue(); // read-only
-    }
-
-    public static abstract class AbstractBean implements BeanInterface
-    {
-        // abstract class implements method from interface
-        private String other;
-        public String getOtherValue()
-        {
-            return other;
-        }
-
-        public void setOtherValue(String v)
-        {
-            other = v;
-        }
-    }
-
-    public static class ConcreteBean extends AbstractBean
-    {
-        private String value;
-        private int intValue;
-
-        public ConcreteBean(int intValue) {
-            this.intValue = intValue;
-        }
-
-        public String getValue() {
-            return value;
-        }
-
-        public void setValue(String v) {
-            value = v;
-        }
-
-        public int getIntValue() {
-            return intValue;
-        }
-    }
-
-    @Test
-    public void simple_read_access()
-    {
-        Bean b = new Bean();
-
-        int value = random.nextInt();
-
-        b.setValue(value);
-
-        assertEquals(access.get(b, "value"), value);
-    }
-
-    @Test
-    public void property_name_case_is_ignored_on_read()
-    {
-        Bean b = new Bean();
-
-        int value = random.nextInt();
-
-        b.setValue(value);
-
-        assertEquals(access.get(b, "VALUE"), value);
-    }
-
-    @Test
-    public void simple_write_access()
-    {
-        Bean b = new Bean();
-
-        int value = random.nextInt();
-
-        access.set(b, "value", value);
-
-        assertEquals(b.getValue(), value);
-    }
-
-    @Test
-    public void property_name_case_is_ignored_on_write()
-    {
-        Bean b = new Bean();
-
-        int value = random.nextInt();
-
-        access.set(b, "VALUE", value);
-
-        assertEquals(b.getValue(), value);
-    }
-
-    @Test
-    public void missing_property()
-    {
-        Bean b = new Bean();
-
-        try
-        {
-            access.get(b, "zaphod");
-
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Class " + CLASS_NAME + "$Bean does not "
-                    + "contain a property named 'zaphod'.");
-        }
-    }
-
-    @Test
-    public void attempt_to_update_read_only_property()
-    {
-        Bean b = new Bean();
-
-        try
-        {
-            access.set(b, "class", null);
-            unreachable();
-        }
-        catch (UnsupportedOperationException ex)
-        {
-            assertEquals(ex.getMessage(), "Class " + CLASS_NAME
-                    + "$Bean does not provide an mutator ('setter') method for property 'class'.");
-        }
-    }
-
-    @Test
-    public void attempt_to_read_from_write_only_property()
-    {
-        Bean b = new Bean();
-
-        try
-        {
-            access.get(b, "writeOnly");
-            unreachable();
-        }
-        catch (UnsupportedOperationException ex)
-        {
-            assertEquals(ex.getMessage(), "Class " + CLASS_NAME
-                    + "$Bean does not provide an accessor ('getter') method for property 'writeOnly'.");
-        }
-    }
-
-    @Test
-    public void exception_thrown_inside_getter()
-    {
-        ExceptionBean b = new ExceptionBean();
-
-        try
-        {
-            access.get(b, "failure");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Error reading property 'failure' of PropertyUtilsExceptionBean: getFailure");
-        }
-    }
-
-    @Test
-    public void exception_thrown_inside_setter()
-    {
-        ExceptionBean b = new ExceptionBean();
-
-        try
-        {
-            access.set(b, "failure", false);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Error updating property 'failure' of PropertyUtilsExceptionBean: setFailure");
-        }
-    }
-
-    @Test
-    public void failure_when_introspecting_class()
-    {
-        UglyBean b = new UglyBean();
-
-        try
-        {
-            access.get(b, "google");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "java.lang.RuntimeException: This is the UglyBean.");
-        }
-    }
-
-    @Test
-    public void clear_wipes_internal_cache()
-    {
-        ClassPropertyAdapter cpa1 = access.getAdapter(Bean.class);
-
-        assertSame(cpa1.getBeanType(), Bean.class);
-
-        ClassPropertyAdapter cpa2 = access.getAdapter(Bean.class);
-
-        assertSame(cpa2, cpa1);
-
-        access.clearCache();
-
-        ClassPropertyAdapter cpa3 = access.getAdapter(Bean.class);
-
-        assertNotSame(cpa3, cpa1);
-    }
-
-    @Test
-    public void class_property_adapter_toString()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(Bean.class);
-
-        assertEquals(cpa.toString(), "<ClassPropertyAdaptor " + CLASS_NAME
-                + "$Bean : class, readOnly, value, writeOnly>");
-    }
-
-    @Test
-    public void property_adapter_read_only_property()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(Bean.class);
-        PropertyAdapter pa = cpa.getPropertyAdapter("readOnly");
-
-        assertTrue(pa.isRead());
-        assertFalse(pa.isUpdate());
-        assertFalse(pa.isCastRequired());
-
-        assertNull(pa.getWriteMethod());
-        assertEquals(pa.getReadMethod(), findMethod(Bean.class, "getReadOnly"));
-    }
-
-    @Test
-    public void property_adapter_write_only_property()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(Bean.class);
-        PropertyAdapter pa = cpa.getPropertyAdapter("writeOnly");
-
-        assertFalse(pa.isRead());
-        assertTrue(pa.isUpdate());
-
-        assertEquals(pa.getWriteMethod(), findMethod(Bean.class, "setWriteOnly"));
-        assertNull(pa.getReadMethod());
-    }
-
-    @Test
-    public void class_property_adapter_returns_null_for_unknown_property()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(Bean.class);
-
-        assertNull(cpa.getPropertyAdapter("google"));
-    }
-
-    @Test
-    public void access_to_property_type()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(Bean.class);
-
-        assertEquals(cpa.getPropertyAdapter("value").getType(), int.class);
-        assertEquals(cpa.getPropertyAdapter("readOnly").getType(), String.class);
-        assertEquals(cpa.getPropertyAdapter("writeOnly").getType(), boolean.class);
-    }
-
-    @Test
-    public void property_names()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(Bean.class);
-
-        assertEquals(cpa.getPropertyNames(), Arrays.asList("class", "readOnly", "value", "writeOnly"));
-    }
-
-    @Test
-    public void integration()
-    {
-        Registry registry = buildRegistry();
-
-        PropertyAccess pa = registry.getService("PropertyAccess", PropertyAccess.class);
-
-        Bean b = new Bean();
-
-        int value = random.nextInt();
-
-        pa.set(b, "value", value);
-
-        assertEquals(b.getValue(), value);
-
-        registry.shutdown();
-    }
-
-    @Test
-    public void super_interface_methods_inherited_by_sub_interface()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(SubInterface.class);
-
-        assertEquals(cpa.getPropertyNames(), Arrays.asList("grandParentProperty", "parentProperty", "subProperty"));
-    }
-
-    @Test
-    public void indexed_properties_are_ignored()
-    {
-        ClassPropertyAdapter cpa = access.getAdapter(BeanWithIndexedProperty.class);
-
-        assertEquals(cpa.getPropertyNames(), Arrays.asList("class", "primitiveProperty"));
-    }
-
-    @Test
-    public void get_annotation_when_annotation_not_present()
-    {
-        PropertyAdapter pa = access.getAdapter(AnnotatedBean.class).getPropertyAdapter("readWrite");
-
-        assertNull(pa.getAnnotation(Scope.class));
-    }
-
-    @Test
-    public void get_annotation_with_annotation_on_write_method()
-    {
-        PropertyAdapter pa = access.getAdapter(AnnotatedBean.class).getPropertyAdapter("annotationOnWrite");
-
-        Scope annotation = pa.getAnnotation(Scope.class);
-        assertNotNull(annotation);
-
-        assertEquals(annotation.value(), "onwrite");
-    }
-
-    @Test
-    public void read_method_annotation_overrides_write_method_annotation()
-    {
-        PropertyAdapter pa = access.getAdapter(AnnotatedBean.class).getPropertyAdapter("annotationOnRead");
-
-        Scope annotation = pa.getAnnotation(Scope.class);
-        assertNotNull(annotation);
-
-        assertEquals(annotation.value(), "onread");
-    }
-
-    @Test
-    public void no_write_method_reading_missing_annotation()
-    {
-        PropertyAdapter pa = access.getAdapter(AnnotatedBean.class).getPropertyAdapter("readOnly");
-
-        assertNull(pa.getAnnotation(Scope.class));
-    }
-
-    @Test
-    public void get_annotation_will_read_field()
-    {
-        PropertyAdapter pa = access.getAdapter(Bean.class).getPropertyAdapter("value");
-
-        DataType dt = pa.getAnnotation(DataType.class);
-
-        assertNotNull(dt);
-        assertEquals(dt.value(), "fred");
-    }
-
-    /**
-     * TAPESTRY-2448
-     */
-    @Test
-    public void get_annotation_will_read_inherited_field()
-    {
-        PropertyAdapter pa = access.getAdapter(BeanSubclass.class).getPropertyAdapter("value");
-
-        DataType dt = pa.getAnnotation(DataType.class);
-
-        assertNotNull(dt);
-        assertEquals(dt.value(), "fred");
-
-    }
-
-    @Test
-    public void field_annotation_overridden_by_getter_annotation()
-    {
-        PropertyAdapter pa = access.getAdapter(Bean.class).getPropertyAdapter("value");
-
-        assertEquals(pa.getAnnotation(Validate.class).value(), "getter-value-overrides");
-    }
-
-    @Test
-    public void using_generics()
-    {
-        ClassPropertyAdapter cpa1 = access.getAdapter(StringLongPair.class);
-
-        PropertyAdapter pa1 = cpa1.getPropertyAdapter("key");
-        assertSame(pa1.getType(), String.class);
-        assertTrue(pa1.isCastRequired());
-
-        assertSame(pa1.getDeclaringClass(), Pair.class);
-
-        PropertyAdapter pa2 = cpa1.getPropertyAdapter("value");
-        assertSame(pa2.getType(), Long.class);
-        assertTrue(pa2.isCastRequired());
-
-        // On the base class, which defines the generic parameter type variables,
-        // the properties just look like Object.
-
-        ClassPropertyAdapter cpa2 = access.getAdapter(Pair.class);
-
-        pa1 = cpa2.getPropertyAdapter("key");
-        assertSame(pa1.getType(), Object.class);
-        assertFalse(pa1.isCastRequired());
-
-        pa2 = cpa2.getPropertyAdapter("value");
-        assertSame(pa2.getType(), Object.class);
-        assertFalse(pa2.isCastRequired());
-
-    }
-
-    @Test
-    public void get_scala_properties_with_bean_accessors()
-    {
-        PropertyAdapter pa = access.getAdapter(ScalaBean.class).getPropertyAdapter("value");
-
-        // even thought scala accessors are present the java bean ones should be the ones used by Tapestry
-        assertEquals(pa.getReadMethod().getName(), "getValue");
-        assertEquals(pa.getWriteMethod().getName(), "setValue");
-    }
-
-    @Test
-    public void get_scala_properties()
-    {
-        PropertyAdapter pa = access.getAdapter(ScalaClass.class).getPropertyAdapter("value");
-
-        assertEquals(pa.getReadMethod().getName(), "value");
-        assertEquals(pa.getWriteMethod().getName(), "value_$eq");
-    }
-
-    @Test
-    public void access_to_public_field()
-    {
-        PropertyAdapter pa = access.getAdapter(PublicFieldBean.class).getPropertyAdapter("value");
-
-        assertTrue(pa.isField());
-        assertTrue(pa.isRead());
-        assertTrue(pa.isUpdate());
-
-        PublicFieldBean bean = new PublicFieldBean();
-
-        pa.set(bean, "fred");
-
-        assertEquals(bean.value, "fred");
-
-        bean.value = "barney";
-
-        assertEquals(pa.get(bean), "barney");
-    }
-
-    @Test
-    public void property_is_favored_over_public_field()
-    {
-        PropertyAdapter pa = access.getAdapter(ShadowedPublicFieldBean.class).getPropertyAdapter("value");
-
-        assertFalse(pa.isField());
-
-        ShadowedPublicFieldBean bean = new ShadowedPublicFieldBean();
-
-        pa.set(bean, "fred");
-
-        assertNull(bean.value);
-
-        bean.value = "barney";
-        bean.setValue("wilma");
-
-        assertEquals(pa.get(bean), "wilma");
-    }
-
-    @Test
-    public void access_property_from_unimplemented_interface_in_abstract_base_class()
-    {
-        AbstractBean bean = new ConcreteBean(33);
-
-        PropertyAdapter valueAdapter = access.getAdapter(AbstractBean.class).getPropertyAdapter("value");
-
-        assertNotNull(valueAdapter);
-        assertFalse(valueAdapter.isField());
-
-        valueAdapter.set(bean, "Hello");
-
-        assertSame(valueAdapter.get(bean), "Hello");
-        assertSame(bean.getValue(), "Hello");
-
-        PropertyAdapter otherValueAdapter = access.getAdapter(AbstractBean.class).getPropertyAdapter("otherValue");
-
-        assertNotNull(otherValueAdapter);
-        assertFalse(otherValueAdapter.isField());
-
-        otherValueAdapter.set(bean, "Other Value");
-
-        assertSame(otherValueAdapter.get(bean), "Other Value");
-        assertSame(bean.getOtherValue(), "Other Value");
-
-        PropertyAdapter intValueAdapter = access.getAdapter(AbstractBean.class).getPropertyAdapter("intvalue");
-        assertNotNull(intValueAdapter);
-
-        assertEquals(intValueAdapter.get(bean), 33);
-
-        assertTrue(intValueAdapter.isRead());
-        assertFalse(intValueAdapter.isUpdate());
-    }
-
-
-    @Test
-    public void generic_field_is_recognized()
-    {
-        PropertyAdapter pa = access.getAdapter(GenericStringBean.class).getPropertyAdapter("value");
-
-        assertTrue(pa.isCastRequired());
-        assertEquals(pa.getType(), String.class);
-        assertSame(pa.getDeclaringClass(), GenericBean.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/RegistryShutdownHubImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/RegistryShutdownHubImplTest.java
deleted file mode 100644
index 86f67c5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/RegistryShutdownHubImplTest.java
+++ /dev/null
@@ -1,89 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import static org.easymock.EasyMock.contains;
-import static org.easymock.EasyMock.same;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-public class RegistryShutdownHubImplTest extends IOCInternalTestCase
-{
-
-    @Test
-    public void add_and_notify()
-    {
-        RegistryShutdownListener l1 = mockListener();
-        RegistryShutdownListener l2 = mockListener();
-        Logger logger = mockLogger();
-
-        l1.registryDidShutdown();
-        l2.registryDidShutdown();
-
-        replay();
-
-        RegistryShutdownHubImpl hub = new RegistryShutdownHubImpl(logger);
-
-        hub.addRegistryShutdownListener(l1);
-        hub.addRegistryShutdownListener(l2);
-
-        hub.fireRegistryDidShutdown();
-
-        verify();
-    }
-
-    /**
-     * Shows that multiple listener will be notified, and that an error in one doesn't prevent others from being
-     * notified.
-     */
-    @Test
-    public void notification_error()
-    {
-        RegistryShutdownListener l1 = mockListener();
-        RegistryShutdownListener l2 = mockListener();
-        RegistryShutdownListener l3 = mockListener();
-
-        Logger logger = mockLogger();
-
-        Throwable t = new RuntimeException("Shutdown failure.");
-
-        l1.registryDidShutdown();
-        l2.registryDidShutdown();
-        setThrowable(t);
-
-        logger.error(contains("Shutdown failure."), same(t));
-
-        l3.registryDidShutdown();
-
-        replay();
-
-        RegistryShutdownHubImpl hub = new RegistryShutdownHubImpl(logger);
-
-        hub.addRegistryShutdownListener(l1);
-        hub.addRegistryShutdownListener(l2);
-        hub.addRegistryShutdownListener(l3);
-
-        hub.fireRegistryDidShutdown();
-
-        verify();
-    }
-
-    private RegistryShutdownListener mockListener()
-    {
-        return newMock(RegistryShutdownListener.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/RegistryStartupTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/RegistryStartupTest.java
deleted file mode 100644
index 96c0ef8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/RegistryStartupTest.java
+++ /dev/null
@@ -1,135 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class RegistryStartupTest extends IOCTestCase
-{
-    /**
-     * Runnable runs.
-     */
-    @Test
-    public void success()
-    {
-        List<Runnable> configuration = CollectionFactory.newList();
-
-        Runnable r1 = newMock(Runnable.class);
-        Runnable r2 = newMock(Runnable.class);
-
-        configuration.add(r1);
-        configuration.add(r2);
-
-        Logger logger = mockLogger();
-
-        getMocksControl().checkOrder(true);
-
-        r1.run();
-        r2.run();
-
-        replay();
-
-        Runnable startup = new RegistryStartup(logger, configuration);
-
-        startup.run();
-
-        verify();
-
-        // The configuration is cleared out at the end of the execution.
-        assertTrue(configuration.isEmpty());
-    }
-
-    @Test
-    public void failure_is_logged_but_execution_continues()
-    {
-        List<Runnable> configuration = CollectionFactory.newList();
-        RuntimeException t = new RuntimeException("Runnable r1 has been a naughty boy.");
-
-        Runnable r1 = newMock(Runnable.class);
-        Runnable r2 = newMock(Runnable.class);
-
-        configuration.add(r1);
-        configuration.add(r2);
-
-        Logger logger = mockLogger();
-
-        getMocksControl().checkOrder(true);
-
-        r1.run();
-        setThrowable(t);
-
-        logger.error(ServiceMessages.startupFailure(t));
-
-        r2.run();
-
-        replay();
-
-        Runnable startup = new RegistryStartup(logger, configuration);
-
-        startup.run();
-
-        verify();
-    }
-
-    @Test
-    public void run_may_only_be_called_once()
-    {
-        Logger logger = mockLogger();
-        List<Runnable> configuration = CollectionFactory.newList();
-
-        replay();
-
-        Runnable startup = new RegistryStartup(logger, configuration);
-
-        startup.run();
-
-        try
-        {
-            startup.run();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertMessageContains(ex, "Method org.apache.tapestry5.ioc.internal.services.RegistryStartup.run(",
-                                  "may no longer be invoked.");
-
-        }
-
-        verify();
-    }
-
-    @Test
-    public void integration()
-    {
-        Registry r = buildRegistry(StartupModule.class);
-
-        assertFalse(StartupModule.startupInvoked);
-
-        r.performRegistryStartup();
-
-        assertTrue(StartupModule.startupInvoked);
-
-        // Ideally we'd have a way to show that the PerthreadManager was notified after
-        // RegistryStartup did its thing, but ...
-
-        r.shutdown();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ResourceSymbolProviderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ResourceSymbolProviderTest.java
deleted file mode 100644
index 587e6f7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ResourceSymbolProviderTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.InputStream;
-
-public class ResourceSymbolProviderTest extends IOCTestCase
-{
-    private static final String CONTENT = "homer=simpson\r\nmonty=burns";
-
-    @Test
-    public void access() throws Exception
-    {
-        Resource resource = mockResource();
-
-        InputStream is = new ByteArrayInputStream(CONTENT.getBytes());
-
-        expect(resource.openStream()).andReturn(is);
-
-        replay();
-
-        ResourceSymbolProvider provider = new ResourceSymbolProvider(resource);
-
-        /* test general access */
-        assertEquals(provider.valueForSymbol("homer"), "simpson");
-        assertEquals(provider.valueForSymbol("monty"), "burns");
-
-        /* check for case-insensitivity */
-        assertEquals(provider.valueForSymbol("HOMER"), "simpson");
-
-        /* non-existent keys should return null */
-        assertNull(provider.valueForSymbol("marge"));
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SampleFilter.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SampleFilter.java
deleted file mode 100644
index 4a08816..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SampleFilter.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.FilterMethodAnalyzer}.
- */
-public interface SampleFilter
-{
-    public void simpleMatch(SampleService service);
-
-    public void mismatchParameterCount(int a, SampleService service);
-
-    public int mismatchReturnType(SampleService service);
-
-    public void missingServiceInterface(boolean flag);
-
-    public void complexMatch(String title, int count, SampleService service, Runnable r);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SampleService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SampleService.java
deleted file mode 100644
index 2a8f6c9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SampleService.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.FilterMethodAnalyzer}.
- */
-public interface SampleService
-{
-    public void simpleMatch();
-
-    public void mismatchParameterCount();
-
-    public String mismatchReturnType();
-
-    public void missingServiceInterface();
-
-    public void complexMatch(String title, int count, Runnable r);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SimpleAnnotation.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SimpleAnnotation.java
deleted file mode 100644
index dd9b8c2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SimpleAnnotation.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.internal.services;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Target({ TYPE, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface SimpleAnnotation
-{
-    String value();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SimpleService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SimpleService.java
deleted file mode 100644
index 0b78c78..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SimpleService.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used by {@link org.apache.tapestry5.ioc.internal.services.ClassFabImplTest}.
- */
-public interface SimpleService
-{
-    public int add(int a, int b);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StandardFilter.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StandardFilter.java
deleted file mode 100644
index 86f6cec..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StandardFilter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface StandardFilter
-{
-    public int run(int i, StandardService service);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StandardService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StandardService.java
deleted file mode 100644
index 3180f7e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StandardService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface StandardService
-{
-    public int run(int i);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StartupModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StartupModule.java
deleted file mode 100644
index 2787917..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StartupModule.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-
-public class StartupModule
-{
-    public static boolean startupInvoked;
-
-    public static void contributeRegistryStartup(OrderedConfiguration<Runnable> configuration)
-    {
-        Runnable r = new Runnable()
-        {
-            public void run()
-            {
-                startupInvoked = true;
-            }
-        };
-
-        configuration.add("Contribution", r);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StartupModule2.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StartupModule2.java
deleted file mode 100644
index dfcc980..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StartupModule2.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.Startup;
-import org.slf4j.Logger;
-
-public class StartupModule2
-{
-    public static boolean staticStartupInvoked;
-    public static boolean instanceStartupInvoked;
-
-    @Startup
-    public static void foo(ObjectLocator locator)
-    {
-        staticStartupInvoked = true;
-    }
-    
-    @Startup
-    public void bar(ObjectLocator locator, Logger logger)
-    {
-        instanceStartupInvoked = true;
-        
-        logger.info("StartupModule2.bar invoked");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StrategyBuilderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StrategyBuilderImplTest.java
deleted file mode 100644
index 0d214bf..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StrategyBuilderImplTest.java
+++ /dev/null
@@ -1,94 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.StrategyBuilder;
-import org.apache.tapestry5.ioc.util.StrategyRegistry;
-import org.testng.annotations.Test;
-
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-public class StrategyBuilderImplTest extends IOCInternalTestCase
-{
-    private static class KindOfImpl implements KindOf
-    {
-        private final String value;
-
-        public KindOfImpl(final String value)
-        {
-            this.value = value;
-        }
-
-        public String kindOf(Object value)
-        {
-            return this.value;
-        }
-    }
-
-    @Test
-    public void standard()
-    {
-        StrategyRegistry<KindOf> registry = buildStrategyRegistry();
-
-        StrategyBuilder builder = getService(StrategyBuilder.class);
-
-        KindOf service = builder.build(registry);
-
-        assertEquals(service.kindOf(Collections.EMPTY_MAP), "MAP");
-        assertEquals(service.kindOf(Collections.EMPTY_LIST), "LIST");
-
-        assertEquals(service.toString(), "<Strategy for org.apache.tapestry5.ioc.internal.services.KindOf>");
-
-        try
-        {
-            service.kindOf(null);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "No adapter from type void to type org.apache.tapestry5.ioc.internal.services.KindOf is available (registered types are java.util.List, java.util.Map).");
-        }
-    }
-
-    @Test
-    public void using_registration_map()
-    {
-        Map<Class, KindOf> registrations = CollectionFactory.newMap();
-
-        registrations.put(Map.class, new KindOfImpl("MAP"));
-        registrations.put(List.class, new KindOfImpl("LIST"));
-        StrategyBuilder builder = getService(StrategyBuilder.class);
-
-        KindOf service = builder.build(KindOf.class, registrations);
-
-        assertEquals(service.kindOf(Collections.EMPTY_MAP), "MAP");
-        assertEquals(service.kindOf(Collections.EMPTY_LIST), "LIST");
-    }
-
-    private StrategyRegistry<KindOf> buildStrategyRegistry()
-    {
-        Map<Class, KindOf> registrations = CollectionFactory.newMap();
-
-        registrations.put(Map.class, new KindOfImpl("MAP"));
-        registrations.put(List.class, new KindOfImpl("LIST"));
-
-        return StrategyRegistry.newInstance(KindOf.class, registrations);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StringLocationTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StringLocationTest.java
deleted file mode 100644
index da79b65..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/StringLocationTest.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.Location;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class StringLocationTest extends Assert
-{
-    @Test
-    public void thats_all_there_is_folks()
-    {
-        String description = "location description";
-        int line = 99;
-
-        Location l = new StringLocation(description, line);
-
-        assertEquals(l.toString(), description);
-        assertEquals(l.getLine(), line);
-        assertEquals(l.getColumn(), 0);
-        assertNull(l.getResource());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SubInterface.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SubInterface.java
deleted file mode 100644
index 484e2b9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SubInterface.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface SubInterface extends ParentInterface
-{
-    String getSubProperty();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SymbolObjectProviderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SymbolObjectProviderTest.java
deleted file mode 100644
index d7c404f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SymbolObjectProviderTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.ObjectProvider;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.math.BigInteger;
-
-public class SymbolObjectProviderTest extends IOCTestCase
-{
-    @Test
-    public void no_annotation()
-    {
-        SymbolSource source = mockSymbolSource();
-        TypeCoercer coercer = mockTypeCoercer();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-
-        train_getAnnotation(annotationProvider, Symbol.class, null);
-
-        replay();
-
-        ObjectProvider provider = new SymbolObjectProvider(source, coercer);
-
-        assertNull(provider.provide(Long.class, annotationProvider, locator));
-
-        verify();
-    }
-
-    @Test
-    public void annotation_present()
-    {
-        SymbolSource source = mockSymbolSource();
-        TypeCoercer coercer = mockTypeCoercer();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        String symbolName = "example-symbol";
-        String symbolValue = "symbol-value";
-        Long coercedValue = 123l;
-        Symbol annotation = newSymbol(symbolName);
-
-        train_getAnnotation(annotationProvider, Symbol.class, annotation);
-        train_getAnnotation(annotationProvider, IntermediateType.class, null);
-
-        train_valueForSymbol(source, symbolName, symbolValue);
-
-        train_coerce(coercer, symbolValue, Long.class, coercedValue);
-
-        replay();
-
-        ObjectProvider provider = new SymbolObjectProvider(source, coercer);
-
-        assertSame(provider.provide(Long.class, annotationProvider, locator), coercedValue);
-
-        verify();
-    }
-
-    @Test
-    public void intermediate_type()
-    {
-        SymbolSource source = mockSymbolSource();
-        TypeCoercer coercer = mockTypeCoercer();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        String symbolName = "example-symbol";
-        String symbolValue = "symbol-value";
-        Long coercedValue = 123l;
-        Symbol annotation = newSymbol(symbolName);
-        IntermediateType it = newIntermediateType();
-        BigInteger intervalue = new BigInteger("123");
-
-        train_getAnnotation(annotationProvider, Symbol.class, annotation);
-        train_getAnnotation(annotationProvider, IntermediateType.class, it);
-
-        train_valueForSymbol(source, symbolName, symbolValue);
-
-        expect(it.value()).andReturn(BigInteger.class);
-
-        train_coerce(coercer, symbolValue, BigInteger.class, intervalue);
-        train_coerce(coercer, intervalue, Long.class, coercedValue);
-
-        replay();
-
-        ObjectProvider provider = new SymbolObjectProvider(source, coercer);
-
-        assertSame(provider.provide(Long.class, annotationProvider, locator), coercedValue);
-
-        verify();
-
-    }
-
-    private Symbol newSymbol(String symbolName)
-    {
-        Symbol annotation = newMock(Symbol.class);
-        expect(annotation.value()).andReturn(symbolName);
-        return annotation;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SymbolSourceImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SymbolSourceImplTest.java
deleted file mode 100644
index 49751d7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/SymbolSourceImplTest.java
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.SymbolProvider;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class SymbolSourceImplTest extends IOCInternalTestCase
-{
-    @Test
-    public void expand_symbols_no_symbols_present()
-    {
-        String input = "A jolly good time.";
-
-        List<SymbolProvider> providers = Collections.emptyList();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        // Not just equal, but the same.
-
-        assertSame(source.expandSymbols(input), input);
-    }
-
-    @Test
-    public void simple_expansions()
-    {
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "barney", "Barney");
-        train_valueForSymbol(provider, "dino", "Dino");
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        assertEquals(
-                source.expandSymbols("Fred's friends are ${barney} and ${dino}."),
-                "Fred's friends are Barney and Dino.");
-
-        verify();
-    }
-
-    @Test
-    public void undefined_symbol()
-    {
-
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "barney", null);
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        try
-        {
-            source.valueForSymbol("barney");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Symbol 'barney' is not defined.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void missing_brace()
-    {
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        try
-        {
-            source.expandSymbols("Unmatched ${this");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Input string 'Unmatched ${this' is missing a symbol closing brace.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void indirect_expansions()
-    {
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "fred.friends", "${barney} and ${dino}");
-        train_valueForSymbol(provider, "barney", "Barney");
-        train_valueForSymbol(provider, "dino", "Dino");
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        assertEquals(
-                source.expandSymbols("Fred's friends are ${fred.friends}."),
-                "Fred's friends are Barney and Dino.");
-
-        verify();
-    }
-
-    @Test
-    public void undefined_symbol_in_path()
-    {
-
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "barney", "Barney (whose friends are ${barney.friends})");
-        train_valueForSymbol(provider, "barney.friends", "${fred} and ${betty}");
-        train_valueForSymbol(provider, "fred", null);
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        try
-        {
-            source.valueForSymbol("barney");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Symbol 'fred' is not defined (in barney --> barney.friends --> fred). ");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void missing_brace_in_path()
-    {
-
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "barney", "Barney (whose friends are ${barney.friends})");
-        train_valueForSymbol(provider, "barney.friends", "${fred} and ${betty");
-        train_valueForSymbol(provider, "fred", "Fred");
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        try
-        {
-            source.valueForSymbol("barney");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Input string '${fred} and ${betty' is missing a symbol closing brace (in barney --> barney.friends).");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void providers_searched_in_order()
-    {
-        SymbolProvider provider1 = mockSymbolProvider();
-        SymbolProvider provider2 = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider1, provider2);
-
-        train_valueForSymbol(provider1, "fred.friends", "${barney} and ${dino}");
-        train_valueForSymbol(provider1, "barney", null);
-        train_valueForSymbol(provider2, "barney", "Barney");
-        train_valueForSymbol(provider1, "dino", null);
-        train_valueForSymbol(provider2, "dino", "Dino");
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        assertEquals(
-                source.expandSymbols("Fred's friends are ${fred.friends}."),
-                "Fred's friends are Barney and Dino.");
-
-        verify();
-    }
-
-    @Test
-    public void symbols_are_cached()
-    {
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "fred", "Fred's friends are ${barney} and ${dino}.");
-        train_valueForSymbol(provider, "barney", "Barney");
-        train_valueForSymbol(provider, "dino", "Dino");
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        assertEquals(source.valueForSymbol("fred"), "Fred's friends are Barney and Dino.");
-
-        verify();
-
-        replay();
-
-        // This time, comes out of the cache.
-
-        assertEquals(source.valueForSymbol("fred"), "Fred's friends are Barney and Dino.");
-
-        verify();
-    }
-
-    @Test
-    public void recursive_symbols_fail()
-    {
-        SymbolProvider provider = mockSymbolProvider();
-
-        List<SymbolProvider> providers = Arrays.asList(provider);
-
-        train_valueForSymbol(provider, "fred", "Fred (whose friends are ${fred.friends})");
-        train_valueForSymbol(provider, "fred.friends", "${barney} and ${dino}");
-        train_valueForSymbol(provider, "barney", "Barney (whose friends are ${barney.friends})");
-        train_valueForSymbol(provider, "barney.friends", "${fred} and ${betty}");
-
-        replay();
-
-        SymbolSource source = new SymbolSourceImpl(providers);
-
-        try
-        {
-            source.valueForSymbol("fred");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Symbol 'fred' is defined in terms of itself (fred --> fred.friends --> barney --> barney.friends --> fred).");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void integration_test()
-    {
-        SymbolSource source = getService(SymbolSource.class);
-
-        // SystemPropertiesSymbolProvider is available by default
-
-        String userName = System.getProperty("user.name");
-
-        assertEquals(source.valueForSymbol("user.name"), userName);
-    }
-
-    protected final void train_valueForSymbol(SymbolProvider provider, String symbolName,
-                                              String value)
-    {
-        expect(provider.valueForSymbol(symbolName)).andReturn(value);
-    }
-
-    protected final SymbolProvider mockSymbolProvider()
-    {
-        return newMock(SymbolProvider.class);
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TargetBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TargetBean.java
deleted file mode 100644
index fcf731a..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TargetBean.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used by {@link ClassFactoryImplTest}.
- */
-public class TargetBean
-{
-    private String firstName;
-
-    private String lastName;
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TestAnnotation.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TestAnnotation.java
deleted file mode 100644
index 13abb85..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TestAnnotation.java
+++ /dev/null
@@ -1,68 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.ioc.internal.services;
-
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-@Target({ TYPE, METHOD })
-@Retention(RUNTIME)
-@Documented
-public @interface TestAnnotation
-{
-
-    TestAnnotation2[] annotationValue();
-
-    String[] arrayValue() default { "foo", "bar" };
-
-    boolean booleanValue();
-
-    byte byteValue();
-
-    char charValue();
-
-    Class classValue();
-
-    double doubleValue();
-
-    Color enumValue();
-
-    float floatValue();
-
-    int intValue();
-
-    long longValue();
-
-    short shortValue();
-
-    String stringValue();
-    
-    public enum Color
-    {
-        RED, GREEN, BLUE
-    }
-    
-    @Target({ TYPE, METHOD })
-    @Retention(RUNTIME)
-    @Documented
-    public @interface TestAnnotation2
-    {
-        Color[] colors();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TextTransformer.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TextTransformer.java
deleted file mode 100644
index c0eb887..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TextTransformer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface TextTransformer
-{
-    String transform(String input);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ThreadLocaleImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ThreadLocaleImplTest.java
deleted file mode 100644
index eafc707..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ThreadLocaleImplTest.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class ThreadLocaleImplTest extends IOCInternalTestCase
-{
-    private ThreadLocale threadLocale;
-
-    private static final Locale FAKE_LOCALE1 = new Locale("klingon");
-
-    private static final Locale FAKE_LOCALE2 = new Locale("ferrengi");
-
-    @BeforeClass
-    public void setup()
-    {
-        threadLocale = getService(ThreadLocale.class);
-    }
-
-    @Test
-    public void different_threads_track_different_values() throws InterruptedException
-    {
-        final Locale initial = threadLocale.getLocale();
-
-        threadLocale.setLocale(FAKE_LOCALE1);
-
-        assertSame(threadLocale.getLocale(), FAKE_LOCALE1);
-
-        Runnable r = new Runnable()
-        {
-            public void run()
-            {
-                assertSame(threadLocale.getLocale(), initial);
-            }
-        };
-
-        Thread t = new Thread(r);
-
-        t.start();
-        t.join();
-
-        cleanupThread();
-    }
-
-    public void thread_locale_reverts_after_cleanup()
-    {
-        Locale initial = threadLocale.getLocale();
-
-        threadLocale.setLocale(FAKE_LOCALE2);
-
-        cleanupThread();
-
-        assertSame(threadLocale.getLocale(), initial);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ToStringFilter.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ToStringFilter.java
deleted file mode 100644
index 00822b5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ToStringFilter.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface ToStringFilter
-{
-    public String toString(ToStringService service);
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ToStringService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ToStringService.java
deleted file mode 100644
index b8e0484..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ToStringService.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2004, 2005, 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-public interface ToStringService
-{
-    public String toString();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java
deleted file mode 100644
index bdc1a61..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/TypeCoercerImplTest.java
+++ /dev/null
@@ -1,342 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.util.TimeInterval;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-import org.xml.sax.XMLReader;
-
-import java.io.File;
-import java.math.BigDecimal;
-import java.math.BigInteger;
-import java.util.*;
-
-public class TypeCoercerImplTest extends IOCInternalTestCase
-{
-    private TypeCoercer coercer;
-
-    @BeforeClass
-    public void setup_coercer()
-    {
-        coercer = getService(TypeCoercer.class);
-    }
-
-    @AfterClass
-    public void cleanup_coercer()
-    {
-        coercer = null;
-    }
-
-    @Test
-    public void builtin_coercion()
-    {
-        // String to Double
-
-        assertEquals(coercer.coerce("-15", Double.class), new Double(-15));
-
-        // Now a second pass through, to exercise the internal cache
-
-        assertEquals(coercer.coerce("2.27", Double.class), new Double(2.27));
-    }
-
-    @Test
-    public void primitive_type_as_target()
-    {
-        assertEquals(coercer.coerce(227l, int.class), new Integer(227));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void no_coercion_necessary()
-    {
-        Object input = new Integer(-37);
-
-        assertSame(coercer.coerce(input, Number.class), input);
-
-        Coercion coercion = coercer.getCoercion(int.class, Number.class);
-
-        assertSame(coercion.coerce(input), input);
-    }
-
-    @Test
-    public void explain_to_same_type()
-    {
-        assertEquals(coercer.explain(Integer.class, Integer.class), "");
-    }
-
-    /** TAP5-917 */
-    @Test
-    public void explain_primitive_to_wrapper_type()
-    {
-        assertEquals(coercer.explain(int.class, Integer.class), "");
-    }
-
-    /** TAP5-917 */
-    @Test
-    public void explain_wrapper_to_primitive_type()
-    {
-        assertEquals(coercer.explain(Integer.class, int.class), "");
-    }
-
-    @Test
-    public void combined_coercion()
-    {
-        StringBuilder builder = new StringBuilder("12345");
-
-        // This should trigger Object -> String, String -> Integer
-
-        assertEquals(coercer.coerce(builder, int.class), new Integer(12345));
-
-        // This should trigger String -> Double, Number -> Integer
-
-        assertEquals(coercer.coerce("52", Integer.class), new Integer(52));
-    }
-
-    @Test
-    public void no_coercion_found()
-    {
-        try
-        {
-            coercer.coerce("", Map.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertTrue(ex.getMessage().contains(
-                    "Could not find a coercion from type java.lang.String to type java.util.Map"));
-        }
-    }
-
-    @Test
-    public void coercion_failure()
-    {
-        try
-        {
-            coercer.coerce(Collections.EMPTY_MAP, Float.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertTrue(ex
-                    .getMessage()
-                    .contains(
-                            "Coercion of {} to type java.lang.Float (via Object --> String, String --> Double, Double --> Float) failed"));
-            assertTrue(ex.getCause() instanceof NumberFormatException);
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test(dataProvider = "coercions_inputs")
-    public void builtin_coercions(Object input, Class targetType, Object expected)
-    {
-        Object actual = coercer.coerce(input, targetType);
-
-        assertEquals(actual, expected);
-
-        Coercion c = coercer.getCoercion(input == null ? void.class : input.getClass(), targetType);
-
-        assertEquals(c.coerce(input), expected);
-    }
-
-    @SuppressWarnings("unchecked")
-    @DataProvider
-    public Object[][] coercions_inputs()
-    {
-        String bigDecimalValue = "12345656748352435842385234598234958234574358723485.35843534285293857298457234587";
-        String bigIntegerValue = "12384584574874385743";
-
-        Object object = new Object();
-        // Over time, some of these may evolve from testing specific tuples to
-        // compound tuples (built around specific tuples).
-
-        Float floatValue = new Float(31.14);
-        byte byte1 = 12, byte2 = 56;
-        short short1 = 34, short2 = 98;
-        return new Object[][]
-        {
-        // There's a lot of these!
-
-                { this, String.class, toString() },
-
-                { 55l, Integer.class, 55 },
-
-                { "", Boolean.class, false },
-
-                { "  ", Boolean.class, false },
-
-                { "x", Boolean.class, true },
-
-                { " z ", Boolean.class, true },
-
-                { "false", Boolean.class, false },
-
-                { "  False ", Boolean.class, false },
-
-                { null, Boolean.class, false },
-
-                { new Double(256), Integer.class, new Integer(256) },
-
-                { new Double(22.7), Integer.class, new Integer(22) },
-
-                { new Integer(0), Boolean.class, false },
-
-                { new Long(32838), Boolean.class, true },
-
-                { new Integer(127), Byte.class, new Byte("127") },
-
-                { new Double(58), Short.class, new Short("58") },
-
-                { new Integer(33), Long.class, new Long(33) },
-
-                { new Integer(22), Float.class, new Float(22) },
-
-                { new Integer(1234), Double.class, new Double(1234) },
-
-                { floatValue, Double.class, floatValue.doubleValue() },
-
-                { Collections.EMPTY_LIST, Boolean.class, false },
-
-                { Collections.singleton(this), Boolean.class, true },
-
-                { bigDecimalValue, BigDecimal.class, new BigDecimal(bigDecimalValue) },
-
-                { new BigDecimal(bigDecimalValue), Double.class, 1.2345656748352436E49 },
-
-                { bigIntegerValue, BigInteger.class, new BigInteger(bigIntegerValue) },
-
-                { new BigInteger("12345678"), Long.class, 12345678l },
-
-                { -12345678l, BigInteger.class, new BigInteger("-12345678") },
-
-                { object, List.class, Collections.singletonList(object) },
-
-                { null, Iterable.class, null },
-
-                { null, List.class, null },
-
-                { null, Collection.class, null },
-
-                { null, String.class, null },
-
-                { new Object[]
-                { "a", 123 }, List.class, Arrays.asList("a", 123) },
-
-                { new String[]
-                { "a", "b" }, List.class, Arrays.asList("a", "b") },
-
-                { new byte[]
-                { byte1, byte2 }, List.class, Arrays.asList(byte1, byte2) },
-
-                { new short[]
-                { short1, short2 }, List.class, Arrays.asList(short1, short2) },
-
-                { new int[]
-                { 1, 2 }, List.class, Arrays.asList(1, 2) },
-
-                { new long[]
-                { 123L, 321L }, List.class, Arrays.asList(123L, 321L) },
-
-                { new float[]
-                { 3.4f, 7.777f }, List.class, Arrays.asList(3.4f, 7.777f) },
-
-                { new double[]
-                { 3.4, 7.777 }, List.class, Arrays.asList(3.4, 7.777) },
-
-                { new char[]
-                { 'a', 'b' }, List.class, Arrays.asList('a', 'b') },
-
-                { new boolean[]
-                { true, false }, List.class, Arrays.asList(true, false) },
-
-                { "foo/bar/baz.txt", File.class, new File("foo/bar/baz.txt") },
-
-                { new TimeInterval("2 h"), Long.class, 2 * 60 * 60 * 1000l },
-
-                { "2 h", TimeInterval.class, new TimeInterval("120 m") },
-
-                // null to arbitrary object is still null
-
-                { null, XMLReader.class, null } };
-    }
-
-    @Test(dataProvider = "explain_inputs")
-    public <S, T> void explain(Class<S> inputType, Class<T> outputType, String expected)
-    {
-        assertEquals(coercer.explain(inputType, outputType), expected);
-    }
-
-    @DataProvider
-    public Object[][] explain_inputs()
-    {
-        return new Object[][]
-        {
-        { StringBuffer.class, Integer.class, "Object --> String, String --> Long, Long --> Integer" },
-        { void.class, Map.class, "null --> null" },
-        { void.class, Boolean.class, "null --> Boolean" },
-        { Object[].class, Boolean.class, "Object[] --> java.util.List, java.util.Collection --> Boolean" },
-        { String[].class, List.class, "Object[] --> java.util.List" },
-        { Float.class, Double.class, "Float --> Double" },
-        { Double.class, BigDecimal.class, "Object --> String, String --> java.math.BigDecimal" }, };
-    }
-
-    @Test
-    public void object_to_object_array()
-    {
-        Object input = 51;
-
-        Object[] result = coercer.coerce(input, Object[].class);
-
-        assertArraysEqual(result, new Object[]
-        { input });
-    }
-
-    @Test
-    public void collection_to_object_array()
-    {
-        List<String> input = CollectionFactory.newList("fred", "barney", "wilma");
-
-        Object[] result = coercer.coerce(input, Object[].class);
-
-        assertArraysEqual(result, input.toArray());
-    }
-
-    /** TAP5-1141 */
-    @Test
-    public void object_whose_toString_returns_null_to_boolean()
-    {
-        Object idiot = new Object()
-        {
-            public String toString()
-            {
-                return null;
-            }
-        };
-
-        // To be honest, the proper result here is up for grabs. The object is not null, so you'd kind of think that the
-        // result should be true ... but the rules are to look for a known coercion, and it finds Object --> String,
-        // String --> Boolean. Converting a null String is the same as an empty String : false.
-
-        assertFalse(coercer.coerce(idiot, Boolean.class));
-
-        assertEquals(coercer.explain(idiot.getClass(), Boolean.class), "Object --> String, String --> Boolean");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/UpdateListenerHubImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/UpdateListenerHubImplTest.java
deleted file mode 100644
index 37727a8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/UpdateListenerHubImplTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-// Copyright 2006, 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import java.lang.ref.WeakReference;
-
-import org.apache.tapestry5.ioc.internal.services.UpdateListenerHubImpl;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.apache.tapestry5.services.UpdateListener;
-import org.apache.tapestry5.services.UpdateListenerHub;
-import org.testng.annotations.Test;
-
-public class UpdateListenerHubImplTest extends TestBase
-{
-    @Test
-    public void add_listener_and_invoke() throws Exception
-    {
-        UpdateListener listener = newMock(UpdateListener.class);
-
-        UpdateListenerHub hub = new UpdateListenerHubImpl();
-
-        listener.checkForUpdates();
-
-        replay();
-
-        hub.addUpdateListener(listener);
-
-        hub.fireCheckForUpdates();
-
-        verify();
-    }
-
-    @Test
-    public void weak_references_are_not_invoked_once_clears() throws Exception
-    {
-        UpdateListener listener = new UpdateListener()
-        {
-            public void checkForUpdates()
-            {
-                throw new RuntimeException("checkForUpdates() should not be invoked on a dead reference.");
-            }
-        };
-
-        WeakReference<UpdateListener> ref = new WeakReference<UpdateListener>(listener);
-
-        UpdateListenerHub hub = new UpdateListenerHubImpl();
-
-        hub.addUpdateListener(listener);
-
-        listener = null;
-
-        while (ref.get() != null)
-        {
-            System.gc();
-        }
-
-        hub.fireCheckForUpdates();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ValueObjectProviderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ValueObjectProviderTest.java
deleted file mode 100644
index 7c4d7b5..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/ValueObjectProviderTest.java
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.annotations.IntermediateType;
-import org.apache.tapestry5.ioc.annotations.Value;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.services.TypeCoercer;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.math.BigDecimal;
-
-public class ValueObjectProviderTest extends IOCTestCase
-{
-    @Test
-    public void no_value_annotation()
-    {
-        SymbolSource symbolSource = mockSymbolSource();
-        TypeCoercer coercer = mockTypeCoercer();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-
-        train_getAnnotation(annotationProvider, Value.class, null);
-
-        replay();
-
-        ValueObjectProvider provider = new ValueObjectProvider(symbolSource, coercer);
-
-        assertNull(provider.provide(Runnable.class, annotationProvider, locator));
-
-        verify();
-    }
-
-    @Test
-    public void value_annotation_present()
-    {
-        SymbolSource symbolSource = mockSymbolSource();
-        TypeCoercer coercer = mockTypeCoercer();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        String annotationValue = "${foo}";
-        String expanded = "Foo";
-        Runnable coerced = mockRunnable();
-        Value annotation = newValue(annotationValue);
-
-        train_getAnnotation(annotationProvider, Value.class, annotation);
-
-        train_getAnnotation(annotationProvider, IntermediateType.class, null);
-
-        train_expandSymbols(symbolSource, annotationValue, expanded);
-        train_coerce(coercer, expanded, Runnable.class, coerced);
-
-        replay();
-
-        ValueObjectProvider provider = new ValueObjectProvider(symbolSource, coercer);
-
-        assertSame(provider.provide(Runnable.class, annotationProvider, locator), coerced);
-
-        verify();
-    }
-
-    @Test
-    public void intermediate_type()
-    {
-        SymbolSource symbolSource = mockSymbolSource();
-        TypeCoercer coercer = mockTypeCoercer();
-        AnnotationProvider annotationProvider = mockAnnotationProvider();
-        ObjectLocator locator = mockObjectLocator();
-        String annotationValue = "${foo}";
-        String expanded = "Foo";
-        Runnable coerced = mockRunnable();
-        Value annotation = newValue(annotationValue);
-        IntermediateType it = newIntermediateType();
-        BigDecimal intervalue = new BigDecimal("1234");
-
-        train_getAnnotation(annotationProvider, Value.class, annotation);
-
-        train_getAnnotation(annotationProvider, IntermediateType.class, it);
-
-        train_value(it, BigDecimal.class);
-
-        train_expandSymbols(symbolSource, annotationValue, expanded);
-        train_coerce(coercer, expanded, BigDecimal.class, intervalue);
-        train_coerce(coercer, intervalue, Runnable.class, coerced);
-
-        replay();
-
-        ValueObjectProvider provider = new ValueObjectProvider(symbolSource, coercer);
-
-        assertSame(provider.provide(Runnable.class, annotationProvider, locator), coerced);
-
-        verify();
-    }
-
-    private Value newValue(String value)
-    {
-        Value annotation = newMock(Value.class);
-
-        expect(annotation.value()).andReturn(value);
-
-        return annotation;
-    }
-
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java
deleted file mode 100644
index 5215c1e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/services/WriteOnlyPropertyException.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.services;
-
-/**
- * Used to test {@link org.apache.tapestry5.ioc.internal.services.ExceptionAnalyzerImpl} against an exception that has a
- * write-only property.
- */
-public class WriteOnlyPropertyException extends Exception
-{
-    private String code;
-
-    public String getCode()
-    {
-        return code;
-    }
-
-    public void setFaultCode(int code)
-    {
-        this.code = String.format("%04d", code);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Bar.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Bar.java
deleted file mode 100644
index 75d4ba3..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Bar.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Used by {@link InheritanceSearchTest}.
- */
-public interface Bar
-{
-    void bar();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/BarImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/BarImpl.java
deleted file mode 100644
index e403b41..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/BarImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Used by {@link InheritanceSearchTest}.
- */
-public class BarImpl implements Bar
-{
-
-    public void bar()
-    {
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/BaseGenericBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/BaseGenericBean.java
deleted file mode 100644
index dc4c2c7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/BaseGenericBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-public class BaseGenericBean<T>
-{
-    private T value;
-
-    public T getValue()
-    {
-        return value;
-    }
-
-    public void setValue(T value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ClasspathResourceTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ClasspathResourceTest.java
deleted file mode 100644
index 73d80de..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ClasspathResourceTest.java
+++ /dev/null
@@ -1,251 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Resource;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.io.BufferedInputStream;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.io.Reader;
-import java.net.URL;
-import java.util.Locale;
-
-public class ClasspathResourceTest extends Assert
-{
-    private static final String RESOURCE_TXT_CONTENT = "content from resource.txt";
-
-    private static final String FOLDER = "org/apache/tapestry5/ioc/internal/util";
-
-    private static final String PATH = FOLDER + "/resource.txt";
-
-    @Test
-    public void get_resource_URL() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        assertEquals(content(r), RESOURCE_TXT_CONTENT);
-    }
-
-    @Test
-    public void relative_to_root_resource() throws Exception
-    {
-        Resource r = new ClasspathResource("").forFile(PATH);
-
-        assertEquals(content(r), RESOURCE_TXT_CONTENT);
-    }
-
-    @Test
-    public void relative_to_root_resource_using_leading_slash() throws Exception
-    {
-        Resource r = new ClasspathResource("/").forFile(PATH);
-
-        assertEquals(content(r), RESOURCE_TXT_CONTENT);
-    }
-
-    @Test
-    public void leading_slash_on_path_relative_to_root_doesnt_matter() throws Exception
-    {
-        Resource r = new ClasspathResource("/").forFile("/" + PATH);
-
-        assertEquals(content(r), RESOURCE_TXT_CONTENT);
-    }
-
-    @Test
-    public void path_and_file()
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        assertEquals(r.getFolder(), FOLDER);
-        assertEquals(r.getFile(), "resource.txt");
-
-    }
-
-    @Test
-    public void for_file_in_same_folder() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource n = r.forFile("same-folder.txt");
-
-        assertEquals(content(n), "content from same-folder resource");
-    }
-
-    @Test
-    public void for_file_single_dot() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource n = r.forFile("./same-folder.txt");
-
-        assertEquals(content(n), "content from same-folder resource");
-    }
-
-    @Test
-    public void multiple_slashes_treated_as_single_slash() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource n = r.forFile("././/.///same-folder.txt");
-
-        assertEquals(content(n), "content from same-folder resource");
-    }
-
-    @Test
-    public void for_file_in_subfolder() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource n = r.forFile("sub/sub-folder.txt");
-
-        assertEquals(content(n), "content from sub-folder resource");
-    }
-
-    @Test
-    public void for_file_same_resource() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        assertSame(r.forFile("../util/resource.txt"), r);
-    }
-
-    @Test
-    public void for_file_in_parent_folder() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource n = r.forFile("../parent-folder.txt");
-
-        assertEquals(content(n), "content from parent-folder resource");
-    }
-
-    @Test
-    public void to_string() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        assertEquals(r.toString(), "classpath:" + PATH);
-    }
-
-    @Test
-    public void get_URL_for_missing_resource() throws Exception
-    {
-        Resource r = new ClasspathResource(FOLDER + "/missing-resource.txt");
-
-        assertNull(r.toURL());
-    }
-
-    @Test
-    public void localization_of_resource() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource l = r.forLocale(Locale.FRENCH);
-
-        assertEquals(content(l), "french content");
-    }
-
-    @Test
-    public void localization_to_closest_match() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource l = r.forLocale(Locale.CANADA_FRENCH);
-
-        assertEquals(content(l), "french content");
-    }
-
-    @Test
-    public void localization_to_base_resource() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        Resource l = r.forLocale(Locale.JAPANESE);
-
-        assertSame(l, r);
-    }
-
-    @Test
-    public void with_extension_same_extension()
-    {
-        Resource r = new ClasspathResource(PATH);
-
-        assertSame(r.withExtension("txt"), r);
-    }
-
-    @Test
-    public void with_extension() throws Exception
-    {
-        Resource r = new ClasspathResource(PATH);
-        Resource e = r.withExtension("ext");
-
-        assertEquals(content(e), "ext content");
-    }
-
-    @Test
-    public void with_extension_adds_extension() throws Exception
-    {
-        Resource r = new ClasspathResource(FOLDER + "/resource");
-        Resource e = r.withExtension("ext");
-
-        assertEquals(content(e), "ext content");
-    }
-
-    @Test
-    public void with_extension_missing_resource_is_null()
-    {
-        Resource r = new ClasspathResource(PATH);
-        Resource e = r.withExtension("does-not-exist");
-
-        assertNull(e.toURL());
-    }
-
-    @Test
-    public void localization_of_missing_resource() throws Exception
-    {
-        Resource r = new ClasspathResource(FOLDER + "/missing-resource.txt");
-
-        assertNull(r.forLocale(Locale.FRENCH));
-    }
-
-    private String content(Resource resource) throws Exception
-    {
-        return content(resource.toURL());
-    }
-
-    private String content(URL url) throws Exception
-    {
-        InputStream is = new BufferedInputStream(url.openStream());
-        Reader r = new InputStreamReader(is);
-
-        StringBuilder builder = new StringBuilder();
-        char[] buffer = new char[2000];
-
-        while (true)
-        {
-            int length = r.read(buffer, 0, buffer.length);
-
-            if (length < 0) break;
-
-            builder.append(buffer, 0, length);
-        }
-
-        r.close();
-
-        return builder.toString().trim();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/CollectionFactoryTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/CollectionFactoryTest.java
deleted file mode 100644
index a452bd6..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/CollectionFactoryTest.java
+++ /dev/null
@@ -1,152 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.*;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.*;
-import static java.util.Arrays.asList;
-
-public class CollectionFactoryTest extends Assert
-{
-
-    @Test
-    public void new_map()
-    {
-        Map<String, Class> map = newMap();
-
-        assertTrue(map instanceof HashMap);
-    }
-
-    @Test
-    public void copy_map()
-    {
-        Map<String, Class> map = newMap();
-
-        map.put("this", CollectionFactoryTest.class);
-
-        Map<String, Class> copy = CollectionFactory.newMap(map);
-
-        assertEquals(copy, map);
-
-        map.put("other", Map.class);
-
-        assertFalse(copy.equals(map));
-    }
-
-    @Test
-    public void new_set()
-    {
-        Set<String> set = newSet();
-
-        assertTrue(set instanceof HashSet);
-    }
-
-    @Test
-    public void copy_set()
-    {
-        List<String> start = asList("fred", "barney");
-
-        Set<String> set = newSet(start);
-
-        assertEquals(set.size(), 2);
-        assertTrue(set.contains("fred"));
-        assertTrue(set.contains("barney"));
-    }
-
-    @Test
-    public void set_from_varargs()
-    {
-        Set<String> set = newSet("fred", "barney");
-
-        assertEquals(set.size(), 2);
-        assertTrue(set.contains("fred"));
-        assertTrue(set.contains("barney"));
-    }
-
-    @Test
-    public void new_list()
-    {
-        List<String> list = newList();
-
-        assertTrue(list instanceof ArrayList);
-    }
-
-    @Test
-    public void new_list_copy()
-    {
-        List<String> start = Arrays.asList("Fred", "Barney", "Wilma");
-        List<String> copy = newList(start);
-
-        assertNotSame(copy, start);
-        assertEquals(copy, start);
-    }
-
-    @Test
-    public void new_list_from_elements()
-    {
-        List<String> list = newList("Fred", "Barney");
-
-        assertEquals(list.size(), 2);
-        assertEquals(list.get(0), "Fred");
-        assertEquals(list.get(1), "Barney");
-    }
-
-    private static final int THREAD_COUNT = 20;
-
-    @Test
-    public void new_threadsafe_list() throws Exception
-    {
-        final List<String> threadNames = CollectionFactory.newThreadSafeList();
-
-        List<Thread> threads = CollectionFactory.newList();
-
-        Runnable r = new Runnable()
-        {
-            public void run()
-            {
-                String name = Thread.currentThread().getName();
-                threadNames.add(name);
-            }
-        };
-
-        for (int i = 0; i < THREAD_COUNT; i++)
-        {
-            Thread t = new Thread(r);
-            threads.add(t);
-        }
-
-        // Start all the threads at the same time.
-
-        for (Thread t : threads)
-        {
-            t.start();
-        }
-
-        // Wait for all threads to complete
-
-        for (Thread t : threads)
-        {
-            t.join();
-        }
-
-        // Make sure they all executed. If the list was not thread safe, highly unlikely this
-        // would work.
-
-        assertEquals(threadNames.size(), THREAD_COUNT);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentBarrierTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentBarrierTest.java
deleted file mode 100644
index 26512cd..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentBarrierTest.java
+++ /dev/null
@@ -1,232 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-/**
- * Test is structured a bit oddly, since it evolved from when the Concurrence annotation and aspect evolved into the
- * {@link ConcurrentBarrier} utility class.
- */
-@Test(sequential = true)
-public class ConcurrentBarrierTest extends TestBase
-{
-    private ConcurrentTarget target = new ConcurrentTarget();
-
-    private static final int THREAD_COUNT = 100;
-
-    private static final int THREAD_BLOCK_SIZE = 5;
-
-    @Test
-    public void read_lock_then_write_lock() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                target.incrementCounter();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    @Test
-    public void read_lock_inside_write_lock() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                // Gets a write lock, then a read lock.
-                target.incrementCounterHard();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    @Test(enabled = true)
-    public void write_lock_inside_read_lock() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                // A read lock method that upgrades to a write lock
-
-                target.incrementIfNonNegative();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    @Test(enabled = true)
-    public void indirection_between_read_method_and_write_method() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-
-                // Read lock method invokes other class, that invokes write method.
-
-                target.incrementViaRunnable();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    /**
-     * Test that locking, especially read lock upgrade and downgrade, work properly when there's more than one object
-     * involved.
-     */
-    @Test
-    public void multiple_synchronized_objects() throws Exception
-    {
-        Runnable operation = new ConcurrentTargetWrapper(target);
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    @Test
-    public void read_lock_then_try_write_lock() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                boolean good = false;
-                while (!good) good = target.tryIncrementCounter();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    @Test
-    public void read_lock_inside_try_write_lock() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                // Gets a write lock, then a read lock.
-                boolean good = false;
-                while (!good) good = target.tryIncrementCounterHard();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-    @Test(enabled = true)
-    public void try_write_lock_inside_read_lock() throws Exception
-    {
-        Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                // A read lock method that upgrades to a write lock
-                boolean good = false;
-                while (!good) good = target.tryIncrementIfNonNegative();
-            }
-        };
-
-        runOperationAndCheckCounter(operation);
-    }
-
-
-    @Test(enabled = true)
-    public void write_lock_timeout_inside_read_lock() throws Exception
-    {
-        final Runnable operation = new Runnable()
-        {
-            public void run()
-            {
-                // A read lock method that upgrades to a write lock
-
-                assertEquals(target.tryIncrementIfNonNegative(), false);
-            }
-        };
-
-        target.withRead(new Runnable()
-        {
-            public void run()
-            {
-                try
-                {
-                    runOperation(operation);
-                }
-                catch (InterruptedException e)
-                {
-                }
-            }
-        });
-        assertEquals(target.getCounter(), 0);
-
-    }
-
-
-    private void runOperationAndCheckCounter(Runnable operation) throws InterruptedException
-    {
-        runOperation(operation);
-
-        assertEquals(target.getCounter(), THREAD_COUNT);
-    }
-
-    private void runOperation(Runnable operation)
-            throws InterruptedException
-    {
-        List<Thread> threads = newList();
-        List<Thread> running = newList();
-
-        target.setCounter(0);
-
-        for (int i = 0; i < THREAD_COUNT; i++)
-        {
-
-            Thread t = new Thread(operation);
-
-            threads.add(t);
-
-            if (threads.size() >= THREAD_BLOCK_SIZE)
-                startThreads(threads, running);
-        }
-
-        startThreads(threads, running);
-
-        for (Thread t : running)
-            t.join();
-    }
-
-    private void startThreads(List<Thread> threads, List<Thread> running)
-    {
-        for (Thread t : threads)
-        {
-            t.start();
-            running.add(t);
-        }
-
-        threads.clear();
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentTarget.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentTarget.java
deleted file mode 100644
index cc598af..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentTarget.java
+++ /dev/null
@@ -1,157 +0,0 @@
-// Copyright 2006, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.util.ArrayList;
-import java.util.List;
-import org.apache.tapestry5.ioc.Invokable;
-
-import java.util.concurrent.TimeUnit;
-
-public class ConcurrentTarget
-{
-    private final ConcurrentBarrier barrier = new ConcurrentBarrier();
-
-    private int counter;
-
-    // Used to check if read locks accumulate when a read lock method calls another read lock method
-    public int readCounter()
-    {
-        return barrier.withRead(new Invokable<Integer>()
-        {
-            public Integer invoke()
-            {
-                return getCounter();
-            }
-        });
-    }
-
-    public int getCounter()
-    {
-        return barrier.withRead(new Invokable<Integer>()
-        {
-            public Integer invoke()
-            {
-                return counter;
-            }
-        });
-    }
-
-    public void incrementCounter()
-    {
-        barrier.withWrite(new Runnable()
-        {
-            public void run()
-            {
-                counter++;
-            }
-        });
-    }
-
-    public void setCounter(final int counter)
-    {
-        barrier.withWrite(new Runnable()
-        {
-            public void run()
-            {
-                ConcurrentTarget.this.counter = counter;
-            }
-        });
-    }
-
-    public void incrementIfNonNegative()
-    {
-        barrier.withRead(new Runnable()
-        {
-            public void run()
-            {
-                if (counter >= 0)
-                    incrementCounter();
-            }
-        });
-    }
-
-    public void incrementViaRunnable()
-    {
-        barrier.withRead(new Runnable()
-        {
-            public void run()
-            {
-                Runnable r = new Runnable()
-                {
-                    public void run()
-                    {
-                        incrementCounter();
-                    }
-                };
-
-                r.run();
-            }
-        });
-    }
-
-    public void incrementCounterHard()
-    {
-        barrier.withWrite(new Runnable()
-        {
-            public void run()
-            {
-                counter = getCounter() + 1;
-            }
-        });
-    }
-
-    public boolean tryIncrementCounter()
-    {
-        return barrier.tryWithWrite(new Runnable()
-        {
-            public void run()
-            {
-                counter++;
-            }
-        }, 20, TimeUnit.MILLISECONDS);
-    }
-
-    public boolean tryIncrementCounterHard()
-    {
-        return barrier.tryWithWrite(new Runnable()
-        {
-            public void run()
-            {
-                counter = getCounter() + 1;
-            }
-        }, 20, TimeUnit.MILLISECONDS);
-    }
-
-    public boolean tryIncrementIfNonNegative()
-    {
-        final List<Boolean> result = new ArrayList<Boolean>();
-        barrier.withRead(new Runnable()
-        {
-            public void run()
-            {
-                if (counter >= 0)
-                    result.add(tryIncrementCounter());
-            }
-        });
-        return result.get(0);
-    }
-
-
-    public void withRead(Runnable runnable)
-    {
-        barrier.withRead(runnable);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentTargetWrapper.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentTargetWrapper.java
deleted file mode 100644
index 6a16a7f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/ConcurrentTargetWrapper.java
+++ /dev/null
@@ -1,39 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-public class ConcurrentTargetWrapper implements Runnable
-{
-    private final ConcurrentBarrier barrier = new ConcurrentBarrier();
-
-    private final ConcurrentTarget target;
-
-    public ConcurrentTargetWrapper(ConcurrentTarget target)
-    {
-        this.target = target;
-    }
-
-    public void run()
-    {
-        barrier.withRead(new Runnable()
-        {
-            public void run()
-            {
-                target.incrementCounter();
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/DummyLockTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/DummyLockTest.java
deleted file mode 100644
index d8a91df..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/DummyLockTest.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.util.concurrent.locks.Lock;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class DummyLockTest extends Assert
-{
-    @Test
-    public void dummy_lock_functions_are_noops() throws Exception
-    {
-        Lock lock = new DummyLock();
-
-        lock.lock();
-        lock.unlock();
-        lock.lockInterruptibly();
-
-        assertNull(lock.newCondition());
-        assertTrue(lock.tryLock());
-        assertTrue(lock.tryLock(0, null));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FieldInjectionViaInject.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FieldInjectionViaInject.java
deleted file mode 100644
index 9788d6c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FieldInjectionViaInject.java
+++ /dev/null
@@ -1,31 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-
-public class FieldInjectionViaInject
-{
-    @Inject
-    @Builtin
-    private SymbolSource symbolSource;
-
-    public SymbolSource getSymbolSource()
-    {
-        return symbolSource;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FieldInjectionViaInjectService.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FieldInjectionViaInjectService.java
deleted file mode 100644
index 693351c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FieldInjectionViaInjectService.java
+++ /dev/null
@@ -1,29 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-
-public class FieldInjectionViaInjectService
-{
-    @InjectService("FredService")
-    private Runnable fred;
-
-    public Runnable getFred() { return fred; }
-
-    @Override
-    public String toString()
-    { return "<FieldInjectionViaInjectService>"; }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Foo.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Foo.java
deleted file mode 100644
index 828d85b..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Foo.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Used by {@link InheritanceSearchTest}.
- */
-public interface Foo extends Bar
-{
-    void foo();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooBar.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooBar.java
deleted file mode 100644
index ed0b743..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooBar.java
+++ /dev/null
@@ -1,24 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Used by {@link InheritanceSearchTest}.
- */
-public interface FooBar extends Foo, Bar
-{
-    void foobar();
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooBarImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooBarImpl.java
deleted file mode 100644
index c4a030f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooBarImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Used by {@link InheritanceSearchTest}.
- */
-public class FooBarImpl extends FooImpl implements Bar, FooBar
-{
-
-    public void foobar()
-    {
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooImpl.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooImpl.java
deleted file mode 100644
index 70dfd1c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/FooImpl.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Used by {@link InheritanceSearchTest}.
- */
-public class FooImpl extends BarImpl implements Foo
-{
-
-    public void foo()
-    {
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/GenericUtilsTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/GenericUtilsTest.java
deleted file mode 100644
index 5223868..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/GenericUtilsTest.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.lang.reflect.Method;
-
-public class GenericUtilsTest extends Assert
-{
-    protected Method find(Class clazz, String name)
-    {
-        for (Method m : clazz.getMethods())
-        {
-            if (m.getName().equalsIgnoreCase(name)) return m;
-        }
-
-        throw new IllegalArgumentException(
-                String.format("Could not locate a public method named '%s' in %s.", name, clazz));
-
-    }
-
-    @Test
-    public void generic_return_type_of_non_generic_type()
-    {
-        Method m = find(NonGenericBean.class, "getvalue");
-
-        assertSame(GenericsUtils.extractGenericReturnType(NonGenericBean.class, m), String.class);
-    }
-
-    @Test
-    public void generic_return_type_of_parameterized_bean()
-    {
-        Method m = find(StringBean.class, "getvalue");
-
-        assertSame(GenericsUtils.extractGenericReturnType(StringBean.class, m), String.class);
-    }
-
-    @Test
-    public void generic_bean_with_multiple_parameters()
-    {
-        Method getKey = find(StringLongPair.class, "getkey");
-        Method getValue = find(StringLongPair.class, "getvalue");
-
-        assertSame(GenericsUtils.extractGenericReturnType(StringLongPair.class, getKey), String.class);
-        assertSame(GenericsUtils.extractGenericReturnType(StringLongPair.class, getValue), Long.class);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearchTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearchTest.java
deleted file mode 100644
index 401249c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InheritanceSearchTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-import java.io.Serializable;
-import java.util.List;
-
-/**
- *
- */
-public class InheritanceSearchTest extends TestBase
-{
-
-    @Test
-    public void remove_always_fails()
-    {
-        try
-        {
-            new InheritanceSearch(Object.class).remove();
-            unreachable();
-        }
-        catch (UnsupportedOperationException ex)
-        {
-
-        }
-    }
-
-    @Test
-    public void next_when_no_more()
-    {
-        InheritanceSearch s = new InheritanceSearch(Object.class);
-
-        assertSame(s.next(), Object.class);
-        assertFalse(s.hasNext());
-
-        try
-        {
-            s.next();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-
-        }
-    }
-
-    @Test
-    public void inheritance_of_object()
-    {
-        check(Object.class, Object.class);
-    }
-
-    @Test
-    public void inheritance_of_string()
-    {
-        check(
-                String.class,
-                String.class,
-                Serializable.class,
-                Comparable.class,
-                CharSequence.class,
-                Object.class);
-    }
-
-    @Test
-    public void inheritance_of_an_interface()
-    {
-        check(Comparable.class, Comparable.class, Object.class);
-    }
-
-    @Test
-    public void inheritance_search_order_for_interfaces()
-    {
-        check(FooBar.class, FooBar.class, Foo.class, Bar.class, Object.class);
-    }
-
-    @Test
-    public void inheritance_search_order_for_classes()
-    {
-        check(
-                FooBarImpl.class,
-                FooBarImpl.class,
-                FooImpl.class,
-                BarImpl.class,
-                Bar.class,
-                FooBar.class,
-                Foo.class,
-                Object.class);
-
-    }
-
-    @Test
-    public void inheritance_of_primitive()
-    {
-        check(
-                long.class,
-                long.class,
-                Long.class,
-                Number.class,
-                Comparable.class,
-                Serializable.class,
-                Object.class);
-    }
-
-    @Test
-    public void inheritance_of_void()
-    {
-        check(void.class, void.class, Object.class);
-    }
-
-    @Test
-    public void inheritance_of_primitive_array()
-    {
-        check(long[].class, long[].class, Cloneable.class, Serializable.class, Object.class);
-    }
-
-    @Test
-    public void inheritance_of_a_2d_primitive_array()
-    {
-        check(int[][].class, int[][].class, Cloneable.class, Serializable.class, Object.class);
-    }
-
-    @Test
-    public void inheritance_of_an_object_array()
-    {
-        check(
-                String[].class,
-                String[].class,
-                Object[].class,
-                Cloneable.class,
-                Serializable.class,
-                Object.class);
-    }
-
-    @Test
-    public void inheritance_of_a_2d_object_array()
-    {
-        check(
-                String[][].class,
-                String[][].class,
-                Object[].class,
-                Cloneable.class,
-                Serializable.class,
-                Object.class);
-    }
-
-    private void check(Class searchClass, Class... expected)
-    {
-        List<Class> list = CollectionFactory.newList();
-
-        // This for loop is how the class is generally used:
-
-        for (Class c : new InheritanceSearch(searchClass))
-            list.add(c);
-
-        assertEquals(list.toArray(), expected);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InjectoBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InjectoBean.java
deleted file mode 100644
index f0d7a78..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InjectoBean.java
+++ /dev/null
@@ -1,54 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-
-public class InjectoBean
-{
-    private final String foo;
-    private final Runnable bar;
-
-    public InjectoBean()
-    {
-        this(null);
-    }
-
-    @Inject
-    public InjectoBean(String foo)
-    {
-        this(foo, null);
-    }
-
-    /**
-     * Normally, this would be chosen as it has the most parameters.
-     */
-    public InjectoBean(String foo, Runnable bar)
-    {
-
-        this.foo = foo;
-        this.bar = bar;
-    }
-
-    public String getFoo()
-    {
-        return foo;
-    }
-
-    public Runnable getBar()
-    {
-        return bar;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java
deleted file mode 100644
index 0986096..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/InternalUtilsTest.java
+++ /dev/null
@@ -1,693 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import static org.apache.tapestry5.ioc.internal.util.InternalUtils.toList;
-import static org.easymock.EasyMock.eq;
-import static org.easymock.EasyMock.isA;
-
-import java.io.Closeable;
-import java.io.IOException;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.Enumeration;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.tapestry5.func.F;
-import org.apache.tapestry5.func.Predicate;
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Locatable;
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ObjectLocator;
-import org.apache.tapestry5.ioc.OperationTracker;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-import org.apache.tapestry5.ioc.internal.QuietOperationTracker;
-import org.apache.tapestry5.ioc.services.Builtin;
-import org.apache.tapestry5.ioc.services.Coercion;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.easymock.EasyMock;
-import org.easymock.IAnswer;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class InternalUtilsTest extends IOCTestCase
-{
-    private final OperationTracker tracker = new QuietOperationTracker();
-
-    private static class PrivateInnerClass
-    {
-        public PrivateInnerClass()
-        {
-        }
-    }
-
-    public static class PublicInnerClass
-    {
-        protected PublicInnerClass()
-        {
-        }
-    }
-
-    @Test
-    public void method_as_string_no_args() throws Exception
-    {
-
-        Method m = Object.class.getMethod("toString");
-
-        assertEquals(InternalUtils.asString(m), "java.lang.Object.toString()");
-    }
-
-    @Test
-    public void method_as_string_with_args() throws Exception
-    {
-        Method m = Collections.class.getMethod("sort", List.class, Comparator.class);
-
-        assertEquals(InternalUtils.asString(m), "java.util.Collections.sort(List, Comparator)");
-    }
-
-    @Test
-    public void method_as_string_primitive_arg() throws Exception
-    {
-        Method m = Object.class.getMethod("wait", long.class);
-
-        assertEquals(InternalUtils.asString(m), "java.lang.Object.wait(long)");
-    }
-
-    @Test
-    public void method_as_string_primitive_array_arg() throws Exception
-    {
-        Method m = Arrays.class.getMethod("sort", int[].class);
-
-        assertEquals(InternalUtils.asString(m), "java.util.Arrays.sort(int[])");
-    }
-
-    @Test
-    public void method_as_string_array_arg() throws Exception
-    {
-        Method m = Arrays.class.getMethod("sort", Object[].class);
-
-        assertEquals(InternalUtils.asString(m), "java.util.Arrays.sort(Object[])");
-    }
-
-    @Test
-    public void array_size_when_null()
-    {
-        Object[] array = null;
-
-        assertEquals(InternalUtils.size(array), 0);
-    }
-
-    @Test
-    public void array_size_when_non_null()
-    {
-        Object[] array =
-        { 1, 2, 3 };
-
-        assertEquals(InternalUtils.size(array), 3);
-    }
-
-    @Test(dataProvider = "memberNameData")
-    public void strip_member_name(String input, String expected)
-    {
-        assertEquals(InternalUtils.stripMemberName(input), expected);
-    }
-
-    @DataProvider
-    public Object[][] memberNameData()
-    {
-        return new Object[][]
-        {
-        { "simple", "simple" },
-        { "_name", "name" },
-        { "$name", "name" },
-        { "ruby_style", "ruby_style" },
-        { "__$ruby_style_", "ruby_style" },
-        { "$_$__$__$_$___$_$_$_$$name$", "name" },
-        { "foo_", "foo" },
-        { "_foo_", "foo" } };
-    }
-
-    @Test
-    public void strip_illegal_member_name()
-    {
-        try
-        {
-            InternalUtils.stripMemberName("!foo");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(), "Input '!foo' is not a valid Java identifier.");
-        }
-    }
-
-    @Test
-    public void enumeration_to_list()
-    {
-        List<String> input = Arrays.asList("wilma", "fred", "barney");
-        Enumeration e = Collections.enumeration(input);
-
-        List<String> output = toList(e);
-
-        assertEquals(output, Arrays.asList("barney", "fred", "wilma"));
-    }
-
-    @Test
-    public void join_empty_list()
-    {
-        List<String> empty = CollectionFactory.newList();
-
-        assertEquals(InternalUtils.join(empty), "");
-    }
-
-    @Test
-    public void join_single()
-    {
-        List<String> single = Arrays.asList("barney");
-
-        assertEquals(InternalUtils.join(single), "barney");
-    }
-
-    @Test
-    public void join_multiple()
-    {
-        List<String> many = Arrays.asList("fred", "barney", "wilma");
-        assertEquals(InternalUtils.join(many), "fred, barney, wilma");
-    }
-
-    @Test
-    public void join_with_blank()
-    {
-        List<String> many = Arrays.asList("fred", "barney", "", "wilma");
-        assertEquals(InternalUtils.join(many), "fred, barney, (blank), wilma");
-    }
-
-    @Test
-    public void join_sorted()
-    {
-        List<String> unsorted = Arrays.asList("betty", "fred", "barney", "wilma");
-        List<String> copy = CollectionFactory.newList(unsorted);
-
-        assertEquals(InternalUtils.joinSorted(copy), "barney, betty, fred, wilma");
-
-        // Make sure that joinSorted() doesn't change the input list
-
-        assertEquals(copy, unsorted);
-    }
-
-    @Test
-    public void join_sorted_with_blank()
-    {
-        List<String> unsorted = Arrays.asList("betty", "fred", "barney", "", "wilma");
-
-        assertEquals(InternalUtils.joinSorted(unsorted), "(blank), barney, betty, fred, wilma");
-    }
-
-    @Test(dataProvider = "capitalize_inputs")
-    public void capitalize(String input, String expected)
-    {
-        assertEquals(InternalUtils.capitalize(input), expected);
-    }
-
-    @DataProvider(name = "capitalize_inputs")
-    public Object[][] capitalize_inputs()
-    {
-        return new Object[][]
-        {
-        { "hello", "Hello" },
-        { "Goodbye", "Goodbye" },
-        { "", "" },
-        { "a", "A" },
-        { "A", "A" } };
-    }
-
-    @Test
-    public void location_of_not_found()
-    {
-        assertNull(InternalUtils.locationOf(null));
-        assertNull(InternalUtils.locationOf("La! La!"));
-    }
-
-    @Test
-    public void location_of_location()
-    {
-        Location l = mockLocation();
-
-        replay();
-
-        assertSame(l, InternalUtils.locationOf(l));
-
-        verify();
-    }
-
-    @Test
-    public void location_of_locatable()
-    {
-        Location l = mockLocation();
-        Locatable locatable = newMock(Locatable.class);
-
-        expect(locatable.getLocation()).andReturn(l);
-
-        replay();
-
-        assertSame(l, InternalUtils.locationOf(locatable));
-
-        verify();
-    }
-
-    @Test
-    public void sorted_keys_from_null_map()
-    {
-        List<String> list = InternalUtils.sortedKeys(null);
-
-        assertTrue(list.isEmpty());
-    }
-
-    @Test
-    public void sorted_keys_from_map()
-    {
-        Map<String, String> map = newMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-
-        assertEquals(InternalUtils.sortedKeys(map), Arrays.asList("barney", "fred"));
-    }
-
-    @Test
-    public void get_from_null_map()
-    {
-        assertNull(InternalUtils.get(null, null));
-    }
-
-    @Test
-    public void get_from_map()
-    {
-        Map<String, String> map = newMap();
-
-        map.put("fred", "flintstone");
-
-        assertEquals("flintstone", InternalUtils.get(map, "fred"));
-    }
-
-    @Test
-    public void reverse_iterator()
-    {
-        List<String> list = Arrays.asList("a", "b", "c");
-
-        Iterator<String> i = InternalUtils.reverseIterator(list);
-
-        assertTrue(i.hasNext());
-        assertEquals(i.next(), "c");
-
-        assertTrue(i.hasNext());
-        assertEquals(i.next(), "b");
-
-        assertTrue(i.hasNext());
-        assertEquals(i.next(), "a");
-
-        assertFalse(i.hasNext());
-    }
-
-    @Test
-    public void reverse_iterator_does_not_support_remove()
-    {
-        List<String> list = Arrays.asList("a", "b", "c");
-
-        Iterator<String> i = InternalUtils.reverseIterator(list);
-
-        try
-        {
-            i.remove();
-            unreachable();
-        }
-        catch (UnsupportedOperationException ex)
-        {
-
-        }
-    }
-
-    @Test
-    public void last_term()
-    {
-        String input = "SimpleInput";
-
-        assertSame(InternalUtils.lastTerm(input), input);
-
-        assertEquals(InternalUtils.lastTerm("fie.fie.foe.fum"), "fum");
-    }
-
-    @Test
-    public void add_to_list_map()
-    {
-        Map<String, List<Integer>> map = CollectionFactory.newMap();
-
-        InternalUtils.addToMapList(map, "fred", 1);
-
-        assertEquals(map.get("fred"), Arrays.asList(1));
-
-        InternalUtils.addToMapList(map, "fred", 2);
-
-        assertEquals(map.get("fred"), Arrays.asList(1, 2));
-    }
-
-    // Test the check for runtime annotation. This is all well and good, we actually don't have a proper test
-    // that this code is used (ideally we should have tests for @Marker on a module, on a service impl, and passed
-    // to ServiceBindingOptions.withMarker(), to prove that those are wired for checks.
-
-    @Test
-    public void validate_marker_annotation()
-    {
-        InternalUtils.validateMarkerAnnotation(Inject.class);
-
-        try
-        {
-            InternalUtils.validateMarkerAnnotations(new Class[]
-            { Inject.class, NotRetainedRuntime.class });
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Marker annotation class org.apache.tapestry5.ioc.internal.util.NotRetainedRuntime is not valid because it is not visible at runtime. Add a @Retention(RetentionPolicy.RUNTIME) to the class.");
-        }
-    }
-
-    @Test
-    public void join_sorted_null()
-    {
-        assertEquals(InternalUtils.joinSorted(null), "(none)");
-    }
-
-    @Test
-    public void join_sorted_empty()
-    {
-        assertEquals(InternalUtils.joinSorted(Collections.emptyList()), "(none)");
-    }
-
-    @Test
-    public void close_null_is_noop()
-    {
-        InternalUtils.close(null);
-    }
-
-    @Test
-    public void close_success() throws Exception
-    {
-        Closeable c = newMock(Closeable.class);
-
-        c.close();
-
-        replay();
-
-        InternalUtils.close(c);
-
-        verify();
-    }
-
-    @Test
-    public void close_ignores_exceptions() throws Exception
-    {
-        Closeable c = newMock(Closeable.class);
-
-        c.close();
-        setThrowable(new IOException());
-
-        replay();
-
-        InternalUtils.close(c);
-
-        verify();
-    }
-
-    @Test
-    public void constructor_with_inject_annotation()
-    {
-        Constructor c = InternalUtils.findAutobuildConstructor(InjectoBean.class);
-
-        assertEquals(c.getParameterTypes().length, 1);
-        assertEquals(c.getParameterTypes()[0], String.class);
-    }
-
-    @Test
-    public void validate_constructor_class_not_public()
-    {
-        Class clazz = PrivateInnerClass.class;
-        Constructor cons = clazz.getConstructors()[0];
-
-        try
-        {
-            InternalUtils.validateConstructorForAutobuild(cons);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "Class org.apache.tapestry5.ioc.internal.util.InternalUtilsTest$PrivateInnerClass is not a public class and may not be autobuilt.");
-        }
-    }
-
-    @Test
-    public void validate_constructor_check_for_public()
-    {
-        Class clazz = PublicInnerClass.class;
-        Constructor cons = clazz.getDeclaredConstructors()[0];
-
-        try
-        {
-            InternalUtils.validateConstructorForAutobuild(cons);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertMessageContains(
-                    ex,
-                    "Constructor protected org.apache.tapestry5.ioc.internal.util.InternalUtilsTest$PublicInnerClass() is not public and may not be used for autobuilding an instance of the class.");
-        }
-    }
-
-    @Test
-    public void inject_service_annotation_on_field()
-    {
-        ObjectLocator ol = mockObjectLocator();
-        FieldInjectionViaInjectService target = new FieldInjectionViaInjectService();
-        Runnable fred = mockRunnable();
-
-        train_getService(ol, "FredService", Runnable.class, fred);
-
-        replay();
-
-        InternalUtils.injectIntoFields(target, ol, null, tracker);
-
-        assertSame(target.getFred(), fred);
-
-        verify();
-    }
-
-    @Test
-    public void inject_annotation_on_field()
-    {
-        ObjectLocator ol = mockObjectLocator();
-        FieldInjectionViaInject target = new FieldInjectionViaInject();
-        final SymbolSource ss = mockSymbolSource();
-
-        IAnswer answer = new IAnswer()
-        {
-            public Object answer() throws Throwable
-            {
-                Object[] args = EasyMock.getCurrentArguments();
-
-                AnnotationProvider ap = (AnnotationProvider) args[1];
-
-                // Verify that annotations on the field are accessible.
-
-                assertNotNull(ap.getAnnotation(Builtin.class));
-
-                return ss;
-            }
-        };
-
-        expect(ol.getObject(eq(SymbolSource.class), isA(AnnotationProvider.class))).andAnswer(answer);
-
-        replay();
-
-        InternalUtils.injectIntoFields(target, ol, null, tracker);
-
-        assertSame(target.getSymbolSource(), ss);
-
-        verify();
-    }
-
-    @Test
-    public void exception_injecting_into_field()
-    {
-        ObjectLocator ol = mockObjectLocator();
-        FieldInjectionViaInjectService target = new FieldInjectionViaInjectService();
-
-        // It's very hard to come up with a value that causes an error when assigned. We have to break
-        // a lot of rules.
-
-        ol.getService("FredService", Runnable.class);
-        EasyMock.expectLastCall().andReturn("NotTheRightType");
-
-        replay();
-
-        try
-        {
-            InternalUtils.injectIntoFields(target, ol, null, tracker);
-
-            unreachable();
-        }
-        catch (Exception ex)
-        {
-            assertMessageContains(ex,
-                    "Unable to set field 'fred' of <FieldInjectionViaInjectService> to NotTheRightType");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void keys_on_null_is_empty()
-    {
-        assertTrue(InternalUtils.keys(null).isEmpty());
-    }
-
-    @Test
-    public void keys_on_actual_map()
-    {
-        Map<String, Integer> map = CollectionFactory.newMap();
-
-        map.put("frobozz", 41);
-        map.put("gnip", 97);
-
-        assertSame(InternalUtils.keys(map), map.keySet());
-    }
-
-    @Test
-    public void collection_size()
-    {
-        Collection c = null;
-
-        assertEquals(InternalUtils.size(c), 0);
-
-        c = Arrays.asList("moe", "larry", "curly");
-
-        assertEquals(InternalUtils.size(c), 3);
-    }
-
-    @Test
-    public void servicedef_to_servicedef2()
-    {
-        final ObjectCreator oc = mockObjectCreator();
-        final String serviceId = "RocketLauncher";
-        final Set<Class> markers = Collections.emptySet();
-        final Class serviceInterface = Runnable.class;
-
-        ServiceDef sd = new ServiceDef()
-        {
-            public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
-            {
-                return oc;
-            }
-
-            public String getServiceId()
-            {
-                return serviceId;
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return markers;
-            }
-
-            public Class getServiceInterface()
-            {
-                return serviceInterface;
-            }
-
-            public String getServiceScope()
-            {
-                return ScopeConstants.PERTHREAD;
-            }
-
-            public boolean isEagerLoad()
-            {
-                return true;
-            }
-        };
-
-        replay();
-
-        ServiceDef2 sd2 = InternalUtils.toServiceDef2(sd);
-
-        assertSame(sd2.createServiceCreator(null), oc);
-        assertSame(sd2.getServiceId(), serviceId);
-        assertSame(sd2.getMarkers(), markers);
-        assertSame(sd2.getServiceInterface(), serviceInterface);
-        assertSame(sd2.getServiceScope(), ScopeConstants.PERTHREAD);
-        assertTrue(sd2.isEagerLoad());
-        assertFalse(sd2.isPreventDecoration());
-
-        verify();
-    }
-
-    @Test
-    public void match_and_sort()
-    {
-        List<String> input = CollectionFactory.newList("Fred", "Barney", "..", ".hidden", "Wilma");
-
-        List<String> output = InternalUtils.matchAndSort(input, new Predicate<String>()
-        {
-            public boolean accept(String object)
-            {
-                return !object.startsWith(".");
-            }
-        });
-
-        assertListsEquals(output, "Barney", "Fred", "Wilma");
-    }
-
-    @Test
-    public void wrap_coercion_as_mapper()
-    {
-        Coercion<String, String> toUpper = new Coercion<String, String>()
-        {
-            public String coerce(String input)
-            {
-                return input.toUpperCase();
-            }
-        };
-
-        assertListsEquals(F.flow("Mary", "had", "a", "little", "lamb").map(InternalUtils.toMapper(toUpper)).toList(),
-                "MARY", "HAD", "A", "LITTLE", "LAMB");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/LocalizedNameGeneratorTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/LocalizedNameGeneratorTest.java
deleted file mode 100644
index c4f236a..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/LocalizedNameGeneratorTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2006, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.util.Locale;
-
-public class LocalizedNameGeneratorTest extends IOCTestCase
-{
-
-    private void run(String path, Locale locale, String... expected)
-    {
-        LocalizedNameGenerator g = new LocalizedNameGenerator(path, locale);
-
-        for (String s : expected)
-        {
-            assertTrue(g.hasNext());
-            assertEquals(g.next(), s);
-        }
-
-        assertFalse(g.hasNext());
-    }
-
-    @Test
-    public void locale_with_language_and_country()
-    {
-        run("basic.test", Locale.US, "basic_en_US.test", "basic_en.test", "basic.test");
-    }
-
-    @Test
-    public void locale_with_just_language()
-    {
-        run("noCountry.zap", Locale.FRENCH, "noCountry_fr.zap", "noCountry.zap");
-    }
-
-    @Test
-    public void locale_with_variant_but_no_country()
-    {
-
-        // The double-underscore is correct, it's a kind
-        // of placeholder for the null country.
-        // JDK1.3 always converts the locale to upper case. JDK 1.4
-        // does not. To keep this test happyt, we selected an all-uppercase
-        // locale.
-
-        run("fred.foo", new Locale("en", "", "GEEK"), "fred_en__GEEK.foo", "fred_en.foo", "fred.foo");
-    }
-
-    @Test
-    public void locale_with_just_language_no_period()
-    {
-        run("context:/blah", Locale.FRENCH, "context:/blah_fr", "context:/blah");
-    }
-
-    @Test
-    public void locale_with_variant_but_no_country_no_period()
-    {
-        run("context:/blah", new Locale("fr", "", "GEEK"), "context:/blah_fr__GEEK", "context:/blah_fr",
-            "context:/blah");
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/LocationImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/LocationImplTest.java
deleted file mode 100644
index 492fddc..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/LocationImplTest.java
+++ /dev/null
@@ -1,100 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Location;
-import org.apache.tapestry5.ioc.Resource;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.util.Random;
-
-public class LocationImplTest extends IOCTestCase
-{
-    private final Random random = new Random();
-
-    private final Resource resource = new ClasspathResource("/foo/Bar.xml");
-
-    @Test
-    public void all_three_parameters()
-    {
-
-        int line = random.nextInt();
-        int column = random.nextInt();
-
-        Location l = new LocationImpl(resource, line, column);
-
-        assertSame(l.getResource(), resource);
-        assertEquals(l.getLine(), line);
-        assertEquals(l.getColumn(), column);
-
-        assertEquals(l.toString(), String.format("%s, line %d, column %d", resource, line, column));
-    }
-
-    @Test
-    public void unknown_column()
-    {
-        int line = random.nextInt();
-
-        Location l = new LocationImpl(resource, line);
-
-        assertSame(l.getResource(), resource);
-        assertEquals(l.getLine(), line);
-        assertEquals(l.getColumn(), -1);
-
-        assertEquals(l.toString(), String.format("%s, line %d", resource, line));
-    }
-
-    @Test
-    public void unknown_line_and_column()
-    {
-        Location l = new LocationImpl(resource);
-
-        assertSame(l.getResource(), resource);
-        assertEquals(l.getLine(), -1);
-        assertEquals(l.getColumn(), -1);
-
-        assertEquals(l.toString(), resource.toString());
-    }
-
-    @Test
-    public void equality()
-    {
-        Location l1 = new LocationImpl(resource, 22, 7);
-        Location l2 = new LocationImpl(resource, 22, 7);
-        Location l3 = new LocationImpl(null, 22, 7);
-        Location l4 = new LocationImpl(resource, 99, 7);
-        Location l5 = new LocationImpl(resource, 22, 99);
-        Location l6 = new LocationImpl(new ClasspathResource("/baz/Biff.txt"), 22, 7);
-
-        assertEquals(l1, l1);
-        assertFalse(l1.equals(null));
-
-        assertEquals(l1, l2);
-        assertEquals(l2.hashCode(), l1.hashCode());
-
-        assertFalse(l3.equals(l1));
-        assertFalse(l3.hashCode() == l1.hashCode());
-
-        assertFalse(l4.equals(l1));
-        assertFalse(l4.hashCode() == l1.hashCode());
-
-        assertFalse(l5.equals(l1));
-        assertFalse(l5.hashCode() == l1.hashCode());
-
-        assertFalse(l6.equals(l1));
-        assertFalse(l6.hashCode() == l1.hashCode());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImplTest.java
deleted file mode 100644
index 81bc3fe..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/MessageFormatterImplTest.java
+++ /dev/null
@@ -1,50 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class MessageFormatterImplTest extends Assert
-{
-    private String run(String format, Object... args)
-    {
-        return new MessageFormatterImpl(format, null).format(args);
-    }
-
-    @Test
-    public void standard_args()
-    {
-        assertEquals(run("Tapestry is %s.", "cool"), "Tapestry is cool.");
-        assertEquals(run("Tapestry release #%d.", 5), "Tapestry release #5.");
-        assertEquals(run("%s is %s at version %d.", "Tapestry", "cool", 5), "Tapestry is cool at version 5.");
-    }
-
-    @Test
-    public void throwable_argument()
-    {
-        Throwable t = new RuntimeException("Just didn't feel right.");
-
-        assertEquals(run("%s failed: %s", "Something", t), "Something failed: Just didn't feel right.");
-    }
-
-    @Test
-    public void throwable_argument_with_null_message()
-    {
-        Throwable t = new NullPointerException();
-
-        assertEquals(run("%s failed: %s", "Something", t), "Something failed: java.lang.NullPointerException");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/MessagesImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/MessagesImplTest.java
deleted file mode 100644
index 9643e42..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/MessagesImplTest.java
+++ /dev/null
@@ -1,95 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.MessageFormatter;
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class MessagesImplTest extends IOCTestCase
-{
-    private final Messages messages = MessagesImpl.forClass(TargetMessages.class);
-
-    @Test
-    public void contains_key()
-    {
-        assertTrue(messages.contains("no-args"));
-        assertFalse(messages.contains("xyzzyx"));
-    }
-
-    @Test
-    public void contains_key_is_case_insensitive()
-    {
-        assertTrue(messages.contains("No-Args"));
-        assertFalse(messages.contains("Xyzzyx"));
-    }
-
-    @Test
-    public void get_message_from_catalog()
-    {
-        assertEquals(messages.get("no-args"), "No arguments.");
-        assertEquals(messages.get("something-failed"), "Something failed: %s");
-    }
-
-    @Test
-    public void get_message_from_catalog_is_case_insensitive()
-    {
-        assertEquals(messages.get("No-args"), "No arguments.");
-        assertEquals(messages.get("Something-Failed"), "Something failed: %s");
-    }
-
-    @Test
-    public void get_unknown_message_from_catalog()
-    {
-        assertEquals(messages.get("does-not-exist"), "[[missing key: does-not-exist]]");
-    }
-
-    @Test
-    public void format_message()
-    {
-        assertEquals(messages.format("result", "good"), "The result is 'good'.");
-    }
-
-    @Test
-    public void format_message_is_case_insensitive()
-    {
-        assertEquals(messages.format("Result", "good"), "The result is 'good'.");
-    }
-
-    @Test
-    public void get_formatter()
-    {
-        MessageFormatter mf = messages.getFormatter("result");
-
-        assertEquals(mf.format("great"), "The result is 'great'.");
-    }
-
-    @Test
-    public void formatters_are_cached()
-    {
-        MessageFormatter mf1 = messages.getFormatter("result");
-        // Throw in a case-insensitive check:
-        MessageFormatter mf2 = messages.getFormatter("Result");
-
-        assertSame(mf2, mf1);
-    }
-
-    @Test
-    public void format_unknown_key()
-    {
-        assertEquals(messages.format("rezult", "good"), "[[missing key: rezult]]");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/NonGenericBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/NonGenericBean.java
deleted file mode 100644
index 8cce49f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/NonGenericBean.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-public class NonGenericBean
-{
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/NotRetainedRuntime.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/NotRetainedRuntime.java
deleted file mode 100644
index ac3eced..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/NotRetainedRuntime.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Target;
-
-
-/**
- * Used for testing; this annotation is NOT retained at runtime.
- */
-@Target({ ElementType.PARAMETER, ElementType.FIELD })
-public @interface NotRetainedRuntime
-{
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OneShotLockSubject.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OneShotLockSubject.java
deleted file mode 100644
index d06a546..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OneShotLockSubject.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-
-/**
- * Evolved from a test for aspects + annotations to a test of a class that utilizeds OneShotLock as a utility.
- */
-public class OneShotLockSubject
-{
-    private final OneShotLock lock = new OneShotLock();
-
-    public void go()
-    {
-        lock.check();
-    }
-
-    public void done()
-    {
-        lock.lock();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OneShotLockTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OneShotLockTest.java
deleted file mode 100644
index 3a2bad7..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OneShotLockTest.java
+++ /dev/null
@@ -1,66 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class OneShotLockTest extends IOCTestCase
-{
-    private static final String CLASS_NAME = OneShotLockSubject.class.getName();
-
-    @Test
-    public void basic_locking()
-    {
-        OneShotLockSubject s = new OneShotLockSubject();
-
-        s.go();
-
-        s.done();
-
-        try
-        {
-            s.go();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertTrue(ex.getMessage().contains(CLASS_NAME + ".go"));
-            assertTrue(ex.getMessage().contains("may no longer be invoked."));
-        }
-    }
-
-    @Test
-    public void locking_method_includes_check()
-    {
-        OneShotLockSubject s = new OneShotLockSubject();
-
-        s.go();
-
-        s.done();
-
-        try
-        {
-            s.done();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertTrue(ex.getMessage().contains(CLASS_NAME + ".done"));
-            assertTrue(ex.getMessage().contains("may no longer be invoked."));
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OrdererTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OrdererTest.java
deleted file mode 100644
index 05d3a48..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/OrdererTest.java
+++ /dev/null
@@ -1,379 +0,0 @@
-// Copyright 2006, 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import org.apache.tapestry5.ioc.Orderable;
-import org.apache.tapestry5.ioc.internal.IOCInternalTestCase;
-import org.slf4j.Logger;
-import org.testng.annotations.Test;
-
-import java.util.Arrays;
-import java.util.List;
-
-public class OrdererTest extends IOCInternalTestCase
-{
-    @Test
-    public void no_dependencies()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("FRED", "BARNEY", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void override()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        o.override("barney", "Mr. Rubble", "before:*");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("Mr. Rubble", "FRED", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void failed_override()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        try
-        {
-            o.override("bambam", "Mr. Rubble JR.", "before:*");
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Override for object 'bambam' is invalid as it does not match an existing object.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void missing_constraint_type()
-    {
-        Logger logger = mockLogger();
-
-        logger.warn(UtilMessages.constraintFormat("fred", "barney"));
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY", "fred");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("FRED", "BARNEY", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void unknown_constraint_type()
-    {
-        Logger logger = mockLogger();
-
-        logger.warn(UtilMessages.constraintFormat("nearby:fred", "barney"));
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY", "nearby:fred");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("FRED", "BARNEY", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void nulls_not_included_in_result()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY");
-        o.add("zippo", null);
-        o.add("wilma", "WILMA");
-        o.add("groucho", null);
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("FRED", "BARNEY", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void duplicate_id()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY");
-        o.add("wilma", "WILMA");
-
-        verify();
-
-        logger.warn(UtilMessages.duplicateOrderer("fred"));
-
-        replay();
-
-        o.add("fred", "FRED2");
-
-        verify();
-
-        replay();
-
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("FRED", "BARNEY", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void leader()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY", "before:*");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("BARNEY", "FRED", "WILMA", "BETTY"));
-
-        verify();
-    }
-
-    @Test
-    public void trailer()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED");
-        o.add("barney", "BARNEY", "after:*");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered.get(3), "BARNEY");
-
-        verify();
-    }
-
-    @Test
-    public void prereqs()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED", "after:wilma");
-        o.add("barney", "BARNEY", "after:fred,betty");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("WILMA", "FRED", "BETTY", "BARNEY"));
-
-        verify();
-    }
-
-    @Test
-    public void pre_and_post_reqs()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED", "after:wilma");
-        o.add("barney", "BARNEY", "after:fred,betty");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY", "before:wilma");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("BETTY", "WILMA", "FRED", "BARNEY"));
-
-        verify();
-    }
-
-    @Test
-    public void case_insensitivity()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED", "after:Wilma");
-        o.add("barney", "BARNEY", "after:Fred,BETTY");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY", "before:Wilma");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("BETTY", "WILMA", "FRED", "BARNEY"));
-
-        verify();
-    }
-
-    @Test
-    public void dependency_cycle()
-    {
-        Logger logger = mockLogger();
-
-        logger.warn("Unable to add 'barney' as a dependency of 'betty', as that forms a "
-                + "dependency cycle ('betty' depends on itself via 'barney'). "
-                + "The dependency has been ignored.");
-
-        replay();
-
-        Orderer<String> o = new Orderer<String>(logger);
-
-        o.add("fred", "FRED", "after:wilma");
-        o.add("barney", "BARNEY", "after:fred,betty");
-        o.add("wilma", "WILMA");
-        o.add("betty", "BETTY", "after:barney", "before:wilma");
-
-        List<String> ordered = o.getOrdered();
-
-        assertEquals(ordered, Arrays.asList("BETTY", "WILMA", "FRED", "BARNEY"));
-
-        verify();
-    }
-
-    @Test
-    public void toString_Orderable()
-    {
-        Orderable<String> simple = new Orderable<String>("simple", "SIMPLE");
-
-        assertEquals(simple.toString(), "Orderable[simple SIMPLE]");
-
-        Orderable<String> complex = new Orderable<String>("complex", "COMPLEX", "after:foo",
-                                                          "before:bar");
-
-        assertEquals(complex.toString(), "Orderable[complex after:foo before:bar COMPLEX]");
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void toString_DependencyNode()
-    {
-        Logger logger = mockLogger();
-
-        replay();
-
-        DependencyNode<String> node1 = new DependencyNode<String>(logger, new Orderable("node1",
-                                                                                        "NODE1"));
-
-        assertEquals(node1.toString(), "[node1]");
-
-        DependencyNode<String> node2 = new DependencyNode<String>(logger, new Orderable("node2",
-                                                                                        "NODE2"));
-
-        DependencyNode<String> node3 = new DependencyNode<String>(logger, new Orderable("node3",
-                                                                                        "NODE3"));
-
-        DependencyNode<String> node4 = new DependencyNode<String>(logger, new Orderable("node4",
-                                                                                        "NODE4"));
-
-        DependencyNode<String> node5 = new DependencyNode<String>(logger, new Orderable("node5",
-                                                                                        "NODE5"));
-
-        node2.addDependency(node1);
-        node1.addDependency(node3);
-        node1.addDependency(node4);
-        node5.addDependency(node1);
-
-        assertEquals(node5.toString(), "[node5: [node1: [node3], [node4]]]");
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Pair.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Pair.java
deleted file mode 100644
index 00722f4..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/Pair.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-public class Pair<K, V>
-{
-    private K key;
-
-    private V value;
-
-    public K getKey()
-    {
-        return key;
-    }
-
-    public void setKey(K key)
-    {
-        this.key = key;
-    }
-
-    public V getValue()
-    {
-        return value;
-    }
-
-    public void setValue(V value)
-    {
-        this.value = value;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/StringBean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/StringBean.java
deleted file mode 100644
index 1b13856..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/StringBean.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-public class StringBean extends BaseGenericBean<String>
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/StringLongPair.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/StringLongPair.java
deleted file mode 100644
index 0071beb..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/StringLongPair.java
+++ /dev/null
@@ -1,19 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-public class StringLongPair extends Pair<String, Long>
-{
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/TargetMessages.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/TargetMessages.java
deleted file mode 100644
index cc8926f..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/TargetMessages.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-/**
- * Used with {@link org.apache.tapestry5.ioc.internal.util.MessagesImplTest}.
- */
-public class TargetMessages
-{
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java
deleted file mode 100644
index 792b79c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/internal/util/URLChangeTrackerTest.java
+++ /dev/null
@@ -1,198 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.internal.util;
-
-import java.io.File;
-import java.net.URL;
-
-import org.apache.tapestry5.ioc.internal.services.ClasspathURLConverterImpl;
-import org.apache.tapestry5.ioc.services.ClasspathURLConverter;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class URLChangeTrackerTest extends IOCTestCase
-{
-    private final ClasspathURLConverter converter = new ClasspathURLConverterImpl();
-
-    @Test
-    public void contains_change_when_empty()
-    {
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        assertFalse(t.containsChanges());
-    }
-
-    @Test
-    public void add_null_returns_zero()
-    {
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        assertEquals(t.add(null), 0l);
-    }
-
-    @Test
-    public void contains_changes() throws Exception
-    {
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        File f = File.createTempFile("changetracker0", ".tmp");
-        URL url = f.toURL();
-
-        t.add(url);
-
-        // The file, and the directory containing the file.
-
-        assertEquals(t.trackedFileCount(), 2);
-
-        assertFalse(t.containsChanges());
-
-        boolean changed = false;
-
-        // Because of clock accuracy, we need to try a couple of times
-        // to ensure that the change to the file is visible in the
-        // lastUpdated time stamp on the URL.
-
-        for (int i = 0; i < 10 && !changed; i++)
-        {
-            Thread.sleep(100);
-
-            touch(f);
-
-            changed = t.containsChanges();
-        }
-
-        assertTrue(changed);
-
-        // And, once a change has been observed ...
-
-        assertFalse(t.containsChanges());
-    }
-
-    @Test
-    public void creating_a_new_file_is_a_change() throws Exception
-    {
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        File f = File.createTempFile("changetracker0", ".tmp");
-        URL url = f.toURL();
-
-        t.add(url);
-
-        assertFalse(t.containsChanges());
-
-        File dir = f.getParentFile();
-
-        // Create another file in the temporary directory.
-
-        long timestamp = dir.lastModified();
-
-        while (true)
-        {
-            File.createTempFile("changetracker1", ".tmp");
-
-            if (dir.lastModified() != timestamp)
-                break;
-
-            // Sometime Java need a moment to catch up in terms of
-            // file system changes. Sleep for a few milliseconds
-            // and wait for it to catch up.
-
-            Thread.sleep(100);
-        }
-
-        assertTrue(t.containsChanges());
-    }
-
-    @Test
-    public void non_file_URLs_are_ignored() throws Exception
-    {
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        URL url = new URL("ftp://breeblebrox.com");
-
-        t.add(url);
-
-        assertEquals(t.trackedFileCount(), 0);
-    }
-
-    @Test
-    public void caching() throws Exception
-    {
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        File f = File.createTempFile("changetracker0", ".tmp");
-        URL url = f.toURL();
-
-        long initial = t.add(url);
-
-        touch(f);
-
-        long current = t.add(url);
-
-        assertEquals(current, initial);
-
-        assertTrue(t.containsChanges());
-
-        t.clear();
-
-        current = t.add(url);
-
-        assertFalse(current == initial);
-    }
-
-    @Test
-    public void deleted_files_show_as_changes() throws Exception
-    {
-        File f = File.createTempFile("changetracker0", ".tmp");
-        URL url = f.toURL();
-
-        URLChangeTracker t = new URLChangeTracker(converter);
-
-        long timeModified = t.add(url);
-
-        assertTrue(timeModified > 0);
-
-        // File + Directory
-        assertEquals(t.trackedFileCount(), 2);
-
-        assertFalse(t.containsChanges());
-
-        assertTrue(f.delete());
-
-        assertTrue(t.containsChanges());
-    }
-
-    @Test
-    public void second_level_granularity() throws Exception
-    {
-        URLChangeTracker t = new URLChangeTracker(converter, true, true);
-
-        File f = File.createTempFile("changetracker0", ".tmp");
-        URL url = f.toURL();
-
-        touch(f);
-        long timestamp1 = t.add(url);
-        assertEquals(0, timestamp1 % 1000);
-        assertFalse(t.containsChanges());
-
-        Thread.sleep(1500);
-
-        touch(f);
-        long timestamp2 = t.add(url);
-        assertEquals(0, timestamp2 % 1000);
-        assertTrue(t.containsChanges());
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/ClassFabUtilsTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/ClassFabUtilsTest.java
deleted file mode 100644
index 012c229..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/ClassFabUtilsTest.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2006, 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class ClassFabUtilsTest extends IOCTestCase
-{
-
-    @Test(dataProvider = "createInputs")
-    public void to_jvm_binary_name(String input, String expected)
-    {
-        String actual = ClassFabUtils.toJVMBinaryName(input);
-
-        assertEquals(actual, expected);
-    }
-
-    @DataProvider
-    public Object[][] createInputs()
-    {
-        return new Object[][] { { "java.lang.Object", "java.lang.Object" },
-
-                { "int", "int" },
-
-                { "int[]", "[I" },
-
-                { "java.lang.Throwable[]", "[Ljava.lang.Throwable;" },
-
-                { "byte[][]", "[[B" },
-
-                { "java.lang.Runnable[][]", "[[Ljava.lang.Runnable;" } };
-    }
-
-    @Test(dataProvider = "typeCodeProvider")
-    public void get_type_code(Class input, String expected)
-    {
-        assertEquals(ClassFabUtils.getTypeCode(input), expected);
-    }
-
-    @DataProvider
-    public Object[][] typeCodeProvider()
-    {
-        return new Object[][] { { int.class, "I" },
-
-                { int[].class, "[I" },
-
-                { Thread.class, "Ljava/lang/Thread;" },
-
-                { Thread[].class, "[Ljava/lang/Thread;" },
-
-                { Double[][].class, "[[Ljava/lang/Double;" },
-
-                { void.class, "V" } };
-    }
-
-    @Test
-    public void primitive_type_from_wrapper_type()
-    {
-        assertSame(ClassFabUtils.getPrimitiveType(Boolean.class), boolean.class);
-    }
-
-    @Test
-    public void get_primitive_type_from_name()
-    {
-        assertSame(ClassFabUtils.getPrimitiveType("int"), int.class);
-    }
-
-    @Test
-    public void cast_reference_to_object_type()
-    {
-        assertEquals(ClassFabUtils.castReference("ref", "java.lang.String"),
-                     "(java.lang.String)ref");
-    }
-
-    @Test
-    public void cast_reference_to_primitive_type()
-    {
-        assertEquals(ClassFabUtils.castReference("ref", "short"),
-                     "((java.lang.Short)ref).shortValue()");
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/MethodIteratorTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/MethodIteratorTest.java
deleted file mode 100644
index 67c4121..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/MethodIteratorTest.java
+++ /dev/null
@@ -1,146 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.io.IOException;
-import java.util.NoSuchElementException;
-
-public class MethodIteratorTest extends IOCTestCase
-{
-    static interface Play extends Runnable
-    {
-        public void jump();
-    }
-
-    static interface Runnable2
-    {
-        public void run();
-    }
-
-    static interface Runnable3 extends Runnable, Runnable2
-    {
-    }
-
-    static interface ToString
-    {
-        public String toString();
-    }
-
-    static interface Openable
-    {
-        public void open();
-    }
-
-    static interface OpenableWithError
-    {
-        public void open() throws IOException;
-    }
-
-    static interface CombinedOpeneable extends Openable, OpenableWithError
-    {
-    }
-
-    @Test
-    public void simple_interface()
-    {
-        MethodIterator mi = new MethodIterator(Runnable.class);
-
-        assertTrue(mi.hasNext());
-
-        MethodSignature actual = mi.next();
-
-        assertEquals(new MethodSignature(void.class, "run", null, null), actual);
-
-        assertFalse(mi.hasNext());
-
-        try
-        {
-            mi.next();
-        }
-        catch (NoSuchElementException ex)
-        {
-            //
-        }
-
-        assertEquals(false, mi.getToString());
-    }
-
-    @Test
-    public void inherited_methods_from_super_interface()
-    {
-        MethodIterator mi = new MethodIterator(Play.class);
-
-        assertTrue(mi.hasNext());
-
-        // Problematic because the order in which they are returned is
-        // JDK specific and not defined! Perhaps we should sort by alpha?
-
-        MethodSignature actual = mi.next();
-
-        assertEquals(new MethodSignature(void.class, "jump", null, null), actual);
-
-        assertTrue(mi.hasNext());
-
-        actual = mi.next();
-
-        assertEquals(new MethodSignature(void.class, "run", null, null), actual);
-
-        assertFalse(mi.hasNext());
-
-        assertEquals(false, mi.getToString());
-    }
-
-    @Test
-    public void duplicate_methods_filtered_out()
-    {
-        MethodIterator mi = new MethodIterator(Runnable3.class);
-
-        MethodSignature actual = mi.next();
-
-        assertEquals(new MethodSignature(void.class, "run", null, null), actual);
-
-        assertEquals(false, mi.getToString());
-    }
-
-    @Test
-    public void to_string_method_identified()
-    {
-        MethodIterator mi = new MethodIterator(ToString.class);
-
-        // Show that this is known immediately.
-
-        assertEquals(true, mi.getToString());
-
-        MethodSignature actual = mi.next();
-
-        assertEquals(new MethodSignature(String.class, "toString", null, null), actual);
-
-    }
-
-    @Test
-    public void inherited_methods_filtered_if_less_specific()
-    {
-        MethodIterator mi = new MethodIterator(CombinedOpeneable.class);
-
-        MethodSignature actual = mi.next();
-
-        assertEquals(new MethodSignature(void.class, "open", null, new Class[] { IOException.class }), actual);
-
-        assertEquals(false, mi.hasNext());
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/MethodSignatureTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/MethodSignatureTest.java
deleted file mode 100644
index 20e0f56..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/MethodSignatureTest.java
+++ /dev/null
@@ -1,200 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.io.IOException;
-import java.io.ObjectInput;
-import java.io.ObjectInputStream;
-import java.lang.reflect.Method;
-import java.sql.SQLException;
-
-public class MethodSignatureTest extends IOCTestCase
-{
-    private MethodSignature find(Class sourceClass, String methodName)
-    {
-        Method[] methods = sourceClass.getMethods();
-
-        for (int i = 0; i < methods.length; i++)
-        {
-            Method m = methods[i];
-
-            if (m.getName().equals(methodName)) return new MethodSignature(m);
-        }
-
-        unreachable();
-        return null;
-    }
-
-    @Test
-    public void excercize_equals_and_hashcode()
-    {
-        MethodSignature m1 = find(Object.class, "hashCode");
-        MethodSignature m2 = find(Boolean.class, "hashCode");
-
-        assertEquals(m1.hashCode(), m2.hashCode());
-        assertTrue(m1.equals(m2));
-
-        m1 = find(String.class, "charAt");
-        m2 = find(StringBuilder.class, "charAt");
-
-        assertEquals(m1.hashCode(), m2.hashCode());
-        assertTrue(m1.equals(m2));
-
-        m1 = find(ObjectInput.class, "close");
-        m2 = find(ObjectInputStream.class, "close");
-
-        assertEquals(m1.hashCode(), m2.hashCode());
-        assertTrue(m1.equals(m2));
-    }
-
-    @Test
-    public void equals_and_hashcode_with_null_parameters_and_exception_lists()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-        MethodSignature m2 = new MethodSignature(void.class, "foo", new Class[0], new Class[0]);
-
-        assertEquals(m1, m2);
-        assertEquals(m2, m1);
-
-        assertEquals(m1.hashCode(), m2.hashCode());
-    }
-
-    @Test
-    public void equals_with_name_mismatch()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-        MethodSignature m2 = new MethodSignature(void.class, "bar", null, null);
-
-        assertEquals(false, m1.equals(m2));
-    }
-
-    @Test
-    public void equals_with_parameters_mismatch()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", new Class[] { String.class }, null);
-        MethodSignature m2 = new MethodSignature(void.class, "foo", new Class[] { Boolean.class }, null);
-
-        assertEquals(false, m1.equals(m2));
-    }
-
-    @Test
-    public void equals_with_null()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-
-        assertEquals(m1.equals(null), false);
-    }
-
-    @Test
-    public void equals_with_not_method_signature()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-
-        assertEquals(m1.equals("Method Signature"), false);
-    }
-
-    @Test
-    public void to_string()
-    {
-        MethodSignature m = find(String.class, "getChars");
-
-        assertEquals(m.toString(), "void getChars(int, int, char[], int)");
-
-        m = find(Class.class, "newInstance");
-
-        assertEquals(m.toString(),
-                     "java.lang.Object newInstance() throws java.lang.IllegalAccessException, java.lang.InstantiationException");
-    }
-
-    @Test
-    public void unique_id()
-    {
-        MethodSignature m = find(String.class, "getChars");
-
-        assertEquals(m.getUniqueId(), "getChars(int,int,char[],int)");
-
-        m = find(Class.class, "newInstance");
-
-        assertEquals(m.getUniqueId(), "newInstance()");
-    }
-
-    @Test
-    public void overriding_signature_type_mismatch()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-        MethodSignature m2 = new MethodSignature(int.class, "foo", null, null);
-
-        assertEquals(m1.isOverridingSignatureOf(m2), false);
-    }
-
-    @Test
-    public void overriding_signature_name_mismatch()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-        MethodSignature m2 = new MethodSignature(void.class, "bar", null, null);
-
-        assertEquals(m1.isOverridingSignatureOf(m2), false);
-    }
-
-    @Test
-    public void overriding_signature_parameters_mismatch()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "foo", null, null);
-        MethodSignature m2 = new MethodSignature(void.class, "foo", new Class[] { String.class }, null);
-
-        assertEquals(m1.isOverridingSignatureOf(m2), false);
-    }
-
-    @Test
-    public void overriding_signature()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "close", null, new Class[] { Exception.class });
-        MethodSignature m2 = new MethodSignature(void.class, "close", null, new Class[] { RuntimeException.class });
-
-        assertEquals(m1.isOverridingSignatureOf(m2), true);
-        assertEquals(m2.isOverridingSignatureOf(m1), false);
-    }
-
-    /**
-     * Tests a shorcut used when one signature has zero exceptions.
-     */
-    @Test
-    public void overriding_signature_with_no_exceptions()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "close", null, null);
-        MethodSignature m2 = new MethodSignature(void.class, "close", null, new Class[] { RuntimeException.class });
-
-        assertEquals(m1.isOverridingSignatureOf(m2), false);
-        assertEquals(m2.isOverridingSignatureOf(m1), true);
-    }
-
-    /**
-     * Fill in code coverage for multiple matched signatures.
-     */
-    @Test
-    public void overriding_signature_with_multiple_matched_exceptions()
-    {
-        MethodSignature m1 = new MethodSignature(void.class, "close", null,
-                                                 new Class[] { SQLException.class, NumberFormatException.class });
-        MethodSignature m2 = new MethodSignature(void.class, "close", null,
-                                                 new Class[] { SQLException.class, IOException.class });
-
-        assertEquals(m1.isOverridingSignatureOf(m2), false);
-        assertEquals(m2.isOverridingSignatureOf(m1), false);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java
deleted file mode 100644
index fbae24c..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/services/PropertyShadowBuilderImplTest.java
+++ /dev/null
@@ -1,183 +0,0 @@
-// Copyright 2006, 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.services;
-
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.Test;
-
-import java.util.Map;
-
-public class PropertyShadowBuilderImplTest extends IOCTestCase
-{
-    private Registry registry;
-    private PropertyShadowBuilder builder;
-
-    private final String CLASS_NAME = getClass().getName();
-
-    @BeforeClass
-    public void setup_registry()
-    {
-        registry = buildRegistry();
-
-        builder = registry.getService("PropertyShadowBuilder", PropertyShadowBuilder.class);
-    }
-
-    @AfterClass
-    public void shutdown_registry()
-    {
-        registry.shutdown();
-
-        registry = null;
-        builder = null;
-    }
-
-    public class FooHolder
-    {
-        private Foo foo;
-
-        private int count = 0;
-
-        public Foo getFoo()
-        {
-            count++;
-
-            return foo;
-        }
-
-        public int getCount()
-        {
-            return count;
-        }
-
-        public void setFoo(Foo foo)
-        {
-            this.foo = foo;
-        }
-
-        @Override
-        public String toString()
-        {
-            return "[FooHolder]";
-        }
-
-        public void setWriteOnly(Foo foo)
-        {
-
-        }
-    }
-
-    public interface Foo
-    {
-        void foo();
-    }
-
-    @Test
-    public void basic_delegation()
-    {
-        Foo foo = newMock(Foo.class);
-        FooHolder holder = new FooHolder();
-
-        holder.setFoo(foo);
-
-        Foo shadow = builder.build(holder, "foo", Foo.class);
-
-        for (int i = 0; i < 3; i++)
-        {
-            foo.foo();
-
-            replay();
-
-            shadow.foo();
-
-            verify();
-
-            assertEquals(holder.getCount(), i + 1);
-        }
-
-        assertEquals(shadow.toString(), "<Shadow: property foo of [FooHolder]>");
-    }
-
-    @Test
-    public void property_is_null()
-    {
-        FooHolder holder = new FooHolder();
-
-        Foo shadow = builder.build(holder, "foo", Foo.class);
-
-        try
-        {
-            shadow.foo();
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertEquals(ex.getMessage(),
-                    "Unable to delegate method invocation to property 'foo' of [FooHolder], because the property is null.");
-        }
-    }
-
-    @Test
-    public void property_does_not_exist()
-    {
-        FooHolder holder = new FooHolder();
-
-        try
-        {
-            builder.build(holder, "bar", Foo.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Class " + CLASS_NAME + "$FooHolder does not contain a property named 'bar'.");
-        }
-    }
-
-    @Test
-    public void property_type_mismatch()
-    {
-        FooHolder holder = new FooHolder();
-
-        try
-        {
-            builder.build(holder, "count", Map.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Property 'count' of class " + CLASS_NAME
-                    + "$FooHolder is of type int, which is not assignable to type java.util.Map.");
-        }
-    }
-
-    @Test
-    public void property_write_only()
-    {
-        FooHolder holder = new FooHolder();
-
-        try
-        {
-            builder.build(holder, "writeOnly", Foo.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Class " + CLASS_NAME
-                    + "$FooHolder does not provide an accessor ('getter') method for property 'writeOnly'.");
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/Bean.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/Bean.java
deleted file mode 100644
index 05230d4..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/Bean.java
+++ /dev/null
@@ -1,25 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-public class Bean
-{
-    private String value;
-
-    public String getValue()
-    {
-        return value;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/BeanSubclass.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/BeanSubclass.java
deleted file mode 100644
index 2fd0fa2..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/BeanSubclass.java
+++ /dev/null
@@ -1,25 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-public class BeanSubclass extends Bean
-{
-    private boolean flag;
-
-    public boolean isFlag()
-    {
-        return flag;
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/TestBaseTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/TestBaseTest.java
deleted file mode 100644
index 54bd9ac..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/test/TestBaseTest.java
+++ /dev/null
@@ -1,112 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.test;
-
-import org.testng.annotations.Test;
-
-public class TestBaseTest extends TestBase
-{
-    @Test
-    public void create_instance()
-    {
-        Bean b = create(Bean.class, "value", "Magic");
-
-        assertEquals(b.getValue(), "Magic");
-    }
-
-    @Test
-    public void create_instance_failure()
-    {
-        try
-        {
-            create(Runnable.class);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Unable to instantiate instance of java.lang.Runnable");
-        }
-    }
-
-    @Test
-    public void create_instance_field_missing()
-    {
-        try
-        {
-            create(Bean.class, "unknownField", "doesn't matter");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Unable to set field 'unknownField' of org.apache.tapestry5.ioc.test.Bean",
-                                  "Class org.apache.tapestry5.ioc.test.Bean does not contain a field named 'unknownField'.");
-        }
-    }
-
-    @Test
-    public void type_mismatch_when_setting_field_value()
-    {
-        try
-        {
-            create(Bean.class, "value", 99);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex, "Unable to set field 'value' of org.apache.tapestry5.ioc.test.Bean");
-        }
-    }
-
-    @Test
-    public void set_fields_from_base_class()
-    {
-        BeanSubclass b = create(BeanSubclass.class, "flag", true, "value", "magic");
-
-        assertEquals(b.isFlag(), true);
-        assertEquals(b.getValue(), "magic");
-    }
-
-    @Test
-    public void get_field()
-    {
-        Bean b = new Bean();
-
-        String expectedValue = "fred";
-
-        set(b, "value", expectedValue);
-
-        assertSame(b.getValue(), expectedValue);
-        assertSame(get(b, "value"), expectedValue);
-    }
-
-    @Test
-    public void error_getting_field()
-    {
-        Bean b = new Bean();
-
-        try
-        {
-            get(b, "missingField");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertMessageContains(ex,
-                                  "Unable to read field 'missingField' of org.apache.tapestry5.ioc.test.Bean",
-                                  "Class org.apache.tapestry5.ioc.test.Bean does not contain a field named 'missingField'.");
-
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/BodyBuilderTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/BodyBuilderTest.java
deleted file mode 100644
index 16a29f0..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/BodyBuilderTest.java
+++ /dev/null
@@ -1,128 +0,0 @@
-// Copyright 2006 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-public class BodyBuilderTest extends IOCTestCase
-{
-    @Test
-    public void simple_nesting_and_indentation()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.begin();
-        b.addln("invoke();");
-        b.end();
-
-        assertEquals(b.toString(), join("{", "  invoke();", "}"));
-    }
-
-    @Test
-    public void block_nesting()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.begin();
-
-        b.add("while(true)");
-        b.begin();
-        b.add("_i += 1;");
-        b.end();
-
-        b.end();
-
-        assertEquals(b.toString(), join("{", "  while(true)", "  {", "    _i += 1;", "  }", "}"));
-    }
-
-    @Test
-    public void addln_idents_subsequent_line()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.begin();
-        b.addln("invoke(fred);");
-        b.addln("invoke(barney);");
-        b.end();
-
-        assertEquals(b.toString(), join("{", "  invoke(fred);", "  invoke(barney);", "}"));
-    }
-
-    @Test
-    public void clear()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.begin();
-        b.add("fred");
-        b.end();
-
-        assertEquals(b.toString(), "{\n  fred\n}\n");
-
-        b.clear();
-
-        b.begin();
-        b.add("barney");
-        b.end();
-
-        assertEquals(b.toString(), "{\n  barney\n}\n");
-    }
-
-    @Test
-    public void add_with_format_and_args()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.add("%s = %d;", "i", 3);
-
-        assertEquals(b.toString(), "i = 3;");
-    }
-
-    @Test
-    public void addln_with_format_and_args()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.addln("%s = %d;", "i", 3);
-
-        assertEquals(b.toString(), "i = 3;\n");
-    }
-
-    @Test
-    public void indent_only_on_new_line()
-    {
-        BodyBuilder b = new BodyBuilder();
-
-        b.begin();
-        b.add("if");
-        b.addln(" (debug)");
-        b.add("  log.debug(\"%s\"", "foo");
-        b.addln(");");
-        b.addln("while (true)");
-        b.begin();
-        b.addln("if (%s > 10)", "i");
-        b.addln("  return;");
-        b.add("%s++;", "i");
-        b.end();
-        b.end();
-
-        assertEquals(b.toString(), join("{", "  if (debug)", "    log.debug(\"foo\");", "  while (true)", "  {",
-                                        "    if (i > 10)", "      return;", "    i++;", "  }", "}"
-
-        ));
-
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java
deleted file mode 100644
index 4cf13ec..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/CaseInsensitiveMapTest.java
+++ /dev/null
@@ -1,357 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newCaseInsensitiveMap;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.io.ByteArrayInputStream;
-import java.io.ByteArrayOutputStream;
-import java.io.ObjectInputStream;
-import java.io.ObjectOutputStream;
-import java.util.*;
-
-public class CaseInsensitiveMapTest extends Assert
-{
-    @Test
-    public void basic_get_put_remove()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        String value = "flintstone";
-
-        map.put("fred", value);
-
-        assertEquals(map.toString(), "{fred=flintstone}");
-
-        assertSame(map.get("fred"), value);
-        assertSame(map.get("Fred"), value);
-
-        assertSame(map.remove("FRED"), value);
-
-        assertFalse(map.containsKey("fred"));
-
-        assertTrue(map.isEmpty());
-    }
-
-    @Test
-    public void copy_map_constructor()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Map<String, String> copy = newCaseInsensitiveMap(map);
-
-        assertEquals(copy, map);
-    }
-
-    @Test
-    public void put_with_different_case_replaces()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-
-        String value = "Murray";
-
-        map.put("Fred", value);
-
-        assertEquals(map.size(), 1);
-
-        assertSame(map.get("fred"), value);
-
-        assertEquals(map.toString(), "{Fred=Murray}");
-    }
-
-    @Test
-    public void get_with_missing_key_is_null()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-
-        assertNull(map.get("barney"));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void get_with_non_string_key_is_null()
-    {
-        Map map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-
-        assertNull(map.get(this));
-    }
-
-    /**
-     * Add a large number of keys which should stress the code that adds and expands values into the map.
-     */
-    @Test
-    public void expansion_of_internal_entry_array()
-    {
-        Map<String, Integer> map = newCaseInsensitiveMap();
-
-        int COUNT = 2000;
-
-        for (int i = 0; i < COUNT; i++)
-        {
-            assertNull(map.put("key_" + i, i));
-        }
-
-        // Now check that the values are still there.
-
-        for (int i = 0; i < COUNT; i++)
-        {
-            assertEquals(map.get("KEY_" + i).intValue(), i);
-        }
-
-        assertEquals(map.size(), COUNT);
-        assertEquals(map.entrySet().size(), COUNT);
-
-        map.clear();
-
-        assertEquals(map.size(), 0);
-    }
-
-    @Test
-    public void change_value_via_entry_set()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-
-        Map.Entry<String, String> me = map.entrySet().iterator().next();
-
-        String value = "murray";
-
-        me.setValue(value);
-
-        assertSame(map.get("fred"), value);
-    }
-
-    @Test(expectedExceptions =
-            { ConcurrentModificationException.class })
-    public void iterator_fail_fast_after_remove()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Iterator i = map.entrySet().iterator();
-
-        i.next();
-
-        map.remove("betty");
-
-        i.next();
-    }
-
-    @Test(expectedExceptions =
-            { ConcurrentModificationException.class })
-    public void iterator_fail_fast_on_next()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Iterator<Map.Entry<String, String>> i = map.entrySet().iterator();
-
-        while (i.hasNext())
-        {
-            if (i.next().getKey().equals("betty")) map.put("pebbles", "flintstone");
-        }
-    }
-
-    @Test
-    public void iterator_may_remove_without_concurrent_exception()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Iterator<Map.Entry<String, String>> i = map.entrySet().iterator();
-
-        while (i.hasNext())
-        {
-            if (i.next().getKey().equals("wilma")) i.remove();
-        }
-
-        List<String> keys = CollectionFactory.newList(map.keySet());
-        Collections.sort(keys);
-
-        assertEquals(keys, Arrays.asList("barney", "betty", "fred"));
-    }
-
-    @Test
-    public void contains_via_entry_set()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Set<Map.Entry<String, String>> entrySet = map.entrySet();
-
-        assertTrue(entrySet.contains(newMapEntry("fred", "flintstone")));
-        assertTrue(entrySet.contains(newMapEntry("Fred", "flintstone")));
-
-        assertFalse(entrySet.contains(newMapEntry("Zaphod", "Beeblebox")));
-        assertFalse(entrySet.contains(newMapEntry("fred", "murray")));
-    }
-
-    @Test
-    public void remove_via_entry_set()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Set<Map.Entry<String, String>> entrySet = map.entrySet();
-
-        assertFalse(entrySet.remove(newMapEntry("Zaphod", "Beeblebox")));
-        assertFalse(entrySet.remove(newMapEntry("fred", "murray")));
-
-        assertTrue(entrySet.remove(newMapEntry("Fred", "flintstone")));
-    }
-
-    @Test
-    public void null_key()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put(null, "NULL");
-
-        assertEquals(map.get(null), "NULL");
-    }
-
-    @Test
-    public void clear_entry_set_clears_map()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-
-        map.entrySet().clear();
-
-        assertTrue(map.isEmpty());
-    }
-
-    @Test(expectedExceptions =
-            { NoSuchElementException.class })
-    public void next_after_last_entry_is_failure()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-
-        Iterator i = map.entrySet().iterator();
-
-        while (i.hasNext())
-            i.next();
-
-        i.next();
-    }
-
-    @Test
-    public void entry_set_iterator_sees_all_keys()
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        Iterator<Map.Entry<String, String>> i = map.entrySet().iterator();
-        List<String> keys = CollectionFactory.newList();
-
-        while (i.hasNext())
-            keys.add(i.next().getKey());
-
-        Collections.sort(keys);
-
-        assertEquals(keys, Arrays.asList("barney", "betty", "fred", "wilma"));
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void serialize_deserialize() throws Exception
-    {
-        Map<String, String> map = newCaseInsensitiveMap();
-
-        map.put("fred", "flintstone");
-        map.put("barney", "rubble");
-        map.put("wilma", "flinstone");
-        map.put("betty", "rubble");
-
-        ByteArrayOutputStream baos = new ByteArrayOutputStream();
-        ObjectOutputStream oos = new ObjectOutputStream(baos);
-
-        oos.writeObject(map);
-        oos.close();
-
-        ByteArrayInputStream bais = new ByteArrayInputStream(baos.toByteArray());
-        ObjectInputStream ois = new ObjectInputStream(bais);
-
-        Map<String, String> copy = (Map<String, String>) ois.readObject();
-
-        assertEquals(copy, map);
-    }
-
-    @SuppressWarnings("unchecked")
-    private <K, V> Map.Entry<K, V> newMapEntry(final K key, final V value)
-    {
-        return new Map.Entry()
-        {
-
-            public Object getKey()
-            {
-                return key;
-            }
-
-            public Object getValue()
-            {
-                return value;
-            }
-
-            public Object setValue(Object value)
-            {
-                throw new UnsupportedOperationException();
-            }
-
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java
deleted file mode 100644
index 4d07193..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/ExceptionUtilsTest.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.internal.util.TapestryException;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-public class ExceptionUtilsTest extends Assert
-{
-    @Test
-    public void find_cause_with_match()
-    {
-        TapestryException inner = new TapestryException("foo", null);
-
-        RuntimeException outer = new RuntimeException(inner);
-
-        assertSame(ExceptionUtils.findCause(outer, TapestryException.class), inner);
-    }
-
-    @Test
-    public void find_cause_no_match()
-    {
-        RuntimeException re = new RuntimeException("No cause for you!");
-
-        assertNull(ExceptionUtils.findCause(re, TapestryException.class));
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/IdAllocatorTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/IdAllocatorTest.java
deleted file mode 100644
index b9cb02a..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/IdAllocatorTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2004, 2005, 2006, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import org.apache.tapestry5.ioc.util.IdAllocator;
-import org.testng.Assert;
-import org.testng.annotations.Test;
-
-import java.util.List;
-
-public class IdAllocatorTest extends Assert
-{
-
-    @Test
-    public void simple()
-    {
-        IdAllocator a = new IdAllocator();
-        List<String> ids = newList();
-
-        assertFalse(a.isAllocated("name"));
-
-        assertEquals(a.allocateId("name"), "name");
-        assertTrue(a.isAllocated("name"));
-
-        ids.add("name");
-
-        for (int i = 0; i < 10; i++)
-        {
-
-            String expected = "name_" + i;
-
-            assertFalse(a.isAllocated(expected));
-
-            String nextId = a.allocateId("name");
-
-            assertTrue(a.isAllocated(expected));
-
-            assertEquals(nextId, expected);
-
-            ids.add(nextId);
-        }
-
-        assertEquals(a.getAllocatedIds(), ids);
-    }
-
-    @Test
-    public void simple_with_namespace()
-    {
-        IdAllocator a = new IdAllocator("_NS");
-
-        assertEquals(a.allocateId("name"), "name_NS");
-
-        for (int i = 0; i < 10; i++)
-            assertEquals(a.allocateId("name"), "name_NS_" + i);
-
-        // This is current behavior, but is probably something
-        // that could be improved.
-
-        assertEquals(a.allocateId("foo_NS"), "foo_NS_NS");
-        assertEquals(a.allocateId("foo_NS"), "foo_NS_NS_0");
-    }
-
-    @Test
-    public void degenerate()
-    {
-        IdAllocator a = new IdAllocator();
-
-        assertEquals(a.allocateId("d_1"), "d_1");
-
-        assertEquals(a.allocateId("d"), "d");
-        assertEquals(a.allocateId("d"), "d_0");
-        assertEquals(a.allocateId("d"), "d_2");
-
-        assertEquals(a.allocateId("d"), "d_3");
-        assertEquals(a.allocateId("d_1"), "d_1_0");
-    }
-
-    @Test
-    public void degenerate_with_namespace()
-    {
-        IdAllocator a = new IdAllocator("_NS");
-
-        assertEquals(a.allocateId("d_1"), "d_1_NS");
-
-        assertEquals(a.allocateId("d"), "d_NS");
-        assertEquals(a.allocateId("d"), "d_NS_0");
-        assertEquals(a.allocateId("d"), "d_NS_1");
-        assertEquals(a.allocateId("d"), "d_NS_2");
-        assertEquals(a.allocateId("d"), "d_NS_3");
-
-        assertEquals(a.allocateId("d_1"), "d_1_NS_0");
-
-        // This is very degenerate, and maybe something that needs fixing.
-
-        assertEquals(a.allocateId("d_1_NS"), "d_1_NS_NS");
-    }
-
-    @Test
-    public void clear()
-    {
-        IdAllocator a = new IdAllocator();
-
-        assertEquals(a.allocateId("foo"), "foo");
-        assertEquals(a.allocateId("foo_0"), "foo_0");
-
-        a.clear();
-
-        assertEquals(a.allocateId("foo"), "foo");
-        assertEquals(a.allocateId("foo_0"), "foo_0");
-    }
-
-    @Test
-    public void clone_test()
-    {
-        IdAllocator a = new IdAllocator();
-
-        assertEquals(a.allocateId("foo"), "foo");
-        assertEquals(a.allocateId("foo_0"), "foo_0");
-        assertEquals(a.allocateId("foo"), "foo_1");
-
-        IdAllocator b = a.clone();
-
-        // After making a clone, parallel operations should return the same results.
-        // If anything under the covers was shared, then parallel operations would
-        // interfere with each other.
-
-        assertEquals(b.allocateId("bar"), a.allocateId("bar"));
-        assertEquals(b.allocateId("foo"), a.allocateId("foo"));
-        assertEquals(b.allocateId("foo_0"), a.allocateId("foo_0"));
-
-    }
-
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/NonmatchingMappedConfigurationOverrideModule.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/NonmatchingMappedConfigurationOverrideModule.java
deleted file mode 100644
index 217c6e9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/NonmatchingMappedConfigurationOverrideModule.java
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.MappedConfiguration;
-
-public class NonmatchingMappedConfigurationOverrideModule
-{
-    public void contributeStringLookup(MappedConfiguration<String, String> configuration)
-    {
-        configuration.override("alley cat", "ALLEY CAT");
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java
deleted file mode 100644
index 24dee47..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StackTest.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newStack;
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-public class StackTest extends TestBase
-{
-    @Test
-    public void peek_in_empty_stack_is_failure()
-    {
-        Stack<Integer> stack = newStack();
-
-        try
-        {
-            stack.peek();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertEquals(ex.getMessage(), "Stack is empty.");
-        }
-    }
-
-    @Test
-    public void pop_in_empty_stack_is_failure()
-    {
-        Stack<Integer> stack = newStack();
-
-        try
-        {
-            stack.pop();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-            assertEquals(ex.getMessage(), "Stack is empty.");
-        }
-    }
-
-    @Test
-    public void basic_operations()
-    {
-        Stack<String> stack = newStack();
-
-        assertTrue(stack.isEmpty());
-
-        final String fred = "fred";
-        final String barney = "barney";
-
-        stack.push(fred);
-        assertEquals(stack.peek(), fred);
-        assertFalse(stack.isEmpty());
-
-        stack.push(barney);
-        assertEquals(stack.peek(), barney);
-
-        assertEquals(stack.toString(), "Stack[barney, fred]");
-
-        assertEquals(stack.getDepth(), 2);
-
-        Object[] snapshot = stack.getSnapshot();
-
-        assertArraysEqual(snapshot, new Object[] {fred, barney});
-
-        assertEquals(stack.pop(), barney);
-        assertEquals(stack.peek(), fred);
-
-        assertEquals(stack.pop(), fred);
-        assertTrue(stack.isEmpty());
-    }
-
-    @Test
-    public void expansion_of_inner_data()
-    {
-        final int LIMIT = 1000;
-
-        Stack<Integer> stack = newStack(10);
-
-        for (int i = 0; i < LIMIT; i++)
-        {
-            stack.push(i);
-        }
-
-        for (int i = LIMIT - 1; i >= 0; i--)
-        {
-            assertEquals(stack.pop().intValue(), i);
-        }
-    }
-
-    @Test
-    public void clear()
-    {
-        Stack<Integer> stack = newStack();
-
-        for (int i = 0; i < 10; i++) stack.push(i);
-
-        assertEquals(stack.isEmpty(), false);
-
-        stack.clear();
-
-        assertEquals(stack.isEmpty(), true);
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StrategyRegistryTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StrategyRegistryTest.java
deleted file mode 100644
index 4a5b322..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/StrategyRegistryTest.java
+++ /dev/null
@@ -1,176 +0,0 @@
-// Copyright 2006, 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-import org.apache.tapestry5.ioc.test.IOCTestCase;
-import org.testng.annotations.Test;
-
-import java.util.*;
-
-public class StrategyRegistryTest extends IOCTestCase
-{
-    @Test
-    public void adapter_not_found()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        Map<Class, Runnable> registrations = newMap();
-
-        registrations.put(List.class, r1);
-        registrations.put(Map.class, r2);
-
-        StrategyRegistry<Runnable> r = StrategyRegistry.newInstance(Runnable.class, registrations);
-
-        try
-        {
-            r.get(Set.class);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "No adapter from type java.util.Set to type java.lang.Runnable is available (registered types are java.util.List, java.util.Map).");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void get_types()
-    {
-
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-        Map<Class, Runnable> registrations = newMap();
-
-        registrations.put(List.class, r1);
-        registrations.put(Map.class, r2);
-
-        StrategyRegistry<Runnable> r = StrategyRegistry.newInstance(Runnable.class, registrations);
-
-
-        Collection<Class> types = r.getTypes();
-
-        assertEquals(types.size(), 2);
-        assertTrue(types.contains(List.class));
-        assertTrue(types.contains(Map.class));
-
-        verify();
-    }
-
-    @Test
-    public void adapter_not_found_when_non_error()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        Map<Class, Runnable> registrations = newMap();
-
-        registrations.put(List.class, r1);
-        registrations.put(Map.class, r2);
-
-        StrategyRegistry<Runnable> r = StrategyRegistry.newInstance(Runnable.class, registrations);
-
-        Runnable actual = r.get(ArrayList.class);
-
-        assertSame(actual, r1);
-
-        // The cache is almost impossible to "test", but we can at least collect some
-        // code coverage over those lines.
-
-        Runnable actual2 = r.get(ArrayList.class);
-        assertSame(actual2, r1);
-
-        r.clearCache();
-
-        Runnable actual3 = r.get(ArrayList.class);
-        assertSame(actual3, r1);
-
-        verify();
-    }
-
-    @Test
-    public void registration_map_is_copied_by_constructor()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        Map<Class, Runnable> registrations = newMap();
-
-        registrations.put(List.class, r1);
-        registrations.put(Map.class, r2);
-
-        StrategyRegistry<Runnable> r = StrategyRegistry.newInstance(Runnable.class, registrations);
-
-        registrations.clear();
-
-        Runnable actual = r.get(ArrayList.class);
-
-        assertSame(actual, r1);
-    }
-
-    @Test
-    public void adapter_found_by_instance()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-
-        replay();
-
-        Map<Class, Runnable> registrations = newMap();
-
-        registrations.put(List.class, r1);
-        registrations.put(Map.class, r2);
-
-        StrategyRegistry<Runnable> r = StrategyRegistry.newInstance(Runnable.class, registrations);
-
-        assertSame(r.getByInstance(registrations), r2);
-
-        verify();
-    }
-
-    @Test
-    public void null_instance_matches_class_void()
-    {
-        Runnable r1 = mockRunnable();
-        Runnable r2 = mockRunnable();
-        Runnable r3 = mockRunnable();
-
-        replay();
-
-        Map<Class, Runnable> registrations = newMap();
-
-        registrations.put(List.class, r1);
-        registrations.put(Map.class, r2);
-        registrations.put(void.class, r3);
-
-        StrategyRegistry<Runnable> r = StrategyRegistry.newInstance(Runnable.class, registrations);
-
-        assertSame(r.getByInstance(null), r3);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/TimeIntervalTest.java b/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/TimeIntervalTest.java
deleted file mode 100644
index 8aaca63..0000000
--- a/maint-5-2/tapestry-ioc/src/test/java/org/apache/tapestry5/ioc/util/TimeIntervalTest.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.ioc.util;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-public class TimeIntervalTest extends TestBase
-{
-    @Test
-    public void use_constructor()
-    {
-        TimeInterval p = new TimeInterval("30 s");
-
-        assertEquals(p.seconds(), 30);
-        assertEquals(p.milliseconds(), 30 * 1000);
-
-        assertEquals(p.toString(), "TimeInterval[30000 ms]");
-    }
-
-    @Test
-    public void invalid_units()
-    {
-        try
-        {
-            TimeInterval.parseMilliseconds("30s 500mz");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(),
-                         "Unknown time interval unit 'mz' (in '30s 500mz').  Defined units: d, h, m, ms, s, y.");
-        }
-    }
-
-    @Test
-    public void unrecognized_input()
-    {
-        try
-        {
-            TimeInterval.parseMilliseconds("30s z 500ms");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Unexpected string 'z' (in time interval '30s z 500ms').");
-        }
-    }
-
-    @Test
-    public void unrecognized_input_at_end()
-    {
-        try
-        {
-            TimeInterval.parseMilliseconds("30s  500ms xyz");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "Unexpected string 'xyz' (in time interval '30s  500ms xyz').");
-        }
-    }
-
-    @Test(dataProvider = "mix_of_units_data")
-    public void mix_of_units(String input, long expected)
-    {
-        assertEquals(TimeInterval.parseMilliseconds(input), expected);        
-    }
-
-    @DataProvider
-    public Object[][] mix_of_units_data()
-    {
-        return new Object[][] { { "54321", 54321 },
-
-                { "30s", 30 * 1000 },
-
-                { "1h 30m", 90 * 60 * 1000 },
-
-                { "2d", 2 * 24 * 60 * 60 * 1000 },
-
-                { "2m", 2 * 60 * 1000 },
-
-                { "23ms", 23 }
-
-        };
-    }
-    
-    @DataProvider
-    public Object[][] to_description_data()
-    {
-        return new Object[][] { { 60 * 1000, "1m" },
-                { 60 * 60 * 1000 + 35000 + 92, "1h 35s 92ms" },
-                { 0, "" }};
-    }
-    
-    
-    @Test(dataProvider="to_description_data")
-    public void to_description(long input, String expected)
-    {
-        assertEquals(new TimeInterval(input).toDescription(), expected);
-    }
-    
-   
-}
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/log4j.properties b/maint-5-2/tapestry-ioc/src/test/resources/log4j.properties
deleted file mode 100644
index 2b3e825..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,33 +0,0 @@
-# Copyright 2005, 2006, 2009, 2010 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=WARN, A1
-
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry=error
-log4j.category.tapestry=error
-log4j.category.tapestry.ioc.ClassFactory=error
-
-log4j.category.org.apache.tapestry5.ioc.FredModule=debug
-log4j.category.org.apache.tapestry5.ioc.AdviceDemoModule.Greeter=debug
-
-log4j.category.com.example=debug
-
-
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/parent-folder.txt b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/parent-folder.txt
deleted file mode 100644
index 1707262..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/parent-folder.txt
+++ /dev/null
@@ -1 +0,0 @@
-content from parent-folder resource
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/services/foo.properties b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/services/foo.properties
deleted file mode 100644
index b6fe6a8..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/services/foo.properties
+++ /dev/null
@@ -1,2 +0,0 @@
-homer=simpson
-monty=burns
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/TargetStrings.properties b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/TargetStrings.properties
deleted file mode 100644
index e3c2bae..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/TargetStrings.properties
+++ /dev/null
@@ -1,17 +0,0 @@
-# Copyright 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-no-args=No arguments.
-something-failed=Something failed: %s
-result=The result is '%s'.
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource.ext b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource.ext
deleted file mode 100644
index d48236e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource.ext
+++ /dev/null
@@ -1 +0,0 @@
-ext content
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource.txt b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource.txt
deleted file mode 100644
index 261ac3e..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource.txt
+++ /dev/null
@@ -1 +0,0 @@
-content from resource.txt
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource_fr.txt b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource_fr.txt
deleted file mode 100644
index de8bee9..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/resource_fr.txt
+++ /dev/null
@@ -1 +0,0 @@
-french content
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/same-folder.txt b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/same-folder.txt
deleted file mode 100644
index 3fee37d..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/same-folder.txt
+++ /dev/null
@@ -1 +0,0 @@
-content from same-folder resource
diff --git a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/sub/sub-folder.txt b/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/sub/sub-folder.txt
deleted file mode 100644
index 5552aec..0000000
--- a/maint-5-2/tapestry-ioc/src/test/resources/org/apache/tapestry5/ioc/internal/util/sub/sub-folder.txt
+++ /dev/null
@@ -1 +0,0 @@
-content from sub-folder resource
diff --git a/maint-5-2/tapestry-jmx/pom.xml b/maint-5-2/tapestry-jmx/pom.xml
deleted file mode 100644
index f650847..0000000
--- a/maint-5-2/tapestry-jmx/pom.xml
+++ /dev/null
@@ -1,109 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<groupId>org.apache.tapestry</groupId>
-	<artifactId>tapestry-jmx</artifactId>
-	<version>5.2.6</version>
-    <name>Tapestry JMX Support</name>
-    <description>
-        Provides support for JMX
-    </description>
-
-	<parent>
-		<groupId>org.apache.tapestry</groupId>
-		<artifactId>tapestry-project</artifactId>
-		<version>5.2.6</version>
-	</parent>
-
-	<url />
-	<dependencies>
-
-		<dependency>
-			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-core</artifactId>
-			<type>jar</type>
-			<optional>false</optional>
-		</dependency>
-		
-		<dependency>
-			<groupId>org.apache.tapestry</groupId>
-			<artifactId>tapestry-test</artifactId>
-			<type>jar</type>
-			<optional>false</optional>
-		</dependency>
-		<dependency>
-			<groupId>org.easymock</groupId>
-			<artifactId>easymock</artifactId>
-		</dependency>
-	</dependencies>
-	
-	<build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory.
--->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Tapestry-Module-Classes>
-                                org.apache.tapestry5.jmx.JmxModule
-                            </Tapestry-Module-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-
-        </plugins>
-    </build>
-	
-	<reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/internal/jmx/MBeanSupportImpl.java b/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/internal/jmx/MBeanSupportImpl.java
deleted file mode 100644
index b121210..0000000
--- a/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/internal/jmx/MBeanSupportImpl.java
+++ /dev/null
@@ -1,121 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.jmx;
-
-import static java.lang.String.format;
-
-import java.lang.management.ManagementFactory;
-import java.util.List;
-import java.util.Set;
-
-import javax.management.MBeanServer;
-import javax.management.MBeanServerFactory;
-import javax.management.ObjectName;
-
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.OneShotLock;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.apache.tapestry5.jmx.MBeanSupport;
-import org.slf4j.Logger;
-
-public class MBeanSupportImpl implements MBeanSupport, RegistryShutdownListener
-{
-    private Logger logger;
-
-    private MBeanServer server;
-    
-    private final OneShotLock lock = new OneShotLock();
-
-    private final Set<ObjectName> registeredBeans = CollectionFactory.newSet();
-
-    public MBeanSupportImpl(Logger logger)
-    {
-        this.logger = logger;
-        
-        // TODO: Agent Id should be configurable
-        final List<MBeanServer> servers = MBeanServerFactory.findMBeanServer(null);
-
-        if (servers != null && 0 <  servers.size())
-        {
-            this.server = servers.get(0);
-        }
-
-        if (this.server == null)
-        {
-            this.server = ManagementFactory.getPlatformMBeanServer();
-        }
-    }
-
-    public void register(final Object object, final ObjectName objectName)
-    {
-        lock.check();
-        
-        if (this.server.isRegistered(objectName))
-            return;
-        
-        try
-        {
-            this.server.registerMBean(object, objectName);
-
-            this.registeredBeans.add(objectName);
-
-            this.logger.info(format("Registered MBean '%s' with server", objectName));
-        }
-        catch (final Exception e)
-        {
-            this.logger.error(format("Failed to register MBean '%s' with server", objectName), e);
-        }
-    }
-
-    public void unregister(final ObjectName objectName)
-    {
-        lock.check();
-        
-        doUnregister(objectName);
-    }
-    
-    private void doUnregister(final ObjectName objectName)
-    {
-        if (this.server.isRegistered(objectName))
-        {
-            try
-            {
-                this.server.unregisterMBean(objectName);
-
-                this.logger.info(format("Unregistered MBean '%s' from server", objectName));
-                
-                if(registeredBeans.contains(objectName))
-                    registeredBeans.remove(objectName);
-            }
-            catch (final Exception e)
-            {
-                this.logger.error(String.format("Failed to unregister MBean '%s' from server", objectName), e);
-            }
-        }
-    }
-
-    public void registryDidShutdown()
-    {
-        lock.lock();
-        
-        for (final ObjectName name : this.registeredBeans)
-        {
-            doUnregister(name);
-        }
-
-        this.registeredBeans.clear();
-
-    }
-}
diff --git a/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/jmx/JmxModule.java b/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/jmx/JmxModule.java
deleted file mode 100644
index 706a066..0000000
--- a/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/jmx/JmxModule.java
+++ /dev/null
@@ -1,56 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.jmx;
-
-import javax.management.ObjectName;
-
-import org.apache.tapestry5.internal.jmx.MBeanSupportImpl;
-import org.apache.tapestry5.internal.services.PagePool;
-import org.apache.tapestry5.ioc.annotations.Autobuild;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-
-/**
- * Module for JMX services.
- *
- */
-public class JmxModule
-{
-    public MBeanSupport buildMBeanSupport(RegistryShutdownHub shutdownHub, @Autobuild MBeanSupportImpl service)
-    {
-        shutdownHub.addRegistryShutdownListener(service);
-        
-        return service;
-    }
-    
-    public static PagePool decoratePagePool(final PagePool pagePool, final MBeanSupport managedBeanSupport)
-    { 
-        final ObjectName objectName = buildObjectName("org.apache.tapestry5:service=PagePool");
-        
-        managedBeanSupport.register(pagePool, objectName);
-        
-        return pagePool;
-    }
-    
-    private static ObjectName buildObjectName(String name)
-    {
-        try
-        {
-            return new ObjectName(name);
-        }
-        catch (Exception e)
-        {
-            throw new RuntimeException(e);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/jmx/MBeanSupport.java b/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/jmx/MBeanSupport.java
deleted file mode 100644
index ecdff97..0000000
--- a/maint-5-2/tapestry-jmx/src/main/java/org/apache/tapestry5/jmx/MBeanSupport.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 20010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.jmx;
-
-import javax.management.ObjectName;
-
-/**
- * Creates an MBean server and registers MBeans with the created server. The registered MBeans are unregistered when Registry is shut down.
- * 
- * @since 5.2.0
- */
-public interface MBeanSupport 
-{
-
-    /**
-     * Registers the specified MBean with the server.
-     * 
-     * @param bean the MBean instance
-     * @param objectName the name for the MBean
-     */
-    void register(final Object bean, final ObjectName objectName);
-
-    /**
-     * Unregisters the specified MBean from the server.
-     * 
-     * @param objectName the name for the MBean
-     */
-    void unregister(final ObjectName objectName);
-
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-jmx/src/site/apt/index.apt b/maint-5-2/tapestry-jmx/src/site/apt/index.apt
deleted file mode 100644
index 26ea99c..0000000
--- a/maint-5-2/tapestry-jmx/src/site/apt/index.apt
+++ /dev/null
@@ -1,8 +0,0 @@
- ----
- About Tapestry JMX Support
- ----
-
-Tapestry JMX Support
-
-  Provides JMX support for Tapestry.
-
diff --git a/maint-5-2/tapestry-jmx/src/site/site.xml b/maint-5-2/tapestry-jmx/src/site/site.xml
deleted file mode 100644
index 80ea608..0000000
--- a/maint-5-2/tapestry-jmx/src/site/site.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2010 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry JMX Support">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="About" href="index.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-jmx/src/test/conf/testng.xml b/maint-5-2/tapestry-jmx/src/test/conf/testng.xml
deleted file mode 100644
index b1ed39c..0000000
--- a/maint-5-2/tapestry-jmx/src/test/conf/testng.xml
+++ /dev/null
@@ -1,22 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-	<!--
-		Copyright 2010 The Apache Software Foundation Licensed under the
-		Apache License, Version 2.0 (the "License"); you may not use this file
-		except in compliance with the License. You may obtain a copy of the
-		License at http://www.apache.org/licenses/LICENSE-2.0 Unless required
-		by applicable law or agreed to in writing, software distributed under
-		the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
-		CONDITIONS OF ANY KIND, either express or implied. See the License for
-		the specific language governing permissions and limitations under the
-		License.
-	-->
-
-<suite name="Tapestry JMX" parallel="false" thread-count="10" annotations="1.5" verbose="2">
-    <parameter name="tapestry.integration-webapp" value="src/test/webapp"/>
-
-    <test name="Tapestry JMX Integration Tests">
-        <packages>
-            <package name="org.apache.tapestry5.jmx.integration"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-jmx/src/test/conf/webdefault.xml b/maint-5-2/tapestry-jmx/src/test/conf/webdefault.xml
deleted file mode 100644
index 34083c9..0000000
--- a/maint-5-2/tapestry-jmx/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java b/maint-5-2/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java
deleted file mode 100644
index 6bd3e0d..0000000
--- a/maint-5-2/tapestry-jmx/src/test/java/org/apache/tapestry5/jmx/integration/TapestryJmxIntegrationTests.java
+++ /dev/null
@@ -1,37 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.jmx.integration;
-
-import org.apache.tapestry5.test.AbstractIntegrationTestSuite;
-import org.testng.annotations.Test;
-
-@Test(sequential = true, groups = "integration")
-public class TapestryJmxIntegrationTests extends AbstractIntegrationTestSuite
-{
-
-    public TapestryJmxIntegrationTests()
-    {
-        super("src/test/webapp");
-    }
-
-    /** TAP5-978 */
-    @Test
-    public void remote_pool_management()
-    {
-
-        start("Remote Pool Management");
-
-        assertTextPresent("SoftWait: 10");
-    }
-}
diff --git a/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/pages/Index.java b/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/pages/Index.java
deleted file mode 100644
index 89cefb3..0000000
--- a/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/pages/Index.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-/**
- * Start page.
- */
-public class Index
-{
-
-}
diff --git a/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/pages/RemotePoolManagement.java b/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/pages/RemotePoolManagement.java
deleted file mode 100644
index 65aed25..0000000
--- a/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/pages/RemotePoolManagement.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.pages;
-
-import java.lang.management.ManagementFactory;
-
-import javax.management.MBeanServer;
-import javax.management.ObjectName;
-
-public class RemotePoolManagement
-{
-    
-    public Object getSoftWait() throws Exception
-    {
-        MBeanServer server = ManagementFactory.getPlatformMBeanServer();
-        
-        return server.getAttribute(new ObjectName("org.apache.tapestry5:service=PagePool"), "SoftWait");
-    }
-
-}
diff --git a/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/services/AppModule.java b/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/services/AppModule.java
deleted file mode 100644
index 3d3db2d..0000000
--- a/maint-5-2/tapestry-jmx/src/test/java/org/example/testapp/services/AppModule.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.annotations.SubModule;
-import org.apache.tapestry5.jmx.JmxModule;
-
-@SubModule(JmxModule.class)
-public class AppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-        configuration.add(SymbolConstants.PAGE_POOL_ENABLED, "true");
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-jmx/src/test/webapp/Index.tml b/maint-5-2/tapestry-jmx/src/test/webapp/Index.tml
deleted file mode 100644
index ab690d9..0000000
--- a/maint-5-2/tapestry-jmx/src/test/webapp/Index.tml
+++ /dev/null
@@ -1,14 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <head>
-        <title>Start Page</title>
-    </head>
-    <body>
-        <h2>Test application for Tapestry JMX integration tests</h2>
-
-        <ul>
-            <li>
-                <t:pagelink page="RemotePoolManagement">Remote Pool Management</t:pagelink>
-            </li>
-        </ul>
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-jmx/src/test/webapp/RemotePoolManagement.tml b/maint-5-2/tapestry-jmx/src/test/webapp/RemotePoolManagement.tml
deleted file mode 100644
index e52dd9c..0000000
--- a/maint-5-2/tapestry-jmx/src/test/webapp/RemotePoolManagement.tml
+++ /dev/null
@@ -1,7 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-
-  <h1>Remote Pool Management Demo</h1>
-  
-  <p>SoftWait: ${softWait}</p>
-
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-jmx/src/test/webapp/WEB-INF/web.xml b/maint-5-2/tapestry-jmx/src/test/webapp/WEB-INF/web.xml
deleted file mode 100644
index 3e1a1d1..0000000
--- a/maint-5-2/tapestry-jmx/src/test/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Tapestry JMX Integration Test Application</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.example.testapp</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/CompactSession.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/CompactSession.class
deleted file mode 100644
index 3ffbbd8..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/CompactSession.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONArray.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONArray.class
deleted file mode 100644
index 90ad01d..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONArray.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONCollection.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONCollection.class
deleted file mode 100644
index 612460d..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONCollection.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONLiteral.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONLiteral.class
deleted file mode 100644
index 6970771..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONLiteral.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObject$Null.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObject$Null.class
deleted file mode 100644
index 4fb72d6..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObject$Null.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObject.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObject.class
deleted file mode 100644
index 5572191..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObject.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObjectTest.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObjectTest.class
deleted file mode 100644
index 27bb70a..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONObjectTest.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONPrintSession.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONPrintSession.class
deleted file mode 100644
index 5162fba..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONPrintSession.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONString.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONString.class
deleted file mode 100644
index 3b5a222..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONString.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONTokener.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONTokener.class
deleted file mode 100644
index e5c3776..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/JSONTokener.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/PrettyPrintSession$Position.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/PrettyPrintSession$Position.class
deleted file mode 100644
index 5934d00..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/PrettyPrintSession$Position.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/PrettyPrintSession.class b/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/PrettyPrintSession.class
deleted file mode 100644
index 443f9df..0000000
--- a/maint-5-2/tapestry-json/bin/org/apache/tapestry5/json/PrettyPrintSession.class
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-json/pom.xml b/maint-5-2/tapestry-json/pom.xml
deleted file mode 100644
index 40e4df1..0000000
--- a/maint-5-2/tapestry-json/pom.xml
+++ /dev/null
@@ -1,81 +0,0 @@
-<?xml version="1.0"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.tapestry</groupId>
-  <artifactId>tapestry-json</artifactId>
-  <packaging>jar</packaging>
-  <parent>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-project</artifactId>
-    <version>5.2.6</version>
-  </parent>
-  <name>Tapestry JSON Library</name>
-  <description>
-    Repackaged, improved (and tested) version of code originally from json.org.
-    </description>
-  <inceptionYear>2010</inceptionYear>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-test</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.tapestry</groupId>
-      <artifactId>tapestry-ioc</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-      </plugin>
-      <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>${cobertura-plugin-version}</version>
-        <executions>
-          <execution>
-            <id>clean</id>
-            <goals>
-              <goal>clean</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>summary</report>
-              <report>dependencies</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>cobertura-maven-plugin</artifactId>
-        <version>${cobertura-plugin-version}</version>
-      </plugin>
-    </plugins>
-  </reporting>
-</project>
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/CompactSession.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/CompactSession.java
deleted file mode 100644
index 563d17e..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/CompactSession.java
+++ /dev/null
@@ -1,67 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-import java.io.PrintWriter;
-
-/**
- * Prints the JSON content compactly, with no indentation or extra whitespace.
- * 
- * @since 5.2.0
- */
-class CompactSession implements JSONPrintSession
-{
-    private final PrintWriter writer;
-
-    public CompactSession(PrintWriter writer)
-    {
-        this.writer = writer;
-    }
-
-    public JSONPrintSession indent()
-    {
-        return this;
-    }
-
-    public JSONPrintSession newline()
-    {
-        return this;
-    }
-
-    public JSONPrintSession outdent()
-    {
-        return this;
-    }
-
-    public JSONPrintSession print(String value)
-    {
-        writer.print(value);
-
-        return this;
-    }
-
-    public JSONPrintSession printQuoted(String value)
-    {
-        return print(JSONObject.quote(value));
-    }
-
-    public JSONPrintSession printSymbol(char symbol)
-    {
-        writer.print(symbol);
-
-        return this;
-    }
-
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java
deleted file mode 100644
index 2c24931..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONArray.java
+++ /dev/null
@@ -1,434 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-/*
- * Copyright (c) 2002 JSON.org
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * The Software shall be used for Good, not Evil.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-import java.util.ArrayList;
-import java.util.Iterator;
-import java.util.List;
-
-/**
- * A JSONArray is an ordered sequence of values. Its external text form is a string wrapped in square brackets with
- * commas separating the values. The internal form is an object having <code>get</code> and <code>opt</code> methods for
- * accessing the values by index, and <code>put</code> methods for adding or replacing values. The values can be any of
- * these types: <code>Boolean</code>, <code>JSONArray</code>, <code>JSONObject</code>, <code>Number</code>,
- * <code>String</code>, or the <code>JSONObject.NULL object</code>.
- * <p/>
- * The constructor can convert a JSON text into a Java object. The <code>toString</code> method converts to JSON text.
- * <p/>
- * A <code>get</code> method returns a value if one can be found, and throws an exception if one cannot be found. An
- * <code>opt</code> method returns a default value instead of throwing an exception, and so is useful for obtaining
- * optional values.
- * <p/>
- * The generic <code>get()</code> and <code>opt()</code> methods return an object which you can cast or query for type.
- * There are also typed <code>get</code> and <code>opt</code> methods that do type checking and type coersion for you.
- * <p/>
- * The texts produced by the <code>toString</code> methods strictly conform to JSON syntax rules. The constructors are
- * more forgiving in the texts they will accept:
- * <ul>
- * <li>An extra <code>,</code>&nbsp;<small>(comma)</small> may appear just before the closing bracket.</li>
- * <li>The <code>null</code> value will be inserted when there is <code>,</code>&nbsp;<small>(comma)</small> elision.</li>
- * <li>Strings may be quoted with <code>'</code>&nbsp;<small>(single quote)</small>.</li>
- * <li>Strings do not need to be quoted at all if they do not begin with a quote or single quote, and if they do not
- * contain leading or trailing spaces, and if they do not contain any of these characters:
- * <code>{ } [ ] / \ : , = ; #</code> and if they do not look like numbers and if they are not the reserved words
- * <code>true</code>, <code>false</code>, or <code>null</code>.</li>
- * <li>Values can be separated by <code>;</code> <small>(semicolon)</small> as well as by <code>,</code>
- * <small>(comma)</small>.</li>
- * <li>Numbers may have the <code>0-</code> <small>(octal)</small> or <code>0x-</code> <small>(hex)</small> prefix.</li>
- * <li>Comments written in the slashshlash, slashstar, and hash conventions will be ignored.</li>
- * </ul>
- * 
- * @author JSON.org
- * @version 2
- */
-public final class JSONArray extends JSONCollection implements Iterable<Object>
-{
-
-    /**
-     * The arrayList where the JSONArray's properties are kept.
-     */
-    private final List<Object> list = new ArrayList<Object>();
-
-    /**
-     * Construct an empty JSONArray.
-     */
-    public JSONArray()
-    {
-    }
-
-    public JSONArray(String text)
-    {
-        JSONTokener tokener = new JSONTokener(text);
-
-        parse(tokener);
-    }
-
-    public JSONArray(Object... values)
-    {
-        for (Object value : values)
-            put(value);
-    }
-
-    public Iterator<Object> iterator()
-    {
-        return list.iterator();
-    }
-
-    /**
-     * Construct a JSONArray from a JSONTokener.
-     * 
-     * @param tokenizer
-     *            A JSONTokener
-     * @throws RuntimeException
-     *             If there is a syntax error.
-     */
-    JSONArray(JSONTokener tokenizer)
-    {
-        assert tokenizer != null;
-
-        parse(tokenizer);
-    }
-
-    private void parse(JSONTokener tokenizer)
-    {
-        if (tokenizer.nextClean() != '[') { throw tokenizer.syntaxError("A JSONArray text must start with '['"); }
-
-        if (tokenizer.nextClean() == ']') { return; }
-
-        tokenizer.back();
-
-        while (true)
-        {
-            if (tokenizer.nextClean() == ',')
-            {
-                tokenizer.back();
-                list.add(JSONObject.NULL);
-            }
-            else
-            {
-                tokenizer.back();
-                list.add(tokenizer.nextValue());
-            }
-
-            switch (tokenizer.nextClean())
-            {
-                case ';':
-                case ',':
-                    if (tokenizer.nextClean() == ']') { return; }
-                    tokenizer.back();
-                    break;
-
-                case ']':
-                    return;
-
-                default:
-                    throw tokenizer.syntaxError("Expected a ',' or ']'");
-            }
-        }
-    }
-
-    /**
-     * Get the object value associated with an index.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return An object value.
-     * @throws RuntimeException
-     *             If there is no value for the index.
-     */
-    public Object get(int index)
-    {
-        return list.get(index);
-    }
-
-    /**
-     * Get the boolean value associated with an index. The string values "true" and "false" are converted to boolean.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return The truth.
-     * @throws RuntimeException
-     *             If there is no value for the index or if the value is not convertable to boolean.
-     */
-    public boolean getBoolean(int index)
-    {
-        Object value = get(index);
-
-        if (value instanceof Boolean) { return (Boolean) value; }
-
-        if (value instanceof String)
-        {
-            String asString = (String) value;
-
-            if (asString.equalsIgnoreCase("false"))
-                return false;
-
-            if (asString.equalsIgnoreCase("true"))
-                return true;
-        }
-
-        throw new RuntimeException("JSONArray[" + index + "] is not a Boolean.");
-    }
-
-    /**
-     * Get the double value associated with an index.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return The value.
-     * @throws IllegalArgumentException
-     *             If the key is not found or if the value cannot be converted to a number.
-     */
-    public double getDouble(int index)
-    {
-        Object value = get(index);
-
-        try
-        {
-            if (value instanceof Number)
-                return ((Number) value).doubleValue();
-
-            return Double.valueOf((String) value);
-        }
-        catch (Exception e)
-        {
-            throw new IllegalArgumentException("JSONArray[" + index + "] is not a number.");
-        }
-    }
-
-    /**
-     * Get the int value associated with an index.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return The value.
-     * @throws IllegalArgumentException
-     *             If the key is not found or if the value cannot be converted to a number. if the
-     *             value cannot be converted to a number.
-     */
-    public int getInt(int index)
-    {
-        Object o = get(index);
-        return o instanceof Number ? ((Number) o).intValue() : (int) getDouble(index);
-    }
-
-    /**
-     * Get the JSONArray associated with an index.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return A JSONArray value.
-     * @throws RuntimeException
-     *             If there is no value for the index. or if the value is not a JSONArray
-     */
-    public JSONArray getJSONArray(int index)
-    {
-        Object o = get(index);
-        if (o instanceof JSONArray) { return (JSONArray) o; }
-
-        throw new RuntimeException("JSONArray[" + index + "] is not a JSONArray.");
-    }
-
-    /**
-     * Get the JSONObject associated with an index.
-     * 
-     * @param index
-     *            subscript
-     * @return A JSONObject value.
-     * @throws RuntimeException
-     *             If there is no value for the index or if the value is not a JSONObject
-     */
-    public JSONObject getJSONObject(int index)
-    {
-        Object o = get(index);
-        if (o instanceof JSONObject) { return (JSONObject) o; }
-
-        throw new RuntimeException("JSONArray[" + index + "] is not a JSONObject.");
-    }
-
-    /**
-     * Get the long value associated with an index.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return The value.
-     * @throws IllegalArgumentException
-     *             If the key is not found or if the value cannot be converted to a number.
-     */
-    public long getLong(int index)
-    {
-        Object o = get(index);
-        return o instanceof Number ? ((Number) o).longValue() : (long) getDouble(index);
-    }
-
-    /**
-     * Get the string associated with an index.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return A string value.
-     * @throws RuntimeException
-     *             If there is no value for the index.
-     */
-    public String getString(int index)
-    {
-        return get(index).toString();
-    }
-
-    /**
-     * Determine if the value is null.
-     * 
-     * @param index
-     *            The index must be between 0 and length() - 1.
-     * @return true if the value at the index is null, or if there is no value.
-     */
-    public boolean isNull(int index)
-    {
-        return get(index) == JSONObject.NULL;
-    }
-
-    /**
-     * Get the number of elements in the JSONArray, included nulls.
-     * 
-     * @return The length (or size).
-     */
-    public int length()
-    {
-        return list.size();
-    }
-
-    /**
-     * Append an object value. This increases the array's length by one.
-     * 
-     * @param value
-     *            An object value. The value should be a Boolean, Double, Integer, JSONArray, JSONObject, JSONLiteral,
-     *            Long, or String, or the JSONObject.NULL singleton.
-     * @return
-     */
-    public JSONArray put(Object value)
-    {
-        assert value != null;
-
-        JSONObject.testValidity(value);
-
-        list.add(value);
-
-        return this;
-    }
-
-    /**
-     * Put or replace an object value in the JSONArray. If the index is greater than the length of the JSONArray, then
-     * null elements will be added as necessary to pad it out.
-     * 
-     * @param index
-     *            The subscript.
-     * @param value
-     *            The value to put into the array. The value should be a Boolean, Double, Integer, JSONArray,
-     *            JSONObject, JSONString, Long, or String, or the JSONObject.NULL singeton.
-     * @return
-     * @throws RuntimeException
-     *             If the index is negative or if the the value is an invalid number.
-     */
-    public JSONArray put(int index, Object value)
-    {
-        assert value != null;
-
-        if (index < 0) { throw new RuntimeException("JSONArray[" + index + "] not found."); }
-
-        JSONObject.testValidity(value);
-
-        if (index < length())
-        {
-            list.set(index, value);
-        }
-        else
-        {
-            while (index != length())
-                list.add(JSONObject.NULL);
-
-            list.add(value);
-        }
-
-        return this;
-    }
-
-    /** Used for testing. */
-    Object[] toArray()
-    {
-        return list.toArray();
-    }
-
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == null)
-            return false;
-
-        if (!(obj instanceof JSONArray))
-            return false;
-
-        JSONArray other = (JSONArray) obj;
-
-        return list.equals(other.list);
-    }
-
-    void print(JSONPrintSession session)
-    {
-        session.printSymbol('[');
-
-        session.indent();
-
-        boolean comma = false;
-
-        for (Object value : list)
-        {
-            if (comma)
-                session.printSymbol(',');
-
-            session.newline();
-
-            JSONObject.printValue(session, value);
-
-            comma = true;
-        }
-
-        session.outdent();
-
-        if (comma)
-            session.newline();
-
-        session.printSymbol(']');
-    }
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java
deleted file mode 100644
index e29ddbb..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONCollection.java
+++ /dev/null
@@ -1,119 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-import java.io.CharArrayWriter;
-import java.io.PrintWriter;
-
-/**
- * Base class for {@link JSONArray} and {@link JSONObject} that exists to organize the code
- * for printing such objects (either compact or pretty).
- * 
- * @since 5.2.0
- */
-public abstract class JSONCollection
-{
-    /**
-     * Converts this JSON collection into a parsable string representation.
-     * <p/>
-     * Warning: This method assumes that the data structure is acyclical.
-     * <p>
-     * Starting in release 5.2, the result will be pretty printed for readability.
-     * 
-     * @return a printable, displayable, portable, transmittable representation of the object, beginning with
-     *         <code>{</code>&nbsp;<small>(left brace)</small> and ending with <code>}</code>&nbsp;<small>(right
-     *         brace)</small>.
-     */
-    @Override
-    public String toString()
-    {
-        CharArrayWriter caw = new CharArrayWriter();
-        PrintWriter pw = new PrintWriter(caw);
-
-        JSONPrintSession session = new PrettyPrintSession(pw);
-
-        print(session);
-
-        pw.close();
-
-        return caw.toString();
-    }
-
-    /**
-     * Converts the JSONObject to a compact or pretty-print string representation
-     * 
-     * @param compact
-     *            if true, return minimal format string.
-     * @since 5.2.0
-     */
-    public String toString(boolean compact)
-    {
-        return compact ? toCompactString() : toString();
-    }
-
-    /**
-     * Prints the JSONObject as a compact string (not extra punctuation). This is, essentially, what
-     * Tapestry 5.1 did inside {@link #toString()}.
-     */
-    public String toCompactString()
-    {
-        CharArrayWriter caw = new CharArrayWriter();
-        PrintWriter pw = new PrintWriter(caw);
-
-        print(pw);
-
-        pw.close();
-
-        return caw.toString();
-    }
-
-    /**
-     * Prints the JSONObject to the write (compactly or not).
-     * 
-     * @param writer
-     *            to write content to
-     * @param compact
-     *            if true, then write compactly, if false, write with pretty printing
-     * @since 5.2.1
-     */
-    public void print(PrintWriter writer, boolean compact)
-    {
-        JSONPrintSession session = compact ? new CompactSession(writer) : new PrettyPrintSession(writer);
-
-        print(session);
-    }
-
-    /**
-     * Prints the JSONObject to the writer compactly (with no extra whitespace).
-     */
-    public void print(PrintWriter writer)
-    {
-        print(writer, true);
-    }
-
-    /**
-     * Prints the JSONObject to the writer using indentation (two spaces per indentation level).
-     */
-    public void prettyPrint(PrintWriter writer)
-    {
-        print(writer, false);
-    }
-
-    /**
-     * Print the collection in a parsable format using the session to (optionally) inject extra
-     * whitespace (for "pretty printing").
-     */
-    abstract void print(JSONPrintSession session);
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONLiteral.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONLiteral.java
deleted file mode 100644
index e5f7fc7..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONLiteral.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-/**
- * A way of including some text (often, text that violates the normal JSON specification) as part of a JSON object or
- * array. This is used in a few places where data is nominally JSON but actually includes some non-conformant elements,
- * such as an inline function definition.
- * 
- * @since 5.1.0.2
- */
-public class JSONLiteral implements JSONString
-{
-    private final String text;
-
-    public JSONLiteral(String text)
-    {
-        this.text = text;
-    }
-
-    /**
-     * Returns the text property; this is also the value placed into the JSON string (unquoted, exactly as is).
-     * 
-     * @return the text
-     */
-    @Override
-    public String toString()
-    {
-        return text;
-    }
-
-    public String toJSONString()
-    {
-        return text;
-    }
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
deleted file mode 100644
index eb05a00..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONObject.java
+++ /dev/null
@@ -1,918 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-/*
- * Copyright (c) 2002 JSON.org
- * Permission is hereby granted, free of charge, to any person obtaining a copy
- * of this software and associated documentation files (the "Software"), to deal
- * in the Software without restriction, including without limitation the rights
- * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- * copies of the Software, and to permit persons to whom the Software is
- * furnished to do so, subject to the following conditions:
- * The above copyright notice and this permission notice shall be included in all
- * copies or substantial portions of the Software.
- * The Software shall be used for Good, not Evil.
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- * SOFTWARE.
- */
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-/**
- * A JSONObject is an unordered collection of name/value pairs. Its external form is a string wrapped in curly braces
- * with colons between the names and values, and commas between the values and names. The internal form is an object
- * having <code>get</code> and <code>opt</code> methods for accessing the values by name, and <code>put</code> methods
- * for adding or replacing values by name. The values can be any of these types: <code>Boolean</code>,
- * {@link org.apache.tapestry5.json.JSONArray}, {@link org.apache.tapestry5.json.JSONLiteral}, <code>JSONObject</code>,
- * <code>Number</code>, <code>String</code>, or the <code>JSONObject.NULL</code> object. A JSONObject constructor can be
- * used to convert an external form JSON text into
- * an internal form whose values can be retrieved with the <code>get</code> and <code>opt</code> methods, or to convert
- * values into a JSON text using the <code>put</code> and <code>toString</code> methods. A <code>get</code> method
- * returns a value if one can be found, and throws an exception if one cannot be found. An <code>opt</code> method
- * returns a default value instead of throwing an exception, and so is useful for obtaining optional values.
- * <p/>
- * The generic <code>get()</code> and <code>opt()</code> methods return an object, which you can cast or query for type.
- * There are also typed <code>get</code> and <code>opt</code> methods that do type checking and type coersion for you.
- * <p/>
- * The <code>put</code> methods adds values to an object. For example,
- * <p/>
- * 
- * <pre>
- * myString = new JSONObject().put(&quot;JSON&quot;, &quot;Hello, World!&quot;).toString();
- * </pre>
- * <p/>
- * produces the string <code>{"JSON": "Hello, World"}</code>.
- * <p/>
- * The texts produced by the <code>toString</code> methods strictly conform to the JSON syntax rules. The constructors
- * are more forgiving in the texts they will accept:
- * <ul>
- * <li>An extra <code>,</code>&nbsp;<small>(comma)</small> may appear just before the closing brace.</li>
- * <li>Strings may be quoted with <code>'</code>&nbsp;<small>(single quote)</small>.</li>
- * <li>Strings do not need to be quoted at all if they do not begin with a quote or single quote, and if they do not
- * contain leading or trailing spaces, and if they do not contain any of these characters: <code>{ }
- * [ ] / \ : , = ; #</code> and if they do not look like numbers and if they are not the reserved words
- * <code>true</code>, <code>false</code>, or <code>null</code>.</li>
- * <li>Keys can be followed by <code>=</code> or <code>=></code> as well as by <code>:</code>.</li>
- * <li>Values can be followed by <code>;</code> <small>(semicolon)</small> as well as by <code>,</code>
- * <small>(comma)</small>.</li>
- * <li>Numbers may have the <code>0-</code> <small>(octal)</small> or <code>0x-</code> <small>(hex)</small> prefix.</li>
- * <li>Comments written in the slashshlash, slashstar, and hash conventions will be ignored.</li>
- * </ul>
- * <hr/>
- * <p/>
- * This class, and the other related classes, have been heavily modified from the original source, to fit Tapestry
- * standards and to make use of JDK 1.5 features such as generics. Further, since the interest of Tapestry is primarily
- * constructing JSON (and not parsing it), many of the non-essential methods have been removed (since the original code
- * came with no tests).
- * <p/>
- * Finally, support for the {@link org.apache.tapestry5.json.JSONLiteral} type has been added, which allow the exact
- * output to be controlled; useful when a JSONObject is being used as a configuration object, and must contain values
- * that are not simple data, such as an inline function (technically making the result not JSON).
- * 
- * @author JSON.org
- * @version 2
- */
-@SuppressWarnings(
-{ "CloneDoesntCallSuperClone" })
-public final class JSONObject extends JSONCollection
-{
-
-    /**
-     * JSONObject.NULL is equivalent to the value that JavaScript calls null, whilst Java's null is equivalent to the
-     * value that JavaScript calls undefined.
-     */
-    private static final class Null implements JSONString
-    {
-        /**
-         * A Null object is equal to the null value and to itself.
-         * 
-         * @param object
-         *            An object to test for nullness.
-         * @return true if the object parameter is the JSONObject.NULL object or null.
-         */
-        @Override
-        public boolean equals(Object object)
-        {
-            return object == null || object == this;
-        }
-
-        /**
-         * Get the "null" string value.
-         * 
-         * @return The string "null".
-         */
-        @Override
-        public String toString()
-        {
-            return "null";
-        }
-
-        public String toJSONString()
-        {
-            return "null";
-        }
-    }
-
-    /**
-     * The map where the JSONObject's properties are kept.
-     */
-    private final Map<String, Object> properties = new HashMap<String, Object>();
-
-    /**
-     * It is sometimes more convenient and less ambiguous to have a <code>NULL</code> object than to use Java's
-     * <code>null</code> value. <code>JSONObject.NULL.equals(null)</code> returns <code>true</code>.
-     * <code>JSONObject.NULL.toString()</code> returns <code>"null"</code>.
-     */
-    public static final Object NULL = new Null();
-
-    /**
-     * Construct an empty JSONObject.
-     */
-    public JSONObject()
-    {
-    }
-
-    /**
-     * Constructs a new JSONObject using a series of String keys and values.
-     * 
-     * @since 5.2.0
-     */
-    public JSONObject(String... keysAndValues)
-    {
-        int i = 0;
-
-        while (i < keysAndValues.length)
-        {
-            put(keysAndValues[i++], keysAndValues[i++]);
-        }
-    }
-
-    /**
-     * Construct a JSONObject from a subset of another JSONObject. An array of strings is used to identify the keys that
-     * should be copied. Missing keys are ignored.
-     * 
-     * @param source
-     *            A JSONObject.
-     * @param propertyNames
-     *            The strings to copy.
-     * @throws RuntimeException
-     *             If a value is a non-finite number.
-     */
-    public JSONObject(JSONObject source, String... propertyNames)
-    {
-        for (String name : propertyNames)
-        {
-            Object value = source.opt(name);
-
-            if (value != null)
-                put(name, value);
-        }
-    }
-
-    /**
-     * Construct a JSONObject from a JSONTokener.
-     * 
-     * @param x
-     *            A JSONTokener object containing the source string. @ If there is a syntax error in the source string.
-     */
-    JSONObject(JSONTokener x)
-    {
-        String key;
-
-        if (x.nextClean() != '{') { throw x.syntaxError("A JSONObject text must begin with '{'"); }
-
-        while (true)
-        {
-            char c = x.nextClean();
-            switch (c)
-            {
-                case 0:
-                    throw x.syntaxError("A JSONObject text must end with '}'");
-                case '}':
-                    return;
-                default:
-                    x.back();
-                    key = x.nextValue().toString();
-            }
-
-            /*
-             * The key is followed by ':'. We will also tolerate '=' or '=>'.
-             */
-
-            c = x.nextClean();
-            if (c == '=')
-            {
-                if (x.next() != '>')
-                {
-                    x.back();
-                }
-            }
-            else if (c != ':') { throw x.syntaxError("Expected a ':' after a key"); }
-            put(key, x.nextValue());
-
-            /*
-             * Pairs are separated by ','. We will also tolerate ';'.
-             */
-
-            switch (x.nextClean())
-            {
-                case ';':
-                case ',':
-                    if (x.nextClean() == '}') { return; }
-                    x.back();
-                    break;
-                case '}':
-                    return;
-                default:
-                    throw x.syntaxError("Expected a ',' or '}'");
-            }
-        }
-    }
-
-    /**
-     * Construct a JSONObject from a string. This is the most commonly used JSONObject constructor.
-     * 
-     * @param string
-     *            A string beginning with <code>{</code>&nbsp;<small>(left brace)</small> and ending with <code>}</code>
-     *            &nbsp;<small>(right brace)</small>.
-     * @throws RuntimeException
-     *             If there is a syntax error in the source string.
-     */
-    public JSONObject(String string)
-    {
-        this(new JSONTokener(string));
-    }
-
-    /**
-     * Accumulate values under a key. It is similar to the put method except that if there is already an object stored
-     * under the key then a JSONArray is stored under the key to hold all of the accumulated values. If there is already
-     * a JSONArray, then the new value is appended to it. In contrast, the put method replaces the previous value.
-     * 
-     * @param key
-     *            A key string.
-     * @param value
-     *            An object to be accumulated under the key.
-     * @return this.
-     * @throws {@link RuntimeException} If the value is an invalid number or if the key is null.
-     */
-    public JSONObject accumulate(String key, Object value)
-    {
-        testValidity(value);
-
-        Object existing = opt(key);
-
-        if (existing == null)
-        {
-            // Note that the original implementation of this method contradicited the method
-            // documentation.
-            put(key, value);
-            return this;
-        }
-
-        if (existing instanceof JSONArray)
-        {
-            ((JSONArray) existing).put(value);
-            return this;
-        }
-
-        // Replace the existing value, of any type, with an array that includes both the
-        // existing and the new value.
-
-        put(key, new JSONArray().put(existing).put(value));
-
-        return this;
-    }
-
-    /**
-     * Append values to the array under a key. If the key does not exist in the JSONObject, then the key is put in the
-     * JSONObject with its value being a JSONArray containing the value parameter. If the key was already associated
-     * with a JSONArray, then the value parameter is appended to it.
-     * 
-     * @param key
-     *            A key string.
-     * @param value
-     *            An object to be accumulated under the key.
-     * @return this. @ If the key is null or if the current value associated with the key is not a JSONArray.
-     */
-    public JSONObject append(String key, Object value)
-    {
-        testValidity(value);
-        Object o = opt(key);
-        if (o == null)
-        {
-            put(key, new JSONArray().put(value));
-        }
-        else if (o instanceof JSONArray)
-        {
-            put(key, ((JSONArray) o).put(value));
-        }
-        else
-        {
-            throw new RuntimeException("JSONObject[" + quote(key) + "] is not a JSONArray.");
-        }
-
-        return this;
-    }
-
-    /**
-     * Produce a string from a double. The string "null" will be returned if the number is not finite.
-     * 
-     * @param d
-     *            A double.
-     * @return A String.
-     */
-    static String doubleToString(double d)
-    {
-        if (Double.isInfinite(d) || Double.isNaN(d)) { return "null"; }
-
-        // Shave off trailing zeros and decimal point, if possible.
-
-        String s = Double.toString(d);
-        if (s.indexOf('.') > 0 && s.indexOf('e') < 0 && s.indexOf('E') < 0)
-        {
-            while (s.endsWith("0"))
-            {
-                s = s.substring(0, s.length() - 1);
-            }
-            if (s.endsWith("."))
-            {
-                s = s.substring(0, s.length() - 1);
-            }
-        }
-        return s;
-    }
-
-    /**
-     * Get the value object associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return The object associated with the key. @ if the key is not found.
-     * @see #opt(String)
-     */
-    public Object get(String key)
-    {
-        Object o = opt(key);
-        if (o == null) { throw new RuntimeException("JSONObject[" + quote(key) + "] not found."); }
-
-        return o;
-    }
-
-    /**
-     * Get the boolean value associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return The truth.
-     * @throws RuntimeException
-     *             if the value is not a Boolean or the String "true" or "false".
-     */
-    public boolean getBoolean(String key)
-    {
-        Object o = get(key);
-
-        if (o instanceof Boolean)
-            return o.equals(Boolean.TRUE);
-
-        if (o instanceof String)
-        {
-            String value = (String) o;
-
-            if (value.equalsIgnoreCase("true"))
-                return true;
-
-            if (value.equalsIgnoreCase("false"))
-                return false;
-        }
-
-        throw new RuntimeException("JSONObject[" + quote(key) + "] is not a Boolean.");
-    }
-
-    /**
-     * Get the double value associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return The numeric value. @ if the key is not found or if the value is not a Number object and cannot be
-     *         converted to a number.
-     */
-    public double getDouble(String key)
-    {
-        Object value = get(key);
-
-        try
-        {
-            if (value instanceof Number)
-                return ((Number) value).doubleValue();
-
-            // This is a bit sloppy for the case where value is not a string.
-
-            return Double.valueOf((String) value);
-        }
-        catch (Exception e)
-        {
-            throw new RuntimeException("JSONObject[" + quote(key) + "] is not a number.");
-        }
-    }
-
-    /**
-     * Get the int value associated with a key. If the number value is too large for an int, it will be clipped.
-     * 
-     * @param key
-     *            A key string.
-     * @return The integer value. @ if the key is not found or if the value cannot be converted to an integer.
-     */
-    public int getInt(String key)
-    {
-        Object value = get(key);
-
-        if (value instanceof Number)
-            return ((Number) value).intValue();
-
-        // Very inefficient way to do this!
-        return (int) getDouble(key);
-    }
-
-    /**
-     * Get the JSONArray value associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return A JSONArray which is the value.
-     * @throws RuntimeException
-     *             if the key is not found or if the value is not a JSONArray.
-     */
-    public JSONArray getJSONArray(String key)
-    {
-        Object o = get(key);
-        if (o instanceof JSONArray) { return (JSONArray) o; }
-
-        throw new RuntimeException("JSONObject[" + quote(key) + "] is not a JSONArray.");
-    }
-
-    /**
-     * Get the JSONObject value associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return A JSONObject which is the value.
-     * @throws RuntimeException
-     *             if the key is not found or if the value is not a JSONObject.
-     */
-    public JSONObject getJSONObject(String key)
-    {
-        Object o = get(key);
-        if (o instanceof JSONObject) { return (JSONObject) o; }
-
-        throw new RuntimeException("JSONObject[" + quote(key) + "] is not a JSONObject.");
-    }
-
-    /**
-     * Get the long value associated with a key. If the number value is too long for a long, it will be clipped.
-     * 
-     * @param key
-     *            A key string.
-     * @return The long value. @ if the key is not found or if the value cannot be converted to a long.
-     */
-    public long getLong(String key)
-    {
-        Object o = get(key);
-        return o instanceof Number ? ((Number) o).longValue() : (long) getDouble(key);
-    }
-
-    /**
-     * Get the string associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return A string which is the value.
-     * @throws RuntimeException
-     *             if the key is not found.
-     */
-    public String getString(String key)
-    {
-        return get(key).toString();
-    }
-
-    /**
-     * Determine if the JSONObject contains a specific key.
-     * 
-     * @param key
-     *            A key string.
-     * @return true if the key exists in the JSONObject.
-     */
-    public boolean has(String key)
-    {
-        return properties.containsKey(key);
-    }
-
-    /**
-     * Determine if the value associated with the key is null or if there is no value.
-     * 
-     * @param key
-     *            A key string.
-     * @return true if there is no value associated with the key or if the value is the JSONObject.NULL object.
-     */
-    public boolean isNull(String key)
-    {
-        return JSONObject.NULL.equals(opt(key));
-    }
-
-    /**
-     * Get an enumeration of the keys of the JSONObject. Caution: the set should not be modified.
-     * 
-     * @return An iterator of the keys.
-     */
-    public Set<String> keys()
-    {
-        return properties.keySet();
-    }
-
-    /**
-     * Get the number of keys stored in the JSONObject.
-     * 
-     * @return The number of keys in the JSONObject.
-     */
-    public int length()
-    {
-        return properties.size();
-    }
-
-    /**
-     * Produce a JSONArray containing the names of the elements of this JSONObject.
-     * 
-     * @return A JSONArray containing the key strings, or null if the JSONObject is empty.
-     */
-    public JSONArray names()
-    {
-        JSONArray ja = new JSONArray();
-
-        for (String key : keys())
-        {
-            ja.put(key);
-        }
-
-        return ja.length() == 0 ? null : ja;
-    }
-
-    /**
-     * Produce a string from a Number.
-     * 
-     * @param n
-     *            A Number
-     * @return A String. @ If n is a non-finite number.
-     */
-    static String numberToString(Number n)
-    {
-        assert n != null;
-
-        testValidity(n);
-
-        // Shave off trailing zeros and decimal point, if possible.
-
-        String s = n.toString();
-        if (s.indexOf('.') > 0 && s.indexOf('e') < 0 && s.indexOf('E') < 0)
-        {
-            while (s.endsWith("0"))
-            {
-                s = s.substring(0, s.length() - 1);
-            }
-            if (s.endsWith("."))
-            {
-                s = s.substring(0, s.length() - 1);
-            }
-        }
-        return s;
-    }
-
-    /**
-     * Get an optional value associated with a key.
-     * 
-     * @param key
-     *            A key string.
-     * @return An object which is the value, or null if there is no value.
-     * @see #get(String)
-     */
-    public Object opt(String key)
-    {
-        return properties.get(key);
-    }
-
-    /**
-     * Put a key/value pair in the JSONObject. If the value is null, then the key will be removed from the JSONObject if
-     * it is present.
-     * 
-     * @param key
-     *            A key string.
-     * @param value
-     *            An object which is the value. It should be of one of these types: Boolean, Double, Integer,
-     *            JSONArray, JSONObject, JSONLiteral, Long, String, or the JSONObject.NULL object.
-     * @return this.
-     * @throws RuntimeException
-     *             If the value is non-finite number or if the key is null.
-     */
-    public JSONObject put(String key, Object value)
-    {
-        assert key != null;
-
-        if (value != null)
-        {
-            testValidity(value);
-            properties.put(key, value);
-        }
-        else
-        {
-            remove(key);
-        }
-
-        return this;
-    }
-
-    /**
-     * Produce a string in double quotes with backslash sequences in all the right places. A backslash will be inserted
-     * within </, allowing JSON text to be delivered in HTML. In JSON text, a string cannot contain a control character
-     * or an unescaped quote or backslash.
-     * 
-     * @param string
-     *            A String
-     * @return A String correctly formatted for insertion in a JSON text.
-     */
-    public static String quote(String string)
-    {
-        if (string == null || string.length() == 0) { return "\"\""; }
-
-        char b;
-        char c = 0;
-        int i;
-        int len = string.length();
-        StringBuilder buffer = new StringBuilder(len + 4);
-        String t;
-
-        buffer.append('"');
-        for (i = 0; i < len; i += 1)
-        {
-            b = c;
-            c = string.charAt(i);
-            switch (c)
-            {
-                case '\\':
-                case '"':
-                    buffer.append('\\');
-                    buffer.append(c);
-                    break;
-                case '/':
-                    if (b == '<')
-                    {
-                        buffer.append('\\');
-                    }
-                    buffer.append(c);
-                    break;
-                case '\b':
-                    buffer.append("\\b");
-                    break;
-                case '\t':
-                    buffer.append("\\t");
-                    break;
-                case '\n':
-                    buffer.append("\\n");
-                    break;
-                case '\f':
-                    buffer.append("\\f");
-                    break;
-                case '\r':
-                    buffer.append("\\r");
-                    break;
-                default:
-                    if (c < ' ' || (c >= '\u0080' && c < '\u00a0') || (c >= '\u2000' && c < '\u2100'))
-                    {
-                        t = "000" + Integer.toHexString(c);
-                        buffer.append("\\u").append(t.substring(t.length() - 4));
-                    }
-                    else
-                    {
-                        buffer.append(c);
-                    }
-            }
-        }
-        buffer.append('"');
-        return buffer.toString();
-    }
-
-    /**
-     * Remove a name and its value, if present.
-     * 
-     * @param key
-     *            The name to be removed.
-     * @return The value that was associated with the name, or null if there was no value.
-     */
-    public Object remove(String key)
-    {
-        return properties.remove(key);
-    }
-
-    private static final Class[] ALLOWED = new Class[]
-    { String.class, Boolean.class, Number.class, JSONObject.class, JSONArray.class, JSONString.class,
-            JSONLiteral.class, Null.class };
-
-    /**
-     * Throw an exception if the object is an NaN or infinite number, or not a type which may be stored.
-     * 
-     * @param value
-     *            The object to test. @ If o is a non-finite number.
-     */
-    @SuppressWarnings("unchecked")
-    static void testValidity(Object value)
-    {
-        if (value == null)
-            return;
-
-        boolean found = false;
-        Class actual = value.getClass();
-
-        for (Class allowed : ALLOWED)
-        {
-            if (allowed.isAssignableFrom(actual))
-            {
-                found = true;
-                break;
-            }
-        }
-
-        if (!found)
-        {
-            List<String> typeNames = new ArrayList<String>();
-
-            for (Class c : ALLOWED)
-            {
-                String name = c.getName();
-
-                if (name.startsWith("java.lang."))
-                    name = name.substring(10);
-
-                typeNames.add(name);
-            }
-
-            Collections.sort(typeNames);
-
-            StringBuilder joined = new StringBuilder();
-            String sep = "";
-
-            for (String name : typeNames)
-            {
-                joined.append(sep);
-                joined.append(name);
-
-                sep = ", ";
-            }
-
-            String message = String.format("JSONObject properties may be one of %s. Type %s is not allowed.",
-                    joined.toString(), actual.getName());
-
-            throw new RuntimeException(message);
-        }
-
-        if (value instanceof Double)
-        {
-            Double asDouble = (Double) value;
-
-            if (asDouble.isInfinite() || asDouble.isNaN()) { throw new RuntimeException(
-                    "JSON does not allow non-finite numbers."); }
-
-            return;
-        }
-
-        if (value instanceof Float)
-        {
-            Float asFloat = (Float) value;
-
-            if (asFloat.isInfinite() || asFloat.isNaN()) { throw new RuntimeException(
-                    "JSON does not allow non-finite numbers."); }
-
-        }
-
-    }
-
-    /**
-     * Prints the JSONObject using the session.
-     * 
-     * @since 5.2.0
-     */
-    void print(JSONPrintSession session)
-    {
-        session.printSymbol('{');
-
-        session.indent();
-
-        boolean comma = false;
-
-        for (String key : keys())
-        {
-            if (comma)
-                session.printSymbol(',');
-
-            session.newline();
-
-            session.printQuoted(key);
-
-            session.printSymbol(':');
-
-            printValue(session, properties.get(key));
-
-            comma = true;
-        }
-
-        session.outdent();
-
-        if (comma)
-            session.newline();
-
-        session.printSymbol('}');
-    }
-
-    /**
-     * Prints a value (a JSONArray or JSONObject, or a value stored in an array or object) using
-     * the session.
-     * 
-     * @since 5.2.0
-     */
-    static void printValue(JSONPrintSession session, Object value)
-    {
-        if (value instanceof JSONObject)
-        {
-            ((JSONObject) value).print(session);
-            return;
-        }
-
-        if (value instanceof JSONArray)
-        {
-            ((JSONArray) value).print(session);
-            return;
-        }
-
-        if (value instanceof JSONString)
-        {
-            String printValue = ((JSONString) value).toJSONString();
-
-            session.print(printValue);
-
-            return;
-        }
-
-        if (value instanceof Number)
-        {
-            String printValue = numberToString((Number) value);
-            session.print(printValue);
-            return;
-        }
-
-        if (value instanceof Boolean)
-        {
-            session.print(value.toString());
-
-            return;
-        }
-
-        // Otherwise it really should just be a string. Nothing else can go in.
-        session.printQuoted(value.toString());
-    }
-
-    /**
-     * Returns true if the other object is a JSONObject and its set of properties matches this object's properties.
-     */
-    @Override
-    public boolean equals(Object obj)
-    {
-        if (obj == null)
-            return false;
-
-        if (!(obj instanceof JSONObject))
-            return false;
-
-        JSONObject other = (JSONObject) obj;
-
-        return properties.equals(other.properties);
-    }
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONPrintSession.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONPrintSession.java
deleted file mode 100644
index ca435c0..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONPrintSession.java
+++ /dev/null
@@ -1,73 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-import java.io.PrintWriter;
-
-/**
- * Encapsulates a {@link PrintWriter} and the rules for indentation and spacing.
- * 
- * @since 5.2.0
- */
-interface JSONPrintSession
-{
-    /**
-     * Prints a value as is; the value is assumed to be a string representation of a number of boolean
-     * and not require quotes. A space may be inserted before the value.
-     * 
-     * @param value
-     *            unquoted value to print
-     * @return the session (for fluent method invocations)
-     */
-    JSONPrintSession print(String value);
-
-    /**
-     * Prints a value enclosed in double quotes. Any internal quotes are escaped.
-     * A space may be inserted before the value.
-     * 
-     * @param value
-     *            the string to be printed enclosed in quotes
-     * @return the session (for fluent method invocations)
-     */
-    JSONPrintSession printQuoted(String value);
-
-    /**
-     * Begins a new line and the current indentation level.
-     * 
-     * @return the session (for fluent method invocations)
-     */
-    JSONPrintSession newline();
-
-    /**
-     * Prints a symbol (i.e., ':', '{', '}', '[', ']', or ','). A space may
-     * be inserted before the symbol.
-     */
-
-    JSONPrintSession printSymbol(char symbol);
-
-    /**
-     * Increments the indentation level.
-     * 
-     * @return new session reflecting the indentation
-     */
-    JSONPrintSession indent();
-
-    /**
-     * Decrements the indentation level.
-     * 
-     * @return new session reflecting the indentation
-     */
-    JSONPrintSession outdent();
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONString.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONString.java
deleted file mode 100644
index 7ee1833..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONString.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-/**
- * An interface that allows an object to be stored as a {@link JSONObject} or {@link JSONArray} value.
- * When printed, the value of {@link #toJSONString()} is printed without quotes or other substitution; it
- * is the responsibility of the object to provide proper JSON output.
- */
-public interface JSONString
-{
-    /**
-     * The <code>toJSONString</code> method allows a class to produce its own JSON serialization.
-     * 
-     * @return A strictly syntactically correct JSON text.
-     */
-    public String toJSONString();
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONTokener.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONTokener.java
deleted file mode 100644
index 91159f3..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/JSONTokener.java
+++ /dev/null
@@ -1,397 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-/*
- Copyright (c) 2002 JSON.org
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in all
- copies or substantial portions of the Software.
-
- The Software shall be used for Good, not Evil.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
- */
-
-/**
- * A JSONTokener takes a source string and extracts characters and tokens from it. It is used by the JSONObject and
- * JSONArray constructors to parse JSON source strings.
- *
- * @author JSON.org
- * @version 2
- */
-class JSONTokener
-{
-
-    /**
-     * The index of the next character.
-     */
-    private int index;
-
-    /**
-     * The source string being tokenized.
-     */
-    private final String source;
-
-    /**
-     * Construct a JSONTokener from a string.
-     *
-     * @param source A source string, in JSON format.
-     */
-    public JSONTokener(String source)
-    {
-        assert source != null;
-
-        index = 0;
-        this.source = source;
-    }
-
-    /**
-     * Back up one character. This provides a sort of lookahead capability, so that you can test for a digit or letter
-     * before attempting to parse the next number or identifier.
-     */
-    public void back()
-    {
-        if (index > 0)
-        {
-            index -= 1;
-        }
-    }
-
-    /**
-     * Determine if the source string still contains characters that next() can consume.
-     *
-     * @return true if not yet at the end of the source.
-     */
-    public boolean more()
-    {
-        return index < source.length();
-    }
-
-    /**
-     * Get the next character in the source string.
-     *
-     * @return The next character, or 0 if past the end of the source string.
-     */
-    public char next()
-    {
-        if (more())
-        {
-            return source.charAt(index++);
-        }
-
-        return 0;
-    }
-
-    /**
-     * Get the next n characters.
-     *
-     * @param n The number of characters to take.
-     * @return A string of n characters.
-     * @throws RuntimeException Substring bounds error if there are not n characters remaining in the source string.
-     */
-    public String next(int n)
-    {
-        int i = index;
-        int j = i + n;
-        if (j >= source.length())
-        {
-            throw syntaxError("Substring bounds error");
-        }
-        index += n;
-        return source.substring(i, j);
-    }
-
-    /**
-     * Get the next char in the string, skipping whitespace and comments (slashslash, slashstar, and hash).
-     *
-     * @return A character, or 0 if there are no more characters.
-     * @throws RuntimeException
-     */
-    public char nextClean()
-    {
-        for (; ;)
-        {
-            char c = next();
-            if (c == '/')
-            {
-                switch (next())
-                {
-                    case '/':
-                        do
-                        {
-                            c = next();
-                        } while (c != '\n' && c != '\r' && c != 0);
-
-                        break;
-                    case '*':
-
-                        while (true)
-                        {
-                            c = next();
-                            if (c == 0)
-                            {
-                                throw syntaxError("Unclosed comment");
-                            }
-                            if (c == '*')
-                            {
-                                if (next() == '/')
-                                {
-                                    break;
-                                }
-                                back();
-                            }
-                        }
-                        break;
-
-                    default:
-                        back();
-                        return '/';
-                }
-            }
-            else if (c == '#')
-            {
-                do
-                {
-                    c = next();
-                } while (c != '\n' && c != '\r' && c != 0);
-            }
-            else if (c == 0 || c > ' ')
-            {
-                return c;
-            }
-        }
-    }
-
-    /**
-     * Return the characters up to the next close quote character. Backslash processing is done. The formal JSON format
-     * does not allow strings in single quotes, but an implementation is allowed to accept them.
-     *
-     * @param quote The quoting character, either <code>"</code>&nbsp;<small>(double quote)</small> or
-     *              <code>'</code>&nbsp;<small>(single quote)</small>.
-     * @return A String.
-     * @throws RuntimeException Unterminated string.
-     */
-    public String nextString(char quote)
-    {
-        StringBuilder builder = new StringBuilder();
-
-        while (true)
-        {
-            char c = next();
-            switch (c)
-            {
-                case 0:
-                case '\n':
-                case '\r':
-                    throw syntaxError("Unterminated string");
-                case '\\':
-                    c = next();
-                    switch (c)
-                    {
-                        case 'b':
-                            builder.append('\b');
-                            break;
-                        case 't':
-                            builder.append('\t');
-                            break;
-                        case 'n':
-                            builder.append('\n');
-                            break;
-                        case 'f':
-                            builder.append('\f');
-                            break;
-                        case 'r':
-                            builder.append('\r');
-                            break;
-                        case 'u':
-                            builder.append((char) Integer.parseInt(next(4), 16));
-                            break;
-                        case 'x':
-                            builder.append((char) Integer.parseInt(next(2), 16));
-                            break;
-                        default:
-                            builder.append(c);
-                    }
-                    break;
-                default:
-                    if (c == quote)
-                    {
-                        return builder.toString();
-                    }
-                    builder.append(c);
-            }
-        }
-    }
-
-
-    /**
-     * Get the next value. The value can be a Boolean, Double, Integer, JSONArray, JSONObject, Long, or String, or the
-     * JSONObject.NULL object.
-     *
-     * @return An object.
-     * @throws RuntimeException If syntax error.
-     */
-    public Object nextValue()
-    {
-        char c = nextClean();
-        String s;
-
-        switch (c)
-        {
-            case '"':
-            case '\'':
-                return nextString(c);
-            case '{':
-                back();
-                return new JSONObject(this);
-            case '[':
-                back();
-                return new JSONArray(this);
-        }
-
-        /*
-         * Handle unquoted text. This could be the values true, false, or null, or it can be a
-         * number. An implementation (such as this one) is allowed to also accept non-standard
-         * forms. Accumulate characters until we reach the end of the text or a formatting
-         * character.
-         */
-
-        StringBuffer sb = new StringBuffer();
-        char b = c;
-        while (c >= ' ' && ",:]}/\\\"[{;=#".indexOf(c) < 0)
-        {
-            sb.append(c);
-            c = next();
-        }
-        back();
-
-        /*
-         * If it is true, false, or null, return the proper value.
-         */
-
-        s = sb.toString().trim();
-        if (s.equals(""))
-        {
-            throw syntaxError("Missing value");
-        }
-        if (s.equalsIgnoreCase("true"))
-        {
-            return Boolean.TRUE;
-        }
-        if (s.equalsIgnoreCase("false"))
-        {
-            return Boolean.FALSE;
-        }
-        if (s.equalsIgnoreCase("null"))
-        {
-            return JSONObject.NULL;
-        }
-
-        /*
-         * If it might be a number, try converting it. We support the 0- and 0x- conventions. If a
-         * number cannot be produced, then the value will just be a string. Note that the 0-, 0x-,
-         * plus, and implied string conventions are non-standard. A JSON parser is free to accept
-         * non-JSON forms as long as it accepts all correct JSON forms.
-         */
-
-        if ((b >= '0' && b <= '9') || b == '.' || b == '-' || b == '+')
-        {
-            if (b == '0')
-            {
-                if (s.length() > 2 && (s.charAt(1) == 'x' || s.charAt(1) == 'X'))
-                {
-                    try
-                    {
-                        return Integer.parseInt(s.substring(2), 16);
-                    }
-                    catch (Exception e)
-                    {
-                        /* Ignore the error */
-                    }
-                }
-                else
-                {
-                    try
-                    {
-                        return Integer.parseInt(s, 8);
-                    }
-                    catch (Exception e)
-                    {
-                        /* Ignore the error */
-                    }
-                }
-            }
-            try
-            {
-                return new Integer(s);
-            }
-            catch (Exception e)
-            {
-                try
-                {
-                    return new Long(s);
-                }
-                catch (Exception f)
-                {
-                    try
-                    {
-                        return new Double(s);
-                    }
-                    catch (Exception g)
-                    {
-                        return s;
-                    }
-                }
-            }
-        }
-        return s;
-    }
-
-    /**
-     * Make a JSONException to signal a syntax error.
-     *
-     * @param message The error message.
-     * @return A JSONException object, suitable for throwing
-     */
-    RuntimeException syntaxError(String message)
-    {
-        return new RuntimeException(message + toString());
-    }
-
-    /**
-     * Make a printable string of this JSONTokener.
-     *
-     * @return " at character [myIndex] of [mySource]"
-     */
-    @Override
-    public String toString()
-    {
-        return " at character " + index + " of " + source;
-    }
-}
diff --git a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/PrettyPrintSession.java b/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/PrettyPrintSession.java
deleted file mode 100644
index 6316fbd..0000000
--- a/maint-5-2/tapestry-json/src/main/java/org/apache/tapestry5/json/PrettyPrintSession.java
+++ /dev/null
@@ -1,136 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-import java.io.PrintWriter;
-
-/**
- * Used to pretty-print JSON content, with a customizable indentation.
- * 
- * @since 5.2.0
- */
-class PrettyPrintSession implements JSONPrintSession
-{
-    private final PrintWriter writer;
-
-    private final String indentString;
-
-    private int indentLevel;
-
-    enum Position
-    {
-        MARGIN, INDENTED, CONTENT
-    };
-
-    private Position position = Position.MARGIN;
-
-    /** Defaults the indentation to be two spaces per indentation level. */
-    public PrettyPrintSession(PrintWriter writer)
-    {
-        this(writer, "  ");
-    }
-
-    /**
-     * @param writer
-     *            to which content is printed
-     * @param indentString
-     *            string used for indentation (written N times, once per current indent level)
-     */
-    public PrettyPrintSession(PrintWriter writer, String indentString)
-    {
-        this.writer = writer;
-        this.indentString = indentString;
-    }
-
-    public JSONPrintSession indent()
-    {
-        indentLevel++;
-
-        return this;
-    }
-
-    public JSONPrintSession newline()
-    {
-        if (position != Position.MARGIN)
-        {
-            writer.write("\n");
-            position = Position.MARGIN;
-        }
-
-        return this;
-    }
-
-    public JSONPrintSession outdent()
-    {
-        indentLevel--;
-
-        return this;
-    }
-
-    private void addIndentation()
-    {
-        if (position == Position.MARGIN)
-        {
-            for (int i = 0; i < indentLevel; i++)
-                writer.print(indentString);
-
-            position = Position.INDENTED;
-        }
-    }
-
-    private void addSep()
-    {
-        if (position == Position.CONTENT)
-        {
-            writer.print(" ");
-        }
-    }
-
-    private void prepareToPrint()
-    {
-        addIndentation();
-
-        addSep();
-    }
-
-    public JSONPrintSession print(String value)
-    {
-        prepareToPrint();
-
-        writer.print(value);
-
-        position = Position.CONTENT;
-
-        return this;
-    }
-
-    public JSONPrintSession printQuoted(String value)
-    {
-        return print(JSONObject.quote(value));
-    }
-
-    public JSONPrintSession printSymbol(char symbol)
-    {
-        addIndentation();
-
-        if (symbol != ',')
-            addSep();
-
-        writer.print(symbol);
-
-        return this;
-    }
-
-}
diff --git a/maint-5-2/tapestry-json/src/test/conf/testng.xml b/maint-5-2/tapestry-json/src/test/conf/testng.xml
deleted file mode 100644
index ab38576..0000000
--- a/maint-5-2/tapestry-json/src/test/conf/testng.xml
+++ /dev/null
@@ -1,8 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<suite name="Tapestry JSON" annotations="1.5" verbose="2">
-  <test name="Unit Tests" enabled="true">
-    <packages>
-      <package name="org.apache.tapestry5.json"/>
-    </packages>
-  </test>
-</suite>
diff --git a/maint-5-2/tapestry-json/src/test/java/org/apache/tapestry5/json/JSONObjectTest.java b/maint-5-2/tapestry-json/src/test/java/org/apache/tapestry5/json/JSONObjectTest.java
deleted file mode 100644
index 859626f..0000000
--- a/maint-5-2/tapestry-json/src/test/java/org/apache/tapestry5/json/JSONObjectTest.java
+++ /dev/null
@@ -1,964 +0,0 @@
-// Copyright 2007, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.json;
-
-import java.io.CharArrayWriter;
-import java.io.PrintWriter;
-import java.math.BigDecimal;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.Iterator;
-
-import org.apache.tapestry5.ioc.test.TestUtils;
-import org.testng.annotations.DataProvider;
-import org.testng.annotations.Test;
-
-/**
- * Tests JSONObject, particularly in terms of parsing and writing JSON streams.
- */
-public class JSONObjectTest extends TestUtils
-{
-    @Test
-    public void copy_from_object_constructor()
-    {
-        JSONObject master = new JSONObject().put("fred", "flintstone").put("barney", "rubble");
-
-        JSONObject emptyCopy = new JSONObject(master);
-
-        assertTrue(emptyCopy.keys().isEmpty(), "No properties should have been copied.");
-
-        JSONObject limitedCopy = new JSONObject(master, "fred");
-
-        assertEquals(limitedCopy.keys().size(), 1);
-        assertEquals(limitedCopy.get("fred").toString(), "flintstone");
-
-        JSONObject fullCopy = new JSONObject(master, "fred", "barney");
-
-        assertEquals(fullCopy.toString(), "{\n  \"fred\" : \"flintstone\",\n  \"barney\" : \"rubble\"\n" + "}");
-
-        JSONObject limitedCopy2 = new JSONObject(master, "fred", "wilma");
-        assertEquals(limitedCopy2.keys().size(), 1);
-    }
-
-    @Test
-    public void key_values_constructor()
-    {
-        JSONObject easy = new JSONObject("fred", "flintstone", "barney", "rubble");
-
-        JSONObject hard = new JSONObject().put("fred", "flintstone").put("barney", "rubble");
-
-        assertEquals(easy, hard);
-    }
-
-    @Test
-    public void array_from_string()
-    {
-        JSONArray array = new JSONArray("[ 'foo', 'bar', \"baz\" ]");
-
-        assertEquals(array.length(), 3);
-        assertEquals(array.getString(0), "foo");
-        assertEquals(array.getString(1), "bar");
-        assertEquals(array.getString(2), "baz");
-    }
-
-    @Test
-    public void get_not_found()
-    {
-        JSONObject master = new JSONObject().put("fred", "flintstone");
-
-        assertEquals(master.get("fred"), "flintstone");
-
-        try
-        {
-            master.get("barney");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"barney\"] not found.");
-        }
-    }
-
-    @Test(dataProvider = "boolean_inputs")
-    public void get_boolean(Object value, boolean expected)
-    {
-        JSONObject object = new JSONObject().put("mykey", value);
-
-        assertEquals(object.getBoolean("mykey"), expected);
-    }
-
-    @DataProvider
-    public Object[][] boolean_inputs()
-    {
-        return new Object[][]
-        {
-        { "true", true },
-        { "TRUE", true },
-        { "false", false },
-        { "FALSE", false },
-        { Boolean.TRUE, true },
-        { Boolean.FALSE, false } };
-    }
-
-    @Test
-    public void not_a_boolean_value()
-    {
-        JSONObject object = new JSONObject().put("somekey", 37);
-
-        try
-        {
-            object.getBoolean("somekey");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"somekey\"] is not a Boolean.");
-        }
-    }
-
-    @Test
-    public void accumulate_simple_values()
-    {
-        JSONObject object = new JSONObject();
-
-        String key = "key";
-
-        object.accumulate(key, "alpha");
-        object.accumulate(key, "beta");
-        object.accumulate(key, "gamma");
-
-        assertEquals(object.toString(), "{\n  \"key\" : [\n    \"alpha\",\n    \"beta\",\n" + "    \"gamma\"\n  ]\n}");
-
-        JSONArray array = object.getJSONArray(key);
-
-        assertEquals(array.length(), 3);
-    }
-
-    @Test
-    public void accumulate_with_initial_array()
-    {
-        JSONArray array = new JSONArray();
-
-        array.put("alpha");
-
-        String key = "key";
-
-        JSONObject object = new JSONObject();
-
-        object.accumulate(key, array);
-        object.accumulate(key, "beta");
-
-        array.put("gamma");
-
-        assertEquals(object.toString(), "{\n  \"key\" : [\n    \"alpha\",\n    \"beta\",\n" + "    \"gamma\"\n  ]\n}");
-    }
-
-    @Test
-    public void object_from_string()
-    {
-        JSONObject object = new JSONObject("{ fred: \"flintstone\", caveman: true, friends: [\"barney\"] }");
-
-        assertEquals(object.get("fred"), "flintstone");
-        assertEquals(object.getBoolean("caveman"), true);
-
-        JSONArray array = object.getJSONArray("friends");
-
-        assertEquals(array.length(), 1);
-        assertEquals(array.get(0), "barney");
-    }
-
-    @Test
-    public void append()
-    {
-        JSONObject object = new JSONObject();
-        String key = "fubar";
-
-        object.append(key, "alpha");
-
-        assertEquals(object.toString(), "{\n  \"fubar\" : [\n    \"alpha\"\n  ]\n}");
-
-        object.append(key, "beta");
-
-        assertEquals(object.toString(), "{\n  \"fubar\" : [\n    \"alpha\",\n    \"beta\"\n  ]\n" + "}");
-    }
-
-    @Test
-    public void append_existng_key_not_an_array()
-    {
-        JSONObject object = new JSONObject();
-        String key = "fubar";
-
-        object.put(key, "existing");
-
-        try
-        {
-            object.append(key, "additional");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"fubar\"] is not a JSONArray.");
-        }
-    }
-
-    @Test(dataProvider = "double_to_string_data")
-    public void double_to_string(double input, String expected)
-    {
-        String actual = JSONObject.doubleToString(input);
-
-        assertEquals(actual, expected);
-    }
-
-    @DataProvider
-    public Object[][] double_to_string_data()
-    {
-        return new Object[][]
-        {
-        { 3d, "3" },
-        { -22.5d, "-22.5" },
-        { 0d, "0" },
-        { Double.NEGATIVE_INFINITY, "null" },
-        { Double.POSITIVE_INFINITY, "null" },
-        { Double.NaN, "null" }, };
-    }
-
-    @Test(dataProvider = "get_double_data")
-    public void get_double(Object value, double expected)
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("key", value);
-
-        assertEquals(object.getDouble("key"), expected);
-    }
-
-    @DataProvider
-    public Object[][] get_double_data()
-    {
-        return new Object[][]
-        {
-        { new Double(3.5), 3.5d },
-        { new Long(1000), 1000d },
-        { "-101.7", -101.7d } };
-    }
-
-    @Test
-    public void get_double_not_a_string()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("notstring", Boolean.FALSE);
-
-        try
-        {
-            object.getDouble("notstring");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"notstring\"] is not a number.");
-        }
-    }
-
-    @Test
-    public void get_double_string_invalid_format()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("badstring", "google");
-
-        try
-        {
-            object.getDouble("badstring");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"badstring\"] is not a number.");
-        }
-    }
-
-    @Test(dataProvider = "get_int_inputs")
-    public void get_int(Object value, int expected)
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("intkey", value);
-
-        assertEquals(object.getInt("intkey"), expected);
-    }
-
-    @DataProvider
-    public Object[][] get_int_inputs()
-    {
-        return new Object[][]
-        {
-        { "3", 3 },
-        { new Long(97), 97 },
-        { "-8.76", -8 } };
-    }
-
-    @Test
-    public void has()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("fred", "flintstone");
-
-        assertTrue(object.has("fred"));
-        assertFalse(object.has("barney"));
-    }
-
-    @Test
-    public void get_json_array()
-    {
-        JSONArray array = new JSONArray();
-
-        JSONObject object = new JSONObject();
-
-        object.put("arraykey", array);
-        object.put("boolkey", true);
-
-        assertSame(object.getJSONArray("arraykey"), array);
-
-        try
-        {
-            object.getJSONArray("boolkey");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"boolkey\"] is not a JSONArray.");
-        }
-
-    }
-
-    @Test
-    public void get_json_object()
-    {
-        JSONObject child = new JSONObject();
-        JSONObject root = new JSONObject();
-
-        root.put("child", child);
-        root.put("boolkey", false);
-
-        assertSame(root.getJSONObject("child"), child);
-
-        try
-        {
-            root.getJSONObject("boolkey");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONObject[\"boolkey\"] is not a JSONObject.");
-        }
-    }
-
-    @Test
-    public void boolean_as_value()
-    {
-        JSONObject object = new JSONObject().put("t", true).put("f", false);
-
-        assertEquals(object.toString(), "{\n  \"f\" : false,\n  \"t\" : true\n}");
-    }
-
-    @Test
-    public void length()
-    {
-        JSONObject object = new JSONObject();
-
-        assertEquals(object.length(), 0);
-
-        object.put("key", "fred");
-
-        assertEquals(object.length(), 1);
-
-        object.accumulate("key", "barney");
-        assertEquals(object.length(), 1);
-
-        object.put("key2", "wilma");
-
-        assertEquals(object.length(), 2);
-    }
-
-    @Test
-    public void names_is_null_if_no_properties()
-    {
-        JSONObject object = new JSONObject();
-
-        assertNull(object.names());
-    }
-
-    @Test
-    public void names()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("fred", "flintstone");
-        object.put("barney", "rubble");
-
-        JSONArray array = object.names();
-
-        assertEquals(array.length(), 2);
-
-        Object[] names = array.toArray();
-
-        Arrays.sort(names);
-
-        assertEquals(names, new String[]
-        { "barney", "fred" });
-
-    }
-
-    @Test
-    public void parse_null()
-    {
-        JSONObject object = new JSONObject("{ \"nullkey\": null }");
-
-        assertSame(object.get("nullkey"), JSONObject.NULL);
-    }
-
-    @Test
-    public void emit_null()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("nullkey", JSONObject.NULL);
-
-        assertEquals(object.toString(), "{\n  \"nullkey\" : null\n}");
-
-        assertTrue(object.isNull("nullkey"));
-    }
-
-    @Test
-    public void null_matches_java_null()
-    {
-        assertTrue(JSONObject.NULL.equals(null));
-    }
-
-    @DataProvider
-    public final Object[][] bad_parse_data()
-    {
-        return new Object[][]
-        {
-        { "{  ", "A JSONObject text must end with '}' at character 3 of {" },
-        { "fred", "A JSONObject text must begin with '{' at character 1 of fred" },
-        { "{ \"akey\" }", "Expected a ':' after a key at character 10 of { \"akey\" }" },
-        { "{ \"fred\" : 1 \"barney\" }", "Expected a ',' or '}' at character 14 of { \"fred\" : 1 \"barney\" }" },
-        { "{ \"list\" : [1, 2", "Expected a ',' or ']' at character 16 of { \"list\" : [1, 2" } };
-
-    }
-
-    @Test(dataProvider = "bad_parse_data")
-    public void jsonobject_parse_errors(String input, String expectedMessage)
-    {
-        try
-        {
-            new JSONObject(input);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage().trim(), expectedMessage);
-        }
-    }
-
-    @Test
-    public void alternate_key_value_seperators()
-    {
-        JSONObject object = new JSONObject("{ \"fred\" = 1; \"barney\" => 2 }");
-
-        assertEquals(object.getInt("fred"), 1);
-        assertEquals(object.getInt("barney"), 2);
-    }
-
-    @Test
-    public void get_long_from_number()
-    {
-        JSONObject object = new JSONObject("{ \"key\": 92 }");
-
-        assertEquals(object.getLong("key"), 92l);
-    }
-
-    @Test
-    public void get_long_from_string()
-    {
-        JSONObject object = new JSONObject("{ \"key\": \"-200\" }");
-
-        assertEquals(object.getLong("key"), -200l);
-    }
-
-    @Test
-    public void get_string_from_number()
-    {
-        JSONObject object = new JSONObject("{ \"key\": 92 }");
-
-        assertEquals(object.getString("key"), "92");
-    }
-
-    @Test
-    public void number_to_string_conversion()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("key", new BigDecimal("100.0000000"));
-
-        assertEquals(object.toString(), "{\n  \"key\" : 100\n}");
-    }
-
-    @Test
-    public void parse_empty_object()
-    {
-        assertEquals(new JSONObject("{}").length(), 0);
-    }
-
-    @Test
-    public void put_null_is_remove()
-    {
-        JSONObject object = new JSONObject();
-
-        object.put("key", "value");
-
-        object.put("key", null);
-
-        assertEquals(object.toString(), "{}");
-
-        assertTrue(object.keys().isEmpty());
-    }
-
-    @Test
-    public void quote_null_is_empty_string()
-    {
-        assertEquals(JSONObject.quote(null), "\"\"");
-    }
-
-    @Test
-    public void quote_empty_string_is_empty_string()
-    {
-        assertEquals(JSONObject.quote(""), "\"\"");
-    }
-
-    @Test
-    public void character_escapes_in_quote()
-    {
-        assertEquals(JSONObject.quote("\"/\b\t\n\f\r\u2001/a</"), "\"\\\"/\\b\\t\\n\\f\\r\\u2001/a<\\/\"");
-    }
-
-    @DataProvider
-    public Object[][] non_finite_data()
-    {
-        return new Object[][]
-        {
-        { Double.NaN },
-        { Double.NEGATIVE_INFINITY },
-        { Float.NEGATIVE_INFINITY },
-        { Float.NaN } };
-    }
-
-    @Test(dataProvider = "non_finite_data")
-    public void non_finite_numbers_not_allowed(Number nonfinite)
-    {
-        JSONObject object = new JSONObject();
-
-        try
-        {
-            object.put("nonfinite", nonfinite);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSON does not allow non-finite numbers.");
-        }
-    }
-
-    @Test
-    public void invalid_object_added()
-    {
-        try
-        {
-            JSONObject.testValidity(new HashMap());
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(
-                    ex.getMessage(),
-                    "JSONObject properties may be one of Boolean, Number, String, org.apache.tapestry5.json.JSONArray, org.apache.tapestry5.json.JSONLiteral, org.apache.tapestry5.json.JSONObject, org.apache.tapestry5.json.JSONObject$Null, org.apache.tapestry5.json.JSONString. Type java.util.HashMap is not allowed.");
-        }
-    }
-
-    @Test
-    public void output_json_string()
-    {
-        JSONString string = new JSONString()
-        {
-            public String toJSONString()
-            {
-                return "*VALUE*";
-            }
-        };
-
-        JSONObject object = new JSONObject();
-
-        object.put("key", string);
-
-        // The implementation of this in Tapestry 5.1 put quotes around *VALUE*. That did not seem to
-        // be in accordance with intent, so in 5.2 the toJSONString value is printed without quotes.
-
-        assertEquals(object.toString(), "{\n  \"key\" : *VALUE*\n}");
-    }
-
-    @Test
-    public void equals_implementation()
-    {
-        String text = "{ \"key\" : 99 }";
-
-        JSONObject obj1 = new JSONObject(text);
-        JSONObject obj2 = new JSONObject(text);
-
-        assertTrue(obj1.equals(obj1));
-        assertTrue(obj1.equals(obj2));
-        assertFalse(obj1.equals(null));
-        assertFalse(obj1.equals(text));
-
-        obj2.put("anotherkey", "something");
-
-        assertFalse(obj1.equals(obj2));
-    }
-
-    @Test
-    public void parse_escaped()
-    {
-        JSONObject object = new JSONObject("{ \"key\" : \"\\\"/\\b\\t\\n\\f\\r\\u2001/a<\\/\\x20\" }");
-
-        assertEquals(object.get("key"), "\"/\b\t\n\f\r\u2001/a</ ");
-    }
-
-    @Test
-    public void parse_nested_object()
-    {
-        JSONObject object = new JSONObject("{ \"key\" : { \"name\" : \"inner\" }}");
-
-        JSONObject inner = object.getJSONObject("key");
-        assertEquals(inner.getString("name"), "inner");
-    }
-
-    @Test
-    public void parse_true_and_false()
-    {
-        JSONObject object = new JSONObject("{ \"t\" : true, \"f\" : false }");
-
-        assertEquals(object.getBoolean("t"), true);
-        assertEquals(object.getBoolean("f"), false);
-    }
-
-    @Test
-    public void parse_number_forms()
-    {
-        JSONObject object = new JSONObject("{ \"hex\" : 0x50, \"oct\" : 030, \"posInt\" : +50, "
-                + " \"negInt\" : -50, \"long\" : 4294968530, \"float\": -32.7 }");
-
-        assertEquals(object.getInt("hex"), 80);
-        assertEquals(object.getInt("oct"), 24);
-        assertEquals(object.getInt("posInt"), 50);
-        assertEquals(object.getInt("negInt"), -50);
-        assertEquals(object.getLong("long"), 4294968530l);
-        assertEquals(object.getDouble("float"), -32.7d);
-    }
-
-    @Test
-    public void json_array_from_values()
-    {
-        assertEquals(new JSONArray("fred", "barney", "wilma").toString(), "[\n  \"fred\",\n  \"barney\",\n"
-                + "  \"wilma\"\n]");
-    }
-
-    @Test
-    public void array_must_start_with_bracket()
-    {
-        try
-        {
-            new JSONArray("1, 2, 3]");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "A JSONArray text must start with '[' at character 1 of 1, 2, 3]");
-        }
-    }
-
-    @Test
-    public void parse_empty_array()
-    {
-        assertEquals(new JSONArray("[]").length(), 0);
-    }
-
-    @Test
-    public void empty_element_is_null()
-    {
-        JSONArray array = new JSONArray("[1,,3]");
-
-        assertEquals(array.getInt(0), 1);
-        assertTrue(array.isNull(1));
-        assertEquals(array.getInt(2), 3);
-    }
-
-    @Test
-    public void comma_at_end_of_list_is_ignored()
-    {
-        JSONArray array = new JSONArray("[1,2,]");
-
-        assertEquals(array.length(), 2);
-        assertEquals(array.getInt(0), 1);
-        assertEquals(array.getInt(1), 2);
-    }
-
-    @Test
-    public void not_a_boolean_at_index()
-    {
-        JSONArray array = new JSONArray("[alpha]");
-
-        try
-        {
-            array.getBoolean(0);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONArray[0] is not a Boolean.");
-        }
-    }
-
-    @Test
-    public void boolean_values()
-    {
-        JSONArray array = new JSONArray(true, false, "True", "False");
-
-        assertTrue(array.getBoolean(0));
-        assertTrue(array.getBoolean(2));
-
-        assertFalse(array.getBoolean(1));
-        assertFalse(array.getBoolean(3));
-    }
-
-    @Test
-    public void not_a_double_at_index()
-    {
-        JSONArray array = new JSONArray(true);
-
-        try
-        {
-            array.getDouble(0);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONArray[0] is not a number.");
-        }
-    }
-
-    @Test
-    public void get_double_from_array()
-    {
-        JSONArray array = new JSONArray(400l, "95.5");
-
-        assertEquals(array.getDouble(0), 400.d);
-        assertEquals(array.getDouble(1), 95.5d);
-    }
-
-    @Test
-    public void get_long_from_array()
-    {
-        JSONArray array = new JSONArray(400l, "95.5");
-
-        assertEquals(array.getLong(0), 400l);
-        assertEquals(array.getLong(1), 95l);
-    }
-
-    @Test
-    public void not_a_nested_array_at_index()
-    {
-        JSONArray array = new JSONArray("fred", "barney");
-
-        try
-        {
-            array.getJSONArray(1);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONArray[1] is not a JSONArray.");
-        }
-    }
-
-    @Test
-    public void get_nested_array()
-    {
-        JSONArray nested = new JSONArray();
-        JSONArray outer = new JSONArray(nested);
-
-        assertSame(outer.getJSONArray(0), nested);
-    }
-
-    @Test
-    public void not_a_json_object_at_index()
-    {
-        JSONArray array = new JSONArray("fred", "barney", "wilma");
-
-        try
-        {
-            array.getJSONObject(1);
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONArray[1] is not a JSONObject.");
-        }
-    }
-
-    @Test
-    public void get_json_object_at_index()
-    {
-        JSONObject inner = new JSONObject();
-
-        JSONArray array = new JSONArray("fred", true, inner);
-
-        assertSame(array.getJSONObject(2), inner);
-    }
-
-    @Test
-    public void put_at_negative_index_is_invalid()
-    {
-        JSONArray array = new JSONArray();
-
-        try
-        {
-            array.put(-1, "fred");
-            unreachable();
-        }
-        catch (RuntimeException ex)
-        {
-            assertEquals(ex.getMessage(), "JSONArray[-1] not found.");
-        }
-    }
-
-    @Test
-    public void put_overrides_existing_value_in_array()
-    {
-        JSONArray array = new JSONArray("fred", "barney", "wilma");
-
-        array.put(2, "betty");
-
-        assertEquals(array.getString(2), "betty");
-    }
-
-    @Test
-    public void put_pads_short_array_with_nulls()
-    {
-        JSONArray array = new JSONArray("fred", "barney", "wilma");
-
-        array.put(4, "bambam");
-
-        assertTrue(array.isNull(3));
-        assertEquals(array.getString(4), "bambam");
-    }
-
-    @Test
-    public void array_equality()
-    {
-        JSONArray array1 = new JSONArray(1, 2, 3);
-        JSONArray array2 = new JSONArray(1, 2, 3);
-
-        assertTrue(array1.equals(array1));
-        assertFalse(array1.equals(null));
-        assertFalse(array1.equals(this));
-
-        assertTrue(array1.equals(array2));
-
-        array2.put(9, "stuff");
-
-        assertFalse(array1.equals(array2));
-    }
-
-    @Test
-    public void null_to_string()
-    {
-        assertEquals(JSONObject.NULL.toString(), "null");
-    }
-
-    @Test
-    public void json_literal()
-    {
-        JSONObject obj = new JSONObject();
-
-        obj.put("callback", new JSONLiteral("function(x) { $('bar').show(); }"));
-
-        assertEquals(obj.toString(), "{\n  \"callback\" : function(x) { $('bar').show(); }\n}");
-    }
-
-    @Test
-    public void object_print_and_pretty_print()
-    {
-        JSONObject o = new JSONObject("fred", "flintstone", "barney", "rubble");
-
-        assertEquals(o.toString(true), "{\"fred\":\"flintstone\",\"barney\":\"rubble\"}");
-        assertEquals(o.toString(false), "{\n  \"fred\" : \"flintstone\",\n  \"barney\" : \"rubble\"\n}");
-    }
-
-    @Test
-    public void array_print_and_pretty_print()
-    {
-        JSONArray a = new JSONArray("fred", "barney");
-
-        CharArrayWriter caw = new CharArrayWriter();
-        PrintWriter pw = new PrintWriter(caw);
-
-        a.print(pw);
-
-        String compact = caw.toString();
-
-        caw.reset();
-
-        a.prettyPrint(pw);
-
-        String pretty = caw.toString();
-
-        assertEquals(compact, "[\"fred\",\"barney\"]");
-        assertEquals(pretty, "[\n  \"fred\",\n  \"barney\"\n]");
-    }
-
-    @Test
-    public void nested_collection()
-    {
-        JSONObject outer = new JSONObject().put("coll", new JSONArray("fred", "barney"));
-
-        assertEquals(outer.toCompactString(), "{\"coll\":[\"fred\",\"barney\"]}");
-    }
-
-    @Test
-    public void json_array_is_iterable()
-    {
-        JSONArray array = new JSONArray(1, 2, false);
-
-        Iterator<Object> iterator = array.iterator();
-
-        assertEquals(iterator.next(), 1);
-        assertEquals(iterator.next(), 2);
-        assertEquals(iterator.next(), false);
-
-        assertFalse(iterator.hasNext());
-    }
-}
diff --git a/maint-5-2/tapestry-spring/LICENSE.txt b/maint-5-2/tapestry-spring/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/tapestry-spring/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/tapestry-spring/NOTICE.txt b/maint-5-2/tapestry-spring/NOTICE.txt
deleted file mode 100644
index 439eb83..0000000
--- a/maint-5-2/tapestry-spring/NOTICE.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/maint-5-2/tapestry-spring/pom.xml b/maint-5-2/tapestry-spring/pom.xml
deleted file mode 100644
index c3e579f..0000000
--- a/maint-5-2/tapestry-spring/pom.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-spring</artifactId>
-    <name>Tapestry/Spring Integration Library</name>
-    <packaging>jar</packaging>
-    <description>
-        Provides integration of Tapestry with the Spring IoC container.
-    </description>
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-test</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.springframework</groupId>
-            <artifactId>spring-web</artifactId>
-            <version>3.0.0.RELEASE</version>
-        </dependency>
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-        </dependency>
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Tapestry-Module-Classes>
-                                org.apache.tapestry5.spring.SpringModule
-                            </Tapestry-Module-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/CustomizingContextLoader.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/CustomizingContextLoader.java
deleted file mode 100644
index 994fe91..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/CustomizingContextLoader.java
+++ /dev/null
@@ -1,62 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.spring.ApplicationContextCustomizer;
-import org.apache.tapestry5.spring.TapestryApplicationContext;
-import org.springframework.context.ApplicationContextException;
-import org.springframework.web.context.ConfigurableWebApplicationContext;
-import org.springframework.web.context.ContextLoader;
-
-import javax.servlet.ServletContext;
-
-public class CustomizingContextLoader extends ContextLoader
-{
-    private final ApplicationContextCustomizer customizer;
-
-    public CustomizingContextLoader(ApplicationContextCustomizer customizer)
-    {
-        this.customizer = customizer;
-    }
-
-    @Override
-    protected void customizeContext(ServletContext servletContext, ConfigurableWebApplicationContext applicationContext)
-    {
-        customizer.customizeApplicationContext(servletContext, applicationContext);
-    }
-
-    @Override
-    protected Class determineContextClass(ServletContext servletContext) throws ApplicationContextException
-    {
-        String contextClassName = servletContext.getInitParameter(CONTEXT_CLASS_PARAM);
-
-        if (InternalUtils.isNonBlank(contextClassName))
-        {
-            Class result = super.determineContextClass(servletContext);
-
-            if (!TapestryApplicationContext.class.isAssignableFrom(result))
-                throw new IllegalArgumentException(String.format(
-                        "When using the Tapestry/Spring integration library, you must specifiy a context class that extends from %s. Class %s does not. Update the '%s' servlet context init parameter.",
-                        TapestryApplicationContext.class.getName(),
-                        result.getName(),
-                        CONTEXT_CLASS_PARAM));
-
-            return result;
-        }
-
-        return TapestryApplicationContext.class;
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SpringBeanServiceDef.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SpringBeanServiceDef.java
deleted file mode 100644
index cce8095..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SpringBeanServiceDef.java
+++ /dev/null
@@ -1,84 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.def.ServiceDef2;
-import org.springframework.context.ApplicationContext;
-
-import java.util.Collections;
-import java.util.Set;
-
-public class SpringBeanServiceDef implements ServiceDef2
-{
-    private final String beanName;
-
-    private final ApplicationContext context;
-
-    public SpringBeanServiceDef(String beanName, ApplicationContext context)
-    {
-        this.beanName = beanName;
-        this.context = context;
-    }
-
-    public boolean isPreventDecoration()
-    {
-        return true;
-    }
-
-    public ObjectCreator createServiceCreator(ServiceBuilderResources resources)
-    {
-        return new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return context.getBean(beanName);
-            }
-
-            @Override
-            public String toString()
-            {
-                return String.format("ObjectCreator<Spring Bean '%s'>", beanName);
-            }
-        };
-    }
-
-    public String getServiceId()
-    {
-        return beanName;
-    }
-
-    public Set<Class> getMarkers()
-    {
-        return Collections.emptySet();
-    }
-
-    public Class getServiceInterface()
-    {
-        return context.getType(beanName);
-    }
-
-    public String getServiceScope()
-    {
-        return ScopeConstants.DEFAULT;
-    }
-
-    public boolean isEagerLoad()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SpringModuleDef.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SpringModuleDef.java
deleted file mode 100644
index b851a70..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SpringModuleDef.java
+++ /dev/null
@@ -1,347 +0,0 @@
-// Copyright 2007, 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.internal.AbstractContributionDef;
-import org.apache.tapestry5.ioc.*;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.def.ContributionDef;
-import org.apache.tapestry5.ioc.def.DecoratorDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.apache.tapestry5.ioc.services.ClassFabUtils;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.apache.tapestry5.spring.ApplicationContextCustomizer;
-import org.apache.tapestry5.spring.SpringConstants;
-import org.springframework.beans.factory.BeanFactoryUtils;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.SpringVersion;
-import org.springframework.web.context.ConfigurableWebApplicationContext;
-import org.springframework.web.context.WebApplicationContext;
-
-import javax.servlet.ServletContext;
-import java.util.Collections;
-import java.util.Map;
-import java.util.Set;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-/**
- * A wrapper that converts a Spring {@link ApplicationContext} into a set of service definitions,
- * compatible with
- * Tapestry 5 IoC, for the beans defined in the context, as well as the context itself.
- */
-public class SpringModuleDef implements ModuleDef
-{
-    static final String SERVICE_ID = "ApplicationContext";
-
-    private final Map<String, ServiceDef> services = CollectionFactory.newMap();
-
-    private final boolean compatibilityMode;
-
-    private final AtomicBoolean applicationContextCreated = new AtomicBoolean(false);
-
-    private final ServletContext servletContext;
-
-    private ApplicationContext locateExternalContext()
-    {
-        ApplicationContext context = locateApplicationContext(servletContext);
-
-        applicationContextCreated.set(true);
-
-        return context;
-    }
-
-    /**
-     * Invoked to obtain the Spring ApplicationContext, presumably stored in the ServletContext.
-     * This method is only used in Tapestry 5.0 compatibility mode (in Tapestry 5.1 and above,
-     * the default is for Tapestry to <em>create</em> the ApplicationContext).
-     * 
-     * @param servletContext
-     *            used to locate the ApplicationContext
-     * @return the ApplicationContext itself
-     * @throws RuntimeException
-     *             if the ApplicationContext could not be located or is otherwise invalid
-     * @since 5.2.0
-     */
-    protected ApplicationContext locateApplicationContext(ServletContext servletContext)
-    {
-        ApplicationContext context = (ApplicationContext) servletContext
-                .getAttribute(WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
-
-        if (context == null)
-            throw new NullPointerException(
-                    String
-                            .format(
-                                    "No Spring ApplicationContext stored in the ServletContext as attribute '%s'. "
-                                            + "You should either re-enable Tapestry as the creator of the ApplicationContext, or "
-                                            + "add a Spring ContextLoaderListener to web.xml.",
-                                    WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE));
-        return context;
-    }
-
-    public SpringModuleDef(ServletContext servletContext)
-    {
-        this.servletContext = servletContext;
-
-        compatibilityMode = Boolean.parseBoolean(servletContext
-                .getInitParameter(SpringConstants.USE_EXTERNAL_SPRING_CONTEXT));
-
-        final ApplicationContext externalContext = compatibilityMode ? locateExternalContext()
-                : null;
-
-        if (compatibilityMode)
-            addServiceDefsForSpringBeans(externalContext);
-
-        ServiceDef applicationContextServiceDef = new ServiceDef()
-        {
-            public ObjectCreator createServiceCreator(final ServiceBuilderResources resources)
-            {
-                if (compatibilityMode)
-                    return new StaticObjectCreator(externalContext,
-                            "externally configured Spring ApplicationContext");
-
-                ApplicationContextCustomizer customizer = resources.getService(
-                        "ApplicationContextCustomizer", ApplicationContextCustomizer.class);
-
-                return constructObjectCreatorForApplicationContext(resources, customizer);
-            }
-
-            public String getServiceId()
-            {
-                return SERVICE_ID;
-            }
-
-            public Set<Class> getMarkers()
-            {
-                return Collections.emptySet();
-            }
-
-            public Class getServiceInterface()
-            {
-                return compatibilityMode ? externalContext.getClass()
-                        : ConfigurableWebApplicationContext.class;
-            }
-
-            public String getServiceScope()
-            {
-                return ScopeConstants.DEFAULT;
-            }
-
-            public boolean isEagerLoad()
-            {
-                return false;
-            }
-        };
-
-        services.put(SERVICE_ID, applicationContextServiceDef);
-    }
-
-    private void addServiceDefsForSpringBeans(ApplicationContext context)
-    {
-        for (final String beanName : BeanFactoryUtils.beanNamesIncludingAncestors(context))
-        {
-            String trueName = beanName.startsWith("&") ? beanName.substring(1) : beanName;
-
-            services.put(trueName, new SpringBeanServiceDef(trueName, context));
-        }
-    }
-
-    private ObjectCreator constructObjectCreatorForApplicationContext(
-            final ServiceBuilderResources resources, @Primary
-            ApplicationContextCustomizer customizer)
-    {
-        final CustomizingContextLoader loader = new CustomizingContextLoader(customizer);
-
-        final RegistryShutdownListener shutdownListener = new RegistryShutdownListener()
-        {
-            public void registryDidShutdown()
-            {
-                loader.closeWebApplicationContext(servletContext);
-            }
-        };
-
-        final RegistryShutdownHub shutdownHub = resources.getService(RegistryShutdownHub.class);
-
-        return new ObjectCreator()
-        {
-            public Object createObject()
-            {
-                return resources.getTracker().invoke(
-                        "Creating Spring ApplicationContext via ContextLoader",
-                        new Invokable<Object>()
-                        {
-                            public Object invoke()
-                            {
-                                resources.getLogger().info(
-                                        String.format("Starting Spring (version %s)", SpringVersion
-                                                .getVersion()));
-
-                                WebApplicationContext context = loader
-                                        .initWebApplicationContext(servletContext);
-
-                                shutdownHub.addRegistryShutdownListener(shutdownListener);
-
-                                applicationContextCreated.set(true);
-
-                                return context;
-                            }
-                        });
-            }
-
-            @Override
-            public String toString()
-            {
-                return "ObjectCreator for Spring ApplicationContext";
-            }
-        };
-    }
-
-    public Class getBuilderClass()
-    {
-        return null;
-    }
-
-    /**
-     * Returns a contribution, "SpringBean", to the MasterObjectProvider service. It is ordered
-     * after the built-in
-     * contributions.
-     */
-    public Set<ContributionDef> getContributionDefs()
-    {
-        ContributionDef def = createContributionToMasterObjectProvider();
-
-        return CollectionFactory.newSet(def);
-    }
-
-    private ContributionDef createContributionToMasterObjectProvider()
-    {
-
-        ContributionDef def = new AbstractContributionDef()
-        {
-            public String getServiceId()
-            {
-                return "MasterObjectProvider";
-            }
-
-            @Override
-            public void contribute(ModuleBuilderSource moduleSource, ServiceResources resources,
-                    OrderedConfiguration configuration)
-            {
-                final OperationTracker tracker = resources.getTracker();
-
-                final ApplicationContext context = resources.getService(SERVICE_ID,
-                        ApplicationContext.class);
-
-                final ObjectProvider springBeanProvider = new ObjectProvider()
-                {
-                    public <T> T provide(Class<T> objectType,
-                            AnnotationProvider annotationProvider, ObjectLocator locator)
-                    {
-
-                        Map beanMap = context.getBeansOfType(objectType);
-
-                        switch (beanMap.size())
-                        {
-                            case 0:
-                                return null;
-
-                            case 1:
-
-                                Object bean = beanMap.values().iterator().next();
-
-                                return objectType.cast(bean);
-
-                            default:
-
-                                String message = String
-                                        .format(
-                                                "Spring context contains %d beans assignable to type %s: %s.",
-                                                beanMap.size(), ClassFabUtils
-                                                        .toJavaClassName(objectType), InternalUtils
-                                                        .joinSorted(beanMap.keySet()));
-
-                                throw new IllegalArgumentException(message);
-                        }
-                    }
-                };
-
-                final ObjectProvider springBeanProviderInvoker = new ObjectProvider()
-                {
-                    public <T> T provide(final Class<T> objectType,
-                            final AnnotationProvider annotationProvider, final ObjectLocator locator)
-                    {
-                        return tracker.invoke(
-                                "Resolving dependency by searching Spring ApplicationContext",
-                                new Invokable<T>()
-                                {
-                                    public T invoke()
-                                    {
-                                        return springBeanProvider.provide(objectType,
-                                                annotationProvider, locator);
-                                    }
-                                });
-                    }
-                };
-
-                ObjectProvider outerCheck = new ObjectProvider()
-                {
-                    public <T> T provide(Class<T> objectType,
-                            AnnotationProvider annotationProvider, ObjectLocator locator)
-                    {
-                        // I think the following line is the only reason we put the
-                        // SpringBeanProvider here,
-                        // rather than in SpringModule.
-
-                        if (!applicationContextCreated.get())
-                            return null;
-
-                        return springBeanProviderInvoker.provide(objectType, annotationProvider,
-                                locator);
-                    }
-                };
-
-                configuration.add("SpringBean", outerCheck, "after:Service,Alias,Autobuild");
-            }
-        };
-
-        return def;
-    }
-
-    /**
-     * Returns an empty set.
-     */
-    public Set<DecoratorDef> getDecoratorDefs()
-    {
-        return Collections.emptySet();
-    }
-
-    public String getLoggerName()
-    {
-        return SpringModuleDef.class.getName();
-    }
-
-    public ServiceDef getServiceDef(String serviceId)
-    {
-        return services.get(serviceId);
-    }
-
-    public Set<String> getServiceIds()
-    {
-        return services.keySet();
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/StaticObjectCreator.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/StaticObjectCreator.java
deleted file mode 100644
index 0177b2f..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/StaticObjectCreator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-
-/**
- * An {@link org.apache.tapestry5.ioc.ObjectCreator} for a statically identified object (typically, a bean from the
- * Spring application context).
- */
-public class StaticObjectCreator implements ObjectCreator
-{
-    private final Object object;
-
-    private final String description;
-
-    public StaticObjectCreator(Object object, String description)
-    {
-        this.object = object;
-        this.description = description;
-    }
-
-    public Object createObject()
-    {
-        return object;
-    }
-
-    @Override
-    public String toString()
-    {
-        return String.format("<ObjectCreator for %s>", description);
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SymbolBeanFactoryPostProcessor.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SymbolBeanFactoryPostProcessor.java
deleted file mode 100644
index 8ac2f5e..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/SymbolBeanFactoryPostProcessor.java
+++ /dev/null
@@ -1,46 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.apache.tapestry5.internal.spring;
-
-import java.util.Properties;
-
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.springframework.beans.factory.config.PropertyPlaceholderConfigurer;
-
-public class SymbolBeanFactoryPostProcessor extends PropertyPlaceholderConfigurer
-{
-    
-    private SymbolSource symbolSource;
-
-    public SymbolBeanFactoryPostProcessor(SymbolSource symbolSource)
-    {
-        super();
-        this.symbolSource = symbolSource;
-        setIgnoreUnresolvablePlaceholders(true);
-    }
-
-    @Override
-    protected String resolvePlaceholder(String placeholder, Properties props)
-    {
-        try
-        {
-            return symbolSource.valueForSymbol(placeholder);
-        }
-        catch(RuntimeException e)
-        {
-             return super.resolvePlaceholder(placeholder, props);
-        }
-    }
-
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/TapestryBeanFactory.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/TapestryBeanFactory.java
deleted file mode 100644
index fa2faf7..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/internal/spring/TapestryBeanFactory.java
+++ /dev/null
@@ -1,77 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.ioc.AnnotationProvider;
-import org.apache.tapestry5.ioc.Registry;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.springframework.beans.BeansException;
-import org.springframework.beans.TypeConverter;
-import org.springframework.beans.factory.BeanFactory;
-import org.springframework.beans.factory.config.DependencyDescriptor;
-import org.springframework.beans.factory.support.DefaultListableBeanFactory;
-
-import java.lang.annotation.Annotation;
-import java.util.Set;
-
-/**
- * Identifies dependencies whose field or method parameter contains the {@link org.apache.tapestry5.ioc.annotations.Inject}
- * or {@link org.apache.tapestry5.ioc.annotations.InjectService} annotations and, if so, invokes {@link
- * org.apache.tapestry5.ioc.Registry#getObject(Class, org.apache.tapestry5.ioc.AnnotationProvider)} to provide the
- * value.
- */
-public class TapestryBeanFactory extends DefaultListableBeanFactory
-{
-    private final Registry registry;
-
-    public TapestryBeanFactory(BeanFactory parentBeanFactory, Registry registry)
-    {
-        super(parentBeanFactory);
-
-        this.registry = registry;
-    }
-
-    @Override
-    public Object resolveDependency(final DependencyDescriptor descriptor, String beanName, Set autowiredBeanNames,
-                                    TypeConverter typeConverter) throws BeansException
-    {
-
-        Class objectType = descriptor.getDependencyType();
-
-        final Annotation[] annotations = descriptor.getAnnotations();
-
-        if (annotations != null)
-        {
-            AnnotationProvider provider = new AnnotationProvider()
-            {
-                public <T extends Annotation> T getAnnotation(Class<T> annotationClass)
-                {
-                    for (Object a : annotations)
-                    {
-                        if (annotationClass.isInstance(a)) return annotationClass.cast(a);
-                    }
-
-                    return null;
-                }
-            };
-
-            if (provider.getAnnotation(Inject.class) != null || provider.getAnnotation(InjectService.class) != null)
-                return registry.getObject(objectType, provider);
-        }
-
-        return super.resolveDependency(descriptor, beanName, autowiredBeanNames, typeConverter);
-    }
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/ApplicationContextCustomizer.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/ApplicationContextCustomizer.java
deleted file mode 100644
index 5f643cb..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/ApplicationContextCustomizer.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.ioc.annotations.UsesOrderedConfiguration;
-import org.springframework.web.context.ConfigurableWebApplicationContext;
-
-import javax.servlet.ServletContext;
-
-/**
- * A bridge from Spring's approach to customizing the application context, over to Tapestry's approach. This is a
- * chain-of-command service.
- */
-@UsesOrderedConfiguration(ApplicationContextCustomizer.class)
-public interface ApplicationContextCustomizer
-{
-    /**
-     * Allows the instantiated application context to be customized before it is initially {@linkplain
-     * org.springframework.context.ConfigurableApplicationContext#refresh() refreshed}.
-     *
-     * @param servletContext
-     * @param applicationContext
-     */
-    void customizeApplicationContext(ServletContext servletContext,
-                                     ConfigurableWebApplicationContext applicationContext);
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringConstants.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringConstants.java
deleted file mode 100644
index 4d7c414..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringConstants.java
+++ /dev/null
@@ -1,30 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-/**
- * Constants used with the Spring integration library.
- *
- * @since 5.1.0.0
- */
-public class SpringConstants
-{
-    /**
-     * If true, then Tapestry will attempt to use an externally configured Spring ApplicationContext rather than create
-     * its own. This will disable the ability to inject Tapestry IoC services and objects into Spring beans. This
-     * <em>must</em> be configured as a conetxt &lt;init-parameter&gt; in web.xml.
-     */
-    public static final String USE_EXTERNAL_SPRING_CONTEXT = "tapestry.use-external-spring-context";
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringModule.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringModule.java
deleted file mode 100644
index a26ec45..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/SpringModule.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import java.util.List;
-
-import javax.servlet.ServletContext;
-
-import org.apache.tapestry5.internal.spring.SymbolBeanFactoryPostProcessor;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.annotations.Marker;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.ioc.services.ChainBuilder;
-import org.apache.tapestry5.ioc.services.SymbolSource;
-import org.apache.tapestry5.services.ApplicationInitializer;
-import org.apache.tapestry5.services.ApplicationInitializerFilter;
-import org.apache.tapestry5.services.Context;
-import org.slf4j.Logger;
-import org.springframework.context.ApplicationContext;
-import org.springframework.core.SpringVersion;
-import org.springframework.web.context.ConfigurableWebApplicationContext;
-
-/**
- * Module for Tapestry/Spring Integration. This module exists to force the load of the Spring ApplicationContext as part
- * of Tapestry application initialization.
- *
- * @since 5.1.0.0
- */
-public class SpringModule
-{
-    private final Logger logger;
-
-    public SpringModule(Logger logger)
-    {
-        this.logger = logger;
-    }
-
-    public void contributeApplicationInitializer(
-            OrderedConfiguration<ApplicationInitializerFilter> configuration, final ApplicationContext springContext)
-    {
-        ApplicationInitializerFilter filter = new ApplicationInitializerFilter()
-        {
-            public void initializeApplication(Context context, ApplicationInitializer initializer)
-            {
-                logger.info(String.format("Spring version %s with %,d defined beans.",
-                                          SpringVersion.getVersion(),
-                                          springContext.getBeanDefinitionCount()));
-
-                initializer.initializeApplication(context);
-            }
-        };
-
-        configuration.add("SpringContextInitialization", filter);
-    }
-
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SpringConstants.USE_EXTERNAL_SPRING_CONTEXT, "false");
-    }
-
-    /**
-     * Defines a chain-of-command for handling application context customization. This allows the Spring context to be
-     * configured before it is initially {@linkplain org.springframework.context.ConfigurableApplicationContext#refresh()
-     * refreshed}.
-     */
-    @Marker(Primary.class)
-    public static ApplicationContextCustomizer buildApplicationContextCustomizer(
-            List<ApplicationContextCustomizer> configuration,
-            ChainBuilder builder)
-    {
-        return builder.build(ApplicationContextCustomizer.class, configuration);
-    }
-    
-    public static void contributeApplicationContextCustomizer(
-            OrderedConfiguration<ApplicationContextCustomizer> configuration, 
-            final SymbolSource symbolSource)
-    {
-        ApplicationContextCustomizer beanFactoryPostProcessorCustomizer = new ApplicationContextCustomizer()
-        {
-            
-            public void customizeApplicationContext(ServletContext servletContext,
-                    ConfigurableWebApplicationContext applicationContext)
-            {
-                applicationContext.addBeanFactoryPostProcessor(new SymbolBeanFactoryPostProcessor(symbolSource));
-                
-            }
-        };
-        
-        configuration.add("BeanFactoryPostProcessorCustomizer", beanFactoryPostProcessorCustomizer);
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/TapestryApplicationContext.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/TapestryApplicationContext.java
deleted file mode 100644
index 0003625..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/TapestryApplicationContext.java
+++ /dev/null
@@ -1,42 +0,0 @@
-// Copyright 2008, 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.TapestryFilter;
-import org.apache.tapestry5.internal.spring.TapestryBeanFactory;
-import org.apache.tapestry5.ioc.Registry;
-import org.springframework.beans.factory.support.DefaultListableBeanFactory;
-import org.springframework.web.context.support.XmlWebApplicationContext;
-
-/**
- * Extension of Spring's {@link org.springframework.web.context.support.XmlWebApplicationContext} that includes hooks to
- * resolve some injections into Spring beans as Tapestry services. When using the Tapestry/Spring Integration Library,
- * this class (or a subclass) must be the configured context class.  If not specified, this  class is the default
- * context class.
- */
-public class TapestryApplicationContext extends XmlWebApplicationContext
-{
-    @Override
-    protected DefaultListableBeanFactory createBeanFactory()
-    {
-        Registry registry = (Registry) getServletContext().getAttribute(TapestryFilter.REGISTRY_CONTEXT_NAME);
-
-        if (registry == null)
-            throw new IllegalStateException(
-                    "Expected a Tapestry IoC Registry to be stored in the ServletContext, but the attribute was null.");
-
-        return new TapestryBeanFactory(getInternalParentBeanFactory(), registry);
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/TapestrySpringFilter.java b/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/TapestrySpringFilter.java
deleted file mode 100644
index a27c8fe..0000000
--- a/maint-5-2/tapestry-spring/src/main/java/org/apache/tapestry5/spring/TapestrySpringFilter.java
+++ /dev/null
@@ -1,38 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.TapestryFilter;
-import org.apache.tapestry5.internal.spring.SpringModuleDef;
-import org.apache.tapestry5.ioc.def.ModuleDef;
-
-import javax.servlet.ServletContext;
-
-/**
- * Add logic to setup for Spring integration at startup.  In 5.1, this means creating a Spring ApplicationContext, and
- * wiring parts of it to resolve Tapestry objects.  In {@linkplain org.apache.tapestry5.spring.SpringConstants#USE_EXTERNAL_SPRING_CONTEXT
- * compatibility mode}, this means locating the externally configuration context and exposing each bean in it as a
- * Tapestry IoC service.
- */
-public class TapestrySpringFilter extends TapestryFilter
-{
-    @Override
-    protected ModuleDef[] provideExtraModuleDefs(ServletContext context)
-    {
-        return new ModuleDef[] {
-                new SpringModuleDef(context)
-        };
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/site/apt/index.apt b/maint-5-2/tapestry-spring/src/site/apt/index.apt
deleted file mode 100644
index 372c9c8..0000000
--- a/maint-5-2/tapestry-spring/src/site/apt/index.apt
+++ /dev/null
@@ -1,144 +0,0 @@
- ----
- Tapestry/Spring Integration
- ----
- 
-Tapestry/Spring Integration
-
-  Provides integration between Tapestry and Spring, allowing beans defined by Spring to be injected into Tapestry IoC services, and into
-  Tapestry components.
-
-Changes From 5.0
-
- You may now use the @Inject or @InjectService annotations inside Spring beans; these will be resolved to
- Tapestry services or other objects available via the MasterObjectProvider.  Please see
- the {{{../tapestry-ioc/injection.html}detailed guide to Injection}}.
-
- The dependency on Spring is no longer scope "provider" and has changed to 2.5.6.
-
- <<Spring Beans are no longer exposed as services, unless 5.0 compatibility mode is enabled.>>
-
- You no longer create a ContextLoaderListener.
-
- These changes represent an unfortunate backwards compatibility issue.
- If necessary, you can still use tapestry-spring version 5.0.18 with the rest of Tapestry.
-  
-Spring Version
-
-  This module is compiled and tested against Spring 2.5.6.  It should be resonable to override the dependency to earlier versions
-  of Spring, though the code makes use of some APIs that were added to Spring to support JDK 1.5 annotations. 
-    
-Usage
-
-  The integration is designed to be a very thin layer on top of Spring's normal configuration for a web application.
-  
-  Detailed instructions are available in the
-  {{{http://static.springframework.org/spring/docs/2.5.x/reference/beans.html#context-create}Spring documentation}}. Please omit
-  the part about creating a ContextLoaderListener: this is now done automatically by Tapestry.
-  
-* web.xml changes
-  
-  The short form is that you must make two small changes to your application's web.xml.
-  
-  First, a special filter is used in replace of the standard TapestryFilter:
-  
-+---+
-  <filter>
-    <filter-name>app</filter-name>
-    <!-- Special filter that adds in a T5 IoC module derived from the Spring WebApplicationContext. -->
-    <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
-  </filter>
-+---+  
- 
-   Secondly, you may add the normal Spring configuration, consisting of an optional \<context-param\> identifying which Spring bean configuration file(s) to load:
- 
-+---+
-<context-param>
-  <param-name>contextConfigLocation</param-name>
-  <param-value>/WEB-INF/daoContext.xml /WEB-INF/applicationContext.xml</param-value>
-</context-param>
-+---+
-
-  The \<context-param\> lists the Spring bean configuration file.  It is optional and defaults to just /WEB-INF/applicationContext.xml if omitted.
-
-* Injecting beans
-
-  Inside your component classes, you may use the 
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Inject.html}Inject}} annotation.  Typically, just the field
-  type is sufficient to identify the Spring bean to inject:
-  
-+----+
-  @Inject
-  private UserDAO userDAO;
-+----+
-
-  Searching for Spring beans is threaded into the {{{../tapestry-ioc/injection.html}MasterObjectProvider service}}. The Spring context becomes one
-  more place that Tapestry searches when determining the injection for a injected field or method parameter.
-
-* Injecting Tapestry services in Spring beans
-
-  If you have configured Spring to allow annotation based injection, then you will be able to inject Tapestry services into your Spring Beans.
-
-  <<This feature is only available when Spring ApplicationContext is not configured and loaded externally. >>  
-  
-  Inside your Spring beans, you may use
-  {{{../apidocs/org/apache/tapestry5/ioc/annotations/Inject.html}Inject}} and 
-  {{{http://static.springsource.org/spring/docs/3.0.x/javadoc-api/org/springframework/beans/factory/annotation/Autowired.html}Autowired}} annotations.
-  Simply add these two annotations on top the field you want to inject in your Spring bean.
-  
-+----+
-  @Inject
-  @Autowired
-  private MyService myService;
-+----+
-
-  or use @Inject on top of arguments in @Autowired bean constructor methods
-  
-+----+
-  private final MyService myService;
-  
-  @Autowired
-  public UserDAOImpl(@Inject MyService myService)
-  {
-    this.myService = myService;
-  }
-+----+
-
-* Configuring Spring with Tapestry Symbols
-  
-  As of version 5.2.0 it is possible to configure individual bean property values from Tapestry symbols. This is accomplished by a BeanFactoryPostProcessors 
-  that resolves the values of 'placeholders' from symbol values. In the following example the value of the Bean's property 'productionMode' is the value of the Tapestry's 
-  symbol {{{..apidocs/org/apache/tapestry5/SymbolConstants.html#PRODUCTION_MODE}tapestry.production-mode}}
-
-+----+  
-  <bean id="myBean" class="org.example.MyBean">
-    <property name="productionMode" value="${tapestry.production-mode}"/>
-  </bean> 
-+----+
-
-  
-ApplicationContext Service
-
-  The Spring ApplicationContext is also added as a service.
-
-ApplicationContextCustomizer
-
-  A new chain-of-command service,
-  {{{../apidocs/org/apache/tapestry5/spring/ApplicationContextCustomizer.html}ApplicationContextCustomizer}}
-  allows the application context, created by Tapestry, to be customized as it is created.  You may contribute
-  your own ApplicationContextCustomizer instances as needed.
-
-5.0 Compatibility Mode
-
- In some circumstances, it is desirable to configure the Spring ApplicationContext externally. The  context \<config-param\>
- "tapestry.use-external-spring-context" can be configured to "true".  Tapestry will then use an existing ApplicationContext,
- provided by a Spring ContextLoaderListener. You will still be able to inject Spring beans into Tapestry components and services,
- and the ApplicationContext service will be visible ... but you will not be able to inject Tapestry IoC services into Spring beans.
-
- This option provides compatibility with the tapestry-spring 5.0, including exposing Spring beans as Tapestry IoC services
- (something that no longer occurs unless compatibility mode is enabled).
-
-Limitations
-
-  Non-singleton beans are not handled properly. Tapestry will request the beans from the application context in a manner unsuitable for their lifecycle.
-  For the moment, you should consider the non-singleton beans to be not-injectable.  Instead, inject the ApplicationContext service and
-  obtain the non-singleton beans as needed.
diff --git a/maint-5-2/tapestry-spring/src/site/site.xml b/maint-5-2/tapestry-spring/src/site/site.xml
deleted file mode 100644
index 1dd0808..0000000
--- a/maint-5-2/tapestry-spring/src/site/site.xml
+++ /dev/null
@@ -1,49 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Spring Integration">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-spring/src/test/conf/testng.xml b/maint-5-2/tapestry-spring/src/test/conf/testng.xml
deleted file mode 100644
index bf1b800..0000000
--- a/maint-5-2/tapestry-spring/src/test/conf/testng.xml
+++ /dev/null
@@ -1,25 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapesty Spring Integration" parallel="false" thread-count="10" annotations="1.5" verbose="2">
-    <test name="Tapestry Spring Integration">
-        <packages>
-            <package name="org.apache.tapestry5.spring"/>
-            <package name="org.apache.tapestry5.internal.spring"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-spring/src/test/conf/webdefault.xml b/maint-5-2/tapestry-spring/src/test/conf/webdefault.xml
deleted file mode 100644
index b9cac09..0000000
--- a/maint-5-2/tapestry-spring/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/internal/spring/CustomizingContextLoaderTest.java b/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/internal/spring/CustomizingContextLoaderTest.java
deleted file mode 100644
index 3539ca6..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/internal/spring/CustomizingContextLoaderTest.java
+++ /dev/null
@@ -1,69 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.spring.SpringTestCase;
-import org.apache.tapestry5.spring.TapestryApplicationContext;
-import org.springframework.web.context.ContextLoader;
-import org.springframework.web.context.support.XmlWebApplicationContext;
-import org.testng.annotations.Test;
-
-import javax.servlet.ServletContext;
-
-public class CustomizingContextLoaderTest extends SpringTestCase
-{
-    @Test
-    public void specified_context_class_is_not_compatible()
-    {
-        ServletContext context = mockServletContext();
-
-        train_getInitParameter(context, ContextLoader.CONTEXT_CLASS_PARAM, XmlWebApplicationContext.class.getName());
-
-        replay();
-
-        CustomizingContextLoader ccl = new CustomizingContextLoader(null);
-
-        try
-        {
-            ccl.determineContextClass(context);
-            unreachable();
-        }
-        catch (IllegalArgumentException ex)
-        {
-            assertMessageContains(ex,
-                                  "context class that extends from org.apache.tapestry5.spring.TapestryApplicationContext",
-                                  "Class org.springframework.web.context.support.XmlWebApplicationContext does not.",
-                                  "Update the 'contextClass' servlet context init parameter.");
-        }
-
-        verify();
-    }
-
-    @Test
-    public void specified_context_class_is_compatible()
-    {
-        ServletContext context = mockServletContext();
-
-        train_getInitParameter(context, ContextLoader.CONTEXT_CLASS_PARAM, TapestryApplicationContext.class.getName());
-
-        replay();
-
-        CustomizingContextLoader ccl = new CustomizingContextLoader(null);
-
-        assertSame(ccl.determineContextClass(context), TapestryApplicationContext.class);
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/internal/spring/SpringModuleDefTest.java b/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/internal/spring/SpringModuleDefTest.java
deleted file mode 100644
index cba5419..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/internal/spring/SpringModuleDefTest.java
+++ /dev/null
@@ -1,124 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.internal.spring;
-
-import org.apache.tapestry5.ioc.ObjectCreator;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.ServiceBuilderResources;
-import org.apache.tapestry5.ioc.def.ServiceDef;
-import org.apache.tapestry5.spring.SpringConstants;
-import org.apache.tapestry5.spring.SpringTestCase;
-import org.springframework.web.context.ConfigurableWebApplicationContext;
-import org.springframework.web.context.WebApplicationContext;
-import org.testng.annotations.Test;
-
-import javax.servlet.ServletContext;
-
-public class SpringModuleDefTest extends SpringTestCase
-{
-    @Test
-    public void load_application_context_externally()
-    {
-        ServletContext servletContext = mockServletContext();
-        ConfigurableWebApplicationContext ac = newMock(ConfigurableWebApplicationContext.class);
-        Runnable fred = mockRunnable();
-        Runnable barney = mockRunnable();
-
-        ServiceBuilderResources resources = mockServiceBuilderResources();
-
-        train_getInitParameter(servletContext, SpringConstants.USE_EXTERNAL_SPRING_CONTEXT, "true");
-
-        train_getAttribute(servletContext, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, ac);
-
-        // Simulate barney as a factory bean.
-
-        expect(ac.getBeanNamesForType(Object.class)).andReturn(new String[] {"fred", "&barney"});
-        expect(ac.getParentBeanFactory()).andReturn(null);
-
-        replay();
-
-        SpringModuleDef moduleDef = new SpringModuleDef(servletContext);
-
-        ServiceDef serviceDef = moduleDef.getServiceDef(SpringModuleDef.SERVICE_ID);
-
-        ObjectCreator serviceCreator = serviceDef.createServiceCreator(resources);
-
-        assertSame(serviceCreator.createObject(), ac);
-
-        verify();
-
-        // Now, let's test for some of the services.
-
-        ServiceDef sd = moduleDef.getServiceDef("ApplicationContext");
-
-        assertEquals(sd.getServiceInterface(), ac.getClass());
-        assertEquals(sd.createServiceCreator(null).toString(),
-                     "<ObjectCreator for externally configured Spring ApplicationContext>");
-
-        expect((Class)ac.getType("fred")).andReturn(Runnable.class);
-        expect(ac.getBean("fred")).andReturn(fred);
-
-
-        sd = moduleDef.getServiceDef("fred");
-
-        replay();
-
-        assertEquals(sd.getServiceId(), "fred");
-        assertEquals(sd.getServiceInterface(), Runnable.class);
-        assertEquals(sd.getServiceScope(), ScopeConstants.DEFAULT);
-        assertSame(sd.createServiceCreator(null).createObject(), fred);
-        assertTrue(sd.getMarkers().isEmpty());
-        assertFalse(sd.isEagerLoad());
-        assertEquals(sd.createServiceCreator(null).toString(), "ObjectCreator<Spring Bean 'fred'>");
-
-        verify();
-
-        expect((Class)ac.getType("barney")).andReturn(Runnable.class);
-        expect(ac.getBean("barney")).andReturn(barney);
-
-        replay();
-
-        sd = moduleDef.getServiceDef("barney");
-
-        assertSame(sd.createServiceCreator(null).createObject(), barney);
-    }
-
-    @Test
-    public void missing_external_application_context()
-    {
-        ServletContext servletContext = mockServletContext();
-
-        train_getInitParameter(servletContext, SpringConstants.USE_EXTERNAL_SPRING_CONTEXT, "true");
-
-        train_getAttribute(servletContext, WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE, null);
-
-        replay();
-
-        try
-        {
-            new SpringModuleDef(servletContext);
-
-            unreachable();
-        }
-        catch (NullPointerException ex)
-        {
-            assertMessageContains(ex,
-                                  "No Spring ApplicationContext stored in the ServletContext",
-                                  WebApplicationContext.ROOT_WEB_APPLICATION_CONTEXT_ATTRIBUTE);
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/SpringTestCase.java b/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/SpringTestCase.java
deleted file mode 100644
index 041b1c5..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/SpringTestCase.java
+++ /dev/null
@@ -1,40 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.test.TapestryTestCase;
-
-import javax.servlet.ServletContext;
-
-/**
- * Base class for Spring Integration test cases.
- */
-public class SpringTestCase extends TapestryTestCase
-{
-    protected final void train_getInitParameter(ServletContext context, String parameterName, String parameterValue)
-    {
-        expect(context.getInitParameter(parameterName)).andReturn(parameterValue).atLeastOnce();
-    }
-
-    protected final ServletContext mockServletContext()
-    {
-        return newMock(ServletContext.class);
-    }
-
-    protected final void train_getAttribute(ServletContext context, String attributeName, Object attributeValue)
-    {
-        expect(context.getAttribute(attributeName)).andReturn(attributeValue);
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/TapestryApplicationContextTest.java b/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/TapestryApplicationContextTest.java
deleted file mode 100644
index 2ebdb81..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/TapestryApplicationContextTest.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.TapestryFilter;
-import org.testng.annotations.Test;
-
-import javax.servlet.ServletContext;
-
-public class TapestryApplicationContextTest extends SpringTestCase
-{
-    @Test
-    public void no_registry_in_servlet_context()
-    {
-        ServletContext context = mockServletContext();
-
-        train_getAttribute(context, TapestryFilter.REGISTRY_CONTEXT_NAME, null);
-
-        replay();
-
-        TapestryApplicationContext tac = new TapestryApplicationContext();
-
-        tac.setServletContext(context);
-
-        try
-        {
-            tac.createBeanFactory();
-            unreachable();
-        }
-        catch (IllegalStateException ex)
-        {
-        }
-
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/TapestrySpringIntegrationTest.java b/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/TapestrySpringIntegrationTest.java
deleted file mode 100644
index d7fb125..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/apache/tapestry5/spring/TapestrySpringIntegrationTest.java
+++ /dev/null
@@ -1,79 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.test.AbstractIntegrationTestSuite;
-import org.testng.annotations.Test;
-
-public class TapestrySpringIntegrationTest extends AbstractIntegrationTestSuite
-{
-    public TapestrySpringIntegrationTest()
-    {
-        super("src/test/webapp");
-    }
-
-    @Test
-    public void integration_test() throws Exception
-    {
-        open(BASE_URL);
-
-        type("input", "paris in the springtime");
-        clickAndWait("//input[@value='Convert']");
-
-        assertFieldValue("input", "PARIS IN THE SPRINGTIME");
-    }
-
-    @Test
-    public void access_to_spring_context() throws Exception
-    {
-        open(BASE_URL);
-
-        String text = getText("beans");
-        assertTrue(text.contains("upcase"));
-    }
-
-    @Test
-    public void customize_pipeline_is_invoked() throws Exception
-    {
-        open(BASE_URL);
-
-        assertText("message", "SPRING VERSION 3.0.0.RELEASE: PIPELINE WAS INVOKED");
-    }
-
-    @Test
-    public void too_many_spring_beans_are_assignable()
-    {
-        open(BASE_URL + "bedrock");
-
-        assertTextPresent(
-                "Spring context contains 2 beans assignable to type org.example.testapp.services.Flintstone: barney, fred.");
-    }
-
-    @Test
-    public void factory_provided_beans_accessible() throws Exception
-    {
-        open(BASE_URL);
-
-        assertEquals(getText("viaFactory"), "Instantiated via a factory bean.");
-    }
-    
-    @Test
-    public void symbol_bean_factory_post_processor() throws Exception
-    {
-        open(BASE_URL);
-
-        assertEquals(getText("symbolValueHolder"), "Start page is 'start', Value from Spring is 'Hello'");
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/pages/Bedrock.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/pages/Bedrock.java
deleted file mode 100644
index ade0268..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/pages/Bedrock.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.pages;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.testapp.services.Flintstone;
-
-/**
- * Not intstantiable because there is more than one Flintstone implementation bean inside the Spring context.
- */
-public class Bedrock
-{
-    @Inject
-    private Flintstone citizen;
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/pages/Start.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/pages/Start.java
deleted file mode 100644
index 1a75025..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/pages/Start.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.pages;
-
-import java.util.Arrays;
-
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.annotations.Retain;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.ioc.internal.util.InternalUtils;
-import org.example.testapp.services.SpringStatusProvider;
-import org.example.testapp.services.SymbolValueHolder;
-import org.example.testapp.services.Upcase;
-import org.example.testapp.services.ViaFactory;
-import org.springframework.context.ApplicationContext;
-
-public class Start
-{
-    @Retain
-    private String input;
-
-    // We're matching on type here, just as we would a service provided in a T5 IoC module.
-    @Inject
-    private Upcase upcaseBean;
-
-    @Inject
-    private ApplicationContext applicationContext;
-
-    @Inject
-    @Property
-    private SpringStatusProvider statusProvider;
-
-    @Inject
-    @Property
-    private ViaFactory viaFactory;
-    
-    @Inject
-    @Property
-    private SymbolValueHolder symbolValueHolder;
-
-    void onSuccess()
-    {
-        input = upcaseBean.toUpperCase(input);
-    }
-
-    public String getInput()
-    {
-        return input;
-    }
-
-    public void setInput(String input)
-    {
-        this.input = input;
-    }
-
-    public String getSpringBeans()
-    {
-        return InternalUtils.join(Arrays.asList(applicationContext.getBeanDefinitionNames()));
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/AppModule.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/AppModule.java
deleted file mode 100644
index ecab63c..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/AppModule.java
+++ /dev/null
@@ -1,53 +0,0 @@
-// Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ServiceBinder;
-import org.apache.tapestry5.ioc.annotations.SubModule;
-import org.apache.tapestry5.spring.ApplicationContextCustomizer;
-import org.apache.tapestry5.spring.SpringModule;
-import org.springframework.web.context.ConfigurableWebApplicationContext;
-
-import javax.servlet.ServletContext;
-
-@SubModule(SpringModule.class)
-public class AppModule
-{
-    public static final void bind(ServiceBinder binder)
-    {
-        binder.bind(StringTransformer.class, UpcaseStringTransformerImpl.class);
-    }
-
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-    }
-
-    public static void contributeApplicationContextCustomizer(
-            OrderedConfiguration<ApplicationContextCustomizer> configuration)
-    {
-        configuration.add("WasInvoked", new ApplicationContextCustomizer()
-        {
-            public void customizeApplicationContext(ServletContext servletContext,
-                                                    ConfigurableWebApplicationContext applicationContext)
-            {
-                servletContext.setAttribute("status-message", "Pipeline Was Invoked");
-            }
-        });
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/Flintstone.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/Flintstone.java
deleted file mode 100644
index 5c0bcd6..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/Flintstone.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-public interface Flintstone
-{
-    void bam();
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/FlintstoneImpl.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/FlintstoneImpl.java
deleted file mode 100644
index ed7b61c..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/FlintstoneImpl.java
+++ /dev/null
@@ -1,22 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-public class FlintstoneImpl implements Flintstone
-{
-    public void bam()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SpringStatusProvider.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SpringStatusProvider.java
deleted file mode 100644
index db6dca8..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SpringStatusProvider.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-import org.apache.tapestry5.ioc.annotations.InjectService;
-import org.apache.tapestry5.services.Context;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.core.SpringVersion;
-
-public class SpringStatusProvider
-{
-    private final Context context;
-    private final Upcase upcase;
-
-    /**
-     * Just wanted to get code coverage for using @InjectService here.
-     */
-    @Autowired
-    public SpringStatusProvider(@InjectService("Context") Context context, Upcase upcase)
-    {
-        this.context = context;
-        this.upcase = upcase;
-    }
-
-    public String getStatus()
-    {
-        return upcase.toUpperCase(String.format("Spring version %s: %s",
-                                                SpringVersion.getVersion(),
-                                                context.getAttribute("status-message")));
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SpringStatusProviderFactory.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SpringStatusProviderFactory.java
deleted file mode 100644
index 5413168..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SpringStatusProviderFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-import org.springframework.beans.factory.FactoryBean;
-
-public class SpringStatusProviderFactory implements FactoryBean
-{
-    public Object getObject() throws Exception
-    {
-        return null;
-    }
-
-    public Class getObjectType()
-    {
-        return null;
-    }
-
-    public boolean isSingleton()
-    {
-        return false;
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/StringTransformer.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/StringTransformer.java
deleted file mode 100644
index 02df021..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/StringTransformer.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-public interface StringTransformer
-{
-    String transform(String input);
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SymbolValueHolder.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SymbolValueHolder.java
deleted file mode 100644
index 3a8d563..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/SymbolValueHolder.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-package org.example.testapp.services;
-
-public class SymbolValueHolder
-{
-    private String value;
-    
-    private String anotherValue;
-
-    public String getValue()
-    {
-        return value;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-    
-    public String getAnotherValue()
-    {
-        return anotherValue;
-    }
-
-    public void setAnotherValue(String anotherValue)
-    {
-        this.anotherValue = anotherValue;
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/Upcase.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/Upcase.java
deleted file mode 100644
index 2a30537..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/Upcase.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-/**
- * Test interface for an injectble Spring bean.
- */
-public interface Upcase
-{
-    String toUpperCase(String input);
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/UpcaseImpl.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/UpcaseImpl.java
deleted file mode 100644
index d0242d6..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/UpcaseImpl.java
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.springframework.beans.factory.annotation.Autowired;
-
-public class UpcaseImpl implements Upcase
-{
-    private final StringTransformer transformer;
-
-    @Autowired
-    public UpcaseImpl(@Inject StringTransformer transformer)
-    {
-        this.transformer = transformer;
-    }
-
-    public String toUpperCase(String input)
-    {
-        return transformer.transform(input);
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/UpcaseStringTransformerImpl.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/UpcaseStringTransformerImpl.java
deleted file mode 100644
index feba202..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/UpcaseStringTransformerImpl.java
+++ /dev/null
@@ -1,23 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-public class UpcaseStringTransformerImpl implements StringTransformer
-{
-    public String transform(String input)
-    {
-        return input.toUpperCase();
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/ViaFactory.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/ViaFactory.java
deleted file mode 100644
index 8a80555..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/ViaFactory.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-public interface ViaFactory
-{
-    public String getMessage();
-}
diff --git a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/ViaFactoryFactory.java b/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/ViaFactoryFactory.java
deleted file mode 100644
index f0507c5..0000000
--- a/maint-5-2/tapestry-spring/src/test/java/org/example/testapp/services/ViaFactoryFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.testapp.services;
-
-import org.springframework.beans.factory.FactoryBean;
-
-public class ViaFactoryFactory implements FactoryBean
-{
-    public Object getObject() throws Exception
-    {
-        return new ViaFactory()
-        {
-            public String getMessage()
-            {
-                return "Instantiated via a factory bean.";
-            }
-        };
-    }
-
-    public Class getObjectType()
-    {
-        return ViaFactory.class;
-    }
-
-    public boolean isSingleton()
-    {
-        return true;
-    }
-}
diff --git a/maint-5-2/tapestry-spring/src/test/resources/log4j.properties b/maint-5-2/tapestry-spring/src/test/resources/log4j.properties
deleted file mode 100644
index edf2f4b..0000000
--- a/maint-5-2/tapestry-spring/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,31 +0,0 @@
-# Copyright 2005, 2006 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=INFO, A1
-
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry5.TapestryFilter=info
-log4j.category.org.apache.tapestry=error
-log4j.category.tapestry=error
-log4j.category.tapestry.ioc.ClassFactory=error
-
-log4j.category.app=info
-log4j.category.org.apache.tapestry5.integration.app1=error
-log4j.category.org.apache.tapestry5.corelib=error
diff --git a/maint-5-2/tapestry-spring/src/test/webapp/Start.tml b/maint-5-2/tapestry-spring/src/test/webapp/Start.tml
deleted file mode 100644
index 0a329d8..0000000
--- a/maint-5-2/tapestry-spring/src/test/webapp/Start.tml
+++ /dev/null
@@ -1,29 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Start Page</title>
-    </head>
-    <body>
-        <p>
-            This is a silly application for converting text to uppercase.
-        </p>
-        <t:form>
-            <t:errors/>
-            <t:label for="input"/>
-            <input t:type="textfield" t:id="input" size="40"/>
-            <br/>
-            <input type="submit" value="Convert"/>
-        </t:form>
-
-        <dl>
-            <dt>Spring beans:</dt>
-            <dd id="beans">${springBeans}</dd>
-            <dt>Filter message:</dt>
-            <dd id="message">${statusProvider.status}</dd>
-            <dt>Via factory:</dt>
-            <dd id="viaFactory">${viaFactory.message}</dd>
-            <dt>Symbol Value Holder:</dt>
-            <dd id="symbolValueHolder">Start page is '${symbolValueHolder.value}', Value from Spring is '${symbolValueHolder.anotherValue}'</dd>
-        </dl>
-
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-spring/src/test/webapp/WEB-INF/applicationContext.xml b/maint-5-2/tapestry-spring/src/test/webapp/WEB-INF/applicationContext.xml
deleted file mode 100644
index 0896899..0000000
--- a/maint-5-2/tapestry-spring/src/test/webapp/WEB-INF/applicationContext.xml
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xmlns:context="http://www.springframework.org/schema/context"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans 
-           http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
-           http://www.springframework.org/schema/context
-           http://www.springframework.org/schema/context/spring-context-3.0.xsd">
-
-    <context:annotation-config/>
-
-    <bean id="upcase" class="org.example.testapp.services.UpcaseImpl"/>
-    <bean id="status" class="org.example.testapp.services.SpringStatusProvider"/>
-
-    <bean id="fred" class="org.example.testapp.services.FlintstoneImpl"/>
-    <bean id="barney" class="org.example.testapp.services.FlintstoneImpl"/>
-
-    <bean id="viaFactory" class="org.example.testapp.services.ViaFactoryFactory"/>
-    
-   	<bean class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-    	<property name="properties">
-        	<value>value.from.spring=Hello</value>
-    	</property>
-	</bean>
-
-    <bean id="symbolValueHolder" class="org.example.testapp.services.SymbolValueHolder">
-    	<property name="value" value="${tapestry.start-page-name}"/>
-    	<property name="anotherValue" value="${value.from.spring}"/>
-    </bean>
-
-</beans>
-
diff --git a/maint-5-2/tapestry-spring/src/test/webapp/WEB-INF/web.xml b/maint-5-2/tapestry-spring/src/test/webapp/WEB-INF/web.xml
deleted file mode 100644
index d940cb6..0000000
--- a/maint-5-2/tapestry-spring/src/test/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,33 +0,0 @@
-<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<!-- 
-   Copyright 2007, 2009 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app>
-    <display-name>Tapestry-Spring Integration Test Application</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.example.testapp</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.spring.TapestrySpringFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
diff --git a/maint-5-2/tapestry-test/LICENSE.txt b/maint-5-2/tapestry-test/LICENSE.txt
deleted file mode 100644
index 84712cb..0000000
--- a/maint-5-2/tapestry-test/LICENSE.txt
+++ /dev/null
@@ -1,250 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
-
-   
-
-This file contains the contents of the Ispell (ver 3.1.20) word list after
-being expand from there affix compressed form used by Ispell.
-
-Ispell can be found at http://fmg-www.cs.ucla.edu/geoff/ispell.html.
-This wordlist can be found at http://wordlist.sourceforge.net/
-
-These word lists are under the same copyright as Ispell itself:
-
-  Copyright 1993, Geoff Kuenning, Granada Hills, CA
-  All rights reserved.
-
-  Redistribution and use in source and binary forms, with or without
-  modification, are permitted provided that the following conditions
-  are met:
-
-  1. Redistributions of source code must retain the above copyright
-     notice, this list of conditions and the following disclaimer.
-  2. Redistributions in binary form must reproduce the above copyright
-     notice, this list of conditions and the following disclaimer in the
-     documentation and/or other materials provided with the distribution.
-  3. All modifications to the source code must be clearly marked as
-     such.  Binary redistributions based on modified source code
-     must be clearly marked as modified versions in the documentation
-     and/or other materials provided with the distribution.
-  4. All advertising materials mentioning features or use of this software
-     must display the following acknowledgment:
-     This product includes software developed by Geoff Kuenning and
-     other unpaid contributors.
-  5. The name of Geoff Kuenning may not be used to endorse or promote
-     products derived from this software without specific prior
-     written permission.
-
-  THIS SOFTWARE IS PROVIDED BY GEOFF KUENNING AND CONTRIBUTORS ``AS
-  IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-  LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
-  FOR A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL GEOFF
-  KUENNING OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
-  INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
-  BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
-  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 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 OF THIS SOFTWARE, EVEN IF ADVISED OF THE
-  POSSIBILITY OF SUCH DAMAGE.
-   
\ No newline at end of file
diff --git a/maint-5-2/tapestry-test/NOTICE.txt b/maint-5-2/tapestry-test/NOTICE.txt
deleted file mode 100644
index 183dd0b..0000000
--- a/maint-5-2/tapestry-test/NOTICE.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
-This product includes software developed by Geoff Kuenning and
-other unpaid contributors.
-http://fmg-www.cs.ucla.edu/geoff/ispell.html
-
-
-
-
diff --git a/maint-5-2/tapestry-test/pom.xml b/maint-5-2/tapestry-test/pom.xml
deleted file mode 100644
index 8befa49..0000000
--- a/maint-5-2/tapestry-test/pom.xml
+++ /dev/null
@@ -1,94 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>org.apache.tapestry</groupId>
-  <artifactId>tapestry-test</artifactId>
-  <name>Tapestry Test Utilities</name>
-  <inceptionYear>2007</inceptionYear>
-  <description>Test utilities needed by Tapestry</description>
-  <parent>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-project</artifactId>
-    <version>5.2.6</version>
-  </parent>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.seleniumhq.selenium.server</groupId>
-      <artifactId>selenium-server</artifactId>
-      <version>${selenium-version}</version>
-      <classifier>standalone</classifier>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.testng</groupId>
-      <artifactId>testng</artifactId>
-      <version>${testng-version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-server</artifactId>
-      <version>${jetty-version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-jndi</artifactId>
-      <version>${jetty-version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-plus</artifactId>
-      <version>${jetty-version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.eclipse.jetty</groupId>
-      <artifactId>jetty-webapp</artifactId>
-      <version>${jetty-version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>jetty</groupId>
-      <artifactId>org.mortbay.jetty</artifactId>
-      <version>5.1.12</version>
-      <scope>compile</scope>
-    </dependency>
-  </dependencies>
-  <build>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-assembly-plugin</artifactId>
-      </plugin>
-    </plugins>
-  </build>
-  <reporting>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-project-info-reports-plugin</artifactId>
-        <reportSets>
-          <reportSet>
-            <reports>
-              <report>summary</report>
-              <report>dependencies</report>
-            </reports>
-          </reportSet>
-        </reportSets>
-      </plugin>
-    </plugins>
-  </reporting>
-
-
-  <properties>
-    <selenium-version>1.0.3</selenium-version>
-    <jetty-version>7.0.0.v20091005</jetty-version>
-  </properties>
-</project>
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/AbstractIntegrationTestSuite.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/AbstractIntegrationTestSuite.java
deleted file mode 100644
index faacff1..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/AbstractIntegrationTestSuite.java
+++ /dev/null
@@ -1,1199 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import com.thoughtworks.selenium.CommandProcessor;
-import com.thoughtworks.selenium.DefaultSelenium;
-import com.thoughtworks.selenium.HttpCommandProcessor;
-import com.thoughtworks.selenium.Selenium;
-import org.openqa.selenium.server.RemoteControlConfiguration;
-import org.openqa.selenium.server.SeleniumServer;
-import org.testng.Assert;
-import org.testng.ITestContext;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.BeforeClass;
-
-/**
- * A base class for creating integration tests. Ths encapsulates starting up an in-process copy of
- * Jetty, and in-process
- * copy of {@link SeleniumServer}, and a Selenium client.
- * <p/>
- * Unless you are <em>very, very clever</em>, you will want to run the tests sequentially. TestNG
- * tends to run them in an arbitrary order unless you explicitly set the order. If you have managed
- * to get TestNG to run tests in parallel, you may see further problems caused by a single client
- * jumping all over your web application in an unpredictable order.
- * <p/>
- * This class implements the {@link Selenium} interface, and delegates all those methods to the
- * {@link DefaultSelenium} instance it creates. It also extends the normal exception reporting for
- * any failed command or query to produce a more detailed report to the main console.
- * 
- * @see org.apache.tapestry5.test.JettyRunner
- * @deprecated Use {@link SeleniumLauncher} and {@link SeleniumTestCase} instead.
- */
-public class AbstractIntegrationTestSuite extends Assert implements Selenium
-{
-    /**
-     * Default directory containing the web application to be tested (this conforms to Maven's
-     * default folder).
-     */
-    public static final String DEFAULT_WEB_APP_ROOT = "src/main/webapp";
-
-    /**
-     * Default browser in which to run tests - firefox
-     */
-    public static final String DEFAULT_WEB_BROWSER_COMMAND = "*firefox";
-
-    /**
-     * 15 seconds
-     */
-    public static final String PAGE_LOAD_TIMEOUT = "15000";
-
-    /**
-     * The port on which the internal copy of Jetty is executed.
-     */
-    public static final int JETTY_PORT = 9999;
-
-    // This is likely to be a problem, since may want to test with a context path, rather than as
-    // root.
-    public static final String BASE_URL = String.format("http://localhost:%d/", JETTY_PORT);
-
-    public static final String SUBMIT = "//input[@type='submit']";
-
-    private String webappRoot;
-
-    private final String seleniumBrowserCommand;
-
-    private JettyRunner jettyRunner;
-
-    private Selenium selenium;
-
-    private SeleniumServer server;
-
-    private String[] virtualHosts;
-
-    /**
-     * Initializes the suite using {@link #DEFAULT_WEB_APP_ROOT}.
-     */
-    public AbstractIntegrationTestSuite()
-    {
-        this(DEFAULT_WEB_APP_ROOT, DEFAULT_WEB_BROWSER_COMMAND, new String[0]);
-    }
-
-    /**
-     * @param webAppRoot
-     *            the directory containing the web application to be tested.
-     */
-    protected AbstractIntegrationTestSuite(String webAppRoot)
-    {
-        this(webAppRoot, DEFAULT_WEB_BROWSER_COMMAND);
-    }
-
-    /**
-     * @param webAppRoot
-     *            web application root (default src/main/webapp)
-     * @param browserCommand
-     *            browser command to pass to selenium. Default is *firefox, syntax for custom
-     *            browsers is
-     *            *custom &lt;path_to_browser&gt;, e.g. *custom /usr/lib/mozilla-firefox/firefox
-     * @param virtualHosts
-     *            an array with virtual hosts
-     */
-    protected AbstractIntegrationTestSuite(String webAppRoot, String browserCommand,
-            String... virtualHosts)
-    {
-        webappRoot = webAppRoot;
-        seleniumBrowserCommand = browserCommand;
-        this.virtualHosts = virtualHosts;
-    }
-
-    protected final void assertSourcePresent(String... expected)
-    {
-        String source = selenium.getHtmlSource();
-
-        for (String snippet : expected)
-        {
-            if (source.contains(snippet))
-                continue;
-
-            System.err.printf("Source content '%s' not found in:\n%s\n\n", snippet, source);
-
-            throw new AssertionError("Page did not contain source '" + snippet + "'.");
-        }
-    }
-
-    /**
-     * Used when the locator identifies an attribute, not an element.
-     * 
-     * @param locator
-     *            identifies the attribute whose value is to be asserted
-     * @param expected
-     *            expected value for the attribute
-     */
-    protected final void assertAttribute(String locator, String expected)
-    {
-        String actual = null;
-
-        try
-        {
-            actual = getAttribute(locator);
-        }
-        catch (RuntimeException ex)
-        {
-            System.err.printf("Error accessing %s: %s, in:\n\n%s\n\n", locator, ex.getMessage(),
-                    selenium.getHtmlSource());
-
-            throw ex;
-        }
-
-        if (actual.equals(expected))
-            return;
-
-        System.err.printf("Text for attribute %s should be '%s' but is '%s', in:\n\n%s\n\n",
-                locator, expected, actual, getHtmlSource());
-
-        throw new AssertionError(String.format("%s was '%s' not '%s'", locator, actual, expected));
-    }
-
-    /**
-     * Asserts the text of an element, identified by the locator.
-     * 
-     * @param locator
-     *            identifies the element whose text value is to be asserted
-     * @param expected
-     *            expected value for the element's text
-     */
-    protected final void assertText(String locator, String expected)
-    {
-        String actual = null;
-
-        try
-        {
-            actual = getText(locator);
-        }
-        catch (RuntimeException ex)
-        {
-            System.err.printf("Error accessing %s: %s, in:\n\n%s\n\n", locator, ex.getMessage(),
-                    selenium.getHtmlSource());
-
-            throw ex;
-        }
-
-        if (actual.equals(expected))
-            return;
-
-        System.err.printf("Text for %s should be '%s' but is '%s', in:\n\n%s\n\n", locator,
-                expected, actual, getHtmlSource());
-
-        throw new AssertionError(String.format("%s was '%s' not '%s'", locator, actual, expected));
-    }
-
-    protected final void assertTextPresent(String... text)
-    {
-        for (String item : text)
-        {
-            if (isTextPresent(item))
-                continue;
-
-            System.err.printf("Text pattern '%s' not found in:\n%s\n\n", item, selenium
-                    .getHtmlSource());
-
-            throw new AssertionError("Page did not contain '" + item + "'.");
-        }
-    }
-
-    protected final void assertFieldValue(String locator, String expected)
-    {
-        try
-        {
-            assertEquals(getValue(locator), expected);
-        }
-        catch (AssertionError ex)
-        {
-            System.err.printf("%s:\n%s\n\n", ex.getMessage(), selenium.getHtmlSource());
-
-            throw ex;
-        }
-    }
-
-    protected final void clickAndWait(String link)
-    {
-        click(link);
-        waitForPageToLoad(PAGE_LOAD_TIMEOUT);
-    }
-
-    protected final void assertTextSeries(String idFormat, int startIndex, String... values)
-    {
-        for (int i = 0; i < values.length; i++)
-        {
-            String id = String.format(idFormat, startIndex + i);
-
-            assertText(id, values[i]);
-        }
-    }
-
-    protected final void assertAttributeSeries(String idFormat, int startIndex, String... values)
-    {
-        for (int i = 0; i < values.length; i++)
-        {
-            String id = String.format(idFormat, startIndex + i);
-
-            assertAttribute(id, values[i]);
-        }
-    }
-
-    protected final void assertFieldValueSeries(String idFormat, int startIndex, String... values)
-    {
-        for (int i = 0; i < values.length; i++)
-        {
-            String id = String.format(idFormat, startIndex + i);
-
-            assertFieldValue(id, values[i]);
-        }
-    }
-
-    protected void waitForCSSSelectedElementToAppear(String cssRule)
-    {
-        String condition = String.format(
-                "selenium.browserbot.getCurrentWindow().$$(\"%s\").size() > 0", cssRule);
-
-        waitForCondition(condition, PAGE_LOAD_TIMEOUT);
-
-    }
-
-    @AfterClass(alwaysRun = true)
-    public void cleanup() throws Exception
-    {
-        if (selenium != null)
-        {
-            selenium.stop();
-            selenium = null;
-        }
-
-        if (server != null)
-        {
-            server.stop();
-            server = null;
-        }
-
-        if (jettyRunner != null)
-        {
-            jettyRunner.stop();
-            jettyRunner = null;
-        }
-    }
-
-    @BeforeClass(alwaysRun = true)
-    public void setup(ITestContext testContext) throws Exception
-    {
-        jettyRunner = new JettyRunner(TapestryTestConstants.MODULE_BASE_DIR, "/", JETTY_PORT,
-                webappRoot, virtualHosts);
-
-        server = new SeleniumServer();
-
-        server.start();
-
-        CommandProcessor cp = new HttpCommandProcessor("localhost",
-                RemoteControlConfiguration.DEFAULT_PORT, seleniumBrowserCommand, BASE_URL);
-
-        ErrorReporter errorReporter = new ErrorReporterImpl(cp, testContext);
-
-        selenium = new DefaultSelenium(new ErrorReportingCommandProcessor(cp, errorReporter));
-
-        selenium.start();
-    }
-
-    public void start()
-    {
-        selenium.start();
-    }
-
-    public void stop()
-    {
-        selenium.stop();
-    }
-
-    public void click(String locator)
-    {
-        selenium.click(locator);
-    }
-
-    public void doubleClick(String locator)
-    {
-        selenium.doubleClick(locator);
-    }
-
-    public void contextMenu(String locator)
-    {
-        selenium.contextMenu(locator);
-    }
-
-    public void clickAt(String locator, String coordString)
-    {
-        selenium.clickAt(locator, coordString);
-    }
-
-    public void doubleClickAt(String locator, String coordString)
-    {
-        selenium.doubleClickAt(locator, coordString);
-    }
-
-    public void contextMenuAt(String locator, String coordString)
-    {
-        selenium.contextMenuAt(locator, coordString);
-    }
-
-    public void fireEvent(String locator, String eventName)
-    {
-        selenium.fireEvent(locator, eventName);
-    }
-
-    public void focus(String locator)
-    {
-        selenium.focus(locator);
-    }
-
-    public void keyPress(String locator, String keySequence)
-    {
-        selenium.keyPress(locator, keySequence);
-    }
-
-    public void shiftKeyDown()
-    {
-        selenium.shiftKeyDown();
-    }
-
-    public void shiftKeyUp()
-    {
-        selenium.shiftKeyUp();
-    }
-
-    public void metaKeyDown()
-    {
-        selenium.metaKeyDown();
-    }
-
-    public void metaKeyUp()
-    {
-        selenium.metaKeyUp();
-    }
-
-    public void altKeyDown()
-    {
-        selenium.altKeyDown();
-    }
-
-    public void altKeyUp()
-    {
-        selenium.altKeyUp();
-    }
-
-    public void controlKeyDown()
-    {
-        selenium.controlKeyDown();
-    }
-
-    public void controlKeyUp()
-    {
-        selenium.controlKeyUp();
-    }
-
-    public void keyDown(String locator, String keySequence)
-    {
-        selenium.keyDown(locator, keySequence);
-    }
-
-    public void keyUp(String locator, String keySequence)
-    {
-        selenium.keyUp(locator, keySequence);
-    }
-
-    public void mouseOver(String locator)
-    {
-        selenium.mouseOver(locator);
-    }
-
-    public void mouseOut(String locator)
-    {
-        selenium.mouseOut(locator);
-    }
-
-    public void mouseDown(String locator)
-    {
-        selenium.mouseDown(locator);
-    }
-
-    public void mouseDownAt(String locator, String coordString)
-    {
-        selenium.mouseDownAt(locator, coordString);
-    }
-
-    public void mouseUp(String locator)
-    {
-        selenium.mouseUp(locator);
-    }
-
-    public void mouseUpAt(String locator, String coordString)
-    {
-        selenium.mouseUpAt(locator, coordString);
-    }
-
-    public void mouseMove(String locator)
-    {
-        selenium.mouseMove(locator);
-    }
-
-    public void mouseMoveAt(String locator, String coordString)
-    {
-        selenium.mouseMoveAt(locator, coordString);
-    }
-
-    public void type(String locator, String value)
-    {
-        selenium.type(locator, value);
-    }
-
-    public void typeKeys(String locator, String value)
-    {
-        selenium.typeKeys(locator, value);
-    }
-
-    public void setSpeed(String value)
-    {
-        selenium.setSpeed(value);
-    }
-
-    public String getSpeed()
-    {
-        return selenium.getSpeed();
-    }
-
-    public void check(String locator)
-    {
-        selenium.check(locator);
-    }
-
-    public void uncheck(String locator)
-    {
-        selenium.uncheck(locator);
-    }
-
-    public void select(String selectLocator, String optionLocator)
-    {
-        selenium.select(selectLocator, optionLocator);
-    }
-
-    public void addSelection(String locator, String optionLocator)
-    {
-        selenium.addSelection(locator, optionLocator);
-    }
-
-    public void removeSelection(String locator, String optionLocator)
-    {
-        selenium.removeSelection(locator, optionLocator);
-    }
-
-    public void removeAllSelections(String locator)
-    {
-        selenium.removeAllSelections(locator);
-    }
-
-    public void submit(String formLocator)
-    {
-        selenium.submit(formLocator);
-    }
-
-    public void open(String url)
-    {
-        // open the URL but ignore the HTTP status code. Necessary if we want to check
-        // for certain contents on error pages. The behaviour changed in Selenium 1.0.2.
-        // Until then the HTTP status code was just ignored.
-        selenium.open(url, "true");
-    }
-
-    public void openWindow(String url, String windowID)
-    {
-        selenium.openWindow(url, windowID);
-    }
-
-    public void selectWindow(String windowID)
-    {
-        selenium.selectWindow(windowID);
-    }
-
-    public void selectFrame(String locator)
-    {
-        selenium.selectFrame(locator);
-    }
-
-    public boolean getWhetherThisFrameMatchFrameExpression(String currentFrameString, String target)
-    {
-        return selenium.getWhetherThisFrameMatchFrameExpression(currentFrameString, target);
-    }
-
-    public boolean getWhetherThisWindowMatchWindowExpression(String currentWindowString,
-            String target)
-    {
-        return selenium.getWhetherThisWindowMatchWindowExpression(currentWindowString, target);
-    }
-
-    /**
-     * Waits the default time for the page to load.
-     */
-    public void waitForPageToLoad()
-    {
-        waitForPageToLoad(PAGE_LOAD_TIMEOUT);
-    }
-
-    public void waitForPopUp(String windowID, String timeout)
-    {
-        selenium.waitForPopUp(windowID, timeout);
-    }
-
-    public void chooseCancelOnNextConfirmation()
-    {
-        selenium.chooseCancelOnNextConfirmation();
-    }
-
-    public void chooseOkOnNextConfirmation()
-    {
-        selenium.chooseOkOnNextConfirmation();
-    }
-
-    public void answerOnNextPrompt(String answer)
-    {
-        selenium.answerOnNextPrompt(answer);
-    }
-
-    public void goBack()
-    {
-        selenium.goBack();
-    }
-
-    public void refresh()
-    {
-        selenium.refresh();
-    }
-
-    public void close()
-    {
-        selenium.close();
-    }
-
-    public boolean isAlertPresent()
-    {
-        return selenium.isAlertPresent();
-    }
-
-    public boolean isPromptPresent()
-    {
-        return selenium.isPromptPresent();
-    }
-
-    public boolean isConfirmationPresent()
-    {
-        return selenium.isConfirmationPresent();
-    }
-
-    public String getAlert()
-    {
-        return selenium.getAlert();
-    }
-
-    public String getConfirmation()
-    {
-        return selenium.getConfirmation();
-    }
-
-    public String getPrompt()
-    {
-        return selenium.getPrompt();
-    }
-
-    public String getLocation()
-    {
-        return selenium.getLocation();
-    }
-
-    public String getTitle()
-    {
-        return selenium.getTitle();
-    }
-
-    public String getBodyText()
-    {
-        return selenium.getBodyText();
-    }
-
-    public String getValue(String locator)
-    {
-        return selenium.getValue(locator);
-    }
-
-    public String getText(String locator)
-    {
-        return selenium.getText(locator);
-    }
-
-    public void highlight(String locator)
-    {
-        selenium.highlight(locator);
-    }
-
-    public String getEval(String script)
-    {
-        return selenium.getEval(script);
-    }
-
-    public boolean isChecked(String locator)
-    {
-        return selenium.isChecked(locator);
-    }
-
-    public String getTable(String tableCellAddress)
-    {
-        return selenium.getTable(tableCellAddress);
-    }
-
-    public String[] getSelectedLabels(String selectLocator)
-    {
-        return selenium.getSelectedLabels(selectLocator);
-    }
-
-    public String getSelectedLabel(String selectLocator)
-    {
-        return selenium.getSelectedLabel(selectLocator);
-    }
-
-    public String[] getSelectedValues(String selectLocator)
-    {
-        return selenium.getSelectedValues(selectLocator);
-    }
-
-    public String getSelectedValue(String selectLocator)
-    {
-        return selenium.getSelectedValue(selectLocator);
-    }
-
-    public String[] getSelectedIndexes(String selectLocator)
-    {
-        return selenium.getSelectedIndexes(selectLocator);
-    }
-
-    public String getSelectedIndex(String selectLocator)
-    {
-        return selenium.getSelectedIndex(selectLocator);
-    }
-
-    public String[] getSelectedIds(String selectLocator)
-    {
-        return selenium.getSelectedIds(selectLocator);
-    }
-
-    public String getSelectedId(String selectLocator)
-    {
-        return selenium.getSelectedId(selectLocator);
-    }
-
-    public boolean isSomethingSelected(String selectLocator)
-    {
-        return selenium.isSomethingSelected(selectLocator);
-    }
-
-    public String[] getSelectOptions(String selectLocator)
-    {
-        return selenium.getSelectOptions(selectLocator);
-    }
-
-    public String getAttribute(String attributeLocator)
-    {
-        return selenium.getAttribute(attributeLocator);
-    }
-
-    public boolean isTextPresent(String pattern)
-    {
-        return selenium.isTextPresent(pattern);
-    }
-
-    public boolean isElementPresent(String locator)
-    {
-        return selenium.isElementPresent(locator);
-    }
-
-    public boolean isVisible(String locator)
-    {
-        return selenium.isVisible(locator);
-    }
-
-    public boolean isEditable(String locator)
-    {
-        return selenium.isEditable(locator);
-    }
-
-    public String[] getAllButtons()
-    {
-        return selenium.getAllButtons();
-    }
-
-    public String[] getAllLinks()
-    {
-        return selenium.getAllLinks();
-    }
-
-    public String[] getAllFields()
-    {
-        return selenium.getAllFields();
-    }
-
-    public String[] getAttributeFromAllWindows(String attributeName)
-    {
-        return selenium.getAttributeFromAllWindows(attributeName);
-    }
-
-    public void dragdrop(String locator, String movementsString)
-    {
-        selenium.dragdrop(locator, movementsString);
-    }
-
-    public void setMouseSpeed(String pixels)
-    {
-        selenium.setMouseSpeed(pixels);
-    }
-
-    public Number getMouseSpeed()
-    {
-        return selenium.getMouseSpeed();
-    }
-
-    public void dragAndDrop(String locator, String movementsString)
-    {
-        selenium.dragAndDrop(locator, movementsString);
-    }
-
-    public void dragAndDropToObject(String locatorOfObjectToBeDragged,
-            String locatorOfDragDestinationObject)
-    {
-        selenium.dragAndDropToObject(locatorOfObjectToBeDragged, locatorOfDragDestinationObject);
-    }
-
-    public void windowFocus()
-    {
-        selenium.windowFocus();
-    }
-
-    public void windowMaximize()
-    {
-        selenium.windowMaximize();
-    }
-
-    public String[] getAllWindowIds()
-    {
-        return selenium.getAllWindowIds();
-    }
-
-    public String[] getAllWindowNames()
-    {
-        return selenium.getAllWindowNames();
-    }
-
-    public String[] getAllWindowTitles()
-    {
-        return selenium.getAllWindowTitles();
-    }
-
-    public String getHtmlSource()
-    {
-        return selenium.getHtmlSource();
-    }
-
-    public void setCursorPosition(String locator, String position)
-    {
-        selenium.setCursorPosition(locator, position);
-    }
-
-    public Number getElementIndex(String locator)
-    {
-        return selenium.getElementIndex(locator);
-    }
-
-    public boolean isOrdered(String locator1, String locator2)
-    {
-        return selenium.isOrdered(locator1, locator2);
-    }
-
-    public Number getElementPositionLeft(String locator)
-    {
-        return selenium.getElementPositionLeft(locator);
-    }
-
-    public Number getElementPositionTop(String locator)
-    {
-        return selenium.getElementPositionTop(locator);
-    }
-
-    public Number getElementWidth(String locator)
-    {
-        return selenium.getElementWidth(locator);
-    }
-
-    public Number getElementHeight(String locator)
-    {
-        return selenium.getElementHeight(locator);
-    }
-
-    public Number getCursorPosition(String locator)
-    {
-        return selenium.getCursorPosition(locator);
-    }
-
-    public String getExpression(String expression)
-    {
-        return selenium.getExpression(expression);
-    }
-
-    public Number getXpathCount(String xpath)
-    {
-        return selenium.getXpathCount(xpath);
-    }
-
-    public void assignId(String locator, String identifier)
-    {
-        selenium.assignId(locator, identifier);
-    }
-
-    public void allowNativeXpath(String allow)
-    {
-        selenium.allowNativeXpath(allow);
-    }
-
-    public void ignoreAttributesWithoutValue(String ignore)
-    {
-        selenium.ignoreAttributesWithoutValue(ignore);
-    }
-
-    public void waitForCondition(String script, String timeout)
-    {
-        selenium.waitForCondition(script, timeout);
-    }
-
-    public void setTimeout(String timeout)
-    {
-        selenium.setTimeout(timeout);
-    }
-
-    public void waitForPageToLoad(String timeout)
-    {
-        selenium.waitForPageToLoad(timeout);
-    }
-
-    public void waitForFrameToLoad(String frameAddress, String timeout)
-    {
-        selenium.waitForFrameToLoad(frameAddress, timeout);
-    }
-
-    public String getCookie()
-    {
-        return selenium.getCookie();
-    }
-
-    public String getCookieByName(String name)
-    {
-        return selenium.getCookieByName(name);
-    }
-
-    public boolean isCookiePresent(String name)
-    {
-        return selenium.isCookiePresent(name);
-    }
-
-    public void createCookie(String nameValuePair, String optionsString)
-    {
-        selenium.createCookie(nameValuePair, optionsString);
-    }
-
-    public void deleteCookie(String name, String optionsString)
-    {
-        selenium.deleteCookie(name, optionsString);
-    }
-
-    public void deleteAllVisibleCookies()
-    {
-        selenium.deleteAllVisibleCookies();
-    }
-
-    public void setBrowserLogLevel(String logLevel)
-    {
-        selenium.setBrowserLogLevel(logLevel);
-    }
-
-    public void runScript(String script)
-    {
-        selenium.runScript(script);
-    }
-
-    public void addLocationStrategy(String strategyName, String functionDefinition)
-    {
-        selenium.addLocationStrategy(strategyName, functionDefinition);
-    }
-
-    public void setContext(String context)
-    {
-        selenium.setContext(context);
-    }
-
-    public void attachFile(String fieldLocator, String fileLocator)
-    {
-        selenium.attachFile(fieldLocator, fileLocator);
-    }
-
-    public void captureScreenshot(String filename)
-    {
-        selenium.captureScreenshot(filename);
-    }
-
-    public void shutDownSeleniumServer()
-    {
-        selenium.shutDownSeleniumServer();
-    }
-
-    public void keyDownNative(String keycode)
-    {
-        selenium.keyDownNative(keycode);
-    }
-
-    public void keyUpNative(String keycode)
-    {
-        selenium.keyUpNative(keycode);
-    }
-
-    public void keyPressNative(String keycode)
-    {
-        selenium.keyPressNative(keycode);
-    }
-
-    /**
-     * Used to start a typical test, by opening to the base URL and clicking through a series of
-     * links.
-     * <p/>
-     * Note: Selenium 1.0-beta-2 has introduced a method start(String) which is distinct from this
-     * implementation (which dates back to Tapestry 5.0 and Selenium 1.0-beta-1).
-     */
-    protected final void start(String... linkText)
-    {
-        open(BASE_URL);
-
-        for (String s : linkText)
-            clickAndWait(String.format("link=%s", s));
-    }
-
-    public String getWebappRoot()
-    {
-        return webappRoot;
-    }
-
-    public void setWebappRoot(String webappRoot)
-    {
-        this.webappRoot = webappRoot;
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void setExtensionJs(String extensionJs)
-    {
-        selenium.setExtensionJs(extensionJs);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void start(Object optionsObject)
-    {
-        selenium.start(optionsObject);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void showContextualBanner()
-    {
-        selenium.showContextualBanner();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void showContextualBanner(String className, String methodName)
-    {
-        selenium.showContextualBanner(className, methodName);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void mouseDownRight(String locator)
-    {
-        selenium.mouseDownRight(locator);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void mouseDownRightAt(String locator, String coordString)
-    {
-        selenium.mouseDownRightAt(locator, coordString);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void captureEntirePageScreenshot(String filename, String kwargs)
-    {
-        selenium.captureEntirePageScreenshot(filename, kwargs);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void rollup(String rollupName, String kwargs)
-    {
-        selenium.rollup(rollupName, kwargs);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void addScript(String scriptContent, String scriptTagId)
-    {
-        selenium.addScript(scriptContent, scriptTagId);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void removeScript(String scriptTagId)
-    {
-        selenium.removeScript(scriptTagId);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void useXpathLibrary(String libraryName)
-    {
-        selenium.useXpathLibrary(libraryName);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public String captureScreenshotToString()
-    {
-        return selenium.captureScreenshotToString();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public String captureEntirePageScreenshotToString(String kwargs)
-    {
-        return selenium.captureEntirePageScreenshotToString(kwargs);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public String retrieveLastRemoteControlLogs()
-    {
-        return selenium.retrieveLastRemoteControlLogs();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void mouseUpRight(String locator)
-    {
-        selenium.mouseUpRight(locator);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void mouseUpRightAt(String locator, String coordString)
-    {
-        selenium.mouseUpRightAt(locator, coordString);
-    }
-
-    /**
-     * This does NOT invoke {@link com.thoughtworks.selenium.Selenium#start(String)}; it invokes
-     * {@link #start(String[])}. This is necesasry due to the introduction of the start() method.
-     * 
-     * @param linkText
-     *            text of link to click
-     * @since 5.1.0.0
-     */
-    public void start(String linkText)
-    {
-        start(new String[]
-        { linkText });
-    }
-
-    /**
-     * @since 5.2.0.0
-     */
-    public void addCustomRequestHeader(String key, String value)
-    {
-        selenium.addCustomRequestHeader(key, value);
-    }
-
-    /**
-     * @since 5.2.0.0
-     */
-    public String captureNetworkTraffic(String type)
-    {
-        return selenium.captureNetworkTraffic(type);
-    }
-
-    /**
-     * @since 5.2.0.0
-     */
-    public void deselectPopUp()
-    {
-        selenium.deselectPopUp();
-    }
-
-    /**
-     * @since 5.2.0.0
-     */
-    public void selectPopUp(String windowID)
-    {
-        selenium.selectPopUp(windowID);
-    }
-
-    /**
-     * @since 5.2.0.0
-     */
-    public String getLog()
-    {
-        return selenium.getLog();
-    }
-
-    /**
-     * @since 5.2.0.0
-     */
-    public void open(String url, String ignoreResponseCode)
-    {
-        selenium.open(url, ignoreResponseCode);
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReporter.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReporter.java
deleted file mode 100644
index acf3423..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReporter.java
+++ /dev/null
@@ -1,29 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-/**
- * Responsible for writing an error report for the current test, after an assertion fails. The HTML
- * source for the page is downloaded and written to a
- * file in the TestNG output directory (in a file named after the test).
- */
-public interface ErrorReporter
-{
-    /**
-     * Writes an error report file into the TestNG output directory, based on the name of the test,
-     * containing the current page content.
-     */
-    void writeErrorReport();
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReporterImpl.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReporterImpl.java
deleted file mode 100644
index 8d19089..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReporterImpl.java
+++ /dev/null
@@ -1,92 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import java.io.File;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.lang.reflect.Method;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.testng.ITestContext;
-
-import com.thoughtworks.selenium.CommandProcessor;
-
-public class ErrorReporterImpl implements ErrorReporter
-{
-    private final CommandProcessor commandProcessor;
-
-    private final ITestContext testContext;
-
-    private int uid = 0;
-
-    private final Set<String> previousNames = new HashSet<String>();
-
-    public ErrorReporterImpl(CommandProcessor commandProcessor, ITestContext testContext)
-    {
-        this.commandProcessor = commandProcessor;
-        this.testContext = testContext;
-    }
-
-    public void writeErrorReport()
-    {
-        String htmlSource = commandProcessor.getString("getHtmlSource", new String[]
-        {});
-
-        File dir = new File(testContext.getOutputDirectory());
-
-        dir.mkdirs();
-
-        Method testMethod = (Method) testContext.getAttribute(TapestryTestConstants.CURRENT_TEST_METHOD_ATTRIBUTE);
-
-        String baseFileName = testMethod == null ? "Unknown-test" : testMethod.getDeclaringClass().getSimpleName()
-                + "." + testMethod.getName();
-
-        if (previousNames.contains(baseFileName))
-        {
-            baseFileName += "-" + uid++;
-        }
-        else
-        {
-            previousNames.add(baseFileName);
-        }
-
-        File report = new File(dir, baseFileName + "-page-content.html");
-
-        System.err.println("Writing current page's HTML source to: " + report);
-
-        try
-        {
-            FileWriter fw = new FileWriter(report);
-
-            fw.write(htmlSource);
-
-            fw.close();
-        }
-        catch (IOException ex)
-        {
-            // Ignore.
-        }
-
-        File capture = new File(dir, baseFileName + "-screen-capture.png");
-
-        System.err.println("Writing current page screenshot to: " + capture);
-
-        commandProcessor.doCommand("captureEntirePageScreenshot", new String[]
-        { capture.getAbsolutePath(), "background=white" });
-    }
-
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReportingCommandProcessor.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReportingCommandProcessor.java
deleted file mode 100644
index 08fd181..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/ErrorReportingCommandProcessor.java
+++ /dev/null
@@ -1,197 +0,0 @@
-// Copyright 2007, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import com.thoughtworks.selenium.CommandProcessor;
-
-/**
- * A wrapper around a standard command processor that adds additional exception reporting when a
- * failure occurs.
- */
-public class ErrorReportingCommandProcessor implements CommandProcessor
-{
-    private final CommandProcessor delegate;
-
-    private final ErrorReporter errorReporter;
-
-    public ErrorReportingCommandProcessor(CommandProcessor delegate, ErrorReporter errorReporter)
-    {
-        this.delegate = delegate;
-        this.errorReporter = errorReporter;
-    }
-
-    private static final String BORDER = "**********************************************************************";
-
-    private void reportError(String command, String[] args, RuntimeException ex)
-    {
-        StringBuilder builder = new StringBuilder();
-
-        builder.append(BORDER);
-        builder.append("\nSelenium failure processing command ");
-        builder.append(command);
-        builder.append("(");
-
-        for (int i = 0; i < args.length; i++)
-        {
-            if (i > 0)
-                builder.append(", ");
-            builder.append('"');
-            builder.append(args[i]);
-            builder.append('"');
-        }
-
-        builder.append("): ");
-        builder.append(ex.toString());
-
-        builder.append(BORDER);
-
-        System.err.println(builder.toString());
-
-        errorReporter.writeErrorReport();
-    }
-
-    public String doCommand(String command, String[] args)
-    {
-        try
-        {
-            return delegate.doCommand(command, args);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(command, args, ex);
-            throw ex;
-        }
-    }
-
-    public boolean getBoolean(String string, String[] strings)
-    {
-        try
-        {
-            return delegate.getBoolean(string, strings);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(string, strings, ex);
-            throw ex;
-        }
-    }
-
-    public boolean[] getBooleanArray(String string, String[] strings)
-    {
-        try
-        {
-            return delegate.getBooleanArray(string, strings);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(string, strings, ex);
-            throw ex;
-        }
-    }
-
-    public Number getNumber(String string, String[] strings)
-    {
-        try
-        {
-            return delegate.getNumber(string, strings);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(string, strings, ex);
-            throw ex;
-        }
-    }
-
-    public Number[] getNumberArray(String string, String[] strings)
-    {
-        try
-        {
-            return delegate.getNumberArray(string, strings);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(string, strings, ex);
-            throw ex;
-        }
-    }
-
-    public String getString(String string, String[] strings)
-    {
-        try
-        {
-            return delegate.getString(string, strings);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(string, strings, ex);
-            throw ex;
-        }
-    }
-
-    public String[] getStringArray(String string, String[] strings)
-    {
-        try
-        {
-            return delegate.getStringArray(string, strings);
-        }
-        catch (RuntimeException ex)
-        {
-            reportError(string, strings, ex);
-            throw ex;
-        }
-    }
-
-    public void start()
-    {
-        delegate.start();
-    }
-
-    public void stop()
-    {
-        delegate.stop();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public String getRemoteControlServerLocation()
-    {
-        return delegate.getRemoteControlServerLocation();
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void setExtensionJs(String extensionJs)
-    {
-        delegate.setExtensionJs(extensionJs);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void start(String optionsString)
-    {
-        delegate.start(optionsString);
-    }
-
-    /**
-     * @since 5.1.0.0
-     */
-    public void start(Object optionsObject)
-    {
-        delegate.start(optionsObject);
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
deleted file mode 100644
index a636d3d..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/Jetty7Runner.java
+++ /dev/null
@@ -1,118 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import java.io.File;
-
-import org.eclipse.jetty.server.Server;
-import org.eclipse.jetty.server.ssl.SslSelectChannelConnector;
-import org.eclipse.jetty.webapp.WebAppContext;
-
-/**
- * Launches an instance of Jetty7.
- */
-public class Jetty7Runner
-{
-    private final Server jettyServer;
-
-    private final String description;
-
-    private final int port;
-    
-    private final int sslPort;
-
-    public Jetty7Runner(String webappFolder, String contextPath, int port, int sslPort) throws Exception
-    {
-        this.port = port;
-        
-        this.sslPort = sslPort;
-
-        String expandedPath = expand(webappFolder);
-
-        description = String.format("<Jetty7Runner: %s:%s/%s (%s)", contextPath, port, sslPort, expandedPath);
-
-        jettyServer = new Server(port);
-
-        WebAppContext webapp = new WebAppContext();
-        webapp.setContextPath(contextPath);
-        webapp.setWar(expandedPath);
-
-        // SSL support
-        File keystoreFile = new File(TapestryTestConstants.MODULE_BASE_DIR, "src/test/conf/keystore");
-
-        if (keystoreFile.exists())
-        {
-            SslSelectChannelConnector sslConnector = new SslSelectChannelConnector();
-
-            sslConnector.setPort(sslPort);
-
-            sslConnector.setKeystore(keystoreFile.getPath());
-
-            sslConnector.setPassword("tapestry");
-
-            sslConnector.setKeyPassword("tapestry");
-
-            jettyServer.addConnector(sslConnector);
-        }
-
-        jettyServer.setHandler(webapp);
-
-        jettyServer.start();
-    }
-
-    /** Immediately shuts down the server instance. */
-    public void stop()
-    {
-        System.out.printf("Stopping Jetty instance on port %d/%d\n", port, sslPort);
-
-        try
-        {
-            // Stop immediately and not gracefully.
-            jettyServer.stop();
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException("Error stopping Jetty instance: " + ex.toString(), ex);
-        }
-
-        System.out.println("Jetty instance has stopped.");
-    }
-
-    @Override
-    public String toString()
-    {
-        return description;
-    }
-
-    /**
-     * Needed inside Maven multi-projects to expand a path relative to the module to a complete
-     * path. If the path already is absolute and points to an existing directory, it will be used
-     * unchanged.
-     * 
-     * @param moduleLocalPath
-     * @return expanded path
-     * @see TapestryTestConstants#MODULE_BASE_DIR
-     */
-    protected String expand(String moduleLocalPath)
-    {
-        File path = new File(moduleLocalPath);
-
-        // Don't expand if the path provided already exists.
-        if(path.isAbsolute() && path.isDirectory())
-            return moduleLocalPath;
-        
-        return new File(TapestryTestConstants.MODULE_BASE_DIR, moduleLocalPath).getPath();
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/JettyRunner.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/JettyRunner.java
deleted file mode 100644
index 9c1abd0..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/JettyRunner.java
+++ /dev/null
@@ -1,167 +0,0 @@
-// Copyright 2006, 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import org.mortbay.http.NCSARequestLog;
-import org.mortbay.http.SocketListener;
-import org.mortbay.http.SunJsseListener;
-import org.mortbay.jetty.Server;
-import org.mortbay.jetty.servlet.WebApplicationContext;
-
-import java.io.File;
-import static java.lang.String.format;
-
-/**
- * Used to start up an instance of the Jetty servlet container in-process, as part of an integration
- * test suite. The
- * started Jetty is reliant on the file <code>src/test/conf/webdefault.xml</code>.
- * 
- * @see AbstractIntegrationTestSuite
- * @deprecated Use {@link Jetty7Runner} instead
- */
-public class JettyRunner
-{
-    public static final String DEFAULT_CONTEXT_PATH = "/";
-
-    public static final int DEFAULT_PORT = 8080;
-
-    public static final int DEFAULT_SECURE_PORT = 8443;
-
-    private final File workingDir;
-
-    private final String contextPath;
-
-    private final int port;
-
-    private final String warPath;
-
-    private final Server jetty;
-
-    private final String[] virtualHosts;
-
-    /**
-     * Creates and starts a new instance of Jetty. This should be done from a test case setup
-     * method.
-     * 
-     * @param workingDir
-     *            current directory (used for any relative files)
-     * @param contextPath
-     *            the context path for the deployed application
-     * @param port
-     *            the port number used to access the application
-     * @param warPath
-     *            the path to the exploded web application (typically, "src/main/webapp")
-     * @param virtualHosts
-     *            an array with virtual hosts
-     */
-    public JettyRunner(File workingDir, String contextPath, int port, String warPath,
-            String... virtualHosts)
-    {
-        this.workingDir = workingDir;
-        this.contextPath = contextPath;
-        this.port = port;
-        this.warPath = warPath;
-        this.virtualHosts = virtualHosts;
-
-        jetty = createAndStart();
-    }
-
-    /**
-     * Stops the Jetty instance. This should be called from a test case tear down method.
-     */
-    public void stop()
-    {
-        System.out.printf("Stopping Jetty instance on port %d\n", port);
-
-        try
-        {
-            // Stop immediately and not gracefully.
-            jetty.stop(false);
-
-            while (jetty.isStarted())
-            {
-                Thread.sleep(100);
-            }
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException("Error stopping Jetty instance: " + ex.toString(), ex);
-        }
-
-        System.out.println("Jetty instance has stopped.");
-    }
-
-    @Override
-    public String toString()
-    {
-        return format("<JettyRunner %s:%d (%s)>", contextPath, port, warPath);
-    }
-
-    private Server createAndStart()
-    {
-        try
-        {
-
-            File warPathFile = new File(warPath);
-
-            String webappPath = warPathFile.isAbsolute() ? warPath : new File(workingDir,
-                    this.warPath).getPath();
-            String webDefaults = new File(workingDir, "src/test/conf/webdefault.xml").getPath();
-
-            File keystoreFile = new File(workingDir, "src/test/conf/keystore");
-            String keystore = keystoreFile.getPath();
-
-            System.out.printf("Starting Jetty instance on port %d (%s mapped to %s)\n", port,
-                    contextPath, webappPath);
-
-            Server server = new Server();
-
-            SocketListener socketListener = new SocketListener();
-            socketListener.setPort(port);
-            server.addListener(socketListener);
-
-            if (keystoreFile.exists())
-            {
-                SunJsseListener secureListener = new SunJsseListener();
-                secureListener.setPort(DEFAULT_SECURE_PORT);
-                secureListener.setKeystore(keystore);
-                secureListener.setPassword("tapestry");
-                secureListener.setKeyPassword("tapestry");
-
-                server.addListener(secureListener);
-            }
-
-            NCSARequestLog log = new NCSARequestLog();
-            server.setRequestLog(log);
-
-            WebApplicationContext context = server.addWebApplication(contextPath, webappPath);
-
-            for (String virtualHost : virtualHosts)
-            {
-                context.addVirtualHost(virtualHost);
-            }
-
-            context.setDefaultsDescriptor(webDefaults);
-
-            server.start();
-
-            return server;
-        }
-        catch (Exception ex)
-        {
-            throw new RuntimeException("Failure starting Jetty instance: " + ex.toString(), ex);
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/RandomDataSource.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/RandomDataSource.java
deleted file mode 100644
index 3cc930a..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/RandomDataSource.java
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import java.io.*;
-import static java.lang.String.format;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Random;
-
-/**
- * Provides access to random data that can be used when populating a test database with "reasonable" data. The majority
- * of this is access to random words from an american english dictionary, which can be strung together to form names,
- * sentences and paragraphs.
- */
-public final class RandomDataSource
-{
-    private final Random random = new Random(System.currentTimeMillis());
-
-    private final List<String> words = new ArrayList<String>();
-
-    public RandomDataSource()
-    {
-        for (int i = 0; i < 4; i++)
-            readWords("english." + i);
-
-        for (int i = 0; i < 3; i++)
-            readWords("american." + i);
-
-        System.out.printf("Dictionary contains %d words\n", words.size());
-    }
-
-    private void readWords(String name)
-    {
-        System.out.println("Reading " + name + " ...");
-
-        int count = 0;
-
-        InputStream is = getClass().getResourceAsStream(name);
-
-        if (is == null) throw new RuntimeException(format("File '%s' not found.", name));
-
-        try
-        {
-            BufferedInputStream bis = new BufferedInputStream(is);
-            InputStreamReader isr = new InputStreamReader(bis);
-            LineNumberReader r = new LineNumberReader(isr);
-
-            while (true)
-            {
-                String word = r.readLine();
-
-                if (word == null) break;
-
-                count++;
-                words.add(word);
-            }
-
-            r.close();
-        }
-        catch (IOException ex)
-        {
-            throw new RuntimeException(format("Error reading '%s': %s", name + ex.getMessage()), ex);
-        }
-
-        System.out.printf("... %d words\n", count);
-    }
-
-    public boolean maybe(int percent)
-    {
-        assert percent > 0 && percent <= 100;
-
-        return random.nextInt(100) < percent;
-    }
-
-    public int random(int min, int max)
-    {
-        assert min <= max;
-
-        return random.nextInt(max - min + 1) + min;
-    }
-
-    /**
-     * Returns a random word frm the dictionary. These words are usually all lowercase.
-     */
-    public String word()
-    {
-        int index = random.nextInt(words.size());
-
-        return words.get(index);
-    }
-
-    /**
-     * Returns a random word, capitalized. Useful when create random names.
-     */
-    public String capitalizedWord()
-    {
-        String word = word();
-
-        char[] chars = word.toCharArray();
-
-        chars[0] = Character.toUpperCase(chars[0]);
-
-        return new String(chars);
-    }
-
-    /**
-     * Returns a word that is "safe" for use in an email address.
-     */
-    public String safeWord()
-    {
-        String word = word();
-
-        int x = word.indexOf('\'');
-
-        return x < 0 ? word : word.substring(0, x);
-    }
-
-    /**
-     * Returns a random value from the list of values supplied.
-     */
-    public <T> T oneOf(T... values)
-    {
-        assert values.length > 0;
-
-        int index = random.nextInt(values.length);
-
-        return values[index];
-    }
-
-    /**
-     * Returns a random enum value, given the enum type.
-     */
-    public <T extends Enum> T oneOf(Class<T> enumClass)
-    {
-        return oneOf(enumClass.getEnumConstants());
-    }
-
-    /**
-     * Creates a space-separated list of random words. If in sentence form, then the first word is capitalized, and a
-     * period is appended.
-     *
-     * @param minWords   minimun number of words in the list
-     * @param maxWords   maximum number of words in the list
-     * @param asSentence if true, the output is "dressed up" as a non-sensical sentence
-     * @return the word list / sentence
-     */
-    public String wordList(int minWords, int maxWords, boolean asSentence)
-    {
-        assert minWords <= maxWords;
-        assert minWords > 0;
-
-        StringBuilder builder = new StringBuilder();
-
-        int count = random(minWords, maxWords);
-
-        for (int i = 0; i < count; i++)
-        {
-
-            if (i > 0) builder.append(' ');
-
-            if (i == 0 && asSentence)
-                builder.append(capitalizedWord());
-            else
-                builder.append(word());
-        }
-
-        if (asSentence) builder.append('.');
-
-        return builder.toString();
-    }
-
-    /**
-     * Strings together a random number of word lists (in sentence form) to create something that looks like a
-     * paragraph.
-     *
-     * @param minSentences per paragraph
-     * @param maxSentences per paragraph
-     * @param minWords     per sentence
-     * @param maxWords     per sentence
-     * @return the random paragraph
-     */
-    public String paragraph(int minSentences, int maxSentences, int minWords, int maxWords)
-    {
-        assert minSentences < maxSentences;
-        assert minSentences > 0;
-
-        int count = random(minSentences, maxSentences);
-
-        StringBuilder builder = new StringBuilder();
-
-        for (int i = 0; i < count; i++)
-        {
-            if (i > 0) builder.append(' ');
-
-            builder.append(wordList(minWords, maxWords, true));
-        }
-
-        return builder.toString();
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java
deleted file mode 100644
index b84b9bf..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumLauncher.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import org.testng.ITestContext;
-import org.testng.annotations.BeforeTest;
-
-/**
- * This class is no longer necessary (as part of the TAP5-1315 fix) and the reference to it inside testng.xml
- * may be removed.
- * 
- * @since 5.2.0
- * @deprecated To be removed in Tapestry 5.3.
- */
-@Deprecated
-public class SeleniumLauncher
-{
-    @BeforeTest(dependsOnGroups =
-    { "beforeStartup" })
-    public void startup() throws Exception
-    {
-        System.err.println("***\n*** Class org.apache.tapestry5.test.SeleniumLauncher is not longer used, and may be\n"
-                + "*** removed from testng.xml.\n***");
-    }
-
-    /**
-     * Invoked from {@link #startup(String, String, int, String, ITestContext)} to launch the web
-     * server to be
-     * tested. The return value is a Runnable that will shut down the launched server at the end of
-     * the test (it is coded this way so that the default Jetty web server can be more easily
-     * replaced).
-     * 
-     * @param webAppFolder
-     *            path to the web application context
-     * @param contextPath
-     *            the path the context is mapped to, usually the empty string
-     * @param port
-     *            the port number the server should handle
-     * @param sslPort
-     *            the port number on which the server should handle secure requests
-     * @return Runnable used to shut down the server
-     * @throws Exception
-     */
-    protected Runnable launchWebServer(String webAppFolder, String contextPath, int port, int sslPort) throws Exception
-    {
-        return null;
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java
deleted file mode 100644
index 2751504..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/SeleniumTestCase.java
+++ /dev/null
@@ -1,1229 +0,0 @@
-// Copyright 2009, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import java.io.File;
-import java.lang.reflect.Method;
-
-import org.openqa.selenium.server.RemoteControlConfiguration;
-import org.openqa.selenium.server.SeleniumServer;
-import org.testng.Assert;
-import org.testng.ITestContext;
-import org.testng.annotations.AfterClass;
-import org.testng.annotations.AfterMethod;
-import org.testng.annotations.AfterTest;
-import org.testng.annotations.BeforeClass;
-import org.testng.annotations.BeforeMethod;
-import org.testng.annotations.BeforeTest;
-import org.testng.xml.XmlTest;
-
-import com.thoughtworks.selenium.CommandProcessor;
-import com.thoughtworks.selenium.DefaultSelenium;
-import com.thoughtworks.selenium.HttpCommandProcessor;
-import com.thoughtworks.selenium.Selenium;
-
-/**
- * Base class for creating Selenium-based integration test cases. This class implements all the
- * methods of {@link Selenium} and delegates to an instance (setup once per test by
- * {@link #testStartup(String, String, int, int, String, ITestContext, XmlTest)}.
- * 
- * @since 5.2.0
- */
-public class SeleniumTestCase extends Assert implements Selenium
-{
-    /**
-     * 15 seconds
-     */
-    public static final String PAGE_LOAD_TIMEOUT = "15000";
-
-    private Selenium delegate;
-
-    private String baseURL;
-
-    private ErrorReporter errorReporter;
-
-    private ITestContext testContext;
-
-    /**
-     * Starts up the servers for the entire test (i.e., for multiple TestCases). By placing &lt;parameter&gt; elements
-     * inside the appropriate &lt;test&gt; (of your testng.xml configuration
-     * file), you can change the configuration or behavior of the servers. It is common to have two
-     * or more identical tests that differ only in terms of the <code>tapestry.browser-start-command</code> parameter,
-     * to run tests against multiple browsers.
-     * <table>
-     * <tr>
-     * <th>Parameter</th>
-     * <th>Name</th>
-     * <th>Default</th>
-     * <th>Description</th>
-     * </tr>
-     * <tr>
-     * <td>webAppFolder</td>
-     * <td>tapestry.web-app-folder</td>
-     * <td>src/main/webapp</td>
-     * <td>Location of web application context</td>
-     * </tr>
-     * <tr>
-     * <td>contextPath</td>
-     * <td>tapestry.context-path</td>
-     * <td><em>empty string</em></td>
-     * <td>Context path (defaults to root). As elsewhere, the context path should be blank, or start with a slash (but
-     * not end with one).</td>
-     * </tr>
-     * <tr>
-     * <td>port</td>
-     * <td>tapestry.port</td>
-     * <td>9090</td>
-     * <td>Port number for web server to listen to</td>
-     * </tr>
-     * <tr>
-     * <td>sslPort</td>
-     * <td>tapestry.ssl-port</td>
-     * <td>8443</td>
-     * <td>Port number for web server to listen to for secure requests</td>
-     * </tr>
-     * <tr>
-     * <td>browserStartCommand</td>
-     * <td>tapestry.browser-start-command</td>
-     * <td>*firefox</td>
-     * <td>Command string used to launch the browser, as defined by Selenium</td>
-     * </tr>
-     * </table>
-     * <p>
-     * Tests in the <em>beforeStartup</em> group will be run before the start of Selenium. This can be used to
-     * programmatically override the above parameter values. For an example see
-     * {@link org.apache.tapestry5.integration.reload.ReloadTests#beforeStartup}.
-     * <p>
-     * This method will be invoked in <em>each</em> subclass, but is set up to only startup the servers once (it checks
-     * the {@link ITestContext} to see if the necessary keys are already present).
-     * 
-     * @param testContext
-     *            Used to share objects between the launcher and the test suites
-     * @throws Exception
-     */
-    @BeforeTest(dependsOnGroups =
-    { "beforeStartup" })
-    public void testStartup(final ITestContext testContext, XmlTest xmlTest) throws Exception
-    {
-        // This is not actually necessary, because TestNG will only invoke this method once
-        // even when multiple test cases within the test extend from SeleniumTestCase. TestNG
-        // just invokes it on the "first" TestCase instance it has test methods for.
-
-        if (testContext.getAttribute(TapestryTestConstants.SHUTDOWN_ATTRIBUTE) != null)
-            return;
-
-        // If a parameter is overridden in another test method, TestNG won't pass the
-        // updated value via a parameter, but still passes the original (coming from testng.xml or the default).
-        // Seems like a TestNG bug.
-
-        // Map<String, String> testParameters = xmlTest.getParameters();
-
-        String webAppFolder = getParameter(xmlTest, TapestryTestConstants.WEB_APP_FOLDER_PARAMETER, "src/main/webapp");
-        String contextPath = getParameter(xmlTest, TapestryTestConstants.CONTEXT_PATH_PARAMETER, "");
-        int port = Integer.parseInt(getParameter(xmlTest, TapestryTestConstants.PORT_PARAMETER, "9090"));
-        int sslPort = Integer.parseInt(getParameter(xmlTest, TapestryTestConstants.SSL_PORT_PARAMETER, "8443"));
-        String browserStartCommand = getParameter(xmlTest, TapestryTestConstants.BROWSER_START_COMMAND_PARAMETER,
-                "*firefox");
-
-        final Runnable stopWebServer = launchWebServer(webAppFolder, contextPath, port, sslPort);
-
-        final SeleniumServer seleniumServer = new SeleniumServer();
-
-        File ffProfileTemplate = new File(TapestryTestConstants.MODULE_BASE_DIR, "src/test/conf/ff_profile_template");
-
-        if (ffProfileTemplate.isDirectory())
-            seleniumServer.getConfiguration().setFirefoxProfileTemplate(ffProfileTemplate);
-
-        seleniumServer.start();
-
-        String baseURL = String.format("http://localhost:%d%s/", port, contextPath);
-
-        CommandProcessor httpCommandProcessor = new HttpCommandProcessor("localhost", RemoteControlConfiguration.DEFAULT_PORT,
-                browserStartCommand, baseURL);
-
-        ErrorReporter errorReporter = new ErrorReporterImpl(httpCommandProcessor, testContext);
-
-        ErrorReportingCommandProcessor commandProcessor = new ErrorReportingCommandProcessor(httpCommandProcessor, errorReporter);
-
-        final Selenium selenium = new DefaultSelenium(commandProcessor);
-
-        selenium.start();
-
-        testContext.setAttribute(TapestryTestConstants.BASE_URL_ATTRIBUTE, baseURL);
-        testContext.setAttribute(TapestryTestConstants.SELENIUM_ATTRIBUTE, selenium);
-        testContext.setAttribute(TapestryTestConstants.ERROR_REPORTER_ATTRIBUTE, errorReporter);
-        testContext.setAttribute(TapestryTestConstants.COMMAND_PROCESSOR_ATTRIBUTE, commandProcessor);
-
-        testContext.setAttribute(TapestryTestConstants.SHUTDOWN_ATTRIBUTE, new Runnable()
-        {
-            public void run()
-            {
-                try
-                {
-                    selenium.stop();
-                    seleniumServer.stop();
-                    stopWebServer.run();
-                }
-                finally
-                {
-
-                    testContext.removeAttribute(TapestryTestConstants.BASE_URL_ATTRIBUTE);
-                    testContext.removeAttribute(TapestryTestConstants.SELENIUM_ATTRIBUTE);
-                    testContext.removeAttribute(TapestryTestConstants.ERROR_REPORTER_ATTRIBUTE);
-                    testContext.removeAttribute(TapestryTestConstants.COMMAND_PROCESSOR_ATTRIBUTE);
-                    testContext.removeAttribute(TapestryTestConstants.SHUTDOWN_ATTRIBUTE);
-                }
-            }
-        });
-    }
-
-    private final String getParameter(XmlTest xmlTest, String key, String defaultValue)
-    {
-        String value = xmlTest.getParameter(key);
-
-        return value != null ? value : defaultValue;
-    }
-
-    /**
-     * Like {@link #testStartup(String, String, int, int, String, ITestContext, XmlTest)}, this may
-     * be called multiple times against multiple instances, but only does work the first time.
-     */
-    @AfterTest
-    public void testShutdown(ITestContext context)
-    {
-        // Likewise, this method should only be invoked once.
-        Runnable r = (Runnable) context.getAttribute(TapestryTestConstants.SHUTDOWN_ATTRIBUTE);
-
-        // This test is still useful, however, because testStartup() may not have completed properly,
-        // and the runnable is the last thing it puts into the test context.
-
-        if (r != null)
-            r.run();
-    }
-
-    /**
-     * Invoked from {@link #testStartup(String, String, int, String, ITestContext)} to launch the web
-     * server to be
-     * tested. The return value is a Runnable that will shut down the launched server at the end of
-     * the test (it is coded this way so that the default Jetty web server can be more easily
-     * replaced).
-     * 
-     * @param webAppFolder
-     *            path to the web application context
-     * @param contextPath
-     *            the path the context is mapped to, usually the empty string
-     * @param port
-     *            the port number the server should handle
-     * @param sslPort
-     *            the port number on which the server should handle secure requests
-     * @return Runnable used to shut down the server
-     * @throws Exception
-     */
-    protected Runnable launchWebServer(String webAppFolder, String contextPath, int port, int sslPort) throws Exception
-    {
-        final Jetty7Runner runner = new Jetty7Runner(webAppFolder, contextPath, port, sslPort);
-
-        return new Runnable()
-        {
-            public void run()
-            {
-                runner.stop();
-            }
-        };
-    }
-
-    @BeforeClass
-    public void setup(ITestContext context)
-    {
-        this.testContext = context;
-
-        delegate = (Selenium) context.getAttribute(TapestryTestConstants.SELENIUM_ATTRIBUTE);
-        baseURL = (String) context.getAttribute(TapestryTestConstants.BASE_URL_ATTRIBUTE);
-        errorReporter = (ErrorReporter) context.getAttribute(TapestryTestConstants.ERROR_REPORTER_ATTRIBUTE);
-    }
-
-    @AfterClass
-    public void cleanup()
-    {
-        delegate = null;
-        baseURL = null;
-        errorReporter = null;
-        testContext = null;
-    }
-
-    /**
-     * Delegates to {@link ErrorReporter#writeErrorReport()} to capture the current page markup in a
-     * file for later analysis.
-     */
-    protected void writeErrorReport()
-    {
-        errorReporter.writeErrorReport();
-    }
-
-    /**
-     * Returns the base URL for the application. This is of the typically <code>http://localhost:9999/</code> (i.e., it
-     * includes a trailing slash).
-     */
-    public String getBaseURL()
-    {
-        return baseURL;
-    }
-
-    @BeforeMethod
-    public void indicateTestMethodName(Method testMethod)
-    {
-        testContext.setAttribute(TapestryTestConstants.CURRENT_TEST_METHOD_ATTRIBUTE, testMethod);
-
-        String className = testMethod.getDeclaringClass().getSimpleName();
-        String testName = testMethod.getName().replace("_", " ");
-
-        delegate.setContext(className + ": " + testName);
-    }
-
-    @AfterMethod
-    public void cleanupTestMethod()
-    {
-        testContext.setAttribute(TapestryTestConstants.CURRENT_TEST_METHOD_ATTRIBUTE, null);
-    }
-
-    // ---------------------------------------------------------------------
-    // Start of delegate methods
-    //
-    // When upgrading to a new version of Selenium, it is probably easiest
-    // to delete all these methods and use the Generate Delegate Methods
-    // refactoring.
-    // ---------------------------------------------------------------------
-
-    public void addCustomRequestHeader(String key, String value)
-    {
-        delegate.addCustomRequestHeader(key, value);
-    }
-
-    public void addLocationStrategy(String strategyName, String functionDefinition)
-    {
-        delegate.addLocationStrategy(strategyName, functionDefinition);
-    }
-
-    public void addScript(String scriptContent, String scriptTagId)
-    {
-        delegate.addScript(scriptContent, scriptTagId);
-    }
-
-    public void addSelection(String locator, String optionLocator)
-    {
-        delegate.addSelection(locator, optionLocator);
-    }
-
-    public void allowNativeXpath(String allow)
-    {
-        delegate.allowNativeXpath(allow);
-    }
-
-    public void altKeyDown()
-    {
-        delegate.altKeyDown();
-    }
-
-    public void altKeyUp()
-    {
-        delegate.altKeyUp();
-    }
-
-    public void answerOnNextPrompt(String answer)
-    {
-        delegate.answerOnNextPrompt(answer);
-    }
-
-    public void assignId(String locator, String identifier)
-    {
-        delegate.assignId(locator, identifier);
-    }
-
-    public void attachFile(String fieldLocator, String fileLocator)
-    {
-        delegate.attachFile(fieldLocator, fileLocator);
-    }
-
-    public void captureEntirePageScreenshot(String filename, String kwargs)
-    {
-        delegate.captureEntirePageScreenshot(filename, kwargs);
-    }
-
-    public String captureEntirePageScreenshotToString(String kwargs)
-    {
-        return delegate.captureEntirePageScreenshotToString(kwargs);
-    }
-
-    public String captureNetworkTraffic(String type)
-    {
-        return delegate.captureNetworkTraffic(type);
-    }
-
-    public void captureScreenshot(String filename)
-    {
-        delegate.captureScreenshot(filename);
-    }
-
-    public String captureScreenshotToString()
-    {
-        return delegate.captureScreenshotToString();
-    }
-
-    public void check(String locator)
-    {
-        delegate.check(locator);
-    }
-
-    public void chooseCancelOnNextConfirmation()
-    {
-        delegate.chooseCancelOnNextConfirmation();
-    }
-
-    public void chooseOkOnNextConfirmation()
-    {
-        delegate.chooseOkOnNextConfirmation();
-    }
-
-    public void click(String locator)
-    {
-        delegate.click(locator);
-    }
-
-    public void clickAt(String locator, String coordString)
-    {
-        delegate.clickAt(locator, coordString);
-    }
-
-    public void close()
-    {
-        delegate.close();
-    }
-
-    public void contextMenu(String locator)
-    {
-        delegate.contextMenu(locator);
-    }
-
-    public void contextMenuAt(String locator, String coordString)
-    {
-        delegate.contextMenuAt(locator, coordString);
-    }
-
-    public void controlKeyDown()
-    {
-        delegate.controlKeyDown();
-    }
-
-    public void controlKeyUp()
-    {
-        delegate.controlKeyUp();
-    }
-
-    public void createCookie(String nameValuePair, String optionsString)
-    {
-        delegate.createCookie(nameValuePair, optionsString);
-    }
-
-    public void deleteAllVisibleCookies()
-    {
-        delegate.deleteAllVisibleCookies();
-    }
-
-    public void deleteCookie(String name, String optionsString)
-    {
-        delegate.deleteCookie(name, optionsString);
-    }
-
-    public void deselectPopUp()
-    {
-        delegate.deselectPopUp();
-    }
-
-    public void doubleClick(String locator)
-    {
-        delegate.doubleClick(locator);
-    }
-
-    public void doubleClickAt(String locator, String coordString)
-    {
-        delegate.doubleClickAt(locator, coordString);
-    }
-
-    public void dragAndDrop(String locator, String movementsString)
-    {
-        delegate.dragAndDrop(locator, movementsString);
-    }
-
-    public void dragAndDropToObject(String locatorOfObjectToBeDragged, String locatorOfDragDestinationObject)
-    {
-        delegate.dragAndDropToObject(locatorOfObjectToBeDragged, locatorOfDragDestinationObject);
-    }
-
-    public void dragdrop(String locator, String movementsString)
-    {
-        delegate.dragdrop(locator, movementsString);
-    }
-
-    public void fireEvent(String locator, String eventName)
-    {
-        delegate.fireEvent(locator, eventName);
-    }
-
-    public void focus(String locator)
-    {
-        delegate.focus(locator);
-    }
-
-    public String getAlert()
-    {
-        return delegate.getAlert();
-    }
-
-    public String[] getAllButtons()
-    {
-        return delegate.getAllButtons();
-    }
-
-    public String[] getAllFields()
-    {
-        return delegate.getAllFields();
-    }
-
-    public String[] getAllLinks()
-    {
-        return delegate.getAllLinks();
-    }
-
-    public String[] getAllWindowIds()
-    {
-        return delegate.getAllWindowIds();
-    }
-
-    public String[] getAllWindowNames()
-    {
-        return delegate.getAllWindowNames();
-    }
-
-    public String[] getAllWindowTitles()
-    {
-        return delegate.getAllWindowTitles();
-    }
-
-    public String getAttribute(String attributeLocator)
-    {
-        return delegate.getAttribute(attributeLocator);
-    }
-
-    public String[] getAttributeFromAllWindows(String attributeName)
-    {
-        return delegate.getAttributeFromAllWindows(attributeName);
-    }
-
-    public String getBodyText()
-    {
-        return delegate.getBodyText();
-    }
-
-    public String getConfirmation()
-    {
-        return delegate.getConfirmation();
-    }
-
-    public String getCookie()
-    {
-        return delegate.getCookie();
-    }
-
-    public String getCookieByName(String name)
-    {
-        return delegate.getCookieByName(name);
-    }
-
-    public Number getCursorPosition(String locator)
-    {
-        return delegate.getCursorPosition(locator);
-    }
-
-    public Number getElementHeight(String locator)
-    {
-        return delegate.getElementHeight(locator);
-    }
-
-    public Number getElementIndex(String locator)
-    {
-        return delegate.getElementIndex(locator);
-    }
-
-    public Number getElementPositionLeft(String locator)
-    {
-        return delegate.getElementPositionLeft(locator);
-    }
-
-    public Number getElementPositionTop(String locator)
-    {
-        return delegate.getElementPositionTop(locator);
-    }
-
-    public Number getElementWidth(String locator)
-    {
-        return delegate.getElementWidth(locator);
-    }
-
-    public String getEval(String script)
-    {
-        return delegate.getEval(script);
-    }
-
-    public String getExpression(String expression)
-    {
-        return delegate.getExpression(expression);
-    }
-
-    public String getHtmlSource()
-    {
-        return delegate.getHtmlSource();
-    }
-
-    public String getLocation()
-    {
-        return delegate.getLocation();
-    }
-
-    public String getLog()
-    {
-        return delegate.getLog();
-    }
-
-    public Number getMouseSpeed()
-    {
-        return delegate.getMouseSpeed();
-    }
-
-    public String getPrompt()
-    {
-        return delegate.getPrompt();
-    }
-
-    public String getSelectedId(String selectLocator)
-    {
-        return delegate.getSelectedId(selectLocator);
-    }
-
-    public String[] getSelectedIds(String selectLocator)
-    {
-        return delegate.getSelectedIds(selectLocator);
-    }
-
-    public String getSelectedIndex(String selectLocator)
-    {
-        return delegate.getSelectedIndex(selectLocator);
-    }
-
-    public String[] getSelectedIndexes(String selectLocator)
-    {
-        return delegate.getSelectedIndexes(selectLocator);
-    }
-
-    public String getSelectedLabel(String selectLocator)
-    {
-        return delegate.getSelectedLabel(selectLocator);
-    }
-
-    public String[] getSelectedLabels(String selectLocator)
-    {
-        return delegate.getSelectedLabels(selectLocator);
-    }
-
-    public String getSelectedValue(String selectLocator)
-    {
-        return delegate.getSelectedValue(selectLocator);
-    }
-
-    public String[] getSelectedValues(String selectLocator)
-    {
-        return delegate.getSelectedValues(selectLocator);
-    }
-
-    public String[] getSelectOptions(String selectLocator)
-    {
-        return delegate.getSelectOptions(selectLocator);
-    }
-
-    public String getSpeed()
-    {
-        return delegate.getSpeed();
-    }
-
-    public String getTable(String tableCellAddress)
-    {
-        return delegate.getTable(tableCellAddress);
-    }
-
-    public String getText(String locator)
-    {
-        return delegate.getText(locator);
-    }
-
-    public String getTitle()
-    {
-        return delegate.getTitle();
-    }
-
-    public String getValue(String locator)
-    {
-        return delegate.getValue(locator);
-    }
-
-    public boolean getWhetherThisFrameMatchFrameExpression(String currentFrameString, String target)
-    {
-        return delegate.getWhetherThisFrameMatchFrameExpression(currentFrameString, target);
-    }
-
-    public boolean getWhetherThisWindowMatchWindowExpression(String currentWindowString, String target)
-    {
-        return delegate.getWhetherThisWindowMatchWindowExpression(currentWindowString, target);
-    }
-
-    public Number getXpathCount(String xpath)
-    {
-        return delegate.getXpathCount(xpath);
-    }
-
-    public void goBack()
-    {
-        delegate.goBack();
-    }
-
-    public void highlight(String locator)
-    {
-        delegate.highlight(locator);
-    }
-
-    public void ignoreAttributesWithoutValue(String ignore)
-    {
-        delegate.ignoreAttributesWithoutValue(ignore);
-    }
-
-    public boolean isAlertPresent()
-    {
-        return delegate.isAlertPresent();
-    }
-
-    public boolean isChecked(String locator)
-    {
-        return delegate.isChecked(locator);
-    }
-
-    public boolean isConfirmationPresent()
-    {
-        return delegate.isConfirmationPresent();
-    }
-
-    public boolean isCookiePresent(String name)
-    {
-        return delegate.isCookiePresent(name);
-    }
-
-    public boolean isEditable(String locator)
-    {
-        return delegate.isEditable(locator);
-    }
-
-    public boolean isElementPresent(String locator)
-    {
-        return delegate.isElementPresent(locator);
-    }
-
-    public boolean isOrdered(String locator1, String locator2)
-    {
-        return delegate.isOrdered(locator1, locator2);
-    }
-
-    public boolean isPromptPresent()
-    {
-        return delegate.isPromptPresent();
-    }
-
-    public boolean isSomethingSelected(String selectLocator)
-    {
-        return delegate.isSomethingSelected(selectLocator);
-    }
-
-    public boolean isTextPresent(String pattern)
-    {
-        return delegate.isTextPresent(pattern);
-    }
-
-    public boolean isVisible(String locator)
-    {
-        return delegate.isVisible(locator);
-    }
-
-    public void keyDown(String locator, String keySequence)
-    {
-        delegate.keyDown(locator, keySequence);
-    }
-
-    public void keyDownNative(String keycode)
-    {
-        delegate.keyDownNative(keycode);
-    }
-
-    public void keyPress(String locator, String keySequence)
-    {
-        delegate.keyPress(locator, keySequence);
-    }
-
-    public void keyPressNative(String keycode)
-    {
-        delegate.keyPressNative(keycode);
-    }
-
-    public void keyUp(String locator, String keySequence)
-    {
-        delegate.keyUp(locator, keySequence);
-    }
-
-    public void keyUpNative(String keycode)
-    {
-        delegate.keyUpNative(keycode);
-    }
-
-    public void metaKeyDown()
-    {
-        delegate.metaKeyDown();
-    }
-
-    public void metaKeyUp()
-    {
-        delegate.metaKeyUp();
-    }
-
-    public void mouseDown(String locator)
-    {
-        delegate.mouseDown(locator);
-    }
-
-    public void mouseDownAt(String locator, String coordString)
-    {
-        delegate.mouseDownAt(locator, coordString);
-    }
-
-    public void mouseDownRight(String locator)
-    {
-        delegate.mouseDownRight(locator);
-    }
-
-    public void mouseDownRightAt(String locator, String coordString)
-    {
-        delegate.mouseDownRightAt(locator, coordString);
-    }
-
-    public void mouseMove(String locator)
-    {
-        delegate.mouseMove(locator);
-    }
-
-    public void mouseMoveAt(String locator, String coordString)
-    {
-        delegate.mouseMoveAt(locator, coordString);
-    }
-
-    public void mouseOut(String locator)
-    {
-        delegate.mouseOut(locator);
-    }
-
-    public void mouseOver(String locator)
-    {
-        delegate.mouseOver(locator);
-    }
-
-    public void mouseUp(String locator)
-    {
-        delegate.mouseUp(locator);
-    }
-
-    public void mouseUpAt(String locator, String coordString)
-    {
-        delegate.mouseUpAt(locator, coordString);
-    }
-
-    public void mouseUpRight(String locator)
-    {
-        delegate.mouseUpRight(locator);
-    }
-
-    public void mouseUpRightAt(String locator, String coordString)
-    {
-        delegate.mouseUpRightAt(locator, coordString);
-    }
-
-    public void open(String url)
-    {
-        delegate.open(url);
-    }
-
-    public void open(String url, String ignoreResponseCode)
-    {
-        delegate.open(url, ignoreResponseCode);
-    }
-
-    public void openWindow(String url, String windowID)
-    {
-        delegate.openWindow(url, windowID);
-    }
-
-    public void refresh()
-    {
-        delegate.refresh();
-    }
-
-    public void removeAllSelections(String locator)
-    {
-        delegate.removeAllSelections(locator);
-    }
-
-    public void removeScript(String scriptTagId)
-    {
-        delegate.removeScript(scriptTagId);
-    }
-
-    public void removeSelection(String locator, String optionLocator)
-    {
-        delegate.removeSelection(locator, optionLocator);
-    }
-
-    public String retrieveLastRemoteControlLogs()
-    {
-        return delegate.retrieveLastRemoteControlLogs();
-    }
-
-    public void rollup(String rollupName, String kwargs)
-    {
-        delegate.rollup(rollupName, kwargs);
-    }
-
-    public void runScript(String script)
-    {
-        delegate.runScript(script);
-    }
-
-    public void select(String selectLocator, String optionLocator)
-    {
-        delegate.select(selectLocator, optionLocator);
-    }
-
-    public void selectFrame(String locator)
-    {
-        delegate.selectFrame(locator);
-    }
-
-    public void selectPopUp(String windowID)
-    {
-        delegate.selectPopUp(windowID);
-    }
-
-    public void selectWindow(String windowID)
-    {
-        delegate.selectWindow(windowID);
-    }
-
-    public void setBrowserLogLevel(String logLevel)
-    {
-        delegate.setBrowserLogLevel(logLevel);
-    }
-
-    public void setContext(String context)
-    {
-        delegate.setContext(context);
-    }
-
-    public void setCursorPosition(String locator, String position)
-    {
-        delegate.setCursorPosition(locator, position);
-    }
-
-    public void setExtensionJs(String extensionJs)
-    {
-        delegate.setExtensionJs(extensionJs);
-    }
-
-    public void setMouseSpeed(String pixels)
-    {
-        delegate.setMouseSpeed(pixels);
-    }
-
-    public void setSpeed(String value)
-    {
-        delegate.setSpeed(value);
-    }
-
-    public void setTimeout(String timeout)
-    {
-        delegate.setTimeout(timeout);
-    }
-
-    public void shiftKeyDown()
-    {
-        delegate.shiftKeyDown();
-    }
-
-    public void shiftKeyUp()
-    {
-        delegate.shiftKeyUp();
-    }
-
-    public void showContextualBanner()
-    {
-        delegate.showContextualBanner();
-    }
-
-    public void showContextualBanner(String className, String methodName)
-    {
-        delegate.showContextualBanner(className, methodName);
-    }
-
-    public void shutDownSeleniumServer()
-    {
-        delegate.shutDownSeleniumServer();
-    }
-
-    public void start()
-    {
-        delegate.start();
-    }
-
-    public void start(Object optionsObject)
-    {
-        delegate.start(optionsObject);
-    }
-
-    public void start(String optionsString)
-    {
-        delegate.start(optionsString);
-    }
-
-    public void stop()
-    {
-        delegate.stop();
-    }
-
-    public void submit(String formLocator)
-    {
-        delegate.submit(formLocator);
-    }
-
-    public void type(String locator, String value)
-    {
-        delegate.type(locator, value);
-    }
-
-    public void typeKeys(String locator, String value)
-    {
-        delegate.typeKeys(locator, value);
-    }
-
-    public void uncheck(String locator)
-    {
-        delegate.uncheck(locator);
-    }
-
-    public void useXpathLibrary(String libraryName)
-    {
-        delegate.useXpathLibrary(libraryName);
-    }
-
-    public void waitForCondition(String script, String timeout)
-    {
-        delegate.waitForCondition(script, timeout);
-    }
-
-    public void waitForFrameToLoad(String frameAddress, String timeout)
-    {
-        delegate.waitForFrameToLoad(frameAddress, timeout);
-    }
-
-    public void waitForPageToLoad(String timeout)
-    {
-        delegate.waitForPageToLoad(timeout);
-    }
-
-    public void waitForPopUp(String windowID, String timeout)
-    {
-        delegate.waitForPopUp(windowID, timeout);
-    }
-
-    public void windowFocus()
-    {
-        delegate.windowFocus();
-    }
-
-    public void windowMaximize()
-    {
-        delegate.windowMaximize();
-    }
-
-    // ---------------------------------------------------------------------
-    // End of delegate methods
-    // ---------------------------------------------------------------------
-
-    protected final void unreachable()
-    {
-        writeErrorReport();
-
-        throw new AssertionError("This statement should not be reachable.");
-    }
-
-    protected final void openBaseURL()
-    {
-        open(baseURL);
-    }
-
-    /**
-     * Asserts the text of an element, identified by the locator.
-     * 
-     * @param locator
-     *            identifies the element whose text value is to be asserted
-     * @param expected
-     *            expected value for the element's text
-     */
-    protected final void assertText(String locator, String expected)
-    {
-        String actual = null;
-
-        try
-        {
-            actual = getText(locator);
-        }
-        catch (RuntimeException ex)
-        {
-            System.err.printf("Error accessing %s: %s, in:\n\n%s\n\n", locator, ex.getMessage(), getHtmlSource());
-
-            throw ex;
-        }
-
-        if (actual.equals(expected))
-            return;
-
-        writeErrorReport();
-
-        throw new AssertionError(String.format("%s was '%s' not '%s'", locator, actual, expected));
-    }
-
-    protected final void assertTextPresent(String... text)
-    {
-        for (String item : text)
-        {
-            if (isTextPresent(item))
-                continue;
-
-            writeErrorReport();
-
-            throw new AssertionError("Page did not contain '" + item + "'.");
-        }
-    }
-
-    /**
-     * Assets that each string provided is present somewhere in the current document.
-     * 
-     * @param expected
-     *            string expected to be present
-     */
-    protected final void assertSourcePresent(String... expected)
-    {
-        String source = getHtmlSource();
-
-        for (String snippet : expected)
-        {
-            if (source.contains(snippet))
-                continue;
-
-            writeErrorReport();
-
-            throw new AssertionError("Page did not contain source '" + snippet + "'.");
-        }
-    }
-
-    /**
-     * Click a link identified by a locator, then wait for the resulting page to load.
-     * This is not useful for Ajax updates, just normal full-page refreshes.
-     * 
-     * @param locator
-     *            identifies the link to click
-     */
-    protected final void clickAndWait(String locator)
-    {
-        click(locator);
-
-        waitForPageToLoad();
-    }
-
-    /**
-     * Waits for the page to load (up to 15 seconds). This is invoked after clicking on an element
-     * that forces a full page refresh.
-     */
-    protected final void waitForPageToLoad()
-    {
-        waitForPageToLoad(PAGE_LOAD_TIMEOUT);
-    }
-
-    /**
-     * Used when the locator identifies an attribute, not an element.
-     * 
-     * @param locator
-     *            identifies the attribute whose value is to be asserted
-     * @param expected
-     *            expected value for the attribute
-     */
-    protected final void assertAttribute(String locator, String expected)
-    {
-        String actual = null;
-
-        try
-        {
-            actual = getAttribute(locator);
-        }
-        catch (RuntimeException ex)
-        {
-            System.err.printf("Error accessing %s: %s", locator, ex.getMessage());
-
-            writeErrorReport();
-
-            throw ex;
-        }
-
-        if (actual.equals(expected))
-            return;
-
-        writeErrorReport();
-
-        throw new AssertionError(String.format("%s was '%s' not '%s'", locator, actual, expected));
-    }
-
-    protected final void assertFieldValue(String locator, String expected)
-    {
-        try
-        {
-            assertEquals(getValue(locator), expected);
-        }
-        catch (AssertionError ex)
-        {
-            writeErrorReport();
-
-            throw ex;
-        }
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java b/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java
deleted file mode 100644
index 2ced1cd..0000000
--- a/maint-5-2/tapestry-test/src/main/java/org/apache/tapestry5/test/TapestryTestConstants.java
+++ /dev/null
@@ -1,117 +0,0 @@
-// Copyright 2007, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import java.io.File;
-import java.lang.reflect.Method;
-
-import org.testng.ITestContext;
-import org.testng.xml.XmlTest;
-
-import com.thoughtworks.selenium.CommandProcessor;
-import com.thoughtworks.selenium.Selenium;
-
-public class TapestryTestConstants
-{
-    /**
-     * The current working directory (i.e., property "user.dir").
-     */
-    public static final String CURRENT_DIR_PATH = System.getProperty("user.dir");
-    /**
-     * The Surefire plugin sets basedir but DOES NOT change the current working directory. When
-     * building across modules, basedir changes for each module, but user.dir does not. This value should be used when
-     * referencing local files. Outside of surefire, the "basedir" property will not be set, and the current working
-     * directory will be the default.
-     */
-    public static final String MODULE_BASE_DIR_PATH = System.getProperty("basedir", CURRENT_DIR_PATH);
-
-    /**
-     * {@link #MODULE_BASE_DIR_PATH} as a file.
-     */
-    public static final File MODULE_BASE_DIR = new File(MODULE_BASE_DIR_PATH);
-
-    /**
-     * {@link ITestContext} attribute holding an instance of {@link Selenium}.
-     * 
-     * @see SeleniumLauncher#startup(String, String, int, String, ITestContext)
-     * @since 5.2.0
-     */
-    public static final String SELENIUM_ATTRIBUTE = "tapestry.selenium";
-
-    /**
-     * {@link ITestContext} attribute holding an instance of {@link ErrorReporter}.
-     * 
-     * @see SeleniumLauncher#startup(String, String, int, String, ITestContext)
-     * @since 5.2.0
-     */
-    public static final String ERROR_REPORTER_ATTRIBUTE = "tapestry.error-reporter";
-
-    /**
-     * {@link ITestContext} attribute holding an instance of {@link ErrorReporter}, used
-     * to shutdown Selenium and the Web Server at the end of the test.
-     * 
-     * @since 5.2.2
-     */
-    public static final String SHUTDOWN_ATTRIBUTE = "tapestry.shutdown";
-
-    /**
-     * The {@link ITestContext} attribute holding an instance of {@link CommandProcessor}, with
-     * enhanced exception reporting control. This allows tests that wish to, to bypass the {@link Selenium} interface
-     * and execute commands directly on the Selenium RC server.
-     * 
-     * @since 5.2.0
-     */
-    public static final String COMMAND_PROCESSOR_ATTRIBUTE = "tapestry.command-processor";
-
-    /**
-     * {@link ITestContext} attribute holding the application's base URL.
-     * 
-     * @see SeleniumLauncher#startup(String, String, int, String, ITestContext)
-     * @since 5.2.0
-     */
-    public static final String BASE_URL_ATTRIBUTE = "tapestry.base-url";
-
-    /**
-     * {@link ITestContext} attribute updated to store the current test method
-     * (as a {@link Method} instance).
-     */
-    public static final String CURRENT_TEST_METHOD_ATTRIBUTE = "tapestry.current-test-method";
-
-    /**
-     * {@link XmlTest} parameter holding an absolute or relative path to a web app
-     * folder.
-     */
-    public static final String WEB_APP_FOLDER_PARAMETER = "tapestry.web-app-folder";
-
-    /**
-     * {@link XmlTest} parameter holding the context path.
-     */
-    public static final String CONTEXT_PATH_PARAMETER = "tapestry.context-path";
-
-    /**
-     * {@link XmlTest} parameter holding the web server port.
-     */
-    public static final String PORT_PARAMETER = "tapestry.port";
-
-    /**
-     * {@link XmlTest} parameter holding the web server ssl port.
-     */
-    public static final String SSL_PORT_PARAMETER = "tapestry.ssl-port";
-
-    /**
-     * {@link XmlTest} parameter holding the browser command to pass to Selenium.
-     */
-    public static final String BROWSER_START_COMMAND_PARAMETER = "tapestry.browser-start-command";
-}
diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.0 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.0
deleted file mode 100644
index 935ff42..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.0
+++ /dev/null
@@ -1,1835 +0,0 @@
-acclimatization

-acclimatization's

-acclimatizations

-acclimatized

-accouterment

-accouterment's

-accouterments

-acknowledgment

-acknowledgment's

-acknowledgments

-actualization

-actualization's

-actualizations

-aerosolize

-aerosolized

-agonize

-agonized

-agonizedlies

-agonizedly

-agonizer

-agonizers

-agonizes

-agonizing

-agonizingly

-airfoil

-airfoils

-airplane

-airplane's

-airplanes

-alphabetize

-alphabetized

-alphabetizer

-alphabetizers

-alphabetizes

-alphabetizing

-aluminum

-aluminum's

-aluminums

-amenorrhea

-amortize

-amortized

-amortizes

-amortizing

-amphitheater

-amphitheater's

-amphitheaters

-analog

-analog's

-analogs

-analyzable

-analyze

-analyzed

-analyzer

-analyzers

-analyzes

-analyzing

-anemia

-anemia's

-anemias

-anemic

-anemics

-anesthesia

-anesthesia's

-anesthesias

-anesthetic

-anesthetic's

-anesthetically

-anesthetics

-anesthetize

-anesthetized

-anesthetizer

-anesthetizer's

-anesthetizers

-anesthetizes

-anesthetizing

-anodize

-anodized

-anodizes

-anodizing

-antagonize

-antagonized

-antagonizer

-antagonizers

-antagonizes

-antagonizing

-apologize

-apologized

-apologizer

-apologizers

-apologizes

-apologizing

-appall

-appalls

-appareled

-appetizer

-appetizing

-appetizingly

-arbor

-arbor's

-arbored

-arbors

-archaize

-archaized

-archaizer

-archaizers

-archaizes

-archaizing

-ardor

-ardor's

-ardors

-arithmetize

-arithmetized

-arithmetizes

-armor

-armor's

-armored

-armorer

-armorer's

-armorers

-armoried

-armories

-armoring

-armors

-armory

-armory's

-atomization

-atomization's

-atomizations

-atomize

-atomized

-atomizer

-atomizers

-atomizes

-atomizing

-authorization

-authorization's

-authorizations

-authorize

-authorized

-authorizer

-authorizers

-authorizes

-authorizing

-autodialer

-axiomatization

-axiomatization's

-axiomatizations

-axiomatize

-axiomatized

-axiomatizes

-axiomatizing

-balkanize

-balkanized

-balkanizing

-baptize

-baptized

-baptizer

-baptizers

-baptizes

-baptizing

-barreled

-barreling

-bastardize

-bastardized

-bastardizes

-bastardizing

-bedeviled

-bedeviling

-behavior

-behavior's

-behavioral

-behaviorally

-behaviored

-behaviorism

-behaviorism's

-behaviorisms

-behavioristic

-behavioristics

-behaviors

-behoove

-behoove's

-behooved

-behooves

-behooving

-behooving's

-behoovingly

-behoovings

-belabor

-belabor's

-belabored

-belaboring

-belabors

-beveled

-beveling

-bevelings

-bowdlerize

-bowdlerized

-bowdlerizer

-bowdlerizes

-bowdlerizing

-brutalize

-brutalized

-brutalizes

-brutalizing

-burglarize

-burglarized

-burglarizes

-burglarizing

-busheled

-busheling

-bushelings

-caliber

-calibers

-canaled

-canaling

-canceled

-canceler

-canceling

-candor

-candor's

-candors

-cannibalize

-cannibalized

-cannibalizes

-cannibalizing

-canonicalization

-canonicalize

-canonicalized

-canonicalizes

-canonicalizing

-capitalization

-capitalization's

-capitalizations

-capitalize

-capitalized

-capitalizer

-capitalizers

-capitalizes

-capitalizing

-carbonization

-carbonization's

-carbonizations

-carbonize

-carbonized

-carbonizer

-carbonizers

-carbonizes

-carbonizing

-catalog

-catalog's

-cataloged

-cataloger

-cataloging

-catalogs

-categorization

-categorization's

-categorizations

-categorize

-categorized

-categorizer

-categorizers

-categorizes

-categorizing

-center

-center's

-centered

-centerer

-centerers

-centering

-centerings

-centerpiece

-centerpiece's

-centerpieces

-centers

-centimeter

-centimeter's

-centimeters

-centralization

-centralization's

-centralizations

-centralize

-centralized

-centralizer

-centralizers

-centralizes

-centralizing

-channeled

-channeler

-channeler's

-channelers

-channeling

-characterizable

-characterizable's

-characterizables

-characterization

-characterization's

-characterizations

-characterize

-characterized

-characterizer

-characterizers

-characterizes

-characterizing

-checkbook

-checkbook's

-checkbooks

-chiseled

-chiseler

-chiselers

-civilization

-civilization's

-civilizations

-civilize

-civilized

-civilizedness

-civilizer

-civilizers

-civilizes

-civilizing

-clamor

-clamored

-clamorer

-clamorer's

-clamorers

-clamoring

-clamors

-cognizance

-cognizant

-colonization

-colonization's

-colonizations

-colonize

-colonized

-colonizer

-colonizers

-colonizes

-colonizing

-color

-color's

-colored

-coloreds

-colorer

-colorer's

-colorers

-colorful

-colorfully

-colorfulness

-coloring

-colorings

-colorless

-colorlessly

-colorlessness

-colors

-columnize

-columnized

-columnizes

-columnizing

-compartmentalize

-compartmentalized

-compartmentalizes

-compartmentalizing

-computerize

-computerized

-computerizes

-computerizing

-conceptualization

-conceptualization's

-conceptualizations

-conceptualize

-conceptualized

-conceptualizer

-conceptualizes

-conceptualizing

-counseled

-counseling

-counselor

-counselor's

-counselors

-criticize

-criticized

-criticizer

-criticizers

-criticizes

-criticizing

-criticizinglies

-criticizingly

-crystallize

-crystallized

-crystallizer

-crystallizers

-crystallizes

-crystallizing

-customizable

-customization

-customization's

-customizations

-customize

-customized

-customizer

-customizers

-customizes

-customizing

-decentralization

-decentralization's

-decentralizations

-decentralized

-defense

-defense's

-defensed

-defenseless

-defenselessly

-defenselessness

-defenses

-defensing

-demeanor

-demeanor's

-demeanors

-demoralize

-demoralized

-demoralizer

-demoralizers

-demoralizes

-demoralizing

-demoralizingly

-dialed

-dialer

-dialers

-dialing

-dialings

-dichotomize

-dichotomized

-dichotomizes

-dichotomizing

-digitize

-digitized

-digitizer

-digitizer's

-digitizers

-digitizes

-digitizing

-dishonor

-dishonored

-dishonorer

-dishonorer's

-dishonorers

-dishonoring

-dishonors

-disorganized

-draftsman

-dueled

-dueler

-duelers

-dueling

-duelings

-economize

-economized

-economizer

-economizers

-economizes

-economizing

-editorialize

-editorialized

-editorializer

-editorializes

-editorializing

-enameled

-enameler

-enamelers

-enameling

-enamelings

-endeavor

-endeavor's

-endeavored

-endeavorer

-endeavorer's

-endeavorers

-endeavoring

-endeavors

-enroll

-enrollment

-enrollment's

-enrollments

-enrolls

-epitomize

-epitomized

-epitomizer

-epitomizers

-epitomizes

-epitomizing

-equaled

-equaling

-equalization

-equalization's

-equalizations

-equalize

-equalized

-equalizer

-equalizer's

-equalizers

-equalizes

-equalizing

-equalizings

-esthetic

-esthetic's

-esthetically

-esthetics

-eviler

-evilest

-factorization

-factorization's

-factorizations

-familiarization

-familiarization's

-familiarizations

-familiarize

-familiarized

-familiarizer

-familiarizers

-familiarizes

-familiarizing

-familiarizingly

-fantasize

-fantasized

-fantasizer

-fantasizes

-fantasizing

-favor

-favor's

-favorable

-favorable's

-favorableness

-favorables

-favorably

-favored

-favored's

-favoredly

-favoredness

-favoreds

-favorer

-favorer's

-favorers

-favoring

-favoring's

-favoringly

-favorings

-favorite

-favorite's

-favorites

-favors

-fertilization

-fertilization's

-fertilizations

-fertilize

-fertilized

-fertilizer

-fertilizers

-fertilizes

-fertilizing

-fervor

-fervor's

-fervors

-fiber

-fiber's

-fibered

-fiberglass

-fibers

-finalization

-finalizations

-finalize

-finalized

-finalizes

-finalizing

-flavor

-flavor's

-flavored

-flavorer

-flavorer's

-flavorers

-flavoring

-flavorings

-flavors

-formalization

-formalization's

-formalizations

-formalize

-formalized

-formalizer

-formalizers

-formalizes

-formalizing

-fueled

-fueler

-fuelers

-fueling

-fulfill

-fulfillment

-fulfillment's

-fulfillments

-fulfills

-funneled

-funneling

-generalization

-generalization's

-generalizations

-generalize

-generalized

-generalizer

-generalizers

-generalizes

-generalizing

-glamorize

-glamorized

-glamorizer

-glamorizers

-glamorizes

-glamorizing

-gospeler

-gospelers

-gossiped

-gossiping

-gram

-gram's

-grams

-graveled

-graveling

-groveled

-groveler

-grovelers

-groveling

-grovelingly

-harbor

-harbor's

-harbored

-harborer

-harborer's

-harborers

-harboring

-harbors

-harmonize

-harmonized

-harmonizer

-harmonizers

-harmonizes

-harmonizing

-honor

-honorable

-honorable's

-honorableness

-honorables

-honorablies

-honorably

-honored

-honorer

-honorer's

-honorers

-honoring

-honors

-hospitalize

-hospitalized

-hospitalizes

-hospitalizing

-humor

-humor's

-humored

-humorer

-humorers

-humoring

-humors

-hypothesize

-hypothesized

-hypothesizer

-hypothesizers

-hypothesizes

-hypothesizing

-idealization

-idealization's

-idealizations

-idealize

-idealized

-idealizer

-idealizers

-idealizes

-idealizing

-imperiled

-incognizance

-incognizant

-individualize

-individualized

-individualizer

-individualizers

-individualizes

-individualizing

-individualizingly

-industrialization

-industrialization's

-industrializations

-informalizes

-initialed

-initialer

-initialing

-initialization

-initialization's

-initializations

-initialize

-initialized

-initializer

-initializers

-initializes

-initializing

-institutionalize

-institutionalized

-institutionalizes

-institutionalizing

-internalization

-internalization's

-internalizations

-internalize

-internalized

-internalizes

-internalizing

-italicize

-italicized

-italicizes

-italicizing

-itemization

-itemization's

-itemizations

-itemize

-itemized

-itemizer

-itemizers

-itemizes

-itemizing

-jeopardize

-jeopardized

-jeopardizes

-jeopardizing

-jeweled

-jeweler

-jewelers

-jeweling

-journalize

-journalized

-journalizer

-journalizers

-journalizes

-journalizing

-judgment

-judgment's

-judgments

-kidnaped

-kidnaper

-kidnaper's

-kidnapers

-kidnaping

-kidnaping's

-kidnapings

-kilogram

-kilogram's

-kilograms

-kilometer

-kilometer's

-kilometers

-labeled

-labeler

-labeler's

-labelers

-labeling

-labor

-labored

-labored's

-laboredly

-laboredness

-laborer

-laborer's

-laborers

-laboring

-laboring's

-laboringly

-laborings

-labors

-laureled

-legalization

-legalization's

-legalizations

-legalize

-legalized

-legalizes

-legalizing

-leveled

-leveler

-levelers

-levelest

-leveling

-liberalize

-liberalized

-liberalizer

-liberalizers

-liberalizes

-liberalizing

-license's

-linearizable

-linearize

-linearized

-linearizes

-linearizing

-linearizion

-liter

-liters

-localization

-localization's

-localizations

-localize

-localized

-localizer

-localizers

-localizes

-localizing

-luster

-lustered

-lustering

-lusters

-magnetization

-magnetization's

-magnetizations

-maneuver

-maneuvered

-maneuverer

-maneuvering

-maneuvers

-marveled

-marveling

-marvelous

-marvelously

-marvelousness

-materialize

-materialized

-materializer

-materializers

-materializes

-materializing

-maximize

-maximized

-maximizer

-maximizers

-maximizes

-maximizing

-mechanization

-mechanization's

-mechanizations

-mechanize

-mechanized

-mechanizer

-mechanizers

-mechanizes

-mechanizing

-medaled

-medaling

-memorization

-memorization's

-memorizations

-memorize

-memorized

-memorizer

-memorizers

-memorizes

-memorizing

-metaled

-metaling

-millimeter

-millimeter's

-millimeters

-miniaturization

-miniaturizations

-miniaturize

-miniaturized

-miniaturizes

-miniaturizing

-minimization

-minimization's

-minimizations

-minimize

-minimized

-minimizer

-minimizers

-minimizes

-minimizing

-misjudgment

-misjudgment's

-misjudgments

-miter

-mitered

-miterer

-mitering

-modeled

-modeler

-modelers

-modeling

-modelings

-modernize

-modernized

-modernizer

-modernizers

-modernizes

-modernizing

-modularization

-modularize

-modularized

-modularizes

-modularizing

-motorize

-motorized

-motorizes

-motorizing

-multileveled

-mustache

-mustached

-mustaches

-nationalization

-nationalization's

-nationalizations

-nationalize

-nationalized

-nationalizer

-nationalizers

-nationalizes

-nationalizing

-naturalization

-naturalization's

-naturalizations

-neighbor

-neighbor's

-neighbored

-neighborer

-neighborer's

-neighborers

-neighborhood

-neighborhood's

-neighborhoods

-neighboring

-neighborings

-neighborliness

-neighborly

-neighbors

-neutralize

-neutralized

-neutralizer

-neutralizers

-neutralizes

-neutralizing

-nickeled

-nickeling

-normalization

-normalization's

-normalizations

-normalize

-normalized

-normalizer

-normalizers

-normalizes

-normalizing

-notarize

-notarized

-notarizes

-notarizing

-odor

-odor's

-odored

-odors

-offense

-offense's

-offenses

-optimization

-optimization's

-optimizations

-optimize

-optimized

-optimizer

-optimizer's

-optimizers

-optimizes

-optimizing

-organizable

-organizable's

-organizables

-organization

-organization's

-organizational

-organizational's

-organizationally

-organizationals

-organizations

-organize

-organized

-organizer

-organizers

-organizes

-organizing

-oxidize

-oxidized

-oxidizer

-oxidizers

-oxidizes

-oxidizing

-oxidizings

-pajama

-pajama's

-pajamaed

-pajamas

-paneled

-paneling

-panelings

-paralleled

-paralleling

-parallelization

-parallelization's

-parallelizations

-parallelize

-parallelized

-parallelizer

-parallelizers

-parallelizes

-parallelizing

-paralyze

-paralyzed

-paralyzedlies

-paralyzedly

-paralyzer

-paralyzer's

-paralyzers

-paralyzes

-paralyzing

-paralyzinglies

-paralyzingly

-parameterizable

-parameterization

-parameterization's

-parameterizations

-parameterize

-parameterized

-parameterizes

-parameterizing

-parceled

-parceling

-parenthesized

-parlor

-parlor's

-parlors

-patronize

-patronized

-patronizer

-patronizers

-patronizes

-patronizing

-patronizing's

-patronizingly

-patronizings

-penalize

-penalized

-penalizes

-penalizing

-penciled

-penciling

-pencilings

-personalization

-personalization's

-personalizations

-personalize

-personalized

-personalizes

-personalizing

-petaled

-philosophize

-philosophized

-philosophizer

-philosophizers

-philosophizes

-philosophizing

-plow

-plowed

-plower

-plowing

-plowman

-plows

-pluralization

-pluralization's

-pluralizations

-pluralize

-pluralized

-pluralizer

-pluralizers

-pluralizes

-pluralizing

-polarization

-polarization's

-polarizations

-popularization

-popularization's

-popularizations

-popularize

-popularized

-popularizer

-popularizers

-popularizes

-popularizing

-practiced

-practicer

-practicing

-preinitialize

-preinitialized

-preinitializes

-preinitializing

-pressurize

-pressurized

-pressurizer

-pressurizers

-pressurizes

-pressurizing

-pretense

-pretenses

-pretension

-pretensions

-pretensive

-prioritize

-prioritized

-prioritizer

-prioritizers

-prioritizes

-prioritizing

-prioritizings

-productize

-productized

-productizer

-productizers

-productizes

-productizing

-proselytize

-proselytized

-proselytizer

-proselytizers

-proselytizes

-proselytizing

-publicize

-publicized

-publicizes

-publicizing

-pulverize

-pulverized

-pulverizer

-pulverizers

-pulverizes

-pulverizing

-quantization

-quantization's

-quantizations

-quantize

-quantized

-quantizer

-quantizer's

-quantizers

-quantizes

-quantizing

-quarreled

-quarreler

-quarrelers

-quarreling

-queuing

-randomize

-randomized

-randomizer

-randomizes

-randomizing

-rationalize

-rationalized

-rationalizer

-rationalizers

-rationalizes

-rationalizing

-reacclimatization

-reacclimatization's

-reacclimatizations

-reacknowledgment

-reacknowledgment's

-reacknowledgments

-reactualization

-reactualization's

-reactualizations

-reanalyze

-reanalyzed

-reanalyzer

-reanalyzers

-reanalyzes

-reanalyzing

-reapologizes

-reauthorization

-reauthorization's

-reauthorizations

-reauthorizes

-rebrutalizes

-recapitalization

-recapitalization's

-recapitalizations

-recapitalized

-recapitalizes

-recarbonization

-recarbonization's

-recarbonizations

-recarbonizer

-recarbonizers

-recarbonizes

-recategorized

-recentralization

-recentralization's

-recentralizations

-recentralizes

-recivilization

-recivilization's

-recivilizations

-recivilizes

-recognizability

-recognizable

-recognizably

-recognizance

-recognize

-recognized

-recognizedlies

-recognizedly

-recognizer

-recognizers

-recognizes

-recognizing

-recognizinglies

-recognizingly

-recolonization

-recolonization's

-recolonizations

-recolonizes

-recolored

-recolors

-reconceptualizing

-recriticizes

-recrystallized

-recrystallizes

-redialed

-refavors

-refertilization

-refertilization's

-refertilizations

-refertilizes

-refueled

-refueling

-reharmonizes

-rehonors

-reinitialize

-reinitialized

-reinitializes

-reinitializing

-reitemizes

-relabeled

-relabeler

-relabelers

-relabeling

-remagnetization

-remagnetization's

-remagnetizations

-rematerializes

-rememorizes

-remodeled

-remodeling

-renormalized

-renormalizes

-reorganization

-reorganization's

-reorganizations

-reorganize

-reorganized

-reorganizer

-reorganizers

-reorganizes

-reorganizing

-reoxidizes

-repatronizes

-reprogram

-reprograms

-repulverizes

-resepulchers

-restandardization

-restandardization's

-restandardizations

-restandardizes

-resterilizes

-resymbolization

-resymbolization's

-resymbolizations

-resymbolizes

-resynchronizations

-resynchronized

-resynchronizes

-resynthesizes

-retranquilizes

-reutilization

-reutilizes

-reveled

-reveler

-revelers

-reveling

-revelings

-revisualizes

-revolutionize

-revolutionized

-revolutionizer

-revolutionizers

-revolutionizes

-revolutionizing

-rigor

-rigor's

-rigors

-rivaled

-rivaling

-ruble

-ruble's

-rubles

-rumor

-rumor's

-rumored

-rumorer

-rumorer's

-rumorers

-rumoring

-rumors

-saber

-saber's

-sabered

-sabering

-sabers

-sanitize

-sanitized

-sanitizer

-sanitizes

-sanitizing

-savior

-savior's

-saviors

-savor

-savored

-savorer

-savorer's

-savorers

-savorier

-savories

-savoriest

-savoriness

-savoring

-savoringlies

-savoringly

-savors

-savory

-savory's

-scepter

-scepter's

-sceptered

-sceptering

-scepters

-scrutinize

-scrutinized

-scrutinizer

-scrutinizers

-scrutinizes

-scrutinizing

-scrutinizinglies

-scrutinizingly

-sepulcher

-sepulcher's

-sepulchered

-sepulchers

-sequentialize

-sequentialized

-sequentializes

-sequentializing

-serialization

-serialization's

-serializations

-serialize

-serialized

-serializes

-serializing

-shoveled

-shoveler

-shovelers

-shoveling

-shriveled

-shriveling

-signaled

-signaler

-signalers

-signaling

-siphon

-siphon's

-siphoned

-siphoning

-siphons

-socialize

-socialized

-socializer

-socializes

-socializing

-specialization

-specialization's

-specializations

-specialize

-specialized

-specializer

-specializers

-specializes

-specializing

-specialties

-specialty

-specialty's

-specter

-specter's

-spectered

-specters

-spiraled

-spiraling

-splendor

-splendor's

-splendors

-squirreled

-squirreling

-stabilize

-stabilized

-stabilizer

-stabilizers

-stabilizes

-stabilizing

-standardization

-standardization's

-standardizations

-standardize

-standardized

-standardizer

-standardizers

-standardizes

-standardizing

-stenciled

-stenciler

-stencilers

-stenciling

-sterilization

-sterilization's

-sterilizations

-sterilize

-sterilized

-sterilizer

-sterilizers

-sterilizes

-sterilizing

-stylized

-subsidize

-subsidized

-subsidizer

-subsidizers

-subsidizes

-subsidizing

-succor

-succored

-succorer

-succorer's

-succorers

-succoring

-succors

-summarization

-summarization's

-summarizations

-summarize

-summarized

-summarizer

-summarizers

-summarizes

-summarizing

-symboled

-symboling

-symbolization

-symbolization's

-symbolizations

-symbolize

-symbolized

-symbolizer

-symbolizers

-symbolizes

-symbolizing

-sympathize

-sympathized

-sympathizer

-sympathizers

-sympathizes

-sympathizing

-sympathizing's

-sympathizingly

-sympathizings

-synchronization

-synchronization's

-synchronizations

-synchronize

-synchronized

-synchronizer

-synchronizers

-synchronizes

-synchronizing

-synthesize

-synthesized

-synthesizer

-synthesizers

-synthesizes

-synthesizing

-systematize

-systematized

-systematizer

-systematizers

-systematizes

-systematizing

-tantalize

-tantalized

-tantalizer

-tantalizers

-tantalizes

-tantalizing

-tantalizinglies

-tantalizingly

-tantalizingness

-tantalizingnesses

-terrorize

-terrorized

-terrorizer

-terrorizers

-terrorizes

-terrorizing

-theater

-theater's

-theaters

-theorization

-theorization's

-theorizations

-theorize

-theorized

-theorizer

-theorizers

-theorizes

-theorizing

-tire's

-titer

-titers

-totaled

-totaler

-totaler's

-totalers

-totaling

-toweled

-toweling

-towelings

-tranquilize

-tranquilized

-tranquilizer

-tranquilizer's

-tranquilizers

-tranquilizes

-tranquilizing

-tranquilizing's

-tranquilizingly

-tranquilizings

-transistorize

-transistorized

-transistorizes

-transistorizing

-traveled

-traveler

-traveler's

-travelers

-traveling

-travelings

-trivialize

-trivialized

-trivializes

-trivializing

-troweler

-trowelers

-tumor

-tumor's

-tumored

-tumors

-tunneled

-tunneler

-tunnelers

-tunneling

-tunnelings

-unacclimatized

-unamortized

-unanalyzable

-unanalyzed

-unantagonized

-unantagonizing

-unapologizing

-unappetizing

-unappetizingly

-unarmored

-unauthorized

-unauthorizedly

-unauthorizedness

-unauthorizes

-unbaptized

-unbaptizes

-unbastardized

-unbrutalized

-unbrutalizes

-uncanceled

-uncapitalized

-uncategorized

-uncharacterized

-uncivilized

-uncivilizedly

-uncivilizedness

-uncivilizes

-uncolonized

-uncolonizes

-uncolored

-uncoloredly

-uncoloredness

-uncoloreds

-uncriticized

-uncriticizing

-uncriticizingly

-uncrystallized

-undefenses

-undishonored

-undisorganized

-uneconomizing

-unendeavored

-unepitomized

-unequaled

-unequalized

-unequalizes

-unfamiliarized

-unfavorable

-unfavorable's

-unfavorableness

-unfavorables

-unfavorably

-unfavored

-unfavored's

-unfavorings

-unfavorite

-unfavorite's

-unfavorites

-unfertilized

-unflavored

-unformalized

-ungeneralized

-unharmonized

-unharmonizes

-unhonorables

-unhonorablies

-unhonorably

-unhonored

-unhumored

-unidealized

-unindividualized

-unindividualizes

-uninitialized

-unionization

-unionize

-unionized

-unionizer

-unionizers

-unionizes

-unionizing

-unitalicized

-unitemized

-unjournalized

-unlabeled

-unlabored

-unlabored's

-unlaborings

-unlegalized

-unleveled

-unleveling

-unliberalized

-unlocalized

-unlocalizes

-unmechanized

-unmechanizes

-unmemorized

-unminimized

-unmodernized

-unmodernizes

-unmotorized

-unnationalized

-unneighbored

-unneighborliness

-unneighborly

-unneutralized

-unnormalized

-unnormalizes

-unoptimized

-unoptimizes

-unorganizable

-unorganizable's

-unorganizables

-unorganized

-unorganizedly

-unorganizedness

-unoxidized

-unparalleled

-unparameterized

-unparceled

-unpatronized

-unpatronizing's

-unpenalized

-unphilosophized

-unphilosophizes

-unpopularizes

-unpracticed

-unpulverized

-unpulverizes

-unraveled

-unraveling

-unrecognizable

-unrecognized

-unrecognizing

-unrecognizingly

-unreorganized

-unrivaled

-unrumored

-unsabered

-unsavored

-unsavoredly

-unsavoredness

-unscepters

-unscrutinized

-unscrutinizing

-unscrutinizingly

-unsepulchers

-unsiphons

-unsocialized

-unspecialized

-unspecializing

-unstandardized

-unsterilized

-unsubsidized

-unsuccored

-unsummarized

-unsymbolized

-unsympathized

-unsympathizing

-unsympathizing's

-unsympathizingly

-unsympathizings

-unsynchronized

-unsynthesized

-unsystematized

-unsystematizedly

-unsystematizing

-untantalized

-unterrorized

-untranquilized

-unverbalized

-unvictimized

-unvisualized

-unwomanized

-unwomanizes

-utilization

-utilize

-utilized

-utilizer

-utilizers

-utilizes

-utilizing

-valor

-valor's

-valors

-vandalize

-vandalized

-vandalizes

-vandalizing

-vapor

-vapor's

-vapored

-vaporer

-vaporer's

-vaporers

-vaporing

-vaporing's

-vaporingly

-vaporings

-vapors

-vectorization

-vectorizing

-verbalize

-verbalized

-verbalizer

-verbalizers

-verbalizes

-verbalizing

-victimize

-victimized

-victimizer

-victimizers

-victimizes

-victimizing

-victualer

-victualers

-vigor

-vigor's

-vigors

-visualize

-visualized

-visualizer

-visualizers

-visualizes

-visualizing

-wagoner

-wagoner's

-wagoners

-weaseled

-weaseling

-womanize

-womanized

-womanizer

-womanizers

-womanizes

-womanizing

-worshiped

-worshiper

-worshiper's

-worshipers

-worshiping

diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.1 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.1
deleted file mode 100644
index eb0e6c8..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.1
+++ /dev/null
@@ -1,741 +0,0 @@
-Christianizing

-Europeanization

-Europeanization's

-Europeanizations

-Europeanized

-Sanskritize

-acclimatize

-acclimatizer

-acclimatizers

-acclimatizes

-acclimatizing

-actualize

-actualized

-actualizes

-actualizing

-aggrandizement

-aggrandizement's

-aggrandizements

-americanized

-amortization

-amortization's

-amortizations

-animized

-annualized

-asshole

-asshole's

-assholes

-balkanization

-biosynthesized

-bucketfuls

-bureaucratization

-bureaucratization's

-bureaucratizations

-caliper

-calipers

-cancelate

-cancelated

-canonized

-cauterize

-cauterized

-cauterizes

-cauterizing

-caviler

-cavilers

-centerline

-centerlines

-civilizational

-civilizational's

-civilizationals

-cognizable

-colorimeter

-colorimeter's

-colorimeters

-colorimetry

-commercialization

-commercialization's

-commercializations

-communize

-communized

-communizes

-communizing

-computerization

-conventionalized

-crystallization

-crystallization's

-crystallizations

-decentralizing

-deemphasize

-deemphasized

-deemphasizer

-deemphasizers

-deemphasizes

-deemphasizing

-deglycerolized

-dehumanize

-dehumanized

-dehumanizes

-dehumanizing

-demineralization

-demineralization's

-demineralizations

-democratization

-democratization's

-democratizations

-democratize

-democratized

-democratizer

-democratizes

-democratizing

-demoralization

-demoralization's

-demoralizations

-demythologization

-demythologize

-demythologized

-demythologizer

-demythologizes

-demythologizing

-depersonalization

-depersonalization's

-depersonalizations

-depersonalized

-deputized

-destabilize

-destabilized

-destabilizes

-destabilizing

-destigmatization

-desynchronize

-desynchronized

-desynchronizes

-desynchronizing

-detribalize

-detribalized

-detribalizes

-detribalizing

-diagonalizable

-dialyzed

-diarrhea

-diarrhea's

-diarrheal

-diarrheas

-dichotomization

-digitalization

-digitalization's

-digitalizations

-digitization

-diopter

-discolored

-discolored's

-discoloredness

-discoloreds

-discolors

-disfavor

-disfavored

-disfavorer

-disfavorer's

-disfavorers

-disfavoring

-disfavors

-disheveled

-disorganization

-disorganization's

-disorganizations

-doweling

-downdraft

-draftier

-draftiness

-draftsperson

-drafty

-dramatization

-dramatization's

-dramatizations

-dramatize

-dramatized

-dramatizer

-dramatizers

-dramatizes

-dramatizing

-duelist

-duelists

-dynamized

-edema

-edema's

-edemas

-edematous

-emphasize

-emphasized

-emphasizer

-emphasizers

-emphasizes

-emphasizing

-energized

-energizes

-enthrall

-enthralls

-epicenter

-epicenter's

-epicenters

-esthete

-esthetes

-eulogize

-eulogized

-eulogizer

-eulogizers

-eulogizes

-eulogizing

-exorcize

-exorcized

-exorcizes

-exorcizing

-extemporize

-extemporized

-extemporizer

-extemporizers

-extemporizes

-extemporizing

-externalization

-externalization's

-externalizations

-favoritism

-favoritism's

-favoritisms

-federalize

-federalized

-federalizes

-federalizing

-fetid

-fetidly

-fetidness

-fetus

-fetus's

-fetuses

-fiberboard

-fossilized

-fraternize

-fraternized

-fraternizer

-fraternizers

-fraternizes

-fraternizing

-galvanizing

-generalizable

-generalizable's

-generalizables

-germanized

-gimbaled

-glottalization

-glycerolized

-grueling

-gruelingly

-gynecological

-gynecological's

-gynecologicals

-gynecologist

-gynecologist's

-gynecologists

-harmonization

-harmonization's

-harmonizations

-homeomorph

-homeopath

-homogenization

-homogenization's

-homogenizations

-homogenize

-homogenized

-homogenizer

-homogenizers

-homogenizes

-homogenizing

-honoree

-hospitalization

-hospitalization's

-hospitalizations

-humanize

-humanized

-humanizer

-humanizers

-humanizes

-humanizing

-hydrolyzed

-hypnotized

-hypophysectomized

-idolize

-idolized

-idolizer

-idolizers

-idolizes

-idolizing

-immobilize

-immobilized

-immobilizer

-immobilizes

-immobilizing

-immortalized

-immunization

-immunization's

-immunizations

-impersonalized

-industrialized

-industrializing

-inhumanizes

-institutionalization

-institutionalization's

-institutionalizations

-internationalization

-internationalization's

-internationalizations

-internationalized

-ionize

-ionized

-ionizer

-ionizers

-ionizes

-ionizing

-ionizings

-ionizion

-ionizions

-kinesthesis

-kinesthetic

-kinesthetically

-kinesthetics

-legitimize

-legitimized

-legitimizer

-legitimizes

-legitimizing

-libeler

-libelers

-libelous

-libelously

-liberalization

-liberalization's

-liberalizations

-licensable

-lionize

-lionized

-lionizer

-lionizers

-lionizes

-lionizing

-magnetized

-maneuverability

-maneuverable

-marbleized

-marbleizing

-maximization

-maximization's

-maximizations

-memorialized

-mesmerized

-metabolized

-metalization

-metalization's

-metalizations

-metropolitanization

-milligram

-milligram's

-milligrams

-milliliter

-milliliter's

-milliliters

-mineralized

-misbehavior

-misbehavior's

-misbehaviors

-misdemeanor

-misdemeanor's

-misdemeanors

-mobilization

-mobilization's

-mobilizations

-mobilize

-mobilized

-mobilizer

-mobilizes

-mobilizing

-modernization

-modernization's

-modernizations

-monetization

-monetize

-monetized

-monetizes

-monetizing

-monopolization

-monopolization's

-monopolizations

-monopolize

-monopolized

-monopolizer

-monopolizers

-monopolizes

-monopolizing

-multicolor

-multicolor's

-multicolored

-multicolors

-narcotizes

-nasalization

-nasalization's

-nasalizations

-nasalized

-naturalized

-neutralization

-neutralization's

-neutralizations

-nominalized

-novelized

-ocher

-ocher's

-ochers

-operationalization

-operationalizations

-operationalize

-operationalized

-orthogonalization

-orthogonalized

-orthopedic

-orthopedics

-ostracized

-outmaneuver

-outmaneuvered

-outmaneuvering

-outmaneuvers

-overemphasize

-overemphasized

-overemphasizer

-overemphasizers

-overemphasizes

-overemphasizing

-palatalization

-palatalize

-palatalized

-palatalizes

-palatalizing

-palletized

-panelization

-panelized

-parenthesize

-parenthesizes

-parenthesizing

-pasteurization

-pasteurizations

-pedaled

-pedaling

-peptizing

-platinize

-platinized

-platinizes

-platinizing

-plowshare

-plowshare's

-plowshares

-polarize

-polarized

-polarizer

-polarizers

-polarizes

-polarizing

-politicized

-polymerizations

-proletarianization

-proletarianized

-pronominalization

-pronominalize

-pummeled

-pyorrhea

-pyorrhea's

-pyorrheas

-pyrolyze

-pyrolyze's

-pyrolyzer

-pyrolyzes

-radiopasteurization

-radiosterilization

-radiosterilized

-rancor

-rancor's

-rancors

-randomization

-randomization's

-randomizations

-rationalization

-rationalization's

-rationalizations

-reacclimatizes

-reactualizes

-realizabilities

-realizability

-realizability's

-reconceptualization

-recrystallization

-recrystallization's

-recrystallizations

-recrystallize

-recrystallizing

-reemphasize

-reemphasized

-reemphasizer

-reemphasizers

-reemphasizes

-reemphasizing

-regularizing

-reharmonization

-rehumanizes

-remobilization

-remobilization's

-remobilizations

-remobilizes

-remonetization

-remonetize

-remonetized

-remonetizes

-remonetizing

-repopularize

-revaporization

-revaporization's

-revaporizations

-revisualization

-revisualization's

-revisualizations

-revitalization

-revitalize

-revitalized

-revitalizer

-revitalizers

-revitalizes

-revitalizing

-ritualized

-romanticize

-romanticizes

-romanticizing

-rubberized

-satirizes

-scandalized

-scandalizing

-sectionalized

-secularization

-secularization's

-secularizations

-secularized

-sensitized

-sentimentalize

-sentimentalized

-sentimentalizer

-sentimentalizers

-sentimentalizes

-sentimentalizing

-sexualized

-signalizes

-sniveled

-sniveler

-snivelers

-sniveling

-snivelings

-socialization

-socialization's

-socializations

-stabilization

-stabilization's

-stabilizations

-stigmatization

-stigmatization's

-stigmatizations

-stigmatized

-stylization

-stylization's

-stylizations

-subcategorizing

-subsidization

-subsidization's

-subsidizations

-substerilization

-suburbanization

-suburbanization's

-suburbanizations

-suburbanized

-suburbanizing

-swiveled

-swiveling

-systematization

-systematization's

-systematizations

-systemization

-systemization's

-systemizations

-teaseled

-teaseling

-teetotaler

-temporize

-temporized

-temporizer

-temporizer's

-temporizers

-temporizes

-temporizing

-temporizing's

-temporizingly

-temporizings

-theatergoer

-theatergoer's

-theatergoers

-theatergoing

-theatergoing's

-theatergoings

-thru

-tine's

-tinseled

-tinseling

-traditionalized

-travelog

-travelog's

-travelogs

-trialization

-triangularization

-triangularizations

-tricolor

-tricolor's

-tricolored

-tricolors

-tyrannize

-tyrannized

-tyrannizer

-tyrannizers

-tyrannizes

-tyrannizing

-tyrannizing's

-tyrannizingly

-tyrannizings

-unamortization

-unamortization's

-unamortizations

-uncanonized

-uncauterized

-uncauterized's

-uncauterizeds

-undemocratizes

-underutilization

-underutilized

-undialyzed

-undialyzed's

-undialyzeds

-undiscoloreds

-undramatized

-undramatized's

-undramatizeds

-unenergized

-unenergized's

-unenergizeds

-uneulogized

-uneulogized's

-uneulogizeds

-unfossilized

-unfossilized's

-unfossilizeds

-unfraternizing

-unfraternizing's

-unfraternizings

-unhydrolyzed

-unhydrolyzed's

-unhydrolyzeds

-unidolized

-unidolized's

-unidolizeds

-unimmortalized

-unindustrialized

-unindustrialized's

-unindustrializeds

-unitized

-universalize

-universalized

-universalizer

-universalizers

-universalizes

-universalizing

-unmagnetized

-unmagnetized's

-unmagnetizeds

-unmemorialized

-unmemorialized's

-unmemorializeds

-unmesmerized

-unmineralized

-unmineralized's

-unmineralizeds

-unmobilized

-unmobilized's

-unmobilizeds

-unmonopolized

-unmonopolizes

-unnaturalized

-unpatronizing

-unpolarized

-unpolarized's

-unpolarizeds

-unsatirizes

-unsavories

-unsavoriness

-unsavory

-unsavory's

-unscandalized

-unsecularized

-unsensitized

-unsentimentalizes

-unstigmatized

-unstigmatized's

-unstigmatizeds

-untemporizings

-untrammeled

-unvocalized

-unvocalized's

-unvocalizeds

-unvulcanized

-unvulcanized's

-unvulcanizeds

-updraft

-urbanization

-urbanization's

-urbanizations

-urbanized

-vacuolization

-vacuolization's

-vacuolizations

-vaporization

-vaporization's

-vaporizations

-varicolored

-varicolored's

-varicoloreds

-velarize

-velarized

-velarizes

-velarizing

-visualization

-visualization's

-visualizations

-vocalization

-vocalization's

-vocalizations

-vocalize

-vocalized

-vocalizer

-vocalizers

-vocalizes

-vocalizing

-volatilization

-volatilization's

-volatilizations

-vulcanized

-watercolor

-watercolor's

-watercolored

-watercoloring

-watercolorist

-watercolorists

-watercolors

-yodeled

-yodeler

-yodeling

diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.2 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.2
deleted file mode 100644
index 133e19e..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/american.2
+++ /dev/null
@@ -1,6767 +0,0 @@
-Africanization

-Africanization's

-Africanizations

-Africanize

-Africanized

-Africanizes

-Africanizing

-Afrikanerization

-Afrikanerize

-Afrikanerized

-Afrikanerizes

-Afrikanerizing

-Americanization

-Americanization's

-Americanizations

-Americanize

-Americanizer

-Americanizers

-Americanizes

-Americanizing

-Anglicanize

-Anglicanizes

-Arabianize

-Arabianizes

-Arabicize

-Arabicizes

-Aryanization

-Aryanize

-Aryanized

-Aryanizes

-Aryanizing

-Asiaticization

-Asiaticization's

-Asiaticizations

-Asiaticize

-Asiaticizes

-Assyrianize

-Assyrianizes

-Australianize

-Australianizes

-Austrianize

-Austrianizes

-Babelize

-Babelizes

-Babylonize

-Babylonizes

-Balkanization

-Balkanization's

-Balkanizations

-Balkanize

-Balkanizes

-Berlinize

-Berlinizes

-Bessemerize

-Bessemerizes

-Birminghamize

-Birminghamizes

-Boswellize

-Boswellizes

-Byronize

-Byronizes

-Byzantinize

-Byzantinizes

-Caesarize

-Caesarizes

-Calvinize

-Calvinizes

-Canadianization

-Canadianization's

-Canadianizations

-Canadianize

-Canadianizes

-Caponization

-Catholicization

-Catholicized

-Catholicizing

-Celticize

-Celticizes

-Chablises

-Christianization

-Christianization's

-Christianizations

-Christianize

-Christianizer

-Christianizers

-Christianizes

-Ciceronianize

-Ciceronianizes

-Continentalize

-Continentalizes

-Corinthianize

-Corinthianizes

-Creolization

-Creolize

-Creolized

-Creolizes

-Creolizing

-Cubanize

-Cubanizes

-Czechization

-Czechization's

-Czechizations

-Danization

-Danization's

-Danizations

-Danize

-Danizes

-Darwinize

-Darwinizes

-Doricize

-Doricizes

-Edenization

-Edenization's

-Edenizations

-Edenize

-Edenizes

-Egyptianization

-Egyptianization's

-Egyptianizations

-Egyptianize

-Egyptianizes

-Egyptize

-Egyptizes

-Elizabethanize

-Elizabethanizes

-Englishize

-Englishizes

-Epicurize

-Epicurizes

-Episcopalianize

-Episcopalianizes

-Eskimoized

-Eskimoized's

-Eskimoizeds

-Essenize

-Essenizes

-Etna

-Europeanize

-Europeanizes

-Europeanizing

-Fletcherize

-Fletcherizes

-Francize

-Francizes

-Franklinization

-Franklinization's

-Franklinizations

-Frenchize

-Frenchizes

-Gaelicization

-Gaelicization's

-Gaelicizations

-Gaelicize

-Gaelicizes

-Gallicization

-Gallicize

-Gallicized

-Gallicizes

-Gallicizing

-Gothicize

-Gothicized

-Gothicizer

-Gothicizers

-Gothicizes

-Gothicizing

-Grecianize

-Grecianizes

-Greekize

-Greekizes

-Hanoverianize

-Hanoverianizes

-Hanoverize

-Hanoverizes

-Harvardize

-Harvardizes

-Harveyize

-Harveyizes

-Hattize

-Hattizes

-Hebraicize

-Hebraicizes

-Hegelianize

-Hegelianizes

-Hellenization

-Hellenizations

-Hellenize

-Hellenized

-Hellenizes

-Hellenizing

-Hispanicization

-Hispanicize

-Hispanicized

-Hispanicizes

-Hispanicizing

-Hollywoodize

-Hollywoodizes

-Hoosierize

-Hoosierizes

-Hooverize

-Hooverizes

-Iliadize

-Iliadizes

-Illuminize

-Illuminizes

-Ionicization

-Ionicization's

-Ionicizations

-Ionicize

-Ionicizes

-Iranize

-Iranizes

-Irishize

-Irishizes

-Islamization

-Islamization's

-Islamizations

-Islamize

-Islamized

-Islamizes

-Islamizing

-Israelitize

-Israelitizes

-Italianism

-Italianization

-Italianization's

-Italianizations

-Italianize

-Italianized

-Italianizer

-Italianizers

-Italianizes

-Italianizing

-Jacobinize

-Japanization

-Japanization's

-Japanizations

-Japanize

-Japanized

-Japanizes

-Japanizing

-Jesuitize

-Jesuitized

-Jesuitizes

-Jesuitizing

-Jonathanization

-Jonathanization's

-Jonathanizations

-Latinization

-Latinization's

-Latinizations

-Latinize

-Latinized

-Latinizer

-Latinizers

-Latinizes

-Latinizing

-Lilliputianize

-Lilliputianizes

-Listerize

-Listerizes

-Londonization

-Londonization's

-Londonizations

-Londonize

-Londonizes

-Lutheranize

-Lutheranizer

-Lutheranizers

-Lutheranizes

-Malayize

-Malayizes

-Manhattanize

-Manhattanizes

-Mediterraneanization

-Mediterraneanization's

-Mediterraneanizations

-Mediterraneanize

-Mediterraneanizes

-Melampus

-Mendelize

-Mendelizes

-Mexicanize

-Mexicanizes

-Midlandize

-Midlandizes

-Miltonize

-Miltonized

-Miltonizes

-Miltonizing

-Mohammedanization

-Mohammedanization's

-Mohammedanizations

-Mohammedanize

-Mohammedanized

-Mohammedanizes

-Mohammedanizing

-Molochize

-Molochizes

-Moravianized

-Moravianized's

-Moravianizeds

-Moslemize

-Moslemizes

-Napoleonize

-Napoleonizes

-Negroization

-Negroization's

-Negroizations

-Negroize

-Negroizes

-Newmanize

-Newmanizes

-Nipponize

-Nipponizes

-Normanization

-Normanization's

-Normanizations

-Normanize

-Normanized

-Normanizer

-Normanizers

-Normanizes

-Normanizing

-Occidentalization

-Occidentalization's

-Occidentalizations

-Occidentalize

-Occidentalized

-Occidentalizes

-Occidentalizing

-Olympianize

-Olympianizes

-Ottomanization

-Ottomanization's

-Ottomanizations

-Ottomanize

-Ottomanizes

-Parisianization

-Parisianization's

-Parisianizations

-Parisianize

-Parisianizes

-Pasteurizers

-Paulinize

-Paulinizes

-Paynize

-Paynizes

-Persianization

-Persianization's

-Persianizations

-Persianize

-Persianizes

-Peruvianize

-Peruvianizes

-Philistinize

-Philistinizes

-Presbyterianize

-Presbyterianizes

-Procrusteanize

-Procrusteanizes

-Protestantize

-Protestantizes

-Prussianization

-Prussianization's

-Prussianizations

-Prussianize

-Prussianized

-Prussianizer

-Prussianizers

-Prussianizes

-Prussianizing

-Pullmanize

-Pullmanizes

-Puritanize

-Puritanizer

-Puritanizers

-Puritanizes

-Pythagoreanize

-Pythagoreanizes

-Quakerization

-Quakerization's

-Quakerizations

-Quakerize

-Quakerizes

-Romania

-Romanization

-Romanization's

-Romanizations

-Romanize

-Romanized

-Romanizer

-Romanizers

-Romanizes

-Romanizing

-Russianization's

-Russianizations

-Russianized

-Russianizes

-Russianizing

-Sabbathize

-Sabbathizes

-Saxonization

-Saxonization's

-Saxonizations

-Saxonize

-Saxonizes

-Semiticize

-Semiticizes

-Semitization

-Semitization's

-Semitizations

-Semitize

-Semitizes

-Shakespearize

-Shakespearizes

-Shintoize

-Shintoizes

-Slavicize

-Slavicizes

-Slavization

-Slavization's

-Slavizations

-Slavize

-Slavizes

-Slavonicize

-Slavonicizes

-Sovietized

-Sovietizing

-Spaniardization

-Spaniardization's

-Spaniardizations

-Spaniardize

-Spaniardizes

-Spanishize

-Spanishizes

-Spartanize

-Spartanizes

-Syrianize

-Syrianizes

-Talmudization

-Talmudization's

-Talmudizations

-Talmudize

-Talmudizes

-Tammanyize

-Tammanyizes

-Taylorize

-Taylorizes

-Timonize

-Timonizes

-Toryize

-Toryizes

-Turkize

-Turkizes

-Tuscanize

-Tuscanizes

-Tylerize

-Tylerizes

-Unitarianize

-Unitarianizes

-Utopianize

-Utopianizes

-Vaticanization

-Vaticanization's

-Vaticanizations

-Vaticanize

-Vaticanizes

-Victorianize

-Victorianizes

-Vietnamization

-Vietnamize

-Vietnamized

-Vietnamizes

-Vietnamizing

-Wagnerize

-Wagnerizes

-Whitmanize

-Whitmanizes

-abnormalize

-abnormalizes

-abolitionize

-abolitionizes

-absolutization

-absolutization's

-absolutizations

-absolutize

-absolutizes

-accessorize

-acclimatizable

-acclimatizable's

-acclimatizables

-accouter

-accoutered

-accoutering

-accouters

-acculturize

-acetonization

-acetonization's

-acetonizations

-acetonize

-acetonizes

-achromatization

-achromatize

-achromatized

-achromatizes

-achromatizing

-acidize

-acidizes

-acronymize

-acronymizes

-actionize

-actionizes

-activize

-activizes

-adrenalize

-adrenalizes

-adulterize

-adulterizes

-adverbialize

-adverbializes

-aerosolization

-aestheticize

-aestheticizes

-agatize

-agatizes

-agenize

-aggrandizable

-aggrandizable's

-aggrandizables

-aggrandization

-aggrandize

-aggrandized

-aggrandizer

-aggrandizers

-aggrandizes

-aggrandizing

-agnize

-agnized

-agnizes

-agnizing

-agrarianize

-agrarianizes

-albumenization

-albumenize

-albumenized

-albumenizes

-albumenizing

-albuminization

-albuminization's

-albuminizations

-albuminize

-albuminizes

-alchemize

-alcoholizable

-alcoholizable's

-alcoholizables

-alcoholization

-alcoholization's

-alcoholizations

-alcoholize

-alcoholizes

-algebraization

-algebraization's

-algebraizations

-algebraize

-algebraizes

-alienize

-alienizes

-alkalinization

-alkalinization's

-alkalinizations

-alkalinize

-alkalinizes

-alkalization

-alkalize

-alkalized

-alkalizes

-alkalizing

-allegorization

-allegorize

-allegorized

-allegorizer

-allegorizes

-allegorizing

-alphabetization

-alphabetization's

-alphabetizations

-alternize

-alternizes

-aluminization

-aluminize

-aluminized

-aluminizes

-aluminizing

-amalgamatize

-amalgamatizes

-amalgamization

-amalgamization's

-amalgamizations

-amalgamize

-amalgamizes

-amor

-amor's

-amoralize

-amoralizes

-amorism

-amorism's

-amorisms

-amoristic

-amoristics

-amorphization

-amorphize

-amors

-amortizable

-amortizable's

-amortizables

-amortizement

-amortizement's

-amortizements

-anagrammatization

-anagrammatize

-analogism

-analogism's

-analogisms

-analogize

-analogizes

-analyzation

-anarchize

-anarchizes

-anathematization

-anathematize

-anathematized

-anathematizes

-anathematizing

-anatomize

-anemically

-anesthesiologist

-anesthesiology

-anesthetist

-anesthetization

-anesthetization's

-anesthetizations

-angelicize

-angelicizes

-angelize

-angelizes

-anglicization

-anglicization's

-anglicizations

-anglicize

-anglicized

-anglicizes

-angularization

-angularization's

-angularizations

-angularize

-angularizes

-anhydridization

-anhydridization's

-anhydridizations

-anhydridize

-anhydridizes

-animalization

-animalization's

-animalizations

-animalize

-animalized

-animalizes

-animalizing

-annalize

-annalizes

-annualization

-annualize

-annualizes

-annualizing

-anodization

-antagonization

-antagonization's

-antagonizations

-anthologization

-anthologize

-anthologized

-anthologizer

-anthologizes

-anthologizing

-anthracitization

-anthracitization's

-anthracitizations

-anthropomorphization

-anthropomorphize

-anthropomorphized

-anthropomorphizes

-anthropomorphizing

-anticatalyzer

-anticatalyzer's

-anticatalyzers

-anticentralization

-anticentralization's

-anticentralizations

-anticize

-anticizes

-antiepicenter

-antiepicenter's

-antiepicenters

-antifertilizer

-antifertilizer's

-antifertilizers

-antilabor

-antilabor's

-antilabors

-antioxidizer

-antioxidizer's

-antioxidizers

-antioxidizing

-antioxidizing's

-antioxidizings

-antipathize

-antipathizes

-antiquarianize

-antiquarianizes

-antirumor

-antirumor's

-antirumors

-antisensitize

-antisensitizer

-antisensitizer's

-antisensitizers

-antisensitizes

-antisepticize

-antisepticizes

-antiseptize

-antiseptizes

-antisiphon

-antisiphon's

-antisiphons

-antithesize

-antithesizes

-anviled

-anviling

-aphorize

-aphorized

-aphorizer

-aphorizers

-aphorizes

-aphorizing

-apostatization

-apostatize

-apostatized

-apostatizes

-apostatizing

-apostrophize

-apostrophized

-apostrophizes

-apostrophizing

-apotheosize

-appareling

-appetize

-appetized

-appetizement

-appetizement's

-appetizements

-appetizers

-appetizes

-arabization

-arabize

-arabized

-arabizes

-arabizing

-arbores

-arborization

-arborize

-arborized

-arborizes

-arborizing

-arcticize

-arcticizes

-arithmetization

-arithmetization's

-arithmetizations

-aromatization

-aromatize

-aromatized

-aromatizes

-aromatizing

-arsenicize

-arsenicizes

-arterialization

-arterialization's

-arterializations

-arterialize

-arterialized

-arterializes

-arterializing

-artificialize

-artificializes

-asafetida

-asepticize

-asepticizes

-astigmatizer

-astigmatizer's

-astigmatizers

-asynchronize

-asynchronized

-asynchronizes

-asynchronizing

-atomizability

-atomizable

-atticize

-atticizes

-attitudinization

-attitudinize

-attitudinized

-attitudinizes

-attitudinizing

-autoimmunization

-autoionization

-automatization

-automatization's

-automatizations

-automatize

-automatizes

-autotomize

-avianize

-azotization

-azotize

-azotized

-azotizes

-azotizing

-bachelorize

-bachelorizes

-baconize

-baconizes

-bacterize

-balladize

-balladizes

-balsamize

-balsamizes

-bantamize

-bantamizes

-baptizable

-baptizable's

-baptizables

-baptizement

-baptizement's

-baptizements

-barbarianize

-barbarianizes

-barbarization

-barbarize

-barbarized

-barbarizes

-barbarizing

-baronize

-baronizes

-bastardization

-bastardization's

-bastardizations

-beaverize

-beaverizes

-beclamor

-beclamored

-beclamoring

-beclamors

-becudgeled

-becudgeling

-bedlamize

-bedlamizes

-bedriveled

-bedriveling

-bejeweled

-bejeweling

-bemedaled

-bestialize

-bestialized

-bestializes

-bestializing

-beveler

-bevelers

-bichromatize

-bichromatizes

-bicolor

-bicolored

-bimetalist

-bimetalistic

-biographize

-biographizes

-biologize

-biologizes

-bipolarization

-bipolarize

-bipolarizes

-bister

-bistered

-bituminization

-bituminize

-bituminized

-bituminizes

-bituminizing

-bolshevize

-bonderize

-borize

-borizes

-botanize

-botanized

-botanizes

-botanizing

-boulevardize

-boulevardizes

-bourbonize

-bourbonizes

-bowdlerization

-boweled

-boweling

-brominize

-brominizes

-brutalization

-brutalization's

-brutalizations

-bureaucratize

-bureaucratized

-bureaucratizes

-busheler

-bushelers

-cadaverize

-cadaverizes

-cadmiumize

-cadmiumizes

-canaler

-canalers

-canalization

-canalization's

-canalizations

-canalize

-canalized

-canalizes

-canalizing

-cancelable

-cancelous

-cannibalization

-cannibalization's

-cannibalizations

-canonization

-canonization's

-canonizations

-canonize

-canonizer

-canonizers

-canonizes

-canonizing

-capitalizable

-capitalizable's

-capitalizables

-caponize

-caponized

-caponizes

-caponizing

-capsulization

-capsulize

-capsulized

-capsulizes

-capsulizing

-caracoled

-caracoling

-caramelization

-caramelization's

-caramelizations

-caramelize

-caramelized

-caramelizes

-caramelizing

-carbolization

-carbolize

-carbolized

-carbolizes

-carbolizing

-carbonatization

-carbonatization's

-carbonatizations

-carbonizable

-carbonizable's

-carbonizables

-carburization

-carburize

-carburized

-carburizes

-carburizing

-carnalize

-carnalizes

-caroled

-caroler

-carolers

-caroling

-cartelization

-cartelization's

-cartelizations

-cartelize

-cartelizes

-castorized

-castorized's

-castorizeds

-catabolize

-cataloguize

-cataloguizes

-catalyze

-catalyzer

-catalyzer's

-catalyzers

-catalyzes

-catechizable

-catechizable's

-catechizables

-catechization

-catechization's

-catechizations

-catechize

-catechized

-catechizer

-catechizers

-catechizes

-catechizing

-catheterization

-catheterization's

-catheterizations

-catheterize

-catheterizes

-catheti

-catheti's

-cathetis

-catholicize

-catholicizer

-catholicizers

-catholicizes

-causticization

-causticization's

-causticizations

-causticize

-causticizer

-causticizers

-causticizes

-cauterization

-cauterization's

-cauterizations

-cavilation

-caviled

-caviling

-cavilings

-celestialize

-celestializes

-centerable

-centerable's

-centerables

-centerboard

-centerless

-centigram

-centigram's

-centigrams

-centiliter

-centrifugalization

-centrifugalization's

-centrifugalizations

-centrifugalize

-centrifugalizes

-cephalization

-cerebralization

-cerebralization's

-cerebralizations

-cerebralize

-cerebralizes

-ceremonialize

-ceremonializes

-chameleonize

-chameleonizes

-championize

-championizes

-channelization

-channelization's

-channelizations

-channelize

-channelizes

-chattelization

-chattelization's

-chattelizations

-chattelize

-chattelizes

-cheerfulize

-cheerfulizes

-chemicalization

-chemicalization's

-chemicalizations

-chemicalize

-chemicalizes

-chiseling

-chiselings

-chloridize

-chloridizes

-chlorinize

-chlorinizes

-chloroformization

-chloroformization's

-chloroformizations

-chloroformize

-chloroformizes

-chorization

-chorization's

-chorizations

-chromatize

-chromatizes

-chromicize

-chromicizes

-chromize

-chromized

-chromizes

-chromizing

-chronologize

-chronologizes

-cinchonize

-cinematize

-circularization

-circularization's

-circularizations

-circularize

-circularized

-circularizer

-circularizers

-circularizes

-circularizing

-citizenize

-citizenizes

-civilianization

-civilianizations

-civilianize

-civilianized

-civilianizes

-civilianizing

-civilizable

-civilizable's

-civilizables

-clangor

-clangor's

-clangored

-clangoring

-clangors

-classicalize

-classicalizes

-classicization

-classicize

-classicized

-classicizes

-classicizing

-clericalize

-clericalizes

-climatize

-climatizes

-coalize

-coalizer

-coalizers

-coalizes

-cocainization

-cocainization's

-cocainizations

-cocainize

-cocainizes

-coeducationalize

-coeducationalizes

-coenamor

-coenamored

-coenamoring

-coenamors

-coequalize

-coequalizes

-cognizably

-cognize

-cognized

-cognizer

-cognizers

-cognizes

-cognizing

-collateralize

-collectivization

-collectivization's

-collectivizations

-collectivize

-collectivized

-collectivizes

-colloquialize

-colloquializes

-colonialize

-colonializes

-colonizabilities

-colonizability

-colonizability's

-colonizable

-colonizable's

-colonizables

-colonizationist

-colonizationist's

-colonizationists

-colorabilities

-colorability

-colorability's

-colorable

-colorable's

-colorableness

-colorables

-colorablies

-colorably

-colorama

-colorant

-colorants

-colorcast

-colorcaster

-colorcasters

-colorfast

-colorfastness

-colorific

-colorimetric

-colorimetrically

-colorism

-colorisms

-colorist

-colorist's

-coloristic

-coloristically

-coloristics

-colorists

-colorization

-colorization's

-colorizations

-colorize

-colorizes

-colorman

-colormap

-colormap's

-colormaps

-colormen

-columnization

-columnization's

-columnizations

-commercialize

-commercialized

-commercializes

-commercializing

-commonize

-commonizes

-communalization

-communalization's

-communalizations

-communalize

-communalized

-communalizer

-communalizers

-communalizes

-communalizing

-communization

-communization's

-communizations

-companionize

-companionizes

-compartmentalization

-compartmentalization's

-compartmentalizations

-compartmentize

-compartmentizes

-complementizer

-computerizable

-concenter

-concertize

-concertizer

-concertizers

-concertizes

-concretization

-concretizations

-concretize

-concretized

-concretizes

-concretizing

-conditionalize

-conditionalizes

-confederatize

-confederatizes

-congenialize

-congenializes

-congregationalize

-congregationalizes

-conservatize

-conservatized

-conservatizes

-conservatizing

-consonantize

-consonantizes

-constitutionalization

-constitutionalization's

-constitutionalizations

-constitutionalize

-constitutionalizes

-containerization

-containerize

-containerized

-containerizes

-containerizing

-contemporization

-contemporize

-contemporized

-contemporizes

-contemporizing

-controversialize

-controversializes

-conundrumize

-conundrumizes

-conventionalization

-conventionalization's

-conventionalizations

-conventionalize

-conventionalizes

-conventionalizing

-conventionize

-conventionizes

-conversationize

-conversationizes

-conveyorize

-conveyorized

-conveyorizes

-conveyorizing

-convivialize

-convivializes

-copolymerization

-copolymerization's

-copolymerizations

-copolymerize

-copolymerized

-copolymerizes

-copolymerizing

-copperization

-copperization's

-copperizations

-copperize

-copperizes

-coraled

-corbeled

-corbeling

-corbelings

-cordialize

-cordializes

-corporealization

-corporealization's

-corporealizations

-corporealize

-corporealizes

-cosmopolitanization

-cosmopolitanization's

-cosmopolitanizations

-cosmopolitanize

-cosmopolitanizes

-cottonization

-cottonization's

-cottonizations

-cottonize

-cottonizes

-councilorship

-counselee

-counselorship

-crawlerize

-crawlerizes

-creaturize

-creaturizes

-crenelate

-crenelated

-crenelates

-crenelation

-creneled

-creneling

-cretinization

-cretinization's

-cretinizations

-cretinize

-cretinizes

-criminalization

-criminalization's

-criminalize

-criticizable

-criticizable's

-criticizables

-crofterization

-crofterization's

-crofterizations

-crofterize

-crofterizes

-cruelize

-cruelizes

-crystallizabilities

-crystallizability

-crystallizability's

-crystallizable

-crystallizable's

-crystallizables

-cudgeled

-cudgeler

-cudgelers

-cudgeling

-cudgelings

-culturization

-culturization's

-culturizations

-culturize

-culturizes

-cupelation

-cupeled

-cupeler

-cupelers

-cupeling

-curarize

-curarized

-curarizes

-curarizing

-curatize

-curatizes

-curricularization

-curricularization's

-curricularizations

-curricularize

-curricularizes

-cutinize

-cutinized

-cutinizes

-cutinizing

-cutization

-cutization's

-cutizations

-cyclization

-cyclization's

-cyclizations

-cyclize

-cyclized

-cyclizes

-cyclizing

-dandyize

-dandyizes

-dastardize

-dastardizes

-deaconize

-deaconizes

-deaminize

-decaliter

-decaliters

-decameter

-decameter's

-decameters

-decarbonization

-decarbonize

-decarbonized

-decarbonizer

-decarbonizes

-decarbonizing

-decarburization

-decarburize

-decarburized

-decarburizes

-decarburizing

-decasualization

-decentralizationist

-decentralize

-decentralizes

-decigram

-decigram's

-decigrams

-deciliter

-deciliters

-decimalization

-decimalization's

-decimalizations

-decimalize

-decimalized

-decimalizes

-decimalizing

-decimeter

-decimeter's

-decimeters

-decolonization

-decolonize

-decolonized

-decolonizes

-decolonizing

-decolor

-decolorant

-decolorants

-decolorate

-decolorated

-decolorates

-decolored

-decoloring

-decolorise

-decolorised

-decolorises

-decolorization

-decolorize

-decolorized

-decolorizer

-decolorizes

-decolors

-decriminalization

-decriminalization's

-decriminalize

-deemphasization

-deemphasization's

-deenergize

-deenergized

-deenergizer

-deenergizes

-deenergizing

-defeminize

-defeminized

-defeminizes

-defeminizing

-defenseman

-definitization

-definitization's

-definitizations

-definitize

-definitized

-definitizes

-definitizing

-deflectionization

-deflectionization's

-deflectionizations

-deflectionize

-deflectionizes

-deformalize

-defunctionalization

-defunctionalization's

-defunctionalizations

-defunctionalize

-defunctionalizes

-dehumanization

-dehumanization's

-dehumanizations

-dehypnotization

-dehypnotize

-dehypnotized

-dehypnotizes

-dehypnotizing

-deindustrialization

-deindustrialize

-deionization

-deionize

-deionizes

-dekagram

-dekagram's

-dekagrams

-dekaliter

-dekameter

-dekameter's

-dekameters

-delimitize

-delimitizes

-delocalization

-delocalize

-deluster

-demagnetizable

-demagnetizable's

-demagnetizables

-demagnetization

-demagnetization's

-demagnetizations

-demagnetize

-demagnetized

-demagnetizer

-demagnetizers

-demagnetizes

-demagnetizing

-dematerialization

-dematerialize

-dematerialized

-dematerializes

-dematerializing

-demilitarization

-demilitarize

-demilitarized

-demilitarizes

-demilitarizing

-demineralize

-demineralized

-demineralizer

-demineralizes

-demineralizing

-demobilization

-demobilize

-demobilized

-demobilizes

-demobilizing

-demonetization

-demonetize

-demonetized

-demonetizes

-demonetizing

-demonization

-demonize

-demonized

-demonizes

-demonizing

-denationalization

-denationalize

-denationalized

-denationalizes

-denationalizing

-denaturalization

-denaturalize

-denaturalized

-denaturalizes

-denaturalizing

-denaturization

-denaturization's

-denaturizations

-denaturize

-denaturizer

-denaturizers

-denaturizes

-denicotinize

-denizenize

-denizenizes

-denominationalize

-denominationalizes

-denormalize

-dentalization

-dentalization's

-dentalizations

-dentalize

-dentalizes

-denuclearization

-denuclearize

-denuclearized

-denuclearizes

-denuclearizing

-deodorize

-deodorized

-deodorizes

-deodorizing

-deoxidizer

-departmentalization

-departmentalization's

-departmentalizations

-departmentalize

-departmentalizes

-departmentization

-departmentization's

-departmentizations

-departmentize

-departmentizes

-depersonalize

-depersonalizes

-depersonalizing

-depolarization

-depolarization's

-depolarizations

-depolarize

-depolarized

-depolarizer

-depolarizers

-depolarizes

-depolarizing

-depoliticization

-depoliticize

-depoliticized

-depoliticizes

-depoliticizing

-depolymerization

-depolymerize

-depolymerized

-depolymerizes

-depolymerizing

-depressurization

-depressurize

-depressurized

-depressurizes

-depressurizing

-deputationize

-deputationizes

-deputization

-deputize

-deputizes

-deputizing

-derationalization

-derationalization's

-derationalizations

-derationalize

-derationalizes

-deratization

-deratization's

-deratizations

-derealization

-deregulationize

-deregulationizes

-desalinization

-desalinize

-desensitization

-desensitization's

-desensitizations

-desensitize

-desensitized

-desensitizer

-desensitizers

-desensitizes

-desensitizing

-desexualization

-desexualize

-desexualized

-desexualizes

-desexualizing

-despiritualization

-despiritualize

-despotize

-despotizes

-destabilization

-destalinize

-destalinized

-destalinizes

-destalinizing

-desterilize

-desulfurization

-desulfurize

-desulphurization

-desulphurize

-desulphurized

-desulphurizes

-desulphurizing

-desynchronization

-detribalization

-detribalization's

-detribalizations

-develed

-develing

-deviled

-deviling

-devilize

-devilizes

-devitalization

-devitalize

-devitalized

-devitalizes

-devitalizing

-devocalize

-devolatilization

-devolatilize

-devolatilized

-devolatilizes

-devolatilizing

-diabolization

-diabolize

-diabolized

-diabolizes

-diabolizing

-diagonalization

-diagonalize

-diagonalizes

-dialecticize

-dialecticizes

-dialist

-dialists

-dialyzabilities

-dialyzability

-dialyzability's

-dialyzable

-dialyzable's

-dialyzables

-dialyze

-dialyzer

-dialyzer's

-dialyzers

-dialyzes

-diamondize

-diamondizes

-diarrheic

-diarrhetic

-dieselization

-dieselization's

-dieselizations

-dieselize

-dieselizes

-differentialize

-differentializes

-digitalize

-digitalized

-digitalizes

-digitalizing

-dimensionalization

-dimensionalize

-dimensionalized

-dimensionalizes

-dimensionalizing

-dimerization

-dimerization's

-dimerizations

-dimerize

-dimerized

-dimerizes

-dimerizing

-diminutivize

-diminutivizes

-diphthongization

-diphthongization's

-diphthongizations

-diphthongize

-diphthongizes

-diplomatize

-diplomatizes

-disangularize

-disangularizes

-disauthorize

-disauthorizes

-disboweled

-disboweling

-discanonization

-discanonization's

-discanonizations

-discanonize

-discanonizes

-discolor

-discolor's

-discoloration

-discoloring

-discolorization

-discolorization's

-discolorizations

-discolorment

-discolorment's

-discolorments

-discretization

-discretize

-disdenominationalize

-disdenominationalizes

-disdiplomatize

-disdiplomatizes

-disemboweled

-disemboweling

-disenamor

-disenamor's

-disenamors

-disenthrall

-disenthralls

-disharmonize

-disharmonizes

-disheveler

-disheveling

-dishonorable

-dishonorable's

-dishonorableness

-dishonorables

-dishonorablies

-dishonorably

-dishumanize

-dishumanizes

-dishumor

-dishumored

-dishumors

-disillusionize

-disillusionizer

-disillusionizers

-disillusionizes

-disindividualize

-disindividualizes

-dismalize

-dismalizes

-disnaturalization

-disnaturalization's

-disnaturalizations

-disnaturalize

-disnaturalizes

-disorganize

-disorganizer

-disorganizers

-disorganizes

-disorganizing

-disozonize

-disozonizes

-dispapalize

-dispapalizes

-dispauperize

-dispauperizes

-dispersonalize

-dispersonalizes

-dispopularize

-dispopularizes

-disrealize

-disrealizes

-disscepter

-disscepter's

-disscepters

-disseize

-disseized

-disseizes

-disseizin

-disseizing

-disseizins

-disseizor

-disseizors

-dissensualize

-dissensualizes

-dissocialize

-dissympathize

-dissympathizes

-disutilize

-disutilizes

-divinization

-divinization's

-divinizations

-divinize

-divinized

-divinizes

-divinizing

-dizequalise

-dizequalise's

-dizequaliser

-dizequalisers

-dizequalises

-dizorganisation

-dizorganise

-dockization

-dockization's

-dockizations

-dockize

-dockizes

-doctorization

-doctorization's

-doctorizations

-doctorize

-doctorizes

-doctrinization

-doctrinization's

-doctrinizations

-doctrinize

-doctrinizes

-documentize

-documentizes

-dogmatization

-dogmatize

-dogmatizer

-dognaped

-dognaping

-dolomitization

-dolomitization's

-dolomitizations

-dolomitize

-dolomitizes

-dolor

-domesticize

-domesticizes

-doweled

-doweler

-draftboard

-draftily

-draftsmanship

-dragonize

-dragonizes

-dramatizable

-dramatizable's

-dramatizables

-driveled

-driveler

-drivelers

-driveling

-dualization

-dualization's

-dualizations

-dualize

-dualizes

-ductilize

-ductilizes

-easternize

-ebonization

-ebonize

-ebonized

-ebonizes

-ebonizing

-ecclesiasticize

-ecclesiasticizes

-echoize

-echoizes

-eclecticize

-eclecticizes

-economization

-economization's

-economizations

-ecstaticize

-ecstaticizes

-editorialization

-effectualize

-effectualizes

-effeminatize

-effeminatizes

-egoize

-egoizer

-egoizers

-egoizes

-egyptus

-elasticization

-elasticize

-elasticized

-elasticizer

-elasticizers

-elasticizes

-elasticizing

-electricalize

-electricalizes

-electricize

-electricizes

-electroanesthesia

-electroanesthesia's

-electroanesthesias

-electrocauterization

-electrocauterization's

-electrocauterizations

-electrodialyze

-electrodialyzer

-electrodialyzer's

-electrodialyzers

-electrodialyzes

-electrogalvanize

-electrogalvanizes

-electrohomeopathies

-electrohomeopathy

-electrohomeopathy's

-electrolyze

-electrolyzed

-electrolyzes

-electrolyzing

-electromagnetizable

-electrotonize

-electrotonizes

-elegize

-elegized

-elegizes

-elegizing

-elementalize

-elementalizes

-emblematicize

-emblematicizes

-emblematization

-emblematize

-emblematized

-emblematizes

-emblematizing

-emblemize

-emblemizes

-embolization

-emboweled

-emboweling

-emotionalization

-emotionalization's

-emotionalizations

-emotionalize

-emotionalized

-emotionalizes

-emotionalizing

-emotionize

-emotionizes

-empaneled

-empaneling

-empathize

-empathized

-empathizes

-empathizing

-emulsionize

-emulsionizes

-enamelist

-enamelists

-enamor

-enamor's

-enamored

-enamored's

-enamoredness

-enamoreds

-enamoring

-enamorment

-enamorment's

-enamorments

-enamors

-enarbor

-enarbor's

-enarbors

-encarnalization

-encarnalize

-encarnalized

-encarnalizes

-encarnalizing

-encolor

-encolor's

-encolored

-encoloring

-encolors

-energization

-energize

-energizer

-energizers

-energizing

-engram

-engram's

-engrams

-engrandize

-engrandizement

-engrandizement's

-engrandizements

-engrandizes

-enhypostatize

-enhypostatizes

-enolization

-enolization's

-enolizations

-enolize

-enolizes

-ensepulcher

-ensepulcher's

-ensepulchers

-ensorceled

-ensorcels

-enthrallment

-enthrallment's

-enthrallments

-enthronization

-enthronization's

-enthronizations

-enthronize

-enthronizes

-entomologize

-entomologized

-entomologizes

-entomologizing

-envapor

-envapor's

-envapors

-envenomization

-eonism

-eonism's

-eonisms

-epigrammatization

-epigrammatize

-epigrammatized

-epigrammatizer

-epigrammatizes

-epigrammatizing

-epitaphize

-epitaphizes

-epithetize

-epithetizes

-epitomization

-epitomization's

-epitomizations

-epoches

-equestrianize

-equestrianizes

-ergotized

-ergotizes

-eroticization

-eroticize

-eroticized

-eroticizes

-eroticizing

-esophagus

-essentialize

-essentializes

-esterization

-esterization's

-esterizations

-esterize

-esterizes

-esthesia

-esthesiometer

-esthesiometer's

-esthesiometers

-esthesis

-eternalization

-eternalization's

-eternalizations

-eternalize

-eternalized

-eternalizes

-eternalizing

-eternize

-eternized

-eternizes

-eternizing

-etherealization

-etherealization's

-etherealizations

-etherealize

-etherealized

-etherealizes

-etherealizing

-etherization

-etherization's

-etherizations

-etherize

-etherized

-etherizer

-etherizers

-etherizes

-etherizing

-ethicization

-ethicize

-ethicized

-ethicizes

-ethicizing

-ethnicize

-ethnicizes

-etiologies

-etiology

-etiology's

-etymologization

-etymologize

-etymologized

-etymologizes

-etymologizing

-euhemerize

-eulogization

-eulogization's

-eulogizations

-euphemize

-euphemized

-euphemizer

-euphemizes

-euphemizing

-euphonization

-euphonize

-euphonized

-euphonizes

-euphonizing

-evangelization

-evangelization's

-evangelizations

-evangelize

-evangelized

-evangelizer

-evangelizers

-evangelizes

-evangelizing

-eventualize

-eventualizes

-evolutionize

-evolutionizes

-excursionize

-excursionizes

-exhibitionize

-exhibitionizes

-existentialize

-existentializes

-experimentalize

-experimentalizes

-experimentize

-experimentizes

-extemporization

-extemporization's

-extemporizations

-exteriorization

-exteriorization's

-exteriorizations

-exteriorize

-exteriorized

-exteriorizes

-exteriorizing

-externalize

-externalized

-externalizes

-externalizing

-facsimilize

-facsimilizes

-factorize

-factorized

-factorizes

-factorizing

-fanaticize

-fanaticized

-fanaticizes

-fanaticizing

-faradization

-faradization's

-faradizations

-faradize

-faradized

-faradizer

-faradizers

-faradizes

-faradizing

-fascisticization

-fascisticization's

-fascisticizations

-fascisticize

-fascisticizes

-fascistization

-fascistization's

-fascistizations

-fascistize

-fascistized

-fascistizes

-fascistizing

-fashionize

-fashionizes

-fatalize

-fatalizes

-favorless

-favorlesses

-fecundize

-fecundizes

-federalization

-federalization's

-federalizations

-femalize

-femalizes

-feminization

-feminizations

-feminize

-feminized

-feminizes

-feminizing

-ferreled

-ferreling

-ferritization

-ferritization's

-ferritizations

-fertilizable

-fertilizable's

-fertilizables

-fertilizational

-fertilizational's

-fertilizationals

-fervorless

-fervorlesses

-fetalization

-fetalization's

-fetalizations

-fetishization

-fetishization's

-fetishizations

-fetishize

-fetishized

-fetishizes

-fetishizing

-feudalizable

-feudalizable's

-feudalizables

-feudalization

-feudalization's

-feudalizations

-feudalize

-feudalized

-feudalizes

-feudalizing

-fiberization

-fiberize

-fiberized

-fiberizer

-fiberizer's

-fiberizers

-fiberizes

-fiberizing

-fiberless

-fiberlesses

-fibrize

-fibrizer

-fibrizers

-fibrizes

-fictionalization

-fictionalize

-fictionalized

-fictionalizes

-fictionalizing

-fictionization

-fictionization's

-fictionizations

-fictionize

-fictionizes

-figurize

-figurizes

-filmize

-filmizes

-fiscalization

-fiscalization's

-fiscalizations

-fiscalize

-fiscalizes

-flamboyantize

-flamboyantizes

-flanneled

-flanneling

-flavorful

-flavorfully

-flavorless

-flavorlesses

-flavorsome

-flavory

-floralize

-floralizes

-fluidization

-fluidization's

-fluidizations

-fluidize

-fluidized

-fluidizer

-fluidizes

-fluidizing

-fluoridization

-fluoridization's

-fluoridizations

-fluoridize

-fluoridizes

-focalization

-focalization's

-focalizations

-focalize

-focalized

-focalizes

-focalizing

-foreignization

-foreignization's

-foreignizations

-foreignize

-foreignizes

-forejudgment

-forejudgment's

-forejudgments

-formalizable

-formularization

-formularizations

-formularize

-formularized

-formularizer

-formularizes

-formularizing

-formulization

-formulizations

-formulize

-formulized

-formulizes

-formulizing

-forumize

-forumizes

-fossiled

-fossilizable

-fossilizable's

-fossilizables

-fossilization

-fossilization's

-fossilizations

-fossilize

-fossilizes

-fossilizing

-fractionalization

-fractionalize

-fractionalized

-fractionalizes

-fractionalizing

-fractionization

-fractionization's

-fractionizations

-fractionize

-fractionizes

-fragmentize

-fragmentized

-fragmentizer

-fragmentizes

-fragmentizing

-fraternization

-fraternization's

-fraternizations

-frictionize

-frictionizes

-frivoled

-frivoler

-frivoling

-fuelizer

-fuelizer's

-fuelizers

-functionalize

-functionalizes

-functionize

-functionizes

-funeralize

-funeralizes

-funneler

-futilize

-futilizes

-futurize

-futurizes

-gallantize

-gallantizes

-galvanization

-galvanization's

-galvanizations

-galvanize

-galvanized

-galvanizer

-galvanizers

-galvanizes

-gamboled

-gamboling

-gardenize

-gardenizes

-gaveled

-gaveler

-gaveling

-gelatinizabilities

-gelatinizability

-gelatinizability's

-gelatinizable

-gelatinizable's

-gelatinizables

-gelatinization

-gelatinization's

-gelatinizations

-gelatinize

-gelatinized

-gelatinizer

-gelatinizers

-gelatinizes

-gelatinizing

-generalizability

-generalizational

-genialize

-genializes

-genteelize

-genteelizes

-gentilization

-gentilization's

-gentilizations

-gentilize

-gentilizes

-gentlemanize

-gentlemanizes

-geologize

-geologized

-geologizes

-geologizing

-geometricize

-geometricizes

-geometrize

-geometrized

-geometrizes

-geometrizing

-germanization

-germanization's

-germanizations

-germanize

-germanizer

-germanizers

-germanizes

-germanizing

-ghettoization

-ghettoization's

-ghettoizations

-ghettoize

-ghettoized

-ghettoizes

-ghettoizing

-giantize

-giantizes

-gimbaling

-glacialize

-glacializes

-glamorization

-glamorizations

-glamorless

-globalization

-globalizations

-globalize

-globalized

-globalizes

-globalizing

-glottalize

-glottalizes

-gluttonize

-gluttonizes

-glycerinize

-glycerinizes

-glycerolize

-glycerolizes

-glycogenize

-glycogenizes

-gnosticize

-gnosticizer

-gnosticizers

-gnosticizes

-goddize

-goddizes

-goiter

-goiters

-gonorrhea

-gonorrheal

-gorgonize

-gorgonized

-gorgonizes

-gorgonizing

-gormandize

-gormandized

-gormandizer

-gormandizes

-gormandizing

-gospelize

-gospelizes

-gourmandize

-gourmandized

-gourmandizes

-gourmandizing

-governmentalize

-governmentalized

-governmentalizes

-governmentalizing

-grammaticize

-grammaticizes

-grangerize

-grangerized

-grangerizer

-grangerizes

-grangerizing

-granitization

-granitization's

-granitizations

-granitize

-granitizes

-granulize

-granulizes

-graphitizable

-graphitization

-graphitization's

-graphitizations

-graphitize

-graphitizes

-grecize

-grecized

-grecizing

-grueled

-grueler

-gruelers

-gutturalization

-gutturalization's

-gutturalizations

-gutturalize

-gutturalized

-gutturalizes

-gutturalizing

-gynecocrat

-gynecocratic

-gynecologic

-gynecologics

-gynecologies

-gynecology

-gynecology's

-gyrostabilizer

-habitualize

-habitualizes

-hamletization

-hamletization's

-hamletizations

-hamletize

-hamletizes

-handseled

-handseling

-hanseled

-hanseling

-harborage

-harborages

-harborful

-harborless

-harborlesses

-harmonizable

-harmonizable's

-harmonizables

-hatcheled

-hatcheling

-hazardize

-hazardizes

-heathenization

-heathenize

-heathenized

-heathenizes

-heathenizing

-heavenize

-heavenizes

-hebraization

-hebraizations

-hebraize

-hebraized

-hebraizes

-hebraizing

-hectogram

-hectogram's

-hectograms

-hectoliter

-hectometer

-hectometer's

-hectometers

-heparinize

-hepatize

-hepatized

-hepatizes

-hepatizing

-heraldize

-heraldizes

-hereticize

-hereticizes

-heroinize

-heroinizes

-heroization

-heroization's

-heroizations

-heroize

-heroized

-heroizes

-heroizing

-hiccup

-hiccuped

-hiccuping

-hiccups

-hirseled

-hirseling

-historicize

-historicized

-historicizes

-historicizing

-homeopathic

-homeopathically

-homeopathies

-homeopathy

-homeopathy's

-homeostasis

-homeostatic

-homeotypic

-hominization

-hominized

-homologization

-homologize

-homologized

-homologizer

-homologizes

-homologizing

-honorabilities

-honorability

-honorability's

-honorableship

-honorableship's

-honorableships

-honorless

-honorlesses

-hoodlumize

-hoodlumizes

-hooliganize

-hooliganizes

-horizontalization

-horizontalization's

-horizontalizations

-horizontalize

-horizontalizes

-hormonize

-hormonizes

-horrorize

-horrorizes

-hostilize

-hostilizes

-hotelization

-hotelization's

-hotelizations

-hotelize

-hotelizes

-houseled

-houseling

-houselings

-hoveled

-hoveler

-hovelers

-hoveling

-hucksterize

-hucksterizes

-humanitarianize

-humanitarianizes

-humanization

-humanization's

-humanizations

-humoral

-humorize

-humorizes

-humorless

-humorlesses

-humorlessness

-humorsome

-hurricanize

-hurricanizes

-hyalinization

-hyalinization's

-hyalinizations

-hyalinize

-hyalinizes

-hybridizable

-hybridizable's

-hybridizables

-hybridization

-hybridization's

-hybridizations

-hybridize

-hybridized

-hybridizer

-hybridizers

-hybridizes

-hybridizing

-hydrocaryaceous

-hydrocaryaceouses

-hydrogenization

-hydrogenization's

-hydrogenizations

-hydrogenize

-hydrogenized

-hydrogenizes

-hydrogenizing

-hydrolyzable

-hydrolyzable's

-hydrolyzables

-hydrolyze

-hydrolyze's

-hydrolyzes

-hydroxylization

-hydroxylization's

-hydroxylizations

-hydroxylize

-hydroxylizes

-hygienization

-hygienization's

-hygienizations

-hygienize

-hygienizes

-hyperbolize

-hyperbolized

-hyperbolizes

-hyperbolizing

-hypercatharsises

-hypercivilization

-hypercivilization's

-hypercivilizations

-hypercivilized

-hypercivilized's

-hypercivilizeds

-hypercriticize

-hypercriticizes

-hyperemphasize

-hyperemphasizes

-hyperesthesia

-hyperesthetic

-hyperimmunization

-hyperimmunization's

-hyperimmunizations

-hyperimmunize

-hyperimmunizes

-hyperinsulinization

-hyperinsulinization's

-hyperinsulinizations

-hyperinsulinize

-hyperinsulinizes

-hyperoxygenize

-hyperoxygenizes

-hyperparasitize

-hyperparasitizes

-hyperrealize

-hyperrealizes

-hypersensitization

-hypersensitization's

-hypersensitizations

-hypersensitize

-hypersensitized

-hypersensitizes

-hypersensitizing

-hyperspiritualizing

-hyperspiritualizing's

-hyperspiritualizings

-hyperthyroidization

-hyperthyroidization's

-hyperthyroidizations

-hyperthyroidize

-hyperthyroidizes

-hypervitalization

-hypervitalization's

-hypervitalizations

-hypervitalize

-hypervitalizes

-hyphenization

-hyphenization's

-hyphenizations

-hyphenize

-hyphenizes

-hypnotizabilities

-hypnotizability

-hypnotizability's

-hypnotizable

-hypnotizable's

-hypnotizables

-hypnotization

-hypnotization's

-hypnotizations

-hypnotize

-hypnotizer

-hypnotizers

-hypnotizes

-hypnotizing

-hypocenter

-hyposensitization

-hyposensitize

-hypostatization

-hypostatization's

-hypostatizations

-hypostatize

-hypostatizes

-hysterectomize

-hysterectomized

-hysterectomizes

-hysterectomizing

-ichneumonized

-ichneumonized's

-ichneumonizeds

-idiotize

-idiotizes

-idolatrize

-idolatrized

-idolatrizes

-idolatrizing

-idolization

-idolization's

-idolizations

-illegalization

-illegalize

-illegalized

-illegalizes

-illegalizing

-illegitimatize

-illegitimatizes

-illutation

-illutation's

-illutations

-immaterialization

-immaterialize

-immaterialized

-immaterializes

-immaterializing

-immobilization

-immobilization's

-immobilizations

-immoralize

-immoralizes

-immortalizable

-immortalizable's

-immortalizables

-immortalization

-immortalization's

-immortalizations

-immortalize

-immortalizer

-immortalizers

-immortalizes

-immortalizing

-immunize

-immunized

-immunizes

-immunizing

-impactionize

-impactionizes

-impaneled

-impaneling

-imperialization

-imperialization's

-imperializations

-imperialize

-imperializes

-imperiling

-impersonalization

-impersonalization's

-impersonalizations

-impersonalize

-impersonalizes

-impersonalizing

-improvizatorize

-improvizatorizes

-individualization

-individualization's

-individualizations

-indraft

-industrialize

-industrializes

-inferiorize

-inferiorizes

-infernalize

-infernalizes

-infidelize

-infidelizes

-infinitize

-infinitizes

-informalize

-inhumanize

-initializable

-insolubilization

-insolubilize

-institutionize

-institutionizes

-instrumentalize

-instrumentalizes

-insularize

-insularizes

-insurrectionize

-insurrectionizes

-integralization

-integralization's

-integralizations

-integralize

-integralizes

-intellectualization

-intellectualization's

-intellectualizations

-intellectualize

-intellectualized

-intellectualizer

-intellectualizers

-intellectualizes

-intellectualizing

-intercivilization

-intercivilization's

-intercivilizations

-intercolonization

-intercolonization's

-intercolonizations

-intercrystallization

-intercrystallization's

-intercrystallizations

-intercrystallize

-intercrystallizes

-interhybridize

-interhybridizes

-interiorization

-interiorize

-interiorized

-interiorizes

-interiorizing

-interjectionalize

-interjectionalizes

-interjectionize

-interjectionizes

-interjudgment

-interjudgment's

-interjudgments

-internationalize

-internationalizes

-internationalizing

-interorganizational

-intraorganization

-intraorganization's

-intraorganizations

-iodization

-iodize

-iodized

-iodizer

-iodizers

-iodizes

-iodizing

-ionizable

-ionizable's

-ionizables

-ionization

-ionization's

-ionizations

-ironize

-ironizes

-irrationalize

-irrationalizes

-irregularize

-irregularizes

-isochronization

-isochronize

-isochronized

-isochronizes

-isochronizing

-isoimmunization

-isoimmunization's

-isoimmunizations

-isoimmunize

-isoimmunizes

-isomerization

-isomerization's

-isomerizations

-isomerize

-isomerized

-isomerizeparabolization

-isomerizes

-isomerizing

-italicization

-italicization's

-italicizations

-jargonization

-jargonization's

-jargonizations

-jargonize

-jargonized

-jargonizes

-jargonizing

-jasperize

-jasperizes

-jeopardization

-jeweleries

-jewelery

-journalization

-journalization's

-journalizations

-jovialize

-jovializes

-judgmental

-judicialize

-judicializes

-juvenilize

-juvenilizes

-kaolinization

-kaolinization's

-kaolinizations

-kaolinize

-kaolinizes

-kenneled

-kenneling

-keratinization

-keratinize

-keratinized

-keratinizes

-keratinizing

-kerneled

-kerneling

-ketonization

-ketonization's

-ketonizations

-ketonize

-ketonizes

-kiloliter

-kiloliter's

-kiloliters

-kinesthesia

-kyanize

-kyanized

-kyanizes

-kyanizing

-labelable

-labialization

-labialization's

-labializations

-labialize

-labialized

-labializes

-labializing

-labilization

-labilization's

-labilizations

-labilize

-labilizes

-laborabilities

-laborability

-laborability's

-laborable

-laborable's

-laborables

-laborhood

-laborhood's

-laborhoods

-laborism

-laborism's

-laborisms

-laborist

-laborist's

-laborists

-laborite

-laborite's

-laborites

-laborless

-laborlesses

-labour's

-lackluster

-laconize

-laconized

-laconizes

-laconizing

-lactonized

-laicization

-laicizations

-laicize

-laicized

-laicizes

-laicizing

-lapeled

-latentize

-latentizes

-lateralization

-lateralization's

-lateralizations

-lateralize

-lateralizes

-laterization

-laterization's

-laterizations

-laureling

-leatherize

-leatherizes

-legitimatize

-legitimatized

-legitimatizes

-legitimatizing

-legitimization

-legitimization's

-legitimizations

-lethalize

-lethalizes

-leukemia

-lexiconize

-lexiconizes

-libelant

-libelants

-libeled

-libelee

-libelees

-libeling

-lichenization

-lichenization's

-lichenizations

-lichenize

-lichenizes

-lignitize

-lignitizes

-linearization

-linearization's

-linearizations

-linenize

-linenizer

-linenizers

-linenizes

-lingualize

-lingualizes

-lionizable

-lionizable's

-lionizables

-lionization

-lionization's

-lionizations

-liquidization

-liquidize

-liquidized

-liquidizer

-liquidizers

-liquidizes

-liquidizing

-literalization

-literalization's

-literalizations

-literalize

-literalized

-literalizer

-literalizers

-literalizes

-lithographize

-lithographizes

-localizable

-localizable's

-localizables

-logicalization

-logicalization's

-logicalizations

-logicalize

-logicalizes

-logicize

-logicized

-logicizes

-logicizing

-logorrhea

-logorrhea's

-logorrheas

-louver

-louvered

-louvers

-loyalize

-loyalizes

-lumbarization

-lumbarization's

-lumbarizations

-lunatize

-lunatizes

-lusterless

-lusterware

-luteinization

-luteinize

-lyophilization

-lyophilize

-lyophilized

-lyophilizer

-lyricize

-lyricized

-lyricizes

-lyricizing

-lysogenization

-lysogenize

-macadamization

-macadamize

-macadamized

-macadamizes

-macadamizing

-macarize

-macarized

-macarizes

-macarizing

-machinization

-machinization's

-machinizations

-machinize

-machinizes

-magicalize

-magicalizes

-magnetizabilities

-magnetizability

-magnetizability's

-magnetizable

-magnetizable's

-magnetizables

-magnetize

-magnetizer

-magnetizers

-magnetizes

-magnetizing

-mahoganize

-mahoganized

-mahoganizes

-mahoganizing

-majorize

-majorizes

-malleablize

-malleablizes

-malodor

-mandarinize

-mandarinizes

-mannerize

-mannerizes

-marbleize

-marbleizes

-marginalization

-marginalize

-marginalized

-marginalizes

-marginalizing

-marsupialization

-marsupialization's

-marsupializations

-marsupialize

-marsupializes

-martialization

-martialization's

-martializations

-martialize

-martializes

-martyrization

-martyrization's

-martyrizations

-martyrize

-martyrized

-martyrizer

-martyrizers

-martyrizes

-martyrizing

-marveler

-masculinization

-masculinization's

-masculinizations

-masculinize

-masculinized

-masculinizes

-masculinizing

-materialization

-materialization's

-materializations

-maternalize

-maternalizes

-mathematicize

-mathematicizes

-mathematization

-matronize

-matronized

-matronizes

-matronizing

-maudlinize

-maudlinizes

-mazurka

-mazurka's

-mazurkas

-mechanicalization

-mechanicalization's

-mechanicalizations

-mechanicalize

-mechanicalizes

-mechanizable

-medalist

-medalists

-medalize

-medalizes

-medialization

-medialization's

-medializations

-medialize

-medializes

-mediatization

-mediatization's

-mediatizations

-mediatize

-mediatized

-mediatizes

-mediatizing

-medievalize

-medievalizes

-mediumization

-mediumization's

-mediumizations

-mediumize

-mediumizes

-melanization

-melanize

-melanized

-melanizes

-melanizing

-melodization

-melodize

-melodized

-melodizer

-melodizes

-melodizing

-melodramatization

-melodramatize

-melodramatized

-melodramatizes

-melodramatizing

-memorialization

-memorialization's

-memorializations

-memorialize

-memorializer

-memorializers

-memorializes

-memorializing

-memorizable

-memorizable's

-memorizables

-mentalization

-mentalization's

-mentalizations

-mentalize

-mentalizes

-mercerization

-mercerization's

-mercerizations

-mercerize

-mercerized

-mercerizer

-mercerizers

-mercerizes

-mercerizing

-mercurialization

-mercurialization's

-mercurializations

-mercurialize

-mercurializes

-mesmerizabilities

-mesmerizability

-mesmerizability's

-mesmerizable

-mesmerizable's

-mesmerizables

-mesmerization

-mesmerization's

-mesmerizations

-mesmerize

-mesmerizer

-mesmerizers

-mesmerizes

-mesmerizing

-metabolizable

-metabolizable's

-metabolizables

-metabolize

-metabolizes

-metabolizing

-metacenter

-metagram

-metagram's

-metagrams

-metalize

-metalized

-metalizes

-metalizing

-metallicize

-metallicizes

-metamerization

-metamerization's

-metamerizations

-metamerized

-metamerized's

-metamerizeds

-metaphonize

-metaphonizes

-metaphorize

-metaphorizes

-metaphysicize

-metaphysicizes

-metastasize

-metastasized

-metastasizes

-metastasizing

-meteorization

-meteorization's

-meteorizations

-meteorize

-meteorizes

-methodization

-methodization's

-methodizations

-methodize

-methodized

-methodizer

-methodizers

-methodizes

-methodizing

-metricize

-metricized

-metricizes

-metricizing

-metropolitanize

-metropolitanizes

-microgram

-microgram's

-micrograms

-microliter

-microliter's

-microliters

-micromillimeter

-micromillimeter's

-micromillimeters

-microminiaturization

-microminiaturize

-microminiaturized

-microminiaturizer

-microminiaturizers

-microminiaturizes

-microminiaturizing

-micronization

-micronization's

-micronizations

-micronize

-micronizes

-micropolarization

-micropolarization's

-micropolarizations

-microscopize

-microscopizes

-militarization

-militarizations

-militarize

-militarized

-militarizes

-militarizing

-millionize

-millionizes

-mineralizable

-mineralizable's

-mineralizables

-mineralization

-mineralization's

-mineralizations

-mineralize

-mineralizer

-mineralizers

-mineralizes

-mineralizing

-miraculize

-miraculized

-miraculizes

-miraculizing

-mirrorize

-mirrorizes

-misalphabetize

-misalphabetizes

-misanthropize

-misanthropized

-misanthropizes

-misanthropizing

-misauthorization

-misauthorization's

-misauthorizations

-misauthorize

-misauthorizes

-misbaptize

-misbaptizes

-miscanonize

-miscanonizes

-mischaracterization

-mischaracterization's

-mischaracterizations

-mischaracterize

-mischaracterizes

-miscolor

-miscolor's

-miscolored

-miscoloring

-miscolors

-misendeavor

-misendeavor's

-misendeavors

-mislabeled

-mislabeling

-mislabor

-mislabor's

-mislabored

-mislaboring

-mislabors

-misorganization

-misorganization's

-misorganizations

-misorganize

-misorganizes

-misrealize

-misrealizes

-misrecognize

-misrecognizes

-misrouting

-missionarize

-missionarizes

-missionization

-missionize

-missionized

-missionizer

-missionizers

-missionizes

-missionizing

-mizanthropise

-mizanthropises

-mobilizable

-mobilizable's

-mobilizables

-modalize

-modalizes

-modernizable

-modernizable's

-modernizables

-moisturization

-moisturize

-moisturized

-moisturizer

-moisturizers

-moisturizes

-moisturizing

-molarization

-molarizations

-monarchize

-monarchizer

-monarchizers

-monarchizes

-monasticize

-monasticizes

-mongrelization

-mongrelizations

-mongrelize

-mongrelized

-mongrelizer

-mongrelizes

-mongrelizing

-monochordize

-monochordizes

-monologize

-monologized

-monologizes

-monologizing

-monometalism

-monometalist

-monopolizable

-monopolizable's

-monopolizables

-monotonize

-monotonizes

-monumentalization

-monumentalization's

-monumentalizations

-monumentalize

-monumentalized

-monumentalizes

-monumentalizing

-moralization

-moralization's

-moralizations

-moralize

-moralized

-moralizer

-moralizers

-moralizes

-moralizing

-moralizinglies

-moralizingly

-morbidize

-morbidizes

-morphinization

-morphinization's

-morphinizations

-morphinize

-morphinizes

-morseled

-morseling

-morselization

-morselization's

-morselizations

-morselize

-morselizes

-mortalize

-mortalizes

-mortarize

-mortarizes

-motorization

-motorization's

-motorizations

-multifibered

-multifibered's

-multifibereds

-municipalization

-municipalization's

-municipalizations

-municipalize

-municipalized

-municipalizer

-municipalizers

-municipalizes

-municipalizing

-muscularize

-muscularizes

-museumize

-museumizes

-musicalization

-musicalization's

-musicalizations

-musicalize

-musicalizes

-mutualization

-mutualization's

-mutualizations

-mutualize

-mutualized

-mutualizes

-mutualizing

-myelinization

-myelinization's

-myelinizations

-mysticize

-mysticizes

-mythicization

-mythicize

-mythicized

-mythicizer

-mythicizers

-mythicizes

-mythicizing

-mythize

-mythizes

-mythologization

-mythologize

-mythologized

-mythologizer

-mythologizes

-mythologizing

-nakedize

-nakedizes

-nanogram

-nanograms

-nanometer

-nanometers

-narcotization

-narcotize

-narcotized

-narcotizing

-nasalize

-nasalizes

-nasalizing

-naturalize

-naturalizer

-naturalizers

-naturalizes

-naturalizing

-naturize

-naturizes

-nebularization

-nebularization's

-nebularizations

-nebularize

-nebularizes

-nebulization

-nebulizations

-nebulize

-nebulized

-nebulizer

-nebulizes

-nebulizing

-necrotize

-necrotized

-necrotizes

-necrotizing

-nectarize

-nectarizes

-neighborless

-neighborlesses

-neighborlike

-neighborlike's

-neighborlikes

-neighborship

-neighborship's

-neighborships

-neologization

-neologize

-neologized

-neologizes

-neologizing

-neuroticize

-neuroticizes

-newspaperized

-newspaperized's

-newspaperizeds

-nickelization

-nickelization's

-nickelizations

-nickelize

-nickelizes

-nicotinize

-nicotinizes

-nightingalize

-nightingalizes

-niter

-nitridization

-nitridization's

-nitridizations

-nitridize

-nitridizes

-nitrogenization

-nitrogenization's

-nitrogenizations

-nitrogenize

-nitrogenized

-nitrogenizes

-nitrogenizing

-nodulize

-nodulizes

-nomadization

-nomadization's

-nomadizations

-nomadize

-nomadized

-nomadizes

-nomadizing

-nominalize

-nominalizes

-nominalizing

-nonacknowledgment

-nonacknowledgment's

-nonacknowledgments

-nonanesthetized

-nonapostatizing

-nonapostatizing's

-nonapostatizings

-noncanonization

-noncanonization's

-noncanonizations

-noncartelized

-noncartelized's

-noncartelizeds

-noncatechizable

-noncatechizable's

-noncatechizables

-noncivilized

-noncivilized's

-noncivilizeds

-noncoloring

-noncoloring's

-noncolorings

-noncrystallizable

-noncrystallizable's

-noncrystallizables

-noncrystallized

-noncrystallized's

-noncrystallizeds

-noncrystallizing

-noncrystallizing's

-noncrystallizings

-nondemobilization

-nondemobilization's

-nondemobilizations

-nondialyzing

-nondialyzing's

-nondialyzings

-nondimensionalize

-nondimensionalized

-nonfavorite

-nonfavorite's

-nonfavorites

-nonfulfillment

-nonfulfillment's

-nonfulfillments

-nongalvanized

-nongalvanized's

-nongalvanizeds

-nongelatinizing

-nongelatinizing's

-nongelatinizings

-nonhydrolyzable

-nonhydrolyzable's

-nonhydrolyzables

-nonimmunized

-nonimmunized's

-nonimmunizeds

-nonionized

-nonionized's

-nonionizeds

-nonionizing

-nonionizing's

-nonionizings

-nonlocalized

-nonlocalized's

-nonlocalizeds

-nonmagnetizable

-nonmagnetizable's

-nonmagnetizables

-nonnitrogenized

-nonnitrogenized's

-nonnitrogenizeds

-nonorganization

-nonorganization's

-nonorganizations

-nonoxidizable

-nonoxidizable's

-nonoxidizables

-nonoxidizing

-nonoxidizing's

-nonoxidizings

-nonparlor

-nonparlor's

-nonparlors

-nonpenalized

-nonpenalized's

-nonpenalizeds

-nonphosphorized

-nonphosphorized's

-nonphosphorizeds

-nonpolarizable

-nonpolarizable's

-nonpolarizables

-nonpolarized

-nonpolarizing

-nonpolarizing's

-nonpolarizings

-nonrationalized

-nonrationalized's

-nonrationalizeds

-nonrealization

-nonrealization's

-nonrealizations

-nonrecognized

-nonrecognized's

-nonrecognizeds

-nonschematized

-nonschematized's

-nonschematizeds

-nonsensitized

-nonsensitized's

-nonsensitizeds

-nonspecialized

-nonspecialized's

-nonspecializeds

-nonstandardized

-nonstandardized's

-nonstandardizeds

-nonstylized

-nonstylized's

-nonstylizeds

-nonsympathizer

-nonsympathizer's

-nonsympathizers

-nonsynthesized

-nonsynthesized's

-nonsynthesizeds

-nontemporizing

-nontemporizing's

-nontemporizings

-nonutilized

-nonutilized's

-nonutilizeds

-nonvisualized

-nonvisualized's

-nonvisualizeds

-nonvolatilized

-nonvolatilized's

-nonvolatilizeds

-nonvulcanizable

-nonvulcanizable's

-nonvulcanizables

-normalizable

-northernize

-northernizes

-nosize

-notarization

-notarizations

-nothingize

-nothingizes

-nounize

-nounizes

-novelization

-novelization's

-novelizations

-novelize

-novelizer

-novelizers

-novelizes

-novelizing

-nuptialize

-nuptializes

-obelize

-obelized

-obelizes

-obelizing

-objectivize

-objectivizes

-objectization

-objectization's

-objectizations

-objectize

-objectizes

-oblivionize

-oblivionizes

-ocherous

-odorful

-odorize

-odorized

-odorizer

-odorizes

-odorizing

-odorless

-odorlesses

-offenseless

-offenselesses

-offenselessly

-officialization

-officialization's

-officializations

-officialize

-officializes

-onionized

-onionized's

-onionizeds

-opaled

-opalize

-opalizes

-operatize

-operatizes

-optionalize

-optionalizes

-oralization

-oralization's

-oralizations

-oralize

-oralizes

-orangize

-orangizes

-oratorize

-oratorizes

-organizabilities

-organizability

-organizability's

-organizationist

-organizationist's

-organizationists

-orientalization

-orientalization's

-orientalizations

-orientalize

-orientalized

-orientalizes

-orientalizing

-orientization

-orientization's

-orientizations

-orientize

-orientizes

-ornamentalize

-ornamentalizes

-orphanize

-orphanizes

-orthocenter

-orthogonalize

-orthogonalizes

-orthogonalizing

-orthopedically

-orthopedist

-ostracizable

-ostracizable's

-ostracizables

-ostracization

-ostracization's

-ostracizations

-ostracize

-ostracizer

-ostracizers

-ostracizes

-ostracizing

-outcaviled

-outcaviling

-outclamor

-outclamor's

-outclamors

-outhumor

-outhumor's

-outhumored

-outhumoring

-outhumors

-outhyperbolize

-outhyperbolizes

-outlabor

-outlabor's

-outlabors

-outrivaled

-outrivaling

-outsavor

-outsavor's

-outsavoring

-outsavors

-outsplendor

-outsplendor's

-outsplendors

-outtyrannize

-outtyrannizes

-ovalization

-ovalization's

-ovalizations

-ovalize

-ovalizes

-ovariectomized

-overagonize

-overagonizes

-overbrutalize

-overbrutalizes

-overcapitalization

-overcapitalization's

-overcapitalizations

-overcapitalize

-overcapitalized

-overcapitalizes

-overcapitalizing

-overcentralization

-overcentralization's

-overcentralizations

-overcentralize

-overcentralizes

-overcivilization

-overcivilization's

-overcivilizations

-overcivilize

-overcivilizes

-overclamor

-overclamor's

-overclamors

-overcolor

-overcolor's

-overcolors

-overcriticize

-overcriticizes

-overdoctrinize

-overdoctrinizes

-overemotionalize

-overemotionalizes

-overfavor

-overfavor's

-overfavorable

-overfavorable's

-overfavorables

-overfavorablies

-overfavorably

-overfavors

-overfertilization

-overgeneralize

-overgeneralizes

-overhonor

-overhonor's

-overhonors

-overhumanize

-overhumanizes

-overindustrialization

-overindustrialization's

-overindustrializations

-overindustrialize

-overindustrializes

-overjudgment

-overjudgment's

-overjudgments

-overlabor

-overlabor's

-overlabors

-overnationalization

-overnationalization's

-overnationalizations

-overrapturize

-overrapturizes

-overrationalize

-overrationalizes

-oversentimentalize

-oversentimentalizes

-overspecialization

-overspecialization's

-overspecializations

-overspecialize

-overspecialized

-overspecializes

-oversystematize

-oversystematizes

-overunionized

-overunionized's

-overunionizeds

-overurbanization

-overurbanization's

-overurbanizations

-overwomanize

-overwomanizes

-oxidizabilities

-oxidizability

-oxidizability's

-oxidizable

-oxidizable's

-oxidizables

-oxidization

-oxidization's

-oxidizations

-oxidizement

-oxidizement's

-oxidizements

-oxygenizable

-oxygenizable's

-oxygenizables

-oxygenize

-oxygenizement

-oxygenizement's

-oxygenizements

-oxygenizer

-oxygenizers

-oxygenizes

-ozonization

-ozonization's

-ozonizations

-ozonize

-ozonized

-ozonizer

-ozonizers

-ozonizes

-ozonizing

-packetization

-packetize

-packetized

-packetizer

-packetizer's

-packetizers

-packetizes

-packetizing

-paeanize

-paeanizes

-paganization

-paganization's

-paganizations

-paganize

-paganized

-paganizer

-paganizers

-paganizes

-paganizing

-palatization

-palatization's

-palatizations

-palatize

-palatizes

-palladiumize

-palladiumizes

-palletization

-palletizations

-palletize

-palletizer

-palletizes

-palletizing

-pamperize

-pamperizes

-pamphletize

-pamphletizes

-panderize

-panderizes

-pantheonization

-pantheonization's

-pantheonizations

-pantheonize

-pantheonizes

-papalization

-papalization's

-papalizations

-papalize

-papalizer

-papalizers

-papalizes

-parabolize

-parabolized

-parabolizes

-parabolizing

-paraffinize

-paraffinizes

-paragraphize

-paragraphizes

-paralyzation

-parasitization

-parasitize

-parasitized

-parasitizes

-parasitizing

-parathyroidectomize

-parathyroidectomized

-parathyroidectomizes

-parathyroidectomizing

-parceler

-parchmentize

-parchmentizes

-parenthesization

-parfocalization

-parfocalize

-parochialization

-parochialization's

-parochializations

-parochialize

-parochializes

-parrotize

-parrotizes

-parsonize

-parsonizes

-partialize

-partializes

-particularization

-particularization's

-particularizations

-particularize

-particularized

-particularizes

-particularizing

-partisanize

-partisanizes

-pasteurize

-pasteurized

-pasteurizer

-pasteurizes

-pasteurizing

-pastoralize

-pastoralizes

-pastorize

-pastorizes

-paternalize

-paternalizes

-patronizable

-patronizable's

-patronizables

-patronization

-patronization's

-patronizations

-patternize

-patternizes

-pauperization

-pauperization's

-pauperizations

-pauperize

-pauperized

-pauperizer

-pauperizers

-pauperizes

-pauperizing

-pavior

-pearlization

-pearlize

-pearlized

-pearlizes

-pearlizing

-peasantize

-peasantizes

-pectization

-pectize

-pectized

-pectizes

-pectizing

-peculiarize

-peculiarizes

-pedaler

-pedalers

-pedantize

-pedantizes

-pedestaled

-pedestaling

-pedestrianization

-pedestrianize

-pedestrianized

-pedestrianizes

-pedestrianizing

-pelletization

-pelletizations

-pelletize

-pelletized

-pelletizer

-pelletizes

-pelletizing

-pemmicanization

-pemmicanization's

-pemmicanizations

-pemmicanize

-pemmicanizes

-penalizable

-penalizable's

-penalizables

-penalization

-penalization's

-penalizations

-penciler

-pencilers

-peptizable

-peptizable's

-peptizables

-peptization

-peptization's

-peptizations

-peptize

-peptized

-peptizer

-peptizers

-peptizes

-peptonization

-peptonize

-peptonized

-peptonizes

-peptonizing

-percussionize

-percussionizes

-perennialize

-perennializes

-perfectivize

-perfectivizes

-periled

-periling

-periodicalize

-periodicalizes

-periodization

-periodizations

-periodize

-periodized

-periodizes

-periodizing

-peroxidize

-peroxidizement

-peroxidizement's

-peroxidizements

-peroxidizes

-personization

-personization's

-personizations

-personize

-personizes

-petrolization

-petrolization's

-petrolizations

-petrolize

-petrolizes

-phagocytize

-phagocytizes

-phantomize

-phantomizer

-phantomizers

-phantomizes

-phenolization

-phenolization's

-phenolizations

-phenolize

-phenolizes

-phenomenalization

-phenomenalization's

-phenomenalizations

-phenomenalize

-phenomenalizes

-philanthropize

-philanthropizes

-philosophization

-philosophization's

-philosophizations

-phlebotomization

-phlebotomize

-phlebotomized

-phlebotomizes

-phlebotomizing

-phoneticization

-phoneticization's

-phoneticizations

-phoneticize

-phoneticizes

-phosphatization

-phosphatization's

-phosphatizations

-phosphatize

-phosphatized

-phosphatizes

-phosphatizing

-phosphorize

-phosphorizes

-photocatalyzer

-photocatalyzer's

-photocatalyzers

-photographize

-photographizes

-photoionization

-photoionization's

-photoionizations

-photoisomerization

-photoisomerization's

-photoisomerizations

-photolabeled

-photolabeler

-photolabeling

-photolyzable

-photolyze

-photolyzed

-photolyzes

-photolyzing

-photopolymerization

-photopolymerization's

-photopolymerizations

-photosensitization

-photosensitization's

-photosensitizations

-photosensitize

-photosensitized

-photosensitizer

-photosensitizers

-photosensitizes

-photosensitizing

-photosynthesize

-photosynthesized

-photosynthesizes

-photosynthesizing

-piaster

-picogram

-picogram's

-picograms

-picometer

-picometer's

-picometers

-pictorialization

-pictorialization's

-pictorializations

-pictorialize

-pictorialized

-pictorializes

-pictorializing

-picturization

-picturization's

-picturizations

-picturize

-picturized

-picturizes

-picturizing

-pidginization

-pidginize

-pidginized

-pidginizes

-pidginizing

-pigmentize

-pigmentizes

-pilgrimize

-pilgrimizes

-pillarize

-pillarizes

-piratize

-piratizes

-pistoled

-pistoling

-plagiarization

-plagiarization's

-plagiarizations

-plagiarize

-plagiarized

-plagiarizer

-plagiarizers

-plagiarizes

-plagiarizing

-plasmolyze

-plasticization

-plasticization's

-plasticizations

-plasticize

-plasticized

-plasticizer

-plasticizers

-plasticizes

-plasticizing

-platinization

-platinization's

-platinizations

-platitudinization

-platitudinize

-platitudinized

-platitudinizes

-platitudinizing

-platonization

-platonize

-platonized

-platonizes

-platonizing

-plebeianize

-plebeianizes

-plowable

-plowboy

-plowhead

-poeticization

-poeticize

-poeticized

-poeticizes

-poeticizing

-poetization

-poetization's

-poetizations

-poetize

-poetized

-poetizer

-poetizers

-poetizes

-poetizing

-pogromize

-pogromizes

-polarizabilities

-polarizability

-polarizability's

-polarizable

-polarizable's

-polarizables

-polemicize

-polemicized

-polemicizes

-polemicizing

-polemize

-polemized

-polemizes

-polemizing

-policize

-policizer

-policizers

-policizes

-politicalize

-politicalizes

-politicization

-politicize

-politicizer

-politicizers

-politicizes

-politicizing

-politize

-politizes

-pollenizer

-pollinize

-pollinized

-pollinizer

-pollinizes

-pollinizing

-polychromatize

-polychromatizes

-polychromize

-polychromizes

-polygamize

-polygamizes

-polymerization

-polymerization's

-polymerize

-polymerizes

-polysulphurization

-polysulphurization's

-polysulphurizations

-pommeled

-pommeling

-porcelainization

-porcelainization's

-porcelainizations

-porcelainize

-porcelainizes

-portionize

-portionizes

-positivize

-positivizes

-posterize

-posterizes

-postsynchronization

-posturize

-posturizes

-potentialization

-potentialization's

-potentializations

-potentialize

-potentializes

-potentize

-potentizes

-powderization

-powderization's

-powderizations

-powderize

-powderizer

-powderizers

-powderizes

-practicalization

-practicalization's

-practicalizations

-practicalize

-practicalizer

-practicalizers

-practicalizes

-preacherize

-preacherizes

-preacknowledgment

-preacknowledgment's

-preacknowledgments

-preanesthetic

-preanesthetics

-prebaptize

-prebaptizes

-precancelation

-precisionize

-precisionizes

-precivilization

-precivilization's

-precivilizations

-precolor

-precolor's

-precolorable

-precolorable's

-precolorables

-precoloring

-precolorings

-precolors

-preconization

-preconization's

-preconizations

-preconize

-preconizer

-preconizers

-preconizes

-precriticize

-precriticizes

-prefavor

-prefavor's

-prefavorable

-prefavorable's

-prefavorables

-prefavorablies

-prefavorably

-prefavorite

-prefavorite's

-prefavorites

-prefavors

-prefertilization

-prefertilization's

-prefertilizations

-prefertilize

-prefertilizes

-preflavor

-preflavor's

-preflavoring

-preflavorings

-preflavors

-pregalvanize

-pregalvanizes

-prehumor

-prehumor's

-prehumors

-prejudgment

-prejudgment's

-prejudgments

-prelabor

-prelabor's

-prelabors

-prelatize

-prelatizes

-prelocalization

-prelocalization's

-prelocalizations

-preludize

-preludizes

-premonopolize

-premonopolizes

-preoffense

-preoffense's

-preoffenses

-preorganization

-preorganization's

-preorganizations

-preorganize

-preorganizes

-preoxidize

-preoxidized

-preoxidizes

-preoxidizing

-preprogram

-prerecognize

-prerecognizes

-prespecialize

-prespecializes

-presplendor

-presplendor's

-presplendors

-pressurization

-prestandardization

-prestandardization's

-prestandardizations

-prestandardize

-prestandardizes

-presympathize

-presympathizes

-preutilizable

-preutilizable's

-preutilizables

-preutilization

-preutilization's

-preutilizations

-preutilize

-preutilizes

-prioritization

-priorization

-priorizations

-priorize

-priorized

-priorizes

-priorizing

-privatization

-privatize

-privatized

-privatizing

-problemize

-problemizes

-processionize

-processionizes

-proctorization

-proctorization's

-proctorizations

-proctorize

-proctorizes

-prodigalize

-prodigalizes

-profanize

-profanizes

-professionalization

-professionalization's

-professionalizations

-professionalize

-professionalized

-professionalizes

-professionalizing

-professionize

-professionizes

-programist

-programist's

-programistic

-programistics

-programists

-proletarianize

-proletarianizes

-proletarianizing

-prologize

-prologuize

-prologuizer

-prologuizers

-prologuizes

-prolusionize

-prolusionizes

-propagandize

-propagandized

-propagandizes

-propagandizing

-prophetize

-prophetizes

-propositionize

-propositionizes

-propretor

-proselytization

-proselytization's

-proselytizations

-protectionize

-protectionizes

-protocoled

-protocoling

-protocolization

-protocolization's

-protocolizations

-protocolize

-protocolizes

-proverbialize

-proverbializes

-proverbize

-proverbizes

-provincialization

-provincialization's

-provincializations

-provincialize

-provincializes

-pseudoanemia

-pseudoanemia's

-pseudoanemias

-pseudoanemic

-pseudoanemics

-pseudoedema

-pseudoedema's

-pseudoedemas

-pseudographize

-pseudographizes

-psychoanalyze

-psychoanalyzer

-psychoanalyzer's

-psychoanalyzers

-psychoanalyzes

-psychologization

-psychologize

-psychologized

-psychologizes

-psychologizing

-psycoanalyze

-puebloization

-puebloization's

-puebloizations

-puebloize

-puebloizes

-pulpitize

-pulpitizes

-pulverizable

-pulverizable's

-pulverizables

-pulverization

-pulverization's

-pulverizations

-pummeler

-pummeling

-pupilize

-pupilizes

-puppetize

-puppetizes

-pyorrheal

-pyramidize

-pyramidizes

-pyridinize

-pyridinizes

-pyritization

-pyritization's

-pyritizations

-pyritize

-pyritizes

-pyrolyzable

-pyrolyzate

-pythonize

-pythonizes

-quarrelous

-quarterization

-quarterization's

-quarterizations

-quininize

-quininizes

-racemization

-racemize

-racemized

-racemizes

-racemizing

-racialization

-racialization's

-racializations

-racialize

-racializes

-radialization

-radialization's

-radializations

-radialize

-radializes

-radicalization

-radicalization's

-radicalizations

-radicalize

-radicalized

-radicalizes

-radicalizing

-radiosterilize

-radiosterilizes

-radiosterilizing

-radiumization

-radiumization's

-radiumizations

-radiumize

-radiumizes

-rapturize

-rapturizes

-rascalize

-rascalizes

-rationalizable

-rationalizable's

-rationalizables

-raveled

-raveler

-ravelers

-raveling

-ravelings

-reacclimatize

-reactualize

-realisticize

-realisticizes

-reanimalize

-reanimalizes

-reapologize

-reauthorize

-rebaptization

-rebaptization's

-rebaptizations

-rebourbonize

-rebourbonizes

-rebrutalize

-recanalization

-recapitalize

-recarbonize

-recausticize

-recausticizes

-recentralize

-reciprocalize

-reciprocalizes

-recivilize

-recolonize

-recolor

-recolor's

-recoloring

-reconnoiter

-reconnoitered

-reconnoiterer

-reconnoiterer's

-reconnoiterers

-reconnoitering

-reconnoiters

-recriticize

-redialer

-redialing

-refavor

-refavor's

-refertilize

-reflectorize

-reflectorized

-reflectorizes

-reflectorizing

-reforestization

-reforestization's

-reforestize

-reforestizes

-regalize

-regalizes

-regalvanization

-regalvanization's

-regalvanizations

-regalvanize

-regalvanizes

-regionalization

-regionalization's

-regionalizations

-regionalize

-regionalized

-regionalizes

-regionalizing

-regularization

-regularization's

-regularizations

-regularize

-regularized

-regularizer

-regularizers

-regularizes

-reharmonize

-rehonor

-rehonor's

-rehumanization

-rehumanize

-rehybridize

-rehybridizes

-reinitialization

-reitemize

-relativization

-relativization's

-relativizations

-relativize

-relativized

-relativizes

-relativizing

-religionize

-religionizes

-remagnetize

-remagnetizes

-rematerialize

-rememorize

-remilitarization

-remilitarize

-remineralization

-remineralization's

-remineralizations

-remineralize

-remineralizes

-remobilize

-rencounter

-renormalization

-renormalize

-renormalizing

-reobjectivization

-reobjectivization's

-reobjectivizations

-reobjectivize

-reobjectivizes

-reorganizational

-reorganizationist

-reorganizationist's

-reorganizationists

-reoxidize

-reoxygenize

-reoxygenizes

-repaganization

-repaganization's

-repaganizations

-repaganize

-repaganizer

-repaganizers

-repaganizes

-repatronize

-repersonalize

-rephosphorization

-rephosphorization's

-rephosphorizations

-rephosphorize

-rephosphorizes

-repolymerization

-repolymerization's

-repolymerizations

-repolymerize

-repolymerizes

-reprivatization

-reprivatization's

-reprivatizations

-reprivatize

-reprivatizes

-republicanization

-republicanization's

-republicanizations

-republicanize

-republicanized

-republicanizer

-republicanizers

-republicanizes

-republicanizing

-repulverize

-reroyalize

-reroyalizes

-resensitization

-resensitization's

-resensitizations

-resensitize

-resensitizes

-resepulcher

-resinize

-resinizes

-resolemnize

-resolemnizes

-restandardize

-resterilize

-restigmatize

-restigmatizes

-resurrectionize

-resurrectionizes

-resymbolize

-resynchronization

-resynchronize

-resynchronizing

-resynthesize

-retinize

-retinizes

-retranquilize

-reutilize

-revalorization

-revalorization's

-revalorizations

-revalorize

-revalorized

-revalorizes

-revalorizing

-revaporize

-revaporizes

-revelationize

-revelationizes

-revisualize

-revitalization's

-revitalizations

-revivalize

-revivalizes

-revolatilize

-revolatilizes

-revolutionizement

-revolutionizement's

-revolutionizements

-rhapsodize

-rhapsodized

-rhapsodizes

-rhapsodizing

-rhythmicize

-rhythmicizes

-rhythmizable

-rhythmizable's

-rhythmizables

-rhythmization

-rhythmization's

-rhythmizations

-rhythmize

-rhythmizes

-ridiculize

-ridiculizes

-ritualization

-ritualize

-ritualizes

-ritualizing

-rivaless

-rivalesses

-rivalize

-rivalizes

-robotization

-robotization's

-robotizations

-robotize

-robotizes

-roentgenize

-romanticization

-routinization

-routinization's

-routinizations

-routinize

-routinizes

-roweled

-roweling

-royalization

-royalization's

-royalizations

-royalize

-royalizes

-rubberization

-rubberize

-rubberizes

-rubberizing

-rubricize

-rubricizes

-ruffianize

-ruffianizes

-ruggedization

-ruggedize

-ruggedized

-ruggedizes

-ruggedizing

-rumormonger

-rumormonger's

-rumormongers

-ruralization

-ruralization's

-ruralizations

-ruralize

-ruralized

-ruralizes

-ruralizing

-russianization

-russianize

-rusticize

-rusticizes

-saberlike

-saberlike's

-saberlikes

-sabertooth

-sacralization

-sacralization's

-sacralizations

-sacramentize

-sacramentizes

-sailorizing

-sailorizing's

-sailorizings

-salinization

-salinize

-salinizes

-saltpeter

-saltpeter's

-saltpeters

-sandaled

-sandaling

-sanitization

-sapientize

-sapientizes

-satanize

-satanizes

-satinize

-satinizes

-satirizable

-satirizable's

-satirizables

-satirize

-satirized

-satirizer

-satirizers

-satirizing

-savagize

-savagizes

-saviorhood

-saviorhood's

-saviorhoods

-saviorship

-saviorship's

-saviorships

-savorilies

-savorily

-savorless

-savorlesses

-savorous

-scandaled

-scandaling

-scandalization

-scandalization's

-scandalizations

-scandalize

-scandalizer

-scandalizers

-scandalizes

-scenarioization

-scenarioization's

-scenarioizations

-scenarioize

-scenarioizes

-scenarization

-scenarization's

-scenarizations

-scenarize

-scenarizes

-scepterless

-scepterlesses

-schedulize

-schedulizes

-schematization

-schematization's

-schematizations

-schematize

-schematized

-schematizer

-schematizers

-schematizes

-schematizing

-schismatize

-schismatized

-schismatizes

-schismatizing

-sclerotization

-sclerotized

-scripturalize

-scripturalizes

-scrutinization

-scrutinization's

-scrutinizations

-seborrhea

-seborrheic

-sectarianization

-sectarianize

-sectarianized

-sectarianizes

-sectarianizing

-sectionalization

-sectionalization's

-sectionalizations

-sectionalize

-sectionalizes

-sectionalizing

-sectionize

-sectionizes

-secularize

-secularizer

-secularizers

-secularizes

-secularizing

-semicarbonize

-semicarbonizes

-semicivilization

-semicivilization's

-semicivilizations

-semicivilized

-semicivilized's

-semicivilizeds

-semifossilized

-semifossilized's

-semifossilizeds

-semihonor

-semihonor's

-semihonors

-semihumanized

-semihumanized's

-semihumanizeds

-semimercerized

-semimercerized's

-semimercerizeds

-semimineralized

-semimineralized's

-semimineralizeds

-seminarize

-seminarizes

-seminationalization

-seminationalization's

-seminationalizations

-semiorganized

-semiorganized's

-semiorganizeds

-semioxidized

-semioxidized's

-semioxidizeds

-semioxygenized

-semioxygenized's

-semioxygenizeds

-semiprofessionalized

-semiprofessionalized's

-semiprofessionalizeds

-semivulcanized

-semivulcanized's

-semivulcanizeds

-senilize

-senilizes

-sensationalize

-sensationalized

-sensationalizes

-sensationalizing

-sensitization

-sensitization's

-sensitizations

-sensitize

-sensitizer

-sensitizers

-sensitizes

-sensitizing

-sensize

-sensizes

-sensualization

-sensualization's

-sensualizations

-sensualize

-sensualized

-sensualizes

-sensualizing

-sentimentalization

-sentimentalization's

-sentimentalizations

-sentineled

-sentineling

-sepaled

-septicization

-septicization's

-septicizations

-sepulchralize

-sepulchralizes

-serenize

-serenizes

-serializability

-serializable

-sermonize

-sermonized

-sermonizer

-sermonizers

-sermonizes

-sermonizing

-serpentinization

-serpentinization's

-serpentinizations

-serpentinize

-serpentinizes

-serpentize

-serpentizes

-servilize

-servilizes

-severalize

-severalizes

-severization

-severization's

-severizations

-severize

-severizes

-sexualization

-sexualization's

-sexualizations

-sexualize

-sexualizes

-shepherdize

-shepherdizes

-siderealize

-siderealizes

-signalization

-signalize

-signalized

-signalizing

-signatories

-silicatization

-silicatization's

-silicatizations

-silicidize

-silicidizes

-siliconize

-siliconizes

-silverize

-silverizer

-silverizers

-silverizes

-similarize

-similarizes

-similize

-similizes

-simonize

-singularization

-singularization's

-singularizations

-singularize

-singularizes

-sinicize

-sinicized

-sinicizes

-sinicizing

-siphonless

-siphonlesses

-siphonlike

-siphonlike's

-siphonlikes

-siphonophore

-siphonostele

-siphonostelic

-siphonostely

-sirenize

-sirenizes

-sisterize

-sisterizes

-skeletonization

-skeletonization's

-skeletonizations

-skeletonize

-skeletonized

-skeletonizer

-skeletonizers

-skeletonizes

-skeletonizing

-skepticize

-skepticizes

-slenderize

-slenderized

-slenderizes

-slenderizing

-sloganize

-sloganizes

-snobsniveling

-soberize

-soberized

-soberizes

-soberizing

-sockdologizing

-solarization

-solarization's

-solarizations

-solarize

-solarized

-solarizes

-solarizing

-soldierize

-soldierizes

-solecize

-solecized

-solecizes

-solecizing

-solemnization

-solemnization's

-solemnizations

-solemnize

-solemnized

-solemnizer

-solemnizers

-solemnizes

-solemnizing

-soliloquization

-soliloquize

-soliloquized

-soliloquizer

-soliloquizers

-soliloquizes

-soliloquizing

-soliloquizing's

-soliloquizingly

-soliloquizings

-solmization

-solubilization

-solubilize

-solubilized

-solubilizes

-solubilizing

-solutize

-solutizer

-solutizers

-solutizes

-sonantized

-sonantized's

-sonantizeds

-sonnetize

-sonnetizes

-southernize

-southernizes

-sovietization

-sovietization's

-sovietizations

-sovietize

-sovietizes

-spatialization

-spatialization's

-spatializations

-spatialize

-spatializes

-specificize

-specificizes

-specimenize

-specimenizes

-specterlike

-specterlike's

-specterlikes

-spheroidize

-spheroidizes

-spiralization

-spiralization's

-spiralizations

-spiralize

-spiralizes

-spiritize

-spiritizes

-spiritualization

-spiritualization's

-spiritualizations

-spiritualize

-spiritualized

-spiritualizer

-spiritualizers

-spiritualizes

-spiritualizing

-spirochetal

-spirochete

-spirochete's

-spirochetes

-spirochetosis

-splenectomized

-stabilizable

-stallionize

-stallionizes

-stalwartize

-stalwartizes

-standardizable

-standardizable's

-standardizables

-stapedectomized

-statisticize

-statisticizes

-stencilize

-sterilizabilities

-sterilizability

-sterilizability's

-sterilizable

-sterilizable's

-sterilizables

-stigmatize

-stigmatizer

-stigmatizers

-stigmatizes

-stigmatizing

-strobilization

-structuralization

-structuralization's

-structuralizations

-structuralize

-structuralizes

-strychninization

-strychninization's

-strychninizations

-strychninize

-strychninizes

-stylize

-stylizer

-stylizers

-stylizes

-stylizing

-subarmor

-subarmor's

-subarmors

-subcenter

-suberization

-suberization's

-suberizations

-suberize

-suberized

-suberizes

-suberizing

-subflavor

-subflavor's

-subflavors

-subjectivization

-subjectivize

-subjectivizes

-sublimize

-sublimizes

-subminiaturization

-subminiaturize

-subminiaturized

-subminiaturizes

-subminiaturizing

-subpulverizer

-subpulverizer's

-subpulverizers

-subsidizable

-subsidizable's

-subsidizables

-subspecialize

-subspecializes

-subspecialties

-subspecialty

-subspecialty's

-substandardize

-substandardizes

-substantialize

-substantializes

-substantivize

-substantivizes

-subterraneanize

-subterraneanizes

-subtilization

-subtilization's

-subtilizations

-subtilize

-subtilizer

-subtilizers

-subtilizes

-subtotaled

-subtotaling

-suburbanize

-suburbanizes

-subvitalized

-subvitalized's

-subvitalizeds

-succorable

-succorable's

-succorables

-succorless

-succorlesses

-suggestionize

-suggestionizes

-sulfatize

-sulfatizes

-sulfurization

-sulfurization's

-sulfurizations

-sulfurize

-sulfurizes

-sulphurization

-sulphurization's

-sulphurizations

-sulphurize

-sulphurizes

-sultanize

-sultanizes

-summerize

-summerizes

-superacknowledgment

-superacknowledgment's

-superacknowledgments

-supercanonization

-supercanonization's

-supercanonizations

-supercarbonization

-supercarbonization's

-supercarbonizations

-supercarbonize

-supercarbonizes

-supercivilization

-supercivilization's

-supercivilizations

-supercivilized

-supercivilized's

-supercivilizeds

-superemphasize

-superemphasizes

-superficialize

-superficializes

-superhumanize

-superhumanizes

-supernaturalize

-supernaturalizes

-superorganization

-superorganization's

-superorganizations

-superorganize

-superorganizes

-supersensitization

-supersensitization's

-supersensitizations

-superspecialize

-superspecializes

-supersubtilized

-supersubtilized's

-supersubtilizeds

-supersulphurize

-supersulphurizes

-surgerize

-surgerizes

-sycophantize

-sycophantizes

-syllogize

-sylvanize

-sylvanizes

-symmetrization

-symmetrization's

-symmetrizations

-symmetrize

-symmetrized

-symmetrizes

-symmetrizing

-symptomize

-symptomizes

-synchronizable

-synchronizable's

-synchronizables

-syncretize

-syncretized

-syncretizes

-syncretizing

-syndicalize

-syndicalizes

-synesthesia

-synesthetic

-synonymize

-synonymizes

-synopsize

-synthesization

-synthesization's

-synthesizations

-systemizable

-systemizable's

-systemizables

-systemize

-systemizer

-systemizers

-systemizes

-taboret

-taborets

-tabularization

-tabularization's

-tabularizations

-tabularize

-tabularizes

-taffetized

-tailorization

-tailorization's

-tailorizations

-tailorize

-tailorizes

-tambura

-tandemize

-tandemizes

-tantalization

-tantalization's

-tantalizations

-tariffize

-tariffizes

-tartarization

-tartarization's

-tartarizations

-tartarize

-tartarized

-tartarizes

-tasseled

-tasseling

-tassels

-tavernize

-tavernizes

-teaseler

-teaselers

-teazeled

-teazeling

-technicalization

-technicalize

-technicalizes

-technologize

-teetotaled

-teetotaling

-telesthesia

-telesthetic

-tellurize

-tellurized

-tellurizes

-tellurizing

-templize

-templizes

-temporalize

-temporalized

-temporalizes

-temporalizing

-temporization

-temporization's

-temporizations

-tenderization

-tenderize

-tenderized

-tenderizer

-tenderizes

-tenderizing

-tendriled

-tenementization

-tenementization's

-tenementizations

-tenementize

-tenementizes

-terminalization

-terminalization's

-terminalizations

-terminalized

-terminalized's

-terminalizeds

-ternize

-ternizes

-terrestrialize

-terrestrializes

-territorialization

-territorialization's

-territorializations

-territorialize

-territorializes

-terrorization

-terrorization's

-terrorizations

-testimonialization

-testimonialization's

-testimonializations

-testimonialize

-testimonializer

-testimonializers

-testimonializes

-tetanization

-tetanize

-tetanized

-tetanizes

-tetanizing

-teutonize

-texturized

-theaterless

-theaterlesses

-theaterlike

-theaterlike's

-theaterlikes

-theatricalization

-theatricalization's

-theatricalizations

-theatricalize

-theatricalized

-theatricalizes

-theatricalizing

-theatricize

-theatricizes

-theologization

-theologize

-theologized

-theologizer

-theologizes

-theologizing

-thermoanesthesia

-thermoanesthesia's

-thermoanesthesias

-thermometerize

-thermometerizes

-thermopolymerization

-thermopolymerization's

-thermopolymerizations

-thermosiphon

-thermosiphon's

-thermosiphons

-thronize

-thronizes

-thymectomize

-thyroidectomized

-thyroidization

-thyroidization's

-thyroidizations

-tinselier

-tinseliest

-tittuped

-tittuping

-tittupy

-tonicize

-tonicizes

-torporize

-torporizes

-totalitarianize

-totalization

-totalization's

-totalizations

-totalizator

-totalize

-totalized

-totalizer

-totalizers

-totalizes

-totalizing

-totemization

-totemization's

-totemizations

-tourize

-tourizes

-tractorization

-tractorization's

-tractorizations

-tractorize

-tractorizes

-traditionalize

-traditionalizes

-traditionize

-traditionizes

-tragicize

-tragicizes

-traitorize

-traitorizes

-trammeled

-trammeler

-trammelers

-trammeling

-tranquilization

-tranquilization's

-tranquilizations

-tranquillization

-tranquillize

-tranquillized

-tranquillizer

-tranquillizers

-tranquillizes

-tranquillizing

-transcendentalize

-transcendentalizes

-transistorization

-transparentize

-transparentizes

-traumatization

-traumatize

-traumatized

-traumatizes

-traumatizing

-triangularize

-triangularized

-triangularizes

-triangularizing

-trichinize

-trillionize

-trillionizes

-trimerization

-trimerization's

-trimerizations

-trivialization

-tropicalization

-tropicalization's

-tropicalizations

-tropicalize

-tropicalized

-tropicalizes

-tropicalizing

-troweled

-troweling

-trypsinize

-trypsinizes

-tuberculinization

-tuberculinization's

-tuberculinizations

-tuberculinize

-tuberculinizes

-tuberization

-tuberization's

-tuberizations

-tuberize

-tuberizes

-tubulization

-tubulization's

-tubulizations

-tutorization

-tutorization's

-tutorizations

-tutorize

-tutorizes

-ultracentralizer

-ultracentralizer's

-ultracentralizers

-ultrahonorable

-ultrahonorable's

-ultrahonorables

-ultraspecialization

-ultraspecialization's

-ultraspecializations

-ultrastandardization

-ultrastandardization's

-ultrastandardizations

-unagonize

-unalcoholized

-unalcoholized's

-unalcoholizeds

-unanimalized

-unanimalized's

-unanimalizeds

-unantagonizable

-unantagonizable's

-unantagonizables

-unapostatized

-unapostatized's

-unapostatizeds

-unauthorize

-unbaptize

-unbrutalize

-unbrutize

-unbrutizes

-uncanonize

-uncanonizes

-uncantonized

-uncantonized's

-uncantonizeds

-uncatechized

-uncatechized's

-uncatechizedness

-uncatechizeds

-uncatholicize

-uncatholicizes

-uncelestialized

-uncelestialized's

-uncelestializeds

-unchloridized

-unchloridized's

-unchloridizeds

-unchristianize

-unchristianized

-unchristianizes

-uncircularized

-uncircularized's

-uncircularizeds

-uncivilizable

-uncivilizable's

-uncivilizables

-uncivilize

-unclericalize

-unclericalizes

-uncolonize

-uncolorable

-uncolorable's

-uncolorables

-uncolorablies

-uncolorably

-unconventionalize

-unconventionalizes

-uncriticizable

-uncriticizable's

-uncriticizables

-uncrystallizabilities

-uncrystallizability

-uncrystallizability's

-uncrystallizable

-uncrystallizable's

-uncrystallizables

-uncurricularized

-uncurricularized's

-uncurricularizeds

-undefense

-undefense's

-undemagnetizable

-undemagnetizable's

-undemagnetizables

-undemocratize

-undenominationalize

-undenominationalizes

-undercapitalization

-undercapitalization's

-undercapitalizations

-undercapitalize

-undercapitalized

-undercapitalizes

-undercapitalizing

-undercolor

-undercolor's

-undercolored

-undercoloring

-undercolorings

-undercolors

-underemphasize

-underemphasized

-underemphasizes

-underemphasizing

-underlaborer

-underlaborer's

-underlaborers

-underorganization

-underorganization's

-underorganizations

-underoxidize

-underoxidizes

-underrealize

-underrealizes

-undersavior

-undersavior's

-undersaviors

-underutilize

-undervitalized

-undervitalized's

-undervitalizeds

-undiphthongize

-undiphthongizes

-undiscolored

-undiscolored's

-undramatizable

-undramatizable's

-undramatizables

-undualize

-undualizes

-unenamored

-unenamored's

-unenamoreds

-unequalize

-unevangelized

-unevangelized's

-unevangelizeds

-unfavoring

-unfavoring's

-unfertilizable

-unfertilizable's

-unfertilizables

-unfeudalize

-unfeudalized

-unfeudalizes

-ungalvanized

-ungalvanized's

-ungalvanizeds

-ungelatinizable

-ungelatinizable's

-ungelatinizables

-ungelatinized

-ungelatinized's

-ungelatinizeds

-ungentilize

-ungentilizes

-ungentlemanize

-ungentlemanizes

-ungospelized

-ungospelized's

-ungospelizeds

-ungraphitized

-ungraphitized's

-ungraphitizeds

-unharbor

-unharbor's

-unharbored

-unharmonize

-unheroize

-unheroizes

-unhonorable

-unhonorable's

-unhouseled

-unhypnotizable

-unhypnotizable's

-unhypnotizables

-unhypnotize

-unhypnotizes

-uniformization

-uniformization's

-uniformizations

-uniformize

-uniformizes

-unilateralization

-unilateralization's

-unilateralizations

-unilateralize

-unilateralizes

-unimmortalize

-unimmortalizes

-unindividualize

-uninitializable

-unionization's

-unionizations

-unitization

-unitize

-unitizes

-unitizing

-universalization

-universalization's

-universalizations

-unkenneled

-unkenneling

-unlabialize

-unlabializes

-unlaborable

-unlaborable's

-unlaborables

-unlaboring

-unlaboring's

-unlocalizable

-unlocalizable's

-unlocalizables

-unlocalize

-unmechanize

-unmediatized

-unmediatized's

-unmediatizeds

-unmercerized

-unmercerized's

-unmercerizeds

-unmesmerize

-unmesmerizes

-unmetalized

-unmetalized's

-unmetalizeds

-unmethodized

-unmethodized's

-unmethodizeds

-unmethodizing

-unmethodizing's

-unmethodizings

-unmissionized

-unmissionized's

-unmissionizeds

-unmodernize

-unmonopolize

-unmonopolizing

-unmonopolizings

-unmoralize

-unmoralized

-unmoralizes

-unmoralizing

-unmoralizings

-unmunicipalized

-unmunicipalized's

-unmunicipalizeds

-unmutualized

-unmutualized's

-unmutualizeds

-unmysticize

-unmysticizes

-unnaturalizable

-unnaturalizable's

-unnaturalizables

-unnaturalize

-unnaturalizes

-unneighborlike

-unneighborlike's

-unneighborlikes

-unnitrogenized

-unnitrogenized's

-unnitrogenizeds

-unnormalize

-unnormalizing

-unoptimize

-unoptimizing

-unoxidizable

-unoxidizable's

-unoxidizables

-unoxygenized

-unoxygenized's

-unoxygenizeds

-unpaganize

-unpaganizes

-unparagonized

-unparagonized's

-unparagonizeds

-unparalyzed

-unparalyzed's

-unparalyzeds

-unparticularized

-unparticularized's

-unparticularizeds

-unparticularizing

-unparticularizing's

-unparticularizings

-unpatronizable

-unpatronizable's

-unpatronizables

-unpauperized

-unpauperized's

-unpauperizeds

-unphilosophize

-unphosphatized

-unphosphatized's

-unphosphatizeds

-unplagiarized

-unplagiarized's

-unplagiarizeds

-unpoeticized

-unpoeticized's

-unpoeticizeds

-unpoetize

-unpoetized

-unpoetizes

-unpolarizable

-unpolarizable's

-unpolarizables

-unpolymerized

-unpolymerized's

-unpolymerizeds

-unpopularize

-unprotestantize

-unprotestantizes

-unpulverize

-unradicalize

-unradicalizes

-unrancored

-unrancored's

-unrancoreds

-unraveler

-unravelers

-unrealizable

-unrealizable's

-unrealizables

-unrealize

-unrealizing

-unrealizings

-unreconnoitered

-unreconnoitered's

-unreconnoitereds

-unrevelationize

-unrevelationizes

-unromanticized

-unromanticized's

-unromanticizeds

-unroyalized

-unroyalized's

-unroyalizeds

-unsatirize

-unsatirized

-unsavorilies

-unsavorily

-unscandalize

-unscandalizes

-unscepter

-unscepter's

-unsceptered

-unschematized

-unschematized's

-unschematizeds

-unsectarianize

-unsectarianizes

-unsecularize

-unsecularizes

-unsensitize

-unsensitizes

-unsensualize

-unsensualized

-unsensualizes

-unsentimentalize

-unsepulcher

-unsepulchered

-unsignalized

-unsignalized's

-unsignalizeds

-unsiphon

-unsiphon's

-unsolemnize

-unsolemnized

-unsolemnizes

-unspecterlike

-unspecterlike's

-unspecterlikes

-unspiritualize

-unspiritualized

-unspiritualizes

-unstoicize

-unstoicizes

-unsubstantialize

-unsubstantializes

-unsuccorable

-unsuccorable's

-unsuccorables

-unsulphurized

-unsulphurized's

-unsulphurizeds

-unsupernaturalize

-unsupernaturalized

-unsupernaturalizes

-unsymmetrized

-unsymmetrized's

-unsymmetrizeds

-unsympathizabilities

-unsympathizability

-unsympathizability's

-unsympathizable

-unsympathizable's

-unsympathizables

-unsystemizable

-unsystemizable's

-unsystemizables

-untantalizing

-untantalizing's

-untantalizings

-untartarized

-untartarized's

-untartarizeds

-untechnicalize

-untechnicalizes

-untemporizing

-untemporizing's

-untheorizable

-untheorizable's

-untheorizables

-unutilizable

-unutilizable's

-unutilizables

-unvaporized

-unvaporized's

-unvaporizeds

-unvectorizable

-unvitalized

-unvitalized's

-unvitalizeds

-unvitriolized

-unvitriolized's

-unvitriolizeds

-unvolatilize

-unvolatilized

-unvolatilizes

-unvulgarize

-unvulgarized

-unvulgarizes

-unwesternized

-unwesternized's

-unwesternizeds

-unwomanize

-urbanize

-urbanizes

-urbanizing

-utilitarianize

-utilitarianizes

-utilizabilities

-utilizability

-utilizable

-utilizable's

-utilizables

-utopianizer

-utopianizer's

-utopianizers

-vaccinization

-vaccinization's

-vaccinizations

-vacuumize

-vacuumized

-vacuumizes

-vacuumizing

-vagabondize

-vagabondizer

-vagabondizers

-vagabondizes

-vagrantize

-vagrantizes

-valorization

-valorization's

-valorizations

-valorize

-valorized

-valorizes

-valorizing

-vampirize

-vampirizes

-vandalization

-vandalization's

-vandalizations

-vaporabilities

-vaporability

-vaporability's

-vaporable

-vaporable's

-vaporables

-vaporier

-vaporiest

-vaporish

-vaporishness

-vaporizable

-vaporizable's

-vaporizables

-vaporize

-vaporized

-vaporizer

-vaporizers

-vaporizes

-vaporizing

-vaporless

-vaporlesses

-vaporlike

-vaporlike's

-vaporlikes

-vapory

-vascularization

-vascularization's

-vascularizations

-vascularize

-vascularized

-vascularizes

-vascularizing

-vassalization

-vassalize

-vassalized

-vassalizes

-vassalizing

-vectorizable

-vectorize

-vectorized

-vectorizer

-vectorizers

-vectorizes

-vegetablize

-vegetablizes

-velarization

-venalization

-venalization's

-venalizations

-venalize

-venalizes

-venomization

-venomization's

-venomizations

-venomize

-venomizes

-ventriloquize

-ventriloquized

-ventriloquizes

-ventriloquizing

-verbalization

-verbalization's

-verbalizations

-vermeiled

-vermeiles

-vermeiling

-vermilionize

-vermilionizes

-vernacularization

-vernacularization's

-vernacularizations

-vernacularize

-vernacularizes

-vernalization

-vernalization's

-vernalizations

-vernalize

-vernalized

-vernalizes

-vernalizing

-versicolor

-versicolored

-versionize

-versionizes

-vestryize

-vestryizes

-veteranize

-veteranizes

-vialed

-vialing

-victimizable

-victimizable's

-victimizables

-victimization

-victimization's

-victimizations

-victualage

-victualed

-victualess

-victualing

-vigorless

-virtualize

-virtualizes

-visionize

-visionizes

-vitalization

-vitalization's

-vitalizations

-vitalize

-vitalized

-vitalizer

-vitalizers

-vitalizes

-vitalizing

-vitalizing's

-vitalizingly

-vitalizings

-vitaminization

-vitaminize

-vitaminizes

-vitriolizable

-vitriolizable's

-vitriolizables

-vitriolization

-vitriolization's

-vitriolizations

-vitriolize

-vitriolizer

-vitriolizers

-vitriolizes

-vocationalization

-vocationalization's

-vocationalizations

-vocationalize

-vocationalizes

-volatilizable

-volatilizable's

-volatilizables

-volatilize

-volatilized

-volatilizer

-volatilizers

-volatilizes

-volatilizing

-voltize

-voltizes

-vowelization

-vowelization's

-vowelizations

-vowelize

-vowelized

-vowelizes

-vowelizing

-vulcanizable

-vulcanizable's

-vulcanizables

-vulcanizate

-vulcanization

-vulcanization's

-vulcanizations

-vulcanize

-vulcanizer

-vulcanizers

-vulcanizes

-vulcanizing

-vulgarization

-vulgarization's

-vulgarizations

-vulgarize

-vulgarized

-vulgarizer

-vulgarizers

-vulgarizes

-vulgarizing

-weeviled

-westernization

-westernization's

-westernizations

-westernize

-westernized

-westernizes

-westernizing

-winterization

-winterization's

-winterizations

-winterize

-winterized

-winterizes

-winterizing

-womanization

-womanization's

-womanizations

-woodcockize

-woodcockizes

-woolenization

-woolenization's

-woolenizations

-woolenize

-woolenizes

-zeroize

-zeroized

-zeroizes

-zeroizing

diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.0 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.0
deleted file mode 100644
index 4008ec0..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.0
+++ /dev/null
@@ -1,47158 +0,0 @@
-ACM

-ANSI

-ASAP

-ASCII

-ATM's

-Achilles

-Ada

-Ada's

-Afghanistan

-Afghanistan's

-Africa

-Africa's

-African

-African's

-Africans

-Airedale

-Airedale's

-Alabama

-Alabama's

-Alabamian

-Alabamian's

-Alaska

-Alaska's

-Albania

-Albania's

-Albanian

-Albanian's

-Albanians

-Alcibiades

-Alden

-Alden's

-Algeria

-Algeria's

-Algerian

-Algerian's

-Algol

-Algol's

-Allah

-Allah's

-Alyssa

-Alyssa's

-Amanda

-Amanda's

-Amdahl

-Amdahl's

-Amelia

-Amelia's

-America

-America's

-American

-American's

-Americana

-Americans

-Americas

-Ames

-Amsterdam

-Amsterdam's

-Amtrak

-Amtrak's

-Anabaptist

-Anabaptist's

-Anabaptists

-Andorra

-Andorra's

-Angeleno

-Angeleno's

-Angelenos

-Anglican

-Anglican's

-Anglicanism

-Anglicanism's

-Anglicans

-Anglophilia

-Anglophilia's

-Anglophobia

-Anglophobia's

-Angola

-Angola's

-Antarctica

-Antarctica's

-Aphrodite

-Aphrodite's

-Apollo

-Apollo's

-Apollonian

-Appalachia

-Appalachia's

-Appalachian

-Appalachian's

-Appalachians

-April

-April's

-Aprils

-Aquarius

-Arab

-Arab's

-Arabia

-Arabia's

-Arabian

-Arabian's

-Arabians

-Arabic

-Arabic's

-Arabs

-Archie

-Archie's

-Argentina

-Argentina's

-Argo

-Argo's

-Argos

-Arianism

-Arianism's

-Arianist

-Arianist's

-Arianists

-Aries

-Aristotelian

-Aristotelian's

-Aristotle

-Aristotle's

-Arizona

-Arizona's

-Arkansas

-Arkansas's

-Armageddon

-Armageddon's

-Armenian

-Armenian's

-Armour

-Armour's

-Armstrong

-Armstrong's

-Artemis

-Aryan

-Aryan's

-Aryans

-Asia

-Asia's

-Asian

-Asian's

-Asians

-Asiatic

-Asiatic's

-Asiatics

-Assyrian

-Assyrian's

-Assyriology

-Assyriology's

-Athena

-Athena's

-Athenian

-Athenian's

-Athenians

-Athens

-Atlantic

-Atlantic's

-Auckland

-Auckland's

-Audubon

-Audubon's

-Augusta

-Augusta's

-Augusts

-Austin

-Austin's

-Australia

-Australia's

-Australian

-Australian's

-Australians

-Austria

-Austria's

-Austrian

-Austrian's

-Ave

-BSD

-Babel

-Babel's

-Bach

-Bach's

-Bagrodia

-Bagrodia's

-Bagrodias

-Balkan

-Balkan's

-Balkans

-Baltic

-Baltic's

-Bangladesh

-Bangladesh's

-Bantu

-Bantu's

-Bantus

-Barbados

-Baxter

-Baxter's

-Beethoven

-Beethoven's

-Belgian

-Belgian's

-Belgians

-Belgium

-Belgium's

-Bellovin

-Bellovin's

-Belushi

-Belushi's

-Benedict

-Benedict's

-Benedictine

-Benedictine's

-Bengal

-Bengal's

-Bengali

-Bengali's

-Benzedrine

-Benzedrine's

-Bergsten

-Bergsten's

-Berkeley

-Berkeley's

-Berlin

-Berlin's

-Berliner

-Berliners

-Bermuda

-Bermuda's

-Bessel

-Bessel's

-Beverly

-Beverly's

-Bilbo

-Bilbo's

-Bolivia

-Bolivia's

-Bologna

-Bologna's

-Bolshevik

-Bolshevik's

-Bolsheviks

-Bolshevism

-Bolshevism's

-Borneo

-Borneo's

-Boston

-Boston's

-Bostonian

-Bostonian's

-Bostonians

-Botswana

-Botswana's

-Bourne

-Bourne's

-Brazil

-Brazil's

-Brazilian

-Brazilian's

-Bresenham

-Bresenham's

-Britain

-Britain's

-British

-Britisher

-Britishly

-Briton

-Briton's

-Britons

-Buehring

-Buehring's

-CDC

-CDC's

-CEO

-CMOS

-CPU

-CPU's

-CPUs

-California

-California's

-Californian

-Californian's

-Californians

-Cambridge

-Cambridge's

-Canada

-Canada's

-Carolina

-Carolina's

-Carolinas

-Cartesian

-Chinese

-Chinese's

-Christian

-Christian's

-Christians

-Christiansen

-Christmas

-Cobol

-Cobol's

-Coleman

-Coleman's

-Colorado

-Colorado's

-Comdex

-Comdex's

-Cray

-Cray's

-Crays

-Cupertino

-Cupertino's

-Czechoslovakian

-DARPA

-DARPA's

-DECNET

-DOS

-Dan

-Dan's

-DeMorgan

-DeMorgan's

-Debbie

-Debbie's

-December

-December's

-Decembers

-Delaware

-Delaware's

-Denmark

-Denmark's

-Dijkstra

-Dijkstra's

-Diophantine

-Dylan

-Dylan's

-EDP

-EGA

-EGA's

-Edsger

-Edsger's

-Ellen

-Ellen's

-Elvis

-Elvis's

-English

-English's

-Erlang

-Erlang's

-Ethernet

-Ethernet's

-Ethernets

-Europe

-Europe's

-European

-European's

-Europeans

-FIFO

-Fairbanks

-Februaries

-February

-February's

-Felder

-Florida

-Florida's

-Fortran

-Fortran's

-Fourier

-Fourier's

-France

-France's

-Frances

-French

-French's

-Friday

-Friday's

-Fridays

-GPSS

-Galvin

-Galvin's

-Garfunkel

-Geoff

-Geoff's

-Geoffrey

-Geoffrey's

-German

-German's

-Germans

-Germany

-Germany's

-Gibson

-Gibson's

-Gipsies

-Gipsy

-Gipsy's

-Godzilla

-Godzilla's

-Gothic

-Greek

-Greek's

-Greeks

-Greg

-Greg's

-Heinlein

-Heinlein's

-Hewlett

-Hewlett's

-Holland

-Holland's

-Hollander

-Hollanders

-Hollands

-Honda

-Honda's

-Hz

-I'd

-I'll

-I'm

-I've

-IBM

-IBM's

-IEEE

-ITCorp

-ITCorp's

-ITcorp

-ITcorp's

-Illinois

-Inc

-India

-India's

-Indian

-Indian's

-Indiana

-Indiana's

-Indians

-Intel

-Intel's

-Internet

-Internet's

-Iran

-Iran's

-Ireland

-Ireland's

-Israel

-Israel's

-Israeli

-Israeli's

-Israelis

-Italian

-Italian's

-Italians

-James

-Januaries

-January

-January's

-Japan

-Japan's

-Japanese

-Japanese's

-Jefferson

-Jefferson's

-Jill

-Jill's

-Johnnie

-Johnnie's

-Jr

-Julie

-Julie's

-Julies

-July

-July's

-Julys

-June

-June's

-Junes

-Klein

-Klein's

-Kleinrock

-Kleinrock's

-Kline

-Kline's

-Knuth

-Knuth's

-Kuenning

-Kuenning's

-LED's

-LEDs

-LaTeX

-LaTeX's

-Lagrangian

-Lagrangian's

-Lamport

-Lamport's

-Latin

-Latin's

-Laurie

-Laurie's

-Lenten

-Liz

-Liz's

-Lyle

-Lyle's

-MHz

-MIT

-MIT's

-MacDraw

-MacDraw's

-MacIntosh

-MacIntosh's

-MacPaint

-MacPaint's

-Mafia

-Mafia's

-Malibu

-Malibu's

-Mandelbrot

-Mandelbrot's

-Manhattan

-Manhattan's

-Manila

-Manila's

-Marianne

-Marianne's

-Mary

-Mary's

-Maryland

-Maryland's

-Marylanders

-Massachusetts

-Massey

-Massey's

-Matt

-Matt's

-Maxtor

-Maxtor's

-McElhaney

-McElhaney's

-McKenzie

-McKenzie's

-McMartin

-McMartin's

-Medusa

-Medusa's

-Michigan

-Michigan's

-Microport

-Microport's

-Microsoft

-Microsoft's

-Midwest

-Minnesota

-Minnesota's

-Monday

-Monday's

-Mondays

-Montana

-Montana's

-Montanan

-Montanan's

-Moslem

-Moslem's

-Moslems

-Motorola

-Motorola's

-Mr

-Mrs

-Ms

-Multibus

-Multibus's

-Multics

-Munsey

-Munsey's

-Muslim

-Muslim's

-Muslims

-NFS

-Nazi

-Nazi's

-Nazis

-NeWS

-Nebraska

-Nebraska's

-Nebraskan

-Nebraskan's

-Negro

-Negro's

-Negroes

-Nepal

-Nepal's

-Netherlands

-Newtonian

-November

-November's

-Novembers

-OEM

-OEM's

-OEMS

-OK

-OS

-OS's

-October

-October's

-Octobers

-Oderberg

-Oderberg's

-Oderbergs

-Oedipus

-Ohio

-Ohio's

-Oklahoma

-Oklahoma's

-Oklahoman

-Oklahoman's

-Oliver's

-PC

-PC's

-PCs

-PDP

-Packard

-Packard's

-Packards

-Palestinian

-Pascal

-Pascal's

-Pennsylvania

-Pennsylvania's

-Peter's

-Petkiewicz

-Petkiewicz's

-PhD

-Planck

-Planck's

-Poland

-Poland's

-Popek

-Popek's

-Popeks

-Prime's

-Prokofiev

-Prokofiev's

-QA

-RCS

-ROM

-RSX

-Redford

-Redford's

-Rick

-Rick's

-Ritchie

-Ritchie's

-Robert

-Robert's

-Roberts

-Robinson

-Robinson's

-Roman

-Roman's

-Romans

-Roy

-Roy's

-Rubens

-Russian

-Russian's

-Russians

-SCCS

-SMTP

-Sally's

-Salz

-Salz's

-Sam

-Sam's

-Saturday

-Saturday's

-Saturdays

-Scotland

-Scotland's

-Seagate

-Seagate's

-September

-September's

-Septembers

-Signor

-Sikkim

-Sikkim's

-Sikkimese

-Silverstein

-Silverstein's

-Singapore

-Singapore's

-Spafford

-Spafford's

-Spain

-Spain's

-Spanish

-Spanish's

-Spencer

-Spencer's

-Spuds

-Sr

-Sunday

-Sunday's

-Sundays

-TCP

-TV's

-TeX

-TeX's

-Teflon

-Teflon's

-Tektronix

-Tektronix's

-Tennessee

-Tennessee's

-Texas

-Texas's

-Texases

-Thursday

-Thursday's

-Thursdays

-Tinseltown

-Tinseltown's

-Trudeau

-Trudeau's

-Tuesday

-Tuesday's

-Tuesdays

-Turing

-Turing's

-UART

-UCLA

-UNIX's

-USC

-USC's

-USG

-USG's

-Ultrix

-Ultrix's

-Unix

-Unix's

-Usenet

-Usenet's

-Usenix

-Usenix's

-Utah

-Utah's

-VAR

-VCR

-VMS

-VMS's

-Vanessa

-Vanessa's

-Vax

-Vax's

-Ventura

-Ventura's

-Virginia

-Virginia's

-Warnock

-Warnock's

-Washington

-Washington's

-Wednesday

-Wednesday's

-Wednesdays

-Weibull

-Weibull's

-Wilbur

-Wilbur's

-Willisson

-Willisson's

-Wilson

-Wilson's

-Xenix

-Xenix's

-Xeroxed

-Xeroxes

-Xeroxing

-Yamaha

-Yamaha's

-Yentl

-Yentl's

-York

-York's

-Yorker

-Yorkers

-Yorks

-Zealand

-Zealand's

-Zulu

-Zulu's

-Zulus

-aback

-abaft

-abandon

-abandoned

-abandoner

-abandoning

-abandonment

-abandonments

-abandons

-abase

-abased

-abasement

-abasements

-abaser

-abases

-abash

-abashed

-abashes

-abashing

-abasing

-abate

-abated

-abatement

-abatements

-abater

-abates

-abating

-abbe

-abbey

-abbey's

-abbeys

-abbot

-abbot's

-abbots

-abbreviate

-abbreviated

-abbreviates

-abbreviating

-abbreviation

-abbreviations

-abdomen

-abdomen's

-abdomens

-abdominal

-abdominally

-abduct

-abducted

-abducting

-abduction

-abduction's

-abductions

-abductor

-abductor's

-abductors

-abducts

-abed

-aberrant

-aberrantly

-aberration

-aberrations

-abet

-abets

-abetted

-abetter

-abetting

-abettor

-abeyance

-abhor

-abhorred

-abhorrent

-abhorrently

-abhorrer

-abhorring

-abhors

-abide

-abided

-abider

-abides

-abiding

-abidingly

-abilities

-ability

-ability's

-abject

-abjection

-abjections

-abjectly

-abjectness

-abjure

-abjured

-abjurer

-abjures

-abjuring

-ablate

-ablated

-ablates

-ablating

-ablation

-ablative

-ablatively

-ablaze

-able

-abler

-ablest

-ablution

-ablutions

-ably

-abnormal

-abnormalities

-abnormality

-abnormally

-aboard

-abode

-abode's

-abodes

-abolish

-abolished

-abolisher

-abolishers

-abolishes

-abolishing

-abolishment

-abolishment's

-abolishments

-abolition

-abolitionist

-abolitionists

-abominable

-aboriginal

-aboriginally

-aborigine

-aborigine's

-aborigines

-abort

-aborted

-aborter

-aborting

-abortion

-abortion's

-abortions

-abortive

-abortively

-abortiveness

-aborts

-abound

-abounded

-abounding

-abounds

-about

-above

-aboveground

-abrade

-abraded

-abrader

-abrades

-abrading

-abrasion

-abrasion's

-abrasions

-abreaction

-abreaction's

-abreactions

-abreast

-abridge

-abridged

-abridger

-abridges

-abridging

-abridgment

-abroad

-abrogate

-abrogated

-abrogates

-abrogating

-abrogation

-abrupt

-abruptly

-abruptness

-abscess

-abscessed

-abscesses

-abscissa

-abscissa's

-abscissas

-abscond

-absconded

-absconder

-absconding

-absconds

-absence

-absence's

-absences

-absent

-absented

-absentee

-absentee's

-absenteeism

-absentees

-absentia

-absenting

-absently

-absentminded

-absentmindedly

-absentmindedness

-absents

-absinthe

-absolute

-absolutely

-absoluteness

-absolutes

-absolution

-absolve

-absolved

-absolver

-absolves

-absolving

-absorb

-absorbed

-absorbency

-absorbent

-absorbent's

-absorbents

-absorber

-absorbing

-absorbingly

-absorbs

-absorption

-absorption's

-absorptions

-absorptive

-abstain

-abstained

-abstainer

-abstaining

-abstains

-abstention

-abstentions

-abstinence

-abstract

-abstracted

-abstractedly

-abstractedness

-abstracter

-abstracting

-abstraction

-abstraction's

-abstractionism

-abstractionist

-abstractionists

-abstractions

-abstractive

-abstractly

-abstractness

-abstractor

-abstractor's

-abstractors

-abstracts

-abstruse

-abstrusely

-abstruseness

-abstrusenesses

-absurd

-absurdities

-absurdity

-absurdity's

-absurdly

-absurdness

-abundance

-abundances

-abundant

-abundantly

-abuse

-abused

-abuser

-abusers

-abuses

-abusing

-abusive

-abusively

-abusiveness

-abut

-abutment

-abutments

-abuts

-abutted

-abutter

-abutter's

-abutters

-abutting

-abysmal

-abysmally

-abyss

-abyss's

-abysses

-acacia

-academia

-academic

-academically

-academics

-academies

-academy

-academy's

-accede

-acceded

-accedes

-acceding

-accelerate

-accelerated

-accelerates

-accelerating

-acceleratingly

-acceleration

-accelerations

-accelerative

-accelerator

-accelerators

-accelerometer

-accelerometer's

-accelerometers

-accent

-accented

-accenting

-accents

-accentual

-accentually

-accentuate

-accentuated

-accentuates

-accentuating

-accentuation

-accept

-acceptability

-acceptable

-acceptableness

-acceptably

-acceptance

-acceptance's

-acceptances

-accepted

-acceptedly

-accepter

-accepters

-accepting

-acceptingly

-acceptingness

-acceptive

-acceptor

-acceptor's

-acceptors

-accepts

-access

-accessed

-accesses

-accessibility

-accessible

-accessibly

-accessing

-accession

-accession's

-accessions

-accessories

-accessory

-accessory's

-accident

-accident's

-accidental

-accidentally

-accidentalness

-accidently

-accidents

-acclaim

-acclaimed

-acclaimer

-acclaiming

-acclaims

-acclamation

-acclimate

-acclimated

-acclimates

-acclimating

-acclimation

-accolade

-accolades

-accommodate

-accommodated

-accommodates

-accommodating

-accommodatingly

-accommodation

-accommodations

-accommodative

-accommodativeness

-accompanied

-accompanier

-accompanies

-accompaniment

-accompaniment's

-accompaniments

-accompanist

-accompanist's

-accompanists

-accompany

-accompanying

-accomplice

-accomplices

-accomplish

-accomplished

-accomplisher

-accomplishers

-accomplishes

-accomplishing

-accomplishment

-accomplishment's

-accomplishments

-accord

-accordance

-accordances

-accorded

-accorder

-accorders

-according

-accordingly

-accordion

-accordion's

-accordions

-accords

-accost

-accosted

-accosting

-accosts

-account

-accountabilities

-accountability

-accountable

-accountableness

-accountably

-accountancy

-accountant

-accountant's

-accountants

-accounted

-accounting

-accountings

-accounts

-accredit

-accreditation

-accreditations

-accredited

-accretion

-accretion's

-accretions

-accrue

-accrued

-accrues

-accruing

-acculturate

-acculturated

-acculturates

-acculturating

-acculturation

-acculturative

-accumulate

-accumulated

-accumulates

-accumulating

-accumulation

-accumulations

-accumulative

-accumulatively

-accumulativeness

-accumulator

-accumulator's

-accumulators

-accuracies

-accuracy

-accurate

-accurately

-accurateness

-accursed

-accursedly

-accursedness

-accusal

-accusation

-accusation's

-accusations

-accusative

-accuse

-accused

-accuser

-accusers

-accuses

-accusing

-accusingly

-accustom

-accustomed

-accustomedness

-accustoming

-accustoms

-ace

-ace's

-aced

-acer

-aces

-acetate

-acetone

-acetylene

-ache

-ached

-aches

-achievable

-achieve

-achieved

-achievement

-achievement's

-achievements

-achiever

-achievers

-achieves

-achieving

-aching

-achingly

-acid

-acidic

-acidities

-acidity

-acidly

-acidness

-acids

-acidulous

-acing

-acknowledge

-acknowledged

-acknowledgedly

-acknowledger

-acknowledgers

-acknowledges

-acknowledging

-acme

-acne

-acned

-acolyte

-acolytes

-acorn

-acorn's

-acorns

-acoustic

-acoustical

-acoustically

-acoustician

-acoustics

-acquaint

-acquaintance

-acquaintance's

-acquaintances

-acquainted

-acquainting

-acquaints

-acquiesce

-acquiesced

-acquiescence

-acquiesces

-acquiescing

-acquirable

-acquire

-acquired

-acquires

-acquiring

-acquisition

-acquisition's

-acquisitions

-acquisitiveness

-acquit

-acquits

-acquittal

-acquittals

-acquitted

-acquitter

-acquitting

-acre

-acre's

-acreage

-acres

-acrid

-acridly

-acridness

-acrimonious

-acrimoniously

-acrimony

-acrobat

-acrobat's

-acrobatic

-acrobatics

-acrobats

-acronym

-acronym's

-acronyms

-acropolis

-across

-acrylic

-act

-acted

-acting

-actinium

-actinometer

-actinometer's

-actinometers

-action

-action's

-actions

-activate

-activated

-activates

-activating

-activation

-activations

-activator

-activator's

-activators

-active

-actively

-activeness

-activism

-activist

-activist's

-activists

-activities

-activity

-activity's

-actor

-actor's

-actors

-actress

-actress's

-actresses

-acts

-actual

-actualities

-actuality

-actually

-actuals

-actuarial

-actuarially

-actuate

-actuated

-actuates

-actuating

-actuation

-actuator

-actuator's

-actuators

-acuity

-acumen

-acute

-acutely

-acuteness

-acuter

-acutest

-acyclic

-acyclically

-ad

-adage

-adages

-adagio

-adagios

-adamant

-adamantly

-adapt

-adaptability

-adaptable

-adaptation

-adaptation's

-adaptations

-adapted

-adaptedness

-adapter

-adapters

-adapting

-adaption

-adaptive

-adaptively

-adaptiveness

-adaptor

-adaptors

-adapts

-add

-added

-addenda

-addendum

-adder

-adders

-addict

-addicted

-addicting

-addiction

-addiction's

-addictions

-addictive

-addicts

-adding

-addition

-addition's

-additional

-additionally

-additions

-additive

-additive's

-additively

-additives

-additivity

-address

-addressability

-addressable

-addressed

-addressee

-addressee's

-addressees

-addresser

-addressers

-addresses

-addressing

-adds

-adduce

-adduced

-adducer

-adduces

-adducing

-adduct

-adducted

-adducting

-adduction

-adductive

-adductor

-adducts

-adept

-adeptly

-adeptness

-adepts

-adequacies

-adequacy

-adequate

-adequately

-adequateness

-adhere

-adhered

-adherence

-adherences

-adherent

-adherent's

-adherently

-adherents

-adherer

-adherers

-adheres

-adhering

-adhesion

-adhesions

-adhesive

-adhesive's

-adhesively

-adhesiveness

-adhesives

-adiabatic

-adiabatically

-adieu

-adjacency

-adjacent

-adjacently

-adjective

-adjective's

-adjectively

-adjectives

-adjoin

-adjoined

-adjoining

-adjoins

-adjourn

-adjourned

-adjourning

-adjournment

-adjourns

-adjudge

-adjudged

-adjudges

-adjudging

-adjudicate

-adjudicated

-adjudicates

-adjudicating

-adjudication

-adjudication's

-adjudications

-adjudicative

-adjunct

-adjunct's

-adjunctive

-adjunctly

-adjuncts

-adjure

-adjured

-adjures

-adjuring

-adjust

-adjustable

-adjustably

-adjusted

-adjuster

-adjusters

-adjusting

-adjustive

-adjustment

-adjustment's

-adjustments

-adjustor

-adjustor's

-adjustors

-adjusts

-adjutant

-adjutants

-administer

-administered

-administering

-administerings

-administers

-administration

-administration's

-administrations

-administrative

-administratively

-administrator

-administrator's

-administrators

-admirable

-admirableness

-admirably

-admiral

-admiral's

-admirals

-admiralty

-admiration

-admirations

-admire

-admired

-admirer

-admirers

-admires

-admiring

-admiringly

-admissibility

-admissible

-admission

-admission's

-admissions

-admit

-admits

-admittance

-admitted

-admittedly

-admitting

-admix

-admixed

-admixes

-admixture

-admonish

-admonished

-admonisher

-admonishes

-admonishing

-admonishingly

-admonishment

-admonishment's

-admonishments

-admonition

-admonition's

-admonitions

-ado

-adobe

-adolescence

-adolescent

-adolescent's

-adolescently

-adolescents

-adopt

-adopted

-adopter

-adopters

-adopting

-adoption

-adoption's

-adoptions

-adoptive

-adoptively

-adopts

-adorable

-adorableness

-adoration

-adore

-adored

-adorer

-adores

-adoring

-adorn

-adorned

-adorning

-adornment

-adornment's

-adornments

-adorns

-adrenal

-adrenaline

-adrenally

-adrift

-adroit

-adroitly

-adroitness

-ads

-adsorb

-adsorbed

-adsorbing

-adsorbs

-adsorption

-adulate

-adulating

-adulation

-adulations

-adult

-adult's

-adulterate

-adulterated

-adulterates

-adulterating

-adulteration

-adulterer

-adulterer's

-adulterers

-adulterous

-adulterously

-adultery

-adulthood

-adultly

-adultness

-adults

-adumbrate

-adumbrated

-adumbrates

-adumbrating

-adumbration

-adumbrative

-adumbratively

-advance

-advanced

-advancement

-advancement's

-advancements

-advancer

-advancers

-advances

-advancing

-advantage

-advantaged

-advantageous

-advantageously

-advantageousness

-advantages

-advantaging

-advent

-adventist

-adventists

-adventitious

-adventitiously

-adventitiousness

-adventive

-adventively

-adventure

-adventured

-adventurer

-adventurers

-adventures

-adventuring

-adventurous

-adventurously

-adventurousness

-adverb

-adverb's

-adverbial

-adverbially

-adverbs

-adversaries

-adversary

-adversary's

-adverse

-adversed

-adversely

-adverses

-adversing

-adversities

-adversity

-advertise

-advertised

-advertisement

-advertisement's

-advertisements

-advertiser

-advertisers

-advertises

-advertising

-advice

-advisability

-advisable

-advisableness

-advisably

-advise

-advised

-advisedly

-advisee

-advisee's

-advisees

-advisement

-advisements

-adviser

-adviser's

-advisers

-advises

-advising

-advisor

-advisor's

-advisors

-advisory

-advocacy

-advocate

-advocated

-advocates

-advocating

-advocation

-advocative

-aegis

-aerate

-aerated

-aerates

-aerating

-aeration

-aerator

-aerators

-aerial

-aerial's

-aerially

-aerials

-aeroacoustic

-aerobic

-aerobics

-aerodynamic

-aerodynamics

-aeronautic

-aeronautical

-aeronautically

-aeronautics

-aerosol

-aerosols

-aerospace

-afar

-afars

-affable

-affair

-affair's

-affairs

-affect

-affectation

-affectation's

-affectations

-affected

-affectedly

-affectedness

-affecter

-affecting

-affectingly

-affection

-affection's

-affectionate

-affectionately

-affectioned

-affections

-affective

-affectively

-affects

-afferent

-afferently

-affianced

-affidavit

-affidavit's

-affidavits

-affiliate

-affiliated

-affiliates

-affiliating

-affiliation

-affiliations

-affinities

-affinity

-affinity's

-affirm

-affirmation

-affirmation's

-affirmations

-affirmative

-affirmatively

-affirmed

-affirming

-affirms

-affix

-affixed

-affixes

-affixing

-afflict

-afflicted

-afflicting

-affliction

-affliction's

-afflictions

-afflictive

-afflictively

-afflicts

-affluence

-affluent

-affluently

-afford

-affordable

-afforded

-affording

-affords

-affricate

-affricates

-affrication

-affricative

-affright

-affront

-affronted

-affronting

-affronts

-afghan

-afghans

-aficionado

-aficionados

-afield

-afire

-aflame

-afloat

-afoot

-afore

-aforementioned

-aforesaid

-aforethought

-afoul

-afraid

-afresh

-aft

-after

-aftereffect

-aftereffects

-aftermath

-aftermost

-afternoon

-afternoon's

-afternoons

-afters

-aftershock

-aftershock's

-aftershocks

-afterthought

-afterthoughts

-afterward

-afterwards

-again

-against

-agape

-agar

-agate

-agates

-age

-aged

-agedly

-agedness

-ageless

-agelessly

-agelessness

-agencies

-agency

-agency's

-agenda

-agenda's

-agendas

-agent

-agent's

-agentive

-agents

-ager

-agers

-ages

-agglomerate

-agglomerated

-agglomerates

-agglomeration

-agglomerative

-agglutinate

-agglutinated

-agglutinates

-agglutinating

-agglutination

-agglutinative

-agglutinin

-agglutinins

-aggravate

-aggravated

-aggravates

-aggravating

-aggravation

-aggravations

-aggregate

-aggregated

-aggregately

-aggregateness

-aggregates

-aggregating

-aggregation

-aggregations

-aggregative

-aggregatively

-aggression

-aggression's

-aggressions

-aggressive

-aggressively

-aggressiveness

-aggressor

-aggressors

-aggrieve

-aggrieved

-aggrievedly

-aggrieves

-aggrieving

-aghast

-agile

-agilely

-agility

-aging

-agitate

-agitated

-agitatedly

-agitates

-agitating

-agitation

-agitations

-agitative

-agitator

-agitator's

-agitators

-agleam

-aglow

-agnostic

-agnostic's

-agnostics

-ago

-agog

-agonies

-agony

-agrarian

-agree

-agreeable

-agreeableness

-agreeably

-agreed

-agreeing

-agreement

-agreement's

-agreements

-agreer

-agreers

-agrees

-agricultural

-agriculturally

-agriculture

-ague

-ah

-ahead

-aid

-aide

-aided

-aider

-aides

-aiding

-aids

-ail

-ailed

-aileron

-ailerons

-ailing

-ailment

-ailment's

-ailments

-ails

-aim

-aimed

-aimer

-aimers

-aiming

-aimless

-aimlessly

-aimlessness

-aims

-air

-airbag

-airbag's

-airbags

-airborne

-aircraft

-aircrafts

-airdrop

-airdrops

-aired

-airer

-airers

-airfield

-airfield's

-airfields

-airflow

-airframe

-airframe's

-airframes

-airhead

-airier

-airiest

-airily

-airiness

-airing

-airings

-airless

-airlessness

-airlift

-airlift's

-airlifts

-airline

-airline's

-airliner

-airliner's

-airliners

-airlines

-airlock

-airlock's

-airlocks

-airmail

-airmails

-airman

-airmen

-airport

-airport's

-airports

-airs

-airship

-airship's

-airships

-airspace

-airspeed

-airspeeds

-airstrip

-airstrip's

-airstrips

-airway

-airway's

-airways

-airy

-aisle

-aisles

-ajar

-akimbo

-akin

-alabaster

-alacrity

-alarm

-alarmed

-alarming

-alarmingly

-alarmist

-alarms

-alas

-alba

-albacore

-albeit

-album

-albumen

-albumin

-albums

-alchemy

-alcohol

-alcohol's

-alcoholic

-alcoholic's

-alcoholics

-alcoholism

-alcoholisms

-alcohols

-alcove

-alcove's

-alcoved

-alcoves

-alder

-alderman

-alderman's

-aldermen

-ale

-alee

-alert

-alerted

-alertedly

-alerter

-alerters

-alerting

-alertly

-alertness

-alerts

-alfalfa

-alfresco

-alga

-algae

-algaecide

-algebra

-algebra's

-algebraic

-algebraically

-algebras

-alginate

-alginates

-algorithm

-algorithm's

-algorithmic

-algorithmically

-algorithms

-alias

-aliased

-aliases

-aliasing

-alibi

-alibi's

-alibis

-alien

-alien's

-alienate

-alienated

-alienates

-alienating

-alienation

-aliens

-alight

-alighted

-alighting

-align

-aligned

-aligner

-aligning

-alignment

-alignments

-aligns

-alike

-alikeness

-aliment

-aliments

-alimony

-alive

-aliveness

-alkali

-alkali's

-alkaline

-alkalis

-alkaloid

-alkaloid's

-alkaloids

-alkyl

-all

-allay

-allayed

-allaying

-allays

-allegation

-allegation's

-allegations

-allege

-alleged

-allegedly

-alleges

-allegiance

-allegiance's

-allegiances

-alleging

-allegoric

-allegorical

-allegorically

-allegoricalness

-allegories

-allegory

-allegory's

-allegretto

-allegretto's

-allegrettos

-allegro

-allegro's

-allegros

-allele

-alleles

-allemande

-allergic

-allergies

-allergy

-allergy's

-alleviate

-alleviated

-alleviates

-alleviating

-alleviation

-alleviative

-alleviator

-alleviator's

-alleviators

-alley

-alley's

-alleys

-alleyway

-alleyway's

-alleyways

-alliance

-alliance's

-alliances

-allied

-allier

-allies

-alligator

-alligator's

-alligatored

-alligators

-alliteration

-alliteration's

-alliterations

-alliterative

-alliteratively

-allocate

-allocated

-allocates

-allocating

-allocation

-allocation's

-allocations

-allocative

-allocator

-allocator's

-allocators

-allophone

-allophones

-allophonic

-allot

-alloted

-allotment

-allotment's

-allotments

-allots

-allotted

-allotter

-allotting

-allow

-allowable

-allowableness

-allowably

-allowance

-allowance's

-allowanced

-allowances

-allowancing

-allowed

-allowedly

-allowing

-allows

-alloy

-alloy's

-alloyed

-alloying

-alloys

-allude

-alluded

-alludes

-alluding

-allure

-allured

-allurement

-allures

-alluring

-allusion

-allusion's

-allusions

-allusive

-allusively

-allusiveness

-ally

-allying

-alma

-almanac

-almanac's

-almanacs

-almightiness

-almighty

-almond

-almond's

-almonds

-almoner

-almost

-alms

-almsman

-alnico

-aloe

-aloes

-aloft

-aloha

-alone

-aloneness

-along

-alongside

-aloof

-aloofly

-aloofness

-aloud

-alpha

-alphabet

-alphabet's

-alphabetic

-alphabetical

-alphabetically

-alphabetics

-alphabets

-alphanumeric

-alphanumerics

-alpine

-alps

-already

-also

-altar

-altar's

-altars

-alter

-alterable

-alteration

-alteration's

-alterations

-altercation

-altercation's

-altercations

-altered

-alterer

-alterers

-altering

-alternate

-alternated

-alternately

-alternates

-alternating

-alternation

-alternations

-alternative

-alternatively

-alternativeness

-alternatives

-alternator

-alternator's

-alternators

-alters

-although

-altitude

-altitudes

-alto

-alto's

-altogether

-altos

-altruism

-altruist

-altruistic

-altruistically

-altruists

-alum

-alumna

-alumna's

-alumnae

-alumni

-alumnus

-alundum

-alveolar

-alveolarly

-alveoli

-alveolus

-always

-am

-amain

-amalgam

-amalgam's

-amalgamate

-amalgamated

-amalgamates

-amalgamating

-amalgamation

-amalgamations

-amalgamative

-amalgams

-amanuensis

-amass

-amassed

-amasser

-amasses

-amassing

-amateur

-amateur's

-amateurish

-amateurishly

-amateurishness

-amateurism

-amateurs

-amatory

-amaze

-amazed

-amazedly

-amazement

-amazer

-amazers

-amazes

-amazing

-amazingly

-amazon

-amazon's

-amazons

-ambassador

-ambassador's

-ambassadors

-amber

-ambiance

-ambiances

-ambidextrous

-ambidextrously

-ambient

-ambiguities

-ambiguity

-ambiguity's

-ambiguous

-ambiguously

-ambiguousness

-ambition

-ambition's

-ambitions

-ambitious

-ambitiously

-ambitiousness

-ambivalence

-ambivalent

-ambivalently

-amble

-ambled

-ambler

-ambles

-ambling

-ambrosial

-ambrosially

-ambulance

-ambulance's

-ambulances

-ambulatory

-ambuscade

-ambuscader

-ambush

-ambushed

-ambusher

-ambushes

-ameliorate

-ameliorated

-ameliorating

-amelioration

-ameliorative

-amen

-amenable

-amend

-amended

-amender

-amending

-amendment

-amendment's

-amendments

-amends

-amenities

-amenity

-americium

-amiable

-amiableness

-amiabler

-amiablest

-amicable

-amicableness

-amicably

-amid

-amide

-amidst

-amigo

-amino

-amiss

-amity

-ammo

-ammonia

-ammoniac

-ammonias

-ammonium

-ammunition

-ammunitions

-amnesty

-amoeba

-amoeba's

-amoebas

-amok

-among

-amongst

-amoral

-amorality

-amorally

-amorous

-amorously

-amorousness

-amorphous

-amorphously

-amorphousness

-amount

-amounted

-amounter

-amounters

-amounting

-amounts

-amour

-amour's

-amours

-amp

-ampere

-amperes

-ampersand

-ampersand's

-ampersands

-amphetamine

-amphetamines

-amphibian

-amphibian's

-amphibians

-amphibious

-amphibiously

-amphibiousness

-amphibology

-ample

-ampleness

-ampler

-amplest

-amplification

-amplifications

-amplified

-amplifier

-amplifiers

-amplifies

-amplify

-amplifying

-amplitude

-amplitude's

-amplitudes

-amply

-ampoule

-ampoule's

-ampoules

-amps

-amputate

-amputated

-amputates

-amputating

-amputation

-ams

-amulet

-amulets

-amuse

-amused

-amusedly

-amusement

-amusement's

-amusements

-amuser

-amusers

-amuses

-amusing

-amusingly

-amusingness

-amusive

-amyl

-an

-anachronism

-anachronism's

-anachronisms

-anachronistically

-anaconda

-anacondas

-anaerobic

-anagram

-anagram's

-anagrams

-anal

-analogical

-analogically

-analogies

-analogous

-analogously

-analogousness

-analogy

-analogy's

-analysis

-analyst

-analyst's

-analysts

-analytic

-analytical

-analytically

-analyticities

-analyticity

-analytics

-anaphora

-anaphoric

-anaphorically

-anaplasmosis

-anarchic

-anarchical

-anarchist

-anarchist's

-anarchists

-anarchy

-anastomoses

-anastomosis

-anastomotic

-anathema

-anatomic

-anatomical

-anatomically

-anatomicals

-anatomy

-ancestor

-ancestor's

-ancestors

-ancestral

-ancestrally

-ancestry

-anchor

-anchorage

-anchorage's

-anchorages

-anchored

-anchoring

-anchorite

-anchoritism

-anchors

-anchovies

-anchovy

-ancient

-anciently

-ancientness

-ancients

-ancillaries

-ancillary

-and

-anded

-anders

-anding

-ands

-anecdotal

-anecdotally

-anecdote

-anecdote's

-anecdotes

-anechoic

-anemometer

-anemometer's

-anemometers

-anemometry

-anemone

-anew

-angel

-angel's

-angelic

-angels

-anger

-angered

-angering

-angers

-angiography

-angle

-angled

-angler

-anglers

-angles

-angling

-angrier

-angriest

-angrily

-angriness

-angry

-angst

-angstrom

-angstroms

-anguish

-anguished

-angular

-angularly

-anhydrous

-anhydrously

-aniline

-animal

-animal's

-animally

-animalness

-animals

-animate

-animated

-animatedly

-animately

-animateness

-animates

-animating

-animation

-animations

-animator

-animator's

-animators

-animism

-animosity

-anion

-anion's

-anionic

-anionics

-anions

-anise

-aniseikonic

-anisotropic

-anisotropies

-anisotropy

-anisotropy's

-ankle

-ankle's

-ankles

-annal

-annalen

-annals

-annex

-annexation

-annexations

-annexed

-annexes

-annexing

-annihilate

-annihilated

-annihilates

-annihilating

-annihilation

-annihilative

-anniversaries

-anniversary

-anniversary's

-annotate

-annotated

-annotates

-annotating

-annotation

-annotations

-annotative

-announce

-announced

-announcement

-announcement's

-announcements

-announcer

-announcers

-announces

-announcing

-annoy

-annoyance

-annoyance's

-annoyances

-annoyed

-annoyer

-annoyers

-annoying

-annoyingly

-annoys

-annual

-annually

-annuals

-annul

-annulled

-annulling

-annulment

-annulment's

-annulments

-annuls

-annum

-annunciate

-annunciated

-annunciates

-annunciating

-annunciation

-annunciator

-annunciators

-anode

-anode's

-anodes

-anoint

-anointed

-anointer

-anointing

-anoints

-anomalies

-anomalous

-anomalously

-anomalousness

-anomaly

-anomaly's

-anomic

-anomie

-anon

-anonymity

-anonymous

-anonymously

-anonymousness

-anorexia

-another

-another's

-answer

-answerable

-answered

-answerer

-answerers

-answering

-answers

-ant

-ant's

-antagonism

-antagonisms

-antagonist

-antagonist's

-antagonistic

-antagonistically

-antagonists

-antarctic

-ante

-anteater

-anteater's

-anteaters

-antecedent

-antecedent's

-antecedently

-antecedents

-anted

-antedate

-antedated

-antedates

-antedating

-antelope

-antelope's

-antelopes

-antenna

-antenna's

-antennae

-antennas

-anterior

-anteriorly

-anteriors

-anthem

-anthem's

-anthems

-anther

-anthologies

-anthology

-anthracite

-anthropological

-anthropologically

-anthropologist

-anthropologist's

-anthropologists

-anthropology

-anthropomorphic

-anthropomorphically

-anti

-antibacterial

-antibiotic

-antibiotics

-antibodies

-antibody

-antic

-antic's

-anticipate

-anticipated

-anticipates

-anticipating

-anticipation

-anticipations

-anticipative

-anticipatively

-anticipatory

-anticoagulation

-anticompetitive

-antics

-antidisestablishmentarianism

-antidote

-antidote's

-antidotes

-antiformant

-antifundamentalist

-antigen

-antigen's

-antigens

-antihistorical

-antimicrobial

-antimony

-anting

-antinomian

-antinomy

-antipathy

-antiphonal

-antiphonally

-antipode

-antipode's

-antipodes

-antiquarian

-antiquarian's

-antiquarians

-antiquate

-antiquated

-antiquation

-antique

-antique's

-antiques

-antiquities

-antiquity

-antiredeposition

-antiresonance

-antiresonator

-antiseptic

-antisera

-antiserum

-antislavery

-antisocial

-antisubmarine

-antisymmetric

-antisymmetry

-antithesis

-antithetical

-antithetically

-antithyroid

-antitoxin

-antitoxin's

-antitoxins

-antitrust

-antitruster

-antler

-antlered

-ants

-anus

-anvil

-anvil's

-anvils

-anxieties

-anxiety

-anxious

-anxiously

-anxiousness

-any

-anybodies

-anybody

-anyhow

-anymore

-anyone

-anyone's

-anyones

-anyplace

-anything

-anythings

-anyway

-anyways

-anywhere

-anywheres

-aorta

-apace

-apart

-apartheid

-apartment

-apartment's

-apartments

-apartness

-apathetic

-apathy

-ape

-aped

-aper

-aperiodic

-aperiodicity

-aperture

-apertured

-apes

-apex

-apexes

-aphasia

-aphasic

-aphid

-aphid's

-aphids

-aphonic

-aphorism

-aphorism's

-aphorisms

-apiaries

-apiary

-apical

-apically

-apiece

-aping

-apish

-apishly

-apishness

-aplenty

-aplomb

-apocalypse

-apocalyptic

-apocrypha

-apocryphal

-apocryphally

-apocryphalness

-apogee

-apogees

-apologetic

-apologetically

-apologetics

-apologia

-apologies

-apologist

-apologist's

-apologists

-apology

-apology's

-apostate

-apostates

-apostle

-apostle's

-apostles

-apostolic

-apostrophe

-apostrophes

-apothecary

-apotheoses

-apotheosis

-appalled

-appalling

-appallingly

-appanage

-apparatus

-apparatuses

-apparel

-apparels

-apparent

-apparently

-apparentness

-apparition

-apparition's

-apparitions

-appeal

-appealed

-appealer

-appealers

-appealing

-appealingly

-appeals

-appear

-appearance

-appearances

-appeared

-appearer

-appearers

-appearing

-appears

-appease

-appeased

-appeasement

-appeaser

-appeases

-appeasing

-appellant

-appellant's

-appellants

-appellate

-appellation

-appellative

-appellatively

-append

-appendage

-appendage's

-appendages

-appended

-appender

-appenders

-appendices

-appendicitis

-appending

-appendix

-appendix's

-appendixes

-appends

-appertain

-appertained

-appertaining

-appertains

-appetite

-appetite's

-appetites

-appetitive

-applaud

-applauded

-applauder

-applauding

-applauds

-applause

-apple

-apple's

-applejack

-apples

-appliance

-appliance's

-appliances

-applicability

-applicable

-applicant

-applicant's

-applicants

-application

-application's

-applications

-applicative

-applicatively

-applicator

-applicator's

-applicators

-applied

-applier

-appliers

-applies

-applique

-appliques

-apply

-applying

-appoint

-appointed

-appointee

-appointee's

-appointees

-appointer

-appointers

-appointing

-appointive

-appointment

-appointment's

-appointments

-appoints

-apportion

-apportioned

-apportioning

-apportionment

-apportionments

-apportions

-appraisal

-appraisal's

-appraisals

-appraise

-appraised

-appraiser

-appraisers

-appraises

-appraising

-appraisingly

-appreciable

-appreciably

-appreciate

-appreciated

-appreciates

-appreciating

-appreciation

-appreciations

-appreciative

-appreciatively

-appreciativeness

-apprehend

-apprehended

-apprehender

-apprehending

-apprehends

-apprehensible

-apprehension

-apprehension's

-apprehensions

-apprehensive

-apprehensively

-apprehensiveness

-apprentice

-apprenticed

-apprentices

-apprenticeship

-apprenticeships

-apprise

-apprised

-appriser

-apprisers

-apprises

-apprising

-apprisings

-apprize

-apprized

-apprizer

-apprizers

-apprizes

-apprizing

-apprizingly

-apprizings

-approach

-approachability

-approachable

-approached

-approacher

-approachers

-approaches

-approaching

-approbate

-approbation

-appropriate

-appropriated

-appropriately

-appropriateness

-appropriates

-appropriatest

-appropriating

-appropriation

-appropriations

-appropriative

-appropriator

-appropriator's

-appropriators

-approval

-approval's

-approvals

-approve

-approved

-approver

-approvers

-approves

-approving

-approvingly

-approximate

-approximated

-approximately

-approximates

-approximating

-approximation

-approximations

-approximative

-approximatively

-appurtenance

-appurtenances

-apricot

-apricot's

-apricots

-apron

-apron's

-aprons

-apropos

-apse

-apses

-apsis

-apt

-aptitude

-aptitudes

-aptly

-aptness

-aqua

-aquaria

-aquarium

-aquas

-aquatic

-aquatics

-aqueduct

-aqueduct's

-aqueducts

-aqueous

-aqueously

-aquifer

-aquifers

-arabesque

-arable

-arachnid

-arachnid's

-arachnids

-arbiter

-arbiter's

-arbiters

-arbitrarily

-arbitrariness

-arbitrary

-arbitrate

-arbitrated

-arbitrates

-arbitrating

-arbitration

-arbitrative

-arbitrator

-arbitrator's

-arbitrators

-arboreal

-arboreally

-arc

-arcade

-arcade's

-arcaded

-arcades

-arcading

-arcane

-arced

-arch

-archaeological

-archaeologically

-archaeologist

-archaeologist's

-archaeologists

-archaeology

-archaic

-archaically

-archaicness

-archaism

-archangel

-archangel's

-archangels

-archbishop

-archdiocese

-archdioceses

-arched

-archenemy

-archer

-archers

-archery

-arches

-archetype

-archetypes

-archfool

-arching

-archipelago

-archipelagoes

-architect

-architect's

-architectonic

-architectonics

-architects

-architectural

-architecturally

-architecture

-architecture's

-architectures

-archival

-archive

-archived

-archiver

-archivers

-archives

-archiving

-archivist

-archivists

-archly

-archness

-arcing

-arclike

-arcs

-arctic

-ardent

-ardently

-arduous

-arduously

-arduousness

-are

-area

-area's

-areas

-aren't

-arena

-arena's

-arenas

-ares

-argon

-argonaut

-argonauts

-argot

-arguable

-arguably

-argue

-argued

-arguer

-arguers

-argues

-arguing

-argument

-argument's

-argumentation

-argumentative

-argumentatively

-arguments

-arid

-aridity

-aridness

-aright

-arise

-arisen

-ariser

-arises

-arising

-arisings

-aristocracy

-aristocrat

-aristocrat's

-aristocratic

-aristocratically

-aristocrats

-arithmetic

-arithmetical

-arithmetically

-arithmetics

-ark

-arm

-arm's

-armadillo

-armadillos

-armament

-armament's

-armaments

-armchair

-armchair's

-armchairs

-armed

-armer

-armers

-armful

-armfuls

-armhole

-armies

-arming

-armistice

-armload

-armpit

-armpit's

-armpits

-arms

-army

-army's

-aroma

-aromas

-aromatic

-aromaticness

-arose

-around

-arousal

-arouse

-aroused

-arouses

-arousing

-arpeggio

-arpeggio's

-arpeggios

-arrack

-arraign

-arraigned

-arraigning

-arraignment

-arraignment's

-arraignments

-arraigns

-arrange

-arranged

-arrangement

-arrangement's

-arrangements

-arranger

-arrangers

-arranges

-arranging

-arrant

-arrantly

-array

-arrayed

-arrayer

-arraying

-arrays

-arrears

-arrest

-arrested

-arrester

-arresters

-arresting

-arrestingly

-arrestor

-arrestor's

-arrestors

-arrests

-arrival

-arrival's

-arrivals

-arrive

-arrived

-arriver

-arrives

-arriving

-arrogance

-arrogant

-arrogantly

-arrogate

-arrogated

-arrogates

-arrogating

-arrogation

-arrow

-arrowed

-arrowhead

-arrowhead's

-arrowheads

-arrowing

-arrows

-arroyo

-arroyos

-arsenal

-arsenal's

-arsenals

-arsenic

-arsine

-arsines

-arson

-art

-art's

-arterial

-arterially

-arteries

-arteriolar

-arteriole

-arteriole's

-arterioles

-arteriosclerosis

-artery

-artery's

-artful

-artfully

-artfulness

-arthritis

-arthrogram

-arthrogram's

-arthrograms

-arthropod

-arthropod's

-arthropods

-artichoke

-artichoke's

-artichokes

-article

-article's

-articled

-articles

-articling

-articulate

-articulated

-articulately

-articulateness

-articulates

-articulating

-articulation

-articulations

-articulative

-articulator

-articulators

-articulatory

-artifact

-artifact's

-artifacts

-artifice

-artificer

-artifices

-artificial

-artificialities

-artificiality

-artificially

-artificialness

-artilleries

-artillerist

-artillery

-artisan

-artisan's

-artisans

-artist

-artist's

-artistic

-artistically

-artistry

-artists

-artless

-artlessly

-arts

-artwork

-as

-asbestos

-ascend

-ascendancy

-ascendant

-ascendantly

-ascended

-ascendency

-ascendent

-ascender

-ascenders

-ascending

-ascends

-ascension

-ascensions

-ascent

-ascertain

-ascertainable

-ascertained

-ascertaining

-ascertains

-ascetic

-ascetic's

-asceticism

-ascetics

-ascot

-ascribable

-ascribe

-ascribed

-ascribes

-ascribing

-ascription

-aseptic

-ash

-ashamed

-ashamedly

-ashen

-asher

-ashes

-ashman

-ashore

-ashtray

-ashtray's

-ashtrays

-aside

-asides

-asinine

-asininely

-ask

-askance

-asked

-asker

-askers

-askew

-askewness

-asking

-asks

-asleep

-asocial

-asp

-asparagus

-aspect

-aspect's

-aspects

-aspen

-asper

-aspersion

-aspersion's

-aspersions

-asphalt

-asphalted

-asphyxia

-aspic

-aspirant

-aspirant's

-aspirants

-aspirate

-aspirated

-aspirates

-aspirating

-aspiration

-aspiration's

-aspirations

-aspirator

-aspirators

-aspire

-aspired

-aspirer

-aspires

-aspirin

-aspiring

-aspirins

-ass

-ass's

-assail

-assailant

-assailant's

-assailants

-assailed

-assailing

-assails

-assassin

-assassin's

-assassinate

-assassinated

-assassinates

-assassinating

-assassination

-assassinations

-assassins

-assault

-assaulted

-assaulter

-assaulting

-assaultive

-assaultively

-assaultiveness

-assaults

-assay

-assayed

-assayer

-assayers

-assaying

-assemblage

-assemblage's

-assemblages

-assemble

-assembled

-assembler

-assemblers

-assembles

-assemblies

-assembling

-assembly

-assembly's

-assen

-assent

-assented

-assenter

-assenting

-assents

-assert

-asserted

-asserter

-asserters

-asserting

-assertion

-assertion's

-assertions

-assertive

-assertively

-assertiveness

-asserts

-asses

-assess

-assessed

-assesses

-assessing

-assessment

-assessment's

-assessments

-assessor

-assessor's

-assessors

-asset

-asset's

-assets

-assiduity

-assiduous

-assiduously

-assiduousness

-assign

-assignable

-assigned

-assignee

-assignee's

-assignees

-assigner

-assigners

-assigning

-assignment

-assignment's

-assignments

-assigns

-assimilate

-assimilated

-assimilates

-assimilating

-assimilation

-assimilations

-assimilative

-assist

-assistance

-assistances

-assistant

-assistant's

-assistants

-assistantship

-assistantships

-assisted

-assister

-assisting

-assists

-associate

-associated

-associates

-associating

-association

-association's

-associational

-associations

-associative

-associatively

-associativities

-associativity

-associator

-associator's

-associators

-assonance

-assonant

-assort

-assorted

-assorter

-assorting

-assortment

-assortment's

-assortments

-assorts

-assuage

-assuaged

-assuages

-assuaging

-assume

-assumed

-assumer

-assumes

-assuming

-assumption

-assumption's

-assumptions

-assurance

-assurance's

-assurances

-assure

-assured

-assuredly

-assuredness

-assurer

-assurers

-assures

-assuring

-assuringly

-astatine

-aster

-aster's

-asterisk

-asterisk's

-asterisks

-asteroid

-asteroid's

-asteroidal

-asteroids

-asters

-asthma

-astonish

-astonished

-astonishes

-astonishing

-astonishingly

-astonishment

-astound

-astounded

-astounding

-astoundingly

-astounds

-astral

-astrally

-astray

-astride

-astringency

-astringent

-astringently

-astronaut

-astronaut's

-astronautics

-astronauts

-astronomer

-astronomer's

-astronomers

-astronomical

-astronomically

-astronomy

-astrophysical

-astrophysics

-astute

-astutely

-astuteness

-asunder

-asylum

-asylums

-asymmetric

-asymmetrical

-asymmetrically

-asymmetries

-asymmetry

-asymptomatically

-asymptote

-asymptote's

-asymptotes

-asymptotic

-asymptotically

-asymptoticly

-asynchronism

-asynchronous

-asynchronously

-asynchrony

-at

-atavistic

-ate

-atemporal

-atheism

-atheist

-atheist's

-atheistic

-atheists

-atherosclerosis

-athlete

-athlete's

-athletes

-athletic

-athleticism

-athletics

-atlas

-atmosphere

-atmosphere's

-atmosphered

-atmospheres

-atmospheric

-atmospherics

-atoll

-atoll's

-atolls

-atom

-atom's

-atomic

-atomically

-atomics

-atoms

-atonal

-atonally

-atone

-atoned

-atonement

-atones

-atoning

-atop

-atrocious

-atrociously

-atrociousness

-atrocities

-atrocity

-atrocity's

-atrophic

-atrophied

-atrophies

-atrophy

-atrophying

-attach

-attache

-attached

-attacher

-attachers

-attaches

-attaching

-attachment

-attachment's

-attachments

-attack

-attackable

-attacked

-attacker

-attacker's

-attackers

-attacking

-attacks

-attain

-attainable

-attainableness

-attainably

-attained

-attainer

-attainers

-attaining

-attainment

-attainment's

-attainments

-attains

-attempt

-attempted

-attempter

-attempters

-attempting

-attempts

-attend

-attendance

-attendance's

-attendances

-attendant

-attendant's

-attendants

-attended

-attendee

-attendee's

-attendees

-attender

-attenders

-attending

-attends

-attention

-attention's

-attentional

-attentionality

-attentions

-attentive

-attentively

-attentiveness

-attenuate

-attenuated

-attenuates

-attenuating

-attenuation

-attenuator

-attenuator's

-attenuators

-attest

-attested

-attester

-attesting

-attests

-attic

-attic's

-attics

-attire

-attired

-attires

-attiring

-attitude

-attitude's

-attitudes

-attitudinal

-attitudinally

-attorney

-attorney's

-attorneys

-attract

-attracted

-attracting

-attraction

-attraction's

-attractions

-attractive

-attractively

-attractiveness

-attractor

-attractor's

-attractors

-attracts

-attributable

-attribute

-attributed

-attributer

-attributes

-attributing

-attribution

-attributions

-attributive

-attributively

-attrition

-attune

-attuned

-attunes

-attuning

-atypical

-atypically

-auburn

-auction

-auctioned

-auctioneer

-auctioneer's

-auctioneers

-auctioning

-audacious

-audaciously

-audaciousness

-audacity

-audible

-audibly

-audience

-audience's

-audiences

-audio

-audiogram

-audiogram's

-audiograms

-audiological

-audiologist

-audiologist's

-audiologists

-audiology

-audiometer

-audiometer's

-audiometers

-audiometric

-audiometry

-audit

-audited

-auditing

-audition

-audition's

-auditioned

-auditioning

-auditions

-auditive

-auditor

-auditor's

-auditorium

-auditoriums

-auditors

-auditory

-audits

-auger

-auger's

-augers

-aught

-augment

-augmentation

-augmentations

-augmented

-augmenter

-augmenting

-augments

-augur

-augurs

-august

-augustly

-augustness

-aunt

-aunt's

-auntly

-aunts

-aura

-aura's

-aural

-aurally

-auras

-aureole

-aureomycin

-aurora

-auscultate

-auscultated

-auscultates

-auscultating

-auscultation

-auscultations

-auspice

-auspices

-auspicious

-auspiciously

-auspiciousness

-austere

-austerely

-austereness

-austerity

-authentic

-authentically

-authenticate

-authenticated

-authenticates

-authenticating

-authentication

-authentications

-authenticator

-authenticators

-authenticity

-author

-author's

-authored

-authoring

-authoritarian

-authoritarianism

-authoritative

-authoritatively

-authoritativeness

-authorities

-authority

-authority's

-authors

-authorship

-autism

-autistic

-auto

-auto's

-autobiographic

-autobiographical

-autobiographically

-autobiographies

-autobiography

-autobiography's

-autocollimator

-autocorrelate

-autocorrelated

-autocorrelates

-autocorrelating

-autocorrelation

-autocorrelations

-autocracies

-autocracy

-autocrat

-autocrat's

-autocratic

-autocratically

-autocrats

-autodial

-autofluorescence

-autograph

-autographed

-autographing

-autographs

-automata

-automate

-automated

-automates

-automatic

-automatically

-automatics

-automating

-automation

-automaton

-automatons

-automobile

-automobile's

-automobiles

-automotive

-autonavigator

-autonavigator's

-autonavigators

-autonomic

-autonomous

-autonomously

-autonomy

-autopilot

-autopilot's

-autopilots

-autopsied

-autopsies

-autopsy

-autoregressive

-autorepeat

-autorepeating

-autorepeats

-autos

-autosuggestibility

-autotransformer

-autumn

-autumn's

-autumnal

-autumnally

-autumns

-auxiliaries

-auxiliary

-avail

-availabilities

-availability

-available

-availableness

-availably

-availed

-availer

-availers

-availing

-avails

-avalanche

-avalanched

-avalanches

-avalanching

-avant

-avarice

-avaricious

-avariciously

-avariciousness

-avenge

-avenged

-avenger

-avenges

-avenging

-avenue

-avenue's

-avenues

-aver

-average

-averaged

-averagely

-averageness

-averages

-averaging

-averred

-averrer

-averring

-avers

-averse

-aversely

-averseness

-aversion

-aversion's

-aversions

-aversive

-avert

-averted

-averting

-averts

-avian

-aviaries

-aviary

-aviation

-aviator

-aviator's

-aviators

-avid

-avidity

-avidly

-avidness

-avionic

-avionics

-avocado

-avocados

-avocation

-avocation's

-avocations

-avoid

-avoidable

-avoidably

-avoidance

-avoided

-avoider

-avoiders

-avoiding

-avoids

-avouch

-avow

-avowed

-avowedly

-avower

-avows

-await

-awaited

-awaiting

-awaits

-awake

-awaked

-awaken

-awakened

-awakener

-awakening

-awakens

-awakes

-awaking

-award

-awarded

-awarder

-awarders

-awarding

-awards

-aware

-awareness

-awash

-away

-awayness

-awe

-awed

-awesome

-awesomely

-awesomeness

-awful

-awfully

-awfulness

-awhile

-awhiles

-awing

-awkward

-awkwardly

-awkwardness

-awl

-awl's

-awls

-awning

-awning's

-awninged

-awnings

-awoke

-awry

-ax

-axe

-axed

-axer

-axers

-axes

-axial

-axially

-axing

-axiological

-axiologically

-axiom

-axiom's

-axiomatic

-axiomatically

-axiomatics

-axioms

-axion

-axion's

-axions

-axis

-axle

-axle's

-axles

-axolotl

-axolotl's

-axolotls

-axon

-axon's

-axons

-aye

-ayer

-ayers

-ayes

-azalea

-azalea's

-azaleas

-azimuth

-azimuth's

-azimuths

-azure

-babble

-babbled

-babbler

-babbles

-babbling

-babe

-babe's

-babes

-babied

-babies

-baby

-baby's

-babyhood

-babying

-babyish

-babysit

-babysits

-babysitter

-babysitters

-baccalaureate

-bachelor

-bachelor's

-bachelors

-bacilli

-bacillus

-back

-backache

-backache's

-backaches

-backbone

-backbone's

-backbones

-backdrop

-backdrop's

-backdrops

-backed

-backer

-backers

-background

-background's

-backgrounds

-backing

-backlash

-backlasher

-backlog

-backlog's

-backlogs

-backpack

-backpack's

-backpacker

-backpackers

-backpacks

-backplane

-backplane's

-backplanes

-backs

-backscatter

-backscattered

-backscattering

-backscatters

-backslash

-backslashed

-backslashes

-backslashing

-backspace

-backspaced

-backspaces

-backspacing

-backstabber

-backstabbing

-backstage

-backstairs

-backstitch

-backstitched

-backstitches

-backstitching

-backtrack

-backtracked

-backtracker

-backtrackers

-backtracking

-backtracks

-backup

-backups

-backward

-backwardly

-backwardness

-backwards

-backwater

-backwater's

-backwaters

-backwoods

-backyard

-backyard's

-backyards

-bacon

-baconer

-bacteria

-bacterial

-bacterially

-bacterium

-bad

-bade

-baden

-badge

-badged

-badger

-badger's

-badgered

-badgering

-badgers

-badges

-badging

-badlands

-badly

-badminton

-badness

-bads

-baffle

-baffled

-baffler

-bafflers

-baffles

-baffling

-bafflingly

-bag

-bag's

-bagatelle

-bagatelle's

-bagatelles

-bagel

-bagel's

-bagels

-baggage

-bagged

-bagger

-bagger's

-baggers

-baggier

-baggies

-bagginess

-bagging

-baggy

-bagpipe

-bagpipe's

-bagpiper

-bagpipes

-bags

-bah

-bail

-bailer

-bailiff

-bailiff's

-bailiffs

-bailing

-bailly

-bait

-baited

-baiter

-baiting

-baits

-bake

-baked

-baker

-bakeries

-bakers

-bakery

-bakery's

-bakes

-baking

-bakings

-baklava

-balalaika

-balalaika's

-balalaikas

-balance

-balanced

-balancedness

-balancer

-balancers

-balances

-balancing

-balconied

-balconies

-balcony

-balcony's

-bald

-balder

-balding

-baldly

-baldness

-bale

-baled

-baleful

-balefully

-balefulness

-baler

-balers

-bales

-baling

-balk

-balked

-balker

-balkier

-balkiness

-balking

-balks

-balky

-ball

-ballad

-ballad's

-ballads

-ballast

-ballast's

-ballasts

-balled

-baller

-ballerina

-ballerina's

-ballerinas

-ballers

-ballet

-ballet's

-ballets

-balling

-ballistic

-ballistics

-balloon

-ballooned

-ballooner

-ballooners

-ballooning

-balloons

-ballot

-ballot's

-balloted

-balloter

-balloting

-ballots

-ballplayer

-ballplayer's

-ballplayers

-ballroom

-ballroom's

-ballrooms

-balls

-ballyhoo

-balm

-balm's

-balmier

-balminess

-balms

-balmy

-balsa

-balsam

-balsams

-balustrade

-balustrade's

-balustrades

-bamboo

-bamboos

-ban

-ban's

-banal

-banally

-banana

-banana's

-bananas

-band

-bandage

-bandaged

-bandager

-bandages

-bandaging

-banded

-bander

-bandied

-bandies

-banding

-bandit

-bandit's

-bandits

-bandpass

-bands

-bandstand

-bandstand's

-bandstands

-bandwagon

-bandwagon's

-bandwagons

-bandwidth

-bandwidths

-bandy

-bandying

-bane

-baneful

-banefully

-bang

-banged

-banger

-banging

-bangle

-bangle's

-bangles

-bangs

-baning

-banish

-banished

-banisher

-banishes

-banishing

-banishment

-banister

-banister's

-banisters

-banjo

-banjo's

-banjos

-bank

-banked

-banker

-bankers

-banking

-bankrupt

-bankruptcies

-bankruptcy

-bankruptcy's

-bankrupted

-bankrupting

-bankrupts

-banks

-banned

-banner

-banner's

-banners

-banning

-banquet

-banqueted

-banqueter

-banqueting

-banquetings

-banquets

-bans

-banshee

-banshee's

-banshees

-bantam

-banter

-bantered

-banterer

-bantering

-banteringly

-banters

-baptism

-baptism's

-baptismal

-baptismally

-baptisms

-baptist

-baptist's

-baptistery

-baptistries

-baptistry

-baptistry's

-baptists

-bar

-bar's

-barb

-barbarian

-barbarian's

-barbarians

-barbaric

-barbarities

-barbarity

-barbarous

-barbarously

-barbarousness

-barbecue

-barbecued

-barbecuer

-barbecues

-barbecuing

-barbed

-barbedness

-barbell

-barbell's

-barbells

-barber

-barbered

-barbering

-barbers

-barbital

-barbiturate

-barbiturates

-barbs

-bard

-bard's

-bards

-bare

-bared

-barefoot

-barefooted

-barely

-bareness

-barer

-bares

-barest

-barflies

-barfly

-barfly's

-bargain

-bargained

-bargainer

-bargaining

-bargains

-barge

-barged

-barges

-barging

-baring

-baritone

-baritone's

-baritones

-barium

-bark

-barked

-barker

-barkers

-barking

-barks

-barley

-barn

-barn's

-barns

-barnstorm

-barnstormed

-barnstormer

-barnstorming

-barnstorms

-barnyard

-barnyard's

-barnyards

-barometer

-barometer's

-barometers

-barometric

-baron

-baron's

-baroness

-baronial

-baronies

-barons

-barony

-barony's

-baroque

-baroquely

-baroqueness

-barrack

-barracker

-barracks

-barracuda

-barracuda's

-barracudas

-barrage

-barrage's

-barraged

-barrages

-barraging

-barred

-barrel

-barrel's

-barrels

-barren

-barrenness

-barrens

-barricade

-barricade's

-barricades

-barrier

-barrier's

-barriers

-barring

-barringer

-barrow

-barrows

-bars

-bartender

-bartender's

-bartenders

-barter

-bartered

-barterer

-bartering

-barters

-bas

-basal

-basally

-basalt

-base

-baseball

-baseball's

-baseballs

-baseboard

-baseboard's

-baseboards

-based

-baseless

-baseline

-baseline's

-baselines

-basely

-baseman

-basement

-basement's

-basements

-baseness

-baser

-bases

-basest

-bash

-bashed

-basher

-bashes

-bashful

-bashfully

-bashfulness

-bashing

-basic

-basically

-basics

-basil

-basin

-basin's

-basined

-basing

-basins

-basis

-bask

-basked

-basket

-basket's

-basketball

-basketball's

-basketballs

-baskets

-basking

-bass

-bass's

-basses

-basset

-bassinet

-bassinet's

-bassinets

-basso

-bastard

-bastard's

-bastardly

-bastards

-baste

-basted

-baster

-bastes

-basting

-bastion

-bastion's

-bastioned

-bastions

-bat

-bat's

-batch

-batched

-batcher

-batches

-batching

-bated

-bater

-bath

-bathe

-bathed

-bather

-bathers

-bathes

-bathing

-bathos

-bathrobe

-bathrobe's

-bathrobes

-bathroom

-bathroom's

-bathroomed

-bathrooms

-baths

-bathtub

-bathtub's

-bathtubs

-bating

-baton

-baton's

-batons

-bats

-battalion

-battalion's

-battalions

-batted

-batten

-battened

-battening

-battens

-batter

-battered

-batteries

-battering

-batters

-battery

-battery's

-batting

-battle

-battled

-battlefield

-battlefield's

-battlefields

-battlefront

-battlefront's

-battlefronts

-battleground

-battleground's

-battlegrounds

-battlement

-battlement's

-battlemented

-battlements

-battler

-battlers

-battles

-battleship

-battleship's

-battleships

-battling

-bauble

-bauble's

-baubles

-baud

-bauds

-bauxite

-bawdier

-bawdiness

-bawdy

-bawl

-bawled

-bawler

-bawling

-bawls

-bay

-bayed

-baying

-bayly

-bayonet

-bayonet's

-bayoneted

-bayoneting

-bayonets

-bayou

-bayou's

-bayous

-bays

-bazaar

-bazaar's

-bazaars

-be

-beach

-beached

-beaches

-beachhead

-beachhead's

-beachheads

-beaching

-beacon

-beacon's

-beaconed

-beaconing

-beacons

-bead

-beaded

-beading

-beadle

-beadle's

-beadles

-beads

-beady

-beagle

-beagle's

-beagles

-beak

-beaked

-beaker

-beakers

-beaks

-beam

-beamed

-beamer

-beamers

-beaming

-beams

-bean

-beanbag

-beanbag's

-beanbags

-beaned

-beaner

-beaners

-beaning

-beans

-bear

-bearable

-bearably

-beard

-bearded

-beardedness

-beardless

-beards

-bearer

-bearers

-bearing

-bearings

-bearish

-bearishly

-bearishness

-bears

-beast

-beastings

-beastlier

-beastliness

-beastly

-beasts

-beat

-beatable

-beatably

-beaten

-beater

-beaters

-beatific

-beatification

-beatify

-beating

-beatings

-beatitude

-beatitude's

-beatitudes

-beatnik

-beatnik's

-beatniks

-beats

-beau

-beau's

-beaus

-beauteous

-beauteously

-beauteousness

-beauties

-beautification

-beautifications

-beautified

-beautifier

-beautifiers

-beautifies

-beautiful

-beautifully

-beautifulness

-beautify

-beautifying

-beauty

-beauty's

-beaver

-beaver's

-beavers

-becalm

-becalmed

-becalming

-becalms

-became

-because

-beck

-beckon

-beckoned

-beckoning

-beckons

-become

-becomes

-becoming

-becomingly

-bed

-bed's

-bedazzle

-bedazzled

-bedazzlement

-bedazzles

-bedazzling

-bedbug

-bedbug's

-bedbugs

-bedded

-bedder

-bedder's

-bedders

-bedding

-bedevil

-bedevils

-bedfast

-bedlam

-bedpost

-bedpost's

-bedposts

-bedraggle

-bedraggled

-bedridden

-bedrock

-bedrock's

-bedroom

-bedroom's

-bedroomed

-bedrooms

-beds

-bedside

-bedspread

-bedspread's

-bedspreads

-bedspring

-bedspring's

-bedsprings

-bedstead

-bedstead's

-bedsteads

-bedtime

-bee

-beech

-beechen

-beecher

-beef

-beefed

-beefer

-beefers

-beefier

-beefing

-beefs

-beefsteak

-beefy

-beehive

-beehive's

-beehives

-been

-beens

-beep

-beeped

-beeper

-beeping

-beeps

-beer

-beers

-bees

-beet

-beet's

-beetle

-beetle's

-beetled

-beetles

-beetling

-beets

-befall

-befallen

-befalling

-befalls

-befell

-befit

-befit's

-befits

-befitted

-befitting

-befittingly

-befog

-befogged

-befogging

-befogs

-before

-beforehand

-befoul

-befouled

-befouling

-befouls

-befriend

-befriended

-befriending

-befriends

-befuddle

-befuddled

-befuddles

-befuddling

-beg

-began

-beget

-begets

-begetting

-beggar

-beggared

-beggaring

-beggarliness

-beggarly

-beggars

-beggary

-begged

-begging

-begin

-beginner

-beginner's

-beginners

-beginning

-beginning's

-beginnings

-begins

-begot

-begotten

-begrudge

-begrudged

-begrudger

-begrudges

-begrudging

-begrudgingly

-begs

-beguile

-beguiled

-beguiler

-beguiles

-beguiling

-beguilingly

-begun

-behalf

-behave

-behaved

-behaver

-behaves

-behaving

-behead

-beheading

-beheld

-behest

-behind

-behold

-beholden

-beholder

-beholders

-beholding

-beholds

-beige

-being

-beings

-belated

-belatedly

-belatedness

-belay

-belayed

-belaying

-belays

-belch

-belched

-belches

-belching

-belfries

-belfry

-belfry's

-belie

-belied

-belief

-belief's

-beliefs

-belier

-belies

-believability

-believable

-believably

-believe

-believed

-believer

-believers

-believes

-believing

-belittle

-belittled

-belittler

-belittles

-belittling

-bell

-bell's

-bellboy

-bellboy's

-bellboys

-belle

-belle's

-belles

-bellhop

-bellhop's

-bellhops

-bellicose

-bellicosely

-bellicoseness

-bellicosity

-bellied

-bellies

-belligerence

-belligerent

-belligerent's

-belligerently

-belligerents

-bellman

-bellmen

-bellow

-bellowed

-bellowing

-bellows

-bells

-bellwether

-bellwether's

-bellwethers

-belly

-belly's

-bellyful

-bellying

-belong

-belonged

-belonging

-belongingness

-belongings

-belongs

-beloved

-below

-belt

-belted

-belting

-belts

-bely

-belying

-bemoan

-bemoaned

-bemoaning

-bemoans

-bench

-benched

-bencher

-benches

-benching

-benchmark

-benchmark's

-benchmarking

-benchmarks

-bend

-bendable

-bended

-bender

-benders

-bending

-bends

-beneath

-benediction

-benediction's

-benedictions

-benefactor

-benefactor's

-benefactors

-beneficence

-beneficences

-beneficial

-beneficially

-beneficialness

-beneficiaries

-beneficiary

-benefit

-benefited

-benefiter

-benefiters

-benefiting

-benefits

-benevolence

-benevolent

-benevolently

-benevolentness

-benighted

-benightedly

-benightedness

-benign

-benignly

-bent

-bents

-benzene

-bequeath

-bequeathed

-bequeathes

-bequeathing

-bequest

-bequest's

-bequests

-berate

-berated

-berates

-berating

-bereave

-bereaved

-bereavement

-bereavements

-bereaves

-bereaving

-bereft

-beret

-beret's

-berets

-beribboned

-beriberi

-berkelium

-berried

-berries

-berry

-berry's

-berrying

-berth

-berthed

-berthing

-berthings

-berths

-beryl

-beryllium

-bes

-beseech

-beseeches

-beseeching

-beseechingly

-beset

-besets

-besetting

-beside

-besides

-besiege

-besieged

-besieger

-besiegers

-besieging

-besmirch

-besmirched

-besmirches

-besmirching

-besotted

-besotting

-besought

-bespeak

-bespeaks

-bespectacled

-best

-bested

-bester

-bestial

-bestially

-besting

-bestow

-bestowal

-bestowed

-bests

-bestseller

-bestseller's

-bestsellers

-bestselling

-bet

-bet's

-beta

-betas

-beth

-betide

-betray

-betrayal

-betrayed

-betrayer

-betraying

-betrays

-betroth

-betrothal

-betrothals

-betrothed

-bets

-better

-bettered

-bettering

-betterment

-betterments

-betters

-betting

-between

-betweenness

-betwixt

-bevel

-bevels

-beverage

-beverage's

-beverages

-bevies

-bevy

-bewail

-bewailed

-bewailing

-bewails

-beware

-bewhiskered

-bewilder

-bewildered

-bewilderedly

-bewilderedness

-bewildering

-bewilderingly

-bewilderment

-bewilders

-bewitch

-bewitched

-bewitches

-bewitching

-bewitchingly

-beyond

-biannual

-bias

-biased

-biases

-biasing

-biasness

-bib

-bib's

-bibbed

-bibbing

-bible

-bible's

-bibles

-biblical

-biblically

-bibliographic

-bibliographical

-bibliographically

-bibliographics

-bibliographies

-bibliography

-bibliography's

-bibliophile

-bibliophiles

-bibs

-bicameral

-bicarbonate

-bicentennial

-biceps

-bicker

-bickered

-bickerer

-bickering

-bickers

-biconcave

-biconvex

-bicycle

-bicycled

-bicycler

-bicyclers

-bicycles

-bicycling

-bid

-bid's

-biddable

-bidden

-bidder

-bidder's

-bidders

-biddies

-bidding

-biddy

-bide

-bided

-bider

-bides

-biding

-bidirectional

-bids

-biennial

-biennially

-biennium

-bier

-bifocal

-bifocals

-bifurcate

-bifurcated

-bifurcately

-bifurcates

-bifurcating

-bifurcation

-bifurcations

-big

-bigger

-biggest

-bight

-bight's

-bights

-bigly

-bigness

-bigot

-bigot's

-bigoted

-bigotedly

-bigoting

-bigotry

-bigots

-bijection

-bijection's

-bijections

-bijective

-bijectively

-bike

-bike's

-biked

-biker

-biker's

-bikers

-bikes

-biking

-bikini

-bikini's

-bikinied

-bikinis

-bilabial

-bilateral

-bilaterally

-bilateralness

-bile

-bilge

-bilge's

-bilged

-bilges

-bilging

-bilinear

-bilingual

-bilingually

-bilinguals

-bilk

-bilked

-bilker

-bilking

-bilks

-bill

-billboard

-billboard's

-billboards

-billed

-biller

-billers

-billet

-billeted

-billeting

-billets

-billiard

-billiards

-billing

-billings

-billion

-billions

-billionth

-billow

-billowed

-billowing

-billows

-bills

-bimodal

-bimolecular

-bimolecularly

-bimonthlies

-bimonthly

-bin

-bin's

-binaries

-binary

-binaural

-binaurally

-bind

-binded

-binder

-binders

-binding

-bindingly

-bindingness

-bindings

-binds

-bing

-binge

-bingen

-binges

-bingo

-bingos

-binocular

-binocularly

-binoculars

-binomial

-binomially

-bins

-binuclear

-biochemical

-biochemically

-biochemistry

-biofeedback

-biographer

-biographer's

-biographers

-biographic

-biographical

-biographically

-biographies

-biography

-biography's

-biological

-biologically

-biologicals

-biologist

-biologist's

-biologists

-biology

-biomedical

-biomedicine

-biopsies

-biopsy

-bipartisan

-bipartite

-bipartitely

-bipartition

-biped

-bipeds

-biplane

-biplane's

-biplanes

-bipolar

-biracial

-birch

-birchen

-bircher

-birches

-bird

-bird's

-birdbath

-birdbath's

-birdbaths

-birder

-birdie

-birdied

-birdies

-birdlike

-birds

-birefringence

-birefringent

-birth

-birthday

-birthday's

-birthdays

-birthed

-birthplace

-birthplaces

-birthright

-birthright's

-birthrights

-births

-biscuit

-biscuit's

-biscuits

-bisect

-bisected

-bisecting

-bisection

-bisection's

-bisections

-bisector

-bisector's

-bisectors

-bisects

-bishop

-bishop's

-bishops

-bismuth

-bison

-bison's

-bisons

-bisque

-bisques

-bit

-bit's

-bitblt

-bitblts

-bitch

-bitch's

-bitches

-bite

-biter

-biters

-bites

-biting

-bitingly

-bitmap

-bitmap's

-bitmaps

-bits

-bitser

-bitten

-bitter

-bitterer

-bitterest

-bitterly

-bitterness

-bitters

-bittersweet

-bittersweetly

-bittersweetness

-bituminous

-bitwise

-bivalve

-bivalve's

-bivalved

-bivalves

-bivariate

-bivouac

-bivouacs

-biweekly

-bizarre

-bizarrely

-bizarreness

-blab

-blabbed

-blabbermouth

-blabbermouths

-blabbing

-blabs

-black

-blackberries

-blackberry

-blackberry's

-blackbird

-blackbird's

-blackbirder

-blackbirds

-blackboard

-blackboard's

-blackboards

-blacked

-blacken

-blackened

-blackener

-blackening

-blackens

-blacker

-blackest

-blacking

-blackjack

-blackjack's

-blackjacks

-blacklist

-blacklisted

-blacklister

-blacklisting

-blacklists

-blackly

-blackmail

-blackmailed

-blackmailer

-blackmailers

-blackmailing

-blackmails

-blackness

-blackout

-blackout's

-blackouts

-blacks

-blacksmith

-blacksmith's

-blacksmithing

-blacksmiths

-bladder

-bladder's

-bladders

-blade

-blade's

-bladed

-blades

-blamable

-blame

-blamed

-blameless

-blamelessly

-blamelessness

-blamer

-blamers

-blames

-blaming

-blanch

-blanched

-blancher

-blanches

-blanching

-bland

-blandly

-blandness

-blank

-blanked

-blanker

-blankest

-blanket

-blanketed

-blanketer

-blanketers

-blanketing

-blankets

-blanking

-blankly

-blankness

-blanks

-blare

-blared

-blares

-blaring

-blase

-blaspheme

-blasphemed

-blasphemer

-blasphemes

-blasphemies

-blaspheming

-blasphemous

-blasphemously

-blasphemousness

-blasphemy

-blast

-blasted

-blaster

-blasters

-blasting

-blasts

-blatant

-blatantly

-blatantness

-blaze

-blazed

-blazer

-blazers

-blazes

-blazing

-blazingly

-bleach

-bleached

-bleacher

-bleachers

-bleaches

-bleaching

-bleak

-bleakly

-bleakness

-blear

-bleariness

-bleary

-bleat

-bleater

-bleating

-bleats

-bled

-bleed

-bleeder

-bleeders

-bleeding

-bleedings

-bleeds

-blemish

-blemish's

-blemished

-blemishes

-blemishing

-blend

-blended

-blender

-blenders

-blending

-blends

-bless

-blessed

-blessedly

-blessedness

-blesses

-blessing

-blessings

-blew

-blight

-blighted

-blighter

-blimp

-blimp's

-blimps

-blind

-blinded

-blinder

-blinders

-blindfold

-blindfolded

-blindfolding

-blindfolds

-blinding

-blindingly

-blindly

-blindness

-blinds

-blink

-blinked

-blinker

-blinkered

-blinkering

-blinkers

-blinking

-blinks

-blip

-blip's

-blips

-bliss

-blissful

-blissfully

-blissfulness

-blister

-blistered

-blistering

-blisteringly

-blisters

-blithe

-blithely

-blither

-blithest

-blitz

-blitz's

-blitzes

-blitzkrieg

-blizzard

-blizzard's

-blizzards

-bloat

-bloated

-bloater

-bloaters

-bloating

-bloats

-blob

-blob's

-blobs

-bloc

-bloc's

-block

-block's

-blockade

-blockaded

-blockader

-blockades

-blockading

-blockage

-blockage's

-blockages

-blocked

-blocker

-blockers

-blockhouse

-blockhouses

-blocking

-blocks

-blocs

-bloke

-bloke's

-blokes

-blond

-blond's

-blonde

-blonde's

-blondes

-blonds

-blood

-blooded

-bloodhound

-bloodhound's

-bloodhounds

-bloodied

-bloodiest

-bloodiness

-bloodless

-bloodlessly

-bloodlessness

-bloods

-bloodshed

-bloodshot

-bloodstain

-bloodstain's

-bloodstained

-bloodstains

-bloodstream

-bloody

-bloodying

-bloom

-bloomed

-bloomer

-bloomers

-blooming

-blooms

-blossom

-blossomed

-blossoms

-blot

-blot's

-blots

-blotted

-blotting

-blouse

-blouse's

-blouses

-blousing

-blow

-blowed

-blower

-blowers

-blowfish

-blowing

-blown

-blows

-blowup

-blubber

-blubbered

-blubbering

-bludgeon

-bludgeoned

-bludgeoning

-bludgeons

-blue

-blueberries

-blueberry

-blueberry's

-bluebird

-bluebird's

-bluebirds

-bluebonnet

-bluebonnet's

-bluebonnets

-blued

-bluefish

-bluely

-blueness

-blueprint

-blueprint's

-blueprinted

-blueprinting

-blueprints

-bluer

-blues

-bluest

-bluestocking

-bluff

-bluffed

-bluffer

-bluffing

-bluffly

-bluffness

-bluffs

-bluing

-bluish

-bluishness

-blunder

-blundered

-blunderer

-blundering

-blunderingly

-blunderings

-blunders

-blunt

-blunted

-blunter

-bluntest

-blunting

-bluntly

-bluntness

-blunts

-blur

-blur's

-blurb

-blurred

-blurredly

-blurrier

-blurriness

-blurring

-blurringly

-blurry

-blurs

-blurt

-blurted

-blurter

-blurting

-blurts

-blush

-blushed

-blusher

-blushes

-blushing

-blushingly

-bluster

-blustered

-blusterer

-blustering

-blusteringly

-blusters

-blustery

-boar

-board

-boarded

-boarder

-boarders

-boarding

-boardinghouse

-boardinghouse's

-boardinghouses

-boards

-boast

-boasted

-boaster

-boasters

-boastful

-boastfully

-boastfulness

-boasting

-boastings

-boasts

-boat

-boated

-boater

-boaters

-boathouse

-boathouse's

-boathouses

-boating

-boatload

-boatload's

-boatloads

-boatman

-boatmen

-boats

-boatswain

-boatswain's

-boatswains

-boatyard

-boatyard's

-boatyards

-bob

-bob's

-bobbed

-bobbies

-bobbin

-bobbin's

-bobbing

-bobbins

-bobby

-bobolink

-bobolink's

-bobolinks

-bobs

-bobwhite

-bobwhite's

-bobwhites

-bode

-boded

-bodes

-bodice

-bodied

-bodies

-bodily

-boding

-body

-bodybuilder

-bodybuilder's

-bodybuilders

-bodybuilding

-bodyguard

-bodyguard's

-bodyguards

-bodying

-bog

-bog's

-bogged

-boggle

-boggled

-boggles

-boggling

-bogs

-bogus

-boil

-boiled

-boiler

-boilerplate

-boilers

-boiling

-boils

-boisterous

-boisterously

-boisterousness

-bold

-bolder

-boldest

-boldface

-boldfaced

-boldfaces

-boldfacing

-boldly

-boldness

-boll

-bolster

-bolstered

-bolsterer

-bolstering

-bolsters

-bolt

-bolted

-bolter

-bolting

-bolts

-bomb

-bombard

-bombarded

-bombarding

-bombardment

-bombardments

-bombards

-bombast

-bombaster

-bombastic

-bombed

-bomber

-bombers

-bombing

-bombings

-bombproof

-bombs

-bonanza

-bonanza's

-bonanzas

-bond

-bondage

-bonded

-bonder

-bonders

-bonding

-bonds

-bondsman

-bondsmen

-bone

-boned

-boner

-boners

-bones

-bonfire

-bonfire's

-bonfires

-bong

-bonier

-boning

-bonnet

-bonneted

-bonnets

-bonnier

-bonny

-bonus

-bonus's

-bonuses

-bony

-boo

-boob

-boobies

-booboo

-booby

-book

-bookcase

-bookcase's

-bookcases

-booked

-booker

-bookers

-bookie

-bookie's

-bookies

-booking

-bookings

-bookish

-bookishly

-bookishness

-bookkeeper

-bookkeeper's

-bookkeepers

-bookkeeping

-booklet

-booklet's

-booklets

-books

-bookseller

-bookseller's

-booksellers

-bookshelf

-bookshelf's

-bookshelves

-bookstore

-bookstore's

-bookstores

-boolean

-booleans

-boom

-boomed

-boomer

-boomerang

-boomerang's

-boomerangs

-booming

-booms

-boon

-boor

-boor's

-boorish

-boorishly

-boorishness

-boors

-boos

-boost

-boosted

-booster

-boosting

-boosts

-boot

-booted

-booth

-booths

-booties

-booting

-bootleg

-bootlegged

-bootlegger

-bootlegger's

-bootleggers

-bootlegging

-bootlegs

-boots

-bootstrap

-bootstrap's

-bootstrapped

-bootstrapping

-bootstraps

-booty

-booze

-boozer

-boozing

-borate

-borated

-borates

-borax

-bordello

-bordello's

-bordellos

-border

-bordered

-borderer

-bordering

-borderings

-borderland

-borderland's

-borderlands

-borderline

-borders

-bore

-bored

-boredom

-borer

-borers

-bores

-boric

-boring

-boringly

-boringness

-born

-borne

-boron

-borough

-boroughs

-borrow

-borrowed

-borrower

-borrowers

-borrowing

-borrowings

-borrows

-bosom

-bosom's

-bosoms

-boss

-bossed

-bosses

-bosun

-botanical

-botanically

-botanist

-botanist's

-botanists

-botany

-botch

-botched

-botcher

-botchers

-botches

-botching

-both

-bother

-bothered

-bothering

-bothers

-bothersome

-bottle

-bottled

-bottleneck

-bottleneck's

-bottlenecks

-bottler

-bottlers

-bottles

-bottling

-bottom

-bottomed

-bottomer

-bottoming

-bottomless

-bottomlessly

-bottomlessness

-bottoms

-botulinus

-botulism

-bouffant

-bough

-bough's

-boughed

-boughs

-bought

-boughten

-boulder

-boulder's

-bouldered

-boulders

-boulevard

-boulevard's

-boulevards

-bounce

-bounced

-bouncer

-bouncers

-bounces

-bouncier

-bouncing

-bouncingly

-bouncy

-bound

-boundaries

-boundary

-boundary's

-bounded

-bounden

-bounder

-bounding

-boundless

-boundlessly

-boundlessness

-bounds

-bounteous

-bounteously

-bounteousness

-bountied

-bounties

-bounty

-bounty's

-bouquet

-bouquet's

-bouquets

-bourbon

-bourbons

-bourgeois

-bourgeoisie

-bout

-bout's

-bouts

-bovine

-bovinely

-bovines

-bow

-bowed

-bowel

-bowel's

-bowels

-bowen

-bower

-bowers

-bowing

-bowl

-bowled

-bowler

-bowlers

-bowline

-bowline's

-bowlines

-bowling

-bowls

-bowman

-bows

-bowser

-bowstring

-bowstring's

-bowstrings

-box

-boxcar

-boxcar's

-boxcars

-boxed

-boxer

-boxers

-boxes

-boxing

-boxwood

-boy

-boy's

-boycott

-boycotted

-boycotter

-boycotting

-boycotts

-boyer

-boyfriend

-boyfriend's

-boyfriends

-boyhood

-boyish

-boyishly

-boyishness

-boys

-bra

-bra's

-brace

-braced

-bracelet

-bracelet's

-bracelets

-bracer

-braces

-bracing

-bracket

-bracketed

-bracketing

-brackets

-brackish

-brackishness

-brae

-brae's

-braes

-brag

-bragged

-bragger

-bragging

-brags

-braid

-braided

-braider

-braiding

-braids

-braille

-brain

-brainchild

-brainchild's

-brained

-brainier

-braininess

-braining

-brains

-brainstorm

-brainstorm's

-brainstormer

-brainstorming

-brainstorms

-brainwash

-brainwashed

-brainwasher

-brainwashes

-brainwashing

-brainy

-brake

-braked

-brakes

-braking

-bramble

-bramble's

-brambles

-brambling

-brambly

-bran

-branch

-branched

-branches

-branching

-branchings

-brand

-branded

-brander

-brandied

-brandies

-branding

-brandish

-brandishes

-brandishing

-brands

-brandy

-brandying

-bras

-brash

-brashly

-brashness

-brass

-brassed

-brasses

-brassier

-brassiere

-brassiness

-brassy

-brat

-brat's

-brats

-bravado

-brave

-braved

-bravely

-braveness

-braver

-bravery

-braves

-bravest

-braving

-bravo

-bravoed

-bravoing

-bravos

-bravura

-brawl

-brawled

-brawler

-brawling

-brawls

-brawn

-bray

-brayed

-brayer

-braying

-brays

-braze

-brazed

-brazen

-brazened

-brazening

-brazenly

-brazenness

-brazer

-brazes

-brazier

-brazier's

-braziers

-brazing

-breach

-breached

-breacher

-breachers

-breaches

-breaching

-bread

-breadboard

-breadboard's

-breadboards

-breaded

-breading

-breads

-breadth

-breadwinner

-breadwinner's

-breadwinners

-break

-breakable

-breakables

-breakage

-breakaway

-breakdown

-breakdown's

-breakdowns

-breaker

-breakers

-breakfast

-breakfasted

-breakfaster

-breakfasters

-breakfasting

-breakfasts

-breaking

-breakpoint

-breakpoint's

-breakpointed

-breakpointing

-breakpoints

-breaks

-breakthrough

-breakthrough's

-breakthroughes

-breakthroughs

-breakup

-breakups

-breakwater

-breakwater's

-breakwaters

-breast

-breasted

-breasting

-breasts

-breastwork

-breastwork's

-breastworks

-breath

-breathable

-breathe

-breathed

-breather

-breathers

-breathes

-breathier

-breathing

-breathless

-breathlessly

-breathlessness

-breaths

-breathtaking

-breathtakingly

-breathy

-bred

-breech

-breech's

-breeches

-breeching

-breed

-breeder

-breeding

-breeds

-breeze

-breeze's

-breezed

-breezes

-breezier

-breezily

-breeziness

-breezing

-breezy

-bremsstrahlung

-brethren

-breve

-breves

-brevet

-breveted

-breveting

-brevets

-brevity

-brew

-brewed

-brewer

-breweries

-brewers

-brewery

-brewery's

-brewing

-brews

-briar

-briar's

-briars

-bribe

-bribed

-briber

-bribers

-bribes

-bribing

-brick

-bricked

-bricker

-bricking

-bricklayer

-bricklayer's

-bricklayers

-bricklaying

-bricks

-bridal

-bride

-bride's

-bridegroom

-brides

-bridesmaid

-bridesmaid's

-bridesmaids

-bridge

-bridgeable

-bridged

-bridgehead

-bridgehead's

-bridgeheads

-bridges

-bridgework

-bridgework's

-bridging

-bridle

-bridled

-bridles

-bridling

-brief

-briefcase

-briefcase's

-briefcases

-briefed

-briefer

-briefest

-briefing

-briefing's

-briefings

-briefly

-briefness

-briefs

-brier

-brig

-brig's

-brigade

-brigade's

-brigaded

-brigades

-brigadier

-brigadier's

-brigadiers

-brigading

-brigantine

-bright

-brighten

-brightened

-brightener

-brighteners

-brightening

-brightens

-brighter

-brightest

-brighting

-brightly

-brightness

-brightnesses

-brights

-brigs

-brilliance

-brilliancy

-brilliant

-brilliantly

-brilliantness

-brim

-brimful

-brimmed

-brindle

-brindled

-brine

-briner

-bring

-bringer

-bringers

-bringing

-brings

-brining

-brink

-brinkmanship

-brisk

-brisker

-briskly

-briskness

-bristle

-bristled

-bristles

-bristling

-britches

-brittle

-brittled

-brittlely

-brittleness

-brittler

-brittlest

-brittling

-broach

-broached

-broacher

-broaches

-broaching

-broad

-broadband

-broadcast

-broadcasted

-broadcaster

-broadcasters

-broadcasting

-broadcastings

-broadcasts

-broaden

-broadened

-broadener

-broadeners

-broadening

-broadenings

-broadens

-broader

-broadest

-broadly

-broadness

-broads

-broadside

-brocade

-brocaded

-broccoli

-brochure

-brochure's

-brochures

-broil

-broiled

-broiler

-broilers

-broiling

-broils

-broke

-broken

-brokenly

-brokenness

-broker

-brokerage

-brokers

-bromide

-bromide's

-bromides

-bromine

-bromines

-bronchi

-bronchial

-bronchiole

-bronchiole's

-bronchioles

-bronchitis

-bronchus

-bronze

-bronzed

-bronzer

-bronzes

-bronzing

-brooch

-brooch's

-brooches

-brood

-brooder

-brooding

-broodingly

-broods

-brook

-brooked

-brooks

-broom

-broom's

-broomed

-brooming

-brooms

-broomstick

-broomstick's

-broomsticks

-broth

-brothel

-brothel's

-brothels

-brother

-brother's

-brotherhood

-brotherliness

-brotherly

-brothers

-brought

-brow

-brow's

-browbeat

-browbeaten

-browbeating

-browbeats

-brown

-browned

-browner

-brownest

-brownie

-brownie's

-brownies

-browning

-brownings

-brownish

-brownly

-brownness

-browns

-brows

-browse

-browsed

-browser

-browsers

-browses

-browsing

-bruise

-bruised

-bruiser

-bruisers

-bruises

-bruising

-brunch

-brunches

-brunette

-brunettes

-brunt

-brush

-brushed

-brusher

-brushes

-brushfire

-brushfire's

-brushfires

-brushier

-brushing

-brushlike

-brushy

-brusque

-brusquely

-brusqueness

-brutal

-brutalities

-brutality

-brutally

-brute

-brute's

-brutes

-brutish

-brutishly

-brutishness

-bubble

-bubbled

-bubbler

-bubbles

-bubblier

-bubbling

-bubbly

-buck

-buckboard

-buckboard's

-buckboards

-bucked

-bucker

-bucket

-bucket's

-bucketed

-bucketing

-buckets

-bucking

-buckle

-buckled

-buckler

-buckles

-buckling

-bucks

-buckshot

-buckskin

-buckskins

-buckwheat

-bucolic

-bud

-bud's

-budded

-buddies

-budding

-buddy

-buddy's

-budge

-budged

-budges

-budget

-budgetary

-budgeted

-budgeter

-budgeters

-budgeting

-budgets

-budging

-buds

-buff

-buff's

-buffalo

-buffaloes

-buffer

-buffer's

-buffered

-bufferer

-bufferer's

-bufferers

-buffering

-buffers

-buffet

-buffeted

-buffeting

-buffetings

-buffets

-buffing

-buffoon

-buffoon's

-buffoons

-buffs

-bug

-bug's

-bugged

-bugger

-bugger's

-buggered

-buggering

-buggers

-buggies

-bugging

-buggy

-buggy's

-bugle

-bugled

-bugler

-bugles

-bugling

-bugs

-build

-builded

-builder

-builders

-building

-building's

-buildings

-builds

-buildup

-buildup's

-buildups

-built

-bulb

-bulb's

-bulbed

-bulbs

-bulge

-bulged

-bulges

-bulging

-bulk

-bulked

-bulkhead

-bulkhead's

-bulkheaded

-bulkheads

-bulkier

-bulkiness

-bulks

-bulky

-bull

-bulldog

-bulldog's

-bulldogs

-bulldoze

-bulldozed

-bulldozer

-bulldozers

-bulldozes

-bulldozing

-bulled

-bullet

-bullet's

-bulletin

-bulletin's

-bulletins

-bulletproof

-bulletproofed

-bulletproofing

-bulletproofs

-bullets

-bullied

-bullies

-bulling

-bullion

-bullish

-bullishly

-bullishness

-bulls

-bully

-bullying

-bulwark

-bum

-bum's

-bumble

-bumblebee

-bumblebee's

-bumblebees

-bumbled

-bumbler

-bumblers

-bumbles

-bumbling

-bumblingly

-bummed

-bummer

-bummers

-bumming

-bump

-bumped

-bumper

-bumpers

-bumping

-bumps

-bumptious

-bumptiously

-bumptiousness

-bums

-bun

-bun's

-bunch

-bunched

-bunches

-bunching

-bundle

-bundled

-bundler

-bundles

-bundling

-bungalow

-bungalow's

-bungalows

-bungle

-bungled

-bungler

-bunglers

-bungles

-bungling

-bunglingly

-bunion

-bunion's

-bunions

-bunk

-bunked

-bunker

-bunker's

-bunkered

-bunkering

-bunkers

-bunkhouse

-bunkhouse's

-bunkhouses

-bunking

-bunkmate

-bunkmate's

-bunkmates

-bunks

-bunnies

-bunny

-bunny's

-buns

-bunt

-bunted

-bunter

-bunters

-bunting

-bunts

-buoy

-buoyancy

-buoyant

-buoyantly

-buoyed

-buoying

-buoys

-burden

-burden's

-burdened

-burdening

-burdens

-burdensome

-burdensomely

-burdensomeness

-bureau

-bureau's

-bureaucracies

-bureaucracy

-bureaucracy's

-bureaucrat

-bureaucrat's

-bureaucratic

-bureaucrats

-bureaus

-burgeon

-burgeoned

-burgeoning

-burgeons

-burger

-burgess

-burgess's

-burgesses

-burgher

-burgher's

-burghers

-burglar

-burglar's

-burglaries

-burglarproof

-burglarproofed

-burglarproofing

-burglarproofs

-burglars

-burglary

-burglary's

-burgle

-burgled

-burgles

-burgling

-burial

-buried

-burier

-buries

-burl

-burled

-burler

-burlesque

-burlesqued

-burlesquely

-burlesquer

-burlesques

-burlesquing

-burlier

-burliness

-burly

-burn

-burned

-burner

-burners

-burning

-burningly

-burnings

-burnish

-burnished

-burnisher

-burnishes

-burnishing

-burns

-burnt

-burntly

-burntness

-burp

-burped

-burping

-burps

-burr

-burr's

-burred

-burrer

-burro

-burro's

-burros

-burrow

-burrowed

-burrower

-burrowing

-burrows

-burrs

-bursa

-bursas

-bursitis

-burst

-bursted

-burster

-bursting

-bursts

-bury

-burying

-bus

-busboy

-busboy's

-busboys

-bused

-buses

-bush

-bushed

-bushel

-bushel's

-bushels

-bushes

-bushier

-bushiness

-bushing

-bushings

-bushwhack

-bushwhacked

-bushwhacker

-bushwhacking

-bushwhacks

-bushy

-busied

-busier

-busies

-busiest

-busily

-business

-business's

-businesses

-businesslike

-businessman

-businessmen

-busing

-buss

-bussed

-busses

-bussing

-bust

-bustard

-bustard's

-bustards

-busted

-buster

-busting

-bustle

-bustled

-bustling

-bustlingly

-busts

-busy

-busying

-but

-butane

-butcher

-butcher's

-butchered

-butcherer

-butchering

-butcherly

-butchers

-butchery

-butler

-butler's

-butlers

-butt

-butt's

-butte

-butted

-butter

-buttered

-butterer

-butterers

-butterfat

-butterflies

-butterfly

-butterfly's

-buttering

-butternut

-butters

-buttes

-butting

-buttock

-buttock's

-buttocks

-button

-buttoned

-buttoner

-buttonhole

-buttonhole's

-buttonholer

-buttonholes

-buttoning

-buttons

-buttress

-buttressed

-buttresses

-buttressing

-butts

-butyl

-butyrate

-buxom

-buxomly

-buxomness

-buy

-buyer

-buyer's

-buyers

-buying

-buys

-buzz

-buzzard

-buzzard's

-buzzards

-buzzed

-buzzer

-buzzes

-buzzing

-buzzword

-buzzword's

-buzzwords

-buzzy

-by

-bye

-byers

-byes

-bygone

-bygones

-bylaw

-bylaw's

-bylaws

-byline

-byline's

-byliner

-bylines

-bypass

-bypassed

-bypasses

-bypassing

-byproduct

-byproduct's

-byproducts

-bystander

-bystander's

-bystanders

-byte

-byte's

-bytes

-byway

-byways

-byword

-byword's

-bywords

-cab

-cab's

-cabbage

-cabbage's

-cabbaged

-cabbages

-cabbaging

-caber

-cabin

-cabin's

-cabinet

-cabinet's

-cabinets

-cabins

-cable

-cabled

-cables

-cabling

-cabs

-cache

-cache's

-cached

-cacher

-caches

-caching

-cackle

-cackled

-cackler

-cackles

-cackling

-cacti

-cactus

-cactuses

-cad

-cadence

-cadenced

-cadences

-cadencing

-cafe

-cafe's

-cafes

-cafeteria

-cafeteria's

-cafeterias

-cage

-caged

-cager

-cagers

-cages

-caging

-cajole

-cajoled

-cajoler

-cajoles

-cajoling

-cake

-caked

-cakes

-caking

-calamities

-calamity

-calamity's

-calcium

-calculate

-calculated

-calculatedly

-calculatedness

-calculates

-calculating

-calculation

-calculations

-calculative

-calculator

-calculator's

-calculators

-calculus

-calendar

-calendar's

-calendared

-calendaring

-calendars

-calf

-calfs

-calibrate

-calibrated

-calibrater

-calibrates

-calibrating

-calibration

-calibrations

-calibrator

-calibrators

-calico

-caliph

-caliphs

-call

-called

-caller

-caller's

-callers

-calling

-callous

-calloused

-callously

-callousness

-calls

-calm

-calmed

-calmer

-calmest

-calming

-calmingly

-calmly

-calmness

-calms

-calorie

-calorie's

-calories

-calves

-came

-camel

-camel's

-camels

-camera

-camera's

-cameras

-camion

-camouflage

-camouflaged

-camouflages

-camouflaging

-camp

-campaign

-campaigned

-campaigner

-campaigners

-campaigning

-campaigns

-camped

-camper

-campers

-camping

-camps

-campus

-campus's

-campuses

-can

-can's

-can't

-canal

-canal's

-canals

-canaries

-canary

-canary's

-cancel

-cancellation

-cancellation's

-cancellations

-cancels

-cancer

-cancer's

-cancers

-candid

-candidate

-candidate's

-candidates

-candidly

-candidness

-candied

-candies

-candle

-candled

-candler

-candles

-candlestick

-candlestick's

-candlesticks

-candling

-candy

-candying

-cane

-caned

-caner

-canes

-caning

-canker

-cankered

-cankering

-canned

-canner

-canner's

-canners

-cannibal

-cannibal's

-cannibals

-canning

-cannister

-cannister's

-cannisters

-cannon

-cannon's

-cannoned

-cannoning

-cannons

-cannot

-canoe

-canoe's

-canoed

-canoes

-canon

-canon's

-canonical

-canonically

-canonicals

-canons

-canopy

-cans

-cantankerous

-cantankerously

-cantankerousness

-canto

-canton

-canton's

-cantons

-cantor

-cantor's

-cantors

-cantos

-canvas

-canvas's

-canvaser

-canvases

-canvass

-canvassed

-canvasser

-canvassers

-canvasses

-canvassing

-canyon

-canyon's

-canyons

-cap

-cap's

-capabilities

-capability

-capability's

-capable

-capableness

-capably

-capacious

-capaciously

-capaciousness

-capacitance

-capacitances

-capacities

-capacitive

-capacitively

-capacitor

-capacitor's

-capacitors

-capacity

-cape

-caper

-capered

-capering

-capers

-capes

-capillary

-capita

-capital

-capitalism

-capitalist

-capitalist's

-capitalists

-capitally

-capitals

-capitol

-capitol's

-capitols

-capped

-capping

-capricious

-capriciously

-capriciousness

-caps

-captain

-captained

-captaining

-captains

-caption

-caption's

-captioned

-captioner

-captioning

-captions

-captivate

-captivated

-captivates

-captivating

-captivation

-captive

-captive's

-captives

-captivity

-captor

-captor's

-captors

-capture

-captured

-capturer

-capturers

-captures

-capturing

-car

-car's

-caravan

-caravan's

-caravaner

-caravans

-carbohydrate

-carbohydrate's

-carbohydrates

-carbolic

-carbon

-carbon's

-carbonate

-carbonated

-carbonates

-carbonation

-carbonic

-carbons

-carcass

-carcass's

-carcasses

-card

-card's

-cardboard

-cardboards

-carded

-carder

-cardiac

-cardinal

-cardinalities

-cardinality

-cardinality's

-cardinally

-cardinals

-carding

-cards

-care

-cared

-career

-career's

-careered

-careering

-careers

-carefree

-careful

-carefully

-carefulness

-careless

-carelessly

-carelessness

-carer

-carers

-cares

-caress

-caressed

-caresser

-caresses

-caressing

-caressingly

-caressive

-caressively

-caret

-carets

-cargo

-cargoes

-cargos

-caribou

-caribous

-caring

-carnation

-carnations

-carnival

-carnival's

-carnivals

-carnivorous

-carnivorously

-carnivorousness

-carol

-carol's

-carols

-carpenter

-carpenter's

-carpentered

-carpentering

-carpenters

-carpet

-carpeted

-carpeting

-carpets

-carriage

-carriage's

-carriages

-carried

-carrier

-carriers

-carries

-carrot

-carrot's

-carrots

-carry

-carrying

-carryover

-carryovers

-cars

-cart

-carted

-carter

-carters

-carting

-cartography

-carton

-carton's

-cartons

-cartoon

-cartoon's

-cartoons

-cartridge

-cartridge's

-cartridges

-carts

-carve

-carved

-carver

-carvers

-carves

-carving

-carvings

-cascade

-cascaded

-cascades

-cascading

-case

-cased

-casement

-casement's

-casements

-cases

-cash

-cashed

-casher

-cashers

-cashes

-cashier

-cashier's

-cashiers

-cashing

-casing

-casings

-cask

-cask's

-casket

-casket's

-caskets

-casks

-casserole

-casserole's

-casseroles

-cast

-cast's

-caste

-caste's

-casted

-caster

-casters

-castes

-casteth

-casting

-castings

-castle

-castled

-castles

-castling

-casts

-casual

-casually

-casualness

-casuals

-casualties

-casualty

-casualty's

-cat

-cat's

-catalyst

-catalyst's

-catalysts

-cataract

-cataracts

-catastrophe

-catastrophe's

-catastrophes

-catastrophic

-catch

-catchable

-catcher

-catcher's

-catchers

-catches

-catching

-categorical

-categorically

-categories

-category

-category's

-cater

-catered

-caterer

-catering

-caterpillar

-caterpillar's

-caterpillars

-caters

-cathedral

-cathedral's

-cathedrals

-catheter

-catheters

-cathode

-cathode's

-cathodes

-catholic

-catholic's

-catholics

-cats

-catsup

-cattle

-caught

-causal

-causality

-causally

-causation

-causation's

-causations

-cause

-caused

-causer

-causes

-causeway

-causeway's

-causeways

-causing

-caustic

-causticly

-caustics

-caution

-cautioned

-cautioner

-cautioners

-cautioning

-cautionings

-cautions

-cautious

-cautiously

-cautiousness

-cavalier

-cavalierly

-cavalierness

-cavalry

-cave

-caveat

-caveat's

-caveats

-caved

-caver

-cavern

-cavern's

-caverns

-caves

-caving

-cavities

-cavity

-cavity's

-caw

-cawed

-cawing

-caws

-cease

-ceased

-ceaseless

-ceaselessly

-ceaselessness

-ceases

-ceasing

-cedar

-ceiling

-ceiling's

-ceilinged

-ceilings

-celebrate

-celebrated

-celebratedness

-celebrates

-celebrating

-celebration

-celebrations

-celebratory

-celebrities

-celebrity

-celebrity's

-celery

-celestial

-celestially

-celibate

-celibates

-cell

-cellar

-cellar's

-cellared

-cellarer

-cellaring

-cellars

-celled

-cellist

-cellist's

-cellists

-cells

-cellular

-cellularly

-cement

-cemented

-cementer

-cementing

-cements

-cemeteries

-cemetery

-cemetery's

-censor

-censored

-censoring

-censors

-censorship

-censure

-censured

-censurer

-censures

-censuring

-census

-census's

-censuses

-cent

-centipede

-centipede's

-centipedes

-central

-centrally

-centrals

-centrifuge

-centrifuge's

-centrifuged

-centrifuges

-centrifuging

-centripetal

-centripetally

-cents

-centuries

-century

-century's

-cereal

-cereal's

-cereals

-cerebral

-cerebrally

-ceremonial

-ceremonially

-ceremonialness

-ceremonies

-ceremony

-ceremony's

-certain

-certainly

-certainties

-certainty

-certifiable

-certificate

-certificated

-certificates

-certificating

-certification

-certifications

-certified

-certifier

-certifiers

-certifies

-certify

-certifying

-cessation

-cessation's

-cessations

-chafe

-chafer

-chaff

-chaffer

-chaffered

-chafferer

-chaffering

-chaffing

-chafing

-chagrin

-chagrined

-chagrining

-chagrins

-chain

-chained

-chaining

-chains

-chair

-chaired

-chairing

-chairman

-chairmanship

-chairmanships

-chairmen

-chairperson

-chairperson's

-chairpersons

-chairs

-chalice

-chalice's

-chaliced

-chalices

-chalk

-chalked

-chalking

-chalks

-challenge

-challenged

-challenger

-challengers

-challenges

-challenging

-challengingly

-chamber

-chambered

-chamberer

-chamberers

-chambering

-chamberlain

-chamberlain's

-chamberlains

-chambers

-champagne

-champaign

-champion

-championed

-championing

-champions

-championship

-championship's

-championships

-chance

-chanced

-chancellor

-chancellors

-chances

-chancing

-chandelier

-chandelier's

-chandeliers

-change

-changeability

-changeable

-changeableness

-changeably

-changed

-changeover

-changeover's

-changeovers

-changer

-changers

-changes

-changing

-channel

-channels

-chant

-chanted

-chanter

-chanticleer

-chanticleer's

-chanticleers

-chanting

-chants

-chaos

-chaotic

-chap

-chap's

-chapel

-chapel's

-chapels

-chaperon

-chaperoned

-chaplain

-chaplain's

-chaplains

-chaps

-chapter

-chapter's

-chaptered

-chaptering

-chapters

-char

-character

-character's

-charactered

-charactering

-characteristic

-characteristic's

-characteristically

-characteristics

-characters

-charcoal

-charcoaled

-charcoals

-charge

-chargeable

-chargeableness

-charged

-charger

-chargers

-charges

-charging

-charing

-chariot

-chariot's

-chariots

-charitable

-charitableness

-charities

-charity

-charity's

-charm

-charmed

-charmer

-charmers

-charming

-charmingly

-charms

-chars

-chart

-chartable

-charted

-charter

-chartered

-charterer

-charterers

-chartering

-charters

-charting

-chartings

-charts

-chase

-chased

-chaser

-chasers

-chases

-chasing

-chasm

-chasm's

-chasms

-chaste

-chastely

-chasteness

-chaster

-chastest

-chastise

-chastised

-chastiser

-chastisers

-chastises

-chastising

-chat

-chateau

-chateau's

-chateaus

-chats

-chatter

-chattered

-chatterer

-chatterers

-chattering

-chatterly

-chatters

-chauffeur

-chauffeured

-chauffeuring

-chauffeurs

-chauvinism

-chauvinism's

-chauvinist

-chauvinist's

-chauvinistic

-chauvinists

-cheap

-cheapen

-cheapened

-cheapening

-cheapens

-cheaper

-cheapest

-cheaply

-cheapness

-cheat

-cheated

-cheater

-cheaters

-cheating

-cheats

-check

-checkable

-checked

-checker

-checkered

-checkering

-checkers

-checking

-checkout

-checkouts

-checkpoint

-checkpoint's

-checkpoints

-checks

-checksum

-checksum's

-checksums

-cheek

-cheek's

-cheeks

-cheer

-cheered

-cheerer

-cheerers

-cheerful

-cheerfully

-cheerfulness

-cheerier

-cheerily

-cheeriness

-cheering

-cheerless

-cheerlessly

-cheerlessness

-cheerly

-cheers

-cheery

-cheese

-cheese's

-cheesed

-cheeses

-cheesing

-chef

-chef's

-chefs

-chemical

-chemically

-chemicals

-chemise

-chemises

-chemist

-chemist's

-chemistries

-chemistry

-chemists

-cherish

-cherished

-cherisher

-cherishes

-cherishing

-cherries

-cherry

-cherry's

-cherub

-cherub's

-cherubim

-cherubs

-chess

-chest

-chester

-chestnut

-chestnut's

-chestnuts

-chests

-chew

-chewed

-chewer

-chewers

-chewing

-chews

-chick

-chickadee

-chickadee's

-chickadees

-chicken

-chickened

-chickening

-chickens

-chicks

-chide

-chided

-chides

-chiding

-chief

-chief's

-chiefly

-chiefs

-chieftain

-chieftain's

-chieftains

-chiffon

-child

-child's

-childhood

-childhoods

-childish

-childishly

-childishness

-childly

-children

-children's

-chill

-chilled

-chiller

-chillers

-chillier

-chillies

-chilliness

-chilling

-chillingly

-chillness

-chills

-chilly

-chime

-chime's

-chimed

-chimer

-chimes

-chiming

-chimney

-chimney's

-chimneyed

-chimneys

-chin

-chin's

-chink

-chinked

-chinks

-chinned

-chinner

-chinners

-chinning

-chins

-chintz

-chip

-chip's

-chipmunk

-chipmunk's

-chipmunks

-chips

-chirp

-chirped

-chirping

-chirps

-chisel

-chisels

-chivalrous

-chivalrously

-chivalrousness

-chivalry

-chlorine

-chloroplast

-chloroplast's

-chloroplasts

-chock

-chock's

-chocked

-chocker

-chocking

-chocks

-chocolate

-chocolate's

-chocolates

-choice

-choicely

-choiceness

-choicer

-choices

-choicest

-choir

-choir's

-choirs

-choke

-choked

-choker

-chokers

-chokes

-choking

-chokingly

-cholera

-choose

-chooser

-choosers

-chooses

-choosing

-chop

-chopped

-chopper

-chopper's

-choppers

-chopping

-chops

-choral

-chorally

-chord

-chord's

-chorded

-chording

-chords

-chore

-chores

-choring

-chorion

-chorus

-chorused

-choruses

-chose

-chosen

-christen

-christened

-christening

-christens

-chronic

-chronicle

-chronicled

-chronicler

-chroniclers

-chronicles

-chronological

-chronologically

-chronologies

-chronology

-chronology's

-chubbier

-chubbiest

-chubbiness

-chubby

-chuck

-chuck's

-chucked

-chucking

-chuckle

-chuckled

-chuckles

-chuckling

-chucklingly

-chucks

-chum

-chump

-chump's

-chumping

-chumps

-chums

-chunk

-chunk's

-chunks

-church

-churched

-churches

-churching

-churchliness

-churchly

-churchman

-churchyard

-churchyard's

-churchyards

-churn

-churned

-churner

-churners

-churning

-churns

-chute

-chute's

-chuted

-chutes

-chuting

-cider

-ciders

-cigar

-cigar's

-cigarette

-cigarette's

-cigarettes

-cigars

-cinder

-cinder's

-cinders

-cinnamon

-cipher

-cipher's

-ciphered

-ciphering

-ciphers

-circle

-circled

-circler

-circles

-circling

-circuit

-circuit's

-circuited

-circuiting

-circuitous

-circuitously

-circuitousness

-circuitry

-circuits

-circular

-circular's

-circularities

-circularity

-circularly

-circularness

-circulars

-circulate

-circulated

-circulates

-circulating

-circulation

-circulations

-circulative

-circumference

-circumferences

-circumflex

-circumflexes

-circumlocution

-circumlocution's

-circumlocutions

-circumspect

-circumspectly

-circumstance

-circumstance's

-circumstanced

-circumstances

-circumstancing

-circumstantial

-circumstantially

-circumvent

-circumventable

-circumvented

-circumventing

-circumvents

-circus

-circus's

-circuses

-cistern

-cistern's

-cisterns

-citadel

-citadel's

-citadels

-citation

-citation's

-citations

-cite

-cited

-cites

-citied

-cities

-citing

-citizen

-citizen's

-citizenly

-citizens

-citizenship

-city

-city's

-civic

-civics

-civil

-civilian

-civilian's

-civilians

-civilities

-civility

-civilly

-clad

-clads

-claim

-claimable

-claimant

-claimant's

-claimants

-claimed

-claimer

-claiming

-claims

-clairvoyant

-clairvoyantly

-clairvoyants

-clam

-clam's

-clamber

-clambered

-clamberer

-clambering

-clambers

-clamorous

-clamorously

-clamorousness

-clamp

-clamped

-clamper

-clamping

-clamps

-clams

-clan

-clang

-clanged

-clanger

-clangers

-clanging

-clangs

-clans

-clap

-claps

-clarification

-clarifications

-clarified

-clarifier

-clarifies

-clarify

-clarifying

-clarity

-clash

-clashed

-clasher

-clashes

-clashing

-clasp

-clasped

-clasper

-clasping

-clasps

-class

-classed

-classer

-classes

-classic

-classical

-classically

-classics

-classifiable

-classification

-classifications

-classified

-classifieds

-classifier

-classifiers

-classifies

-classify

-classifying

-classing

-classmate

-classmate's

-classmates

-classroom

-classroom's

-classrooms

-classwork

-clatter

-clattered

-clatterer

-clattering

-clatteringly

-clatters

-clause

-clause's

-clauses

-claw

-clawed

-clawer

-clawing

-claws

-clay

-clay's

-clayed

-claying

-clays

-clean

-cleaned

-cleaner

-cleaner's

-cleaners

-cleanest

-cleaning

-cleanlier

-cleanliness

-cleanly

-cleanness

-cleans

-cleanse

-cleansed

-cleanser

-cleansers

-cleanses

-cleansing

-cleanup

-cleanup's

-cleanups

-clear

-clearance

-clearance's

-clearances

-cleared

-clearer

-clearest

-clearing

-clearing's

-clearings

-clearly

-clearness

-clears

-cleavage

-cleavages

-cleave

-cleaved

-cleaver

-cleavers

-cleaves

-cleaving

-cleft

-cleft's

-clefts

-clench

-clenched

-clenches

-clenching

-clergy

-clergyman

-clerical

-clerically

-clericals

-clerk

-clerk's

-clerked

-clerking

-clerkly

-clerks

-clever

-cleverer

-cleverest

-cleverly

-cleverness

-cliche

-cliche's

-cliches

-click

-clicked

-clicker

-clickers

-clicking

-clicks

-client

-client's

-clients

-cliff

-cliff's

-cliffs

-climate

-climate's

-climates

-climatic

-climatically

-climax

-climaxed

-climaxes

-climaxing

-climb

-climbed

-climber

-climbers

-climbing

-climbs

-clime

-clime's

-climes

-clinch

-clinched

-clincher

-clinches

-clinching

-clinchingly

-cling

-clinging

-clings

-clinic

-clinic's

-clinical

-clinically

-clinics

-clink

-clinked

-clinker

-clinkered

-clinkering

-clinkers

-clip

-clip's

-clipped

-clipper

-clipper's

-clippers

-clipping

-clipping's

-clippings

-clips

-clique

-clique's

-cliques

-cloak

-cloak's

-cloaked

-cloaking

-cloaks

-clobber

-clobbered

-clobbering

-clobbers

-clock

-clocked

-clocker

-clockers

-clocking

-clockings

-clocks

-clockwise

-clockwork

-clod

-clod's

-clods

-clog

-clog's

-clogged

-clogging

-clogs

-cloister

-cloister's

-cloistered

-cloistering

-cloisters

-clone

-cloned

-cloner

-cloners

-clones

-cloning

-close

-closed

-closely

-closeness

-closenesses

-closer

-closers

-closes

-closest

-closet

-closeted

-closets

-closing

-closings

-closure

-closure's

-closured

-closures

-closuring

-cloth

-clothe

-clothed

-clothes

-clothing

-cloud

-clouded

-cloudier

-cloudiest

-cloudiness

-clouding

-cloudless

-cloudlessly

-cloudlessness

-clouds

-cloudy

-clout

-clove

-clover

-cloves

-clown

-clowning

-clowns

-club

-club's

-clubbed

-clubbing

-clubs

-cluck

-clucked

-clucking

-clucks

-clue

-clue's

-clues

-cluing

-clump

-clumped

-clumping

-clumps

-clumsier

-clumsiest

-clumsily

-clumsiness

-clumsy

-clung

-cluster

-clustered

-clustering

-clusterings

-clusters

-clutch

-clutched

-clutches

-clutching

-clutter

-cluttered

-cluttering

-clutters

-coach

-coach's

-coached

-coacher

-coaches

-coaching

-coachman

-coagulate

-coagulated

-coagulates

-coagulating

-coagulation

-coal

-coaled

-coaler

-coalesce

-coalesced

-coalesces

-coalescing

-coaling

-coalition

-coals

-coarse

-coarsely

-coarsen

-coarsened

-coarseness

-coarsening

-coarser

-coarsest

-coast

-coastal

-coasted

-coaster

-coasters

-coasting

-coasts

-coat

-coated

-coater

-coaters

-coating

-coatings

-coats

-coax

-coaxed

-coaxer

-coaxes

-coaxial

-coaxially

-coaxing

-cobbler

-cobbler's

-cobblers

-cobweb

-cobweb's

-cobwebs

-cock

-cocked

-cocker

-cocking

-cockroach

-cockroaches

-cocks

-cocktail

-cocktail's

-cocktails

-cocoa

-coconut

-coconut's

-coconuts

-cocoon

-cocoon's

-cocoons

-cod

-code

-coded

-coder

-coder's

-coders

-codes

-codeword

-codeword's

-codewords

-codification

-codification's

-codifications

-codified

-codifier

-codifier's

-codifiers

-codifies

-codify

-codifying

-coding

-codings

-cods

-coefficient

-coefficient's

-coefficiently

-coefficients

-coerce

-coerced

-coerces

-coercing

-coercion

-coercions

-coercive

-coercively

-coerciveness

-coexist

-coexisted

-coexistence

-coexisting

-coexists

-coffee

-coffee's

-coffees

-coffer

-coffer's

-coffers

-coffin

-coffin's

-coffins

-cogent

-cogently

-cogitate

-cogitated

-cogitates

-cogitating

-cogitation

-cogitative

-cognition

-cognitions

-cognitive

-cognitively

-cognitives

-cohabit

-cohabitation

-cohabitations

-cohabited

-cohabiting

-cohabits

-cohere

-cohered

-coherence

-coherent

-coherently

-coherer

-coheres

-cohering

-cohesion

-cohesive

-cohesively

-cohesiveness

-coil

-coiled

-coiling

-coils

-coin

-coinage

-coincide

-coincided

-coincidence

-coincidence's

-coincidences

-coincidental

-coincidentally

-coincides

-coinciding

-coined

-coiner

-coining

-coins

-coke

-cokes

-coking

-cold

-colder

-coldest

-coldly

-coldness

-colds

-collaborate

-collaborated

-collaborates

-collaborating

-collaboration

-collaborations

-collaborative

-collaboratively

-collaborator

-collaborator's

-collaborators

-collapse

-collapsed

-collapses

-collapsing

-collar

-collared

-collaring

-collars

-collate

-collated

-collateral

-collaterally

-collates

-collating

-collation

-collations

-collative

-collator

-collators

-colleague

-colleague's

-colleagues

-collect

-collected

-collectedly

-collectedness

-collectible

-collecting

-collection

-collection's

-collections

-collective

-collectively

-collectives

-collector

-collector's

-collectors

-collects

-college

-college's

-colleges

-collegiate

-collegiately

-collide

-collided

-collides

-colliding

-collie

-collied

-collier

-collies

-collision

-collision's

-collisions

-cologne

-cologned

-colon

-colon's

-colonel

-colonel's

-colonels

-colonial

-colonially

-colonialness

-colonials

-colonies

-colonist

-colonist's

-colonists

-colons

-colony

-colony's

-colossal

-colossally

-colt

-colt's

-colter

-colts

-column

-column's

-columnar

-columned

-columns

-comb

-combat

-combatant

-combatant's

-combatants

-combated

-combating

-combative

-combatively

-combativeness

-combats

-combed

-comber

-combers

-combination

-combination's

-combinational

-combinations

-combinator

-combinator's

-combinatorial

-combinatorially

-combinatoric

-combinatorics

-combinators

-combine

-combined

-combiner

-combiners

-combines

-combing

-combings

-combining

-combs

-combustion

-combustions

-come

-comedian

-comedian's

-comedians

-comedic

-comedies

-comedy

-comedy's

-comelier

-comeliness

-comely

-comer

-comers

-comes

-comest

-comestible

-comestibles

-comet

-comet's

-cometh

-comets

-comfort

-comfortabilities

-comfortability

-comfortable

-comfortableness

-comfortably

-comforted

-comforter

-comforters

-comforting

-comfortingly

-comforts

-comic

-comic's

-comical

-comically

-comics

-coming

-comings

-comma

-comma's

-command

-command's

-commandant

-commandant's

-commandants

-commanded

-commandeer

-commandeered

-commandeering

-commandeers

-commander

-commanders

-commanding

-commandingly

-commandment

-commandment's

-commandments

-commands

-commas

-commemorate

-commemorated

-commemorates

-commemorating

-commemoration

-commemorations

-commemorative

-commemoratively

-commemoratives

-commence

-commenced

-commencement

-commencement's

-commencements

-commencer

-commences

-commencing

-commend

-commendation

-commendation's

-commendations

-commended

-commender

-commending

-commends

-commensurate

-commensurately

-commensurates

-commensuration

-commensurations

-comment

-comment's

-commentaries

-commentary

-commentary's

-commentator

-commentator's

-commentators

-commented

-commenter

-commenting

-comments

-commerce

-commerced

-commercial

-commercially

-commercialness

-commercials

-commercing

-commission

-commissioned

-commissioner

-commissioners

-commissioning

-commissions

-commit

-commitment

-commitment's

-commitments

-commits

-committed

-committee

-committee's

-committees

-committing

-commodities

-commodity

-commodity's

-commodore

-commodore's

-commodores

-common

-commonalities

-commonality

-commoner

-commoner's

-commoners

-commonest

-commonly

-commonness

-commonplace

-commonplaceness

-commonplaces

-commons

-commonwealth

-commonwealths

-commotion

-commotions

-communal

-communally

-commune

-communed

-communes

-communicant

-communicant's

-communicants

-communicate

-communicated

-communicates

-communicating

-communication

-communications

-communicative

-communicatively

-communicativeness

-communicator

-communicator's

-communicators

-communing

-communion

-communist

-communist's

-communists

-communities

-community

-community's

-commutative

-commutatively

-commutativity

-commute

-commuted

-commuter

-commuters

-commutes

-commuting

-compact

-compacted

-compacter

-compacters

-compactest

-compacting

-compactly

-compactness

-compactor

-compactor's

-compactors

-compacts

-companies

-companion

-companion's

-companionable

-companionableness

-companions

-companionship

-company

-company's

-comparability

-comparable

-comparableness

-comparably

-comparative

-comparatively

-comparativeness

-comparatives

-comparator

-comparator's

-comparators

-compare

-compared

-comparer

-compares

-comparing

-comparison

-comparison's

-comparisons

-compartment

-compartmented

-compartmenting

-compartments

-compass

-compassed

-compasses

-compassing

-compassion

-compassionate

-compassionately

-compassionateness

-compatibilities

-compatibility

-compatibility's

-compatible

-compatibleness

-compatibles

-compatibly

-compel

-compelled

-compelling

-compellingly

-compels

-compendium

-compensate

-compensated

-compensates

-compensating

-compensation

-compensations

-compensative

-compensatory

-compete

-competed

-competence

-competences

-competent

-competently

-competes

-competing

-competition

-competition's

-competitions

-competitive

-competitively

-competitiveness

-competitor

-competitor's

-competitors

-compilable

-compilation

-compilation's

-compilations

-compile

-compiled

-compiler

-compiler's

-compilers

-compiles

-compiling

-complain

-complained

-complainer

-complainers

-complaining

-complainingly

-complains

-complaint

-complaint's

-complaints

-complement

-complementariness

-complementary

-complemented

-complementer

-complementers

-complementing

-complements

-complete

-completed

-completely

-completeness

-completer

-completes

-completing

-completion

-completions

-completive

-complex

-complexes

-complexion

-complexioned

-complexities

-complexity

-complexly

-complexness

-compliance

-compliances

-complicate

-complicated

-complicatedly

-complicatedness

-complicates

-complicating

-complication

-complications

-complicator

-complicator's

-complicators

-complicity

-complied

-complier

-compliers

-complies

-compliment

-complimentary

-complimented

-complimenter

-complimenters

-complimenting

-compliments

-comply

-complying

-component

-component's

-components

-compose

-composed

-composedly

-composedness

-composer

-composer's

-composers

-composes

-composing

-composite

-compositely

-composites

-composition

-compositional

-compositionally

-compositions

-composure

-compound

-compounded

-compounder

-compounding

-compounds

-comprehend

-comprehended

-comprehending

-comprehends

-comprehensibility

-comprehensible

-comprehensibleness

-comprehension

-comprehensive

-comprehensively

-comprehensiveness

-compress

-compressed

-compressedly

-compresses

-compressible

-compressing

-compression

-compressions

-compressive

-compressively

-comprise

-comprised

-comprises

-comprising

-compromise

-compromised

-compromiser

-compromisers

-compromises

-compromising

-compromisingly

-comptroller

-comptroller's

-comptrollers

-compulsion

-compulsion's

-compulsions

-compulsory

-compunction

-compunctions

-computability

-computable

-computation

-computation's

-computational

-computationally

-computations

-compute

-computed

-computer

-computer's

-computerese

-computers

-computes

-computing

-comrade

-comradeliness

-comradely

-comrades

-comradeship

-concatenate

-concatenated

-concatenates

-concatenating

-concatenation

-concatenations

-conceal

-concealed

-concealer

-concealers

-concealing

-concealingly

-concealment

-conceals

-concede

-conceded

-concededly

-conceder

-concedes

-conceding

-conceit

-conceited

-conceitedly

-conceitedness

-conceits

-conceivable

-conceivably

-conceive

-conceived

-conceiver

-conceives

-conceiving

-concentrate

-concentrated

-concentrates

-concentrating

-concentration

-concentrations

-concentrative

-concentrator

-concentrators

-concentric

-concept

-concept's

-conception

-conception's

-conceptions

-conceptive

-concepts

-conceptual

-conceptually

-concern

-concerned

-concernedly

-concerning

-concerns

-concert

-concerted

-concertedly

-concertedness

-concerts

-concession

-concession's

-concessioner

-concessions

-concise

-concisely

-conciseness

-concision

-concisions

-conclude

-concluded

-concluder

-concludes

-concluding

-conclusion

-conclusion's

-conclusions

-conclusive

-conclusively

-conclusiveness

-concomitant

-concomitantly

-concomitants

-concord

-concrete

-concreted

-concretely

-concreteness

-concretes

-concreting

-concretion

-concur

-concurred

-concurrence

-concurrencies

-concurrency

-concurrent

-concurrently

-concurring

-concurs

-condemn

-condemnation

-condemnations

-condemned

-condemner

-condemners

-condemning

-condemns

-condensation

-condense

-condensed

-condenser

-condensers

-condenses

-condensing

-condescend

-condescending

-condescendingly

-condescends

-condition

-conditional

-conditionally

-conditionals

-conditioned

-conditioner

-conditioners

-conditioning

-conditions

-condone

-condoned

-condoner

-condones

-condoning

-conducive

-conduciveness

-conduct

-conducted

-conducting

-conduction

-conductive

-conductively

-conductivities

-conductivity

-conductor

-conductor's

-conductors

-conducts

-conduit

-conduits

-cone

-cone's

-coned

-cones

-confederacy

-confederate

-confederates

-confederation

-confederations

-confederative

-confer

-conference

-conference's

-conferences

-conferencing

-conferred

-conferrer

-conferrer's

-conferrers

-conferring

-confers

-confess

-confessed

-confessedly

-confesses

-confessing

-confession

-confession's

-confessions

-confessor

-confessor's

-confessors

-confidant

-confidant's

-confidants

-confide

-confided

-confidence

-confidences

-confident

-confidential

-confidentiality

-confidentially

-confidentialness

-confidently

-confider

-confides

-confiding

-confidingly

-confidingness

-configurable

-configuration

-configuration's

-configurations

-configure

-configured

-configures

-configuring

-confine

-confined

-confinement

-confinement's

-confinements

-confiner

-confines

-confining

-confirm

-confirmation

-confirmation's

-confirmations

-confirmed

-confirmedly

-confirmedness

-confirming

-confirms

-confiscate

-confiscated

-confiscates

-confiscating

-confiscation

-confiscations

-conflict

-conflicted

-conflicting

-conflictingly

-conflictive

-conflicts

-conform

-conformed

-conformer

-conformers

-conforming

-conformity

-conforms

-confound

-confounded

-confoundedly

-confounder

-confounding

-confounds

-confront

-confrontation

-confrontation's

-confrontations

-confronted

-confronter

-confronters

-confronting

-confronts

-confuse

-confused

-confusedly

-confusedness

-confuser

-confusers

-confuses

-confusing

-confusingly

-confusion

-confusions

-congenial

-congenially

-congested

-congestion

-congratulate

-congratulated

-congratulates

-congratulation

-congratulations

-congregate

-congregated

-congregates

-congregating

-congregation

-congregations

-congress

-congress's

-congressed

-congresses

-congressing

-congressional

-congressionally

-congressman

-congruence

-congruent

-congruently

-coning

-conjecture

-conjectured

-conjecturer

-conjectures

-conjecturing

-conjoined

-conjunct

-conjuncted

-conjunction

-conjunction's

-conjunctions

-conjunctive

-conjunctively

-conjuncts

-conjure

-conjured

-conjurer

-conjurers

-conjures

-conjuring

-connect

-connected

-connectedly

-connectedness

-connecter

-connecters

-connecting

-connection

-connection's

-connections

-connective

-connective's

-connectively

-connectives

-connectivities

-connectivity

-connector

-connector's

-connectors

-connects

-connoisseur

-connoisseur's

-connoisseurs

-connote

-connoted

-connotes

-connoting

-conquer

-conquerable

-conquered

-conquerer

-conquerers

-conquering

-conqueror

-conqueror's

-conquerors

-conquers

-conquest

-conquest's

-conquests

-cons

-conscience

-conscience's

-consciences

-conscientious

-conscientiously

-conscientiousness

-conscious

-consciouses

-consciously

-consciousness

-consecrate

-consecrated

-consecrates

-consecrating

-consecration

-consecrations

-consecrative

-consecutive

-consecutively

-consecutiveness

-consensus

-consent

-consented

-consenter

-consenters

-consenting

-consentingly

-consents

-consequence

-consequence's

-consequences

-consequent

-consequential

-consequentialities

-consequentiality

-consequentially

-consequentialness

-consequently

-consequentness

-consequents

-conservation

-conservation's

-conservationist

-conservationist's

-conservationists

-conservations

-conservatism

-conservative

-conservatively

-conservativeness

-conservatives

-conserve

-conserved

-conserver

-conserves

-conserving

-consider

-considerable

-considerably

-considerate

-considerately

-considerateness

-consideration

-considerations

-considered

-considerer

-considering

-considers

-consign

-consigned

-consigning

-consigns

-consist

-consisted

-consistencies

-consistency

-consistent

-consistently

-consisting

-consists

-consolable

-consolation

-consolation's

-consolations

-console

-consoled

-consoler

-consolers

-consoles

-consolidate

-consolidated

-consolidates

-consolidating

-consolidation

-consolidations

-consoling

-consolingly

-consonant

-consonant's

-consonantly

-consonants

-consort

-consorted

-consorting

-consortium

-consorts

-conspicuous

-conspicuously

-conspicuousness

-conspiracies

-conspiracy

-conspiracy's

-conspirator

-conspirator's

-conspirators

-conspire

-conspired

-conspires

-conspiring

-constable

-constable's

-constables

-constancy

-constant

-constantly

-constants

-constellation

-constellation's

-constellations

-consternation

-constituencies

-constituency

-constituency's

-constituent

-constituent's

-constituently

-constituents

-constitute

-constituted

-constitutes

-constituting

-constitution

-constitutional

-constitutionality

-constitutionally

-constitutions

-constitutive

-constitutively

-constrain

-constrained

-constrainedly

-constraining

-constrains

-constraint

-constraint's

-constraints

-construct

-constructed

-constructibility

-constructible

-constructing

-construction

-construction's

-constructions

-constructive

-constructively

-constructiveness

-constructor

-constructor's

-constructors

-constructs

-construe

-construed

-construes

-construing

-consul

-consul's

-consulate

-consulate's

-consulates

-consuls

-consult

-consultant

-consultant's

-consultants

-consultation

-consultation's

-consultations

-consultative

-consulted

-consulter

-consulting

-consultive

-consults

-consumable

-consumables

-consume

-consumed

-consumedly

-consumer

-consumer's

-consumers

-consumes

-consuming

-consumingly

-consummate

-consummated

-consummately

-consummates

-consummating

-consummation

-consummations

-consummative

-consumption

-consumption's

-consumptions

-consumptive

-consumptively

-contact

-contacted

-contacting

-contacts

-contagion

-contagious

-contagiously

-contagiousness

-contain

-containable

-contained

-container

-containers

-containing

-containment

-containment's

-containments

-contains

-contaminate

-contaminated

-contaminates

-contaminating

-contamination

-contaminations

-contaminative

-contemplate

-contemplated

-contemplates

-contemplating

-contemplation

-contemplations

-contemplative

-contemplatively

-contemplativeness

-contemporaneous

-contemporaneously

-contemporaneousness

-contemporaries

-contemporariness

-contemporary

-contempt

-contemptible

-contemptibleness

-contemptuous

-contemptuously

-contemptuousness

-contend

-contended

-contender

-contenders

-contending

-contends

-content

-contented

-contentedly

-contentedness

-contenting

-contention

-contention's

-contentions

-contently

-contentment

-contents

-contest

-contestable

-contested

-contester

-contesters

-contesting

-contests

-context

-context's

-contexts

-contextual

-contextually

-contiguity

-contiguous

-contiguously

-contiguousness

-continent

-continent's

-continental

-continentally

-continently

-continents

-contingencies

-contingency

-contingency's

-contingent

-contingent's

-contingently

-contingents

-continual

-continually

-continuance

-continuance's

-continuances

-continuation

-continuation's

-continuations

-continue

-continued

-continuer

-continues

-continuing

-continuities

-continuity

-continuous

-continuously

-continuousness

-continuum

-contour

-contour's

-contoured

-contouring

-contours

-contract

-contracted

-contracting

-contraction

-contraction's

-contractions

-contractive

-contractor

-contractor's

-contractors

-contracts

-contractual

-contractually

-contradict

-contradicted

-contradicting

-contradiction

-contradiction's

-contradictions

-contradictoriness

-contradictory

-contradicts

-contradistinction

-contradistinctions

-contrapositive

-contrapositives

-contraption

-contraption's

-contraptions

-contrariness

-contrary

-contrast

-contrasted

-contraster

-contrasters

-contrasting

-contrastingly

-contrastive

-contrastively

-contrasts

-contribute

-contributed

-contributer

-contributers

-contributes

-contributing

-contribution

-contributions

-contributive

-contributively

-contributor

-contributor's

-contributorily

-contributors

-contributory

-contrivance

-contrivance's

-contrivances

-contrive

-contrived

-contriver

-contrives

-contriving

-control

-control's

-controllability

-controllable

-controllably

-controlled

-controller

-controller's

-controllers

-controlling

-controls

-controversial

-controversially

-controversies

-controversy

-controversy's

-conundrum

-conundrum's

-conundrums

-convalescence

-convene

-convened

-convener

-conveners

-convenes

-convenience

-convenience's

-conveniences

-convenient

-conveniently

-convening

-convent

-convent's

-convention

-convention's

-conventional

-conventionally

-conventions

-convents

-converge

-converged

-convergence

-convergences

-convergent

-converges

-converging

-conversant

-conversantly

-conversation

-conversation's

-conversational

-conversationally

-conversations

-converse

-conversed

-conversely

-converses

-conversing

-conversion

-conversioning

-conversions

-convert

-converted

-converter

-converters

-convertibility

-convertible

-convertibleness

-converting

-converts

-convex

-convey

-conveyance

-conveyance's

-conveyanced

-conveyancer

-conveyancers

-conveyances

-conveyancing

-conveyed

-conveyer

-conveyers

-conveying

-conveys

-convict

-convicted

-convicting

-conviction

-conviction's

-convictions

-convictive

-convicts

-convince

-convinced

-convincer

-convincers

-convinces

-convincing

-convincingly

-convincingness

-convoluted

-convoy

-convoyed

-convoying

-convoys

-convulsion

-convulsion's

-convulsions

-coo

-cooing

-cook

-cook's

-cooked

-cooker

-cookers

-cookery

-cookie

-cookie's

-cookies

-cooking

-cooks

-cooky

-cool

-cooled

-cooler

-cooler's

-coolers

-coolest

-coolie

-coolie's

-coolies

-cooling

-coolings

-coolly

-coolness

-coolnesses

-cools

-coon

-coon's

-coons

-coop

-cooped

-cooper

-cooperate

-cooperated

-cooperates

-cooperating

-cooperation

-cooperations

-cooperative

-cooperatively

-cooperativeness

-cooperatives

-cooperator

-cooperator's

-cooperators

-coopered

-coopering

-coopers

-coops

-coordinate

-coordinated

-coordinately

-coordinateness

-coordinates

-coordinating

-coordination

-coordinations

-coordinative

-coordinator

-coordinator's

-coordinators

-cop

-cop's

-cope

-coped

-coper

-copes

-copied

-copier

-copiers

-copies

-coping

-copings

-copious

-copiously

-copiousness

-copper

-copper's

-coppered

-coppering

-coppers

-cops

-copse

-copses

-copy

-copying

-copyright

-copyright's

-copyrighted

-copyrighter

-copyrighters

-copyrighting

-copyrights

-coral

-cord

-corded

-corder

-cordial

-cordially

-cordialness

-cording

-cords

-core

-cored

-corer

-corers

-cores

-coring

-cork

-corked

-corker

-corkers

-corking

-corks

-cormorant

-cormorants

-corn

-corned

-corner

-cornered

-cornering

-corners

-cornerstone

-cornerstone's

-cornerstones

-cornfield

-cornfield's

-cornfields

-corning

-corns

-corollaries

-corollary

-corollary's

-coronaries

-coronary

-coronation

-coronet

-coronet's

-coroneted

-coronets

-coroutine

-coroutine's

-coroutines

-corporal

-corporal's

-corporally

-corporals

-corporate

-corporately

-corporation

-corporation's

-corporations

-corporative

-corps

-corpse

-corpse's

-corpses

-corpus

-correct

-correctable

-corrected

-correcting

-correction

-corrections

-corrective

-correctively

-correctiveness

-correctives

-correctly

-correctness

-corrector

-corrects

-correlate

-correlated

-correlates

-correlating

-correlation

-correlations

-correlative

-correlatively

-correspond

-corresponded

-correspondence

-correspondence's

-correspondences

-correspondent

-correspondent's

-correspondents

-corresponding

-correspondingly

-corresponds

-corridor

-corridor's

-corridors

-corroborate

-corroborated

-corroborates

-corroborating

-corroboration

-corroborations

-corroborative

-corroboratively

-corrosion

-corrosions

-corrupt

-corrupted

-corrupter

-corrupting

-corruption

-corruptive

-corruptively

-corruptly

-corrupts

-corset

-corsets

-cosine

-cosines

-cosmetic

-cosmetics

-cosmology

-cosmopolitan

-cost

-costed

-costing

-costive

-costively

-costiveness

-costlier

-costliness

-costly

-costs

-costume

-costumed

-costumer

-costumers

-costumes

-costuming

-cot

-cot's

-cots

-cottage

-cottager

-cottagers

-cottages

-cotton

-cottoned

-cottoning

-cottons

-cotyledon

-cotyledon's

-cotyledons

-couch

-couched

-couches

-couching

-cough

-coughed

-cougher

-coughing

-coughs

-could

-couldest

-couldn't

-council

-council's

-councillor

-councillor's

-councillors

-councils

-counsel

-counsel's

-counsels

-count

-countable

-countably

-counted

-countenance

-countenancer

-counter

-counteract

-counteracted

-counteracting

-counteractive

-counteracts

-counterclockwise

-countered

-counterexample

-counterexamples

-counterfeit

-counterfeited

-counterfeiter

-counterfeiting

-counterfeits

-countering

-countermeasure

-countermeasure's

-countermeasures

-counterpart

-counterpart's

-counterparts

-counterpoint

-counterpointing

-counterproductive

-counterrevolution

-counters

-countess

-counties

-counting

-countless

-countlessly

-countries

-country

-country's

-countryman

-countryside

-counts

-county

-county's

-couple

-couple's

-coupled

-coupler

-couplers

-couples

-coupling

-couplings

-coupon

-coupon's

-coupons

-courage

-courageous

-courageously

-courageousness

-courier

-courier's

-couriers

-course

-coursed

-courser

-courses

-coursing

-court

-courted

-courteous

-courteously

-courteousness

-courter

-courters

-courtesies

-courtesy

-courtesy's

-courthouse

-courthouse's

-courthouses

-courtier

-courtier's

-courtiers

-courting

-courtliness

-courtly

-courtroom

-courtroom's

-courtrooms

-courts

-courtship

-courtyard

-courtyard's

-courtyards

-cousin

-cousin's

-cousins

-cove

-covenant

-covenant's

-covenanted

-covenanter

-covenanting

-covenants

-cover

-coverable

-coverage

-covered

-coverer

-covering

-coverings

-coverlet

-coverlet's

-coverlets

-covers

-covert

-covertly

-covertness

-coves

-covet

-coveted

-coveter

-coveting

-covetingly

-covetous

-covetously

-covetousness

-covets

-coving

-cow

-coward

-cowardice

-cowardliness

-cowardly

-cowards

-cowboy

-cowboy's

-cowboys

-cowed

-cowedly

-cower

-cowered

-cowerer

-cowerers

-cowering

-coweringly

-cowers

-cowgirl

-cowgirl's

-cowgirls

-cowing

-cowl

-cowled

-cowling

-cowls

-cows

-cowslip

-cowslip's

-cowslips

-coyote

-coyote's

-coyotes

-cozier

-cozies

-coziness

-cozy

-crab

-crab's

-crabs

-crack

-cracked

-cracker

-crackers

-cracking

-crackle

-crackled

-crackles

-crackling

-crackly

-cracks

-cradle

-cradled

-cradler

-cradles

-cradling

-craft

-crafted

-crafter

-craftier

-craftiness

-crafting

-crafts

-craftsman

-crafty

-crag

-crag's

-crags

-cram

-cramp

-cramp's

-cramped

-cramper

-cramps

-crams

-cranberries

-cranberry

-cranberry's

-crane

-crane's

-craned

-cranes

-craning

-crank

-cranked

-crankier

-crankiest

-crankily

-crankiness

-cranking

-cranks

-cranky

-crap

-craping

-craps

-crash

-crashed

-crasher

-crashers

-crashes

-crashing

-crate

-crater

-cratered

-craters

-crates

-crating

-cravat

-cravat's

-cravats

-crave

-craved

-craven

-cravenly

-cravenness

-craver

-craves

-craving

-crawl

-crawled

-crawler

-crawlers

-crawling

-crawls

-craze

-crazed

-crazes

-crazier

-craziest

-crazily

-craziness

-crazing

-crazy

-creak

-creaked

-creaking

-creaks

-cream

-creamed

-creamer

-creamers

-creaminess

-creaming

-creams

-creamy

-crease

-creased

-creaser

-creases

-creasing

-create

-created

-creates

-creating

-creation

-creations

-creative

-creatively

-creativeness

-creativity

-creator

-creator's

-creators

-creature

-creature's

-creatureliness

-creaturely

-creatures

-credence

-credibility

-credible

-credibly

-credit

-creditable

-creditableness

-creditably

-credited

-crediting

-creditor

-creditor's

-creditors

-credits

-credulity

-credulous

-credulously

-credulousness

-creed

-creed's

-creeds

-creek

-creek's

-creeks

-creep

-creeper

-creepers

-creeping

-creeps

-cremate

-cremated

-cremates

-cremating

-cremation

-cremations

-crepe

-crept

-crescent

-crescent's

-crescents

-crest

-crested

-cresting

-crests

-cretin

-cretins

-crevice

-crevice's

-crevices

-crew

-crewed

-crewing

-crews

-crib

-crib's

-cribs

-cricket

-cricket's

-cricketer

-cricketing

-crickets

-cried

-crier

-criers

-cries

-crime

-crime's

-crimes

-criminal

-criminally

-criminals

-crimson

-crimsoning

-cringe

-cringed

-cringer

-cringes

-cringing

-cripple

-crippled

-crippler

-cripples

-crippling

-crises

-crisis

-crisp

-crisper

-crisply

-crispness

-crisps

-criteria

-criterion

-critic

-critic's

-critical

-critically

-criticalness

-criticism

-criticism's

-criticisms

-critics

-critique

-critiqued

-critiques

-critiquing

-critter

-critter's

-critters

-croak

-croaked

-croaker

-croakers

-croaking

-croaks

-crochet

-crocheted

-crocheter

-crocheting

-crochets

-crook

-crooked

-crookedly

-crookedness

-crooks

-crop

-crop's

-cropped

-cropper

-cropper's

-croppers

-cropping

-crops

-cross

-crossable

-crossbar

-crossbar's

-crossbars

-crossed

-crosser

-crossers

-crosses

-crossing

-crossings

-crossly

-crossover

-crossover's

-crossovers

-crossword

-crossword's

-crosswords

-crouch

-crouched

-crouches

-crouching

-crow

-crowd

-crowded

-crowdedness

-crowder

-crowding

-crowds

-crowed

-crowing

-crown

-crowned

-crowner

-crowning

-crowns

-crows

-crucial

-crucially

-crucification

-crucified

-crucifies

-crucify

-crucifying

-crude

-crudely

-crudeness

-cruder

-crudest

-cruel

-crueler

-cruelest

-cruelly

-cruelness

-cruelty

-cruise

-cruised

-cruiser

-cruisers

-cruises

-cruising

-crumb

-crumble

-crumbled

-crumbles

-crumblier

-crumbliness

-crumbling

-crumblings

-crumbly

-crumbs

-crumple

-crumpled

-crumples

-crumpling

-crunch

-crunched

-cruncher

-crunchers

-crunches

-crunchier

-crunchiest

-crunchiness

-crunching

-crunchy

-crusade

-crusaded

-crusader

-crusaders

-crusades

-crusading

-crush

-crushable

-crushed

-crusher

-crushers

-crushes

-crushing

-crushingly

-crust

-crust's

-crustacean

-crustacean's

-crustaceans

-crusted

-crusting

-crusts

-crutch

-crutch's

-crutched

-crutches

-crux

-crux's

-cruxes

-cry

-crying

-cryptanalysis

-cryptic

-cryptographic

-cryptography

-cryptology

-crystal

-crystal's

-crystalline

-crystals

-cub

-cub's

-cube

-cubed

-cuber

-cubes

-cubic

-cubicly

-cubics

-cubing

-cubs

-cuckoo

-cuckoo's

-cuckoos

-cucumber

-cucumber's

-cucumbers

-cuddle

-cuddled

-cuddles

-cuddling

-cudgel

-cudgel's

-cudgels

-cue

-cued

-cues

-cuff

-cuff's

-cuffed

-cuffing

-cuffs

-cuing

-cull

-culled

-culler

-culling

-culls

-culminate

-culminated

-culminates

-culminating

-culmination

-culpability

-culprit

-culprit's

-culprits

-cult

-cult's

-cultivate

-cultivated

-cultivates

-cultivating

-cultivation

-cultivations

-cultivator

-cultivator's

-cultivators

-cults

-cultural

-culturally

-culture

-cultured

-cultures

-culturing

-cumbersome

-cumbersomely

-cumbersomeness

-cumulative

-cumulatively

-cunning

-cunningly

-cunningness

-cup

-cup's

-cupboard

-cupboard's

-cupboards

-cupful

-cupfuls

-cupped

-cupping

-cups

-cur

-curable

-curableness

-curably

-curb

-curbed

-curbing

-curbs

-curds

-cure

-cured

-curer

-cures

-curfew

-curfew's

-curfews

-curing

-curiosities

-curiosity

-curiosity's

-curious

-curiouser

-curiousest

-curiously

-curiousness

-curl

-curled

-curler

-curlers

-curlier

-curliness

-curling

-curls

-curly

-currant

-currant's

-currants

-currencies

-currency

-currency's

-current

-currently

-currentness

-currents

-curricular

-curriculum

-curriculum's

-curriculums

-curried

-currier

-curries

-curry

-currying

-curs

-curse

-cursed

-cursedly

-cursedness

-curses

-cursing

-cursive

-cursively

-cursiveness

-cursor

-cursor's

-cursorily

-cursoriness

-cursors

-cursory

-curt

-curtail

-curtailed

-curtailer

-curtailing

-curtails

-curtain

-curtained

-curtaining

-curtains

-curtly

-curtness

-curtsied

-curtsies

-curtsy

-curtsy's

-curtsying

-curvature

-curvatures

-curve

-curved

-curves

-curving

-cushion

-cushioned

-cushioning

-cushions

-cusp

-cusp's

-cusps

-cuss

-cussed

-cussedly

-cussedness

-cusser

-cusses

-custard

-custodian

-custodian's

-custodians

-custodies

-custody

-custom

-customarily

-customariness

-customary

-customer

-customer's

-customers

-customs

-cut

-cut's

-cute

-cutely

-cuteness

-cuter

-cutes

-cutest

-cutoff

-cutoffs

-cuts

-cutter

-cutter's

-cutters

-cutting

-cuttingly

-cuttings

-cybernetic

-cybernetics

-cycle

-cycled

-cycler

-cycles

-cyclic

-cyclically

-cyclicly

-cycling

-cycloid

-cycloid's

-cycloidal

-cycloids

-cyclone

-cyclone's

-cyclones

-cylinder

-cylinder's

-cylindered

-cylindering

-cylinders

-cylindrical

-cylindrically

-cymbal

-cymbal's

-cymbals

-cynical

-cynically

-cypress

-cyst

-cysts

-cytology

-czar

-dabble

-dabbled

-dabbler

-dabblers

-dabbles

-dabbling

-dad

-dad's

-daddies

-daddy

-dads

-daemon

-daemon's

-daemons

-daffodil

-daffodil's

-daffodils

-dagger

-daggers

-dailies

-daily

-daintier

-dainties

-daintily

-daintiness

-dainty

-dairies

-dairy

-dairying

-daisies

-daisy

-daisy's

-dale

-dale's

-dales

-daleth

-dam

-dam's

-damage

-damaged

-damager

-damagers

-damages

-damaging

-damagingly

-damask

-dame

-damed

-damn

-damnation

-damned

-damneder

-damnedest

-damning

-damningly

-damns

-damp

-damped

-dampen

-dampened

-dampener

-dampening

-dampens

-damper

-dampers

-damping

-damply

-dampness

-damps

-dams

-damsel

-damsel's

-damsels

-dance

-danced

-dancer

-dancers

-dances

-dancing

-dandelion

-dandelion's

-dandelions

-dandier

-dandies

-dandy

-danger

-danger's

-dangerous

-dangerously

-dangerousness

-dangers

-dangle

-dangled

-dangler

-dangler's

-danglers

-dangles

-dangling

-danglingly

-dare

-dared

-darer

-darers

-dares

-daring

-daringly

-daringness

-dark

-darken

-darkened

-darkener

-darkeners

-darkening

-darker

-darkest

-darkly

-darkness

-darks

-darling

-darling's

-darlingly

-darlingness

-darlings

-darn

-darned

-darner

-darning

-darns

-dart

-darted

-darter

-darting

-darts

-dash

-dashed

-dasher

-dashers

-dashes

-dashing

-dashingly

-data

-database

-database's

-databases

-date

-dated

-datedly

-datedness

-dater

-dates

-dating

-dative

-datum

-datums

-daughter

-daughter's

-daughterly

-daughters

-daunt

-daunted

-daunting

-dauntless

-dauntlessly

-dauntlessness

-daunts

-dawn

-dawned

-dawning

-dawns

-day

-day's

-daybreak

-daybreaks

-daydream

-daydreamed

-daydreamer

-daydreamers

-daydreaming

-daydreams

-daylight

-daylight's

-daylights

-days

-daytime

-daytimes

-daze

-dazed

-dazedness

-dazes

-dazing

-dazzle

-dazzled

-dazzler

-dazzlers

-dazzles

-dazzling

-dazzlingly

-deacon

-deacon's

-deacons

-dead

-deaden

-deadened

-deadener

-deadening

-deadeningly

-deadens

-deadlier

-deadliest

-deadline

-deadline's

-deadlines

-deadliness

-deadlock

-deadlocked

-deadlocking

-deadlocks

-deadly

-deadness

-deaf

-deafen

-deafened

-deafening

-deafeningly

-deafens

-deafer

-deafest

-deafly

-deafness

-deal

-dealer

-dealers

-dealing

-dealings

-deallocate

-deallocated

-deallocates

-deallocating

-deallocation

-deallocation's

-deallocations

-deallocator

-deals

-dealt

-dean

-dean's

-deans

-dear

-dearer

-dearest

-dearly

-dearness

-dears

-dearth

-dearths

-death

-deathly

-deaths

-debatable

-debate

-debated

-debater

-debaters

-debates

-debating

-debilitate

-debilitated

-debilitates

-debilitating

-debilitation

-debris

-debt

-debt's

-debtor

-debtors

-debts

-debug

-debugged

-debugger

-debugger's

-debuggers

-debugging

-debugs

-decade

-decade's

-decadence

-decadent

-decadently

-decades

-decay

-decayed

-decayer

-decaying

-decays

-decease

-deceased

-deceases

-deceasing

-deceit

-deceitful

-deceitfully

-deceitfulness

-deceive

-deceived

-deceiver

-deceivers

-deceives

-deceiving

-deceivingly

-decelerate

-decelerated

-decelerates

-decelerating

-deceleration

-decelerations

-decencies

-decency

-decency's

-decent

-decently

-deception

-deception's

-deceptions

-deceptive

-deceptively

-deceptiveness

-decidability

-decidable

-decide

-decided

-decidedly

-decidedness

-decider

-decides

-deciding

-decimal

-decimally

-decimals

-decimate

-decimated

-decimates

-decimating

-decimation

-decipher

-deciphered

-decipherer

-decipherers

-deciphering

-deciphers

-decision

-decision's

-decisions

-decisive

-decisively

-decisiveness

-deck

-decked

-decker

-decking

-deckings

-decks

-declaration

-declaration's

-declarations

-declarative

-declaratively

-declaratives

-declare

-declared

-declarer

-declarers

-declares

-declaring

-declination

-declination's

-declinations

-decline

-declined

-decliner

-decliners

-declines

-declining

-decode

-decoded

-decoder

-decoders

-decodes

-decoding

-decodings

-decompile

-decompiled

-decompiler

-decompilers

-decompiles

-decompiling

-decomposability

-decomposable

-decompose

-decomposed

-decomposer

-decomposes

-decomposing

-decomposition

-decomposition's

-decompositions

-decompression

-decorate

-decorated

-decorates

-decorating

-decoration

-decorations

-decorative

-decoratively

-decorativeness

-decorum

-decorums

-decouple

-decoupled

-decoupler

-decouples

-decoupling

-decoy

-decoy's

-decoys

-decrease

-decreased

-decreases

-decreasing

-decreasingly

-decree

-decreed

-decreeing

-decreer

-decrees

-decrement

-decremented

-decrementing

-decrements

-dedicate

-dedicated

-dedicatedly

-dedicates

-dedicating

-dedication

-dedications

-dedicative

-deduce

-deduced

-deducer

-deduces

-deducible

-deducing

-deduct

-deducted

-deducting

-deduction

-deduction's

-deductions

-deductive

-deductively

-deducts

-deed

-deeded

-deeding

-deeds

-deem

-deemed

-deeming

-deems

-deep

-deepen

-deepened

-deepening

-deepens

-deeper

-deepest

-deeply

-deepness

-deeps

-deer

-deers

-default

-defaulted

-defaulter

-defaulting

-defaults

-defeat

-defeated

-defeating

-defeatism

-defeatist

-defeatists

-defeats

-defect

-defected

-defecting

-defection

-defection's

-defections

-defective

-defectively

-defectiveness

-defectives

-defects

-defend

-defendant

-defendant's

-defendants

-defended

-defender

-defenders

-defending

-defends

-defenestrate

-defenestrated

-defenestrates

-defenestrating

-defenestration

-defenestrations

-defensive

-defensively

-defensiveness

-defer

-deference

-deferment

-deferment's

-deferments

-deferrable

-deferred

-deferrer

-deferrer's

-deferrers

-deferring

-defers

-defiance

-defiances

-defiant

-defiantly

-deficiencies

-deficiency

-deficient

-deficiently

-deficit

-deficit's

-deficits

-defied

-defier

-defies

-defile

-defiled

-defiler

-defiles

-defiling

-definable

-define

-defined

-definer

-definers

-defines

-defining

-definite

-definitely

-definiteness

-definition

-definition's

-definitional

-definitions

-definitive

-definitively

-definitiveness

-deformation

-deformation's

-deformations

-deformed

-deformities

-deformity

-deformity's

-deftly

-defy

-defying

-defyingly

-degenerate

-degenerated

-degenerately

-degenerateness

-degenerates

-degenerating

-degeneration

-degenerative

-degradable

-degradation

-degradation's

-degradations

-degrade

-degraded

-degradedly

-degradedness

-degrader

-degrades

-degrading

-degradingly

-degree

-degree's

-degreed

-degrees

-deign

-deigned

-deigning

-deigns

-deities

-deity

-deity's

-dejected

-dejectedly

-dejectedness

-delay

-delayed

-delayer

-delayers

-delaying

-delays

-delegate

-delegated

-delegates

-delegating

-delegation

-delegations

-delete

-deleted

-deleter

-deletes

-deleting

-deletion

-deletions

-deliberate

-deliberated

-deliberately

-deliberateness

-deliberates

-deliberating

-deliberation

-deliberations

-deliberative

-deliberatively

-deliberativeness

-deliberator

-deliberator's

-deliberators

-delicacies

-delicacy

-delicacy's

-delicate

-delicately

-delicateness

-delicates

-delicious

-deliciouses

-deliciously

-deliciousness

-delight

-delighted

-delightedly

-delightedness

-delighter

-delightful

-delightfully

-delightfulness

-delighting

-delights

-delimit

-delimited

-delimiter

-delimiters

-delimiting

-delimits

-delineate

-delineated

-delineates

-delineating

-delineation

-delineations

-delineative

-delinquency

-delinquent

-delinquent's

-delinquently

-delinquents

-delirious

-deliriously

-deliriousness

-deliver

-deliverable

-deliverables

-deliverance

-delivered

-deliverer

-deliverers

-deliveries

-delivering

-delivers

-delivery

-delivery's

-dell

-dell's

-dells

-delta

-delta's

-deltas

-delude

-deluded

-deluder

-deludes

-deluding

-deludingly

-deluge

-deluged

-deluges

-deluging

-delusion

-delusion's

-delusions

-delve

-delved

-delver

-delves

-delving

-demand

-demanded

-demander

-demanding

-demandingly

-demands

-demise

-demised

-demises

-demising

-demo

-democracies

-democracy

-democracy's

-democrat

-democrat's

-democratic

-democratically

-democrats

-demodulate

-demodulated

-demodulates

-demodulating

-demodulation

-demodulation's

-demodulations

-demodulator

-demodulator's

-demodulators

-demographic

-demographics

-demolish

-demolished

-demolisher

-demolishes

-demolishing

-demolition

-demolitions

-demon

-demon's

-demoness

-demons

-demonstrable

-demonstrableness

-demonstrate

-demonstrated

-demonstrates

-demonstrating

-demonstration

-demonstrations

-demonstrative

-demonstratively

-demonstrativeness

-demonstrator

-demonstrator's

-demonstrators

-demos

-demur

-demurs

-den

-den's

-deniable

-denial

-denial's

-denials

-denied

-denier

-denies

-denigrate

-denigrated

-denigrates

-denigrating

-denigration

-denigrative

-denizen

-denizens

-denomination

-denomination's

-denominations

-denominator

-denominator's

-denominators

-denotable

-denotation

-denotation's

-denotational

-denotationally

-denotations

-denotative

-denote

-denoted

-denotes

-denoting

-denounce

-denounced

-denouncer

-denouncers

-denounces

-denouncing

-dens

-dense

-densely

-denseness

-denser

-densest

-densities

-density

-density's

-dent

-dental

-dentally

-dentals

-dented

-denting

-dentist

-dentist's

-dentists

-dents

-deny

-denying

-denyingly

-depart

-departed

-departing

-department

-department's

-departmental

-departmentally

-departments

-departs

-departure

-departure's

-departures

-depend

-dependability

-dependable

-dependableness

-dependably

-depended

-dependence

-dependences

-dependencies

-dependency

-dependent

-dependently

-dependents

-depending

-depends

-depict

-depicted

-depicter

-depicting

-depicts

-deplete

-depleted

-depletes

-depleting

-depletion

-depletions

-depletive

-deplorable

-deplorableness

-deplore

-deplored

-deplorer

-deplores

-deploring

-deploringly

-deploy

-deployed

-deploying

-deployment

-deployment's

-deployments

-deploys

-deport

-deportation

-deported

-deportee

-deportee's

-deportees

-deporting

-deportment

-deports

-depose

-deposed

-deposes

-deposing

-deposit

-deposited

-depositing

-deposition

-deposition's

-depositions

-depositor

-depositor's

-depositors

-deposits

-depot

-depot's

-depots

-deprave

-depraved

-depravedly

-depravedness

-depraver

-depraves

-depraving

-depreciate

-depreciated

-depreciates

-depreciating

-depreciatingly

-depreciation

-depreciations

-depreciative

-depreciatively

-depress

-depressed

-depresses

-depressing

-depressingly

-depression

-depression's

-depressions

-depressive

-depressively

-deprivation

-deprivation's

-deprivations

-deprive

-deprived

-deprives

-depriving

-depth

-depths

-deputies

-deputy

-deputy's

-dequeue

-dequeued

-dequeues

-dequeuing

-derail

-derailed

-derailing

-derails

-derbies

-derby

-dereference

-dereferenced

-dereferencer

-dereferencers

-dereferences

-dereferencing

-deride

-derided

-derider

-derides

-deriding

-deridingly

-derision

-derivable

-derivation

-derivation's

-derivations

-derivative

-derivative's

-derivatively

-derivativeness

-derivatives

-derive

-derived

-deriver

-derives

-deriving

-descend

-descendant

-descendant's

-descendants

-descended

-descender

-descenders

-descending

-descends

-descent

-descent's

-descents

-describable

-describe

-described

-describer

-describers

-describes

-describing

-descried

-description

-description's

-descriptions

-descriptive

-descriptively

-descriptiveness

-descriptives

-descriptor

-descriptor's

-descriptors

-descry

-descrying

-desert

-deserted

-deserter

-deserters

-deserting

-desertion

-desertions

-deserts

-deserve

-deserved

-deservedly

-deservedness

-deserver

-deserves

-deserving

-deservingly

-deservings

-desiderata

-desideratum

-design

-designate

-designated

-designates

-designating

-designation

-designations

-designative

-designator

-designator's

-designators

-designed

-designedly

-designer

-designer's

-designers

-designing

-designs

-desirability

-desirable

-desirableness

-desirably

-desire

-desired

-desirer

-desires

-desiring

-desirous

-desirously

-desirousness

-desk

-desk's

-desks

-desktop

-desolate

-desolated

-desolately

-desolateness

-desolater

-desolates

-desolating

-desolatingly

-desolation

-desolations

-despair

-despaired

-despairer

-despairing

-despairingly

-despairs

-despatch

-despatched

-desperate

-desperately

-desperateness

-desperation

-despise

-despised

-despiser

-despises

-despising

-despite

-despited

-despot

-despot's

-despotic

-despots

-dessert

-dessert's

-desserts

-destination

-destination's

-destinations

-destine

-destined

-destinies

-destining

-destiny

-destiny's

-destitute

-destituteness

-destitution

-destroy

-destroyed

-destroyer

-destroyer's

-destroyers

-destroying

-destroys

-destruction

-destruction's

-destructions

-destructive

-destructively

-destructiveness

-detach

-detached

-detachedly

-detachedness

-detacher

-detaches

-detaching

-detachment

-detachment's

-detachments

-detail

-detailed

-detailedly

-detailedness

-detailer

-detailing

-details

-detain

-detained

-detainer

-detaining

-detains

-detect

-detectable

-detectably

-detected

-detecting

-detection

-detection's

-detections

-detective

-detectives

-detector

-detector's

-detectors

-detects

-detention

-deteriorate

-deteriorated

-deteriorates

-deteriorating

-deterioration

-deteriorative

-determinable

-determinableness

-determinacy

-determinant

-determinant's

-determinants

-determinate

-determinately

-determinateness

-determination

-determinations

-determinative

-determinatively

-determinativeness

-determine

-determined

-determinedly

-determinedness

-determiner

-determiners

-determines

-determining

-determinism

-deterministic

-deterministically

-detest

-detestable

-detestableness

-detested

-detesting

-detests

-detonate

-detonated

-detonates

-detonating

-detonation

-detonative

-detract

-detracted

-detracting

-detractive

-detractively

-detractor

-detractor's

-detractors

-detracts

-detriment

-detriments

-devastate

-devastated

-devastates

-devastating

-devastatingly

-devastation

-devastations

-devastative

-develop

-developed

-developer

-developer's

-developers

-developing

-development

-development's

-developmental

-developmentally

-developments

-develops

-deviant

-deviant's

-deviantly

-deviants

-deviate

-deviated

-deviates

-deviating

-deviation

-deviations

-device

-device's

-devices

-devil

-devil's

-devilish

-devilishly

-devilishness

-devils

-devise

-devised

-deviser

-devises

-devising

-devisings

-devision

-devisions

-devoid

-devote

-devoted

-devotedly

-devotee

-devotee's

-devotees

-devotes

-devoting

-devotion

-devotions

-devour

-devoured

-devourer

-devouring

-devours

-devout

-devoutly

-devoutness

-dew

-dewdrop

-dewdrop's

-dewdrops

-dewed

-dewier

-dewiness

-dewing

-dews

-dewy

-dexterity

-diabetes

-diadem

-diagnosable

-diagnose

-diagnosed

-diagnoses

-diagnosing

-diagnosis

-diagnostic

-diagnostic's

-diagnostics

-diagonal

-diagonally

-diagonals

-diagram

-diagram's

-diagramed

-diagraming

-diagrammable

-diagrammatic

-diagrammatically

-diagrammed

-diagrammer

-diagrammer's

-diagrammers

-diagramming

-diagrams

-dial

-dial's

-dialect

-dialect's

-dialects

-dialog

-dialog's

-dialogs

-dialogue

-dialogue's

-dialogues

-dials

-diameter

-diameter's

-diameters

-diametrically

-diamond

-diamond's

-diamonds

-diaper

-diaper's

-diapered

-diapering

-diapers

-diaphragm

-diaphragm's

-diaphragms

-diaries

-diary

-diary's

-diatribe

-diatribe's

-diatribes

-dice

-dicer

-dices

-dichotomies

-dichotomy

-dicing

-dickens

-dicky

-dictate

-dictated

-dictates

-dictating

-dictation

-dictations

-dictator

-dictator's

-dictators

-dictatorship

-dictatorships

-diction

-dictionaries

-dictionary

-dictionary's

-dictions

-dictum

-dictum's

-dictums

-did

-didn't

-die

-died

-dielectric

-dielectric's

-dielectrics

-dies

-diet

-dieter

-dieters

-dietitian

-dietitian's

-dietitians

-diets

-differ

-differed

-difference

-difference's

-differenced

-differences

-differencing

-different

-differential

-differential's

-differentially

-differentials

-differentiate

-differentiated

-differentiates

-differentiating

-differentiation

-differentiations

-differentiators

-differently

-differentness

-differer

-differers

-differing

-differs

-difficult

-difficulties

-difficultly

-difficulty

-difficulty's

-diffuse

-diffused

-diffusely

-diffuseness

-diffuser

-diffusers

-diffuses

-diffusing

-diffusion

-diffusions

-diffusive

-diffusively

-diffusiveness

-dig

-digest

-digested

-digester

-digestible

-digesting

-digestion

-digestions

-digestive

-digestively

-digestiveness

-digests

-digger

-digger's

-diggers

-digging

-diggings

-digit

-digit's

-digital

-digitally

-digits

-dignified

-dignify

-dignities

-dignity

-digress

-digressed

-digresses

-digressing

-digression

-digression's

-digressions

-digressive

-digressively

-digressiveness

-digs

-dike

-dike's

-diker

-dikes

-diking

-dilate

-dilated

-dilatedly

-dilatedness

-dilates

-dilating

-dilation

-dilative

-dilemma

-dilemma's

-dilemmas

-diligence

-diligences

-diligent

-diligently

-diligentness

-dilute

-diluted

-dilutely

-diluteness

-diluter

-dilutes

-diluting

-dilution

-dilutions

-dilutive

-dim

-dime

-dime's

-dimension

-dimensional

-dimensionality

-dimensionally

-dimensioned

-dimensioning

-dimensions

-dimer

-dimers

-dimes

-diminish

-diminished

-diminishes

-diminishing

-diminution

-diminutive

-diminutively

-diminutiveness

-dimly

-dimmed

-dimmer

-dimmer's

-dimmers

-dimmest

-dimming

-dimness

-dimple

-dimpled

-dimples

-dimpling

-dims

-din

-dine

-dined

-diner

-diners

-dines

-dingier

-dinginess

-dingy

-dining

-dinner

-dinner's

-dinners

-dint

-diode

-diode's

-diodes

-dioxide

-dioxides

-dip

-diphtheria

-diploma

-diploma's

-diplomacy

-diplomas

-diplomat

-diplomat's

-diplomatic

-diplomatics

-diplomats

-dipped

-dipper

-dipper's

-dippers

-dipping

-dippings

-dips

-dire

-direct

-directed

-directing

-direction

-direction's

-directional

-directionality

-directionally

-directions

-directive

-directive's

-directives

-directly

-directness

-director

-director's

-directories

-directors

-directory

-directory's

-directs

-direly

-direness

-direr

-direst

-dirge

-dirge's

-dirged

-dirges

-dirging

-dirt

-dirt's

-dirtied

-dirtier

-dirties

-dirtiest

-dirtily

-dirtiness

-dirts

-dirty

-dirtying

-disabilities

-disability

-disability's

-disable

-disabled

-disabler

-disablers

-disables

-disabling

-disabuse

-disadvantage

-disadvantage's

-disadvantaged

-disadvantagedness

-disadvantages

-disadvantaging

-disagree

-disagreeable

-disagreeableness

-disagreed

-disagreeing

-disagreement

-disagreement's

-disagreements

-disagrees

-disallow

-disallowed

-disallowing

-disallows

-disambiguate

-disambiguated

-disambiguates

-disambiguating

-disambiguation

-disambiguations

-disappear

-disappearance

-disappearance's

-disappearances

-disappeared

-disappearing

-disappears

-disappoint

-disappointed

-disappointedly

-disappointing

-disappointingly

-disappointment

-disappointment's

-disappointments

-disappoints

-disapproval

-disapprove

-disapproved

-disapprover

-disapproves

-disapproving

-disapprovingly

-disarm

-disarmament

-disarmed

-disarmer

-disarmers

-disarming

-disarmingly

-disarms

-disassemble

-disassembled

-disassembler

-disassembler's

-disassemblers

-disassembles

-disassembling

-disaster

-disaster's

-disasters

-disastrous

-disastrously

-disband

-disbanded

-disbanding

-disbands

-disbelieve

-disbelieved

-disbeliever

-disbelievers

-disbelieves

-disbelieving

-disburse

-disbursed

-disbursement

-disbursement's

-disbursements

-disburser

-disburses

-disbursing

-disc

-disc's

-discard

-discarded

-discarder

-discarding

-discards

-discern

-discerned

-discerner

-discernibility

-discernible

-discernibly

-discerning

-discerningly

-discernment

-discerns

-discharge

-discharged

-discharger

-discharges

-discharging

-disciple

-disciple's

-disciples

-disciplinary

-discipline

-disciplined

-discipliner

-disciplines

-disciplining

-disclaim

-disclaimed

-disclaimer

-disclaimers

-disclaiming

-disclaims

-disclose

-disclosed

-discloser

-discloses

-disclosing

-disclosure

-disclosure's

-disclosures

-discomfort

-discomforting

-discomfortingly

-disconcert

-disconcerted

-disconcerting

-disconcertingly

-disconcerts

-disconnect

-disconnected

-disconnectedly

-disconnectedness

-disconnecter

-disconnecting

-disconnection

-disconnections

-disconnects

-discontent

-discontented

-discontentedly

-discontinuance

-discontinue

-discontinued

-discontinues

-discontinuing

-discontinuities

-discontinuity

-discontinuity's

-discontinuous

-discontinuously

-discord

-discords

-discount

-discounted

-discounter

-discounting

-discounts

-discourage

-discouraged

-discouragement

-discourager

-discourages

-discouraging

-discouragingly

-discourse

-discourse's

-discoursed

-discourser

-discourses

-discoursing

-discover

-discovered

-discoverer

-discoverers

-discoveries

-discovering

-discovers

-discovery

-discovery's

-discredit

-discredited

-discrediting

-discredits

-discreet

-discreetly

-discreetness

-discrepancies

-discrepancy

-discrepancy's

-discrete

-discretely

-discreteness

-discretion

-discretions

-discriminate

-discriminated

-discriminates

-discriminating

-discriminatingly

-discrimination

-discriminations

-discriminative

-discriminatory

-discs

-discuss

-discussed

-discusser

-discusses

-discussing

-discussion

-discussion's

-discussions

-disdain

-disdaining

-disdains

-disease

-diseased

-diseases

-diseasing

-disenfranchise

-disenfranchised

-disenfranchisement

-disenfranchisement's

-disenfranchisements

-disenfranchiser

-disenfranchises

-disenfranchising

-disengage

-disengaged

-disengages

-disengaging

-disentangle

-disentangled

-disentangler

-disentangles

-disentangling

-disfigure

-disfigured

-disfigures

-disfiguring

-disgorge

-disgorger

-disgrace

-disgraced

-disgraceful

-disgracefully

-disgracefulness

-disgracer

-disgraces

-disgracing

-disgruntled

-disguise

-disguised

-disguisedly

-disguiser

-disguises

-disguising

-disgust

-disgusted

-disgustedly

-disgusting

-disgustingly

-disgusts

-dish

-dishearten

-disheartening

-dishearteningly

-dished

-dishes

-dishing

-dishonest

-dishonestly

-dishwasher

-dishwashers

-disillusion

-disillusioned

-disillusioning

-disillusionment

-disillusionment's

-disillusionments

-disinterested

-disinterestedly

-disinterestedness

-disjoint

-disjointed

-disjointedly

-disjointedness

-disjointly

-disjointness

-disjunct

-disjunction

-disjunctions

-disjunctive

-disjunctively

-disjuncts

-disk

-disk's

-disked

-disking

-disks

-dislike

-disliked

-disliker

-dislikes

-disliking

-dislocate

-dislocated

-dislocates

-dislocating

-dislocation

-dislocations

-dislodge

-dislodged

-dislodges

-dislodging

-dismal

-dismally

-dismalness

-dismay

-dismayed

-dismaying

-dismayingly

-dismays

-dismiss

-dismissal

-dismissal's

-dismissals

-dismissed

-dismisser

-dismissers

-dismisses

-dismissing

-dismissive

-dismount

-dismounted

-dismounting

-dismounts

-disobedience

-disobey

-disobeyed

-disobeyer

-disobeying

-disobeys

-disorder

-disordered

-disorderedly

-disorderedness

-disorderliness

-disorderly

-disorders

-disown

-disowned

-disowning

-disowns

-disparate

-disparately

-disparateness

-disparities

-disparity

-disparity's

-dispatch

-dispatched

-dispatcher

-dispatchers

-dispatches

-dispatching

-dispel

-dispelled

-dispelling

-dispels

-dispensation

-dispense

-dispensed

-dispenser

-dispensers

-dispenses

-dispensing

-disperse

-dispersed

-dispersedly

-disperser

-disperses

-dispersing

-dispersion

-dispersions

-dispersive

-dispersively

-dispersiveness

-displace

-displaced

-displacement

-displacement's

-displacements

-displacer

-displaces

-displacing

-display

-displayed

-displayer

-displaying

-displays

-displease

-displeased

-displeasedly

-displeases

-displeasing

-displeasure

-disposable

-disposal

-disposal's

-disposals

-dispose

-disposed

-disposer

-disposes

-disposing

-disposition

-disposition's

-dispositions

-disprove

-disproved

-disproves

-disproving

-dispute

-disputed

-disputer

-disputers

-disputes

-disputing

-disqualification

-disqualified

-disqualifies

-disqualify

-disqualifying

-disquiet

-disquieting

-disquietingly

-disquietly

-disregard

-disregarded

-disregarding

-disregards

-disrupt

-disrupted

-disrupter

-disrupting

-disruption

-disruption's

-disruptions

-disruptive

-disruptively

-disruptiveness

-disrupts

-dissatisfaction

-dissatisfaction's

-dissatisfactions

-dissatisfied

-disseminate

-disseminated

-disseminates

-disseminating

-dissemination

-dissension

-dissension's

-dissensions

-dissent

-dissented

-dissenter

-dissenters

-dissenting

-dissents

-dissertation

-dissertation's

-dissertations

-disservice

-dissident

-dissident's

-dissidents

-dissimilar

-dissimilarities

-dissimilarity

-dissimilarity's

-dissimilarly

-dissipate

-dissipated

-dissipatedly

-dissipatedness

-dissipater

-dissipates

-dissipating

-dissipation

-dissipations

-dissipative

-dissociate

-dissociated

-dissociates

-dissociating

-dissociation

-dissociative

-dissolution

-dissolution's

-dissolutions

-dissolve

-dissolved

-dissolver

-dissolves

-dissolving

-dissonance

-dissonance's

-dissonances

-distal

-distally

-distance

-distanced

-distances

-distancing

-distant

-distantly

-distantness

-distaste

-distasteful

-distastefully

-distastefulness

-distastes

-distemper

-distill

-distillation

-distilled

-distiller

-distillers

-distilling

-distills

-distinct

-distinction

-distinction's

-distinctions

-distinctive

-distinctively

-distinctiveness

-distinctly

-distinctness

-distinguish

-distinguishable

-distinguished

-distinguisher

-distinguishes

-distinguishing

-distort

-distorted

-distorter

-distorting

-distortion

-distortion's

-distortions

-distorts

-distract

-distracted

-distractedly

-distracting

-distractingly

-distraction

-distraction's

-distractions

-distractive

-distracts

-distraught

-distraughtly

-distress

-distressed

-distresses

-distressing

-distressingly

-distribute

-distributed

-distributer

-distributes

-distributing

-distribution

-distribution's

-distributional

-distributions

-distributive

-distributively

-distributiveness

-distributivity

-distributor

-distributor's

-distributors

-district

-district's

-districted

-districting

-districts

-distrust

-distrusted

-distrusts

-disturb

-disturbance

-disturbance's

-disturbances

-disturbed

-disturber

-disturbing

-disturbingly

-disturbs

-ditch

-ditch's

-ditched

-ditcher

-ditches

-ditching

-divan

-divan's

-divans

-dive

-dived

-diver

-diverge

-diverged

-divergence

-divergence's

-divergences

-divergent

-divergently

-diverges

-diverging

-divers

-diverse

-diversely

-diverseness

-diversification

-diversified

-diversifier

-diversifies

-diversify

-diversifying

-diversion

-diversions

-diversities

-diversity

-divert

-diverted

-diverting

-diverts

-dives

-divest

-divested

-divesting

-divests

-divide

-divided

-dividend

-dividend's

-dividends

-divider

-dividers

-divides

-dividing

-divine

-divined

-divinely

-diviner

-divines

-diving

-divining

-divinities

-divinity

-divinity's

-division

-division's

-divisions

-divisor

-divisor's

-divisors

-divorce

-divorced

-divorces

-divorcing

-divulge

-divulged

-divulges

-divulging

-dizzied

-dizzier

-dizziness

-dizzy

-dizzying

-dizzyingly

-do

-dock

-docked

-docker

-docking

-docks

-doctor

-doctor's

-doctoral

-doctorate

-doctorate's

-doctorates

-doctored

-doctoring

-doctors

-doctrine

-doctrine's

-doctrines

-document

-document's

-documentaries

-documentary

-documentary's

-documentation

-documentation's

-documentations

-documented

-documenter

-documenters

-documenting

-documents

-dodge

-dodged

-dodger

-dodgers

-dodges

-dodging

-doer

-doers

-does

-doesn't

-dog

-dog's

-dogged

-doggedly

-doggedness

-dogging

-dogma

-dogma's

-dogmas

-dogmatism

-dogs

-doing

-doings

-dole

-doled

-doleful

-dolefully

-dolefulness

-doles

-doling

-doll

-doll's

-dollar

-dollars

-dollied

-dollies

-dolls

-dolly

-dolly's

-dollying

-dolphin

-dolphin's

-dolphins

-domain

-domain's

-domains

-dome

-domed

-domes

-domestic

-domestically

-domesticate

-domesticated

-domesticates

-domesticating

-domestication

-dominance

-dominant

-dominantly

-dominate

-dominated

-dominates

-dominating

-domination

-dominations

-dominative

-doming

-dominion

-dominions

-don

-don't

-donate

-donated

-donates

-donating

-donation

-donations

-donative

-done

-donkey

-donkey's

-donkeys

-dons

-doom

-doomed

-dooming

-dooms

-door

-door's

-doors

-doorstep

-doorstep's

-doorsteps

-doorway

-doorway's

-doorways

-dope

-doped

-doper

-dopers

-dopes

-doping

-dormant

-dormitories

-dormitory

-dormitory's

-dorsal

-dorsally

-dose

-dosed

-doses

-dosing

-dot

-dot's

-dote

-doted

-doter

-dotes

-doth

-doting

-dotingly

-dots

-dotted

-dotting

-double

-doubled

-doubleness

-doubler

-doublers

-doubles

-doublet

-doublet's

-doublets

-doubling

-doubly

-doubt

-doubtable

-doubted

-doubter

-doubters

-doubtful

-doubtfully

-doubtfulness

-doubting

-doubtingly

-doubtless

-doubtlessly

-doubtlessness

-doubts

-dough

-doughnut

-doughnut's

-doughnuts

-douse

-doused

-douser

-douses

-dousing

-dove

-dover

-doves

-down

-downcast

-downed

-downer

-downers

-downfall

-downfallen

-downier

-downing

-downplay

-downplayed

-downplaying

-downplays

-downright

-downrightly

-downrightness

-downs

-downstairs

-downstream

-downtown

-downtowner

-downtowns

-downward

-downwardly

-downwardness

-downwards

-downy

-doze

-dozed

-dozen

-dozens

-dozenth

-dozer

-dozes

-dozing

-drab

-drably

-drabness

-drabs

-draft

-draft's

-drafted

-drafter

-drafters

-drafting

-drafts

-draftsmen

-drag

-dragged

-dragging

-draggingly

-dragon

-dragon's

-dragons

-dragoon

-dragooned

-dragoons

-drags

-drain

-drainage

-drainages

-drained

-drainer

-drainers

-draining

-drains

-drake

-drama

-drama's

-dramas

-dramatic

-dramatically

-dramatics

-dramatist

-dramatist's

-dramatists

-drank

-drape

-draped

-draper

-draperies

-drapers

-drapery

-drapery's

-drapes

-draping

-drastic

-drastically

-draw

-drawback

-drawback's

-drawbacks

-drawbridge

-drawbridge's

-drawbridges

-drawer

-drawers

-drawing

-drawings

-drawl

-drawled

-drawler

-drawling

-drawlingly

-drawls

-drawly

-drawn

-drawnly

-drawnness

-draws

-dread

-dreaded

-dreadful

-dreadfully

-dreadfulness

-dreading

-dreads

-dream

-dreamed

-dreamer

-dreamers

-dreamier

-dreamily

-dreaminess

-dreaming

-dreamingly

-dreams

-dreamy

-drearier

-dreariness

-dreary

-dredge

-dredge's

-dredged

-dredger

-dredgers

-dredges

-dredging

-dregs

-drench

-drenched

-drencher

-drenches

-drenching

-dress

-dressed

-dresser

-dressers

-dresses

-dressing

-dressings

-dressmaker

-dressmaker's

-dressmakers

-drew

-dried

-drier

-drier's

-driers

-dries

-driest

-drift

-drifted

-drifter

-drifters

-drifting

-driftingly

-drifts

-drill

-drilled

-driller

-drilling

-drills

-drily

-drink

-drinkable

-drinker

-drinkers

-drinking

-drinks

-drip

-drip's

-drips

-drive

-driven

-drivenness

-driver

-driver's

-drivers

-drives

-driveway

-driveway's

-driveways

-driving

-drone

-drone's

-droner

-drones

-droning

-droningly

-drool

-drooled

-drooler

-drooling

-drools

-droop

-drooped

-drooping

-droopingly

-droops

-drop

-drop's

-dropped

-dropper

-dropper's

-droppers

-dropping

-dropping's

-droppings

-drops

-drought

-drought's

-droughts

-drove

-drover

-drovers

-droves

-drown

-drowned

-drowner

-drowning

-drownings

-drowns

-drowsier

-drowsiest

-drowsiness

-drowsy

-drudgery

-drug

-drug's

-druggist

-druggist's

-druggists

-drugs

-drum

-drum's

-drummed

-drummer

-drummer's

-drummers

-drumming

-drums

-drunk

-drunk's

-drunkard

-drunkard's

-drunkards

-drunken

-drunkenly

-drunkenness

-drunker

-drunkly

-drunks

-dry

-drying

-dryly

-dual

-dualities

-duality

-duality's

-dually

-duals

-dub

-dubious

-dubiously

-dubiousness

-dubs

-duchess

-duchess's

-duchesses

-duchies

-duchy

-duck

-ducked

-ducker

-ducking

-ducks

-dude

-due

-duel

-duels

-dueness

-dues

-dug

-duke

-duke's

-dukes

-dull

-dulled

-duller

-dullest

-dulling

-dullness

-dulls

-dully

-duly

-dumb

-dumbbell

-dumbbell's

-dumbbells

-dumber

-dumbest

-dumbly

-dumbness

-dummied

-dummies

-dummy

-dummy's

-dummying

-dump

-dumped

-dumper

-dumpers

-dumping

-dumps

-dunce

-dunce's

-dunces

-dune

-dune's

-dunes

-dungeon

-dungeon's

-dungeons

-duplicate

-duplicated

-duplicates

-duplicating

-duplication

-duplications

-duplicative

-duplicator

-duplicator's

-duplicators

-durabilities

-durability

-durable

-durableness

-durables

-durably

-duration

-duration's

-durations

-during

-dusk

-duskier

-duskiness

-dusky

-dust

-dusted

-duster

-dusters

-dustier

-dustiest

-dustiness

-dusting

-dusts

-dusty

-duties

-dutiful

-dutifully

-dutifulness

-duty

-duty's

-dwarf

-dwarfed

-dwarfness

-dwarfs

-dwell

-dwelled

-dweller

-dwellers

-dwelling

-dwellings

-dwells

-dwindle

-dwindled

-dwindles

-dwindling

-dye

-dyed

-dyeing

-dyer

-dyers

-dyes

-dying

-dynamic

-dynamically

-dynamics

-dynamite

-dynamited

-dynamiter

-dynamites

-dynamiting

-dynasties

-dynasty

-dynasty's

-each

-eager

-eagerly

-eagerness

-eagle

-eagle's

-eagles

-ear

-eared

-earing

-earl

-earl's

-earlier

-earliest

-earliness

-earls

-early

-earmark

-earmarked

-earmarking

-earmarkings

-earmarks

-earn

-earned

-earner

-earner's

-earners

-earnest

-earnestly

-earnestness

-earning

-earnings

-earns

-earring

-earring's

-earrings

-ears

-earshot

-earth

-earth's

-earthed

-earthen

-earthenware

-earthliness

-earthly

-earthquake

-earthquake's

-earthquakes

-earths

-earthworm

-earthworm's

-earthworms

-ease

-eased

-easement

-easement's

-easements

-easer

-eases

-easier

-easiest

-easily

-easiness

-easing

-east

-easter

-easterly

-eastern

-easterner

-easterners

-easting

-easts

-eastward

-eastwards

-easy

-eat

-eaten

-eater

-eaters

-eating

-eatings

-eats

-eaves

-eavesdrop

-eavesdropped

-eavesdropper

-eavesdropper's

-eavesdroppers

-eavesdropping

-eavesdrops

-ebb

-ebbed

-ebbing

-ebbs

-ebony

-eccentric

-eccentric's

-eccentricities

-eccentricity

-eccentrics

-ecclesiastical

-ecclesiastically

-echo

-echoed

-echoes

-echoing

-echos

-eclipse

-eclipsed

-eclipses

-eclipsing

-ecology

-economic

-economical

-economically

-economics

-economies

-economist

-economist's

-economists

-economy

-economy's

-ecstasy

-eddied

-eddies

-eddy

-eddy's

-eddying

-edge

-edged

-edger

-edges

-edging

-edible

-edibleness

-edibles

-edict

-edict's

-edicts

-edifice

-edifice's

-edifices

-edit

-edited

-editing

-edition

-edition's

-editions

-editor

-editor's

-editorial

-editorially

-editorials

-editors

-edits

-educate

-educated

-educatedly

-educatedness

-educates

-educating

-education

-education's

-educational

-educationally

-educations

-educative

-educator

-educator's

-educators

-eel

-eel's

-eels

-eerie

-eerier

-effect

-effected

-effecting

-effective

-effectively

-effectiveness

-effectives

-effector

-effector's

-effectors

-effects

-effectually

-effeminate

-efficacy

-efficiencies

-efficiency

-efficient

-efficiently

-effigy

-effort

-effort's

-effortless

-effortlessly

-effortlessness

-efforts

-egg

-egged

-egger

-egging

-eggs

-ego

-egos

-eigenvalue

-eigenvalue's

-eigenvalues

-eight

-eighteen

-eighteens

-eighteenth

-eighth

-eighth's

-eighthes

-eighties

-eightieth

-eights

-eighty

-either

-ejaculate

-ejaculated

-ejaculates

-ejaculating

-ejaculation

-ejaculations

-eject

-ejected

-ejecting

-ejective

-ejects

-eke

-eked

-ekes

-eking

-el

-elaborate

-elaborated

-elaborately

-elaborateness

-elaborates

-elaborating

-elaboration

-elaborations

-elaborative

-elaborators

-elapse

-elapsed

-elapses

-elapsing

-elastic

-elastically

-elasticities

-elasticity

-elastics

-elate

-elated

-elatedly

-elatedness

-elater

-elates

-elating

-elation

-elbow

-elbowed

-elbowing

-elbows

-elder

-elderliness

-elderly

-elders

-eldest

-elect

-elected

-electing

-election

-election's

-elections

-elective

-electively

-electiveness

-electives

-elector

-elector's

-electoral

-electorally

-electors

-electric

-electrical

-electrically

-electricalness

-electricities

-electricity

-electrics

-electrification

-electrified

-electrify

-electrifying

-electrocute

-electrocuted

-electrocutes

-electrocuting

-electrocution

-electrocutions

-electrode

-electrode's

-electrodes

-electrolyte

-electrolyte's

-electrolytes

-electrolytic

-electron

-electron's

-electronic

-electronically

-electronics

-electrons

-elects

-elegance

-elegances

-elegant

-elegantly

-element

-element's

-elemental

-elementally

-elementals

-elementariness

-elementary

-elements

-elephant

-elephant's

-elephants

-elevate

-elevated

-elevates

-elevating

-elevation

-elevations

-elevator

-elevator's

-elevators

-eleven

-elevens

-elevenses

-eleventh

-elf

-elicit

-elicited

-eliciting

-elicits

-eligibilities

-eligibility

-eligible

-eligibles

-eliminate

-eliminated

-eliminately

-eliminates

-eliminating

-elimination

-eliminations

-eliminative

-eliminator

-eliminators

-elk

-elk's

-elks

-ellipse

-ellipse's

-ellipses

-ellipsis

-ellipsoid

-ellipsoid's

-ellipsoidal

-ellipsoids

-elliptic

-elliptical

-elliptically

-elm

-elmer

-elms

-elongate

-elongated

-elongates

-elongating

-elongation

-eloquence

-eloquent

-eloquently

-els

-else

-else's

-elsewhere

-elucidate

-elucidated

-elucidates

-elucidating

-elucidation

-elucidative

-elude

-eluded

-eludes

-eluding

-elusive

-elusively

-elusiveness

-elves

-emaciated

-emacs

-emacs's

-email

-email's

-emanating

-emancipation

-embark

-embarked

-embarking

-embarks

-embarrass

-embarrassed

-embarrassedly

-embarrasses

-embarrassing

-embarrassingly

-embarrassment

-embassies

-embassy

-embassy's

-embed

-embedded

-embedding

-embeds

-embellish

-embellished

-embellisher

-embellishes

-embellishing

-embellishment

-embellishment's

-embellishments

-ember

-embers

-embezzle

-embezzled

-embezzler

-embezzler's

-embezzlers

-embezzles

-embezzling

-emblem

-emblems

-embodied

-embodier

-embodies

-embodiment

-embodiment's

-embodiments

-embody

-embodying

-embrace

-embraced

-embracer

-embraces

-embracing

-embracingly

-embracive

-embroider

-embroidered

-embroiderer

-embroideries

-embroiders

-embroidery

-embryo

-embryo's

-embryology

-embryos

-emerald

-emerald's

-emeralds

-emerge

-emerged

-emergence

-emergencies

-emergency

-emergency's

-emergent

-emerges

-emerging

-emeries

-emery

-emigrant

-emigrant's

-emigrants

-emigrate

-emigrated

-emigrates

-emigrating

-emigration

-eminence

-eminent

-eminently

-emit

-emits

-emitted

-emotion

-emotion's

-emotional

-emotionally

-emotions

-empathy

-emperor

-emperor's

-emperors

-emphases

-emphasis

-emphatic

-emphatically

-empire

-empire's

-empires

-empirical

-empirically

-empiricist

-empiricist's

-empiricists

-employ

-employable

-employed

-employee

-employee's

-employees

-employer

-employer's

-employers

-employing

-employment

-employment's

-employments

-employs

-empower

-empowered

-empowering

-empowers

-empress

-emptied

-emptier

-empties

-emptiest

-emptily

-emptiness

-empty

-emptying

-emulate

-emulated

-emulates

-emulating

-emulation

-emulations

-emulative

-emulatively

-emulator

-emulator's

-emulators

-enable

-enabled

-enabler

-enablers

-enables

-enabling

-enact

-enacted

-enacting

-enactment

-enactments

-enacts

-enamel

-enamels

-encamp

-encamped

-encamping

-encamps

-encapsulate

-encapsulated

-encapsulates

-encapsulating

-encapsulation

-enchant

-enchanted

-enchanter

-enchanting

-enchantingly

-enchantment

-enchants

-encipher

-enciphered

-encipherer

-enciphering

-enciphers

-encircle

-encircled

-encircles

-encircling

-enclose

-enclosed

-encloses

-enclosing

-enclosure

-enclosure's

-enclosures

-encode

-encoded

-encoder

-encoders

-encodes

-encoding

-encodings

-encompass

-encompassed

-encompasses

-encompassing

-encounter

-encountered

-encountering

-encounters

-encourage

-encouraged

-encouragement

-encouragements

-encourager

-encourages

-encouraging

-encouragingly

-encrypt

-encrypted

-encrypting

-encryption

-encryption's

-encryptions

-encrypts

-encumber

-encumbered

-encumbering

-encumbers

-encyclopedia

-encyclopedia's

-encyclopedias

-encyclopedic

-end

-endanger

-endangered

-endangering

-endangers

-endear

-endeared

-endearing

-endearingly

-endears

-ended

-endemic

-ender

-enders

-ending

-endings

-endive

-endless

-endlessly

-endlessness

-endorse

-endorsed

-endorsement

-endorsement's

-endorsements

-endorser

-endorses

-endorsing

-endow

-endowed

-endowing

-endowment

-endowment's

-endowments

-endows

-ends

-endurable

-endurably

-endurance

-endure

-endured

-endures

-enduring

-enduringly

-enduringness

-enema

-enema's

-enemas

-enemies

-enemy

-enemy's

-energetic

-energetics

-energies

-energy

-enforce

-enforced

-enforcedly

-enforcement

-enforcer

-enforcers

-enforces

-enforcing

-enfranchise

-enfranchised

-enfranchisement

-enfranchiser

-enfranchises

-enfranchising

-engage

-engaged

-engagement

-engagement's

-engagements

-engages

-engaging

-engagingly

-engender

-engendered

-engendering

-engenders

-engine

-engine's

-engined

-engineer

-engineer's

-engineered

-engineering

-engineeringly

-engineerings

-engineers

-engines

-engining

-england

-englander

-englanders

-engrave

-engraved

-engraver

-engravers

-engraves

-engraving

-engravings

-engross

-engrossed

-engrossedly

-engrosser

-engrossing

-engrossingly

-enhance

-enhanced

-enhancement

-enhancement's

-enhancements

-enhances

-enhancing

-enigmatic

-enjoin

-enjoined

-enjoining

-enjoins

-enjoy

-enjoyable

-enjoyableness

-enjoyably

-enjoyed

-enjoying

-enjoyment

-enjoys

-enlarge

-enlarged

-enlargement

-enlargement's

-enlargements

-enlarger

-enlargers

-enlarges

-enlarging

-enlighten

-enlightened

-enlightening

-enlightenment

-enlightens

-enlist

-enlisted

-enlister

-enlisting

-enlistment

-enlistments

-enlists

-enliven

-enlivened

-enlivening

-enlivens

-enmities

-enmity

-ennoble

-ennobled

-ennobler

-ennobles

-ennobling

-ennui

-enormities

-enormity

-enormous

-enormously

-enormousness

-enough

-enqueue

-enqueued

-enqueues

-enquire

-enquired

-enquirer

-enquirers

-enquires

-enquiring

-enrage

-enraged

-enrages

-enraging

-enrich

-enriched

-enricher

-enriches

-enriching

-enrolled

-enrolling

-ensemble

-ensemble's

-ensembles

-ensign

-ensign's

-ensigns

-enslave

-enslaved

-enslaver

-enslavers

-enslaves

-enslaving

-ensnare

-ensnared

-ensnares

-ensnaring

-ensue

-ensued

-ensues

-ensuing

-ensure

-ensured

-ensurer

-ensurers

-ensures

-ensuring

-entail

-entailed

-entailer

-entailing

-entails

-entangle

-entangled

-entangler

-entangles

-entangling

-enter

-entered

-enterer

-entering

-enterprise

-enterpriser

-enterprises

-enterprising

-enterprisingly

-enters

-entertain

-entertained

-entertainer

-entertainers

-entertaining

-entertainingly

-entertainment

-entertainment's

-entertainments

-entertains

-enthusiasm

-enthusiasms

-enthusiast

-enthusiast's

-enthusiastic

-enthusiastically

-enthusiasts

-entice

-enticed

-enticer

-enticers

-entices

-enticing

-entire

-entirely

-entireties

-entirety

-entities

-entitle

-entitled

-entitles

-entitling

-entity

-entity's

-entrance

-entranced

-entrances

-entrancing

-entreat

-entreated

-entreaties

-entreating

-entreatingly

-entreats

-entreaty

-entrench

-entrenched

-entrenches

-entrenching

-entrepreneur

-entrepreneur's

-entrepreneurs

-entries

-entropies

-entropy

-entrust

-entrusted

-entrusting

-entrusts

-entry

-entry's

-enumerable

-enumerate

-enumerated

-enumerates

-enumerating

-enumeration

-enumerations

-enumerative

-enumerator

-enumerator's

-enumerators

-enunciation

-envelop

-envelope

-enveloped

-enveloper

-envelopes

-enveloping

-envelops

-enviably

-envied

-envier

-envies

-envious

-enviously

-enviousness

-environ

-environed

-environing

-environment

-environment's

-environmental

-environmentally

-environments

-environs

-envisage

-envisaged

-envisages

-envisaging

-envision

-envisioned

-envisioning

-envisions

-envoy

-envoy's

-envoys

-envy

-envying

-envyingly

-epaulet

-epaulet's

-epaulets

-ephemeral

-ephemerally

-ephemerals

-epic

-epic's

-epics

-epidemic

-epidemic's

-epidemics

-episcopal

-episcopally

-episode

-episode's

-episodes

-episodic

-epistemological

-epistemologically

-epistemology

-epistle

-epistle's

-epistler

-epistles

-epitaph

-epitaphed

-epitaphing

-epitaphs

-epitaxial

-epitaxially

-epithet

-epithet's

-epithets

-epoch

-epochs

-epsilon

-epsilons

-equal

-equalities

-equality

-equality's

-equally

-equals

-equate

-equated

-equates

-equating

-equation

-equations

-equator

-equator's

-equatorial

-equators

-equilibrium

-equilibriums

-equip

-equipment

-equipments

-equipped

-equipping

-equips

-equitable

-equitableness

-equitably

-equities

-equity

-equivalence

-equivalenced

-equivalences

-equivalencing

-equivalent

-equivalently

-equivalents

-era

-era's

-eradicate

-eradicated

-eradicates

-eradicating

-eradication

-eradicative

-eras

-erasable

-erase

-erased

-eraser

-erasers

-erases

-erasing

-erasion

-erasure

-ere

-erect

-erected

-erecting

-erection

-erection's

-erections

-erectly

-erectness

-erector

-erector's

-erectors

-erects

-ergo

-ermine

-ermine's

-ermined

-ermines

-err

-errand

-errands

-erratic

-erred

-erring

-erringly

-erroneous

-erroneously

-erroneousness

-error

-error's

-errors

-errs

-eruption

-eruptions

-escalate

-escalated

-escalates

-escalating

-escalation

-escapable

-escapade

-escapade's

-escapades

-escape

-escaped

-escapee

-escapee's

-escapees

-escaper

-escapes

-escaping

-eschew

-eschewed

-eschewing

-eschews

-escort

-escorted

-escorting

-escorts

-esoteric

-especial

-especially

-espied

-espies

-espionage

-espouse

-espoused

-espouser

-espouses

-espousing

-esprit

-esprits

-espy

-espying

-esquire

-esquires

-essay

-essayed

-essayer

-essays

-essence

-essence's

-essences

-essential

-essentially

-essentialness

-essentials

-establish

-established

-establisher

-establishes

-establishing

-establishment

-establishment's

-establishments

-estate

-estate's

-estates

-esteem

-esteemed

-esteeming

-esteems

-estimate

-estimated

-estimates

-estimating

-estimation

-estimations

-estimative

-etc

-eternal

-eternally

-eternalness

-eternities

-eternity

-ethereal

-ethereally

-etherealness

-ethic

-ethical

-ethically

-ethicalness

-ethics

-ethnic

-etiquette

-eunuch

-eunuchs

-euphemism

-euphemism's

-euphemisms

-euphoria

-evacuate

-evacuated

-evacuates

-evacuating

-evacuation

-evacuations

-evacuative

-evade

-evaded

-evader

-evades

-evading

-evaluate

-evaluated

-evaluates

-evaluating

-evaluation

-evaluations

-evaluative

-evaluator

-evaluator's

-evaluators

-evaporate

-evaporated

-evaporates

-evaporating

-evaporation

-evaporations

-evaporative

-evaporatively

-eve

-even

-evened

-evener

-evenhanded

-evenhandedly

-evenhandedness

-evening

-evening's

-evenings

-evenly

-evenness

-evens

-event

-event's

-eventful

-eventfully

-eventfulness

-events

-eventual

-eventualities

-eventuality

-eventually

-ever

-everest

-evergreen

-everlasting

-everlastingly

-everlastingness

-evermore

-every

-everybody

-everybody's

-everyday

-everydayness

-everyone

-everyone's

-everyones

-everything

-everywhere

-eves

-evict

-evicted

-evicting

-eviction

-eviction's

-evictions

-evicts

-evidence

-evidenced

-evidences

-evidencing

-evident

-evidently

-evil

-evilly

-evilness

-evils

-evince

-evinced

-evinces

-evincing

-evoke

-evoked

-evokes

-evoking

-evolute

-evolute's

-evolutes

-evolution

-evolution's

-evolutionary

-evolutions

-evolve

-evolved

-evolves

-evolving

-ewe

-ewe's

-ewer

-ewes

-exacerbate

-exacerbated

-exacerbates

-exacerbating

-exacerbation

-exacerbations

-exact

-exacted

-exacter

-exacting

-exactingly

-exactingness

-exaction

-exaction's

-exactions

-exactitude

-exactly

-exactness

-exacts

-exaggerate

-exaggerated

-exaggeratedly

-exaggeratedness

-exaggerates

-exaggerating

-exaggeration

-exaggerations

-exaggerative

-exaggeratively

-exalt

-exalted

-exaltedly

-exalter

-exalters

-exalting

-exalts

-exam

-exam's

-examen

-examination

-examination's

-examinations

-examine

-examined

-examiner

-examiners

-examines

-examining

-example

-example's

-exampled

-examples

-exampling

-exams

-exasperate

-exasperated

-exasperatedly

-exasperates

-exasperating

-exasperatingly

-exasperation

-exasperations

-excavate

-excavated

-excavates

-excavating

-excavation

-excavations

-exceed

-exceeded

-exceeder

-exceeding

-exceedingly

-exceeds

-excel

-excelled

-excellence

-excellences

-excellency

-excellent

-excellently

-excelling

-excels

-except

-excepted

-excepting

-exception

-exception's

-exceptional

-exceptionally

-exceptionalness

-exceptions

-exceptive

-excepts

-excerpt

-excerpted

-excerpter

-excerpts

-excess

-excesses

-excessive

-excessively

-excessiveness

-exchange

-exchangeable

-exchanged

-exchanger

-exchangers

-exchanges

-exchanging

-exchequer

-exchequer's

-exchequers

-excise

-excised

-excises

-excising

-excision

-excisions

-excitable

-excitableness

-excitation

-excitation's

-excitations

-excite

-excited

-excitedly

-excitement

-exciter

-excites

-exciting

-excitingly

-exclaim

-exclaimed

-exclaimer

-exclaimers

-exclaiming

-exclaims

-exclamation

-exclamation's

-exclamations

-exclude

-excluded

-excluder

-excludes

-excluding

-exclusion

-exclusioner

-exclusioners

-exclusions

-exclusive

-exclusively

-exclusiveness

-exclusivity

-excommunicate

-excommunicated

-excommunicates

-excommunicating

-excommunication

-excommunicative

-excrete

-excreted

-excreter

-excretes

-excreting

-excretion

-excretions

-excruciatingly

-excursion

-excursion's

-excursions

-excusable

-excusableness

-excusably

-excuse

-excused

-excuser

-excuses

-excusing

-executable

-executable's

-executables

-execute

-executed

-executer

-executers

-executes

-executing

-execution

-executional

-executioner

-executions

-executive

-executive's

-executives

-executor

-executor's

-executors

-exemplar

-exemplariness

-exemplars

-exemplary

-exemplification

-exemplified

-exemplifier

-exemplifiers

-exemplifies

-exemplify

-exemplifying

-exempt

-exempted

-exempting

-exempts

-exercise

-exercised

-exerciser

-exercisers

-exercises

-exercising

-exert

-exerted

-exerting

-exertion

-exertion's

-exertions

-exerts

-exhale

-exhaled

-exhales

-exhaling

-exhaust

-exhausted

-exhaustedly

-exhauster

-exhaustible

-exhausting

-exhaustingly

-exhaustion

-exhaustive

-exhaustively

-exhaustiveness

-exhausts

-exhibit

-exhibited

-exhibiting

-exhibition

-exhibition's

-exhibitioner

-exhibitions

-exhibitive

-exhibitor

-exhibitor's

-exhibitors

-exhibits

-exhortation

-exhortation's

-exhortations

-exigencies

-exigency

-exile

-exiled

-exiles

-exiling

-exist

-existed

-existence

-existences

-existent

-existential

-existentialism

-existentialist

-existentialist's

-existentialists

-existentially

-existing

-exists

-exit

-exited

-exiting

-exits

-exorbitant

-exorbitantly

-exoskeletons

-exotic

-exoticness

-expand

-expandable

-expanded

-expander

-expander's

-expanders

-expanding

-expands

-expanse

-expansed

-expanses

-expansing

-expansion

-expansionism

-expansions

-expansive

-expansively

-expansiveness

-expect

-expectancies

-expectancy

-expectant

-expectantly

-expectation

-expectation's

-expectations

-expected

-expectedly

-expectedness

-expecting

-expectingly

-expects

-expedient

-expediently

-expedite

-expedited

-expediter

-expedites

-expediting

-expedition

-expedition's

-expeditions

-expeditious

-expeditiously

-expeditiousness

-expel

-expelled

-expelling

-expels

-expend

-expendable

-expended

-expender

-expending

-expenditure

-expenditure's

-expenditures

-expends

-expense

-expensed

-expenses

-expensing

-expensive

-expensively

-expensiveness

-experience

-experienced

-experiences

-experiencing

-experiment

-experimental

-experimentally

-experimentation

-experimentation's

-experimentations

-experimented

-experimenter

-experimenters

-experimenting

-experiments

-expert

-expertise

-expertly

-expertness

-experts

-expiration

-expiration's

-expirations

-expire

-expired

-expires

-expiring

-explain

-explainable

-explained

-explainer

-explainers

-explaining

-explains

-explanation

-explanation's

-explanations

-explanatory

-explicit

-explicitly

-explicitness

-explode

-exploded

-exploder

-explodes

-exploding

-exploit

-exploitable

-exploitation

-exploitation's

-exploitations

-exploited

-exploiter

-exploiters

-exploiting

-exploitive

-exploits

-exploration

-exploration's

-explorations

-exploratory

-explore

-explored

-explorer

-explorers

-explores

-exploring

-explosion

-explosion's

-explosions

-explosive

-explosively

-explosiveness

-explosives

-exponent

-exponent's

-exponential

-exponentially

-exponentials

-exponentiate

-exponentiated

-exponentiates

-exponentiating

-exponentiation

-exponentiation's

-exponentiations

-exponents

-export

-exported

-exporter

-exporters

-exporting

-exports

-expose

-exposed

-exposer

-exposers

-exposes

-exposing

-exposition

-exposition's

-expositions

-expository

-exposure

-exposure's

-exposures

-expound

-expounded

-expounder

-expounding

-expounds

-express

-expressed

-expresser

-expresses

-expressibility

-expressible

-expressibly

-expressing

-expression

-expression's

-expressions

-expressive

-expressively

-expressiveness

-expressly

-expropriate

-expropriated

-expropriates

-expropriating

-expropriation

-expropriations

-expulsion

-expunge

-expunged

-expunger

-expunges

-expunging

-exquisite

-exquisitely

-exquisiteness

-extant

-extend

-extended

-extendedly

-extendedness

-extender

-extendible

-extendibles

-extending

-extends

-extensibility

-extensible

-extension

-extension's

-extensions

-extensive

-extensively

-extensiveness

-extent

-extent's

-extents

-extenuate

-extenuated

-extenuating

-extenuation

-exterior

-exterior's

-exteriorly

-exteriors

-exterminate

-exterminated

-exterminates

-exterminating

-extermination

-exterminations

-external

-externally

-externals

-extinct

-extinction

-extinctive

-extinguish

-extinguished

-extinguisher

-extinguishers

-extinguishes

-extinguishing

-extol

-extols

-extortion

-extortioner

-extortionist

-extortionist's

-extortionists

-extra

-extract

-extracted

-extracting

-extraction

-extraction's

-extractions

-extractive

-extractively

-extractor

-extractor's

-extractors

-extracts

-extracurricular

-extraneous

-extraneously

-extraneousness

-extraordinarily

-extraordinariness

-extraordinary

-extrapolate

-extrapolated

-extrapolates

-extrapolating

-extrapolation

-extrapolations

-extrapolative

-extras

-extravagance

-extravagant

-extravagantly

-extremal

-extreme

-extremed

-extremely

-extremeness

-extremer

-extremes

-extremest

-extremist

-extremist's

-extremists

-extremities

-extremity

-extremity's

-extrinsic

-exuberance

-exult

-exultation

-exulted

-exulting

-exultingly

-exults

-eye

-eyeball

-eyeballs

-eyebrow

-eyebrow's

-eyebrows

-eyed

-eyedness

-eyeglass

-eyeglasses

-eyeing

-eyelid

-eyelid's

-eyelids

-eyepiece

-eyepiece's

-eyepieces

-eyer

-eyers

-eyes

-eyesight

-eyewitness

-eyewitness's

-eyewitnesses

-eying

-fable

-fabled

-fabler

-fables

-fabling

-fabric

-fabric's

-fabricate

-fabricated

-fabricates

-fabricating

-fabrication

-fabrications

-fabrics

-fabulous

-fabulously

-fabulousness

-facade

-facaded

-facades

-facading

-face

-faced

-faceless

-facelessness

-facer

-faces

-facet

-faceted

-faceting

-facets

-facial

-facially

-facile

-facilely

-facileness

-facilitate

-facilitated

-facilitates

-facilitating

-facilitation

-facilitative

-facilities

-facility

-facility's

-facing

-facings

-facsimile

-facsimile's

-facsimiled

-facsimiles

-facsimiling

-fact

-fact's

-faction

-faction's

-factions

-factor

-factored

-factorial

-factories

-factoring

-factorings

-factors

-factory

-factory's

-facts

-factual

-factually

-factualness

-faculties

-faculty

-faculty's

-fade

-faded

-fadedly

-fader

-faders

-fades

-fading

-fag

-fags

-fail

-failed

-failing

-failingly

-failings

-fails

-failure

-failure's

-failures

-fain

-faint

-fainted

-fainter

-faintest

-fainting

-faintly

-faintness

-faints

-fair

-faired

-fairer

-fairest

-fairies

-fairing

-fairly

-fairness

-fairs

-fairy

-fairy's

-fairyland

-faith

-faithful

-faithfully

-faithfulness

-faithfuls

-faithless

-faithlessly

-faithlessness

-faiths

-fake

-faked

-faker

-fakes

-faking

-falcon

-falconer

-falcons

-fall

-fallacies

-fallacious

-fallaciously

-fallaciousness

-fallacy

-fallacy's

-fallen

-faller

-fallibility

-fallible

-falling

-falls

-false

-falsehood

-falsehood's

-falsehoods

-falsely

-falseness

-falser

-falsest

-falsification

-falsified

-falsifier

-falsifies

-falsify

-falsifying

-falsity

-falter

-faltered

-falterer

-faltering

-falteringly

-falters

-fame

-famed

-fames

-familiar

-familiarities

-familiarity

-familiarly

-familiarness

-familiars

-families

-family

-family's

-famine

-famine's

-famines

-faming

-famish

-famished

-famishes

-famishing

-famous

-famously

-famousness

-fan

-fan's

-fanatic

-fanatic's

-fanatically

-fanatics

-fancied

-fancier

-fancier's

-fanciers

-fancies

-fanciest

-fanciful

-fancifully

-fancifulness

-fancily

-fanciness

-fancy

-fancying

-fang

-fang's

-fanged

-fangs

-fanned

-fanning

-fans

-fantasied

-fantasies

-fantastic

-fantasy

-fantasy's

-far

-faraway

-farce

-farce's

-farces

-farcing

-fare

-fared

-farer

-fares

-farewell

-farewells

-faring

-farm

-farmed

-farmer

-farmer's

-farmers

-farmhouse

-farmhouse's

-farmhouses

-farming

-farms

-farmyard

-farmyard's

-farmyards

-farther

-farthest

-farthing

-fascinate

-fascinated

-fascinates

-fascinating

-fascinatingly

-fascination

-fascinations

-fashion

-fashionable

-fashionableness

-fashionably

-fashioned

-fashioner

-fashioners

-fashioning

-fashions

-fast

-fasted

-fasten

-fastened

-fastener

-fasteners

-fastening

-fastenings

-fastens

-faster

-fastest

-fasting

-fastness

-fasts

-fat

-fatal

-fatalities

-fatality

-fatality's

-fatally

-fatals

-fate

-fated

-fates

-father

-father's

-fathered

-fathering

-fatherland

-fatherliness

-fatherly

-fathers

-fathom

-fathomed

-fathoming

-fathoms

-fatigue

-fatigued

-fatigues

-fatiguing

-fatiguingly

-fating

-fatly

-fatness

-fats

-fatten

-fattened

-fattener

-fatteners

-fattening

-fattens

-fatter

-fattest

-fault

-faulted

-faultier

-faultiness

-faulting

-faultless

-faultlessly

-faultlessness

-faults

-faulty

-fawn

-fawned

-fawner

-fawning

-fawningly

-fawns

-fear

-feared

-fearer

-fearful

-fearfully

-fearfulness

-fearing

-fearless

-fearlessly

-fearlessness

-fears

-feasibility

-feasible

-feasibleness

-feast

-feasted

-feaster

-feasting

-feasts

-feat

-feat's

-feather

-feathered

-featherer

-featherers

-feathering

-feathers

-feating

-featly

-feats

-feature

-featured

-featureless

-features

-featuring

-fed

-federal

-federally

-federals

-federation

-feds

-fee

-feeble

-feebleness

-feebler

-feeblest

-feebly

-feed

-feedback

-feedbacks

-feeder

-feeders

-feeding

-feedings

-feeds

-feel

-feeler

-feelers

-feeling

-feelingly

-feelingness

-feelings

-feels

-fees

-feet

-feign

-feigned

-feigner

-feigning

-feigns

-felicities

-felicity

-fell

-felled

-feller

-fellers

-felling

-fellness

-fellow

-fellow's

-fellowly

-fellows

-fellowship

-fellowship's

-fellowships

-fells

-felt

-felted

-felting

-felts

-female

-female's

-femaleness

-females

-feminine

-femininely

-feminineness

-femininity

-feminist

-feminist's

-feminists

-femur

-femur's

-femurs

-fen

-fence

-fenced

-fencer

-fencers

-fences

-fencing

-ferment

-fermentation

-fermentation's

-fermentations

-fermented

-fermenter

-fermenting

-ferments

-fern

-fern's

-ferns

-ferocious

-ferociously

-ferociousness

-ferocity

-ferried

-ferries

-ferrite

-ferry

-ferrying

-fertile

-fertilely

-fertileness

-fertilities

-fertility

-fervent

-fervently

-festival

-festival's

-festivals

-festive

-festively

-festiveness

-festivities

-festivity

-fetch

-fetched

-fetcher

-fetches

-fetching

-fetchingly

-fetter

-fettered

-fettering

-fetters

-feud

-feud's

-feudal

-feudalism

-feudally

-feuds

-fever

-fevered

-fevering

-feverish

-feverishly

-feverishness

-fevers

-few

-fewer

-fewest

-fewness

-fews

-fibrous

-fibrously

-fibrousness

-fickle

-fickleness

-fiction

-fiction's

-fictional

-fictionally

-fictions

-fictitious

-fictitiously

-fictitiousness

-fiddle

-fiddled

-fiddler

-fiddles

-fiddling

-fidelity

-field

-fielded

-fielder

-fielders

-fielding

-fields

-fiend

-fiends

-fierce

-fiercely

-fierceness

-fiercer

-fiercest

-fieriness

-fiery

-fife

-fifteen

-fifteens

-fifteenth

-fifth

-fifthly

-fifties

-fiftieth

-fifty

-fig

-fig's

-fight

-fighter

-fighters

-fighting

-fights

-figs

-figurative

-figuratively

-figurativeness

-figure

-figured

-figurer

-figurers

-figures

-figuring

-figurings

-filament

-filament's

-filaments

-file

-file's

-filed

-filename

-filename's

-filenames

-filer

-filers

-files

-filial

-filially

-filing

-filings

-fill

-fillable

-filled

-filler

-fillers

-filling

-fillings

-fills

-film

-filmed

-filming

-films

-filter

-filter's

-filtered

-filterer

-filtering

-filters

-filth

-filthier

-filthiest

-filthiness

-filthy

-filtration

-filtration's

-fin

-fin's

-final

-finality

-finally

-finals

-finance

-financed

-finances

-financial

-financially

-financier

-financier's

-financiers

-financing

-find

-finder

-finders

-finding

-findings

-finds

-fine

-fined

-finely

-fineness

-finer

-fines

-finest

-finger

-fingered

-fingerer

-fingering

-fingerings

-fingers

-fining

-finish

-finished

-finisher

-finishers

-finishes

-finishing

-finishings

-finite

-finitely

-finiteness

-finites

-fins

-fir

-fire

-firearm

-firearm's

-firearms

-fired

-fireflies

-firefly

-firefly's

-firelight

-firelighting

-fireman

-fireplace

-fireplace's

-fireplaces

-firer

-firers

-fires

-fireside

-firewood

-fireworks

-firing

-firings

-firm

-firm's

-firmament

-firmed

-firmer

-firmest

-firming

-firmly

-firmness

-firms

-firmware

-firmwares

-first

-firsthand

-firstly

-firsts

-firth

-fiscal

-fiscally

-fiscals

-fish

-fished

-fisher

-fisheries

-fisherman

-fisherman's

-fishermen

-fishermen's

-fishers

-fishery

-fishes

-fishing

-fissure

-fissured

-fissures

-fissuring

-fist

-fisted

-fists

-fit

-fitful

-fitfully

-fitfulness

-fitly

-fitness

-fits

-fitted

-fitter

-fitter's

-fitters

-fitting

-fittingly

-fittingness

-fittings

-five

-fiver

-fives

-fix

-fixate

-fixated

-fixates

-fixating

-fixation

-fixations

-fixative

-fixed

-fixedly

-fixedness

-fixer

-fixers

-fixes

-fixing

-fixings

-fixture

-fixture's

-fixtures

-flab

-flabbier

-flabbiness

-flabby

-flag

-flag's

-flagged

-flagging

-flaggingly

-flagrant

-flagrantly

-flags

-flagship

-flagship's

-flagships

-flake

-flaked

-flaker

-flakes

-flaking

-flame

-flamed

-flamer

-flamers

-flames

-flaming

-flamingly

-flammable

-flammables

-flank

-flanked

-flanker

-flankers

-flanking

-flanks

-flannel

-flannel's

-flannels

-flap

-flap's

-flapping

-flaps

-flare

-flared

-flares

-flaring

-flaringly

-flash

-flashed

-flasher

-flashers

-flashes

-flashing

-flashlight

-flashlight's

-flashlights

-flask

-flat

-flatly

-flatness

-flatnesses

-flats

-flatten

-flattened

-flattener

-flattening

-flattens

-flatter

-flattered

-flatterer

-flattering

-flatteringly

-flatters

-flattery

-flattest

-flaunt

-flaunted

-flaunting

-flauntingly

-flaunts

-flaw

-flawed

-flawing

-flawless

-flawlessly

-flawlessness

-flaws

-flax

-flaxen

-flea

-flea's

-fleas

-fled

-fledged

-fledgling

-fledgling's

-fledglings

-flee

-fleece

-fleece's

-fleeced

-fleeces

-fleecier

-fleecy

-fleeing

-fleer

-flees

-fleet

-fleetest

-fleeting

-fleetingly

-fleetingness

-fleetly

-fleetness

-fleets

-flesh

-fleshed

-flesher

-fleshes

-fleshier

-fleshiness

-fleshing

-fleshings

-fleshly

-fleshy

-flew

-flews

-flexibilities

-flexibility

-flexible

-flexibly

-flick

-flicked

-flicker

-flickered

-flickering

-flickeringly

-flicking

-flicks

-flier

-fliers

-flies

-flight

-flight's

-flights

-flinch

-flinched

-flincher

-flinches

-flinching

-fling

-fling's

-flinger

-flinging

-flings

-flint

-flints

-flip

-flips

-flirt

-flirted

-flirter

-flirting

-flirts

-flit

-flits

-float

-floated

-floater

-floaters

-floating

-floats

-flock

-flocked

-flocking

-flocks

-flood

-flooded

-flooder

-flooding

-floods

-floor

-floored

-floorer

-flooring

-floorings

-floors

-flop

-flop's

-floppier

-floppies

-floppily

-floppiness

-floppy

-floppy's

-flops

-flora

-florin

-floss

-flossed

-flosses

-flossing

-flounder

-floundered

-floundering

-flounders

-flour

-floured

-flourish

-flourished

-flourisher

-flourishes

-flourishing

-flourishingly

-flours

-flow

-flowchart

-flowcharting

-flowcharts

-flowed

-flower

-flowered

-flowerer

-floweriness

-flowering

-flowers

-flowery

-flowing

-flowingly

-flown

-flows

-fluctuate

-fluctuated

-fluctuates

-fluctuating

-fluctuation

-fluctuations

-fluent

-fluently

-fluffier

-fluffiest

-fluffiness

-fluffy

-fluid

-fluidity

-fluidly

-fluidness

-fluids

-flung

-flunk

-flunked

-flunker

-flunking

-flunks

-fluorescence

-flurried

-flurries

-flurry

-flurrying

-flush

-flushed

-flushes

-flushing

-flushness

-flute

-flute's

-fluted

-fluter

-flutes

-fluting

-flutter

-fluttered

-flutterer

-fluttering

-flutters

-fly

-flyable

-flyer

-flyer's

-flyers

-flying

-foam

-foamed

-foamer

-foaming

-foams

-focal

-focally

-foci

-focus

-focusable

-focused

-focuser

-focuses

-focusing

-fodder

-foe

-foe's

-foes

-fog

-fog's

-fogged

-foggier

-foggiest

-foggily

-fogginess

-fogging

-foggy

-fogs

-foil

-foiled

-foiling

-foils

-fold

-folded

-folder

-folders

-folding

-foldings

-folds

-foliage

-foliaged

-foliages

-folk

-folk's

-folklore

-folks

-follies

-follow

-followed

-follower

-followers

-following

-followings

-follows

-folly

-fond

-fonder

-fondest

-fondle

-fondled

-fondler

-fondles

-fondling

-fondly

-fondness

-fonds

-font

-font's

-fonts

-food

-food's

-foods

-foodstuff

-foodstuff's

-foodstuffs

-fool

-fooled

-fooling

-foolish

-foolishly

-foolishness

-foolproof

-fools

-foot

-football

-football's

-footballed

-footballer

-footballers

-footballs

-footed

-footer

-footers

-foothold

-footholds

-footing

-footings

-footman

-footnote

-footnote's

-footnotes

-footprint

-footprint's

-footprints

-foots

-footstep

-footsteps

-for

-forage

-foraged

-forager

-forages

-foraging

-foray

-foray's

-forayer

-forays

-forbade

-forbear

-forbear's

-forbearance

-forbearer

-forbearing

-forbears

-forbid

-forbidden

-forbidding

-forbiddingly

-forbiddingness

-forbids

-force

-force's

-forced

-forcedly

-forcefield

-forcefield's

-forcefields

-forceful

-forcefully

-forcefulness

-forcer

-forces

-forcible

-forcibleness

-forcibly

-forcing

-ford

-fords

-fore

-forearm

-forearm's

-forearmed

-forearms

-foreboding

-forebodingly

-forebodingness

-forebodings

-forecast

-forecasted

-forecaster

-forecasters

-forecasting

-forecastle

-forecastles

-forecasts

-forefather

-forefather's

-forefathers

-forefinger

-forefinger's

-forefingers

-forego

-foregoer

-foregoes

-foregoing

-foregone

-foreground

-foregrounds

-forehead

-forehead's

-foreheads

-foreign

-foreigner

-foreigners

-foreignly

-foreignness

-foreigns

-foreman

-foremost

-forenoon

-foresee

-foreseeable

-foreseen

-foreseer

-foresees

-foresight

-foresighted

-foresightedly

-foresightedness

-forest

-forestall

-forestalled

-forestaller

-forestalling

-forestallment

-forestalls

-forested

-forester

-foresters

-forests

-foretell

-foreteller

-foretelling

-foretells

-forethought

-forethought's

-foretold

-forever

-foreverness

-forewarn

-forewarned

-forewarner

-forewarning

-forewarnings

-forewarns

-forfeit

-forfeited

-forfeiter

-forfeiters

-forfeiting

-forfeits

-forgave

-forge

-forged

-forger

-forgeries

-forgers

-forgery

-forgery's

-forges

-forget

-forgetful

-forgetfully

-forgetfulness

-forgetive

-forgets

-forgettable

-forgettably

-forgetting

-forging

-forgivable

-forgivably

-forgive

-forgiven

-forgiveness

-forgiver

-forgives

-forgiving

-forgivingly

-forgivingness

-forgot

-forgotten

-fork

-forked

-forker

-forking

-forks

-forlorn

-forlornly

-forlornness

-form

-formal

-formalism

-formalism's

-formalisms

-formalities

-formality

-formally

-formalness

-formals

-formant

-formants

-format

-formated

-formating

-formation

-formation's

-formations

-formative

-formatively

-formativeness

-formats

-formatted

-formatter

-formatter's

-formatters

-formatting

-formed

-former

-formerly

-formers

-formidable

-formidableness

-forming

-forms

-formula

-formula's

-formulae

-formulas

-formulate

-formulated

-formulates

-formulating

-formulation

-formulations

-formulator

-formulator's

-formulators

-fornication

-forsake

-forsaken

-forsakes

-forsaking

-fort

-fort's

-forte

-fortes

-forth

-forthcoming

-forthwith

-fortier

-forties

-fortieth

-fortification

-fortifications

-fortified

-fortifier

-fortifies

-fortify

-fortifying

-fortitude

-fortnight

-fortnightly

-fortress

-fortress's

-fortresses

-forts

-fortuitous

-fortuitously

-fortuitousness

-fortunate

-fortunately

-fortunateness

-fortunates

-fortune

-fortune's

-fortuned

-fortunes

-fortuning

-forty

-forum

-forum's

-forums

-forward

-forwarded

-forwarder

-forwarders

-forwarding

-forwardly

-forwardness

-forwards

-fossil

-fossils

-foster

-fostered

-fosterer

-fostering

-fosters

-fought

-foul

-fouled

-fouler

-foulest

-fouling

-foully

-foulness

-fouls

-found

-foundation

-foundation's

-foundations

-founded

-founder

-foundered

-foundering

-founders

-founding

-foundries

-foundry

-foundry's

-founds

-fount

-fount's

-fountain

-fountain's

-fountains

-founts

-four

-fours

-fourscore

-fourteen

-fourteener

-fourteens

-fourteenth

-fourth

-fourthly

-fowl

-fowler

-fowling

-fowls

-fox

-fox's

-foxed

-foxes

-foxing

-fractal

-fractal's

-fractals

-fraction

-fraction's

-fractional

-fractionally

-fractioned

-fractioning

-fractions

-fracture

-fractured

-fractures

-fracturing

-fragile

-fragilely

-fragment

-fragmentariness

-fragmentary

-fragmented

-fragmenting

-fragments

-fragrance

-fragrance's

-fragrances

-fragrant

-fragrantly

-frail

-frailer

-frailest

-frailly

-frailness

-frailties

-frailty

-frame

-frame's

-framed

-framer

-framers

-frames

-framework

-framework's

-frameworks

-framing

-framings

-franc

-franchise

-franchise's

-franchised

-franchiser

-franchises

-franchising

-francs

-frank

-franked

-franker

-frankest

-franking

-frankly

-frankness

-franks

-frantic

-frantically

-franticly

-franticness

-fraternal

-fraternally

-fraternities

-fraternity

-fraternity's

-fraud

-fraud's

-frauds

-fraudulently

-fraught

-fraughted

-fraughting

-fraughts

-fray

-frayed

-fraying

-frays

-freak

-freak's

-freaks

-freckle

-freckled

-freckles

-freckling

-free

-freed

-freedom

-freedom's

-freedoms

-freeing

-freeings

-freely

-freeman

-freeness

-freer

-frees

-freest

-freeway

-freeway's

-freeways

-freeze

-freezer

-freezers

-freezes

-freezing

-freight

-freighted

-freighter

-freighters

-freighting

-freights

-frenzied

-frenziedly

-frenzies

-frenzy

-frenzying

-frequencies

-frequency

-frequent

-frequented

-frequenter

-frequenters

-frequenting

-frequently

-frequentness

-frequents

-fresh

-freshen

-freshened

-freshener

-fresheners

-freshening

-freshens

-fresher

-freshers

-freshest

-freshly

-freshman

-freshmen

-freshness

-fret

-fretful

-fretfully

-fretfulness

-frets

-friar

-friar's

-friarly

-friars

-frication

-fricative

-fricatives

-friction

-friction's

-frictionless

-frictionlessly

-frictions

-fried

-friend

-friend's

-friendless

-friendlessness

-friendlier

-friendlies

-friendliest

-friendliness

-friendly

-friends

-friendship

-friendship's

-friendships

-frier

-fries

-frieze

-frieze's

-friezes

-frigate

-frigate's

-frigates

-fright

-frighten

-frightened

-frightening

-frighteningly

-frightens

-frightful

-frightfully

-frightfulness

-frill

-frill's

-frilled

-frills

-fringe

-fringed

-fringes

-fringing

-frisk

-frisked

-frisker

-frisking

-frisks

-frivolous

-frivolously

-frivolousness

-frock

-frock's

-frocked

-frocking

-frocks

-frog

-frog's

-frogs

-frolic

-frolics

-from

-front

-fronted

-frontier

-frontier's

-frontiers

-fronting

-fronts

-frost

-frosted

-frostier

-frostiness

-frosting

-frosts

-frosty

-froth

-frothing

-frown

-frowned

-frowner

-frowning

-frowningly

-frowns

-froze

-frozen

-frozenly

-frozenness

-frugal

-frugally

-fruit

-fruit's

-fruited

-fruiter

-fruiterer

-fruitful

-fruitfully

-fruitfulness

-fruition

-fruitless

-fruitlessly

-fruitlessness

-fruits

-frustrate

-frustrated

-frustrater

-frustrates

-frustrating

-frustratingly

-frustration

-frustrations

-fry

-frying

-fuel

-fuels

-fugitive

-fugitive's

-fugitively

-fugitiveness

-fugitives

-fulfilled

-fulfiller

-fulfilling

-full

-fuller

-fullest

-fullness

-fullword

-fullword's

-fullwords

-fully

-fumble

-fumbled

-fumbler

-fumbles

-fumbling

-fumblingly

-fume

-fumed

-fumes

-fuming

-fun

-function

-function's

-functional

-functionalities

-functionality

-functionally

-functionals

-functioned

-functioning

-functions

-functor

-functor's

-functors

-fund

-fundamental

-fundamentalist

-fundamentalist's

-fundamentalists

-fundamentally

-fundamentals

-funded

-funder

-funders

-funding

-funds

-funeral

-funeral's

-funerals

-fungus

-funguses

-funnel

-funnels

-funnier

-funnies

-funniest

-funnily

-funniness

-funny

-fur

-fur's

-furies

-furious

-furiouser

-furiously

-furiousness

-furnace

-furnace's

-furnaced

-furnaces

-furnacing

-furness

-furnish

-furnished

-furnisher

-furnishers

-furnishes

-furnishing

-furnishings

-furniture

-furrow

-furrowed

-furrowing

-furrows

-furs

-further

-furthered

-furtherer

-furtherest

-furthering

-furthermore

-furthers

-furtive

-furtively

-furtiveness

-fury

-fury's

-fuse

-fused

-fuses

-fusing

-fusion

-fusions

-fuss

-fusser

-fussing

-futile

-futilely

-futileness

-futility

-future

-future's

-futures

-fuzzier

-fuzziest

-fuzziness

-fuzzy

-gabardine

-gabardines

-gable

-gabled

-gabler

-gables

-gad

-gadget

-gadget's

-gadgets

-gag

-gaged

-gager

-gagged

-gagging

-gaging

-gags

-gaieties

-gaiety

-gaily

-gain

-gained

-gainer

-gainers

-gaining

-gainings

-gainly

-gains

-gait

-gaited

-gaiter

-gaiters

-gaits

-galaxies

-galaxy

-galaxy's

-gale

-gales

-gall

-gallant

-gallantly

-gallantry

-gallants

-galled

-galleried

-galleries

-gallery

-galley

-galley's

-galleys

-galling

-gallingly

-gallon

-gallon's

-gallons

-gallop

-galloped

-galloper

-gallopers

-galloping

-gallops

-gallows

-gallowses

-galls

-gamble

-gambled

-gambler

-gamblers

-gambles

-gambling

-game

-gamed

-gamely

-gameness

-games

-gaming

-gamma

-gammas

-gang

-gang's

-ganger

-ganglier

-gangly

-gangrene

-gangrened

-gangrenes

-gangrening

-gangs

-gangster

-gangster's

-gangsters

-gap

-gap's

-gape

-gaped

-gaper

-gapes

-gaping

-gapingly

-gaps

-garage

-garaged

-garages

-garaging

-garb

-garbage

-garbage's

-garbaged

-garbages

-garbaging

-garbed

-garble

-garbled

-garbler

-garbles

-garbling

-garden

-gardened

-gardener

-gardeners

-gardening

-gardens

-gargle

-gargled

-gargles

-gargling

-garland

-garlanded

-garlands

-garlic

-garlics

-garment

-garment's

-garmented

-garmenting

-garments

-garner

-garnered

-garnering

-garners

-garnish

-garnished

-garnishes

-garrison

-garrisoned

-garrisoning

-garrisons

-garter

-garter's

-gartered

-gartering

-garters

-gas

-gas's

-gaseous

-gaseously

-gaseousness

-gases

-gash

-gash's

-gashed

-gashes

-gashing

-gasoline

-gasolines

-gasp

-gasped

-gasper

-gaspers

-gasping

-gaspingly

-gasps

-gassed

-gasser

-gassers

-gassing

-gassings

-gastric

-gastrointestinal

-gate

-gated

-gates

-gateway

-gateway's

-gateways

-gather

-gathered

-gatherer

-gatherers

-gathering

-gatherings

-gathers

-gating

-gaudier

-gaudies

-gaudiness

-gaudy

-gauge

-gauged

-gauger

-gauges

-gauging

-gaunt

-gauntly

-gauntness

-gauze

-gauzed

-gauzes

-gauzing

-gave

-gay

-gayer

-gayest

-gayly

-gayness

-gaze

-gazed

-gazer

-gazers

-gazes

-gazing

-gear

-geared

-gearing

-gears

-geese

-gel

-gel's

-gelatin

-gelled

-gelling

-gels

-gem

-gem's

-gems

-gender

-gender's

-gendered

-gendering

-genders

-gene

-gene's

-general

-general's

-generalist

-generalist's

-generalists

-generalities

-generality

-generally

-generalness

-generals

-generate

-generated

-generates

-generating

-generation

-generations

-generative

-generatively

-generator

-generator's

-generators

-generic

-generically

-genericness

-generosities

-generosity

-generosity's

-generous

-generously

-generousness

-genes

-genetic

-genetically

-genetics

-genial

-genially

-genialness

-genius

-genius's

-geniuses

-genre

-genre's

-genres

-genteel

-genteeler

-genteelest

-genteelly

-genteelness

-gentle

-gentled

-gentleman

-gentlemanliness

-gentlemanly

-gentleness

-gentler

-gentlest

-gentlewoman

-gentling

-gently

-gentries

-gentry

-genuine

-genuinely

-genuineness

-genus

-geographic

-geographical

-geographically

-geographies

-geography

-geological

-geologist

-geologist's

-geologists

-geometric

-geometries

-geometry

-geranium

-germ

-germ's

-germane

-germen

-germinate

-germinated

-germinates

-germinating

-germination

-germinations

-germinative

-germinatively

-germs

-gestalt

-gesture

-gestured

-gestures

-gesturing

-get

-gets

-getter

-getter's

-gettered

-getters

-getting

-ghastlier

-ghastliness

-ghastly

-ghost

-ghosted

-ghosting

-ghostlier

-ghostliness

-ghostlinesses

-ghostly

-ghosts

-giant

-giant's

-giants

-gibberish

-giddied

-giddier

-giddiness

-giddy

-giddying

-gift

-gifted

-giftedly

-giftedness

-gifts

-gig

-gig's

-gigantic

-giganticness

-giggle

-giggled

-giggler

-giggles

-giggling

-gigglingly

-gigs

-gild

-gilded

-gilder

-gilding

-gilds

-gill

-gill's

-gilled

-giller

-gills

-gilt

-gimmick

-gimmick's

-gimmicks

-gin

-gin's

-ginger

-gingerbread

-gingered

-gingering

-gingerliness

-gingerly

-gingham

-ginghams

-gins

-giraffe

-giraffe's

-giraffes

-gird

-girded

-girder

-girder's

-girders

-girding

-girdle

-girdled

-girdler

-girdles

-girdling

-girds

-girl

-girl's

-girlfriend

-girlfriend's

-girlfriends

-girls

-girt

-girth

-give

-given

-givenness

-givens

-giver

-givers

-gives

-giveth

-giving

-givingly

-gizmo

-gizmo's

-gizmos

-glacial

-glacially

-glacier

-glacier's

-glaciers

-glad

-gladder

-gladdest

-glade

-glades

-gladly

-gladness

-glamour

-glamoured

-glamouring

-glamours

-glance

-glanced

-glances

-glancing

-glancingly

-gland

-gland's

-glanders

-glands

-glare

-glared

-glares

-glaring

-glaringly

-glaringness

-glass

-glassed

-glasses

-glassier

-glassies

-glassiness

-glassy

-glaze

-glazed

-glazer

-glazers

-glazes

-glazing

-gleam

-gleamed

-gleaming

-gleams

-glean

-gleaned

-gleaner

-gleaning

-gleanings

-gleans

-glee

-gleed

-gleeful

-gleefully

-gleefulness

-glees

-glen

-glen's

-glens

-glide

-glided

-glider

-gliders

-glides

-gliding

-glimmer

-glimmered

-glimmering

-glimmers

-glimpse

-glimpsed

-glimpser

-glimpsers

-glimpses

-glimpsing

-glint

-glinted

-glinting

-glints

-glisten

-glistened

-glistening

-glistens

-glitch

-glitch's

-glitches

-glitter

-glittered

-glittering

-glitteringly

-glitters

-global

-globally

-globals

-globe

-globe's

-globes

-globing

-globular

-globularity

-globularly

-globularness

-gloom

-gloomier

-gloomily

-gloominess

-glooms

-gloomy

-gloried

-glories

-glorification

-glorifications

-glorified

-glorifier

-glorifiers

-glorifies

-glorify

-glorious

-gloriously

-gloriousness

-glory

-glorying

-gloss

-glossaries

-glossary

-glossary's

-glossed

-glosses

-glossier

-glossies

-glossiness

-glossing

-glossy

-glottal

-glove

-gloved

-glover

-glovers

-gloves

-gloving

-glow

-glowed

-glower

-glowered

-glowering

-glowers

-glowing

-glowingly

-glows

-glucose

-glue

-glued

-gluer

-gluers

-glues

-gluing

-gnat

-gnat's

-gnats

-gnaw

-gnawed

-gnawer

-gnawing

-gnaws

-go

-goad

-goaded

-goading

-goads

-goal

-goal's

-goals

-goat

-goat's

-goatee

-goatee's

-goatees

-goats

-gobble

-gobbled

-gobbler

-gobblers

-gobbles

-gobbling

-goblet

-goblet's

-goblets

-goblin

-goblin's

-goblins

-god

-god's

-goddess

-goddess's

-goddesses

-godlier

-godlike

-godlikeness

-godliness

-godly

-godmother

-godmother's

-godmothers

-gods

-goer

-goering

-goes

-going

-goings

-gold

-golden

-goldenly

-goldenness

-golding

-golds

-goldsmith

-golf

-golfer

-golfers

-golfing

-golfs

-gone

-goner

-gong

-gong's

-gongs

-gonion

-good

-goodbye

-goodbye's

-goodbyes

-goodie

-goodie's

-goodies

-goodly

-goodness

-goods

-goody

-goody's

-goose

-gooses

-goosing

-gore

-gored

-gores

-gorge

-gorgeous

-gorgeously

-gorgeousness

-gorger

-gorges

-gorging

-gorilla

-gorilla's

-gorillas

-goring

-gosh

-gospel

-gospels

-gossip

-gossiper

-gossipers

-gossips

-got

-gotcha

-gotcha's

-gotchas

-goth

-goto

-gotten

-gouge

-gouged

-gouger

-gouges

-gouging

-govern

-governed

-governess

-governesses

-governing

-government

-government's

-governmental

-governmentally

-governments

-governor

-governor's

-governors

-governs

-gown

-gowned

-gowns

-grab

-grabbed

-grabber

-grabber's

-grabbers

-grabbing

-grabbings

-grabs

-grace

-graced

-graceful

-gracefully

-gracefulness

-graces

-gracing

-gracious

-graciously

-graciousness

-gradation

-gradation's

-gradations

-grade

-graded

-gradely

-grader

-graders

-grades

-gradient

-gradient's

-gradients

-grading

-gradings

-gradual

-gradually

-gradualness

-graduate

-graduated

-graduates

-graduating

-graduation

-graduations

-graft

-grafted

-grafter

-grafting

-grafts

-graham

-graham's

-grahams

-grain

-grained

-grainer

-graining

-grains

-grammar

-grammar's

-grammars

-grammatical

-grammatically

-grammaticalness

-granaries

-granary

-granary's

-grand

-grander

-grandest

-grandeur

-grandfather

-grandfather's

-grandfatherly

-grandfathers

-grandiose

-grandiosely

-grandioseness

-grandkid

-grandkid's

-grandkids

-grandly

-grandma

-grandma's

-grandmother

-grandmother's

-grandmotherly

-grandmothers

-grandness

-grandpa

-grandpa's

-grandparent

-grandparents

-grandpas

-grands

-grandson

-grandson's

-grandsons

-grange

-granger

-granges

-granite

-grannies

-granny

-grant

-grant's

-granted

-granter

-granting

-grants

-granularity

-granulate

-granulated

-granulates

-granulating

-granulation

-granulations

-granulative

-grape

-grape's

-grapes

-grapevine

-grapevine's

-grapevines

-graph

-graph's

-graphed

-graphic

-graphical

-graphically

-graphicness

-graphics

-graphing

-graphite

-graphs

-grapple

-grappled

-grappler

-grapples

-grappling

-grasp

-graspable

-grasped

-grasper

-grasping

-graspingly

-graspingness

-grasps

-grass

-grassed

-grassers

-grasses

-grassier

-grassiest

-grassing

-grassy

-grate

-grated

-grateful

-gratefully

-gratefulness

-grater

-grates

-gratification

-gratifications

-gratified

-gratify

-gratifying

-gratifyingly

-grating

-gratingly

-gratings

-gratitude

-gratuities

-gratuitous

-gratuitously

-gratuitousness

-gratuity

-gratuity's

-grave

-gravel

-gravelly

-gravels

-gravely

-graveness

-graver

-gravers

-graves

-gravest

-gravies

-graving

-gravitation

-gravitational

-gravitationally

-gravities

-gravity

-gravy

-gray

-grayed

-grayer

-grayest

-graying

-grayly

-grayness

-grays

-graze

-grazed

-grazer

-grazes

-grazing

-grease

-greased

-greaser

-greasers

-greases

-greasier

-greasiness

-greasing

-greasy

-great

-greaten

-greatened

-greatening

-greater

-greatest

-greatly

-greatness

-greats

-greed

-greedier

-greedily

-greediness

-greedy

-green

-greened

-greener

-greenest

-greenhouse

-greenhouse's

-greenhouses

-greening

-greenish

-greenishness

-greenly

-greenness

-greens

-greet

-greeted

-greeter

-greeting

-greetings

-greets

-grenade

-grenade's

-grenades

-grew

-grey

-greyest

-greying

-grid

-grid's

-grids

-grief

-grief's

-griefs

-grievance

-grievance's

-grievances

-grieve

-grieved

-griever

-grievers

-grieves

-grieving

-grievingly

-grievous

-grievously

-grievousness

-grill

-grilled

-griller

-grilling

-grills

-grim

-grimed

-griming

-grimly

-grimness

-grin

-grind

-grinder

-grinders

-grinding

-grindingly

-grindings

-grinds

-grindstone

-grindstone's

-grindstones

-grins

-grip

-gripe

-griped

-griper

-gripes

-griping

-gripped

-gripper

-gripper's

-grippers

-gripping

-grippingly

-grips

-grit

-grit's

-grits

-grizzlier

-grizzly

-groan

-groaned

-groaner

-groaners

-groaning

-groans

-grocer

-grocer's

-groceries

-grocers

-grocery

-groom

-groom's

-groomed

-groomer

-grooming

-grooms

-groove

-grooved

-groover

-grooves

-grooving

-grope

-groped

-groper

-gropes

-groping

-gross

-grossed

-grosser

-grosses

-grossest

-grossing

-grossly

-grossness

-grotesque

-grotesquely

-grotesqueness

-grotto

-grotto's

-grottos

-ground

-grounded

-grounder

-grounders

-grounding

-grounds

-groundwork

-group

-group's

-grouped

-grouper

-grouping

-groupings

-groups

-grouse

-groused

-grouser

-grouses

-grousing

-grove

-grovel

-grovels

-grover

-grovers

-groves

-grow

-grower

-growers

-growing

-growingly

-growl

-growled

-growler

-growlier

-growliness

-growling

-growlingly

-growls

-growly

-grown

-grownup

-grownup's

-grownups

-grows

-growth

-growths

-grub

-grub's

-grubs

-grudge

-grudge's

-grudged

-grudger

-grudges

-grudging

-grudgingly

-gruesome

-gruesomely

-gruesomeness

-gruff

-gruffly

-gruffness

-grumble

-grumbled

-grumbler

-grumbles

-grumbling

-grumblingly

-grunt

-grunted

-grunter

-grunting

-grunts

-guarantee

-guaranteed

-guaranteeing

-guaranteer

-guaranteers

-guarantees

-guaranty

-guard

-guarded

-guardedly

-guardedness

-guarder

-guardian

-guardian's

-guardians

-guardianship

-guarding

-guards

-guerrilla

-guerrilla's

-guerrillas

-guess

-guessed

-guesser

-guesses

-guessing

-guest

-guest's

-guested

-guesting

-guests

-guidance

-guidances

-guide

-guidebook

-guidebook's

-guidebooks

-guided

-guideline

-guideline's

-guidelines

-guider

-guides

-guiding

-guild

-guilder

-guile

-guilt

-guiltier

-guiltiest

-guiltily

-guiltiness

-guiltless

-guiltlessly

-guiltlessness

-guilts

-guilty

-guinea

-guineas

-guise

-guise's

-guised

-guises

-guising

-guitar

-guitar's

-guitars

-gulch

-gulch's

-gulches

-gulf

-gulf's

-gulfs

-gull

-gulled

-gullibility

-gullied

-gullies

-gulling

-gulls

-gully

-gully's

-gullying

-gulp

-gulped

-gulper

-gulps

-gum

-gum's

-gums

-gun

-gun's

-gunfire

-gunfires

-gunned

-gunner

-gunner's

-gunners

-gunning

-gunpowder

-gunpowders

-guns

-gurgle

-gurgled

-gurgles

-gurgling

-guru

-guru's

-gurus

-gush

-gushed

-gusher

-gushes

-gushing

-gust

-gust's

-gusts

-gut

-guts

-gutser

-gutter

-guttered

-guttering

-gutters

-guy

-guy's

-guyed

-guyer

-guyers

-guying

-guys

-gym

-gymnasium

-gymnasium's

-gymnasiums

-gymnast

-gymnast's

-gymnastic

-gymnastics

-gymnasts

-gyms

-gypsied

-gypsies

-gypsy

-gypsy's

-gypsying

-gyration

-gyrations

-gyroscope

-gyroscope's

-gyroscopes

-ha

-habit

-habit's

-habitable

-habitableness

-habitat

-habitat's

-habitation

-habitation's

-habitations

-habitats

-habits

-habitual

-habitually

-habitualness

-hack

-hacked

-hacker

-hacker's

-hackers

-hacking

-hacks

-had

-hadn't

-hag

-hagen

-haggard

-haggardly

-haggardness

-hail

-hailed

-hailer

-hailing

-hails

-hair

-hair's

-haircut

-haircut's

-haircuts

-hairdresser

-hairdresser's

-hairdressers

-haired

-hairier

-hairiness

-hairless

-hairlessness

-hairs

-hairy

-hale

-haler

-half

-halfness

-halfway

-halfword

-halfword's

-halfwords

-haling

-hall

-hall's

-haller

-hallmark

-hallmark's

-hallmarked

-hallmarking

-hallmarks

-hallow

-hallowed

-hallowing

-hallows

-halls

-hallway

-hallway's

-hallways

-halt

-halted

-halter

-haltered

-haltering

-halters

-halting

-haltingly

-halts

-halve

-halved

-halvers

-halves

-halving

-ham

-ham's

-hamburger

-hamburger's

-hamburgers

-hamlet

-hamlet's

-hamlets

-hammer

-hammered

-hammerer

-hammering

-hammers

-hammock

-hammock's

-hammocks

-hamper

-hampered

-hampering

-hampers

-hams

-hand

-handbag

-handbag's

-handbags

-handbook

-handbook's

-handbooks

-handcuff

-handcuffed

-handcuffing

-handcuffs

-handed

-handedly

-handedness

-hander

-handers

-handful

-handfuls

-handicap

-handicap's

-handicapped

-handicaps

-handier

-handiest

-handily

-handiness

-handing

-handiwork

-handkerchief

-handkerchief's

-handkerchiefs

-handle

-handled

-handler

-handlers

-handles

-handling

-hands

-handshake

-handshake's

-handshaker

-handshakes

-handshaking

-handsome

-handsomely

-handsomeness

-handsomer

-handsomest

-handwriting

-handwritten

-handy

-hang

-hangar

-hangar's

-hangars

-hanged

-hanger

-hangers

-hanging

-hangover

-hangover's

-hangovers

-hangs

-hap

-haphazard

-haphazardly

-haphazardness

-hapless

-haplessly

-haplessness

-haply

-happen

-happened

-happening

-happenings

-happens

-happier

-happiest

-happily

-happiness

-happy

-harass

-harassed

-harasser

-harasses

-harassing

-harassment

-harassments

-hard

-harden

-hardened

-hardener

-hardening

-hardens

-harder

-hardest

-hardier

-hardiness

-harding

-hardings

-hardly

-hardness

-hardnesses

-hards

-hardship

-hardship's

-hardships

-hardware

-hardwares

-hardy

-hare

-hare's

-hares

-hark

-harked

-harken

-harking

-harks

-harlot

-harlot's

-harlots

-harm

-harmed

-harmer

-harmful

-harmfully

-harmfulness

-harming

-harmless

-harmlessly

-harmlessness

-harmonies

-harmonious

-harmoniously

-harmoniousness

-harmony

-harms

-harness

-harnessed

-harnesser

-harnesses

-harnessing

-harp

-harped

-harper

-harpers

-harping

-harpings

-harps

-harried

-harrier

-harrow

-harrowed

-harrower

-harrowing

-harrows

-harry

-harrying

-harsh

-harshen

-harshened

-harshening

-harsher

-harshest

-harshly

-harshness

-hart

-harvest

-harvested

-harvester

-harvesters

-harvesting

-harvests

-has

-hash

-hashed

-hasher

-hashes

-hashing

-hasn't

-hassle

-hassled

-hassler

-hassles

-hassling

-haste

-hasted

-hasten

-hastened

-hastener

-hastening

-hastens

-hastes

-hastier

-hastiest

-hastily

-hastiness

-hasting

-hastings

-hasty

-hat

-hat's

-hatch

-hatched

-hatcher

-hatcheries

-hatchery

-hatchery's

-hatches

-hatchet

-hatchet's

-hatchets

-hatching

-hate

-hated

-hateful

-hatefully

-hatefulness

-hater

-hates

-hath

-hating

-hatred

-hats

-haughtier

-haughtily

-haughtiness

-haughty

-haul

-hauled

-hauler

-haulers

-hauling

-hauls

-haunch

-haunch's

-haunches

-haunt

-haunted

-haunter

-haunting

-hauntingly

-haunts

-have

-haven

-haven's

-haven't

-havens

-haver

-havering

-havers

-haves

-having

-havoc

-havocs

-hawk

-hawked

-hawker

-hawkers

-hawking

-hawks

-hay

-hayer

-haying

-hays

-hazard

-hazard's

-hazarded

-hazarding

-hazardous

-hazardously

-hazardousness

-hazards

-haze

-haze's

-hazed

-hazel

-hazer

-hazes

-hazier

-haziest

-haziness

-hazing

-hazy

-he

-he'd

-he'll

-he's

-head

-head's

-headache

-headache's

-headaches

-headed

-header

-headers

-headgear

-heading

-heading's

-headings

-headland

-headland's

-headlands

-headline

-headlined

-headliner

-headlines

-headlining

-headlong

-headphone

-headphone's

-headphones

-headquarters

-heads

-headway

-heal

-healed

-healer

-healers

-healing

-heals

-health

-healthful

-healthfully

-healthfulness

-healthier

-healthiest

-healthily

-healthiness

-healthy

-heap

-heaped

-heaping

-heaps

-hear

-heard

-hearer

-hearers

-hearest

-hearing

-hearings

-hearken

-hearkened

-hearkening

-hears

-hearsay

-hearses

-hearsing

-heart

-heart's

-heartache

-heartache's

-heartaches

-hearted

-heartedly

-hearten

-heartened

-heartening

-hearteningly

-heartens

-hearth

-heartier

-hearties

-heartiest

-heartily

-heartiness

-heartless

-heartlessly

-heartlessness

-hearts

-hearty

-heat

-heatable

-heated

-heatedly

-heater

-heaters

-heath

-heathen

-heather

-heating

-heats

-heave

-heaved

-heaven

-heaven's

-heavenliness

-heavenly

-heavens

-heaver

-heavers

-heaves

-heavier

-heavies

-heaviest

-heavily

-heaviness

-heaving

-heavy

-hedge

-hedged

-hedgehog

-hedgehog's

-hedgehogs

-hedger

-hedges

-hedging

-hedgingly

-heed

-heeded

-heeding

-heedless

-heedlessly

-heedlessness

-heeds

-heel

-heeled

-heeler

-heelers

-heeling

-heels

-heifer

-height

-heighten

-heightened

-heightening

-heightens

-heights

-heinous

-heinously

-heinousness

-heir

-heir's

-heiress

-heiress's

-heiresses

-heirs

-held

-hell

-hell's

-heller

-hello

-hellos

-hells

-helm

-helmet

-helmet's

-helmeted

-helmets

-help

-helped

-helper

-helpers

-helpful

-helpfully

-helpfulness

-helping

-helpless

-helplessly

-helplessness

-helps

-hem

-hem's

-hemisphere

-hemisphere's

-hemisphered

-hemispheres

-hemlock

-hemlock's

-hemlocks

-hemostat

-hemostats

-hemp

-hempen

-hems

-hen

-hen's

-hence

-henceforth

-henchman

-henchmen

-hens

-her

-herald

-heralded

-heralding

-heralds

-herb

-herb's

-herbivore

-herbivorous

-herbivorously

-herbs

-herd

-herded

-herder

-herding

-herds

-here

-here's

-hereabout

-hereabouts

-hereafter

-hereby

-hereditary

-heredity

-herein

-hereinafter

-heres

-heresy

-heretic

-heretic's

-heretics

-heretofore

-herewith

-heritage

-heritages

-hermit

-hermit's

-hermits

-hero

-hero's

-heroes

-heroic

-heroically

-heroics

-heroin

-heroine

-heroine's

-heroines

-heroism

-heron

-heron's

-herons

-heros

-herring

-herring's

-herrings

-hers

-herself

-hesitant

-hesitantly

-hesitate

-hesitated

-hesitater

-hesitates

-hesitating

-hesitatingly

-hesitation

-hesitations

-heterogeneous

-heterogeneously

-heterogeneousness

-heuristic

-heuristic's

-heuristically

-heuristics

-hew

-hewed

-hewer

-hewing

-hews

-hex

-hexagonal

-hexagonally

-hexer

-hey

-hickories

-hickory

-hid

-hidden

-hide

-hided

-hideous

-hideously

-hideousness

-hideout

-hideout's

-hideouts

-hider

-hides

-hiding

-hierarchical

-hierarchically

-hierarchies

-hierarchy

-hierarchy's

-high

-higher

-highest

-highland

-highlander

-highlands

-highlight

-highlighted

-highlighting

-highlights

-highly

-highness

-highness's

-highnesses

-highway

-highway's

-highways

-hijack

-hijacked

-hijacker

-hijackers

-hijacking

-hijacks

-hike

-hiked

-hiker

-hikers

-hikes

-hiking

-hilarious

-hilariously

-hilariousness

-hill

-hill's

-hilled

-hiller

-hilling

-hillock

-hillocks

-hills

-hillside

-hilltop

-hilltop's

-hilltops

-hilt

-hilt's

-hilts

-him

-hims

-himself

-hind

-hinder

-hindered

-hinderer

-hindering

-hinders

-hindrance

-hindrances

-hinds

-hindsight

-hinge

-hinged

-hinger

-hinges

-hinging

-hint

-hinted

-hinter

-hinting

-hints

-hip

-hip's

-hipness

-hips

-hire

-hired

-hirer

-hirers

-hires

-hiring

-hirings

-his

-hiss

-hissed

-hisser

-hisses

-hissing

-histogram

-histogram's

-histograms

-historian

-historian's

-historians

-historic

-historical

-historically

-historicalness

-histories

-history

-history's

-hit

-hit's

-hitch

-hitched

-hitcher

-hitches

-hitchhike

-hitchhiked

-hitchhiker

-hitchhikers

-hitchhikes

-hitchhiking

-hitching

-hither

-hitherto

-hits

-hitter

-hitter's

-hitters

-hitting

-hive

-hives

-hiving

-hoar

-hoard

-hoarded

-hoarder

-hoarding

-hoards

-hoarier

-hoariness

-hoarse

-hoarsely

-hoarseness

-hoarser

-hoarsest

-hoary

-hoax

-hoax's

-hoaxed

-hoaxer

-hoaxes

-hoaxing

-hobbies

-hobble

-hobbled

-hobbler

-hobbles

-hobbling

-hobby

-hobby's

-hobbyist

-hobbyist's

-hobbyists

-hockey

-hoe

-hoe's

-hoer

-hoes

-hog

-hog's

-hogs

-hoist

-hoisted

-hoister

-hoisting

-hoists

-hold

-holden

-holder

-holders

-holding

-holdings

-holds

-hole

-hole's

-holed

-holes

-holiday

-holiday's

-holidayer

-holidays

-holier

-holies

-holiness

-holing

-holistic

-hollies

-hollow

-hollowed

-hollower

-hollowest

-hollowing

-hollowly

-hollowness

-hollows

-holly

-holocaust

-hologram

-hologram's

-holograms

-holy

-homage

-homaged

-homager

-homages

-homaging

-home

-homebuilt

-homed

-homeless

-homelessness

-homelier

-homeliness

-homely

-homemade

-homemaker

-homemaker's

-homemakers

-homeomorphic

-homeomorphism

-homeomorphism's

-homeomorphisms

-homer

-homers

-homes

-homesick

-homesickness

-homespun

-homestead

-homesteader

-homesteaders

-homesteads

-homeward

-homewards

-homework

-homeworker

-homeworkers

-homing

-homogeneities

-homogeneity

-homogeneity's

-homogeneous

-homogeneously

-homogeneousness

-homomorphic

-homomorphism

-homomorphism's

-homomorphisms

-hone

-honed

-honer

-hones

-honest

-honestly

-honesty

-honey

-honeycomb

-honeycombed

-honeyed

-honeying

-honeymoon

-honeymooned

-honeymooner

-honeymooners

-honeymooning

-honeymoons

-honeys

-honeysuckle

-honing

-honorary

-hood

-hood's

-hooded

-hoodedness

-hooding

-hoods

-hoodwink

-hoodwinked

-hoodwinker

-hoodwinking

-hoodwinks

-hoof

-hoof's

-hoofed

-hoofer

-hoofs

-hook

-hooked

-hookedness

-hooker

-hookers

-hooking

-hooks

-hoop

-hooped

-hooper

-hooping

-hoops

-hooray

-hooray's

-hoorays

-hoot

-hooted

-hooter

-hooters

-hooting

-hoots

-hop

-hope

-hoped

-hopeful

-hopefully

-hopefulness

-hopefuls

-hopeless

-hopelessly

-hopelessness

-hoper

-hopes

-hoping

-hopped

-hopper

-hopper's

-hoppers

-hopping

-hops

-horde

-horde's

-hordes

-horizon

-horizon's

-horizons

-horizontal

-horizontally

-hormone

-hormone's

-hormones

-horn

-horned

-hornedness

-hornet

-hornet's

-hornets

-horns

-horrendous

-horrendously

-horrible

-horribleness

-horribly

-horrid

-horridly

-horridness

-horrified

-horrifies

-horrify

-horrifying

-horrifyingly

-horror

-horror's

-horrors

-horse

-horse's

-horseback

-horsely

-horseman

-horsepower

-horsepowers

-horses

-horseshoe

-horseshoer

-horseshoes

-horsing

-hose

-hose's

-hosed

-hoses

-hosing

-hospitable

-hospitably

-hospital

-hospital's

-hospitality

-hospitals

-host

-host's

-hostage

-hostage's

-hostages

-hosted

-hostess

-hostess's

-hostesses

-hostile

-hostilely

-hostilities

-hostility

-hosting

-hostly

-hosts

-hot

-hotel

-hotel's

-hotels

-hotly

-hotness

-hotter

-hottest

-hound

-hounded

-hounder

-hounding

-hounds

-hour

-hour's

-hourly

-hours

-house

-house's

-housed

-houseflies

-housefly

-housefly's

-household

-household's

-householder

-householders

-households

-housekeeper

-housekeeper's

-housekeepers

-housekeeping

-houser

-houses

-housetop

-housetop's

-housetops

-housewife

-housewife's

-housewifeliness

-housewifely

-housework

-houseworker

-houseworkers

-housing

-housings

-hovel

-hovel's

-hovels

-hover

-hovered

-hoverer

-hovering

-hovers

-how

-how's

-however

-howl

-howled

-howler

-howling

-howls

-hows

-hrs

-hub

-hub's

-hubris

-hubs

-huddle

-huddled

-huddler

-huddles

-huddling

-hue

-hue's

-hued

-hues

-hug

-huge

-hugely

-hugeness

-huger

-hugest

-hugs

-huh

-hull

-hull's

-hulled

-huller

-hulling

-hulls

-hum

-human

-humane

-humanely

-humaneness

-humanities

-humanity

-humanity's

-humanly

-humanness

-humans

-humble

-humbled

-humbleness

-humbler

-humbles

-humblest

-humbling

-humbly

-humid

-humidification

-humidifications

-humidified

-humidifier

-humidifiers

-humidifies

-humidify

-humidifying

-humidities

-humidity

-humidly

-humiliate

-humiliated

-humiliates

-humiliating

-humiliatingly

-humiliation

-humiliations

-humility

-hummed

-humming

-humorous

-humorously

-humorousness

-hump

-humped

-humping

-humps

-hums

-hunch

-hunched

-hunches

-hundred

-hundreds

-hundredth

-hung

-hunger

-hungered

-hungering

-hungers

-hungrier

-hungriest

-hungrily

-hungriness

-hungry

-hunk

-hunk's

-hunker

-hunkered

-hunkering

-hunkers

-hunks

-hunt

-hunted

-hunter

-hunters

-hunting

-hunts

-huntsman

-hurdle

-hurdled

-hurdler

-hurdles

-hurdling

-hurl

-hurled

-hurler

-hurlers

-hurling

-hurrah

-hurricane

-hurricane's

-hurricanes

-hurried

-hurriedly

-hurriedness

-hurrier

-hurries

-hurry

-hurrying

-hurt

-hurter

-hurting

-hurtingly

-hurts

-husband

-husband's

-husbander

-husbandly

-husbandry

-husbands

-hush

-hushed

-hushes

-hushing

-husk

-husked

-husker

-huskier

-huskies

-huskiness

-husking

-husks

-husky

-hustle

-hustled

-hustler

-hustlers

-hustles

-hustling

-hut

-hut's

-huts

-hyacinth

-hybrid

-hybrids

-hydraulic

-hydraulically

-hydraulics

-hydrodynamic

-hydrodynamics

-hydrogen

-hydrogen's

-hydrogens

-hygiene

-hymn

-hymn's

-hymning

-hymns

-hype

-hype's

-hyped

-hyper

-hyperbolic

-hypertext

-hypertext's

-hypes

-hyphen

-hyphen's

-hyphened

-hyphening

-hyphens

-hypocrisies

-hypocrisy

-hypocrite

-hypocrite's

-hypocrites

-hypodermic

-hypodermics

-hypotheses

-hypothesis

-hypothetical

-hypothetically

-hysteresis

-hysterical

-hysterically

-ice

-iceberg

-iceberg's

-icebergs

-iced

-ices

-icier

-iciest

-iciness

-icing

-icings

-icon

-icon's

-icons

-icy

-id

-id's

-idea

-idea's

-ideal

-idealism

-idealistic

-ideally

-ideals

-ideas

-identical

-identically

-identicalness

-identifiable

-identifiably

-identification

-identifications

-identified

-identifier

-identifiers

-identifies

-identify

-identifying

-identities

-identity

-identity's

-ideological

-ideologically

-ideologies

-ideology

-idiocies

-idiocy

-idiosyncrasies

-idiosyncrasy

-idiosyncrasy's

-idiosyncratic

-idiot

-idiot's

-idiotic

-idiots

-idle

-idled

-idleness

-idler

-idlers

-idles

-idlest

-idling

-idly

-idol

-idol's

-idolatry

-idols

-if

-ignition

-ignoble

-ignobleness

-ignorance

-ignorant

-ignorantly

-ignorantness

-ignore

-ignored

-ignorer

-ignores

-ignoring

-ii

-iii

-ill

-illegal

-illegalities

-illegality

-illegally

-illicit

-illicitly

-illiterate

-illiterately

-illiterateness

-illiterates

-illness

-illness's

-illnesses

-illogical

-illogically

-illogicalness

-ills

-illuminate

-illuminated

-illuminates

-illuminating

-illuminatingly

-illumination

-illuminations

-illuminative

-illusion

-illusion's

-illusions

-illusive

-illusively

-illusiveness

-illustrate

-illustrated

-illustrates

-illustrating

-illustration

-illustrations

-illustrative

-illustratively

-illustrator

-illustrator's

-illustrators

-illustrious

-illustriously

-illustriousness

-illy

-image

-imaged

-images

-imaginable

-imaginableness

-imaginably

-imaginariness

-imaginary

-imagination

-imagination's

-imaginations

-imaginative

-imaginatively

-imaginativeness

-imagine

-imagined

-imaginer

-imagines

-imaging

-imagining

-imaginings

-imbalance

-imbalances

-imitate

-imitated

-imitates

-imitating

-imitation

-imitations

-imitative

-imitatively

-imitativeness

-immaculate

-immaculately

-immaculateness

-immaterial

-immaterially

-immaterialness

-immature

-immaturely

-immatureness

-immaturity

-immediacies

-immediacy

-immediate

-immediately

-immediateness

-immemorial

-immemorially

-immense

-immensely

-immenseness

-immerse

-immersed

-immerser

-immerses

-immersing

-immersion

-immersions

-immigrant

-immigrant's

-immigrants

-immigrate

-immigrated

-immigrates

-immigrating

-immigration

-imminent

-imminently

-imminentness

-immoral

-immoralities

-immorality

-immorally

-immortal

-immortality

-immortally

-immortals

-immovability

-immovable

-immovableness

-immovably

-immune

-immunities

-immunity

-immunity's

-immunology

-immutable

-immutableness

-imp

-imp's

-impact

-impacted

-impacter

-impacting

-impaction

-impactions

-impactive

-impactor

-impactor's

-impactors

-impacts

-impair

-impaired

-impairer

-impairing

-impairs

-impart

-imparted

-impartial

-impartially

-imparting

-imparts

-impasse

-impasses

-impassion

-impassioned

-impassioning

-impassions

-impassive

-impassively

-impassiveness

-impatience

-impatient

-impatiently

-impeach

-impeached

-impeaches

-impeaching

-impedance

-impedance's

-impedances

-impede

-impeded

-impeder

-impedes

-impediment

-impediment's

-impediments

-impeding

-impel

-impels

-impending

-impenetrability

-impenetrable

-impenetrableness

-impenetrably

-imperative

-imperatively

-imperativeness

-imperatives

-imperfect

-imperfection

-imperfection's

-imperfections

-imperfective

-imperfectly

-imperfectness

-imperial

-imperialism

-imperialist

-imperialist's

-imperialists

-imperially

-imperil

-imperious

-imperiously

-imperiousness

-impermanence

-impermanent

-impermanently

-impermissible

-impersonal

-impersonally

-impersonate

-impersonated

-impersonates

-impersonating

-impersonation

-impersonations

-impertinent

-impertinently

-imperturbability

-impervious

-imperviously

-imperviousness

-impetuous

-impetuously

-impetuousness

-impetus

-impinge

-impinged

-impinges

-impinging

-impious

-impiously

-implant

-implanted

-implanter

-implanting

-implants

-implausible

-implement

-implementable

-implementation

-implementation's

-implementations

-implemented

-implementer

-implementers

-implementing

-implementor

-implementor's

-implementors

-implements

-implicant

-implicant's

-implicants

-implicate

-implicated

-implicates

-implicating

-implication

-implications

-implicative

-implicatively

-implicativeness

-implicit

-implicitly

-implicitness

-implied

-implies

-implore

-implored

-implores

-imploring

-imply

-implying

-import

-importance

-important

-importantly

-importation

-importations

-imported

-importer

-importers

-importing

-imports

-impose

-imposed

-imposer

-imposes

-imposing

-imposingly

-imposition

-imposition's

-impositions

-impossibilities

-impossibility

-impossible

-impossibleness

-impossibles

-impossibly

-impostor

-impostor's

-impostors

-impotence

-impotent

-impotently

-impoverish

-impoverished

-impoverisher

-impoverishes

-impoverishing

-impoverishment

-impracticable

-impracticableness

-impractical

-impracticality

-impractically

-impracticalness

-imprecise

-imprecisely

-impreciseness

-imprecision

-impregnable

-impregnableness

-impress

-impressed

-impresser

-impresses

-impressing

-impression

-impression's

-impressionable

-impressionableness

-impressionist

-impressionistic

-impressionists

-impressions

-impressive

-impressively

-impressiveness

-impressment

-imprint

-imprinted

-imprinting

-imprints

-imprison

-imprisoned

-imprisoning

-imprisonment

-imprisonment's

-imprisonments

-imprisons

-improbable

-improbableness

-impromptu

-improper

-improperly

-improperness

-improve

-improved

-improvement

-improvements

-improver

-improves

-improving

-improvisation

-improvisation's

-improvisational

-improvisations

-improvise

-improvised

-improviser

-improvisers

-improvises

-improvising

-imps

-impudent

-impudently

-impulse

-impulsed

-impulses

-impulsing

-impulsion

-impulsions

-impulsive

-impulsively

-impulsiveness

-impunity

-impure

-impurely

-impureness

-impurities

-impurity

-impurity's

-impute

-imputed

-imputes

-imputing

-in

-inabilities

-inability

-inaccessibility

-inaccessible

-inaccessibly

-inaccuracies

-inaccuracy

-inaccurate

-inaccurately

-inactions

-inactivation

-inactive

-inactively

-inactivity

-inadequacies

-inadequacy

-inadequate

-inadequately

-inadequateness

-inadmissibility

-inadmissible

-inadvertent

-inadvertently

-inadvisability

-inadvisable

-inalterable

-inalterableness

-inane

-inanely

-inaneness

-inaner

-inanest

-inanimate

-inanimately

-inanimateness

-inapparently

-inapplicability

-inapplicable

-inappreciable

-inappreciably

-inappreciative

-inappreciatively

-inappreciativeness

-inapproachable

-inappropriate

-inappropriately

-inappropriateness

-inapt

-inaptly

-inaptness

-inarguable

-inarguably

-inarticulable

-inartistic

-inartistically

-inasmuch

-inattentive

-inattentively

-inattentiveness

-inaudible

-inaudibly

-inaugural

-inaugurate

-inaugurated

-inaugurating

-inauguration

-inaugurations

-inauspicious

-inauspiciously

-inauspiciousness

-inauthentic

-inauthenticity

-inboards

-inborn

-inbounds

-inbred

-inbuilt

-incantation

-incantations

-incapable

-incapableness

-incapably

-incapacitating

-incarnation

-incarnation's

-incarnations

-incautious

-incautiously

-incautiousness

-incendiaries

-incendiary

-incense

-incensed

-incenses

-incensing

-incentive

-incentive's

-incentively

-incentives

-inception

-inceptions

-incessant

-incessantly

-inch

-inched

-inches

-inching

-incidence

-incidences

-incident

-incident's

-incidental

-incidentally

-incidentals

-incidents

-incipient

-incipiently

-incision

-incision's

-incisions

-incitations

-incite

-incited

-inciter

-incites

-inciting

-incivility

-inclination

-inclination's

-inclinations

-incline

-inclined

-incliner

-inclines

-inclining

-inclose

-inclosed

-incloses

-inclosing

-include

-included

-includes

-including

-inclusion

-inclusion's

-inclusions

-inclusive

-inclusively

-inclusiveness

-incoherence

-incoherences

-incoherent

-incoherently

-income

-incomer

-incomers

-incomes

-incoming

-incommensurate

-incomparability

-incomparable

-incomparably

-incompatibilities

-incompatibility

-incompatibility's

-incompatible

-incompatibly

-incompetence

-incompetent

-incompetent's

-incompetently

-incompetents

-incomplete

-incompletely

-incompleteness

-incompletion

-incomprehensibility

-incomprehensible

-incomprehensibleness

-incomprehensibly

-incomprehension

-incompressible

-incomputable

-inconceivable

-inconceivableness

-inconceivably

-inconclusive

-inconclusively

-inconclusiveness

-inconformity

-incongruence

-incongruent

-incongruently

-inconsequential

-inconsequentially

-inconsequently

-inconsiderable

-inconsiderableness

-inconsiderably

-inconsiderate

-inconsiderately

-inconsiderateness

-inconsideration

-inconsistencies

-inconsistency

-inconsistency's

-inconsistent

-inconsistently

-inconsolable

-inconsolableness

-inconspicuous

-inconspicuously

-inconspicuousness

-inconstancy

-inconstantly

-incontestable

-incontinently

-incontrollable

-inconvenience

-inconvenienced

-inconveniences

-inconveniencing

-inconvenient

-inconveniently

-inconvertibility

-inconvertible

-incorporate

-incorporated

-incorporates

-incorporating

-incorporation

-incorporative

-incorrect

-incorrectly

-incorrectness

-incorruption

-increase

-increased

-increaser

-increases

-increasing

-increasingly

-incredibility

-incredible

-incredibleness

-incredibly

-incredulity

-incredulous

-incredulously

-increment

-incremental

-incrementally

-incremented

-incrementing

-increments

-incubate

-incubated

-incubates

-incubating

-incubation

-incubative

-incubator

-incubator's

-incubators

-incur

-incurable

-incurableness

-incurables

-incurably

-incurred

-incurring

-incurs

-indebted

-indebtedness

-indecent

-indecently

-indecision

-indecisive

-indecisively

-indecisiveness

-indecomposable

-indeed

-indefinable

-indefinableness

-indefinite

-indefinitely

-indefiniteness

-indemnity

-indent

-indentation

-indentation's

-indentations

-indented

-indenter

-indenting

-indents

-independence

-independent

-independently

-independents

-indescribable

-indescribableness

-indeterminable

-indeterminableness

-indeterminacies

-indeterminacy

-indeterminacy's

-indeterminate

-indeterminately

-indeterminateness

-indetermination

-indeterminism

-indeterministic

-index

-indexable

-indexed

-indexer

-indexers

-indexes

-indexing

-indicate

-indicated

-indicates

-indicating

-indication

-indications

-indicative

-indicatively

-indicatives

-indicator

-indicator's

-indicators

-indices

-indictment

-indictment's

-indictments

-indifference

-indifferent

-indifferently

-indigenous

-indigenously

-indigenousness

-indigested

-indigestible

-indigestion

-indignant

-indignantly

-indignation

-indignities

-indignity

-indigo

-indirect

-indirected

-indirecting

-indirection

-indirections

-indirectly

-indirectness

-indirects

-indiscernible

-indiscipline

-indisciplined

-indiscreet

-indiscreetly

-indiscreetness

-indiscriminate

-indiscriminately

-indiscriminateness

-indiscriminating

-indiscriminatingly

-indiscrimination

-indispensability

-indispensable

-indispensableness

-indispensably

-indisposed

-indisposes

-indistinct

-indistinctive

-indistinctly

-indistinctness

-indistinguishable

-indistinguishableness

-individual

-individual's

-individualistic

-individuality

-individually

-individuals

-indivisibility

-indivisible

-indivisibleness

-indoctrinate

-indoctrinated

-indoctrinates

-indoctrinating

-indoctrination

-indolent

-indolently

-indomitable

-indomitableness

-indoor

-indoors

-induce

-induced

-inducement

-inducement's

-inducements

-inducer

-induces

-inducing

-induct

-inductance

-inductances

-inducted

-inducting

-induction

-induction's

-inductions

-inductive

-inductively

-inductiveness

-inductor

-inductor's

-inductors

-inducts

-indulge

-indulged

-indulgence

-indulgence's

-indulgences

-indulger

-indulges

-indulging

-industrial

-industrialist

-industrialist's

-industrialists

-industrially

-industrials

-industries

-industrious

-industriously

-industriousness

-industry

-industry's

-inedited

-ineffective

-ineffectively

-ineffectiveness

-inefficacy

-inefficiencies

-inefficiency

-inefficient

-inefficiently

-inelastically

-inelegant

-inelegantly

-ineloquent

-ineloquently

-inequalities

-inequality

-inequitably

-inequities

-inequity

-inert

-inertia

-inertias

-inertly

-inertness

-inescapable

-inescapably

-inessential

-inestimable

-inevitabilities

-inevitability

-inevitable

-inevitableness

-inevitably

-inexact

-inexactitude

-inexactly

-inexactness

-inexcusable

-inexcusableness

-inexcusably

-inexhaustible

-inexhaustibleness

-inexistent

-inexorable

-inexorableness

-inexorably

-inexpedient

-inexpediently

-inexpensive

-inexpensively

-inexpensiveness

-inexperience

-inexperienced

-inexplainable

-inexplicable

-inexplicableness

-inexplicably

-inexpressibility

-inexpressible

-inexpressibleness

-inexpressibly

-inexpressive

-inexpressively

-inexpressiveness

-inextensible

-infallibility

-infallible

-infallibly

-infamous

-infamously

-infancy

-infant

-infant's

-infantry

-infants

-infeasible

-infect

-infected

-infecting

-infection

-infection's

-infections

-infectious

-infectiously

-infectiousness

-infective

-infects

-infer

-inference

-inference's

-inferencer

-inferences

-inferencing

-inferential

-inferentially

-inferior

-inferior's

-inferiority

-inferiorly

-inferiors

-infernal

-infernally

-inferno

-inferno's

-infernos

-inferred

-inferring

-infers

-infertility

-infest

-infested

-infester

-infesting

-infests

-infidel

-infidel's

-infidelity

-infidels

-infields

-infighter

-infighter's

-infighters

-infighting

-infiltrate

-infiltrated

-infiltrates

-infiltrating

-infiltration

-infiltrative

-infinite

-infinitely

-infiniteness

-infinitesimal

-infinitesimally

-infinities

-infinitive

-infinitive's

-infinitively

-infinitives

-infinitum

-infinity

-infirmity

-infix

-infix's

-infixes

-inflame

-inflamed

-inflamer

-inflaming

-inflammable

-inflammableness

-inflatable

-inflate

-inflated

-inflater

-inflates

-inflating

-inflation

-inflationary

-inflexibility

-inflexible

-inflexibleness

-inflexibly

-inflict

-inflicted

-inflicter

-inflicting

-inflictive

-inflicts

-inflows

-influence

-influenced

-influencer

-influences

-influencing

-influent

-influential

-influentially

-influenza

-inform

-informal

-informality

-informally

-informant

-informant's

-informants

-information

-informational

-informations

-informative

-informatively

-informativeness

-informed

-informer

-informers

-informing

-informs

-infractions

-infrastructure

-infrastructures

-infrequent

-infrequently

-infringe

-infringed

-infringement

-infringement's

-infringements

-infringer

-infringes

-infringing

-infuriate

-infuriated

-infuriately

-infuriates

-infuriating

-infuriatingly

-infuriation

-infuse

-infused

-infuser

-infuses

-infusing

-infusion

-infusions

-ingenious

-ingeniously

-ingeniousness

-ingenuity

-inglorious

-ingloriously

-ingloriousness

-ingot

-ingrained

-ingrainedly

-ingrains

-ingratitude

-ingredient

-ingredient's

-ingredients

-ingrown

-ingrownness

-ingrowth

-ingrowths

-inhabit

-inhabitable

-inhabitance

-inhabitant

-inhabitant's

-inhabitants

-inhabited

-inhabiter

-inhabiting

-inhabits

-inhale

-inhaled

-inhaler

-inhales

-inhaling

-inharmonious

-inharmoniously

-inharmoniousness

-inhere

-inhered

-inherent

-inherently

-inheres

-inhering

-inherit

-inheritable

-inheritableness

-inheritance

-inheritance's

-inheritances

-inherited

-inheriting

-inheritor

-inheritor's

-inheritors

-inheritress

-inheritress's

-inheritresses

-inheritrices

-inheritrix

-inherits

-inhibit

-inhibited

-inhibiter

-inhibiting

-inhibition

-inhibition's

-inhibitions

-inhibitive

-inhibitors

-inhibits

-inholding

-inholdings

-inhomogeneities

-inhomogeneity

-inhospitable

-inhospitableness

-inhospitably

-inhospitality

-inhuman

-inhumane

-inhumanely

-inhumanities

-inhumanly

-inhumanness

-inion

-iniquities

-iniquity

-iniquity's

-initial

-initialness

-initials

-initiate

-initiated

-initiates

-initiating

-initiation

-initiations

-initiative

-initiative's

-initiatives

-initiator

-initiator's

-initiators

-inject

-injected

-injecting

-injection

-injection's

-injections

-injective

-injects

-injudicious

-injudiciously

-injudiciousness

-injunction

-injunction's

-injunctions

-injure

-injured

-injurer

-injures

-injuries

-injuring

-injurious

-injuriously

-injuriousness

-injury

-injury's

-injustice

-injustice's

-injustices

-ink

-inked

-inker

-inkers

-inking

-inkings

-inkling

-inkling's

-inklings

-inks

-inlaid

-inland

-inlander

-inlet

-inlet's

-inlets

-inlier

-inly

-inlying

-inmate

-inmate's

-inmates

-inn

-innards

-innate

-innately

-innateness

-inner

-innerly

-innermost

-inning

-innings

-innocence

-innocent

-innocently

-innocents

-innocuous

-innocuously

-innocuousness

-innovate

-innovated

-innovates

-innovating

-innovation

-innovation's

-innovations

-innovative

-innovativeness

-inns

-innumerability

-innumerable

-innumerableness

-innumerably

-inoperable

-inopportune

-inopportunely

-inopportuneness

-inordinate

-inordinately

-inordinateness

-inorganic

-input

-input's

-inputed

-inputer

-inputing

-inputs

-inputting

-inquietude

-inquire

-inquired

-inquirer

-inquirers

-inquires

-inquiries

-inquiring

-inquiringly

-inquiry

-inquiry's

-inquisition

-inquisition's

-inquisitions

-inquisitive

-inquisitively

-inquisitiveness

-inroad

-inroads

-ins

-insane

-insanely

-insaneness

-insanitary

-insanity

-inscribe

-inscribed

-inscriber

-inscribes

-inscribing

-inscription

-inscription's

-inscriptions

-insect

-insect's

-insects

-insecure

-insecurely

-insecureness

-insecurity

-insensible

-insensibleness

-insensibly

-insensitive

-insensitively

-insensitiveness

-insensitivity

-inseparable

-inseparableness

-insert

-inserted

-inserter

-inserting

-insertion

-insertion's

-insertions

-inserts

-insets

-insetting

-inside

-insider

-insiders

-insides

-insidious

-insidiously

-insidiousness

-insight

-insight's

-insightful

-insightfully

-insights

-insignia

-insignias

-insignificance

-insignificances

-insignificant

-insignificantly

-insincerity

-insinuate

-insinuated

-insinuates

-insinuating

-insinuatingly

-insinuation

-insinuations

-insinuative

-insist

-insisted

-insistence

-insistent

-insistently

-insisting

-insists

-insociability

-insociable

-insociably

-insofar

-insolence

-insolent

-insolently

-insolubility

-insoluble

-insolubleness

-insolvable

-inspect

-inspected

-inspecting

-inspection

-inspection's

-inspections

-inspective

-inspector

-inspector's

-inspectors

-inspects

-inspiration

-inspiration's

-inspirations

-inspire

-inspired

-inspirer

-inspires

-inspiring

-instabilities

-instability

-install

-installation

-installation's

-installations

-installed

-installer

-installers

-installing

-installment

-installment's

-installments

-installs

-instance

-instanced

-instances

-instancing

-instant

-instantaneous

-instantaneously

-instantaneousness

-instanter

-instantiate

-instantiated

-instantiates

-instantiating

-instantiation

-instantiation's

-instantiations

-instantly

-instantness

-instants

-instated

-instates

-instead

-insteps

-instigate

-instigated

-instigates

-instigating

-instigation

-instigative

-instigator

-instigator's

-instigators

-instills

-instinct

-instinct's

-instinctive

-instinctively

-instincts

-institute

-instituted

-instituter

-instituters

-institutes

-instituting

-institution

-institution's

-institutional

-institutionally

-institutions

-institutive

-instruct

-instructed

-instructing

-instruction

-instruction's

-instructional

-instructions

-instructive

-instructively

-instructiveness

-instructor

-instructor's

-instructors

-instructs

-instrument

-instrumental

-instrumentalist

-instrumentalist's

-instrumentalists

-instrumentally

-instrumentals

-instrumentation

-instrumented

-instrumenting

-instruments

-insufficiencies

-insufficiency

-insufficient

-insufficiently

-insulate

-insulated

-insulates

-insulating

-insulation

-insulations

-insulator

-insulator's

-insulators

-insult

-insulted

-insulter

-insulting

-insultingly

-insults

-insuperable

-insupportable

-insupportableness

-insurance

-insurances

-insure

-insured

-insurer

-insurers

-insures

-insurgent

-insurgent's

-insurgents

-insuring

-insurmountable

-insurrection

-insurrection's

-insurrections

-insusceptible

-intact

-intactness

-intakes

-intangible

-intangible's

-intangibleness

-intangibles

-intangibly

-integer

-integer's

-integers

-integral

-integral's

-integrally

-integrals

-integrate

-integrated

-integrates

-integrating

-integration

-integrations

-integrative

-integrity

-intellect

-intellect's

-intellective

-intellectively

-intellects

-intellectual

-intellectually

-intellectualness

-intellectuals

-intelligence

-intelligencer

-intelligences

-intelligent

-intelligently

-intelligibility

-intelligible

-intelligibleness

-intelligibly

-intemperance

-intemperate

-intemperately

-intemperateness

-intend

-intended

-intendedly

-intendedness

-intender

-intending

-intends

-intense

-intensely

-intenseness

-intensification

-intensified

-intensifier

-intensifiers

-intensifies

-intensify

-intensifying

-intension

-intensities

-intensity

-intensive

-intensively

-intensiveness

-intent

-intention

-intentional

-intentionally

-intentioned

-intentions

-intently

-intentness

-intents

-interact

-interacted

-interacting

-interaction

-interaction's

-interactions

-interactive

-interactively

-interactivity

-interacts

-intercept

-intercepted

-intercepter

-intercepting

-intercepts

-interchange

-interchangeability

-interchangeable

-interchangeableness

-interchangeably

-interchanged

-interchanger

-interchanges

-interchanging

-interchangings

-intercity

-intercommunicate

-intercommunicated

-intercommunicates

-intercommunicating

-intercommunication

-interconnect

-interconnected

-interconnectedness

-interconnecting

-interconnection

-interconnection's

-interconnections

-interconnectivity

-interconnects

-intercourse

-interdependence

-interdependencies

-interdependency

-interdependent

-interdependently

-interdisciplinary

-interest

-interested

-interestedly

-interesting

-interestingly

-interestingness

-interests

-interface

-interfaced

-interfacer

-interfaces

-interfacing

-interfere

-interfered

-interference

-interferences

-interferer

-interferes

-interfering

-interferingly

-interim

-interior

-interior's

-interiorly

-interiors

-interlace

-interlaced

-interlaces

-interlacing

-interleave

-interleaved

-interleaves

-interleaving

-interlink

-interlinked

-interlinking

-interlinks

-interlisp

-interlisp's

-intermediaries

-intermediary

-intermediate

-intermediate's

-intermediated

-intermediately

-intermediateness

-intermediates

-intermediating

-intermediation

-interminable

-intermingle

-intermingled

-intermingles

-intermingling

-intermittent

-intermittently

-intermix

-intermixed

-intermixer

-intermixes

-intermixing

-intermodule

-intern

-internal

-internally

-internals

-international

-internationality

-internationally

-internationals

-interned

-interning

-interns

-interpersonal

-interpersonally

-interplay

-interpolate

-interpolated

-interpolates

-interpolating

-interpolation

-interpolations

-interpolative

-interpose

-interposed

-interposer

-interposes

-interposing

-interpret

-interpretable

-interpretation

-interpretation's

-interpretations

-interpreted

-interpreter

-interpreters

-interpreting

-interpretive

-interpretively

-interprets

-interprocess

-interrelate

-interrelated

-interrelatedly

-interrelatedness

-interrelates

-interrelating

-interrelation

-interrelations

-interrelationship

-interrelationship's

-interrelationships

-interrogate

-interrogated

-interrogates

-interrogating

-interrogation

-interrogations

-interrogative

-interrogatively

-interrogatives

-interrupt

-interrupted

-interrupter

-interrupters

-interruptible

-interrupting

-interruption

-interruption's

-interruptions

-interruptive

-interrupts

-intersect

-intersected

-intersecting

-intersection

-intersection's

-intersections

-intersects

-intersperse

-interspersed

-intersperses

-interspersing

-interspersion

-interspersions

-interstage

-interstate

-intertask

-intertwine

-intertwined

-intertwines

-intertwining

-interval

-interval's

-intervals

-intervene

-intervened

-intervener

-intervenes

-intervening

-intervention

-intervention's

-interventions

-interview

-interviewed

-interviewee

-interviewee's

-interviewees

-interviewer

-interviewer's

-interviewers

-interviewing

-interviews

-interwoven

-intestinal

-intestinally

-intestine

-intestine's

-intestines

-intimacy

-intimate

-intimated

-intimately

-intimateness

-intimater

-intimates

-intimating

-intimation

-intimations

-intimidate

-intimidated

-intimidates

-intimidating

-intimidation

-into

-intolerability

-intolerable

-intolerableness

-intolerably

-intolerance

-intolerant

-intolerantly

-intolerantness

-intonation

-intonation's

-intonations

-intoned

-intoner

-intoxicate

-intoxicated

-intoxicatedly

-intoxicating

-intoxication

-intractability

-intractable

-intractableness

-intractably

-intramural

-intramurally

-intransigent

-intransigently

-intransigents

-intransitive

-intransitively

-intransitiveness

-intraprocess

-intricacies

-intricacy

-intricate

-intricately

-intricateness

-intrigue

-intrigued

-intriguer

-intrigues

-intriguing

-intriguingly

-intrinsic

-intrinsically

-intrinsics

-introduce

-introduced

-introducer

-introduces

-introducing

-introduction

-introduction's

-introductions

-introductory

-introspect

-introspection

-introspections

-introspective

-introspectively

-introspectiveness

-introvert

-introverted

-intrude

-intruded

-intruder

-intruder's

-intruders

-intrudes

-intruding

-intrusion

-intrusion's

-intrusions

-intrusive

-intrusively

-intrusiveness

-intrust

-intubate

-intubated

-intubates

-intubating

-intubation

-intuition

-intuition's

-intuitionist

-intuitions

-intuitive

-intuitively

-intuitiveness

-invade

-invaded

-invader

-invaders

-invades

-invading

-invalid

-invalidate

-invalidated

-invalidates

-invalidating

-invalidation

-invalidations

-invalidities

-invalidity

-invalidly

-invalidness

-invalids

-invaluable

-invaluableness

-invaluably

-invariability

-invariable

-invariableness

-invariably

-invariance

-invariant

-invariantly

-invariants

-invasion

-invasion's

-invasions

-invent

-invented

-inventing

-invention

-invention's

-inventions

-inventive

-inventively

-inventiveness

-inventor

-inventor's

-inventories

-inventors

-inventory

-inventory's

-invents

-inveracity

-inverse

-inversely

-inverses

-inversion

-inversions

-inversive

-invert

-invertebrate

-invertebrate's

-invertebrates

-inverted

-inverter

-inverters

-invertible

-inverting

-inverts

-invest

-invested

-investigate

-investigated

-investigates

-investigating

-investigation

-investigations

-investigative

-investigator

-investigator's

-investigators

-investing

-investment

-investment's

-investments

-investor

-investor's

-investors

-invests

-inviability

-inviable

-invincible

-invincibleness

-invisibility

-invisible

-invisibleness

-invisibly

-invitation

-invitation's

-invitations

-invite

-invited

-inviter

-invites

-inviting

-invitingly

-invocation

-invocation's

-invocations

-invoice

-invoiced

-invoices

-invoicing

-invokable

-invoke

-invoked

-invoker

-invokers

-invokes

-invoking

-involuntarily

-involuntariness

-involuntary

-involve

-involved

-involvedly

-involvement

-involvement's

-involvements

-involver

-involves

-involving

-invulnerable

-invulnerableness

-inward

-inwardly

-inwardness

-inwards

-inwrought

-ioctl

-iodine

-ion

-ions

-irate

-irately

-irateness

-ire

-ire's

-ires

-iris

-irises

-irk

-irked

-irking

-irks

-irksome

-irksomely

-irksomeness

-iron

-ironed

-ironer

-ironical

-ironically

-ironicalness

-ironies

-ironing

-ironings

-ironness

-irons

-ironwork

-ironwork's

-ironworker

-ironworks

-irony

-irrational

-irrationality

-irrationally

-irrationalness

-irrationals

-irrecoverable

-irrecoverableness

-irreducible

-irreducibly

-irreflexive

-irrefutable

-irregular

-irregularities

-irregularity

-irregularly

-irregulars

-irrelevance

-irrelevances

-irrelevant

-irrelevantly

-irrepressible

-irresistible

-irresistibleness

-irrespective

-irrespectively

-irresponsible

-irresponsibleness

-irresponsibly

-irreversible

-irrigate

-irrigated

-irrigates

-irrigating

-irrigation

-irrigations

-irritate

-irritated

-irritates

-irritating

-irritatingly

-irritation

-irritations

-irritative

-is

-island

-islander

-islanders

-islands

-isle

-isle's

-isles

-islet

-islet's

-islets

-isling

-isn't

-isolate

-isolated

-isolates

-isolating

-isolation

-isolations

-isometric

-isometrics

-isomorphic

-isomorphically

-isomorphism

-isomorphism's

-isomorphisms

-isotope

-isotope's

-isotopes

-ispell

-ispell's

-issuance

-issue

-issued

-issuer

-issuers

-issues

-issuing

-isthmus

-it

-it'd

-it'll

-it's

-italic

-italics

-itch

-itches

-itching

-item

-item's

-items

-iterate

-iterated

-iterates

-iterating

-iteration

-iterations

-iterative

-iteratively

-iterator

-iterator's

-iterators

-itineraries

-itinerary

-its

-itself

-iv

-ivied

-ivies

-ivories

-ivory

-ivy

-ivy's

-ix

-jab

-jab's

-jabbed

-jabbing

-jabs

-jack

-jacked

-jacker

-jacket

-jacketed

-jackets

-jacking

-jacks

-jade

-jaded

-jadedly

-jadedness

-jades

-jading

-jail

-jailed

-jailer

-jailers

-jailing

-jails

-jam

-jammed

-jamming

-jams

-janitor

-janitor's

-janitors

-jar

-jar's

-jargon

-jarred

-jarring

-jarringly

-jars

-jaunt

-jaunt's

-jaunted

-jauntier

-jauntiness

-jaunting

-jaunts

-jaunty

-javelin

-javelin's

-javelins

-jaw

-jaw's

-jawed

-jaws

-jay

-jazz

-jealous

-jealousies

-jealously

-jealousness

-jealousy

-jean

-jean's

-jeans

-jeep

-jeep's

-jeeped

-jeepers

-jeeping

-jeeps

-jeer

-jeer's

-jeerer

-jeers

-jellied

-jellies

-jelly

-jelly's

-jellyfish

-jellying

-jenny

-jerk

-jerked

-jerker

-jerkier

-jerkiness

-jerking

-jerkings

-jerks

-jerky

-jersey

-jersey's

-jerseys

-jest

-jested

-jester

-jesting

-jests

-jet

-jet's

-jets

-jetted

-jetting

-jewel

-jewelries

-jewelry

-jewels

-jig

-jig's

-jigs

-jingle

-jingled

-jingler

-jingles

-jingling

-job

-job's

-jobs

-jocks

-jocund

-jocundly

-jog

-jogs

-john

-john's

-johns

-join

-joined

-joiner

-joiners

-joining

-joins

-joint

-joint's

-jointed

-jointedly

-jointedness

-jointer

-jointing

-jointly

-jointness

-joints

-joke

-joked

-joker

-jokers

-jokes

-joking

-jokingly

-jollied

-jollier

-jollies

-jolly

-jollying

-jolt

-jolted

-jolter

-jolting

-jolts

-jostle

-jostled

-jostles

-jostling

-jot

-jots

-jotted

-jotting

-journal

-journal's

-journalism

-journalist

-journalist's

-journalistic

-journalists

-journals

-journey

-journeyed

-journeying

-journeyings

-journeys

-joust

-jousted

-jouster

-jousting

-jousts

-joy

-joy's

-joyful

-joyfully

-joyfulness

-joyous

-joyously

-joyousness

-joys

-jubilee

-judge

-judged

-judger

-judges

-judging

-judicable

-judicial

-judicially

-judiciaries

-judiciary

-judicious

-judiciously

-judiciousness

-jug

-jug's

-juggle

-juggled

-juggler

-jugglers

-juggles

-juggling

-jugs

-juice

-juice's

-juiced

-juicer

-juicers

-juices

-juicier

-juiciest

-juiciness

-juicing

-juicy

-jumble

-jumbled

-jumbles

-jumbling

-jump

-jumped

-jumper

-jumpers

-jumpier

-jumpiness

-jumping

-jumps

-jumpy

-junction

-junction's

-junctions

-juncture

-juncture's

-junctures

-jungle

-jungle's

-jungled

-jungles

-junior

-junior's

-juniors

-juniper

-junk

-junker

-junkers

-junkie

-junkies

-junks

-junky

-juries

-jurisdiction

-jurisdiction's

-jurisdictions

-juror

-juror's

-jurors

-jury

-jury's

-just

-juster

-justice

-justice's

-justices

-justifiable

-justifiably

-justification

-justifications

-justified

-justifier

-justifier's

-justifiers

-justifies

-justify

-justifying

-justing

-justly

-justness

-jut

-juvenile

-juvenile's

-juveniles

-juxtapose

-juxtaposed

-juxtaposes

-juxtaposing

-kHz

-keel

-keeled

-keeler

-keeling

-keels

-keen

-keener

-keenest

-keening

-keenly

-keenness

-keep

-keeper

-keepers

-keeping

-keeps

-ken

-kennel

-kennel's

-kennels

-kept

-kerchief

-kerchief's

-kerchiefed

-kerchiefs

-kernel

-kernel's

-kernels

-kerosene

-ketchup

-kettle

-kettle's

-kettles

-key

-keyboard

-keyboard's

-keyboarder

-keyboarding

-keyboards

-keyclick

-keyclick's

-keyclicks

-keyed

-keying

-keypad

-keypad's

-keypads

-keys

-keystroke

-keystroke's

-keystrokes

-keyword

-keyword's

-keywords

-kick

-kicked

-kicker

-kickers

-kicking

-kicks

-kid

-kid's

-kidded

-kidding

-kiddingly

-kidnap

-kidnap's

-kidnaps

-kidney

-kidney's

-kidneys

-kids

-kill

-killed

-killer

-killers

-killing

-killingly

-killings

-kills

-kilobit

-kilobits

-kilobyte

-kilobytes

-kin

-kind

-kinder

-kindergarten

-kindest

-kindhearted

-kindheartedly

-kindheartedness

-kindle

-kindled

-kindler

-kindles

-kindlier

-kindliness

-kindling

-kindly

-kindness

-kindnesses

-kindred

-kinds

-king

-kingdom

-kingdom's

-kingdoms

-kinglier

-kingliness

-kingly

-kings

-kinkier

-kinkiness

-kinky

-kinship

-kinsman

-kiss

-kissed

-kisser

-kissers

-kisses

-kissing

-kissings

-kit

-kit's

-kitchen

-kitchen's

-kitchener

-kitchens

-kite

-kited

-kiter

-kites

-kiting

-kits

-kitsch

-kitten

-kitten's

-kittened

-kittening

-kittens

-kitties

-kitty

-kludge

-kludge's

-kludged

-kludger

-kludger's

-kludgers

-kludges

-kludgey

-kludging

-klutz

-klutz's

-klutzes

-klutziness

-klutzy

-knack

-knacker

-knacks

-knapsack

-knapsack's

-knapsacks

-knave

-knave's

-knaves

-knead

-kneaded

-kneader

-kneading

-kneads

-knee

-kneed

-kneeing

-kneel

-kneeled

-kneeler

-kneeling

-kneels

-knees

-knell

-knell's

-knells

-knelt

-knew

-knife

-knifed

-knifes

-knifing

-knight

-knighted

-knighthood

-knighting

-knightliness

-knightly

-knights

-knit

-knits

-knives

-knob

-knob's

-knobs

-knock

-knocked

-knocker

-knockers

-knocking

-knocks

-knoll

-knoll's

-knolls

-knot

-knot's

-knots

-knotted

-knotting

-know

-knowable

-knower

-knowhow

-knowing

-knowingly

-knowledge

-knowledgeable

-knowledgeableness

-knowledges

-known

-knows

-knuckle

-knuckled

-knuckles

-knuckling

-kudos

-lab

-lab's

-label

-label's

-labels

-laboratories

-laboratory

-laboratory's

-labs

-labyrinth

-labyrinths

-lace

-laced

-lacer

-lacerate

-lacerated

-lacerates

-lacerating

-laceration

-lacerations

-lacerative

-laces

-lacing

-lack

-lackadaisical

-lackadaisically

-lacked

-lacker

-lacking

-lacks

-lacquer

-lacquered

-lacquerer

-lacquerers

-lacquering

-lacquers

-lad

-ladder

-ladders

-laded

-laden

-ladened

-ladening

-ladies

-lading

-lads

-lady

-lady's

-lag

-lager

-lagers

-lagged

-lagoon

-lagoon's

-lagoons

-lags

-laid

-lain

-lair

-lair's

-lairs

-lake

-lake's

-laker

-lakes

-laking

-lamb

-lamb's

-lambda

-lambda's

-lambdas

-lamber

-lambs

-lame

-lamed

-lamely

-lameness

-lament

-lamentable

-lamentableness

-lamentation

-lamentation's

-lamentations

-lamented

-lamenting

-laments

-lamer

-lames

-lamest

-laminar

-laming

-lamp

-lamp's

-lamper

-lamps

-lance

-lanced

-lancer

-lancers

-lances

-lancing

-land

-landed

-lander

-landers

-landing

-landings

-landladies

-landlady

-landlady's

-landlord

-landlord's

-landlords

-landmark

-landmark's

-landmarks

-landowner

-landowner's

-landowners

-lands

-landscape

-landscaped

-landscaper

-landscapes

-landscaping

-lane

-lane's

-lanes

-language

-language's

-languages

-languid

-languidly

-languidness

-languish

-languished

-languisher

-languishes

-languishing

-languishingly

-lantern

-lantern's

-lanterns

-lap

-lap's

-lapel

-lapel's

-lapels

-laps

-lapse

-lapsed

-lapser

-lapses

-lapsing

-lard

-larded

-larder

-larding

-lards

-large

-largely

-largeness

-larger

-largest

-lark

-lark's

-larker

-larks

-larva

-larvae

-larvas

-laser

-laser's

-lasers

-lash

-lashed

-lasher

-lashes

-lashing

-lashings

-lass

-lass's

-lasses

-last

-lasted

-laster

-lasting

-lastingly

-lastingness

-lastly

-lasts

-latch

-latched

-latches

-latching

-late

-lated

-lately

-latencies

-latency

-latency's

-lateness

-latent

-latently

-latents

-later

-lateral

-laterally

-latest

-latex

-latex's

-latexes

-lath

-lather

-lathered

-latherer

-lathering

-lathes

-lathing

-latitude

-latitude's

-latitudes

-latrine

-latrine's

-latrines

-latter

-latter's

-latterly

-lattice

-lattice's

-latticed

-lattices

-latticing

-laugh

-laughable

-laughableness

-laughably

-laughed

-laugher

-laughers

-laughing

-laughingly

-laughs

-laughter

-laughters

-launch

-launched

-launcher

-launchers

-launches

-launching

-launchings

-launder

-laundered

-launderer

-laundering

-launderings

-launders

-laundries

-laundry

-laurel

-laurel's

-laurels

-lava

-lavatories

-lavatory

-lavatory's

-lavender

-lavendered

-lavendering

-lavish

-lavished

-lavishing

-lavishly

-lavishness

-law

-law's

-lawful

-lawfully

-lawfulness

-lawless

-lawlessly

-lawlessness

-lawn

-lawn's

-lawns

-laws

-lawsuit

-lawsuit's

-lawsuits

-lawyer

-lawyer's

-lawyerly

-lawyers

-lay

-layer

-layered

-layering

-layers

-laying

-layman

-laymen

-layoffs

-layout

-layout's

-layouts

-lays

-lazed

-lazied

-lazier

-laziest

-lazily

-laziness

-lazing

-lazy

-lazying

-lead

-leaded

-leaden

-leadenly

-leadenness

-leader

-leader's

-leaders

-leadership

-leadership's

-leaderships

-leading

-leadings

-leads

-leaf

-leafed

-leafier

-leafiest

-leafing

-leafless

-leaflet

-leaflet's

-leaflets

-leafs

-leafy

-league

-leagued

-leaguer

-leaguers

-leagues

-leaguing

-leak

-leakage

-leakage's

-leakages

-leaked

-leaker

-leaking

-leaks

-lean

-leaned

-leaner

-leanest

-leaning

-leanings

-leanly

-leanness

-leans

-leap

-leaped

-leaper

-leaping

-leaps

-leapt

-learn

-learned

-learnedly

-learnedness

-learner

-learners

-learning

-learnings

-learns

-lease

-leased

-leases

-leash

-leash's

-leashes

-leasing

-least

-leather

-leathered

-leathering

-leathern

-leathers

-leave

-leaved

-leaven

-leavened

-leavening

-leaver

-leavers

-leaves

-leaving

-leavings

-lecture

-lectured

-lecturer

-lecturers

-lectures

-lecturing

-led

-ledge

-ledger

-ledgers

-ledges

-lee

-leech

-leech's

-leeches

-leer

-leered

-leering

-leers

-lees

-left

-leftist

-leftist's

-leftists

-leftmost

-leftover

-leftover's

-leftovers

-lefts

-leftward

-leftwards

-leg

-legacies

-legacy

-legacy's

-legal

-legalities

-legality

-legally

-legals

-legend

-legend's

-legendary

-legends

-legged

-leggings

-legibility

-legible

-legibly

-legion

-legion's

-legions

-legislate

-legislated

-legislates

-legislating

-legislation

-legislations

-legislative

-legislatively

-legislator

-legislator's

-legislators

-legislature

-legislature's

-legislatures

-legitimacy

-legitimate

-legitimated

-legitimately

-legitimates

-legitimating

-legitimation

-legs

-leisure

-leisured

-leisureliness

-leisurely

-lemma

-lemma's

-lemmas

-lemon

-lemon's

-lemonade

-lemons

-lend

-lender

-lenders

-lending

-lends

-length

-lengthen

-lengthened

-lengthener

-lengthening

-lengthens

-lengthier

-lengthiness

-lengthly

-lengths

-lengthwise

-lengthy

-leniency

-lenient

-leniently

-lens

-lens's

-lensed

-lenser

-lensers

-lenses

-lensing

-lensings

-lent

-lentil

-lentil's

-lentils

-leopard

-leopard's

-leopards

-leprosy

-less

-lessen

-lessened

-lessening

-lessens

-lesser

-lesses

-lessing

-lesson

-lesson's

-lessoned

-lessoning

-lessons

-lest

-lester

-let

-let's

-lets

-letter

-lettered

-letterer

-lettering

-letters

-letting

-lettuce

-levee

-levee's

-leveed

-levees

-level

-levelly

-levelness

-levels

-lever

-lever's

-leverage

-leveraged

-leverages

-leveraging

-levered

-levering

-levers

-levied

-levier

-levies

-levy

-levying

-lewd

-lewdly

-lewdness

-lexical

-lexically

-lexicographic

-lexicographical

-lexicographically

-lexicon

-lexicon's

-lexicons

-liabilities

-liability

-liability's

-liable

-liableness

-liaison

-liaison's

-liaisons

-liar

-liar's

-liars

-liberal

-liberally

-liberalness

-liberals

-liberate

-liberated

-liberates

-liberating

-liberation

-liberator

-liberator's

-liberators

-liberties

-liberty

-liberty's

-libido

-librarian

-librarian's

-librarians

-libraries

-library

-library's

-libretti

-license

-licensed

-licensee

-licensee's

-licensees

-licenser

-licenses

-licensing

-lichen

-lichen's

-lichened

-lichens

-lick

-licked

-licker

-licking

-licks

-lid

-lid's

-lids

-lie

-lied

-lieder

-liege

-lien

-lien's

-liens

-lier

-lies

-lieu

-lieutenant

-lieutenant's

-lieutenants

-life

-life's

-lifeless

-lifelessly

-lifelessness

-lifelike

-lifelikeness

-lifelong

-lifer

-lifers

-lifestyle

-lifestyles

-lifetime

-lifetime's

-lifetimes

-lift

-lifted

-lifter

-lifters

-lifting

-lifts

-light

-lighted

-lighten

-lightened

-lightener

-lightening

-lightens

-lighter

-lighter's

-lighters

-lightest

-lighthouse

-lighthouse's

-lighthouses

-lighting

-lightly

-lightness

-lightning

-lightning's

-lightninged

-lightnings

-lights

-lightweight

-lightweights

-like

-liked

-likelier

-likeliest

-likelihood

-likelihoods

-likeliness

-likely

-liken

-likened

-likeness

-likeness's

-likenesses

-likening

-likens

-liker

-likes

-likest

-likewise

-liking

-likings

-lilac

-lilac's

-lilacs

-lilied

-lilies

-lily

-lily's

-limb

-limbed

-limber

-limbered

-limbering

-limberly

-limberness

-limbers

-limbs

-lime

-lime's

-limed

-limes

-limestone

-liming

-limit

-limitability

-limitably

-limitation

-limitation's

-limitations

-limited

-limitedly

-limitedness

-limiteds

-limiter

-limiters

-limiting

-limits

-limp

-limped

-limper

-limping

-limply

-limpness

-limps

-linden

-line

-line's

-linear

-linearities

-linearity

-linearly

-lined

-linen

-linen's

-linens

-liner

-liners

-lines

-linger

-lingered

-lingerer

-lingering

-lingeringly

-lingers

-linguist

-linguist's

-linguistic

-linguistically

-linguistics

-linguists

-lining

-linings

-link

-linkage

-linkage's

-linkages

-linked

-linker

-linkers

-linking

-linkings

-links

-linoleum

-linseed

-lint

-linter

-lints

-lion

-lion's

-lioness

-lioness's

-lionesses

-lions

-lip

-lip's

-lips

-lipstick

-liquefied

-liquefier

-liquefiers

-liquefies

-liquefy

-liquefying

-liquid

-liquid's

-liquidation

-liquidation's

-liquidations

-liquidity

-liquidly

-liquidness

-liquids

-liquor

-liquor's

-liquored

-liquoring

-liquors

-lisp

-lisp's

-lisped

-lisper

-lisping

-lisps

-list

-listed

-listen

-listened

-listener

-listeners

-listening

-listens

-lister

-listers

-listing

-listing's

-listings

-lists

-lit

-literacy

-literal

-literally

-literalness

-literals

-literariness

-literary

-literate

-literately

-literateness

-literation

-literature

-literature's

-literatures

-lithe

-lithely

-litheness

-litigate

-litigated

-litigates

-litigating

-litigation

-litigator

-litter

-littered

-litterer

-littering

-litters

-little

-littleness

-littler

-littlest

-livable

-livableness

-livably

-live

-lived

-livelier

-liveliest

-livelihood

-liveliness

-lively

-liven

-livened

-liveness

-livening

-liver

-liveried

-livers

-livery

-lives

-livest

-liveth

-living

-livingly

-livingness

-livings

-lizard

-lizard's

-lizards

-load

-loaded

-loader

-loaders

-loading

-loadings

-loads

-loaf

-loafed

-loafer

-loafers

-loafing

-loafs

-loan

-loaned

-loaner

-loaning

-loans

-loath

-loathe

-loathed

-loather

-loathes

-loathing

-loathly

-loathness

-loathsome

-loathsomely

-loathsomeness

-loaves

-lobbied

-lobbies

-lobby

-lobbying

-lobe

-lobe's

-lobed

-lobes

-lobster

-lobster's

-lobsters

-local

-localities

-locality

-locality's

-locally

-locals

-locate

-located

-locater

-locates

-locating

-location

-locations

-locative

-locatives

-locator

-locator's

-locators

-loci

-lock

-locked

-locker

-lockers

-locking

-lockings

-lockout

-lockout's

-lockouts

-locks

-lockup

-lockup's

-lockups

-locomotion

-locomotive

-locomotive's

-locomotively

-locomotives

-locus

-locus's

-locust

-locust's

-locusts

-lodge

-lodged

-lodger

-lodger's

-lodgers

-lodges

-lodging

-lodgings

-loft

-loft's

-lofter

-loftier

-loftiness

-lofts

-lofty

-log

-log's

-logarithm

-logarithm's

-logarithmically

-logarithms

-logged

-logger

-logger's

-loggers

-logging

-logic

-logic's

-logical

-logically

-logicalness

-logicals

-logician

-logician's

-logicians

-logics

-login

-logins

-logistic

-logistics

-logout

-logs

-loin

-loin's

-loins

-loiter

-loitered

-loiterer

-loitering

-loiters

-lone

-lonelier

-loneliest

-loneliness

-lonely

-loneness

-loner

-loners

-lonesome

-lonesomely

-lonesomeness

-long

-longed

-longer

-longest

-longing

-longingly

-longings

-longitude

-longitude's

-longitudes

-longly

-longness

-longs

-longword

-longword's

-longwords

-look

-lookahead

-looked

-looker

-lookers

-looking

-lookout

-lookouts

-looks

-lookup

-lookup's

-lookups

-loom

-loomed

-looming

-looms

-loon

-loop

-looped

-looper

-loophole

-loophole's

-loopholed

-loopholes

-loopholing

-looping

-loops

-loose

-loosed

-loosely

-loosen

-loosened

-loosener

-looseness

-loosening

-loosens

-looser

-looses

-loosest

-loosing

-loot

-looted

-looter

-looting

-loots

-lord

-lord's

-lording

-lordlier

-lordliness

-lordly

-lords

-lordship

-lore

-lorries

-lorry

-lose

-loser

-losers

-loses

-losing

-losings

-loss

-loss's

-losses

-lossier

-lossiest

-lossy

-lost

-lostness

-lot

-lot's

-lots

-lotteries

-lottery

-lotus

-loud

-louden

-loudened

-loudening

-louder

-loudest

-loudly

-loudness

-loudspeaker

-loudspeaker's

-loudspeakers

-lounge

-lounged

-lounger

-loungers

-lounges

-lounging

-lousier

-lousiness

-lousy

-lovable

-lovableness

-lovably

-love

-love's

-loved

-lovelier

-lovelies

-loveliest

-loveliness

-lovely

-lover

-lover's

-lovering

-loverly

-lovers

-loves

-loving

-lovingly

-lovingness

-low

-lower

-lowered

-lowering

-lowers

-lowest

-lowing

-lowland

-lowlander

-lowlands

-lowlier

-lowliest

-lowliness

-lowly

-lowness

-lows

-loyal

-loyally

-loyalties

-loyalty

-loyalty's

-lubricant

-lubricant's

-lubricants

-lubrication

-luck

-lucked

-luckier

-luckiest

-luckily

-luckiness

-luckless

-lucks

-lucky

-ludicrous

-ludicrously

-ludicrousness

-luggage

-lukewarm

-lukewarmly

-lukewarmness

-lull

-lullaby

-lulled

-lulls

-lumber

-lumbered

-lumberer

-lumbering

-lumbers

-luminous

-luminously

-luminousness

-lump

-lumped

-lumpen

-lumper

-lumping

-lumps

-lunar

-lunatic

-lunatics

-lunch

-lunched

-luncheon

-luncheon's

-luncheons

-luncher

-lunches

-lunching

-lung

-lunged

-lunger

-lunging

-lungs

-lurch

-lurched

-lurcher

-lurches

-lurching

-lure

-lured

-lurer

-lures

-luring

-lurk

-lurked

-lurker

-lurkers

-lurking

-lurks

-luscious

-lusciously

-lusciousness

-lust

-lustier

-lustily

-lustiness

-lusting

-lustrous

-lustrously

-lustrousness

-lusts

-lusty

-lute

-lute's

-luted

-lutes

-luting

-luxuriant

-luxuriantly

-luxuries

-luxurious

-luxuriously

-luxuriousness

-luxury

-luxury's

-lying

-lyingly

-lyings

-lymph

-lynch

-lynched

-lyncher

-lynches

-lynx

-lynx's

-lynxes

-lyre

-lyre's

-lyres

-lyric

-lyrics

-ma'am

-macaroni

-macaroni's

-mace

-maced

-macer

-maces

-machine

-machine's

-machined

-machineries

-machinery

-machines

-machining

-macing

-macro

-macro's

-macroeconomics

-macromolecule

-macromolecule's

-macromolecules

-macros

-macroscopic

-mad

-madam

-madams

-madden

-maddened

-maddening

-maddeningly

-madder

-maddest

-made

-mademoiselle

-mademoiselles

-madly

-madman

-madness

-madras

-magazine

-magazine's

-magazined

-magazines

-magazining

-maggot

-maggot's

-maggots

-magic

-magical

-magically

-magician

-magician's

-magicians

-magistrate

-magistrate's

-magistrates

-magnesium

-magnesiums

-magnet

-magnet's

-magnetic

-magnetically

-magnetics

-magnetism

-magnetism's

-magnetisms

-magnets

-magnification

-magnifications

-magnificence

-magnificent

-magnificently

-magnified

-magnifier

-magnifiers

-magnifies

-magnify

-magnifying

-magnitude

-magnitude's

-magnitudes

-mahogany

-maid

-maid's

-maiden

-maidenliness

-maidenly

-maidens

-maids

-mail

-mailable

-mailbox

-mailbox's

-mailboxes

-mailed

-mailer

-mailer's

-mailers

-mailing

-mailings

-mails

-maim

-maimed

-maimedness

-maimer

-maimers

-maiming

-maims

-main

-mainframe

-mainframe's

-mainframes

-mainland

-mainlander

-mainlanders

-mainly

-mains

-mainstay

-maintain

-maintainability

-maintainable

-maintained

-maintainer

-maintainer's

-maintainers

-maintaining

-maintains

-maintenance

-maintenance's

-maintenances

-majestic

-majesties

-majesty

-majesty's

-major

-majored

-majoring

-majorities

-majority

-majority's

-majors

-makable

-make

-makefile

-makefiles

-maker

-makers

-makes

-makeshift

-makeshifts

-makeup

-makeups

-making

-makings

-maladies

-malady

-malady's

-malaria

-male

-male's

-malefactor

-malefactor's

-malefactors

-maleness

-males

-malfunction

-malfunctioned

-malfunctioning

-malfunctions

-malice

-malicious

-maliciously

-maliciousness

-malignant

-malignantly

-mall

-mall's

-mallet

-mallet's

-mallets

-malls

-malnutrition

-malt

-malted

-malting

-malts

-mama

-mamma

-mamma's

-mammal

-mammal's

-mammals

-mammas

-mammoth

-man

-man's

-manage

-manageable

-manageableness

-managed

-management

-management's

-managements

-manager

-manager's

-managerial

-managerially

-managers

-manages

-managing

-mandate

-mandated

-mandates

-mandating

-mandatories

-mandatory

-mandible

-mandolin

-mandolin's

-mandolins

-mane

-mane's

-maned

-manes

-manger

-manger's

-mangers

-mangle

-mangled

-mangler

-mangles

-mangling

-manhood

-maniac

-maniac's

-maniacs

-manicure

-manicured

-manicures

-manicuring

-manifest

-manifestation

-manifestation's

-manifestations

-manifested

-manifesting

-manifestly

-manifestness

-manifests

-manifold

-manifold's

-manifolder

-manifoldly

-manifoldness

-manifolds

-manipulability

-manipulable

-manipulatable

-manipulate

-manipulated

-manipulates

-manipulating

-manipulation

-manipulations

-manipulative

-manipulativeness

-manipulator

-manipulator's

-manipulators

-manipulatory

-mankind

-manlier

-manliest

-manliness

-manly

-manned

-manner

-mannered

-mannerliness

-mannerly

-manners

-manning

-manometer

-manometer's

-manometers

-manor

-manor's

-manors

-manpower

-mans

-mansion

-mansion's

-mansions

-mantel

-mantel's

-mantels

-mantissa

-mantissa's

-mantissas

-mantle

-mantle's

-mantled

-mantles

-mantling

-manual

-manual's

-manually

-manuals

-manufacture

-manufactured

-manufacturer

-manufacturer's

-manufacturers

-manufactures

-manufacturing

-manure

-manured

-manurer

-manurers

-manures

-manuring

-manuscript

-manuscript's

-manuscripts

-many

-map

-map's

-maple

-maple's

-maples

-mappable

-mapped

-mapping

-mapping's

-mappings

-maps

-mar

-marble

-marbled

-marbler

-marbles

-marbling

-march

-marched

-marcher

-marches

-marching

-mare

-mare's

-mares

-margin

-margin's

-marginal

-marginally

-marginals

-margined

-margining

-margins

-marigold

-marigold's

-marigolds

-marijuana

-marijuana's

-marinate

-marinated

-marinates

-marinating

-marine

-mariner

-marines

-maritime

-maritimer

-mark

-markable

-marked

-markedly

-marker

-markers

-market

-marketability

-marketable

-marketed

-marketer

-marketing

-marketings

-marketplace

-marketplace's

-marketplaces

-markets

-marking

-markings

-marks

-marquis

-marquises

-marriage

-marriage's

-marriages

-married

-marries

-marrow

-marrows

-marry

-marrying

-mars

-marsh

-marsh's

-marshal

-marshaled

-marshaler

-marshalers

-marshaling

-marshals

-marshes

-mart

-marten

-martens

-martial

-martially

-marts

-martyr

-martyr's

-martyrdom

-martyrs

-marvel

-marvels

-masculine

-masculinely

-masculineness

-masculinity

-mash

-mashed

-masher

-mashers

-mashes

-mashing

-mashings

-mask

-masked

-masker

-masking

-maskings

-masks

-masochist

-masochist's

-masochists

-mason

-mason's

-masoned

-masoning

-masonry

-masons

-masquerade

-masquerader

-masquerades

-masquerading

-mass

-massacre

-massacred

-massacrer

-massacres

-massacring

-massage

-massaged

-massager

-massages

-massaging

-massed

-masses

-massing

-massinger

-massive

-massively

-massiveness

-mast

-masted

-master

-master's

-mastered

-masterful

-masterfully

-masterfulness

-mastering

-masterings

-masterliness

-masterly

-masterpiece

-masterpiece's

-masterpieces

-masters

-mastery

-masts

-masturbate

-masturbated

-masturbates

-masturbating

-masturbation

-mat

-mat's

-match

-matchable

-matched

-matcher

-matchers

-matches

-matching

-matchings

-matchless

-matchlessly

-matchmaker

-matchmaker's

-matchmakers

-matchmaking

-matchmaking's

-mate

-mate's

-mated

-mater

-material

-materialism

-materialism's

-materially

-materialness

-materials

-maternal

-maternally

-mates

-math

-mathematical

-mathematically

-mathematician

-mathematician's

-mathematicians

-mathematics

-mating

-matings

-matrices

-matriculation

-matrimony

-matrix

-matrixes

-matron

-matronly

-mats

-matted

-matter

-mattered

-mattering

-matters

-mattress

-mattress's

-mattresses

-maturation

-mature

-matured

-maturely

-matureness

-maturer

-matures

-maturing

-maturities

-maturity

-max

-maxim

-maxim's

-maximal

-maximally

-maxims

-maximum

-maximumly

-maximums

-may

-maybe

-mayer

-mayest

-mayhap

-mayhem

-maying

-mayonnaise

-mayor

-mayor's

-mayoral

-mayors

-mays

-maze

-maze's

-mazed

-mazedly

-mazedness

-mazednesses

-mazer

-mazes

-mazing

-me

-mead

-meadow

-meadow's

-meadows

-meads

-meager

-meagerly

-meagerness

-meal

-meal's

-meals

-mean

-meander

-meandered

-meandering

-meanderings

-meanders

-meaner

-meanest

-meaning

-meaning's

-meaningful

-meaningfully

-meaningfulness

-meaningless

-meaninglessly

-meaninglessness

-meanings

-meanly

-meanness

-means

-meant

-meantime

-meanwhile

-measles

-measurable

-measurably

-measure

-measured

-measuredly

-measurement

-measurement's

-measurements

-measurer

-measures

-measuring

-meat

-meat's

-meats

-mechanic

-mechanic's

-mechanical

-mechanically

-mechanicals

-mechanics

-mechanism

-mechanism's

-mechanisms

-med

-medal

-medal's

-medallion

-medallion's

-medallions

-medals

-meddle

-meddled

-meddler

-meddles

-meddling

-media

-median

-median's

-medianly

-medians

-medias

-mediate

-mediated

-mediately

-mediateness

-mediates

-mediating

-mediation

-mediations

-mediative

-medic

-medic's

-medical

-medically

-medicinal

-medicinally

-medicine

-medicine's

-medicines

-medics

-medieval

-medieval's

-medievally

-medievals

-meditate

-meditated

-meditates

-meditating

-meditation

-meditations

-meditative

-meditatively

-meditativeness

-medium

-medium's

-mediums

-meek

-meeker

-meekest

-meekly

-meekness

-meet

-meeter

-meeting

-meetings

-meetly

-meets

-megabit

-megabits

-megabyte

-megabytes

-megaword

-megawords

-melancholy

-meld

-melding

-melds

-mellow

-mellowed

-mellowing

-mellowly

-mellowness

-mellows

-melodies

-melodious

-melodiously

-melodiousness

-melodrama

-melodrama's

-melodramas

-melody

-melody's

-melon

-melon's

-melons

-melt

-melted

-melter

-melting

-meltingly

-melts

-member

-member's

-membered

-members

-membership

-membership's

-memberships

-membrane

-membrane's

-membraned

-membranes

-memo

-memo's

-memoir

-memoirs

-memorability

-memorable

-memorableness

-memoranda

-memorandum

-memorandums

-memorial

-memorially

-memorials

-memories

-memory

-memory's

-memoryless

-memos

-men

-men's

-menace

-menaced

-menaces

-menacing

-menacingly

-menagerie

-menageries

-mend

-mended

-mender

-mending

-mends

-menial

-menially

-menials

-mens

-mensed

-menses

-mensing

-mental

-mentalities

-mentality

-mentally

-mention

-mentionable

-mentioned

-mentioner

-mentioners

-mentioning

-mentions

-mentor

-mentor's

-mentors

-menu

-menu's

-menus

-mer

-mercenaries

-mercenariness

-mercenary

-mercenary's

-merchandise

-merchandised

-merchandiser

-merchandises

-merchandising

-merchant

-merchant's

-merchants

-mercies

-merciful

-mercifully

-mercifulness

-merciless

-mercilessly

-mercilessness

-mercuries

-mercury

-mercy

-mere

-merely

-merest

-merge

-merged

-merger

-mergers

-merges

-merging

-meridian

-meridians

-merit

-merited

-meriting

-meritorious

-meritoriously

-meritoriousness

-merits

-merrier

-merriest

-merrily

-merriment

-merriments

-merriness

-merry

-mesh

-meshed

-meshes

-meshing

-mess

-message

-message's

-messaged

-messages

-messaging

-messed

-messenger

-messenger's

-messengers

-messes

-messiah

-messiahs

-messier

-messiest

-messieurs

-messily

-messiness

-messing

-messy

-met

-meta

-metacircular

-metacircularity

-metal

-metal's

-metalanguage

-metalanguages

-metallic

-metallurgy

-metals

-metamathematical

-metamorphosis

-metaphor

-metaphor's

-metaphorical

-metaphorically

-metaphors

-metaphysical

-metaphysically

-metaphysics

-metavariable

-mete

-meted

-meteor

-meteor's

-meteoric

-meteorology

-meteors

-meter

-meter's

-metered

-metering

-meters

-metes

-method

-method's

-methodical

-methodically

-methodicalness

-methodist

-methodist's

-methodists

-methodological

-methodologically

-methodologies

-methodologists

-methodology

-methodology's

-methods

-meting

-metric

-metric's

-metrical

-metrically

-metrics

-metropolis

-metropolitan

-mets

-mew

-mewed

-mews

-mica

-mice

-microbicidal

-microbicide

-microcode

-microcoded

-microcodes

-microcoding

-microcomputer

-microcomputer's

-microcomputers

-microeconomics

-microfilm

-microfilm's

-microfilmed

-microfilmer

-microfilms

-microinstruction

-microinstruction's

-microinstructions

-microphone

-microphones

-microphoning

-microprocessing

-microprocessor

-microprocessor's

-microprocessors

-microprogram

-microprogram's

-microprogrammed

-microprogramming

-microprograms

-microscope

-microscope's

-microscopes

-microscopic

-microsecond

-microsecond's

-microseconds

-microstore

-microwave

-microwave's

-microwaves

-microword

-microwords

-mid

-midday

-middle

-middled

-middler

-middles

-middling

-middlingly

-middlings

-midnight

-midnightly

-midnights

-midpoint

-midpoint's

-midpoints

-midst

-midsts

-midsummer

-midway

-midways

-midwinter

-midwinterly

-mien

-miens

-mies

-miff

-miffed

-miffing

-miffs

-might

-mightier

-mightiest

-mightily

-mightiness

-mights

-mighty

-migrate

-migrated

-migrates

-migrating

-migration

-migrations

-migrative

-mild

-milden

-milder

-mildest

-mildew

-mildews

-mildly

-mildness

-mile

-mile's

-mileage

-mileages

-miler

-miles

-milestone

-milestone's

-milestones

-militant

-militantly

-militantness

-militants

-militaries

-militarily

-militarism

-militarisms

-military

-militia

-militias

-milk

-milked

-milker

-milkers

-milkier

-milkiness

-milking

-milkmaid

-milkmaid's

-milkmaids

-milks

-milky

-mill

-milled

-miller

-millers

-millet

-milling

-million

-millionaire

-millionaire's

-millionaires

-millioned

-millions

-millionth

-millipede

-millipede's

-millipedes

-millisecond

-milliseconds

-mills

-millstone

-millstone's

-millstones

-mimic

-mimicked

-mimicking

-mimics

-mince

-minced

-mincer

-mincers

-minces

-mincing

-mincingly

-mind

-minded

-mindedness

-minder

-minders

-mindful

-mindfully

-mindfulness

-minding

-mindless

-mindlessly

-mindlessness

-minds

-mine

-mined

-miner

-mineral

-mineral's

-minerals

-miners

-mines

-ming

-mingle

-mingled

-mingles

-mingling

-miniature

-miniature's

-miniatured

-miniatures

-miniaturing

-minicomputer

-minicomputer's

-minicomputers

-minimal

-minimally

-minimum

-minimums

-mining

-minion

-minions

-minister

-minister's

-ministered

-ministering

-ministers

-ministries

-ministry

-ministry's

-mink

-mink's

-minks

-minnow

-minnow's

-minnows

-minor

-minor's

-minored

-minoring

-minorities

-minority

-minority's

-minors

-minstrel

-minstrel's

-minstrels

-mint

-minted

-minter

-minting

-mints

-minus

-minuses

-minute

-minuted

-minutely

-minuteness

-minuter

-minutes

-minutest

-minuting

-miracle

-miracle's

-miracles

-miraculous

-miraculously

-miraculousness

-mire

-mired

-mires

-miring

-mirror

-mirrored

-mirroring

-mirrors

-mirth

-misapplication

-misapplied

-misapplier

-misapplies

-misapply

-misapplying

-misbehaving

-miscalculation

-miscalculation's

-miscalculations

-miscellaneous

-miscellaneously

-miscellaneousness

-mischief

-mischievous

-mischievously

-mischievousness

-miscommunicate

-miscommunicated

-miscommunicates

-miscommunication

-misconception

-misconception's

-misconceptions

-misconstrue

-misconstrued

-misconstrues

-misconstruing

-misdirect

-misdirected

-misdirection

-misdirects

-miser

-miserable

-miserableness

-miserably

-miseries

-miserliness

-miserly

-misers

-misery

-misery's

-misfeature

-misfit

-misfit's

-misfits

-misfortune

-misfortune's

-misfortunes

-misgiving

-misgivingly

-misgivings

-misguide

-misguided

-misguidedly

-misguidedness

-misguider

-misguides

-misguiding

-mishap

-mishap's

-mishaps

-misinform

-misinformation

-misinformed

-misinforming

-misinforms

-misinterpret

-misinterpreted

-misinterpreter

-misinterpreters

-misinterpreting

-misinterprets

-mislead

-misleader

-misleading

-misleadingly

-misleadings

-misleads

-misled

-mismatch

-mismatched

-mismatches

-mismatching

-misnomer

-misnomered

-misperceive

-misperceived

-misperceives

-misplace

-misplaced

-misplaces

-misplacing

-misread

-misreader

-misreading

-misreads

-misrepresentation

-misrepresentation's

-misrepresentations

-miss

-missed

-misses

-missile

-missile's

-missiles

-missing

-mission

-missionaries

-missionary

-missionary's

-missioned

-missioner

-missioning

-missions

-missive

-missives

-misspell

-misspelled

-misspelling

-misspellings

-misspells

-misstate

-misstated

-misstater

-misstates

-misstating

-mist

-mistakable

-mistake

-mistaken

-mistakenly

-mistaker

-mistakes

-mistaking

-mistakingly

-misted

-mister

-mistered

-mistering

-misters

-mistier

-mistiest

-mistiness

-misting

-mistreat

-mistreated

-mistreating

-mistreats

-mistress

-mistressly

-mistrust

-mistrusted

-mistruster

-mistrusting

-mistrusts

-mists

-misty

-mistype

-mistyped

-mistypes

-mistyping

-misunderstand

-misunderstander

-misunderstanders

-misunderstanding

-misunderstanding's

-misunderstandings

-misunderstands

-misunderstood

-misuse

-misused

-misuser

-misuses

-misusing

-mite

-mites

-mitigate

-mitigated

-mitigates

-mitigating

-mitigation

-mitigations

-mitigative

-mitten

-mitten's

-mittens

-mix

-mixed

-mixer

-mixers

-mixes

-mixing

-mixture

-mixture's

-mixtures

-ml

-mnemonic

-mnemonic's

-mnemonically

-mnemonics

-moan

-moaned

-moaning

-moans

-moat

-moat's

-moats

-mob

-mob's

-mobility

-mobs

-moccasin

-moccasin's

-moccasins

-mock

-mocked

-mocker

-mockers

-mockery

-mocking

-mockingly

-mocks

-modal

-modalities

-modality

-modality's

-modally

-mode

-model

-model's

-models

-modem

-modems

-moderate

-moderated

-moderately

-moderateness

-moderates

-moderating

-moderation

-moderations

-moderator

-moderator's

-moderators

-modern

-modernity

-modernly

-modernness

-moderns

-modes

-modest

-modestly

-modesty

-modifiability

-modifiable

-modifiableness

-modification

-modifications

-modified

-modifier

-modifiers

-modifies

-modify

-modifying

-modular

-modularities

-modularity

-modularly

-modulate

-modulated

-modulates

-modulating

-modulation

-modulations

-modulator

-modulator's

-modulators

-module

-module's

-modules

-modulo

-modulus

-modus

-moist

-moisten

-moistened

-moistener

-moistening

-moistly

-moistness

-moisture

-moistures

-molasses

-mold

-molded

-molder

-moldered

-moldering

-molders

-moldier

-moldiness

-molding

-molds

-moldy

-mole

-molecular

-molecularly

-molecule

-molecule's

-molecules

-moles

-molest

-molested

-molester

-molesters

-molesting

-molests

-molten

-mom

-mom's

-moment

-moment's

-momentarily

-momentariness

-momentary

-momently

-momentous

-momentously

-momentousness

-moments

-momentum

-momentums

-moms

-monarch

-monarchies

-monarchs

-monarchy

-monarchy's

-monasteries

-monastery

-monastery's

-monastic

-monetary

-money

-money's

-moneyed

-moneyer

-moneys

-monitor

-monitored

-monitoring

-monitors

-monk

-monk's

-monkey

-monkeyed

-monkeying

-monkeys

-monks

-mono

-mono's

-monochrome

-monochromes

-monograph

-monograph's

-monographes

-monographs

-monolithic

-monopolies

-monopoly

-monopoly's

-monotheism

-monotone

-monotonic

-monotonically

-monotonicity

-monotonous

-monotonously

-monotonousness

-monotony

-monster

-monster's

-monsters

-monstrous

-monstrously

-monstrousness

-month

-month's

-monthlies

-monthly

-months

-monument

-monument's

-monumental

-monumentally

-monuments

-mood

-mood's

-moodier

-moodiness

-moods

-moody

-moon

-mooned

-mooning

-moonlight

-moonlighted

-moonlighter

-moonlighting

-moonlights

-moonlit

-moons

-moonshine

-moonshiner

-moor

-moor's

-moored

-mooring

-moorings

-moors

-moose

-moot

-mooted

-mop

-moped

-moper

-moping

-mops

-moral

-moral's

-morale

-morales

-moralities

-morality

-morally

-morals

-morass

-morasses

-morbid

-morbidly

-morbidness

-more

-mored

-moreover

-mores

-morion

-morn

-morning

-mornings

-morphological

-morphologically

-morphology

-morrow

-morsel

-morsel's

-morsels

-mortal

-mortality

-mortally

-mortals

-mortar

-mortared

-mortaring

-mortars

-mortgage

-mortgage's

-mortgaged

-mortgager

-mortgages

-mortgaging

-mortification

-mortifications

-mortified

-mortifiedly

-mortifier

-mortifies

-mortify

-mortifying

-mosaic

-mosaic's

-mosaics

-mosquito

-mosquitoes

-mosquitos

-moss

-moss's

-mosses

-mossier

-mossy

-most

-mostly

-motel

-motel's

-motels

-moth

-mother

-mother's

-motherboard

-motherboard's

-motherboards

-mothered

-motherer

-motherers

-mothering

-motherliness

-motherly

-mothers

-motif

-motif's

-motifs

-motion

-motioned

-motioner

-motioning

-motionless

-motionlessly

-motionlessness

-motions

-motivate

-motivated

-motivates

-motivating

-motivation

-motivational

-motivationally

-motivations

-motivative

-motive

-motived

-motives

-motiving

-motley

-motor

-motorcar

-motorcar's

-motorcars

-motorcycle

-motorcycle's

-motorcycles

-motored

-motoring

-motorist

-motorist's

-motorists

-motors

-motto

-mottoes

-mottos

-mould

-moulded

-moulder

-mouldering

-moulding

-moulds

-mound

-mounded

-mounds

-mount

-mountain

-mountain's

-mountaineer

-mountaineering

-mountaineers

-mountainous

-mountainously

-mountainousness

-mountains

-mounted

-mounter

-mounting

-mountings

-mounts

-mourn

-mourned

-mourner

-mourners

-mournful

-mournfully

-mournfulness

-mourning

-mourningly

-mourns

-mouse

-mouser

-mouses

-mousing

-mouth

-mouthed

-mouther

-mouthes

-mouthful

-mouthing

-mouths

-movable

-movableness

-move

-moved

-movement

-movement's

-movements

-mover

-movers

-moves

-movie

-movie's

-movies

-moving

-movingly

-movings

-mow

-mowed

-mower

-mowers

-mowing

-mows

-much

-muchness

-muck

-mucked

-mucker

-mucking

-mucks

-mud

-muddied

-muddier

-muddiness

-muddle

-muddled

-muddler

-muddlers

-muddles

-muddling

-muddy

-muddying

-muds

-muff

-muff's

-muffin

-muffin's

-muffins

-muffle

-muffled

-muffler

-mufflers

-muffles

-muffling

-muffs

-mug

-mug's

-mugs

-mulberries

-mulberry

-mulberry's

-mule

-mule's

-mules

-muling

-multicellular

-multicomponent

-multidimensional

-multilevel

-multinational

-multiple

-multiple's

-multiples

-multiplex

-multiplexed

-multiplexer

-multiplexers

-multiplexes

-multiplexing

-multiplexor

-multiplexor's

-multiplexors

-multiplicand

-multiplicand's

-multiplicands

-multiplication

-multiplications

-multiplicative

-multiplicatively

-multiplicatives

-multiplicity

-multiplied

-multiplier

-multipliers

-multiplies

-multiply

-multiplying

-multiprocess

-multiprocessing

-multiprocessor

-multiprocessor's

-multiprocessors

-multiprogram

-multiprogrammed

-multiprogramming

-multiprogrammings

-multistage

-multitasking

-multitude

-multitude's

-multitudes

-multiuser

-multivariate

-mumble

-mumbled

-mumbler

-mumblers

-mumbles

-mumbling

-mumblings

-mummies

-mummy

-mummy's

-munch

-munched

-muncher

-munches

-munching

-mundane

-mundanely

-mundaneness

-municipal

-municipalities

-municipality

-municipality's

-municipally

-munition

-munitions

-mural

-murals

-murder

-murdered

-murderer

-murderers

-murdering

-murderous

-murderously

-murderousness

-murders

-murkier

-murkiness

-murky

-murmur

-murmured

-murmurer

-murmuring

-murmurs

-muscle

-muscled

-muscles

-muscling

-muscular

-muscularly

-muse

-mused

-muser

-muses

-museum

-museum's

-museums

-mushier

-mushiness

-mushroom

-mushroomed

-mushrooming

-mushrooms

-mushy

-music

-musical

-musically

-musicals

-musician

-musicianly

-musicians

-musics

-musing

-musingly

-musings

-musk

-musket

-musket's

-muskets

-muskrat

-muskrat's

-muskrats

-musks

-muslin

-mussel

-mussel's

-mussels

-must

-mustard

-mustards

-muster

-mustered

-mustering

-musters

-mustier

-mustiness

-musts

-musty

-mutability

-mutable

-mutableness

-mutate

-mutated

-mutates

-mutating

-mutation

-mutations

-mutative

-mutator

-mutators

-mute

-muted

-mutedly

-mutely

-muteness

-muter

-mutes

-mutest

-mutilate

-mutilated

-mutilates

-mutilating

-mutilation

-mutilations

-muting

-mutinies

-mutiny

-mutiny's

-mutter

-muttered

-mutterer

-mutterers

-muttering

-mutters

-mutton

-mutual

-mutually

-muzzle

-muzzle's

-muzzled

-muzzler

-muzzles

-muzzling

-my

-myriad

-myrtle

-myself

-mysteries

-mysterious

-mysteriously

-mysteriousness

-mystery

-mystery's

-mystic

-mystic's

-mystical

-mystically

-mysticism

-mysticisms

-mystics

-myth

-myth's

-mythes

-mythical

-mythically

-mythologies

-mythology

-mythology's

-nag

-nag's

-nags

-nail

-nailed

-nailer

-nailing

-nails

-naive

-naively

-naiveness

-naiver

-naivete

-naked

-nakedly

-nakedness

-name

-name's

-nameable

-named

-nameless

-namelessly

-namelessness

-namely

-namer

-namers

-names

-namesake

-namesake's

-namesakes

-naming

-nanosecond

-nanoseconds

-nap

-nap's

-napkin

-napkin's

-napkins

-naps

-narcissistic

-narcissus

-narcissuses

-narcotic

-narcotics

-narrative

-narrative's

-narratively

-narratives

-narrow

-narrowed

-narrower

-narrowest

-narrowing

-narrowingness

-narrowly

-narrowness

-narrows

-nasal

-nasally

-nastier

-nasties

-nastiest

-nastily

-nastiness

-nasty

-nation

-nation's

-national

-nationalist

-nationalist's

-nationalists

-nationalities

-nationality

-nationality's

-nationally

-nationals

-nations

-nationwide

-native

-natively

-nativeness

-natives

-nativity

-natural

-naturalism

-naturalist

-naturally

-naturalness

-naturals

-nature

-nature's

-natured

-natures

-naught

-naught's

-naughtier

-naughtiness

-naughts

-naughty

-naval

-navally

-navies

-navigable

-navigableness

-navigate

-navigated

-navigates

-navigating

-navigation

-navigations

-navigator

-navigator's

-navigators

-navy

-navy's

-nay

-near

-nearby

-neared

-nearer

-nearest

-nearing

-nearly

-nearness

-nears

-neat

-neaten

-neater

-neatest

-neatly

-neatness

-neats

-nebula

-necessaries

-necessarily

-necessary

-necessitate

-necessitated

-necessitates

-necessitating

-necessitation

-necessitations

-necessities

-necessity

-neck

-necked

-necker

-necking

-necklace

-necklace's

-necklaces

-necks

-necktie

-necktie's

-neckties

-need

-needed

-needer

-needful

-needfully

-needfulness

-needier

-neediness

-needing

-needle

-needled

-needler

-needlers

-needles

-needless

-needlessly

-needlessness

-needlework

-needleworker

-needling

-needly

-needn't

-needs

-needy

-negate

-negated

-negater

-negates

-negating

-negation

-negations

-negative

-negatived

-negatively

-negativeness

-negatives

-negativing

-negator

-negators

-neglect

-neglected

-neglecter

-neglecting

-neglects

-negligence

-negligible

-negotiable

-negotiate

-negotiated

-negotiates

-negotiating

-negotiation

-negotiations

-neigh

-neither

-neophyte

-neophytes

-nephew

-nephew's

-nephews

-nerve

-nerve's

-nerved

-nerves

-nerving

-nervous

-nervously

-nervousness

-nest

-nested

-nester

-nesting

-nestle

-nestled

-nestler

-nestles

-nestling

-nests

-net

-net's

-nether

-nets

-netted

-netting

-nettle

-nettled

-nettles

-nettling

-network

-network's

-networked

-networking

-networks

-neural

-neurally

-neurobiology

-neurobiology's

-neurological

-neurologically

-neurologists

-neuron

-neuron's

-neurons

-neutral

-neutralities

-neutrality

-neutrally

-neutralness

-neutrals

-neutrino

-neutrino's

-neutrinos

-never

-nevertheless

-new

-newborn

-newborns

-newcomer

-newcomer's

-newcomers

-newer

-newest

-newline

-newline's

-newlines

-newly

-newness

-news

-newsgroup

-newsgroup's

-newsgroups

-newsletter

-newsletter's

-newsletters

-newsman

-newsmen

-newspaper

-newspaper's

-newspapers

-newswire

-newt

-newts

-next

-nibble

-nibbled

-nibbler

-nibblers

-nibbles

-nibbling

-nice

-nicely

-niceness

-nicer

-nicest

-niceties

-nicety

-niche

-niches

-niching

-nick

-nicked

-nickel

-nickel's

-nickels

-nicker

-nickered

-nickering

-nicking

-nickname

-nicknamed

-nicknamer

-nicknames

-nicks

-nicotine

-niece

-niece's

-nieces

-niftier

-nifties

-nifty

-nigh

-night

-night's

-nighted

-nighters

-nightfall

-nightgown

-nightingale

-nightingale's

-nightingales

-nightly

-nightmare

-nightmare's

-nightmares

-nights

-nil

-nilly

-nimble

-nimbleness

-nimbler

-nimblest

-nimbly

-nine

-nines

-nineteen

-nineteens

-nineteenth

-nineties

-ninetieth

-ninety

-ninth

-nip

-nips

-nitrogen

-nix

-nixed

-nixer

-nixes

-nixing

-no

-nobilities

-nobility

-noble

-nobleman

-nobleness

-nobler

-nobles

-noblest

-nobly

-nobodies

-nobody

-nobody's

-nocturnal

-nocturnally

-nod

-nod's

-nodded

-nodding

-node

-node's

-nodes

-nods

-noise

-noised

-noiseless

-noiselessly

-noises

-noisier

-noisily

-noisiness

-noising

-noisy

-nomenclature

-nomenclatures

-nominal

-nominally

-nominate

-nominated

-nominates

-nominating

-nomination

-nomination's

-nominations

-nominative

-nominatively

-non

-nonblocking

-nonconservative

-noncyclic

-nondecreasing

-nondescript

-nondescriptly

-nondestructively

-nondeterminacy

-nondeterminate

-nondeterminately

-nondeterminism

-nondeterministic

-nondeterministically

-nondisclosure

-nondisclosures

-none

-nonempty

-nones

-nonetheless

-nonexistence

-nonexistent

-nonextensible

-nonfunctional

-noninteracting

-noninterference

-nonintuitive

-nonlinear

-nonlinearities

-nonlinearity

-nonlinearity's

-nonlinearly

-nonlocal

-nonnegative

-nonorthogonal

-nonorthogonality

-nonperishable

-nonprocedural

-nonprocedurally

-nonprogrammable

-nonprogrammer

-nonsense

-nonsensical

-nonsensically

-nonsensicalness

-nonspecialist

-nonspecialist's

-nonspecialists

-nonstandard

-nontechnical

-nontechnically

-nonterminal

-nonterminal's

-nonterminals

-nonterminating

-nontermination

-nontrivial

-nonuniform

-nonzero

-nook

-nook's

-nooks

-noon

-noonday

-nooning

-noons

-noontide

-nope

-nor

-norm

-norm's

-normal

-normalcy

-normality

-normally

-normals

-normed

-norms

-north

-north's

-northeast

-northeaster

-northeasterly

-northeastern

-norther

-northerly

-northern

-northerner

-northerners

-northernly

-northers

-northing

-northward

-northwards

-northwest

-northwester

-northwesterly

-northwestern

-nose

-nosed

-noses

-nosing

-nostril

-nostril's

-nostrils

-not

-notable

-notableness

-notables

-notably

-notation

-notation's

-notational

-notationally

-notations

-notch

-notched

-notches

-notching

-note

-notebook

-notebook's

-notebooks

-noted

-notedly

-notedness

-noter

-notes

-noteworthiness

-noteworthy

-nothing

-nothingness

-nothings

-notice

-noticeable

-noticeably

-noticed

-notices

-noticing

-notification

-notifications

-notified

-notifier

-notifiers

-notifies

-notify

-notifying

-noting

-notion

-notions

-notorious

-notoriously

-notoriousness

-notwithstanding

-noun

-noun's

-nouns

-nourish

-nourished

-nourisher

-nourishes

-nourishing

-nourishment

-novel

-novel's

-novelist

-novelist's

-novelists

-novels

-novelties

-novelty

-novelty's

-novice

-novice's

-novices

-now

-nowadays

-nowhere

-nowheres

-nows

-nroff

-nroff's

-nuances

-nuclear

-nucleotide

-nucleotide's

-nucleotides

-nucleus

-nucleuses

-nuisance

-nuisance's

-nuisances

-null

-nulled

-nullification

-nullified

-nullifier

-nullifiers

-nullifies

-nullify

-nullifying

-nulls

-numb

-numbed

-number

-numbered

-numberer

-numbering

-numberless

-numbers

-numbing

-numbingly

-numbly

-numbness

-numbs

-numeral

-numeral's

-numerally

-numerals

-numerator

-numerator's

-numerators

-numeric

-numerical

-numerically

-numerics

-numerous

-numerously

-numerousness

-nun

-nun's

-nuns

-nuptial

-nuptials

-nurse

-nurse's

-nursed

-nurser

-nurseries

-nursery

-nursery's

-nurses

-nursing

-nurture

-nurtured

-nurturer

-nurtures

-nurturing

-nut

-nut's

-nutrition

-nutrition's

-nuts

-nymph

-nymphs

-o'clock

-oak

-oaken

-oaks

-oar

-oar's

-oared

-oaring

-oars

-oasis

-oat

-oaten

-oater

-oath

-oaths

-oatmeal

-oats

-obedience

-obediences

-obedient

-obediently

-obey

-obeyed

-obeyer

-obeying

-obeys

-obfuscate

-obfuscated

-obfuscater

-obfuscates

-obfuscating

-obfuscation

-obfuscations

-object

-object's

-objected

-objecting

-objection

-objection's

-objectionable

-objectionableness

-objections

-objective

-objectively

-objectiveness

-objectives

-objector

-objector's

-objectors

-objects

-oblate

-oblately

-oblateness

-oblation

-oblations

-obligate

-obligated

-obligately

-obligates

-obligating

-obligation

-obligation's

-obligations

-obligatory

-oblige

-obliged

-obliger

-obliges

-obliging

-obligingly

-obligingness

-oblique

-obliquely

-obliqueness

-obliterate

-obliterated

-obliterates

-obliterating

-obliteration

-obliterations

-obliterative

-obliteratively

-oblivion

-oblivions

-oblivious

-obliviously

-obliviousness

-oblong

-oblongly

-oblongness

-obscene

-obscenely

-obscure

-obscured

-obscurely

-obscureness

-obscurer

-obscures

-obscuring

-obscurities

-obscurity

-observable

-observance

-observance's

-observances

-observant

-observantly

-observation

-observation's

-observations

-observatories

-observatory

-observe

-observed

-observer

-observers

-observes

-observing

-observingly

-obsession

-obsession's

-obsessions

-obsolescence

-obsolete

-obsoleted

-obsoletely

-obsoleteness

-obsoletes

-obsoleting

-obstacle

-obstacle's

-obstacles

-obstinacy

-obstinate

-obstinately

-obstinateness

-obstruct

-obstructed

-obstructer

-obstructing

-obstruction

-obstruction's

-obstructionist

-obstructions

-obstructive

-obstructively

-obstructiveness

-obstructs

-obtain

-obtainable

-obtainably

-obtained

-obtainer

-obtaining

-obtains

-obviate

-obviated

-obviates

-obviating

-obviation

-obviations

-obvious

-obviously

-obviousness

-occasion

-occasional

-occasionally

-occasioned

-occasioning

-occasionings

-occasions

-occlude

-occluded

-occludes

-occluding

-occlusion

-occlusion's

-occlusions

-occupancies

-occupancy

-occupant

-occupant's

-occupants

-occupation

-occupation's

-occupational

-occupationally

-occupations

-occupied

-occupier

-occupiers

-occupies

-occupy

-occupying

-occur

-occurred

-occurrence

-occurrence's

-occurrences

-occurring

-occurs

-ocean

-ocean's

-oceans

-octal

-octals

-octave

-octaves

-octopus

-odd

-odder

-oddest

-oddities

-oddity

-oddity's

-oddly

-oddness

-odds

-ode

-ode's

-oded

-oder

-odes

-odious

-odiously

-odiousness

-odorous

-odorously

-odorousness

-of

-off

-offend

-offended

-offender

-offenders

-offending

-offends

-offensive

-offensively

-offensiveness

-offensives

-offer

-offered

-offerer

-offerers

-offering

-offerings

-offers

-office

-office's

-officer

-officer's

-officered

-officers

-offices

-official

-official's

-officially

-officials

-officiate

-officiated

-officiates

-officiating

-officiation

-officiations

-officio

-officious

-officiously

-officiousness

-offing

-offs

-offset

-offset's

-offsets

-offspring

-offsprings

-oft

-often

-oftener

-oftentimes

-oh

-oil

-oilcloth

-oiled

-oiler

-oilers

-oilier

-oiliest

-oiliness

-oiling

-oils

-oily

-ointment

-ointments

-okay

-okay's

-okays

-old

-olden

-older

-oldest

-oldness

-olive

-olive's

-oliver

-olives

-omen

-omen's

-omens

-ominous

-ominously

-ominousness

-omission

-omission's

-omissions

-omit

-omits

-omitted

-omitting

-omnipresent

-omnipresently

-omniscient

-omnisciently

-omnivore

-on

-onanism

-once

-oncer

-one

-one's

-oneness

-oner

-onerous

-onerously

-onerousness

-ones

-oneself

-ongoing

-onion

-onions

-online

-onliness

-only

-ons

-onset

-onset's

-onsets

-onto

-onward

-onwards

-oops

-ooze

-oozed

-oozes

-oozing

-opacities

-opacity

-opal

-opal's

-opals

-opaque

-opaquely

-opaqueness

-opcode

-opcode's

-opcodes

-open

-opened

-opener

-openers

-openest

-opening

-opening's

-openings

-openly

-openness

-opens

-opera

-opera's

-operable

-operand

-operand's

-operandi

-operands

-operas

-operate

-operated

-operates

-operating

-operation

-operational

-operationally

-operations

-operative

-operatively

-operativeness

-operatives

-operator

-operator's

-operators

-opiate

-opiates

-opinion

-opinion's

-opinions

-opium

-opponent

-opponent's

-opponents

-opportune

-opportunely

-opportunism

-opportunistic

-opportunistically

-opportunities

-opportunity

-opportunity's

-oppose

-opposed

-opposer

-opposes

-opposing

-opposite

-oppositely

-oppositeness

-opposites

-opposition

-oppositions

-oppress

-oppressed

-oppresses

-oppressing

-oppression

-oppressive

-oppressively

-oppressiveness

-oppressor

-oppressor's

-oppressors

-opt

-opted

-optic

-optical

-optically

-optics

-optimal

-optimality

-optimally

-optimism

-optimistic

-optimistically

-optimum

-opting

-option

-option's

-optional

-optionally

-options

-opts

-or

-or's

-oracle

-oracle's

-oracles

-oral

-orally

-orals

-orange

-orange's

-oranges

-oration

-oration's

-orations

-orator

-orator's

-oratories

-orators

-oratory

-oratory's

-orb

-orbit

-orbital

-orbitally

-orbitals

-orbited

-orbiter

-orbiters

-orbiting

-orbits

-orchard

-orchard's

-orchards

-orchestra

-orchestra's

-orchestras

-orchid

-orchid's

-orchids

-ordain

-ordained

-ordainer

-ordaining

-ordains

-ordeal

-ordeals

-order

-ordered

-orderer

-ordering

-orderings

-orderlies

-orderliness

-orderly

-orders

-ordinal

-ordinance

-ordinance's

-ordinances

-ordinaries

-ordinarily

-ordinariness

-ordinary

-ordinate

-ordinated

-ordinates

-ordinating

-ordination

-ordinations

-ore

-ore's

-ores

-organ

-organ's

-organic

-organics

-organism

-organism's

-organisms

-organist

-organist's

-organists

-organs

-orgies

-orgy

-orgy's

-orient

-orientation

-orientation's

-orientations

-oriented

-orienting

-orients

-orifice

-orifice's

-orifices

-origin

-origin's

-original

-originality

-originally

-originals

-originate

-originated

-originates

-originating

-origination

-originations

-originative

-originatively

-originator

-originator's

-originators

-origins

-orion

-orly

-ornament

-ornamental

-ornamentally

-ornamentation

-ornamentations

-ornamented

-ornamenting

-ornaments

-orphan

-orphaned

-orphaning

-orphans

-orthodox

-orthodoxes

-orthodoxly

-orthogonal

-orthogonality

-orthogonally

-oscillate

-oscillated

-oscillates

-oscillating

-oscillation

-oscillation's

-oscillations

-oscillator

-oscillator's

-oscillators

-oscillatory

-oscilloscope

-oscilloscope's

-oscilloscopes

-ostrich

-ostrich's

-ostriches

-other

-other's

-otherness

-others

-otherwise

-otter

-otter's

-otters

-ought

-oughts

-ounce

-ounces

-our

-ours

-ourself

-ourselves

-out

-outbreak

-outbreak's

-outbreaks

-outburst

-outburst's

-outbursts

-outcast

-outcast's

-outcasts

-outcome

-outcome's

-outcomes

-outcries

-outcry

-outdoor

-outdoors

-outed

-outer

-outermost

-outfit

-outfit's

-outfits

-outgoing

-outgoingness

-outgoings

-outgrew

-outgrow

-outgrowing

-outgrown

-outgrows

-outgrowth

-outing

-outing's

-outings

-outlast

-outlasts

-outlaw

-outlawed

-outlawing

-outlaws

-outlay

-outlay's

-outlays

-outlet

-outlet's

-outlets

-outline

-outlined

-outlines

-outlining

-outlive

-outlived

-outlives

-outliving

-outlook

-outness

-outperform

-outperformed

-outperforming

-outperforms

-outpost

-outpost's

-outposts

-output

-output's

-outputs

-outputting

-outrage

-outraged

-outrageous

-outrageously

-outrageousness

-outrages

-outraging

-outright

-outrightly

-outrun

-outruns

-outs

-outset

-outside

-outsider

-outsider's

-outsiderness

-outsiders

-outskirts

-outstanding

-outstandingly

-outstretched

-outstrip

-outstripped

-outstripping

-outstrips

-outvote

-outvoted

-outvotes

-outvoting

-outward

-outwardly

-outwardness

-outwards

-outweigh

-outweighed

-outweighing

-outweighs

-outwit

-outwits

-outwitted

-outwitting

-oval

-oval's

-ovally

-ovalness

-ovals

-ovaries

-ovary

-ovary's

-oven

-oven's

-ovens

-over

-overall

-overall's

-overalls

-overblown

-overboard

-overcame

-overcast

-overcasting

-overcoat

-overcoat's

-overcoating

-overcoats

-overcome

-overcomer

-overcomes

-overcoming

-overcrowd

-overcrowded

-overcrowding

-overcrowds

-overdone

-overdose

-overdose's

-overdosed

-overdoses

-overdosing

-overdraft

-overdraft's

-overdrafts

-overdraw

-overdrawing

-overdrawn

-overdraws

-overdrew

-overdue

-overemphasis

-overestimate

-overestimated

-overestimates

-overestimating

-overestimation

-overestimations

-overflow

-overflowed

-overflowing

-overflows

-overhang

-overhanging

-overhangs

-overhaul

-overhauled

-overhauler

-overhauling

-overhaulings

-overhauls

-overhead

-overheads

-overhear

-overheard

-overhearer

-overhearing

-overhears

-overing

-overjoy

-overjoyed

-overkill

-overkill's

-overlaid

-overland

-overlap

-overlap's

-overlapped

-overlapping

-overlaps

-overlay

-overlaying

-overlays

-overload

-overloaded

-overloading

-overloads

-overlook

-overlooked

-overlooking

-overlooks

-overly

-overlying

-overnight

-overnighter

-overnighters

-overnights

-overpower

-overpowered

-overpowering

-overpoweringly

-overpowers

-overprint

-overprinted

-overprinting

-overprints

-overproduction

-overridden

-override

-overrider

-overrides

-overriding

-overrode

-overrule

-overruled

-overrules

-overruling

-overrun

-overruns

-overs

-overseas

-oversee

-overseeing

-overseer

-overseers

-oversees

-overshadow

-overshadowed

-overshadowing

-overshadows

-overshoot

-overshooting

-overshoots

-overshot

-oversight

-oversight's

-oversights

-oversimplification

-oversimplifications

-oversimplified

-oversimplifies

-oversimplify

-oversimplifying

-overstate

-overstated

-overstatement

-overstatement's

-overstatements

-overstates

-overstating

-overstocks

-overt

-overtake

-overtaken

-overtaker

-overtakers

-overtakes

-overtaking

-overthrew

-overthrow

-overthrowing

-overthrown

-overthrows

-overtime

-overtly

-overtness

-overtone

-overtone's

-overtones

-overtook

-overture

-overture's

-overtures

-overturn

-overturned

-overturning

-overturns

-overuse

-overview

-overview's

-overviews

-overweight

-overwhelm

-overwhelmed

-overwhelming

-overwhelmingly

-overwhelms

-overwork

-overworked

-overworking

-overworks

-overwrite

-overwrites

-overwriting

-overwritten

-overwrote

-overzealous

-overzealousness

-ovum

-owe

-owed

-owes

-owing

-owl

-owl's

-owler

-owls

-own

-owned

-owner

-owner's

-owners

-ownership

-ownerships

-owning

-owns

-ox

-oxen

-oxidation

-oxide

-oxide's

-oxides

-oxygen

-oxygens

-oyster

-oyster's

-oystering

-oysters

-pa

-pace

-pace's

-paced

-pacer

-pacers

-paces

-pacific

-pacification

-pacifications

-pacified

-pacifier

-pacifies

-pacify

-pacifying

-pacing

-pack

-package

-packaged

-packager

-packagers

-packages

-packaging

-packagings

-packed

-packer

-packers

-packet

-packet's

-packeted

-packeting

-packets

-packing

-packs

-pact

-pact's

-pacts

-pad

-pad's

-padded

-paddies

-padding

-paddings

-paddle

-paddled

-paddler

-paddles

-paddling

-paddy

-pads

-pagan

-pagan's

-pagans

-page

-page's

-pageant

-pageant's

-pageants

-paged

-pager

-pager's

-pagers

-pages

-paginate

-paginated

-paginates

-paginating

-pagination

-paginations

-paging

-paid

-pail

-pail's

-pails

-pain

-pained

-painful

-painfully

-painfulness

-paining

-painless

-painlessly

-painlessness

-pains

-painstaking

-painstakingly

-paint

-painted

-painter

-painterliness

-painterly

-painters

-painting

-paintings

-paints

-pair

-paired

-pairing

-pairings

-pairs

-pairwise

-pal

-pal's

-palace

-palace's

-palaces

-palate

-palate's

-palates

-pale

-paled

-palely

-paleness

-paler

-pales

-palest

-palfrey

-paling

-pall

-palliate

-palliation

-palliative

-palliatively

-palliatives

-pallid

-pallidly

-pallidness

-palling

-pally

-palm

-palmed

-palmer

-palming

-palms

-pals

-pamphlet

-pamphlet's

-pamphlets

-pan

-pan's

-panacea

-panacea's

-panaceas

-pancake

-pancake's

-pancaked

-pancakes

-pancaking

-pancreas

-panda

-panda's

-pandas

-pandemonium

-pander

-pandered

-panderer

-pandering

-panders

-pane

-pane's

-panel

-panelist

-panelist's

-panelists

-panels

-panes

-pang

-pang's

-pangs

-panic

-panic's

-panics

-panned

-panning

-pans

-pansies

-pansy

-pansy's

-pant

-panted

-panther

-panther's

-panthers

-panties

-panting

-pantries

-pantry

-pantry's

-pants

-panty

-papa

-papal

-papally

-paper

-paper's

-paperback

-paperback's

-paperbacks

-papered

-paperer

-paperers

-papering

-paperings

-papers

-paperwork

-paprika

-par

-parachute

-parachute's

-parachuted

-parachuter

-parachutes

-parachuting

-parade

-paraded

-parader

-parades

-paradigm

-paradigm's

-paradigms

-parading

-paradise

-paradox

-paradox's

-paradoxes

-paradoxical

-paradoxically

-paradoxicalness

-paraffin

-paraffins

-paragon

-paragon's

-paragons

-paragraph

-paragraphed

-paragrapher

-paragraphing

-paragraphs

-parallax

-parallax's

-parallel

-parallelism

-parallelogram

-parallelogram's

-parallelograms

-parallels

-paralysis

-parameter

-parameter's

-parameterless

-parameters

-parametric

-paramilitary

-paramount

-paranoia

-paranoid

-parapet

-parapet's

-parapeted

-parapets

-paraphrase

-paraphrased

-paraphraser

-paraphrases

-paraphrasing

-parasite

-parasite's

-parasites

-parasitic

-parasitics

-parcel

-parcels

-parch

-parched

-parchment

-pardon

-pardonable

-pardonableness

-pardonably

-pardoned

-pardoner

-pardoners

-pardoning

-pardons

-pare

-parent

-parent's

-parentage

-parental

-parentally

-parentheses

-parenthesis

-parenthetical

-parenthetically

-parenthood

-parenting

-parents

-parer

-pares

-paring

-parings

-parish

-parish's

-parishes

-parities

-parity

-park

-parked

-parker

-parkers

-parking

-parks

-parliament

-parliament's

-parliamentary

-parliaments

-parole

-paroled

-paroles

-paroling

-parried

-parrot

-parroting

-parrots

-parry

-parrying

-pars

-parse

-parsed

-parser

-parser's

-parsers

-parses

-parsimony

-parsing

-parsings

-parsley

-parson

-parson's

-parsons

-part

-partake

-partaker

-partakes

-partaking

-parted

-parter

-parters

-partial

-partiality

-partially

-partials

-participant

-participant's

-participants

-participate

-participated

-participates

-participating

-participation

-participations

-participative

-participatory

-particle

-particle's

-particles

-particular

-particularly

-particulars

-partied

-parties

-parting

-partings

-partisan

-partisan's

-partisans

-partition

-partitioned

-partitioner

-partitioning

-partitions

-partly

-partner

-partner's

-partnered

-partnering

-partners

-partnership

-partnerships

-partridge

-partridge's

-partridges

-parts

-party

-party's

-partying

-pas

-pass

-passage

-passage's

-passaged

-passages

-passageway

-passaging

-passe

-passed

-passenger

-passenger's

-passengerly

-passengers

-passer

-passers

-passes

-passing

-passion

-passionate

-passionately

-passionateness

-passions

-passive

-passively

-passiveness

-passives

-passivity

-passport

-passport's

-passports

-password

-password's

-passworded

-passwords

-past

-past's

-paste

-pasted

-pastes

-pastime

-pastime's

-pastimes

-pasting

-pastness

-pastor

-pastor's

-pastoral

-pastorally

-pastoralness

-pastors

-pastries

-pastry

-pasts

-pasture

-pasture's

-pastured

-pasturer

-pastures

-pasturing

-pat

-pat's

-patch

-patched

-patcher

-patches

-patching

-patchwork

-patchworker

-patchworkers

-pated

-paten

-patent

-patentable

-patented

-patenter

-patenters

-patenting

-patently

-patents

-pater

-paternal

-paternally

-path

-pathetic

-pathname

-pathname's

-pathnames

-pathological

-pathologically

-pathologies

-pathologist

-pathologist's

-pathologists

-pathology

-pathos

-paths

-pathway

-pathway's

-pathways

-patience

-patient

-patient's

-patiently

-patients

-patriarch

-patriarchs

-patrician

-patrician's

-patricians

-patriot

-patriot's

-patriotic

-patriotism

-patriots

-patrol

-patrol's

-patrols

-patron

-patron's

-patronage

-patronly

-patrons

-pats

-patter

-pattered

-patterer

-pattering

-patterings

-pattern

-patterned

-patterning

-patterns

-patters

-patties

-patty

-patty's

-paucity

-pause

-paused

-pauses

-pausing

-pave

-paved

-pavement

-pavement's

-pavements

-paver

-paves

-pavilion

-pavilion's

-pavilions

-paving

-paw

-pawed

-pawing

-pawn

-pawn's

-pawned

-pawner

-pawning

-pawns

-paws

-pay

-payable

-paycheck

-paycheck's

-paychecks

-payed

-payer

-payer's

-payers

-paying

-payment

-payment's

-payments

-payoff

-payoff's

-payoffs

-payroll

-payrolls

-pays

-pea

-pea's

-peace

-peaceable

-peaceableness

-peaceful

-peacefully

-peacefulness

-peaces

-peach

-peach's

-peaches

-peacock

-peacock's

-peacocks

-peak

-peaked

-peakedness

-peaking

-peaks

-peal

-pealed

-pealing

-peals

-peanut

-peanut's

-peanuts

-pear

-pearl

-pearl's

-pearler

-pearlier

-pearls

-pearly

-pears

-peas

-peasant

-peasant's

-peasantry

-peasants

-peat

-pebble

-pebble's

-pebbled

-pebbles

-pebbling

-peck

-pecked

-pecker

-pecking

-pecks

-peculiar

-peculiarities

-peculiarity

-peculiarity's

-peculiarly

-peculiars

-pedagogic

-pedagogical

-pedagogically

-pedagogics

-pedantic

-peddler

-peddler's

-peddlers

-pedestal

-pedestals

-pedestrian

-pedestrian's

-pedestrians

-pediatric

-pediatrics

-peek

-peeked

-peeking

-peeks

-peel

-peeled

-peeler

-peeler's

-peeling

-peels

-peep

-peeped

-peeper

-peepers

-peeping

-peeps

-peer

-peered

-peering

-peerless

-peerlessly

-peerlessness

-peers

-peeve

-peeve's

-peeved

-peevers

-peeves

-peeving

-peg

-peg's

-pegs

-pellet

-pellet's

-pelleted

-pelleting

-pellets

-pelt

-pelter

-pelting

-pelts

-pen

-penalties

-penalty

-penalty's

-penance

-penanced

-penances

-penancing

-pence

-pencil

-pencils

-pend

-pended

-pending

-pends

-pendulum

-pendulum's

-pendulums

-penetrate

-penetrated

-penetrates

-penetrating

-penetratingly

-penetration

-penetrations

-penetrative

-penetratively

-penetrativeness

-penetrator

-penetrator's

-penetrators

-penguin

-penguin's

-penguins

-peninsula

-peninsula's

-peninsulas

-penitent

-penitentiary

-penitently

-penned

-pennies

-penniless

-penning

-penny

-penny's

-pens

-pension

-pensioned

-pensioner

-pensioners

-pensioning

-pensions

-pensive

-pensively

-pensiveness

-pent

-pentagon

-pentagon's

-pentagons

-penthouse

-penthouse's

-penthouses

-people

-people's

-peopled

-peoples

-peopling

-pep

-pepper

-peppercorn

-peppercorn's

-peppercorns

-peppered

-pepperer

-peppering

-peppers

-per

-perceivable

-perceivably

-perceive

-perceived

-perceiver

-perceivers

-perceives

-perceiving

-percent

-percentage

-percentages

-percentile

-percentiles

-percents

-perceptible

-perceptibly

-perception

-perceptions

-perceptive

-perceptively

-perceptiveness

-perceptual

-perceptually

-perch

-perchance

-perched

-perches

-perching

-percolate

-percolated

-percolates

-percolating

-percolation

-percutaneous

-percutaneously

-peremptoriness

-peremptory

-perennial

-perennially

-perennials

-perfect

-perfected

-perfecter

-perfecting

-perfection

-perfectionist

-perfectionist's

-perfectionists

-perfections

-perfective

-perfectively

-perfectiveness

-perfectly

-perfectness

-perfects

-perforce

-perform

-performance

-performance's

-performances

-performed

-performer

-performers

-performing

-performs

-perfume

-perfumed

-perfumer

-perfumes

-perfuming

-perhaps

-peril

-peril's

-perilous

-perilously

-perilousness

-perils

-period

-period's

-periodic

-periodical

-periodically

-periodicals

-periods

-peripheral

-peripherally

-peripherals

-peripheries

-periphery

-periphery's

-perish

-perishable

-perishable's

-perishables

-perished

-perisher

-perishers

-perishes

-perishing

-perishingly

-permanence

-permanent

-permanently

-permanentness

-permanents

-permeate

-permeated

-permeates

-permeating

-permeation

-permeations

-permeative

-permissibility

-permissible

-permissibleness

-permissibly

-permission

-permissions

-permissive

-permissively

-permissiveness

-permit

-permit's

-permits

-permitted

-permitting

-permutation

-permutation's

-permutations

-permute

-permuted

-permutes

-permuting

-perpendicular

-perpendicularly

-perpendiculars

-perpetrate

-perpetrated

-perpetrates

-perpetrating

-perpetration

-perpetrations

-perpetrator

-perpetrator's

-perpetrators

-perpetual

-perpetually

-perpetuate

-perpetuated

-perpetuates

-perpetuating

-perpetuation

-perplex

-perplexed

-perplexedly

-perplexes

-perplexing

-perplexities

-perplexity

-persecute

-persecuted

-persecutes

-persecuting

-persecution

-persecutive

-persecutor

-persecutor's

-persecutors

-perseverance

-persevere

-persevered

-perseveres

-persevering

-persist

-persisted

-persistence

-persistent

-persistently

-persister

-persisting

-persists

-person

-person's

-personable

-personableness

-personage

-personage's

-personages

-personal

-personalities

-personality

-personality's

-personally

-personals

-personification

-personifications

-personified

-personifier

-personifies

-personify

-personifying

-personnel

-persons

-perspective

-perspective's

-perspectively

-perspectives

-perspicuous

-perspicuously

-perspicuousness

-perspiration

-perspirations

-persuadable

-persuade

-persuaded

-persuader

-persuaders

-persuades

-persuading

-persuasion

-persuasion's

-persuasions

-persuasive

-persuasively

-persuasiveness

-pertain

-pertained

-pertaining

-pertains

-pertinent

-pertinently

-perturb

-perturbation

-perturbation's

-perturbations

-perturbed

-perturbing

-perusal

-peruse

-perused

-peruser

-perusers

-peruses

-perusing

-pervade

-pervaded

-pervades

-pervading

-pervasive

-pervasively

-pervasiveness

-pervert

-perverted

-pervertedly

-pervertedness

-perverter

-perverting

-perverts

-pessimistic

-pest

-pester

-pestered

-pestering

-pesters

-pestilence

-pestilences

-pests

-pet

-petal

-petal's

-petals

-peter

-petered

-peters

-petition

-petitioned

-petitioner

-petitioning

-petitions

-petroleum

-pets

-petted

-petter

-petter's

-petters

-petticoat

-petticoat's

-petticoated

-petticoats

-pettier

-pettiest

-pettiness

-pettinesses

-petting

-petty

-pew

-pew's

-pews

-pewter

-pewterer

-phantom

-phantom's

-phantoms

-phase

-phased

-phaser

-phasers

-phases

-phasing

-pheasant

-pheasant's

-pheasants

-phenomena

-phenomenal

-phenomenally

-phenomenological

-phenomenologically

-phenomenologies

-phenomenology

-phenomenon

-philosopher

-philosopher's

-philosophers

-philosophic

-philosophical

-philosophically

-philosophies

-philosophy

-philosophy's

-phone

-phone's

-phoned

-phoneme

-phoneme's

-phonemes

-phonemic

-phonemics

-phones

-phonetic

-phonetics

-phoning

-phonograph

-phonographer

-phonographs

-phosphate

-phosphate's

-phosphates

-phosphoric

-photo

-photo's

-photocopied

-photocopier

-photocopies

-photocopy

-photocopying

-photograph

-photographed

-photographer

-photographers

-photographic

-photographing

-photographs

-photography

-photos

-phrase

-phrased

-phrases

-phrasing

-phrasings

-phyla

-phylum

-physic

-physical

-physically

-physicalness

-physicals

-physician

-physician's

-physicians

-physicist

-physicist's

-physicists

-physics

-physiological

-physiologically

-physiology

-physique

-physiqued

-pi

-piano

-piano's

-pianos

-piazza

-piazza's

-piazzas

-picayune

-pick

-picked

-picker

-pickering

-pickers

-picket

-picketed

-picketer

-picketers

-picketing

-pickets

-picking

-pickings

-pickle

-pickled

-pickles

-pickling

-picks

-pickup

-pickup's

-pickups

-picnic

-picnic's

-picnics

-pictorial

-pictorially

-pictorialness

-picture

-pictured

-pictures

-picturesque

-picturesquely

-picturesqueness

-picturing

-pie

-piece

-pieced

-piecemeal

-piecer

-pieces

-piecewise

-piecing

-pied

-pier

-pierce

-pierced

-pierces

-piercing

-piercingly

-piers

-pies

-pieties

-piety

-pig

-pig's

-pigeon

-pigeon's

-pigeons

-pigment

-pigmented

-pigments

-pigs

-pike

-pike's

-piked

-piker

-pikes

-piking

-pile

-piled

-pilers

-piles

-pilferage

-pilgrim

-pilgrim's

-pilgrimage

-pilgrimage's

-pilgrimages

-pilgrims

-piling

-pilings

-pill

-pill's

-pillage

-pillaged

-pillager

-pillages

-pillaging

-pillar

-pillared

-pillars

-pillow

-pillow's

-pillows

-pills

-pilot

-pilot's

-piloted

-piloting

-pilots

-pin

-pin's

-pinch

-pinched

-pincher

-pinches

-pinching

-pine

-pineapple

-pineapple's

-pineapples

-pined

-pines

-ping

-pinger

-pinging

-pining

-pinion

-pinioned

-pinions

-pink

-pinked

-pinker

-pinkest

-pinking

-pinkly

-pinkness

-pinks

-pinnacle

-pinnacle's

-pinnacled

-pinnacles

-pinnacling

-pinned

-pinning

-pinnings

-pinpoint

-pinpointed

-pinpointing

-pinpoints

-pins

-pint

-pint's

-pinter

-pints

-pioneer

-pioneered

-pioneering

-pioneers

-pious

-piously

-piousness

-pipe

-piped

-pipeline

-pipelined

-pipelines

-pipelining

-piper

-pipers

-pipes

-piping

-pipingly

-pipings

-pique

-piqued

-piquing

-pirate

-pirate's

-pirated

-pirates

-pirating

-piss

-pissed

-pisser

-pisses

-pissing

-pistil

-pistil's

-pistils

-pistol

-pistol's

-pistols

-piston

-piston's

-pistons

-pit

-pit's

-pitch

-pitched

-pitcher

-pitchers

-pitches

-pitching

-piteous

-piteously

-piteousness

-pitfall

-pitfall's

-pitfalls

-pith

-pithed

-pithes

-pithier

-pithiest

-pithiness

-pithing

-pithy

-pitiable

-pitiableness

-pitied

-pitier

-pitiers

-pities

-pitiful

-pitifully

-pitifulness

-pitiless

-pitilessly

-pitilessness

-pits

-pitted

-pity

-pitying

-pityingly

-pivot

-pivotal

-pivotally

-pivoted

-pivoting

-pivots

-pixel

-pixel's

-pixels

-placard

-placard's

-placards

-place

-placed

-placement

-placement's

-placements

-placer

-places

-placid

-placidly

-placidness

-placing

-plague

-plagued

-plaguer

-plagues

-plaguing

-plaid

-plaid's

-plaided

-plaids

-plain

-plainer

-plainest

-plainly

-plainness

-plains

-plaintiff

-plaintiff's

-plaintiffs

-plaintive

-plaintively

-plaintiveness

-plait

-plait's

-plaiter

-plaiting

-plaits

-plan

-plan's

-planar

-planarity

-plane

-plane's

-planed

-planer

-planers

-planes

-planet

-planet's

-planetary

-planets

-planing

-plank

-planking

-planks

-planned

-planner

-planner's

-planners

-planning

-plans

-plant

-plantation

-plantation's

-plantations

-planted

-planter

-planters

-planting

-plantings

-plants

-plasma

-plaster

-plastered

-plasterer

-plasterers

-plastering

-plasters

-plastic

-plasticity

-plasticly

-plastics

-plate

-plateau

-plateau's

-plateaus

-plated

-platelet

-platelet's

-platelets

-platen

-platen's

-platens

-plater

-platers

-plates

-platform

-platform's

-platforms

-plating

-platings

-platinum

-platter

-platter's

-platters

-plausibility

-plausible

-plausibleness

-play

-playable

-played

-player

-player's

-players

-playful

-playfully

-playfulness

-playground

-playground's

-playgrounds

-playing

-playmate

-playmate's

-playmates

-plays

-plaything

-plaything's

-playthings

-playwright

-playwright's

-playwrights

-plea

-plea's

-plead

-pleaded

-pleader

-pleading

-pleadingly

-pleadings

-pleads

-pleas

-pleasant

-pleasantly

-pleasantness

-please

-pleased

-pleasely

-pleaser

-pleases

-pleasing

-pleasingly

-pleasingness

-pleasurable

-pleasurableness

-pleasure

-pleasured

-pleasures

-pleasuring

-plebeian

-plebeianly

-plebiscite

-plebiscite's

-plebiscites

-pledge

-pledged

-pledger

-pledges

-pledging

-plenary

-plenteous

-plenteously

-plenteousness

-plenties

-plentiful

-plentifully

-plentifulness

-plenty

-pleurisy

-plication

-plied

-plier

-pliers

-plies

-plight

-plighter

-plod

-plods

-plot

-plot's

-plots

-plotted

-plotter

-plotter's

-plotters

-plotting

-ploy

-ploy's

-ploys

-pluck

-plucked

-plucker

-pluckier

-pluckiness

-plucking

-plucky

-plug

-plug's

-plugged

-plugging

-plugs

-plum

-plum's

-plumage

-plumaged

-plumages

-plumb

-plumb's

-plumbed

-plumber

-plumbers

-plumbing

-plumbs

-plume

-plumed

-plumes

-pluming

-plummeting

-plump

-plumped

-plumpen

-plumper

-plumply

-plumpness

-plums

-plunder

-plundered

-plunderer

-plunderers

-plundering

-plunders

-plunge

-plunged

-plunger

-plungers

-plunges

-plunging

-plural

-plurality

-plurally

-plurals

-plus

-pluses

-plush

-plushly

-plushness

-ply

-plying

-pneumonia

-poach

-poached

-poacher

-poachers

-poaches

-poaching

-pocket

-pocketbook

-pocketbook's

-pocketbooks

-pocketed

-pocketing

-pockets

-pod

-pod's

-pods

-poem

-poem's

-poems

-poet

-poet's

-poetic

-poetical

-poetically

-poeticalness

-poetics

-poetries

-poetry

-poetry's

-poets

-point

-pointed

-pointedly

-pointedness

-pointer

-pointers

-pointier

-pointiest

-pointing

-pointless

-pointlessly

-pointlessness

-points

-pointy

-poise

-poised

-poises

-poising

-poison

-poisoned

-poisoner

-poisoning

-poisonous

-poisonously

-poisonousness

-poisons

-poke

-poked

-poker

-pokes

-poking

-polar

-polarities

-polarity

-polarity's

-pole

-poled

-polemic

-polemics

-poler

-poles

-police

-police's

-policed

-policeman

-policeman's

-policemen

-policemen's

-polices

-policies

-policing

-policy

-policy's

-poling

-polish

-polished

-polisher

-polishers

-polishes

-polishing

-polite

-politely

-politeness

-politer

-politest

-politic

-political

-politically

-politician

-politician's

-politicians

-politics

-poll

-polled

-pollen

-poller

-polling

-polls

-pollute

-polluted

-polluter

-pollutes

-polluting

-pollution

-pollutive

-polo

-polygon

-polygon's

-polygons

-polymer

-polymer's

-polymers

-polynomial

-polynomial's

-polynomials

-polyphonic

-pomp

-pompous

-pompously

-pompousness

-pond

-ponder

-pondered

-ponderer

-pondering

-ponderous

-ponderously

-ponderousness

-ponders

-ponds

-ponies

-pony

-pony's

-poof

-pool

-pooled

-pooling

-pools

-poor

-poorer

-poorest

-poorly

-poorness

-pop

-pop's

-pope

-pope's

-popes

-poplar

-popped

-poppied

-poppies

-popping

-poppy

-poppy's

-pops

-populace

-popular

-popularity

-popularly

-populate

-populated

-populates

-populating

-population

-populations

-populous

-populously

-populousness

-porcelain

-porch

-porch's

-porches

-porcupine

-porcupine's

-porcupines

-pore

-pored

-pores

-poring

-pork

-porker

-porn

-pornographic

-porridge

-port

-portability

-portable

-portables

-portably

-portal

-portal's

-portals

-portamento

-portamento's

-ported

-portend

-portended

-portending

-portends

-porter

-portering

-porters

-porting

-portion

-portion's

-portioned

-portioning

-portions

-portlier

-portliness

-portly

-portrait

-portrait's

-portraits

-portray

-portrayed

-portrayer

-portraying

-portrays

-ports

-pose

-posed

-poser

-posers

-poses

-posing

-posit

-posited

-positing

-position

-positional

-positioned

-positioning

-positions

-positive

-positively

-positiveness

-positives

-posits

-possess

-possessed

-possessedly

-possessedness

-possesses

-possessing

-possession

-possession's

-possessional

-possessions

-possessive

-possessive's

-possessively

-possessiveness

-possessives

-possessor

-possessor's

-possessors

-possibilities

-possibility

-possibility's

-possible

-possibles

-possibly

-possum

-possum's

-possums

-post

-postage

-postal

-postcard

-postcard's

-postcards

-postcondition

-postconditions

-posted

-poster

-poster's

-posterior

-posteriorly

-posterity

-posters

-posting

-postings

-postman

-postmaster

-postmaster's

-postmasters

-postpone

-postponed

-postponer

-postpones

-postponing

-posts

-postscript

-postscript's

-postscripts

-postulate

-postulated

-postulates

-postulating

-postulation

-postulations

-posture

-posture's

-postured

-posturer

-postures

-posturing

-pot

-pot's

-potash

-potassium

-potato

-potatoes

-potent

-potentate

-potentate's

-potentates

-potential

-potentialities

-potentiality

-potentially

-potentials

-potentiating

-potentiometer

-potentiometer's

-potentiometers

-potently

-pots

-potted

-potter

-potter's

-potterer

-potteries

-potters

-pottery

-potting

-pouch

-pouch's

-pouched

-pouches

-poultry

-pounce

-pounced

-pounces

-pouncing

-pound

-pounded

-pounder

-pounders

-pounding

-pounds

-pour

-poured

-pourer

-pourers

-pouring

-pouringly

-pours

-pout

-pouted

-pouter

-pouting

-pouts

-poverty

-powder

-powdered

-powderer

-powdering

-powders

-power

-powered

-powerful

-powerfully

-powerfulness

-powering

-powerless

-powerlessly

-powerlessness

-powers

-pox

-poxes

-practicable

-practicableness

-practicably

-practical

-practicalities

-practicality

-practically

-practicalness

-practice

-practice's

-practices

-practitioner

-practitioner's

-practitioners

-pragmatic

-pragmatically

-pragmatics

-prairie

-prairies

-praise

-praised

-praiser

-praisers

-praises

-praising

-praisingly

-prance

-pranced

-prancer

-prances

-prancing

-prancingly

-prank

-prank's

-pranks

-prate

-prated

-prater

-prates

-prating

-pratingly

-pray

-prayed

-prayer

-prayer's

-prayers

-praying

-prays

-preach

-preached

-preacher

-preachers

-preaches

-preaching

-preachingly

-preallocate

-preallocated

-preallocates

-preallocating

-preallocation

-preallocation's

-preallocations

-preallocator

-preallocators

-preassign

-preassigned

-preassigning

-preassigns

-precarious

-precariously

-precariousness

-precaution

-precaution's

-precautioned

-precautioning

-precautions

-precede

-preceded

-precedence

-precedence's

-precedences

-precedent

-precedented

-precedents

-precedes

-preceding

-precept

-precept's

-preceptive

-preceptively

-precepts

-precinct

-precinct's

-precincts

-precious

-preciously

-preciousness

-precipice

-precipitate

-precipitated

-precipitately

-precipitateness

-precipitates

-precipitating

-precipitation

-precipitative

-precipitous

-precipitously

-precipitousness

-precise

-precisely

-preciseness

-precision

-precisions

-preclude

-precluded

-precludes

-precluding

-precocious

-precociously

-precociousness

-preconceive

-preconceived

-preconception

-preconception's

-preconceptions

-precondition

-preconditioned

-preconditions

-precursor

-precursor's

-precursors

-predate

-predated

-predates

-predating

-predation

-predecessor

-predecessor's

-predecessors

-predefine

-predefined

-predefines

-predefining

-predefinition

-predefinition's

-predefinitions

-predetermine

-predetermined

-predeterminer

-predetermines

-predetermining

-predicament

-predicate

-predicated

-predicates

-predicating

-predication

-predications

-predicative

-predict

-predictability

-predictable

-predictably

-predicted

-predicting

-prediction

-prediction's

-predictions

-predictive

-predictively

-predictor

-predictors

-predicts

-predominant

-predominantly

-predominate

-predominated

-predominately

-predominates

-predominating

-predomination

-preempt

-preempted

-preempting

-preemption

-preemptive

-preemptively

-preempts

-preface

-prefaced

-prefacer

-prefaces

-prefacing

-prefer

-preferable

-preferableness

-preferably

-preference

-preference's

-preferences

-preferential

-preferentially

-preferred

-preferring

-prefers

-prefix

-prefixed

-prefixes

-prefixing

-pregnant

-pregnantly

-prehistoric

-prejudge

-prejudged

-prejudger

-prejudice

-prejudiced

-prejudices

-prejudicing

-prelate

-preliminaries

-preliminary

-prelude

-prelude's

-preluded

-preluder

-preludes

-preluding

-premature

-prematurely

-prematureness

-prematurity

-premeditated

-premeditatedly

-premier

-premier's

-premiere

-premiered

-premieres

-premiering

-premiers

-premise

-premise's

-premised

-premises

-premising

-premium

-premium's

-premiums

-preoccupation

-preoccupations

-preoccupied

-preoccupies

-preoccupy

-preparation

-preparation's

-preparations

-preparative

-preparative's

-preparatively

-preparatives

-preparatory

-prepare

-prepared

-preparedly

-preparedness

-preparer

-prepares

-preparing

-prepend

-prepended

-prepender

-prependers

-prepending

-prepends

-preposition

-preposition's

-prepositional

-prepositionally

-prepositions

-preposterous

-preposterously

-preposterousness

-preprint

-preprinted

-preprinting

-preprints

-preprocessor

-preprocessors

-preproduction

-preprogrammed

-prerequisite

-prerequisite's

-prerequisites

-prerogative

-prerogative's

-prerogatived

-prerogatives

-prescribe

-prescribed

-prescriber

-prescribes

-prescribing

-prescription

-prescription's

-prescriptions

-prescriptive

-prescriptively

-preselect

-preselected

-preselecting

-preselects

-presence

-presence's

-presences

-present

-presentation

-presentation's

-presentations

-presented

-presenter

-presenters

-presenting

-presently

-presentness

-presents

-preservation

-preservations

-preservative

-preservative's

-preservatives

-preserve

-preserved

-preserver

-preservers

-preserves

-preserving

-preset

-presets

-preside

-presided

-presidency

-president

-president's

-presidential

-presidentially

-presidents

-presider

-presides

-presiding

-press

-pressed

-presser

-presses

-pressing

-pressingly

-pressings

-pressure

-pressured

-pressures

-pressuring

-prestige

-presumably

-presume

-presumed

-presumer

-presumes

-presuming

-presumingly

-presumption

-presumption's

-presumptions

-presumptuous

-presumptuously

-presumptuousness

-presuppose

-presupposed

-presupposes

-presupposing

-pretend

-pretended

-pretendedly

-pretender

-pretenders

-pretending

-pretends

-pretentious

-pretentiously

-pretentiousness

-pretext

-pretext's

-pretexts

-prettied

-prettier

-pretties

-prettiest

-prettily

-prettiness

-pretty

-prettying

-prevail

-prevailed

-prevailing

-prevailingly

-prevails

-prevalence

-prevalent

-prevalently

-prevent

-preventable

-preventably

-prevented

-preventer

-preventing

-prevention

-preventions

-preventive

-preventively

-preventiveness

-preventives

-prevents

-preview

-previewed

-previewer

-previewers

-previewing

-previews

-previous

-previously

-previousness

-prey

-preyed

-preyer

-preying

-preys

-price

-priced

-priceless

-pricer

-pricers

-prices

-pricing

-prick

-pricked

-pricker

-pricking

-pricklier

-prickliness

-prickly

-pricks

-pride

-prided

-prides

-priding

-pried

-prier

-pries

-priest

-priestliness

-priestly

-priests

-primacy

-primaries

-primarily

-primary

-primary's

-prime

-primed

-primely

-primeness

-primer

-primers

-primes

-primeval

-primevally

-priming

-primitive

-primitively

-primitiveness

-primitives

-primrose

-prince

-princelier

-princeliness

-princely

-princes

-princess

-princess's

-princesses

-principal

-principalities

-principality

-principality's

-principally

-principals

-principle

-principled

-principles

-print

-printable

-printably

-printed

-printer

-printers

-printing

-printout

-printouts

-prints

-prior

-priori

-priorities

-priority

-priority's

-priorly

-priors

-priory

-prism

-prism's

-prisms

-prison

-prisoner

-prisoner's

-prisoners

-prisons

-privacies

-privacy

-private

-privately

-privateness

-privates

-privation

-privations

-privative

-privatively

-privies

-privilege

-privileged

-privileges

-privy

-privy's

-prize

-prized

-prizer

-prizers

-prizes

-prizing

-pro

-pro's

-probabilistic

-probabilistically

-probabilities

-probability

-probable

-probably

-probate

-probated

-probates

-probating

-probation

-probationer

-probationers

-probative

-probe

-probed

-prober

-probes

-probing

-probings

-problem

-problem's

-problematic

-problematical

-problematically

-problems

-procedural

-procedurally

-procedure

-procedure's

-procedures

-proceed

-proceeded

-proceeder

-proceeding

-proceedings

-proceeds

-process

-process's

-processed

-processes

-processing

-procession

-processor

-processor's

-processors

-proclaim

-proclaimed

-proclaimer

-proclaimers

-proclaiming

-proclaims

-proclamation

-proclamation's

-proclamations

-proclivities

-proclivity

-proclivity's

-procrastinate

-procrastinated

-procrastinates

-procrastinating

-procrastination

-procrastinator

-procrastinator's

-procrastinators

-procure

-procured

-procurement

-procurement's

-procurements

-procurer

-procurers

-procures

-procuring

-prodigal

-prodigally

-prodigious

-prodigiously

-prodigiousness

-produce

-produced

-producer

-producers

-produces

-producible

-producing

-product

-product's

-production

-production's

-productions

-productive

-productively

-productiveness

-productivities

-productivity

-products

-profane

-profaned

-profanely

-profaneness

-profaner

-profaning

-profess

-professed

-professedly

-professes

-professing

-profession

-profession's

-professional

-professionalism

-professionalisms

-professionally

-professionals

-professions

-professor

-professor's

-professors

-proffer

-proffered

-proffering

-proffers

-proficiencies

-proficiency

-proficient

-proficiently

-profile

-profiled

-profiler

-profiler's

-profilers

-profiles

-profiling

-profit

-profit's

-profitability

-profitable

-profitableness

-profitably

-profited

-profiteer

-profiteer's

-profiteers

-profiter

-profiters

-profiting

-profits

-profound

-profoundest

-profoundly

-profoundness

-progeny

-program

-program's

-programmability

-programmable

-programmed

-programmer

-programmer's

-programmers

-programming

-programs

-progress

-progressed

-progresses

-progressing

-progression

-progression's

-progressions

-progressive

-progressively

-progressiveness

-prohibit

-prohibited

-prohibiter

-prohibiting

-prohibition

-prohibition's

-prohibitions

-prohibitive

-prohibitively

-prohibitiveness

-prohibits

-project

-project's

-projected

-projecting

-projection

-projection's

-projections

-projective

-projectively

-projector

-projector's

-projectors

-projects

-prolegomena

-proletariat

-proliferate

-proliferated

-proliferates

-proliferating

-proliferation

-proliferative

-prolific

-prolificness

-prolog

-prolog's

-prologs

-prologue

-prologue's

-prologues

-prolong

-prolonged

-prolonger

-prolonging

-prolongs

-promenade

-promenade's

-promenader

-promenades

-promenading

-prominence

-prominent

-prominently

-promiscuity

-promiscuity's

-promiscuous

-promiscuously

-promiscuousness

-promise

-promised

-promiser

-promises

-promising

-promisingly

-promontories

-promontory

-promote

-promoted

-promoter

-promoters

-promotes

-promoting

-promotion

-promotional

-promotions

-promotive

-promotiveness

-prompt

-prompted

-prompter

-prompters

-promptest

-prompting

-promptings

-promptly

-promptness

-prompts

-promulgate

-promulgated

-promulgates

-promulgating

-promulgation

-promulgations

-prone

-pronely

-proneness

-prong

-pronged

-prongs

-pronoun

-pronoun's

-pronounce

-pronounceable

-pronounced

-pronouncedly

-pronouncement

-pronouncement's

-pronouncements

-pronouncer

-pronounces

-pronouncing

-pronouns

-pronunciation

-pronunciation's

-pronunciations

-proof

-proof's

-proofed

-proofer

-proofing

-proofs

-prop

-propaganda

-propagate

-propagated

-propagates

-propagating

-propagation

-propagations

-propagative

-propel

-propelled

-propeller

-propeller's

-propellers

-propels

-propensities

-propensity

-proper

-properly

-properness

-propertied

-properties

-property

-prophecies

-prophecy

-prophecy's

-prophesied

-prophesier

-prophesies

-prophesy

-prophesying

-prophet

-prophet's

-prophetic

-prophets

-propitious

-propitiously

-propitiousness

-proponent

-proponent's

-proponents

-proportion

-proportional

-proportionally

-proportionately

-proportioned

-proportioner

-proportioning

-proportionment

-proportions

-proposal

-proposal's

-proposals

-propose

-proposed

-proposer

-proposers

-proposes

-proposing

-proposition

-propositional

-propositionally

-propositioned

-propositioning

-propositions

-propound

-propounded

-propounder

-propounding

-propounds

-proprietary

-proprietor

-proprietor's

-proprietors

-propriety

-props

-propulsion

-propulsion's

-propulsions

-pros

-prose

-prosecute

-prosecuted

-prosecutes

-prosecuting

-prosecution

-prosecutions

-proser

-prosing

-prosodic

-prosodics

-prospect

-prospected

-prospecting

-prospection

-prospection's

-prospections

-prospective

-prospectively

-prospectiveness

-prospectives

-prospector

-prospector's

-prospectors

-prospects

-prospectus

-prosper

-prospered

-prospering

-prosperity

-prosperous

-prosperously

-prosperousness

-prospers

-prostitution

-prostrate

-prostrated

-prostration

-protect

-protected

-protectedly

-protecting

-protection

-protection's

-protections

-protective

-protectively

-protectiveness

-protector

-protector's

-protectorate

-protectors

-protects

-protege

-protege's

-proteges

-protein

-protein's

-proteins

-protest

-protest's

-protestants

-protestation

-protestations

-protested

-protester

-protester's

-protesters

-protesting

-protestingly

-protests

-protocol

-protocol's

-protocols

-proton

-proton's

-protons

-protoplasm

-prototype

-prototype's

-prototyped

-prototypes

-prototypical

-prototypically

-prototyping

-protrude

-protruded

-protrudes

-protruding

-protrusion

-protrusion's

-protrusions

-proud

-prouder

-proudest

-proudly

-provability

-provable

-provableness

-provably

-prove

-proved

-proven

-provenly

-prover

-proverb

-proverb's

-proverbs

-provers

-proves

-provide

-provided

-providence

-provider

-providers

-provides

-providing

-province

-province's

-provinces

-provincial

-provincially

-proving

-provision

-provisional

-provisionally

-provisioned

-provisioner

-provisioning

-provisions

-provocation

-provoke

-provoked

-provokes

-provoking

-provokingly

-prow

-prow's

-prowess

-prowl

-prowled

-prowler

-prowlers

-prowling

-prowls

-prows

-proximal

-proximally

-proximate

-proximately

-proximateness

-proximity

-prudence

-prudent

-prudently

-prune

-pruned

-pruner

-pruners

-prunes

-pruning

-pry

-prying

-pryingly

-psalm

-psalm's

-psalms

-pseudo

-psyche

-psyche's

-psyches

-psychiatrist

-psychiatrist's

-psychiatrists

-psychiatry

-psychological

-psychologically

-psychologist

-psychologist's

-psychologists

-psychology

-psychosocial

-psychosocially

-pub

-pub's

-public

-publication

-publication's

-publications

-publicity

-publicly

-publicness

-publics

-publish

-published

-publisher

-publishers

-publishes

-publishing

-pubs

-pucker

-puckered

-puckering

-puckers

-pudding

-pudding's

-puddings

-puddle

-puddled

-puddler

-puddles

-puddling

-puff

-puffed

-puffer

-puffers

-puffing

-puffs

-pull

-pulled

-puller

-pulley

-pulley's

-pulleys

-pulling

-pullings

-pulls

-pulp

-pulper

-pulping

-pulpit

-pulpit's

-pulpits

-pulse

-pulsed

-pulser

-pulses

-pulsing

-pump

-pumped

-pumper

-pumping

-pumpkin

-pumpkin's

-pumpkins

-pumps

-pun

-pun's

-punch

-punched

-puncher

-puncher's

-punchers

-punches

-punching

-punchings

-punctual

-punctually

-punctualness

-punctuation

-puncture

-puncture's

-punctured

-punctures

-puncturing

-punier

-puniness

-punish

-punishable

-punished

-punisher

-punishes

-punishing

-punishment

-punishment's

-punishments

-punitive

-punitively

-punitiveness

-puns

-punt

-punted

-punter

-punters

-punting

-punts

-puny

-pup

-pup's

-pupa

-pupas

-pupil

-pupil's

-pupils

-puppet

-puppet's

-puppets

-puppies

-puppy

-puppy's

-pups

-purchasable

-purchase

-purchased

-purchaser

-purchasers

-purchases

-purchasing

-pure

-purely

-pureness

-purer

-purest

-purge

-purged

-purger

-purges

-purging

-purification

-purifications

-purified

-purifier

-purifiers

-purifies

-purify

-purifying

-purity

-purple

-purpled

-purpler

-purples

-purplest

-purpling

-purport

-purported

-purportedly

-purporter

-purporters

-purporting

-purports

-purpose

-purposed

-purposeful

-purposefully

-purposefulness

-purposely

-purposes

-purposing

-purposive

-purposively

-purposiveness

-purr

-purred

-purring

-purringly

-purrs

-purse

-pursed

-purser

-pursers

-purses

-pursing

-pursue

-pursued

-pursuer

-pursuers

-pursues

-pursuing

-pursuit

-pursuit's

-pursuits

-purview

-push

-pushbutton

-pushbuttons

-pushdown

-pushed

-pusher

-pushers

-pushes

-pushing

-puss

-pussier

-pussies

-pussy

-put

-puts

-putter

-putterer

-puttering

-putters

-putting

-puzzle

-puzzled

-puzzlement

-puzzler

-puzzlers

-puzzles

-puzzling

-puzzlings

-pygmies

-pygmy

-pygmy's

-pyramid

-pyramid's

-pyramids

-quack

-quacked

-quacking

-quacks

-quadrant

-quadrant's

-quadrants

-quadratic

-quadratical

-quadratically

-quadratics

-quadrature

-quadrature's

-quadratures

-quadruple

-quadrupled

-quadruples

-quadrupling

-quadword

-quadword's

-quadwords

-quagmire

-quagmire's

-quagmires

-quail

-quail's

-quails

-quaint

-quaintly

-quaintness

-quake

-quaked

-quaker

-quakers

-quakes

-quaking

-qualification

-qualifications

-qualified

-qualifiedly

-qualifier

-qualifiers

-qualifies

-qualify

-qualifying

-qualitative

-qualitatively

-qualities

-quality

-quality's

-qualm

-qualms

-quandaries

-quandary

-quandary's

-quanta

-quantifiable

-quantification

-quantifications

-quantified

-quantifier

-quantifiers

-quantifies

-quantify

-quantifying

-quantitative

-quantitatively

-quantitativeness

-quantities

-quantity

-quantity's

-quantum

-quarantine

-quarantine's

-quarantined

-quarantines

-quarantining

-quarrel

-quarrels

-quarrelsome

-quarrelsomely

-quarrelsomeness

-quarried

-quarrier

-quarries

-quarry

-quarry's

-quarrying

-quart

-quarter

-quartered

-quarterer

-quartering

-quarterlies

-quarterly

-quarters

-quartet

-quartet's

-quartets

-quarts

-quartz

-quash

-quashed

-quashes

-quashing

-quasi

-quaver

-quavered

-quavering

-quaveringly

-quavers

-quay

-quays

-queen

-queen's

-queenly

-queens

-queer

-queerer

-queerest

-queerly

-queerness

-queers

-quell

-quelled

-queller

-quelling

-quells

-quench

-quenched

-quencher

-quenches

-quenching

-queried

-querier

-queries

-query

-querying

-quest

-quested

-quester

-questers

-questing

-question

-questionable

-questionableness

-questionably

-questioned

-questioner

-questioners

-questioning

-questioningly

-questionings

-questionnaire

-questionnaire's

-questionnaires

-questions

-quests

-queue

-queue's

-queued

-queuer

-queuer's

-queuers

-queues

-quick

-quicken

-quickened

-quickener

-quickening

-quickens

-quicker

-quickest

-quickly

-quickness

-quicksilver

-quiet

-quieted

-quieten

-quietened

-quietening

-quietens

-quieter

-quietest

-quieting

-quietly

-quietness

-quiets

-quietude

-quill

-quills

-quilt

-quilted

-quilter

-quilting

-quilts

-quinine

-quit

-quite

-quits

-quitter

-quitter's

-quitters

-quitting

-quiver

-quivered

-quivering

-quivers

-quiz

-quizzed

-quizzes

-quizzing

-quo

-quota

-quota's

-quotas

-quotation

-quotation's

-quotations

-quote

-quoted

-quotes

-quoth

-quotient

-quotients

-quoting

-rabbit

-rabbit's

-rabbited

-rabbiter

-rabbiting

-rabbits

-rabble

-rabbled

-rabbler

-rabbling

-raccoon

-raccoon's

-raccoons

-race

-raced

-racehorse

-racehorse's

-racehorses

-racer

-racers

-races

-racial

-racially

-racing

-rack

-racked

-racker

-racket

-racket's

-racketeer

-racketeering

-racketeers

-rackets

-racking

-racks

-radar

-radar's

-radars

-radial

-radially

-radiance

-radiant

-radiantly

-radiate

-radiated

-radiately

-radiates

-radiating

-radiation

-radiations

-radiative

-radiatively

-radiator

-radiator's

-radiators

-radical

-radically

-radicalness

-radicals

-radio

-radioed

-radioing

-radiology

-radios

-radish

-radish's

-radishes

-radius

-radiuses

-radix

-radixes

-raft

-rafter

-raftered

-rafters

-rafts

-rag

-rag's

-rage

-raged

-rages

-ragged

-raggedly

-raggedness

-raging

-rags

-raid

-raided

-raider

-raiders

-raiding

-raids

-rail

-railed

-railer

-railers

-railing

-railroad

-railroaded

-railroader

-railroaders

-railroading

-railroads

-rails

-railway

-railway's

-railways

-raiment

-rain

-rain's

-rainbow

-rainbows

-raincoat

-raincoat's

-raincoats

-raindrop

-raindrop's

-raindrops

-rained

-rainfall

-rainier

-rainiest

-raining

-rains

-rainy

-raise

-raised

-raiser

-raisers

-raises

-raisin

-raising

-raisins

-rake

-raked

-raker

-rakes

-raking

-rallied

-rallies

-rally

-rallying

-ram

-ram's

-ramble

-rambled

-rambler

-ramblers

-rambles

-rambling

-ramblingly

-ramblings

-ramification

-ramification's

-ramifications

-ramp

-ramp's

-rampart

-ramparts

-ramped

-ramping

-ramps

-rams

-ramses

-ran

-ranch

-ranched

-rancher

-ranchers

-ranches

-ranching

-random

-randomly

-randomness

-rang

-range

-ranged

-ranger

-rangers

-ranges

-ranging

-rank

-ranked

-ranker

-ranker's

-rankers

-rankest

-ranking

-ranking's

-rankings

-rankle

-rankled

-rankles

-rankling

-rankly

-rankness

-ranks

-ransack

-ransacked

-ransacker

-ransacking

-ransacks

-ransom

-ransomer

-ransoming

-ransoms

-rant

-ranted

-ranter

-ranters

-ranting

-rantingly

-rants

-rap

-rap's

-rape

-raped

-raper

-rapes

-rapid

-rapidity

-rapidly

-rapidness

-rapids

-raping

-raps

-rapt

-raptly

-raptness

-rapture

-rapture's

-raptured

-raptures

-rapturing

-rapturous

-rapturously

-rapturousness

-rare

-rarely

-rareness

-rarer

-rarest

-raring

-rarities

-rarity

-rarity's

-rascal

-rascally

-rascals

-rash

-rasher

-rashes

-rashly

-rashness

-rasp

-raspberry

-rasped

-rasper

-rasping

-raspingly

-raspings

-rasps

-raster

-rasters

-rat

-rat's

-rate

-rated

-rater

-raters

-rates

-rather

-ratification

-ratifications

-ratified

-ratifies

-ratify

-ratifying

-rating

-ratings

-ratio

-ratio's

-ration

-rational

-rationale

-rationale's

-rationales

-rationalities

-rationality

-rationally

-rationalness

-rationed

-rationing

-rations

-ratios

-rats

-rattle

-rattled

-rattler

-rattlers

-rattles

-rattlesnake

-rattlesnake's

-rattlesnakes

-rattling

-rattlingly

-ravage

-ravaged

-ravager

-ravagers

-ravages

-ravaging

-rave

-raved

-raven

-ravened

-ravener

-ravening

-ravenous

-ravenously

-ravenousness

-ravens

-raver

-raves

-ravine

-ravine's

-ravined

-ravines

-raving

-ravings

-raw

-rawer

-rawest

-rawly

-rawness

-raws

-ray

-ray's

-rayed

-rays

-razor

-razor's

-razors

-re

-reabbreviate

-reabbreviated

-reabbreviates

-reabbreviating

-reach

-reachable

-reachably

-reached

-reacher

-reaches

-reaching

-reacquainted

-react

-reacted

-reacting

-reaction

-reaction's

-reactionaries

-reactionary

-reactionary's

-reactions

-reactivate

-reactivated

-reactivates

-reactivating

-reactivation

-reactive

-reactively

-reactiveness

-reactivity

-reactor

-reactor's

-reactors

-reacts

-read

-readability

-readable

-readableness

-readapting

-reader

-reader's

-readers

-readied

-readier

-readies

-readiest

-readily

-readiness

-reading

-readings

-readjustable

-readjusted

-readjustments

-readjusts

-readout

-readout's

-readouts

-reads

-ready

-readying

-reaffirm

-reaffirmed

-reaffirming

-reaffirms

-reagents

-real

-realest

-realign

-realigned

-realigning

-realignment

-realignments

-realigns

-realism

-realist

-realist's

-realistic

-realistically

-realists

-realities

-reality

-realizable

-realizable's

-realizableness

-realizables

-realizablies

-realizably

-realization

-realization's

-realizations

-realize

-realized

-realizer

-realizers

-realizes

-realizing

-realizing's

-realizingly

-realizings

-reallocate

-reallocated

-reallocates

-reallocating

-reallocation

-reallocation's

-reallocations

-reallocator

-reallocator's

-reallocators

-reallotments

-reallots

-reallotted

-reallotting

-really

-realm

-realm's

-realms

-realness

-reals

-ream

-ream's

-reamed

-reamer

-reaming

-reams

-reanalysis

-reap

-reaped

-reaper

-reaping

-reappear

-reappeared

-reappearing

-reappears

-reapplying

-reapportioned

-reappraisal

-reappraisals

-reappraised

-reappraises

-reaps

-rear

-reared

-rearer

-rearing

-rearmed

-rearms

-rearrange

-rearrangeable

-rearranged

-rearrangement

-rearrangement's

-rearrangements

-rearranges

-rearranging

-rearrest

-rearrested

-rears

-reason

-reasonable

-reasonableness

-reasonably

-reasoned

-reasoner

-reasoning

-reasonings

-reasons

-reassemble

-reassembled

-reassembler

-reassembles

-reassembling

-reasserts

-reassess

-reassessed

-reassesses

-reassessing

-reassessment

-reassessment's

-reassessments

-reassign

-reassignable

-reassigned

-reassigning

-reassignment

-reassignment's

-reassignments

-reassigns

-reassurances

-reassure

-reassured

-reassures

-reassuring

-reassuringly

-reawaken

-reawakened

-reawakening

-reawakens

-rebate

-rebate's

-rebated

-rebater

-rebates

-rebating

-rebel

-rebel's

-rebelled

-rebelling

-rebellion

-rebellion's

-rebellions

-rebellious

-rebelliously

-rebelliousness

-rebells

-rebels

-rebidding

-rebids

-rebirth

-rebirth's

-rebonds

-reboot

-rebooted

-rebooter

-rebooters

-rebooting

-reboots

-reborn

-rebound

-rebounded

-rebounder

-rebounding

-rebounds

-rebroadcast

-rebroadcasts

-rebuff

-rebuffed

-rebuffing

-rebuffs

-rebuild

-rebuilding

-rebuilds

-rebuilt

-rebuke

-rebuked

-rebuker

-rebukes

-rebuking

-rebut

-rebuttal

-rebuttals

-rebutted

-rebutting

-recalculate

-recalculated

-recalculates

-recalculating

-recalculation

-recalculations

-recall

-recalled

-recaller

-recalling

-recalls

-recapitulate

-recapitulated

-recapitulates

-recapitulating

-recapitulation

-recapped

-recapping

-recapture

-recaptured

-recaptures

-recapturing

-recast

-recasting

-recasts

-recede

-receded

-recedes

-receding

-receipt

-receipt's

-receipted

-receipting

-receipts

-receivable

-receivables

-receive

-received

-receiver

-receiver's

-receivers

-receives

-receiving

-recent

-recently

-recentness

-receptacle

-receptacle's

-receptacles

-reception

-reception's

-receptions

-receptive

-receptively

-receptiveness

-receptivity

-receptor

-receptor's

-receptors

-recess

-recessed

-recesses

-recessing

-recession

-recession's

-recessions

-recessive

-recessively

-recessiveness

-recharged

-recharges

-rechartering

-rechecked

-rechecks

-recipe

-recipe's

-recipes

-recipient

-recipient's

-recipients

-reciprocal

-reciprocally

-reciprocals

-reciprocate

-reciprocated

-reciprocates

-reciprocating

-reciprocation

-reciprocative

-reciprocity

-recirculate

-recirculated

-recirculates

-recirculating

-recirculation

-recital

-recital's

-recitals

-recitation

-recitation's

-recitations

-recite

-recited

-reciter

-recites

-reciting

-reckless

-recklessly

-recklessness

-reckon

-reckoned

-reckoner

-reckoning

-reckonings

-reckons

-reclaim

-reclaimable

-reclaimed

-reclaimer

-reclaimers

-reclaiming

-reclaims

-reclamation

-reclamations

-reclassification

-reclassified

-reclassifies

-reclassify

-reclassifying

-recline

-reclined

-reclines

-reclining

-reclustered

-reclusters

-recode

-recoded

-recodes

-recoding

-recognition

-recognition's

-recognitions

-recoil

-recoiled

-recoiling

-recoils

-recoinage

-recollect

-recollected

-recollecting

-recollection

-recollection's

-recollections

-recollects

-recombination

-recombination's

-recombinational

-recombinations

-recombine

-recombined

-recombines

-recombining

-recommenced

-recommences

-recommend

-recommendation

-recommendation's

-recommendations

-recommended

-recommender

-recommending

-recommends

-recompense

-recompilations

-recompile

-recompiled

-recompiles

-recompiling

-recompute

-recomputed

-recomputes

-recomputing

-reconcile

-reconciled

-reconciler

-reconciles

-reconciliation

-reconciliation's

-reconciliations

-reconciling

-reconditioned

-reconfigurable

-reconfiguration

-reconfiguration's

-reconfigurations

-reconfigure

-reconfigured

-reconfigurer

-reconfigures

-reconfiguring

-reconnect

-reconnected

-reconnecter

-reconnecting

-reconnection

-reconnects

-reconsider

-reconsideration

-reconsidered

-reconsidering

-reconsiders

-reconsolidated

-reconsolidates

-reconstituted

-reconstitutes

-reconstruct

-reconstructed

-reconstructible

-reconstructing

-reconstruction

-reconstructions

-reconstructive

-reconstructs

-recontacted

-reconvened

-reconvenes

-reconverts

-record

-recorded

-recorder

-recorders

-recording

-recordings

-records

-recored

-recount

-recounted

-recounter

-recounting

-recounts

-recourse

-recourses

-recover

-recoverability

-recoverable

-recovered

-recoverer

-recoveries

-recovering

-recovers

-recovery

-recovery's

-recreate

-recreated

-recreates

-recreating

-recreation

-recreational

-recreations

-recreative

-recruit

-recruit's

-recruited

-recruiter

-recruiter's

-recruiters

-recruiting

-recruits

-recta

-rectangle

-rectangle's

-rectangles

-rectangular

-rectangularly

-rector

-rector's

-rectors

-rectum

-rectum's

-rectums

-recur

-recurrence

-recurrence's

-recurrences

-recurrent

-recurrently

-recurring

-recurs

-recurse

-recursed

-recurses

-recursing

-recursion

-recursion's

-recursions

-recursive

-recursively

-recursiveness

-recurved

-recyclable

-recycle

-recycled

-recycles

-recycling

-red

-redbreast

-redden

-reddened

-reddening

-redder

-reddest

-reddish

-reddishness

-redeclare

-redeclared

-redeclares

-redeclaring

-redecorated

-redecorates

-redeem

-redeemed

-redeemer

-redeemers

-redeeming

-redeems

-redefine

-redefined

-redefines

-redefining

-redefinition

-redefinition's

-redefinitions

-redemption

-redemptioner

-redeploys

-redeposit

-redeposit's

-redeposited

-redepositing

-redepositor

-redepositor's

-redepositors

-redeposits

-redesign

-redesigned

-redesigning

-redesigns

-redetermination

-redetermines

-redevelop

-redeveloped

-redeveloper

-redevelopers

-redeveloping

-redevelopment

-redevelops

-redials

-redirect

-redirected

-redirecting

-redirection

-redirections

-redirector

-redirector's

-redirectors

-redirects

-rediscovered

-rediscovers

-redisplay

-redisplayed

-redisplaying

-redisplays

-redistribute

-redistributed

-redistributes

-redistributing

-redistribution

-redistribution's

-redistributions

-redistributive

-redly

-redness

-redoing

-redone

-redouble

-redoubled

-redoubles

-redoubling

-redoubtable

-redraw

-redrawing

-redrawn

-redraws

-redress

-redressed

-redresser

-redresses

-redressing

-reds

-reduce

-reduced

-reducer

-reducers

-reduces

-reducibility

-reducible

-reducibly

-reducing

-reduction

-reduction's

-reductions

-redundancies

-redundancy

-redundant

-redundantly

-reduplicated

-reed

-reed's

-reeder

-reeding

-reeds

-reeducation

-reef

-reefer

-reefing

-reefs

-reel

-reelect

-reelected

-reelecting

-reelects

-reeled

-reeler

-reeling

-reels

-reemerged

-reenactment

-reenforcement

-reenlists

-reenter

-reentered

-reentering

-reenters

-reentrant

-reestablish

-reestablished

-reestablishes

-reestablishing

-reestimating

-reevaluate

-reevaluated

-reevaluates

-reevaluating

-reevaluation

-reeves

-reexamine

-reexamined

-reexamines

-reexamining

-refaced

-refaces

-refelled

-refelling

-refer

-referee

-referee's

-refereed

-refereeing

-referees

-reference

-referenced

-referencer

-references

-referencing

-referendum

-referent

-referent's

-referential

-referentiality

-referentially

-referents

-referral

-referral's

-referrals

-referred

-referrer

-referring

-refers

-refill

-refillable

-refilled

-refilling

-refills

-refine

-refined

-refinement

-refinement's

-refinements

-refiner

-refines

-refining

-refinished

-reflect

-reflected

-reflecting

-reflection

-reflection's

-reflections

-reflective

-reflectively

-reflectiveness

-reflectivity

-reflector

-reflector's

-reflectors

-reflects

-reflex

-reflex's

-reflexed

-reflexes

-reflexive

-reflexively

-reflexiveness

-reflexivity

-reflexly

-refluent

-refocus

-refocused

-refocuses

-refocusing

-refolded

-reform

-reformable

-reformat

-reformation

-reformative

-reformats

-reformatted

-reformatter

-reformatting

-reformed

-reformer

-reformers

-reforming

-reforms

-reformulate

-reformulated

-reformulates

-reformulating

-reformulation

-refractoriness

-refractory

-refrain

-refrained

-refraining

-refrains

-refresh

-refreshed

-refreshen

-refresher

-refreshers

-refreshes

-refreshing

-refreshingly

-refreshment

-refreshment's

-refreshments

-refried

-refries

-refrigerator

-refrigerator's

-refrigerators

-refry

-refrying

-refuel

-refuels

-refuge

-refuged

-refugee

-refugee's

-refugees

-refuges

-refuging

-refund

-refund's

-refunded

-refunder

-refunders

-refunding

-refunds

-refusal

-refusals

-refuse

-refused

-refuser

-refuses

-refusing

-refutable

-refutation

-refute

-refuted

-refuter

-refutes

-refuting

-regain

-regained

-regaining

-regains

-regal

-regaled

-regaling

-regally

-regard

-regarded

-regarding

-regardless

-regardlessly

-regardlessness

-regards

-regenerate

-regenerated

-regenerately

-regenerateness

-regenerates

-regenerating

-regeneration

-regenerative

-regeneratively

-regenerators

-regent

-regent's

-regents

-regime

-regime's

-regimen

-regiment

-regimented

-regiments

-regimes

-region

-region's

-regional

-regionally

-regions

-register

-registered

-registering

-registers

-registration

-registration's

-registrations

-regreets

-regress

-regressed

-regresses

-regressing

-regression

-regression's

-regressions

-regressive

-regressively

-regressiveness

-regret

-regretful

-regretfully

-regretfulness

-regrets

-regrettable

-regrettably

-regretted

-regretting

-regrids

-regroup

-regrouped

-regrouping

-regular

-regularities

-regularity

-regularly

-regulars

-regulate

-regulated

-regulates

-regulating

-regulation

-regulations

-regulative

-regulator

-regulator's

-regulators

-rehash

-rehashed

-rehashes

-rehashing

-rehearsal

-rehearsal's

-rehearsals

-rehearse

-rehearsed

-rehearser

-rehearses

-rehearsing

-rehoused

-rehouses

-reign

-reigned

-reigning

-reigns

-reimbursed

-reimbursement

-reimbursement's

-reimbursements

-rein

-reincarnate

-reincarnated

-reincarnation

-reincorporating

-reincorporation

-reindeer

-reined

-reinforce

-reinforced

-reinforcement

-reinforcement's

-reinforcements

-reinforcer

-reinforces

-reinforcing

-reining

-reins

-reinsert

-reinserted

-reinserting

-reinsertions

-reinserts

-reinstall

-reinstalled

-reinstaller

-reinstalling

-reinstalls

-reinstate

-reinstated

-reinstatement

-reinstates

-reinstating

-reintegrated

-reinterpret

-reinterpretations

-reinterpreted

-reinterpreting

-reinterprets

-reinterviewed

-reintroduce

-reintroduced

-reintroduces

-reintroducing

-reinvent

-reinvented

-reinventing

-reinvention

-reinvents

-reinvested

-reinvoked

-reinvokes

-reissue

-reissued

-reissuer

-reissuer's

-reissuers

-reissues

-reissuing

-reiterate

-reiterated

-reiterates

-reiterating

-reiteration

-reiterations

-reiterative

-reiteratively

-reiterativeness

-reject

-rejected

-rejecter

-rejecting

-rejectingly

-rejection

-rejection's

-rejections

-rejective

-rejector

-rejector's

-rejectors

-rejects

-rejoice

-rejoiced

-rejoicer

-rejoices

-rejoicing

-rejoicingly

-rejoin

-rejoined

-rejoining

-rejoins

-rekindle

-rekindled

-rekindler

-rekindles

-rekindling

-reknit

-relabel

-relabels

-relapse

-relapsed

-relapser

-relapses

-relapsing

-relate

-related

-relatedly

-relatedness

-relater

-relates

-relating

-relation

-relational

-relationally

-relations

-relationship

-relationship's

-relationships

-relative

-relatively

-relativeness

-relatives

-relativism

-relativistic

-relativistically

-relativity

-relativity's

-relax

-relaxation

-relaxation's

-relaxations

-relaxed

-relaxedly

-relaxedness

-relaxer

-relaxes

-relaxing

-relay

-relayed

-relaying

-relays

-relearns

-release

-released

-releaser

-releases

-releasing

-relegate

-relegated

-relegates

-relegating

-relegation

-relent

-relented

-relenting

-relentless

-relentlessly

-relentlessness

-relents

-relevance

-relevances

-relevant

-relevantly

-reliabilities

-reliability

-reliable

-reliableness

-reliably

-reliance

-relic

-relic's

-relicense

-relicensed

-relicenser

-relicenses

-relicensing

-relics

-relied

-relief

-reliefs

-relier

-relies

-relieve

-relieved

-relievedly

-reliever

-relievers

-relieves

-relieving

-religion

-religion's

-religions

-religious

-religiously

-religiousness

-relinking

-relinquish

-relinquished

-relinquishes

-relinquishing

-relish

-relished

-relishes

-relishing

-relive

-relives

-reliving

-reload

-reloaded

-reloader

-reloading

-reloads

-relocate

-relocated

-relocates

-relocating

-relocation

-relocations

-reluctance

-reluctances

-reluctant

-reluctantly

-rely

-relying

-remade

-remain

-remainder

-remainder's

-remaindered

-remaindering

-remainders

-remained

-remaining

-remains

-remark

-remarkable

-remarkableness

-remarkably

-remarked

-remarking

-remarks

-remarriages

-remarried

-remedied

-remedies

-remedy

-remedying

-remember

-remembered

-rememberer

-remembering

-remembers

-remembrance

-remembrance's

-remembrancer

-remembrances

-remind

-reminded

-reminder

-reminders

-reminding

-reminds

-reminiscence

-reminiscence's

-reminiscences

-reminiscent

-reminiscently

-remissions

-remittance

-remittances

-remixed

-remnant

-remnant's

-remnants

-remodel

-remodels

-remodulate

-remodulated

-remodulates

-remodulating

-remodulation

-remodulator

-remodulator's

-remodulators

-remolding

-remonstrate

-remonstrated

-remonstrates

-remonstrating

-remonstration

-remonstrative

-remonstratively

-remorse

-remote

-remotely

-remoteness

-remotest

-remotion

-remoulds

-removable

-removableness

-removal

-removal's

-removals

-remove

-removed

-remover

-removes

-removing

-renaissance

-renal

-rename

-renamed

-renames

-renaming

-renatured

-renatures

-rend

-render

-rendered

-renderer

-rendering

-renderings

-renders

-rendezvous

-rendezvoused

-rendezvouses

-rendezvousing

-rending

-rendition

-rendition's

-renditions

-rends

-renegotiable

-renegotiated

-renegotiates

-renew

-renewal

-renewals

-renewed

-renewer

-renewing

-renews

-reno

-renominated

-renominates

-renounce

-renounced

-renouncer

-renounces

-renouncing

-renown

-renowned

-rent

-rental

-rental's

-rentals

-rented

-renter

-renter's

-renters

-renting

-rents

-renumber

-renumbered

-renumbering

-renumbers

-reopen

-reopened

-reopening

-reopens

-reorder

-reordered

-reordering

-reorders

-reoriented

-repackage

-repackaged

-repackager

-repackages

-repackaging

-repacks

-repaid

-repaint

-repainted

-repainter

-repainters

-repainting

-repaints

-repair

-repaired

-repairer

-repairers

-repairing

-repairman

-repairs

-reparable

-reparation

-reparation's

-reparations

-repartition

-repartitioned

-repartitioner

-repartitioners

-repartitioning

-repartitions

-repast

-repast's

-repasts

-repaving

-repay

-repayable

-repaying

-repayments

-repays

-repeal

-repealed

-repealer

-repealing

-repeals

-repeat

-repeatable

-repeated

-repeatedly

-repeater

-repeaters

-repeating

-repeats

-repel

-repels

-repent

-repentance

-repented

-repenter

-repenting

-repents

-repercussion

-repercussion's

-repercussions

-repertoire

-repetition

-repetition's

-repetitions

-repetitive

-repetitively

-repetitiveness

-rephrase

-rephrased

-rephrases

-rephrasing

-repine

-repined

-repiner

-repining

-replace

-replaceable

-replaced

-replacement

-replacement's

-replacements

-replacer

-replaces

-replacing

-replanted

-replay

-replayed

-replaying

-replays

-repleader

-replenish

-replenished

-replenisher

-replenishes

-replenishing

-replete

-repleteness

-repletion

-replica

-replica's

-replicas

-replicate

-replicated

-replicates

-replicating

-replication

-replications

-replicative

-replied

-replier

-replies

-reply

-replying

-report

-reported

-reportedly

-reporter

-reporters

-reporting

-reports

-repose

-reposed

-reposes

-reposing

-reposition

-repositioned

-repositioning

-repositions

-repositories

-repository

-repository's

-repost

-reposted

-reposter

-reposting

-repostings

-reposts

-represent

-representable

-representably

-representation

-representation's

-representational

-representationally

-representations

-representative

-representatively

-representativeness

-representatives

-represented

-representer

-representing

-represents

-repress

-repressed

-represses

-repressing

-repression

-repression's

-repressions

-repressive

-repressively

-repressiveness

-reprieve

-reprieved

-reprieves

-reprieving

-reprint

-reprinted

-reprinter

-reprinting

-reprints

-reprisal

-reprisal's

-reprisals

-reproach

-reproached

-reproacher

-reproaches

-reproaching

-reproachingly

-reprobates

-reprocessed

-reproduce

-reproduced

-reproducer

-reproducers

-reproduces

-reproducibilities

-reproducibility

-reproducible

-reproducibly

-reproducing

-reproduction

-reproduction's

-reproductions

-reproductive

-reproductively

-reproductivity

-reprogrammed

-reprogrammer

-reprogrammer's

-reprogrammers

-reprogramming

-reproof

-reprove

-reproved

-reprover

-reproving

-reprovingly

-reptile

-reptile's

-reptiles

-republic

-republic's

-republican

-republican's

-republicans

-republication

-republics

-republish

-republished

-republisher

-republisher's

-republishers

-republishes

-republishing

-repudiate

-repudiated

-repudiates

-repudiating

-repudiation

-repudiations

-repulse

-repulsed

-repulses

-repulsing

-repulsion

-repulsions

-repulsive

-repulsively

-repulsiveness

-reputable

-reputably

-reputation

-reputation's

-reputations

-repute

-reputed

-reputedly

-reputes

-reputing

-request

-requested

-requester

-requesters

-requesting

-requestioned

-requests

-requiem

-requiem's

-requiems

-require

-required

-requirement

-requirement's

-requirements

-requirer

-requires

-requiring

-requisite

-requisiteness

-requisites

-requisition

-requisitioned

-requisitioner

-requisitioning

-requisitions

-requite

-requited

-requiter

-requiting

-reran

-reread

-rereading

-rereads

-reroute

-rerouted

-rerouter

-rerouters

-reroutes

-reroutings

-rerun

-rerunning

-reruns

-res

-resalable

-resaturated

-resaturates

-rescaled

-rescan

-rescanned

-rescanning

-rescans

-reschedule

-rescheduled

-rescheduler

-reschedules

-rescheduling

-rescue

-rescued

-rescuer

-rescuers

-rescues

-rescuing

-resealed

-research

-researched

-researcher

-researcher's

-researchers

-researches

-researching

-reselect

-reselected

-reselecting

-reselects

-resell

-reseller

-resellers

-reselling

-resells

-resemblance

-resemblance's

-resemblances

-resemble

-resembled

-resembles

-resembling

-resends

-resent

-resented

-resentful

-resentfully

-resentfulness

-resenting

-resentment

-resents

-resequenced

-reservation

-reservation's

-reservations

-reserve

-reserved

-reservedly

-reservedness

-reserver

-reserves

-reserving

-reservoir

-reservoir's

-reservoirs

-reset

-reseted

-reseter

-reseting

-resets

-resetting

-resettings

-resettled

-resettles

-resettling

-reshape

-reshaped

-reshaper

-reshapes

-reshaping

-reside

-resided

-residence

-residence's

-residences

-resident

-resident's

-residential

-residentially

-residents

-resider

-resides

-residing

-residue

-residue's

-residues

-resifted

-resign

-resignation

-resignation's

-resignations

-resigned

-resignedly

-resignedness

-resigner

-resigning

-resigns

-resin

-resin's

-resined

-resining

-resins

-resist

-resistance

-resistances

-resistant

-resistantly

-resisted

-resister

-resistible

-resistibly

-resisting

-resistive

-resistively

-resistiveness

-resistivity

-resistor

-resistor's

-resistors

-resists

-resize

-resized

-resizes

-resizing

-resold

-resoluble

-resolute

-resolutely

-resoluteness

-resolution

-resolutions

-resolutive

-resolvable

-resolve

-resolved

-resolver

-resolvers

-resolves

-resolving

-resonance

-resonances

-resonant

-resonantly

-resort

-resorted

-resorter

-resorting

-resorts

-resound

-resounding

-resoundingly

-resounds

-resource

-resource's

-resourced

-resourceful

-resourcefully

-resourcefulness

-resources

-resourcing

-respecified

-respect

-respectability

-respectable

-respectableness

-respectably

-respected

-respecter

-respectful

-respectfully

-respectfulness

-respecting

-respective

-respectively

-respectiveness

-respects

-respiration

-respirations

-respired

-respires

-respite

-respited

-respiting

-resplendent

-resplendently

-respond

-responded

-respondent

-respondent's

-respondents

-responder

-responders

-responding

-responds

-response

-responser

-responses

-responsibilities

-responsibility

-responsible

-responsibleness

-responsibly

-responsions

-responsive

-responsively

-responsiveness

-rest

-restart

-restarted

-restarter

-restarting

-restarts

-restate

-restated

-restatement

-restates

-restating

-restaurant

-restaurant's

-restaurants

-rested

-rester

-restful

-restfully

-restfulness

-resting

-restive

-restively

-restiveness

-restless

-restlessly

-restlessness

-restoration

-restoration's

-restorations

-restore

-restored

-restorer

-restorers

-restores

-restoring

-restrain

-restrained

-restrainedly

-restrainer

-restrainers

-restraining

-restrains

-restraint

-restraint's

-restraints

-restrict

-restricted

-restrictedly

-restricting

-restriction

-restriction's

-restrictions

-restrictive

-restrictively

-restrictiveness

-restricts

-restroom

-restroom's

-restrooms

-restructure

-restructured

-restructures

-restructuring

-rests

-resubmit

-resubmits

-resubmitted

-resubmitting

-result

-resultant

-resultantly

-resultants

-resulted

-resulting

-results

-resumable

-resume

-resumed

-resumes

-resuming

-resumption

-resumption's

-resumptions

-resupplier

-resupplier's

-resuppliers

-resurface

-resurfaced

-resurfacer

-resurfacer's

-resurfacers

-resurfaces

-resurfacing

-resurged

-resurges

-resurrect

-resurrected

-resurrecting

-resurrection

-resurrection's

-resurrections

-resurrects

-resuspended

-retail

-retailed

-retailer

-retailers

-retailing

-retails

-retain

-retained

-retainer

-retainers

-retaining

-retainment

-retains

-retaliation

-retard

-retarded

-retarder

-retarding

-retention

-retentions

-retentive

-retentively

-retentiveness

-rethinks

-rethreading

-reticence

-reticent

-reticently

-reticle

-reticle's

-reticles

-reticular

-reticulate

-reticulated

-reticulately

-reticulates

-reticulating

-reticulation

-retied

-retina

-retina's

-retinal

-retinas

-retinue

-retinues

-retire

-retired

-retiredly

-retiredness

-retirement

-retirement's

-retirements

-retires

-retiring

-retiringly

-retiringness

-retitled

-retold

-retort

-retorted

-retorting

-retorts

-retrace

-retraced

-retraces

-retracing

-retract

-retractable

-retracted

-retracting

-retraction

-retractions

-retractor

-retractor's

-retractors

-retracts

-retrain

-retrained

-retraining

-retrains

-retranslated

-retransmission

-retransmission's

-retransmissions

-retransmit

-retransmits

-retransmitted

-retransmitting

-retreat

-retreated

-retreater

-retreating

-retreats

-retried

-retrier

-retriers

-retries

-retrievable

-retrieval

-retrieval's

-retrievals

-retrieve

-retrieved

-retriever

-retrievers

-retrieves

-retrieving

-retroactively

-retrospect

-retrospection

-retrospective

-retrospectively

-retry

-retrying

-return

-returnable

-returned

-returner

-returners

-returning

-returns

-retype

-retyped

-retypes

-retyping

-reunion

-reunion's

-reunions

-reunite

-reunited

-reuniting

-reupholstering

-reusable

-reuse

-reused

-reuses

-reusing

-revalidated

-revalidates

-revalidation

-revalued

-revalues

-revamp

-revamped

-revamping

-revamps

-reveal

-revealed

-revealer

-revealing

-reveals

-revel

-revelation

-revelation's

-revelations

-revelry

-revels

-revenge

-revenge's

-revenged

-revenger

-revenges

-revenging

-revenue

-revenuer

-revenuers

-revenues

-revere

-revered

-reverence

-reverencer

-reverend

-reverend's

-reverends

-reverently

-reveres

-reverified

-reverifies

-reverify

-reverifying

-revering

-reversal

-reversal's

-reversals

-reverse

-reversed

-reversely

-reverser

-reverses

-reversible

-reversing

-reversion

-reversioner

-reversions

-revert

-reverted

-reverter

-reverting

-revertive

-reverts

-revetting

-review

-reviewed

-reviewer

-reviewers

-reviewing

-reviews

-revile

-reviled

-reviler

-reviling

-revise

-revised

-reviser

-revises

-revising

-revision

-revision's

-revisions

-revisit

-revisited

-revisiting

-revisits

-revival

-revival's

-revivals

-revive

-revived

-reviver

-revives

-reviving

-revocation

-revocations

-revoke

-revoked

-revoker

-revokes

-revoking

-revolt

-revolted

-revolter

-revolting

-revoltingly

-revolts

-revolution

-revolution's

-revolutionaries

-revolutionariness

-revolutionary

-revolutionary's

-revolutions

-revolve

-revolved

-revolver

-revolvers

-revolves

-revolving

-reward

-rewarded

-rewarder

-rewarding

-rewardingly

-rewards

-rewind

-rewinded

-rewinder

-rewinding

-rewinds

-rewired

-rewires

-reword

-reworded

-rewording

-rewording's

-rewordings

-rewords

-rework

-reworked

-reworking

-reworks

-rewound

-rewrite

-rewriter

-rewrites

-rewriting

-rewritings

-rewritten

-rewrote

-rhetoric

-rheumatism

-rhinoceros

-rhubarb

-rhyme

-rhymed

-rhymer

-rhymes

-rhyming

-rhythm

-rhythm's

-rhythmic

-rhythmical

-rhythmically

-rhythmics

-rhythms

-rib

-rib's

-ribbed

-ribbing

-ribbon

-ribbon's

-ribbons

-ribs

-rice

-ricer

-rices

-rich

-richen

-richened

-richening

-richer

-riches

-richest

-richly

-richness

-rickshaw

-rickshaw's

-rickshaws

-rid

-ridden

-riddle

-riddled

-riddler

-riddles

-riddling

-ride

-rider

-rider's

-riders

-rides

-ridge

-ridge's

-ridged

-ridges

-ridging

-ridicule

-ridiculed

-ridiculer

-ridicules

-ridiculing

-ridiculous

-ridiculously

-ridiculousness

-riding

-ridings

-rids

-rifle

-rifled

-rifleman

-rifler

-rifles

-rifling

-rift

-rig

-rig's

-rigged

-rigging

-right

-righted

-righten

-righteous

-righteously

-righteousness

-righter

-rightful

-rightfully

-rightfulness

-righting

-rightly

-rightmost

-rightness

-rights

-rightward

-rightwards

-rigid

-rigidities

-rigidity

-rigidly

-rigidness

-rigorous

-rigorously

-rigorousness

-rigs

-rill

-rim

-rim's

-rime

-rimer

-riming

-rims

-rind

-rind's

-rinded

-rinds

-ring

-ringed

-ringer

-ringers

-ringing

-ringingly

-ringings

-rings

-rinse

-rinsed

-rinser

-rinses

-rinsing

-riot

-rioted

-rioter

-rioters

-rioting

-riotous

-riotously

-riotousness

-riots

-rip

-ripe

-ripely

-ripen

-ripened

-ripener

-ripeness

-ripening

-ripens

-riper

-ripest

-ripped

-ripping

-ripple

-rippled

-rippler

-ripples

-rippling

-rips

-rise

-risen

-riser

-risers

-rises

-rising

-risings

-risk

-risked

-risker

-risking

-risks

-rite

-rite's

-rited

-rites

-ritual

-ritually

-rituals

-rival

-rivalries

-rivalry

-rivalry's

-rivals

-rive

-rived

-riven

-river

-river's

-rivers

-riverside

-rivet

-riveted

-riveter

-riveting

-rivets

-riving

-rivulet

-rivulet's

-rivulets

-road

-road's

-roads

-roadside

-roadsides

-roadster

-roadster's

-roadsters

-roadway

-roadway's

-roadways

-roam

-roamed

-roamer

-roaming

-roams

-roar

-roared

-roarer

-roaring

-roaringest

-roars

-roast

-roasted

-roaster

-roasting

-roasts

-rob

-robbed

-robber

-robber's

-robberies

-robbers

-robbery

-robbery's

-robbing

-robe

-robed

-robes

-robin

-robin's

-robing

-robins

-robot

-robot's

-robotic

-robotics

-robots

-robs

-robust

-robustly

-robustness

-rock

-rocked

-rocker

-rockers

-rocket

-rocket's

-rocketed

-rocketing

-rockets

-rockier

-rockies

-rockiness

-rocking

-rocks

-rocky

-rod

-rod's

-rode

-rods

-roe

-roes

-rogue

-rogue's

-rogues

-roguing

-role

-role's

-roles

-roll

-rolled

-roller

-rollers

-rolling

-rolls

-romance

-romanced

-romancer

-romancers

-romances

-romancing

-romantic

-romantic's

-romantically

-romantics

-romp

-romped

-romper

-rompers

-romping

-romps

-roof

-roofed

-roofer

-roofers

-roofing

-roofs

-rook

-rooks

-room

-roomed

-roomer

-roomers

-rooming

-rooms

-roost

-rooster

-roosters

-root

-root's

-rooted

-rootedness

-rooter

-rooting

-roots

-rope

-roped

-roper

-ropers

-ropes

-roping

-rose

-rose's

-rosebud

-rosebud's

-rosebuds

-roses

-rosier

-rosiness

-rosy

-rot

-rotary

-rotate

-rotated

-rotates

-rotating

-rotation

-rotational

-rotationally

-rotations

-rotative

-rotatively

-rotator

-rotator's

-rotators

-rots

-rotten

-rottenly

-rottenness

-rouge

-rough

-roughed

-roughen

-roughened

-roughening

-roughens

-rougher

-roughest

-roughly

-roughness

-rouging

-round

-roundabout

-roundaboutness

-rounded

-roundedness

-rounder

-rounders

-roundest

-rounding

-roundly

-roundness

-roundoff

-rounds

-roundup

-roundup's

-roundups

-rouse

-roused

-rouser

-rouses

-rousing

-rout

-route

-routed

-router

-routers

-routes

-routine

-routinely

-routines

-routing

-routings

-rove

-roved

-rover

-roves

-roving

-row

-rowed

-rowen

-rower

-rowers

-rowing

-rows

-royal

-royalist

-royalist's

-royalists

-royally

-royalties

-royalty

-royalty's

-rub

-rubbed

-rubber

-rubber's

-rubbers

-rubbing

-rubbish

-rubbishes

-rubble

-rubbled

-rubbling

-rubies

-rubout

-rubs

-ruby

-ruby's

-rudder

-rudder's

-rudders

-ruddier

-ruddiness

-ruddy

-rude

-rudely

-rudeness

-ruder

-rudest

-rudiment

-rudiment's

-rudimentariness

-rudimentary

-rudiments

-rue

-ruefully

-rues

-ruffian

-ruffianly

-ruffians

-ruffle

-ruffled

-ruffler

-ruffles

-ruffling

-rug

-rug's

-rugged

-ruggedly

-ruggedness

-rugs

-ruin

-ruination

-ruination's

-ruinations

-ruined

-ruiner

-ruing

-ruining

-ruinous

-ruinously

-ruinousness

-ruins

-rule

-ruled

-ruler

-rulers

-rules

-ruling

-rulings

-rum

-rumble

-rumbled

-rumbler

-rumbles

-rumbling

-rumen

-rumens

-rump

-rumple

-rumpled

-rumples

-rumplier

-rumpling

-rumply

-rumps

-run

-runaway

-runaways

-rung

-rung's

-rungs

-runnable

-runner

-runner's

-runners

-running

-runs

-runtime

-rupture

-ruptured

-ruptures

-rupturing

-rural

-rurally

-rush

-rushed

-rusher

-rushes

-rushing

-russet

-russeted

-russeting

-russets

-rust

-rusted

-rustic

-rusticate

-rusticated

-rusticates

-rusticating

-rustication

-rustier

-rustiness

-rusting

-rustle

-rustled

-rustler

-rustlers

-rustles

-rustling

-rusts

-rusty

-rut

-rut's

-ruthless

-ruthlessly

-ruthlessness

-ruts

-rye

-rye's

-sable

-sable's

-sables

-sabotage

-sabotaged

-sabotages

-sabotaging

-sack

-sacked

-sacker

-sacking

-sacks

-sacred

-sacredly

-sacredness

-sacrifice

-sacrificed

-sacrificer

-sacrificers

-sacrifices

-sacrificial

-sacrificially

-sacrificing

-sad

-sadden

-saddened

-saddening

-saddens

-sadder

-saddest

-saddle

-saddled

-saddler

-saddles

-saddling

-sadism

-sadist

-sadist's

-sadistic

-sadistically

-sadists

-sadly

-sadness

-safe

-safeguard

-safeguarded

-safeguarding

-safeguards

-safely

-safeness

-safer

-safes

-safest

-safetied

-safeties

-safety

-safetying

-sag

-sagacious

-sagaciously

-sagaciousness

-sagacity

-sage

-sagely

-sageness

-sages

-sags

-said

-sail

-sailed

-sailer

-sailing

-sailor

-sailorly

-sailors

-sails

-saint

-sainted

-saintliness

-saintly

-saints

-sake

-saker

-sakes

-salable

-salad

-salad's

-salads

-salaried

-salaries

-salary

-sale

-sale's

-sales

-salesman

-salesmen

-salespeople

-salespeople's

-salesperson

-salesperson's

-salient

-saliently

-saline

-saliva

-sallied

-sallies

-sallow

-sallowness

-sally

-sallying

-salmon

-salmons

-salon

-salon's

-salons

-saloon

-saloon's

-saloons

-salt

-salted

-salter

-salters

-saltier

-saltiest

-saltiness

-salting

-saltness

-salts

-salty

-salutariness

-salutary

-salutation

-salutation's

-salutations

-salute

-saluted

-saluter

-salutes

-saluting

-salvage

-salvaged

-salvager

-salvages

-salvaging

-salvation

-salve

-salver

-salves

-salving

-same

-sameness

-sample

-sample's

-sampled

-sampler

-samplers

-samples

-sampling

-samplings

-sanctification

-sanctified

-sanctifier

-sanctify

-sanction

-sanctioned

-sanctioning

-sanctions

-sanctities

-sanctity

-sanctuaries

-sanctuary

-sanctuary's

-sand

-sandal

-sandal's

-sandals

-sanded

-sander

-sanders

-sandier

-sandiness

-sanding

-sandpaper

-sands

-sandstone

-sandstones

-sandwich

-sandwiched

-sandwiches

-sandwiching

-sandy

-sane

-sanely

-saneness

-saner

-sanest

-sang

-sanguine

-sanguinely

-sanguineness

-sanitarium

-sanitariums

-sanitary

-sanitation

-sanity

-sank

-sap

-sap's

-sapling

-sapling's

-saplings

-sapphire

-saps

-sarcasm

-sarcasm's

-sarcasms

-sarcastic

-sash

-sashed

-sashes

-sat

-satchel

-satchel's

-satchels

-sate

-sated

-satellite

-satellite's

-satellites

-sates

-satin

-sating

-satire

-satire's

-satires

-satirist

-satirist's

-satirists

-satisfaction

-satisfaction's

-satisfactions

-satisfactorily

-satisfactoriness

-satisfactory

-satisfiability

-satisfiable

-satisfied

-satisfier

-satisfiers

-satisfies

-satisfy

-satisfying

-satisfyingly

-saturate

-saturated

-saturater

-saturates

-saturating

-saturation

-saturations

-satyr

-sauce

-saucepan

-saucepan's

-saucepans

-saucer

-saucers

-sauces

-saucier

-sauciness

-saucing

-saucy

-saunter

-sauntered

-saunterer

-sauntering

-saunters

-sausage

-sausage's

-sausages

-savage

-savaged

-savagely

-savageness

-savager

-savagers

-savages

-savaging

-save

-saved

-saver

-savers

-saves

-saving

-savings

-saw

-sawed

-sawer

-sawing

-sawmill

-sawmill's

-sawmills

-saws

-sawtooth

-say

-sayer

-sayers

-saying

-sayings

-says

-scabbard

-scabbard's

-scabbards

-scaffold

-scaffolding

-scaffoldings

-scaffolds

-scalable

-scalar

-scalar's

-scalars

-scald

-scalded

-scalding

-scalds

-scale

-scaled

-scaler

-scalers

-scales

-scalier

-scaliness

-scaling

-scalings

-scallop

-scalloped

-scalloper

-scalloping

-scallops

-scalp

-scalp's

-scalper

-scalping

-scalps

-scaly

-scam

-scam's

-scamper

-scampered

-scampering

-scampers

-scams

-scan

-scandal

-scandal's

-scandalous

-scandalously

-scandalousness

-scandals

-scanned

-scanner

-scanner's

-scanners

-scanning

-scans

-scant

-scantier

-scanties

-scantiest

-scantily

-scantiness

-scantly

-scantness

-scanty

-scar

-scar's

-scarce

-scarcely

-scarceness

-scarcer

-scarcest

-scarcity

-scare

-scared

-scarer

-scares

-scarf

-scarfs

-scarier

-scaring

-scarlet

-scars

-scary

-scatter

-scattered

-scatterer

-scattering

-scatteringly

-scatters

-scavenger

-scavenger's

-scavengers

-scenario

-scenario's

-scenarios

-scene

-scene's

-sceneries

-scenery

-scenes

-scenic

-scenics

-scent

-scented

-scents

-schedule

-schedule's

-scheduled

-scheduler

-scheduler's

-schedulers

-schedules

-scheduling

-schema

-schema's

-schemas

-schemata

-schematic

-schematically

-schematics

-scheme

-scheme's

-schemed

-schemer

-schemers

-schemes

-scheming

-schizophrenia

-scholar

-scholarly

-scholars

-scholarship

-scholarship's

-scholarships

-scholastic

-scholastically

-scholastics

-school

-schoolboy

-schoolboy's

-schoolboys

-schooled

-schooler

-schoolers

-schoolhouse

-schoolhouse's

-schoolhouses

-schooling

-schoolmaster

-schoolmaster's

-schoolmasters

-schoolroom

-schoolroom's

-schoolrooms

-schools

-schoolyard

-schoolyard's

-schoolyards

-schooner

-science

-science's

-sciences

-scientific

-scientifically

-scientist

-scientist's

-scientists

-scissor

-scissored

-scissoring

-scissors

-scoff

-scoffed

-scoffer

-scoffing

-scoffs

-scold

-scolded

-scolder

-scolding

-scolds

-scoop

-scooped

-scooper

-scooping

-scoops

-scope

-scoped

-scopes

-scoping

-scorch

-scorched

-scorcher

-scorches

-scorching

-scorchingly

-score

-score's

-scored

-scorer

-scorers

-scores

-scoring

-scorings

-scorn

-scorned

-scorner

-scornful

-scornfully

-scornfulness

-scorning

-scorns

-scorpion

-scorpion's

-scorpions

-scoundrel

-scoundrel's

-scoundrelly

-scoundrels

-scour

-scoured

-scourer

-scourge

-scourger

-scourging

-scouring

-scourings

-scours

-scout

-scouted

-scouter

-scouting

-scouts

-scow

-scowl

-scowled

-scowler

-scowling

-scowls

-scramble

-scrambled

-scrambler

-scrambles

-scrambling

-scrap

-scrap's

-scrape

-scraped

-scraper

-scrapers

-scrapes

-scraping

-scrapings

-scrapped

-scraps

-scratch

-scratched

-scratcher

-scratchers

-scratches

-scratching

-scrawl

-scrawled

-scrawler

-scrawling

-scrawls

-scream

-screamed

-screamer

-screamers

-screaming

-screamingly

-screams

-screech

-screeched

-screecher

-screeches

-screeching

-screen

-screened

-screener

-screening

-screenings

-screens

-screw

-screwed

-screwer

-screwing

-screws

-scribble

-scribbled

-scribbler

-scribbles

-scribbling

-scribe

-scriber

-scribes

-scribing

-script

-script's

-scripted

-scripting

-scripts

-scripture

-scriptures

-scroll

-scrolled

-scrolling

-scrolls

-scrooge

-scrooge's

-scrooges

-scrub

-scrubs

-scruple

-scrupled

-scruples

-scrupling

-scrupulous

-scrupulously

-scrupulousness

-scrutiny

-scuffle

-scuffled

-scuffles

-scuffling

-sculpt

-sculpted

-sculpting

-sculptor

-sculptor's

-sculptors

-sculpts

-sculpture

-sculptured

-sculptures

-sculpturing

-scum

-scum's

-scums

-scurried

-scurry

-scurrying

-scuttle

-scuttled

-scuttles

-scuttling

-scythe

-scythe's

-scythes

-scything

-sea

-seaboard

-seacoast

-seacoast's

-seacoasts

-seal

-sealed

-sealer

-sealing

-seals

-sealy

-seam

-seaman

-seamanly

-seamed

-seamen

-seamer

-seaming

-seams

-seaport

-seaport's

-seaports

-sear

-search

-searched

-searcher

-searcher's

-searchers

-searches

-searching

-searchingly

-searchings

-seared

-searing

-searingly

-sears

-seas

-seashore

-seashore's

-seashores

-seaside

-season

-season's

-seasonable

-seasonableness

-seasonably

-seasonal

-seasonally

-seasoned

-seasoner

-seasoners

-seasoning

-seasonings

-seasonly

-seasons

-seat

-seated

-seater

-seating

-seats

-seaward

-seawards

-seaweed

-seaweeds

-secede

-seceded

-seceder

-secedes

-seceding

-secluded

-secludedly

-secludedness

-seclusion

-second

-secondaries

-secondarily

-secondariness

-secondary

-seconded

-seconder

-seconders

-secondhand

-seconding

-secondly

-seconds

-secrecy

-secret

-secretarial

-secretaries

-secretary

-secretary's

-secrete

-secreted

-secretes

-secreting

-secretion

-secretions

-secretive

-secretively

-secretiveness

-secretly

-secrets

-sect

-sect's

-section

-sectional

-sectionally

-sectioned

-sectioning

-sections

-sector

-sector's

-sectored

-sectoring

-sectors

-sects

-secular

-secularly

-secure

-secured

-securely

-secureness

-securer

-secures

-securing

-securings

-securities

-security

-sedge

-sediment

-sediment's

-sediments

-seduce

-seduced

-seducer

-seducers

-seduces

-seducing

-seductive

-seductively

-seductiveness

-see

-seed

-seeded

-seeder

-seeders

-seeding

-seedings

-seedling

-seedling's

-seedlings

-seeds

-seeing

-seek

-seeker

-seekers

-seeking

-seekingly

-seeks

-seem

-seemed

-seeming

-seemingly

-seemlier

-seemliness

-seemly

-seems

-seen

-seep

-seeped

-seeping

-seeps

-seer

-seers

-sees

-seethe

-seethed

-seethes

-seething

-segment

-segmentation

-segmentation's

-segmentations

-segmented

-segmenting

-segments

-segregate

-segregated

-segregates

-segregating

-segregation

-segregative

-seismic

-seizable

-seize

-seized

-seizer

-seizers

-seizes

-seizin

-seizing

-seizings

-seizins

-seizor

-seizors

-seizure

-seizure's

-seizures

-seldom

-select

-selected

-selecting

-selection

-selection's

-selections

-selective

-selectively

-selectiveness

-selectivity

-selectness

-selector

-selector's

-selectors

-selects

-self

-selfish

-selfishly

-selfishness

-selfness

-selfsame

-selfsameness

-sell

-seller

-sellers

-selling

-sells

-selves

-semantic

-semantical

-semantically

-semanticist

-semanticist's

-semanticists

-semantics

-semaphore

-semaphore's

-semaphores

-semblance

-semester

-semester's

-semesters

-semiautomated

-semicolon

-semicolon's

-semicolons

-semiconductor

-semiconductor's

-semiconductors

-seminal

-seminally

-seminar

-seminar's

-seminaries

-seminars

-seminary

-seminary's

-semipermanent

-semipermanently

-senate

-senate's

-senates

-senator

-senator's

-senators

-send

-sender

-senders

-sending

-sends

-senior

-senior's

-seniority

-seniors

-sensation

-sensation's

-sensational

-sensationally

-sensations

-sense

-sensed

-senseless

-senselessly

-senselessness

-senses

-sensibilities

-sensibility

-sensible

-sensibleness

-sensibly

-sensing

-sensitive

-sensitively

-sensitiveness

-sensitives

-sensitivities

-sensitivity

-sensor

-sensor's

-sensors

-sensory

-sent

-sentence

-sentenced

-sentences

-sentencing

-sentential

-sententially

-sentiment

-sentiment's

-sentimental

-sentimentally

-sentiments

-sentinel

-sentinel's

-sentinels

-sentries

-sentry

-sentry's

-separable

-separableness

-separate

-separated

-separately

-separateness

-separates

-separating

-separation

-separations

-separative

-separator

-separator's

-separators

-sequel

-sequel's

-sequels

-sequence

-sequenced

-sequencer

-sequencers

-sequences

-sequencing

-sequencings

-sequential

-sequentiality

-sequentially

-sequester

-sequestered

-sequestering

-serendipitous

-serendipitously

-serendipity

-serene

-serenely

-sereneness

-serenity

-serf

-serf's

-serfs

-sergeant

-sergeant's

-sergeants

-serial

-serially

-serials

-series

-serious

-seriously

-seriousness

-sermon

-sermon's

-sermons

-serpent

-serpent's

-serpentine

-serpentinely

-serpents

-serum

-serum's

-serums

-servant

-servant's

-servants

-serve

-served

-server

-server's

-servers

-serves

-service

-serviceable

-serviceableness

-serviced

-servicer

-services

-servicing

-servile

-servilely

-servileness

-serving

-servings

-servitude

-session

-session's

-sessions

-set

-set's

-sets

-setter

-setter's

-setters

-setting

-settings

-settle

-settled

-settlement

-settlement's

-settlements

-settler

-settlers

-settles

-settling

-settlings

-setup

-setups

-seven

-sevens

-seventeen

-seventeens

-seventeenth

-seventh

-seventies

-seventieth

-seventy

-sever

-several

-severally

-severals

-severance

-severe

-severed

-severely

-severeness

-severer

-severest

-severing

-severities

-severity

-severity's

-severs

-sew

-sewed

-sewer

-sewers

-sewing

-sews

-sex

-sexed

-sexes

-sexism

-sexism's

-sexist

-sexist's

-sexists

-sexual

-sexuality

-sexually

-shabbier

-shabbiness

-shabby

-shack

-shacked

-shackle

-shackled

-shackler

-shackles

-shackling

-shacks

-shade

-shaded

-shader

-shades

-shadier

-shadiest

-shadily

-shadiness

-shading

-shadings

-shadow

-shadowed

-shadower

-shadowiness

-shadowing

-shadows

-shadowy

-shady

-shaft

-shaft's

-shafted

-shafting

-shafts

-shaggier

-shagginess

-shaggy

-shakable

-shakably

-shake

-shaken

-shaker

-shakers

-shakes

-shakier

-shakiness

-shaking

-shaky

-shale

-shales

-shall

-shallow

-shallower

-shallowly

-shallowness

-shallows

-sham

-sham's

-shambles

-shame

-shamed

-shameful

-shamefully

-shamefulness

-shameless

-shamelessly

-shamelessness

-shames

-shaming

-shams

-shan't

-shanties

-shanty

-shanty's

-shape

-shaped

-shapeless

-shapelessly

-shapelessness

-shapelier

-shapeliness

-shapely

-shaper

-shapers

-shapes

-shaping

-sharable

-share

-sharecropper

-sharecropper's

-sharecroppers

-shared

-shareholder

-shareholder's

-shareholders

-sharer

-sharers

-shares

-sharing

-shark

-shark's

-sharks

-sharp

-sharped

-sharpen

-sharpened

-sharpener

-sharpening

-sharpens

-sharper

-sharpest

-sharping

-sharply

-sharpness

-sharps

-shatter

-shattered

-shattering

-shatteringly

-shatters

-shave

-shaved

-shaven

-shaver

-shaves

-shaving

-shavings

-shawl

-shawl's

-shawls

-she

-she'd

-she'll

-she's

-sheaf

-shear

-sheared

-shearer

-shearers

-shearing

-shears

-sheath

-sheather

-sheathing

-sheaths

-sheaves

-shed

-sheds

-sheep

-sheer

-sheered

-sheerly

-sheerness

-sheet

-sheeted

-sheeter

-sheeting

-sheets

-shelf

-shelfs

-shell

-shell's

-shelled

-sheller

-shelling

-shells

-shelter

-sheltered

-shelterer

-sheltering

-shelters

-shelve

-shelved

-shelver

-shelves

-shelving

-shepherd

-shepherd's

-shepherded

-shepherding

-shepherds

-sheriff

-sheriff's

-sheriffs

-shied

-shield

-shielded

-shielder

-shielding

-shields

-shier

-shies

-shiest

-shift

-shifted

-shifter

-shifters

-shiftier

-shiftiest

-shiftily

-shiftiness

-shifting

-shifts

-shifty

-shilling

-shillings

-shimmer

-shimmered

-shimmering

-shin

-shine

-shined

-shiner

-shiners

-shines

-shingle

-shingle's

-shingled

-shingler

-shingles

-shingling

-shinier

-shininess

-shining

-shiningly

-shiny

-ship

-ship's

-shipboard

-shipboards

-shipbuilding

-shipment

-shipment's

-shipments

-shippable

-shipped

-shipper

-shipper's

-shippers

-shipping

-ships

-shipwreck

-shipwrecked

-shipwrecks

-shirk

-shirker

-shirking

-shirks

-shirt

-shirting

-shirts

-shit

-shiver

-shivered

-shiverer

-shivering

-shivers

-shoal

-shoal's

-shoals

-shock

-shocked

-shocker

-shockers

-shocking

-shockingly

-shocks

-shod

-shoe

-shoed

-shoeing

-shoemaker

-shoer

-shoes

-shone

-shook

-shoot

-shooter

-shooters

-shooting

-shootings

-shoots

-shop

-shop's

-shopkeeper

-shopkeeper's

-shopkeepers

-shopped

-shopper

-shopper's

-shoppers

-shopping

-shops

-shore

-shore's

-shored

-shores

-shoring

-shorn

-short

-shortage

-shortage's

-shortages

-shortcoming

-shortcoming's

-shortcomings

-shortcut

-shortcut's

-shortcuts

-shorted

-shorten

-shortened

-shortener

-shortening

-shortens

-shorter

-shortest

-shorthand

-shorthanded

-shorthands

-shorting

-shortly

-shortness

-shorts

-shot

-shot's

-shotgun

-shotgun's

-shotguns

-shots

-should

-shoulder

-shouldered

-shouldering

-shoulders

-shouldest

-shouldn't

-shout

-shouted

-shouter

-shouters

-shouting

-shouts

-shove

-shoved

-shovel

-shovels

-shover

-shoves

-shoving

-show

-showed

-shower

-showered

-showering

-showers

-showing

-showings

-shown

-shows

-shrank

-shred

-shred's

-shredder

-shredder's

-shredders

-shreds

-shrew

-shrew's

-shrewd

-shrewdest

-shrewdly

-shrewdness

-shrews

-shriek

-shrieked

-shrieking

-shrieks

-shrill

-shrilled

-shrilling

-shrillness

-shrilly

-shrimp

-shrine

-shrine's

-shrines

-shrink

-shrinkable

-shrinker

-shrinking

-shrinks

-shrivel

-shrivels

-shroud

-shrouded

-shrouding

-shrouds

-shrub

-shrub's

-shrubbery

-shrubs

-shrug

-shrugs

-shrunk

-shrunken

-shudder

-shuddered

-shuddering

-shudders

-shuffle

-shuffled

-shuffler

-shuffles

-shuffling

-shun

-shuns

-shut

-shutdown

-shutdown's

-shutdowns

-shuts

-shutter

-shuttered

-shuttering

-shutters

-shutting

-shuttle

-shuttled

-shuttles

-shuttling

-shy

-shying

-shyly

-shyness

-sibling

-sibling's

-siblings

-sick

-sicken

-sickened

-sickener

-sickening

-sickeningly

-sicker

-sickerly

-sickest

-sicking

-sickle

-sickled

-sicklied

-sickliness

-sickling

-sickly

-sicklying

-sickness

-sickness's

-sicknesses

-sicks

-side

-sideboard

-sideboard's

-sideboards

-sideburns

-sided

-sidedness

-sidelight

-sidelight's

-sidelights

-sides

-sidetrack

-sidetracked

-sidetracking

-sidetracks

-sidewalk

-sidewalk's

-sidewalks

-sideways

-sidewise

-siding

-sidings

-siege

-siege's

-sieges

-sieging

-sierra

-sierras

-sieve

-sieve's

-sievers

-sieves

-sieving

-sift

-sifted

-sifter

-sifting

-siftings

-sifts

-sigh

-sighed

-sigher

-sighing

-sighs

-sight

-sighted

-sighter

-sighting

-sightings

-sightliness

-sightly

-sights

-sign

-signal

-signally

-signals

-signature

-signature's

-signatures

-signed

-signer

-signers

-signet

-significance

-significances

-significant

-significantly

-significants

-signification

-signified

-signifier

-signifies

-signify

-signifying

-signing

-signs

-silence

-silenced

-silencer

-silencers

-silences

-silencing

-silent

-silently

-silentness

-silents

-silhouette

-silhouetted

-silhouettes

-silicon

-silicone

-silicons

-silk

-silken

-silkier

-silkiest

-silkily

-silkiness

-silks

-silky

-sill

-sill's

-sillier

-silliest

-silliness

-sills

-silly

-silt

-silted

-silting

-silts

-silver

-silvered

-silverer

-silveriness

-silvering

-silverly

-silvers

-silvery

-similar

-similarities

-similarity

-similarly

-similitude

-simmer

-simmered

-simmering

-simmers

-simple

-simpleness

-simpler

-simples

-simplest

-simplex

-simplexes

-simplicities

-simplicity

-simplicity's

-simplification

-simplifications

-simplified

-simplifier

-simplifiers

-simplifies

-simplify

-simplifying

-simplistic

-simply

-simulate

-simulated

-simulates

-simulating

-simulation

-simulations

-simulative

-simulator

-simulator's

-simulators

-simultaneity

-simultaneous

-simultaneously

-simultaneousness

-sin

-sin's

-since

-sincere

-sincerely

-sincereness

-sincerest

-sincerity

-sine

-sines

-sinew

-sinew's

-sinews

-sinful

-sinfully

-sinfulness

-sing

-singable

-singed

-singer

-singer's

-singers

-singing

-singingly

-single

-singled

-singleness

-singles

-singleton

-singleton's

-singletons

-singling

-singly

-sings

-singular

-singularities

-singularity

-singularity's

-singularly

-sining

-sinister

-sinisterly

-sinisterness

-sink

-sinked

-sinker

-sinkers

-sinkhole

-sinkholes

-sinking

-sinks

-sinned

-sinner

-sinner's

-sinners

-sinning

-sins

-sinusoidal

-sinusoidally

-sinusoids

-sip

-sips

-sir

-sire

-sired

-siren

-sirens

-sires

-siring

-sirs

-sirup

-sister

-sister's

-sistered

-sistering

-sisterly

-sisters

-sit

-site

-site's

-sited

-sites

-siting

-sits

-sitter

-sitter's

-sitters

-sitting

-sittings

-situate

-situated

-situates

-situating

-situation

-situational

-situationally

-situations

-six

-sixes

-sixpence

-sixpences

-sixteen

-sixteens

-sixteenth

-sixth

-sixthly

-sixties

-sixtieth

-sixty

-sizable

-sizableness

-size

-sized

-sizer

-sizers

-sizes

-sizing

-sizings

-skate

-skated

-skater

-skater's

-skaters

-skates

-skating

-skeletal

-skeletally

-skeleton

-skeleton's

-skeletons

-skeptic

-skeptic's

-skeptical

-skeptically

-skeptics

-sketch

-sketched

-sketcher

-sketches

-sketchier

-sketchily

-sketchiness

-sketching

-sketchy

-skew

-skewed

-skewer

-skewered

-skewering

-skewers

-skewing

-skewness

-skews

-ski

-skied

-skien

-skier

-skies

-skiing

-skill

-skilled

-skillful

-skillfully

-skillfulness

-skilling

-skills

-skim

-skim's

-skimmed

-skimmer

-skimmer's

-skimmers

-skimming

-skimmings

-skimp

-skimped

-skimping

-skimps

-skims

-skin

-skin's

-skinned

-skinner

-skinner's

-skinners

-skinning

-skins

-skip

-skipped

-skipper

-skipper's

-skippered

-skippering

-skippers

-skipping

-skips

-skirmish

-skirmished

-skirmisher

-skirmishers

-skirmishes

-skirmishing

-skirt

-skirted

-skirter

-skirting

-skirts

-skis

-skulk

-skulked

-skulker

-skulking

-skulks

-skull

-skull's

-skulled

-skulls

-skunk

-skunk's

-skunks

-sky

-sky's

-skying

-skylark

-skylarker

-skylarking

-skylarks

-skylight

-skylight's

-skylights

-skyscraper

-skyscraper's

-skyscrapers

-slab

-slabs

-slack

-slacked

-slacken

-slackened

-slackening

-slackens

-slacker

-slackest

-slacking

-slackly

-slackness

-slacks

-slain

-slam

-slammed

-slamming

-slams

-slander

-slandered

-slanderer

-slandering

-slanders

-slang

-slanging

-slant

-slanted

-slanting

-slantingly

-slants

-slap

-slapped

-slapping

-slaps

-slash

-slashed

-slasher

-slashes

-slashing

-slashingly

-slat

-slat's

-slate

-slated

-slater

-slaters

-slates

-slating

-slats

-slaughter

-slaughtered

-slaughterer

-slaughtering

-slaughters

-slave

-slaved

-slaver

-slavered

-slavering

-slavery

-slaves

-slaving

-slay

-slayer

-slayers

-slaying

-slays

-sled

-sled's

-sledge

-sledge's

-sledges

-sledging

-sleds

-sleek

-sleekly

-sleekness

-sleep

-sleeper

-sleepers

-sleepier

-sleepily

-sleepiness

-sleeping

-sleepless

-sleeplessly

-sleeplessness

-sleeps

-sleepy

-sleet

-sleeve

-sleeve's

-sleeved

-sleeves

-sleeving

-sleigh

-sleighs

-sleken

-slekened

-slekening

-slender

-slenderer

-slenderly

-slenderness

-slept

-slew

-slewed

-slewing

-slice

-sliced

-slicer

-slicers

-slices

-slicing

-slick

-slicker

-slickers

-slickly

-slickness

-slicks

-slid

-slide

-slider

-sliders

-slides

-sliding

-slier

-sliest

-slight

-slighted

-slighter

-slightest

-slighting

-slightingly

-slightly

-slightness

-slights

-slim

-slime

-slimed

-slimes

-slimier

-sliminess

-sliming

-slimly

-slimness

-slimy

-sling

-slinger

-slinging

-slings

-slip

-slip's

-slippage

-slipped

-slipper

-slipper's

-slipperier

-slipperiness

-slippers

-slippery

-slipping

-slips

-slit

-slit's

-slits

-slogan

-slogan's

-slogans

-slop

-slope

-sloped

-sloper

-slopers

-slopes

-sloping

-slopped

-sloppier

-sloppiness

-slopping

-sloppy

-slops

-slot

-slot's

-sloth

-sloths

-slots

-slotted

-slouch

-slouched

-sloucher

-slouches

-slouching

-slow

-slowed

-slower

-slowest

-slowing

-slowly

-slowness

-slows

-slug

-sluggish

-sluggishly

-sluggishness

-slugs

-slum

-slum's

-slumber

-slumber's

-slumbered

-slumberer

-slumbering

-slumbers

-slump

-slumped

-slumps

-slums

-slung

-slur

-slur's

-slurs

-sly

-slyly

-smack

-smacked

-smacker

-smacking

-smacks

-small

-smaller

-smallest

-smallness

-smallpox

-smart

-smarted

-smarten

-smartened

-smartening

-smarter

-smartest

-smarting

-smartly

-smartness

-smarts

-smash

-smashed

-smasher

-smashers

-smashes

-smashing

-smashingly

-smear

-smeared

-smearer

-smearing

-smears

-smell

-smelled

-smeller

-smellier

-smelling

-smells

-smelly

-smelt

-smelter

-smelts

-smile

-smiled

-smiler

-smiles

-smiling

-smilingly

-smite

-smiter

-smith

-smith's

-smithies

-smiths

-smithy

-smiting

-smitten

-smock

-smocking

-smocks

-smog

-smokable

-smoke

-smoked

-smoker

-smoker's

-smokers

-smokes

-smokier

-smokies

-smokiness

-smoking

-smoky

-smolder

-smoldered

-smoldering

-smolderingly

-smolders

-smooth

-smoothed

-smoothen

-smoothened

-smoothening

-smoother

-smoothers

-smoothes

-smoothest

-smoothing

-smoothly

-smoothness

-smote

-smother

-smothered

-smothering

-smothers

-smug

-smuggle

-smuggled

-smuggler

-smugglers

-smuggles

-smuggling

-smugly

-smugness

-snail

-snail's

-snails

-snake

-snaked

-snakes

-snaking

-snap

-snapped

-snapper

-snapper's

-snappers

-snappier

-snappiest

-snappily

-snappiness

-snapping

-snappy

-snaps

-snapshot

-snapshot's

-snapshots

-snare

-snared

-snarer

-snares

-snarf

-snarfed

-snarfing

-snarfings

-snarfs

-snaring

-snarl

-snarled

-snarler

-snarling

-snarls

-snatch

-snatched

-snatcher

-snatches

-snatching

-sneak

-sneaked

-sneaker

-sneakered

-sneakers

-sneakier

-sneakiest

-sneakily

-sneakiness

-sneaking

-sneakingly

-sneaks

-sneaky

-sneer

-sneered

-sneerer

-sneering

-sneers

-sneeze

-sneezed

-sneezer

-sneezes

-sneezing

-sniff

-sniffed

-sniffer

-sniffing

-sniffs

-snoop

-snooped

-snooper

-snooping

-snoops

-snore

-snored

-snorer

-snores

-snoring

-snort

-snorted

-snorter

-snorting

-snorts

-snout

-snout's

-snouted

-snouts

-snow

-snowed

-snowier

-snowiest

-snowily

-snowiness

-snowing

-snowman

-snowmen

-snows

-snowshoe

-snowshoe's

-snowshoed

-snowshoer

-snowshoes

-snowy

-snuff

-snuffed

-snuffer

-snuffing

-snuffs

-snug

-snuggle

-snuggled

-snuggles

-snuggling

-snugly

-snugness

-snugs

-so

-soak

-soaked

-soaker

-soaking

-soaks

-soap

-soaped

-soaping

-soaps

-soar

-soared

-soarer

-soaring

-soars

-sob

-sober

-sobered

-soberer

-soberest

-sobering

-soberly

-soberness

-sobers

-sobs

-soccer

-sociability

-sociable

-sociably

-social

-socialism

-socialist

-socialist's

-socialists

-socially

-societal

-societally

-societies

-society

-society's

-sociological

-sociologically

-sociology

-sock

-socked

-socket

-socket's

-sockets

-socking

-socks

-sod

-sod's

-soda

-sodium

-sodomy

-sods

-sofa

-sofa's

-sofas

-soft

-soften

-softened

-softener

-softening

-softens

-softer

-softest

-softly

-softness

-software

-software's

-softwares

-soil

-soiled

-soiling

-soils

-sojourn

-sojourner

-sojourners

-solace

-solaced

-solacer

-solacing

-solar

-sold

-solder

-soldered

-solderer

-soldering

-solders

-soldier

-soldiered

-soldiering

-soldierly

-soldiers

-sole

-soled

-solely

-solemn

-solemnity

-solemnly

-solemnness

-soleness

-soles

-solicit

-solicited

-soliciting

-solicitor

-solicitors

-solicits

-solid

-solidification

-solidified

-solidifies

-solidify

-solidifying

-solidity

-solidly

-solidness

-solids

-soling

-solingen

-solitaire

-solitariness

-solitary

-solitude

-solitude's

-solitudes

-solo

-solo's

-soloed

-soloing

-solos

-solubility

-soluble

-solution

-solution's

-solutions

-solvable

-solve

-solved

-solvent

-solvent's

-solvently

-solvents

-solver

-solvers

-solves

-solving

-somber

-somberly

-somberness

-some

-somebody

-somebody's

-someday

-somehow

-someone

-someone's

-someplace

-someplace's

-somers

-something

-sometime

-sometimes

-somewhat

-somewhere

-somewheres

-son

-son's

-sonar

-sonars

-song

-song's

-songs

-sonly

-sonnet

-sonnet's

-sonnets

-sons

-soon

-sooner

-soonest

-soot

-sooth

-soothe

-soothed

-soother

-soothes

-soothing

-soothingly

-soothingness

-soothly

-sophisticated

-sophisticatedly

-sophistication

-sophomore

-sophomore's

-sophomores

-sorcerer

-sorcerer's

-sorcerers

-sorcery

-sordid

-sordidly

-sordidness

-sore

-sorely

-soreness

-sorer

-sores

-sorest

-sorrier

-sorriest

-sorriness

-sorrow

-sorrow's

-sorrower

-sorrowful

-sorrowfully

-sorrowfulness

-sorrows

-sorry

-sort

-sorted

-sorter

-sorters

-sorting

-sorts

-sos

-sought

-soul

-soul's

-souled

-souls

-sound

-sounded

-sounder

-soundest

-sounding

-sounding's

-soundingly

-soundings

-soundly

-soundness

-sounds

-soup

-soup's

-soups

-sour

-source

-source's

-sources

-soured

-sourer

-sourest

-souring

-sourly

-sourness

-sours

-south

-souther

-southerly

-southern

-southerner

-southerners

-southernly

-southernness

-southing

-sovereign

-sovereign's

-sovereignly

-sovereigns

-soviet

-soviet's

-soviets

-space

-spaced

-spacer

-spacers

-spaces

-spaceship

-spaceship's

-spaceships

-spacing

-spacings

-spade

-spaded

-spader

-spades

-spading

-spaghetti

-span

-span's

-spank

-spanked

-spanker

-spanking

-spanks

-spanned

-spanner

-spanner's

-spanners

-spanning

-spans

-spare

-spared

-sparely

-spareness

-sparer

-spares

-sparest

-sparing

-sparingly

-spark

-sparked

-sparker

-sparking

-sparks

-sparrow

-sparrow's

-sparrows

-sparse

-sparsely

-sparseness

-sparser

-sparsest

-spat

-spate

-spate's

-spates

-spatial

-spatially

-spats

-spatter

-spattered

-spawn

-spawned

-spawner

-spawning

-spawns

-speak

-speakable

-speaker

-speaker's

-speakers

-speaking

-speaks

-spear

-speared

-spearer

-spearing

-spears

-special

-specialist

-specialist's

-specialists

-specially

-specialness

-specials

-species

-specifiable

-specific

-specifically

-specification

-specifications

-specificities

-specificity

-specifics

-specified

-specifier

-specifiers

-specifies

-specify

-specifying

-specimen

-specimen's

-specimens

-speck

-speck's

-speckle

-speckled

-speckles

-speckling

-specks

-spectacle

-spectacled

-spectacles

-spectacular

-spectacularly

-spectator

-spectator's

-spectators

-spectra

-spectrogram

-spectrogram's

-spectrograms

-spectroscopically

-spectrum

-spectrums

-speculate

-speculated

-speculates

-speculating

-speculation

-speculations

-speculative

-speculatively

-speculator

-speculator's

-speculators

-sped

-speech

-speech's

-speeches

-speechless

-speechlessly

-speechlessness

-speed

-speeded

-speeder

-speeders

-speedier

-speedily

-speediness

-speeding

-speeds

-speedup

-speedup's

-speedups

-speedy

-spell

-spelled

-speller

-spellers

-spelling

-spellings

-spells

-spend

-spender

-spenders

-spending

-spends

-spent

-sphere

-sphere's

-spheres

-spherical

-spherically

-sphering

-spice

-spiced

-spices

-spicier

-spiciness

-spicing

-spicy

-spider

-spider's

-spiders

-spied

-spier

-spies

-spike

-spiked

-spiker

-spikes

-spiking

-spill

-spilled

-spiller

-spilling

-spills

-spin

-spinach

-spinal

-spinally

-spindle

-spindled

-spindler

-spindles

-spindling

-spine

-spines

-spinner

-spinner's

-spinners

-spinning

-spins

-spiral

-spirally

-spirals

-spire

-spire's

-spired

-spires

-spiring

-spirit

-spirited

-spiritedly

-spiritedness

-spiriting

-spirits

-spiritual

-spiritually

-spiritualness

-spirituals

-spit

-spite

-spited

-spiteful

-spitefully

-spitefulness

-spites

-spiting

-spits

-spitting

-splash

-splashed

-splasher

-splashers

-splashes

-splashing

-spleen

-splendid

-splendidly

-splendidness

-splice

-spliced

-splicer

-splicers

-splices

-splicing

-splicings

-spline

-spline's

-splined

-splines

-splinter

-splintered

-splintering

-splinters

-split

-split's

-splits

-splitter

-splitter's

-splitters

-splitting

-splittings

-spoil

-spoiled

-spoiler

-spoilers

-spoiling

-spoils

-spoke

-spoked

-spoken

-spokes

-spokesman

-spokesmen

-spoking

-sponge

-sponged

-sponger

-spongers

-sponges

-sponging

-sponsor

-sponsored

-sponsoring

-sponsors

-sponsorship

-spontaneous

-spontaneously

-spontaneousness

-spook

-spookier

-spookiness

-spooky

-spool

-spooled

-spooler

-spoolers

-spooling

-spools

-spoon

-spooned

-spooning

-spoons

-spore

-spore's

-spored

-spores

-sporing

-sport

-sported

-sporting

-sportingly

-sportive

-sportively

-sportiveness

-sports

-sportsman

-sportsmanly

-spot

-spot's

-spotless

-spotlessly

-spotlessness

-spotlight

-spotlight's

-spotlighted

-spotlighting

-spotlights

-spots

-spotted

-spotter

-spotter's

-spotters

-spotting

-spouse

-spouse's

-spouses

-spousing

-spout

-spouted

-spouter

-spouting

-spouts

-sprang

-sprawl

-sprawled

-sprawling

-sprawls

-spray

-sprayed

-sprayer

-spraying

-sprays

-spread

-spreader

-spreaders

-spreading

-spreadings

-spreads

-spreadsheet

-spreadsheets

-spree

-spree's

-sprees

-sprig

-sprightlier

-sprightliness

-sprightly

-spring

-springer

-springers

-springier

-springiest

-springiness

-springing

-springs

-springtime

-springy

-sprinkle

-sprinkled

-sprinkler

-sprinklered

-sprinkles

-sprinkling

-sprint

-sprinted

-sprinter

-sprinters

-sprinting

-sprints

-sprite

-sprout

-sprouted

-sprouting

-sprouts

-spruce

-spruced

-sprucely

-spruceness

-sprucer

-sprucest

-sprucing

-sprung

-spun

-spur

-spur's

-spurious

-spuriously

-spuriousness

-spurn

-spurned

-spurner

-spurning

-spurns

-spurs

-spurt

-spurted

-spurting

-spurts

-sputter

-sputtered

-sputterer

-spy

-spying

-squabble

-squabbled

-squabbler

-squabbles

-squabbling

-squad

-squad's

-squadron

-squadron's

-squadrons

-squads

-squall

-squall's

-squaller

-squalls

-square

-squared

-squarely

-squareness

-squarer

-squares

-squarest

-squaring

-squash

-squashed

-squasher

-squashes

-squashing

-squat

-squatly

-squatness

-squats

-squawk

-squawked

-squawker

-squawking

-squawks

-squeak

-squeaked

-squeaker

-squeaking

-squeaks

-squeal

-squealed

-squealer

-squealing

-squeals

-squeeze

-squeezed

-squeezer

-squeezes

-squeezing

-squid

-squids

-squint

-squinted

-squinter

-squinting

-squintingly

-squints

-squire

-squire's

-squires

-squiring

-squirm

-squirmed

-squirming

-squirms

-squirrel

-squirrelly

-squirrels

-stab

-stabbed

-stabbing

-stabilities

-stability

-stability's

-stable

-stabled

-stableness

-stabler

-stables

-stablest

-stabling

-stably

-stabs

-stack

-stack's

-stacked

-stacker

-stacking

-stacks

-staff

-staff's

-staffed

-staffer

-staffers

-staffing

-staffs

-stag

-stag's

-stage

-stagecoach

-staged

-stager

-stagers

-stages

-stagger

-staggered

-staggerer

-staggering

-staggeringly

-staggers

-staging

-stagnant

-stagnantly

-stags

-staid

-staidly

-staidness

-stain

-stained

-stainer

-staining

-stainless

-stainlessly

-stains

-stair

-stair's

-staircase

-staircase's

-staircases

-stairs

-stairway

-stairway's

-stairways

-stake

-staked

-stakes

-staking

-stale

-staled

-stalely

-staleness

-staler

-stales

-stalest

-staling

-stalk

-stalked

-stalker

-stalking

-stalks

-stall

-stalled

-stalling

-stallings

-stalls

-stalwart

-stalwartly

-stalwartness

-stamen

-stamen's

-stamens

-stamina

-stammer

-stammered

-stammerer

-stammering

-stammers

-stamp

-stamped

-stampede

-stampeded

-stampeder

-stampedes

-stampeding

-stamper

-stampers

-stamping

-stamps

-stance

-stance's

-stances

-stanch

-stancher

-stanchest

-stand

-standard

-standardly

-standards

-standby

-stander

-standing

-standings

-standpoint

-standpoint's

-standpoints

-stands

-standstill

-stanza

-stanza's

-stanzas

-staple

-stapled

-stapler

-staplers

-staples

-stapling

-star

-star's

-starboard

-starboarded

-starboarding

-starboards

-starch

-starched

-starches

-starching

-stare

-stared

-starer

-stares

-starfish

-staring

-stark

-starkest

-starkly

-starkness

-starlet

-starlet's

-starlets

-starlight

-starred

-starrier

-starring

-starry

-stars

-start

-started

-starter

-starters

-starting

-startle

-startled

-startles

-startling

-startlingly

-startlingness

-starts

-startup

-startup's

-startups

-starvation

-starve

-starved

-starver

-starves

-starving

-state

-state's

-stated

-statelier

-stateliness

-stately

-statement

-statement's

-statements

-stater

-states

-statesman

-statesman's

-statesmanly

-static

-statically

-statics

-stating

-station

-stationaries

-stationary

-stationed

-stationer

-stationing

-stations

-statistic

-statistic's

-statistical

-statistically

-statistician

-statistician's

-statisticians

-statistics

-stative

-statue

-statue's

-statued

-statues

-statuesque

-statuesquely

-statuesqueness

-stature

-status

-statuses

-statute

-statute's

-statutes

-statutorily

-statutoriness

-statutory

-staunch

-staunchest

-staunchly

-staunchness

-stave

-staved

-staves

-staving

-stay

-stayed

-stayer

-stayers

-staying

-stays

-stdio

-stead

-steadfast

-steadfastly

-steadfastness

-steadied

-steadier

-steadies

-steadiest

-steadily

-steadiness

-steading

-steady

-steadying

-steak

-steak's

-steaks

-steal

-stealer

-stealing

-steals

-stealth

-stealthier

-stealthily

-stealthiness

-stealthy

-steam

-steamboat

-steamboat's

-steamboats

-steamed

-steamer

-steamers

-steaming

-steams

-steamship

-steamship's

-steamships

-steed

-steeds

-steel

-steeled

-steelers

-steeling

-steels

-steep

-steeped

-steepen

-steepened

-steepening

-steeper

-steepest

-steeping

-steeple

-steeple's

-steeples

-steeply

-steepness

-steeps

-steer

-steered

-steerer

-steering

-steers

-stellar

-stem

-stem's

-stemmed

-stemming

-stems

-stench

-stench's

-stenches

-stencil

-stencil's

-stencils

-stenographer

-stenographer's

-stenographers

-step

-step's

-stepmother

-stepmother's

-stepmothers

-stepped

-stepper

-stepping

-steps

-stepwise

-stereo

-stereo's

-stereos

-stereotype

-stereotyped

-stereotyper

-stereotypers

-stereotypes

-stereotypical

-stereotypically

-stereotyping

-sterile

-sterling

-sterlingly

-sterlingness

-stern

-sternly

-sternness

-sterns

-stew

-steward

-steward's

-stewards

-stewed

-stewing

-stews

-stick

-sticked

-sticker

-stickers

-stickier

-stickiest

-stickily

-stickiness

-sticking

-sticks

-sticky

-stiff

-stiffen

-stiffened

-stiffener

-stiffeners

-stiffening

-stiffens

-stiffer

-stiffest

-stiffly

-stiffness

-stiffnesses

-stiffs

-stifle

-stifled

-stifler

-stifles

-stifling

-stiflingly

-stigma

-stigmas

-stile

-stile's

-stiles

-still

-stilled

-stiller

-stillest

-stilling

-stillness

-stills

-stimulant

-stimulant's

-stimulants

-stimulate

-stimulated

-stimulates

-stimulating

-stimulation

-stimulations

-stimulative

-stimuli

-stimulus

-sting

-stinger

-stinging

-stingingly

-stings

-stink

-stinker

-stinkers

-stinking

-stinkingly

-stinks

-stint

-stint's

-stinted

-stinter

-stinting

-stints

-stipend

-stipend's

-stipends

-stipple

-stippled

-stippler

-stipples

-stippling

-stipulate

-stipulated

-stipulates

-stipulating

-stipulation

-stipulations

-stir

-stirred

-stirrer

-stirrer's

-stirrers

-stirring

-stirringly

-stirrings

-stirrup

-stirrups

-stirs

-stitch

-stitched

-stitcher

-stitches

-stitching

-stochastic

-stochastically

-stock

-stockade

-stockade's

-stockaded

-stockades

-stockading

-stocked

-stocker

-stockers

-stockholder

-stockholder's

-stockholders

-stocking

-stockinged

-stockings

-stocks

-stole

-stole's

-stoled

-stolen

-stoles

-stomach

-stomached

-stomacher

-stomaches

-stomaching

-stone

-stone's

-stoned

-stoner

-stones

-stonier

-stoniness

-stoning

-stony

-stood

-stool

-stools

-stoop

-stooped

-stooping

-stoops

-stop

-stop's

-stopcock

-stopcocks

-stopgap

-stopgap's

-stopgaps

-stoppable

-stoppage

-stoppages

-stopped

-stopper

-stopper's

-stoppered

-stoppering

-stoppers

-stopping

-stops

-storage

-storage's

-storages

-store

-stored

-storehouse

-storehouse's

-storehouses

-stores

-storied

-stories

-storing

-stork

-stork's

-storks

-storm

-stormed

-stormier

-stormiest

-storminess

-storming

-storms

-stormy

-story

-story's

-storying

-stout

-stouten

-stoutened

-stoutening

-stouter

-stoutest

-stoutly

-stoutness

-stove

-stove's

-stover

-stoves

-stow

-stowed

-stowing

-stows

-straggle

-straggled

-straggler

-stragglers

-straggles

-straggling

-straight

-straighten

-straightened

-straightener

-straighteners

-straightening

-straightens

-straighter

-straightest

-straightforward

-straightforwardly

-straightforwardness

-straightforwards

-straightly

-straightness

-straightway

-strain

-strained

-strainer

-strainers

-straining

-strains

-strait

-straiten

-straitened

-straitening

-straitly

-straitness

-straits

-strand

-stranded

-strandedness

-strander

-stranding

-strands

-strange

-strangely

-strangeness

-stranger

-stranger's

-strangers

-strangest

-strangle

-strangled

-strangler

-stranglers

-strangles

-strangling

-stranglings

-strangulation

-strangulation's

-strangulations

-strap

-strap's

-straps

-stratagem

-stratagem's

-stratagems

-strategic

-strategics

-strategies

-strategy

-strategy's

-stratification

-stratifications

-stratified

-stratifies

-stratify

-stratifying

-stratum

-straw

-straw's

-strawberries

-strawberry

-strawberry's

-straws

-stray

-stray's

-strayed

-strayer

-straying

-strays

-streak

-streaked

-streaking

-streaks

-stream

-streamed

-streamer

-streamers

-streaming

-streamline

-streamlined

-streamliner

-streamlines

-streamlining

-streams

-street

-streetcar

-streetcar's

-streetcars

-streeters

-streets

-strength

-strengthen

-strengthened

-strengthener

-strengthening

-strengthens

-strengths

-strenuous

-strenuously

-strenuousness

-stress

-stressed

-stresses

-stressing

-stretch

-stretched

-stretcher

-stretchers

-stretches

-stretching

-strew

-strewing

-strewn

-strews

-strewth

-stricken

-strict

-stricter

-strictest

-strictly

-strictness

-stride

-strider

-strides

-striding

-strife

-strike

-striker

-strikers

-strikes

-striking

-strikingly

-string

-string's

-stringed

-stringent

-stringently

-stringer

-stringers

-stringier

-stringiest

-stringiness

-stringing

-strings

-stringy

-strip

-strip's

-stripe

-striped

-striper

-stripes

-striping

-stripped

-stripper

-stripper's

-strippers

-stripping

-strips

-strive

-striver

-strives

-striving

-strivings

-strobe

-strobe's

-strobed

-strobes

-strobing

-stroboscopic

-strode

-stroke

-stroked

-stroker

-strokers

-strokes

-stroking

-stroll

-strolled

-stroller

-strolling

-strolls

-strong

-stronger

-strongest

-stronghold

-strongly

-strove

-struck

-structural

-structurally

-structure

-structured

-structurer

-structures

-structuring

-struggle

-struggled

-struggler

-struggles

-struggling

-strung

-strut

-struts

-strutted

-strutter

-strutting

-stub

-stub's

-stubbed

-stubbing

-stubble

-stubborn

-stubbornly

-stubbornness

-stubs

-stuck

-stud

-stud's

-student

-student's

-students

-studied

-studiedly

-studiedness

-studier

-studies

-studio

-studio's

-studios

-studious

-studiously

-studiousness

-studs

-study

-studying

-stuff

-stuffed

-stuffer

-stuffier

-stuffiest

-stuffiness

-stuffing

-stuffings

-stuffs

-stuffy

-stumble

-stumbled

-stumbler

-stumbles

-stumbling

-stumblingly

-stump

-stumped

-stumper

-stumping

-stumps

-stun

-stung

-stunning

-stunningly

-stuns

-stunt

-stunt's

-stunted

-stuntedness

-stunting

-stunts

-stupefy

-stupefying

-stupendous

-stupendously

-stupendousness

-stupid

-stupider

-stupidest

-stupidities

-stupidity

-stupidly

-stupidness

-stupor

-sturdier

-sturdiness

-sturdy

-style

-styled

-styler

-stylers

-styles

-styling

-stylish

-stylishly

-stylishness

-stylistic

-stylistically

-stylistics

-sub

-subatomic

-subclass

-subclass's

-subclasses

-subcommittee

-subcommittee's

-subcommittees

-subcomponent

-subcomponent's

-subcomponents

-subcomputation

-subcomputation's

-subcomputations

-subconscious

-subconsciously

-subconsciousness

-subculture

-subculture's

-subcultures

-subdivide

-subdivided

-subdivider

-subdivides

-subdividing

-subdivision

-subdivision's

-subdivisions

-subdue

-subdued

-subduedly

-subduer

-subdues

-subduing

-subexpression

-subexpression's

-subexpressions

-subfield

-subfield's

-subfields

-subfile

-subfile's

-subfiles

-subgoal

-subgoal's

-subgoals

-subgraph

-subgraphs

-subgroup

-subgroup's

-subgrouping

-subgroups

-subinterval

-subinterval's

-subintervals

-subject

-subject's

-subjected

-subjecting

-subjection

-subjective

-subjectively

-subjectiveness

-subjectivity

-subjects

-sublimation

-sublimations

-sublime

-sublimed

-sublimely

-sublimeness

-sublimer

-subliming

-sublist

-sublist's

-sublists

-submarine

-submarined

-submariner

-submariners

-submarines

-submarining

-submerge

-submerged

-submerges

-submerging

-submission

-submission's

-submissions

-submit

-submits

-submitted

-submitting

-submode

-submodes

-submodule

-submodule's

-submodules

-subnetwork

-subnetwork's

-subnetworks

-subordinate

-subordinated

-subordinately

-subordinateness

-subordinates

-subordinating

-subordination

-subordinative

-subproblem

-subproblem's

-subproblems

-subprocess

-subprocess's

-subprocesses

-subprogram

-subprogram's

-subprograms

-subproject

-subproof

-subproof's

-subproofs

-subrange

-subrange's

-subranges

-subroutine

-subroutine's

-subroutines

-subs

-subschema

-subschema's

-subschemas

-subscribe

-subscribed

-subscriber

-subscribers

-subscribes

-subscribing

-subscript

-subscripted

-subscripting

-subscription

-subscription's

-subscriptions

-subscripts

-subsection

-subsection's

-subsections

-subsegment

-subsegment's

-subsegments

-subsequence

-subsequence's

-subsequences

-subsequent

-subsequently

-subsequentness

-subset

-subset's

-subsets

-subside

-subsided

-subsides

-subsidiaries

-subsidiary

-subsidiary's

-subsidies

-subsiding

-subsidy

-subsidy's

-subsist

-subsisted

-subsistence

-subsisting

-subsists

-subspace

-subspace's

-subspaces

-substance

-substance's

-substances

-substantial

-substantially

-substantialness

-substantiate

-substantiated

-substantiates

-substantiating

-substantiation

-substantiations

-substantiative

-substantive

-substantively

-substantiveness

-substantivity

-substitutability

-substitutable

-substitute

-substituted

-substituter

-substitutes

-substituting

-substitution

-substitutions

-substitutive

-substitutively

-substrate

-substrate's

-substrates

-substring

-substrings

-substructure

-substructure's

-substructures

-subsume

-subsumed

-subsumes

-subsuming

-subsystem

-subsystem's

-subsystems

-subtask

-subtask's

-subtasks

-subterranean

-subterraneanly

-subtitle

-subtitle's

-subtitled

-subtitles

-subtitling

-subtle

-subtleness

-subtler

-subtlest

-subtleties

-subtlety

-subtly

-subtopic

-subtopic's

-subtopics

-subtract

-subtracted

-subtracter

-subtracter's

-subtracters

-subtracting

-subtraction

-subtractions

-subtractive

-subtracts

-subtrahend

-subtrahend's

-subtrahends

-subtree

-subtree's

-subtrees

-subunit

-subunit's

-subunits

-suburb

-suburb's

-suburban

-suburbs

-subversion

-subvert

-subverted

-subverter

-subverting

-subverts

-subway

-subway's

-subways

-succeed

-succeeded

-succeeder

-succeeding

-succeeds

-success

-successes

-successful

-successfully

-successfulness

-succession

-succession's

-successions

-successive

-successively

-successiveness

-successor

-successor's

-successors

-succinct

-succinctly

-succinctness

-succumb

-succumbed

-succumbing

-succumbs

-such

-suck

-sucked

-sucker

-suckered

-suckering

-suckers

-sucking

-suckle

-suckled

-suckles

-suckling

-sucks

-suction

-sudden

-suddenly

-suddenness

-suds

-sudser

-sudsing

-sue

-sued

-sueded

-sueding

-suer

-sues

-suffer

-sufferance

-suffered

-sufferer

-sufferers

-suffering

-sufferings

-suffers

-suffice

-sufficed

-sufficer

-suffices

-sufficiency

-sufficient

-sufficiently

-sufficing

-suffix

-suffixed

-suffixer

-suffixes

-suffixing

-suffocate

-suffocated

-suffocates

-suffocating

-suffocatingly

-suffocation

-suffocative

-suffrage

-sugar

-sugared

-sugaring

-sugarings

-sugars

-suggest

-suggested

-suggester

-suggestible

-suggesting

-suggestion

-suggestion's

-suggestions

-suggestive

-suggestively

-suggestiveness

-suggests

-suicidal

-suicidally

-suicide

-suicide's

-suicided

-suicides

-suiciding

-suing

-suit

-suit's

-suitability

-suitable

-suitableness

-suitably

-suitcase

-suitcase's

-suitcases

-suite

-suited

-suiters

-suites

-suiting

-suitor

-suitor's

-suitors

-suits

-sulk

-sulked

-sulkies

-sulkiness

-sulking

-sulks

-sulky

-sullen

-sullenly

-sullenness

-sulphate

-sulphates

-sulphur

-sulphured

-sulphuric

-sultan

-sultan's

-sultans

-sultrier

-sultriness

-sultry

-sum

-sum's

-sumer

-summand

-summand's

-summands

-summaries

-summary

-summary's

-summation

-summation's

-summations

-summed

-summer

-summer's

-summered

-summering

-summers

-summing

-summit

-summon

-summoned

-summoner

-summoners

-summoning

-summons

-summonses

-sumptuous

-sumptuously

-sumptuousness

-sums

-sun

-sun's

-sunbeam

-sunbeam's

-sunbeams

-sunburn

-sundown

-sundowner

-sundowners

-sundries

-sundry

-sung

-sunglass

-sunglasses

-sunk

-sunken

-sunlight

-sunlights

-sunned

-sunnier

-sunniness

-sunning

-sunny

-sunrise

-sunrises

-suns

-sunset

-sunsets

-sunshine

-sunshines

-sup

-super

-superb

-superbly

-superbness

-superclass

-superclass's

-supercomputer

-supercomputer's

-supercomputers

-supered

-superego

-superego's

-superegos

-superficial

-superficially

-superficialness

-superfluities

-superfluity

-superfluity's

-superfluous

-superfluously

-superfluousness

-superhuman

-superhumanly

-superhumanness

-superimpose

-superimposed

-superimposes

-superimposing

-supering

-superintend

-superintendent

-superintendent's

-superintendents

-superior

-superior's

-superiority

-superiorly

-superiors

-superlative

-superlatively

-superlativeness

-superlatives

-supermarket

-supermarket's

-supermarkets

-superpose

-superposed

-superposes

-superposing

-superscript

-superscripted

-superscripting

-superscripts

-supersede

-superseded

-superseder

-supersedes

-superseding

-superset

-superset's

-supersets

-superstition

-superstition's

-superstitions

-superstitious

-superstitiously

-superstitiousness

-supertitle

-supertitle's

-supertitled

-supertitles

-supertitling

-superuser

-superuser's

-superusers

-supervise

-supervised

-supervises

-supervising

-supervision

-supervisions

-supervisor

-supervisor's

-supervisors

-supervisory

-supper

-supper's

-suppers

-supplant

-supplanted

-supplanter

-supplanting

-supplants

-supple

-suppled

-supplely

-supplement

-supplemental

-supplementaries

-supplementary

-supplemented

-supplementer

-supplementing

-supplements

-suppleness

-suppler

-supplication

-supplied

-supplier

-supplier's

-suppliers

-supplies

-suppling

-supply

-supply's

-supplying

-support

-supportable

-supported

-supporter

-supporters

-supporting

-supportingly

-supportive

-supportively

-supports

-suppose

-supposed

-supposedly

-supposer

-supposes

-supposing

-supposition

-supposition's

-suppositions

-suppress

-suppressed

-suppresses

-suppressing

-suppression

-suppressions

-suppressive

-suppressiveness

-supremacy

-supreme

-supremely

-supremeness

-sure

-sured

-surely

-sureness

-surer

-surest

-sureties

-surety

-surf

-surface

-surfaced

-surfaceness

-surfacer

-surfacers

-surfaces

-surfacing

-surfer

-surfer's

-surfers

-surfing

-surge

-surged

-surgely

-surgeon

-surgeon's

-surgeons

-surgeries

-surgery

-surges

-surgical

-surgically

-surging

-surlier

-surliness

-surly

-surmise

-surmised

-surmiser

-surmises

-surmising

-surmount

-surmounted

-surmounting

-surmounts

-surname

-surname's

-surnamed

-surnames

-surpass

-surpassed

-surpasses

-surpassing

-surpassingly

-surplus

-surplus's

-surpluses

-surprise

-surprise's

-surprised

-surpriser

-surprises

-surprising

-surprisingly

-surrender

-surrendered

-surrenderer

-surrendering

-surrenders

-surrogate

-surrogate's

-surrogates

-surrogation

-surround

-surrounded

-surrounding

-surroundings

-surrounds

-survey

-surveyed

-surveying

-surveyor

-surveyor's

-surveyors

-surveys

-survival

-survivals

-survive

-survived

-surviver

-survives

-surviving

-survivor

-survivor's

-survivors

-susceptible

-suspect

-suspected

-suspecter

-suspecting

-suspects

-suspend

-suspended

-suspender

-suspender's

-suspenders

-suspending

-suspends

-suspense

-suspenses

-suspension

-suspensions

-suspensive

-suspensively

-suspicion

-suspicion's

-suspicioned

-suspicioning

-suspicions

-suspicious

-suspiciously

-suspiciousness

-sustain

-sustained

-sustainer

-sustaining

-sustains

-suture

-sutured

-sutures

-suturing

-swagger

-swaggered

-swaggering

-swain

-swain's

-swains

-swallow

-swallowed

-swallower

-swallowing

-swallows

-swam

-swamp

-swamped

-swamper

-swampier

-swampiness

-swamping

-swamps

-swampy

-swan

-swan's

-swans

-swap

-swapped

-swapper

-swapper's

-swappers

-swapping

-swaps

-swarm

-swarmed

-swarmer

-swarming

-swarms

-swarthier

-swarthiness

-swarthy

-swatted

-sway

-swayed

-swayer

-swaying

-sways

-swear

-swearer

-swearing

-swears

-sweat

-sweated

-sweater

-sweaters

-sweating

-sweats

-sweep

-sweeper

-sweepers

-sweeping

-sweepingly

-sweepingness

-sweepings

-sweeps

-sweet

-sweeten

-sweetened

-sweetener

-sweeteners

-sweetening

-sweetenings

-sweetens

-sweeter

-sweetest

-sweetheart

-sweetheart's

-sweethearts

-sweetie

-sweetie's

-sweeties

-sweeting

-sweetly

-sweetness

-sweets

-swell

-swelled

-swelling

-swellings

-swells

-swept

-swerve

-swerved

-swerves

-swerving

-swift

-swifter

-swiftest

-swiftly

-swiftness

-swim

-swimmer

-swimmer's

-swimmers

-swimming

-swimmingly

-swims

-swimsuit

-swimsuit's

-swimsuits

-swine

-swing

-swinger

-swingers

-swinging

-swingingly

-swings

-swipe

-swiped

-swipes

-swiping

-swirl

-swirled

-swirler

-swirling

-swirlingly

-swirls

-swish

-swished

-swisher

-switch

-switch's

-switchboard

-switchboard's

-switchboards

-switched

-switcher

-switchers

-switches

-switching

-switchings

-swollen

-swoon

-swooned

-swooner

-swooning

-swooningly

-swoons

-swoop

-swooped

-swooper

-swooping

-swoops

-sword

-sword's

-swords

-swore

-sworn

-swum

-swung

-sycamore

-syllabi

-syllable

-syllable's

-syllabled

-syllables

-syllabling

-syllabus

-syllogism

-syllogism's

-syllogisms

-symbiosis

-symbiotic

-symbol

-symbol's

-symbolic

-symbolic's

-symbolically

-symbolics

-symbolism

-symbolisms

-symbols

-symmetric

-symmetrical

-symmetrically

-symmetricalness

-symmetries

-symmetry

-symmetry's

-sympathetic

-sympathies

-sympathy

-sympathy's

-symphonies

-symphony

-symphony's

-symposium

-symposiums

-symptom

-symptom's

-symptomatic

-symptoms

-synapse

-synapse's

-synapsed

-synapses

-synapsing

-synchronous

-synchronously

-synchronousness

-synchrony

-syndicate

-syndicated

-syndicates

-syndicating

-syndication

-syndrome

-syndrome's

-syndromes

-synergism

-synergistic

-synonym

-synonym's

-synonymous

-synonymously

-synonyms

-synopses

-synopsis

-syntactic

-syntactical

-syntactically

-syntacticly

-syntactics

-syntax

-syntaxes

-syntheses

-synthesis

-synthetic

-synthetics

-syringe

-syringed

-syringes

-syringing

-syrup

-system

-system's

-systematic

-systematically

-systematicness

-systematics

-systems

-tab

-tabernacle

-tabernacle's

-tabernacled

-tabernacles

-tabernacling

-table

-tableau

-tableau's

-tableaus

-tablecloth

-tablecloths

-tabled

-tables

-tablespoon

-tablespoon's

-tablespoonful

-tablespoonful's

-tablespoonfuls

-tablespoons

-tablet

-tablet's

-tablets

-tabling

-taboo

-taboo's

-taboos

-tabs

-tabular

-tabularly

-tabulate

-tabulated

-tabulates

-tabulating

-tabulation

-tabulations

-tabulator

-tabulator's

-tabulators

-tachometer

-tachometer's

-tachometers

-tachometry

-tacit

-tacitly

-tacitness

-tack

-tacked

-tacker

-tacking

-tackle

-tackle's

-tackled

-tackler

-tackles

-tackling

-tacks

-tact

-tactics

-tactile

-tactilely

-tag

-tag's

-tagged

-tagging

-tags

-tail

-tailed

-tailer

-tailing

-tailings

-tailor

-tailored

-tailoring

-tailors

-tails

-taint

-tainted

-taints

-take

-taken

-taker

-takers

-takes

-taketh

-taking

-takings

-tale

-tale's

-talent

-talented

-talents

-taler

-tales

-talion

-talk

-talkative

-talkatively

-talkativeness

-talked

-talker

-talkers

-talkie

-talking

-talks

-tall

-taller

-tallest

-tallness

-tallow

-tame

-tamed

-tamely

-tameness

-tamer

-tames

-tamest

-taming

-tamper

-tampered

-tamperer

-tampering

-tampers

-tan

-tandem

-tang

-tanged

-tangent

-tangent's

-tangential

-tangentially

-tangents

-tangible

-tangibleness

-tangibly

-tangier

-tangle

-tangled

-tangles

-tangling

-tangly

-tangy

-tank

-tanked

-tanker

-tankers

-tanking

-tanks

-tanner

-tanner's

-tanners

-tans

-tantamount

-tantrum

-tantrum's

-tantrums

-tap

-tap's

-tape

-taped

-taper

-tapered

-taperer

-tapering

-tapers

-tapes

-tapestried

-tapestries

-tapestry

-tapestry's

-taping

-tapings

-tapped

-tapper

-tapper's

-tappers

-tapping

-taproot

-taproot's

-taproots

-taps

-tar

-tardier

-tardies

-tardiness

-tardy

-target

-targeted

-targeting

-targets

-tariff

-tariff's

-tariffs

-taring

-tarried

-tarries

-tarry

-tarrying

-tars

-tart

-tartly

-tartness

-tarts

-task

-tasked

-tasking

-tasks

-taste

-tasted

-tasteful

-tastefully

-tastefulness

-tasteless

-tastelessly

-tastelessness

-taster

-tasters

-tastes

-tasting

-tatter

-tattered

-tattoo

-tattooed

-tattooer

-tattoos

-tau

-taught

-taunt

-taunted

-taunter

-taunting

-tauntingly

-taunts

-taut

-tauten

-tautened

-tautening

-tautly

-tautness

-tautological

-tautologically

-tautologies

-tautology

-tautology's

-tavern

-tavern's

-taverner

-taverns

-tawnier

-tawnies

-tawniness

-tawny

-tax

-taxable

-taxation

-taxed

-taxer

-taxes

-taxi

-taxi's

-taxicab

-taxicab's

-taxicabs

-taxied

-taxiing

-taxing

-taxingly

-taxis

-taxonomic

-taxonomically

-taxonomy

-taxpayer

-taxpayer's

-taxpayers

-tea

-teach

-teachable

-teachableness

-teacher

-teacher's

-teachers

-teaches

-teaching

-teachings

-team

-team's

-teamed

-teaming

-teams

-tear

-tear's

-teared

-tearer

-tearful

-tearfully

-tearfulness

-tearing

-tears

-teas

-tease

-teased

-teaser

-teases

-teasing

-teasingly

-teaspoon

-teaspoon's

-teaspoonful

-teaspoonful's

-teaspoonfuls

-teaspoons

-technical

-technicalities

-technicality

-technicality's

-technically

-technicalness

-technician

-technician's

-technicians

-technique

-technique's

-techniques

-technological

-technologically

-technologies

-technologist

-technologist's

-technologists

-technology

-technology's

-tedious

-tediously

-tediousness

-tedium

-teem

-teemed

-teeming

-teemingly

-teemingness

-teems

-teen

-teenage

-teenaged

-teenager

-teenagers

-teener

-teens

-teeth

-teethe

-teethed

-teether

-teethes

-teething

-telecommunication

-telecommunications

-teleconference

-teleconference's

-teleconferenced

-teleconferences

-teleconferencing

-telegram

-telegram's

-telegrams

-telegraph

-telegraphed

-telegrapher

-telegraphers

-telegraphic

-telegraphing

-telegraphs

-teleological

-teleologically

-teleology

-telephone

-telephoned

-telephoner

-telephoners

-telephones

-telephonic

-telephoning

-telephony

-telescope

-telescoped

-telescopes

-telescoping

-teletype

-teletype's

-teletypes

-televise

-televised

-televises

-televising

-television

-televisions

-televisor

-televisor's

-televisors

-tell

-teller

-tellers

-telling

-tellingly

-tellings

-tells

-temper

-temperament

-temperamental

-temperamentally

-temperaments

-temperance

-temperate

-temperately

-temperateness

-temperature

-temperature's

-temperatures

-tempered

-temperer

-tempering

-tempers

-tempest

-tempests

-tempestuous

-tempestuously

-tempestuousness

-template

-template's

-templates

-temple

-temple's

-templed

-temples

-temporal

-temporally

-temporaries

-temporarily

-temporariness

-temporary

-tempt

-temptation

-temptation's

-temptations

-tempted

-tempter

-tempters

-tempting

-temptingly

-tempts

-ten

-ten's

-tenacious

-tenaciously

-tenaciousness

-tenant

-tenant's

-tenants

-tend

-tended

-tendencies

-tendency

-tender

-tendered

-tendering

-tenderly

-tenderness

-tenders

-tending

-tends

-tenement

-tenement's

-tenements

-tennis

-tenor

-tenor's

-tenors

-tens

-tense

-tensed

-tensely

-tenseness

-tenser

-tenses

-tensest

-tensing

-tension

-tensioned

-tensioner

-tensioning

-tensions

-tensive

-tensor

-tensor's

-tensors

-tent

-tentacle

-tentacled

-tentacles

-tentative

-tentatively

-tentativeness

-tented

-tenter

-tenth

-tenthes

-tenting

-tents

-tenure

-tenured

-tenures

-tequila

-tequila's

-term

-termcap

-termed

-termer

-terminal

-terminal's

-terminally

-terminals

-terminate

-terminated

-terminates

-terminating

-termination

-terminations

-terminative

-terminatively

-terminator

-terminator's

-terminators

-terming

-terminologies

-terminology

-terminus

-termly

-terms

-ternary

-terrace

-terraced

-terraces

-terracing

-terrain

-terrain's

-terrains

-terrestrial

-terrestrial's

-terrestrially

-terrestrials

-terrible

-terribleness

-terribly

-terrier

-terrier's

-terriers

-terrific

-terrificly

-terrified

-terrifies

-terrify

-terrifying

-terrifyingly

-territorial

-territorially

-territories

-territory

-territory's

-terror

-terror's

-terrorism

-terrorist

-terrorist's

-terroristic

-terrorists

-terrors

-tertiaries

-tertiary

-test

-test's

-testability

-testable

-testament

-testament's

-testaments

-tested

-tester

-tester's

-testers

-testicle

-testicle's

-testicles

-testified

-testifier

-testifiers

-testifies

-testify

-testifying

-testimonies

-testimony

-testimony's

-testing

-testings

-tests

-text

-text's

-textbook

-textbook's

-textbooks

-textile

-textile's

-textiles

-texts

-textual

-textually

-texture

-textured

-textures

-texturing

-than

-thank

-thanked

-thanker

-thankful

-thankfully

-thankfulness

-thanking

-thankless

-thanklessly

-thanklessness

-thanks

-thanksgiving

-thanksgiving's

-thanksgivings

-that

-that's

-thatch

-thatched

-thatcher

-thatches

-thatching

-thats

-thaw

-thawed

-thawing

-thaws

-the

-theatrical

-theatrically

-theatricals

-theft

-theft's

-thefts

-their

-their's

-theirs

-them

-thematic

-theme

-theme's

-themes

-themselves

-then

-thence

-thenceforth

-theologian

-theologian's

-theologians

-theological

-theologically

-theologies

-theology

-theorem

-theorem's

-theorems

-theoretic

-theoretical

-theoretically

-theoreticians

-theoretics

-theories

-theorist

-theorist's

-theorists

-theory

-theory's

-therapeutic

-therapeutics

-therapies

-therapist

-therapist's

-therapists

-therapy

-therapy's

-there

-there's

-thereabouts

-thereafter

-thereby

-therefore

-therein

-thereof

-thereon

-thereto

-thereupon

-therewith

-thermodynamic

-thermodynamics

-thermometer

-thermometer's

-thermometers

-thermostat

-thermostat's

-thermostated

-thermostats

-these

-theses

-thesis

-they

-they'd

-they'll

-they're

-they've

-thick

-thicken

-thickened

-thickener

-thickeners

-thickening

-thickens

-thicker

-thickest

-thicket

-thicket's

-thicketed

-thickets

-thickly

-thickness

-thicknesses

-thicks

-thief

-thieve

-thieves

-thieving

-thigh

-thighed

-thighs

-thimble

-thimble's

-thimbles

-thin

-thiner

-thinest

-thing

-thingamajig

-thingamajig's

-thingamajigs

-thingness

-things

-think

-thinkable

-thinkableness

-thinkably

-thinker

-thinkers

-thinking

-thinkingly

-thinkingness

-thinks

-thinly

-thinner

-thinners

-thinness

-thinnest

-thins

-third

-thirdly

-thirds

-thirst

-thirsted

-thirster

-thirstier

-thirstiness

-thirsts

-thirsty

-thirteen

-thirteens

-thirteenth

-thirties

-thirtieth

-thirty

-this

-thistle

-thong

-thonged

-thorn

-thorn's

-thornier

-thorniness

-thorns

-thorny

-thorough

-thoroughfare

-thoroughfare's

-thoroughfares

-thoroughly

-thoroughness

-those

-though

-thought

-thought's

-thoughtful

-thoughtfully

-thoughtfulness

-thoughtless

-thoughtlessly

-thoughtlessness

-thoughts

-thousand

-thousands

-thousandth

-thrash

-thrashed

-thrasher

-thrashes

-thrashing

-thread

-threaded

-threader

-threaders

-threading

-threads

-threat

-threaten

-threatened

-threatener

-threatening

-threateningly

-threatens

-threats

-three

-three's

-threes

-threescore

-threshold

-threshold's

-thresholded

-thresholding

-thresholds

-threw

-thrice

-thrift

-thriftier

-thriftiness

-thrifty

-thrill

-thrilled

-thriller

-thrillers

-thrilling

-thrillingly

-thrills

-thrive

-thrived

-thriver

-thrives

-thriving

-thrivingly

-throat

-throated

-throating

-throats

-throb

-throbbed

-throbbing

-throbs

-throne

-throne's

-thrones

-throng

-throng's

-thronging

-throngs

-throning

-throttle

-throttled

-throttler

-throttles

-throttling

-through

-throughly

-throughout

-throughput

-throw

-thrower

-throwing

-thrown

-throws

-thrush

-thrushes

-thrust

-thruster

-thrusters

-thrusting

-thrusts

-thud

-thuds

-thug

-thug's

-thugs

-thumb

-thumbed

-thumbing

-thumbs

-thump

-thumped

-thumper

-thumping

-thumps

-thunder

-thunderbolt

-thunderbolt's

-thunderbolts

-thundered

-thunderer

-thunderers

-thundering

-thunderingly

-thunders

-thunderstorm

-thunderstorm's

-thunderstorms

-thunderstruck

-thus

-thusly

-thwart

-thwarted

-thwarter

-thwarting

-thwartly

-thwarts

-thyself

-tick

-ticked

-ticker

-tickers

-ticket

-ticket's

-ticketed

-ticketing

-tickets

-ticking

-tickle

-tickled

-tickler

-tickles

-tickling

-ticklish

-ticklishly

-ticklishness

-ticks

-tidal

-tidally

-tide

-tided

-tides

-tidied

-tidier

-tidies

-tidiness

-tiding

-tidings

-tidy

-tidying

-tie

-tied

-tier

-tiered

-tiers

-ties

-tiger

-tiger's

-tigers

-tight

-tighten

-tightened

-tightener

-tighteners

-tightening

-tightenings

-tightens

-tighter

-tightest

-tightly

-tightness

-tights

-tilde

-tildes

-tile

-tiled

-tiler

-tiles

-tiling

-till

-tillable

-tilled

-tiller

-tillered

-tillering

-tillers

-tilling

-tills

-tilt

-tilted

-tilter

-tilters

-tilting

-tilts

-timber

-timbered

-timbering

-timbers

-time

-timed

-timeless

-timelessly

-timelessness

-timelier

-timeliness

-timely

-timeout

-timeouts

-timer

-timers

-times

-timeshare

-timeshared

-timeshares

-timesharing

-timetable

-timetable's

-timetabled

-timetables

-timetabling

-timid

-timidity

-timidly

-timidness

-timing

-timings

-tin

-tin's

-tinge

-tinged

-tinging

-tingle

-tingled

-tingles

-tingling

-tinglingly

-tinier

-tiniest

-tinily

-tininess

-tinker

-tinkered

-tinkerer

-tinkering

-tinkers

-tinkle

-tinkled

-tinkles

-tinkling

-tinned

-tinnier

-tinniest

-tinnily

-tinniness

-tinning

-tinny

-tins

-tint

-tinted

-tinter

-tinting

-tints

-tiny

-tip

-tip's

-tipped

-tipper

-tipper's

-tippers

-tipping

-tips

-tiptoe

-tiptoed

-tire

-tired

-tiredly

-tiredness

-tireless

-tirelessly

-tirelessness

-tires

-tiresome

-tiresomely

-tiresomeness

-tiring

-tissue

-tissue's

-tissued

-tissues

-tissuing

-tit

-tit's

-tithe

-tithe's

-tither

-tithes

-tithing

-title

-titled

-titles

-titling

-tits

-titter

-tittered

-tittering

-titters

-tizzies

-tizzy

-to

-toad

-toad's

-toads

-toast

-toasted

-toaster

-toasters

-toastier

-toasting

-toasts

-toasty

-tobacco

-today

-today's

-todays

-toe

-toe's

-toed

-toes

-together

-togetherness

-toggle

-toggled

-toggles

-toggling

-toil

-toiled

-toiler

-toilet

-toilet's

-toilets

-toiling

-toils

-token

-token's

-tokens

-told

-tolerability

-tolerable

-tolerably

-tolerance

-tolerances

-tolerant

-tolerantly

-tolerate

-tolerated

-tolerates

-tolerating

-toleration

-tolerative

-toll

-tolled

-tolling

-tolls

-tom

-tom's

-tomahawk

-tomahawk's

-tomahawks

-tomato

-tomatoes

-tomb

-tomb's

-tombs

-tomography

-tomorrow

-tomorrow's

-tomorrows

-toms

-ton

-ton's

-tone

-toned

-toner

-tones

-tongs

-tongue

-tongued

-tongues

-tonguing

-tonic

-tonic's

-tonics

-tonight

-toning

-tonnage

-tons

-tonsil

-too

-took

-tool

-tooled

-tooler

-toolers

-tooling

-toolkit

-toolkit's

-toolkits

-tools

-tooth

-toothbrush

-toothbrush's

-toothbrushes

-toothbrushing

-toothed

-toothing

-toothpick

-toothpick's

-toothpicks

-top

-toped

-toper

-topic

-topic's

-topical

-topically

-topics

-toping

-topmost

-topological

-topologically

-topologies

-topology

-topple

-toppled

-topples

-toppling

-tops

-torch

-torch's

-torches

-tore

-torment

-tormented

-tormenter

-tormenters

-tormenting

-torments

-torn

-tornado

-tornadoes

-tornados

-torpedo

-torpedoed

-torpedoes

-torpedoing

-torpedos

-torque

-torquer

-torquers

-torques

-torquing

-torrent

-torrent's

-torrents

-torrid

-torridly

-torridness

-tortoise

-tortoise's

-tortoises

-torture

-tortured

-torturer

-torturers

-tortures

-torturing

-torus

-torus's

-toruses

-toss

-tossed

-tosser

-tosses

-tossing

-total

-total's

-totalities

-totality

-totality's

-totally

-totals

-totter

-tottered

-tottering

-totteringly

-totters

-touch

-touchable

-touched

-toucher

-touches

-touchier

-touchiest

-touchily

-touchiness

-touching

-touchingly

-touchy

-tough

-toughen

-toughened

-toughening

-toughens

-tougher

-toughest

-toughly

-toughness

-tour

-toured

-tourer

-touring

-tourist

-tourist's

-tourists

-tournament

-tournament's

-tournaments

-tours

-tow

-toward

-towardliness

-towardly

-towards

-towed

-towel

-towel's

-towels

-tower

-towered

-towering

-toweringly

-towers

-towing

-town

-town's

-towner

-towns

-township

-township's

-townships

-tows

-toxicity

-toxin

-toxin's

-toxins

-toy

-toyed

-toyer

-toying

-toys

-trace

-traceable

-traceableness

-traced

-traceless

-tracelessly

-tracer

-tracers

-traces

-tracing

-tracings

-track

-tracked

-tracker

-trackers

-tracking

-tracks

-tract

-tract's

-tractability

-tractable

-tractive

-tractor

-tractor's

-tractors

-tracts

-trade

-traded

-trademark

-trademark's

-trademarks

-tradeoff

-tradeoffs

-trader

-traders

-trades

-tradesman

-trading

-tradition

-tradition's

-traditional

-traditionally

-traditions

-traffic

-traffic's

-trafficked

-trafficker

-trafficker's

-traffickers

-trafficking

-traffics

-tragedies

-tragedy

-tragedy's

-tragic

-tragically

-trail

-trailed

-trailer

-trailers

-trailing

-trailings

-trails

-train

-trained

-trainee

-trainee's

-trainees

-trainer

-trainers

-training

-trains

-trait

-trait's

-traitor

-traitor's

-traitors

-traits

-trajectories

-trajectory

-trajectory's

-tramp

-tramped

-tramper

-tramping

-trample

-trampled

-trampler

-tramples

-trampling

-tramps

-trance

-trance's

-trances

-trancing

-tranquil

-tranquility

-tranquillity

-tranquilly

-tranquilness

-transact

-transacted

-transacting

-transaction

-transaction's

-transactions

-transacts

-transceiver

-transceiver's

-transceivers

-transcend

-transcended

-transcendent

-transcendently

-transcending

-transcends

-transcontinental

-transcribe

-transcribed

-transcriber

-transcribers

-transcribes

-transcribing

-transcript

-transcript's

-transcription

-transcription's

-transcriptions

-transcripts

-transfer

-transfer's

-transferability

-transferable

-transferal

-transferal's

-transferals

-transfered

-transference

-transferral

-transferral's

-transferrals

-transferred

-transferrer

-transferrer's

-transferrers

-transferring

-transfers

-transfinite

-transform

-transformable

-transformation

-transformation's

-transformational

-transformations

-transformed

-transformer

-transformers

-transforming

-transforms

-transgress

-transgressed

-transgresses

-transgressing

-transgression

-transgression's

-transgressions

-transgressive

-transience

-transiency

-transient

-transiently

-transients

-transistor

-transistor's

-transistors

-transit

-transition

-transitional

-transitionally

-transitioned

-transitions

-transitive

-transitively

-transitiveness

-transitivity

-transitoriness

-transitory

-translatability

-translatable

-translate

-translated

-translates

-translating

-translation

-translational

-translations

-translative

-translator

-translator's

-translators

-translucent

-translucently

-transmission

-transmission's

-transmissions

-transmit

-transmits

-transmittal

-transmitted

-transmitter

-transmitter's

-transmitters

-transmitting

-transmogrification

-transmogrify

-transparencies

-transparency

-transparency's

-transparent

-transparently

-transparentness

-transpire

-transpired

-transpires

-transpiring

-transplant

-transplanted

-transplanter

-transplanting

-transplants

-transport

-transportability

-transportation

-transportations

-transported

-transporter

-transporters

-transporting

-transports

-transpose

-transposed

-transposes

-transposing

-transposition

-trap

-trap's

-trapezoid

-trapezoid's

-trapezoidal

-trapezoids

-trapped

-trapper

-trapper's

-trappers

-trapping

-trappings

-traps

-trash

-trashed

-trasher

-trashes

-trashing

-traumatic

-travail

-travails

-travel

-travels

-traversal

-traversal's

-traversals

-traverse

-traversed

-traverser

-traverses

-traversing

-travesties

-travesty

-travesty's

-tray

-tray's

-trays

-treacheries

-treacherous

-treacherously

-treacherousness

-treachery

-treachery's

-tread

-treaded

-treader

-treading

-treads

-treason

-treasure

-treasured

-treasurer

-treasures

-treasuries

-treasuring

-treasury

-treasury's

-treat

-treated

-treater

-treaters

-treaties

-treating

-treatise

-treatise's

-treatises

-treatment

-treatment's

-treatments

-treats

-treaty

-treaty's

-treble

-trebled

-trebles

-trebling

-tree

-tree's

-treed

-trees

-treetop

-treetop's

-treetops

-trek

-trek's

-treks

-tremble

-trembled

-trembler

-trembles

-trembling

-tremendous

-tremendously

-tremendousness

-tremor

-tremor's

-tremors

-trench

-trenched

-trencher

-trenchers

-trenches

-trend

-trending

-trends

-trespass

-trespassed

-trespasser

-trespassers

-trespasses

-tress

-tress's

-tressed

-tresses

-trial

-trial's

-trials

-triangle

-triangle's

-triangles

-triangular

-triangularly

-tribal

-tribally

-tribe

-tribe's

-tribes

-tribunal

-tribunal's

-tribunals

-tribune

-tribune's

-tribunes

-tributary

-tribute

-tribute's

-tributes

-tributing

-trichotomy

-trick

-tricked

-tricker

-trickier

-trickiest

-trickiness

-tricking

-trickle

-trickled

-trickles

-trickling

-tricks

-tricky

-tried

-trier

-triers

-tries

-trifle

-trifled

-trifler

-trifles

-trifling

-trigger

-triggered

-triggering

-triggers

-trigonometric

-trigonometry

-trihedral

-trill

-trilled

-triller

-trillion

-trillions

-trillionth

-trim

-trimer

-trimly

-trimmed

-trimmer

-trimmest

-trimming

-trimmings

-trimness

-trims

-trinket

-trinket's

-trinketed

-trinketer

-trinkets

-trip

-trip's

-triple

-tripled

-triples

-triplet

-triplet's

-triplets

-triplication

-tripling

-triply

-trips

-triumph

-triumphal

-triumphantly

-triumphed

-triumphing

-triumphs

-trivia

-trivial

-trivialities

-triviality

-trivially

-trod

-troff

-troff's

-troffer

-troll

-troll's

-trolley

-trolley's

-trolleyed

-trolleys

-trolls

-troop

-trooped

-trooper

-troopers

-trooping

-troops

-trophied

-trophies

-trophy

-trophy's

-trophying

-tropic

-tropic's

-tropical

-tropically

-tropics

-trot

-trots

-trouble

-troubled

-troublemaker

-troublemaker's

-troublemakers

-troubler

-troubles

-troubleshoot

-troubleshooted

-troubleshooter

-troubleshooters

-troubleshooting

-troubleshoots

-troublesome

-troublesomely

-troublesomeness

-troubling

-trough

-trouser

-trousered

-trousers

-trout

-trouts

-trowel

-trowel's

-trowels

-truant

-truant's

-truants

-truce

-trucing

-truck

-trucked

-trucker

-truckers

-trucking

-trucks

-trudge

-trudged

-trudger

-trudges

-trudging

-true

-trued

-trueness

-truer

-trues

-truest

-truing

-truism

-truism's

-truisms

-truly

-trump

-trumped

-trumpet

-trumpeted

-trumpeter

-trumpeting

-trumpets

-trumps

-truncate

-truncated

-truncates

-truncating

-truncation

-truncation's

-truncations

-trunk

-trunk's

-trunked

-trunks

-trust

-trusted

-trustee

-trustee's

-trusteed

-trustees

-truster

-trustful

-trustfully

-trustfulness

-trustier

-trusties

-trustiness

-trusting

-trustingly

-trusts

-trustworthiness

-trustworthy

-trusty

-truth

-truthful

-truthfully

-truthfulness

-truths

-try

-trying

-tryingly

-tty

-tty's

-ttys

-tub

-tub's

-tube

-tubed

-tuber

-tuberculosis

-tubers

-tubes

-tubing

-tubs

-tuck

-tucked

-tucker

-tuckered

-tuckering

-tucking

-tucks

-tuft

-tuft's

-tufted

-tufter

-tufts

-tug

-tugs

-tuition

-tuitions

-tulip

-tulip's

-tulips

-tumble

-tumbled

-tumbler

-tumblers

-tumbles

-tumbling

-tumult

-tumult's

-tumults

-tumultuous

-tumultuously

-tumultuousness

-tunable

-tunableness

-tune

-tuned

-tuner

-tuners

-tunes

-tunic

-tunic's

-tunics

-tuning

-tuning's

-tunings

-tunnel

-tunnels

-tuple

-tuple's

-tuples

-turban

-turban's

-turbaned

-turbans

-turbulence

-turbulence's

-turbulent

-turbulently

-turf

-turkey

-turkey's

-turkeys

-turmoil

-turmoil's

-turmoils

-turn

-turnable

-turned

-turner

-turners

-turning

-turnings

-turnip

-turnip's

-turnips

-turnkey

-turnkeys

-turnover

-turnovers

-turns

-turpentine

-turquoise

-turret

-turret's

-turreted

-turrets

-turtle

-turtle's

-turtles

-turtling

-tutor

-tutored

-tutorial

-tutorial's

-tutorials

-tutoring

-tutors

-twain

-twang

-twanging

-twas

-tweak

-tweaked

-tweaker

-tweaking

-tweaks

-tweed

-tweezer

-tweezers

-twelfth

-twelve

-twelves

-twenties

-twentieth

-twenty

-twice

-twig

-twig's

-twigs

-twilight

-twilight's

-twilights

-twill

-twilled

-twilling

-twin

-twin's

-twine

-twined

-twiner

-twines

-twining

-twinkle

-twinkled

-twinkler

-twinkles

-twinkling

-twins

-twirl

-twirled

-twirler

-twirling

-twirlingly

-twirls

-twist

-twisted

-twister

-twisters

-twisting

-twists

-twitch

-twitched

-twitcher

-twitching

-twitter

-twittered

-twitterer

-twittering

-two

-two's

-twofold

-twos

-tying

-type

-type's

-typed

-typedef

-typedefs

-typer

-types

-typewriter

-typewriter's

-typewriters

-typhoid

-typical

-typically

-typicalness

-typification

-typified

-typifies

-typify

-typifying

-typing

-typist

-typist's

-typists

-typographic

-typographical

-typographically

-typography

-typos

-tyranny

-tyrant

-tyrant's

-tyrants

-ubiquitous

-ubiquitously

-ubiquitousness

-ubiquity

-ugh

-uglier

-ugliest

-ugliness

-ugly

-ulcer

-ulcer's

-ulcered

-ulcering

-ulcers

-ultimate

-ultimately

-ultimateness

-umbrella

-umbrella's

-umbrellas

-umpire

-umpire's

-umpired

-umpires

-umpiring

-unabashed

-unabashedly

-unabated

-unabatedly

-unabbreviated

-unable

-unabridged

-unaccelerated

-unacceptability

-unacceptable

-unacceptably

-unaccessible

-unaccommodated

-unaccompanied

-unaccomplished

-unaccountably

-unaccounted

-unaccustomed

-unaccustomedly

-unachievable

-unachieved

-unacknowledged

-unacquainted

-unadaptable

-unadjustable

-unadjusted

-unadopted

-unadorned

-unadulterated

-unadulteratedly

-unadvised

-unadvisedly

-unaffected

-unaffectedly

-unaffectedness

-unaffectionate

-unaffectionately

-unafraid

-unaggregated

-unaided

-unalienability

-unalienable

-unaligned

-unallocated

-unalloyed

-unalterable

-unalterableness

-unalterably

-unaltered

-unambiguous

-unambiguously

-unambitious

-unanchored

-unanimous

-unanimously

-unannounced

-unanswerable

-unanswered

-unanticipated

-unanticipatedly

-unapologetically

-unappealing

-unappealingly

-unappreciated

-unapproachability

-unapproachable

-unappropriated

-unapt

-unaptly

-unaptness

-unarguable

-unarguably

-unarmed

-unarticulated

-unary

-unashamed

-unashamedly

-unasked

-unassailable

-unassailableness

-unassembled

-unassigned

-unassigns

-unassisted

-unassuming

-unassumingness

-unattached

-unattainability

-unattainable

-unattended

-unattenuated

-unattractive

-unattractively

-unattractiveness

-unattributed

-unauthentic

-unauthenticated

-unavailability

-unavailable

-unavailing

-unavailingly

-unavailingness

-unavoidable

-unavoidably

-unaware

-unawarely

-unawareness

-unawares

-unbacked

-unbalanced

-unbalancedness

-unbanned

-unbanning

-unbans

-unbarbered

-unbarred

-unbated

-unbearable

-unbearably

-unbeatable

-unbeatably

-unbeaten

-unbeautifully

-unbecoming

-unbecomingly

-unbecomingness

-unbelievable

-unbelievably

-unbelieving

-unbelievingly

-unbelted

-unbendable

-unbetrothed

-unbiased

-unbiasedness

-unbidden

-unblemished

-unblinded

-unblinking

-unblinkingly

-unblock

-unblocked

-unblocking

-unblocks

-unblown

-unblushing

-unblushingly

-unbodied

-unbolted

-unboned

-unbonneted

-unborn

-unbound

-unbounded

-unboundedness

-unbowed

-unbranched

-unbreakable

-unbreathable

-unbred

-unbridled

-unbroken

-unbudging

-unbudgingly

-unbuffered

-unbuilt

-unbundled

-unburdened

-unbureaucratic

-unburied

-unburned

-unbuttered

-unbuttoned

-unbuttons

-uncaged

-uncalculating

-uncalled

-uncandidly

-uncanniness

-uncanny

-uncared

-uncaring

-uncatchable

-uncaught

-uncaused

-unceasing

-unceasingly

-uncensored

-uncertain

-uncertainly

-uncertainness

-uncertainties

-uncertainty

-uncertified

-unchallenged

-unchangeability

-unchangeable

-unchangeably

-unchanged

-unchanging

-unchangingly

-unchangingness

-uncharacteristically

-uncharged

-uncharitable

-uncharitableness

-uncharted

-unchartered

-uncheckable

-unchecked

-unchivalrously

-unchosen

-uncivil

-uncivilly

-unclaimed

-unclamorous

-unclamorously

-unclamorousness

-unclarity

-unclassified

-uncle

-uncle's

-unclean

-uncleanliness

-uncleanly

-uncleanness

-unclear

-uncleared

-unclenched

-uncles

-unclipped

-unclosed

-unclothed

-unclouded

-uncloudedly

-unclustered

-uncluttered

-uncoated

-uncoded

-uncoiled

-uncoined

-uncomfortable

-uncomfortably

-uncomforted

-uncommented

-uncommitted

-uncommon

-uncommonly

-uncommonness

-uncomplaining

-uncomplainingly

-uncompleted

-uncomplimentary

-uncomprehending

-uncomprehendingly

-uncompress

-uncompressed

-uncompresses

-uncompressing

-uncompromising

-uncompromisingly

-uncomputable

-unconceivable

-unconcerned

-unconcernedly

-unconcernedness

-unconditional

-unconditionally

-unconditioned

-unconfined

-unconfirmed

-unconformity

-unconnected

-unconquerable

-unconscious

-unconsciously

-unconsciousness

-unconsidered

-unconsolidated

-unconstitutional

-unconstitutionality

-unconstitutionally

-unconstrained

-uncontaminated

-uncontested

-uncontrollability

-uncontrollable

-uncontrollably

-uncontrolled

-unconventional

-unconventionally

-unconvertible

-unconvinced

-unconvincing

-unconvincingly

-unconvincingness

-uncool

-uncooled

-uncooperative

-uncoordinated

-uncorked

-uncorrectable

-uncorrected

-uncorrelated

-uncountable

-uncountably

-uncounted

-uncouth

-uncouthly

-uncouthness

-uncovenanted

-uncover

-uncovered

-uncovering

-uncovers

-uncreated

-uncritically

-uncrowned

-uncrushable

-uncured

-uncurled

-uncynical

-uncynically

-undamaged

-undamped

-undaunted

-undauntedly

-undebatable

-undecidable

-undecided

-undeclared

-undecomposable

-undecorated

-undefended

-undefinability

-undefinable

-undefined

-undefinedness

-undeformed

-undelete

-undeleted

-undemocratic

-undemocratically

-undemonstrative

-undemonstratively

-undemonstrativeness

-undeniable

-undeniableness

-undeniably

-undepicted

-under

-underbrush

-underdone

-underestimate

-underestimated

-underestimates

-underestimating

-underestimation

-underestimations

-underflow

-underflowed

-underflowing

-underflows

-underfoot

-undergo

-undergoes

-undergoing

-undergone

-undergrad

-undergrad's

-undergrads

-undergraduate

-undergraduate's

-undergraduates

-underground

-undergrounder

-underivable

-underived

-underlie

-underlies

-underline

-underlined

-underlines

-underling

-underling's

-underlings

-underlining

-underlinings

-underly

-underlying

-undermine

-undermined

-undermines

-undermining

-underneath

-underpayment

-underpayment's

-underpayments

-underpinning

-underpinnings

-underplay

-underplayed

-underplaying

-underplays

-underscore

-underscored

-underscores

-understand

-understandability

-understandable

-understandably

-understanding

-understandingly

-understandings

-understands

-understated

-understood

-undertake

-undertaken

-undertaker

-undertaker's

-undertakers

-undertakes

-undertaking

-undertakings

-undertook

-underway

-underwear

-underwent

-underworld

-underwrite

-underwriter

-underwriters

-underwrites

-underwriting

-undescended

-undesigned

-undesigning

-undesirability

-undesirable

-undesirableness

-undesirably

-undesired

-undetectable

-undetected

-undetermined

-undeveloped

-undeviated

-undeviating

-undeviatingly

-undid

-undies

-undifferentiated

-undigested

-undignified

-undiluted

-undiminished

-undimmed

-undiplomatic

-undirected

-undisciplined

-undisclosed

-undiscovered

-undiscussed

-undisguised

-undisguisedly

-undismayed

-undisputed

-undisrupted

-undissociated

-undistinguished

-undistorted

-undistributed

-undisturbed

-undivided

-undo

-undocumented

-undoer

-undoes

-undoing

-undoings

-undomesticated

-undone

-undoubled

-undoubted

-undoubtedly

-undrained

-undramatically

-undreamed

-undress

-undressed

-undresses

-undressing

-undried

-undrinkable

-undue

-unduly

-undumper

-undumper's

-undutiful

-undutifully

-undutifulness

-undying

-unearned

-unearthliness

-unearthly

-uneasily

-uneasiness

-uneasy

-uneconomical

-unedited

-unelected

-unembellished

-unemotional

-unemotionally

-unemphatic

-unemphatically

-unemployable

-unemployed

-unemployment

-unencumbered

-unending

-unendingly

-unendurable

-unendurableness

-unendurably

-unenlightening

-unenthusiastic

-unenthusiastically

-unenumerated

-unenvied

-unequal

-unequally

-unequivocal

-unequivocally

-unerring

-unerringly

-unessential

-unethically

-unevaluated

-uneven

-unevenly

-unevenness

-uneventful

-uneventfully

-unexamined

-unexampled

-unexceptionally

-unexcused

-unexpanded

-unexpected

-unexpectedly

-unexpectedness

-unexpended

-unexperienced

-unexplainable

-unexplained

-unexploited

-unexplored

-unexpressed

-unextended

-unfading

-unfadingly

-unfair

-unfairly

-unfairness

-unfaith

-unfaithful

-unfaithfully

-unfaithfulness

-unfaltering

-unfalteringly

-unfamiliar

-unfamiliarity

-unfamiliarly

-unfashionable

-unfashionably

-unfastened

-unfathered

-unfeathered

-unfeigned

-unfeignedly

-unfenced

-unfettered

-unfilial

-unfilially

-unfilled

-unfinished

-unfired

-unfit

-unfitly

-unfitness

-unfitted

-unfixed

-unflagging

-unflaggingly

-unflattering

-unflatteringly

-unfledged

-unflinching

-unflinchingly

-unfocused

-unfold

-unfolded

-unfolding

-unfolds

-unforeseen

-unforgeable

-unforgettable

-unforgettably

-unforgivable

-unforgiving

-unforgivingness

-unformatted

-unformed

-unforthcoming

-unfortunate

-unfortunately

-unfortunates

-unfounded

-unfrequented

-unfriendliness

-unfriendly

-unfrosted

-unfruitful

-unfruitfully

-unfruitfulness

-unfulfilled

-unfunded

-unfunnily

-unfurnished

-ungainliness

-ungainly

-ungallantly

-ungenerously

-ungirt

-unglazed

-unglued

-ungot

-ungotten

-ungoverned

-ungraceful

-ungracefully

-ungracefulness

-ungraciously

-ungraded

-ungrammatical

-ungrateful

-ungratefully

-ungratefulness

-ungratified

-ungrounded

-unguarded

-unguardedly

-unguardedness

-unguessable

-unguessed

-unguided

-unhallow

-unhallowed

-unhampered

-unhandily

-unhandsomely

-unhappier

-unhappiest

-unhappily

-unhappiness

-unhappy

-unharmed

-unhealthily

-unhealthiness

-unhealthy

-unheard

-unheeded

-unheeding

-unhelm

-unhelpfully

-unheralded

-unhesitating

-unhesitatingly

-unhinged

-unhitched

-unhooks

-unhoped

-unhurriedly

-unhysterical

-unhysterically

-unicorn

-unicorn's

-unicorns

-unidentifiable

-unidentified

-unidirectional

-unidirectionality

-unidirectionally

-unification

-unifications

-unified

-unifier

-unifiers

-unifies

-uniform

-uniformed

-uniforming

-uniformities

-uniformity

-uniformly

-uniformness

-uniforms

-unify

-unifying

-unilluminating

-unimaginable

-unimaginably

-unimaginatively

-unimpaired

-unimpassioned

-unimpeded

-unimplemented

-unimportance

-unimportant

-unimpressed

-unimproved

-unincorporated

-unindented

-uninfected

-uninfluenced

-uninformatively

-uninformed

-uninhabited

-uninhibited

-uninhibitedly

-uninhibitedness

-uninitiated

-uninjured

-uninspired

-uninspiring

-uninstantiated

-uninsulated

-unintelligent

-unintelligently

-unintelligibility

-unintelligible

-unintelligibleness

-unintelligibly

-unintended

-unintentional

-unintentionally

-uninteresting

-uninterestingly

-uninterpretable

-uninterpreted

-uninterrupted

-uninterruptedly

-uninterruptedness

-uninterviewed

-uninvited

-union

-union's

-unions

-unique

-uniquely

-uniqueness

-unison

-unit

-unit's

-unite

-united

-unitedly

-uniter

-unites

-unities

-uniting

-unitive

-units

-unity

-unity's

-univalve

-univalve's

-univalves

-universal

-universality

-universally

-universalness

-universals

-universe

-universe's

-universes

-universities

-university

-university's

-unjacketed

-unjam

-unjammed

-unjamming

-unjoined

-unjust

-unjustifiable

-unjustified

-unjustly

-unjustness

-unkind

-unkindliness

-unkindly

-unkindness

-unknit

-unknowable

-unknowing

-unknowingly

-unknown

-unknowns

-unlaced

-unlamented

-unlashed

-unlaundered

-unlawful

-unlawfully

-unlawfulness

-unleaded

-unleash

-unleashed

-unleashes

-unleashing

-unleavened

-unless

-unlettered

-unlicensed

-unlicked

-unlike

-unlikelihood

-unlikelihoods

-unlikeliness

-unlikely

-unlikeness

-unlimbers

-unlimited

-unlimitedly

-unlined

-unlink

-unlinked

-unlinking

-unlinks

-unlisted

-unload

-unloaded

-unloader

-unloaders

-unloading

-unloads

-unlock

-unlocked

-unlocking

-unlocks

-unlogged

-unloved

-unluckily

-unluckiness

-unlucky

-unmade

-unmagnified

-unmaintainable

-unmaintained

-unmaliciously

-unmanageable

-unmanageably

-unmanaged

-unmanned

-unmannered

-unmanneredly

-unmannerliness

-unmannerly

-unmapped

-unmaps

-unmarked

-unmarried

-unmarrieds

-unmasked

-unmatchable

-unmatched

-unmated

-unmates

-unmeant

-unmeasurable

-unmentionable

-unmentionables

-unmentioned

-unmerciful

-unmercifully

-unmeshed

-unmistakable

-unmistakably

-unmitigated

-unmitigatedly

-unmitigatedness

-unmixed

-unmoderated

-unmodifiable

-unmodified

-unmolested

-unmotivated

-unmount

-unmountable

-unmounted

-unmoved

-unmurmuring

-unnameable

-unnamed

-unnatural

-unnaturally

-unnaturalness

-unnecessarily

-unnecessary

-unneeded

-unnegated

-unnerve

-unnerved

-unnerves

-unnerving

-unnervingly

-unnoticed

-unnourished

-unnumbered

-unobservable

-unobservables

-unobserved

-unobtainable

-unoccupied

-unofficial

-unofficially

-unopened

-unordered

-unoriginals

-unorthodoxly

-unpack

-unpackaged

-unpackages

-unpacked

-unpacker

-unpacking

-unpacks

-unpadded

-unpaged

-unpaid

-unpainted

-unpaired

-unparliamentary

-unparsed

-unpartitioned

-unpatriotic

-unpaved

-unperceived

-unperformed

-unperturbed

-unperturbedly

-unplaced

-unplagued

-unplanned

-unpleasant

-unpleasantly

-unpleasantness

-unpleased

-unplowed

-unplugged

-unplugging

-unplugs

-unplumbed

-unpolled

-unpolluted

-unpopular

-unpopularity

-unprecedented

-unprecedentedly

-unpredictability

-unpredictable

-unpredictably

-unpredicted

-unprejudiced

-unprescribed

-unpreserved

-unpretending

-unpretentious

-unpretentiously

-unpretentiousness

-unpriced

-unprimed

-unprincipled

-unprincipledness

-unprintable

-unprinted

-unprivileged

-unproblematic

-unproblematical

-unproblematically

-unprocessed

-unprofitable

-unprofitableness

-unprofitably

-unprojected

-unpromising

-unpromisingly

-unprompted

-unpronounceable

-unpropagated

-unpropertied

-unprotected

-unprotectedly

-unprovability

-unprovable

-unproved

-unproven

-unprovided

-unpublished

-unpunched

-unpunished

-unqualified

-unqualifiedly

-unquantifiable

-unquenched

-unquestionably

-unquestioned

-unquestioningly

-unquoted

-unranked

-unrated

-unravel

-unravels

-unreachable

-unreacted

-unread

-unreadability

-unreadable

-unreal

-unrealism

-unrealistic

-unrealistically

-unrealized

-unrealizes

-unreasonable

-unreasonableness

-unreasonably

-unreassuringly

-unreconstructed

-unrecordable

-unrecorded

-unrecoverable

-unredeemed

-unreferenced

-unrefined

-unreflected

-unregister

-unregistered

-unregistering

-unregisters

-unregulated

-unrehearsed

-unreinforced

-unrelated

-unreleased

-unrelenting

-unrelentingly

-unreliabilities

-unreliability

-unreliable

-unreliably

-unremarked

-unreported

-unrepresentable

-unrepresented

-unrequested

-unrequited

-unreserved

-unreservedly

-unreservedness

-unresisted

-unresisting

-unresolved

-unresponsive

-unresponsively

-unresponsiveness

-unrest

-unrestrained

-unrestrainedly

-unrestrainedness

-unrestricted

-unrestrictedly

-unrestrictive

-unreturned

-unrevealing

-unrifled

-unrighteous

-unrighteously

-unrighteousness

-unroll

-unrolled

-unrolling

-unrolls

-unromantically

-unrotated

-unruffled

-unruled

-unruliness

-unruly

-unsafe

-unsafely

-unsaid

-unsalted

-unsanitary

-unsatisfactorily

-unsatisfactory

-unsatisfiability

-unsatisfiable

-unsatisfied

-unsatisfying

-unsaturated

-unsaved

-unscheduled

-unschooled

-unscientific

-unscientifically

-unscramble

-unscrambled

-unscrambler

-unscrambles

-unscrambling

-unscratched

-unscreened

-unscrews

-unscripted

-unscrupulous

-unscrupulously

-unscrupulousness

-unsealed

-unseals

-unseasonable

-unseasonableness

-unseasonably

-unseasoned

-unsecured

-unseeded

-unseeing

-unseemly

-unseen

-unsegmented

-unsegregated

-unselected

-unselfish

-unselfishly

-unselfishness

-unsent

-unserved

-unserviced

-unsettled

-unsettledness

-unsettling

-unsettlingly

-unshaded

-unshakable

-unshaken

-unshared

-unsharpened

-unshaved

-unshaven

-unsheathing

-unshelled

-unsheltered

-unshielded

-unshod

-unsigned

-unsimplified

-unsized

-unskilled

-unskillful

-unskillfully

-unskillfulness

-unslings

-unsloped

-unslung

-unsmiling

-unsmilingly

-unsnap

-unsnapped

-unsnapping

-unsnaps

-unsociability

-unsociable

-unsociableness

-unsociably

-unsocial

-unsocially

-unsolicited

-unsolvable

-unsolved

-unsophisticated

-unsophistication

-unsorted

-unsought

-unsound

-unsounded

-unsoundly

-unsoundness

-unsparing

-unsparingly

-unspeakable

-unspecified

-unspent

-unspoiled

-unspoken

-unspotted

-unsprayed

-unsprung

-unstable

-unstableness

-unstably

-unstacked

-unstacks

-unstained

-unstapled

-unstaring

-unstated

-unsteadily

-unsteadiness

-unsteady

-unstemmed

-unstinting

-unstintingly

-unstoppable

-unstopped

-unstrained

-unstratified

-unstreamed

-unstressed

-unstriped

-unstructured

-unstrung

-unstuck

-unsubscripted

-unsubstantially

-unsubstantiated

-unsubstituted

-unsuccessful

-unsuccessfully

-unsuffixed

-unsuitability

-unsuitable

-unsuitably

-unsuited

-unsung

-unsupportable

-unsupported

-unsure

-unsurpassed

-unsurprised

-unsurprising

-unsurprisingly

-unsuspected

-unsuspecting

-unsuspended

-unswerving

-unsymmetrically

-unsympathetic

-untamed

-untampered

-untaped

-untapped

-untaught

-untented

-unterminated

-untestable

-untested

-unthematic

-unthinkable

-unthinkably

-unthinkingly

-untidiness

-untidy

-untie

-untied

-unties

-until

-untimeliness

-untimely

-untitled

-unto

-untold

-untouchable

-untouchable's

-untouchables

-untouched

-untoward

-untowardly

-untowardness

-untraceable

-untraced

-untracked

-untrained

-untransformed

-untranslated

-untransposed

-untreated

-untried

-untrod

-untroubled

-untrue

-untruly

-untrusted

-untrustworthiness

-untruth

-untruthful

-untruthfully

-untruthfulness

-untutored

-untwisted

-untying

-untyped

-unusable

-unused

-unusual

-unusually

-unusualness

-unuttered

-unvalued

-unvarnished

-unvarying

-unveil

-unveiled

-unveiling

-unveils

-unventilated

-unverified

-unvisited

-unvoiced

-unwaged

-unwanted

-unwarily

-unwarranted

-unwashed

-unwashedness

-unwatched

-unwavering

-unwaveringly

-unwearied

-unweariedly

-unweighed

-unwelcome

-unwept

-unwholesome

-unwholesomely

-unwieldiness

-unwieldy

-unwilled

-unwilling

-unwillingly

-unwillingness

-unwind

-unwinder

-unwinders

-unwinding

-unwinds

-unwinking

-unwired

-unwise

-unwisely

-unwiser

-unwisest

-unwitnessed

-unwitting

-unwittingly

-unwonted

-unwontedly

-unwontedness

-unworldliness

-unworldly

-unworn

-unworthiness

-unworthy

-unwound

-unwounded

-unwoven

-unwrap

-unwrapped

-unwrapping

-unwraps

-unwrinkled

-unwritable

-unwritten

-unyielded

-unyielding

-unyieldingly

-up

-upbraid

-upbraider

-upbringing

-update

-updated

-updater

-updates

-updating

-upfield

-upgrade

-upgraded

-upgrades

-upgrading

-upheld

-uphill

-uphold

-upholder

-upholders

-upholding

-upholds

-upholster

-upholstered

-upholsterer

-upholsterers

-upholstering

-upholsters

-upkeep

-upland

-uplander

-uplands

-uplift

-uplifted

-uplifter

-uplifting

-uplifts

-upload

-uploaded

-uploading

-uploads

-upon

-upper

-uppermost

-uppers

-upright

-uprightly

-uprightness

-uprising

-uprising's

-uprisings

-uproar

-uproot

-uprooted

-uprooter

-uprooting

-uproots

-ups

-upset

-upsets

-upsetting

-upshot

-upshot's

-upshots

-upside

-upsides

-upstairs

-upstream

-upturn

-upturned

-upturning

-upturns

-upward

-upwardly

-upwardness

-upwards

-urban

-urchin

-urchin's

-urchins

-urge

-urged

-urgent

-urgently

-urger

-urges

-urging

-urgings

-urinate

-urinated

-urinates

-urinating

-urination

-urine

-urn

-urn's

-urning

-urns

-us

-usability

-usable

-usably

-usage

-usages

-use

-used

-useful

-usefully

-usefulness

-useless

-uselessly

-uselessness

-user

-user's

-users

-uses

-usher

-ushered

-ushering

-ushers

-using

-usual

-usually

-usualness

-usurp

-usurped

-usurper

-utensil

-utensil's

-utensils

-utilities

-utility

-utility's

-utmost

-utopian

-utopian's

-utopians

-utter

-utterance

-utterance's

-utterances

-uttered

-utterer

-uttering

-utterly

-uttermost

-utters

-uucp

-uucp's

-vacancies

-vacancy

-vacancy's

-vacant

-vacantly

-vacantness

-vacate

-vacated

-vacates

-vacating

-vacation

-vacationed

-vacationer

-vacationers

-vacationing

-vacations

-vacillate

-vacillated

-vacillates

-vacillating

-vacillatingly

-vacillation

-vacillations

-vacillator

-vacillator's

-vacillators

-vacuo

-vacuous

-vacuously

-vacuousness

-vacuum

-vacuumed

-vacuuming

-vacuums

-vagabond

-vagabond's

-vagabonds

-vagaries

-vagary

-vagary's

-vagina

-vagina's

-vaginas

-vagrant

-vagrantly

-vagrants

-vague

-vaguely

-vagueness

-vaguer

-vaguest

-vainly

-vale

-vale's

-valedictorian

-valedictorian's

-valence

-valence's

-valences

-valentine

-valentine's

-valentines

-vales

-valet

-valet's

-valets

-valiant

-valiantly

-valiantness

-valid

-validate

-validated

-validates

-validating

-validation

-validations

-validity

-validly

-validness

-valley

-valley's

-valleys

-valuable

-valuableness

-valuables

-valuably

-valuation

-valuation's

-valuations

-valuator

-valuators

-value

-valued

-valuer

-valuers

-values

-valuing

-valve

-valve's

-valved

-valves

-valving

-van

-van's

-vane

-vane's

-vaned

-vanes

-vanilla

-vanish

-vanished

-vanisher

-vanishes

-vanishing

-vanishingly

-vanities

-vanity

-vanquish

-vanquished

-vanquisher

-vanquishes

-vanquishing

-vans

-vantage

-vantages

-variability

-variable

-variable's

-variableness

-variables

-variably

-variance

-variance's

-variances

-variant

-variantly

-variants

-variation

-variation's

-variations

-varied

-variedly

-varier

-varies

-varieties

-variety

-variety's

-various

-variously

-variousness

-varnish

-varnish's

-varnished

-varnisher

-varnishers

-varnishes

-varnishing

-vary

-varying

-varyingly

-varyings

-vase

-vase's

-vases

-vassal

-vassals

-vast

-vaster

-vastest

-vastly

-vastness

-vat

-vat's

-vats

-vaudeville

-vault

-vaulted

-vaulter

-vaulting

-vaults

-vaunt

-vaunted

-vaunter

-veal

-vealer

-vealing

-vector

-vector's

-vectored

-vectoring

-vectors

-veer

-veered

-veering

-veeringly

-veers

-vegetable

-vegetable's

-vegetables

-vegetarian

-vegetarian's

-vegetarians

-vegetate

-vegetated

-vegetates

-vegetating

-vegetation

-vegetative

-vegetatively

-vegetativeness

-vehemence

-vehement

-vehemently

-vehicle

-vehicle's

-vehicles

-vehicular

-veil

-veiled

-veiling

-veils

-vein

-veined

-veiner

-veining

-veins

-velocities

-velocity

-velocity's

-velvet

-vend

-vender

-vending

-vendor

-vendor's

-vendors

-venerable

-venerableness

-vengeance

-venison

-venom

-venomous

-venomously

-venomousness

-vent

-vented

-venter

-ventilate

-ventilated

-ventilates

-ventilating

-ventilation

-ventilations

-ventilative

-venting

-ventral

-ventrally

-ventricle

-ventricle's

-ventricles

-vents

-venture

-ventured

-venturer

-venturers

-ventures

-venturing

-venturings

-veracity

-veranda

-veranda's

-verandaed

-verandas

-verb

-verb's

-verbal

-verbally

-verbose

-verbosely

-verboseness

-verbs

-verdict

-verdicts

-verdure

-verdured

-verge

-verger

-verges

-verier

-veriest

-verifiability

-verifiable

-verifiableness

-verification

-verifications

-verified

-verifier

-verifier's

-verifiers

-verifies

-verify

-verifying

-verily

-veritable

-veritableness

-vermin

-versa

-versatile

-versatilely

-versatileness

-versatility

-verse

-versed

-verser

-verses

-versing

-version

-versions

-versus

-vertebrate

-vertebrate's

-vertebrates

-vertebration

-vertex

-vertexes

-vertical

-vertically

-verticalness

-verticals

-vertices

-very

-vessel

-vessel's

-vessels

-vest

-vested

-vestige

-vestige's

-vestiges

-vestigial

-vestigially

-vesting

-vests

-veteran

-veteran's

-veterans

-veterinarian

-veterinarian's

-veterinarians

-veterinary

-veto

-vetoed

-vetoer

-vetoes

-vetoing

-vetting

-vex

-vexation

-vexed

-vexedly

-vexes

-vexing

-vi

-vi's

-via

-viability

-viable

-viably

-vial

-vial's

-vials

-vibrate

-vibrated

-vibrates

-vibrating

-vibration

-vibrations

-vice

-vice's

-viceroy

-vices

-vicing

-vicinities

-vicinity

-vicious

-viciously

-viciousness

-vicissitude

-vicissitude's

-vicissitudes

-victim

-victim's

-victims

-victor

-victor's

-victories

-victorious

-victoriously

-victoriousness

-victors

-victory

-victory's

-victual

-victuals

-video

-videos

-videotape

-videotape's

-videotaped

-videotapes

-videotaping

-vie

-vied

-vier

-vies

-view

-viewable

-viewed

-viewer

-viewers

-viewing

-viewings

-viewpoint

-viewpoint's

-viewpoints

-views

-vigilance

-vigilant

-vigilante

-vigilante's

-vigilantes

-vigilantly

-vignette

-vignette's

-vignetted

-vignetter

-vignettes

-vignetting

-vigorous

-vigorously

-vigorousness

-vii

-viii

-vile

-vilely

-vileness

-viler

-vilest

-vilification

-vilifications

-vilified

-vilifier

-vilifies

-vilify

-vilifying

-villa

-villa's

-village

-village's

-villager

-villagers

-villages

-villain

-villain's

-villainous

-villainously

-villainousness

-villains

-villainy

-villas

-vindictive

-vindictively

-vindictiveness

-vine

-vine's

-vinegar

-vinegars

-vines

-vineyard

-vineyard's

-vineyards

-vining

-vintage

-vintager

-vintages

-violate

-violated

-violates

-violating

-violation

-violations

-violative

-violator

-violator's

-violators

-violence

-violent

-violently

-violet

-violet's

-violets

-violin

-violin's

-violinist

-violinist's

-violinists

-violins

-viper

-viper's

-vipers

-viral

-virally

-virgin

-virgin's

-virginity

-virgins

-virtual

-virtually

-virtue

-virtue's

-virtues

-virtuoso

-virtuoso's

-virtuosos

-virtuous

-virtuously

-virtuousness

-virus

-virus's

-viruses

-vis

-visa

-visaed

-visage

-visaged

-visaing

-visas

-viscosities

-viscosity

-viscount

-viscount's

-viscounts

-viscous

-viscously

-viscousness

-visibilities

-visibility

-visible

-visibleness

-visibly

-vision

-vision's

-visionariness

-visionary

-visioned

-visioning

-visions

-visit

-visitation

-visitation's

-visitations

-visited

-visiting

-visitor

-visitor's

-visitors

-visits

-visor

-visor's

-visored

-visors

-vista

-vista's

-vistaed

-vistas

-visual

-visually

-visuals

-vita

-vitae

-vital

-vitality

-vitally

-vitals

-vitamin

-vitamin's

-vitamins

-vivid

-vividly

-vividness

-vizier

-vocabularies

-vocabulary

-vocal

-vocally

-vocals

-vocation

-vocation's

-vocational

-vocationally

-vocations

-vogue

-voice

-voiced

-voicer

-voicers

-voices

-voicing

-void

-voided

-voider

-voiding

-voidness

-voids

-volatile

-volatileness

-volatiles

-volatilities

-volatility

-volcanic

-volcano

-volcano's

-volcanos

-volley

-volleyball

-volleyball's

-volleyballs

-volleyed

-volleyer

-volleying

-volleys

-volt

-voltage

-voltages

-volts

-volume

-volume's

-volumed

-volumes

-voluming

-voluntarily

-voluntariness

-voluntary

-volunteer

-volunteered

-volunteering

-volunteers

-vomit

-vomited

-vomiter

-vomiting

-vomits

-vortex

-vortexes

-vote

-voted

-voter

-voters

-votes

-voting

-votive

-votively

-votiveness

-vouch

-voucher

-vouchers

-vouches

-vouching

-vow

-vowed

-vowel

-vowel's

-vowels

-vower

-vowing

-vows

-voyage

-voyaged

-voyager

-voyagers

-voyages

-voyaging

-voyagings

-vulgar

-vulgarly

-vulnerabilities

-vulnerability

-vulnerable

-vulnerableness

-vulture

-vulture's

-vultures

-wade

-waded

-wader

-waders

-wades

-wading

-wafer

-wafer's

-wafered

-wafering

-wafers

-waffle

-waffle's

-waffled

-waffles

-waffling

-waft

-wafter

-wag

-wage

-waged

-wager

-wagered

-wagerer

-wagering

-wagers

-wages

-waging

-wagon

-wagon's

-wagons

-wags

-wail

-wailed

-wailer

-wailing

-wails

-waist

-waist's

-waistcoat

-waistcoat's

-waistcoated

-waistcoats

-waisted

-waister

-waists

-wait

-waited

-waiter

-waiter's

-waiters

-waiting

-waitress

-waitress's

-waitresses

-waits

-waive

-waived

-waiver

-waiverable

-waivers

-waives

-waiving

-wake

-waked

-waken

-wakened

-wakener

-wakening

-waker

-wakes

-waking

-walk

-walked

-walker

-walkers

-walking

-walks

-walkway

-walkway's

-walkways

-wall

-wall's

-walled

-waller

-wallet

-wallet's

-wallets

-walling

-wallow

-wallowed

-wallower

-wallowing

-wallows

-walls

-walnut

-walnut's

-walnuts

-walrus

-walrus's

-walruses

-waltz

-waltzed

-waltzer

-waltzes

-waltzing

-wan

-wand

-wander

-wandered

-wanderer

-wanderers

-wandering

-wanderings

-wanders

-wane

-waned

-wanes

-waning

-wanly

-wanness

-want

-wanted

-wanter

-wanting

-wanton

-wantoner

-wantonly

-wantonness

-wants

-war

-war's

-warble

-warbled

-warbler

-warbles

-warbling

-ward

-warded

-warden

-wardens

-warder

-warding

-wardrobe

-wardrobe's

-wardrobes

-wards

-ware

-warehouse

-warehoused

-warehouser

-warehouses

-warehousing

-wares

-warfare

-warier

-wariest

-warily

-wariness

-waring

-warlike

-warm

-warmed

-warmer

-warmers

-warmest

-warming

-warmly

-warmness

-warms

-warmth

-warn

-warned

-warner

-warning

-warningly

-warnings

-warns

-warp

-warp's

-warped

-warper

-warping

-warps

-warrant

-warranted

-warranter

-warranties

-warranting

-warrants

-warranty

-warranty's

-warred

-warring

-warrior

-warrior's

-warriors

-wars

-warship

-warship's

-warships

-wart

-wart's

-warted

-warts

-wary

-was

-wash

-washed

-washer

-washers

-washes

-washing

-washings

-wasn't

-wasp

-wasp's

-wasps

-waste

-wasted

-wasteful

-wastefully

-wastefulness

-waster

-wastes

-wasting

-wastingly

-watch

-watched

-watcher

-watchers

-watches

-watchful

-watchfully

-watchfulness

-watching

-watchings

-watchman

-watchword

-watchword's

-watchwords

-water

-watered

-waterer

-waterfall

-waterfall's

-waterfalls

-wateriness

-watering

-waterings

-waterproof

-waterproofed

-waterproofer

-waterproofing

-waterproofness

-waterproofs

-waters

-waterway

-waterway's

-waterways

-watery

-wave

-waved

-waveform

-waveform's

-waveforms

-wavefront

-wavefront's

-wavefronts

-wavelength

-wavelengths

-waver

-wavered

-waverer

-wavering

-waveringly

-wavers

-waves

-waving

-wax

-waxed

-waxen

-waxer

-waxers

-waxes

-waxier

-waxiness

-waxing

-waxy

-way

-way's

-ways

-wayside

-waysides

-wayward

-waywardly

-waywardness

-we

-we'd

-we'll

-we're

-we've

-weak

-weaken

-weakened

-weakener

-weakening

-weakens

-weaker

-weakest

-weakliness

-weakly

-weakness

-weakness's

-weaknesses

-wealth

-wealthier

-wealthiest

-wealthiness

-wealths

-wealthy

-wean

-weaned

-weaner

-weaning

-weapon

-weapon's

-weaponed

-weapons

-wear

-wearable

-wearer

-wearied

-wearier

-wearies

-weariest

-wearily

-weariness

-wearing

-wearingly

-wearisome

-wearisomely

-wearisomeness

-wears

-weary

-wearying

-weasel

-weasel's

-weasels

-weather

-weathercock

-weathercock's

-weathercocks

-weathered

-weatherer

-weathering

-weatherly

-weathers

-weave

-weaver

-weavers

-weaves

-weaving

-web

-web's

-weber

-webs

-wed

-wedded

-wedding

-wedding's

-weddings

-wedge

-wedged

-wedges

-wedging

-weds

-wee

-weed

-weeded

-weeder

-weeding

-weeds

-week

-week's

-weekday

-weekday's

-weekdays

-weekend

-weekend's

-weekender

-weekends

-weeklies

-weekly

-weeks

-weep

-weeped

-weeper

-weepers

-weeping

-weeps

-weigh

-weighed

-weigher

-weighing

-weighings

-weighs

-weight

-weighted

-weighter

-weighting

-weightings

-weights

-weird

-weirdly

-weirdness

-welcome

-welcomed

-welcomely

-welcomeness

-welcomer

-welcomes

-welcoming

-weld

-welded

-welder

-welders

-welding

-weldings

-welds

-welfare

-well

-welled

-welling

-wellness

-wells

-wench

-wench's

-wencher

-wenches

-went

-wept

-were

-weren't

-west

-wester

-westered

-westering

-westerlies

-westerly

-western

-westerner

-westerners

-westing

-westward

-westwards

-wet

-wetly

-wetness

-wets

-wetted

-wetter

-wettest

-wetting

-whack

-whacked

-whacker

-whacking

-whacks

-whale

-whaler

-whales

-whaling

-whammies

-whammy

-wharf

-wharfs

-wharves

-what

-what's

-whatchamacallit

-whatchamacallit's

-whatchamacallits

-whatever

-whatsoever

-wheat

-wheaten

-wheel

-wheeled

-wheeler

-wheelers

-wheeling

-wheelings

-wheels

-whelp

-when

-whence

-whenever

-whens

-where

-where's

-whereabouts

-whereas

-whereby

-wherein

-whereupon

-wherever

-whether

-whew

-whey

-which

-whichever

-while

-whiled

-whiles

-whiling

-whim

-whim's

-whimper

-whimpered

-whimpering

-whimpers

-whims

-whimsical

-whimsically

-whimsicalness

-whimsied

-whimsies

-whimsy

-whimsy's

-whine

-whined

-whiner

-whines

-whining

-whiningly

-whip

-whip's

-whipped

-whipper

-whipper's

-whippers

-whipping

-whipping's

-whippings

-whips

-whirl

-whirled

-whirler

-whirling

-whirlpool

-whirlpool's

-whirlpools

-whirls

-whirlwind

-whirr

-whirring

-whisk

-whisked

-whisker

-whiskered

-whiskers

-whiskey

-whiskey's

-whiskeys

-whisking

-whisks

-whisper

-whispered

-whisperer

-whispering

-whisperingly

-whisperings

-whispers

-whistle

-whistled

-whistler

-whistlers

-whistles

-whistling

-whit

-white

-whited

-whitely

-whiten

-whitened

-whitener

-whiteners

-whiteness

-whitening

-whitens

-whiter

-whites

-whitespace

-whitest

-whitewash

-whitewashed

-whitewasher

-whitewashing

-whiting

-whittle

-whittled

-whittler

-whittles

-whittling

-whittlings

-whiz

-whizzed

-whizzes

-whizzing

-who

-who's

-whoever

-whole

-wholehearted

-wholeheartedly

-wholeness

-wholes

-wholesale

-wholesaled

-wholesaler

-wholesalers

-wholesales

-wholesaling

-wholesome

-wholesomely

-wholesomeness

-wholly

-whom

-whomever

-whoop

-whooped

-whooper

-whooping

-whoops

-whore

-whore's

-whores

-whoring

-whorl

-whorl's

-whorled

-whorls

-whose

-why

-wick

-wicked

-wickedly

-wickedness

-wicker

-wicking

-wicks

-wide

-widely

-widen

-widened

-widener

-wideness

-widening

-widens

-wider

-widespread

-widest

-widget

-widget's

-widgets

-widow

-widowed

-widower

-widowers

-widows

-width

-widths

-wield

-wielded

-wielder

-wielding

-wields

-wife

-wife's

-wifeliness

-wifely

-wig

-wig's

-wigs

-wigwam

-wild

-wildcat

-wildcat's

-wildcats

-wilder

-wilderness

-wildest

-wilding

-wildly

-wildness

-wile

-wiled

-wiles

-wilier

-wiliness

-wiling

-will

-willed

-willer

-willful

-willfully

-willfulness

-willing

-willingly

-willingness

-willings

-willow

-willow's

-willower

-willows

-wills

-wilt

-wilted

-wilting

-wilts

-wily

-win

-wince

-winced

-winces

-wincing

-wind

-winded

-winder

-winders

-windier

-windiness

-winding

-windmill

-windmill's

-windmilling

-windmills

-window

-window's

-windowed

-windowing

-windows

-winds

-windy

-wine

-wined

-winer

-winers

-wines

-wing

-winged

-winger

-wingers

-winging

-wings

-wining

-wink

-winked

-winker

-winking

-winks

-winner

-winner's

-winners

-winning

-winningly

-winnings

-wins

-winter

-wintered

-winterer

-wintering

-winterly

-winters

-wintrier

-wintriness

-wintry

-wipe

-wiped

-wiper

-wipers

-wipes

-wiping

-wire

-wired

-wireless

-wirer

-wires

-wiretap

-wiretap's

-wiretaps

-wirier

-wiriness

-wiring

-wirings

-wiry

-wisdom

-wisdoms

-wise

-wised

-wisely

-wiseness

-wiser

-wises

-wisest

-wish

-wished

-wisher

-wishers

-wishes

-wishful

-wishfully

-wishfulness

-wishing

-wising

-wisp

-wisp's

-wisps

-wistful

-wistfully

-wistfulness

-wit

-wit's

-witch

-witchcraft

-witches

-witching

-with

-withal

-withdraw

-withdrawal

-withdrawal's

-withdrawals

-withdrawer

-withdrawing

-withdrawn

-withdrawnness

-withdraws

-withdrew

-wither

-withered

-withering

-witheringly

-withers

-withheld

-withhold

-withholder

-withholders

-withholding

-withholdings

-withholds

-within

-without

-withstand

-withstanding

-withstands

-withstood

-witness

-witnessed

-witnesses

-witnessing

-wits

-wittier

-wittiest

-wittiness

-witty

-wives

-wizard

-wizard's

-wizardly

-wizards

-woe

-woeful

-woefully

-woeness

-woke

-wolf

-wolfer

-wolves

-woman

-woman's

-womanhood

-womanliness

-womanly

-womb

-womb's

-wombed

-wombs

-women

-women's

-womens

-won't

-wonder

-wondered

-wonderer

-wonderful

-wonderfully

-wonderfulness

-wondering

-wonderingly

-wonderland

-wonderland's

-wonderment

-wonders

-wondrous

-wondrously

-wondrousness

-wont

-wonted

-wontedly

-wontedness

-wonting

-woo

-wood

-wood's

-woodchuck

-woodchuck's

-woodchucks

-woodcock

-woodcock's

-woodcocks

-wooded

-wooden

-woodenly

-woodenness

-woodier

-woodiness

-wooding

-woodland

-woodlander

-woodman

-woodpecker

-woodpecker's

-woodpeckers

-woods

-woodser

-woodwork

-woodworker

-woodworking

-woody

-wooed

-wooer

-woof

-woofed

-woofer

-woofers

-woofing

-woofs

-wooing

-wool

-wooled

-woolen

-woolens

-woollier

-woollies

-woolliness

-woolly

-wools

-wooly

-woos

-word

-word's

-worded

-wordier

-wordily

-wordiness

-wording

-wordings

-words

-wordy

-wore

-work

-workable

-workableness

-workably

-workaround

-workaround's

-workarounds

-workbench

-workbench's

-workbenches

-workbook

-workbook's

-workbooks

-worked

-worker

-worker's

-workers

-workhorse

-workhorse's

-workhorses

-working

-workingman

-workings

-workload

-workloads

-workman

-workmanly

-workmanship

-workmen

-workmen's

-works

-workshop

-workshop's

-workshops

-workstation

-workstation's

-workstations

-world

-world's

-worlders

-worldliness

-worldly

-worlds

-worldwide

-worm

-wormed

-wormer

-worming

-worms

-worn

-worried

-worriedly

-worrier

-worriers

-worries

-worrisome

-worrisomely

-worrisomeness

-worry

-worrying

-worryingly

-worse

-worser

-worship

-worshipful

-worshipfully

-worshipfulness

-worships

-worst

-worsted

-worth

-worthier

-worthies

-worthiest

-worthiness

-worthing

-worthless

-worthlessly

-worthlessness

-worths

-worthwhile

-worthwhileness

-worthy

-would

-wouldest

-wouldn't

-wound

-wounded

-wounding

-wounds

-wove

-woven

-wrangle

-wrangled

-wrangler

-wranglers

-wrangles

-wrangling

-wrap

-wrap's

-wrapped

-wrapper

-wrapper's

-wrappers

-wrapping

-wrappings

-wraps

-wrath

-wreak

-wreaks

-wreath

-wreathed

-wreathes

-wreathing

-wreck

-wreckage

-wrecked

-wrecker

-wreckers

-wrecking

-wrecks

-wren

-wren's

-wrench

-wrenched

-wrenches

-wrenching

-wrenchingly

-wrens

-wrest

-wrested

-wrester

-wresting

-wrestle

-wrestled

-wrestler

-wrestles

-wrestling

-wrestlings

-wrests

-wretch

-wretched

-wretchedly

-wretchedness

-wretches

-wriggle

-wriggled

-wriggler

-wriggles

-wriggling

-wring

-wringer

-wringing

-wrings

-wrinkle

-wrinkled

-wrinkles

-wrinkling

-wrist

-wrist's

-wrists

-wristwatch

-wristwatch's

-wristwatches

-writ

-writ's

-writable

-write

-writer

-writer's

-writers

-writes

-writhe

-writhed

-writhes

-writhing

-writing

-writings

-writs

-written

-wrong

-wronged

-wronger

-wrongest

-wronging

-wrongly

-wrongness

-wrongs

-wrote

-wrought

-wrung

-xi

-xii

-xiii

-xiv

-xix

-xv

-xvi

-xvii

-xviii

-xx

-yacc

-yacc's

-yank

-yanked

-yanking

-yanks

-yard

-yard's

-yarded

-yarding

-yards

-yardstick

-yardstick's

-yardsticks

-yarn

-yarn's

-yarned

-yarning

-yarns

-yawn

-yawner

-yawning

-yawningly

-yawns

-yea

-yeah

-year

-year's

-yearly

-yearn

-yearned

-yearner

-yearning

-yearningly

-yearnings

-yearns

-years

-yeas

-yeast

-yeast's

-yeasts

-yecch

-yell

-yelled

-yeller

-yelling

-yellow

-yellowed

-yellower

-yellowest

-yellowing

-yellowish

-yellowness

-yellows

-yells

-yelp

-yelped

-yelper

-yelping

-yelps

-yeoman

-yeomanly

-yeomen

-yes

-yeses

-yesterday

-yesterday's

-yesterdays

-yet

-yield

-yielded

-yielder

-yielding

-yields

-yoke

-yoke's

-yokes

-yoking

-yon

-yonder

-you

-you'd

-you'll

-you're

-you've

-young

-younger

-youngest

-youngly

-youngness

-youngster

-youngster's

-youngsters

-your

-your's

-yours

-yourself

-yourselves

-youth

-youth's

-youthes

-youthful

-youthfully

-youthfulness

-yuck

-yummier

-yummy

-yuppie

-yuppie's

-yuppies

-zap

-zapped

-zapping

-zaps

-zeal

-zealous

-zealously

-zealousness

-zebra

-zebra's

-zebras

-zenith

-zero

-zeroed

-zeroes

-zeroing

-zeros

-zeroth

-zest

-zigzag

-zinc

-zinc's

-zodiac

-zodiacs

-zonal

-zonally

-zone

-zoned

-zonely

-zoner

-zones

-zoning

-zoo

-zoo's

-zoological

-zoologically

-zoom

-zoomed

-zooming

-zooms

-zoos

diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.1 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.1
deleted file mode 100644
index 658faad..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.1
+++ /dev/null
@@ -1,20864 +0,0 @@
-AI

-ALU

-AMA

-ANSI's

-ARCO

-ARPA

-Aaron

-Abe

-Abe's

-Abigail

-Abigail's

-Abilene

-Abilene's

-Abner

-Abner's

-Abraham

-Abrams

-Abramson

-Acapulco

-Ackerman

-Acta

-Adam

-Adams

-Adamson

-Addison

-Addressograph

-Adirondack

-Adirondacks

-Adonis

-Adriatic

-Aegean

-Aeneid

-Afghani

-Afghani's

-Afghanis

-Afrikaans

-Agatha

-Aggie

-Aggies

-Agnes

-Aires

-Ajax

-Akron

-Al

-Al's

-Alabamans

-Alameda

-Alamo

-Alamos

-Alan

-Alan's

-Albany

-Albert

-Alberta

-Alberto

-Albuquerque

-Alcoa

-Alec

-Aleck

-Aler

-Aleut

-Alex

-Alexander

-Alexanders

-Alexandra

-Alexandre

-Alexandria

-Alfa

-Algiers

-Alhambra

-Alice

-Alicia

-Alistair

-Allan

-Alleghenies

-Allegheny

-Allen

-Allendale

-Allentown

-Allison

-Allstate

-Alsatian

-Alsatians

-Alvarez

-Alvin

-Amadeus

-Amarillo

-Amarillo's

-Americanism

-Amherst

-Amherst's

-Amoco

-Amoco's

-Amos

-Ampex

-Ampex's

-Amy

-Amy's

-Anaheim

-Anaheim's

-Andean

-Andean's

-Andersen

-Andersen's

-Anderson

-Anderson's

-Andes

-Andover

-Andover's

-Andre

-Andre's

-Andrew

-Andrew's

-Andromeda

-Andy

-Andy's

-Angela

-Angeles

-Angelina

-Angeline

-Angelo

-Angie

-Anglia

-Anglo

-Angus

-Anheuser

-Anita

-Ankara

-Ann

-Anna

-Annapolis

-Anne

-Anne's

-Annie

-Anson

-Antares

-Anthony

-Antietam

-Antioch

-Antoine

-Antoinette

-Antony

-Apollinaire

-Appaloosas

-Appian

-Appleton

-Appomattox

-Aquinas

-Araby

-Arcadia

-Archibald

-Archimedes

-Arcturus

-Argonne

-Argus

-Ariadne

-Aristotelean

-Arkansan

-Arlene

-Arlington

-Armonk

-Arnold

-Arnold's

-Arpanet

-Arthur

-Aruba

-Asheville

-Ashland

-Ashley

-Assad

-Assyria

-Astaire

-Astaires

-Astor

-Astoria

-Atari

-Atkins

-Atkinson

-Atlanta

-Atlantis

-Atreus

-Attica

-Augean

-Augustan

-Augustine

-Augustus

-Aurelius

-Auschwitz

-Australis

-Aventine

-Aventino

-Avis

-Aviv

-Avogadro

-Avon

-Aztec

-Aztecan

-BCD

-BS

-BTW

-Babcock

-Babylon

-Babylonian

-Babylonians

-Bacchus

-Baghdad

-Bahama

-Bahamas

-Bailey

-Baileys

-Bakelite

-Bakersfield

-Baldwin

-Bali

-Balinese

-Ballard

-Ballards

-Baltimore

-Balzac

-Bamberger

-Bambi

-Bancroft

-Bangor

-Baptiste

-Barbara

-Barcelona

-Barclay

-Barnabas

-Barnard

-Barney

-Barron

-Barry

-Barry's

-Barrymore

-Barrymores

-Barstow

-Barth

-Bartholomew

-Bartlett

-Bartok

-Bascom

-Basie

-Bassett

-Batavia

-Batista

-Baudelaire

-Bauer

-Bauhaus

-Bavaria

-Bavarian

-Bayesian

-Baylor

-Bayonne

-Beatrice

-Beauchamps

-Beaujolais

-Beaumont

-Beauregard

-Beaverton

-Bechtel

-Becky

-Bedford

-Beelzebub

-Beelzebub's

-Beirut

-Belfast

-Belgrade

-Bella

-Bellatrix

-Belleville

-Bellwood

-Belmont

-Beloit

-Belton

-Beltsville

-Ben

-Ben's

-Bendix

-Benjamin

-Bennett

-Bennington

-Benny

-Benson

-Bentham

-Bentley

-Bentleys

-Benz

-Beowulf

-Bergson

-Beringer

-Berkowitz

-Berkshire

-Berkshires

-Berlioz

-Berlitz

-Bern

-Bernadine

-Bernard

-Bernardine

-Bernice

-Bernie

-Bernoulli

-Bernstein

-Berra

-Bert

-Bertha

-Bertrand

-Bess

-Bessemer

-Bessie

-Betelgeuse

-Bethesda

-Bethlehem

-Betsy

-Betties

-Betty

-Bhutan

-Biddle

-Bienville

-Bierce

-Bigelow

-Billie

-Bimini

-Bingham

-Binghamton

-Biscayne

-Bismarck

-Blackburn

-Blackfeet

-Blackman

-Blackmer

-Blackstone

-Blackwell

-Blackwells

-Blair

-Blake

-Blakey

-Blanche

-Blanton

-Blatz

-Bloomfield

-Bloomington

-Blvd

-Bobbie

-Bobbsey

-Bobrow

-Bodenheim

-Boeing

-Boer

-Bogart

-Bogartian

-Bogota

-Boheme

-Bohemia

-Bohemian

-Bohr

-Boise

-Bolshevist

-Bolshevistic

-Bolshoi

-Bolton

-Boltzmann

-Bombay

-Bombay's

-Bonaparte

-Bonaventure

-Bonham

-Boniface

-Bonn

-Bonneville

-Bonnie

-Bontempo

-Boone

-Bootle

-Bordeaux

-Borden

-Borealis

-Boreas

-Borg

-Borroughs

-Bose

-Bostitch

-Boswell

-Bouvier

-Bowes

-Boyce

-Bradbury

-Bradford

-Bradley

-Bradshaw

-Brady

-Brahms

-Brainard

-Brainards

-Branchville

-Brandeis

-Brandel

-Brandenburg

-Brandon

-Braniff

-Brannon

-Brasilia

-Braun

-Brenda

-Brian

-Bridewell

-Bridgeport

-Bridgetown

-Bridgewater

-Brien

-Brigadoon

-Brigham

-Brinkley

-Britannic

-Britannica

-Brittany

-Britten

-Britten's

-Broadway

-Brock

-Bronx

-Brookdale

-Brooke

-Brookfield

-Brookhaven

-Brooklyn

-Brookmont

-Browne

-Brownell

-Brownian

-Bruce

-Brunhilde

-Bruno

-Brussels

-Bruxelles

-Bryan

-Bryant

-Bryce

-Bryn

-Buchanan

-Bucharest

-Buchwald

-Bucky

-Budapest

-Budd

-Buddha

-Buddhism

-Buddhist

-Buddhists

-Budweiser

-Budweisers

-Bugatti

-Buick

-Bulba

-Bulgaria

-Bulgarian

-Bumbry

-Bundestag

-Bundy

-Bunsen

-Bunsen's

-Bunsens

-Bunyan

-Bunyan's

-Burbank

-Burbank's

-Burch

-Burgundian

-Burgundies

-Burgundy

-Burlingame

-Burma

-Burmese

-Burne

-Burnes

-Burnett

-Burnside

-Burnsides

-Burroughs

-Burt

-Burton

-Burundi

-Busch

-Bushnell

-Butterfield

-Byrne

-Byron

-Byron's

-Byronic

-Byronism

-Byzantine

-Byzantium

-CACM

-CDT

-CIA

-CPA

-CPR

-CRT

-CST

-Cadillac

-Cadillacs

-Caesar

-Cain

-Caine

-Cairo

-Cal

-CalComp

-Calcutta

-Calcutta's

-Calder

-Calgary

-Calif

-Caligula

-Callisto

-Caltech

-Calumet

-Calvinist

-Cambodia

-Camelot

-Camille

-Camino

-Campbellsport

-Canadian

-Canadians

-Canaveral

-Canberra

-Candide

-Candlewick

-Canis

-Canoga

-Canterbury

-Cantonese

-Canute

-Capet

-Capetown

-Capistrano

-Capitan

-Cappy

-Capricorn

-Capt

-Caracas

-Carbondale

-Carbones

-Caribbean

-Carl

-Carl's

-Carla

-Carleton

-Carletonian

-Carlos

-Carlsbad

-Carlson

-Carlton

-Carlyle

-Carmichael

-Carnegie

-Caroline

-Caroline's

-Carolinian

-Carolinians

-Carolyn

-Carrie

-Carson

-Carthage

-Carty

-Caruso

-Casey

-Cassandra

-Cassiopeia

-Cassite

-Cassius

-Castro

-Catalina

-Catawba

-Catherine

-Cathy

-Catskill

-Catskills

-Caucasian

-Caucasians

-Caucasus

-Cauchy

-Cavendish

-Cecil

-Cecilia

-Celanese

-Celsius

-Celtic

-Cenozoic

-Centralia

-Cerberus

-Cervantes

-Cessna

-Cetus

-Ceylon

-Cezanne

-Cezannes

-Chablis

-Chad

-Chaffey

-Chalmers

-Champlain

-Chancellorsville

-Chandy

-Chandy's

-Chang

-Channing

-Chantilly

-Chaplin

-Chapman

-Charles

-Charleston

-Charley

-Charlie

-Charlotte

-Charlottesville

-Charybdis

-Chattahoochee

-Chattanooga

-Chaucer

-Chautauqua

-Chekhov

-Chen

-Cheng

-Cheriton

-Cheriton's

-Cherokee

-Cherokees

-Cheryl's

-Chesapeake

-Cheshire

-Chesterfield

-Chesterton

-Chevrolet

-Chevy

-Cheyenne

-Cheyennes

-Chicago

-Chicago's

-Chicagoan

-Chicagoans

-Chicana

-Chicana's

-Chicanas

-Chicano

-Chicano's

-Chicanos

-Chickasaws

-Chile

-Chiles

-Chimiques

-Chinaman

-Chinamen

-Ching

-Chinook

-Chippendale

-Chippewa

-Chisholm

-Choctaw

-Choctaws

-Chomsky

-Chomsky's

-Chopin

-Chris

-Christ

-Christendom

-Christenson

-Christianity

-Christie

-Christine

-Christlike

-Christopher

-Christopher's

-Christy

-Chrysler

-Churchill

-Churchillian

-Cicero

-Ciceronian

-Cincinnati

-Cinderella

-Cinerama

-Circe

-Citroen

-Claire

-Clara

-Clare

-Claremont

-Clarence

-Clark

-Clarke

-Clarridge

-Claude

-Claudia

-Claudio

-Claus

-Clausen

-Clearwater

-Clemens

-Clemente

-Clemson

-Cleveland

-Clifford

-Clint

-Clinton

-Clinton's

-Clio

-Clive

-Clyde

-Clytemnestra

-Coates

-Cochise

-Coffman

-Cohen

-Cohn

-Colby

-Coleridge

-Colgate

-Colombia

-Colombian

-Colombians

-Colosseum

-Columbia

-Columbian

-Columbus

-Comanche

-Commie

-Compuserve

-Compuserve's

-Concorde

-Concordia

-Conestoga

-Confucian

-Confucianism

-Confucius

-Congo

-Connecticut

-Connelly

-Connie

-Conrad

-Conrad's

-Conrail

-Conrail's

-Constantinople

-Coolidge

-Coors

-Copeland

-Copenhagen

-Copernicus

-Copperfield

-Corinthian

-Corinthians

-Cornell

-Cornell's

-Cornish

-Cornwall

-Cornwallis

-Corp

-Corsica

-Corsican

-Cortland

-Costello

-Covent

-Coventry

-Craig

-Cramer

-Crandall

-Cranford

-Cranston

-Crawford

-Cree

-Creighton

-Creole

-Creon

-Crestview

-Cretaceous

-Cretaceously

-Cretan

-Crete

-Crimea

-Crimean

-Croatian

-Crockett

-Croix

-Cromwell

-Cromwellian

-Crosby

-Crowley

-Crusoe

-Cuba

-Cuban

-Cubans

-Culver

-Culvers

-Cumberland

-Cunard

-Cunningham

-Cupid

-Cushman

-Cyanamid

-Cygnus

-Cynthia

-Cyprian

-Cypriot

-Cyprus

-Cyril

-Cyrus

-Czech

-Czechoslovakia

-DAG

-DB

-DECsystem

-DECtape

-DNA

-Dacron

-Dadaism

-Dadaist

-Dade

-Daedalus

-Daimler

-Dakar

-Dakota

-Dali

-Dallas

-Dalton

-Daly

-Damascus

-Danbury

-Dane

-Danes

-Daniel

-Daniels

-Danielson

-Danish

-Danny

-Danny's

-Dante

-Danube

-Danville

-Danzig

-Daphne

-Darlene

-Darlington

-Darrell

-Darrow

-Dartmouth

-Darwin

-Darwinian

-Darwinism

-Datamedia

-Datsun

-Dave

-Dave's

-David

-David's

-Davidson

-Davie

-Davies

-Davinich

-Davis

-Davy

-Dawson

-Dayton

-DeKalb

-Dearborn

-Debby

-Deborah

-Debra

-Debussy

-Dec

-Decca

-Deere

-Defoe

-Delhi

-Delhi's

-Delilah

-Dellwood

-Delphi

-Delphic

-Dempsey

-Deneen

-Dennis

-Denny

-Denver

-Dependant

-Dependants

-Dept

-Derbyshire

-Descartes

-Desmond

-Deutsch

-Devon

-Devonshire

-Dewey

-Dewitt

-Dexedrine

-DiMaggio

-Diana

-Diane

-Dianne

-Dick's

-Dickinson

-Dickson

-Diego

-Dietrich

-Dijon

-Dillon

-Dinah

-Diogenes

-Dion

-Dionysian

-Dionysus

-Dirac

-Disney

-Disneyland

-Disraeli

-Dixie

-Dixiecrats

-Dixieland

-Djakarta

-Dmitri

-Doberman

-Doc

-Dodington

-Dogtown

-Dolores

-Domesday

-Domingo

-Dominic

-Dominican

-Dominicans

-Donahue

-Donald

-Donald's

-Donaldson

-Donna

-Donnelly

-Donovan

-Doolittle

-Doppler

-Dora

-Dora's

-Dorado

-Dorchester

-Doris

-Dorothy

-Dostoevsky

-Doubleday

-Doug

-Dougherty

-Douglas

-Douglass

-Dow

-Downey

-Doyle

-Dr

-Dramamine

-Drexel

-Dreyfuss

-Drury

-Dryden

-DuPont

-DuPonts

-Duane

-Dublin

-Dubuque

-Duffy

-Dulles

-Duluth

-Dumas

-Dumont

-Dumpty

-Duncan

-Dunham

-Dunkirk

-Dunlap

-Dunne

-Dupont

-Duponts

-Durham

-Durkee

-Dusenberg

-Dusseldorf

-Dustin

-Dutch

-Dutchman

-Dutchmen

-Dvorak

-Dwight

-Dyke

-EBCDIC

-EEG

-EPA

-Earp

-Easthampton

-Eastland

-Eastman

-Eastwick

-Eastwood

-Econometrica

-Ecuador

-Eddie

-Edgar

-Edgerton

-Edgewater

-Edgewood

-Edinburgh

-Edison

-Edith

-Edmund

-Edna

-Eduard

-Edward

-Edwardian

-Edwards

-Edwin

-Edwina

-Egerton

-Egypt

-Egyptian

-Egyptians

-Eichmann

-Eileen

-Einstein

-Einsteinian

-Eisenhower

-Ekberg

-Ektachrome

-Elaine

-Elba

-Eleanor

-Electra

-Eli

-Elijah

-Eliot

-Elisabeth

-Elise

-Elise's

-Elizabeth

-Elizabethan

-Elizabethans

-Elkhart

-Ella

-Ellie

-Elliot

-Elliott

-Ellis

-Ellison

-Ellsworth

-Elmhurst

-Elmira

-Elmsford

-Eloise

-Elroy

-Elsie

-Elsinore

-Elysees

-Elysium

-Emanuel

-Emerson

-Emily

-Emma

-Emmanuel

-Emory

-Endicott

-Englewood

-Englishman

-Englishmen

-Enoch

-Enos

-Enrico

-Ensolite

-Eocene

-Ephesian

-Ephesians

-Ephraim

-Epicurus

-Episcopalian

-Epsom

-Epstein

-Erasmus

-Eratosthenes

-Eric

-Erich

-Erickson

-Ericsson

-Erie

-Erik

-Erik's

-Erikson

-Ernest

-Ernestine

-Ernie

-Ernst

-Eros

-Errol

-Ervin

-Erwin

-Eskimo

-Eskimos

-Esp

-Espagnol

-Essex

-Esther

-Ethan

-Ethel

-Ethiopia

-Ethiopians

-Etruscan

-Eucharist

-Euclid

-Euclidean

-Eugene

-Eugenia

-Euler

-Eulerian

-Eunice

-Euphrates

-Eurasia

-Eurasian

-Euripides

-Europa

-Eurydice

-Eva

-Evangeline

-Evans

-Evanston

-Evansville

-Evelyn

-Eveready

-Everett

-Everglades

-Ewen

-Exeter

-Exxon

-Ezekiel

-Ezra

-FAQ's

-FAQs

-FBI

-FCC

-FDA

-FTP

-Fagin

-Fahrenheit

-Fahrenheits

-Fairchild

-Fairfax

-Fairfield

-Fairmont

-Fairport

-Fairview

-Falk

-Falstaff

-Fannies

-Fanny

-Faraday

-Farber

-Fargo

-Farley

-Farmington

-Farrell

-Fatima

-Faulkner

-Faulknerian

-Fauntleroy

-Faust

-Faustian

-Faustus

-Fawkes

-Fayetteville

-Featherman

-Feb

-Feldman

-Felice

-Felicia

-Felix

-Fellini

-Fenwick

-Ferdinand

-Ferdinando

-Fermi

-Fernando

-Fess

-Fiberglas

-Fibonacci

-Fidel

-Figaro

-Filipino

-Filipinos

-Filippo

-Fillmore

-Finland

-Finn

-Finnegan

-Finnish

-Finns

-Fiorello

-Fiori

-Firestone

-Fischer

-Fishkill

-Fisk

-Fitch

-Fitchburg

-Fitzgerald

-Fitzpatrick

-Fitzroy

-Flanagan

-Flanders

-Fledermaus

-Fleischman

-Fleisher

-Fleming

-Flemings

-Flemish

-Flemished

-Flemishes

-Flemishing

-Florence

-Florentine

-Floridian

-Floridians

-Floyd

-Flynn

-Folsom

-Fontainebleau

-Fontana

-Foote

-Forbes

-Fordham

-Formica

-Formosa

-Formosan

-Foxhall

-Fran

-Fran's

-Francaise

-Francesca

-Francesco

-Francie

-Francis

-Franciscan

-Franciscans

-Francisco

-Franco

-Francois

-Frankford

-Frankfort

-Frankfurt

-Frankie

-Franny

-Franz

-Frau

-Frayne

-Frazier

-Fred

-Freddie

-Freddy

-Freddy's

-Frederic

-Frederick

-Fredericks

-Frederico

-Fredrick

-Fredrickson

-Freeport

-Freida

-Frenchman

-Frenchmen

-Fresnel

-Fresno

-Freud

-Freudian

-Frey

-Fri

-Frick

-Friedman

-Frigga

-Frigidaire

-Frisbee

-Frito

-Fritz

-Frostbelt

-Frostbelt's

-Fuchs

-Fuji

-Fulbright

-Fullerton

-GM

-GNP

-GSA

-Gabriel

-Gabrielle

-Gaelic

-Gail

-Gainesville

-Gaithersburg

-Galahad

-Galapagos

-Galatea

-Galbreath

-Galilee

-Galloway

-Gallup

-Galois

-Galveston

-Ganges

-Ganymede

-Garcia

-Gardner

-Garfield

-Garibaldi

-Garnett

-Garrett

-Garry

-Garvey

-Gary

-Gary's

-Gascony

-Gasset

-Gaston

-Gatlinburg

-Gatsby

-Gauguin

-Gaul

-Gauntley

-Gaussian

-Gavin

-Gaylor

-Gaylord

-Gaynor

-Geary

-Gehrig

-Geiger

-Gemini

-Geneva

-Geneva's

-Genevieve

-Genevieve's

-George

-George's

-Georges

-Georgetown

-Georgia

-Georgian

-Georgians

-Gerald

-Geraldine

-Gerard

-Gerber

-Gerhard

-Gerhardt

-Germania

-Germanic

-Germantown

-Gerome

-Gerry

-Gerry's

-Gershwin

-Gershwins

-Gertrude

-Getty

-Gettysburg

-Ghana

-Ghent

-Giacomo

-Gibbs

-Gibby

-Gibraltar

-Giddings

-Gideon

-Gifford

-Gilbertson

-Gilda

-Gilda's

-Giles

-Gilkson

-Gillespie

-Gillette

-Gilligan

-Gimbel

-Gioconda

-Giorgio

-Giovanni

-Gladstone

-Gladys

-Glasgow

-Gleason

-Glenda

-Glendale

-Glenn

-Gloria

-Gloucester

-Glynn

-Godot

-Goethe

-Gogh

-Golda

-Goldberg

-Goldman

-Goldstein

-Goldstein's

-Goldwater

-Goliath

-Gomez

-Gonzales

-Goodman

-Goodrich

-Goodwin

-Goodyear

-Gordian

-Gordon

-Gorham

-Gorky

-Gotham

-Gothicism

-Gracie

-Grady

-Grafton

-Granville

-Grayson

-Grecian

-Greece

-Greenberg

-Greenblatt

-Greenbriar

-Greenfeld

-Greenfield

-Greenland

-Greensboro

-Greensville

-Greentree

-Greenville

-Greenwich

-Gregg

-Gregory

-Grendel

-Grenier

-Grenoble

-Grenville

-Greta

-Gretchen

-Gretel

-Gretel's

-Griffith

-Grimm

-Gris

-Groot

-Grosset

-Grossman

-Grosvenor

-Groton

-Grumman

-Grusky

-Guadalupe

-Guam

-Guatemala

-Guatemalan

-Guggenheim

-Guhleman

-Guiana

-Gunderson

-Gunnar

-Gus

-Gutenberg

-Guthrie

-Guyana

-Gwen

-HP

-Hackett

-Hades

-Hafiz

-Hague

-Haifa

-Haiti

-Haitian

-Hal

-Halifax

-Hallinan

-Halloween

-Hamey

-Hamilton

-Hamiltonian

-Hamiltonians

-Hammett

-Hammond

-Hampshire

-Hampton

-Hancock

-Hannah

-Hannibal

-Hanoi

-Hanover

-Hanoverian

-Hans

-Hansel

-Hansen

-Hanson

-Hanukkah

-Hapgood

-Harcourt

-Hardin

-Harlem

-Harold

-Harriet

-Harris

-Harrisburg

-Harrison

-Harrisonburg

-Harry's

-Hartford

-Hartley

-Hartman

-Harvard

-Harvey

-Harveys

-Haskell

-Haskins

-Hatchure

-Hatfield

-Hattie

-Hauser

-Havana

-Hawaii

-Hawaiian

-Hawkins

-Hawley

-Hawthorne

-Haydn

-Hayes

-Haynes

-Hayward

-Haywood

-Hearst

-Heartwood

-Heathkit

-Heathman

-Hebraic

-Hebrew

-Hebrews

-Hecuba

-Hedda

-Hegel

-Hegelian

-Heidegger

-Heidelberg

-Heidi

-Heidi's

-Heinz

-Heinze

-Heisenberg

-Heiser

-Helen

-Helena

-Helene

-Heliopolis

-Hellenic

-Helmholtz

-Helmut

-Helsinki

-Hemingway

-Henderson

-Hendrick

-Hendricks

-Hendrickson

-Hendrix

-Hennessey

-Hennessey's

-Henrietta

-Hepburn

-Hera

-Heraclitus

-Herbert

-Herculean

-Hercules

-Hereford

-Herman

-Hermes

-Hermite

-Hermosa

-Hernandez

-Herodotus

-Herr

-Herrington

-Herschel

-Hersey

-Hershel

-Hershey

-Hesperus

-Hess

-Hessian

-Hessians

-Heublein

-Heywood

-Hiawatha

-Hibernia

-Hickey

-Hickeys

-Hickok

-Hieronymus

-Highfield

-Hilbert

-Hillary

-Hillcrest

-Hillel

-Hillsboro

-Hillsdale

-Hilton

-Himalayas

-Himmler

-Hindi

-Hindu

-Hindu's

-Hinduism

-Hindus

-Hinkle

-Hinsdale

-Hiram

-Hirey

-Hiroshima

-Hispanic

-Hispanic's

-Hispanics

-Hitachi

-Hitchcock

-Hitler

-Hobbes

-Hobbs

-Hobday

-Hoboken

-Hoffman

-Holbrook

-Hollerith

-Hollister

-Hollywood

-Hollywood's

-Holmes

-Holocene

-Holst

-Holstein

-Holyoke

-Holzman

-Homeric

-Hondo

-Honduras

-Honeywell

-Honolulu

-Hoosier

-Hoover

-Hoover's

-Hopi

-Hopkins

-Hopkinsian

-Horace

-Horatio

-Hornblower

-Horowitz

-Horton

-Houdini

-Houston

-Howard

-Howe

-Howell

-Hubble

-Hubble's

-Hubert

-Huck

-Hudson

-Huey

-Hugh

-Hughes

-Hugo

-Humboldt

-Hume

-Humphrey

-Humphreys

-Humpty

-Hungarian

-Hungary

-Huntsville

-Huron

-Hurst

-Hutchins

-Hutchinson

-Hutchison

-Huxley

-Hyannis

-ICC

-ISO

-ITT

-IUD

-IUDs

-Iberia

-Iberian

-Ibero

-Ibsen

-Icarus

-Iceland

-Iceland's

-Icelander

-Icelandic

-Idaho

-Igor

-Iliad

-Imbrium

-Inca

-Incas

-Indianapolis

-Indies

-Indira

-Indochina

-Indonesia

-Indonesian

-Indy

-Ingersoll

-Ingram

-Inverness

-Io

-Iowa

-Iraq

-Iraqi

-Irene

-Irish

-Irishman

-Irishmen

-Irma

-Iroquois

-Irvine

-Irving

-Irwin's

-Isaac

-Isaacs

-Isabel

-Islam

-Islamic

-Islandia

-Israelite

-Israelites

-Istanbul

-Italy

-Ithaca

-Ithacan

-Ivan

-Ivanhoe

-Izaak

-Izvestia

-Jackie

-Jackman

-Jackson

-Jacksonian

-Jacksons

-Jacksonville

-Jacky

-Jacob

-Jacobean

-Jacobian

-Jacobite

-Jacobs

-Jacobsen

-Jacoby

-Jacqueline

-Jacques

-Jakarta

-Jake

-Jakes

-Jamaica

-Jamaican

-Jameson

-Jamestown

-Jan

-Jane

-Jane's

-Janeiro

-Janesville

-Janet

-Janet's

-Janice

-Janis

-Jansen

-Janus

-Jason

-Jastrow

-Java

-Javanese

-Jaycee

-Jaycees

-Jeanette

-Jeanie

-Jeanne

-Jeannie

-Jeff

-Jeffersonian

-Jeffersonians

-Jeffrey

-Jeffreys

-Jehovah

-Jello

-Jenkins

-Jennie

-Jennifer

-Jennings

-Jeremiah

-Jeremy

-Jericho

-Jerome

-Jerry's

-Jerusalem

-Jesse

-Jesse's

-Jessica

-Jessie

-Jessy

-Jesuit

-Jesuits

-Jesus

-Jew

-Jewelled

-Jewish

-Jewishness

-Jews

-Jim

-Jim's

-Jimmie

-Jimmy's

-Jinny

-Joan

-Joanna

-Joanne

-Joanne's

-Joannes

-Joaquin

-Jobrel

-Jodi

-Jodi's

-Jody

-Joe

-Joel

-Joes

-Johann

-Johannes

-Johannesburg

-Johansen

-Johanson

-Johnny

-Johnny's

-Johnsen

-Johnson

-Johnstown

-Joliet

-Jon

-Jon's

-Jonas

-Jonathan

-Jones

-Joneses

-Joplin

-Jordan

-Jorge

-Jorgensen

-Jorgenson

-Jose

-Josef

-Joseph

-Josephine

-Josephson

-Josephus

-Joshua

-Josiah

-Jovanovich

-Jove

-Jovian

-Joyce

-Juan

-Juanita

-Jubal

-Judaism

-Judas

-Jude

-Judea

-Judith

-Judy

-Jules

-Julia

-Julian

-Juliet

-Julio

-Julius

-Juneau

-Jungian

-Juno

-Jupiter

-Justine

-Justinian

-Jutish

-KGB

-Kabuki

-Kabul

-Kaddish

-Kafka

-Kafkaesque

-Kalamazoo

-Kamikazes

-Kankakee

-Kansas

-Kant

-Karen

-Karl

-Karol

-Kate

-Katherine

-Kathleen

-Kathy

-Katie

-Katie's

-Katmandu

-Kay

-Keaton

-Keats

-Keegan

-Keenan

-Keith

-Keller

-Kelley

-Kellogg

-Kelly

-Kelly's

-Kelvin

-Kenilworth

-Kennecott

-Kennedy

-Kenneth

-Kenny

-Kenosha

-Kensington

-Kent

-Kentucky

-Kenya

-Kepler

-Kepler's

-Kermit

-Kettering

-Kevin

-Kewaskum

-Kewaunee

-Keynes

-Keynesian

-Khmer

-Khrushchev

-Khrushchevs

-Kickapoo

-Kiel

-Kiev

-Killebrew

-Kim

-Kingsbury

-Kingsley

-Kingston

-Kingstown

-Kingwood

-Kinnickinnic

-Kinsey

-Kipling

-Kirby

-Kirchoff

-Kirk

-Kirk's

-Kirkland

-Kirkpatrick

-Kirkwood

-Kiwanis

-Klan

-Klaus

-Knobeloch

-Knowles

-Knox

-Knoxville

-Knudsen

-Knudson

-Knutsen

-Knutson

-Koch

-Kodachrome

-Kodak

-Kodaks

-Kodiak

-Koenig

-Koenigsberg

-Kohler

-Kong

-Konrad

-Korea

-Korean

-Koreans

-Kraemer

-Krakatoa

-Krakow

-Kramer

-Krause

-Kremlin

-Kresge

-Kris

-Krishna

-Kristina

-Krueger

-Kruger

-Kurd

-Kurdish

-Kurt

-Kuwait

-Kyle

-Kyoto

-LIFO

-Labrador

-Lacey

-Lackawanna

-Lafayette

-Lagrange

-Laguna

-Lakehurst

-Lakewood

-Lancashire

-Lancaster

-Landis

-Landwehr

-Lange

-Langeland

-Langford

-Langley

-Lansing

-Laocoon

-Laos

-Laotian

-Laotians

-Laplace

-Laramie

-Laredo

-Larry

-Larry's

-Lars

-Larsen

-Larson

-Lathrop

-Latinate

-Lattimer

-Lauderdale

-Laundromat

-Laundromats

-Laura's

-Lauren

-Laurence

-Laurentian

-Lawford

-Lawrence

-Lawrenceville

-Lawson

-Lazarus

-Leary

-Leavenworth

-Lebanese

-Lebanon

-Lebesgue

-Lee's

-Lehigh

-Leigh

-Leighton

-Leila

-Lemke

-Lenin

-Leningrad

-Leninism

-Leninist

-Lenny

-Leo

-Leon

-Leona

-Leonard

-Leonardo

-Leone

-Leopold

-Leopoldville

-Leroy

-Leslie

-Levi

-Levine

-Levis

-Leviticus

-Lewellyn

-Lexington

-Leyden

-Liberace

-Liberia

-Libya

-Libyan

-Lichtenstein

-Lichter

-Lieberman

-Liechtenstein

-Lilliputian

-Lima

-Lincoln

-Linda

-Lindberg

-Lindy

-Linotype

-Linus

-Lionel

-Lipton

-Lisa

-Lisbon

-Liss

-Liston

-Lithuanian

-Littleton

-Litton

-Livermore

-Liverpool

-Livingston

-Lizzie

-Lizzy

-Lloyd

-Locke

-Lockhart

-Lockheed

-Lockian

-Lockwood

-Logan

-Lois

-Lola

-Lombard

-London

-Londonderry

-Londoner

-Longfellow

-Longstreet

-Lopez

-Lorelei

-Lorentzian

-Lorenz

-Lorenz's

-Lorraine

-Lothario

-Lottie

-Louis

-Louisa

-Louise

-Louisiana

-Louisianan

-Louisville

-Lovejoy

-Lovelace

-Loveland

-Lowell

-Loy

-Loyola

-Ltd

-Lubbock

-Lucas

-Lucerne

-Lucia

-Lucian

-Lucien

-Lucifer

-Lucille

-Lucius

-Lucretia

-Lucretius

-Lucy

-Ludmilla

-Ludwig

-Lufthansa

-Luftwaffe

-Luke

-Luke's

-Luna

-Luna's

-Luther

-Lutheran

-Luxembourg

-Lydia

-Lynchburg

-Lyndon

-Lynn

-Lyon

-MAG

-MBA

-MD

-MDT

-MIG

-MIGs

-MIMD

-MPH

-MST

-MTS

-MTV

-Mac

-MacArthur

-MacDonald

-MacGregor

-MacKenzie

-MacMillan

-Macarthur

-Macaulay

-Macbeth

-Macdonald

-Macedon

-Macedonia

-Macedonian

-Macgregor

-Mach

-Machiavelli

-Mackenzie

-Mackinac

-Macmillan

-Macon

-Madagascar

-Madame

-Madames

-Madeleine

-Madeleine's

-Madeline

-Madeline's

-Madison

-Madonna

-Madonnas

-Madrid

-Maelstrom

-Magdalene

-Maggie

-Magill

-Magruder

-Maguire

-Maguires

-Mahler

-Mahler's

-Maine

-Malamud

-Malay

-Malaysia

-Malaysian

-Malcolm

-Mallory

-Malone

-Malta

-Maltese

-Malthusian

-Managua

-Manchester

-Manfred

-Manitoba

-Manitowoc

-Mankowski

-Mansfield

-Manville

-Mao

-Maori

-Maplecrest

-Marcotte

-Marcus

-Marcy

-Mardi

-Mardis

-Marguerite

-Maria's

-Marian

-Marian's

-Marie

-Marie's

-Marietta

-Marilyn

-Marin

-Marino

-Mario

-Marion

-Marjorie

-Mark's

-Markov

-Markovian

-Markovitz

-Marlborough

-Marlene

-Marlowe

-Marquette

-Marriott

-Marseilles

-Marsha

-Marshall

-Marshalled

-Marshalling

-Martha

-Martian

-Martians

-Martinez

-Martinique

-Martinson

-Marty

-Marvin

-Marx

-Marxism

-Marxisms

-Marxist

-Masonic

-Masonite

-Mathews

-Mathewson

-Mathias

-Mathieu

-Matilda

-Matisse

-Matisses

-Matthew

-Matthews

-Mattie

-Maude

-Maureen

-Maurice

-Mauritania

-Mauritius

-Mawr

-Maximilian

-Maxine

-Maxwellian

-Maya

-Mayans

-Mayfair

-Mayflower

-Maynard

-Mazda

-McAdams

-McAllister

-McAllister's

-McBride

-McBride's

-McCabe

-McCabe's

-McCall

-McCall's

-McCarthy

-McCarthy's

-McCauley

-McCauley's

-McClain

-McClain's

-McClellan

-McClellan's

-McClure

-McClure's

-McCluskey

-McCluskey's

-McConnell

-McConnell's

-McCoy

-McCoy's

-McCracken

-McCracken's

-McDaniel

-McDaniel's

-McDermott

-McDermott's

-McDonald

-McDonald's

-McDonnell

-McDonnell's

-McDougall

-McDougall's

-McFadden

-McFadden's

-McFarland

-McFarland's

-McGill

-McGill's

-McGovern

-McGovern's

-McGrath

-McGrath's

-McGraw

-McGraw's

-McGregor

-McGregor's

-McGuire

-McGuire's

-McIntosh

-McIntosh's

-McIntyre

-McIntyre's

-McKay

-McKay's

-McKee

-McKee's

-McKesson

-McKesson's

-McKinley

-McKinley's

-McKinney

-McKinney's

-McKnight

-McKnight's

-McLanahan

-McLaughlin

-McLaughlin's

-McLean

-McLean's

-McLeod

-McLeod's

-McMillan

-McMillan's

-McNaughton

-McNaughton's

-McNeil

-McNeil's

-McPherson

-McPherson's

-Medea

-Medfield

-Medicaid

-Medicare

-Medici

-Medicis

-Mediterranean

-Meister

-Meistersinger

-Mekong

-Mel

-Melanesia

-Melanesian

-Melanie

-Melbourne

-Melinda

-Melisande

-Melissa

-Mellon

-Melville

-Melvin

-Memphis

-Mencken

-Mendelssohn

-Mendoza

-Menelaus

-Menlo

-Mennonite

-Mennonites

-Menominee

-Mensch

-Mephistopheles

-Mercator

-Mercedes

-Meredith

-Meriwether

-Merle

-Merriam

-Merrick

-Merrill

-Merrimac

-Merrimack

-Mesozoic

-Messrs

-Methuselah

-Methuselahs

-Mexican

-Mexicans

-Mexico

-Meyer

-Meyers

-Miami

-Michael

-Michael's

-Michaelangelo

-Michaels

-Michaelson

-Michelangelo

-Michelin

-Michelson

-Mick

-Mickelson

-Mickey

-Mickey's

-Mickie

-Micky

-Micronesia

-Micronesian

-Middlebury

-Middlesex

-Middleton

-Middletown

-Midwestern

-Midwesterner

-Midwesterners

-Miguel

-Mikhail

-Mikoyan

-Milan

-Mildred

-Millard

-Millie

-Milquetoast

-Milquetoasts

-Milton

-Miltonic

-Milwaukee

-Mimi

-Minerva

-Minneapolis

-Minnie

-Minoan

-Miocene

-Mira

-Miranda

-Miriam

-Mississippi

-Mississippian

-Mississippians

-Missoula

-Missouri

-Missy

-Mitch

-Mitch's

-Mitchell

-Mitchell's

-Mobil

-Modesto

-Mohammed

-Mohammedan

-Mohawk

-Moines

-Moliere

-Moline

-Molly

-Molotov

-Mon

-Monaco

-Monet

-Monfort

-Mongolia

-Mongolian

-Monica

-Monroe

-Monrovia

-Monsanto

-Montague

-Montaigne

-Montclair

-Monterey

-Montevideo

-Montgomery

-Monticello

-Montpelier

-Montreal

-Monty

-Mooney

-Moore

-Moorish

-Moravia

-Moravian

-Morehouse

-Moreland

-Morgan

-Moriarty

-Mormon

-Moroccan

-Morrison

-Morristown

-Morse

-Mortimer

-Morton

-Morton's

-Moscone

-Moscow

-Moses

-Mossberg

-Mozart

-Mozart's

-Muhammad

-Muir

-Mulligan's

-Mumford

-Muncie

-Mundt

-Munich

-Munroe

-Munson

-Muriel

-Murphy

-Murray

-Murrow

-Muscat

-Muscovy

-Muskegon

-Mussolini

-Mussolini's

-Mussolinis

-Mussorgsky

-Mussorgsky's

-Muzak

-Mycenae

-Mycenaean

-Myron

-NAACP

-NASA

-NATO

-NBC

-NBS

-NCAA

-NCC

-NCR

-NOAA

-NSF

-NYSE

-NaCl

-Nabisco

-Nagasaki

-Nairobi

-Nakamura

-Nakoma

-Nan

-Nancy

-Nancy's

-Nanette

-Nanking

-Nanook

-Nantucket

-Naomi

-Naples

-Napoleon

-Napoleonic

-Nash

-Nashua

-Nashville

-Nassau

-Nat

-Natalie

-Natalie's

-Natchez

-Nate

-Nathan

-Nathaniel

-Navaho

-Navajo

-Navona

-Nazarene

-Nazareth

-Nazism

-Neal's

-Neanderthal

-Neapolitan

-Needham

-Nepali

-Neptune

-Nero

-Nestor

-Neumann

-Nevada

-Newark

-Newbury

-Newburyport

-Newcastle

-Newell

-Newman

-Newport

-Newsweek

-Newsweekly

-Niagara

-Nicaean

-Nicaragua

-Niccolo

-Nicholas

-Nichols

-Nicholson

-Nicklaus

-Nicodemus

-Nielsen

-Nielson

-Nietzsche

-Nigeria

-Nigerian

-Nijinsky

-Nile

-Nilsen

-Nilsson

-Nina

-Niobe

-Nippon

-Nixon

-Noah

-Nobel

-Noel

-Norfolk

-Norma

-Norman

-Normandy

-Norris

-Norristown

-Norse

-Northampton

-Northfield

-Northumberland

-Norton

-Norwalk

-Norway

-Norwegian

-Norwich

-Nostradamus

-Notre

-Nottingham

-Noyes

-Nubian

-Nugent

-O'Brien

-O'Brien's

-O'Clock

-O'Connell

-O'Connell's

-O'Connor

-O'Connor's

-O'Dell

-O'Dell's

-O'Donnell

-O'Donnell's

-O'Dwyer

-O'Dwyer's

-O'Er

-O'Hare

-O'Hare's

-O'Leary

-O'Leary's

-O'Shea

-O'Shea's

-O'Sullivan

-O'Sullivan's

-OK's

-OPEC

-Oakland

-Oakley

-Oakmont

-Oberlin

-Occam

-Occam's

-Oconomowoc

-Octavia

-Odessa

-Odysseus

-Oedipal

-Oedipally

-Offenbach

-Ogden

-Okamoto

-Okinawa

-Olaf

-Oldenburg

-Oldsmobile

-Oleg

-Olga

-Olivers

-Olivetti

-Olivia

-Olsen

-Olson

-Olympia

-Olympian

-Olympic

-Olympics

-Olympus

-Omaha

-Oman

-Oneida

-Ontario

-Opel

-Oppenheimer

-Oregon

-Oregonians

-Orlando

-Orleans

-Orlick

-Orpheus

-Orphic

-Ortega

-Orwell

-Orwellian

-Osaka

-Osbert

-Osborn

-Osborne

-Oscar

-Oshkosh

-Oslo

-Ostrander

-Oswald

-Othello

-Ottawa

-Otto

-Otto's

-Ottoman

-Ovid

-Owen

-Owens

-Oxford

-Oxnard

-Oz

-Ozark

-Ozarks

-Ozzie

-PBS

-PDT

-PM

-PST

-PTA

-Pablo

-Pabst

-Packwood

-Paganini

-Paine

-Pakistan

-Pakistani

-Pakistanis

-Palatine

-Paleolithic

-Paleozoic

-Palermo

-Palestine

-Palmolive

-Palmyra

-Palomar

-Pam

-Pam's

-Pamela

-Pancho

-Pandora

-Pappas

-Paraguay

-Paris

-Parisian

-Parkersburg

-Parkhouse

-Parkinson

-Parrish

-Parthenon

-Pasadena

-Passaic

-Passover

-Pasternak

-Pasteur

-Patagonia

-Patagonians

-Patrice

-Patricia

-Patrick

-Patsies

-Patsy

-Patterson

-Patton

-Paul

-Paul's

-Paula

-Paulette

-Paulette's

-Pauli

-Pauline

-Pauling

-Paulsen

-Paulson

-Pavlov

-Pawtucket

-Payne

-Paynes

-Payson

-Peabody

-Peachtree

-Pearce

-Pearson

-Pecos

-Pedro

-Pegasus

-Peggy

-Peking

-Pelham

-Pendleton

-Penn

-Pensacola

-Pentecost

-Peoria

-Pepsi

-Pepsico

-Percy

-Perez

-Pergamon

-Pericles

-Perkins

-Pernod

-Perry

-Perry's

-Perseus

-Pershing

-Persia

-Persian

-Persians

-Perth

-Peru

-Peruvian

-Peruvians

-Pete

-Pete's

-Petersburg

-Petersen

-Peterson

-Pettibone

-Peugeot

-Pewaukee

-Peyton

-Peyton's

-Pfizer

-Ph

-Phaedra

-Phil

-Philadelphia

-Philco

-Philip

-Philippe

-Philippians

-Philippine

-Philippines

-Philistine

-Philistines

-Phillies

-Phillips

-Philly

-Phyllis

-Picasso

-Piccadilly

-Pickford

-Pickman

-Pierre

-Pierson

-Pillsbury

-Pinehurst

-Pipestone

-Pisa

-Pisces

-Pitney

-Pitt

-Pittsburgh

-Pittsburghers

-Pittsfield

-Pittston

-Pius

-Plainfield

-Plainview

-Plato

-Platonism

-Platonist

-Platteville

-Pleiades

-Pleistocene

-Plexiglas

-Pliny

-Pliocene

-Plutarch

-Pluto

-Plymouth

-Pocahontas

-Pocono

-Poconos

-Poe

-Poincare

-Poindexter

-Poisson

-Polaris

-Polaroid

-Polk

-Pollux

-Polynesian

-Polyphemus

-Pomerania

-Pomeranian

-Pomona

-Pompeii

-Pompey

-Pontiac

-Popsicle

-Popsicles

-Portland

-Portsmouth

-Portugal

-Portuguese

-Poseidon

-Potemkin

-Potomac

-Potsdam

-Pottawatomie

-Potts

-Poughkeepsie

-Poussin

-Poussins

-Powell

-Prague

-Pratt

-Prattville

-Pravda

-Precambrian

-Prentice

-Prenticed

-Prenticing

-Presbyterian

-Presbyterianism

-Prescott

-Presley

-Preston

-Preston's

-Pretoria

-Priestley

-Princeton

-Principia

-Priscilla

-Procrustes

-Procyon

-Prokofieff

-Promethean

-Prometheus

-Protestantism

-Proust

-Proxmire

-Prussia

-Prussian

-Ptolemaic

-Ptolemaists

-Ptolemy

-Puccini

-Puerto

-Pulaski

-Pulitzer

-Pullman

-Pullmans

-Purcell

-Purdue

-Purina

-Pygmalion

-Pyhrric

-Pyrex

-Pythagoras

-Pythagorean

-Pythagoreans

-Quakeress

-Quantico

-Quasimodo

-Quebec

-Quinn

-Quinn's

-Quixote

-RCA

-RISC

-RMS

-ROTC

-RPM

-RSVP

-Rachel

-Rachmaninoff

-Racine

-Radcliffe

-Rafael

-Rajive

-Rajive's

-Raleigh

-Ralph

-Ralph's

-Ralston

-Ramada

-Ramirez

-Ramona

-Ramsey

-Rand

-Randall

-Randolph

-Randy's

-Rangoon

-Raoul

-Raphael

-Rapunzel

-Rasmussen

-Rawlings

-Rawlins

-Rawlinson

-Rawson

-Rayburn

-Rayleigh

-Raymond

-Raymondville

-Raytheon

-Reagan

-Rebecca

-Redhook

-Redstone

-Reedville

-Reese

-Regina

-Reginald

-Regulus

-Reich

-Reichenberg

-Reichstag

-Reilly

-Reinhard

-Reinhardt

-Reinhold

-Rembrandt

-Remington

-Remus

-Renaults

-Renee

-Renee's

-Renoir

-Renville

-Reuben

-Reuters

-Reuther

-Rev

-Rex

-Reynolds

-Rhea

-Rheims

-Rheinholdt

-Rhenish

-Rhine

-Rhinelander

-Rhodes

-Rhodesia

-Rhonda

-Rican

-Ricans

-Richard

-Richard's

-Richards

-Richardson

-Richey

-Richfield

-Richland

-Richmond

-Richter

-Rickenbaugh

-Ridgefield

-Ridgway

-Riemann

-Riggs

-Riley

-Rilke

-Rinehart

-Rio

-Ripley

-Ritter

-Ritz

-Riverview

-Riviera

-Riyadh

-Robbie

-Robbins

-Roberta

-Roberto

-Robertson

-Robertsons

-Robinsonville

-Rochester

-Rochester's

-Rockaway

-Rockaways

-Rockefeller

-Rockford

-Rockland

-Rockville

-Rockwell

-Rodgers

-Rodney

-Rodney's

-Rodriguez

-Roger

-Roger's

-Rogers

-Roland

-Rollie

-Rollins

-Romano

-Rome

-Romeo

-Romeos

-Romulus

-Ron

-Ronald

-Ronnie

-Rooney

-Roosevelt

-Roosevelt's

-Rooseveltian

-Rorschach

-Rosa

-Rosabelle

-Rosalie

-Roseland

-Rosella

-Rosen

-Rosenberg

-Rosetta

-Rosie

-Ross

-Rossi

-Roswell

-Rotarian

-Rotarians

-Roth

-Rousseau

-Rousseau's

-Rowena

-Rowena's

-Rowland

-Rowland's

-Rowley

-Rowley's

-Roxy

-Roxy's

-Rozelle

-Rozelle's

-Rudolph

-Rudolph's

-Rudy

-Rufus

-Rumania

-Rumanian

-Rumanians

-Rumford

-Rummel

-Runnymede

-Runyon

-Ruppert

-Rushmore

-Russ

-Russell

-Russia

-Rutgers

-Ruth

-Rutherford

-Rutland

-Rutledge

-Ryan

-Ryder

-SCSI

-SIMD

-SMSA

-SMSA's

-SMSAs

-SPSS

-Sabine

-Sacramento

-Sadie

-Saginaw

-Sahara

-Saigon

-Salem

-Salerno

-Salisbury

-Salk

-Salvador

-Salvadoran

-Salvatore

-Sammy

-Sammy's

-Samoa

-Samoan

-Sampson

-Samson

-Samuel

-Samuels

-Samuelson

-Sanchez

-Sancho

-Sandburg

-Sanderson

-Sandia

-Sandra

-Sandusky

-Sanford

-Sanhedrin

-Sanskrit

-Sanskritic

-Santa

-Santayana

-Santiago

-Sara

-Sarah

-Sarasota

-Saratoga

-Sargent

-Sartre

-Saskatchewan

-Satan

-Saturn

-Satyanarayanan

-Satyanarayanan's

-Saud

-Saudi

-Saukville

-Saunders

-Savannah

-Saviour

-Savonarola

-Saxon

-Saxons

-Saxony

-Saxton

-Scandinavia

-Scandinavian

-Scandinavians

-Schaefer

-Schaeffer

-Schafer

-Schaffner

-Schapiro

-Scheherezade

-Schelling

-Schenectady

-Schlitz

-Schmidt

-Schmitt

-Schneider

-Schopenhauer

-Schroeder

-Schroedinger

-Schubert

-Schultz

-Schulz

-Schumacher

-Schuman

-Schumann

-Schuster

-Schwartz

-Scorpio

-Scot

-Scotchgard

-Scotchman

-Scotia

-Scotian

-Scots

-Scotsman

-Scotsmen

-Scott

-Scottish

-Scottsdale

-Scotty

-Scranton

-Scribners

-Scripps

-Scylla

-Scythia

-Seaborg

-Seabrook

-Seaquarium

-Seattle

-Seattle's

-Sebastian

-Sedgwick

-Seeley

-Segundo

-Selectric

-Selfridge

-Selma

-Seminole

-Semite

-Seneca

-Senegal

-Senora

-Seoul

-Serafin

-Serbian

-Serbo

-Serra

-Seville

-Seward

-Seymour

-Shakespeare

-Shakespearean

-Shakespearian

-Shanghai

-Shanghaiing

-Shapiro

-Sharon

-Shasta

-Shawano

-Shawnee

-Sheboygan

-Sheffield

-Sheffielder

-Sheffielders

-Sheila

-Shelby

-Sheldon

-Shelley

-Shelton

-Shenandoah

-Sheraton

-Sheridan

-Sherman

-Sherwin

-Sherwood

-Shiite

-Shiite's

-Shiites

-Shillong

-Shiloh

-Shinto

-Shintoism

-Shirley

-Shorewood

-Shreveport

-Shylock

-Shylockian

-Siamese

-Siberia

-Siberian

-Sicilian

-Siciliana

-Sicilians

-Sicily

-Sidney

-Siegfried

-Sigmund

-Signora

-Sikh

-Sikh's

-Sikhes

-Sikhs

-Sikorsky

-Silas

-Silverman

-Simmons

-Simmonsville

-Simms

-Simon

-Simpson

-Sinai

-Sinatra

-Sinclair

-Sioux

-Sirius

-Sistine

-Sisyphean

-Sisyphus

-Siva

-Skippy

-Skye

-Slav

-Slavic

-Slavs

-Slesinger

-Sloan

-Sloane

-Smallwood

-Smithfield

-Smithsonian

-Smithtown

-Smucker

-Snead

-Sneed

-Snodgrass

-Snowbelt

-Snowbelt's

-Snyder

-Socrates

-Socratic

-Sofia

-Sol

-Solly

-Solomon

-Somali

-Somalis

-Somerset

-Somerville

-Sonoma

-Sonora

-Sophia

-Sophias

-Sophie

-Sophoclean

-Sophocles

-Sorensen

-Sorenson

-Sorrentine

-Sousa

-Southampton

-Southfield

-Spahn

-Spalding

-Spaniard

-Spaniards

-Sparkman

-Sparta

-Spartan

-Spencerian

-Spenglerian

-Sperry

-Spiegel

-Spokane

-Springfield

-Squaresville

-Squibb

-Squibbing

-Stacy

-Stacy's

-Stafford

-Staffordshire

-Staley

-Staley's

-Stalin

-Stalin's

-Stalinist

-Stalins

-Stamford

-Stan

-Stan's

-Standish

-Standish's

-Stanford

-Stanford's

-Stanley

-Stans

-Stanton

-Stapleton

-Starkey

-Starr

-Staten

-Statler

-Stauffer

-Stearns

-Steinbecks

-Steinberg

-Stella

-Stephan

-Stephanie

-Stephanie's

-Stephen

-Stephens

-Stephenson

-Sterno

-Stetson

-Stetsons

-Steuben

-Steve

-Steve's

-Steven

-Steven's

-Stevens

-Stevenson

-Stevie

-Stewart

-Stewart's

-Stillwell

-Stimson

-Stirling

-Stockholm

-Stockton

-Stonehenge

-Stouffer

-Stowe

-Strasbourg

-Stratford

-Strauss

-Stravinsky

-Stromberg

-Strongheart

-Stuart

-Stubblefield

-Stubblefields

-Studebaker

-Stuttgart

-Stuyvesant

-Stygian

-Styrofoam

-Styx

-Sudan

-Sudanese

-Sudanic

-Suez

-Suffolk

-Sukarno

-Sullivan

-Sulzberger

-Sumatra

-Sumerian

-Summerdale

-Sumter

-Sunbelt

-Sunbelt's

-Sunnyvale

-Superman's

-Susan

-Susan's

-Susanne

-Susanne's

-Susie

-Susie's

-Susquehanna

-Susquehanna's

-Sussex

-Sussex's

-Sutherland

-Sutherland's

-Sutton

-Sutton's

-Suwanee

-Suwanee's

-Suzanne

-Suzanne's

-Suzuki

-Suzuki's

-Swabian

-Swabian's

-Swabians

-Swahili

-Swahili's

-Swanson

-Swarthmore

-Swartz

-Swaziland

-Swede

-Sweden

-Swedes

-Swedish

-Sweeney

-Sweeneys

-Swenson

-Swinburne

-Switzer

-Switzerland

-Sybil

-Sydney

-Sylvania

-Sylvester

-Sylvia

-Sylvie

-Symington

-Syracuse

-Syria

-Syrian

-Syrian's

-Syrians

-TNT

-TRW

-TTL

-TV

-TVA

-TWA

-Tacitus

-Tacoma

-Taft

-Tahiti

-Tahoe

-Taipei

-Taiwan

-Taiwanese

-Talladega

-Tallahassee

-Tallahatchie

-Tallahoosa

-Tallchief

-Talleyrand

-Talmud

-Tammany

-Tampa

-Tanganyika

-Tanganyika's

-Tannenbaum

-Tantalus

-Tanya

-Tanzania

-Tapdance

-Tara

-Tarrytown

-Tartuffe

-Tarzan

-Tasmania

-Tate

-Tawney

-Taylor

-Taylors

-Tchaikovsky

-Teddy

-Teheran

-Tehran

-Teledyne

-Telefunken

-Telemann

-Telex

-Templeman

-Templeton

-Tenex

-Tenneco

-Tenney

-Tennyson

-Teresa

-Terra

-Terran

-Tess

-Tessie

-Teutonic

-Tex

-Texaco

-Texan

-Texans

-Textron

-Thai

-Thailand

-Thames

-Thebes

-Thelma

-Theodore

-Theodosian

-Theodosius

-Theresa

-Theseus

-Thiensville

-Thomas

-Thompson

-Thompson's

-Thomson

-Thor

-Thoreau

-Thornburg

-Thornton

-Thorpe

-Throneberry

-Thruway

-Thruways

-Thu

-Thule

-Thurber

-Thurman

-Tiber

-Tibet

-Tibetan

-Tiburon

-Ticonderoga

-Tieck

-Tigris

-Tijuana

-Tillich

-Tillie

-Tim

-Tim's

-Timex

-Timmy

-Timon

-Tims

-Tioga

-Tippecanoe

-Tipperary

-Tito

-Titus

-Tobago

-Todd

-Todd's

-Togo

-Tokyo

-Toland

-Toledo

-Tolley

-Tolstoy

-Tombigbee

-Tommie

-Toni

-Tonio

-Toomey

-Topeka

-Topsy

-Torah

-Toronto

-Torquemada

-Tosca

-Tosca's

-Toscanini

-Toscanini's

-Toshiba

-Toshiba's

-Toto

-Toulouse

-Townley

-Townsend

-Towsley

-Toynbee

-Toyota

-Tractarians

-Tracy

-Transylvania

-Travis

-Treadwell

-Trenton

-Trianon

-Trimble

-Trinidad

-Tristan

-Trojan

-Tropez

-Trotsky

-Troutman

-Truckee

-Trudy

-Trujillo

-Truman

-Trumbull

-Tsunematsu

-Tucson

-Tudor

-Tue

-Tulane

-Tulsa

-Tunis

-Tunisia

-Tunisian

-Turin

-Turkish

-Tuscaloosa

-Tuscan

-Tuscany

-Tuskegee

-Tuttle

-Tyler

-Typhon

-Tyson

-UN

-UNESCO

-USA

-USAF

-USART

-USDA

-USPS

-USSR

-Udall

-Uganda

-Ukrainian

-Ukrainians

-Ullman

-Ulysses

-Unibus

-Uniroyal

-Unisys

-Univac

-Upton

-Uranus

-Urbana

-Ursa

-Ursula

-Ursuline

-Uruguay

-Utica

-Uzi

-Uzi's

-VGA

-VHF

-VLSI

-Vail

-Valerie

-Valhalla

-Valkyrie

-Vance

-Vancouver

-Vandenberg

-Vanderbilt

-Vanderburgh

-Varian

-Varityping

-Vatican

-Vaudois

-Vaughn

-Vega

-Vegas

-Velasquez

-Venetian

-Venetian's

-Venetians

-Venezuela

-Venezuelan

-Venice

-Venn

-Venus

-Venusian

-Venusians

-Vera

-Vergil

-Verlag

-Vermont

-Vern

-Verne

-Vernon

-Verona

-Veronica

-Versailles

-Vic

-Vic's

-Vichy

-Vichy's

-Vickers

-Vickie

-Vickie's

-Vicksburg

-Vicksburg's

-Vicky

-Vicky's

-Victoria

-Victoria's

-Victorian

-Victorians

-Victrola

-Victrola's

-Victrolas

-Vidal

-Vidal's

-Vienna

-Vienna's

-Viennese

-Viennese's

-Viet

-Vietnam

-Vietnam's

-Vietnamese

-Vietnamese's

-Viking

-Vikings

-Vince

-Vincent

-Vincent's

-Vinson

-Virginian

-Virginians

-Virgo

-Virgo's

-Virgos

-Vishnu

-Visigoth

-Visigoths

-Vitus

-Vivaldi

-Vivian

-Vladimir

-Vladivostok

-Vogel

-Vol

-Volkswagen

-Volkswagens

-Volstead

-Volta

-Voltaire

-Volvo

-Vulcan

-WFF

-WWW

-Wabash

-Waco

-Wade's

-Wagner

-Wainwright

-Wakefield

-Walbridge

-Walcott

-Walden

-Waldensian

-Waldo

-Waldorf

-Walford

-Walgreen

-Wallace

-Wallenstein

-Wally's

-Walpole

-Walsh

-Walt

-Walter

-Walters

-Walton

-Walworth

-Wang

-Wansee

-Wansley

-Warfield

-Warfield's

-Warsaw

-Warsaw's

-Warwick

-Warwick's

-Washburn

-Washoe

-Wasserman

-Waterbury

-Watergate

-Waterhouse

-Watertown

-Watkins

-Watson

-Watson's

-Wattenberg

-Watterson

-Waukesha

-Waunona

-Waupaca

-Waupun

-Wausau

-Wauwatosa

-Waveland

-Wayne

-Waynesboro

-Weatherford

-Webber

-Webster

-Webster's

-Websterville

-Weider

-Weidman

-Weinberg

-Weiner

-Weinstein

-Weiss

-Weissman

-Weissmuller

-Welch

-Welcher

-Welches

-Weldon

-Weldwood

-Wellesley

-Wellington

-Wellman

-Wellsville

-Welmers

-Wendell

-Wendy

-Wentworth

-Werner

-Wesley

-Wesleyan

-Wesson

-Westbrook

-Westchester

-Westfield

-Westhampton

-Westinghouse

-Westminster

-Westmore

-Weston

-Westphalia

-Westport

-Westwood

-Weyerhauser

-Wharton

-Wheatland

-Wheaton

-Wheatstone

-Wheelock

-Whelan

-Wheller

-Whippany

-Whipple

-Whitcomb

-Whitehall

-Whiteleaf

-Whiteley

-Whitewater

-Whitfield

-Whitlock

-Whitman

-Whitney

-Whittaker

-Whittier

-Wichita

-Wieland

-Wiggins

-Wilcox

-Wiley

-Wilfred

-Wilhelm

-Wilhelmina

-Wilkes

-Wilkinson

-Willamette

-Willard

-Willcox

-Willem

-William

-Williams

-Williamsburg

-Williamson

-Willie

-Willied

-Willies

-Willoughby

-Willy

-Wilma

-Wilmette

-Wilmington

-Wilshire

-Wilsonian

-Winchell

-Windsor

-Winehead

-Winfield

-Winifred

-Winnebago

-Winnetka

-Winnie

-Winnipeg

-Winograd

-Winooski

-Winsborough

-Winsett

-Winslow

-Winston

-Winthrop

-Wisconsin

-Wisconsin's

-Witherspoon

-Wolcott

-Wolfgang

-Wolverton

-Woodard

-Woodberry

-Woodbury

-Woodlawn

-Woodrow

-Woodward

-Woodwards

-Woolworth

-Woonsocket

-Wooster

-Worcester

-Worcestershire

-Worcestershire's

-Wordsworth

-Worthington

-Wrigley

-Wronskian

-Wyman

-Wyoming

-XOR

-Xanthus

-Xavier

-Xenia

-Xerox

-Xerox's

-Xerxes

-YMCA

-YWCA

-Yakima

-Yale

-Yalies

-Yalta

-Yankee

-Yankees

-Yaqui

-Yates

-Yeager

-Yeats

-Yemen

-Yiddish

-Yoknapatawpha

-Yokohama

-Yonkers

-Yorick

-Yorktown

-Yosemite

-Youngstown

-Ypsilanti

-Yuba

-Yucatan

-Yugoslav

-Yugoslavia

-Yukon

-Yuri

-Yves

-Yvette

-Zachary

-Zaire

-Zanzibar

-Zeffirelli

-Zeiss

-Zellerbach

-Zen

-Zennist

-Zeus

-Zeus's

-Ziegfeld

-Ziegfeld's

-Ziegfelds

-Ziegler

-Ziegler's

-Ziggy

-Zimmerman

-Zimmerman's

-Zion

-Zion's

-Zionism

-Zionist

-Zionist's

-Zionists

-Zions

-Zoroaster

-Zoroastrian

-Zoroastrians

-Zurich

-Zurich's

-aardvark

-aardvark's

-aardvarks

-abalone

-abalone's

-abalones

-abdicate

-abdicated

-abdicates

-abdicating

-abdication

-abeyant

-abominate

-abominated

-abominates

-abominating

-abomination

-abominations

-aborning

-aboveboard

-abrasive

-abrasively

-abrasiveness

-abrasives

-abscissae

-abstemiously

-abstinent

-abstinently

-abusable

-academician

-academicianship

-acceptant

-accessors

-accordant

-accordantly

-accrual

-accruals

-acetic

-achromatic

-acknowledgeable

-acquiescent

-acquiescently

-acquisitive

-acquisitively

-acrylate

-actinic

-actinide

-actuaries

-addend

-addle

-addled

-addles

-addling

-adios

-adjectival

-adjectivally

-adjoint

-administrable

-administrate

-administrated

-administrates

-administrating

-administratrix

-adsorbate

-adsorptive

-adsorptively

-advert

-adverted

-adverting

-adverts

-aeolian

-afforest

-afforestation

-afro

-afterbirth

-afterglow

-afterlife

-aftershave

-agribusiness

-agriculturalists

-aha

-ahem

-ahoy

-ain't

-airfare

-airmass

-airpark

-airplay

-airtight

-airtightness

-ala

-albatross

-aldehyde

-aleph

-alewife

-allegiant

-alliterate

-alliterated

-alliterates

-alliterating

-allocable

-allotropic

-allspice

-alluvial

-alluvium

-almagest

-almshouses

-alp

-altercate

-altho

-altimeter

-altimeter's

-altimeters

-alway

-ambrose

-ambrosia

-ambulant

-amethyst

-amethystine

-aminobenzoic

-ammeter

-ammeter's

-ammeters

-amoebae

-amperage

-amperages

-anachronistic

-anaglyph

-analgesic

-anamorphic

-anastigmatic

-androgynous

-angelfish

-angiosperm

-angora

-anhydride

-anhydrite

-animadversion

-animadvert

-anneal

-annealed

-annealer

-annealers

-annealing

-anneals

-annuities

-annuity

-annular

-annularly

-annulus

-anodic

-antacid

-antebellum

-anthropogenic

-anthropometric

-anthropometrics

-anthropometry

-anticlimactic

-antifreeze

-antigone

-antilogs

-antimatter

-antimatter's

-antipasto

-antiperspirant

-antiquary

-antisemitic

-antisemitism

-antisemitism's

-antithetic

-anytime

-apache

-apaches

-apolar

-apparency

-applesauce

-applicate

-apposite

-appositely

-appositeness

-apposition

-appositive

-appositively

-appropriable

-arbitrage

-arbitrager

-arboretum

-arcana

-archetypical

-archetypically

-arcsine

-arctangent

-ardency

-areawide

-arenaceous

-armada

-armature

-armatures

-arrangeable

-arrear

-arrestee

-arrestee's

-arrestees

-arrowroot

-arsenate

-arsenide

-artesian

-articulable

-artier

-artiness

-arty

-ascriptive

-ashame

-ashier

-ashy

-asperity

-asphyxiate

-asphyxiation

-asplenium

-assertional

-assignation

-assignations

-assimilationist

-assn

-associable

-assumability

-asteria

-astigmatic

-astigmatism

-astraddle

-astronautic

-astronomic

-astrophysicist

-astrophysicist's

-astrophysicists

-athwart

-attestation

-attributional

-audibility

-audiotape

-audiovisual

-audiovisuals

-auntie

-auric

-australites

-autoloader

-autostart

-aviate

-aviations

-aviatrix

-axiology

-azimuthal

-azimuthally

-babbitt

-babbitted

-babbitting

-babbitts

-baboon

-babysitting

-baccarat

-bachelorhood

-backarrow

-backboard

-backchaining

-backfill

-backfilled

-backfilling

-backfills

-backhand

-backhanded

-backhandedly

-backhander

-backorder

-backplate

-backplates

-backside

-backstop

-backwood

-badland

-badmen

-baggageman

-baggagemen

-baldy

-baleen

-ballfields

-bandaid

-bandoleers

-bandstop

-bangkok

-barefaced

-barefacedly

-barefacedness

-barkeep

-barkeeper

-barnacle

-barnacled

-barnful

-barnsful

-baronet

-barrette

-barrette's

-barrettes

-barstool

-barstool's

-barstools

-bartend

-baseband

-basemen

-baseplate

-basilar

-basilisk

-basophilic

-basswood

-bates

-batik

-batwings

-bayberries

-bayberry

-beadsman

-beadworker

-beasties

-beautician

-beauticians

-beaux

-bebop

-bedmate

-bedmate's

-bedmates

-bedpan

-bedpan's

-bedpans

-bedstraw

-beechwood

-befuddlement

-begonia

-behemoths

-belate

-belladonna

-bellflower

-bellyache

-bellyacher

-bellyaching

-bellyfull

-belove

-belvedere

-beman

-bemuse

-bemused

-bemusedly

-benefice

-beneficent

-beneficently

-berg

-bergen

-berger

-bergs

-beribbon

-berserk

-berserker

-bespoke

-bestir

-bestirring

-bestubble

-bestubbled

-betatron

-bethel

-bethought

-betoken

-betokened

-betokening

-bettor

-bewhisker

-bezel

-biaxial

-biaxially

-bicep

-bichromate

-bichromated

-biconnected

-bidiagonal

-biharmonic

-bilayer

-bilayers

-bilingualism

-billies

-billy

-bimetallic

-bimetallism

-bindery

-bindle

-biochemist

-biochemists

-biograph

-biologic

-biomass

-biometric

-biometrics

-biometry

-biomolecule

-biomolecules

-biophysic

-biophysical

-biophysically

-biophysicist

-biophysicists

-biophysics

-bioscience

-biosciences

-biosphere

-biostatistic

-biostatistics

-biotic

-birdseed

-birdwatch

-birth's

-birthrate

-birthrate's

-birthrates

-biserial

-bisexual

-bisexual's

-bisexually

-bisexuals

-bishopric

-bistable

-bistate

-bisyllabic

-bittern

-bitternut

-bitterroot

-bitumen

-blackball

-blackballed

-blackballing

-blackballs

-blackbodies

-blackbody

-bladdernut

-bladderwort

-blameworthiness

-blameworthy

-blanc

-blatancy

-blather

-blathered

-blatherer

-blathering

-blatting

-blazon

-blazoned

-blazoner

-blazoning

-bldg

-bleeps

-blest

-blindside

-blindsided

-blindsides

-blindsiding

-blockier

-blocky

-bloodbath

-bloodroot

-blotch

-blowtorch

-blueback

-bluebill

-bluebook

-bluebush

-bluegill

-bluegrass

-bluejacket

-boa

-boas

-bobble

-bobbled

-bobbles

-bobbling

-bobcat

-bobsled

-bobsledding

-bock

-bockwurst

-bodhisattva

-bodyweight

-bogey

-bogeyed

-bogeying

-bogeymen

-bogeys

-bogging

-boggy

-bogies

-bogy

-boilermaker

-boilermaker's

-boilermakers

-bolivar

-bolo

-bolometer

-bolometer's

-bolometers

-bolos

-bona

-bongo

-bonito

-bonjour

-bonzes

-boogie

-bookbind

-bookbinder

-bookbinders

-bookbinding

-bookend

-bookends

-bookkeep

-bookplate

-bookplates

-boomtown

-boomtowns

-boosterism

-bootblack

-bootblacks

-bop

-bopping

-borosilicate

-boson

-bossier

-bossies

-bossiness

-bossy

-botanic

-botfly

-bottommost

-botulin

-bouillon

-boutique

-boutiques

-bowie

-boxier

-boxiness

-boxy

-bpi

-brachia

-brachium

-bracken

-brad

-braggadocio

-brakeman

-brakemen

-brakemen's

-brandywine

-bratwurst

-breadfruit

-breadfruits

-breastfed

-breastfeed

-breastfeeding

-breastplate

-bribery

-brickmason

-brickmasons

-brickyard

-brimming

-brimstone

-brinier

-brininess

-briny

-bristlier

-bristly

-bristol

-bristols

-broadloom

-bronc

-bronchiolar

-bronchiolitis

-bronco

-broncos

-broncs

-broodiness

-broody

-brookside

-brouhaha

-brucellosis

-brushwork

-bubonic

-buckaroo

-buckaroos

-bucketful

-bucketful's

-buckeye

-buckhorn

-bufflehead

-bugaboo

-bugbears

-bugeyed

-bulblet

-bullfinch

-bullfrog

-bullhead

-bullheaded

-bullheadedly

-bullheadedness

-bullhide

-bullseye

-bullshit

-bullwhackers

-bullyboy

-bullyboys

-bulrush

-burble

-burbled

-burbler

-burbles

-burbling

-burg

-burgers

-burlap

-burley

-bushmaster

-busyness

-butch

-butene

-butterball

-buttercup

-buttermilk

-buttery

-buttonweed

-bypath

-byroad

-cabal

-cabals

-cabana

-cabanas

-cabaret

-cabarets

-cabdriver

-cabdrivers

-cabinetmaker

-cabinetmaker's

-cabinetmakers

-cabinetry

-cacao

-cacciatore

-cackly

-cacophonist

-cacophony

-cadaver

-cadaverous

-cadaverously

-caddies

-caddy

-cadent

-cadenza

-cadet

-cadge

-cadged

-cadger

-cadges

-cadging

-cadmium

-cadre

-caffeine

-caffeine's

-cagey

-cageyness

-cahoot

-cahoots

-cairn

-cairned

-cairns

-calamitous

-calamitously

-calamitousness

-calcareous

-calcareously

-calcareousness

-calcification

-calcified

-calcify

-calcite

-calculability

-calculable

-calculableness

-calculi

-calfskin

-californium

-caliphate

-calisthenic

-calisthenics

-callable

-callee

-callee's

-calligraph

-calligrapher

-calligraphers

-calligraphy

-calliope

-callow

-callowness

-caloric

-calorimeter

-calorimeter's

-calorimeters

-calorimetric

-calorimetry

-calumniate

-calumniated

-calumniation

-calumny

-calvary

-calve

-calving

-calypso

-cam

-camaraderie

-camber

-cambered

-cambering

-camellias

-cameo

-cameos

-cameraman

-cameramen

-campesinos

-campfire

-campground

-campgrounds

-campsite

-campsites

-cams

-cancerous

-cancerously

-candidacy

-candlelight

-candlelighter

-canine

-canines

-canister

-canisters

-cannabis

-canneries

-cannery

-cannibalism

-cannibalism's

-cannibalistic

-cannier

-canniness

-cannonball

-canny

-canonic

-canonist

-cant

-cantaloupe

-cantaloupe's

-cantaloupes

-canted

-canteen

-canteens

-canter

-cantered

-canticle

-cantilever

-cantilevers

-canting

-canvasback

-capacitate

-capacitative

-capitalistic

-capitulate

-capitulated

-capitulates

-capitulation

-caprice

-capsize

-capsized

-capsizes

-capsizing

-capstan

-capstans

-capstone

-capsule

-capsuled

-capsules

-capsuling

-captaincy

-captious

-captiously

-captiousness

-caramel

-caraway

-carbide

-carbine

-carbines

-carbonaceous

-carbonyl

-carborundum

-carboy

-carbuncle

-carbuncled

-carcinogen

-carcinogenic

-carcinogens

-carcinoma

-cardiology

-cardiomegaly

-cardiovascular

-careen

-careened

-careening

-careerism

-caretaker

-caretakers

-careworn

-caricature

-caricatured

-caricatures

-caricaturist

-carload

-carloading

-carloads

-carmine

-carnage

-carnal

-carnality

-carnally

-carob

-carouse

-caroused

-carouser

-carousing

-carp

-carped

-carpentry

-carper

-carping

-carpingly

-carport

-carps

-carrageen

-carrel

-carrels

-carrion

-carte

-cartels

-cartilage

-cartographer

-cartographers

-cartographic

-cartoonist

-cartoonists

-cartwheel

-cartwheeler

-cartwheels

-carven

-casbah

-casebook

-casebooks

-casein

-casework

-caseworker

-caseworkers

-cashew

-cashews

-cashmere

-casino

-casinos

-cassette

-cassettes

-cassock

-cassocked

-castanet

-castanets

-castigate

-castigated

-castigates

-castigation

-castor

-cataclysmic

-catalysis

-catalytic

-catalytically

-catapult

-catapulted

-catapulting

-catapults

-catastrophically

-catatonia

-catbird

-catchier

-catchword

-catchwords

-catchy

-catechism

-catecholamine

-catecholamines

-categoric

-catenate

-catenation

-catfish

-catharsis

-cathodic

-catholicism

-catlike

-catnip

-cattail

-cattier

-catties

-cattiness

-cattleman

-cattlemen

-catty

-catwalk

-catwalk's

-catwalks

-caucus

-caucuses

-caucusing

-cauliflower

-cauliflowers

-caulk

-caulker

-caulks

-causate

-causative

-causatively

-cautionary

-cavalcade

-cavalcades

-cavalrymen

-caveman

-cavemen

-cavernous

-cavernously

-caviar

-cavil

-cavort

-cavorted

-cavorting

-cayenne

-cede

-ceded

-ceder

-cedilla

-ceding

-celebrant

-celebrants

-celerity

-celesta

-cello

-cellophane

-cellos

-cellulose

-celluloses

-censorial

-centaur

-centaurs

-centenary

-centennial

-centennially

-centigrade

-centigrades

-centrality

-centrifugal

-centrifugally

-centrifugals

-centrifugate

-centrifugation

-centrist

-centroid

-centroids

-ceramic

-ceramics

-cerate

-cerated

-cerebellum

-cerebrate

-cerebrated

-cerebrates

-cerebrating

-cerebration

-cerebrations

-ceremonious

-ceremoniously

-ceremoniousness

-cerise

-cerium

-certiorari

-certitude

-certitudes

-cerulean

-cervical

-cesium

-cession

-cetera

-ceteras

-chainlike

-chairlady

-chairwoman

-chairwomen

-chaise

-chalkline

-chalky

-chambermaid

-chambermaids

-chamfer

-chamfered

-chamfering

-chamfers

-chamois

-champ

-champers

-champs

-chanceries

-chancery

-chancier

-chanciness

-chancy

-chantey

-chantries

-chantry

-chaparral

-chaperone

-chaperones

-chapping

-charisma

-charismatic

-charitably

-charlatans

-charred

-chartist

-chartists

-chartreuse

-chartroom

-chartrooms

-charwomen

-chassis

-chastisement

-chastisements

-chastity

-chateaux

-chatted

-chattel

-chattels

-chattier

-chattiness

-chatting

-chatty

-chaw

-checkerboard

-checkerboards

-checklist

-checklists

-checksummed

-checksumming

-checkup

-checkups

-cheekbone

-cheekbones

-cheekier

-cheekiness

-cheeky

-cheerleader

-cheerleaders

-cheesecloth

-cheesier

-cheesiness

-cheesy

-cheetah

-chelate

-chelated

-chelating

-chelation

-chelations

-chemic

-chemotherapy

-chemotherapy's

-chevalier

-chevron

-chevroned

-chianti

-chic

-chicanery

-chicly

-chicness

-chicory

-chiefdom

-chiefdoms

-chigger

-chiggers

-chilblain

-chilblains

-childbearing

-childbirth

-childless

-childlessness

-childlike

-childlikeness

-childrearing

-chili

-chimera

-chimeric

-chimpanzee

-chimpanzees

-china

-chinchilla

-chinless

-chipboard

-chipped

-chipper

-chipping

-chiropractor

-chiropractors

-chive

-chives

-chivying

-chlorate

-chloride

-chlorides

-chlorinate

-chlorinated

-chlorinates

-chlorination

-chloroform

-chlorophyll

-choirmaster

-chokeberry

-cholesterol

-cholinesterase

-chomp

-choosier

-choosy

-choppier

-choppiness

-choppy

-chorale

-chorales

-chordal

-chordata

-chordate

-choreograph

-choreographed

-choreographer

-choreographers

-choreographic

-choreography

-chorines

-chortle

-chortled

-chortles

-chortling

-chow

-chowder

-chowders

-chrissake

-chromate

-chromatic

-chromaticness

-chromatics

-chromatogram

-chromatogram's

-chromatograms

-chromatograph

-chromatographic

-chromatography

-chrome

-chromed

-chromes

-chromic

-chroming

-chromite

-chromium

-chromosphere

-chronically

-chronograph

-chronography

-chrysalis

-chrysanthemum

-chrysanthemum's

-chrysanthemums

-chub

-chubs

-chug

-chugging

-chugs

-chummier

-chumminess

-chumming

-chummy

-chunkier

-chunky

-churchgoers

-churchgoing

-churchmen

-churchwoman

-churchwomen

-churl

-churls

-chutney

-chutneys

-ciao

-cicada

-cicadas

-cilia

-ciliate

-ciliated

-ciliately

-ciliates

-cinch

-cinches

-cinema

-cinemas

-cinematic

-cinnabar

-circa

-circlet

-circulant

-circulatory

-circumcise

-circumcised

-circumciser

-circumcises

-circumcising

-circumcision

-circumcisions

-circumferential

-circumferentially

-circumpolar

-circumscribe

-circumscribed

-circumscribes

-circumscribing

-circumscriptions

-circumspection

-circumspections

-circumsphere

-circumvention

-circumventions

-citizenry

-citrate

-citrated

-citric

-citron

-citrus

-citruses

-cityscape

-cityscapes

-citywide

-civet

-cladding

-clairvoyance

-clammier

-clamminess

-clamming

-clammy

-clamshell

-clamshells

-clandestine

-clandestinely

-clandestineness

-clank

-clanked

-clanking

-clankingly

-clannish

-clannishly

-clannishness

-clapboard

-clapboards

-clapped

-clapping

-claret

-clarets

-clarinet

-clarinets

-clarion

-classicist

-classier

-classiest

-classificatory

-classiness

-classless

-classlessness

-classy

-clattery

-claustrophobia

-claustrophobic

-clave

-claver

-clavicle

-clavicle's

-clavicles

-clearcut

-clearheaded

-clearheadedly

-clearheadedness

-clearinghouse

-cleat

-cleated

-cleating

-cleats

-clemence

-clemency

-clement

-clemently

-clements

-clergymen

-cleric

-clerics

-clientele

-cliffhanging

-climactic

-climatological

-climatologically

-climatology

-clinician

-clinicians

-clinometer

-clinometer's

-clinometers

-clipboard

-clipboards

-cloakroom

-cloakrooms

-clockwatcher

-cloddish

-cloddishness

-clodhopper

-clodhopper's

-clodhoppers

-clomp

-clomped

-clomping

-clomps

-closeup

-closeups

-clot

-clothbound

-clothesbrush

-clothesline

-clotheslines

-clothesman

-clothesmen

-clothier

-clotted

-clotting

-cloture

-clotured

-clotures

-cloturing

-cloudburst

-cloudbursts

-cloy

-cloying

-cloyingly

-clubhouse

-clubroom

-clubrooms

-clunkiness

-clunky

-clunkyly

-cm

-coachmen

-coachwork

-coadjutor

-coagulable

-coalescence

-coalescent

-coastline

-coattail

-coattails

-coauthor

-cobalt

-cobble

-cobbled

-cobbles

-cobblestone

-cobblestoned

-cobblestones

-cobbling

-coble

-cobra

-cocaine

-cochineal

-cochlea

-cockatoo

-cockcrow

-cockeye

-cockeyed

-cockeyedly

-cockeyedness

-cockier

-cockiness

-cockle

-cocklebur

-cockleshell

-cockpit

-cockpits

-cockscomb

-cocksure

-cocky

-coda

-coddle

-coddled

-coddler

-coddles

-coddling

-codebook

-codebooks

-codebreak

-codetermine

-codetermines

-codfish

-codicil

-coed

-coedited

-coediting

-coeditor

-coeditor's

-coeditors

-coedits

-coeds

-coeducation

-coequal

-coequally

-coercible

-coexistent

-coextensive

-coextensively

-cofactor

-cofactors

-coffeecup

-coffeepot

-cog

-cognac

-cognate

-cognately

-cognates

-cognation

-cognations

-cogs

-cohabitational

-coherency

-cohort

-cohort's

-cohorts

-coiffure

-coiffured

-coincident

-coincidently

-coital

-coitally

-coitus

-cola

-colander

-colanders

-colatitude

-colatitudes

-coleus

-colicky

-coliform

-coliseum

-collagen

-collapsibility

-collapsible

-collarbone

-collard

-collectivities

-collegian

-collegians

-collimate

-collimated

-collimates

-collimating

-collimation

-collinear

-collinearity

-collocation

-colloidal

-colloidally

-colloquia

-colloquial

-colloquialism

-colloquialism's

-colloquialisms

-colloquially

-colloquium

-collude

-colluded

-colludes

-colluding

-collusion

-collusions

-colonialism

-colonialist

-colonnade

-colonnaded

-colonnades

-coloration

-coloratura

-coltish

-coltishly

-coltishness

-columbines

-columnist

-columnists

-coma

-comas

-comatose

-combatted

-combinable

-combo

-combos

-combustible

-combustibles

-comeback

-cometary

-comeuppance

-commando

-commandos

-commendable

-commendatory

-commensurable

-commercialism

-commies

-commingle

-commingled

-commiserate

-commiserated

-commiserates

-commiserating

-commiseration

-commiserative

-commissary

-committable

-committal

-committeeman

-committeemen

-committeewoman

-committeewomen

-commodious

-commodiously

-commodiousness

-communicable

-communicational

-communique

-communiques

-communism

-communistic

-commutable

-commutate

-commutated

-commutates

-commutating

-commutation

-commutations

-compaction

-compatriot

-compatriots

-compellable

-compendia

-compensable

-competencies

-competency

-complacency

-complacent

-complainant

-complainants

-complaisance

-complaisant

-complaisantly

-complementarity

-complementation

-compliant

-compliantly

-comport

-comported

-comportment

-compositor

-compositors

-compost

-compote

-compressibility

-compressor

-compressors

-compulsive

-compulsively

-compulsiveness

-compulsives

-compulsivity

-con

-concave

-conceptuality

-concertina

-concertmaster

-concerto

-concertos

-concessionaire

-concessionaires

-conch

-conches

-concierge

-concierges

-conciliate

-conciliated

-conciliates

-conciliation

-conciliations

-conciliative

-conciliator

-conciliatory

-conclave

-conclaves

-concoct

-concocted

-concocter

-concoctive

-concocts

-concordance

-concordant

-concordantly

-concourse

-concourses

-concubine

-concubines

-concussion

-concussions

-condemnate

-condemnatory

-condensate

-condensates

-condensations

-condensible

-condescension

-condiment

-condiments

-condo

-condo's

-condolence

-condolences

-condominium

-condominium's

-condominiums

-condoms

-condos

-conduce

-conduced

-conduces

-conducing

-conductance

-conductances

-coneflower

-coney

-confabulate

-confabulated

-confabulates

-confabulation

-confabulations

-confect

-confectionery

-confects

-conferee

-conferees

-conferrable

-confessional

-confessionally

-confessionals

-confirmatory

-confiscatory

-conflagration

-conflagrations

-confluent

-confluents

-conformal

-conformance

-conformation

-conformation's

-conformational

-conformationally

-conformations

-conformist

-conformists

-confrontational

-confute

-confuted

-confuter

-confutes

-confuting

-congeal

-congealed

-congealing

-congeals

-congeniality

-congenital

-congenitally

-congest

-congesting

-congestive

-congests

-conglomerate

-conglomerated

-conglomerates

-conglomeration

-conglomerations

-conglomerative

-congratulatory

-congregationalism

-congregationalist

-congregationalists

-congressmen

-congresswoman

-congresswomen

-congruity

-congruous

-congruously

-congruousness

-conic

-conical

-conically

-conicalness

-conics

-conifer

-coniferous

-conifers

-conjectural

-conjecturally

-conjoin

-conjoining

-conjoins

-conjoint

-conjointly

-conjugal

-conjugally

-conjugate

-conjugated

-conjugately

-conjugateness

-conjugates

-conjugating

-conjugation

-conjugations

-conjugative

-conjuncture

-conjunctures

-conk

-conked

-conker

-conkers

-conking

-conks

-conn

-conned

-conner

-conning

-connivance

-connive

-connived

-conniver

-connives

-conniving

-connotation

-connotations

-connotative

-connotatively

-connubial

-connubially

-conquistador

-conquistadores

-conquistadors

-consanguine

-consanguineous

-consanguineously

-consanguinity

-conscionable

-conscript

-conscripted

-conscripting

-conscription

-conscriptions

-conscripts

-consensual

-consensually

-conservator

-conservatory

-consistence

-consonance

-consonantal

-conspiratorial

-conspiratorially

-constance

-consternate

-consternated

-consternates

-consternating

-constrict

-constricted

-constricting

-constriction

-constrictions

-constrictive

-constrictor

-constrictors

-constricts

-constructional

-constructionally

-consular

-cont'd

-contaminant

-contaminants

-contentious

-contentiously

-contentiousness

-contestant

-contestants

-continence

-continuant

-contort

-contorted

-contorting

-contortion

-contortions

-contortive

-contorts

-contraband

-contrabass

-contraception

-contraceptive

-contraceptives

-contradictorily

-contraindicate

-contraindicated

-contraindicates

-contraindicating

-contraindication

-contraindication's

-contraindications

-contraindicative

-contrarily

-contravene

-contravened

-contravener

-contravenes

-contravening

-contravention

-contrite

-contritely

-contriteness

-contrition

-controversialists

-controvertible

-contumacy

-contumely

-contusion

-contusions

-convalesce

-convalescent

-convalescing

-convection

-convections

-conventionality

-conversationalist

-convexity

-conveyor

-conveyors

-convivial

-convivially

-convocation

-convocations

-convoke

-convoked

-convokes

-convoking

-convolute

-convolutely

-convolution

-convolutions

-convolve

-convolved

-convolves

-convolving

-convulse

-convulsed

-convulses

-convulsing

-convulsive

-convulsively

-convulsiveness

-cookbook

-cookbooks

-coolant

-coolants

-coolheaded

-coplanar

-copolymer

-copolymers

-copperhead

-coppersmith

-coppersmiths

-coppery

-copter

-copters

-copybook

-copybooks

-copyist

-copywriter

-coquette

-coquetted

-coquetting

-cordage

-cordite

-cordon

-corduroy

-corduroys

-coriander

-corkscrew

-corkscrews

-cornbread

-cornea

-cornet

-cornflower

-cornier

-corniest

-corniness

-cornmeal

-cornstarch

-cornucopia

-corny

-corona

-coronal

-coronate

-coroner

-coroners

-corporeal

-corporeality

-corporeally

-corporealness

-corpsman

-corpsmen

-corpulence

-corpulences

-corpulent

-corpulently

-corpulentness

-corpulentnesses

-corpuscular

-corral

-corralled

-corralling

-corrals

-corrigendum

-corrigible

-corrode

-corroded

-corrodes

-corrodible

-corroding

-corrosive

-corrosively

-corrosiveness

-corrosives

-corrugate

-corrugated

-corrugates

-corrugating

-corrugation

-corrugations

-corruptible

-corsage

-corsages

-cortex

-cortexes

-cortical

-cortically

-corticosteroid

-corticosteroids

-cortisone

-corundum

-coruscate

-coruscated

-coruscates

-coruscating

-coruscation

-coruscations

-corvette

-cosily

-cosmic

-cosmical

-cosmically

-cosmological

-cosmologically

-cosmologist

-cosmologist's

-cosmologists

-cosmopolitanism

-cosmos

-cosmoses

-cosponsor

-cosponsored

-cosponsors

-cossack

-cossacks

-cosy

-cotangent

-coterminous

-coterminously

-cotillion

-cotter

-cotters

-cottonmouth

-cottonseed

-cottonwood

-cottony

-cougar

-cougars

-could've

-coulomb

-councilman

-councilmen

-councilwoman

-councilwomen

-counterargument

-counterarguments

-counterattack

-counterattacker

-counterbalance

-counterbalanced

-counterbalances

-counterbalancing

-counterclaim

-countercyclical

-counterflow

-counterforce

-counterintuitive

-counterman

-countermand

-countermanded

-countermanding

-countermands

-countermen

-counterpoise

-counterproposal

-countersink

-countersinking

-countersinks

-countersunk

-countervail

-countervailed

-countervailing

-countervails

-counterweight

-counterweight's

-counterweighted

-counterweighting

-counterweights

-countrified

-countrify

-countrymen

-countrywide

-coup

-coupe

-couplet

-couplet's

-couplets

-coups

-courtesan

-covalent

-covalently

-covariance

-covariances

-covariant

-covariants

-covariate

-covariates

-covariation

-covary

-coven

-coverall

-coveralled

-coveralls

-covington

-cowbell

-cowbird

-cowbirds

-cowhand

-cowhands

-cowherd

-cowhide

-cowhided

-cowhiding

-cowlick

-coworker

-coworker's

-coworkers

-cowpoke

-cowpony

-cowpox

-cowpunch

-cowpuncher

-coxcomb

-coxcombs

-coy

-coyly

-coyness

-cozen

-crabapple

-crabbed

-crabbedly

-crabbedness

-crabbing

-crackpot

-crackpots

-craftsmanship

-craftsmen

-craftspeople

-craggier

-cragginess

-craggy

-crammed

-cramming

-cranelike

-crania

-cranium

-crankcase

-crankshaft

-crannied

-crannies

-cranny

-crappie

-crappier

-crass

-crassest

-crassly

-crassness

-craw

-crawlspace

-crawlway

-crawly

-crayfish

-crayon

-crayons

-creakier

-creaky

-creamery

-creationism

-creationism's

-credent

-credential

-credentials

-credenza

-credo

-credos

-creedal

-creekside

-creepier

-creepiness

-creepy

-crematory

-crescendo

-cress

-crestfallen

-crestfallenly

-crestfallenness

-cretinous

-crewcut

-crewel

-crewman

-crewmen

-cribbing

-criminality

-crimp

-crimped

-crimper

-crimping

-crimps

-crinkle

-crinkled

-crinkles

-crinkling

-crinkly

-criss

-crisscross

-crisscrossed

-crisscrosses

-criticality

-crock

-crocked

-crocker

-crockery

-crocks

-crocodile

-crocodiles

-crocus

-crocuses

-croft

-crofter

-crofters

-crone

-crones

-cronies

-crony

-croon

-crooned

-crooner

-crooners

-crooning

-croons

-crossarm

-crosshatch

-crosshatched

-crosshatches

-crosshatching

-crosspoint

-crossproduct

-crossproducts

-crossroad

-crossroading

-crossroads

-crosstalk

-crosswalk

-crossway

-crossways

-crosswise

-crotch

-crotched

-crotches

-crotchetiness

-crotchety

-croupier

-croutons

-crowbait

-crowbar

-crowbar's

-crowbars

-crowfoot

-crowfoots

-crucible

-crucifix

-crucifixion

-crud

-cruddy

-crudities

-crudity

-cruft

-crufty

-crummier

-crummies

-crummy

-crump

-crushproof

-cryogenic

-cryogenics

-cryostat

-crypt

-cryptanalyst

-cryptanalytic

-cryptogram

-cryptogram's

-cryptograms

-cryptographer

-cryptologic

-cryptological

-cryptologist

-crypts

-crystallite

-crystallites

-crystallographer

-crystallographers

-crystallographic

-crystallography

-cubbyhole

-cubicles

-cubism

-cubist

-cubists

-cud

-cuddlier

-cuddly

-cufflink

-cufflinks

-cuisine

-culinary

-culpa

-culpable

-culpableness

-culpas

-cultist

-cultists

-cultivable

-culvert

-cumin

-cumulate

-cumulated

-cumulates

-cumulating

-cumulation

-cumulations

-cumulus

-cupcakes

-cupidity

-cupric

-cuprous

-curate

-curative

-curatively

-curator

-curators

-curbside

-curd

-curdle

-curdled

-curdles

-curdling

-curia

-curiae

-curie

-curio

-curios

-curlicue

-curricula

-curtsey

-curtseyed

-curtseying

-curtseys

-curvaceous

-curvaceously

-curvilinear

-curvilinearity

-curvilinearly

-cushiest

-cushy

-custodial

-customhouse

-customhouses

-cutaneous

-cutaneously

-cutback

-cutbacks

-cutlass

-cutlet

-cutlets

-cutout

-cutouts

-cutthroat

-cuttlebone

-cuttlebones

-cuttlefish

-cuttlefishes

-cutworm

-cyanate

-cyanic

-cyanide

-cyclical

-cyclist

-cyclists

-cyclohexanol

-cyclopean

-cyclops

-cylindric

-cynic

-cynicism

-cynics

-cytochemistry

-cytolysis

-cytoplasm

-czarevitch

-czarina

-czarism

-czarist

-czarship

-d'art

-d'etat

-d'etre

-d'oeuvre

-d's

-dab

-dabbed

-dabbing

-dabs

-dachshund

-dactyl

-dactylic

-dactyls

-daffier

-daffy

-dairyland

-dairyman

-dairymen

-dais

-daises

-dallied

-dallier

-dally

-dallying

-dammed

-damming

-dammit

-dancelike

-dandily

-dang

-danged

-dank

-dankly

-dankness

-dapper

-dapperly

-dapperness

-dapple

-dappled

-dapples

-dappling

-dashboard

-dashboards

-dastard

-dastardliness

-dastardly

-databanks

-datafile

-datagram

-datagram's

-datagrams

-dataset

-datasets

-dateline

-datelined

-datelines

-daub

-daubed

-dauber

-daubs

-davenport

-davits

-dawdle

-dawdled

-dawdler

-dawdlers

-dawdles

-dawdling

-daybed

-deaconess

-deactivate

-deactivated

-deactivates

-deactivating

-deactivation

-deadhead

-deadheads

-deadweight

-deadwood

-dealerships

-dearie

-deassign

-deassigns

-deathbed

-deathward

-debacle

-debacles

-debar

-debarring

-debars

-debase

-debased

-debaser

-debases

-debasing

-debauch

-debauched

-debauchedly

-debauchedness

-debaucher

-debauchery

-debauches

-debenture

-debentures

-debility

-debit

-debited

-debiting

-debits

-debonair

-debonairly

-debonairness

-debrief

-debriefed

-debriefing

-debriefs

-debunk

-debunker

-debunking

-debunks

-debut

-debutante

-debutante's

-debutantes

-debuting

-debuts

-decaffeinate

-decaffeinated

-decaffeinates

-decaffeinating

-decal

-decant

-decanted

-decanter

-decanters

-decanting

-decants

-decapitated

-decathlon

-decathlons

-decedent

-decennial

-decennially

-decertification

-decertify

-dechlorinate

-dechlorinated

-dechlorinates

-dechlorination

-decibel

-decibels

-deciduous

-deciduously

-deciduousness

-decile

-decisional

-declaim

-declaimed

-declaimer

-declaiming

-declaims

-declamation

-declamations

-declamatory

-declarator

-declarators

-declaratory

-declassification

-declassifications

-declassify

-declension

-declensions

-declivity

-decolletage

-decolletages

-decollimate

-decompress

-decompressed

-decompresser

-decompresses

-decompressing

-decontaminated

-decontrol

-decontrolled

-decontrolling

-decor

-decorator

-decorators

-decorous

-decorously

-decorousness

-decorticate

-decorticated

-decorticates

-decorticating

-decortication

-decried

-decrier

-decries

-decry

-decrying

-decrypt

-decrypted

-decrypting

-decryption

-decrypts

-deductibility

-deductible

-deductibles

-deemphasis

-deerskin

-deerskins

-deerstalker

-deface

-defacement

-defacer

-defaces

-defacing

-defame

-defamed

-defamer

-defames

-defaming

-defecate

-defecated

-defecates

-defecating

-defecation

-defecations

-defensible

-deferent

-deferents

-deflate

-deflated

-deflater

-deflates

-deflating

-deflation

-deflect

-deflected

-deflecting

-deflection

-deflections

-deflective

-deflector

-deflects

-defocus

-defocusing

-deforestation

-deform

-deformational

-deforming

-deforms

-defraud

-defrauded

-defrauder

-defrauding

-defrauds

-defray

-defrayed

-defraying

-defrays

-defrost

-defrosted

-defroster

-defrosting

-defrosts

-deft

-defter

-deftest

-deftness

-defunct

-degrease

-degum

-degumming

-dehumidification

-dehumidifications

-dehumidified

-dehumidifier

-dehumidify

-dehydrate

-dehydrated

-dehydrates

-dehydrating

-dehydration

-deification

-deify

-deja

-deject

-dejection

-delectable

-delectableness

-delectation

-delegable

-deleterious

-deleteriously

-deleteriousness

-deli

-deli's

-delicatessen

-delicti

-delimitation

-delirium

-deliriums

-delis

-deliveryman

-deliveryman's

-deliverymen

-deliverymen's

-delouse

-deloused

-delouses

-delousing

-deltoid

-deltoids

-delusive

-delusively

-delusiveness

-deluxe

-demagnification

-demagnify

-demagogue

-demagogues

-demarcate

-demarcated

-demarcates

-demarcating

-demarcation

-demean

-demeaned

-demeaning

-demeans

-demented

-dementedly

-dementedness

-demerit

-demerits

-demigod

-demiscible

-demit

-demitted

-demitting

-demographer

-demographer's

-demographers

-demographical

-demographically

-demography

-demoniac

-demonic

-demonstrably

-demote

-demoted

-demotes

-demoting

-demotion

-demountable

-demultiplex

-demurred

-demurrer

-demurring

-denature

-denatured

-denatures

-denaturing

-denim

-denims

-denominate

-denominated

-denominationally

-denominative

-denouement

-densitometer

-densitometer's

-densitometers

-densitometric

-densitometry

-dentistry

-denture

-dentures

-denude

-denuded

-denuder

-denudes

-denuding

-denumerable

-denunciate

-denunciated

-denunciates

-denunciating

-denunciation

-denunciations

-denunciative

-deodorant

-deodorant's

-deodorants

-deoxyribonucleic

-depiction

-depictions

-deplorably

-deployable

-depositary

-depository

-depravities

-depravity

-deprecate

-deprecated

-deprecates

-deprecating

-deprecatingly

-deprecation

-deprecations

-deprecatory

-depreciable

-depredations

-depressant

-depressants

-depressible

-depressors

-deputation

-deputations

-depute

-deputed

-deputes

-deputing

-derange

-deranged

-derangement

-deranges

-deranging

-deregulate

-derelict

-dereliction

-derelicts

-derisive

-derisively

-derisiveness

-derivate

-derogate

-derogated

-derogates

-derogating

-derogation

-derogative

-derogatory

-derrick

-derricked

-derricking

-derricks

-derriere

-dervish

-dervishes

-descant

-descendent

-descendent's

-descendents

-desecrate

-desecrated

-desecrater

-desecrates

-desecration

-desegregate

-desegregated

-desegregates

-desegregating

-desegregation

-desist

-desorption

-desperado

-desperadoes

-despicably

-despoil

-despoiled

-despoiler

-despoilers

-despoiling

-despoils

-despond

-despondency

-despondent

-despondently

-despotism

-dessicate

-destinate

-destruct

-destructor

-destructs

-desuetude

-desultoriness

-desultory

-detachable

-detente

-detentions

-deter

-detergency

-detergent

-detergents

-determinability

-deterred

-deterrence

-deterrent

-deterrently

-deterrents

-deterring

-deters

-detersive

-detersives

-detestation

-detestations

-detonable

-detonator

-detonator's

-detonators

-detour

-detoured

-detouring

-detours

-detrimental

-detrimentally

-detune

-detuned

-detunes

-detuning

-deuce

-deuced

-deucedly

-deuces

-deucing

-deus

-deuterium

-deuteriums

-devaluation

-devalue

-devalued

-devalues

-devaluing

-deviance

-deviances

-devious

-deviously

-deviousness

-devoice

-devoiced

-devoices

-devoicing

-devolve

-devolved

-devolves

-devolving

-devotional

-devotionally

-dewar

-dewars

-dexter

-dextrous

-diabase

-diabetic

-diabetics

-diabolic

-diabolical

-diabolically

-diabolicalness

-diachronic

-diachronicness

-diacritical

-diacritically

-diacriticals

-diagnometer

-diagnometer's

-diagnometers

-diagnostician

-diagnosticians

-diagrammaticality

-dialectal

-dialectally

-dialectic

-dialectical

-dialectically

-dialectics

-dialysis

-diamagnetic

-diametric

-diaphanous

-diaphanously

-diaphanousness

-diathermy

-diathesis

-diatom

-diatomic

-diatoms

-diatonic

-dichloride

-dichotomous

-dichotomously

-dichotomousness

-dick

-dicker

-dickered

-dickering

-dickers

-dickey

-dicks

-dicotyledon

-dictatorial

-dictatorially

-dictatorialness

-didactic

-didactics

-diddle

-diddled

-diddler

-diddling

-diehard

-diehards

-diem

-diesel

-diesels

-dietaries

-dietary

-dietetic

-dietetics

-diethylaminoethyl

-diethylstilbestrol

-dietician

-dieticians

-differentiability

-differentiable

-differentiator

-difficile

-diffidence

-diffident

-diffidently

-diffract

-diffracted

-diffracting

-diffraction

-diffractions

-diffractometer

-diffractometer's

-diffractometers

-diffracts

-diffusible

-digitalis

-dignitaries

-dignitary

-digram

-dihedral

-dilapidate

-dilapidated

-dilapidates

-dilapidating

-dilapidation

-dilatation

-dilator

-dilatoriness

-dilatory

-dilettante

-dilettantes

-dilithium

-dill

-dillinger

-dilogarithm

-dimensionless

-dimethyl

-dimethylglyoxime

-ding

-dinghies

-dinghy

-dingo

-dinnertime

-dinnerware

-dinosaur

-dinosaurs

-diocesan

-diocese

-diorama

-dioramas

-dioxalate

-diphthong

-diphthongs

-dipodic

-dipody

-dipole

-dipole's

-dipoles

-directivity

-directorate

-directorship

-directrices

-directrix

-direful

-direfully

-disablement

-disaffected

-disaffectedly

-disaffectedness

-disaffection

-disaffiliate

-disaffiliated

-disaffiliates

-disaffiliating

-disaffiliation

-disaggregate

-disaggregated

-disaggregating

-disaggregation

-disaggregative

-disapprobation

-disarranged

-disarray

-disarrays

-disarticulated

-disassembly

-disavow

-disavowal

-disavowals

-disavowed

-disavowing

-disavows

-disbar

-disbars

-disbelief

-discipleship

-discomfit

-discomfited

-discomfiting

-discomfits

-discontinuation

-discordant

-discordantly

-discorporate

-discorporated

-discourteous

-discourteously

-discourteousness

-discrepant

-discrepantly

-discretionary

-discriminable

-discriminant

-discursive

-discursively

-discursiveness

-discus

-discuses

-discussant

-discussants

-disdainful

-disdainfully

-disdainfulness

-disembodied

-disembowel

-disembowels

-disenchantment

-disengagement

-disequilibrium

-disgruntle

-disgruntles

-disgruntling

-disgustful

-disgustfully

-disharmony

-dishevel

-dishevels

-dishonesty

-dishwater

-disincentives

-disinclination

-disincorporated

-disinherit

-disinheritance

-disinherited

-disinheriting

-disinherits

-disintegrate

-disintegrated

-disintegrates

-disintegrating

-disintegration

-disintegrations

-disintegrative

-disinterest

-disinterred

-disjoin

-diskette

-diskettes

-dislodgement

-disloyal

-disloyally

-disloyalty

-dismantle

-dismantled

-dismantles

-dismantling

-dismembered

-dismemberment

-disobedient

-disobediently

-disoriented

-disparage

-disparaged

-disparagement

-disparager

-disparages

-disparaging

-disparagingly

-dispassionate

-dispassionately

-dispassionateness

-dispensary

-dispensate

-dispersal

-dispersement

-dispersible

-dispositional

-dispossessed

-dispossession

-disproportion

-disproportional

-disproportionate

-disproportionately

-disproportionation

-disputable

-disputant

-disquietude

-disquisition

-disrepair

-disreputable

-disreputableness

-disrepute

-disrespect

-disrobe

-dissect

-dissected

-dissecting

-dissection

-dissects

-dissemble

-dissembled

-dissembler

-dissembling

-dissimulation

-dissociable

-dissonant

-dissonantly

-dissuade

-dissuaded

-dissuader

-dissuades

-dissuading

-distaff

-distaffs

-distend

-distended

-distension

-distillate

-distillates

-distillations

-distilleries

-distillery

-distortable

-distributorship

-disulfide

-disunion

-disunited

-disunity

-disuse

-disused

-disvalues

-disyllable

-dither

-dithered

-ditherer

-dithering

-ditties

-ditto

-dittos

-ditty

-diurnal

-diva

-divalent

-diversionary

-divertimento

-divestiture

-divination

-divisible

-divisional

-divisive

-divisively

-divisiveness

-divorcee

-divorcees

-divvied

-divvies

-divvying

-dizzily

-doable

-docile

-docilely

-docket

-docketed

-docketing

-dockets

-dockside

-dockyard

-doctrinaire

-doctrinal

-doctrinally

-dodecahedra

-dodecahedral

-dodecahedron

-doe

-doff

-doffing

-doffs

-doggone

-doggoned

-doggoning

-doghouse

-dogleg

-dogmatic

-dogmatically

-dogmatics

-dogtooth

-dogtrot

-dogwood

-doldrum

-doldrums

-dolomite

-dolomites

-dolomitic

-dolt

-doltish

-doltishly

-doltishness

-domesticity

-domicile

-domiciled

-dominator

-domineer

-domineering

-domineeringly

-domineeringness

-domino

-donned

-donning

-donnish

-donnishly

-donnishness

-donnybrook

-donor

-donors

-donuts

-doodle

-doodled

-doodler

-doodles

-doodling

-doomsday

-doorbell

-doorkeep

-doorkeeper

-doorkeepers

-doorknob

-doorknobs

-doorman

-doormen

-dopant

-dorm

-dormer

-dosage

-dosages

-dosimeter

-dosimeter's

-dosimeters

-dosimetry

-dossier

-dossiers

-dotage

-dotard

-doubleheader

-doubleton

-doubloon

-dour

-dourly

-dourness

-dovetail

-dowager

-dowagers

-dowdier

-dowdies

-dowdiness

-dowdy

-dowel

-dower

-downbeat

-downgrade

-downgraded

-downgrades

-downgrading

-downhill

-downpour

-downside

-downslope

-downspout

-downswings

-downtrend

-downtrodden

-downturn

-downturns

-downwind

-dowries

-dowry

-dowse

-dowser

-dowses

-dowsing

-draftee

-draftees

-dragger

-dragnet

-dragonfly

-dragonhead

-dram

-dramatical

-dramaturgy

-dreadnought

-dreamboat

-dreamless

-dreamlessly

-dreamlessness

-dreamlike

-dreamt

-dreg

-dressier

-dressiness

-dressmaking

-dressy

-drib

-dribble

-dribbled

-dribbler

-dribbles

-dribbling

-dribs

-dripped

-drippier

-dripping

-drippy

-drizzle

-drizzled

-drizzles

-drizzling

-drizzlingly

-drizzly

-droll

-drollness

-dromedary

-droopier

-droopy

-drophead

-droplet

-droplets

-dropout

-dropouts

-drosophila

-dross

-drowse

-drowsed

-drowses

-drowsily

-drowsing

-drub

-drubbing

-drudge

-drudger

-drudges

-drudging

-drudgingly

-drugged

-drugging

-drugless

-drugstore

-drugstores

-druid

-drumhead

-dryer

-dryers

-dryness

-drywall

-dualism

-dubbed

-ducat

-duce

-duces

-duckling

-duct

-ducted

-ductile

-ducting

-ducts

-ductwork

-dud

-duds

-duet

-duets

-duff

-duffel

-duffer

-duffers

-dugout

-dukedom

-dulcet

-dulcetly

-dulcify

-dullard

-dumbfound

-dumbfounded

-dumbfounder

-dumbfounds

-dumpier

-dumpiness

-dumpy

-dun

-dung

-dunk

-dunker

-duopolist

-duopoly

-dupe

-duped

-duper

-dupes

-duping

-dupion

-duplex

-duplexer

-duplicable

-duplicity

-durational

-duress

-dustbin

-dustbins

-dutiable

-dwarves

-dwelt

-dyad

-dyadic

-dyads

-dynamical

-dynamism

-dynamo

-dynamos

-dynastic

-dysentery

-dyspeptic

-dysprosium

-dystopia

-dystrophy

-e'er

-e's

-eardrum

-eardrums

-earphone

-earphones

-earsplitting

-earthier

-earthiness

-earthmen

-earthmover

-earthmoving

-earthy

-easel

-eastbound

-easternmost

-easygoing

-easygoingness

-eatable

-eatables

-eave

-ebullient

-ebulliently

-ecclesiastic

-echelon

-echelons

-echinoderm

-eclectic

-eclectically

-ecliptic

-ecological

-ecologically

-ecologists

-econometric

-econometricians

-econometrics

-ecosystem

-ecosystems

-ecstatic

-ecstatics

-ecumenic

-ecumenic's

-ecumenical

-ecumenically

-ecumenicist

-ecumenicist's

-ecumenicists

-ecumenics

-ecumenist

-ecumenist's

-ecumenists

-ed

-edelweiss

-eden

-edgewise

-edgier

-edginess

-edgy

-edification

-edified

-edifies

-edify

-edifying

-editorialist

-editorship

-educe

-educing

-eelgrass

-eerily

-efface

-effaceable

-effaced

-effacer

-effaces

-effacing

-effectual

-effectualness

-effectuate

-effectuated

-effectuates

-effectuating

-effectuation

-efferent

-efferently

-effete

-effetely

-effeteness

-efficacious

-efficaciously

-efficaciousness

-effloresce

-efflorescent

-effluent

-effluents

-effluvia

-effluvium

-efflux

-effluxion

-effuse

-effused

-effuses

-effusing

-effusion

-effusive

-effusively

-effusiveness

-egalitarian

-egalitarianism

-egghead

-eggheaded

-eggheadedness

-eggplant

-eggshell

-egocentric

-egotism

-egotist

-egotistic

-egotistical

-egotistically

-egotists

-egregious

-egregiously

-egregiousness

-egress

-egret

-egrets

-eh

-eider

-eidetic

-eigenstate

-eigenstates

-eigenvector

-eigenvectors

-eightfold

-einsteinium

-ejection

-ejector

-ejectors

-elan

-elastomer

-electorate

-electress

-electrician

-electricians

-electro

-electrocardiogram

-electrocardiogram's

-electrocardiograms

-electrocardiograph

-electrodynamic

-electrodynamicly

-electrodynamics

-electroencephalogram

-electroencephalogram's

-electroencephalograms

-electrolysis

-electromagnet

-electromagnetism

-electromagnetisms

-electromagnets

-electromyograph

-electromyographic

-electromyographically

-electromyography

-electrophoresis

-electrophorus

-electroshock

-electroshocks

-electrostatic

-electrostatics

-electrotherapist

-electrotypers

-electroweak

-elegiac

-elegies

-elegy

-elephantine

-elfin

-elision

-elisions

-elite

-eliteness

-elites

-ellipsometer

-ellipsometer's

-ellipsometers

-ellipsometry

-ellipticity

-elocution

-elope

-eloped

-eloper

-elopes

-eloping

-eluate

-eluates

-elute

-eluted

-eluting

-elution

-elysian

-emaciate

-emaciates

-emaciating

-emaciation

-emanate

-emanated

-emanates

-emanation

-emanations

-emanative

-emancipate

-emancipated

-emancipates

-emancipating

-emasculate

-emasculated

-emasculates

-emasculating

-emasculation

-embalm

-embalmer

-embalmers

-embalming

-embalms

-embank

-embanked

-embanking

-embankment

-embankments

-embanks

-embarcadero

-embargo

-embargoed

-embargoes

-embargoing

-embattle

-embattled

-embattles

-embattling

-embedder

-embezzlement

-embittered

-emblematic

-embolden

-emboldened

-emboldens

-emboss

-embossed

-embosser

-embossers

-embosses

-embossing

-embower

-embraceable

-embrittle

-embroil

-embroiled

-embroiling

-embroils

-embryonic

-emcee

-emceed

-emend

-emendable

-emender

-emeritus

-emirate

-emissaries

-emissary

-emission

-emission's

-emissions

-emissivities

-emissivity

-emittance

-emitter

-emitters

-emitting

-emolument

-emoluments

-emotionalism

-emotionality

-empath

-empathetically

-empathic

-emphysema

-emphysematous

-empiric

-empiricism

-emplace

-employability

-emporium

-emporiums

-emulsification

-emulsified

-emulsifier

-emulsifies

-emulsify

-emulsion

-emulsions

-encampment

-encase

-encased

-encephalitis

-encephalographic

-enchain

-enchained

-enchantress

-enchiladas

-enclave

-enclaves

-encomium

-encomiums

-encore

-encored

-encores

-encoring

-encroach

-encroached

-encroacher

-encroaches

-encroaching

-encroachment

-encrust

-encrusted

-encrusting

-encrusts

-encumbrance

-encumbrancer

-encumbrances

-encyclical

-endearment

-endearments

-endemicity

-endgame

-endnote

-endnote's

-endnotes

-endogamous

-endogamy

-endogenous

-endogenously

-endosperm

-endothelial

-endothermic

-endpoint

-endpoints

-energetically

-enervate

-enervated

-enervates

-enervating

-enervation

-enervative

-enfeeble

-enfeebled

-enfeebles

-enfeebling

-enforceability

-enforceable

-enforcible

-engorge

-engorged

-engorges

-engorging

-engulfed

-engulfing

-engulfs

-enigma

-enjoinder

-enlargeable

-enmesh

-enmeshed

-enquiries

-enquiry

-enrapture

-enraptured

-enraptures

-enrapturing

-enrichment

-enrollee

-enrollees

-ensconced

-enshroud

-enslavement

-entailment

-entanglement

-enthalpy

-enthralled

-enthralling

-enthrone

-enthroned

-enthrones

-enthroning

-enthuse

-enthused

-enthuses

-enthusing

-enticements

-entitlement

-entitlements

-entomb

-entombed

-entomologist

-entomology

-entourage

-entourages

-entrain

-entrained

-entrainer

-entraining

-entrains

-entranceway

-entrant

-entrants

-entrap

-entrapment

-entrapments

-entrapped

-entraps

-entree

-entrees

-entrenchment

-entrenchments

-entrepreneurial

-entrepreneurship

-entwine

-entwined

-entwines

-entwining

-enunciable

-enunciate

-enunciated

-enunciates

-enunciating

-envenom

-envenomed

-envenoming

-envenoms

-enviable

-enviableness

-enzymatic

-enzymatically

-enzyme

-enzymes

-enzymology

-eohippus

-ephemerides

-ephemeris

-epicure

-epicurean

-epicycle

-epicycles

-epicyclic

-epicyclical

-epicyclically

-epidemiological

-epidemiologically

-epidemiology

-epidermic

-epidermis

-epigenetic

-epigram

-epigrammatic

-epigrams

-epigraph

-epigrapher

-epilepsy

-epileptic

-epileptics

-epilogue

-epilogues

-epiphany

-epiphenomena

-episcopate

-epistolatory

-epitaxy

-epithelial

-epithelium

-epitome

-epitomes

-epochal

-epochally

-epoxy

-equable

-equableness

-equanimities

-equanimity

-equestrian

-equestrians

-equidistant

-equidistantly

-equilateral

-equilaterals

-equilibrate

-equilibrated

-equilibrates

-equilibrating

-equilibration

-equilibria

-equine

-equines

-equinox

-equipotent

-equiproportional

-equiproportionality

-equiproportionate

-equivocal

-equivocally

-equivocalness

-equivocation

-eradicable

-erbium

-ergodic

-ergodicity

-erode

-eroded

-erodes

-erodible

-eroding

-erosible

-erosion

-erosive

-erosiveness

-erotic

-erotica

-erotically

-errancies

-errancy

-errant

-errantly

-errantry

-errants

-errata

-erratas

-erratically

-erratum

-ersatz

-erstwhile

-erudite

-eruditely

-erudition

-erupt

-erupted

-erupting

-eruptive

-eruptively

-erupts

-escadrille

-escapist

-escarpment

-escarpment's

-escarpments

-escritoire

-escrow

-escutcheon

-escutcheons

-esophagi

-esplanade

-espousal

-espousals

-essayists

-esters

-estimable

-estimableness

-estimator

-estimators

-estoppal

-estrange

-estranged

-estrangement

-estranger

-estranges

-estranging

-estuaries

-estuarine

-estuary

-et

-eta

-etas

-etcetera

-etceteras

-etched

-ethane

-ethanol

-ethicist

-ethicists

-ethnically

-ethnicities

-ethnicity

-ethnographers

-ethnographic

-ethnography

-ethnology

-ethnomethodology

-ethology

-ethos

-ethyl

-ethylene

-etymological

-etymologically

-etymologies

-etymology

-eucalyptus

-eugenic

-eugenics

-eulogies

-eulogy

-euphemist

-euphony

-euphoric

-eureka

-europium

-euthanasia

-evanescent

-evangelic

-evangelical

-evangelicalism

-evangelically

-evangelism

-evangelist

-evangelistic

-evangelists

-evasion

-evasions

-evasive

-evasively

-evasiveness

-evensong

-eventide

-eventides

-eventuate

-eventuated

-eventuates

-eventuating

-everyman

-evidential

-evidentially

-evildoer

-evildoers

-evocable

-evocate

-evocation

-evocations

-evocative

-evocatively

-evocativeness

-evolutionists

-ex

-exaltation

-exaltations

-examinable

-excelsior

-excisable

-excitability

-excitatory

-exclamatory

-exclusionary

-excoriate

-excoriated

-excoriates

-excoriating

-excoriation

-excoriations

-excrescence

-excrescences

-excretory

-excruciate

-excruciated

-excruciates

-excruciating

-excruciation

-exculpatory

-excursus

-excursuses

-exec

-execrable

-execrableness

-execrate

-execrated

-execrates

-execrating

-execration

-execrative

-executrix

-executrixes

-exegesis

-exegete

-exemption

-exemptions

-exercisable

-exhilarate

-exhilarated

-exhilarates

-exhilarating

-exhilaratingly

-exhilaration

-exhilarative

-exhort

-exhorted

-exhorter

-exhorting

-exhorts

-exhumation

-exhumations

-exhume

-exhumed

-exhumer

-exhumes

-exhuming

-exigent

-exigently

-exodus

-exogamous

-exogamy

-exogenous

-exogenously

-exonerate

-exonerated

-exonerates

-exonerating

-exoneration

-exonerative

-exorciser

-exorcism

-exorcist

-exoskeleton

-exothermic

-exotica

-expansible

-expansionist

-expectable

-expectorant

-expectorate

-expectoration

-expediency

-expellable

-experiential

-experientially

-experimentalism

-experimentalist

-experimentalist's

-experimentalists

-expiable

-expiate

-expiated

-expiates

-expiating

-expiation

-expletive

-expletives

-explicable

-explicate

-explicated

-explicates

-explicating

-explication

-explicative

-explicatively

-exportation

-exposit

-exposited

-expressionism

-expressionist

-expressionistic

-expressionists

-expressionless

-expressionlessly

-expressionlessness

-expressway

-expressways

-expurgate

-expurgated

-expurgates

-expurgating

-expurgation

-extemporaneous

-extemporaneously

-extemporaneousness

-extempore

-extendibility

-extensional

-extensionally

-extensor

-exterminator

-exterminator's

-exterminators

-extern

-externalities

-extirpate

-extirpated

-extirpating

-extirpation

-extirpative

-extolled

-extoller

-extolling

-extort

-extorted

-extorter

-extorting

-extortive

-extorts

-extracellular

-extracellularly

-extraditable

-extralegal

-extralegally

-extramarital

-extraterrestrial

-extravaganza

-extravaganzas

-extrema

-extremism

-extricable

-extricate

-extricated

-extricates

-extricating

-extrication

-extroversion

-extrovert

-extroverted

-extroverts

-extrude

-extruded

-extruder

-extrudes

-extruding

-extrusion

-extrusive

-exuberant

-exuberantly

-exudation

-exude

-exuded

-exudes

-exuding

-exultant

-exultantly

-eyeful

-eyelash

-eyelashes

-eyeless

-eyelet

-eyelets

-eyesore

-eyesore's

-eyesores

-eyeteeth

-f's

-faceplate

-facetious

-facetiously

-facetiousness

-facilitators

-facilitatory

-factious

-factiously

-factiousness

-facto

-factuality

-fad

-fadeout

-fads

-faerie

-faery

-failsafe

-fairgoer

-fairgoers

-fairgrounds

-fairless

-fairway

-fairways

-falafel

-falconry

-falloff

-fallout

-fallouts

-fallow

-fallowness

-familial

-fanatical

-fanaticalness

-fanaticism

-fanfare

-fanfold

-fangled

-fanout

-fantasia

-fantasist

-fantastically

-farcical

-farcically

-farfetched

-farfetchedness

-farina

-farmland

-farmlands

-farmworker

-farmworkers

-farsighted

-farsightedly

-farsightedness

-fascicle

-fascicled

-fascicles

-fasciculate

-fasciculated

-fasciculation

-fasciculations

-fascism

-fascist

-fascists

-fastidious

-fastidiously

-fastidiousness

-fatalistic

-fatalists

-fateful

-fatefully

-fatefulness

-fatherhood

-fatherless

-fatso

-fattier

-fatties

-fattiness

-fatty

-fatuity

-fatuous

-fatuously

-fatuousness

-faucet

-faucets

-faun

-fauna

-fax

-fax's

-faxes

-faze

-fazed

-fazes

-fazing

-fealty

-fearsome

-fearsomely

-fearsomeness

-feasibly

-featherbed

-featherbedding

-featherbrain

-featherbrained

-feathertop

-featherweight

-feathery

-febrile

-feces

-fecund

-fecundability

-fecundity

-federalism

-federalist

-federalists

-federate

-federated

-federates

-federating

-federations

-federative

-federatively

-fedora

-feint

-feinted

-feinting

-feints

-feldspar

-felicitous

-felicitously

-felicitousness

-feline

-felinely

-felines

-fella

-fellas

-felon

-felonious

-feloniously

-feloniousness

-felons

-felony

-feminism

-femme

-femmes

-fencepost

-fend

-fender

-fenders

-fennel

-fermion

-fermion's

-fermions

-fermium

-fernery

-ferret

-ferreted

-ferreter

-ferreting

-ferrets

-ferric

-ferris

-ferro

-ferroelectric

-ferromagnet

-ferromagnetic

-ferrous

-fervid

-fervidly

-fervidness

-fest

-fester

-festered

-festering

-festers

-fetal

-fete

-feted

-fetes

-fetish

-fetishes

-fettle

-fettled

-fettles

-fettling

-feudalistic

-feudatory

-fiance

-fiancee

-fiasco

-fiat

-fiats

-fib

-fibbing

-fibrin

-fibrosis

-fiche

-fictive

-fictively

-fiddlestick

-fiddlesticks

-fide

-fidget

-fidgeted

-fidgeting

-fidgets

-fiducial

-fiducially

-fiduciary

-fief

-fiefdom

-fieldstone

-fieldwork

-fieldworker

-fieldworkers

-fiendish

-fiendishly

-fiendishness

-fierily

-fiesta

-fifths

-figment

-figural

-figurine

-figurines

-filamentary

-filbert

-filberts

-filch

-filched

-filches

-filet

-filets

-filibuster

-filibustered

-filibusterer

-filibustering

-filibusters

-filigree

-filigreed

-fillet

-filleted

-filleting

-fillets

-fillies

-filly

-filmdom

-filmier

-filminess

-filmstrip

-filmstrips

-filmy

-filtrate

-filtrated

-filtrates

-filtrating

-finale

-finale's

-finales

-finalist

-finalists

-finch

-findable

-finesse

-finessed

-finessing

-fingernail

-fingernails

-fingerprint

-fingerprinted

-fingerprinting

-fingerprints

-fingertip

-fingertips

-finial

-finickiness

-finicky

-fink

-finned

-finny

-fireball

-fireballs

-fireboat

-firebreak

-firebreaks

-firebug

-firecracker

-firecrackers

-firefight

-firefighters

-firefighting

-firefights

-firehouse

-firehouses

-firemen

-firepower

-fireproof

-firewall

-firework

-fishier

-fishmeal

-fishmonger

-fishmongers

-fishpond

-fishy

-fissile

-fission

-fissioned

-fissioning

-fissions

-fisticuff

-fisticuffs

-fittest

-fivefold

-fizz

-fizzer

-fizzle

-fizzled

-fizzles

-fizzling

-fjord

-fjords

-flabbergast

-flabbergasted

-flabbergasting

-flabbergastingly

-flabbergasts

-flagellate

-flagellated

-flagellates

-flagellating

-flagellation

-flagman

-flagpole

-flagpoles

-flagstaff

-flagstone

-flail

-flailed

-flailing

-flails

-flair

-flak

-flakier

-flakiness

-flaky

-flam

-flamboyant

-flamboyantly

-flamen

-flamethrower

-flange

-flanged

-flanges

-flapped

-flapper

-flappers

-flashback

-flashbacks

-flashbulb

-flashbulbs

-flashier

-flashiness

-flashy

-flatbed

-flathead

-flatiron

-flatirons

-flatland

-flatlander

-flatlands

-flatulence

-flatulent

-flatulently

-flatworm

-flautist

-flaxseed

-fleawort

-fleck

-flecked

-flecker

-flecking

-flecks

-fledge

-fledges

-fledging

-fletch

-fletched

-fletcher

-fletches

-fletching

-fletching's

-fletchings

-flex

-flexed

-flexing

-flexural

-flexure

-flimsier

-flimsies

-flimsiness

-flimsy

-flintier

-flintiness

-flintless

-flintlock

-flinty

-flipflop

-flippant

-flippantly

-flipped

-flippers

-flipping

-flirtation

-flirtations

-flirtatious

-flirtatiously

-flirtatiousness

-flitting

-flocculate

-flocculated

-flocculates

-flocculating

-flocculation

-floe

-floes

-flog

-flogged

-flogging

-flogs

-floodgate

-floodlight

-floorboard

-floorboards

-flophouses

-flopped

-flopping

-floral

-florally

-florid

-floridly

-floridness

-florist

-florists

-flotation

-flotations

-flotilla

-flotillas

-flounce

-flounced

-flounces

-flouncing

-floury

-flout

-flouted

-flouter

-flouting

-flouts

-flowerpot

-flowstone

-flu

-flub

-flubbed

-flubbing

-flubs

-flue

-fluency

-fluff

-fluffs

-fluke

-fluoresce

-fluorescent

-fluorescer

-fluoresces

-fluoridate

-fluoridated

-fluoridates

-fluoridating

-fluoridation

-fluoridations

-fluoride

-fluorides

-fluorimetric

-fluorinated

-fluorine

-fluorite

-fluorocarbon

-flushable

-fluster

-flustered

-flustering

-flusters

-flutist

-flux

-fluxed

-fluxes

-flyaway

-flycatcher

-flycatchers

-flywheel

-flywheels

-foal

-foals

-foamier

-foaminess

-foamy

-fob

-foible

-foibles

-foist

-foisted

-foisting

-foists

-foldout

-foldouts

-foliate

-foliated

-foliates

-foliating

-foliation

-foliations

-folio

-folios

-folklike

-folksier

-folksiness

-folksong

-folksongs

-folksy

-follicle

-follicles

-follicular

-followup

-followup's

-followups

-foment

-fomented

-fomenter

-fomenting

-foments

-foolhardiness

-foolhardy

-footage

-footages

-footbridge

-footbridges

-footfall

-footfalls

-foothill

-foothills

-footloose

-footmen

-footpad

-footpads

-footpath

-footstool

-footstools

-footwear

-footwork

-fop

-foppery

-foppish

-foppishly

-foppishness

-fops

-forbore

-forebears

-foreclosed

-foreclosing

-forefeet

-forefront

-foreknowledge

-foreknown

-foreleg

-foremen

-forensic

-forensics

-forepart

-forepaws

-forerunner

-forerunners

-foresaw

-foreseeing

-foreshortened

-foreshortening

-forestry

-foreword

-forfeiture

-forfeitures

-forfend

-forfended

-forfending

-forfends

-forgo

-forgoer

-forgoing

-forklift

-formability

-formaldehyde

-formate

-formates

-formic

-formidably

-formulaic

-forsook

-forswear

-forswears

-forthcome

-forthright

-forthrightly

-forthrightness

-fortiori

-fossiliferous

-foulmouth

-foulmouthed

-foundling

-foundlings

-fountainhead

-fourfold

-foursome

-foursomes

-foursquare

-fourths

-fovea

-foxglove

-foxhole

-foxholes

-foxhound

-foxier

-foxiness

-foxtail

-foxy

-foyer

-fracases

-fractionated

-fractionation

-fractious

-fractiously

-fractiousness

-fragmentarily

-fragmentation

-francium

-frankfurter

-frankfurters

-franklin

-fraudulent

-fraudulentness

-frazzle

-frazzled

-frazzles

-frazzling

-freakish

-freakishly

-freakishness

-freeboot

-freebooter

-freebooters

-freeborn

-freedman

-freedmen

-freehand

-freehanded

-freehandedly

-freehold

-freeholder

-freeholders

-freemen

-freestone

-freethinkers

-freewheel

-freewheeled

-freewheeler

-freewheelers

-freewheeling

-freewheelingness

-freewheels

-frenetic

-freon

-fresco

-frescoed

-frescoes

-frescoing

-frescos

-freshwater

-fretted

-fretting

-friable

-friableness

-frictional

-frictionally

-friendlily

-frigid

-frigidly

-frigidness

-frilly

-friskier

-friskiness

-frisky

-fritter

-fritterer

-fritters

-frivolity

-frizzle

-frizzled

-frizzles

-frizzling

-fro

-frolicking

-frontage

-frontal

-frontally

-frontiersman

-frontiersmen

-frostbite

-frostbiting

-frostbitten

-frothier

-frothiness

-frothy

-frowzier

-frowzy

-frugality

-frustum

-fuchsia

-fuck

-fuck's

-fucked

-fucker

-fucker's

-fuckers

-fucking

-fucks

-fudge

-fudged

-fudges

-fudging

-fugue

-fulcrum

-fullback

-fullbacking

-fulminate

-fulminated

-fulminates

-fulminating

-fulmination

-fulminations

-fulsome

-fulsomely

-fulsomeness

-fumigant

-fumigate

-fumigated

-fumigates

-fumigation

-fumigations

-functionalism

-functionalist

-functionalists

-functionary

-fundamentalism

-funereal

-funereally

-fungal

-fungi

-fungible

-fungicides

-fungoid

-funk

-furbish

-furbisher

-furbishes

-furbishing

-furl

-furled

-furlong

-furlongs

-furlough

-furloughed

-furor

-furor's

-furors

-furrier

-furriers

-furring

-furry

-furthermost

-furthest

-fuselage

-fuselages

-fusible

-fusiform

-fusillade

-fusillades

-fussier

-fussily

-fussiness

-fussy

-fustiness

-fusty

-fuzz

-fuzzed

-g's

-gab

-gabbing

-gadfly

-gadgetry

-gaffe

-gaffer

-gaffes

-gaggle

-gagwriter

-gagwriters

-gainful

-gainfully

-gainfulness

-gal

-gala

-galactic

-galen

-galena

-galenite

-gallium

-gallivant

-gallivanted

-gallivanting

-gallivants

-gallonage

-gallstone

-gallstones

-gals

-galvanic

-galvanism

-galvanometer

-galvanometer's

-galvanometers

-gambit

-gambits

-gambol

-gambols

-gamecock

-gamut

-gander

-gangland

-gangling

-ganglion

-gangplank

-gangway

-gangways

-gantries

-gantry

-gardenia

-gardenias

-gargantuan

-gargoyle

-gargoyled

-gargoyles

-garish

-garishly

-garishness

-garnet

-garret

-garrets

-garrulous

-garrulously

-garrulousness

-gasification

-gasifications

-gasified

-gasifier

-gasifiers

-gasifies

-gasify

-gasifying

-gasket

-gaskets

-gaslight

-gaslighted

-gaslights

-gassiness

-gassy

-gastronome

-gastronomes

-gastronomy

-gator

-gauche

-gauchely

-gaucheness

-gaugeable

-gauntlet

-gauntleted

-gauss

-gausses

-gavel

-gawk

-gawker

-gawkier

-gawks

-gawky

-gazelle

-gazelles

-gazette

-gazetted

-gazetteer

-gazetteers

-gazettes

-gazetting

-gee

-geek

-geek's

-geeks

-geest

-geisha

-geishas

-gelable

-gelatine

-gelatinous

-gelatinously

-gelatinousness

-geld

-gelding

-geldings

-gemlike

-genealogies

-genealogists

-genealogy

-genera

-generational

-genesis

-geneticist

-geneticist's

-geneticists

-genie

-genie's

-genies

-genitive

-genitive's

-genitives

-genotype

-genotype's

-genotypes

-gent

-gentian

-gentians

-gentile

-gentiles

-gentility

-gentlemen

-gentlewomen

-gentlewomen's

-gentrification

-gents

-geocentric

-geocentricism

-geochemical

-geochemically

-geochemistry

-geochronology

-geodesic

-geodesics

-geodetic

-geographer

-geographer's

-geographers

-geologic

-geology

-geometer

-geometer's

-geometers

-geometrical

-geometrically

-geometrician

-geomorphological

-geomorphology

-geophysical

-geophysically

-geophysicist

-geophysicists

-geophysics

-geopolitic

-geopolitical

-geopolitically

-geopolitics

-geosynchronous

-gerbil

-geriatric

-geriatrics

-germanium

-germicidal

-germicide

-germicides

-germinal

-germinally

-gerontologist

-gerontologists

-gerontology

-gerrymandering

-gerund

-gerundive

-gestapo

-gestate

-gestated

-gestates

-gestating

-gestation

-gestation's

-gestations

-gesticulate

-gesticulated

-gesticulates

-gesticulating

-gesticulation

-gesticulations

-gesticulative

-gesticulatively

-getaway

-getaways

-geyser

-geysered

-geysering

-geysers

-gherkin

-gherkins

-ghetto

-ghettos

-ghostlike

-ghoul

-ghoulish

-ghoulishly

-ghoulishness

-ghouls

-giantess

-gibber

-gibbered

-gibbering

-gibbers

-gibbet

-gibbeted

-gibbeting

-gibbets

-gibbon

-gibbons

-gibbous

-gibbously

-gibbousness

-gibe

-giber

-gibes

-gibing

-giblet

-giblets

-giddap

-giddily

-gigacycle

-gigacycles

-gigahertz

-gigavolt

-gigawatt

-gigging

-gila

-gilbert

-gimpy

-ginkgo

-ginmill

-ginning

-ginseng

-girlie

-girlish

-girlishly

-girlishness

-gist

-git

-giveaway

-giveaways

-glaciate

-glaciated

-glaciates

-glaciating

-glaciation

-gladden

-gladdened

-gladdening

-gladdens

-gladdy

-gladiator

-gladiators

-gladiolus

-glamorous

-glamorously

-glamorousness

-glandular

-glandularly

-glassless

-glassware

-glasswort

-glaucoma

-glaucous

-glaziers

-glib

-glibly

-glibness

-glim

-gloat

-gloated

-gloater

-gloats

-glob

-globetrotter

-globule

-globulin

-globulins

-glommed

-glottis

-gloveless

-gluey

-glum

-glumly

-glumness

-glut

-gluten

-glutinous

-glutinously

-glutinousness

-gluts

-glutted

-glutting

-glutton

-glutton's

-gluttons

-glyceride

-glycerin

-glycerinate

-glycerinated

-glycerine

-glycerol

-glycol

-glycols

-glyph

-gnarl

-gnarled

-gnarls

-gnash

-gnashes

-gnashing

-gneiss

-gnome

-gnomelike

-gnomes

-gnomonic

-gnostic

-gnu

-gnus

-gob

-gobbledygook

-goddamn

-goddamned

-godfather

-godhead

-godless

-godlessness

-godparent

-godsend

-godsends

-godson

-goggle

-goggled

-goggler

-gogglers

-goggles

-goggling

-goldenrod

-goldenseal

-goldfinch

-goldfish

-goldsmiths

-golly

-gondola

-gondolas

-goober

-goodwill

-gooey

-goof

-goofed

-goofier

-goofiness

-goofing

-goofs

-goofy

-gooseberry

-gopher

-gophers

-gorgon

-goshawk

-gosling

-gossamer

-gourd

-gourmand

-gourmand's

-gourmands

-gourmet

-gourmets

-gout

-governance

-grad

-gradate

-gradated

-gradates

-gradating

-grads

-gradualist

-gradualists

-graffiti

-grail

-grails

-grammarian

-grammarians

-grammatic

-grammaticality

-grandchild

-grandchildren

-granddaughter

-granddaughters

-grandiloquent

-grandiloquently

-grandnephew

-grandnephews

-grandniece

-grandnieces

-grandstand

-grandstanded

-grandstander

-grandstanding

-grandstands

-granola

-grantee

-grantor

-granular

-granularly

-granule

-granules

-granulocytic

-grapefruit

-grapheme

-grasshoppers

-grassland

-grasslands

-grassroots

-gratis

-graven

-gravestone

-gravestones

-graveyard

-graveyards

-gravid

-gravidly

-gravidness

-gravimetric

-gravitate

-gravitated

-gravitates

-gravitating

-gravitations

-gravitative

-graybeard

-graybeards

-greatcoat

-greatcoated

-greatcoats

-greenbelt

-greenery

-greengrocer

-greenwood

-gregarious

-gregariously

-gregariousness

-greyhound

-griddle

-gridiron

-griffin

-grillwork

-grimace

-grimaced

-grimacer

-grimaces

-grimacing

-grime

-grimes

-grimmer

-grinned

-grinning

-grinningly

-grisliness

-grisly

-grist

-gristlier

-gristliness

-gristly

-gristmill

-grittier

-grittiness

-gritty

-grizzle

-grizzled

-grizzles

-grizzling

-groat

-groats

-groggier

-grogginess

-groggy

-groin

-grok

-grokked

-grokking

-groks

-grommet

-groomsmen

-grosbeak

-grottoes

-grouchier

-grouchiness

-grouchy

-groundhog

-groundhog's

-groundhogs

-groundless

-groundlessly

-groundlessness

-groundskeepers

-grout

-grouted

-grouter

-grouting

-grouts

-grovelike

-grubbier

-grubbiness

-grubbing

-grubby

-guano

-guardhouse

-gubernatorial

-guerilla

-guernsey

-guernseys

-guesswork

-guffaw

-guffaws

-guidepost

-guideposts

-guildhall

-guileless

-guilelessly

-guilelessness

-guitarist

-guitarists

-gullet

-gullets

-gullible

-gumbo

-gummier

-gumminess

-gumming

-gummy

-gumption

-gumshoe

-gunboat

-gunfight

-gunfighter

-gunfights

-gunflint

-gunk

-gunky

-gunman

-gunmen

-gunnery

-gunny

-gunshot

-gunsling

-gunslinger

-gunslinging

-gusset

-gussets

-gustiness

-gusto

-gusty

-gutsier

-gutsiness

-gutsy

-gutted

-gutting

-guttural

-gutturalness

-guzzle

-guzzled

-guzzler

-guzzles

-guzzling

-gymnosperm

-gyp

-gypping

-gypsite

-gypsum

-gyrate

-gyrated

-gyrates

-gyrating

-gyro

-gyrocompass

-gyros

-gyroscopic

-h's

-habeas

-haberdasheries

-haberdashery

-habitant

-habitants

-habituate

-habituated

-habituates

-habituating

-habituation

-hacienda

-haciendas

-hackle

-hackled

-hackler

-hackles

-hackling

-hackney

-hackneyed

-hackneying

-hackneys

-hacksaw

-hacksaws

-hackwork

-haddock

-haddocks

-hadron

-hafnium

-haggle

-haggled

-haggler

-haggles

-haggling

-haiku

-hailstone

-hailstorm

-hairdo

-hairdos

-hairdressing

-hairline

-hairpin

-halcyon

-halfback

-halfbacks

-halfhearted

-halfheartedly

-halfheartedness

-halftime

-halibut

-halibuts

-halide

-halides

-halite

-hallelujah

-hallelujahs

-hallucinate

-hallucinated

-hallucinates

-hallucinating

-hallucination

-hallucinations

-hallucinative

-halo

-halocarbon

-halogen

-halogens

-halos

-hammerhead

-hammerless

-hamming

-hamster

-hamsters

-handclasp

-handgun

-handguns

-handhold

-handicapper

-handicapping

-handicraft

-handicrafter

-handicrafts

-handicraftsman

-handicraftsmen

-handleable

-handlebar

-handlebars

-handless

-handmade

-handmaiden

-handout

-handouts

-handrail

-handset

-handsets

-handspike

-handspikes

-handstand

-handstands

-handwrite

-handwrites

-handwritings

-handyman

-handymen

-hangable

-hangman

-hangman's

-hangmen

-hangout

-hangouts

-hank

-hanker

-hankered

-hankerer

-hankering

-hankers

-hansom

-happenstance

-harangue

-harangued

-haranguer

-harangues

-haranguing

-harbinger

-harbingers

-hardboard

-hardboiled

-hardhat

-hardscrabble

-hardshell

-hardtack

-hardtop

-hardtops

-hardwire

-hardwired

-hardwires

-hardwiring

-hardwood

-hardwoods

-hardworking

-harelip

-harelips

-harem

-harmonic

-harmonics

-harpies

-harpist

-harpoon

-harpoon's

-harpooned

-harpooner

-harpooning

-harpoons

-harpsichord

-harpsichordist

-harpsichords

-harpy

-harpy's

-harrumph

-harrumphed

-harrumphes

-harrumphing

-harvestman

-hashish

-hasp

-hasps

-hatchway

-hatless

-hatted

-hatters

-haulage

-haw

-hawing

-hawser

-hawthorn

-hayfield

-hayfields

-hayloft

-hayloft's

-haylofts

-haystack

-haystacks

-hazelnut

-hazelnuts

-headboard

-headboards

-headdress

-headier

-headiness

-headless

-headlessness

-headlight

-headlights

-headmaster

-headquarter

-headquartered

-headroom

-headset

-headsets

-headship

-headsman

-headsmen

-headstand

-headstands

-headstone

-headstones

-headwall

-headwalls

-headwater

-headwaters

-heady

-hearse

-heartbeat

-heartbeats

-heartbreak

-heartbreaking

-heartbreakingly

-heartburn

-heartburning

-heartfelt

-heartland

-heartland's

-heartthrob

-heartthrob's

-heartthrobs

-heathenish

-heathenishly

-heavenward

-heavenwards

-heavyweight

-hebephrenic

-hecatomb

-heck

-heckle

-heckled

-heckler

-hecklers

-heckles

-heckling

-hectares

-hectic

-hector

-hedonism

-hedonist

-hedonistic

-hedonists

-heedful

-heedfully

-heedfulness

-heft

-hefted

-heftier

-heftiness

-hefts

-hefty

-hegemonic

-hegemonies

-hegemony

-heist

-heist's

-heisted

-heister

-heisting

-heists

-helical

-helically

-helices

-helicon

-helicopter

-heliocentric

-heliotrope

-helium

-helix

-helixes

-hellbender

-hellfire

-hellish

-hellishly

-hellishness

-helluva

-helmsman

-helmsmen

-helpmate

-hematite

-hemispheric

-hemispherical

-hemmed

-hemming

-hemoglobin

-hemolytic

-hemorrhage

-hemorrhaged

-hemorrhages

-hemorrhaging

-hemorrhoids

-henning

-henpeck

-henpecked

-henry

-hepatitis

-heptane

-herbal

-herdsman

-hereof

-hereunto

-heritable

-heritor

-hermeneutics

-hermetic

-hermitian

-herpes

-herpetologist

-herpetologists

-herpetology

-herringbone

-hertz

-hertzes

-hesitance

-hesitancy

-heterodyne

-heterogamous

-heterogamy

-heterogeneity

-heterosexual

-heterosexually

-heterosexuals

-heterostructure

-heterozygous

-hewn

-hexachloride

-hexadecimal

-hexadecimally

-hexadecimals

-hexafluoride

-hexagon

-hexagons

-hexameter

-heyday

-hi

-hiatus

-hiatuses

-hibachi

-hibernate

-hibernated

-hibernates

-hibernating

-hibernation

-hick

-hicks

-hideaway

-hierarchal

-hierarchic

-hieratic

-hieroglyphic

-hieroglyphics

-hifalutin

-highball

-highboy

-highfalutin

-highhanded

-highroad

-highs

-hight

-hightail

-highwayman

-highwaymen

-hilarity

-hillbilly

-hillier

-hillman

-hillmen

-hilly

-hindmost

-hindquarters

-hinterland

-hinterlands

-hippies

-hipping

-hippo

-hippodrome

-hippopotamus

-hippos

-hippy

-hipster

-hipsters

-hireling

-hirelings

-histochemic

-histochemical

-histochemistry

-histology

-historicism

-historicity

-historiography

-histrionic

-histrionics

-hitless

-ho

-hoagie

-hoagies

-hoagy

-hoarfrost

-hob

-hobbing

-hobbyhorse

-hobo

-hobos

-hoc

-hock

-hocker

-hocking

-hocks

-hodge

-hodgepodge

-hodges

-hogan

-hogging

-hokey

-hokeyer

-hokeyest

-hokeyness

-holdover

-holdovers

-holdup

-holdups

-hollandaise

-holler

-hollered

-hollering

-hollers

-hollowware

-hollyhock

-hollyhocks

-holmium

-holography

-holster

-holstered

-holstering

-holsters

-holystone

-holystones

-homebound

-homebuilder

-homebuilders

-homebuilding

-homecoming

-homecomings

-homeland

-homemake

-homemaking

-homeowner

-homeowners

-homeownership

-homerists

-homicidal

-homicidally

-homicide

-homicides

-homily

-homo

-homogamy

-homogenate

-homogenates

-homologous

-homologue

-homology

-homonym

-homonym's

-homonyms

-homopolymers

-homos

-homosexual

-homosexually

-homosexuals

-homozygous

-homozygously

-hon

-honeybee

-honeybees

-honeydew

-hong

-honk

-honked

-honker

-honkers

-honkies

-honking

-honks

-honky

-honky's

-hooch

-hoodlum

-hoodlums

-hoofmark

-hoofmarks

-hookup

-hookups

-hookworm

-hooligan

-hooliganism

-hooligans

-hoopla

-hoosegow

-hoosegows

-hooves

-hoppled

-hopples

-hopscotch

-hornier

-horniness

-horny

-horoscope

-horoscopes

-hors

-horsedom

-horseflesh

-horseflies

-horsefly

-horsehair

-horselike

-horsemanship

-horsemen

-horsens

-horseplay

-horseplayer

-horsetail

-horsewoman

-horticulture

-hosiery

-hospice

-hospices

-hostelries

-hostelry

-hotbed

-hotbox

-hotdogs

-hotelman

-hothead

-hotheaded

-hotheadedly

-hotheadedness

-hothouse

-hotrod

-hough

-hourglass

-houseboat

-houseboats

-housebreak

-housebreaker

-housebreakers

-housebreaking

-housebroken

-housekeep

-housewares

-housewives

-hove

-howdy

-hoy

-hubba

-hubbies

-hubbub

-hubby

-huckleberry

-huckster

-huckstered

-huckstering

-hucksters

-hugged

-hugging

-huggings

-hulk

-hulked

-hulking

-hulks

-humanism

-humanist

-humanistic

-humanists

-humanitarian

-humanitarians

-humidistat

-hummingbird

-hummingbirds

-hummock

-hummocks

-humorist

-humorist's

-humorists

-humpback

-humpbacked

-humpbacks

-humus

-hundredfold

-huntress

-hurray

-hurrays

-hurtful

-hurtfully

-hurtfulness

-hurtle

-hurtled

-hurtles

-hurtling

-husbandman

-husbandmen

-huskily

-hutch

-huzzahs

-hyacinths

-hydrant

-hydrants

-hydrate

-hydrated

-hydrates

-hydrating

-hydration

-hydrations

-hydride

-hydrides

-hydro

-hydrocarbon

-hydrocarbons

-hydrochemistry

-hydrochloric

-hydrochloride

-hydroelectric

-hydrofluoric

-hydrogenate

-hydrogenation

-hydrological

-hydrologically

-hydrology

-hydrolysis

-hydrometer

-hydrometer's

-hydrometers

-hydrophilic

-hydrophobia

-hydrophobic

-hydros

-hydrosphere

-hydrostatic

-hydrostatics

-hydrothermal

-hydrothermally

-hydrous

-hydroxide

-hydroxides

-hydroxy

-hydroxyl

-hydroxyl's

-hydroxylate

-hydroxylation

-hydroxyls

-hydroxyzine

-hyena

-hygienic

-hygienics

-hygrometer

-hygrometer's

-hygrometers

-hygroscopic

-hying

-hymen

-hymens

-hymnal

-hyperbola

-hyperbole

-hyperbolically

-hyperboloid

-hyperboloidal

-hypercellularity

-hypercube

-hypercube's

-hypercubes

-hyperemia

-hyperemic

-hyperfine

-hypergamous

-hypergamously

-hypergamy

-hyperplasia

-hypertensive

-hypertrophied

-hypertrophy

-hypervelocity

-hyphenate

-hyphenated

-hyphenates

-hyphenating

-hyphenation

-hyphenations

-hypnosis

-hypnotic

-hypnotically

-hypnotics

-hypoactive

-hypocellularity

-hypocritical

-hypocritically

-hypophyseal

-hypotenuse

-hypotenuses

-hypothalamic

-hypothalamically

-hypothalamus

-hypothermia

-hypothetic

-hypothyroid

-hypothyroidism

-hysterectomy

-hysteria

-hysteric

-hysterics

-i's

-iambic

-ibid

-ibis

-ibises

-icebox

-icicle

-icicles

-iconic

-iconoclasm

-iconoclast

-icosahedral

-icosahedron

-idealist

-idealogical

-ideate

-ideates

-ideation

-idempotent

-idempotents

-identifiability

-ideologist

-ideologists

-idiolect

-idiom

-idiomatic

-idiomaticness

-idioms

-idiosyncratically

-idiotically

-idyll

-idyllic

-iffiness

-iffy

-igloo

-igloos

-igneous

-ignite

-ignited

-igniter

-ignites

-igniting

-ignitions

-ignominious

-ignominiously

-ignoramus

-ileum

-iliac

-ilk

-ilk's

-illegible

-illegitimacy

-illegitimate

-illegitimately

-illimitable

-illimitableness

-illiteracy

-illogic

-illume

-illumed

-illumine

-illumined

-illumines

-illuming

-illusionary

-illusoriness

-illusory

-imagery

-imbecile

-imbecilely

-imbibe

-imbibed

-imbiber

-imbibing

-imbroglio

-imbruing

-imbue

-imbued

-imbuing

-imitable

-imitators

-immanent

-immanently

-immeasurable

-immeasurableness

-immeasurably

-immensities

-immensity

-imminence

-immobile

-immobility

-immoderate

-immoderately

-immoderateness

-immoderation

-immodest

-immodestly

-immodesty

-immunological

-immunologically

-impairment

-impale

-impaled

-impales

-impaling

-impalpable

-impartation

-impartiality

-impassable

-impassableness

-impeccable

-impeccably

-impelled

-impeller

-impellers

-impelling

-impend

-imperceivable

-imperceptible

-imperceptibly

-imperfectability

-imperishable

-imperishableness

-impermeable

-impermeableness

-imperturbable

-impiety

-impish

-impishly

-impishness

-implacable

-implacableness

-implantation

-implausibly

-implementability

-impolite

-impolitely

-impoliteness

-impolitic

-impoliticly

-impoliticness

-imponderable

-imponderableness

-imponderables

-importunate

-importunately

-importunateness

-importune

-importunely

-importuner

-importuners

-importunities

-impost

-imposter

-imposts

-impotency

-impound

-impounded

-impounding

-impoundments

-impounds

-imprecate

-imprecated

-imprecates

-imprecating

-imprecation

-imprecations

-impregnate

-impregnated

-impregnates

-impregnating

-impregnation

-impregnations

-impresario

-impressible

-impressionism

-imprimatur

-improbably

-impropitious

-impropriety

-improvident

-improvidently

-imprudent

-imprudently

-impudence

-impugn

-impugned

-impugner

-impugning

-impugns

-imputation

-imputations

-inaction

-inactivate

-inadvertence

-inalienable

-inanity

-inappeasable

-inarticulate

-inarticulately

-inarticulateness

-inattention

-inaudibility

-inboard

-inbreed

-inbreeder

-inbreeding

-incalculability

-incalculable

-incalculableness

-incandescent

-incandescently

-incant

-incanted

-incapacitate

-incapacitated

-incapacitates

-incapacitation

-incapacity

-incarcerate

-incarcerated

-incarcerates

-incarcerating

-incarceration

-incarnate

-incept

-incepted

-incepting

-inceptive

-inceptively

-inceptor

-incepts

-incest

-incestuous

-incestuously

-incestuousness

-incinerate

-incinerated

-incinerates

-incinerating

-incineration

-incinerations

-incinerator

-incinerators

-incipience

-incipiency

-incise

-incised

-incises

-incising

-incisive

-incisively

-incisiveness

-incisor

-incisor's

-incisors

-incitement

-incitements

-inclemency

-inclement

-inclemently

-inclinometer

-inclinometer's

-inclinometers

-incoercible

-incombustible

-incommensurable

-incommodious

-incommodiously

-incommodiousness

-incommunicable

-incommunicado

-incommutable

-incompetency

-incompressibility

-incondensable

-incongruities

-incongruity

-incongruous

-incongruously

-incongruousness

-inconsistence

-inconsonance

-inconstant

-incontinence

-incontrovertible

-incorporable

-incorporeally

-incorrigible

-incorrigibleness

-incorruptibility

-incorruptible

-increasable

-incriminating

-incubi

-incubus

-inculcate

-inculcated

-inculcates

-inculcation

-inculpable

-incumbent

-incumbents

-incursion

-incursions

-indecipherable

-indecorous

-indecorously

-indecorousness

-indefatigable

-indefatigableness

-indefensible

-indelible

-indelibly

-indelicate

-indelicately

-indelicateness

-indemnification

-indemonstrably

-indenture

-indentured

-indentures

-indenturing

-indestructible

-indestructibleness

-indicant

-indicants

-indict

-indicted

-indicter

-indigent

-indiscoverable

-indiscretion

-indispose

-indisposing

-indisposition

-indisputable

-indisputableness

-indisputably

-indissociable

-indissoluble

-indissolubleness

-indium

-individualism

-individualist

-individualists

-individuate

-individuated

-individuates

-individuating

-individuation

-indolence

-indubitable

-indubitableness

-inducible

-inductee

-inductees

-inductile

-indulgent

-indulgently

-industrialism

-inebriate

-inebriated

-inebriates

-inebriating

-inebriation

-ineffable

-ineffableness

-ineffaceable

-ineffectual

-ineffectually

-ineffectualness

-inefficacious

-inefficaciously

-inefficaciousness

-inegalitarian

-inelastic

-ineligibility

-ineligible

-ineluctable

-inept

-ineptly

-ineptness

-inequitable

-inequivalent

-ineradicable

-inertial

-inertially

-inexpediency

-inexpert

-inexpertly

-inexpertness

-inexpiable

-inexplicit

-inextinguishable

-inextricable

-inextricably

-infamy

-infanticide

-infanticide's

-infantile

-infantryman

-infantrymen

-infatuation

-infauna

-infecund

-infelicitous

-infelicitously

-infelicity

-inferable

-infertile

-infestation

-infestations

-infield

-infield's

-infielder

-infielder's

-infielders

-infinitude

-infirm

-infirmary

-infirmed

-infirmly

-inflammation

-inflammatory

-inflect

-inflected

-inflecting

-inflection

-inflectional

-inflectionally

-inflections

-inflective

-inflects

-inflexed

-infliction

-inflow

-influx

-info

-infra

-infraction

-infrared

-infusible

-infusibleness

-ingenuous

-ingenuously

-ingenuousness

-ingest

-ingested

-ingestible

-ingestion

-ingestive

-ingrain

-ingrate

-ingratiate

-ingratiating

-ingratiatingly

-ingratiation

-inhabitation

-inhalant

-inhalation

-inhibitor

-inhibitory

-inhomogeneous

-inimical

-inimically

-inimitable

-inimitableness

-iniquitous

-iniquitously

-iniquitousness

-injectable

-injunctive

-inlay

-inlayer

-inlaying

-innovators

-innuendo

-innuendoes

-innuendos

-inoculate

-inoculated

-inoculates

-inoculating

-inoculation

-inoculations

-inoculative

-inoperative

-inoperativeness

-inorganically

-inputted

-inquest

-inquisitor

-insatiable

-insatiableness

-inscrutability

-inscrutable

-inscrutableness

-insecticide

-insecticides

-inseminate

-insemination

-insensate

-insensately

-insensateness

-insensibility

-inseparability

-inseparably

-inset

-insincere

-insincerely

-insipid

-insipidly

-insobriety

-insolvency

-insolvent

-insomnia

-insomniac

-insomniacs

-insouciance

-insouciant

-insouciantly

-inspirational

-inspirationally

-instable

-instep

-instill

-instillation

-instilled

-instiller

-instilling

-instinctual

-institutionalist

-instrumentalities

-insubordinate

-insubordinately

-insubordination

-insubstantial

-insufferable

-insular

-insularity

-insularly

-insulin

-insuperably

-insuppressible

-insurgence

-insusceptibility

-intake

-intaking

-integrable

-integrand

-integument

-intellectuality

-intelligentsia

-intendant

-intendants

-intensional

-intensionally

-inter

-interaxial

-intercalate

-intercalated

-intercalates

-intercalating

-intercalation

-intercalative

-intercase

-intercaste

-intercede

-interceder

-intercedes

-intercensal

-interception

-interceptor

-interclass

-intercohort

-intercollegiate

-intercom

-intercontinental

-intercorrelated

-interdenominational

-interdepartmental

-interdepartmentally

-interdict

-interdictive

-interfaith

-interferometer

-interferometer's

-interferometers

-interferometric

-interferometry

-interferon

-intergalactic

-intergeneration

-intergenerational

-interglacial

-intergovernmental

-intergroup

-interindex

-interindustry

-interject

-interjected

-interjecting

-interjects

-interlayer

-interlayering

-interlibrary

-interlingua

-interlining

-interlobular

-interlock

-interlocked

-interlocker

-interlocking

-interlocks

-interlocutor

-interlude

-interludes

-intermarriage

-interment

-intermeshed

-intermetrics

-interminableness

-interminably

-intermission

-intermissions

-intermolecular

-intermolecularly

-internationalist

-internationalists

-internetwork

-interpenetrates

-interplanetary

-interpol

-interposition

-interpretative

-interpretatively

-interpretor

-interpretors

-interprocessor

-interquartile

-interracial

-interred

-interregional

-interregnum

-interrogator

-interrogatories

-interrogators

-interrogatory

-interspecies

-interstellar

-interstice

-interstices

-interstitial

-interstitially

-intersurvey

-intervenor

-interventionist

-intervocalic

-interweaving

-intestate

-intimal

-intonate

-intone

-intoning

-intorsion

-intoxicant

-intra

-intracity

-intraclass

-intracohort

-intradepartmental

-intrafamily

-intragenerational

-intraindustry

-intraline

-intrametropolitan

-intramuscular

-intramuscularly

-intranasal

-intransigence

-intraoffice

-intrapulmonary

-intraregional

-intrasectoral

-intrastate

-intratissue

-intravenous

-intravenously

-intrepid

-intrepidly

-intrepidness

-intro

-introject

-introjected

-introjects

-introversion

-intuitable

-inunction

-inundate

-inundated

-inundates

-inundating

-inundation

-inundations

-inure

-inured

-inuring

-inutile

-invalidism

-invasive

-invasiveness

-invective

-invectively

-invectiveness

-inveigh

-inveigher

-inveigle

-inveigled

-inveigler

-inveigling

-investigatory

-inveterate

-inveterately

-invidious

-invidiously

-invidiousness

-invigorate

-invigorated

-invigorates

-invigorating

-invigoratingly

-invigoration

-inviolability

-inviolable

-inviolate

-inviolately

-inviolateness

-invitational

-invitee

-invitees

-invocable

-invocate

-involute

-involutely

-involution

-involutions

-involutorial

-invulnerability

-iodate

-iodated

-iodating

-iodation

-iodide

-iodinate

-iodinated

-iodinating

-iodination

-ionic

-ionosphere

-ionospheric

-iota

-ipecac

-ipso

-iridium

-ironic

-ironside

-ironsides

-ironstone

-ironwood

-irradiate

-irradiated

-irradiation

-irradiative

-irreconcilable

-irreconcilableness

-irredeemable

-irredeemably

-irredentism

-irredentist

-irrelevancies

-irrelevancy

-irremediable

-irremediableness

-irremovable

-irreparable

-irreparableness

-irreparably

-irreplaceable

-irreplaceableness

-irreproachable

-irreproachableness

-irreproducibility

-irreproducible

-irresistibility

-irresistibly

-irresolute

-irresolutely

-irresoluteness

-irresolution

-irresolvable

-irresponsibility

-irretrievable

-irreverence

-irreverent

-irreverently

-irreversibly

-irrevocable

-irrevocableness

-irrevocably

-irritability

-irritable

-irritableness

-irritably

-irritant

-irritants

-irruption

-irruptions

-isinglass

-isochronal

-isochronally

-isochronous

-isochronously

-isocline

-isocyanate

-isodine

-isolationism

-isolationistic

-isomer

-isomers

-isomorph

-isopleth

-isopleths

-isotherm

-isothermal

-isothermally

-isotherms

-isotonic

-isotopic

-isotropic

-isotropically

-isotropy

-issuant

-itinerant

-itinerantly

-j's

-jabberings

-jackass

-jackboot

-jackbooted

-jackboots

-jackdaw

-jackdaws

-jackknife

-jackpot

-jackpots

-jag

-jagged

-jaggedly

-jaggedness

-jaggers

-jagging

-jaguar

-jalopies

-jalopy

-jamboree

-jangle

-jangled

-jangler

-jangles

-jangling

-janissaries

-janissary

-janitorial

-jasper

-jaspers

-jaundice

-jaundiced

-jaundices

-jaundicing

-jawbone

-jazzier

-jazziness

-jazzmen

-jazzy

-jejune

-jejunely

-jejuneness

-jejunum

-jeopard

-jeopardies

-jeopardy

-jerry

-jess

-jetliner

-jetliners

-jettison

-jibe

-jibed

-jibes

-jibing

-jiffies

-jiffy

-jigger

-jiggered

-jigging

-jiggle

-jiggled

-jiggles

-jiggling

-jigsaw

-jilt

-jilted

-jilter

-jilts

-jimmied

-jimmies

-jimmy

-jimmying

-jinx

-jitter

-jitterbug

-jitters

-jittery

-jive

-jived

-jives

-jiving

-jobbery

-jobbing

-jobholder

-jobholders

-jobless

-joblessness

-jock

-jockey

-jockeyed

-jockeying

-jockeys

-jockstrap

-jockstraps

-jocose

-jocosely

-jocoseness

-jocular

-jocularly

-joey

-joggle

-joggled

-joggler

-joggles

-joggling

-jollities

-jollity

-jonquil

-jonquils

-josh

-joshed

-josher

-joshes

-joshing

-joss

-joule

-jounce

-jounced

-jounces

-jouncing

-journalese

-journaleses

-journeyman

-journeymen

-jovial

-joviality

-jovially

-jowl

-jowled

-jowls

-joyless

-joylessly

-joylessness

-joyride

-joyrider

-joyriding

-joystick

-joysticks

-jubilant

-jubilantly

-jubilate

-jubilated

-jubilates

-jubilating

-jubilation

-jubilations

-judgeship

-judicatory

-judicature

-judicatures

-judo

-jugate

-jugging

-juju

-jujube

-juke

-jukes

-juking

-julep

-juleps

-jumbo

-jumbos

-junkerdom

-junket

-junketed

-junketeer

-junketeering

-junketer

-junketing

-junkets

-junta

-juridical

-juridically

-jurisdictional

-jurisdictionally

-jurisprudence

-jurisprudent

-jurisprudential

-jurisprudentially

-jurist

-jurists

-justiciable

-jute

-jutes

-jutting

-juxtaposition

-k's

-kaboom

-kaleidescope

-kamikaze

-kangaroo

-kangaroos

-kaolin

-kaolinite

-kappa

-karat

-karate

-kazoo

-kazoos

-kcal

-kebob

-keg

-kegs

-kelp

-keno

-ketone

-ketosis

-keyhole

-keyholes

-keynote

-keynoter

-keynotes

-keypunch

-keypunched

-keypuncher

-keypunches

-keypunching

-keystone

-keystones

-khaki

-khan

-kibbutzim

-kibitz

-kibitzer

-kickback

-kickbacks

-kickoff

-kickoffs

-kidder

-kiddie

-kiddies

-kidless

-killable

-killjoy

-kilobaud

-kilobuck

-kilogauss

-kilohertz

-kilohm

-kilojoule

-kiloton

-kilotons

-kilovolt

-kilovolts

-kilowatt

-kilowatts

-kiloword

-kilts

-kimono

-kinematic

-kinematics

-kinesics

-kinetic

-kinetics

-kingbird

-kingfisher

-kinglet

-kingpin

-kink

-kinsmen

-kinsmen's

-kiosk

-kiosks

-kitchenette

-kitchenettes

-kittenish

-kittenishly

-kittenishness

-klaxon

-kleenex

-klystron

-klystrons

-km

-kneecap

-kneecaps

-kneepad

-kneepads

-knick

-knicker

-knickerbocker

-knickers

-knitted

-knitting

-knobby

-knockdown

-knockdowns

-knockout

-knockouts

-knockwurst

-knottier

-knottiness

-knotty

-knuckleball

-knuckleballer

-knurl

-koala

-kohlrabi

-kooks

-kosher

-koshered

-koshering

-kraft

-kraut

-krauts

-krill

-krypton

-kudzu

-kumquat

-kurtosis

-l's

-la

-labial

-labially

-labile

-labiodental

-lackadaisic

-lackey

-lackeyed

-lackeying

-lackeys

-lacrosse

-lacrosses

-lactate

-lactated

-lactates

-lactating

-lactation

-lactational

-lactationally

-lactose

-lacuna

-lacunae

-lacunas

-ladle

-ladled

-ladles

-ladling

-ladylike

-laggard

-laggardly

-laggardness

-laggards

-lagging

-laing

-laissez

-laity

-lakeside

-lamas

-lamentably

-laminate

-laminated

-laminates

-laminating

-lamination

-laminations

-lammed

-lamming

-lampblack

-lamplight

-lamplighter

-lampoon

-lampooned

-lampooner

-lampooning

-lampoons

-lamprey

-lampreys

-landau

-landfill

-landhold

-landholder

-landholders

-landholding

-landholdings

-landless

-landownership

-landslide

-landslides

-languor

-lank

-lankier

-lankiness

-lankly

-lankness

-lanky

-lanthanide

-lanthanum

-lapidary

-lapped

-lapping

-laptop

-laptop's

-laptops

-larceny

-larch

-largemouth

-largesse

-lariat

-larval

-laryngeal

-laryngeally

-larynx

-larynxes

-las

-lascivious

-lasciviously

-lasciviousness

-lasing

-lasso

-lassoed

-lassoer

-lathe

-latitudinal

-latitudinally

-latitudinary

-laud

-laudably

-laudanum

-laudatory

-lauder

-lauds

-laughingstock

-laughingstocks

-laundresses

-laundrymen

-laura

-laureate

-laureated

-laureates

-laureating

-laureation

-lawbreaker

-lawbreakers

-lawbreaking

-lawgiver

-lawgivers

-lawgiving

-lawmakers

-lawmaking

-lawman

-lawmen

-lawrencium

-lax

-laxative

-laxatively

-laxativeness

-laxatives

-laxity

-laxly

-laxness

-layoff

-layperson

-layup

-layup's

-layups

-lazybones

-lb

-lbs

-leach

-leachate

-leaches

-leaching

-leaderless

-leadsman

-leadsmen

-leafhopper

-leakier

-leakiness

-leaky

-leapfrog

-leasehold

-leaseholder

-leatherneck

-leathery

-lebensraum

-lecher

-lechery

-leek

-leery

-leeward

-leewards

-leeway

-lefties

-lefty

-legate

-legated

-legatee

-legates

-legating

-legation

-legations

-legato

-legerdemain

-leggier

-legging

-leggy

-leghorn

-legume

-legumes

-leguminous

-leitmotif

-leitmotiv

-lemming

-lemmings

-lengthily

-lenticular

-leonine

-leper

-lepers

-lesbian

-lesbians

-lesion

-lesions

-lessor

-lethal

-lethality

-lethally

-lethargies

-lethargy

-letterhead

-letterheads

-letterman

-lettermen

-levitate

-levitated

-levitates

-levitating

-levitation

-levities

-levity

-lewis

-lex

-libation

-libations

-libel

-libels

-liberalism

-liberality

-libertarian

-libertarians

-libertine

-libertines

-libidinous

-libidinously

-libidinousness

-librettist

-librettists

-libretto

-libretto's

-librettos

-lice

-licensor

-licentious

-licentiously

-licentiousness

-licit

-licitly

-licorice

-lidding

-lidless

-lieut

-lifeblood

-lifeboat

-lifeboats

-lifeguard

-lifeguards

-lifesaving

-lifespan

-lifespans

-ligament

-ligaments

-ligand

-ligands

-ligature

-ligatured

-ligatures

-ligaturing

-lighthearted

-lightheartedly

-lightheartedness

-lightproof

-lightships

-lignite

-lignum

-likeable

-lilt

-lilting

-liltingly

-liltingness

-limbic

-limbo

-limbos

-limelight

-limerick

-limerick's

-limericks

-limitless

-limitlessly

-limitlessness

-limousine

-limousines

-limpid

-limpidly

-limpidness

-lineage

-lineages

-lineal

-lineally

-linebacker

-linebackers

-lineman

-linemen

-lineup

-lineups

-lingerie

-lingo

-lingua

-lingual

-lingually

-liniment

-liniments

-lipid

-lipid's

-lipids

-liquefaction

-liqueur

-liquidate

-liquidated

-liquidates

-liquidating

-listless

-listlessly

-listlessness

-litanies

-litany

-literalism

-lithium

-lithograph

-lithographer

-lithographers

-lithographs

-lithography

-lithology

-lithosphere

-lithospheric

-litigant

-litigants

-litigious

-litigiously

-litigiousness

-litmus

-litterbug

-littleneck

-littoral

-liturgic

-liturgical

-liturgically

-liturgics

-liturgy

-livability

-liverwort

-livestock

-livid

-lividness

-loadable

-loam

-loamy

-lob

-lobotomy

-lobular

-lobularity

-lobularly

-lobule

-lobules

-locale

-locales

-localisms

-locational

-locationally

-locknut

-locksmith

-locksmithing

-locomotor

-locomotory

-locoweed

-lodestone

-lodgepole

-lodgment

-logarithmic

-loge

-loggerhead

-logion

-logions

-logistical

-logistically

-logjam

-loincloth

-loll

-loller

-lollies

-lolling

-lolly

-longevity

-longhand

-longhorn

-longhorns

-longish

-longitudinal

-longitudinally

-longshoremen

-longstanding

-longterm

-longtime

-looseleaf

-lop

-lope

-loped

-loper

-loping

-lopped

-lopping

-lops

-lopsided

-lopsidedly

-lopsidedness

-loquacious

-loquaciously

-loquaciousness

-loquacity

-lossage

-lossless

-lotion

-lotions

-loudspeaking

-louse

-loused

-louses

-lousewort

-lousing

-lovebird

-lovebirds

-loveless

-lovelessly

-lovelessness

-lovelorn

-lovelornness

-lowboy

-lowdown

-lowercase

-lowercased

-lowercases

-lowercasing

-lowlight

-lowlight's

-lowlights

-loyalist

-loyalists

-lozenge

-lozenged

-lozenges

-lubricate

-lubricated

-lubricates

-lubricating

-lubrications

-lubricative

-lubricious

-lubriciously

-lubricity

-lucent

-lucently

-lucid

-lucidity

-lucidly

-lucidness

-lucrative

-lucratively

-lucrativeness

-lucre

-lug

-luge

-luger

-lugged

-lugging

-lugs

-lulu

-lumbar

-lumberman

-lumbermen

-lumberyard

-lumen

-luminaries

-luminary

-luminescence

-luminescent

-luminosity

-lummox

-lumpier

-lumpiness

-lumpish

-lumpishly

-lumpishness

-lumpy

-lunacy

-lunary

-lunate

-lunated

-lunately

-lunation

-lunchroom

-lunchrooms

-lunchtime

-lunge

-lupine

-lurid

-luridly

-luridness

-lush

-lushes

-lushly

-lushness

-lustful

-lustfully

-lustfulness

-lutanist

-luxe

-luxes

-luxuriance

-luxuriate

-luxuriated

-luxuriating

-lycopodium

-lye

-lymphocyte

-lymphocytes

-lymphoma

-lyrical

-lyrically

-lyricalness

-lyricism

-lyricist

-lyricists

-m's

-ma

-macabre

-macabrely

-machinable

-machination

-machination's

-machinations

-machinelike

-machinist

-machinists

-machismo

-macho

-macintosh

-mack

-mackinaw

-mackintosh

-macrodynamic

-macromolecular

-macrophage

-macrophages

-macroscopically

-macrosimulation

-macrosocioeconomic

-madcap

-madding

-madhouse

-madmen

-madrigal

-madrigaling

-madrigals

-maestro

-magenta

-maggoty

-magi

-magisterial

-magisterially

-magnanimity

-magnanimous

-magnanimously

-magnanimousness

-magnate

-magnates

-magnesia

-magnesite

-magnetite

-magneto

-magnetos

-magnolia

-magnolias

-magnum

-magnums

-magpie

-magpies

-maidenhair

-maidservant

-maier

-mailman

-mailmen

-mainline

-mainlined

-mainliner

-mainliners

-mainlines

-mainlining

-mainstream

-majestically

-maladapt

-maladapted

-maladaptive

-maladjust

-maladjusted

-maladjustive

-maladjustment

-maladjustments

-maladroit

-maladroitly

-malaise

-malaprop

-malapropism

-malarial

-malarious

-malcontent

-malcontent's

-malcontented

-malcontentedly

-malcontentedness

-malcontents

-maledict

-malediction

-malevolence

-malevolencies

-malevolent

-malevolently

-malfeasant

-malformation

-malformations

-malformed

-malign

-malignancies

-malignancy

-maligned

-malignly

-malingering

-mallard

-mallards

-malleable

-malleableness

-malnourished

-malocclusion

-malposed

-malpractice

-maltreat

-mambo

-mambos

-mammalian

-manatee

-mandamus

-mandamused

-mandamuses

-mandamusing

-mandarin

-mandarins

-mandrake

-mandrakes

-manganese

-manhole

-manholes

-mania

-maniacal

-maniacally

-manic

-manicurists

-manikin

-manikins

-manna

-mannequin

-mannequins

-mannerism

-mannerisms

-manorial

-manservant

-manslaughter

-mantlepiece

-mantrap

-marathon

-marathons

-marauders

-margarine

-marginalia

-marginality

-maria

-marina

-marinade

-marinades

-marinas

-marionette

-marionettes

-marital

-maritally

-marksman

-marksmanship

-marlin

-marmalade

-marmalades

-maroon

-marooned

-marquee

-marquees

-marquess

-marquesses

-marred

-marriageable

-marring

-marrowbone

-marrowbones

-marshland

-marshlands

-marshmallow

-marshmallows

-martin

-martingale

-martini

-martinis

-mascara

-mascaras

-mascot

-mascot's

-mascots

-maser

-masque

-masquer

-masquers

-masques

-massless

-mastermind

-masterminded

-masterminding

-masterminds

-mastiff

-mastodon

-mastodons

-matchbook

-matchmake

-materialistic

-materiel

-maternity

-mathematic

-matinee

-matriarch

-matriarchal

-matriculate

-matriculated

-matriculates

-matriculating

-matrimonial

-matrimonially

-matting

-maturate

-maturated

-maturates

-maturating

-maturational

-maturations

-maturative

-maudlin

-maudlinly

-maul

-mauler

-maulers

-mauling

-mauls

-mausoleum

-mausoleums

-mauve

-maverick

-mavericks

-maw

-mawkish

-mawkishly

-mawkishness

-maxima

-maxwell

-mayorship

-meadowland

-meadowsweet

-mealier

-mealies

-mealtime

-mealy

-measle

-measled

-measlier

-measly

-meatier

-meatiest

-meatiness

-meaty

-mecca

-mechanist

-mechanistic

-mechanochemically

-mediator

-mediators

-medicate

-medicated

-medicates

-medicating

-medication

-medications

-medicative

-medico

-medicos

-medievalist

-medievalist's

-medievalists

-mediocre

-mediocrities

-mediocrity

-mediumistic

-medley

-medleys

-meetinghouse

-megahertz

-megalomania

-megalomaniac

-megalopolises

-megaton

-megatons

-megavolt

-megawatt

-megohm

-megohms

-melamine

-melange

-melanin

-melanoma

-melee

-meliorate

-meliorated

-meliorates

-meliorating

-melioration

-meliorations

-meliorative

-melodic

-melodically

-melodramatic

-melodramatics

-memento

-mementoes

-mementos

-memorabilia

-memoriam

-menarche

-menarches

-mendacious

-mendaciously

-mendaciousness

-mendacity

-mendelevium

-menfolk

-menfolks

-menopause

-menstrual

-menstruate

-menstruated

-menstruates

-menstruating

-menstruation

-menstruations

-mensurable

-mensurableness

-mensuration

-mensurations

-mercantile

-mercer

-mercers

-merchantability

-mercurial

-mercurially

-mercurialness

-mercuric

-meretricious

-meretriciously

-meretriciousness

-meringue

-meringues

-meritocracy

-meritocratic

-merlin

-mermaid

-mermaid's

-mermaids

-merman

-merman's

-mermen

-merrymaking

-mesa

-mescaline

-mesmeric

-meson

-mesquite

-metabolic

-metabolism

-metabolisms

-metabolite

-metabolites

-metalliferous

-metallography

-metalloid

-metallurgic

-metallurgical

-metallurgically

-metallurgists

-metalsmith

-metalsmithes

-metalwork

-metalworker

-metalworking

-metalworkings

-metamorphic

-metamorphism

-metamorphose

-metamorphosed

-metaphoric

-metaphosphate

-metaphysic

-meteorite

-meteorites

-meteoritic

-meteoritics

-meteoroid

-meteoroid's

-meteoroids

-meteorological

-methane

-methanol

-methodism

-methyl

-methylene

-meticulous

-meticulously

-meticulousness

-metro

-metronome

-metronomes

-metros

-mettle

-mettled

-mettles

-mettlesome

-mezzo

-mezzos

-miasma

-miasmal

-micro

-microamp

-microanalysis

-microanalytic

-microbial

-microchemistry

-microcosm

-microeconomic

-microfossils

-micrography

-microjoule

-microlevel

-micrometeorites

-micrometeoritic

-micrometer

-micrometer's

-micrometers

-micron

-microns

-microorganism

-microorganisms

-micros

-microscopical

-microscopically

-microscopy

-microsimulation

-microsimulations

-microsomal

-microvolt

-microvolts

-midair

-midas

-midband

-middleman

-middlemen

-middleweight

-middleweights

-midge

-midges

-midi

-midland

-midlander

-midlands

-midlife

-midmorn

-midmorning

-midrange

-midscale

-midsection

-midship

-midshipman

-midshipmen

-midships

-midspan

-midstream

-midterm

-midterm's

-midterms

-midweek

-midweekly

-midwife

-midwifed

-midwifing

-midwives

-midyear

-mignon

-migrant

-migrant's

-migrants

-migratories

-migratory

-mike

-mil

-milieu

-milieus

-militarist

-militate

-militated

-militates

-militating

-militiamen

-milkweed

-millenarian

-millenarianism

-millennia

-millennialism

-millennium

-milliamp

-milliampere

-milliamperes

-millidegree

-millidegrees

-millijoule

-millijoules

-milliners

-millinery

-millivolt

-millivoltmeter

-millivoltmeter's

-millivoltmeters

-millivolts

-milliwatt

-milliwatts

-millwright

-millwrights

-mime

-mimeograph

-mimeographed

-mimeographes

-mimeographing

-mimer

-mimesis

-mimetic

-mimetically

-miming

-mincemeat

-minefield

-mineralogical

-mineralogies

-mineralogist

-mineralogists

-mineralogy

-minesweeper

-minesweepers

-mini

-minidress

-minidresses

-minified

-minifies

-minify

-minifying

-minima

-minimalist

-minimalist's

-minimalists

-minimax

-minis

-miniscule

-miniskirt

-ministerial

-ministerially

-ministrations

-miniver

-minuend

-minuends

-minuet

-minuscule

-minuteman

-minutemen

-minutiae

-mirage

-miraged

-mirages

-miraging

-mirthless

-mirthlessly

-mirthlessness

-misalign

-misaligned

-misaligning

-misalignment

-misalignment's

-misalignments

-misaligns

-misanthrope

-misanthropic

-misbegotten

-misbehave

-misbehaved

-misbehaver

-misbehaves

-misbrand

-misbranded

-misbranding

-misbrands

-miscalculated

-miscarriage

-miscarriages

-miscarried

-miscarries

-miscarry

-miscarrying

-miscegenation

-miscegenations

-miscellanies

-miscellany

-misclassification

-misclassified

-misclassifying

-miscode

-miscoded

-miscodes

-miscoding

-misconstruction

-misconstructions

-miscount

-miscounted

-miscounting

-miscounts

-miscreant

-miscreants

-miscue

-miscue's

-miscues

-misdeed

-misdeeds

-misdemeanant

-misdemeanants

-misdirector

-misdirectors

-misfire

-misfired

-misfires

-misfiring

-misgauge

-misgauged

-misgauges

-misgauging

-misidentification

-misidentified

-misidentifies

-misidentify

-misidentifying

-misinterpretation

-misinterpretations

-misjudge

-misjudged

-misjudges

-misjudging

-misjudgingly

-mismanage

-mismanaged

-mismanages

-mismanaging

-misname

-misnamed

-misnames

-misnaming

-misogynist

-misogynist's

-misogynists

-misogyny

-misplacement

-misplacements

-mispronounce

-mispronounced

-mispronounces

-mispronouncing

-mispronunciation

-misquoted

-misrelated

-misreporting

-misrepresent

-misrepresented

-misrepresenter

-misrepresenting

-misrepresents

-misroute

-misrouted

-misroutes

-misshapen

-misshapenly

-misshapenness

-misshapennesses

-misspecification

-misspecified

-misstatement

-misstatements

-misstep

-mistletoe

-mistook

-mistrial

-miswritten

-mitzvahs

-mixup

-mm

-mobbed

-mobbing

-mobcap

-mobcaps

-mobile

-mobiles

-mobster

-mobsters

-mockingbird

-mockup

-mockups

-mod

-modernism

-modernistic

-modernists

-modicum

-modish

-modishly

-modishness

-mods

-moieties

-moiety

-moire

-molal

-molar

-molars

-moldboard

-molehill

-moll

-mollie

-mollification

-mollifications

-mollified

-mollifies

-mollify

-mollifying

-mollusk

-mollusks

-mollycoddle

-mollycoddled

-mollycoddler

-mollycoddles

-mollycoddling

-molybdenite

-molybdenum

-momenta

-momma

-mommy

-monad

-monadic

-monads

-monarchic

-monasticism

-monaural

-monaurally

-monetarism

-moneylenders

-moneymaking

-mongoose

-mongooses

-monies

-monkish

-monochromatic

-monochromator

-monocle

-monocled

-monocles

-monoclinic

-monocular

-monocularly

-monogamous

-monogamously

-monogamousness

-monogamy

-monolingual

-monolingualism

-monolinguals

-monolith

-monolithically

-monologist

-monologists

-monologue

-monologues

-monomer

-monomer's

-monomeric

-monomers

-monomial

-mononuclear

-monophonic

-monopolistic

-monopolists

-monosyllabic

-monosyllable

-monosyllables

-monotheistic

-monsieur

-monsoon

-monsoons

-monstrosities

-monstrosity

-montage

-montaged

-montages

-montaging

-monumentality

-moo

-moodily

-mooed

-moos

-mope

-mopes

-mopped

-mopping

-moraine

-moralist

-moralistic

-moratorium

-moratoriums

-morbidity

-mordant

-mordantly

-morgen

-morgue

-morgues

-moribund

-morocco

-moronic

-morose

-morosely

-moroseness

-morpheme

-morphemic

-morphine

-morphines

-morphism

-morphism's

-morphisms

-morphologic

-morphophonemic

-morphophonemics

-morris

-mortgagee

-mortgagees

-mortician

-morticians

-mosque

-mosques

-motherhood

-motherland

-moths

-motional

-motivator

-motorman

-motormen

-mottle

-mottled

-mottler

-mottles

-mottling

-mountable

-mountainside

-mountainsides

-mousier

-mousiness

-mousy

-mouthpiece

-mouthpieces

-mucilage

-mucky

-mucus

-mudding

-muddlehead

-muddleheaded

-muddleheadedness

-muddleheads

-mudguard

-mudsling

-mudslinger

-mudslingers

-mudslinging

-muggers

-muggier

-mugginess

-mugging

-muggings

-muggy

-mulatto

-mulattoes

-mulattos

-mulch

-mulched

-mulches

-mulching

-mulct

-mulish

-mulishly

-mulishness

-mull

-mullah

-mullen

-muller

-mulligan

-mulligatawny

-mulling

-multi

-multichannel

-multicollinearity

-multicolumn

-multicomputer

-multicomputer's

-multicomputers

-multidimensionality

-multidisciplinary

-multifaceted

-multifigure

-multifunctioned

-multilateral

-multilaterally

-multimedia

-multimegaton

-multimillionaire

-multinomial

-multiplet

-multiplets

-multipliable

-multipurpose

-multisyllabic

-multitudinous

-multitudinously

-multitudinousness

-multivalent

-multiversity

-mum

-mummification

-mummifications

-mummified

-mummify

-munge

-munged

-munger

-mungers

-munges

-munging

-mungings

-munificent

-munificently

-muon

-muriatic

-murk

-muscovite

-muscovites

-musculature

-mush

-musher

-musicality

-musicianship

-musicologists

-musicology

-muskellunge

-muskmelon

-muskox

-muskoxen

-muss

-mussed

-musses

-mussing

-must've

-mustachio

-mustachioed

-mustachios

-mustang

-mustangs

-mustn't

-mutant

-mutants

-mutational

-mutationally

-mutineer

-mutt

-mutuality

-mycology

-myers

-mylar

-mynah

-myocardial

-myocardium

-myopia

-myopic

-mystification

-mystified

-mystifier

-mystifies

-mystify

-mystifying

-mystifyingly

-mystique

-mythic

-mythographer

-mythographers

-mythography

-mythological

-mythologically

-myths

-n's

-nab

-nabbed

-nabbing

-nadir

-nagged

-nagging

-naggingly

-nameplate

-nameplates

-naphtha

-napped

-napping

-narcissist

-narcosis

-narrate

-narrated

-narrates

-narrating

-narration

-narrations

-narrator

-narrators

-nary

-nasality

-nascent

-nasturtium

-natal

-natalist

-natality

-natch

-nationalism

-nationalisms

-nationalistic

-nationhood

-nattier

-nattiness

-natty

-naturalistic

-nausea

-nauseas

-nauseate

-nauseated

-nauseates

-nauseating

-nauseatingly

-nautical

-nautically

-nautilus

-navel

-navels

-nd

-nearsighted

-nearsightedly

-nearsightedness

-nebulae

-nebular

-nebulous

-nebulously

-nebulousness

-neckline

-necromancer

-necromancers

-necromancy

-necromantic

-necropsy

-necrosis

-necrotic

-nectar

-nectaries

-nectarous

-nectary

-nee

-needlepoint

-negativism

-negativisms

-negativity

-negligee

-negligees

-negligent

-negligently

-negotiant

-negroid

-nelson

-nematic

-nematode

-nematodes

-nemesis

-neoclassic

-neoclassical

-neocortex

-neodymium

-neolithic

-neologism

-neologism's

-neologisms

-neomycin

-neon

-neonatal

-neonatally

-neoned

-neoplasms

-neoprene

-neptunium

-nerveless

-nervelessly

-nervelessness

-nervier

-nerviness

-nervy

-netherworld

-nettlesome

-neuralgia

-neurasthenic

-neuritis

-neuroanatomy

-neurologist

-neurology

-neuromuscular

-neuronal

-neuropathology

-neurophysiology

-neuropsychiatric

-neuroses

-neurosis

-neurotic

-neuter

-neutered

-neuterer

-neuterers

-neutering

-neuterings

-neuters

-neutralism

-neutralist

-neutralists

-neutron

-neutrons

-newel

-newfound

-newfoundland

-newlywed

-newlyweds

-newsboy

-newsboys

-newscast

-newscaster

-newscasters

-newscasting

-newscasts

-newspaperman

-newspapermen

-newsreel

-newsstand

-newsworthiness

-newsworthy

-newton

-nexus

-nexuses

-nichrome

-niggard

-niggardliness

-niggardly

-niggle

-niggled

-niggler

-niggles

-niggling

-nigglingly

-nightcap

-nightclub

-nightclubs

-nightdress

-nighthawk

-nightmarish

-nightmarishly

-nightshirt

-nighttime

-nihilism

-nihilisms

-nihilist

-nihilistic

-nilpotent

-nimbus

-nimbused

-nimbuses

-ninefold

-niobium

-nipped

-nipping

-nippingly

-nipple

-nipples

-nirvana

-nitpick

-nitrate

-nitrated

-nitrates

-nitrating

-nitration

-nitrations

-nitric

-nitride

-nitriding

-nitrite

-nitrogenous

-nitroglycerine

-nitrous

-nm

-nob

-nobelium

-noblemen

-noblesse

-nocturne

-nodal

-nodally

-nodular

-nodule

-nodules

-noisemake

-noisemaker

-noisemakers

-noisemaking

-nominee

-nominees

-nonacid

-nonadjacent

-nonagricultural

-nonbusiness

-noncarbohydrate

-nonchalant

-nonchalantly

-nonchalantness

-noncombatant

-noncommissioned

-noncommittal

-noncommittally

-noncompliance

-nonconformist

-nonconformists

-noncontiguous

-nondiscriminatory

-nondurable

-noneconomic

-nonemergency

-nonequivalence

-nonequivalent

-nonessential

-nonferrous

-nonfiction

-nonionic

-nonlinguistic

-nonliterary

-nonmagical

-nonmetallic

-nonogenarian

-nonpartisan

-nonpayment

-nonperturbing

-nonpoisonous

-nonpolitical

-nonprescription

-nonprofit

-nonracial

-nonrandom

-nonreducing

-nonresident

-nonresidential

-nonresistance

-nonrespondent

-nonrespondents

-nonresponse

-nonsingular

-nonstop

-nonsupervisory

-nonverbal

-nonverbally

-nonveteran

-nonveterans

-nonviolent

-nonviolently

-nonvolunteer

-nonvolunteers

-nonwhite

-noodle

-noodled

-noodles

-noodling

-noontime

-noose

-nooses

-noosing

-noradrenalin

-noradrenaline

-normative

-normatively

-normativeness

-northbound

-northernmost

-northland

-norths

-nosebleed

-nosebleed's

-nosebleeds

-nosier

-nosiness

-nostalgia

-nostalgic

-nostalgically

-nosy

-notary

-notate

-notated

-notates

-notating

-notative

-notoriety

-nouveau

-nouvelle

-nova

-nova's

-novas

-novitiate

-novitiates

-noxious

-noxiously

-noxiousness

-nozzle

-nozzles

-nth

-nuance

-nuanced

-nubile

-nucleate

-nucleated

-nucleation

-nuclei

-nucleic

-nucleoli

-nucleolus

-nuclide

-nude

-nudely

-nudeness

-nuder

-nudes

-nudest

-nudge

-nudged

-nudger

-nudges

-nudging

-nudism

-nudist

-nudists

-nudity

-nugatory

-nugget

-nuggets

-nullity

-numerable

-numerate

-numerated

-numerates

-numerating

-numeration

-numerations

-numerological

-numerology

-numinous

-numismatic

-numismatics

-numismatist

-nutate

-nutated

-nutates

-nutating

-nutation

-nutcrack

-nutcracker

-nutmeg

-nutrient

-nutrients

-nutritional

-nutritionally

-nutritionist

-nutritionists

-nutritious

-nutritiously

-nutritiousness

-nutritive

-nutritively

-nutshell

-nuttier

-nuttiness

-nutty

-nuzzle

-nuzzled

-nuzzles

-nuzzling

-nylon

-nylons

-nymphomania

-nymphomaniac

-nymphomaniacs

-o's

-oaf

-oafs

-oakwood

-oases

-obduracy

-obdurate

-obdurately

-obdurateness

-obeisant

-obeisantly

-obelisk

-obese

-obesity

-obfuscatory

-obit

-obiter

-obituaries

-obituary

-objectification

-objectifications

-objectified

-objectifies

-objectify

-objectifying

-objectivity

-obligational

-obnoxious

-obnoxiously

-obnoxiousness

-oboe

-oboes

-oboist

-obscenities

-obscenity

-obsequies

-obsequious

-obsequiously

-obsequiousness

-obsequy

-observably

-observational

-observationally

-obsess

-obsessed

-obsesses

-obsessive

-obsessively

-obsessiveness

-obsidian

-obsolescent

-obsolescently

-obtrude

-obtruded

-obtruder

-obtrudes

-obtruding

-obtrusive

-obtrusively

-obtrusiveness

-obtuse

-obtusely

-obtuseness

-obtuser

-obtusest

-obverse

-obversely

-ocarina

-occident

-occidental

-occidentally

-occipital

-occipitally

-occlusive

-occult

-occulter

-occultly

-oceanic

-oceanographic

-oceanography

-oceanside

-ocelot

-octagon

-octagonal

-octagonally

-octagons

-octahedron

-octane

-octennial

-octet

-octile

-octillion

-octogenarian

-octoroon

-ocular

-oculist

-odium

-odometer

-odometer's

-odometers

-odyssey

-offal

-offbeat

-offertories

-offertory

-offhand

-offhanded

-offhandedly

-offhandedness

-officeholder

-officeholders

-officemate

-officemates

-officialdom

-offload

-offloaded

-offloading

-offloads

-offramp

-offsetting

-offshoot

-offshore

-offstage

-ogive

-ogled

-ohm

-ohmic

-ohmmeter

-ohmmeter's

-ohmmeters

-ohms

-oilman

-oilmen

-oilseed

-oilseeds

-oldies

-oldster

-oldsters

-oldy

-oleander

-oleanders

-oleomargarine

-oligarchic

-oligarchy

-oligopolistic

-oligopoly

-omega

-omegas

-omelet

-omelets

-omicron

-omni

-omnibus

-omnipotence

-omnipotent

-omnipotently

-oncology

-oncoming

-onetime

-oneupmanship

-onlooker

-onlookers

-onrush

-onrushing

-onslaught

-onslaughts

-ontogeny

-ontological

-ontologically

-ontology

-onus

-onyx

-oodles

-opalescent

-opalescently

-operant

-operantly

-operants

-operatic

-operetta

-ophthalmic

-ophthalmologist

-opinionated

-opinionatedly

-opinionatedness

-opossum

-opposable

-opprobrium

-opthalmic

-opthalmologic

-opthalmology

-opticians

-optimist

-optimists

-optionality

-optometric

-optometrist

-optometrists

-optometry

-opulent

-opulently

-opus

-opuses

-orangutan

-orate

-orated

-orates

-orating

-oratorical

-oratorically

-oratorio

-oratorios

-orchestral

-orchestrally

-orchestrate

-orchestrated

-orchestrater

-orchestrates

-orchestrating

-orchestration

-orchestrations

-ordnance

-ordnances

-oregano

-organdy

-organically

-organismic

-organometallic

-orgasm

-orgasms

-orgiastic

-oriental

-orientally

-oriole

-orioles

-ornate

-ornately

-ornateness

-orneriness

-ornery

-orographic

-orography

-orphanage

-orphanages

-orphanhood

-orthodontic

-orthodontics

-orthodontist

-orthodontists

-orthodoxy

-orthographic

-orthographies

-orthography

-orthonormal

-orthophosphate

-orthophosphates

-osmium

-osmosis

-osmotic

-osprey

-ospreys

-osseous

-osseously

-ossification

-ossifications

-ossified

-ossify

-ostensible

-ostensibly

-ostentatious

-ostentatiously

-ostentatiousness

-osteology

-osteopath

-osteopathic

-osteopaths

-osteopathy

-osteoporosis

-ostracism

-otherworld

-otherworldliness

-otherworldly

-ouch

-oughtn't

-oust

-ousted

-ouster

-ousting

-outage

-outage's

-outages

-outback

-outboard

-outboards

-outclass

-outclassed

-outcrops

-outdated

-outdatedness

-outdistanced

-outdistancing

-outdo

-outdrew

-outface

-outfield

-outfielder

-outfielders

-outfitted

-outflow

-outflows

-outfought

-outfox

-outgeneraled

-outgrip

-outhouse

-outland

-outlander

-outlanders

-outlandish

-outlandishly

-outlandishness

-outlawry

-outliers

-outlying

-outmatched

-outmigration

-outmoded

-outnumber

-outnumbered

-outnumbering

-outnumbers

-outpatient

-outpatients

-outplayed

-outpour

-outpouring

-outpourings

-outreach

-outrigger

-outriggers

-outscoring

-outshone

-outsized

-outsmart

-outsmarted

-outsmarting

-outsmarts

-outspoken

-outspokenly

-outspokenness

-outspread

-outstate

-outstation

-outworn

-ouzo

-ova

-ovate

-ovates

-ovation

-ovationed

-ovationing

-ovations

-overabundance

-overactive

-overage

-overaggressive

-overarching

-overbearing

-overbearingly

-overbearingness

-overburden

-overburdened

-overburdening

-overburdeningly

-overburdens

-overcerebral

-overconfident

-overconfidently

-overconsumption

-overcooked

-overcooled

-overcorrection

-overcurious

-overdeveloped

-overdoing

-overdriving

-overeager

-overeagerly

-overeagerness

-overeat

-overeaten

-overeater

-overeating

-overeducated

-overexcited

-overexploitation

-overexploited

-overexpose

-overextend

-overextended

-overextending

-overextends

-overextension

-overfall

-overfeed

-overfill

-overfilled

-overfilling

-overfills

-overgenerous

-overgrazing

-overgrown

-overhand

-overhanded

-overheat

-overheated

-overheating

-overheats

-overindulged

-overlords

-overloud

-overpaid

-overpayment

-overplayed

-overplaying

-overpopulated

-overpopulation

-overpressure

-overprice

-overpriced

-overprotection

-overprotective

-overran

-overrated

-overreach

-overreached

-overreacher

-overreaches

-overrepresented

-oversample

-oversampled

-oversampling

-oversaturate

-overshoes

-oversize

-oversized

-oversizes

-oversoft

-oversoftness

-overspill

-overstay

-overstepping

-overstraining

-overstrike

-overstrikes

-overstriking

-oversubscribed

-oversupply

-overtaxed

-overwrap

-oviform

-ovulatory

-owlish

-owlishly

-owlishness

-owly

-oxalate

-oxalic

-oxaloacetic

-oxcart

-oxidant

-oxidate

-oxidations

-oxidative

-oxidatively

-oxygenate

-oxygenated

-oxygenates

-oxygenating

-oxygenation

-oxygenations

-oxyhydroxides

-ozone

-p's

-pH

-pacemaker

-pacesetting

-pacifism

-pacifist

-pacifistic

-paddock

-padlock

-padlocked

-padlocks

-padre

-paean

-paeans

-paganism

-pageantry

-pagoda

-pagodas

-paintbrush

-palatability

-palatable

-palatableness

-palatal

-palatally

-palefaces

-palette

-palindrome

-palindromes

-palindromic

-palisade

-palisades

-palladium

-pallet

-palmetto

-palmist

-palpable

-palpably

-palsied

-palsies

-palsy

-palsying

-paltrier

-paltriness

-paltry

-pamper

-pampered

-pamperer

-pampering

-pampers

-panama

-pancreatic

-pandemic

-panicked

-panicky

-panjandrum

-panoplied

-panoply

-panorama

-panoramas

-panoramic

-pantheism

-pantheist

-pantheon

-pantomime

-pantomimed

-pap

-papen

-paperboard

-paperhangers

-paperiness

-paperweight

-paperweights

-papery

-papillary

-papoose

-pappies

-pappy

-papyri

-papyrus

-papyruses

-parable

-parables

-parabola

-parabolic

-paraboloid

-paraboloidal

-paradigmatic

-paradoxic

-parakeet

-parakeets

-parallelepiped

-parallelepipeds

-paramagnet

-paramagnetic

-paramedical

-parametrically

-paranoiac

-paranoiacs

-paranormal

-paranormally

-paraphernalia

-paraplegic

-paraprofessional

-paraprofessionals

-parapsychology

-parasol

-parasols

-parasympathetic

-paratroop

-paratrooper

-paratroopers

-paratroops

-parboil

-parboiled

-parenthetic

-pariah

-parimutuel

-parimutuels

-parishioner

-parishioners

-parkish

-parkland

-parklike

-parkway

-parlance

-parlay

-parlayed

-parley

-parleys

-parliamentarian

-parliamentarians

-parochial

-parochialism

-parochialism's

-parochialisms

-parochially

-parodied

-parodies

-parody

-parolee

-parolees

-parquet

-parqueted

-parqueting

-parrotlike

-parsec

-parsecs

-parsimonious

-parsimoniously

-parsnip

-parsonage

-participial

-participially

-participle

-participles

-particularistic

-particularity

-particulate

-particulates

-partook

-parvenu

-passable

-passband

-passerby

-passersby

-pasta

-pasteboard

-pastel

-pastels

-pasteup

-pastiche

-pastier

-pasties

-pastiness

-pasty

-patchier

-patchiness

-patchy

-patentee

-patentees

-paternalism

-paternalistic

-paternity

-paternoster

-pathless

-pathlessness

-pathogen

-pathogenesis

-pathogenic

-pathogens

-pathologic

-patina

-patinas

-patio

-patios

-patriarchal

-patriarchies

-patriarchy

-patrimonial

-patrimony

-patristic

-patristics

-patrolled

-patrolling

-patrolman

-patrolmen

-patroness

-patted

-patting

-paunch

-paunchier

-paunchiness

-paunchy

-pauper

-pawnshop

-pawnshop's

-pawnshops

-payday

-payload

-payload's

-payloads

-paymaster

-paymasters

-peacemaking

-peacetime

-peacetimes

-peaky

-peasanthood

-pecan

-pecans

-peccadilloes

-peccary

-pectoral

-pectorals

-peculate

-peculated

-peculates

-peculating

-peculation

-pecuniary

-pedagogue

-pedagogy

-pedal

-pedals

-pedant

-pedantry

-peddle

-peddled

-peddles

-peddling

-pediatrician

-pedigree

-pedigreed

-pediment

-pedimented

-peephole

-peepy

-peerage

-peevish

-peevishly

-peevishness

-pegboard

-pegboards

-pegged

-pegging

-pejorative

-pejoratively

-pejoratives

-pelican

-pelicans

-pellagra

-pelvic

-pelvis

-pelvises

-pemmican

-penal

-penally

-penchant

-pendant

-penicillin

-penitential

-penitentially

-penknife

-penknife's

-penknives

-penman

-penmen

-pennant

-pennants

-pentagonal

-pentagonally

-pentecostal

-penultimate

-penultimately

-penurious

-penuriously

-penuriousness

-penury

-peonies

-peony

-peppergrass

-peppermint

-peppermints

-pepperoni

-peppery

-peppier

-peppiness

-pepping

-peppy

-peptidase

-peptidases

-peptide

-peptides

-percept

-percolator

-percolators

-percussion

-percussions

-percussive

-percussively

-percussiveness

-perdition

-perditions

-perfectibility

-perfectible

-perfectionism

-perfidious

-perfidiously

-perfidiousness

-perfidy

-perforate

-perforated

-perforates

-perforating

-perforation

-perforations

-perfumery

-perfunctorily

-perfunctoriness

-perfunctory

-perfusion

-perihelion

-perimeter

-periodicities

-periodicity

-periodontal

-periodontally

-peripatetic

-periphrastic

-periscope

-periscopes

-periwinkle

-periwinkles

-perjure

-perjured

-perjurer

-perjures

-perjuring

-perjury

-perk

-perked

-perkier

-perkiness

-perking

-perks

-perky

-permalloy

-permanency

-permeable

-permeableness

-pernicious

-perniciously

-perniciousness

-peroxide

-perpetuity

-perquisite

-perquisites

-persecutory

-persiflage

-persimmon

-persimmons

-persona

-personae

-perspicacious

-perspicaciously

-perspicaciousness

-perspicuity

-perspire

-perspired

-perspires

-perspiring

-pert

-pertinacious

-pertinaciously

-pertinaciousness

-pertinence

-pertly

-pertness

-pervasion

-perverse

-perversely

-perverseness

-perversion

-perversions

-perversive

-peskier

-pesky

-pessimism

-pessimist

-pessimists

-pesticide

-pesticides

-pestilent

-pestilential

-pestilentially

-pestilently

-pestle

-pestled

-pestles

-pestling

-petite

-petiteness

-petits

-petri

-petrification

-petrified

-petrify

-petrochemical

-petroglyph

-petrol

-petrology

-pettish

-pettishly

-pettishness

-petulance

-petulances

-petulant

-petulantly

-petunia

-peyote

-pfennig

-phagocyte

-phagocytes

-phalanger

-phalanx

-phalanxes

-phantasy

-pharmaceutic

-pharmaceutical

-pharmaceutically

-pharmaceuticals

-pharmaceutics

-pharmacies

-pharmacist

-pharmacists

-pharmacological

-pharmacologically

-pharmacology

-pharmacy

-pharyngeal

-pharynx

-pharynxes

-phenol

-phenolic

-phenotype

-phenyl

-phi

-philander

-philandered

-philanderer

-philanderer's

-philanderers

-philandering

-philanders

-philanthropic

-philanthropies

-philanthropist

-philanthropists

-philanthropy

-philharmonic

-philodendron

-philological

-philologically

-philologists

-philology

-phlegm

-phlox

-phobic

-phoebe

-phoenix

-phonetically

-phonic

-phonics

-phonier

-phonies

-phoniness

-phonologic

-phonological

-phonologically

-phonology

-phony

-phosphide

-phosphine

-phosphines

-phosphor

-phosphoresce

-phosphorescent

-phosphorescently

-phosphors

-phosphorus

-photochemical

-photochemically

-photoelectronic

-photoelectrons

-photoengravers

-photogenic

-photographically

-photoluminescence

-photolysis

-photolytic

-photometric

-photometry

-photomicrograph

-photomicrography

-photon

-photon's

-photons

-photorealism

-photosensitive

-phrasemaking

-phraseologies

-phraseology

-phraseology's

-phylogeny

-physiochemical

-physiognomy

-physiologic

-physiologist

-physiotherapist

-physiotherapy

-phytoplankton

-pianism

-pianissimo

-pianist

-pianistic

-pianists

-pica

-piccolo

-pickaxe

-pickerel

-pickerels

-pickier

-pickoff

-pickoffs

-picky

-picnicked

-picnicker

-picnickers

-picnicking

-picofarad

-picofarads

-picojoule

-piddle

-piddling

-pidgin

-piedmont

-piezoelectric

-piezoelectricity

-pigeonhole

-pigeonholed

-pigeonholes

-pigeonholing

-pigging

-piggish

-piggishly

-piggishness

-piggy

-pigmentation

-pigmentations

-pigpen

-pigpens

-pigroot

-pigskin

-pigsty

-pigtail

-pigtailed

-pilfer

-pilfered

-pilferer

-pilfering

-pilfers

-pilloried

-pillories

-pillory

-pillorying

-pimento

-pimp

-pimping

-pimple

-pimpled

-pimples

-pimplike

-pimply

-pimps

-pinafore

-pinafores

-pinball

-pincushion

-pinhead

-pinheaded

-pinheadedness

-pinheads

-pinhole

-pinholes

-pinkie

-pinkies

-pinkish

-pinkishness

-pinochle

-pintail

-pintails

-pinto

-pinwheel

-pion

-pip

-pipet

-pipette

-piquant

-piquantly

-piquantness

-piracy

-pirouette

-pirouetting

-pistachio

-pistole

-pistoleers

-pitchblende

-pitchfork

-pitchfork's

-pitchforks

-pitchstone

-pitman

-piton

-piton's

-pitons

-pittance

-pittance's

-pittances

-pitting

-pituitary

-pixies

-pixiness

-pixmap

-pixmap's

-pixmaps

-pixy

-pizza

-pizzicato

-placate

-placated

-placater

-placates

-placating

-placation

-placative

-placeable

-placeless

-placelessly

-placenta

-placental

-plagiarism

-plagiarist

-plainclothes

-planeload

-planetaria

-planetarium

-planetesimal

-planetoid

-planetoids

-plankton

-planoconcave

-planoconvex

-plantain

-plaque

-plaques

-plasm

-plastically

-platitude

-platitudes

-platitudinous

-platitudinously

-platonic

-platoon

-platoons

-platted

-plausibly

-playback

-playbacks

-playboy

-playboys

-playhouse

-playhouses

-playoff

-playroom

-playtime

-playwriting

-plaza

-plazas

-pleat

-pleated

-pleater

-pleats

-plenipotentiary

-plenitude

-plenum

-plethora

-pleura

-pleural

-pleuras

-pliable

-pliableness

-pliancy

-pliant

-pliantly

-pliantness

-plink

-plinked

-plinker

-plinking

-plinks

-plodded

-plodding

-ploddingly

-plop

-plopped

-plopping

-plosive

-plover

-plovers

-pluggable

-plummer

-plummet

-plummeted

-plummets

-plunk

-plunker

-plunkers

-plunking

-pluralism

-pluralist

-pluralistic

-pluralists

-plushier

-plushiness

-plushy

-plutonium

-plywood

-pneumatic

-pneumatics

-pock

-pocketful

-pocketknife

-pocketknife's

-pocketknives

-podge

-podger

-podgers

-podia

-podium

-poesies

-poesy

-pogo

-pogrom

-pogroms

-poignancy

-poignant

-poignantly

-poinsettia

-pokerface

-pokerfaced

-pol

-polarimeter

-polarimeter's

-polarimeters

-polarimetry

-polariscope

-polarogram

-polarogram's

-polarograms

-polarograph

-polarography

-polecat

-polemical

-polemically

-policymaker

-policymakers

-policymaking

-polio

-polis

-politburo

-politicking

-politico

-politicos

-polities

-polka

-polka's

-polkas

-pollock

-pollutant

-pollutants

-polonaise

-polonium

-polybutene

-polybutenes

-polychemicals

-polycrystalline

-polyelectrolytes

-polyester

-polyesters

-polyether

-polyethers

-polyethylene

-polygamous

-polygamously

-polygamy

-polygonal

-polygonally

-polygynous

-polyhedra

-polyhedral

-polyhedron

-polyisobutylene

-polyisocyanates

-polymerase

-polymeric

-polymorph

-polymorphic

-polymyositis

-polyphony

-polyphosphate

-polyphosphates

-polypropylene

-polystyrene

-polytechnic

-polytonal

-polytonally

-polyunsaturated

-pomegranate

-pompadour

-pompano

-pompons

-pomposity

-poncho

-pons

-pontiff

-pontifical

-pontificals

-pontificate

-pontificated

-pontificates

-pontificating

-pontification

-pooch

-pooched

-poodle

-pooh

-popcorn

-poplin

-popper

-poppyseed

-popularism

-porcine

-porgy

-pornographer

-pornography

-porosity

-porous

-porously

-porousness

-porpoise

-porpoises

-portage

-portaged

-portaging

-portent

-portentous

-portentously

-portentousness

-portents

-porterhouse

-portfolio

-portfolios

-portmanteau

-portmanteaus

-portraiture

-portrayal

-portrayals

-poseur

-poseurs

-posh

-poshest

-positivism

-positivist

-positivists

-positron

-posse

-posses

-postdate

-postdated

-postdates

-postdating

-postdoctoral

-posteriori

-postfix

-postfixed

-postfixes

-postfixing

-postgraduate

-posthumous

-posthumously

-posthumousness

-postlude

-postludes

-postmarital

-postmark

-postmarked

-postmarks

-postmen

-postmortem

-postoperative

-postoperatively

-postorder

-postpartum

-postponement

-postpositions

-postsecondary

-postvocalic

-postwar

-potable

-potableness

-potage

-potbellied

-potbelly

-potboil

-potboiler

-potboilers

-potency

-pothole

-potholed

-potholing

-potion

-potions

-potlatch

-potlatches

-potluck

-potpourri

-poultice

-poultices

-pow

-powderpuff

-powdery

-practicability

-pragmatism

-pragmatist

-pragmatists

-praiseworthiness

-praiseworthy

-pram

-prams

-praseodymium

-prattle

-prattled

-prattler

-prattles

-prattling

-prattlingly

-praxes

-praxis

-prayerful

-prayerfully

-prayerfulness

-preamble

-preambles

-prearranged

-precautionary

-precess

-precessed

-precesses

-precessing

-precession

-prechlorination

-precipitable

-precocity

-precode

-precoded

-precollege

-precolonial

-preconscious

-precooked

-precut

-predator

-predator's

-predators

-predatory

-predecline

-predestined

-predicator

-predigested

-predilect

-predilection

-predilections

-predispose

-predisposed

-predisposes

-predisposition

-predispositions

-predoctoral

-predominance

-preeminence

-preeminent

-preeminently

-preemployment

-preemptor

-preen

-preener

-preening

-preexistent

-preexisting

-prefab

-prefabricate

-prefabricated

-prefabrication

-prefatory

-prefect

-prefects

-prefecture

-prefectures

-preferment

-prefiguration

-preflight

-preflighted

-preflighting

-preflights

-pregnancies

-pregnancy

-preindustrial

-preinterview

-preisolated

-prejudicial

-prejudicially

-prejudicialness

-preliterate

-premarital

-premaritally

-premarket

-premeditate

-premeditation

-premeditative

-premix

-premixed

-premonition

-premonitions

-premonitory

-preordainment

-prep

-prepackaged

-prepayment

-preponderance

-preponderances

-preponderant

-preponderantly

-preponderate

-preponderately

-preponderating

-preponderation

-prepping

-preprepared

-preprocessing

-prepubescent

-prepublication

-preradiation

-presage

-presaged

-presager

-presages

-presaging

-preschool

-preschooler

-prescience

-prescience's

-prescript

-presentable

-presentableness

-presentational

-presentments

-presoaks

-pressman

-pressmen

-prestidigitate

-prestidigitation

-prestidigitator

-prestigious

-prestigiously

-prestigiousness

-presto

-prestos

-presumable

-presupposition

-presuppositions

-pretest

-pretested

-pretesting

-pretests

-pretrial

-pretzels

-prevision

-previsioned

-previsioning

-previsions

-prewar

-prickle

-prickled

-prickling

-priestess

-priestesses

-prig

-priggish

-priggishly

-priggishness

-prim

-primal

-primate

-primates

-primitivism

-primly

-primness

-primordial

-primordially

-primp

-primping

-printmake

-printmaker

-printmakers

-printmaking

-prismatic

-prissier

-prissiness

-prissy

-pristine

-pristinely

-privateer

-privateer's

-privateers

-probabilist

-probity

-procaine

-processional

-processionally

-procreate

-procreation

-procreative

-procreativity

-procrustean

-proctor

-proctor's

-proctored

-proctoring

-proctors

-prod

-prodded

-prodding

-prodigies

-prodigy

-prof

-profanity

-professorial

-professorially

-professorship

-profligate

-profligately

-profligates

-profoundity

-profundity

-profuse

-profusely

-profuseness

-profusion

-progenitor

-prognoses

-prognosis

-prognosticate

-prognostication

-prognosticative

-prognosticator

-progressivism

-prohibitory

-projectile

-projectiles

-projectionist

-projectionists

-prolate

-prolifically

-prolix

-prolixity

-prolixly

-prolongate

-prolongated

-prolongates

-prolongating

-prolongation

-promethium

-promptitude

-promulgators

-pronto

-proofreader

-proofreading

-proofreads

-propagandist

-propagandistic

-propagandists

-propane

-propellant

-propellants

-propelling

-prophetically

-propinquity

-propionate

-propitiate

-propitiation

-proportionality

-proportionate

-propped

-propping

-proprietorship

-proprietorships

-proprioception

-proprioceptive

-propylene

-prorate

-prorated

-prorating

-proration

-prosaic

-proscenium

-prosceniums

-proscribe

-proscribed

-proscriber

-proscribes

-proscribing

-proscription

-prosecutor

-prosecutors

-prosodies

-prosody

-prostate

-prosthetic

-prosthetics

-prostitute

-prostitutes

-protactinium

-protagonist

-protagonists

-protean

-protease

-proteases

-protectionist

-proteolysis

-proteolytic

-protestant

-protoplasmic

-prototypic

-protozoa

-protozoan

-protract

-protracted

-protractive

-protrusive

-protrusively

-protrusiveness

-protuberance

-protuberant

-provenance

-proverbial

-proverbially

-provident

-providential

-providentially

-providently

-provincialism

-proviso

-provocateur

-provocateurs

-provocative

-provocatively

-provocativeness

-provost

-proxies

-proxy

-prudential

-prudentially

-prurient

-pruriently

-psalmist

-pseudonym

-pseudonym's

-pseudonyms

-psi

-psych

-psychedelic

-psychiatric

-psychic

-psychic's

-psychical

-psychically

-psychics

-psycho

-psychoacoustic

-psychoacoustics

-psychoactive

-psychoanalysis

-psychoanalyst

-psychoanalytic

-psychobiology

-psychocultural

-psycholinguistic

-psycholinguistics

-psychometric

-psychometrics

-psychometry

-psychopath

-psychopathic

-psychophysic

-psychophysical

-psychophysically

-psychophysics

-psychophysiology

-psychos

-psychoses

-psychosis

-psychosomatic

-psychosomatics

-psychotherapeutic

-psychotherapeutics

-psychotherapists

-psychotherapy

-psychotic

-ptarmigan

-puberty

-pubescent

-publicists

-puck

-puckish

-puckishly

-puckishness

-puddly

-pudgier

-pudginess

-pudgy

-pueblo

-pueblos

-puerile

-puerilely

-puffball

-puffballs

-puffery

-puffin

-puffiness

-puffins

-puffy

-puissant

-puissantly

-puke

-puked

-pukes

-puking

-pullover

-pulmonary

-pulsar

-pulsar's

-pulsars

-pulsate

-pulsated

-pulsates

-pulsating

-pulsation

-pulsations

-pulverable

-puma

-puma's

-pumice

-pumiced

-pumicing

-pummel

-pummels

-punctuality

-punctuate

-punctuated

-punctuates

-punctuating

-pundit

-punditry

-pundits

-pungency

-pungent

-pungently

-punk

-punkier

-punkies

-punkiness

-punks

-punky

-punster

-punsters

-pupal

-pupate

-pupated

-pupates

-pupating

-pupation

-puppeteer

-puppeteers

-puppyish

-purgation

-purgative

-purgatory

-purism

-purist

-purists

-puritan

-puritanic

-puritanical

-puritanically

-puritans

-purloin

-purloined

-purloiner

-purloining

-purloins

-purposeless

-purposelessly

-purposelessness

-pursuant

-purvey

-purveyed

-purveying

-purveyor

-purveyors

-purveys

-pus

-pushier

-pushiness

-pushup

-pushy

-pussycat

-putative

-putatively

-putrefy

-putrid

-putridly

-putridness

-putt

-putted

-puttied

-putties

-putty

-puttying

-pyknotic

-pyramidal

-pyramidally

-pyre

-pyridine

-pyrolysis

-pyrometer

-pyrometer's

-pyrometers

-pyrometry

-pyrophosphate

-pyrotechnic

-pyrotechnics

-pyroxene

-pyroxenite

-python

-pythons

-q's

-quackery

-quad

-quadrangle

-quadrangles

-quadrangular

-quadrapole

-quadrennial

-quadrennially

-quadric

-quadriceps

-quadrilateral

-quadrilaterals

-quadrille

-quadrilles

-quadrillion

-quadrillionth

-quadripartite

-quadripartitely

-quadripartition

-quadriplegic

-quadrivium

-quadruplicate

-quadruplicated

-quadruplicates

-quadruplicating

-quadruplication

-quadruplications

-quaff

-quaffer

-quahog

-quantile

-quantiles

-quarryman

-quarrymen

-quarterback

-quarterbacks

-quartermaster

-quartermasters

-quartile

-quartiles

-quartzite

-quasar

-quasar's

-quasars

-quaternaries

-quaternary

-quatrain

-queasier

-queasiness

-queasy

-querulous

-querulously

-querulousness

-quibble

-quibbled

-quibbler

-quibbles

-quibbling

-quiche

-quiches

-quickie

-quickies

-quicklime

-quicksand

-quicksands

-quickstep

-quicksteps

-quiescent

-quiescently

-quiescentness

-quincy

-quinquennial

-quinquennially

-quint

-quintessential

-quintet

-quintets

-quintile

-quintiles

-quintillion

-quintillionth

-quip

-quipping

-quips

-quirk

-quirking

-quirks

-quirt

-quixotic

-quizzical

-quizzically

-quonset

-quorum

-r's

-rabbi

-rabbinical

-rabbinically

-rabid

-rabidly

-rabidness

-rabies

-racetrack

-racetracker

-raceway

-racier

-raciness

-racism

-racist

-racists

-rackety

-racquet

-racquets

-racy

-radian

-radians

-radicalism

-radices

-radii

-radioactive

-radioactively

-radioactivities

-radioactivity

-radioastronomy

-radiocarbon

-radiochemical

-radiochemically

-radiochemistry

-radiographic

-radiography

-radiologic

-radiological

-radiologically

-radioman

-radiomen

-radiometer

-radiometer's

-radiometers

-radiometric

-radiometry

-radionics

-radiophysics

-radiotherapy

-radium

-radon

-raffish

-raffishly

-raffishness

-raffle

-raffled

-raffles

-raffling

-ragging

-ragout

-ragweed

-ragweeds

-railbird

-railbirds

-railhead

-railheads

-raillery

-rainless

-rainstorm

-rainwater

-rajah

-rakish

-rakishly

-rakishness

-ramified

-ramifies

-ramify

-ramifying

-rammed

-ramming

-rampage

-rampaged

-rampages

-rampaging

-rampant

-rampantly

-ramrod

-ramrods

-rancho

-ranchos

-rancid

-rancidity

-rancidness

-rancorous

-rancorously

-randies

-randy

-rangeland

-rangelands

-rangier

-ranginess

-rangy

-rapacious

-rapaciously

-rapaciousness

-rapier

-rapists

-rapped

-rappel

-rapper

-rapper's

-rappers

-rapping

-rapport

-rapprochement

-rarefied

-rarefy

-ratable

-ratchet

-ratchet's

-ratcheted

-ratcheting

-ratchets

-rateable

-ratiocinate

-ratiocinated

-ratiocinates

-ratiocinating

-ratiocination

-ratiocinative

-rationalism

-rationalist

-rationalistic

-rationalists

-rattail

-rattier

-ratty

-raucous

-raucously

-raucousness

-ravish

-ravisher

-ravishes

-ravishing

-ravishingly

-rawboned

-rawhide

-rawhided

-rawhiding

-raze

-razed

-razer

-razes

-razing

-razorback

-rd

-reachability

-reactant

-reactants

-readably

-readership

-readership's

-readjust

-readjuster

-readjusting

-readjustment

-reaffirmation

-reafforest

-reagent

-realtor

-realtors

-realty

-reappearance

-reapplication

-reapportionment

-reappraise

-reappraising

-reassert

-reasserted

-reasserting

-reassurance

-recalcitrant

-recallable

-recant

-recanted

-recappable

-recency

-receptionist

-receptionists

-recertification

-recheck

-rechecking

-recherche

-recherches

-recipiency

-recitative

-recluse

-recluse's

-recluses

-reclusion

-reclusive

-recoilless

-recommence

-recommencing

-recommendable

-recommendatory

-recommittal

-recomposition

-reconciliatory

-recondite

-reconditely

-reconditeness

-recondition

-reconditioning

-reconditionings

-reconditions

-reconfigurability

-reconnaissance

-reconquer

-reconquered

-reconquering

-reconquers

-recontamination

-reconvene

-reconvening

-reconvention

-reconverting

-recopied

-recopies

-recopy

-recoup

-recouped

-recouping

-recoups

-recriminate

-recriminated

-recriminates

-recriminating

-recrimination

-recriminations

-recriminative

-recruitment

-rectification

-rectifications

-rectified

-rectifier

-rectifiers

-rectify

-rectilinear

-rectilinearly

-rectitude

-rectory

-recumbent

-recumbently

-recuperate

-recuperated

-recuperates

-recuperating

-recuperation

-recuperative

-recurred

-recusant

-recuse

-redact

-redactions

-redactor

-redbird

-redbirds

-redbud

-redcoat

-redcoats

-redding

-redecorating

-redecoration

-rededicate

-redemptive

-redeposition

-redhead

-redheaded

-redheader

-redheads

-rediscover

-rediscovering

-rediscovery

-redistricting

-redneck

-rednecked

-rednecks

-redo

-redound

-reduct

-reductionism

-reductive

-redwood

-redwoods

-reedier

-reedy

-reek

-reeked

-reeker

-reeking

-reeks

-reelection

-reemission

-reemission's

-reemissions

-reenact

-reentry

-reenumerate

-reenumeration

-reestimate

-reeve

-reexamination

-refactoring

-refashion

-refectories

-refectory

-referenda

-refinance

-refineries

-refinery

-reflectance

-reflux

-refluxed

-refluxes

-refluxing

-reforestation

-reformability

-reformatories

-reformatory

-reformism

-reformist

-reformists

-refract

-refracted

-refracting

-refraction

-refractive

-refractively

-refractiveness

-refractometer

-refractometer's

-refractometers

-refrigerate

-refrigerated

-refrigeration

-refurbish

-refurbished

-refurbisher

-refurbishing

-regale

-regalia

-regatta

-regattas

-regency

-regimentation

-regionalism

-registrable

-registrant

-registrants

-registrar

-registrars

-registries

-registry

-regressors

-reground

-regulatory

-rehabilitate

-rehabilitated

-rehabilitates

-rehabilitating

-rehabilitation

-rehabilitations

-rehabilitative

-rehearing

-reimbursable

-reimburse

-reimburses

-reimbursing

-reinstitution

-reinterpretation

-reinterview

-reinvest

-reinvestigation

-reinvigoration

-rejigger

-rejoinder

-relativist

-releasable

-relevancy

-reliant

-reliantly

-relict

-religionists

-religiosity

-relocatable

-remake

-remaking

-remand

-remanded

-remanding

-remarriage

-remarry

-remarrying

-rematch

-remediable

-remediableness

-remedial

-reminisce

-reminisced

-reminisces

-reminiscing

-remiss

-remission

-remissly

-remissness

-remit

-remits

-remitted

-remitting

-remorseful

-remorsefully

-remorsefulness

-remorseless

-remorselessly

-remorselessness

-remounting

-remunerate

-remunerated

-remunerates

-remunerating

-remuneration

-remunerations

-remunerative

-remuneratively

-remunerativeness

-renascent

-renaturation

-renature

-renaturing

-renegotiate

-renegotiation

-renewable

-renovate

-renovated

-renovates

-renovation

-renumeration

-renunciate

-renunciation

-renunciations

-renunciative

-reorient

-reorientation

-repacked

-repairable

-repairmen

-repartee

-repatriations

-repayment

-repeatability

-repelled

-repellent

-repellently

-repelling

-repentant

-repentantly

-repertory

-repetitious

-repetitiously

-repetitiousness

-replenishment

-replenishments

-reportage

-reportorial

-reportorially

-reprehensible

-reprehensibleness

-representativity

-reprimand

-reprimanded

-reprise

-reprised

-reprising

-reprobate

-reprobating

-reprobation

-reprobative

-reps

-reptilian

-republicanism

-repugnance

-repugnant

-repugnantly

-resale

-rescaling

-rescind

-rescinded

-rescinder

-researchable

-resemblant

-resettlement

-residency

-residual

-residually

-residuals

-residuary

-residuum

-resilience

-resilient

-resiliently

-resinlike

-resonate

-resonated

-resonates

-resonating

-resonator

-resonators

-respirator

-respirators

-respiratory

-respire

-respiring

-restaurateur

-restitution

-restock

-restorability

-restorative

-restoratively

-restorativeness

-restructurability

-restudy

-resupplied

-resupplies

-resupply

-resupply's

-resupplying

-resurgence

-resurgent

-resuscitate

-resuscitated

-resuscitates

-resuscitating

-resuscitation

-resuscitative

-resuspension

-retaliate

-retaliated

-retaliates

-retaliating

-retaliative

-retaliatory

-retardant

-retardation

-retch

-retching

-retell

-retelling

-retest

-rethink

-rethinker

-rethinking

-rethought

-reticulum

-retiree

-retorsion

-retouching

-retrenching

-retrenchment

-retributed

-retribution

-retroactive

-retrofit

-retrofitting

-retroflection

-retroflex

-retroflexed

-retroflexion

-retrogradations

-retrograde

-retrogradely

-retrograding

-retrogressive

-retrogressively

-retrorocket

-retrovision

-revaluation

-revelatory

-revengeful

-revengefully

-revengefulness

-reverberate

-reverberated

-reverberation

-reverberations

-reverberative

-reverent

-reverie

-reveries

-reversibility

-revet

-revetments

-revisable

-revisionary

-revisionist

-revisionists

-revivalism

-revivified

-revocable

-revolutionists

-revue

-revues

-revulsion

-revved

-revving

-rhapsodic

-rhapsody

-rhenium

-rheology

-rheostat

-rheostats

-rhetorical

-rhetorically

-rhetoricalness

-rhetorician

-rhetoricians

-rheum

-rheumatic

-rheumatics

-rhinestone

-rhinestones

-rhino

-rhinos

-rhinotracheitis

-rho

-rhodium

-rhododendron

-rhododendrons

-rhodolite

-rhodonite

-rhombic

-rhombus

-rhombuses

-ribald

-riboflavin

-ribonucleic

-ribosomal

-ribosome

-ribosomes

-rickets

-rickety

-ricochet

-ricocheted

-ricocheting

-ricochets

-ridable

-riddance

-ridding

-ridgepole

-riflemen

-rigamarole

-rigger

-riggers

-rightist

-rigmarole

-rigmaroles

-rimless

-rimmed

-rimming

-ringlet

-ringlets

-ringside

-ringsiders

-rink

-rinker

-riparian

-risible

-risibles

-riskier

-riskiness

-risky

-riverbank

-riverbanks

-riverboat

-riverfront

-riverine

-roach

-roaches

-roadbed

-roadbeds

-roadblock

-roadblocks

-roadhouse

-roadhouses

-robotism

-rockabye

-rockbound

-rodder

-rodding

-rodent

-rodents

-rodeo

-rodeos

-roebuck

-roebucks

-roentgen

-roguish

-roguishly

-roguishness

-roil

-roiling

-rollback

-rollicking

-rollickingly

-romanticism

-rondo

-rondos

-rood

-rooftop

-rooftops

-rookie

-rookies

-roomful

-roomier

-roominess

-roommate

-roommate's

-roommates

-roomy

-rootless

-rootlessness

-rosaries

-rosary

-roseate

-roseately

-rosebush

-rosemary

-rosette

-rosettes

-roster

-rostrum

-rotogravure

-rotogravures

-rotor

-rotors

-rototill

-rotting

-rotund

-rotunda

-rotundity

-rotundly

-rotundness

-roughish

-roughneck

-roughshod

-roulette

-rouletted

-roulettes

-rouletting

-roundhead

-roundheaded

-roundheadedness

-roundhouse

-roundtable

-roundworm

-roustabout

-rowboat

-rowboats

-rowdier

-rowdies

-rowdiness

-rowdy

-rowel

-rubbery

-rubdown

-rube

-rubella

-rubes

-rubicund

-rubidium

-rubric

-ruckus

-rudderless

-rueful

-ruefulness

-ruminant

-ruminantly

-ruminants

-rummage

-rummaged

-rummager

-rummaging

-rummier

-rummies

-rummy

-rumpus

-runabout

-runabouts

-rundown

-rune

-runes

-runic

-runoff

-runoffs

-runt

-runtiness

-runts

-runty

-runway

-runways

-rupee

-rupees

-rurality

-ruse

-rusk

-rustproof

-rutabaga

-rutabagas

-ruthenium

-rutted

-ruttier

-rutting

-rutty

-s's

-sabbath

-sabbatical

-sabras

-sacral

-sacrament

-sacraments

-sacrilege

-sacrilegious

-sacrilegiously

-sacrosanct

-saddlebag

-saddlebags

-safari

-safekeeping

-saffron

-saga

-sagebrush

-sagged

-sagging

-sailboat

-sailboater

-sailboaters

-sailboating

-sailboats

-sailfish

-sainthood

-salaam

-salacious

-salaciously

-salaciousness

-salamander

-salami

-salamis

-salesgirl

-saleslady

-salesmanship

-saleswomen

-salience

-saliency

-salinger

-salivary

-salivate

-salivated

-salivates

-salivating

-salivation

-saloonkeeper

-salsa

-salsa's

-salsas

-salsify

-saltwater

-salubrious

-salubriously

-salubriousness

-salvageable

-salvo

-salvos

-samovar

-sanatoria

-sanatorium

-sanctimonious

-sanctimoniously

-sanctimoniousness

-sandalwood

-sandbag

-sandbars

-sandblast

-sandblaster

-sandhill

-sandman

-sandpile

-sandpiper

-sanguinary

-sanguineous

-sanitate

-sanitations

-sapped

-sappier

-sappiness

-sapping

-sappy

-sapsucker

-sarcastically

-sarcoma

-sardine

-sardines

-sardonic

-sari

-sartorius

-sashay

-sashayed

-sassafras

-sassing

-satanic

-satiable

-satiate

-satiated

-satiates

-satiating

-satiation

-satiric

-satirical

-satirically

-saturnalia

-saturnine

-saturninely

-saucily

-sauerkraut

-sauna

-sauna's

-saunas

-saute

-sauterne

-sauternes

-savagery

-savoy

-savvied

-savvy

-savvying

-sawdust

-sawyer

-sax

-saxophone

-saxophone's

-saxophones

-saxophonist

-scab

-scabbed

-scabrous

-scabrously

-scabrousness

-scabs

-scalability

-scalpel

-scamp

-scandium

-scapegoat

-scapegoating

-scapegoats

-scapula

-scapular

-scapulars

-scarecrow

-scarface

-scarification

-scarifier

-scarify

-scarred

-scarves

-scat

-scathing

-scathingly

-scatterbrain

-scatterbrained

-scattergun

-scatting

-scavenge

-scavenged

-scavenges

-scavenging

-sceptic

-sceptical

-scepticism

-schism

-schist

-schizoid

-schizomycetes

-schizophrenic

-schmuck

-schnapps

-schoolbook

-schoolbooks

-schoolgirl

-schoolgirlish

-schoolgirls

-schoolmarm

-schoolmate

-schoolmates

-schoolteacher

-schoolwork

-sciatica

-scimitar

-scimitars

-scintillate

-scintillated

-scintillates

-scintillating

-scintillation

-scion

-scions

-sclerosis

-sclerotic

-scoot

-scooted

-scooter

-scooting

-scoots

-scops

-scoreboard

-scoreboards

-scorecard

-scoreless

-scotch

-scrabble

-scrabbled

-scrabbler

-scrabbles

-scrabbling

-scraggly

-scram

-scramming

-scrapbook

-scrapbooks

-scrapping

-scratchier

-scratchiness

-scratchy

-scrawnier

-scrawniness

-scrawny

-screechy

-screed

-screenplay

-screenwriter

-screenwriter's

-screenwriters

-screwball

-screwdriver

-screwdrivers

-screwup

-scrim

-scrimmage

-scrimmaged

-scrimmager

-scrimmages

-scrimmaging

-scrimp

-scrimped

-scrimping

-scrimps

-scriptural

-scripturally

-scriven

-scrivener

-scrollbar

-scrollbar's

-scrollbars

-scrounge

-scrounged

-scrounger

-scroungers

-scrounges

-scrounging

-scrubbed

-scrubber

-scrubbing

-scrumptious

-scrumptiously

-scrupulosity

-scrutable

-scuba

-scuff

-scuffed

-scuffing

-scuffs

-sculptural

-sculpturally

-scurrilous

-scurrilously

-scurrilousness

-scurviness

-scurvy

-seafare

-seafarer

-seafarers

-seafaring

-seafood

-seagull

-seagulls

-seahorse

-sealant

-sealants

-seamanship

-seamanships

-seamier

-seaminess

-seamless

-seamlessly

-seamlessness

-seamstress

-seamstresses

-seamy

-seance

-seaquake

-searchlight

-searchlights

-seaway

-secant

-secants

-secession

-secessionist

-seclude

-secludes

-secluding

-secretariat

-sectarian

-secularism

-secularist

-secularists

-secularity

-sedan

-sedans

-sedate

-sedated

-sedately

-sedateness

-sedates

-sedating

-sedation

-sedative

-sedentary

-sedimentary

-sedimentation

-sedition

-seditious

-seditiously

-seditiousness

-seduction

-seductions

-sedulously

-seedbed

-seedbeds

-seedier

-seediness

-seedless

-seedy

-seepage

-seersucker

-seesaw

-seesawed

-seesawing

-seesaws

-segmental

-segmentally

-segregant

-segregationist

-seismograph

-seismographer

-seismographs

-seismography

-seismological

-seismology

-selectable

-selectional

-selenate

-selenite

-selenium

-selfless

-selflessly

-selflessness

-sellout

-seltzer

-semen

-semi

-semiannual

-semiannually

-semiarid

-semiautomatic

-semicircular

-semidefinite

-semidrying

-semilogarithmic

-seminarian

-seminarians

-semiprofessional

-semiprofessionally

-semiprofessionals

-semipublic

-semiquantitative

-semiquantitatively

-semisecret

-semistructured

-semitic

-semitics

-semitrance

-semitropical

-senatorial

-senile

-senilely

-senor

-senorita

-sensate

-sensately

-sensationalism

-sensual

-sensuality

-sensually

-sensuous

-sensuously

-sensuousness

-sentient

-sentiently

-sentimentalists

-sentimentality

-separability

-sepia

-sept

-septate

-septation

-septennial

-septennially

-septic

-septillion

-septuagenarian

-septum

-sepulchral

-sepulchrally

-sequestration

-sequin

-sequined

-sequins

-sequoia

-serape

-seraph

-seraphim

-serenade

-serenaded

-serenader

-serenades

-serfdom

-serge

-serging

-serological

-serologically

-serology

-serviceability

-serviceman

-servicemen

-serviette

-serviettes

-servitor

-servitors

-servo

-servomechanism

-servomechanisms

-servos

-sesame

-setback

-setbacks

-setscrew

-setscrews

-sevenfold

-severalfold

-severalty

-sewage

-sewerage

-sewn

-sexier

-sexiness

-sextet

-sextillion

-sexton

-sextuple

-sextupled

-sextuplet

-sextupling

-sexy

-shabbily

-shag

-shagging

-shags

-shah

-shakeable

-shakedown

-shakily

-shalom

-shamble

-shambled

-shambling

-shamefacedly

-shampoo

-shampooer

-shampoos

-shamrock

-shank

-shanked

-shards

-sharecrop

-sharecropping

-sharpshoot

-sharpshooter

-sharpshooters

-sharpshooting

-shatterproof

-shaw

-sheathe

-sheave

-sheaving

-shedding

-sheepskin

-sheik

-shenanigan

-shenanigans

-sherbet

-sherlock

-sherries

-sherry

-shibboleth

-shibboleths

-shiftless

-shiftlessly

-shiftlessness

-shill

-shills

-shim

-shimmied

-shimmies

-shimming

-shimmy

-shimmying

-shims

-shinbone

-shindig

-shindig's

-shindigs

-shipbuild

-shipbuilder

-shipman

-shipmate

-shipmates

-shipmen

-shipshape

-shipyard

-shipyards

-shire

-shires

-shirtmake

-shirtmaker

-shirttail

-shivery

-shoddier

-shoddiness

-shoddy

-shoehorn

-shoelace

-shoelaces

-shoemake

-shoemakers

-shoestring

-shoestrings

-shoo

-shoofly

-shooing

-shootout

-shootout's

-shootouts

-shopkeep

-shopworn

-shoreline

-shorelines

-shortfall

-shortfalls

-shortish

-shortsighted

-shortsightedly

-shortsightedness

-shortstop

-showboat

-showcase

-showcase's

-showcased

-showcases

-showcasing

-showdown

-showier

-showiness

-showman

-showmanship

-showmen

-showpiece

-showplace

-showroom

-showy

-shrapnel

-shredded

-shredding

-shrewish

-shrewishly

-shrewishness

-shrift

-shrinkage

-shriver

-shrove

-shrugged

-shrugging

-shuck

-shucker

-shucks

-shuddery

-shuffleboard

-shunned

-shunning

-shunt

-shunted

-shunter

-shunting

-shunts

-shutoff

-shutout

-shuttlecock

-shuttlecocks

-sibilant

-sibilantly

-sic

-sickish

-sickishly

-sickishness

-sickroom

-sidearm

-sidearms

-sideband

-sidebands

-sidecar

-sidecars

-sideline

-sideliner

-sidelines

-sidelong

-sideman

-sidemen

-sidereal

-sidesaddle

-sideshow

-sideshows

-sidestep

-sidestepping

-sidesteps

-sidewall

-sideway

-sidewinder

-sidle

-sidled

-sidles

-sidling

-sienna

-siesta

-sightsee

-sightseeing

-sightseer

-sightseers

-sigma

-sigmas

-signboard

-signpost

-signposted

-signposting

-signposts

-silage

-silica

-silicate

-silicates

-silicide

-silkworm

-silkworms

-silo

-silos

-siltation

-silty

-silversmith

-silversmiths

-silverware

-simile

-simpleminded

-simplemindedly

-simplemindedness

-simpleton

-simulcast

-sinewy

-singe

-singlehanded

-singlehandedly

-singlet

-singsonged

-sinistral

-sinistrally

-sinless

-sinlessly

-sinlessness

-sinter

-sintered

-sinuous

-sinuousities

-sinuously

-sinuousness

-sinus

-sinuses

-sinusoid

-sipped

-sippers

-sipping

-sis

-sisal

-situ

-situs

-sixfold

-sixgun

-sizeable

-sizzle

-sizzled

-sizzler

-sizzling

-skat

-skeet

-skeeter

-skepticism

-sketchbook

-sketchpad

-skid

-skidded

-skidding

-skids

-skiff

-skiffs

-skillet

-skimpier

-skimpiness

-skimpy

-skindive

-skindiving

-skinless

-skinnier

-skinniness

-skinny

-skit

-skits

-skittle

-skullcap

-skullduggery

-skyhook

-skyjack

-skyjacked

-skyjacker

-skyjackers

-skyjacking

-skyline

-skyrocket

-skyscrape

-skyward

-skywave

-skyway

-slag

-slake

-slaked

-slaking

-slalom

-slaloms

-slanderous

-slanderously

-slanderousness

-slapstick

-slatted

-slatting

-slaughterhouse

-slaughterhouses

-slavish

-slavishly

-slavishness

-slaw

-sleazier

-sleaziness

-sleazy

-sledding

-sledgehammer

-sleepwalk

-sleepwalker

-sleety

-sleight

-sleuthing

-slimmer

-slimmers

-slingshot

-slink

-slinked

-slinking

-slinks

-slipstream

-slither

-slithered

-slithering

-slithers

-slitter

-slitters

-slitting

-sliver

-slivered

-slivering

-slivers

-slivery

-slob

-sloe

-slog

-sloganeer

-sloganeering

-slogging

-sloop

-sloops

-sloppily

-slosh

-sloshed

-slothful

-slothfully

-slothfulness

-slough

-sloughed

-sloughing

-sloven

-slovenliness

-slovenly

-slowdown

-sludge

-sludges

-slugged

-slugger

-sluggers

-slugging

-sluice

-sluiced

-sluices

-sluicing

-slumming

-slunk

-slurp

-slurped

-slurping

-slurps

-slurried

-slurries

-slurring

-slurry

-slurrying

-slush

-slyness

-smallish

-smalltime

-smattering

-smatterings

-smiley

-smiley's

-smilies

-smirk

-smirked

-smithereens

-smokehouse

-smokescreen

-smokestack

-smooch

-smooching

-smudge

-smudged

-smudginess

-smudging

-smudgy

-smut

-smuts

-smuttier

-smuttiness

-smutty

-snack

-snacks

-snafu

-snag

-snagged

-snagging

-snags

-snakebird

-snakelike

-snakeroot

-snapback

-snapdragon

-snapdragons

-snappish

-snappishly

-snappishness

-snazzier

-snazzy

-snicker

-snickered

-snickerer

-snickering

-snide

-snidely

-snideness

-snider

-snidest

-sniffle

-sniffled

-sniffler

-sniffles

-sniffling

-snifter

-snip

-snipe

-sniped

-sniper

-sniper's

-snipers

-snipes

-sniping

-snipped

-snipper

-snipper's

-snippers

-snippet

-snippier

-snipping

-snippy

-snips

-snivel

-snob

-snobbery

-snobbish

-snobbishly

-snobbishness

-snobs

-snook

-snooker

-snookers

-snooks

-snoopy

-snorkel

-snorkeled

-snorkeler

-snorkeling

-snotty

-snowball

-snowballed

-snowballing

-snowballs

-snowbank

-snowbank's

-snowbanks

-snowblower

-snowblowers

-snowfall

-snowflake

-snowflakes

-snowmobile

-snowmobiler

-snowmobiling

-snowstorm

-snub

-snubbed

-snubbing

-snubness

-snubs

-snuffboxes

-snuffle

-snuffled

-snuffler

-snuffling

-snugged

-snugging

-snuggly

-soapier

-soapiness

-soapstone

-soapstones

-soapsud

-soapsuds

-soapy

-sobbed

-sobbing

-sobbingly

-sobriety

-sobriquet

-socialistic

-sociality

-socio

-sociocultural

-socioculturally

-sociodemographic

-socioeconomic

-socioeconomically

-socioeconomics

-sociologist

-sociologists

-sociometric

-sociometry

-sodden

-soddened

-soddening

-soddenly

-soddenness

-sodding

-softball

-softwood

-soggier

-sogginess

-soggy

-soiree

-soirees

-soldiery

-solecism

-solenoid

-solenoids

-solicitation

-solicitous

-solicitously

-solicitousness

-solicitude

-solidarity

-soliloquy

-solipsism

-soloist

-soloists

-solstice

-solvating

-solvency

-soma

-somatic

-somebody'll

-someone'll

-somersault

-somersaulting

-somersaults

-sommelier

-sommeliers

-somnolence

-somnolent

-somnolently

-sonata

-sonatas

-songbag

-songbook

-songful

-songfully

-songfulness

-sonic

-sonny

-sonofabitch

-sonorities

-sonority

-sonorous

-sonorously

-sonorousness

-sonuvabitch

-soothsay

-soothsayer

-soothsayers

-soothsaying

-sop

-sophism

-sophist

-sophister

-sophisticate

-sophisticates

-sophistry

-sophomoric

-soporific

-soporific's

-soporifics

-sopping

-soprano

-sopranos

-sops

-sorghum

-sororities

-sorority

-sorrel

-sortie

-soubriquet

-souffle

-soulful

-soulfully

-soulfulness

-soundproof

-soundproofed

-soundproofing

-soundproofs

-sourdough

-southbound

-southeast

-southeaster

-southeasterly

-southeastern

-southernisms

-southernmost

-southland

-southpaw

-southpaws

-southward

-southwards

-southwest

-southwester

-southwesterly

-southwestern

-souvenir

-souvenirs

-sovereignty

-sow

-sowbelly

-sowens

-sower

-sowered

-sowing

-sown

-sox

-soy

-soya

-soybean

-soybeans

-spacecraft

-spacesuit

-spacesuits

-spacious

-spaciously

-spaciousness

-spandrels

-spangle

-spangled

-spangles

-spangling

-spaniel

-spar

-sparkier

-sparkle

-sparkled

-sparkler

-sparkles

-sparkling

-sparky

-sparling

-sparlings

-sparring

-spars

-spasm

-spasms

-spastic

-spatiality

-spatterdock

-spatula

-spavined

-spay

-spayed

-spaying

-speakership

-spearhead

-spearmint

-spec

-specie

-specifiability

-specious

-speciously

-speciousness

-specs

-spectral

-spectrally

-spectralness

-spectrograph

-spectrographically

-spectrography

-spectrometer

-spectrometer's

-spectrometers

-spectrometric

-spectrometry

-spectrophotometer

-spectrophotometer's

-spectrophotometers

-spectrophotometric

-spectrophotometry

-spectroscope

-spectroscopic

-spectroscopy

-specular

-specularity

-specularly

-speedboat

-speedboater

-speedboating

-speedometer

-speedometer's

-speedometers

-speer

-speleological

-speleologist

-speleology

-spellbound

-sperm

-spermatophyte

-sperms

-spew

-spewer

-spewing

-spewings

-spheric

-spherics

-spheroid

-spheroidal

-spheroidally

-spherule

-spherules

-sphinx

-sphinxes

-spic

-spicebush

-spiderwort

-spidery

-spigot

-spigots

-spikier

-spiky

-spillover

-spillover's

-spillovers

-spilt

-spineless

-spinelessly

-spinelessness

-spinier

-spininess

-spinnability

-spinnaker

-spinster

-spiny

-spirituality

-spitfire

-spittle

-splashier

-splashiness

-splashy

-splat

-splattered

-splay

-splayed

-splenetic

-splint

-splinted

-splintery

-splinting

-splints

-splotch

-splotched

-splotches

-splotchy

-splurge

-splurges

-splurging

-splutter

-splutterer

-spoilables

-spoilage

-spokespersons

-spongier

-sponginess

-spongy

-spontaneity

-spoof

-spoonerism

-spoonful

-spoonfuls

-sporadic

-sporadically

-sporadicly

-sportier

-sportiest

-sportiness

-sportsmanship

-sportsmen

-sportswear

-sportswriter

-sporty

-spottier

-spottiness

-spotty

-spousal

-sprain

-sprained

-sprains

-springboard

-sprocket

-sprocketed

-sprocketing

-sprockets

-sprue

-spud

-spume

-spuming

-spumoni

-spunk

-spurge

-spurred

-spurring

-sputnik

-sputniks

-spyglass

-sqrt

-squalid

-squalidly

-squalidness

-squalor

-squamous

-squamously

-squander

-squandered

-squanderer

-squandering

-squanders

-squashier

-squashiness

-squashy

-squatted

-squatter

-squatters

-squatting

-squaw

-squeaky

-squeamish

-squeamishly

-squeamishness

-squeegee

-squeegeed

-squeegees

-squelch

-squelched

-squelcher

-squelches

-squelching

-squirehood

-squirmy

-squirt

-squirted

-squirter

-squirting

-squirts

-squish

-squished

-squishes

-squishier

-squishiest

-squishiness

-squishing

-squishy

-st

-stableman

-stablemen

-staccato

-staccatos

-stackable

-stadium

-stadium's

-stadiums

-stagier

-staginess

-stagnate

-stagnated

-stagnates

-stagnating

-stagnation

-stagy

-stairwell

-stairwells

-stalactite

-stalactite's

-stalactites

-stalag

-stalemate

-stallion

-staminate

-stanchion

-stanchioned

-stanchioning

-stanchions

-standoff

-stank

-stannic

-stannous

-staphylococcus

-starchier

-starchiness

-starchy

-stardom

-stargaze

-stargazer

-stargazes

-stargazing

-starling

-starlings

-starship

-stash

-stashed

-stashes

-stashing

-stasis

-statehood

-stateless

-statelessness

-stateroom

-statesmanlike

-statesmanship

-statesmen

-statewide

-stationarity

-stationeries

-stationery

-stationmaster

-statuary

-statuette

-steamier

-steamily

-steaminess

-steamy

-steelier

-steelies

-steeliness

-steelmaker

-steely

-steeplebush

-steeves

-stein

-steiner

-steiners

-stenography

-stenotype

-stepbrother

-stepchild

-stepchildren

-stepdaughter

-stepfather

-stepladders

-steppe

-steppes

-stepsister

-stepson

-stereography

-stereophonic

-stereoscopy

-stereotypic

-sterility

-sternal

-sternum

-steroid

-steroids

-stethoscope

-stevedore

-stevedores

-stewardess

-stewardesses

-stewardship

-stickle

-stickleback

-stickled

-stickler

-stickling

-stickpin

-stigmata

-stiletto

-stillbirth

-stillbirths

-stillborn

-stilt

-stilted

-stiltedly

-stiltedness

-stilts

-stimulatory

-stingier

-stinginess

-stingy

-stinkpot

-stinky

-stochasticity

-stockbroker

-stockier

-stockiness

-stockpile

-stockpiler

-stockpiling

-stockroom

-stocky

-stodgier

-stodginess

-stodgy

-stoic

-stoichiometric

-stoichiometry

-stoicism

-stoics

-stoke

-stoked

-stoker

-stokes

-stoking

-stolid

-stolidly

-stomachs

-stomp

-stomped

-stomping

-stomps

-stonecutter

-stonecutters

-stonemason

-stonemasons

-stonewall

-stoneware

-stonewort

-stonily

-stooge

-stooges

-stooging

-stopover

-stopovers

-stopwatch

-stopwatches

-storekeep

-storekeeper

-storekeepers

-storeroom

-stormbound

-storyboard

-storyboards

-storyteller

-storytellers

-stowage

-stowages

-straddle

-straddled

-straddler

-straddlers

-straddles

-straddling

-strafe

-strafer

-strafes

-strafing

-straightaway

-strangulate

-strangulated

-strapped

-strapping

-strata

-strategically

-strategist

-strategists

-stratigraphic

-stratigraphy

-stratosphere

-stratospheric

-strawflower

-strawflowers

-streptococcus

-streptomycin

-stressful

-stressfully

-stretchable

-striate

-striated

-striates

-striating

-striation

-stricture

-strictures

-stridency

-strident

-stridently

-strikebreak

-strikebreaker

-strikebreakers

-strikebreaking

-striptease

-stripteaser

-striven

-strongroom

-strongrooms

-strontium

-strop

-strophe

-strophes

-stropped

-stropping

-strops

-structuralist

-structuralists

-strum

-strumming

-strychnine

-stubby

-stucco

-studded

-stultification

-stultify

-stultifying

-stumpage

-stumpy

-stunk

-stunned

-sturgeon

-stutter

-stuttered

-stutterer

-stuttering

-stutters

-styli

-stylist

-stylites

-stylus

-styluses

-stymie

-stymied

-stymies

-styrene

-styrenes

-suable

-suave

-suavely

-suaveness

-suavity

-subaltern

-subareas

-subassembly

-subbing

-subcaste

-subchain

-subclassifications

-subcommand

-subcommands

-subconcept

-subconstituent

-subcontinent

-subcontract

-subcontracting

-subdirectories

-subdirectory

-subdistrict

-subindex

-subjectivist

-subjectivists

-subjugate

-subjugated

-subjugates

-subjugating

-subjugation

-sublease

-sublimate

-sublimated

-sublimates

-sublimating

-subliminal

-subliminally

-subliterary

-sublunary

-submachine

-submersible

-submissive

-submissively

-submissiveness

-submittal

-subnational

-subnet

-subnets

-subnormal

-subnormally

-suboptimal

-subordinator

-subpage

-subparagraph

-subpart

-subparts

-subpoena

-subpoenaed

-subpoenas

-subpopulation

-subpopulations

-subquestion

-subquestion's

-subquestions

-subregion

-subregional

-subregionally

-subregions

-subrogation

-subsample

-subsamples

-subsentence

-subservience

-subservient

-subserviently

-subsistent

-subsocietal

-subsoil

-subsoiler

-subspecies

-substitutionary

-substratum

-subsurface

-subtable

-subtables

-subtended

-subtends

-subterfuge

-subterfuges

-subtest

-subtotals

-subtype

-subtypes

-suburbanite

-suburbanites

-suburbia

-subversive

-subversively

-subversiveness

-subversives

-successorship

-succubus

-suffragette

-suffragettes

-suffuse

-suffused

-suffuses

-suffusing

-suffusion

-suffusive

-suggestibility

-sulfaquinoxaline

-sulfate

-sulfated

-sulfating

-sulfide

-sulfite

-sulfonamide

-sulfonamides

-sulfur

-sulfured

-sulfuric

-sulfuring

-sulfurous

-sulfurously

-sulfurousness

-sulkily

-sullied

-sullies

-sully

-sullying

-sultana

-sumac

-summarily

-summertime

-summitry

-sunbaked

-sunbonnet

-sunburnt

-sunder

-sundered

-sundering

-sunders

-sundial

-sundials

-sunfish

-sunflower

-sunlit

-sunshade

-sunshades

-sunshiny

-sunspot

-suntan

-suntanned

-supercilious

-superciliously

-superciliousness

-superconcept

-supercritical

-superficiality

-superhighways

-superlunary

-supermachine

-supernatant

-supernatural

-supernaturalism

-supernaturally

-supernaturalness

-supernormal

-supernormally

-supernova

-supernova's

-supernovas

-superposable

-superposition

-superpositions

-superpredicate

-supersensitive

-supersensitiveness

-supersonic

-supersonics

-superstructural

-superstructure

-superstructures

-supervene

-supervened

-supine

-supinely

-supineness

-supping

-supplementation

-supplicate

-supplicating

-supposable

-suppressible

-suppressor

-suppressors

-supra

-supranational

-supranationalism

-suprasegmental

-supremacist

-surcease

-surceased

-surceasing

-surcharge

-surcharged

-surcharges

-surcharging

-surfactant

-surfactants

-surfeit

-surfeited

-surfeiter

-surfeits

-surreal

-surrealism

-surrealist

-surrealists

-surreptitious

-surreptitiously

-surreptitiousness

-surrey

-surreys

-surtax

-surveillance

-surveillances

-surveillant

-survivability

-survivalist

-survivalists

-survivorship

-susceptibility

-sushi

-suspensor

-sustainable

-sustainment

-sustenance

-svelte

-sveltely

-svelteness

-swab

-swabbed

-swabbies

-swabbing

-swabby

-swabs

-swaddle

-swaddled

-swaddling

-swag

-swaging

-swami

-swampland

-swampland's

-swamplands

-swank

-swanker

-swankier

-swankiness

-swanky

-swanlike

-swappable

-swart

-swartness

-swash

-swasher

-swastika

-swat

-swatch

-swatches

-swath

-swath's

-swathe

-swathed

-swather

-swathes

-swathing

-swathings

-swats

-swatter

-swatting

-sweatband

-sweatier

-sweatiness

-sweatshirt

-sweatshops

-sweaty

-sweepstake

-sweepstakes

-sweetish

-sweetishly

-sweltering

-swelteringly

-swig

-swigging

-swindle

-swindled

-swindler

-swindles

-swindling

-swingable

-swingier

-swingy

-swinish

-swinishly

-swinishness

-swirlier

-swirly

-swishier

-swishy

-swiss

-switchblade

-switchgear

-switchman

-switchmen

-switchmen's

-swivel

-swivels

-swizzle

-swizzled

-swizzler

-swizzling

-swordfish

-swordplay

-swordplayer

-swordtail

-sycophant

-sycophantic

-sycophantically

-sycophantly

-sycophants

-syllabic

-syllabicity

-syllabification

-syllabify

-syllogistic

-sylvan

-symbiont

-symbolical

-symbolists

-sympathetically

-symphonic

-symposia

-symptomatology

-synagogue

-synagogues

-synaptic

-synchronism

-synchrotron

-syncopate

-syncopated

-syncopation

-syncopative

-syndic

-syndics

-synergy

-synod

-synods

-synonymy

-synoptic

-syphilitic

-syrupy

-sys

-systemic

-tabbies

-tabbing

-tabby

-tableland

-tabletop

-tabletop's

-tabletops

-tabloids

-tabula

-tackiness

-taco

-tacos

-tactful

-tactfully

-tactfulness

-tactic

-tactical

-tactically

-tactlessness

-tactual

-tactually

-tadpoles

-taffeta

-taffies

-taffy

-tailback

-tailgate

-tailgated

-tailgater

-tailgating

-takeoff

-takeoffs

-takeover

-takeovers

-talismanic

-talky

-tallied

-tallies

-tally

-tallyho

-tallying

-talon

-taloned

-talons

-tamable

-tamale

-tamarack

-tamarind

-tambourine

-tamp

-tamping

-tampon

-tangency

-tangerine

-tango

-tangos

-tankard

-tanned

-tannery

-tannin

-tanning

-tantalum

-tao

-taoism

-taoist

-taoists

-taos

-tapeworm

-tapir

-tapirs

-tappet

-tappets

-tarantula

-tarantulas

-tardily

-tarnish

-tarnished

-tarnishes

-tarnishing

-tarp

-tarpapered

-tarpaulin

-tarpaulins

-tarpon

-tarpons

-tarred

-tarring

-tartar

-taskmaster

-tastier

-tastiness

-tasty

-tater

-tattier

-tatting

-tattle

-tattled

-tattler

-tattles

-tattletale

-tattling

-tatty

-tawdrier

-tawdriness

-tawdry

-taxably

-taxiway

-taxiway's

-taxiways

-taxpaying

-teacart

-teacup

-teahouse

-teahouses

-teakettle

-teakwood

-teal

-teals

-teammate

-teammates

-teamster

-teamsters

-teamwork

-teapot

-teapots

-teardrop

-teardrops

-teasel

-teat

-teated

-teats

-tech

-teched

-technetium

-tectonic

-tectonics

-tee

-teeing

-teensier

-teensy

-tees

-teetering

-tektite

-tektites

-telecommunicate

-telegraphy

-telekinesis

-telemeter

-telemeter's

-telemeters

-telemetric

-telemetry

-telepathic

-telepathically

-telepathy

-telephotography

-teleprinter

-teleprocessing

-teleprompter

-telescopic

-telltale

-telltale's

-telltales

-tellurium

-telnet

-telnets

-telomeric

-temerity

-temp

-tempo

-tempos

-temptress

-tenable

-tenableness

-tenacity

-tenancies

-tenancy

-tenderfoot

-tenderloin

-tendon

-tendons

-tenebrous

-tenet

-tenets

-tenfold

-tenon

-tensile

-tensional

-tensionless

-tensorial

-tenspot

-tenths

-tenuous

-tenuously

-tenuousness

-tepees

-tepid

-tepidly

-tepidness

-teratogenic

-teratologies

-teratology

-terbium

-tercel

-terminable

-terminableness

-termini

-terminological

-terminologically

-termite

-termites

-tern

-terpsichorean

-terramycin

-terrapin

-terrapins

-terries

-terry

-terse

-tersely

-terseness

-terser

-tersest

-tertian

-tessellate

-tessellated

-tessellates

-tessellation

-testamentary

-testate

-testator

-testator's

-testators

-testes

-testicular

-testier

-testily

-testimonial

-testimonials

-testiness

-testy

-tetanus

-tether

-tethered

-tethering

-tethers

-tetrachloride

-tetracycline

-tetrafluoride

-tetragonal

-tetragonally

-tetrahalides

-tetrahedra

-tetrahedral

-tetrahedrally

-tetrahedron

-tetrameron

-tetrasodium

-tetravalent

-textural

-texturally

-th

-thallium

-thallophyte

-that'd

-that'll

-theatric

-theatrics

-theism

-theistic

-theocracy

-theoretician

-there'd

-there'll

-therefor

-therefrom

-theretofore

-thereunder

-thermal

-thermally

-thermals

-thermionic

-thermionics

-thermistor

-thermistors

-thermo

-thermocouple

-thermocouples

-thermodynamically

-thermoelastic

-thermoelectric

-thermoformed

-thermoforming

-thermogravimetric

-thermometric

-thermometry

-thermonuclear

-thermopile

-thermoplastic

-thermopower

-thermos

-thermosetting

-thermostable

-thermostatic

-thermostatics

-thesaurus

-thespian

-thespians

-theta

-thetas

-thiamin

-thickish

-thine

-thinned

-thinning

-thinnish

-thiocyanate

-thiouracil

-this'll

-thistledown

-thither

-thoriate

-thoriated

-thorium

-thoroughbred

-thoroughgoing

-thou

-thous

-thousandths

-thrall

-threadbare

-threadbareness

-threefold

-threesome

-thresh

-threshed

-thresher

-threshing

-throatier

-throatiness

-throaty

-throes

-thrombi

-thromboses

-thrombosis

-thrombus

-throwback

-thrum

-thrumming

-thudding

-thuggee

-thulium

-thumbnail

-thumbtack

-thumbtack's

-thumbtacked

-thumbtacking

-thumbtacks

-thunderclap

-thunderclaps

-thunderous

-thunderously

-thunk

-thwack

-thy

-thyratron

-thyroglobulin

-thyroid

-thyroidal

-thyroids

-thyronine

-thyrotoxic

-thyrotrophic

-thyrotrophin

-thyrotropic

-thyrotropin

-thyroxine

-tibia

-tic

-tidbit

-tidbits

-tideland

-tidelands

-tidewater

-tidily

-tiff

-tiffany

-tigress

-tillage

-tilth

-timberland

-timberlands

-timbre

-timepiece

-timeworn

-timothy

-tincture

-tinctured

-tincturing

-tinder

-tine

-tines

-tinfoil

-tinner

-tinplate

-tinsel

-tinselly

-tinsmith

-tinsmiths

-tintable

-tintype

-tinware

-tipoff

-tippier

-tipple

-tippled

-tippler

-tipples

-tippling

-tippy

-tipsier

-tipsiness

-tipsy

-tiptoeing

-tirade

-tirades

-titan

-titanate

-titanic

-titanium

-titans

-titian

-titillate

-titillating

-titillatingly

-titillation

-titillative

-titmouse

-titmouse's

-titrate

-titrated

-titrates

-titrating

-titration

-titular

-titularly

-toadied

-toadies

-toady

-toadying

-toadyism

-tobaggon

-tobaggon's

-tobaggons

-toccata

-today'll

-toddle

-toddled

-toddler

-toddlers

-toddles

-toddling

-toenail

-toenails

-toffee

-tofu

-tog

-togging

-togs

-toilsome

-toilsomely

-toilsomeness

-tokamak

-tollgate

-tollhouse

-toluene

-tomblike

-tombstone

-tombstones

-tome

-tomes

-tomfool

-tommy

-tonal

-tonalities

-tonally

-toneless

-tonelessly

-tonelessness

-tong

-tonger

-tonier

-tonk

-tonks

-tonsillitis

-tony

-toodle

-toolmake

-toolmaker

-toolmakers

-toolmaking

-toolsmith

-toot

-tooted

-tooter

-toothier

-toothily

-toothpaste

-toothy

-tooting

-tootle

-tootled

-tootler

-tootling

-toots

-tootsie

-tootsies

-tootsy

-topaz

-topcoat

-topcoats

-topgallant

-topnotch

-topnotcher

-topocentric

-topographic

-topographical

-topographically

-topographies

-topography

-topped

-toppers

-topping

-toppings

-topside

-topsides

-topsoil

-tori

-tories

-toroid

-toroidal

-toroidally

-toroids

-torpid

-torpidly

-torpor

-torrence

-torsion

-torsional

-torsionally

-torso

-torsos

-tort

-torten

-tortoiseshell

-tortuous

-tortuously

-tory

-tot

-totalistic

-totalitarian

-totalitarianism

-tote

-toted

-totem

-totemic

-toter

-totes

-toting

-tots

-totted

-touchdown

-touchdowns

-touchstone

-touchstones

-toughs

-tourism

-tousle

-tousled

-tousles

-tousling

-tout

-touted

-touter

-touting

-touts

-towboat

-towboats

-towhead

-towheaded

-townhouse

-townsman

-townsmen

-toxic

-traceback

-traceback's

-tracebacks

-tracepoint

-tracepoint's

-tracepoints

-traceried

-tracery

-trachea

-trackage

-trackless

-traction

-tradesmen

-traditionalism

-traditionalistic

-traditionalists

-tragedian

-tragedians

-tragicomic

-trailside

-traineeships

-trainman

-trainman's

-trainmen

-traipse

-traipsing

-traitorous

-traitorously

-tram

-trammel

-trammels

-tramway

-transalpine

-transaminase

-transatlantic

-transcendence

-transcendental

-transcendentalism

-transcendentalists

-transcendentally

-transconductance

-transcultural

-transducer

-transducers

-transduction

-transect

-transected

-transecting

-transects

-transept

-transepts

-transferee

-transferor

-transferors

-transfix

-transfixed

-transfixes

-transfixing

-transfusable

-transfuse

-transfused

-transfusing

-transfusion

-transfusions

-transgressor

-transgressors

-transliterate

-transliteration

-translucence

-translucency

-transmissible

-transmittable

-transmittance

-transmutation

-transmute

-transmuted

-transmutes

-transmuting

-transoceanic

-transom

-transoms

-transpacific

-transpiration

-transpirations

-transplantable

-transplantation

-transportable

-transposable

-transship

-transshipment

-transshipping

-transships

-transversal

-transversally

-transverse

-transversely

-transverses

-transvestite

-transvestitism

-trapdoor

-trapdoors

-trapezium

-trashier

-trashiness

-trashy

-trauma

-traumas

-traversable

-travertine

-trawl

-trawler

-treadle

-treadled

-treadling

-treadmill

-treasonable

-treasonous

-treelike

-trefoil

-trekked

-trekking

-trellis

-trellised

-trellises

-trembly

-tremulous

-tremulously

-tremulousness

-trenchant

-trenchantly

-trencherman

-trenchermen

-trendier

-trendiness

-trendy

-trepidation

-trestle

-trestles

-triable

-triableness

-triad

-triadic

-triamcinolone

-triangulate

-triangulated

-triangulately

-triangulation

-triatomic

-tribesman

-tribesmen

-tribulate

-tribulation

-tribulation's

-tribulations

-trichloroacetic

-trichloroethane

-trichromatic

-trickeries

-trickery

-trickster

-trident

-tridents

-tridiagonal

-triennial

-triennially

-trifluoride

-trig

-trigonal

-trigonally

-trigram

-trigrams

-trilobite

-trilogy

-trimester

-trinitarian

-trinitarians

-trinity

-trio

-triode

-triodes

-trios

-trioxide

-tripartite

-tripartition

-tripe

-triphenylarsine

-triphenylphosphine

-triphenylstibine

-triphosphopyridine

-triplex

-triplicate

-tripod

-tripods

-tripoli

-tripolyphosphate

-tripped

-tripping

-trippingly

-triptych

-trisodium

-tristate

-trisyllable

-trite

-tritely

-triteness

-triter

-tritest

-tritium

-tritium's

-triton

-triumphant

-triune

-trivalent

-trivium

-trodden

-troglodyte

-troika

-trollop

-trombone

-trombone's

-trombones

-trombonist

-troopship

-troopships

-trophic

-tropism

-tropisms

-tropocollagen

-tropospheric

-trotted

-trotter

-trotting

-troughs

-trounce

-trounced

-trounces

-trouncing

-troupe

-trouper

-troupes

-trouping

-troy

-truancy

-truculence

-truculent

-truculently

-trumpery

-trundle

-trundled

-trundler

-trundles

-trundling

-truss

-trusser

-trusses

-trussing

-trusteeship

-trypsin

-tsar

-tsarevich

-tsarina

-tsarism

-tsarist

-tsunami

-tuba

-tubular

-tubularly

-tubule

-tubules

-tugged

-tugging

-tularemia

-tulle

-tum

-tumbrels

-tumid

-tumidly

-tummies

-tummy

-tummy's

-tun

-tuna

-tunas

-tundra

-tuneful

-tunefully

-tunefulness

-tunelessly

-tung

-tungstate

-tungsten

-tupelo

-turbinate

-turbinated

-turbinates

-turbine

-turbines

-turbofan

-turbojet

-turgid

-turgidly

-turgidness

-turk

-turks

-turnabout

-turnaround

-turnarounds

-turnoff

-turnout

-turnouts

-turnpike

-turnpikes

-turnstone

-turntable

-turpitude

-turtleback

-turtlebacks

-turtleneck

-turvy

-tusk

-tusker

-tuskers

-tusks

-tussle

-tussled

-tussles

-tussling

-tut

-tutelage

-tutu

-tuxedo

-tuxedo's

-tuxedoed

-tuxedos

-twaddle

-twaddled

-twaddler

-twaddles

-twaddling

-tweedier

-tweediness

-tweedy

-tweeze

-tweezed

-tweezing

-twelfths

-twiddle

-twiddled

-twiddles

-twiddling

-twigged

-twigging

-twinge

-twinges

-twinging

-twinning

-twirly

-twisty

-twit

-twitchy

-twitting

-twosome

-tycoon

-typeahead

-typeface

-typescript

-typeset

-typesets

-typesetter

-typesetters

-typesetting

-typewrite

-typewriting

-typewritten

-typhoon

-typhus

-typicality

-typo

-typographer

-typological

-typologically

-typologies

-typology

-tyrannic

-tyrannical

-tyrannically

-tyrannicalness

-tyrannicide

-tyrosine

-ulcerate

-ulcerated

-ulcerates

-ulceration

-ulcerations

-ulcerative

-ulster

-ulterior

-ulteriorly

-ultimatum

-ultra

-ultracentrifugally

-ultracentrifugation

-ultracentrifuge

-ultraconservative

-ultrafast

-ultramarine

-ultramodern

-ultrashort

-ultrasonic

-ultrasonically

-ultrasonics

-ultrasound

-ultrastructure

-ultraviolet

-umber

-umbered

-umbering

-umbilical

-umbilici

-umbilicus

-umbilicuses

-umbra

-umbrage

-unaccountable

-unadventurous

-unaggressive

-unallocable

-unambiguity

-unamused

-unanimity

-unappeasable

-unappeasably

-unasterisked

-unbalance

-unbeknownst

-unbend

-unbending

-unbent

-unbind

-unblest

-unbutton

-unbuttoning

-uncap

-unceremonious

-unceremoniously

-unceremoniousness

-uncharacteristic

-uncharitably

-unchastity

-unchristian

-uncircumcised

-unclasping

-uncodable

-uncoiling

-uncombable

-uncomment

-uncommenting

-uncomments

-uncommunicable

-uncommunicative

-unconcern

-uncongeniality

-unconscionable

-unconscionableness

-unconventionality

-uncourageous

-uncousinly

-uncritical

-unction

-undedicated

-undeflected

-undeliverability

-undeliverable

-undependable

-underachievers

-underadjusting

-underarm

-underbedding

-underbelly

-underbracing

-underclassman

-underclassmen

-underclothes

-underclothing

-underconsumption

-undercooked

-undercount

-undercounts

-undercover

-undercurrent

-undercut

-underdeveloped

-underdevelopment

-underdog

-undereducated

-underemployed

-underemployment

-underenumerated

-underenumeration

-undergarments

-undergirding

-undergrowth

-underhanded

-underhandedly

-underhandedness

-underheat

-underlay

-underpaid

-underpins

-underpopulated

-underprivileged

-underrate

-underrated

-underregistration

-underreported

-underreporting

-underrepresentation

-underrepresented

-undersea

-underseas

-undersecretaries

-undersecretary

-undersecretary's

-undershirt

-undershirt's

-undershirts

-undershoot

-undershooting

-undershoots

-undershot

-underside

-underside's

-undersides

-undersize

-undersized

-undersizes

-undersizing

-understate

-understatement

-understatements

-understates

-understating

-understructure

-understructure's

-understructures

-understudies

-understudy

-understudy's

-undertow

-undertow's

-undertows

-undervalued

-underwater

-underwhelm

-underwhelmed

-underwhelming

-underwhelms

-underwood

-undeserved

-undogmatically

-undreamt

-undulate

-undulated

-undulates

-undulating

-undulation

-undulations

-unearth

-unearthed

-unearthing

-unease

-uneconomic

-uneducated

-unemployability

-unencroachable

-unenforceable

-unenforcible

-unenunciated

-unenviable

-unfaded

-unfailing

-unfailingly

-unfailingness

-unfathomable

-unfederated

-unfelt

-unfertile

-unfindable

-unfitting

-unfoldment

-unfrocking

-unfrozen

-unfurl

-unfurled

-ungallant

-unglamorous

-ungodliness

-ungodly

-ungracious

-ungrammaticality

-unhand

-unharmonious

-unheated

-unhelpful

-unhesitant

-unhinge

-unholiness

-unholy

-unhook

-unhooked

-unhooking

-unhurried

-unhurt

-unideal

-unidimensional

-unifilar

-unilateral

-unilaterally

-unimaginative

-unimodal

-unimpeachable

-unimpeachably

-unimposing

-unimpressive

-uninitiate

-uninjectable

-uninominal

-uninterested

-uninvolved

-unipolar

-uniprocessor

-uniprocessor's

-uniprocessors

-unitarian

-unitarianism

-unitarians

-unitary

-univalent

-univariate

-universalism

-universalistic

-unkempt

-unkink

-unlacing

-unlearn

-unlearned

-unliterary

-unloveliness

-unlovely

-unmake

-unmalicious

-unmanliness

-unmanly

-unmarred

-unmask

-unmeasured

-unmeritorious

-unmet

-unmethodical

-unmindful

-unmoving

-unobtrusive

-unobtrusively

-unobtrusiveness

-unorthodox

-unorthodoxy

-unpaintable

-unpalatability

-unpartisan

-unperforated

-unphysical

-unpicturesque

-unpreemphasized

-unpremeditated

-unprepared

-unprocurable

-unproductive

-unprofessional

-unprovocative

-unquestionable

-unquestioning

-unquiet

-unquietly

-unquietness

-unreadiness

-unready

-unreality

-unreason

-unreasoning

-unreasoningly

-unreceptive

-unredeemable

-unreeling

-unreflective

-unrelieved

-unremarkable

-unremitting

-unremittingly

-unremunerated

-unrepentant

-unrepresentative

-unrewarding

-unripe

-unripeness

-unromantic

-unscathed

-unscrew

-unscrewed

-unscrewing

-unseat

-unsee

-unselfconscious

-unselfconsciousness

-unservile

-unshakeable

-unsheathe

-unshed

-unsightly

-unsinkable

-unslaked

-unsold

-unsolder

-unspeaking

-unspecific

-unspectacular

-unsprocketed

-unstilted

-unstriated

-unstuffy

-unsubtle

-unsurmountable

-unsystematic

-unteach

-untellable

-untenable

-untenanted

-unthinking

-untidily

-untraditional

-untrodden

-unutterably

-unvacuolated

-unwaivering

-unwariness

-unwarrantable

-unwary

-unwed

-unweighted

-unwire

-unwomanly

-unworkable

-uparrow

-upbeat

-upbring

-upcome

-upcoming

-upend

-upheaval

-upheavals

-upholstery

-upped

-uppercase

-uppercased

-uppercases

-uppercasing

-upperclassman

-upperclassmen

-uppercut

-upraise

-upraised

-uprise

-upriser

-upriver

-uproarious

-uproariously

-uproariousness

-upsilon

-upslope

-upstanding

-upstandingness

-upstate

-upstater

-upsurge

-upswing

-upswings

-uptake

-uptime

-uptown

-uptrend

-upwind

-uranium

-uranyl

-urbane

-urbanely

-urbanism

-urbanite

-urbanites

-urea

-uremia

-urethane

-urethanes

-urethra

-urgencies

-urgency

-urinal

-urinals

-urinary

-usurer

-usurious

-usuriously

-usuriousness

-usurpation

-usury

-uterine

-utile

-utilitarian

-utopia

-utopianism

-utopias

-vacationland

-vaccinating

-vaccination

-vaccinations

-vaccine

-vaccines

-vaccinia

-vaccinial

-vacuity

-vacuolate

-vacuolated

-vacuolates

-vacuolating

-vacuolation

-vacuole

-vacuoles

-vaginal

-vaginally

-vain

-vainglorious

-vaingloriously

-vaingloriousness

-vainness

-valance

-valanced

-valances

-valedictory

-valuate

-valuated

-valuates

-valuating

-valueless

-valuelessness

-vamp

-vamper

-vampire

-vampires

-vanadium

-vandal

-vandalism

-vandals

-vanguard

-variate

-variated

-variates

-variating

-variegate

-variegated

-variegation

-varistor

-varmint

-vascular

-vasectomies

-vasectomy

-vectorial

-velar

-veldt

-veldt's

-veldts

-vellum

-velour

-velours

-velum

-velvety

-venal

-venally

-vendetta

-vendible

-veneer

-veneerer

-veneering

-venerate

-venerated

-venerates

-venerating

-veneration

-venerations

-venereal

-vengeful

-vengefully

-vengefulness

-venial

-venially

-venialness

-venous

-venously

-ventilator

-venturesome

-venturesomely

-venturesomeness

-venturi

-venturis

-venue

-venue's

-venues

-veracious

-veraciously

-veraciousness

-verandah

-verandahed

-verbatim

-verbiage

-verbosity

-verdant

-verdantly

-veridical

-veridically

-verisimilitude

-verity

-vermiculite

-vermilion

-vermouth

-vernacular

-vernacularly

-vernal

-vernally

-vernier

-vertebra

-vertebrae

-vertebral

-vertebrally

-vertigo

-verve

-vesicle

-vesicles

-vesicular

-vesicularly

-vesper

-vespers

-vestal

-vestally

-vestibule

-vestibuled

-vestments

-vestries

-vestry

-vesture

-vestured

-vestures

-vesturing

-vet

-vetch

-vexatious

-vexatiously

-vexatiousness

-viaduct

-viaducts

-vibes

-vibrancy

-vibrant

-vibrantly

-vibrato

-vibrio

-vibrionic

-vicar

-vicarious

-vicariously

-vicariousness

-viewgraph

-viewgraph's

-viewgraphes

-viewless

-viewlessly

-vigil

-vigilantism

-vindicate

-vindicated

-vindicates

-vindicating

-vindication

-vindicative

-vintner

-vinyl

-viola

-virginal

-virginally

-virgule

-virile

-virility

-virtuosi

-virtuosity

-virulence

-virulent

-virulently

-viscera

-visceral

-viscerally

-viscid

-viscidly

-viscoelastic

-viscoelasticity

-viscometer

-viscometer's

-viscometers

-vise

-vised

-viselike

-vising

-visive

-vitiate

-vitiated

-vitiates

-vitiating

-vitiation

-vitreous

-vitreously

-vitreousness

-vitrification

-vitrify

-vitriol

-vitriolic

-vitro

-vituperative

-vituperatively

-viva

-vivace

-vivacious

-vivaciously

-vivaciousness

-vivacity

-vive

-vivers

-vivification

-vivified

-vivifier

-vivify

-vivo

-vixen

-viz

-vocable

-vocabularian

-vocabularianism

-vocalic

-vocalism

-vocalist

-vocalists

-vocative

-vocatively

-vociferous

-vociferously

-vociferousness

-vocoded

-vocoder

-vodka

-vodka's

-voiceband

-voiceless

-voicelessly

-voicelessness

-voila

-volar

-volcanism

-volition

-volitional

-volitionality

-volitionally

-voltaic

-voltmeter

-voltmeter's

-voltmeters

-voluble

-volubleness

-volumetric

-volumetrically

-voluminous

-voluminously

-voluminousness

-voluptuous

-voluptuously

-voodoo

-voodoos

-voracious

-voraciously

-voraciousness

-voracity

-vortices

-vorticity

-votary

-vouchsafe

-vouchsafed

-vouchsafes

-vouchsafing

-vulpine

-vulturelike

-vying

-wackier

-wackiness

-wacko

-wacko's

-wackos

-wacky

-wad

-wadded

-waddle

-waddled

-waddler

-waddles

-waddling

-wads

-wagged

-wagging

-waggish

-waggishly

-waggishness

-waggle

-waggled

-waggles

-waggling

-wainscot

-wainscoted

-wainscoting

-wainscots

-waistline

-wakeful

-wakefully

-wakefulness

-wakeup

-wale

-waler

-wales

-waling

-walkie

-walkover

-wallaby

-wallboard

-wallies

-wallop

-walloped

-walloper

-walloping

-wallops

-wallpaper

-wallpapers

-wally

-wangle

-wangled

-wangler

-wangles

-wangling

-wapiti

-wapitis

-wardroom

-wardrooms

-warehouseman

-warhead

-warheads

-warless

-warmhearted

-warmheartedly

-warmheartedness

-warmish

-warmonger

-warmongering

-warmongers

-warmup

-warren

-warrener

-warreners

-warrens

-wartime

-wartimes

-warty

-washbasin

-washboard

-washbowl

-washcloths

-washier

-washout

-washy

-waspish

-waspishly

-waspishness

-wastebasket

-wastebaskets

-wasteland

-wastelands

-wastewater

-wastrel

-wastrels

-watchband

-watchdog

-watchmake

-watchmaker

-watchmakers

-watchmaking

-watchmen

-watchpoints

-watercourse

-waterfront

-waterline

-waterlines

-waterloo

-waterman

-watermelon

-watershed

-watersheds

-waterside

-watersider

-watertight

-watertightness

-watt

-wattage

-wattages

-wattle

-wattled

-wattles

-wattling

-watts

-waveguide

-waveguides

-wavenumber

-wavier

-waviness

-wavy

-waxwork

-waxworks

-waylaid

-weaponless

-weaponry

-weatherbeaten

-weatherproof

-weatherproofness

-weatherstrip

-webbing

-wedlock

-weediness

-weedy

-weightier

-weightiness

-weightlessness

-weighty

-weirdo

-weirdos

-weirs

-wellbeing

-welsh

-welsher

-welt

-welter

-weltered

-weltering

-welts

-werewolf

-werewolf's

-werewolves

-westbound

-wetland

-wetlands

-wham

-whamming

-what'd

-what're

-whatnot

-whee

-wheedle

-wheedled

-wheedles

-wheedling

-wheelbarrows

-wheelbase

-wheelchair

-wheelchair's

-wheelhouse

-wheelie

-wheeze

-wheezed

-wheezes

-wheezier

-wheeziness

-wheezing

-wheezy

-whelk

-where'd

-where're

-whereabout

-wherefore

-wherefores

-whereof

-whereon

-wheresoever

-wherewith

-whet

-whets

-whetted

-whetting

-whiff

-whiffle

-whiffled

-whiffler

-whiffles

-whiffling

-whig

-whigs

-whimsey

-whimseys

-whinnied

-whinnies

-whinny

-whinnying

-whiplash

-whiplashes

-whippet

-whipsaw

-whipsawed

-whir

-whirlies

-whirligig

-whirly

-whiskies

-whistleable

-whiteface

-whitehead

-whitetail

-whitey

-whither

-who'd

-who'll

-whoa

-whodunit

-whodunit's

-whodunits

-whomsoever

-whoosh

-whop

-whoppers

-whopping

-whosoever

-wicket

-wickets

-widowhood

-widthwise

-wiener

-wieners

-wigging

-wiggle

-wiggled

-wiggler

-wiggles

-wiggling

-wiggly

-wigmaker

-wildcatter

-wildfire

-wildlife

-wilful

-wilfully

-wilily

-willowy

-wimp

-wimp's

-wimpier

-wimpiest

-wimps

-wimpy

-winch

-winched

-wincher

-winches

-winchester

-winching

-windbag

-windbags

-windbreak

-windbreaks

-windfall

-windless

-windlessly

-windlessness

-windowless

-windowpane

-windowpanes

-windowsill

-windshield

-windstorm

-windup

-windward

-windwardly

-winemake

-winemaster

-winery

-wineskin

-wingback

-wingman

-wingmen

-wingspan

-wingtip

-winkle

-winkled

-winkles

-winkling

-winless

-winnow

-winnower

-wino

-winos

-winsome

-winsomely

-winsomeness

-wintertime

-winy

-wireman

-wiremen

-wiseacre

-wisecrack

-wisecracked

-wisecracker

-wisenheimer

-wishbone

-wishy

-wispy

-witter

-witting

-wittingly

-wive

-wiving

-wizen

-wizened

-wobble

-wobbled

-wobbler

-wobbles

-wobbliness

-wobbling

-wobbly

-woebegone

-woebegoneness

-wok

-woken

-wold

-wolfish

-wolfishly

-wolfishness

-won

-woodcarver

-woodchopper

-woodchoppers

-woodcut

-woodcutters

-woodgrain

-woodgraining

-woodhen

-woodlot

-woodruff

-woodshed

-woodside

-woodwind

-woodyard

-woolgather

-woolgatherer

-woolgathering

-wop

-wops

-wordlessly

-workday

-workhouses

-workingmen

-workmanlike

-workout

-workouts

-workpiece

-workpieces

-workplace

-workplace's

-workplaces

-worksheet

-worksheets

-workspace

-workspaces

-worktable

-wormier

-wormy

-worsen

-worsened

-worsening

-worsens

-would've

-wow

-wracking

-wraith

-wraparound

-wrathful

-wrathfully

-wrathfulness

-wreathe

-wreaths

-wrier

-wriest

-wright

-wrinkly

-wristband

-wrongdoer

-wrongdoing

-wrongful

-wrongfully

-wrongfulness

-wry

-wryly

-xenon

-xenophobia

-xerography

-xterm

-xterm's

-xylem

-xylene

-xylophone

-xylophones

-yacht

-yachters

-yachting

-yachts

-yachtsman

-yachtsmen

-yaks

-yang

-yap

-yapping

-yardage

-yarmulke

-yarrow

-yaw

-yawed

-yawing

-yawl

-yaws

-yearbook

-yeastier

-yeastiness

-yeasty

-yen

-yeomanry

-yeshiva

-yesteryear

-yin

-yip

-yipping

-yodel

-yodels

-yoga

-yogi

-yogurt

-yogurt's

-yokel

-yokels

-yolk

-yolks

-yore

-youngish

-youths

-yow

-yowl

-yr

-ytterbium

-yttrium

-yucca

-yule

-yup

-zag

-zagging

-zags

-zealot

-zeitgeist

-zestful

-zestfully

-zestfulness

-zestier

-zesty

-zeta

-zetas

-zig

-zigged

-zigging

-zigzagged

-zigzagging

-zilch

-zing

-zinger

-zings

-zip

-zipped

-zipper

-zippered

-zippers

-zipping

-zips

-zircon

-zirconium

-zloty

-zlotys

-zodiacal

-zombie

-zombies

-zoologist

-zoologists

-zoology

-zounds

-zymurgy

diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.2 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.2
deleted file mode 100644
index d3ec471..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.2
+++ /dev/null
@@ -1,37616 +0,0 @@
-AAA

-AAAS

-AC

-ACS

-AK

-AL

-AR

-ASTM

-AZ

-Aarhus

-Abbott

-Abbott's

-Abel

-Abelian

-Abelson

-Abelson's

-Aberdeen

-Aberdeen's

-Abernathy

-Abernathy's

-Abidjan

-Abos

-Abram

-Abram's

-Abyssinia

-Abyssinians

-Acadia

-Accra

-Achaean

-Ackley

-Actaeon

-Acton

-Acton's

-Adair

-Adair's

-Addis

-Adelaide

-Adelaide's

-Adele

-Adele's

-Adelia

-Adelia's

-Aden

-Aden's

-Adkins

-Adler

-Adler's

-Adlerian

-Adolph

-Adolph's

-Adolphus

-Adrian

-Adrian's

-Adrienne

-Adrienne's

-Aeneas

-Aeolus

-Aerobacter

-Aeschylus

-Aesop

-Afrikaner

-Agamemnon

-Agee

-Agee's

-Agnew

-Agnew's

-Agricola

-Agway

-Ahmedabad

-Aida

-Aida's

-Aiken

-Aiken's

-Ainu

-Aitken

-Aitken's

-Akers

-Aladdin

-Alastair

-Alberich

-Albrecht

-Albrecht's

-Albright

-Albright's

-Alcestis

-Alcmena

-Alcott

-Alcott's

-Aldebaran

-Aldrich

-Aldrich's

-Aleutian

-Alexei

-Alexei's

-Alexis

-Alfonso

-Alfonso's

-Alfred

-Alfred's

-Alfredo

-Alfredo's

-Algenib

-Alger

-Alger's

-Algonquian

-Algonquin

-Algonquin's

-Ali

-Alison

-Alison's

-Allegra

-Allis

-Allyn

-Allyn's

-Almaden

-Almaden's

-Alpert

-Alpert's

-Alpheratz

-Alphonse

-Alphonse's

-Alsop

-Alsop's

-Altair

-Altair's

-Alton

-Alton's

-Alva

-Alva's

-Amerada

-Amharic

-Amman

-Ammerman

-Ammerman's

-Amontillado

-Anabel

-Anabel's

-Anacreon

-Analects

-Anatole

-Anatole's

-Anatolian

-Andalusia

-Andrea

-Andrea's

-Andrei

-Andrei's

-Andromache

-Angelica

-Angelica's

-Anglophile

-Anglophiliac

-Anglophilic

-Anglophilism

-Anglophily

-Anglophobe

-Anglophobic

-Annale

-Annalen

-Annalist

-Annalistic

-Annette

-Anselm

-Anselm's

-Anselmo

-Anselmo's

-Antaeus

-Antilles

-Anton

-Anton's

-Antonio

-Antonio's

-Antwerp

-Apetalous

-Appleby

-Appleby's

-Apr

-Aquila

-Aquila's

-Arachne

-Arachne's

-Arapaho

-Arcadian

-Arden

-Arden's

-Arequipa

-Argentinian

-Argive

-Arlen

-Armata

-Armco

-Armenia

-Arragon

-Arrhenius

-Artemia

-Artie

-Artie's

-Arturo

-Arturo's

-Ashmolean

-Asilomar

-Asilomar's

-Assam

-Astarte

-Aston

-Aston's

-Asuncion

-Atchison

-Atchison's

-Athabascan

-Atlantica

-Atropos

-Attlee

-Atwater

-Atwater's

-Atwood

-Atwood's

-Auberge

-Auberge's

-Aubrey

-Aubrey's

-Audrey

-Audrey's

-Auerbach

-Auerbach's

-Aug

-Auriga

-Avernus

-Avery

-Avery's

-Avignon

-Aylesbury

-Azerbaijan

-Azerbaijan's

-Azores

-BEMA

-BIS

-BITNET

-BMW

-BP

-Baden

-Baden's

-Baffin

-Bahrein

-Bahrein's

-Baird

-Baird's

-Baja

-Bakhtiari

-Baku

-Balboa

-Balfour

-Baltimorean

-Bamako

-Banach

-Banbury

-Banbury's

-Bangui

-Barbour

-Barbour's

-Barhop

-Barlow

-Barlow's

-Barnes

-Barnet

-Barnett

-Barnett's

-Barnhard

-Barnhard's

-Barnum

-Barr

-Barr's

-Barrett

-Barrett's

-Barrington

-Barrington's

-Barton

-Barton's

-Basel

-Basque

-Basque's

-Batchelder

-Batchelder's

-Bateman

-Bateman's

-Bathurst

-Bathurst's

-Bator

-Battelle

-Battelle's

-Bausch

-Bayda

-Bayport

-Bayport's

-Bayreuth

-Beardsley

-Beardsley's

-Beckman

-Beckman's

-Beebe

-Beebe's

-Beecham

-Beecham's

-Beijing

-Bela

-Bela's

-Belize

-Bellamy

-Bellamy's

-Bellingham

-Bellingham's

-Bellini

-Bellini's

-Belshazzar

-Belshazzar's

-Benares

-Benelux

-Benelux's

-Benton

-Benton's

-Beograd

-Berea

-Berea's

-Berenices

-Beresford

-Beresford's

-Bergen

-Bergen's

-Bergland

-Bergland's

-Berglund

-Berglund's

-Bergman

-Bergman's

-Bergstrom

-Bergstrom's

-Berman

-Berman's

-Bernardino

-Bernardino's

-Bernardo

-Bernardo's

-Bernet

-Bernet's

-Bernhard

-Berniece

-Bernini

-Bertie

-Bertram

-Bertram's

-Berwick

-Berwick's

-Betsey

-Betsey's

-Bette

-Bette's

-Bhagavadgita

-Bialystok

-Biggs

-Bilbao

-Billiken

-Billikens

-Biltmore

-Biltmore's

-Bini

-Biochimica

-Biometrika

-Biophysica

-Birgit

-Birmingham

-Bismark

-Bismark's

-Bissau

-Bizet

-Bizet's

-Blackfoot

-Blackfoot's

-Blackfoots

-Blaine

-Blaine's

-Blanchard

-Blanchard's

-Bleeker

-Blenheim

-Blinn

-Blinn's

-Bloch

-Bloch's

-Blomberg

-Blomberg's

-Blomquist

-Blomquist's

-Blum

-Blumenthal

-Blumenthal's

-Blythe

-Blythe's

-Boarsh

-Boca

-Boca's

-Bodleian

-Boeotia

-Boeotian

-Bohemianism

-Bois

-Boonton

-Bootes

-Boris

-Bosch

-Bosporus

-Boucher

-Bourbaki

-Bowditch

-Bowditch's

-Bowdoin

-Bowen

-Bowen's

-Boxford

-Boyd

-Boyd's

-Boyle

-Boyle's

-Boylston

-Boylston's

-Bragg

-Brahmaputra

-Brahmsian

-Brandt

-Brandt's

-Brasstown

-Brazzaville

-Bremen

-Bremen's

-Brendan

-Brendan's

-Brennan

-Brennan's

-Brenner

-Brenner's

-Brent

-Brest

-Brest's

-Breton

-Brett

-Brett's

-Brewster

-Brewster's

-Brice

-Bridget

-Bridget's

-Brie

-Briggs

-Briggs's

-Brighton

-Brighton's

-Brillouin

-Brindisi

-Brisbane

-Brisbane's

-Broglie

-Broglie's

-Bromfield

-Bromfield's

-Bromley

-Bromley's

-Brookline

-Brookline's

-Bruckner

-Bruckner's

-Bruegel

-Bruegel's

-Brumidi

-Brumidi's

-Brunswick

-Brunswick's

-Buchenwald

-Buchenwald's

-Buckley

-Buckley's

-Bucknell

-Bucknell's

-Buena

-Buenos

-Bujumbura

-Burke

-Burkes

-Burlington

-Burlington's

-Burnham

-Burtt

-Burtt's

-Buttrick

-Buxtehude

-Buxtehude's

-Buxton

-Byrd

-CA

-CBS

-CDR

-CERN

-CSNET

-CT

-CUNY

-CURVET

-CZ

-Cabot

-Cabot's

-Cady

-Caesarian

-Caesarian's

-Cahill

-Cajun

-Cajun's

-Cajuns

-Calais

-Caldwell

-Caldwell's

-Caleb

-Caleb's

-Calhoun

-Calhoun's

-Calkins

-Callaghan

-Callaghan's

-Callahan

-Callahan's

-Callan

-Callan's

-Calvert

-Calvert's

-Calvin

-Calvin's

-Cambrian

-Camden

-Camden's

-Camembert

-Cameron

-Cameron's

-Cameroon

-Cameroun

-Cameroun's

-Camilla

-Campbell

-Canaan

-Canaan's

-Canfield

-Canfield's

-Canopus

-Cantabrigian

-Capitoline

-Caputo

-Carboloy

-Carbone

-Cardiff

-Cardiff's

-Carey

-Carey's

-Cargill

-Cargill's

-Carib

-Carlin

-Carlin's

-Carlisle

-Carlisle's

-Carlo

-Carlsbad's

-Carlsbads

-Carmela

-Carmen

-Carmen's

-Carolingian

-Carpathia

-Carpathians

-Carr

-Carr's

-Carrara

-Carroll

-Carroll's

-Carruthers

-Casanova

-Casanova's

-Castillo

-Castillo's

-Castroism

-Catalonia

-Catherwood

-Catherwood's

-Caviness

-Cayley

-Cayley's

-Cayuga

-Cayuga's

-Cecropia

-Cedric

-Celebes

-Celia

-Celia's

-Celt

-Centrex

-Cepheus

-Cesare

-Cesare's

-Chadwick

-Chadwick's

-Chandigarh

-Chao

-Chao's

-Charlemagne

-Charlemagne's

-Charlemagnes

-Charon

-Charon's

-Charta

-Chartres

-Chatham

-Chatham's

-Chatsworth

-Chatsworth's

-Chauncey

-Chauncey's

-Chelsea

-Chelsea's

-Cheney

-Cheney's

-Cheryl

-Chiang

-Chiang's

-Chimique

-Chinatown

-Chinatown's

-Chloe

-Chou

-Chou's

-Christensen

-Christensen's

-Christiana

-Christiana's

-Christianson

-Christianson's

-Christina

-Christina's

-Christmastime

-Christoffel

-Christoph

-Christoph's

-Chungking

-Cindy

-Cindy's

-Clapeyron

-Clarendon

-Clarendon's

-Clausius

-Clayton

-Clayton's

-Clifton

-Clifton's

-Clotho

-Co

-Cobb

-Cobb's

-Cochran

-Cochran's

-Cochrane

-Cochrane's

-Coddington

-Coddington's

-Cody

-Cody's

-Coffey

-Coffey's

-Cole

-Cole's

-Colette

-Colette's

-Collins

-Colombo

-Colombo's

-Cominform

-Compagnie

-Compton

-Compton's

-Conakry

-Conant

-Conant's

-Congolese

-Conklin

-Conklin's

-Conley

-Conley's

-Connally

-Connally's

-Connors

-Constantine

-Constantine's

-Convair

-Convair's

-Conway

-Conway's

-Cooke

-Cooke's

-Cooley

-Cooley's

-Copernican

-Corbett

-Corbett's

-Corcoran

-Corcoran's

-Corey

-Corey's

-Corinth

-Coriolanus

-Cornelia

-Cornelia's

-Cornelian

-Cornelius

-Coronado

-Corsica's

-Cortez

-Corvus

-Corydoras

-Cosgrove

-Cosgrove's

-Cottrell

-Cottrell's

-Coulter

-Coulter's

-Courtney

-Courtney's

-Cowan

-Cowan's

-Crispin

-Crispin's

-Croatia

-Croydon

-Croydon's

-Cruickshank

-Cruickshank's

-Cruz

-Culbertson

-Culbertson's

-Cummings

-Cummins

-Curran

-Curran's

-Curtis

-Cushing

-Cushing's

-Custer

-Custer's

-Cuvier

-Cuzco

-Cyclades

-Cyrillic

-Czerniak

-Czerniak's

-DA's

-DC

-DFL

-DMA

-DOD

-Dacca

-Dacca's

-Dada

-Dadaistic

-Dahl

-Dahl's

-Dahomey

-Dahomey's

-Dailey

-Dailey's

-Dairylea

-Daley

-Daley's

-Dalhousie

-Dalzell

-Dalzell's

-Damocles

-Damon

-Damon's

-Dana

-Dana's

-Danubian

-Darcy

-Darcy's

-Darius

-Darwinistic

-Daryl

-Daryl's

-Datamation

-Daugherty

-Daugherty's

-Davison

-Davison's

-Daytona

-Daytona's

-DeKastere

-Deane

-Deane's

-Deanna

-Deanna's

-Decatur

-Decatur's

-Dee

-Dee's

-Deimos

-Deirdre

-Deirdre's

-Deirdres

-Del

-Delaney

-Delaney's

-Delano

-Delano's

-Delia

-Delia's

-Della

-Della's

-Delmarva

-Delphically

-Delphinus

-Demeter

-Deneb

-Deneb's

-Denebola

-Denton

-Denton's

-Dependance

-Derek

-Derek's

-Detroit

-Dhabi

-Dickerson

-Dickerson's

-Dido

-Dido's

-Diebold

-Diebold's

-Dietz

-Diocletian

-Dirichlet

-Dixon

-Dixon's

-Dnieper

-Dnieper's

-Dobbs

-Dodd

-Dodd's

-Dodson

-Dodson's

-Doherty

-Doherty's

-Dolan

-Dolan's

-Domenico

-Domenico's

-Dominick

-Dominick's

-Dominique

-Dominique's

-Doneck

-Doneck's

-Dooley

-Dooley's

-Dorcas

-Doreen

-Doreen's

-Doria

-Doria's

-Doric

-Doric's

-Dorothea

-Dorothea's

-Dorset

-Dorset's

-Dortmund

-Dortmund's

-Dowling

-Dowling's

-Draco

-Draco's

-Draconian

-Dravidian

-Driscoll

-Driscoll's

-Drummond

-Drummond's

-Dubhe

-Dubhe's

-Dudley

-Dudley's

-Dugan

-Dugan's

-Duma

-Duma's

-Dunbar

-Dunbar's

-Dundee

-Dundee's

-Dunedin

-Dunedin's

-Dunlop

-Dunlop's

-Dunn

-Dunn's

-Duquesne

-Durango

-Durango's

-Durer

-Durkin

-Durkin's

-Durrell

-Durrell's

-Durward

-Durward's

-Dusenbury

-Dusenbury's

-Dutton

-Dutton's

-Dwyer

-Dwyer's

-ECG

-EDT

-EEOC

-ERDA

-ESC

-EST

-Eagan

-Eagan's

-Earthman

-Earthman's

-Earthmen

-Earthmen's

-Eaton

-Eaton's

-Eben

-Eben's

-Eccles

-Ecole

-Edmonds

-Edmondson

-Edmondson's

-Edmonton

-Edmonton's

-Eduardo

-Eduardo's

-Effie

-Effie's

-Egan

-Egan's

-Egyptology

-Ehrlich

-Ehrlich's

-Eire

-Eire's

-Eisner

-Eisner's

-Ekstrom

-Ekstrom's

-Eldon

-Eldon's

-Eleazar

-Eleazar's

-Elena

-Elena's

-Elgin

-Elgin's

-Elinor

-Elinor's

-Elisha

-Elisha's

-Ellwood

-Ellwood's

-Elsevier

-Elsevier's

-Elton

-Elton's

-Elwood

-Elwood's

-Ely

-Ely's

-Elysee

-Elysee's

-Emil

-Emil's

-Emile

-Emile's

-Emilio

-Emilio's

-Emmett

-Emmett's

-Engels

-Engle

-Engle's

-Enid

-Enid's

-Ephesus

-Erastus

-Erato

-Erato's

-Erika

-Erika's

-Erlenmeyer

-Erlenmeyer's

-Erskine

-Erskine's

-Esmark

-Esmark's

-Esposito

-Esposito's

-Essen

-Essen's

-Estella

-Estella's

-Estes

-Estonia

-Estonia's

-Etruria

-Eumenides

-Euridyce

-Euridyce's

-Euterpe

-Euterpe's

-Evensen

-Everglade

-Everhart

-Everhart's

-FAA

-FAQ

-FAQ'S

-FL

-FM

-FMC

-FPC

-FSF

-FSF'S

-FTC

-Faber

-Faber's

-Fabian

-Fabian's

-Fafnir

-Fafnir's

-Fahey

-Fahey's

-Falkland

-Falklands

-Fallopian

-Falmouth

-Falmouth's

-Farkas

-Farnsworth

-Farnsworth's

-Fayette

-Fayette's

-Feeney

-Feeney's

-Fenton

-Fenton's

-Ferber

-Ferber's

-Ferguson

-Ferguson's

-Fermat

-Fermat's

-Ferreira

-Ferrer

-Ferrer's

-Fiji

-Fiji's

-Fijian

-Fijian's

-Fijians

-Finley

-Finley's

-Fischbein

-Fischbein's

-Fiske

-Fiske's

-Fizeau

-Fizeau's

-Flagler

-Flagler's

-Flo

-Flo's

-Fogarty

-Foley

-Foley's

-Fomalhaut

-Fomalhaut's

-Fontaine

-Fontaine's

-Forsythe

-Forsythe's

-Fortescue

-Fortescue's

-Foss

-Francine

-Francine's

-Francoise

-Francoise's

-Frankel

-Frankel's

-Fraser

-Fraser's

-Fredericksburg

-Fredericksburg's

-Fredericton

-Fredericton's

-Fredholm

-Fredholm's

-Freemason

-Freetown

-Freetown's

-Freya

-Freya's

-Friedrich

-Friedrich's

-Friesland

-Friesland's

-Frisian

-Fruehauf

-Fruehauf's

-Frye

-Frye's

-Fujitsu

-Fujitsu's

-Fulbright's

-Fulbrights

-Fulton

-Fulton's

-Furman

-Furman's

-GA

-GAO

-GCD

-GE

-GMT

-GOP

-GPO

-GU

-Gaberones

-Gabon

-Gabon's

-Gaines

-Galatia

-Galatia's

-Galen

-Galen's

-Galilean

-Galileo

-Galileo's

-Gallagher

-Gallagher's

-Galt

-Galt's

-Galway

-Galway's

-Gambia

-Gambia's

-Gandhi

-Gandhi's

-Gandhian

-Gannett

-Gannett's

-Garrisonian

-Garth's

-Gaspee

-Gaspee's

-Gaulle

-Gaulle's

-Gautama

-Gegenschein

-Geigy

-Geigy's

-Geminid

-Gemma

-Genesco

-Genoa

-Genoa's

-Ghanian

-Gil

-Gil's

-Gilchrist

-Gilchrist's

-Gilead

-Gilead's

-Gilmore

-Gilmore's

-Gina

-Gina's

-Gino

-Gino's

-Ginsberg

-Ginsberg's

-Ginsburg

-Ginsburg's

-Giuliano

-Giuliano's

-Giuseppe

-Giuseppe's

-Glaswegian

-Glidden

-Glidden's

-Gloriana

-Gloriana's

-Gobi

-Gobi's

-Goddard

-Goddard's

-Godfrey

-Godfrey's

-Godwin

-Godwin's

-Goff

-Goff's

-Goldfield

-Goldstine

-Goldstine's

-Goleta

-Goleta's

-Gonzalez

-Goode

-Goode's

-Goren

-Goren's

-Gorton

-Gorton's

-Gothically

-Gottfried

-Gottfried's

-Gouda's

-Gould

-Gould's

-Graff

-Graff's

-Greene

-Greene's

-Greenpeace

-Greenpeace's

-Greer

-Greer's

-Gresham

-Gresham's

-Grimaldi

-Grimaldi's

-Grinch

-Grinch's

-Griswold

-Griswold's

-Gruyere

-Guardia

-Guelph

-Guenther

-Guenther's

-Guerin

-Guilford

-Guilford's

-Guinevere

-Guinevere's

-Gujarat

-Gujarati

-Gullah

-Gunther

-Gunther's

-Gurkha

-Gurkha's

-Gustafson

-Gustafson's

-Gustav

-Gustav's

-Gustave

-Gustave's

-Gustavus

-Gwyn

-Gwyn's

-HDL

-Haag

-Haag's

-Haas

-Haberman

-Haberman's

-Habib

-Habib's

-Hadamard

-Haddad

-Haddad's

-Hadley

-Hadley's

-Hadrian

-Hagen

-Hagen's

-Hager

-Hager's

-Hagstrom

-Hagstrom's

-Hahn

-Hahn's

-Haines

-Haley

-Haley's

-Halley

-Halley's

-Halsey

-Halsey's

-Halstead

-Halstead's

-Halverson

-Halverson's

-Hamal

-Hamal's

-Hamburg

-Hamlin

-Hamlin's

-Handel

-Handel's

-Haney

-Haney's

-Hanford

-Hanford's

-Hankel

-Hankel's

-Hanley

-Hanley's

-Hanlon

-Hanlon's

-Hanna

-Hanna's

-Hapsburg

-Hapsburg's

-Harbin

-Harbin's

-Harlan

-Harlan's

-Harley

-Harley's

-Harmon

-Harmon's

-Harmonist

-Harmonistic

-Harmonistically

-Harriman

-Harriman's

-Harrington

-Harrington's

-Hathaway

-Hathaway's

-Hatteras

-Hattiesburg

-Hattiesburg's

-Haugen

-Haugen's

-Hausa

-Hausa's

-Hausdorff

-Hausdorff's

-Havilland

-Havilland's

-Hayden

-Hayden's

-Healey

-Healey's

-Healy

-Healy's

-Hebe

-Hebrides

-Hebrides's

-Hecate

-Hecate's

-Heckman

-Heckman's

-Heidegger's

-Heine

-Heine's

-Heinrich

-Heinrich's

-Helga

-Helga's

-Hellespont

-Helvetica

-Hempstead

-Hempstead's

-Henley

-Henley's

-Hennessy

-Henri

-Henri's

-Hermann

-Hermann's

-Hernandez's

-Hertzog

-Hertzog's

-Hesse

-Hesse's

-Hester

-Hester's

-Hetman

-Hetman's

-Hettie

-Hettie's

-Hetty

-Hetty's

-Heusen

-Heusen's

-Heuser

-Heuser's

-Hewett

-Hewett's

-Hewitt

-Hewitt's

-Hiatt

-Hiatt's

-Hibbard

-Hibbard's

-Hickman

-Hickman's

-Higgins

-Hildebrand

-Hildebrand's

-Himalaya

-Himalaya's

-Hindustan

-Hindustan's

-Hines

-Hinman

-Hinman's

-Hippocrates

-Hippocratic

-Hiroshi

-Hiroshi's

-Hirsch

-Hitlerian

-Hitlerism

-Hitlerite

-Hitlerites

-Hoagland

-Hoagland's

-Hobart

-Hobart's

-Hodge

-Hodge's

-Hodgkin

-Hodgkin's

-Hoff

-Hoff's

-Hogan

-Hogan's

-Holcomb

-Holcomb's

-Hollingsworth

-Hollingsworth's

-Holloway

-Holloway's

-Holm

-Holm's

-Holman

-Holman's

-Holmdel

-Holmdel's

-Honshu

-Honshu's

-Hopi's

-Horus

-Hottentot

-Hottentot's

-Houdaille

-Houdaille's

-Houghton

-Houghton's

-Hoyt

-Hoyt's

-Hrothgar

-Hrothgar's

-Hubbard

-Hubbard's

-Hubbell

-Hubbell's

-Huber

-Huber's

-Huffman

-Huffman's

-Huggins

-Hummel

-Hummel's

-Hun

-Huntington

-Huntington's

-Huntley

-Huntley's

-Hurd

-Hurd's

-Hurdies

-Hurwitz

-Huston

-Huston's

-Huxtable

-Huxtable's

-Hyades

-Hyde

-Hyde's

-Hyman

-IA

-ICL

-IEE

-IGN

-IL

-INTERAMA

-IOT

-IQ

-IR

-IRAF

-IRS

-Ian

-Ian's

-Ibn

-Ida

-Ida's

-Ifni

-Igor's

-Ike

-Ike's

-Ilona

-Ilyushin

-Imagen

-Imagen's

-Indo

-Indochinese

-Indoeuropean

-Indus

-Informatica

-Inman

-Inman's

-Ira

-Iranian

-Iranian's

-Iranians

-Iraqi's

-Iraqis

-Irrawaddy

-Irvin

-Irvin's

-Irwin

-Isaacson

-Isaacson's

-Isabella

-Isabella's

-Isadore

-Isadore's

-Isaiah

-Isaiah's

-Isis

-Islamabad

-Islamabad's

-Isolde

-Isolde's

-Istvan

-Istvan's

-Ito

-Ito's

-Iverson

-Iverson's

-JACM

-Jablonsky

-Jablonsky's

-Jacobi

-Jacobi's

-Jacobson

-Jacobson's

-Jacobus

-Jaeger

-Jaeger's

-Jaime

-Jaime's

-Jamie

-Jamie's

-Janos

-Jansenist

-Jansenist's

-Jarvin

-Jarvin's

-Jed

-Jed's

-Jensen

-Jensen's

-Jeres

-Jesuitism

-Jewell

-Jewell's

-Jewett

-Jewett's

-Jimenez

-Jo

-Jo's

-Johanna

-Johanna's

-Johnston

-Johnston's

-Jolla

-Jolla's

-Judaica

-Judd

-Judd's

-Judder

-Juddered

-Juddering

-Judders

-Judson

-Judson's

-Jugoslavia

-Jul

-Jun

-Jung

-Jung's

-Jura

-Jura's

-Juras

-Jutland

-Jutland's

-KS

-KY

-Kahn

-Kahn's

-Kajar

-Kajar's

-Kalmuk

-Kalmuk's

-Kamchatka

-Kamikaze

-Kamikaze's

-Kampala

-Kampala's

-Kampuchea

-Kampuchea's

-Kane

-Kane's

-Kannada

-Kaplan

-Kaplan's

-Karachi

-Karachi's

-Karamazov

-Karamazov's

-Karp

-Karp's

-Kashmir

-Kaskaskia

-Katharine

-Katharine's

-Katowice

-Katowice's

-Katrina

-Katrina's

-Katz

-Kauffman

-Kauffman's

-Kaufman

-Kaufman's

-Keck

-Keck's

-Kelsey

-Kelsey's

-Kemp

-Ken

-Ken's

-Kendall

-Kendall's

-Kennan

-Kennan's

-Kenney

-Kenney's

-Kenton

-Kenton's

-Kenyon

-Kenyon's

-Kernighan

-Kernighan's

-Kerouac

-Kerouac's

-Kerr

-Kerr's

-Kessler

-Kessler's

-Keyes

-Khartoum

-Khartoum's

-Kidde

-Kidde's

-Kieffer

-Kieffer's

-Kiewit

-Kiewit's

-Kigali

-Kigali's

-Kikuyu

-Kikuyu's

-Kilgore

-Kilgore's

-Kilimanjaro

-Kilimanjaro's

-Kimball

-Kimball's

-Kimberly

-Kimberly's

-Kinney

-Kinney's

-Kinshasha

-Kinshasha's

-Kiowa

-Kirchner

-Kirchner's

-Kirov

-Kirov's

-Kitakyushu

-Kitakyushu's

-Klux

-Knapp

-Knapp's

-Knauer

-Knauer's

-Knightsbridge

-Knightsbridge's

-Knossos

-Knott

-Knott's

-Knowlton

-Knowlton's

-Kobayashi

-Kochab

-Kochab's

-Konrad's

-Koppers

-Koran

-Koran's

-Kovacs

-Kovic

-Kovic's

-Kowalewski

-Kowalewski's

-Kowalski

-Kowalski's

-Kowloon

-Krebs

-Krieger

-Krieger's

-Kristin

-Kristin's

-Kronecker

-Kronecker's

-Kruse

-Kruse's

-Kuhn

-Kuhn's

-Kumar

-L'vov

-LDL

-LSI

-LTV

-Laban

-Laban's

-Lacerta

-Lacerta's

-Lachesis

-Lagos

-Laguerre

-Lahore

-Lahore's

-Laidlaw

-Laidlaw's

-Lamar

-Lamar's

-Lamarck

-Lamborghini

-Lamborghini's

-Lamborghinis

-Lana

-Lana's

-Lancelot

-Lancelot's

-Lang

-Lang's

-Langmuir

-Langmuir's

-Lanka

-Lanka's

-Lao

-Larkin

-Larkin's

-Laszlo

-Laszlo's

-Lateran

-Lateran's

-Latinity

-Latrobe

-Latrobe's

-Latvia

-Latvia's

-Laue

-Laue's

-Laughlin

-Laughlin's

-Laurent

-Laurent's

-Lausanne

-Lausanne's

-Lavoisier

-Lavoisier's

-Layton

-Layton's

-Leander

-Leander's

-Lear

-Leeuwenhoek

-Leeuwenhoek's

-Legendre

-Legendre's

-Lehman

-Lehman's

-Leibniz

-Leipzig

-Leipzig's

-Leland

-Leland's

-Lemuel

-Len

-Len's

-Lena

-Lena's

-Lennon

-Lennon's

-Lennox

-Lennox's

-Lenore

-Lenore's

-Leonid

-Leonid's

-Lesotho

-Lesotho's

-Lethe

-Lethe's

-Letitia

-Letitia's

-Leviable

-Levin

-Levin's

-Levitt

-Levitt's

-Lew

-Lew's

-Libby

-Libby's

-Libreville

-Libreville's

-Lieberman's

-Ligget

-Ligget's

-Liggett

-Liggett's

-Lila

-Lila's

-Lilian

-Lilian's

-Lillian

-Lillian's

-Lilly

-Liman

-Lin

-Lin's

-Lind

-Lind's

-Lindbergh

-Lindbergh's

-Lindholm

-Lindholm's

-Lindquist

-Lindquist's

-Lindsay

-Lindsay's

-Lindsey

-Lindsey's

-Lindstrom

-Lindstrom's

-Linnaeus

-Linton

-Lippincott

-Lippincott's

-Lipschitz

-Lipscomb

-Lipscomb's

-Lise

-Lise's

-Lissajous

-Lithuania

-Liverpudlian

-Lodowick

-Lodowick's

-Loeb

-Loeb's

-Loire

-Loki

-Loki's

-Lomb

-Lomb's

-Lombardy

-Lombardy's

-Lome

-Loomis

-Loren

-Loren's

-Lori

-Lori's

-Lorinda

-Lorinda's

-Lotte

-Lotte's

-Lou

-Lou's

-Lounsbury

-Lounsbury's

-Lourdes

-Louvre

-Lowe

-Lowe's

-Lowry

-Lowry's

-Lubell

-Lubell's

-Ludlow

-Ludlow's

-Luis

-Lumpur

-Lund

-Lund's

-Lundberg

-Lundberg's

-Lundquist

-Lundquist's

-Lura

-Lusaka

-Lusaka's

-Lutz

-Luzon

-Luzon's

-Lykes

-Lyman

-Lyman's

-Lyra

-Lyra's

-Lysenko

-Lysenko's

-MDs

-MIPS

-MN

-MO

-MRI

-Mabel

-Mabel's

-MacDougall

-MacDougall's

-MacMahon

-MacMahon's

-Macadamia

-Macassar

-Macaulayan

-Macaulayism

-Macaulayisms

-Macdougall

-Macdougall's

-Machiavellian

-Mackey

-Mackey's

-Maddox

-Madeira

-Madhya

-Madsen

-Madsen's

-Mae

-Mae's

-Mafiosi

-Magellanic

-Magnuson

-Magnuson's

-Magog

-Magog's

-Maharashtra

-Mahayana

-Mahayanist

-Mahoney

-Mahoney's

-Majorca

-Majorca's

-Malabar

-Malabar's

-Malagasy

-Malagasy's

-Malawi

-Malawi's

-Malden

-Malden's

-Maldive

-Maldive's

-Maldives

-Mali

-Mali's

-Maloney

-Maloney's

-Malraux

-Malthus

-Malton

-Malton's

-Manchuria

-Manley

-Manley's

-Mann

-Mann's

-Manuel

-Manuel's

-Mar

-Marc

-Marc's

-Marceau

-Marceau's

-Marcel

-Marcello

-Marcello's

-Marcia

-Marcia's

-Marcie

-Marcie's

-Marco

-Marco's

-Margaret

-Margaret's

-Margery

-Margery's

-Margo

-Margo's

-Marissa

-Marissa's

-Marjory

-Marjory's

-Markham

-Markham's

-Markism

-Markism's

-Marxian

-Maserati

-Maserati's

-Maseratis

-Mateo

-Mateo's

-Matson

-Matson's

-Matsumoto

-Matsumoto's

-Mattson

-Mattson's

-Maurine

-Maurine's

-Mavis

-May

-Mayer

-Mayer's

-Mayo

-Mayo's

-McCallum

-McCallum's

-McCann

-McCann's

-McCarty

-McCarty's

-McConnel

-McConnel's

-McCormick

-McCormick's

-McCullough

-McCullough's

-McDowell

-McDowell's

-McElroy

-McElroy's

-McGee

-McGee's

-McGillicuddy

-McGillicuddy's

-McGinnis

-McGinty

-McGinty's

-McGowan

-McGowan's

-McHugh

-McHugh's

-McKenna

-McKenna's

-McKeon

-McKeon's

-McMahon

-McMahon's

-McMullen

-McMullen's

-McNally

-McNally's

-McNulty

-McNulty's

-Mcadams

-Mcallister

-Mcallister's

-Mcbride

-Mcbride's

-Mccabe

-Mccabe's

-Mccall

-Mccall's

-Mccallum

-Mccallum's

-Mccann

-Mccann's

-Mccarthy

-Mccarthy's

-Mccarty

-Mccarty's

-Mccauley

-Mccauley's

-Mcclain

-Mcclain's

-Mcclellan

-Mcclellan's

-Mcclure

-Mcclure's

-Mccluskey

-Mccluskey's

-Mcconnel

-Mcconnel's

-Mcconnell

-Mcconnell's

-Mccormick

-Mccormick's

-Mccoy

-Mccoy's

-Mccracken

-Mccracken's

-Mccullough

-Mccullough's

-Mcdaniel

-Mcdaniel's

-Mcdermott

-Mcdermott's

-Mcdonald

-Mcdonald's

-Mcdonnell

-Mcdonnell's

-Mcdougall

-Mcdougall's

-Mcdowell

-Mcdowell's

-Mcelroy

-Mcelroy's

-Mcfadden

-Mcfadden's

-Mcfarland

-Mcfarland's

-Mcgee

-Mcgee's

-Mcgill

-Mcgill's

-Mcginnis

-Mcgovern

-Mcgovern's

-Mcgowan

-Mcgowan's

-Mcgrath

-Mcgrath's

-Mcgraw

-Mcgraw's

-Mcgregor

-Mcgregor's

-Mcguire

-Mcguire's

-Mchugh

-Mchugh's

-Mcintosh

-Mcintosh's

-Mcintyre

-Mcintyre's

-Mckay

-Mckay's

-Mckee

-Mckee's

-Mckenna

-Mckenna's

-Mckenzie

-Mckenzie's

-Mckeon

-Mckeon's

-Mckesson

-Mckesson's

-Mckinley

-Mckinley's

-Mckinney

-Mckinney's

-Mcknight

-Mcknight's

-Mclaughlin

-Mclaughlin's

-Mclean

-Mclean's

-Mcleod

-Mcleod's

-Mcmahon

-Mcmahon's

-Mcmillan

-Mcmillan's

-Mcmullen

-Mcmullen's

-Mcnally

-Mcnally's

-Mcnaughton

-Mcnaughton's

-Mcneil

-Mcneil's

-Mcnulty

-Mcnulty's

-Mcpherson

-Mcpherson's

-Medford

-Medford's

-Medusan

-Meg

-Meg's

-Meier

-Meier's

-Meiji

-Melcher

-Melcher's

-Melpomene

-Melpomene's

-Mendel

-Mendel's

-Mendelian

-Menorca

-Menzies

-Merck

-Merck's

-Merritt

-Merritt's

-Mervin

-Mervin's

-Mesopotamia

-Metcalf

-Metcalf's

-Methuen

-Methuen's

-Metrecal

-Metzler

-Metzler's

-Michel

-Michel's

-Michele

-Michele's

-Michelle

-Michelle's

-Millikan

-Millington

-Milne

-Miltonian

-Miltonism

-Miltonist

-Mindanao

-Mindanao's

-Minos

-Minot's

-Minotaur

-Minotaur's

-Minsk

-Minsk's

-Minsky

-Minsky's

-Mirfak

-Mirfak's

-Mizar

-Mizar's

-Moe

-Moe's

-Moen

-Moen's

-Mogadiscio

-Moghul

-Mohammedanism

-Mohr

-Moiseyev

-Moiseyev's

-Moldavia

-Moloch

-Moluccas

-Mona

-Mona's

-Monash

-Mongolianism

-Monmouth

-Monmouth's

-Monoceros

-Monongahela

-Monongahela's

-Montenegrin

-Montenegrin's

-Monteverdi

-Monteverdi's

-Montmartre

-Montmartre's

-Montrachet

-Montrachet's

-Moran

-Moran's

-Moresby

-Moresby's

-Morley

-Morley's

-Morrill

-Morrill's

-Morris

-Morrissey

-Morrissey's

-Moser

-Moser's

-Moulton

-Moulton's

-Mouton

-Moyer

-Moyer's

-Mpc

-Mt

-Mudd

-Mudd's

-Mueller

-Mueller's

-Muenster

-Mukden

-Mukden's

-Muong

-Muong's

-Muzo

-Muzo's

-Mynheer

-Myra

-Myra's

-Mysore

-NC

-NCO

-NE

-NH

-NIH

-NIMH

-NJ

-NM

-NMR

-NNE

-NNW

-NRC

-NTIS

-NV

-NW

-NY

-NYC

-NYT

-NYU

-Nadine

-Nadine's

-Nagoya

-Nagoya's

-Nagy

-Nagy's

-Nair

-Nair's

-Nakayama

-Narbonne

-Narbonne's

-Narragansett

-Narragansett's

-Nate's

-Neal

-Nebuchadnezzar

-Nebuchadnezzar's

-Ned

-Ned's

-Neff

-Neff's

-Nehru

-Nehru's

-Neil

-Neil's

-Nell

-Nell's

-Nellie

-Nellie's

-Nelsen

-Nelsen's

-Ness

-Neva

-Neva's

-Nevins

-Newbold

-Newbold's

-Newton

-Newton's

-Nguyen

-Nguyen's

-Niamey

-Niamey's

-Nibelung

-Nicholls

-Nicosia

-Nicosia's

-Niger

-Niger's

-Nikko

-Nikko's

-Nikolai

-Nikolai's

-Nineveh

-Noetherian

-Nolan

-Nolan's

-Noll

-Noll's

-Nora

-Nora's

-Nordhoff

-Nordhoff's

-Nordic

-Nordstrom

-Nordstrom's

-Noreen

-Noreen's

-Northrop

-Northrop's

-Northrup

-Northrup's

-Nostrand

-Nostrand's

-Nov

-Novak

-Novak's

-Novosibirsk

-Novosibirsk's

-Nubia

-Nubia's

-Nyquist

-Nyquist's

-O'Neill

-O'Neill's

-OSF

-OSF'S

-Oceania

-Oct

-Odin

-Ojibwa

-Olav

-Olav's

-Olduvai

-Oligocene

-Olin

-Olin's

-Olivier

-Olivier's

-Onondaga

-Onondaga's

-Ophiucus

-Oresteia

-Oresteia's

-Orestes

-Orin

-Orinoco

-Orion

-Orion's

-Orkney

-Orkney's

-Orly

-Orono

-Orono's

-Orphically

-Orr

-Orr's

-Orville

-Orville's

-Osgood

-Osgood's

-Osiris

-Otis

-Ott

-Ott's

-Ouagadougou

-PR

-PVC

-Palladian

-Palo

-Panamanian

-Pandanus

-Pangaea

-Paoli

-Paoli's

-Papua

-Papua's

-Paraguayan

-Paraguayan's

-Paraguayans

-Paramus

-Pareto

-Pareto's

-Parke

-Parke's

-Parkinsonian

-Parmesan

-Parr

-Parr's

-Parrs

-Parsi

-Parsifal

-Parsifal's

-Parthia

-Paso

-Paterson

-Paterson's

-Patti

-Patti's

-Paulo

-Paulo's

-Paulus

-Pavlovian

-Paz

-Peale

-Peale's

-Pease

-Peiping

-Peloponnese

-Pembroke

-Pembroke's

-Penelope

-Penelope's

-Penh

-Penrose

-Pentateuch

-Percival

-Percival's

-Periclean

-Perilla

-Perle

-Perle's

-Permian

-Perseid

-Persephone

-Persephone's

-Peter

-Peters

-Phelps

-Phillip

-Phillip's

-Phipps

-Phobos

-Phoenicia

-Phoenicia's

-Pickett

-Pickett's

-Pict

-Piedfort

-Piedmont

-Pilate

-Pinsky

-Pinsky's

-Piotr

-Piotr's

-Piraeus

-Piscataway

-Piscataway's

-Pizarro

-Pl

-Pollard

-Pollard's

-Poly

-Polyhymnia

-Polynesia

-Polynesia's

-Polys

-Ponce

-Ponchartrain

-Ponchartrain's

-Poole

-Poole's

-Porte

-Porte's

-Portia

-Porto

-Posner

-Posner's

-Poynting

-Poynting's

-Pradesh

-Prado

-Pretorian

-Priam

-Pritchard

-Pritchard's

-Procter

-Procter's

-Proserpine

-Proserpine's

-Protista

-Provence

-Pugh

-Punic

-Punjab

-Punjab's

-Punjabi

-Pusan

-Pusan's

-Pusey

-Pusey's

-Putnam

-Putnam's

-Pyle

-Pyle's

-Pyongyang

-Pyongyang's

-Pyotr

-Pyotr's

-QED

-QM

-Qatar

-Qatar's

-Queensland

-Queensland's

-Quezon

-Quezon's

-Quichua

-Quirinal

-Quito

-Quito's

-Quixotism

-RFI

-RNA

-Rabat

-Rabat's

-Rabin

-Rabin's

-Rae

-Rae's

-Rafferty

-Rafferty's

-Ragusan

-Raman

-Raman's

-Ramo

-Ramo's

-Ranier

-Ranier's

-Rankin

-Rankin's

-Rankine

-Raritan

-Raritan's

-Rastus

-Ratfor

-Raul

-Raul's

-Recife

-Recife's

-Redmond

-Redmond's

-Redondo's

-Regis

-Reid

-Reid's

-Remy

-Rena

-Rena's

-Renault

-Renault's

-Rene

-Rene's

-Rensselaer

-Rensselaer's

-Reub

-Reub's

-Reykjavik

-Reykjavik's

-Rhineland

-Rhoda

-Rhoda's

-Rhode

-Rica

-Ricanism

-Rico

-Riemannian

-Riga

-Rigel

-Rigel's

-Riordan

-Riordan's

-Rocco

-Rochford

-Romanesque

-Romeldale

-Roquemore

-Rosenblum

-Rosenblum's

-Rosenthal

-Rosenthal's

-Rosenzweig

-Rosenzweig's

-Rothschild

-Rothschild's

-Rourke

-Rowe

-Rowe's

-Roxbury

-Roxbury's

-Royce

-Rubaiyat

-Ruben

-Ruben's

-Rubin

-Rubin's

-Rudolf

-Rudolf's

-Rudyard

-Rudyard's

-Runge

-Russo

-Russo's

-Ruthful

-Ruthfully

-Ruthfulness

-Rwanda

-Rwanda's

-Rydberg

-Rydberg's

-SC

-SCM

-SD

-SE

-SIAM

-SIDS

-SIGABRT

-SIGALRM

-SIGBUS

-SIGCHLD

-SIGCLD

-SIGCONT

-SIGEMT

-SIGFPE

-SIGHUP

-SIGILL

-SIGINT

-SIGIO

-SIGIOT

-SIGKILL

-SIGPIPE

-SIGPROF

-SIGQUIT

-SIGSEGV

-SIGSTOP

-SIGSYS

-SIGTERM

-SIGTRAP

-SIGTSTP

-SIGTTIN

-SIGTTOU

-SIGURG

-SIGUSR

-SIGVTALRM

-SIGWINCH

-SIGXCPU

-SIGXFSZ

-SOS

-SSE

-SST

-SSW

-SUNY

-SW

-Sabina

-Sabina's

-Sachs

-Sachsen

-Sadler

-Sadler's

-Sagittarius

-Sal

-Salesian

-Salina

-Salina's

-Salish

-Salle

-Sally

-Salton

-Samaritan

-San

-Sana

-Sanborn

-Sanborn's

-Sanderling

-Santo

-Santos

-Sappho

-Sappho's

-Saracen

-Saracen's

-Saracens

-Saran

-Sardinia

-Sardinia's

-Sarge's

-Satanism

-Satanist

-Saturnism

-Saul

-Saul's

-Sault

-Savoy

-Savoyard

-Savoyards

-Scala

-Scala's

-Scarborough

-Scarlatti

-Scarlatti's

-Scarsdale

-Scarsdale's

-Schantz

-Scheherazade

-Scheherazade's

-Schiller

-Schiller's

-Schlesinger

-Schlesinger's

-Schloss

-Schnabel

-Schnabel's

-Schoenberg

-Schoenberg's

-Schofield

-Schofield's

-Schottky

-Schottky's

-Schuyler

-Schuyler's

-Schuylkill

-Schwab

-Schweitzer

-Schweitzer's

-Seagram

-Seagram's

-Sean

-Sean's

-Sebring

-Sebring's

-Segovia

-Seidel

-Selena

-Selena's

-Selkirk

-Selkirk's

-Selwyn

-Selwyn's

-Sep

-Sepoy

-Serbia

-Serbia's

-Sergei

-Sergei's

-Serpens

-Seth

-Seth's

-Seton

-Severn

-Severn's

-Sextans

-Seychelles

-Shafer

-Shafer's

-Shaffer

-Shaffer's

-Shannon

-Shantung

-Shari

-Shari's

-Sharpe

-Shattuck

-Shattuck's

-Shea

-Shedir

-Sheehan

-Sheehan's

-Shepard

-Sheppard

-Sheppard's

-Sheri

-Sheri's

-Sherrill

-Sherrill's

-Shipley

-Shiva

-Shiva's

-Shmuel

-Shockley

-Shockley's

-Shoshone

-Shoshone's

-Shu

-Shu's

-Shulman

-Shulman's

-Sian

-Sian's

-Sibley

-Siegel

-Siegel's

-Sieglinda

-Sieglinda's

-Siegmund

-Siegmund's

-Siemens

-Siena

-Sifford

-Siggraph

-Sigil

-Simla

-Simonson

-Simonson's

-Sims

-Sinbad

-Sinbad's

-Singborg

-Sino

-Sitar

-Sitarist

-Skopje

-Slavonic

-Slocum

-Slocum's

-Slovakia

-Slovakia's

-Slovenia

-Slovenia's

-Smalley

-Smalley's

-Smithson

-Smithson's

-Smyrna

-Smyrna's

-Smythe

-Soc

-Societe

-Soddy

-Solon

-Soloviev

-Somalia

-Sommerfeld

-Sommerfeld's

-Sonenberg

-Sony

-Sony's

-Southernwood

-Southey

-Spacewar

-Spaulding

-Spaulding's

-Speakerphone

-Spector's

-Spica

-Spicas

-Spiro

-Spiro's

-Spitz

-Sposato

-Sprague

-Sprague's

-Sproul

-Sproul's

-Sri

-Sri's

-Stahl

-Stahl's

-Stanhope

-Stanhope's

-Stargate

-Stargate's

-Staunton

-Steele

-Steele's

-Steen

-Steen's

-Stefan

-Stefan's

-Stendhal

-Stendler

-Sternberg

-Sternberg's

-Stone

-Stone's

-Storey

-Storeyed

-Storeys

-Stratton

-Stratton's

-Strickland

-Strickland's

-Strindberg

-Strom

-Strom's

-Sturbridge

-Sturbridge's

-Sturm

-Sturm's

-Stylar

-Subapically

-Sumeria

-Sumner

-Sumner's

-Sus

-Svetlana

-Svetlana's

-Swansea

-Swansea's

-Swarthout

-Swarthout's

-Swink

-Sykes

-Sylow

-Sylvie's

-Synge

-Szilard

-TA

-TN

-TOEFL

-TTY

-TWX

-TX

-Talmudism

-Tamil

-Tanaka

-Tanaka's

-Tananarive

-Tarbell

-Tarbell's

-Tartary

-Tass

-Taurus

-Tegucigalpa

-Tegucigalpa's

-Terpsichore

-Terpsichore's

-Terre

-Terre's

-Tesseract

-Thalia

-Thalia's

-Thayer

-Thayer's

-Thea

-Thea's

-Thermofax

-Thessalonian

-Thessalonians

-Thessaly

-Thetis

-Thomistic

-Thomistic's

-Thorstein

-Thrace

-Thrace's

-Thracian

-Thuban

-Thuban's

-Tientsin

-Tientsin's

-Tina

-Tina's

-Tirana

-Tirana's

-Tito's

-Toby

-Toby's

-Tom

-Tom's

-Tomlinson

-Tomlinson's

-Tompkins

-Tories

-Torrance

-Torrance's

-Tory

-Transite

-Transite's

-Transputer

-Transvaal

-Transvaal's

-Transylvania's

-Trevelyan

-Trevor

-Triangulum

-Triassic

-Trichinella

-Trichinella's

-Triplett

-Triplett's

-Trobriand

-Troy

-Truk

-Tutankhamen

-Tutenkhamon

-Twombly

-Twombly's

-Tyburn

-Tyburn's

-Tyrannosaurus's

-Tzeltal

-UK

-USGS

-USIA

-USN

-UT

-UV

-Ukraine

-Ukraine's

-Ulan

-UniPlus

-UniPlus's

-UniSoft

-UniSoft's

-Urania

-Urdu

-Uri

-Uris

-Urquhart

-Utrecht

-Utrecht's

-VA

-VAX

-VT

-Vaduz

-Valery

-Valery's

-Valletta

-Valletta's

-Valois

-Valparaiso

-Vancement

-Vanderpoel

-Vanderpoel's

-Varitype

-Varitype's

-Vasquez

-Vasquez's

-Vassar

-Vassar's

-Vaughan

-Vaughan's

-Veda

-Veda's

-Veganism

-Vella

-Vella's

-Veneto

-Veneto's

-Verde

-Verde's

-Verderer

-Verdi

-Verdi's

-Verna

-Verna's

-Versatec

-Versatec's

-Vesuvius

-Vida

-Vida's

-Vientiane

-Vientiane's

-Vikram

-Vinci

-Vinci's

-Virgil

-Virgil's

-Vito

-Vito's

-Volterra

-Volterra's

-Voss

-Vought

-Vought's

-Vreeland

-Vreeland's

-Vulcanism

-WA

-WAC

-WI

-WV

-WY

-Waals

-Wadsworth

-Wadsworth's

-Wagnerian

-Wahl

-Wahl's

-Waite

-Waite's

-Waldron

-Waldron's

-Wallis

-Waltham

-Waltham's

-Wappinger

-Wappinger's

-Warburton

-Watanabe

-Watanabe's

-Webb

-Webb's

-Wehr

-Wehr's

-Wei

-Wei's

-Weierstrass

-Weisenheimer

-Weller

-Welles

-Welton

-Werther

-Werther's

-Whalen

-Whalen's

-Whatley

-Whatley's

-Whitaker

-Whitaker's

-Whitehorse

-Whitehorse's

-Wightman

-Wightman's

-Wilkie

-Wilkie's

-Wilkins

-Willa

-Willa's

-Willis

-Wiltshire

-Wiltshire's

-Winchester

-Wisenheimer

-Witt

-Witt's

-Wittgenstein

-Wittgenstein's

-Wolfe

-Wolfe's

-Wolff

-Wolff's

-Wong

-Wong's

-Woodstock

-Woodstock's

-Woody

-Woody's

-Wotan

-Wotan's

-Wu

-Wu's

-Wyatt

-Wyatt's

-Wyeth

-Wyeth's

-Wylie

-Wylie's

-Wynn

-Wynn's

-Xenakis

-Xhosa

-Yankton

-Yankton's

-Yaounde

-Yaounde's

-Yarmouth

-Yarmouth's

-Yellowknife

-Yellowknife's

-Yellowstone

-Yellowstone's

-Yorkshire

-Yorkshire's

-Yost

-Yost's

-Zagreb

-Zagreb's

-Zambia

-Zambia's

-Zan

-Zan's

-Zoe

-Zoe's

-Zorn

-ab

-abacterial

-abacus

-abacuses

-abandonee

-abashment

-abatis

-abatises

-abattoir

-abaxial

-abbacy

-abbas

-abberations

-abbreviator

-abdicable

-abdicator

-abduce

-abduced

-abducens

-abducent

-abducentes

-abducing

-abeam

-abecedarian

-aberrance

-aberrancy

-aberrated

-aberrational

-abetment

-abhorrence

-abidance

-abiogenesis

-abiogenetic

-abiogenetical

-abiogenetically

-abiogenist

-abiological

-abiologically

-abiotic

-abiotically

-abjuration

-ablaut

-abloom

-abluted

-ablutionary

-abnegate

-abnegates

-abnegation

-abnegator

-aboil

-abolishable

-abolitionary

-abolitionism

-abomasal

-abominably

-abominator

-abominators

-aboral

-aborally

-abortifacient

-abortionist

-abortionists

-abovementioned

-abracadabra

-abradable

-abradant

-abreact

-abridgement

-abrin

-abroach

-abruption

-abscise

-abscised

-abscisin

-abscising

-abscission

-absinth

-absolutism

-absolutist

-absolutistic

-absorbability

-absorbable

-absorbance

-absorbancy

-absorbant

-absorbtions

-absorptance

-absorptional

-abstemious

-abstentious

-abstractable

-abstractional

-abstrict

-abstriction

-abstrictions

-abstrusity

-absurdism

-absurdist

-absurdum

-abubble

-abuilding

-abutilon

-abuttals

-abuzz

-abyssal

-academe

-academical

-academicism

-academism

-acanthocephalan

-acanthopterygian

-acanthus

-acanthuses

-acarpellous

-acarpelous

-acatalectic

-acaulescence

-acaulescent

-accelerando

-accentless

-acceptation

-accessary

-accessibleness

-accessional

-accessorial

-acciaccatura

-accidence

-accidentalism

-accidentalist

-accipiter

-acclivity

-accommodational

-accommodator

-accommodators

-accompanyist

-accompanyists

-accomplishable

-accordionist

-accordionists

-accostable

-accountantship

-accreditable

-accrete

-accreted

-accreting

-accretionary

-accretive

-accruable

-accruement

-acculturational

-acculturationist

-accumbency

-accumbent

-accumulable

-accurses

-accursing

-accurst

-accusatory

-accusor

-accustomation

-acedia

-acellular

-acentric

-acephalous

-acerb

-acerbate

-acerbic

-acerbically

-acerbity

-acervate

-acervately

-acervation

-acetal

-acetaldehyde

-acetamide

-acetaminophen

-acetification

-acetifier

-acetify

-acetonic

-acetous

-acetyl

-acetylate

-acetylation

-acetylative

-acetylenic

-achier

-achiest

-achiness

-achromat

-achromatically

-achromaticity

-achromatism

-achy

-acidhead

-acidiferous

-acidifiable

-acidification

-acidifier

-acidify

-acidimeter

-acidimeter's

-acidimeters

-acidimetric

-acidimetry

-acidulant

-acidulate

-acidulation

-acidulent

-acinus

-acock

-acold

-acquaintanceship

-acquirement

-acquisitional

-acquisitionist

-acquisititious

-acquitment

-acquittance

-acridity

-acrobacy

-acrobatically

-acrocentric

-acrodont

-acronymic

-acronymically

-acropetal

-acropetally

-acrophobia

-acrophobic

-acrostic

-acrostical

-acrostically

-actability

-actable

-actinolite

-actionable

-actionably

-actionless

-activistic

-actorish

-actuary

-aculeate

-acuminate

-acumination

-acupuncture

-acyl

-acylate

-acylated

-acylates

-adamance

-adamancy

-adamantine

-adaptaplex

-adaptational

-adaptationally

-adaptitude

-adaptivity

-adaxial

-addable

-addible

-addlepated

-addressor

-adducible

-adenine

-adenoid

-adenoidal

-adenoids

-adenoma

-adenomatous

-adenosine

-adherend

-adhesional

-adiabaticlly

-adieux

-adipic

-adipose

-adiposity

-adject

-adjudicator

-adjudicatory

-adjunction

-adjuration

-adjuratory

-adjustability

-adjustmental

-adjutancy

-adjuvant

-adle

-adman

-admeasure

-admeasurement

-administrant

-administrational

-administrationist

-admirability

-admissive

-admitter

-admitters

-admonitorily

-admonitory

-adoptability

-adoptable

-adoptee

-adoptees

-adoptianism

-adoptianist

-adoptionism

-adoptionist

-adorability

-adorably

-adoze

-adposition

-adrenalin

-adrenergic

-adrenocortical

-adscititious

-adsorbability

-adsorbable

-adsorbent

-adulator

-adulatory

-adulterant

-adulterator

-adulteress

-adulteresses

-adulterine

-adultlike

-adust

-advection

-advections

-advective

-adventuresome

-adventuresomeness

-adventuress

-adventuresses

-adventurism

-adventurist

-adventuristic

-adventurists

-adversative

-adversatively

-advertence

-advertency

-advertent

-advertently

-advocator

-adynamic

-adz

-adze

-aeolotropic

-aeolotropy

-aeonian

-aeonic

-aerialist

-aerie

-aerier

-aerily

-aero

-aeroballistic

-aeroballistics

-aerobatic

-aerobatics

-aerobe

-aerobically

-aerobiological

-aerobiologically

-aerobiology

-aerobiosis

-aerobiotic

-aerobiotically

-aerodynamical

-aerodynamically

-aerodynamicist

-aerodyne

-aeroembolism

-aerogene

-aerogenes

-aerogram

-aerogram's

-aerograms

-aerographer

-aerography

-aerolite

-aerolith

-aerolitic

-aerological

-aerologist

-aerology

-aeromagnetic

-aeromechanics

-aeromedical

-aeromedicine

-aerometeorograph

-aerometer

-aerometer's

-aerometers

-aeronaut

-aeroneurosis

-aeronomer

-aeronomic

-aeronomical

-aeronomics

-aeronomist

-aeropause

-aerosphere

-aerostat

-aerostatics

-aerothermodynamics

-aery

-aesthesiometer

-aesthesiometer's

-aesthesiometers

-afeard

-afeared

-affability

-affably

-affaire

-affaires

-affectability

-affectable

-affectate

-affectional

-affectionally

-affectionless

-affectivity

-affectless

-affectlessness

-affiance

-affiant

-afficionado

-affine

-affined

-affinely

-affirmable

-affirmance

-affixable

-affixal

-affixation

-affixial

-affixment

-affluency

-afflux

-affray

-affusion

-afghani

-aficionada

-aflatoxin

-aflutter

-afreet

-afrika

-afrikaans

-afterburner

-afterburners

-aftercare

-afterclap

-afterdamp

-afterdeck

-afterimage

-afterpiece

-aftertaste

-aftertax

-aftertime

-afterword

-afterworld

-agamete

-agamic

-agamically

-agapeic

-agapeically

-agave

-agaze

-ageing

-agelong

-agendaless

-agendum

-agene

-agenesis

-agentry

-aggie

-aggies

-agglutinability

-agglutinogen

-agglutinogenic

-aggradation

-aggrade

-aggregational

-aggress

-aggressivity

-agio

-agios

-agitational

-agitato

-agitprop

-aglare

-aglitter

-agnate

-agnatic

-agnatically

-agnation

-agnomen

-agnosticism

-agon

-agone

-agonic

-agonist

-agonistic

-agonistical

-agonistically

-agonists

-agoraphobia

-agoraphobic

-agouti

-agrarianism

-agreeability

-agriculturalist

-agriculturist

-agrimony

-agriology

-agrobiological

-agrobiologically

-agrobiology

-agrologic

-agrological

-agrologically

-agrologist

-agrology

-agronomic

-agronomical

-agronomically

-agronomics

-agronomist

-agronomy

-aground

-aguish

-aguishly

-ahistoric

-ahistorical

-ahold

-aidman

-aigrette

-ailanthus

-aile

-airbrush

-airburst

-airbus

-aircrew

-airdrome

-airfreight

-airglow

-airmanship

-airmobile

-airpost

-airscrew

-airsick

-airsickness

-airstream

-airwave

-airwaves

-airworthiness

-airworthy

-aitch

-alabastrine

-alack

-alacritous

-alai

-alamogordo

-alarmism

-alary

-alate

-alated

-alation

-alb

-albedo

-albinic

-albinism

-albino

-albinotic

-albuminoid

-albuminous

-alcaic

-alcazar

-alchemic

-alchemical

-alchemically

-alchemist

-alchemistic

-alchemistical

-alcoholically

-alcoholometer

-alcoholometer's

-alcoholometers

-alcoholometry

-aldermanic

-aldrin

-aleatoric

-aleatory

-alehouse

-alembic

-alexandrine

-alexandrite

-alexia

-alfa

-algal

-algebraist

-algicidal

-algicide

-algid

-algidity

-algin

-algophobia

-alia

-alicyclic

-alidade

-alienability

-alienable

-alienage

-alienator

-alienee

-alienism

-alienist

-alienor

-aliform

-alightment

-alimentary

-alimentation

-alimentative

-aline

-alinement

-aliphatic

-aliquot

-aliquot's

-aliquots

-alizarin

-alk

-alkahest

-alkahestic

-alkalescence

-alkalescent

-alkalify

-alkalimeter

-alkalimeter's

-alkalimeters

-alkalimetry

-alkalinity

-alkaloidal

-alkalosis

-alla

-allan

-allegate

-allegorist

-allelic

-allelism

-allelomorph

-alleluia

-allemand

-allergen

-allergenic

-allergist

-allery

-alleviatory

-allheal

-alliaceous

-allium

-allocatable

-allocution

-allogamous

-allogamy

-allogeneic

-allograft

-allograph

-allographic

-allomerism

-allomerous

-allometric

-allometry

-allomorph

-allomorphic

-allomorphism

-allonge

-allons

-allopath

-allopathic

-allopathically

-allopathy

-allopatric

-allopatrically

-allopatry

-allophane

-allopurinol

-allosteric

-allosterically

-allotee

-allotransplant

-allotransplantation

-allotrope

-allotropically

-allotropy

-allottee

-allottees

-allotype

-allotypic

-allotypically

-allotypy

-allover

-allseed

-alluvion

-allyl

-allylic

-almandine

-almandite

-almsgiver

-almsgiving

-almshouse

-alogical

-alogically

-aloin

-alongshore

-alpaca

-alpenglow

-alpenstock

-alpestrine

-alphameric

-alphamerical

-alphamerics

-alphanumerical

-alphanumerically

-alpinism

-alpinist

-alright

-altarpiece

-altazimuth

-alterability

-alterably

-alterate

-alterative

-alterman

-altern

-althea

-altimetry

-altitudinal

-altitudinous

-altocumulus

-altricial

-alumina

-aluminate

-aluminosilicate

-aluminous

-alunite

-alveolate

-alveolation

-alyssum

-alytical

-amah

-amalgamator

-amanita

-amanuenses

-amaranth

-amassment

-amative

-amatively

-amativeness

-amaurosis

-amaurotic

-amazonite

-ambage

-ambages

-ambagious

-ambassadorial

-ambassadorship

-ambassadress

-ambergris

-ambidexterity

-ambience

-ambiences

-ambit

-ambitionless

-ambiversion

-ambiversive

-ambivert

-ambrotype

-ambsace

-ambulacral

-ambulacrum

-ambulate

-ambulation

-ambulatorily

-ambushment

-ameliorator

-amelioratory

-amenabilities

-amenability

-amenably

-amendable

-amendatory

-amende

-ament

-amentia

-amerce

-amercement

-amerciable

-amercing

-ametropia

-ametropic

-ami

-amiability

-amiably

-amicability

-amidships

-amiens

-amine

-amis

-amitosis

-amitotic

-amitotically

-amitrole

-ammino

-ammoniacal

-ammoniate

-ammoniation

-ammonification

-ammonifier

-ammonify

-ammonite

-ammonites

-ammonitic

-ammonoid

-amnesia

-amnesiac

-amnesic

-amnestic

-amnia

-amniocentesis

-amnion

-amniote

-amniotic

-amoeban

-amoebiasis

-amoebic

-amoebocyte

-amoeboid

-amoralism

-amoretto

-amorphism

-amort

-amphibia

-amphibole

-amphibolite

-amphibolitic

-amphioxis

-amphioxus

-amphipathic

-amphiploid

-amphipod

-amphitheatric

-amphitheatrical

-amphitheatrically

-amphitropous

-amplexicaul

-amplexus

-amplidyne

-ampul

-ampule

-amputator

-amputee

-amra

-amuck

-amygdaloid

-amylolytic

-ana

-anabaptism

-anabasis

-anabatic

-anabiosis

-anabiotic

-anabolic

-anabolism

-anachronic

-anachronous

-anachronously

-anaclitic

-anacoluthic

-anacoluthically

-anaculture

-anadiplosis

-anaerobe

-anaerobically

-anaerobiosis

-anaglyphic

-anagrammatic

-anagrammatical

-anagrammatically

-analemma

-analemma's

-analemmas

-analeptic

-analgesia

-analgetic

-analogic

-analogist

-analphabet

-analphabetic

-analphabetism

-analysand

-anaphase

-anaphasic

-anaphylaxis

-anaplasia

-anaplastic

-anarch

-anarchism

-anarchistic

-anarcho

-anastasia

-anastigmat

-anastrophe

-anatomist

-anatoxin

-anatropous

-ancestress

-anchoress

-anchoret

-anchoritic

-anchoritically

-anchorless

-anchorman

-ancientry

-andalusite

-andante

-andantino

-andesine

-andesite

-andesitic

-andiron

-andradite

-androgen

-androgenic

-androgyny

-android

-anecdotage

-anecdotalist

-anecdotalists

-anecdotic

-anecdotical

-anecdotically

-anecdotist

-anemograph

-anemographic

-anemometric

-anemometrical

-anent

-aneroid

-aneurism

-aneurysm

-aneurysmal

-anfractuosity

-anfractuous

-angary

-angelical

-angelically

-angerless

-angina

-anginal

-anginose

-angiocardiographic

-angiocardiography

-anglesite

-angleworm

-anglia

-anglice

-anglicism

-angularity

-angulation

-ani

-anile

-animalcular

-animalcule

-animalculum

-animalism

-animalist

-animalistic

-animality

-animallike

-animist

-animistic

-animus

-aniseed

-aniseikonia

-anisette

-anisotropically

-anisotropism

-ankerite

-ankh

-anklebone

-anklebones

-anklet

-annelid

-annexational

-annexationist

-annexe

-annihilator

-annihilatory

-annotator

-annotators

-annuary

-annuitant

-annularity

-annulate

-annulated

-annulately

-annulation

-annulet

-annuli

-annunciatory

-annunicates

-anodal

-anodally

-anodically

-anodyne

-anodynic

-anointment

-anomalistic

-anomalistical

-anomer

-anomeric

-anonym

-anorectic

-anoretic

-anorexigenic

-anorthic

-anorthite

-anorthitic

-anorthosite

-anosmia

-anosmic

-anovulant

-anovulatory

-anoxemia

-anoxemic

-anoxia

-anoxic

-anserine

-antecede

-antecedence

-antecessor

-antechamber

-antechambers

-antechoir

-antediluvian

-antefix

-antefixal

-anteing

-antemortem

-antenatal

-antennal

-antennule

-anteroom

-anterooms

-anthelion

-anthesis

-anthill

-anthologist

-anthracitic

-anthracnose

-anthrax

-anthrop

-anthropic

-anthropical

-anthropocentric

-anthropocentrically

-anthropocentricity

-anthropogenesis

-anthropogenetic

-anthropography

-anthropoid

-anthropometrical

-anthropometrically

-anthropomorphism

-anthropomorphist

-anthropopathism

-anthropophagous

-anthropophagus

-anthropophagy

-anthroposophy

-antiaircraft

-antianxiety

-antibiosis

-antibiotically

-antiblack

-antiblackism

-antically

-anticancer

-anticancerous

-anticatalyst

-anticholinergic

-anticipant

-anticipants

-anticipatable

-anticipator

-anticlerical

-anticlericalism

-anticlimactical

-anticlimactically

-anticlimax

-anticlimaxes

-anticlinal

-anticline

-anticlockwise

-anticoagulant

-anticoagulate

-anticodon

-anticonvulsant

-anticonvulsive

-antidepressant

-antiderivative

-antidiuretic

-antidotal

-antidotally

-antienzyme

-antiestablishment

-antifertility

-antiform

-antifouling

-antifriction

-antifungal

-antigenic

-antigenically

-antigenicity

-antiglobulin

-antigorite

-antigravity

-antihemophilic

-antihistamine

-antihistaminic

-antihypertensive

-antiknock

-antileukemic

-antilitter

-antilog

-antilogarithm

-antilogarithms

-antimacassar

-antimacassars

-antimagnetic

-antimalarial

-antimalarials

-antimedieval

-antimedieval's

-antimedievals

-antimetabolite

-antimitotic

-antimonial

-antimonic

-antimonious

-antineoplastic

-antineutrino

-antineutron

-antinodal

-antinode

-antinovel

-antinovelist

-antinucleon

-antioxidant

-antiparasitic

-antiparticle

-antipathetic

-antipathetically

-antiperiodic

-antiperiplanar

-antipersonnel

-antiphlogistic

-antiphon

-antiphonary

-antiphony

-antiphrasis

-antipodal

-antipodean

-antipoetic

-antipollution

-antipope

-antiproton

-antipyretic

-antipyrine

-antiquarianism

-antirheumatic

-antirrhinum

-antisemite

-antisemite's

-antisemites

-antisepsis

-antiseptically

-antispasmodic

-antistrophe

-antistrophic

-antistrophically

-antitank

-antitoxic

-antitrades

-antitubercular

-antituberculous

-antitumor

-antitumoral

-antitussive

-antivenin

-antiviral

-antivitamin

-antonym

-antonymic

-antonymous

-antonyms

-antonymy

-antrorse

-antrorsely

-anywise

-aortal

-aortic

-aortographic

-aortography

-apalachicola

-apartmental

-apathetically

-apatite

-apeak

-apelike

-aperient

-aperiodically

-aperitif

-aphaeresis

-aphaeretic

-aphanite

-aphanitic

-aphasiac

-aphelion

-aphetic

-aphetically

-aphides

-aphorist

-aphoristic

-aphoristically

-aphotic

-aphrodisiac

-aphrodisiacal

-aphyllous

-aphylly

-apian

-apiarian

-apiarist

-apices

-apiculate

-apicultural

-apiculture

-apiculturist

-aplacental

-aplanatic

-aplasia

-aplastic

-apocalyptical

-apocalyptically

-apocalypticism

-apocalyptism

-apocalyptist

-apocarpous

-apocarpy

-apochromatic

-apocope

-apocrine

-apodal

-apodeictic

-apodictic

-apodictically

-apodosis

-apodous

-apogamic

-apogamous

-apogean

-apolitical

-apolitically

-apollinaire

-apologie

-apologue

-apolune

-apomixis

-apomorphine

-aponeurosis

-aponeurotic

-apoplectic

-apoplectically

-apoplexy

-aport

-aposematic

-aposematically

-apostasy

-apostleship

-apostolate

-apostolicity

-apostrophic

-apothecial

-apothecium

-apothegm

-apothegmatic

-apothegmatical

-apothegmatically

-apothem

-apotropaic

-apotropaically

-appaloosas

-apparitional

-appealability

-appealable

-appeasable

-appellee

-appendant

-appendectomy

-appendicular

-apperceive

-apperception

-apperceptive

-appestat

-appetence

-appetency

-appetent

-applaudable

-applaudably

-applicatory

-appointe

-appomattox

-apport

-appose

-apposed

-apposing

-appositional

-appositionally

-appraisement

-appreciator

-appreciatory

-apprehensibly

-appressed

-approbatory

-approvable

-approvably

-approx

-approximable

-approximant

-appurtenant

-apractic

-apraxia

-apraxic

-apriority

-apsidal

-apsides

-apterous

-apteryx

-aptitudinal

-aptitudinally

-apyrase

-aquacade

-aquaculture

-aquafortis

-aqualunger

-aquamarine

-aquanaut

-aquaplane

-aquaplaner

-aquarelle

-aquarellist

-aquarist

-aquatically

-aquatint

-aquatinter

-aquatintist

-aquavit

-aquicultural

-aquiculture

-aquidneck

-aquiferous

-aquilegia

-aquiline

-aquilinity

-aquiver

-arability

-arachnoid

-arbitrable

-arbitrageur

-arbitral

-arbitrament

-arbitrational

-arboreous

-arborescence

-arborescent

-arborescently

-arboriculture

-arboriculturist

-arborist

-arborist's

-arborists

-arborvitae

-arbovirus

-arbritrary

-arbutus

-arcanum

-arccos

-arccosine

-archae

-archaist

-archaistic

-archangelic

-archbishopric

-archdeacon

-archdeaconate

-archdeaconry

-archdiocesan

-archducal

-archduchess

-archduchy

-archduke

-archdukedom

-archegonial

-archetypal

-archetypally

-archfiend

-archipelagic

-architectonically

-architrave

-archivolt

-archon

-archpriest

-archway

-arclength

-arco

-arcsin

-arctan

-arctically

-arcuate

-arcuately

-arcuation

-areal

-areally

-areaway

-areola

-areolar

-areolate

-areolation

-areole

-argent

-argentic

-argentiferous

-argentine

-argentite

-argentous

-arger

-argillaceous

-arginine

-argos

-argosy

-argufier

-argufy

-argumentum

-argyle

-argyll

-arhat

-aria

-arianist

-arianists

-arithmetician

-armamentarium

-armentieres

-armillaria

-armless

-armlet

-armlike

-armoire

-armorial

-armorially

-armorist

-armorist's

-armorists

-armorless

-armrest

-armsful

-aromatically

-aromaticity

-arpanet

-arras

-arrearage

-arrestant

-arrestment

-arrhythmia

-arrhythmic

-arrhythmical

-arrhythmically

-arris

-arrises

-arriviste

-arrondissement

-arrowwood

-arrowworm

-arrowy

-arsenical

-arsenious

-arsenite

-arsis

-arsonist

-arsonous

-arte

-artefact

-artefacts

-artemisia

-arteriogram

-arteriogram's

-arteriograms

-arteriographic

-arteriography

-arteriolosclerosis

-arteritis

-arthritic

-arthritically

-arthropathy

-arthrosis

-arthrospore

-arthrosporic

-articular

-artilleryman

-artily

-artiodactyl

-artiste

-artmobile

-arum

-aryl

-asap

-asbestosis

-asbestus

-ascendable

-ascendance

-ascendence

-ascendible

-ascensional

-ascensive

-ascertainment

-ascesis

-ascetical

-ascetically

-ascidian

-ascidium

-ascites

-ascitic

-ascomycetes

-ascorbate

-ascospore

-ascosporic

-ascosporous

-ascus

-asdic

-asepsis

-aseptically

-asexual

-asexually

-ashcan

-ashcans

-ashless

-ashmen

-ashram

-asininity

-askant

-askesis

-aslant

-aslope

-asparagine

-aspartate

-aspartic

-aspartokinase

-aspectual

-aspencade

-aspencades

-asperges

-asperse

-aspersed

-aspersing

-asphaltic

-asphaltite

-asphaltum

-aspheric

-aspherical

-asphodel

-asphyxiator

-aspiate

-aspidistra

-assagai

-assai

-assailable

-assassinator

-assegai

-assemblagist

-assemblyman

-assemblywoman

-assentation

-assentor

-assessable

-asseverate

-asseveration

-asseverative

-assignability

-assignat

-assignational

-assignor

-assimilability

-assimilable

-assimilationism

-assimilator

-assimilatory

-assize

-assizer

-assizers

-assizes

-associateship

-assoil

-assoilment

-assortative

-assuagement

-assuasive

-assumable

-assumably

-assumpsit

-assumptive

-assurgent

-assuror

-astaires

-astarboard

-astatic

-astatically

-astaticism

-asteriated

-asteriskless

-asterism

-asterisms

-astern

-asthenia

-asthenic

-asthenosphere

-asthmatic

-asthmatically

-astigmat

-astigmatically

-astir

-astonied

-astrachan

-astragal

-astragalus

-astrakhan

-astrobiological

-astrobiologist

-astrobiology

-astrocyte

-astrocytic

-astrocytoma

-astrodome

-astrol

-astrolabe

-astrologer

-astrologer's

-astrologers

-astrological

-astrologically

-astrology

-astron

-astronautical

-astronautically

-astronavigation

-astrophotography

-astrosphere

-aswarm

-aswirl

-aswoon

-asymptomatic

-asynapsis

-async

-asyndetic

-asyndetically

-asyndeton

-ataractic

-ataraxic

-atari

-atavism

-atavist

-atavistically

-ataxia

-ataxic

-atelectasis

-atelier

-atheistical

-atheistically

-athenaeum

-atheneum

-athirst

-athletically

-athwartship

-athwartships

-atilt

-atinate

-atingle

-atlantes

-atman

-atment

-atmometer

-atmometer's

-atmometers

-atmospherically

-atmospherium

-atomicity

-atomism

-atomist

-atomistic

-atomistically

-atomistics

-atonalism

-atonalist

-atonalistic

-atonality

-atonic

-atonicity

-atony

-atopic

-atopy

-atremble

-atresia

-atrial

-atrioventricular

-atrip

-atrium

-atriums

-atropine

-attachable

-attackman

-attainability

-attainder

-attaint

-attar

-attemptable

-atticism

-attis

-attorn

-attorneyship

-attornment

-attractable

-attractant

-attractivity

-attrited

-attritional

-attunement

-atune

-atwitter

-atypic

-atypicality

-auctorial

-aud

-auden

-audient

-audile

-auding

-audiofrequencies

-audiofrequency

-audiogenic

-audiophile

-auditable

-audivi

-augend

-augite

-augitic

-augmentable

-augmentative

-augmentor

-augury

-auk

-auld

-aunthood

-auntlike

-aurar

-aureate

-aureola

-auricle

-auricula

-auricular

-auriculate

-aurochs

-aurorae

-auroral

-aurorean

-aurous

-auscultatory

-auslander

-auspicate

-austenite

-austral

-australite

-australopithecine

-authoress

-authorial

-autoantibody

-autobahn

-autobiographer

-autobus

-autocade

-autocatalysis

-autocatalytic

-autocephalous

-autochthonous

-autoclave

-autoclaved

-autocoder

-autocratical

-autocross

-autocueing

-autodidact

-autodidactic

-autodyne

-autoecious

-autoeciously

-autoecism

-autoerotic

-autoerotically

-autoeroticism

-autoerotism

-autogamous

-autogamy

-autogenesis

-autogenetic

-autogenetically

-autogenic

-autogenous

-autogenously

-autogiro

-autograft

-autographic

-autographically

-autography

-autogyro

-autohypnosis

-autohypnotic

-autoimmune

-autoimmunity

-autoinfection

-autoinoculation

-autointoxication

-autoloading

-autologous

-autolysate

-autolysin

-autolysis

-autolytic

-automaker

-automanipulation

-automanipulative

-automat

-automatable

-automaticity

-automatism

-automatist

-automobil

-automobilist

-automorphism

-autonomically

-autonomist

-autoparagraph

-autophyte

-autophytic

-autophytically

-autoplastic

-autoplastically

-autoplasty

-autoradiogram

-autoradiogram's

-autoradiograms

-autoradiograph

-autoradiographic

-autoradiography

-autorotate

-autorotation

-autorotational

-autosexing

-autosomal

-autosomally

-autosome

-autosuggest

-autosuggestible

-autosuggestion

-autotable

-autotelic

-autotetraploid

-autotetraploidy

-autotomic

-autotomous

-autotomy

-autotransplant

-autotransplantation

-autotroph

-autotrophic

-autotrophically

-autotrophy

-autunite

-aux

-auxesis

-auxetic

-auxetically

-auxil

-auxin

-auxinic

-auxinically

-auxotroph

-auxotrophic

-auxotrophy

-avaliable

-avast

-avatar

-avaunt

-avec

-avellan

-avellane

-aventail

-aventine

-aventino

-aventurine

-averment

-avesta

-aviarist

-aviatress

-aviculture

-aviculturist

-avidin

-avifauna

-avifaunal

-avifaunally

-avifaunistic

-avigation

-avirulent

-avitaminosis

-avitaminotic

-avocate

-avocational

-avocationally

-avocet

-avoirdupois

-avouchment

-avowal

-avulse

-avulsing

-avulsion

-avuncular

-awardable

-awardee

-aweary

-aweather

-aweigh

-aweless

-awestricken

-awestruck

-awhirl

-awless

-awn

-awnless

-awoken

-axal

-axel

-axenic

-axenically

-axiality

-axil

-axile

-axilla

-axillar

-axillary

-axisymmetric

-axisymmetrical

-axisymmetrically

-axisymmetry

-axletree

-axman

-ayin

-azathioprine

-azeotropic

-azide

-azido

-azine

-azonal

-azote

-azurite

-azusa

-babblement

-baboonish

-babushka

-babysat

-baccate

-bacchanal

-bacchanalia

-bacchanalian

-bacchant

-bacchante

-bacchantes

-bacchantic

-bacchic

-bacciferous

-baci

-bacillar

-bacillary

-bacitracin

-backbite

-backbiter

-backcountry

-backcourt

-backcourtman

-backcross

-backfield

-backfire

-backfired

-backfires

-backfiring

-backgammon

-backgammon's

-backhoe

-backhouse

-backless

-backpedal

-backrest

-backsaw

-backseat

-backset

-backslap

-backslapper

-backslide

-backslider

-backspin

-backstay

-backstretch

-backstroke

-backswept

-backswing

-backsword

-backwash

-backwoodsman

-bactericidal

-bactericidally

-bactericide

-bacterin

-badinage

-bafflement

-bagful

-baggily

-bagley

-bagman

-baguette

-bailable

-bailee

-baileefe

-bailie

-bailiffship

-bailiwick

-bailment

-bailor

-bailsman

-bainite

-bairn

-baize

-bakeshop

-balderdash

-baldhead

-baldheaded

-baldish

-baldpate

-balefire

-balenciaga

-balkline

-ballade

-balladeer

-balladic

-balladist

-balladry

-ballcarrier

-balletic

-balletomane

-balletomania

-ballfield

-ballfield's

-ballgown

-ballgown's

-ballista

-ballistically

-balloonist

-ballottement

-ballyhooey

-balmily

-baloney

-balsamic

-baluster

-bam

-bambino

-bamboozle

-bamboozled

-bamboozlement

-bamboozles

-bamboozling

-banality

-banausic

-bancroft

-bandana

-bandanna

-bandbox

-bandeau

-bandeaux

-bandgap

-banditry

-banditti

-bandleader

-bandmaster

-bandoleer

-bandolier

-bandsman

-baneberry

-bangish

-bangtail

-banjoes

-banjoist

-bankable

-bankbook

-bankbooks

-bankroll

-bankroller

-bankside

-banneret

-bannerette

-bannister

-bannisters

-bannock

-banns

-banquette

-bantamweight

-bantling

-banyan

-banzai

-baobab

-barbarianism

-barbarically

-barbarism

-barbate

-barbe

-barberry

-barbershop

-barbitone

-barbudo

-barbudos

-barbwire

-bareback

-barebacked

-bareheaded

-bareheadedness

-bareknuckle

-bareknuckled

-bargeboard

-bargeman

-bariatrician

-bariatrics

-baric

-baritonal

-barkier

-barkless

-barky

-barleycorn

-barmaid

-barman

-barmier

-barmy

-barny

-barogram

-barogram's

-barograms

-barograph

-barographic

-barometrical

-barometrically

-barometry

-baronage

-baronetage

-baronetcy

-barramunda

-barramundi

-barranca

-barranco

-barrater

-barrator

-barratry

-barre

-barrelful

-barrelhouse

-barrelsful

-barrio

-barrister

-barristers

-barron

-barroom

-barrooms

-barware

-barycentric

-baryon

-baryon's

-baryonic

-baryons

-basaltic

-bascom

-bascule

-baseborn

-baselevel

-basementless

-basepoint

-baserunning

-bashaw

-basicity

-basidial

-basidiomycete

-basidiomycetes

-basidiomycetous

-basidiospore

-basidiosporous

-basidium

-basie

-basification

-basify

-basilary

-basileis

-basilica

-basilican

-basinal

-basinet

-basipetal

-basipetally

-basketful

-basketlike

-basketry

-basketwork

-basler

-baslot

-basophil

-basophile

-basophilia

-bassi

-bassis

-bassist

-bassoon

-bassoon's

-bassoonist

-bassoonist's

-bassoonists

-bassoons

-bast

-bastardy

-bastile

-bastille

-batboy

-bate

-bateau

-batfish

-batfowl

-bathhouse

-bathhouses

-bathometer

-bathometer's

-bathometers

-bathtubful

-bathwater

-batista

-batiste

-batman

-batrachian

-batrachotoxin

-batsman

-batt

-battailous

-battalia

-batteau

-battement

-battier

-battiness

-battlewagon

-battu

-battue

-batty

-batwing

-baubee

-baudrons

-baulk

-baulked

-baulking

-baulks

-baum

-bauxitic

-bawcock

-bawd

-bawden

-bawdily

-bawdry

-bayadere

-bayaderka

-bayanihan

-bazon

-bazooka

-bazookas

-bea

-beachboy

-beachboys

-beachcomb

-beachcomber

-beachcombers

-beachfront

-beachside

-beachwear

-beachy

-beadroll

-beadwork

-beale

-beall

-beame

-beamish

-beamishly

-beamy

-beanball

-beanie

-bearability

-bearbaiting

-bearberry

-beardown

-bearskin

-beastie

-beatie

-beatifically

-beatless

-beauchamps

-beauclerk

-beaverboard

-beaverton

-bebopper

-bechance

-becket

-beckett

-becloud

-bedabble

-bedaub

-bedaubing

-bedchamber

-bedclothes

-bede

-bedeck

-bedevilment

-bedew

-bedfellow

-bedim

-bedimmed

-bedimming

-bedlamite

-bedouin

-bedplate

-bedrid

-bedroll

-bedsore

-beduin

-beduins

-beebread

-beefcake

-beefeater

-beefwood

-beekeeper

-beekeeping

-beelike

-beeline

-beerier

-beery

-beestings

-beeswax

-beeves

-befoh

-befool

-beforehandedness

-beforetime

-begat

-begetter

-begone

-begrime

-begrimed

-begriming

-beguilement

-beguine

-behaviorist

-behaviorist's

-behavioristically

-behaviorists

-behemoth

-behemothic

-behindhand

-behoof

-beigy

-bel

-belaud

-beldam

-beldame

-beleaguer

-belge

-belike

-belittlement

-belive

-bellbird

-belligerency

-bellpull

-bellum

-bellwood

-bellwort

-bellyband

-belowground

-beltless

-belton

-beltway

-beluga

-beluga's

-bemadden

-bemaddening

-bemire

-bemock

-bemusement

-benchmar

-benday

-benedictory

-benefaction

-benefactress

-benefic

-beneficiate

-beneficiation

-benefitted

-benefitting

-benight

-benignancy

-benignant

-benignantly

-benignity

-benthal

-benthic

-benthonic

-benthos

-bentonite

-bentonitic

-benumb

-bepaint

-beplaster

-bequeathal

-berberine

-berceuse

-berceuses

-bergamot

-beringer

-bernardine

-berne

-berrylike

-berteros

-berto

-beseem

-besetment

-beshrew

-besmear

-besom

-besot

-besotter

-bespatter

-bespoken

-besprent

-besprinkle

-bestead

-besteaded

-besteading

-bestiality

-bestiary

-bestrew

-bestride

-bestrides

-bestriding

-bestsellerdom

-betaine

-betake

-betel

-bethink

-betimes

-betony

-betted

-betweenbrain

-betweentimes

-betweenwhiles

-bewigged

-bewitchery

-bewitchment

-bewray

-bey

-biassed

-biassin

-biassing

-biathlon

-bibb

-bibber

-bibbery

-bibcock

-bibelot

-bibelots

-bibless

-biblicism

-biblicist

-bibliographer

-bibliolater

-bibliolatrous

-bibliolatry

-bibliology

-bibliomania

-bibliomaniac

-bibliomaniacal

-bibliopegic

-bibliopegically

-bibliopegist

-bibliopegistic

-bibliopegy

-bibliophilic

-bibliophilism

-bibliophilist

-bibliophily

-bibliopole

-bibliopolic

-bibliopolist

-bibliotheca

-bibliothecal

-bibliotic

-bibliotics

-bibliotist

-bibulous

-bibulously

-bibulousness

-bicameralism

-bicapsular

-bicentenary

-bicentric

-bicentricity

-bichloride

-bichrome

-bicipital

-biconcavity

-biconditional

-biconvexity

-bicorne

-bicornuate

-bicultural

-biculturalism

-bicuspid

-bicuspidate

-bicyclic

-bicyclist

-biddability

-biddably

-bidet

-bidialectal

-bidialectalism

-bierce

-bietnar

-bifacial

-biff

-bifid

-bifidity

-bifidly

-bifilar

-bifilarly

-biflagellate

-biform

-bigamist

-bigamous

-bigamously

-bigamy

-bigeminal

-bigeminy

-bigeneric

-bigeye

-biggety

-biggin

-bigging

-biggish

-biggity

-bighead

-bigheaded

-bighearted

-bigheartedly

-bigheartedness

-bighorn

-bighorn's

-bighorns

-bigmouthed

-bignonia

-bigwig

-bijou

-bijouterie

-bikeway

-bilabiate

-bilateralism

-bilbo

-bilboa

-bilgier

-bilgy

-bilharziasis

-biliary

-bilious

-biliously

-biliousness

-billable

-billfold

-billfold's

-billfolds

-billhead

-billhook

-billionaire

-billon

-billowy

-billposter

-billposting

-billycock

-bilobal

-bilobed

-bilocular

-biloculate

-bimanual

-bimanually

-bimester

-bimestrial

-bimetal

-bimillenary

-bimillenial

-bimodality

-bimorphemic

-binational

-bindweed

-bine

-bingle

-binnacle

-binned

-binning

-binocularity

-bint

-binucleate

-binucleated

-bio

-bioactive

-bioassay

-bioastronautical

-bioastronautics

-biocatalyst

-biocatalytic

-biocenology

-biocenosis

-biocenotic

-biochemic

-biocidal

-biocide

-bioclean

-bioclimatic

-biocoenosis

-biocoenotic

-biodegradability

-biodegradable

-biodegradation

-biodegrade

-bioecological

-bioecologist

-bioecology

-bioelectric

-bioelectrical

-bioelectricity

-bioengineering

-bioenvironmental

-bioflavonoid

-biog

-biogen

-biogenesis

-biogenetic

-biogenetically

-biogenic

-biogeochemical

-biogeochemistry

-biogeographic

-biogeographical

-biogeography

-biographee

-bioinstrumentation

-biologism

-biologistic

-bioluminescence

-bioluminescent

-biomacromolecule

-biomacromolecules

-biomaterial

-biome

-biometrical

-biometrically

-biomolecular

-bionic

-bionics

-bionomic

-bionomical

-bionomically

-bionomics

-biopolymer

-biopolymers

-biosatellite

-bioscientific

-bioscientist

-biosynthesis

-biosynthetic

-biosynthetically

-biosystematic

-biosystematist

-biosystematy

-biota

-biotechnological

-biotechnology

-biotelemetric

-biotelemetry

-biotin

-biotite

-biotitic

-biotope

-biotransformation

-biotron

-biotype

-biotypic

-biovular

-bipack

-biparental

-biparentally

-bipartisanism

-bipartisanship

-bipedal

-biphenyl

-bipinnate

-bipinnately

-bipod

-bipolarity

-bipropellant

-biquadratic

-biracialism

-biradial

-biramous

-birchbark

-birdbrain

-birdbrained

-birdcage

-birdcage's

-birdcages

-birdcall

-birdhouse

-birdieback

-birdieing

-birdlime

-birdman

-birdyback

-bireme

-biretta

-birgitta

-birk

-birkhead

-birkie

-birl

-birler

-birr

-birse

-birthmark

-birthroot

-birthstone

-birthwort

-biscayne

-bisectional

-bisectionally

-bisexuality

-bistort

-bistro

-bistroic

-bistros

-bisulfate

-bisulfide

-bisulfite

-bitartrate

-bitchery

-bitchier

-bitchily

-bitchiness

-bitchy

-bitstock

-bitsy

-bitt

-bitted

-bitterish

-bitterweed

-bitting

-bittock

-bitty

-bituminoid

-bivalent

-biyearly

-biz

-blabber

-blabbered

-blabbering

-blabby

-blackamoor

-blackamoors

-blackcap

-blackcock

-blackdamp

-blackface

-blackfin

-blackfish

-blackfly

-blackguard

-blackguard's

-blackguardism

-blackguardly

-blackguards

-blackhander

-blackhead

-blackheart

-blackish

-blackland

-blackleg

-blackmer

-blackpoll

-blacksnake

-blacktail

-blackthorn

-blacktop

-blacktop's

-blacktops

-blackwash

-blackwater

-bladderlike

-blakey

-blamably

-blameful

-blamefully

-blancmange

-blandish

-blandisher

-blandishment

-blandishments

-blanketflower

-blanketlike

-blanton

-blarney

-blasingame

-blastema

-blastematic

-blastemic

-blastie

-blastment

-blastula

-blastula's

-blastular

-blastulas

-blastulation

-blat

-blate

-blatted

-blatter

-blazonry

-bleachable

-bleakish

-blearily

-blench

-blende

-blether

-blevins

-blimpishly

-blimpishness

-blindfish

-blindworm

-blintz

-blintze

-blipping

-blique

-blistery

-blithesome

-blithesomely

-blizzardy

-blobbing

-blockbuster

-blockbusters

-blockbusting

-blockhead

-blockheads

-blockish

-blockishly

-blondish

-bloodcurdling

-bloodcurdlingly

-bloodfin

-bloodguilt

-bloodguiltiness

-bloodguilty

-bloodily

-bloodletting

-bloodline

-bloodline's

-bloodlines

-bloodmobile

-bloodred

-bloodstock

-bloodstone

-bloodsucker

-bloodsucking

-bloodthirstily

-bloodthirstiness

-bloodthirsty

-bloodworm

-bloodwort

-bloomy

-bloop

-blooper

-bloops

-blossomy

-blotchily

-blotchy

-blotter

-blotty

-blouson

-blowfly

-blowgun

-blowhard

-blowhole

-blowout

-blowpipe

-blowsy

-blowtube

-blowy

-blowzy

-blubbery

-blucher

-bluebeard

-bluebell

-bluebottle

-bluecoat

-bluefin

-blueing

-bluejack

-bluenose

-bluepoint

-bluesman

-bluestem

-bluestone

-bluesy

-bluet

-bluetongue

-blueweed

-bluey

-blume

-blunderbuss

-blurrily

-blushful

-blusterous

-blutwurst

-blyth

-boardlike

-boardman

-boardmanship

-boardroom

-boardsmanship

-boardwalk

-boart

-boatel

-boatels

-boatmanship

-boatsmanship

-boaz

-bobber

-bobbery

-bobbinet

-bobbsey

-bobeche

-bobrow

-bobsledder

-bobstay

-bobtail

-bobtailed

-bocaccio

-bocci

-boccie

-bod

-bodacious

-bodaciously

-bodega

-bodement

-bodenheim

-bodiless

-bodkin

-bodysurf

-bodysurfer

-bodywork

-boehmer

-boehmite

-boer

-boff

-boffin

-boffo

-boffola

-boffos

-bogartian

-bogeyman

-bogeyman's

-boggs

-bogie

-bogle

-boheme

-bohlen

-boies

-boite

-boites

-bola

-boland

-bolas

-bolases

-bole

-bolero

-bolet

-boletus

-boliou

-bollard

-bollix

-bollworm

-bolometric

-bolometrically

-boloney

-boltrope

-bolus

-bombardier

-bombardiers

-bombardon

-bombastically

-bombazine

-bombe

-bombinate

-bombination

-bombshell

-bombsight

-bombus

-bon

-bonbon

-bondable

-bondholder

-bondmaid

-bondman

-bondstone

-bondwoman

-bonefish

-bonehead

-boneheaded

-boneless

-boneset

-bonesetter

-boney

-boneyard

-bonfiglio

-bongoes

-bongoist

-bonham

-bonheur

-bonhomie

-bonkers

-bonne

-bonner

-bonnily

-bonnor

-bonsai

-bonspiel

-bontempo

-bonze

-bonzer

-boobify

-boodle

-booger

-boogerman

-boogeyman

-bookbindery

-bookful

-booklist

-bookmaker

-bookmakers

-bookmaking

-bookman

-bookmark

-bookmark's

-bookmarker

-bookmarkers

-bookmarks

-bookmobile

-bookmobiles

-bookselling

-bookstall

-bookworm

-bookworm's

-bookworms

-booky

-boomier

-boomlet

-boomy

-boondocks

-boondoggle

-boondoggler

-boondoggling

-boonies

-bootee

-bootie

-bootjack

-bootlace

-bootle

-bootless

-bootlessly

-bootlessness

-bootlick

-bootlicker

-bootprint

-boozily

-boozy

-bopper

-bora

-borage

-borak

-borane

-borazon

-bordel

-bordereau

-boreal

-boresight

-boresights

-borglum

-boride

-borland

-borneol

-boronic

-bort

-bosomy

-bosonic

-bosphorus

-bosque

-bosquet

-bossdom

-bossism

-bostitch

-bot

-botan

-botchwork

-botchy

-botel

-botheration

-bots

-bottlecap

-bottlecap's

-bottlecaps

-bottleful

-bottomland

-bottomry

-botulinal

-botulinum

-boucle

-boudoir

-bouffe

-bougainvillaea

-bougainvillea

-bougie

-bouillabaisse

-bouldery

-boule

-boulevardier

-bouleversement

-boulez

-boulle

-bouncily

-bounderish

-bounderishly

-bountiful

-bountifully

-bountifulness

-bourbonism

-bourdon

-bourg

-bourgeoise

-bourgeoisify

-bourgeon

-bourguiba

-bourn

-bourse

-bouse

-bousing

-boustrophedon

-bouton

-boutonniere

-bouvardier

-bouvier

-bouzouki

-bovinity

-bowan

-bowelless

-bowerbird

-bowerbird's

-bowerbirds

-bowery

-bowes

-bowfin

-bowfront

-bowhead

-bowknot

-bowlder

-bowleg

-bowlegged

-bowlful

-bowmen

-bowse

-bowsprit

-bowwow

-bowyer

-boxful

-boxhaul

-boxlike

-boxthorn

-boyar

-boyard

-boyars

-bozo

-bozos

-brabble

-brabbled

-brabbling

-brachial

-brachiate

-bract

-bradded

-bradding

-braggart

-braggest

-braggy

-brahma

-brail

-braillewriter

-braincase

-brainish

-brainless

-brainlessly

-brainlessness

-brainpan

-brainpower

-brainsick

-brainsickly

-brainstem

-brainstem's

-brainstems

-brainteaser

-braise

-braised

-braiser

-braises

-braising

-brakeless

-braky

-branchia

-branchial

-branchiate

-branchless

-branchlet

-branchy

-brandel

-brandin

-brandling

-brank

-branks

-brannon

-brant

-brants

-branum

-braque

-braques

-brassard

-brassbound

-brasserie

-brassica

-brassily

-brattice

-brattiness

-brattish

-brattishing

-brattle

-brattled

-brattling

-bratty

-brava

-bravoes

-braw

-braweling

-brawle

-brawlier

-brawly

-brawnier

-brawnily

-brawniness

-brawny

-brazos

-breadbasket

-breadbaskets

-breadroot

-breadstuff

-breadthways

-breadthwise

-breadwinning

-breakfront

-breakneck

-breakoff

-breakout

-bream

-breams

-breastbone

-breaststroke

-breaststroker

-breathability

-breccia

-breccias

-brecciate

-brecciation

-breechblock

-breechcloth

-breechclout

-breechloader

-breeks

-breezeless

-breezeway

-bregma

-bregmatic

-breviaries

-breviary

-brewage

-briard

-bribable

-bricating

-brickbat

-brickle

-bricktop

-brickwork

-bridewell

-bridgeboard

-bridgeless

-briefless

-brien

-briery

-brigadoon

-brigand

-brigand's

-brigandage

-brigandine

-brigandism

-brigands

-brightwork

-brill

-brilliantine

-brimless

-brimmer

-brinded

-bringdown

-brinkley

-brinksmanship

-brio

-brioche

-briolette

-briquet

-briquette

-brisance

-brisant

-brisket

-brisling

-brist

-bristlecone

-bristlecone's

-bristlecones

-bristlelike

-bristletail

-brit

-broadax

-broadcloth

-broadleaf

-broadminded

-broadsheet

-broadsword

-broadtail

-broadwife

-brocatelle

-brochette

-brockage

-brocket

-brockle

-brocoli

-brogue

-broider

-broidery

-brokenhearted

-brollies

-brolly

-bromate

-bromated

-bromating

-bromegrass

-bromeliad

-bromelin

-bromic

-bromidic

-brominate

-bromination

-bromism

-bromo

-bromos

-bronchialy

-broncobuster

-brontosaur

-brontosaurus

-bronzy

-broomball

-broomballer

-broomcorn

-broome

-broomrape

-broths

-brougham

-broughams

-broun

-brownnose

-brownnoser

-brownout

-brownshirt

-brownstone

-brownstones

-browny

-browsability

-broxodent

-bruit

-brunet

-brushability

-brushback

-brushcut

-brushland

-brushstroke

-brushstroke's

-brushstrokes

-brushup

-brushwood

-brusk

-brusquerie

-brut

-bruxelles

-bruxism

-bryophyta

-bryophyte

-bryozoa

-bs

-bubby

-buccal

-buccaneer

-buccaneer's

-buccaneerish

-buccaneers

-bucer

-buckbean

-buckeroo

-bucketsful

-buckhead

-buckman

-bucko

-buckoes

-bucksaw

-buckshee

-bucktail

-buckthorn

-bucktooth

-bucky

-bucolically

-budder

-buddle

-budgeteer

-budgie

-budlong

-bufferred

-buffi

-buffo

-buffoonery

-buffoonish

-buffos

-bugatti

-bugbear

-bugeye

-buggery

-bughouse

-bugleweed

-bugloss

-bugseed

-builtin

-bulba

-bulbaceous

-bulbar

-bulbil

-bulbous

-bulbously

-bulbul

-bulginess

-bulgur

-bulgy

-bulkily

-bulla

-bullace

-bullae

-bullbaiting

-bullbat

-bulldogger

-bullfight

-bullfighter

-bullfighting

-bullhorn

-bullnecked

-bulloch

-bullock

-bullocky

-bullous

-bullpout

-bullring

-bullrush

-bullrush's

-bullrushes

-bullterrier

-bullwhack

-bullwhip

-bullyrag

-bumbershoot

-bumboat

-bumbry

-bumkin

-bumpier

-bumpily

-bumpiness

-bumpkin

-bumpkin's

-bumpkinish

-bumpkinly

-bumpkins

-bumpy

-bunchily

-bunchy

-bunco

-bund

-bundist

-bundoora

-bundy

-bung

-bunger

-bunghole

-bunglesome

-bunko

-bunkos

-bunkum

-buntline

-buoyance

-burbank

-burbly

-burdock

-bureaucratically

-bureaux

-buret

-burette

-burettes

-burgage

-burgee

-burglarious

-burglariously

-burgonet

-burgoo

-burgoos

-burin

-burking

-burladero

-burle

-burlily

-burlingame

-burnable

-burne

-burnes

-burnoose

-burnous

-burnout

-burrier

-burrstone

-burry

-bursae

-bursal

-bursar

-bursary

-burse

-burseed

-bursty

-burthen

-burweed

-busbies

-busby

-bushbuck

-bushbucks

-bushelage

-bushelman

-bushfire

-bushily

-bushland

-bushland's

-bushman

-businesswoman

-businesswoman's

-businesswomen

-busk

-busker

-buskin

-busload

-busload's

-busloads

-busty

-busybody

-busywork

-butadiene

-butanol

-buteo

-butterfingered

-butterfingers

-butterfish

-butterflyer

-butterless

-butterscotch

-butterweed

-butterwort

-butties

-buttinski

-buttinsky

-buttonball

-buttonbush

-buttonhook

-buttonless

-buttonwood

-buttony

-buttstock

-butty

-butut

-butylate

-butylation

-butylene

-butyraceous

-butyral

-butyraldehyde

-butyric

-bwana

-byelaw

-byelaws

-byinge

-bylot

-byname

-bypast

-byplay

-byre

-bystreet

-cabala

-cabalism

-cabalist

-cabalistic

-caballed

-caballero

-caballing

-cabbala

-cabbie

-cabbies

-cabby

-cabinetmaking

-cabinetwork

-cablegram

-cablegram's

-cablegrams

-cablet

-cableway

-cabman

-caboodle

-caboose

-cabotage

-cabriole

-cabriolet

-cabstand

-cachalot

-cachectic

-cachepot

-cachet

-cachou

-cacodemon

-cacodemonic

-cacogenesis

-cacogenic

-cacogenics

-cacographical

-cacography

-cacophonous

-cacophonously

-cacuminal

-cadastral

-cadastrally

-cadastre

-cadaveric

-cadaverine

-caddie

-caddis

-caddish

-caddishly

-caddishness

-cade

-cadency

-cadential

-cadetship

-caducean

-caduceus

-caducity

-caducous

-caffeinic

-caftan

-cageling

-cagier

-cagily

-caginess

-cagy

-cahier

-caiman

-caisson

-caitiff

-cajolement

-cajolery

-cakewalk

-cakewalker

-calabash

-calaboose

-calamine

-calamint

-calamite

-calamus

-calash

-calcaneal

-calcaneum

-calcaneus

-calcic

-calcific

-calcifuge

-calcifugous

-calcimine

-calcination

-calcine

-calcined

-calcining

-calcinosis

-calcitic

-calcomp

-calculably

-calculatingly

-calculous

-caldera

-caldron

-caleche

-calender

-calenderer

-calendric

-calendrical

-calends

-calendula

-calenture

-calflike

-calif

-caliginous

-caliphal

-calk

-calker

-calla

-callant

-callback

-callboy

-calligraphic

-calligraphically

-calligraphist

-callose

-callosity

-callus

-calluses

-calmative

-calomel

-calorically

-calorific

-calorimetrically

-calory

-calotte

-calque

-caltech

-calthrop

-caltrop

-caltrops

-calumniator

-calumnious

-calumniously

-calypsonian

-calyx

-camarilla

-cambial

-cambium

-cambric

-camelback

-cameleer

-camelia

-camellia

-camelopard

-cameralism

-cameralist

-camise

-camisole

-caml

-camlet

-camomile

-camorra

-camorrista

-camouflageable

-camouflagic

-campanile

-campanologist

-campanology

-campanula

-campanulate

-campcraft

-campership

-camphene

-camphine

-camphor

-camphoraceous

-camphorate

-camphorated

-camphoric

-campily

-campiness

-campion

-campobello

-camporee

-campos

-campstool

-campy

-camshaft

-camshafts

-canalboat

-canaliculate

-canard

-canasta

-cancan

-cancroid

-candela

-candelabra

-candelabrum

-candent

-candescence

-candescent

-candida

-candidature

-candleholder

-candlepin

-candlepins

-candlepower

-candlepowers

-candlesnuffer

-candlewick

-canebrake

-canescent

-caneware

-canful

-canicular

-cankerous

-cankerworm

-canna

-cannel

-cannibalic

-cannily

-cannonade

-cannoneer

-cannonry

-canoeing

-canoeist

-canoeist's

-canoeists

-canoness

-canonicity

-canorous

-canorously

-canorousness

-canst

-cantabile

-cantata

-cantatas

-canterelle

-canthi

-canthus

-cantillate

-cantillation

-cantina

-cantle

-cantles

-cantonal

-cantonment

-cantus

-canty

-canute

-canvaslike

-capelet

-capella

-capeskin

-capet

-capework

-capful

-capias

-capillarity

-capitalistically

-capitan

-capitate

-capitates

-capitation

-capitular

-capitulary

-capitulum

-capo

-capon

-caporal

-capper

-cappers

-cappy

-capriccio

-caprification

-caprine

-capriole

-capsular

-capsulate

-capsulated

-capt

-captainship

-captan

-captionless

-captivator

-capuchin

-capybara

-carabao

-carabid

-carabineer

-carabiner

-carabinero

-carabinier

-carabiniere

-caracole

-carafe

-carapace

-carapace's

-carapaces

-carat

-caravanner

-caravansary

-caravel

-carbarn

-carbaryl

-carbazole

-carbolated

-carboline

-carboniferous

-carbonium

-carbonless

-carbonous

-carbonylic

-carboxy

-carboxyl

-carboxylate

-carboxylation

-carboxylic

-carbuncular

-carburet

-carburetion

-carburetor

-carburetors

-carcase

-carcinogenesis

-carcinogenicity

-carcinoid

-cardamom

-cardialgia

-cardigan

-cardigan's

-cardigans

-cardinalship

-cardiogram

-cardiogram's

-cardiograms

-cardiograph

-cardiographer

-cardiographic

-cardiographs

-cardiography

-cardioid

-cardioid's

-cardioids

-cardiological

-cardiologist

-cardiopathy

-cardiopulmonary

-cardiorespiratory

-cardiotonic

-cardiovasculatory

-cardplayer

-cardsharp

-cardsharper

-careerist

-careerists

-carefuller

-carefullest

-carfare

-carful

-carhop

-caribe

-caricatural

-carioca

-cariole

-carious

-carle

-carling

-carlsbad

-carmaker

-carnallite

-carne

-carnelian

-carney

-carnivore

-caroche

-carom

-carotene

-carousal

-carousel

-carousel's

-carousels

-carpal

-carpellary

-carpetbag

-carpetbag's

-carpetbagged

-carpetbagger

-carpetbagger's

-carpetbaggers

-carpetbaggery

-carpetbagging

-carpetbags

-carpi

-carpospore

-carposporic

-carpus

-carrefour

-carriageway

-carriageways

-carriole

-carronade

-carroty

-carrousel

-carryall

-carryon

-carryout

-carsick

-cartage

-cartel

-cartilaginous

-cartload

-cartloads

-cartogram

-cartogram's

-cartograms

-cartographical

-cartomancy

-cartop

-carty

-caruncular

-carunculate

-carunculated

-casa

-casaba

-casaba's

-casabas

-cascara

-caseate

-caseation

-casebearer

-casemate

-caseous

-casern

-caserne

-cashable

-cashbook

-cashless

-casque

-cassaba

-cassava

-cassino

-cassite

-castaway

-casteism

-castigator

-castigators

-castoff

-castoffs

-castrate

-castrated

-castrater

-castraters

-castrates

-castrating

-castration

-castrato

-castrator

-castrators

-castratory

-casuistic

-casuistical

-casuistry

-catabolic

-catabolically

-catabolism

-catabolite

-catachresis

-catachresti

-catachrestic

-catachrestical

-cataclysm

-cataclysmal

-catacomb

-catacombic

-catadromous

-catafalque

-catalatic

-catalectic

-catalepsy

-cataleptic

-cataleptically

-catalpa

-catamaran

-catamount

-cataplasm

-cataplastic

-cataplexy

-cataractal

-catarrh

-catarrhal

-catarrhally

-catastasis

-catatonic

-catawba

-catboat

-catcall

-catchall

-catchee

-catchment

-catchpenny

-catchpole

-catchpoll

-catchup

-cate

-catechesis

-catechetical

-catechin

-catechismal

-catechist

-catechistic

-catena

-catenary

-catenulate

-cateran

-catercorner

-cateress

-caterwaul

-cates

-catface

-catfacing

-catgut

-catharses

-cathartic

-cathead

-cathect

-cathectic

-cathedra

-cathexes

-cathexis

-cathodically

-catholically

-catholicate

-catholicity

-cathouse

-cation

-cationic

-cationically

-cations

-catkin

-catnap

-catnaps

-catoptric

-catoptrically

-catoptrics

-catted

-cattily

-catting

-caudal

-caudally

-caudate

-caudated

-caudation

-caudillo

-caudle

-caul

-cauldron

-cauldrons

-caulescent

-caulicle

-caulicles

-cauline

-causeless

-causerie

-causey

-causeys

-caustically

-causticity

-cautery

-cavalierism

-cavalryman

-cavernicolous

-caviare

-cavies

-cavitary

-cavitate

-cavitation

-cay

-cayman

-cc

-ceasefire

-ceasefire's

-cedarn

-cedarwood

-ceil

-ceilometer

-ceilometer's

-ceilometers

-ceinture

-celandine

-celebrator

-celebrators

-celeriac

-celiac

-celibacy

-cellarage

-cellarages

-cellaret

-cellarets

-cellarette

-cellarettes

-cellularity

-cellule

-celluloid

-celluloid's

-cellulosic

-cementation

-cementite

-cementitious

-cenobite

-cenobitic

-cenobitical

-cenogenetic

-cenogenetically

-cenospecies

-cenotaph

-cense

-censer

-censing

-censorious

-censoriously

-censoriousness

-censurable

-cental

-centare

-centaurea

-centaury

-centavo

-centenarian

-centesimal

-centesimo

-centiare

-centillion

-centime

-centimo

-centner

-cento

-centones

-centra

-centrale

-centralism

-centralist

-centralistic

-centralists

-centric

-centrically

-centricity

-centriole

-centrism

-centroidal

-centromere

-centromeric

-centrosome

-centrosomic

-centrosphere

-centrosymmetric

-centrum

-centum

-centurion

-cephalad

-cephalic

-cephalically

-cephalometric

-cephalometry

-cepstrum

-ceraceous

-ceramicist

-ceramist

-ceramium

-cere

-cerebellar

-cerebroside

-cerebrosides

-cerebrovascular

-cerebrum

-cerement

-ceremonialism

-ceremonialist

-ceremonialists

-ceres

-cereus

-cering

-cernuous

-certes

-certifiably

-certificatory

-cerumen

-ceruminous

-ceruse

-cervices

-cervine

-cervix

-cervixes

-cesarean

-cesarian

-cesspit

-cesspool

-cesta

-cesti

-cetacean

-cetacean's

-cetaceans

-cf

-chaffey

-chaffy

-chainomatic

-chalcedonic

-chalcedony

-chalcid

-chalcocite

-chaldron

-chalet

-chalkboard

-chalone

-chambray

-chambrays

-chameleon

-chameleonic

-chameleons

-chamfron

-chamfrons

-chammy

-chamoix

-chamomile

-champak

-champertous

-champerty

-champlainian

-chanceful

-chancel

-chancellery

-chancellorship

-chancellorships

-chancellory

-chancels

-chancre

-chancres

-chancroid

-chancroidal

-chancrous

-chandelle

-chandler

-chandlery

-changeful

-changefully

-changefulness

-changeless

-changelessly

-changelessness

-changeling

-channing

-chanson

-chanteuse

-chanteuses

-chantier

-chanties

-chanty

-chaotically

-chapati

-chapbook

-chape

-chapeau

-chapeaus

-chapeaux

-chapelles

-chaperonage

-chapfallen

-chapiter

-chaplaincies

-chaplaincy

-chaplet

-chapleted

-chaplets

-chaplinesque

-charabanc

-characin

-characterful

-characterless

-characterological

-characterologically

-charactery

-charade

-charades

-charcuterie

-chard

-chare

-charier

-charily

-chariness

-charioteer

-charioteers

-charism

-charismata

-charisms

-charlatan

-charlatanism

-charlatanry

-charmless

-charnel

-charnock

-charring

-chartularies

-chartulary

-charwoman

-chary

-chassepot

-chasseur

-chasten

-chastened

-chastener

-chastening

-chateaubriand

-chatelain

-chatelaine

-chatelaines

-chatelains

-chatoyance

-chatoyancy

-chatoyant

-chattahoochee

-chatterbox

-chatterboxes

-chattily

-chauffers

-chaussure

-chaussures

-chauvinistically

-cheapie

-cheapish

-cheapishly

-cheapskate

-cheapskates

-checkerberry

-checkless

-checkmark

-checkmarks

-checkmate

-checkmated

-checkmates

-checkmating

-checkoff

-checkrein

-checkroom

-checkrooms

-checkrow

-cheddar

-cheekful

-cheekily

-cheep

-cheeps

-cheerio

-cheeseburger

-cheeseburgers

-cheesecake

-cheesecake's

-cheesecakes

-cheesecloths

-cheesemaker

-cheesemakers

-cheesemaking

-cheeseparer

-cheeseparing

-cheeseparings

-cheetahs

-chefdom

-chekhov

-chelatable

-chelonian

-chemiluminescence

-chemiluminescent

-chemische

-chemism

-chemisorb

-chemisorption

-chemoautotrophic

-chemoautotrophically

-chemoautotrophy

-chemoprophylaxis

-chemoreception

-chemoreceptive

-chemoreceptivity

-chemoreceptor

-chemoreceptors

-cheng

-chenille

-cherishable

-cheroot

-cherrylike

-cherrystone

-chert

-cherubic

-cherubically

-cherublike

-chervil

-chervils

-chessboard

-chessboards

-chessman

-chessmen

-chestful

-chestier

-chesty

-cheveron

-cheviot

-chevrotain

-chewable

-chewy

-chi

-chiaroscurist

-chiaroscuro

-chiasma

-chiasmatic

-chiasmus

-chiaus

-chicalote

-chicaning

-chichi

-chickasaws

-chickenhearted

-chickpea

-chickpea's

-chickpeas

-chickweed

-chickweeds

-chicle

-chicos

-chidden

-chieftaincies

-chieftaincy

-chieftainship

-chiffonier

-chignon

-childbed

-childbirths

-chilies

-chillily

-chimaera

-chimere

-chimerical

-chimerically

-chimerism

-chimneypiece

-chimp

-chimps

-chinaware

-chinbone

-chinch

-chine

-chines

-chinoiserie

-chinos

-chinquapin

-chintzier

-chintzy

-chirographer

-chirographic

-chirographical

-chirography

-chiromancer

-chiromancy

-chiropodist

-chiropodists

-chiropody

-chiropractic

-chiropter

-chiropteran

-chirpily

-chirpy

-chirrup

-chirruped

-chirruping

-chirrups

-chit

-chitchat

-chitin

-chitinous

-chitlings

-chiton

-chits

-chitter

-chittered

-chittering

-chitterlings

-chitters

-chivalric

-chivied

-chivvied

-chivvy

-chivvying

-chivy

-chloral

-chlordane

-chloric

-chlorinity

-chlorite

-chloritic

-chlorobenzene

-chlorohydrin

-chlorophyllose

-chlorophyllous

-chloroplatinate

-chockablock

-chocolaty

-choirboy

-choky

-choler

-choleraic

-choleric

-choline

-cholinergic

-chondrite

-choosey

-chopfallen

-chophouse

-choppily

-chopstick

-chopsticks

-choreman

-choreographically

-choric

-chorically

-chorine

-chorister

-chorizo

-chorographic

-chorography

-choryza

-chowderhead

-chowderheaded

-chowhound

-chowtime

-chrestomathy

-christsake

-chromatically

-chromaticism

-chromaticity

-chromatid

-chromatin

-chromatographically

-chromatolytic

-chromide

-chrominance

-chromo

-chromosomal

-chromosome

-chromosome's

-chromosomes

-chromosomic

-chromospheric

-chronical

-chronicity

-chronogram

-chronogram's

-chronogrammatic

-chronogrammatical

-chronograms

-chronographic

-chronographs

-chronologer

-chronologers

-chronologic

-chronologist

-chronologists

-chronometer

-chronometer's

-chronometers

-chronometric

-chronometrical

-chronometrically

-chronometry

-chronoscope

-chronoscopes

-chrysolite

-chubbily

-chuckhole

-chucklehead

-chuckleheaded

-chuckleheads

-chucklesome

-chuckwalla

-chuff

-chuffed

-chuffier

-chuffing

-chuffy

-chugalug

-chugger

-chummily

-chumship

-chunkily

-churchgoer

-churchianity

-churchless

-churchmanship

-churchy

-churlish

-churlishly

-churlishness

-chutist

-chutists

-chutzpa

-chutzpah

-cigarillo

-cigarillos

-ciliary

-cincture

-cindery

-cinemagoer

-cinemagoers

-cinematically

-cinematograph

-cinematographer

-cinematographic

-cinematographical

-cinematographically

-cinematography

-cinquefoil

-ciphertext

-ciphony

-circadian

-circinate

-circinately

-circuital

-circuity

-circulatable

-circulator

-circulators

-circumambient

-circumambiently

-circumambulate

-circumambulates

-circumcircle

-circumfluent

-circumfluous

-circumfuse

-circumfused

-circumfuses

-circumfusing

-circumfusion

-circumfusions

-circumjacent

-circumlocutory

-circumlunar

-circumnavigate

-circumnavigated

-circumnavigates

-circumnavigating

-circumnavigation

-circumnavigations

-circumnavigator

-circumnavigators

-circumscissile

-circumscription

-circumstantiality

-circumstantiate

-circumstantiated

-circumstantiates

-circumstantiating

-circumvallate

-circumvallated

-circumvallates

-circumvallating

-circumvallation

-circumvallations

-circumvolution

-circumvolutions

-circusy

-cirque

-cirques

-cirrhoses

-cirrhosis

-cirrhotic

-cirrous

-cirrus

-cislunar

-cist

-cit

-citable

-citational

-citified

-citify

-citizeness

-citral

-citronella

-civically

-civie

-civies

-civilists

-civvy

-clabber

-clack

-clacker

-clackers

-clacks

-cladophora

-clamant

-clamantly

-clambake

-clambakes

-clammily

-clamorist

-clamorist's

-clamorists

-clampdown

-clangorous

-clangorously

-clansman

-clansmen

-clapper

-clappers

-claptrap

-claque

-claques

-clarinetist

-clarinettist

-clarridge

-classicalism

-classicalist

-classicality

-classicism

-classicistic

-classificatorily

-clausal

-claustral

-clavichord

-clavichordist

-clavicular

-clavier

-clavierist

-clavieristic

-claybank

-clayey

-clayish

-clayware

-cleanable

-cleanhanded

-clearable

-clef

-clef's

-clefs

-clemens

-clemente

-clepe

-cleped

-clepes

-cleping

-clericalism

-clericalist

-clerkship

-cleverish

-clevis

-clientage

-cliental

-cliffhanger

-cliffy

-climacteric

-climactically

-climatologist

-climatologists

-climbable

-cline

-clines

-clingy

-clinometric

-clinometry

-clipsheet

-cliquey

-cliquish

-cliquishly

-cliquishness

-clitoral

-clitoric

-clitoris

-cloaca

-cloacal

-cloche

-clocklike

-cloddy

-clodhopping

-cloistral

-cloistress

-clonal

-clonally

-clonic

-clonicity

-clonk

-clonked

-clonking

-clonks

-clop

-clopped

-clopping

-clops

-closable

-closeable

-closefisted

-closemouthed

-closeout

-closetful

-clotheshorse

-clothespin

-clothespress

-cloths

-cloudily

-cloudland

-cloudlet

-cloudlets

-cloven

-cloverleaf

-cloverleaves

-clownery

-clownish

-clownishly

-clownishness

-clubable

-clubbable

-clubber

-clubbier

-clubbiness

-clubby

-clubfoot

-clubfooted

-clueing

-clumpy

-clunk

-clunked

-clunker

-clunking

-clunks

-clustery

-clutchy

-coact

-coaction

-coactive

-coadapted

-coadjutrices

-coadjutrix

-coadunate

-coadunated

-coadunates

-coadunating

-coadunation

-coagulability

-coagulant

-coagulants

-coagulase

-coalification

-coalify

-coalitionist

-coapt

-coaptation

-coaptation's

-coapted

-coapting

-coapts

-coarctate

-coarctation

-coarticulation

-coarticulatory

-coastguard

-coastguardman

-coastguardsman

-coastland

-coastward

-coastwards

-coastwise

-coatrack

-coatroom

-cob

-cob's

-cobaltic

-cobby

-cobelligerent

-cobia

-cobs

-cobwebbed

-cobwebby

-coca

-cocainism

-cocci

-coccidiosis

-cochairman

-cochairmen

-cochise

-cockade

-cockaded

-cockamamie

-cockatrice

-cockerel

-cockfight

-cockfight's

-cockfighting

-cockfights

-cockhorse

-cockily

-cockney

-cockneyish

-cockneyism

-cockneys

-cockshy

-coco

-coconscious

-coconsciousness

-coconspirator

-coconspirators

-cocos

-cocurricular

-codable

-codeclination

-codefendant

-codeine

-codeless

-codeposit

-codetermination

-codex

-codger

-codices

-codicillary

-codifiability

-codling

-codomain

-codominant

-codon

-codpiece

-codpieces

-coeducational

-coeducationally

-coenzyme

-coequality

-coercivity

-coeternal

-coeternally

-coeternity

-coeval

-coevality

-coevolution

-cofeature

-coffeehouse

-coffle

-coffles

-cofunction

-cogency

-cogged

-cogging

-cogitable

-cogito

-cognitional

-cognitivity

-cognomen

-cognoscenti

-cogwheel

-cogwheels

-cohabitant

-cohabitants

-coheir

-coheiress

-cohesionless

-coho

-cohomology

-cohosh

-coidentity

-coif

-coiffeur

-coiffeuse

-coiffing

-coign

-coilability

-coinsurance

-coinsure

-coinsurer

-coition

-coitional

-col

-colasanto

-coldblood

-coldhearted

-coldheartedly

-coldheartedness

-coldish

-coleslaw

-coli

-colic

-colitis

-coll

-collaborationism

-collaborationist

-collaborationists

-collage

-collages

-collagist

-collagists

-collarless

-collaterality

-colleagueship

-colleaguesmanship

-collectable

-collectivism

-collectivist

-collectivistic

-collectivistically

-collectivists

-collectivity

-collectorate

-collectorates

-collectorship

-collegial

-collegiality

-collegially

-collegium

-collet

-collieries

-colliery

-colligate

-colligation

-colligative

-collimator

-collisional

-collisionally

-collocate

-collocates

-collocational

-collodion

-collogue

-collogued

-colloguing

-colloq

-colloquiality

-colloquist

-colloquoy

-colloquy

-collusive

-collusively

-colluvial

-colly

-colog

-cologarithm

-colonelcy

-colonialistic

-colonic

-colophon

-colophony

-colossi

-colossus

-colossuses

-colostomy

-colostral

-colostrum

-coltsfoot

-columbine

-columniation

-columnistic

-colza

-com

-comae

-comaker

-combinability

-combinate

-combinative

-combinatory

-comblike

-combust

-combuster

-combustibility

-combustibly

-combusting

-combustive

-combustor

-combustors

-comedie

-comedienne

-comediennes

-comedown

-cometic

-comfier

-comfit

-comfits

-comfortless

-comfy

-comicality

-comique

-comity

-commandable

-commandership

-commandery

-commemorator

-commemorators

-commendably

-commensal

-commensalism

-commensally

-commensurability

-commensurably

-commentate

-commentates

-commercialist

-commercialistic

-commie

-commination

-comminatory

-comminute

-comminuted

-comminution

-commissar

-commissariat

-commissionaire

-commissionership

-commissural

-commissure

-commix

-commixture

-commode

-commodes

-commonage

-commonalty

-commonsense

-commonsensible

-commonsensibly

-commonsensical

-commonweal

-commove

-commoved

-commoves

-commoving

-communalism

-communalist

-communalists

-communalities

-communality

-communard

-communards

-communese

-communicability

-communicableness

-communicably

-communicatee

-communicatory

-communistically

-communitarian

-communitarianism

-commutator

-commutators

-comoving

-compactible

-compactify

-companionably

-companionate

-companionway

-companionways

-comparatist

-comparativist

-compart

-compartmental

-compartmentation

-compartmentations

-compassable

-compassionless

-compatability

-compatriotic

-compeer

-compellation

-compeller

-compend

-compendious

-compendiously

-compendiousness

-compensability

-compensational

-compensator

-compensators

-compere

-compered

-compering

-competitory

-complacence

-compleat

-complected

-complemental

-complementarily

-comples

-complexation

-complexional

-complexometric

-complexometry

-compliancy

-complicacy

-complice

-complimentarily

-compline

-complot

-compo

-componential

-componentry

-compos

-compoundable

-comprehendible

-comprehensibly

-compressional

-comprisable

-comprisal

-comprisals

-comptrollership

-compulsorily

-compunctious

-compurgation

-compurgations

-compurgator

-computerite

-computerlike

-computernik

-comradery

-comsat

-comsummatively

-concavity

-concealable

-conceivability

-conceivableness

-concentrically

-concentricity

-conceptacle

-conceptional

-conceptualism

-conceptualist

-conceptualistic

-conceptualistically

-conceptus

-concernment

-concertante

-concertgoer

-concerti

-concertmeister

-concessional

-concessionary

-concessive

-concessively

-conciliar

-conciliarly

-concinnity

-concoction

-concomitance

-concordat

-concorde

-concrescence

-concrescences

-concrescent

-concretionary

-concretism

-concretist

-concretistic

-concubinage

-concupiscence

-concupiscent

-concupiscible

-concuss

-concussed

-concusses

-concussing

-concussive

-concussively

-condemnable

-condemnor

-condensable

-condensational

-condescendence

-condign

-condignly

-condimental

-conditionable

-conditionality

-condolatory

-condole

-condoled

-condoling

-condom

-condominial

-condonable

-condonation

-condor

-conductibility

-conductible

-conductimetric

-conductometric

-conductorial

-conductress

-conduplicate

-conduplication

-confab

-confabbed

-confabbing

-confabulator

-confabulatory

-confection

-confectionary

-confectioner

-confectioners

-confections

-confederal

-confederalist

-confederalists

-conferential

-conferment

-conferments

-conferral

-conferrals

-confessable

-confessionalism

-confessionalist

-confetti

-confidante

-confidantes

-configural

-configurate

-configurated

-configurates

-configurating

-configurational

-configurationally

-configurative

-confirmability

-confirmable

-confirmational

-confiscable

-confiscatable

-confiscator

-confiscators

-conflagrant

-conflagrate

-conflagrated

-conflagrates

-conflagrator

-conflagrators

-conflagratory

-conflate

-conflated

-conflates

-conflating

-conflation

-conflations

-conflatrate

-conflatrating

-conflictful

-confliction

-conflictions

-conflictless

-conflictual

-confluence

-confluences

-conflux

-confluxes

-confocal

-conformable

-conformably

-conformism

-confraternities

-confraternity

-confrere

-confreres

-confrontal

-confrontationism

-confrontationist

-confusional

-confutation

-confutations

-confutative

-confutator

-confutators

-cong

-conga

-congealment

-congelation

-congelations

-congener

-conger

-congeries

-conglomeratic

-conglomerator

-conglutinate

-conglutinated

-conglutinates

-conglutinating

-conglutination

-congratulator

-congregant

-congregational

-congregator

-congretants

-congruency

-conicity

-conjugacy

-conjugality

-conjugant

-conjugants

-conjugational

-conjugationally

-conjunctional

-conjunctionally

-conjunctiva

-conjunctival

-conjunctivitis

-conjuration

-conjurations

-conjuror

-connate

-connately

-connatural

-connaturality

-connaturally

-connectable

-connectible

-connectional

-connelly

-conniption

-connivent

-connivery

-connoisseurship

-connotational

-connubialism

-connubiality

-conscienceless

-conscribe

-conscribed

-conscribes

-conscribing

-consecrator

-consecratory

-consecution

-consentaneous

-consentaneously

-conservancy

-conservational

-conservatorial

-consignable

-consignation

-consignee

-consignment

-consignor

-consistorial

-consistory

-consociate

-consociation

-consociational

-consol

-consolatory

-consolette

-consolidator

-consolidators

-consols

-consonancy

-conspecific

-conspectus

-conspectuses

-conspicuity

-conspiration

-conspirational

-conspirations

-constabulary

-constellate

-constellatory

-constipate

-constipated

-constipates

-constipating

-constipation

-constitutionalism

-constitutionalist

-constitutionless

-constringe

-constringed

-constringent

-constringes

-constringing

-construable

-construal

-constructionist

-constructivism

-constructivist

-consubstantial

-consubstantiate

-consubstantiation

-consuetude

-consuetudinary

-consulship

-consultancies

-consultancy

-consultantship

-consultor

-consumerism

-consumerist

-consumership

-consummator

-consummatory

-contagium

-containerboard

-contaminator

-contemplator

-contemporaneity

-contemporarily

-contemptibly

-contendere

-conterminous

-conterminously

-contestation

-contexture

-contingence

-continua

-continuate

-continuated

-continuates

-continuating

-continuative

-continuatively

-continuator

-continuo

-contortionist

-contortionistic

-contortionists

-contrabandist

-contrabassist

-contrabassoon

-contractibility

-contractible

-contractile

-contractility

-contractional

-contracture

-contradictable

-contradictious

-contradictor

-contradistinct

-contradistinctive

-contradistinctively

-contradistinguish

-contrail

-contralateral

-contralto

-contraoctave

-contraposition

-contrapuntal

-contrapuntally

-contrapuntist

-contrarieties

-contrariety

-contrarious

-contrariwise

-contrastable

-contrasty

-contravariant

-contretemps

-controllership

-controllerships

-controlment

-controlments

-controversialism

-controversialist

-controvert

-controverted

-controverter

-controverting

-controverts

-contumacious

-contumaciously

-contumelious

-contumeliously

-contuse

-contused

-contuses

-contusing

-conurbation

-conurbations

-convect

-convected

-convecting

-convectional

-convective

-convector

-convectors

-convects

-conveniency

-conventicle

-conventicler

-conventionalism

-conventionalist

-conventioneer

-conventual

-conventually

-convergency

-conversable

-conversance

-conversancy

-conversional

-convertibly

-convertiplane

-convertor

-conviviality

-convocate

-convocational

-convolutional

-convulsant

-convulsionary

-cony

-cooch

-cookout

-cookouts

-cookshack

-cookshop

-cookware

-coolish

-coomb

-coombs

-coonskin

-cooperage

-cooperationist

-coot

-cootie

-copacetic

-coparcenary

-coparcener

-copartner

-copartnership

-copeck

-copemate

-copesetic

-copesmate

-copestone

-copilot

-coplanarity

-copliots

-copperas

-copperplate

-coppice

-copping

-copra

-coprinus

-coprocessor

-coprocessor's

-coprocessors

-coproduct

-coproduct's

-coproducts

-coprolite

-coprolitic

-copula

-copulas

-copulate

-copulated

-copulates

-copulating

-copulation

-copulative

-copulatively

-copulatory

-copyboy

-copycat

-copycats

-copycatted

-copycatting

-copydesk

-copyhold

-copyholder

-copyreader

-coquet

-coquetry

-coquettish

-coquettishly

-coquettishness

-coquina

-coralberry

-coralline

-corbel

-cordate

-cordately

-cordiality

-cordiform

-cordless

-cordwain

-cordwainer

-cordwainery

-cordwood

-corecipient

-corelate

-corelation

-coreligionist

-corequisite

-corespondent

-corkboard

-corkboards

-corkier

-corky

-cornball

-corncob

-corncrib

-corneal

-corneous

-cornerman

-cornerways

-cornerwise

-cornetist

-cornettist

-cornhusking

-cornice

-corniced

-cornices

-corniche

-cornicing

-cornification

-cornily

-cornstalk

-cornucopian

-cornwallis

-corolla

-corollate

-coronagraph

-coronograph

-corpocracies

-corpocracy

-corpora

-corporality

-corporatism

-corporatist

-corporativism

-corporator

-corporeity

-corporis

-corposant

-corpulencies

-corpulency

-corpuscle

-corpuscle's

-corpuscles

-corpusculated

-corpuscule

-corpuscules

-corrade

-corraded

-corrading

-corrasion

-corrasions

-corrasive

-correctional

-correctitude

-correlatable

-correlational

-correspondency

-corresponsive

-corrigenda

-corrigibility

-corrigibly

-corroborant

-corroborator

-corroborators

-corroboratory

-corroboree

-corruptibility

-corruptibly

-corruptionist

-corsair

-corse

-corsica

-corsican

-cortege

-corteges

-corticate

-corticated

-cortices

-corticoid

-corvallis

-cos

-cosec

-coset

-cosh

-cosher

-cosigner

-cosmetician

-cosmeticians

-cosmetologist

-cosmetologists

-cosmetology

-cosmo

-cosmochemical

-cosmochemistry

-cosmogenic

-cosmogonic

-cosmogonical

-cosmogonist

-cosmogony

-cosmographer

-cosmographic

-cosmographical

-cosmographically

-cosmography

-cosmologic

-cosmonaut

-cosmopolite

-cosmopolitism

-cosponsorship

-cosset

-cosseted

-cosseting

-cossets

-costa

-costal

-costless

-costlessly

-costmary

-costumery

-costumey

-costumier

-cote

-coterie

-coteries

-cotillon

-cotman

-cotoneaster

-cotta

-cottagey

-cottontail

-cottontail's

-cottontails

-cotty

-couldst

-councilmanic

-countability

-countdown

-countdown's

-countdowns

-counteraction

-counterblow

-counterchallenge

-counterchange

-countercheck

-countercurrent

-countercurrently

-counterespionage

-counterfoil

-counterintelligence

-counterirritant

-countermarch

-countermove

-countermovement

-counteroffensive

-counteroffer

-counterpane

-counterplan

-counterplea

-counterplot

-counterpose

-counterposed

-counterposes

-counterposing

-counterpunch

-counterpuncher

-counterreformation

-counterrevolutionaries

-counterrevolutionary

-counterrevolutionary's

-counterrevolutionist

-countershaft

-countershafts

-countersign

-countersignature

-counterspy

-counterstatement

-countertenor

-countertenors

-counterterrorism

-counterterrorist

-counterthreat

-counterthreat's

-counterthreats

-countertrend

-counterview

-countryfied

-countryish

-countryseat

-countrywoman

-countywide

-coupal

-couplement

-courtmartial

-couscous

-cousinage

-cousinhood

-cousinship

-couth

-couture

-couturier

-couturiere

-covalence

-covalency

-covenantal

-covenantee

-covenantor

-covent

-coventry

-coverless

-coverture

-covertures

-covetable

-covey

-coveys

-cowage

-cowbane

-cowcatcher

-cowman

-cowmen

-cowpea

-cowry

-cox

-coypu

-cozily

-cpr

-crabber

-crabbier

-crabby

-crabwise

-crackajack

-crackdown

-crackerjack

-craftily

-craftsmanlike

-craftsperson

-craftswoman

-craftswomen

-cragged

-craggily

-cragsman

-crammer

-crampon

-crampon's

-crampons

-craneman

-cranemen

-cranial

-cranially

-craniate

-crape

-crapper

-crapping

-crappy

-crapshooter

-crapulous

-crashworthiness

-crashworthy

-crassitude

-craterlet

-crayonist

-creakily

-creamily

-creaseless

-creatural

-creaturehood

-creche

-creches

-creditability

-cree

-creepage

-creese

-creighton

-crematorium

-crenate

-crenated

-crenately

-crenation

-crenelle

-crenulate

-crenulated

-crenulation

-creosol

-creosote

-crepey

-crepitant

-crepitate

-crepitation

-crepuscle

-crepuscular

-crepuscule

-crepy

-crescentic

-crescive

-crescively

-cresol

-cresset

-crestal

-crestless

-cretinism

-cretonne

-crevasse

-crewelwork

-crewless

-crewmember

-crewmembers

-cribbage

-cribbage's

-cribber

-cribriform

-crick

-criminate

-criminating

-crimination

-criminological

-criminologically

-criminologist

-criminology

-criminous

-crimpier

-crimpy

-crinoid

-crinoline

-crispier

-crispiness

-crispy

-criticaster

-croaky

-croatian

-crocket

-crocketed

-crocodilian

-croissant

-croissants

-cronyism

-crookback

-crookbacked

-cropland

-cropland's

-croplands

-croquet

-croquette

-crore

-crossability

-crossbearer

-crossbill

-crossbones

-crossbow

-crossbowman

-crossbred

-crossbreed

-crosscurrent

-crosscurrents

-crosscut

-crosslet

-crosslink

-crosslink's

-crosslinks

-crosspatch

-crosspiece

-crosstown

-crosstree

-crosswind

-crotchet

-crotcheted

-crotcheting

-crotchets

-croton

-croup

-croupous

-croupy

-crouse

-crouton

-crowberry

-crowfeet

-crowkeeper

-crownet

-cruciate

-cruciately

-crucifer

-cruciferous

-cruciform

-cruciformly

-crudded

-crudding

-crueller

-cruellest

-cruet

-cruller

-crumbier

-crumby

-crumpet

-crupper

-crustacea

-crustaceous

-crustal

-crustier

-crustification

-crustily

-crustiness

-crustose

-crusty

-crybaby

-crymotherapy

-cryobiological

-cryobiologically

-cryobiologist

-cryobiologists

-cryobiology

-cryogen

-cryogenically

-cryogeny

-cryolite

-cryonic

-cryonics

-cryophilic

-cryoscope

-cryoscopic

-cryoscopy

-cryosurgery

-cryotherapy

-cryotron

-cryptal

-cryptical

-cryptically

-crypto

-cryptogenic

-cryptogrammic

-cryptograph

-cryptographically

-cryptos

-cryst

-cubage

-cubature

-cubbies

-cubby

-cubical

-cubically

-cubicle

-cubiform

-cubistic

-cubit

-cuboid

-cuboidal

-cuckold

-cuckoldry

-cucullate

-cucullated

-cucullates

-cucurbit

-cuddleback

-cuddlesome

-cuddy

-cueing

-cuffless

-cuke

-culation

-cullender

-culminant

-culotte

-culottes

-culpably

-cultch

-cultic

-cultigen

-cultism

-cultivability

-cultivar

-cultivars

-cultivatable

-cumbrous

-cumbrously

-cumbrousness

-cumulous

-cunctation

-cunctative

-cuneate

-cuneately

-cuneiform

-cunner

-cunnilinctus

-cunnilingus

-cunt

-cupbearer

-cupcake

-cuplike

-cupola

-cuppier

-cuppy

-cupreous

-cupriferous

-cuprite

-cupsful

-cupular

-cupulate

-cupule

-curability

-curatorial

-curatorship

-curbstone

-cureless

-curet

-curettage

-curette

-curetted

-curettement

-curetting

-curite

-curium

-curlew

-curmudgeon

-curmudgeonly

-curricle

-currie

-curriery

-currish

-currishly

-cursorial

-curst

-curtailment

-curtal

-curtesy

-curtilage

-curule

-curvacious

-curveball

-curvilineal

-curvy

-cushily

-cushionless

-cushiony

-cuspate

-cuspated

-cuspid

-cuspidate

-cuspidated

-cuspidation

-cuspidor

-cussword

-cusswords

-custodianship

-custodianships

-customshouse

-cutability

-cutaround

-cutaway

-cutch

-cutesy

-cutey

-cuteys

-cuticle

-cuticles

-cuticular

-cutie

-cutler

-cutlery

-cutline

-cutover

-cutpurse

-cutset

-cuttable

-cutup

-cutups

-cutwater

-cutwork

-cybernated

-cybernation

-cybernetical

-cybernetically

-cybernetician

-cyberneticist

-cyborg

-cycad

-cyclamate

-cyclitol

-cyclo

-cycloaddition

-cyclometer

-cyclometer's

-cyclometers

-cyclonic

-cyclonically

-cyclorama

-cyclos

-cyclotomic

-cyclotron

-cygnet

-cygnet's

-cygnets

-cymbalist

-cymbalists

-cynosure

-cypher

-cyphers

-cystamine

-cysteine

-cystic

-cytaster

-cytokinin

-cytologic

-cytological

-cytologically

-cytologist

-cytolysin

-cytolytic

-cytopathogenicity

-cytophilic

-cytoplasmic

-cytoplasmically

-cytosine

-cytostatic

-cytostatically

-cytotoxicity

-cytotoxin

-cytotropic

-dabber

-dabbers

-dachshunde

-dactylus

-daedal

-daff

-daft

-dafter

-daftest

-daftly

-daftness

-daggerman

-daguerreotype

-daguerreotype's

-daguerreotypes

-daguerreotypic

-daguerreotypy

-dahlia

-dahlias

-daimon

-daimones

-daimonic

-daimons

-daiquiri

-daiquiris

-dairymaid

-daishiki

-dali

-dalliance

-dalloway

-dallyes

-dalmatian

-dalmatians

-dalmatic

-damnable

-damnableness

-damnably

-damnatory

-damndest

-damnify

-dampish

-damselflies

-damselfly

-danceability

-danceable

-dander

-dandiacal

-dandiacally

-dandification

-dandify

-dandle

-dandled

-dandling

-dandruff

-dandruffy

-dandyish

-dandyishly

-dandyism

-dandys

-danseur

-daphnia

-daredevil

-daredevilry

-daredevils

-daredeviltry

-dareful

-daresay

-darkish

-darkle

-darkroom

-darkrooms

-darksome

-darlington

-darrow

-darry

-datable

-datamedia

-dataswitch

-dataswitches

-datcap

-dateable

-dateless

-datetime

-datura

-daughterless

-dauphin

-dauphine

-davit

-daybook

-daydreamlike

-daylong

-daymare

-dayroom

-dayrooms

-daystar

-db

-de

-deacidification

-deacidify

-deactivator

-deadbeat

-deadeye

-deadfall

-deadlight

-deadpan

-deadpanner

-deaerate

-deaerates

-deaeration

-dealate

-dealated

-dealates

-dealation

-dealership

-deaminate

-deamination

-deanery

-deanship

-deathblow

-deathless

-deathlessly

-deathlessness

-deathsman

-deathwatch

-debark

-debarkation

-debarks

-debarment

-debasement

-debatement

-debator

-debators

-debauchee

-debone

-deboner

-debones

-deboning

-debouch

-debouchment

-debouchure

-debtless

-debutant

-decadency

-decagon

-decagram

-decahedron

-decalcification

-decalcify

-decalcomania

-decalescence

-decalogue

-decalogues

-decametric

-decamp

-decampment

-decamps

-decanol

-decantation

-decapitate

-decapitates

-decapitating

-decapitation

-decapitator

-decapod

-decapod's

-decapods

-decarbonate

-decarbonated

-decarbonates

-decarbonating

-decarbonation

-decarbonator

-decasyllabic

-decasyllable

-deceivable

-deceivableness

-decelerator

-decennium

-deceptional

-decerebrate

-decerebrated

-decerebrates

-decerebrating

-decerebration

-deciare

-decidua

-decidual

-deciduate

-decillion

-decipherable

-decipherment

-decistere

-deckhand

-deckhouse

-deckle

-declarable

-declarant

-declass

-declasse

-declensional

-declensionally

-declinable

-declinate

-declinational

-declivitous

-decoct

-decocted

-decocting

-decoction

-decoctions

-decocts

-decollate

-decollated

-decollates

-decollating

-decollation

-decollations

-decolonise

-decommission

-decompensate

-decompensation

-decompensatory

-deconcentrate

-deconcentrator

-decondition

-decongest

-decongestant

-decongestion

-decongestive

-deconsecrate

-deconsecration

-decontaminate

-decontaminates

-decontaminating

-decontamination

-decontaminations

-deconvolution

-deconvolve

-decorticator

-decorticators

-decoupage

-decoupages

-decremental

-decrepid

-decrepit

-decrepitate

-decrepitation

-decrepitly

-decrepitude

-decrescendo

-decrescent

-decretal

-decretals

-decretive

-decretory

-decrial

-decrials

-decryptograph

-decsystem

-dectape

-decumbent

-decuple

-decurved

-decussate

-decussately

-decussation

-decwriter

-dedicator

-dedicatory

-dedifferentiate

-dedifferentiated

-dedifferentiation

-deedless

-deejay

-defalcate

-defalcation

-defalcator

-defamation

-defamatory

-defat

-defeasance

-defeasibility

-defeasible

-defeature

-defeatured

-defeatures

-defeaturing

-defector

-defector's

-defectors

-defendable

-defensibility

-defensibly

-deferential

-deferentially

-deferral

-defervescence

-defervescences

-defervescent

-defial

-defibrillation

-defibrillator

-defilement

-definably

-definement

-definitude

-deflagrate

-deflagrated

-deflagrates

-deflagrating

-deflagration

-deflationary

-deflator

-deflexed

-defloration

-deflorations

-deflower

-defoamer

-defoamers

-defoe

-defoliant

-defoliate

-defoliated

-defoliates

-defoliating

-defoliation

-defoliator

-deforce

-deforcement

-deforciant

-deforest

-deforester

-deformative

-defraudation

-defrayable

-defrayal

-defrayals

-defrock

-defuse

-defused

-defusing

-defyed

-defys

-degas

-degassing

-degauss

-degaussed

-degausses

-degaussing

-degeneracy

-degranulation

-degressive

-degressively

-dehydrase

-dehydrator

-deism

-deist

-deistic

-deistical

-deistically

-dejeuner

-dejeuners

-delaminate

-delamination

-delate

-delated

-delates

-delating

-delation

-delator

-delectability

-delectably

-delectate

-delegacy

-delft

-delict

-delightsome

-delightsomely

-delimitate

-delimitative

-delineament

-delineaments

-delineator

-deliquesce

-deliquescent

-delist

-deliverability

-dellwood

-delphine

-delphinium

-deltaic

-delusional

-delusionary

-delusory

-demagog

-demagogic

-demagogical

-demagogically

-demagogism

-demagoguery

-demagogy

-demandable

-demandant

-demantoid

-demark

-demarkation

-dementia

-demential

-demi

-demigoddess

-demijohn

-demission

-demitasse

-demiurge

-democratique

-demographiques

-demolishment

-demolitionist

-demoniacal

-demoniacally

-demonian

-demonical

-demonically

-demonology

-demonstrability

-demonstrational

-demonstrationist

-demotic

-demount

-demounted

-demounting

-demounts

-demulcent

-demure

-demurely

-demureness

-demurrage

-demurral

-demystified

-demystifies

-demystify

-demystifying

-denaturant

-denaturation

-denaturational

-denazification

-denazify

-dendriform

-dendrite

-dendrite's

-dendrites

-dendritic

-dendroid

-dendrologic

-dendrological

-dendrologist

-dendrology

-deneen

-denegation

-denervate

-denervated

-denervates

-denervating

-denervation

-denigrator

-denigratory

-denitrification

-denitrify

-denominational

-denominationalism

-denominationalist

-denotement

-denouncement

-densification

-densify

-densimeter

-densimeter's

-densimeters

-densimetric

-dentate

-dentated

-dentately

-dentation

-denticle

-denticulate

-denticulated

-denticulately

-denticulation

-dentiform

-dentifrice

-dentigerous

-dentil

-dentin

-dentinal

-dentine

-dentition

-dentulous

-denudation

-denudational

-denudement

-denumerably

-denunciatory

-denys

-deontological

-deontologist

-deontology

-deoxidation

-deoxycholate

-deoxygenation

-deoxyribose

-depigmentation

-depilate

-depilated

-depilates

-depilating

-depilation

-depilatory

-deplane

-deplaned

-deplanes

-deplaning

-depletable

-depone

-deponed

-deponent

-depones

-deponing

-depopulate

-depopulation

-depopulator

-deportable

-depositional

-depravation

-depravations

-depravement

-deprecatorily

-depreciator

-depreciators

-depreciatory

-depredate

-depredated

-depredates

-depredating

-depredation

-depredator

-depredators

-depredatory

-depressily

-depressor

-depthless

-derailment

-derate

-derating

-deration

-derisory

-derivational

-derma

-dermal

-dermatoid

-dermatologic

-dermatological

-dermatologist

-dermatology

-dermatosis

-derogatorily

-derrickman

-derrickmen

-desalination

-desalting

-descendible

-descension

-descrating

-desecrator

-desertic

-desex

-deshabille

-desiccant

-desiccate

-desiccated

-desiccates

-desiccation

-desiccative

-desiccator

-desiderate

-desideration

-desiderative

-designatory

-designee

-designment

-desistance

-deskman

-desolator

-desorb

-desorbable

-desorbed

-despicable

-despicableness

-despisement

-despiteful

-despitefully

-despitefulness

-despiteous

-despiteously

-despoilment

-despondence

-despondences

-despotically

-destructibility

-destructible

-destructionist

-destructivity

-desultorily

-detab

-detachability

-detachably

-detainee

-detainment

-detectability

-detectaphone

-detent

-determent

-determents

-determinably

-determinantal

-determinator

-determinist

-deterrer

-detestably

-dethrone

-dethronement

-detinue

-detonabilities

-detonability

-detonatable

-detonational

-detoxicant

-detoxicants

-detoxicate

-detoxicated

-detoxicates

-detoxicating

-detoxication

-detoxicator

-detoxification

-detoxified

-detoxifies

-detoxify

-detoxifying

-detraction

-detractions

-detrain

-detrained

-detraining

-detrainment

-detrains

-detritus

-detumescence

-detumescences

-detumescent

-deuterate

-deuterated

-deuterates

-deuterating

-deuteration

-deuterations

-deuteron

-deuteron's

-devaluate

-devaluations

-devastator

-devastators

-developable

-deverbative

-devest

-deviancies

-deviancy

-deviationism

-deviationist

-deviator

-deviators

-devilkin

-devilment

-devilments

-devilry

-deviltry

-devisability

-devisable

-devisal

-devisee

-devisor

-devitrification

-devitrify

-devoir

-devoirs

-devolution

-devolutionary

-devolutionist

-devotement

-dewater

-dewatered

-dewaterer

-dewatering

-dewaters

-dewily

-deworm

-dexedrine

-dexterous

-dexterously

-dexterousness

-dextral

-dextrality

-dextrally

-dextrine

-dextro

-dextrose

-dextrose's

-dey

-dharma

-diabolism

-diabolist

-diachronically

-diachrony

-diaconal

-diaconate

-diacritic

-diacritic's

-diacritics

-diadromous

-diagnoseable

-diagnostical

-diagnostically

-diagrammatical

-diakinesis

-diakinetic

-dialectician

-dialecticians

-dialectological

-dialectologically

-dialectologist

-dialectology

-dialogic

-dialogical

-dialogically

-dialogist

-dialogistic

-dialup

-dialup's

-dialups

-dialytic

-diamagnet

-diamagnetism

-diamagnets

-diametral

-diametrical

-dianne

-diapason

-diapause

-diapausing

-diaphaneity

-diaphone

-diaphragmatic

-diaphragmatically

-diaphragmic

-diapositive

-diarchy

-diarist

-diaspora

-diaspore

-diastole

-diastolic

-diastrophic

-diastrophically

-diastrophism

-diathermic

-diathetic

-diation

-diatomaceous

-diatomite

-diatonically

-diatropic

-diatropism

-diatropisms

-dibble

-dibs

-dicarboxylic

-dicey

-dichondra

-dichotic

-dichotically

-dichotomist

-dichroic

-dichroism

-dichroitic

-dichromat

-dichromate

-dichromatic

-dichromatism

-dichromats

-dicier

-dickcissel

-dicta

-dictionally

-dicyclic

-didact

-didactical

-didactically

-didacticism

-dieing

-diel

-dieldrin

-dieresis

-dietarily

-dietetically

-diety

-dieu

-dieux

-diffeomorphic

-diffeomorphism

-differentia

-diffusional

-difluoride

-digamma

-digenesis

-digenetic

-digestibility

-digitalin

-digitate

-digitated

-digitately

-digitation

-digitigrade

-digitonin

-digressional

-digressionary

-dihybrid

-dihydroxy

-dijon

-dilapidator

-dilatability

-dilatable

-dilatational

-dilatometer

-dilatometer's

-dilatometers

-dilatometric

-dilatometry

-dilatorily

-dildo

-dildos

-dilemmatic

-dilemmatical

-dilettanti

-dilettantish

-dilettantism

-dilettantist

-dillydally

-diluent

-dilutor

-diluvial

-dimaggio

-dimeric

-dimerism

-dimerous

-dimeter

-dimeter's

-dimeters

-dimethoxymethane

-diminishable

-diminishment

-diminuendo

-diminuendo's

-diminuendos

-diminutional

-dimmable

-dimorphic

-dimorphism

-dimorphous

-dimout

-dimply

-dimwit

-dimwits

-dimyristoyl

-dinette

-dingbat

-dingbats

-dingdong

-dingily

-dingle

-dinkey

-dinnerless

-dinning

-dinosaurian

-dinosauric

-diogenes

-dion

-dioptometer

-dioptometer's

-dioptometers

-dioptometry

-dioptric

-dioptrics

-dioramic

-diorite

-diphase

-diphasic

-diphenyl

-diphtherial

-diphtherian

-diphtheritic

-diphtheroid

-diphthongal

-diplex

-diploid

-diploid's

-diploids

-diploidy

-diplomate

-diplomatically

-diplomatist

-dipod

-dipolar

-dipperful

-dipropellant

-dipsomania

-dipsomaniac

-dipsomaniacal

-dipstick

-diptych

-directionless

-directorial

-dirigible

-dirigibles

-disaccharide

-disaccharides

-disaccord

-disaccustom

-disadvantageous

-disadvantageously

-disadvantageousness

-disaffect

-disaffirm

-disaffirmance

-disaffirmation

-disagreeability

-disagreeably

-disallowance

-disannul

-disapprovative

-disarrange

-disarrangement

-disarranges

-disarticulate

-disarticulation

-disassociate

-disassociated

-disassociates

-disassociating

-disassociation

-disavowable

-disbandment

-disbarment

-disburden

-disburdenment

-discardable

-discernable

-dischargeable

-dischargee

-disciform

-disciplinable

-disciplinal

-disciplinarian

-disciplinarily

-disciplinarity

-disclamation

-disco

-disco's

-discographer

-discographic

-discographical

-discographically

-discography

-discoid

-discoidal

-discoidin

-discombobulate

-discomfiture

-discomfitures

-discomfortable

-discomfortably

-discommend

-discommendable

-discommendation

-discommode

-discommodes

-discommoding

-discompose

-discomposed

-discomposedly

-discomposure

-disconfirm

-disconfirmation

-disconform

-disconformable

-disconformity

-disconsolate

-disconsolately

-disconsolateness

-disconsolation

-discontentment

-discophile

-discordance

-discordances

-discordancy

-discos

-discountenance

-discourageable

-discourtesy

-discoverable

-discreditable

-discreditably

-discriminability

-discriminably

-discriminational

-discriminator

-discriminatorily

-discriminators

-discussable

-discussible

-disembark

-disembarkation

-disembarrass

-disembodiment

-disembody

-disembowelment

-disenchant

-disenchanter

-disenchanting

-disenchantingly

-disencumber

-disencumbrance

-disendow

-disendower

-disendowment

-disentanglement

-disenthralled

-disenthralling

-disequilibrate

-disequilibration

-disestablish

-disestablished

-disestablishment

-disestablishmentarian

-disesteem

-disestimation

-disfeature

-disfeaturement

-disfigurement

-disfigurements

-disfranchise

-disfranchised

-disfranchisement

-disfranchises

-disfranchising

-disfrock

-disfunction

-disfurnish

-disfurnishment

-disgorgement

-disgruntlement

-disguisement

-dishabille

-disharmonic

-disharmonious

-dishcloth

-disheartenment

-disheartenments

-dishrack

-dishracks

-dishy

-disincentive

-disincline

-disinclined

-disinclines

-disinclining

-disinfect

-disinfectant

-disinfectants

-disinfected

-disinfecting

-disinfection

-disinfects

-disinfest

-disinfestant

-disinfestation

-disinfested

-disinfesting

-disinfests

-disinflation

-disinflationary

-disingenuous

-disingenuously

-disingenuousness

-disinhibition

-disinhibitory

-disinsectization

-disintegrator

-disintegrators

-disinter

-disintered

-disintering

-disinterment

-disinters

-disintoxication

-disinvest

-disinvestment

-disjuncture

-disklike

-dislicense

-dislicensed

-dislicenser

-dislicenses

-dislicensing

-dislikable

-dislikably

-dislikeable

-dislimn

-dismantlement

-dismast

-dismember

-dismembering

-dismission

-disoblige

-disobliger

-disoblingingly

-disorient

-disorientation

-disownment

-dispart

-dispassion

-dispensability

-dispensable

-dispensational

-dispensatory

-dispeople

-dispersant

-dispirit

-dispirited

-dispiritedly

-dispiritedness

-dispiriting

-dispirits

-dispiteous

-displaceable

-displant

-displode

-disploded

-displodes

-disploding

-displosion

-disport

-disportment

-disporves

-disposability

-dispositive

-dispossess

-dispossesses

-dispossessing

-dispossessor

-disposure

-disposures

-dispraise

-dispraiser

-dispraisingly

-dispread

-disprize

-disproof

-disprovable

-disputation

-disputatious

-disputatiously

-disputatiousness

-disquantity

-disraeli

-disrate

-disregardful

-disrelate

-disrelated

-disrelation

-disrelish

-disremember

-disremembrance

-disreputability

-disreputably

-disrespectability

-disrespectable

-disrespectful

-disrespectfully

-disrespectfulness

-dissatisfactory

-dissatisfies

-dissatisfy

-dissatisfying

-dissector

-disseminator

-disseminators

-dissentient

-dissention

-dissert

-dissertate

-dissertator

-disserve

-dissever

-disseverance

-disseverment

-dissidence

-dissimilate

-dissimilated

-dissimilates

-dissimilating

-dissimilation

-dissimilative

-dissimilatory

-dissimilitude

-dissimulate

-dissimulator

-dissociability

-dissocial

-dissociant

-dissolubility

-dissoluble

-dissolute

-dissolutely

-dissoluteness

-dissolvable

-dissolvent

-dissuasion

-dissuasive

-dissuasively

-dissuasiveness

-dissyllable

-dissymmetric

-dissymmetry

-distemperate

-distemperature

-distensibility

-distensible

-distent

-distention

-distinguishability

-distinguishably

-distortional

-distractibility

-distractible

-distrain

-distrainable

-distrainer

-distrainor

-distraint

-distrait

-distressful

-distressfully

-distressfulness

-distributary

-distributee

-distrustful

-distrustfully

-distrustfulness

-disubstituted

-disunionist

-disunite

-disutility

-disvalue

-disyllabic

-dithery

-divagate

-divagation

-divaricate

-divarication

-divergencies

-divergency

-diversionist

-divertissement

-divertissements

-divestment

-dividable

-divinatory

-divisibility

-divisionism

-divisionist

-divorcement

-divot

-divulgence

-divulsion

-divvy

-dixiecrats

-dobbin

-doberman

-dobson

-doc

-docent

-docetic

-docility

-dockage

-dockhand

-dockworker

-doctorless

-doctorship

-doctrinairism

-documental

-documentale

-documentalist

-documentarian

-documentarily

-documentarist

-documentational

-dodder

-doddered

-dodderer

-doddering

-dodders

-doddery

-dodecyl

-dodgery

-dodgy

-dodington

-dodo

-dodo's

-dodos

-dogbane

-dogberry

-dogcart

-dogcatcher

-doge

-dogface

-dogfight

-dogfights

-dogfish

-doggerel

-doggery

-doggie

-doggier

-doggies

-doggish

-doggishly

-doggishness

-doggy

-doglike

-dogmatical

-dogmaticalness

-dogmatist

-dogmatist's

-dogmatists

-dogwatch

-doilies

-doily

-doit

-doited

-dolce

-dolesome

-dollhouse

-dollish

-dollishly

-dollishness

-dollop

-dollop's

-dolloped

-dolloping

-dollops

-dolorous

-dolorously

-dolorousness

-domical

-domicil

-domiciliary

-domiciliate

-domiciliation

-dominical

-dona

-donator

-donee

-doneness

-dong

-donner

-donut

-doodad

-doodlebug

-doohickey

-doomful

-doomfully

-doomsayer

-doomster

-doorjamb

-doorless

-doormat

-doornail

-doorplate

-doorpost

-doorsill

-doorstop

-dooryard

-dopester

-dopey

-dopier

-dopiness

-doppelganger

-dopy

-dormancy

-dormice

-dormie

-dormouse

-dormouse's

-dormy

-dosimetric

-doss

-dossal

-dosser

-dotal

-dotter

-dotterel

-dottier

-dottily

-dottiness

-dotty

-doublespeak

-doublethink

-doubletree

-douce

-douche

-doughboy

-doughface

-doughier

-doughlike

-doughnuttery

-doughtier

-doughtily

-doughtiness

-doughty

-doughy

-dovecot

-dovecote

-dovekie

-dovish

-dovishness

-dowdily

-dowdyish

-dowitcher

-downcourt

-downhaul

-downhearted

-downheartedly

-downheartedness

-download

-downloaded

-downloading

-downloads

-downrange

-downriver

-downshift

-downstage

-downstate

-downstater

-downstroke

-downswing

-downtime

-dozier

-doziness

-dozy

-drabber

-drabbest

-drabbing

-drabble

-drabbled

-drabbling

-draftable

-draggier

-draggle

-draggled

-draggling

-draggy

-dragline

-dragonet

-dragonish

-dragster

-drainpipe

-drainpipes

-dramalogue

-dramamine

-dramaturge

-dramaturgic

-dramaturgical

-dramaturgically

-dramshop

-drapability

-drapable

-drapeability

-drapeable

-drat

-dratted

-dratting

-drawable

-drawbar

-drawdown

-drawee

-drawerful

-drawknife

-drawnwork

-drawplate

-drawstring

-drawstring's

-drawstrings

-drawtube

-dray

-drayage

-drayman

-drayman's

-draymen

-draymen's

-dreamful

-dreamfully

-dreamfulness

-dreamland

-dreamworld

-drear

-drearily

-dreck

-dressage

-dressmake

-driblet

-driftage

-driftier

-driftweed

-driftwood

-driftwood's

-drifty

-drillability

-drillable

-drillmaster

-drinkability

-dripless

-dripper

-drivable

-driveable

-drivel

-driveline

-driverless

-drolleries

-drollery

-drolly

-dropkick

-dropkicker

-droplight

-droppage

-dropperful

-dropshot

-dropsy

-drossy

-droughtiness

-droughty

-drouth

-drownd

-drownded

-drownding

-drubber

-drugget

-drugmaker

-druidess

-druidic

-druidical

-druidism

-drumbeat

-drumbeater

-drumbeating

-drumfire

-drumlike

-drumlin

-drumroll

-drumstick

-drumsticks

-drunkometer

-drunkometer's

-drunkometers

-drupe

-dryable

-dryad

-dryasdust

-drylot

-drypoint

-drys

-drysalter

-drysaltery

-du

-dualist

-dualistic

-dualistically

-dubber

-dubbing

-dubiety

-dubiosity

-dubitable

-dubitation

-dubuque

-ducal

-ducally

-duckbill

-duckbilled

-duckboard

-duckfooted

-duckier

-duckpin

-duckweed

-duckweed's

-duckweeds

-ducky

-duclos

-ductility

-ductless

-ductule

-dudgeon

-dudish

-dudishly

-duende

-duenna

-duennaship

-duetted

-duetting

-duffle

-dugong

-dulcimer

-dulcimore

-dulgence

-dulles

-dullish

-dullishly

-dullsville

-dulness

-dulse

-dumbstruck

-dumbwaiter

-dumbwaiters

-dumdum

-dumka

-dumpily

-dumpish

-dumpling

-dumpling's

-dumplings

-dumpo

-dumpster

-dumpster's

-dumpsters

-dunderhead

-dunderheaded

-duneland

-dunelike

-dungaree

-dunghill

-dungy

-dunkel

-dunne

-duo

-duodecimal

-duodecimo

-duodenal

-duodenum

-duologue

-duomo

-duomos

-duopolistic

-duos

-dupery

-duple

-duplicitous

-duplicitously

-dupont

-duponts

-durance

-durometer

-durometer's

-durometers

-duros

-duskily

-dustcover

-dustheap

-dustily

-dustin

-dustless

-dustlike

-dustman

-dustpan

-dustpans

-dustup

-dutchess

-duteous

-duverger

-dwarfishly

-dwarfishness

-dwarfism

-dwarflike

-dyadically

-dyarchy

-dyeability

-dyeable

-dyerear

-dyestuff

-dyewood

-dynamist

-dynamistic

-dynamitic

-dynamometer

-dynamometer's

-dynamometers

-dynamometric

-dynamometry

-dynamotor

-dynapolis

-dynast

-dynastically

-dynasts

-dynatron

-dyne

-dynode

-dynodes

-dysenteric

-dysfunction

-dysfunctional

-dysgenesis

-dysgenic

-dysgenics

-dyslexia

-dyslexic

-dyslogistic

-dyslogistically

-dyspepsia

-dyspeptically

-dysphagia

-dysphagic

-dysphasia

-dysphasic

-dysphonia

-dysphonic

-dysphoria

-dysphoric

-dysplasia

-dysplastic

-dystrophic

-eV

-eaglet

-eagre

-earache

-eardrop

-eardrops

-earflap

-earful

-earldom

-earlobe

-earlock

-earmuff

-earmuffs

-earp

-earpiece

-earplug

-earthborn

-earthbound

-earthily

-earthlike

-earthling

-earthshaker

-earthshaking

-earthshakingly

-earthshine

-earthstar

-earthward

-earthwards

-earthwork

-earthworks

-earwax

-earwig

-earwigged

-earwigging

-earwitness

-easeful

-easefully

-easthampton

-eastwick

-easure

-eatery

-ebullience

-ebulliency

-ebullition

-eccentrically

-ecclesial

-ecclesiasticism

-ecclesiological

-ecclesiology

-ecdysiast

-ecdysis

-ecesis

-ech

-echidna

-echinulate

-echinulation

-echoey

-echoic

-echolocation

-eclat

-eclecticism

-eclogue

-eclosion

-ecol

-ecologic

-ecologist

-econometrically

-econometrician

-econometrist

-ecophysiological

-ecophysiology

-ecospecies

-ecospecific

-ecosphere

-ecotone

-ecotype

-ecotypic

-ecotypically

-ecru

-ecstatically

-ectoblast

-ectoblastic

-ectoderm

-ectodermal

-ectodermic

-ectogenic

-ectogenous

-ectomere

-ectomeric

-ectomorph

-ectomorphic

-ectoparasite

-ectoparasitic

-ectopic

-ectoplasm

-ectoplasmic

-ectotherm

-ectothermic

-ectotrophic

-ectotropic

-ecumenicalism

-ecumenicism

-ecumenicity

-ecumenism

-eczema

-eczematous

-edacious

-edacity

-edaphic

-edaphically

-edentate

-edentulous

-edgeless

-edgewater

-edgeways

-edgewood

-edgily

-edibility

-edictal

-edificatory

-editable

-editress

-eduard

-educability

-educable

-educationalist

-educationalists

-educationist

-educible

-eduction

-eductor

-eductors

-edulcorate

-edwardine

-eeg

-eellike

-eely

-eeriness

-eery

-effacement

-effectivity

-effectuality

-effeminacy

-effervesce

-effervescence

-effervescent

-effervescently

-efficacity

-efflorescence

-efflrescent

-effluence

-effortful

-effortfully

-effrontery

-effulgence

-effulgent

-eft

-egad

-egads

-egerton

-egestion

-egestive

-eggbeater

-eggcup

-eggnog

-eglantine

-egocentrically

-egocentricity

-egocentrism

-egoism

-egoist

-egoistic

-egoistical

-egoistically

-egoists

-egomania

-egomaniac

-egomaniacal

-egomaniacally

-egomaniacs

-egression

-eichmann

-eiderdown

-eidetically

-eidolon

-eigenfunction

-eigenfunctions

-eigenspace

-eighths

-eightyfold

-ein

-eine

-ejaculatory

-ejecta

-ejectable

-ejectment

-ekistic

-ekistics

-elapid

-elastase

-elastin

-elastomeric

-elaterite

-elbowroom

-elderberry

-eldership

-elecroencephalographic

-electability

-electable

-electioneer

-electioneerer

-electret

-electriques

-electroacoustic

-electroacoustically

-electroacoustics

-electroanalysis

-electroanalytic

-electroanalytical

-electrocardiographic

-electrocardiographically

-electrocardiography

-electrochemical

-electrochemically

-electrochemistry

-electroconvulsive

-electrocorticogram

-electrocorticogram's

-electrocorticograms

-electrodeposit

-electrodeposition

-electrodialysis

-electrodialytic

-electrodynamometer

-electrodynamometer's

-electrodynamometers

-electroencephalograph

-electroencephalography

-electroform

-electrogenesis

-electrogenic

-electrogram

-electrogram's

-electrograms

-electrohydraulic

-electrohydraulically

-electrojet

-electrokinetic

-electrokinetics

-electroless

-electrologist

-electroluminescence

-electroluminescent

-electrolytically

-electromagnetic

-electromagnetically

-electromechanical

-electromechanically

-electrometallurgy

-electrometer

-electrometer's

-electrometers

-electromotive

-electromyogram

-electromyogram's

-electromyograms

-electromyographical

-electronegative

-electronegativity

-electronography

-electrooculogram

-electrooculogram's

-electrooculograms

-electrophilic

-electrophoretic

-electrophoretically

-electrophoretogram

-electrophoretogram's

-electrophoretograms

-electrophotographic

-electrophotography

-electrophysiologic

-electrophysiological

-electrophysiologically

-electrophysiologist

-electrophysiology

-electroplate

-electroplater

-electropositive

-electroretinogram

-electroretinogram's

-electroretinograms

-electroretinograph

-electroretinographic

-electroretinography

-electroscope

-electrostatically

-electrosurgery

-electrosurgical

-electrothermal

-electrothermally

-electrothermic

-electrotonic

-electrotonically

-electrotype

-electrotyper

-electrovalence

-electrovalent

-electrowinning

-electrum

-electuary

-elegancy

-elegiacal

-elegiacally

-elegit

-elementarily

-elephantiasis

-elevenfold

-elfish

-elfishly

-elicitation

-elicitor

-elide

-elided

-elides

-eliding

-eligibly

-eliminable

-elisp

-elitism

-elitist

-elitists

-elixir

-ell

-elle

-ellie

-elliot

-elocutionary

-elocutionist

-elocutionists

-elopement

-elroy

-eluant

-elucidator

-elucubrate

-elucubrated

-elucubrates

-elucubrating

-elucubration

-eluent

-elutriate

-elutriator

-eluvial

-eluviate

-eluviation

-eluvium

-elver

-elvis

-elvish

-elysium

-elytron

-elytrum

-em

-emanational

-emancipationist

-emancipator

-emarginate

-emarginated

-emargination

-emasculator

-embalmment

-embarkation

-embarkment

-embarrassable

-embassage

-embattlement

-embay

-embayment

-embeddable

-embedment

-embitter

-embitterment

-embitters

-emblaze

-emblazed

-emblazes

-emblazing

-emblazon

-emblazoned

-emblazoner

-emblazoning

-emblazonment

-emblazonry

-emblazons

-emblematical

-emblematically

-emblements

-embolic

-embolism

-embolismic

-embosom

-embossable

-embossment

-embouchure

-embowed

-embowel

-embracement

-embraceor

-embracery

-embranchment

-embrangle

-embranglement

-embrasure

-embrittlement

-embrocate

-embrocated

-embrocates

-embrocating

-embrocation

-embroglio

-embroilment

-embrown

-embrue

-embryogenesis

-embryogenetic

-embryogenic

-embryogeny

-embryol

-embryologic

-embryological

-embryologically

-embryologist

-embryonal

-embryonally

-embryonated

-embryonically

-embryotic

-emceeing

-emendate

-emendation

-emendator

-emendatory

-emeriti

-emersed

-emerses

-emersion

-emetic

-emetically

-emigre

-emigre's

-emigree

-eminency

-emir

-emissive

-emollient

-emollients

-emote

-emoted

-emotes

-emoting

-emotionalist

-emotionalistic

-emotionless

-emotionlessness

-emotive

-emotively

-emotivity

-empanel

-empanels

-empathetic

-empennage

-emperies

-emperorship

-empery

-emphasization

-emphasization's

-emplacement

-emplane

-empoison

-empoisonment

-empowerment

-empressement

-emprise

-emptyhanded

-empurple

-empurpled

-empurpling

-ems

-emu

-emulous

-emulously

-emulousness

-emulsible

-emulsifiable

-emulsive

-emunctory

-en

-enactor

-enamelware

-enamine

-encage

-encapsule

-encapsules

-encasement

-encash

-encashment

-encaustic

-enceinte

-encephalic

-encephalitic

-encephalitogenic

-encephalogram

-encephalogram's

-encephalograms

-encephalon

-enchainment

-enchase

-enchased

-enchasing

-enchilada

-encipherment

-encirclement

-enclasp

-enclitic

-encomia

-encompassment

-encrimson

-encrustation

-encyst

-encystation

-encystment

-endamage

-endangerment

-endarch

-endarchy

-endbrain

-endemically

-endergonic

-endermic

-endermically

-endexine

-endite

-endleaf

-endlong

-endmost

-endobiotic

-endoblast

-endoblastic

-endocardial

-endochondral

-endocrine

-endocrinologic

-endocrinological

-endocrinologist

-endocrinology

-endocytic

-endocytosis

-endocytotic

-endoderm

-endodermal

-endodermis

-endodontia

-endodontic

-endodontically

-endodontics

-endodontist

-endoenzyme

-endoergic

-endoerythrocytic

-endogamic

-endogen

-endogenic

-endogeny

-endolymph

-endolymphatic

-endometrial

-endometriosis

-endometrium

-endomitosis

-endomorph

-endomorphic

-endomorphism

-endomorphy

-endonuclease

-endoparasite

-endoparasitism

-endophyte

-endophytic

-endoplasm

-endoplasmic

-endorsable

-endorsee

-endoscope

-endoscopic

-endoscopically

-endoscopy

-endoskeletal

-endoskeleton

-endosmosis

-endosmotic

-endosmotically

-endospermic

-endospermous

-endospore

-endosporic

-endosporous

-endosteal

-endosteally

-endosternite

-endosteum

-endostyle

-endosymbiosis

-endotherm

-endothermal

-endotoxic

-endotoxin

-endotracheal

-endotrophic

-endotropic

-endozoic

-endpaper

-endue

-endued

-enduing

-endways

-endwise

-enemata

-enfant

-enfants

-enfeeblement

-enfetter

-enfever

-enflame

-enflamed

-enflames

-enflaming

-enfold

-engild

-engineroom

-enginerooms

-enginery

-engird

-engirdle

-englacial

-englut

-englutted

-engluttin

-engorgement

-engr

-engraft

-engrailed

-engrain

-engrammic

-engrossment

-engulf

-engulfment

-enhalo

-enharmonic

-enharmonically

-enigmatical

-enigmatically

-enisle

-enjambement

-enjambment

-enkindle

-enlace

-enlacement

-enlistee

-enmeshment

-ennoblement

-enol

-enolase

-enolic

-enologist

-enology

-enplane

-enrapt

-enregister

-enrobe

-enroot

-ens

-ensample

-ensanguine

-ensconce

-ensconces

-ensconcing

-enscroll

-enserf

-enserfment

-ensheathe

-enshrine

-enshrined

-enshrinement

-enshrines

-ensiform

-ensilage

-ensile

-ensiled

-ensiling

-ensional

-ensnarl

-ensolite

-ensoul

-ensphere

-enswathe

-entablature

-entablement

-entablements

-ente

-entendre

-entente

-enterable

-enteral

-enterally

-enteric

-enthronement

-enticement

-entoderm

-entodermal

-entodermic

-entoil

-entoiled

-entombment

-entomological

-entomophagous

-entomophilous

-entomophily

-entrail

-entrails

-entrainment

-entrancement

-entrappingly

-entreatment

-entrustment

-entryway

-entwinement

-entwist

-enucleate

-enucleated

-enucleating

-enucleation

-enunciator

-enunciators

-envelopment

-envelopments

-environmentalism

-environmentalist

-environmentalists

-envisionin

-envoi

-envois

-enwheel

-enwind

-enwinding

-enwrap

-enwreathe

-enzymic

-enzymically

-enzymologist

-eon

-eon's

-eons

-eosine

-epaulette

-ephemerality

-epical

-epically

-epicardial

-epicardium

-epicarp

-epicene

-epicenism

-epicentral

-epicureanism

-epicurism

-epicurus

-epidemical

-epidemically

-epidemicity

-epidemiologic

-epidemiologist

-epidermal

-epigrammatical

-epigrammatically

-epigrammatism

-epigrammatist

-epigraphic

-epigraphical

-epigraphically

-epigraphist

-epigraphy

-epileptically

-epimorphism

-epiphanous

-epiphenomenal

-epiphenomenally

-epiphyseal

-epiphysis

-epiphyte

-epiphytic

-episcope

-episiotomy

-episodical

-episodically

-episomal

-episomally

-episome

-epistasy

-epistatic

-epistemic

-epistemically

-epistemologist

-epistolary

-epistoler

-epistrophe

-epitaphial

-epitaphic

-epithetic

-epithetical

-epode

-epodes

-eponymous

-equability

-equably

-equalitarian

-equalitarianism

-equational

-equationally

-equatorward

-equerries

-equerry

-equestrienne

-equiangular

-equiangularity

-equicaloric

-equilibrator

-equilibrators

-equilibratory

-equilibrist

-equilibristic

-equimolal

-equimolar

-equinoctial

-equipage

-equipoise

-equipollence

-equipollent

-equipollently

-equiponderant

-equiponderate

-equipotential

-equiprobable

-equitability

-equitant

-equitation

-equivalency

-equivocality

-equivocate

-equivocated

-equivocates

-equivocating

-equivocator

-equivoke

-equivoque

-eradicably

-eradicator

-eradicators

-eradictions

-erasabilities

-erasability

-erectable

-erectile

-erectility

-erelong

-erenow

-erewhile

-erewhiles

-erg

-ergative

-ergograph

-ergometer

-ergometer's

-ergometers

-ergometric

-ergonomic

-ergonomics

-ergonomist

-ergonovine

-ergosterol

-ergot

-ergotamine

-ergotic

-ergotism

-ergotropic

-erodibility

-erogenic

-erogenous

-erose

-erosely

-erosional

-erosionally

-erosivity

-erotical

-eroticism

-eroticist

-erotism

-erotogenic

-erratical

-erraticism

-errorless

-eruptible

-escalade

-escalader

-escalades

-escalator

-escalators

-escalatory

-escallop

-escallops

-escapement

-escapements

-escapism

-escapologist

-escapology

-escargot

-escarp

-escheat

-escherichia

-eschewal

-escot

-esculent

-esemplastic

-esker

-esophageal

-esoterica

-esoterically

-esotericism

-esp

-espadrille

-espagnol

-espanol

-esperance

-espial

-espresso

-espressos

-essayist

-essayistic

-essentialism

-essentialist

-essentiality

-establishable

-establishmentarian

-establishmentarianism

-esteemable

-ester

-estop

-estopped

-estopping

-estral

-estray

-estrogen

-estrogenic

-estrogenically

-estrone

-estrous

-estrum

-estrus

-estuarial

-esurience

-esuriency

-esurient

-esuriently

-etagere

-etatism

-etatist

-etch

-etcher

-etches

-etching

-ether

-ether's

-ethereality

-etheric

-etherish

-etherlike

-ethers

-ethicality

-ethician

-ethicians

-ethnical

-ethnobiological

-ethnobiology

-ethnocentric

-ethnocentrically

-ethnocentricity

-ethnocentrism

-ethnographer

-ethnographical

-ethnographically

-ethnol

-ethnologic

-ethnological

-ethnologically

-ethnologist

-ethnomusicology

-ethological

-ethologist

-ethoxy

-ethylate

-ethylation

-ethylenic

-ethylenically

-ethylic

-ethynyl

-etude

-etudes

-etui

-etymologist

-etymologists

-eucaryotic

-eucharistic

-euchre

-euclidian

-eucre

-eugenically

-eugenicist

-euglena

-euhemerism

-euhemerist

-euhemeristic

-euhemeristically

-eukaryote

-eukaryotic

-eulogist

-eulogistic

-eulogistically

-eulogium

-eumorphic

-eunuchism

-euphemistic

-euphemistically

-euphonically

-euphonious

-euphoniously

-euphoniousness

-euphonium

-euphorbia

-euphorically

-euphotic

-euphuism

-euphuist

-euphuistic

-euphuistically

-euplastic

-eurhythmic

-eurhythmics

-europeanish

-eurythmic

-eurythmics

-eurythmy

-eurytopic

-eurytopicity

-eustatic

-eutectic

-euthanasic

-euthenics

-euthenist

-eutherian

-euthyroid

-eutrophic

-eutrophication

-eutrophy

-eux

-evacuator

-evacuee

-evacuees

-evadable

-evagination

-evaluable

-evanesce

-evanesced

-evanescence

-evanesces

-evanescing

-evangel

-evangeline

-evangelistically

-evanishment

-evaporativity

-evaporator

-evaporators

-evaporite

-evaporitic

-evapotranspiration

-evection

-evenfall

-eventless

-everblooming

-eversible

-eversion

-eversions

-evert

-everyplace

-evictee

-evictees

-evictor

-evictors

-evidentiary

-evildoing

-evincible

-eviscerate

-eviscerated

-eviscerates

-eviscerating

-evisceration

-evitable

-evocator

-evocators

-evolutionarily

-evolutionism

-evolutionist

-evolvable

-evolvement

-evulsion

-evulsions

-evzone

-ewen

-exacta

-exactable

-exactor

-exactors

-exaggerator

-exaggerators

-exagitates

-examinant

-examinants

-examinational

-examinatorial

-examinee

-examinees

-exanimate

-exanimated

-exanimates

-exanimating

-excavational

-excavator

-excavators

-exceptionability

-exceptionable

-exceptionably

-exceptionality

-excerption

-excerptions

-excerptor

-excerptors

-exchangeability

-exchangee

-exchangees

-excide

-excided

-excides

-exciding

-excipient

-exciseman

-excitant

-excitants

-excitative

-exciton

-excitor

-exclave

-exclaves

-exclosure

-exclosures

-excludability

-excludable

-excludible

-exclusionist

-exclusionists

-excogitate

-excogitation

-excogitative

-excommunicator

-excrement

-excrement's

-excremental

-excrementitious

-excrements

-excrescency

-excrescent

-excrescently

-excreta

-excretal

-exculpate

-exculpated

-exculpates

-exculpating

-exculpation

-exculpations

-excurrent

-excursionist

-excursionists

-excursive

-excursively

-excursiveness

-excusatory

-execrably

-execrator

-execrators

-executant

-executorial

-executory

-executrices

-exegetic

-exegetical

-exegetically

-exegetics

-exegetist

-exemplarily

-exemplarity

-exenterate

-exenterated

-exenterates

-exenterating

-exenteration

-exenterations

-exercitation

-exergonic

-exeunt

-exfoliate

-exfoliated

-exfoliates

-exfoliating

-exfoliation

-exfoliative

-exhalant

-exhalants

-exhalation

-exhalations

-exhalent

-exhalents

-exhaustibility

-exhaustivity

-exhaustless

-exhaustlessly

-exhaustlessness

-exhibitionism

-exhibitionist

-exhibitionistic

-exhibitory

-exhilarant

-exhortative

-exhortatory

-exigence

-exiguity

-exiguous

-exiguously

-exiguousness

-exilic

-existentialistic

-existentialistically

-exobiological

-exobiologist

-exobiology

-exocrine

-exocyclic

-exodermis

-exodontia

-exodontist

-exoergic

-exogamic

-exonuclease

-exorbitance

-exorbitances

-exorcistic

-exorcistical

-exordial

-exordium

-exoskeleta

-exoskeletal

-exosmosis

-exosmotic

-exosphere

-exospheric

-exospore

-exostosis

-exoteric

-exotericaly

-exothermal

-exothermically

-exotically

-exoticism

-exotism

-expansibility

-expansile

-expansional

-expansionary

-expansionistic

-expansivity

-expatiate

-expatiated

-expatiates

-expatiating

-expatiation

-expatriate

-expatriated

-expatriates

-expatriating

-expatriation

-expecially

-expectably

-expectance

-expectative

-expedience

-expediential

-expeditionary

-expeditor

-expellee

-expeller

-expellers

-expendability

-expertism

-expiator

-expiatory

-expiratory

-expiry

-explanative

-explanatively

-explanatorily

-explant

-explantation

-explants

-expletory

-explicably

-explicator

-explicatory

-explodent

-exploitative

-exploitatively

-explorational

-explorative

-exploratively

-explosibility

-explosible

-expo

-exportability

-exportable

-expos

-expositional

-expositor

-expostulate

-expostulation

-expostulatory

-expressage

-expressional

-expressionistically

-expropriator

-expropriators

-expulsive

-expunction

-expurgator

-expurgatorial

-expurgatory

-exsanguinate

-exsanguination

-exscind

-exsert

-exserted

-exsertile

-exsertion

-exsertions

-exsiccate

-exsiccation

-exstipulate

-ext

-extemporal

-extemporally

-extemporaneity

-extemporarily

-extemporary

-extendable

-extensile

-extensionality

-extensity

-extensometer

-extensometer's

-extensometers

-extenuator

-extenuatory

-exteriority

-exterminatory

-extermine

-externalism

-externality

-externship

-exteroceptive

-exteroceptor

-exterritorial

-exterritoriality

-extinguishable

-extinguishment

-extoll

-extolment

-extortionary

-extortionate

-extortionately

-extrachromosomal

-extracorporeal

-extracorporeally

-extracranial

-extractability

-extractable

-extractible

-extradite

-extradites

-extradition

-extradoses

-extragalactic

-extrajudicial

-extrajudicially

-extralimital

-extralinguistic

-extralinguistically

-extrality

-extramundane

-extramural

-extramurally

-extranuclear

-extrapolator

-extrasensory

-extrasystole

-extrasystolic

-extraterritorial

-extraterritoriality

-extrauterine

-extravagancy

-extravagate

-extravasate

-extravasation

-extravascular

-extravehicular

-extraversion

-extraversive

-extravert

-extraverted

-extremis

-extremum

-extrinsically

-extrorse

-extrorsely

-extrudability

-extrudable

-exuberate

-exudate

-exudative

-exultance

-exultancy

-exurban

-exurbanite

-exurbia

-exuviation

-eyebolt

-eyebright

-eyecup

-eyedropper

-eyedropperful

-eyehole

-eyelike

-eyeliner

-eyepatch

-eyepoint

-eyepopper

-eyeshade

-eyeshot

-eyespot

-eyestalk

-eyestrain

-eyestrings

-eyetooth

-eyewash

-eyewink

-eyre

-eyrie

-fabricant

-fabricator

-fabricators

-fabular

-fabulist

-facedown

-facement

-facepiece

-facepieces

-facetted

-faceup

-facies

-facilitator

-facticity

-factional

-factionalism

-factionally

-factitious

-factitiously

-factitiousness

-factitive

-factitively

-factorable

-factorage

-factorship

-factotum

-factualism

-factualist

-factualists

-facture

-factures

-facula

-facultative

-facultatively

-faddish

-faddishness

-faddism

-faddist

-faddists

-fadeaway

-fadeless

-fadelessly

-fagging

-faggot

-faggoting

-faggots

-faience

-failsoft

-fainthearted

-faintheartedly

-faintheartedness

-faintish

-faintishness

-fairground

-fairish

-fairishly

-fairlead

-fairleader

-fairview

-fairylike

-faitour

-fakery

-fakir

-falcate

-falcated

-falciform

-falconet

-falderal

-falk

-fallback

-fallibly

-falsetto

-falsettos

-familism

-famishment

-fancywork

-fandango

-fane

-fanion

-fanlight

-fanlike

-fanner

-fantastical

-fantasticality

-fantasticalness

-fantasticate

-fantasticated

-fantasticates

-fantasticating

-fantastication

-fantod

-fanwise

-farad

-farceur

-farcicality

-farmhand

-farmhands

-farmstead

-farmsteading

-faro

-farrow

-farseeing

-farthermost

-fasces

-fascia

-fascial

-fasciated

-fasciation

-fascicular

-fascicularly

-fascicule

-fasciculus

-fascinator

-fascinators

-fascistic

-fascistically

-fashionabilities

-fashionability

-fashionmonger

-fastball

-fastball's

-fastballs

-fastuous

-fastuously

-fatalism

-fatalist

-fatalistically

-fatback

-fathead

-fatheaded

-fatheadedness

-fatherlike

-fathomable

-fathomless

-fathomlessly

-fathomlessness

-fatigability

-fatigable

-fatling

-fatted

-fatting

-fattish

-faulknerian

-faultfinder

-faultfinding

-faultily

-faunal

-faunally

-faunistic

-faunistically

-fauntleroy

-fauvism

-fauvist

-faux

-favonian

-fawkes

-fawny

-fay

-featherhead

-featherheaded

-featherless

-featherman

-febrific

-fecal

-feckless

-fecklessly

-fecklessness

-feckly

-feculence

-feculent

-fecundate

-fecundated

-fecundates

-fecundating

-fecundation

-fecundations

-feebleminded

-feeblemindedly

-feeblemindedness

-feedlot

-feedstock

-feedstuff

-feeing

-feetfirst

-feist

-feistier

-feisty

-feldspathic

-felicific

-felicitate

-felicitated

-felicitates

-felicitating

-felicitation

-felicitator

-felinity

-fellable

-fellah

-fellatio

-fellation

-fellations

-fellini

-fellowman

-felones

-felonry

-felsite

-felsitic

-felspar

-feministic

-feminity

-femoral

-fenceless

-fencelessness

-fenestral

-fenestrate

-fenestrated

-fenestrates

-fenestration

-fennec

-fenny

-fenugreek

-feral

-ferdinando

-ferial

-ferine

-fering

-ferity

-fermentable

-fermentative

-fernlike

-ferny

-ferrate

-ferrety

-ferriage

-ferriferous

-ferrimagnet

-ferrimagnetic

-ferrimagnetically

-ferrimagnetism

-ferritic

-ferromagnetism

-ferrotype

-ferruginous

-ferrule

-ferryboat

-ferryman

-fervency

-fescue

-fess

-festinate

-festinately

-festination

-festoon

-festoonery

-festoons

-feta

-fetation

-feterita

-fetishism

-fetishist

-fetishistic

-fetlock

-fetlocks

-fetologist

-fetology

-fetor

-fettuccine

-feudalist

-feudality

-feudist

-feverous

-feverously

-fey

-feyness

-fez

-fezes

-fezzes

-fibber

-fibration

-fibriallating

-fibril

-fibrillar

-fibrillate

-fibrillated

-fibrillates

-fibrillation

-fibrilliform

-fibrillose

-fibrils

-fibronectin

-fibrovascular

-fibula

-fibular

-fichu

-fictile

-fictioneer

-fictioneering

-fictionist

-ficus

-fiddleback

-fiddlehead

-fideism

-fideist

-fideistic

-fidel

-fidgetiness

-fidgety

-fidging

-fie

-fieldfare

-fieldstrip

-fiftyfold

-figaro

-figurable

-figurate

-figuration

-figurations

-figurehead

-filamentous

-filar

-filaria

-filarial

-filature

-filiation

-filiform

-filigreeing

-filippo

-fille

-filles

-fillip

-fillips

-fillment

-filmcard

-filmic

-filmically

-filmily

-filmmake

-filmmaker

-filmmakers

-filmmaking

-filmography

-fils

-filterability

-filterable

-filthily

-filtrable

-filum

-fimbria

-fimbrial

-fimbriate

-fimbriated

-fimbriates

-fimbriation

-finagle

-finagled

-finagler

-finagles

-finagling

-finback

-finery

-finespun

-fingerboard

-fingerlike

-fingerling

-fingerpost

-finical

-finically

-finicalness

-finicking

-finis

-finitude

-finlike

-finning

-fiord

-fiori

-firebird

-firebox

-firebrand

-firebrick

-fireclay

-firedamp

-fireguard

-fireless

-firelock

-fireplug

-fireplugs

-fireroom

-firetrap

-firma

-firmamental

-firstborn

-firstfruits

-firstling

-firstlings

-fisc

-fishability

-fishable

-fishbowl

-fishhook

-fishkill

-fishnet

-fishplate

-fishplates

-fishtail

-fishway

-fishwife

-fishyback

-fissility

-fissionability

-fissionable

-fissional

-fissiparous

-fissiparously

-fissiparousness

-fistfight

-fistful

-fistic

-fistnote

-fitment

-fixable

-fixity

-fixups

-fizzy

-flabbily

-flabellate

-flaccid

-flaccidity

-flaccidly

-flack

-flacon

-flagellant

-flagellantism

-flagellants

-flagellar

-flageolet

-flagger

-flagitious

-flagitiously

-flagitiousness

-flagon

-flagrance

-flagrancies

-flagrancy

-flamb

-flamboyance

-flamboyancy

-flamenco

-flameout

-flameproof

-flamingo

-flammability

-flan

-flan's

-flapdoodle

-flapjack

-flappy

-flareback

-flashboard

-flashgun

-flashguns

-flashily

-flashover

-flashovers

-flashtube

-flatboat

-flatcap

-flatcar

-flatfeet

-flatfoot

-flatfooted

-flatfoots

-flatted

-flatting

-flattish

-flattop

-flatulency

-flatus

-flatware

-flatwise

-flatwork

-flaunty

-flaxier

-flaxy

-flay

-fleabag

-fleabane

-flection

-flective

-fledermaus

-fleeringly

-fleischman

-fleisher

-fleshment

-fleshpot

-fleshpots

-flexile

-flexion

-flexographic

-flexographically

-flexography

-flexor

-flexuous

-flexuously

-flibbertigibbet

-flibbertigibbety

-flickery

-flightier

-flightily

-flightiness

-flightless

-flighty

-flimflam

-flimflammed

-flimflammer

-flimflamming

-flimsily

-flintily

-flintlike

-flippancy

-flipper

-flirty

-flitted

-flitter

-flivver

-floatage

-floatation

-floatplane

-floaty

-floc

-flogger

-floodlit

-floodplain

-floodwall

-floodwater

-floodwater's

-floodwaters

-floodway

-flooey

-floorage

-floorwalker

-floozie

-floozies

-floozy

-flophouse

-flopover

-flopovers

-flopper

-floppers

-florescence

-florescent

-floret

-floriate

-floriated

-floriation

-floriations

-florican

-floricultural

-floriculturally

-floriculture

-floriculturist

-floridity

-floriferous

-floriferously

-floriferousness

-florigen

-florigenic

-floristic

-floristically

-floristics

-floristry

-floruit

-flossier

-flossy

-flotage

-flotsam

-flouncy

-flowage

-flowerage

-floweret

-flowerlike

-fluctuant

-fluegelhorn

-fluidal

-fluidally

-fluidextract

-fluidic

-fluidics

-fluidounce

-fluidram

-flukey

-flukier

-fluky

-flume

-flumed

-flumes

-fluming

-flummery

-flummox

-flump

-flumped

-flumping

-flumps

-flunkeys

-flunky

-fluor

-fluorescein

-fluorimeter

-fluorimeter's

-fluorimeters

-fluorimetry

-fluorinate

-fluorinates

-fluorinating

-fluorination

-fluorinations

-fluoroscopic

-fluorspar

-flutelike

-flutterboard

-fluttery

-fluvial

-fluviatile

-fluxion

-fluxional

-flyblown

-flyboat

-flyboats

-flyby

-flybys

-flyleaf

-flyman

-flyover

-flyovers

-flypaper

-flypast

-flypasts

-flyspeck

-flyswatter

-flytier

-flyting

-flyway

-flyweight

-foamflower

-foamless

-fobbing

-focusless

-fodgel

-foeman

-fogbound

-fogey

-fogeys

-fogger

-foggest

-foghorn

-foghorns

-fogies

-fogless

-fogy

-fogyish

-fogyism

-foilsman

-foldable

-foldaway

-foldboat

-foldboater

-foldboating

-folderol

-folia

-foliaceous

-folic

-folkish

-folkishness

-folkloric

-folklorish

-folklorist

-folkloristic

-folksily

-folksinger

-folksinger's

-folksingers

-folksinging

-folktale

-folktale's

-folktales

-folkway

-folkways

-folliculate

-folliculated

-followership

-followeth

-fomentation

-fomentations

-fondue

-fondues

-fontal

-fontana

-foodless

-foodlessness

-foolery

-foolhardily

-foolscap

-foolscap's

-footboard

-footboards

-footboy

-footboys

-footcandle

-footcloth

-footgear

-footle

-footled

-footler

-footles

-footless

-footlessly

-footlessness

-footlight

-footlights

-footlike

-footling

-footlocker

-footmark

-footpace

-footrace

-footrest

-footrests

-footrope

-footropes

-footslog

-footslogger

-footslogs

-footsore

-footsoreness

-footstall

-footwall

-footway

-footways

-footy

-foozle

-foozled

-fopping

-fora

-foraminifera

-forbiddance

-forbidder

-forbode

-forborne

-forbye

-forceless

-forceps

-forcepslike

-fordable

-fordo

-forebear

-forebode

-foreboded

-foreboder

-forebodes

-forebrain

-foreclose

-forecloses

-foreclosure

-foredeck

-forefeel

-forefoot

-foregather

-forehand

-forehanded

-forehandedly

-forehandedness

-foreignism

-forejudge

-foreknow

-forelady

-foreland

-forelimb

-forelock

-foremanship

-foremast

-foremasts

-foremother

-forename

-forenamed

-forenames

-forensical

-forensically

-foreordain

-foreordained

-foreordaining

-foreordains

-foreordination

-forepassed

-forepast

-forepaw

-forepeak

-foreplay

-forequarter

-forequarters

-forereach

-forerun

-foresaid

-foresail

-foreshadow

-foreshadowed

-foreshadower

-foreshadowing

-foreshadows

-foreshank

-foresheet

-foreshore

-foreshorten

-foreshortens

-foreshow

-foreside

-foresightful

-foreskin

-forespeak

-forestage

-forestal

-forestation

-forestay

-forestial

-foreswear

-foresworn

-foretaste

-foretellable

-forethoughtfully

-forethoughtfulness

-forethougtful

-foretime

-foretoken

-forevermore

-forewoman

-foreworn

-foreyard

-forfeitable

-forgather

-forgeability

-forgeable

-forgetter

-forgiveable

-forgiveably

-forgoes

-forgone

-forjudge

-forkful

-forkier

-forklike

-forky

-forma

-formable

-formalin

-formalist

-formalistic

-formalistically

-formational

-formfitting

-formful

-formidability

-formless

-formlessly

-formlessness

-formulaically

-formulary

-formyl

-fornicate

-fornicated

-fornicates

-fornicating

-fornications

-fornicator

-fornicators

-forrader

-forrarder

-forsooth

-forspent

-forswore

-forsworn

-fortalice

-fortin

-fortman

-fortuity

-fortyfold

-forwent

-forworn

-fossate

-fossorial

-fosterage

-fosterite

-fosterling

-fosterlings

-fou

-foudroyant

-foundational

-foundationally

-foundationless

-founderous

-foundress

-foundrous

-fourdrinier

-foxily

-foxtrot

-foxtrot's

-foxtrots

-fracas

-fracted

-fractionate

-fractionates

-fractionating

-fractionations

-fractionator

-fractionators

-frag

-fragged

-fragging

-fragility

-fragmental

-fragmentally

-fragmentate

-fragmentated

-fragmentates

-fragmentating

-fragmentations

-fragrancy

-frags

-framable

-frambesia

-frameable

-franca

-francaise

-francesca

-francesco

-franchisee

-franchisor

-francie

-francois

-frangibility

-frangible

-frangipani

-frankincense

-frankpledge

-franny

-frap

-frappe

-frapping

-frat

-frater

-fraternalism

-fratricidal

-fratricide

-fraudulence

-frayne

-freakier

-freaky

-freckly

-fredrick

-freeboard

-freedwoman

-freehearted

-freeheartedly

-freeload

-freeloader

-freemasonry

-freestanding

-freestyle

-freethink

-freethinker

-freethinking

-freewill

-freida

-freightage

-frenchification

-frenchify

-frenetically

-frequence

-frequentation

-frequentations

-frequentative

-frequentatives

-freshet

-fretwork

-friability

-friary

-fribble

-fribbled

-fribbles

-fribbling

-fricassee

-fridge

-fridge's

-fridges

-frig

-frigging

-frigidity

-frigorific

-frillery

-fringier

-fringy

-frippery

-friskily

-frisson

-frissons

-frit

-fritillary

-frito

-fritted

-fritting

-frivol

-frizz

-frizzier

-frizzily

-frizziness

-frizzlier

-frizzly

-frizzy

-frogman

-frogmen

-frolick

-frolicked

-frolicks

-frolicsome

-frolicsomely

-frolicsomeness

-frond

-frond's

-fronded

-frondeur

-frondose

-frondosely

-fronds

-frontality

-frontispiece

-frontispieces

-frontless

-fronton

-frostily

-frostwork

-frothily

-froths

-frottage

-froufrou

-froward

-frowardly

-frowardness

-frowsier

-frowstier

-frowsty

-frowsy

-fructification

-fructifications

-fructify

-fructose

-fructose's

-fructoses

-fructuous

-fructuously

-fruitage

-fruitcake

-fruitier

-fruitlet

-fruity

-frump

-frumpier

-frumpish

-frumps

-frumpy

-fryer

-ft

-ftp

-ftper

-ftpers

-ftping

-ftpings

-ftps

-fucose

-fucus

-fuddle

-fuddled

-fuddles

-fuddling

-fugacity

-fugal

-fugally

-fuguist

-fulbright

-fulcra

-fulgent

-fulgently

-fulgurant

-fulgurate

-fulgurated

-fulgurates

-fulgurating

-fulguration

-fulgurations

-fulgurous

-fuliginous

-fuliginously

-fullmouthed

-fulminant

-fulminator

-fulminators

-fulness

-fum

-fumarate

-fumarole

-fumigator

-fumigators

-fumy

-funambulist

-functionalistic

-functionless

-functorial

-fundament

-fundamentalistic

-fundraiser

-fundraiser's

-fundraisers

-fundraising

-funerary

-fungibility

-fungicidal

-fungicidally

-fungicide

-fungiform

-fungo

-fungoes

-fungous

-funicular

-funiculus

-funigating

-funkier

-funkiness

-funky

-funnelform

-funning

-funnyman

-furbearer

-furbelow

-furcate

-furcated

-furcately

-furcates

-furcating

-furcation

-furcations

-furcula

-furcular

-furfural

-furless

-furloughs

-furmity

-furriery

-furtherance

-furuncle

-furuncular

-furunculosis

-furunculous

-furze

-fusee

-fusee's

-fusees

-fusibility

-fusil

-fusile

-fusileer

-fusilier

-fusionist

-fussbudget

-fussbudgety

-fusspot

-fustian

-fustians

-fustigate

-fustigated

-fustigates

-fustigating

-fustigation

-fustigations

-fustily

-futilitarian

-futilitarianism

-futureless

-futurism

-futuristic

-futuristically

-futurity

-gabber

-gabbier

-gabble

-gabbled

-gabbler

-gabbles

-gabbling

-gabbro

-gabby

-gaberdine

-gabfest

-gabfests

-gadabout

-gadabouts

-gadded

-gadder

-gadding

-gadgeteer

-gadgeteers

-gadgety

-gadolinium

-gadwall

-gadzooks

-gaff

-gaffs

-gaga

-gage

-gages

-gagger

-gagman

-gagmen

-gagster

-gagsters

-gaillardia

-gaingiving

-gainless

-gainlessness

-gainsay

-gainsayer

-galactopyranose

-galactopyranoside

-galactopyranosides

-galactopyranosyl

-galactose

-galahad

-galavant

-gallberry

-gallbladder

-galleon

-galleons

-gallet

-gallied

-gallinule

-gallopade

-gallow

-gallus

-galluses

-galore

-galosh

-galoshed

-galoshes

-galoshing

-galumph

-galvanically

-galvanometric

-gam

-gamekeeper

-gamekeepers

-gamesmanship

-gamesome

-gamesomely

-gamesomeness

-gamester

-gamete

-gamete's

-gametes

-gametic

-gametically

-gamey

-gamic

-gamier

-gamily

-gamin

-gamine

-gaminess

-gamming

-gammon

-gamy

-ganglioside

-gangliosides

-gangplow

-gangrenous

-gangsterism

-gannet

-gantlet

-gapping

-gappy

-gar

-garageman

-garagemen

-garde

-gardenful

-garlicky

-garnett

-garnishable

-garnishee

-garnishees

-garnishment

-garnishments

-garniture

-garnitures

-garotte

-garrote

-garroted

-garroter

-garrotes

-garroting

-garrots

-garrulity

-garth

-gasbag

-gasholder

-gashouse

-gaslit

-gasogene

-gasolene

-gasolier

-gasolinic

-gasometer

-gasometer's

-gasometers

-gasses

-gasset

-gast

-gastight

-gastightness

-gastness

-gastral

-gastrectomy

-gastrin

-gastritis

-gastrogenic

-gastrogenous

-gastronomic

-gastronomical

-gastronomically

-gastronomist

-gastrulate

-gastrulation

-gasworker

-gasworks

-gat

-gatefold

-gatekeeper

-gatekeeper's

-gatekeepers

-gatepost

-gatsby

-gaucherie

-gaucheries

-gaud

-gauded

-gaudery

-gaudily

-gauding

-gauds

-gaugeably

-gaum

-gaums

-gauntley

-gaur

-gauzelike

-gauzily

-gauziness

-gauzy

-gavotte

-gavottes

-gawkily

-gawkish

-gawkishly

-gawkishness

-gayety

-gazebo

-gazebo's

-gazebos

-gazpacho

-gazpacho's

-gearbox

-gearless

-gearshift

-geary

-gecko

-geegaw

-geezer

-gehrig

-gelant

-gelate

-gelated

-gelates

-gelating

-gelation

-gelid

-gelidity

-gelidly

-gelin

-geminal

-geminally

-geminate

-geminately

-gemination

-gemmate

-gemmated

-gemmates

-gemmating

-gemmation

-gemming

-gemsbok

-gemstone

-gemstone's

-gemstones

-gendarme

-gendarmerie

-genealogical

-genealogically

-genealogist

-generable

-generale

-generalship

-generalships

-generatrix

-genetical

-geniality

-genic

-genically

-geniculate

-geniculated

-geniculately

-genii

-genital

-genital's

-genitalia

-genitalic

-genitally

-genitals

-genocidal

-genocide

-genocides

-genome

-genome's

-genomes

-genotypic

-genotypical

-genotypically

-genotypicity

-genteelism

-gentilesse

-gentlefolk

-gentlefolks

-gentlemanlike

-gentlemanlikeness

-gentrice

-genuflect

-genuflected

-genuflecting

-genuflection

-genuflectory

-genuflects

-geocentrically

-geochemist

-geochronologic

-geochronological

-geochronologically

-geochronologist

-geochronometric

-geochronometry

-geode

-geode's

-geodes

-geodesist

-geodesy

-geodetical

-geodetically

-geoduck

-geohydrologic

-geohydrology

-geomagnetic

-geomagnetically

-geomagnetism

-geomancy

-geomantic

-geomorphic

-geophyte

-geopolitician

-geoponic

-geoponics

-georgic

-geoscience

-geostrategic

-geostrategist

-geostrategy

-geostrophic

-geostrophically

-geothermal

-geothermally

-geothermic

-geotropic

-geotropically

-geotropism

-geriatrician

-geriatricians

-geriatrist

-germania

-germfree

-germier

-germinability

-germproof

-germy

-gerome

-gerontic

-gerontocracy

-gerrymander

-gerrymandered

-gerundial

-gestational

-gesticulator

-gesticulators

-gesticulatory

-gestural

-getatable

-getup

-getups

-gewgaw

-ghastful

-ghastfully

-ghazal

-ghazals

-ghee

-ghostwrite

-ghostwriter

-ghosty

-gianthood

-gianthoods

-giantism

-giantisms

-giantlike

-gib

-gibberellin

-gibbing

-gibbosity

-gibby

-giddings

-gigantesque

-gigantically

-gigantism

-gigantisms

-giggly

-gigolo

-gigot

-gigots

-gildas

-gimbal

-gimbals

-gimcrackery

-gimlet

-gimlet's

-gimlets

-gimmal

-gimmickry

-gimmicky

-gimp

-gingersnap

-gingery

-gingko

-gioconda

-giraffish

-girlhood

-girlhoods

-girly

-girn

-giro

-gismo

-gismos

-givable

-gizzard

-gizzard's

-gizzards

-glaciologic

-glaciological

-glaciologist

-glaciology

-glacis

-gladded

-gladding

-gladiatorial

-gladiola

-gladsome

-gladsomely

-gladsomeness

-glady

-glandered

-glandless

-glans

-glarier

-glary

-glassblower

-glassblowing

-glassful

-glasshouse

-glassily

-glassine

-glassmaker

-glassmaking

-glasswork

-glassworker

-glassworks

-glazier

-glaziery

-gleamy

-gleanable

-gleesome

-glibber

-glibbest

-glioma

-glissade

-glittery

-gloam

-gloamed

-gloaming

-gloams

-globalism

-globalist

-globalists

-glom

-glomerular

-glomerulate

-glomming

-gloms

-glossarial

-glossarist

-glossily

-glossographer

-glossolalia

-gluconyl

-glucopyranosyl

-glucosamine

-glueing

-gluily

-glumaceous

-glummer

-glummest

-glutamate

-glutamic

-glutamine

-gluteal

-gluttonous

-gluttonously

-gluttonousness

-gluttony

-glyceryl

-glycine

-glycocholate

-glycocholates

-glycoconjugate

-glycoconjugates

-glycodeoxycholate

-glycodeoxycholates

-glycogen

-glycolipid

-glycolipids

-glycopeptide

-glycopeptides

-glycoprotein

-glycoproteins

-glycosidase

-glycosidases

-glycosidic

-glycosphingolipid

-glycosphingolipids

-glycosyl

-glycosylate

-glycosylated

-glycosylates

-glycosylation

-glynn

-gnarly

-gnatty

-gneissic

-gnomic

-gnomish

-gnomon

-gnosticism

-goalie

-goalkeeper

-goalpost

-goaltender

-goaltending

-goatish

-goatlike

-gobbledegook

-godchild

-goddaughter

-godded

-godding

-godforsaken

-godhood

-godkin

-godling

-godot

-godwit

-goethite

-gog

-goggly

-gogo

-goitrogen

-goitrogenic

-golda

-goldbeater

-goldbeating

-goldbrick

-goldbug

-goldeneye

-golem

-gomez

-gonad

-gonad's

-gonadal

-gonadotropic

-gonads

-gondolier

-gondoliers

-goo

-goodish

-goodnight

-goodwife

-goofball

-goofily

-googol

-googolplex

-goon

-gooseflesh

-gooseneck

-goosenecked

-goosey

-gorget

-gorgonian

-gorgously

-gorier

-gorse

-gory

-gossamery

-gossipry

-gossipy

-goucher

-gouda

-goulash

-gourde

-gourmandism

-gouty

-governable

-governessy

-governmentalism

-governmentalist

-governorate

-governorates

-governorship

-goyish

-goys

-grabbier

-grabble

-grabbled

-grabbler

-grabbles

-grabbling

-grabby

-graceless

-gracelessly

-gracelessness

-gracie

-gracileness

-gracility

-grackle

-gradable

-gradational

-gradationally

-gradeless

-gradiometer

-gradiometer's

-gradiometers

-gradualism

-graduator

-graftage

-grafton

-grainier

-graininess

-grainy

-gramicidin

-gramophone

-gramophone's

-gramophones

-gramps

-grandad

-grandaddy

-grandam

-grandame

-granddad

-grande

-grandee

-grandiloquence

-grandiosity

-grandioso

-grandparental

-grandparenthood

-grandsire

-grandsires

-grangerism

-granitic

-granivorous

-grantable

-grantsman

-grantsmanship

-granulator

-granulite

-granulitic

-granulocyte

-granulocytes

-grapeshot

-graphemic

-graphemically

-graphemics

-graphitic

-graphological

-graphologist

-graphology

-graphophone

-grapier

-grapnel

-grapy

-gras

-grasshopper

-grasshopper's

-grasslike

-grata

-graticule

-gratin

-gratulating

-graveless

-gravesend

-gravidity

-gravimeter

-gravimeter's

-gravimeters

-gravimetrically

-gravimetry

-gravitometer

-gravitometer's

-gravitometers

-graviton

-graviton's

-gravitons

-gravure

-grayish

-grayling

-graylings

-graywacke

-grazable

-grazeable

-grazier

-graziers

-greaseless

-greasepaint

-greasepaints

-greaseproof

-greasewood

-greasily

-greathearted

-greatheartedly

-greatheartedness

-greave

-greaves

-grebe

-greenback

-greenbacker

-greenbackism

-greengrocery

-greenhorn

-greenlet

-greenling

-greenroom

-greensward

-greentree

-greenware

-greeny

-gregarine

-gregarinian

-gremlin

-gremlin's

-gremlins

-gremmie

-gremmies

-gremmy

-grenadier

-grenadine

-grenier

-grep

-grewsome

-greylag

-gridlock

-gridlock's

-griefless

-grievant

-grillage

-grille

-grillroom

-grimier

-grimines

-grimmest

-grimy

-gringo

-gringos

-grinner

-grippe

-grippy

-gris

-gristle

-grith

-gritted

-grittily

-gritting

-grog

-groggily

-grogshop

-groomsman

-groot

-groovier

-groovy

-grosse

-grossular

-grossularite

-grotesquerie

-grotesquery

-grouch

-grouch's

-grouched

-grouches

-grouchily

-grouching

-groundling

-groundmass

-groundnut

-groundout

-groundsel

-groundsheet

-groundskeep

-groundwater

-groupable

-groupie

-groupie's

-groupies

-groupoid

-grubber

-grubbily

-grubstake

-grubstaker

-gruel

-grumbly

-grummet

-grump

-grumped

-grumpier

-grumpily

-grumpiness

-grumping

-grumps

-grumpy

-grunion

-gruntle

-gruntled

-gruntles

-gruntling

-grusky

-gryphon

-gtad

-guacamole

-guadalupe

-guanidine

-guanine

-guarantor

-guardant

-guardrail

-guardroom

-guardsman

-guava

-guck

-gudgeon

-guerdon

-guesstimate

-guff

-guggle

-guggled

-guggles

-guggling

-guhleman

-guidable

-guideway

-guignol

-guildship

-guildsman

-guileful

-guilefully

-guilefulness

-guillemot

-guillotine

-guillotine's

-guillotined

-guillotines

-guillotining

-guimet

-guimpe

-guisard

-gul

-gules

-gullable

-gullibly

-gulosity

-gumboil

-gumdrop

-gumdrop's

-gumdrops

-gummatous

-gummed

-gummer

-guncotton

-gundog

-gunlock

-gunmetal

-gunnar

-gunnysack

-gunplay

-gunpoint

-gunpowdery

-gunrunner

-gunrunning

-gunsel

-gunship

-gunsmith

-guppies

-guppy

-gurney

-gurneys

-gushier

-gushily

-gushiness

-gushy

-gustation

-gustative

-gustativeness

-gustatorial

-gustatorially

-gustatorily

-gustatory

-gustily

-gustoes

-gutless

-gutlessness

-guttate

-guttation

-guttersnipe

-guttersnipish

-guttier

-gutturalism

-gutty

-gymkhana

-gymnastically

-gymnosophist

-gypseous

-gyral

-gyrational

-gyrator

-gyrators

-gyratory

-gyre

-gyrene

-gyrfalcon

-gyrofrequency

-gyromagnetic

-gyron

-gyroplane

-gyroscopically

-gyrostat

-haberdasher

-habiles

-habiliment

-habilitate

-habilitated

-habilitates

-habilitating

-habilitation

-habilitations

-habitability

-habitably

-habitude

-habitudes

-habitus

-hac

-hackberry

-hackmatack

-hackstaff

-hadal

-haddix

-hade

-hades

-hadst

-hafiz

-haft

-haggadic

-haggadist

-haggadistic

-haggis

-haggish

-hagiographies

-hagiography

-hagiography's

-hah

-hairbreadth

-hairbrush

-haircloth

-haircutter

-haircutting

-hairlike

-hairpiece

-hairsbreadth

-hairsplitter

-hairsplitting

-hairspring

-hairspring's

-hairsprings

-hairstreak

-hairstyle

-hairstyle's

-hairstyles

-hairstyling

-hairstylist

-halberdier

-halfpennies

-halfpenny

-halftone

-halidom

-halitosis

-halliard

-halliards

-hallinan

-hallo

-halloo

-halloos

-halluces

-hallucinational

-hallucinatory

-hallucinogen

-hallucinogenic

-hallucinogens

-hallucinosis

-halma

-halocline

-haloes

-halogenate

-halogenation

-halogenous

-halomorphic

-halomorphism

-halpern

-haltere

-halvah

-halyard

-hamate

-hamey

-hammerlock

-hammertoe

-hammett

-hammier

-hammily

-hamminess

-hammy

-hamstring

-hamstrung

-handball

-handbill

-handbreadth

-handcar

-handcart

-handcraft

-handcraftman

-handcraftsman

-handcrank

-handcranks

-handfast

-handfasting

-handgrip

-handleless

-handline

-handlist

-handmaid

-handpick

-handpicked

-handpress

-handprint

-handprint's

-handprints

-handsaw

-handsbreadth

-handsful

-handshook

-handspring

-handsprings

-handwaving

-handwheel

-handwheels

-handwork

-handworker

-handwoven

-handwrought

-hangdog

-hangnail

-hangnail's

-hangnails

-hangtag

-hangup

-hankie

-hankies

-hanky

-hant

-hanter

-haole

-hapchance

-hapgood

-haphazardry

-haploid

-haploidy

-haplology

-happenchance

-happing

-hardback

-hardbake

-hardball

-hardboot

-hardbound

-hardcase

-hardcopies

-hardcopy

-hardcover

-hardcovers

-hardfisted

-hardfistedness

-hardhanded

-hardhandedness

-hardhead

-hardheaded

-hardheadedly

-hardheadedness

-hardhearted

-hardheartedly

-hardheartedness

-hardihood

-hardiment

-hardmouthed

-hardpan

-hardstand

-hardstanding

-harebrain

-harebrained

-harelipped

-harlequin

-harlequinade

-harlotry

-harmonica

-harmonica's

-harmonical

-harmonically

-harmonicalness

-harmonicas

-harmonium

-harridan

-harrumphs

-harvestable

-harvesttime

-haskell

-haskins

-hassock

-hassocks

-hast

-hastate

-hastately

-hatband

-hatbox

-hatchability

-hatchable

-hatcheck

-hatchling

-hatchment

-hatchments

-hatchure

-hatter

-hatting

-haulageway

-haulaway

-haulier

-hauser

-hausfrau

-hautboy

-hautboys

-haute

-hauteur

-haversack

-haversack's

-haversacks

-havocked

-havocking

-hawkish

-hawkishly

-hawkishness

-haycock

-hayfork

-haymaker

-haymaking

-haymow

-hayrack

-hayrick

-hayride

-hayseed

-hayseeds

-haywire

-haywood

-hazily

-headachy

-headband

-headcount

-headfirst

-headforemost

-headgroup

-headgroup's

-headgroups

-headhunter

-headily

-headlock

-headman

-headman's

-headmastership

-headmen

-headmen's

-headmistress

-headmost

-headnote

-headpiece

-headpin

-headrest

-headsail

-headshrinker

-headspring

-headstall

-headstock

-headstream

-headstrong

-headwaiter

-headwind

-headwind's

-headwinds

-headword

-headwork

-healths

-heartbroken

-hearthstone

-heartrending

-heartrendingly

-heartsease

-heartsick

-heartsickness

-heartsome

-heartsomely

-heartsore

-heartstring

-heartstrings

-heartwarming

-heartwood

-heathendom

-heathenism

-heathenry

-heathery

-heathless

-heathlike

-heathman

-heatless

-heatstroke

-heavyhearted

-heavyheartedly

-heavyheartedness

-heavyset

-hebdomad

-hebdomadal

-hebdomadally

-hebetation

-hebetude

-hebetudinous

-hectare

-hectically

-hectograph

-hectographic

-hedda

-heddle

-heddler

-hedgehop

-hedgehopper

-hedgepig

-hedgerow

-hedonic

-hedonically

-hedonics

-hedonistically

-hee

-heelball

-heelless

-heelpiece

-heeltap

-heftily

-hegel

-heidegger

-heigh

-heinze

-heirless

-heirloom

-heirship

-heiser

-heldentenor

-heliacal

-heliacally

-helicoid

-helicoidal

-helicopt

-helicopted

-helicopters

-helicopting

-heliochrome

-heliogram

-heliogram's

-heliograms

-heliograph

-heliographer

-heliographic

-heliography

-heliogravure

-heliolatrous

-heliolatry

-heliometer

-heliometer's

-heliometers

-heliometric

-heliometrically

-heliophyte

-heliopolis

-heliostat

-heliotaxis

-heliotropic

-heliotropically

-heliotropism

-heliozoan

-heliozoic

-helipad

-heliport

-helistop

-hellbox

-hellbroth

-hellcat

-hellebore

-hellgrammite

-hellhole

-hellhound

-hellion

-helmetlike

-helmsmanship

-helot

-helotism

-helotry

-helpmeet

-helve

-helved

-helves

-helving

-hemacytometer

-hemacytometer's

-hemacytometers

-hemal

-hematic

-hematin

-hematinic

-hematoblast

-hematoblastic

-hematocrit

-hematogenous

-hematologic

-hematological

-hematologist

-hematology

-hematoma

-hematophagous

-hemihedral

-hemihedrally

-hemihydrate

-hemihydrated

-hemimetabolic

-hemimetabolism

-hemimetabolous

-hemimorphic

-hemimorphism

-hemimorphite

-hemiparasite

-hemiparasitic

-hemiplegia

-hemiplegic

-hemispheral

-hemline

-hemmer

-hemoblast

-hemodynamically

-hemodynamics

-hemoflagellate

-hemoglobinic

-hemoglobinopathy

-hemoglobinous

-hemolymph

-hemolysin

-hemophilia

-hemophiliac

-hemophilic

-hemoprotein

-hemoptysis

-hemorrhagic

-hemorrhoid

-hemorrhoidal

-hemosiderin

-hemostasis

-hemostatic

-hempel

-hemus

-henae

-henbane

-henceforward

-hendecasyllabic

-hendecasyllable

-hendiadys

-hendrix

-henequen

-henna

-hennery

-henotheism

-henotheist

-henotheistic

-hent

-hep

-heparin

-hepatic

-hepatica

-hepatocellular

-hepatocyte

-hepatocyte's

-hepatocytes

-hepatoma

-heptagon

-heptagonal

-heptameter

-heptameter's

-heptameters

-heraldic

-heraldically

-heraldry

-herbaceous

-herbage

-herbalist

-herbarium

-herbicidal

-herbicidally

-herbicide

-herbicide's

-herbicides

-herblike

-herdic

-herdlike

-herdsmen

-hereaway

-hereaways

-hereditament

-hereditarian

-hereditarianism

-hereditarily

-hereinabove

-hereinbefore

-hereinbelow

-hereon

-heretical

-heretically

-hereticalness

-hereto

-hereunder

-hereupon

-heritability

-hermaphrodite

-hermaphrodite's

-hermaphrodites

-hermaphroditic

-hermaphroditically

-hermaphroditism

-hermatypic

-hermeneutic

-hermeneutical

-hermeneutically

-hermetical

-hermetically

-hermeticism

-hermetism

-hermetist

-hermitage

-hermitage's

-hermitages

-hermitism

-hern

-hernandez

-hernia

-hernia's

-hernial

-hernias

-herniate

-herniated

-herniates

-herniating

-herniation

-herniations

-heroical

-heroicomic

-heroicomical

-heroinism

-heronry

-herpesvirus

-herpetic

-herpetologic

-herpetological

-herpetologically

-herrington

-hersey

-herty

-hesiometer

-hesiometer's

-hesiometers

-hest

-heterarchy

-heterecious

-hetero

-heteroatom

-heteroautotrophic

-heterocycle

-heterocyclic

-heterocyst

-heterodox

-heterodoxy

-heteroecious

-heteroecism

-heterogamete

-heterogametic

-heterogenesis

-heterogenetic

-heterogeny

-heterogonic

-heterogony

-heterograft

-heterologously

-heterology

-heterolysis

-heterolytic

-heteromorphic

-heteromorphism

-heteromorphous

-heteronomous

-heteronomously

-heteronomy

-heterophil

-heterophile

-heterophony

-heterophyllous

-heterophylly

-heterophyte

-heterophytic

-heteroploid

-heteroploidy

-heteropolar

-heteropolarity

-heteropterous

-heteroscedasticity

-heterosexuality

-heterosis

-heterotic

-heterotopic

-heterotroph

-heterotrophic

-heterotrophically

-heterotypic

-heterotypical

-heterozygosis

-heterozygosity

-heterozygote

-hexad

-hexade

-hexadic

-hexagram

-hexahedron

-hexahydrate

-hexahydrated

-hexahydrite

-hexamethonium

-hexane

-hexaploid

-hexaploidy

-hexapod

-heywood

-hibernal

-hibernator

-hibiscus

-hickok

-hidalgo

-hidebound

-hidrosis

-hidrotic

-hie

-hieing

-hierarch

-hieratically

-hieroglyph

-hieroglyphical

-hieroglyphically

-higgle

-higgled

-higgler

-higgles

-higgling

-highbinder

-highborn

-highbred

-highbrow

-highbrowed

-highbrowism

-highline

-highlines

-hilding

-hillary

-hillocky

-hillyer

-hilum

-himation

-hindbrain

-hindquarter

-hingism

-hinkle

-hipbone

-hipped

-hipper

-hippest

-hippie

-hippocampal

-hippocampus

-hippocras

-hippogriff

-hipsterism

-hirey

-hirsute

-hirsuteness

-hirsutism

-hirsutulous

-hist

-histaminase

-histamine

-histaminergic

-histaminic

-histidine

-histologic

-histological

-histologically

-histologist

-histolysis

-histolytic

-histopathologic

-histopathological

-histopathologically

-histopathologist

-histopathology

-histophysiologic

-histophysiological

-histophysiology

-histoplasmosis

-historicist

-historiographer

-historiographic

-historiographical

-historiographically

-histrionically

-hithermost

-hitherward

-hiveless

-hmm

-hoarsen

-hoarsened

-hoarsening

-hobbledehoy

-hobday

-hobgoblin

-hobnail

-hobnailed

-hobnob

-hobnobbed

-hobnobber

-hobnobbing

-hobnobs

-hockaday

-hocus

-hocused

-hocusing

-hocussed

-hocussing

-hod

-hodad

-hodaddy

-hodoscope

-hoecake

-hoedown

-hoeing

-hogback

-hoggish

-hoggishly

-hoggishness

-hogshead

-hogwash

-hoi

-hoising

-hoistman

-hoistmen

-hokan

-hoke

-hokeypokey

-hoking

-hokum

-holabird

-holandric

-holandry

-holdall

-holdalls

-holdback

-holdfast

-holdout

-holdouts

-holeable

-holey

-holidaymaker

-holily

-holism

-holistically

-hollas

-hollo

-holloa

-holloware

-holoblastic

-holoblastically

-hologamous

-hologamy

-holograph

-holographic

-holographically

-hologynic

-hologyny

-holohedral

-holometabolism

-holometabolous

-holomyarian

-holophrastic

-holophytic

-holotype

-holotypic

-holozoic

-holt

-holzman

-hombre

-homburg

-homebody

-homebred

-homegrown

-homelike

-homeobox

-homeroom

-homesite

-homestretch

-hometown

-homey

-homeyness

-homier

-homiletic

-homiletical

-homiletically

-homiletics

-hominess

-hominid

-hominoid

-hominy

-homocercal

-homochromatic

-homoerotic

-homoeroticism

-homogametic

-homogamic

-homogamous

-homogeny

-homograft

-homograph

-homographic

-homoiotherm

-homoiothermal

-homoiothermic

-homolog

-homologate

-homologation

-homological

-homologically

-homolographic

-homolysis

-homolytic

-homomorphy

-homonuclear

-homonymic

-homonymous

-homonymously

-homonymy

-homoousian

-homophile

-homophobia

-homophone

-homophonic

-homophonous

-homophony

-homophyly

-homoplastic

-homoplastically

-homoplasy

-homopolar

-homopolymer

-homopteran

-homopterous

-homorganic

-homoscedastic

-homoscedasticity

-homosexuality

-homosporous

-homospory

-homothallic

-homothallism

-homotopy

-homotransplant

-homotransplantation

-homozygosis

-homozygosity

-homozygote

-homozygotic

-homunculi

-homunculus

-homy

-honcho

-honchos

-hondo

-honied

-honkeys

-honkie

-honoraria

-honorarily

-honorarium

-honorific

-honorific's

-honorifically

-honorifics

-hoodlike

-hoodlumish

-hoodlumism

-hoodoo

-hoodooism

-hoodoos

-hooey

-hoofbeat

-hoofprint

-hoofprint's

-hoofprints

-hookah

-hookey

-hookeys

-hooklet

-hooky

-hootch

-hootenanny

-hophead

-hopi

-hoplite

-hopple

-hora

-horary

-hord

-horehound

-horizonal

-hormonal

-hormonally

-hormonelike

-hornbeam

-hornbeams

-hornbill

-hornbills

-hornblende

-hornless

-hornlessness

-hornlike

-hornmouth

-hornpipe

-hornpipe's

-hornpipes

-hornswoggle

-hornswoggled

-hornswoggles

-hornswoggling

-horntail

-hornwort

-horologer

-horologic

-horological

-horologist

-horologists

-horology

-horrent

-horrific

-horrifically

-horsecar

-horsehide

-horselaugh

-horsemint

-horseradish

-horseradishes

-horseshit

-horsewhip

-horsewomen

-horsey

-horsier

-horsily

-horsiness

-horsy

-hortative

-hortatively

-hortatory

-horticultural

-horticulturally

-horticulturist

-hosanna

-hostel

-hosteler

-hostels

-hostler

-hotblood

-hotchpot

-hotchpotch

-hotelier

-hotfeet

-hotfoot

-hotfoot's

-hotfoots

-hotshot

-hottish

-houri

-housebound

-houseboy

-houseboys

-houseclean

-housecleaner

-housecleaning

-housecoat

-housedress

-housefather

-housefathers

-housefront

-houseful

-houseguest

-houseless

-houselessness

-houselights

-housemaid

-housemaids

-houseman

-housemate

-housemate's

-housemates

-housemother

-housemothers

-houseplant

-houseroom

-houseward

-housewarming

-housewifery

-howbeit

-howsoever

-howsomever

-hoyden

-hoydenish

-hoyle

-hubcap

-hubcap's

-hubcaps

-hubristic

-hubristically

-huck

-huckaback

-hucksterism

-hud

-huey

-huff

-huffier

-huffiness

-huffish

-huffy

-hugeous

-hugeously

-huggable

-hugger

-huggers

-hullabaloo

-hullabalooed

-hullabalooing

-hullabaloos

-hullo

-humanistically

-humanitarianism

-humankind

-humanlike

-humanoid

-humbug

-humbugged

-humbuggery

-humbugging

-humdinger

-humdrum

-humectant

-humeral

-humeri

-humerus

-humic

-humidor

-humification

-humifications

-humified

-hummable

-hummer

-hummocky

-humoresque

-humorism

-humorism's

-humorisms

-humoristic

-humoristical

-humoristical's

-humoristicals

-humoristics

-humph

-humpier

-humpty

-humpy

-hunchback

-hunchback's

-hunchbacked

-hunchbacks

-hundredweight

-hundredweights

-hup

-hurley

-hurly

-hurtless

-hurty

-hussar

-hussies

-hussy

-hustings

-hutzpah

-huzzah

-hyacinthine

-hyaena

-hyaenas

-hyalin

-hyaline

-hyalite

-hyaloid

-hyaloplasm

-hybridism

-hybridity

-hybris

-hydra

-hydrangea

-hydranth

-hydrator

-hydraulical

-hydrazide

-hydrazine

-hydric

-hydrically

-hydrobiological

-hydrobiologist

-hydrobiology

-hydrocarbonaceous

-hydrocarbonic

-hydrocarbonous

-hydrocephalic

-hydrocephalus

-hydrocephaly

-hydrocyanic

-hydrodynamical

-hydrodynamically

-hydrodynamicist

-hydroelectrically

-hydroelectricity

-hydrofoil

-hydroformer

-hydroforming

-hydrographer

-hydrographic

-hydrographically

-hydrography

-hydroid

-hydrokinetic

-hydrokinetics

-hydrolase

-hydrologic

-hydrologist

-hydrolysate

-hydrolytic

-hydrolytically

-hydromagnetic

-hydromagnetics

-hydromancy

-hydromechanical

-hydromechanics

-hydrometric

-hydrometrical

-hydrometry

-hydromorphic

-hydronic

-hydronically

-hydronium

-hydropathic

-hydropathically

-hydropathy

-hydroperoxide

-hydrophane

-hydrophile

-hydrophobicity

-hydrophone

-hydrophyte

-hydrophytic

-hydroplane

-hydroplaner

-hydroponic

-hydroponically

-hydroponics

-hydroscope

-hydrosere

-hydrosol

-hydrosolic

-hydrospace

-hydrospheric

-hydrostatical

-hydrostatically

-hydrosulfide

-hydrosulfite

-hydrotactic

-hydrotherapy

-hydrothorax

-hydrotropic

-hydrotropically

-hydrotropism

-hydroxylic

-hydroxyproline

-hydrozoan

-hyenic

-hyenoid

-hygienically

-hygienist

-hygienists

-hygrograph

-hygrometric

-hygrometry

-hygrophyte

-hygrophytic

-hygroscope

-hygroscopically

-hygroscopicity

-hyla

-hymenal

-hymeneal

-hymeneally

-hymenial

-hymenium

-hymnary

-hymnbook

-hymnody

-hymnology

-hyperacid

-hyperacidity

-hyperactive

-hyperactivity

-hyperbaric

-hyperbarically

-hyperbolical

-hyperbolist

-hyperborean

-hypercharge

-hypercritic

-hypercritical

-hypercritically

-hypercriticism

-hypereutectic

-hyperglycemia

-hyperglycemic

-hyperirritability

-hyperirritable

-hyperkeratosis

-hyperkeratotic

-hyperkinesis

-hyperkinetic

-hypermeter

-hypermeter's

-hypermeters

-hypermetric

-hypermetrical

-hypermetropia

-hypermetropic

-hypermetropical

-hypermetropy

-hypermnesia

-hypermnesic

-hypermorph

-hypermorphic

-hypermorphism

-hyperon

-hyperope

-hyperopia

-hyperopic

-hyperostosis

-hyperostotic

-hyperparasite

-hyperparasitic

-hyperparasitism

-hyperphagia

-hyperphysical

-hyperphysically

-hyperpituitarism

-hyperpituitary

-hyperplane

-hyperplanes

-hyperplastic

-hyperploid

-hyperploidy

-hypersensitive

-hypersensitiveness

-hypersensitivity

-hypersonic

-hypersonically

-hyperspace

-hypersurface

-hypertension

-hyperthermia

-hyperthermic

-hyperthyroid

-hyperthyroidism

-hypertonic

-hypertonicity

-hypertrophic

-hyperventilation

-hypha

-hyphal

-hyphenless

-hypnagogic

-hypnoanalysis

-hypnogenesis

-hypnogenetic

-hypnogenetically

-hypnogogic

-hypnoid

-hypnoidal

-hypnoses

-hypnotherapy

-hypnotism

-hypnotist

-hypnotists

-hypo

-hypocaust

-hypocentral

-hypochlorite

-hypochlorous

-hypochondria

-hypochondriac

-hypochondriacal

-hypochondriacally

-hypocoristic

-hypocoristical

-hypocoristically

-hypocritic

-hypocycloid

-hypodermically

-hypodermis

-hypoglycemia

-hypoglycemic

-hypoiodite

-hypomorphic

-hypos

-hypotension

-hypotensive

-hypothalmus

-hypothecate

-hypothecation

-hypothecator

-hypothenuse

-hypothermal

-hypothermic

-hypotonic

-hypotonically

-hypotonicity

-hypotrophy

-hypoxemia

-hypoxemic

-hypoxia

-hypoxic

-hypsography

-hypsometer

-hypsometer's

-hypsometers

-hypsometric

-hypsometry

-hysteretic

-hysteron

-iambus

-iambuses

-iatrogenic

-ibero

-ibex

-ibidem

-iceblink

-icebound

-icebreaker

-icecap

-icecap's

-icecaps

-icefall

-icehouse

-iceless

-iceman

-iceman's

-icemans

-ichneumon

-ichorous

-icily

-ickier

-icky

-iconically

-iconicity

-iconoclastic

-iconoclastically

-iconographer

-iconographic

-iconographical

-iconographically

-iconography

-iconolatry

-iconological

-iconology

-iconoscope

-icosahedra

-idealess

-idealistically

-ideality

-idealless

-idealogy

-ideational

-ideationally

-idem

-identic

-ideogram

-ideogram's

-ideogramic

-ideogrammatic

-ideogrammic

-ideograms

-ideograph

-ideographic

-ideographically

-ideography

-ideolect

-ideologic

-ideologue

-ideologues

-ideomotor

-ides

-idetic

-idiographic

-idiolectal

-idiomatically

-idiomorphic

-idiomorphically

-idiopathic

-idiopathically

-idioplasm

-idioplasmatic

-idioplasmic

-idiotical

-idioticalness

-idiotism

-idolater

-idolatrous

-idolatrously

-idolatrousness

-idyllically

-idyllist

-ie

-ignescent

-ignitable

-ignitible

-ignitor

-ignitron

-ignobility

-ignobly

-ignominiosness

-ignominy

-ignorable

-igor

-iguana

-ikon

-ilial

-illation

-illative

-illatively

-illaudable

-illaudably

-illegibility

-illegibly

-illiberal

-illiberalism

-illiberality

-illiberally

-illiberalness

-illimitability

-illimitably

-illiquid

-illiquidity

-illite

-illitic

-illogicality

-illon

-illuminable

-illuminance

-illuminant

-illuminati

-illuminator

-illuminators

-illuminism

-illuminist

-illus

-illusional

-illusionism

-illusionist

-illusionistic

-illusorily

-illust

-illustrational

-illuvial

-illuviate

-illuviation

-illuvium

-ilmenite

-im

-imaginal

-imaginarily

-imaginate

-imagism

-imagist

-imagistic

-imagistically

-imago

-imam

-imamate

-imaret

-imbecilic

-imbecility

-imbed

-imbibition

-imbibitional

-imbitter

-imbosom

-imbricate

-imbricately

-imbrication

-imbrown

-imbrue

-imbrued

-imbrute

-imbruted

-imbruting

-imdtly

-ime

-imidazole

-imide

-imidic

-imido

-imine

-imino

-imipramine

-imit

-imitational

-imitator

-immaculacy

-immane

-immanence

-immanency

-immanentism

-immanentist

-immanentistic

-immaterialism

-immaterialist

-immateriality

-immaturel

-immedicable

-immedicably

-immensurable

-immerge

-immerged

-immergence

-immerging

-immersible

-immesh

-immethodical

-immethodically

-immigrational

-imminency

-immingle

-immiscibility

-immiscible

-immiscibly

-immitigable

-immitigableness

-immitigably

-immittance

-immix

-immixture

-immoderacy

-immolate

-immolation

-immolator

-immoralist

-immotile

-immotility

-immunochemical

-immunochemically

-immunochemistry

-immunoelectrophoresis

-immunofluorescence

-immunofluorescent

-immunogenesis

-immunogenetic

-immunogenetically

-immunogenetics

-immunogenic

-immunogenically

-immunogenicity

-immunohematological

-immunohematology

-immunologic

-immunologist

-immunopathologic

-immunopathological

-immunopathologist

-immunopathology

-immunosuppression

-immunosuppressive

-immunotherapy

-immunotoxin

-immunotoxins

-immure

-immured

-immurement

-immures

-immuring

-immutability

-immutably

-impala

-impalement

-impalpability

-impalpably

-impanel

-imparadised

-imparity

-impartable

-impartible

-impartibly

-impartment

-impassability

-impassably

-impassibility

-impassible

-impassibly

-impassivity

-impeachable

-impeachment

-impeccability

-impecuniosity

-impecunious

-impecuniously

-impecuniousness

-impellor

-impendent

-impenitence

-impenitent

-impenitently

-imperate

-imperator

-imperatorial

-imperceptibility

-imperceptive

-imperceptiveness

-imperceptivity

-imperfectivity

-imperforate

-imperforated

-imperforates

-imperialistic

-imperialistically

-imperilment

-imperishability

-imperishably

-impermanency

-impermeability

-impermeably

-impermissibility

-impermissibly

-impersonality

-impersonator

-impertinence

-impertinency

-imperturbably

-impetrate

-impetrated

-impetrates

-impetrating

-impetration

-impetrations

-impetuosity

-impingement

-implacability

-implacably

-implantable

-implausibility

-implead

-implemental

-implode

-imploded

-implodes

-imploding

-implosion

-implosions

-implosive

-implosively

-impolitical

-impolitically

-imponderability

-imponderably

-importable

-importancy

-importunity

-imposthume

-imposture

-impoundment

-impracticability

-impracticably

-imprecatory

-impregnability

-impregnably

-impregnator

-impregnators

-impressibility

-impressibly

-impressionability

-impressionably

-impressional

-impressionistically

-imprimis

-imprisonable

-improbability

-improvability

-improvable

-improvably

-improvidence

-improvisator

-improvisatorial

-improvisatory

-improvisor

-imprudence

-impudicity

-impugnable

-impuissance

-impuissant

-imputability

-imputable

-imputative

-imputatively

-inadmissibly

-inadvertency

-inalienability

-inalienably

-inalterability

-inalterably

-inamorata

-inanition

-inapparent

-inappetence

-inapplicably

-inapposite

-inappositely

-inappositeness

-inaptitude

-inaugurator

-inaugurators

-inbound

-inbreathe

-incalculably

-incalescence

-incalescences

-incalescent

-incandesce

-incandesced

-incandescence

-incandesces

-incandescing

-incantational

-incantatory

-incapability

-incapacitator

-incardination

-incarnadine

-incase

-incaution

-incendiarism

-incertitude

-incessancy

-inchoate

-inchoately

-inchoateness

-inchoative

-inchoatively

-inchworm

-inchworm's

-inchworms

-incitant

-incitants

-incitation

-inclinable

-inclinational

-inclip

-includable

-includible

-incog

-incogitable

-incogitant

-incognita

-incognito

-incombustibility

-incommensurability

-incommensurably

-incommode

-incommodity

-incommunicability

-incommunicably

-incommunicative

-incommutably

-incompliant

-incompressibly

-incomputably

-inconceivability

-inconcinnity

-incondite

-inconscient

-inconsecutive

-inconsequence

-inconsequent

-inconsequentiality

-inconsolably

-inconsonant

-inconsumable

-inconsumably

-incontestability

-incontestably

-incontinency

-incontinent

-incontrovertibly

-inconveniency

-inconvertibly

-inconvincible

-incoordinate

-incoordination

-incorporator

-incorporeal

-incorporeity

-incorrigibility

-incorrigibly

-incorrupt

-incorrupted

-incorruptibly

-incorruptly

-incorruptness

-increate

-incrementalism

-incrementalist

-incrementalists

-increscent

-incriminate

-incriminated

-incriminates

-incrimination

-incriminatory

-incross

-incrossbred

-incrust

-incrustation

-incubational

-incubatory

-incudes

-inculcator

-inculpate

-inculpation

-inculpative

-inculpatory

-incult

-incumbency

-incumber

-incunabulum

-incurability

-incuriosity

-incurious

-incuriously

-incuriousness

-incurrence

-incurrent

-incurrer

-incurvate

-incurvated

-incurvates

-incurvating

-incurvation

-incurvature

-incurve

-incus

-incuse

-indagate

-indagation

-indagator

-indamine

-indecency

-indeclinable

-indecorum

-indefatigability

-indefatigably

-indefeasibility

-indefeasible

-indefeasibly

-indefectibility

-indefectible

-indefectibly

-indefensibility

-indefensibly

-indefinability

-indefinably

-indefinity

-indehiscence

-indehiscent

-indelibility

-indelicacy

-indemnifier

-indemnify

-indemonstrable

-indention

-independency

-indescribably

-indestructibility

-indestructibly

-indeterminably

-indeterminist

-indexical

-indican

-indicational

-indicatory

-indicia

-indictable

-indiction

-indictor

-indifferency

-indifferentism

-indifferentist

-indigen

-indigence

-indigene

-indigenes

-indigestibility

-indign

-indigotin

-indisciplinable

-indiscrete

-indiscussible

-indissociably

-indissolubility

-indissolubly

-indistinguishability

-indistinguishably

-indite

-indited

-inditer

-inditing

-indivertible

-indivertibly

-individualistically

-indivisibly

-indocile

-indocility

-indoctrinator

-indole

-indomitability

-indomitably

-indrawn

-indubitability

-indubitably

-inducibility

-indue

-indult

-indurate

-induration

-indurative

-indwell

-indweller

-indwelling

-inebriant

-inebriety

-inedible

-ineducability

-ineducable

-ineffability

-ineffably

-ineffaceability

-ineffaceably

-ineffectuality

-inelasticity

-inelegance

-ineliminable

-ineluctability

-ineluctably

-ineludible

-inenarrable

-ineptitude

-inequivalve

-inequivalved

-ineradicability

-ineradicably

-inerrancy

-inerrant

-inertance

-inestimably

-inexhaustibility

-inexhaustibly

-inexistence

-inexorability

-inexpedience

-inexpiably

-inexplicability

-inexpugnable

-inexpugnableness

-inexpugnably

-inexpungible

-inextinguishably

-inextricability

-infall

-infanta

-infantilism

-infantility

-infarct

-infarcted

-infarction

-infatuate

-infatuated

-infatuations

-infaunal

-infectivity

-infector

-infecundibility

-inferrer

-inferrible

-infestant

-infiltrator

-infiltrators

-infinitival

-inflammability

-inflammably

-inflammatorily

-inflationism

-inflationist

-inflator

-inflexion

-inflictor

-inflorescence

-inflorescences

-inflorescent

-informatics

-informatory

-infract

-infractor

-infrahuman

-infrangibility

-infrangible

-infrangibleness

-infrangibly

-infrasonic

-infraspecific

-infrastructural

-infrequence

-infrequency

-infundibular

-infundibulate

-infusibility

-infusoria

-infusorial

-infusorian

-ingather

-ingathering

-ingenue

-ingle

-ingratiatory

-ingress

-ingression

-ingressive

-ingressiveness

-ingrowing

-inguinal

-ingurgitate

-ingurgitation

-inhabitancy

-inhalational

-inhalator

-inharmonic

-inharmony

-inherence

-inheritability

-inhumanity

-inhumation

-inhume

-inhumed

-inhumes

-inhuming

-inimitably

-initialism

-initiatory

-initio

-injectant

-injector

-injectors

-injunct

-inkhorn

-inkiness

-inkle

-inkstand

-inkwell

-inky

-inmost

-innard

-innersole

-innerspring

-innervate

-innervated

-innervates

-innervating

-innervation

-innervational

-innerve

-innkeeper

-innkeeper's

-innkeepers

-innocency

-innominate

-innovational

-innovator

-innovatory

-innumerous

-inobservance

-inobservant

-inoculant

-inoculativity

-inoculator

-inoculum

-inoffensive

-inoffensively

-inoffensiveness

-inoperculate

-inosculate

-inosculated

-inosculates

-inosculating

-inosculation

-inositol

-inotropic

-inpatient

-inphase

-inpour

-inquisitional

-inquisitorial

-inquisitorially

-inrush

-insalubrious

-insalubrity

-insanitation

-insatiability

-insatiably

-insatiate

-insatiately

-insatiateness

-inscriptional

-inscriptive

-inscriptively

-inscroll

-inscrutably

-insculp

-inseam

-insectan

-insectary

-insecticidal

-insecticidally

-insectifuge

-insectile

-insectivore

-insectivore's

-insectivores

-insectivorous

-insectivory

-inseminator

-insentience

-insentient

-insertional

-insessorial

-insetted

-inshore

-insignificancy

-insinuator

-insipidity

-insistency

-insolate

-insolation

-insole

-insolubly

-insolvably

-insoul

-inspan

-inspectorate

-inspectorship

-insphere

-inspirator

-inspiratory

-inspirit

-inspissate

-inspissated

-inspissation

-inspissator

-instalment

-instalments

-instancy

-instantaneity

-instar

-instate

-instating

-instauration

-instil

-instillment

-instils

-institutionalism

-institutor

-instructorship

-instructress

-instrumentalism

-instrumentality

-insubstantiality

-insufferableness

-insufferably

-insufficience

-insufflate

-insufflated

-insufflates

-insufflating

-insufflation

-insufflator

-insugently

-insulant

-insularism

-insupportably

-insuppressibly

-insurability

-insurable

-insurgency

-insurmountably

-insuror

-insurrectional

-insurrectionary

-insurrectionist

-insusceptibly

-intaglio

-intangibility

-integrability

-integrality

-integrationist

-integrator

-integumental

-integumentary

-intellection

-intellectualism

-intellectualist

-intellectualistic

-intellectus

-intelligential

-intendance

-intendment

-intenerate

-inteneration

-intentionality

-intepupillary

-interactant

-interactional

-interatomic

-interbrain

-interbreed

-intercalary

-intercellular

-intercellularly

-intercession

-intercessional

-intercessor

-intercessory

-interclavicle

-interclavicular

-intercolumniation

-intercommunion

-intercomputer

-interconversion

-interconvert

-interconvertibility

-interconvertible

-intercooler

-intercostal

-intercostally

-intercrisis

-intercrop

-intercross

-intercultural

-interculturally

-intercurrent

-intercurrently

-intercut

-interdenominationalism

-interdental

-interdentally

-interdepend

-interdiction

-interdictor

-interdictory

-interdiffuse

-interdiffusion

-interdigitate

-interdigitation

-interfacial

-interfascicular

-interferential

-interferogram

-interferogram's

-interferograms

-interferometrically

-interfertile

-interfertility

-interfile

-interframe

-interfuse

-interfusion

-intergeneric

-intergradation

-intergradational

-intergrade

-intergrowth

-interhemispheric

-interionic

-interiority

-interjection

-interjectional

-interjectionally

-interjector

-interjectory

-interlacement

-interlaminate

-interlamination

-interlard

-interleaf

-interline

-interlinear

-interlinearly

-interlineation

-interlocal

-interlocution

-interlocutory

-interlope

-interloped

-interloper

-interlopes

-interloping

-interlunar

-interlunary

-intermarry

-intermeddle

-intermeddler

-intermediacy

-intermembrane

-intermetallic

-intermezzo

-intermit

-intermittence

-intermitter

-intermixture

-internality

-internationalism

-interne

-internecine

-internee

-internescine

-interneuron

-interneuronal

-internist

-internment

-internodal

-internode

-internship

-internuclear

-internuncial

-internuncially

-internuncio

-interoceptive

-interoceptor

-interoffice

-interpellate

-interpellation

-interpellator

-interpenetrate

-interpenetration

-interphase

-interplant

-interplead

-interpleader

-interpolator

-interpolatory

-interpretability

-interpretational

-interreligious

-interring

-interrogational

-interrogee

-interrogees

-interscholastic

-intersectoral

-interservice

-intersession

-intersex

-intersexual

-intersexuality

-intersexually

-interspace

-interspecific

-interstadial

-intersterile

-intersterility

-intersubjective

-intersubjectively

-intersubjectivity

-intertestamental

-intertidal

-intertidally

-intertie

-intertill

-intertillage

-intertropical

-intertwinement

-intertwist

-interurban

-intervale

-intervalometer

-intervalometer's

-intervalometers

-interventionism

-intervertebral

-intervertebrally

-interwar

-interweave

-interweaves

-interzonal

-interzone

-intestacy

-intima

-intimidator

-intimidatory

-intinction

-intine

-intitule

-intl

-intnl

-intonational

-intraarterial

-intraarterially

-intracardiac

-intracardial

-intracardially

-intracellular

-intracellularly

-intracranial

-intracranially

-intracutaneous

-intracutaneously

-intradermal

-intradermally

-intrados

-intraepithelial

-intragalactic

-intramolecular

-intramolecularly

-intrans

-intransigeance

-intransigeant

-intransigeantly

-intrant

-intraperitoneal

-intraperitoneally

-intrapersonal

-intrapopulation

-intrapsychic

-intrapsychically

-intraspecies

-intraspecific

-intraspecifically

-intrauterine

-intravascular

-intravital

-intravitally

-intravitam

-intrazonal

-intreat

-intrench

-intrepidity

-intrigant

-intriguant

-intrinsical

-intrinsicalness

-introductorily

-introgressant

-introgression

-introgressive

-introit

-introjection

-intromission

-intromit

-intromittent

-intromitter

-introrse

-introrsely

-introspectional

-introspectionism

-introspectionist

-introspectionistic

-introversive

-introversively

-intrvascularly

-intsv

-intuit

-intuiting

-intuitional

-intuitionism

-intumesce

-intumescence

-intumescent

-intussuscept

-intussusception

-intussusceptive

-inulin

-inundator

-inundatory

-inurement

-inurn

-inutility

-inv

-invaginate

-invaginated

-invaginates

-invaginating

-invagination

-invalidator

-inveiglement

-invenit

-inventorial

-inventorially

-inventress

-invercalt

-invertase

-investable

-investigational

-investiture

-inveteracy

-invictus

-invigorator

-inviible

-invincibility

-invincibly

-inviolableness

-inviolably

-inviolacy

-inviscid

-invitatory

-invocational

-invocatory

-involucral

-involucrate

-involucre

-involucred

-involucrum

-involutional

-involutionary

-invulnerably

-inweave

-iodic

-iodin

-iodoamino

-iodocompounds

-iodoform

-iodophor

-iodoprotein

-iodopsin

-iodothyronines

-iodotyrosines

-iodous

-ione

-ionicity

-ionium

-ionospherically

-iosola

-iotacism

-ipecacuanha

-iproniazid

-ipsilateral

-ipsilaterally

-iraqi

-irascibility

-irascible

-irascibleness

-irascibly

-ireful

-irenaeus

-irenic

-irenically

-irenics

-irid

-iridaceous

-irides

-iridescence

-iridescent

-iridescently

-iridic

-iridosmine

-irina

-ironbound

-ironclad

-ironfisted

-ironhanded

-ironhandedly

-ironhandedness

-ironhearted

-ironist

-ironmaster

-ironmonger

-ironmongery

-ironware

-ironweed

-irradiance

-irradiator

-irradicable

-irradicably

-irrationalism

-irrationalist

-irrationalistic

-irreal

-irreality

-irreclaimable

-irreclaimably

-irreconcilability

-irreconcilably

-irreconciliable

-irrecoverably

-irrecusable

-irrecusably

-irred

-irredenta

-irreducibility

-irreformability

-irreformable

-irrefragability

-irrefragable

-irrefragably

-irrefrangible

-irrefutability

-irrefutably

-irreg

-irregardless

-irrelative

-irrelatively

-irreligion

-irreligionist

-irreligious

-irreligiously

-irremeable

-irremediably

-irremovability

-irremovably

-irrepealability

-irrepealable

-irreplaceability

-irreplaceably

-irrepressibility

-irrepressibly

-irreproachability

-irreproachably

-irresoluble

-irrespirable

-irresponsive

-irresponsiveness

-irretrievability

-irretrievably

-irreversibility

-irrevocability

-irrigational

-irrigationists

-irrigator

-irrigators

-irrotational

-irrotationally

-irrupt

-irrupted

-irrupting

-irruptive

-irruptively

-irrupts

-isentropic

-islandia

-ism

-isoagglutination

-isoagglutinative

-isoagglutinin

-isoagglutinogen

-isoalloxazine

-isoantibody

-isoantigen

-isoantigenic

-isoantigenicity

-isobar

-isobaric

-isobutylene

-isochromatic

-isochron

-isochrone

-isochronism

-isoclinal

-isoclinally

-isoclinic

-isoclinically

-isogram

-isogram's

-isograms

-isolationist

-isolator

-isologue

-isomagnetic

-isomerase

-isomeric

-isomerism

-isomerous

-isometrical

-isometrically

-isometry

-isomorphous

-isoniazid

-isonomy

-isooctane

-isophotal

-isophote

-isopiestic

-isotonically

-isotonicity

-isotopically

-isotopy

-isozyme

-isozymic

-issuable

-issuably

-issueless

-isthmic

-italianate

-itchiness

-itchy

-iterance

-iterant

-itineracy

-itinerancy

-itinerate

-itinerated

-itinerates

-itinerating

-itineration

-itsy

-iud

-iuds

-izaak

-jabber

-jabbered

-jabberer

-jabbering

-jabbers

-jabberwocky

-jabot

-jackal

-jackal's

-jackals

-jackanapes

-jackassery

-jacketted

-jacketting

-jackhammer

-jackscrew

-jacobite

-jacoby

-jacquerie

-jactitation

-jagger

-jaggery

-jaggy

-jai

-jailbait

-jailbird

-jailbreak

-jailor

-jalousie

-jamb

-jambalaya

-jammer

-janis

-janitress

-japanned

-japanner

-japanning

-jape

-japer

-japery

-japes

-japing

-japonica

-jardiniere

-jarful

-jargonistic

-jasmine

-jauntily

-java

-javanese

-jawbreaker

-jawline

-jaybird

-jazzily

-jazzman

-jeanne

-jeepable

-jeeringly

-jell

-jelled

-jelling

-jello

-jells

-jellylike

-jerkily

-jerkin

-jerkwater

-jeroboam

-jessy

-jesuitic

-jesuitical

-jesuitically

-jesuitry

-jetbead

-jetport

-jetsam

-jettied

-jetties

-jettisonable

-jetty

-jettying

-jeunes

-jib

-jibber

-jibbers

-jibbing

-jibboom

-jiff

-jigged

-jigglier

-jiggly

-jimjams

-jingly

-jingo

-jingoes

-jingoish

-jingoism

-jingoist

-jingoistic

-jingoistically

-jink

-jinks

-jinn

-jinni

-jinny

-jitney

-jitneys

-jiujutsu

-jobbed

-jobber

-jobbers

-jobrel

-jocosity

-jocularity

-jocundity

-jodhpur

-jodhpurs

-jogger

-joggers

-jogging

-joinable

-joinder

-joinery

-jointress

-jointure

-jointured

-jointures

-jointuring

-jointworm

-joist

-joists

-jollification

-jollifications

-jolty

-jouncier

-jouncy

-jour

-journalistically

-journeywork

-jow

-jowlier

-jowly

-joyance

-jubilarian

-judgmatic

-judgmatical

-judgmatically

-judoist

-jugful

-jugged

-juggernaut

-juggernaut's

-juggernauted

-juggernauting

-juggernauts

-jugglery

-jugular

-jugulum

-juiceless

-juicily

-jujitsu

-jujutsu

-jukebox

-julienne

-junco

-junctional

-junctor

-jungian

-jungly

-junkyard

-junto

-juntos

-jural

-jurally

-jurassic

-jurat

-jure

-jurel

-juridic

-jurisconsult

-jurisconsults

-juristic

-juristically

-jussive

-jussives

-juste

-justiciability

-justiciar

-justifiability

-justificative

-justificatory

-justment

-jutted

-juttied

-jutties

-jutty

-juttying

-juvenescence

-juvenescent

-juvenilia

-juvenility

-juvenocracy

-juxtapositional

-kaftan

-kaiser

-kale

-kaleidoscope

-kaleidoscoped

-kaleidoscopes

-kaleidoscopic

-kaleidoscopical

-kaleidoscopically

-kaleidoscoping

-kalmia

-kapok

-kaput

-karateist

-karma

-karmic

-karyatid

-katydid

-kava

-kayak

-kayaker

-kayaks

-kayo

-kayoed

-kayoing

-kebab

-kebabs

-keddah

-keegan

-keelboat

-keelhaul

-keelless

-keelson

-keepsake

-keepsakes

-keeshond

-kegful

-kegsful

-kelts

-kerchieves

-kern

-kerne

-kernite

-kerosine

-kerry

-kerygma

-kestrel

-ketch

-ketches

-ketene

-keto

-ketogenesis

-ketogenic

-ketonic

-ketose

-ketosteroid

-ketotic

-kettledrum

-kewaskum

-kewaunee

-keybutton

-keyless

-keyway

-keyways

-khrush

-kibble

-kibbled

-kibbles

-kibbling

-kibbutz

-kibbutznik

-kibe

-kibosh

-kickapoo

-kickshaw

-kickshaws

-kickstand

-kickup

-kickups

-kiddish

-kiddush

-kiddy

-kidskin

-kiel

-kielbasa

-killdeer

-killebrew

-kiln

-kilo

-kilobar

-kilocalorie

-kilocalories

-kilocurie

-kilocycle

-kilocycles

-kilooersted

-kiloparsec

-kilorad

-kilos

-kilt

-kilter

-kindergartner

-kindless

-kindlessly

-kine

-kinematical

-kinematically

-kinescope

-kinescoped

-kinescopes

-kineses

-kinesic

-kinesiology

-kinesis

-kineticist

-kinetin

-kinetochore

-kinetonucleus

-kinetoplast

-kinetoplastic

-kinetoscope

-kinetosome

-kinfolk

-kinfolks

-kingfish

-kingmaker

-kingship

-kingside

-kingwood

-kinkajou

-kinkajou's

-kinnickinnic

-kinsey

-kinsfolk

-kinswoman

-kip

-kipper

-kippered

-kippering

-kippers

-kips

-kirk

-kirkwood

-kirsch

-kismet

-kissable

-kitchenware

-kitchenwares

-kith

-kithe

-kithing

-kitschy

-kittle

-kittled

-kittler

-kittles

-kittling

-kiva

-kivu

-kiwi

-kiwi's

-kiwis

-kiz

-kizzie

-klatch

-klatsch

-klauber

-kleptomania

-kleptomaniac

-kline

-knackery

-knavery

-knavish

-knavishly

-kneadable

-kneehole

-kneeholes

-knickknack

-knifelike

-knish

-knitter

-knitwear

-knobbed

-knobeloch

-knockabout

-knockabouts

-knothole

-knotter

-knotweed

-knout

-knoweth

-knowily

-knowledgeability

-knowledgeably

-knucklebone

-knucklebones

-knucklehead

-knuckleheaded

-koine

-koinonia

-kola

-kolkhoz

-kombu

-konga

-konrad

-kook

-kookaburra

-kookie

-kookier

-kookiness

-kooky

-kooning

-kopeck

-kopek

-kowtow

-kpc

-kraemer

-kraken

-kremlinologist

-kremlinology

-kretchmer

-krummholz

-kudo

-kudu

-kulak

-kultur

-kurdish

-kwashiorkor

-labdanum

-labellate

-labellum

-labia

-labiate

-lability

-labium

-laborious

-laboriously

-laboriousness

-laborsaving

-labradorite

-labyrinthian

-labyrinthine

-laceless

-lacelike

-lacemaker

-lacewing

-lacework

-lacey

-laches

-lachrymal

-lachrymator

-lachrymose

-lachrymosely

-lacier

-laciniate

-laciniated

-laciniation

-lackaday

-laconic

-laconically

-laconics

-laconism

-laconisms

-lacrimal

-lacrimation

-lacrimator

-lactase

-lacteal

-lactic

-lactiferousness

-lactobionamide

-lactobionamides

-lactobionic

-lactobionyl

-lactogenic

-lactoglobulin

-lactone

-lactonic

-lacunal

-lacunar

-lacunaria

-lacunary

-lacunate

-lacustrine

-lacy

-ladanum

-laddie

-lade

-ladybird

-ladybird's

-ladybirds

-ladybug

-ladybug's

-ladybugs

-ladyfern

-ladyfinger

-ladykin

-ladylove

-ladyship

-lage

-lagger

-lagniappe

-lagomorph

-lagomorphic

-lagomorphous

-lagoonal

-laguna

-laic

-laical

-laically

-laicism

-laird

-lairdly

-laitance

-laitances

-lakefront

-lakeshore

-lakewood

-lakh

-laky

-lallygag

-lallygagged

-lam

-lama

-lamasery

-lambast

-lambaste

-lambency

-lambent

-lambently

-lambert

-lambertian

-lambeth

-lambkill

-lambskin

-lamebrain

-lamebrained

-lamella

-lamellae

-lamellar

-lamellarly

-lamellas

-lamellate

-lamellately

-lamellation

-lamelliform

-lametedly

-lamia

-laminal

-laminaria

-laminarian

-laminarin

-laminator

-laminin

-lampoonery

-lamster

-lanai

-lancelet

-lanceolate

-lanceolately

-lancet

-lanceted

-lancinate

-lancinated

-lancinates

-lancinating

-lancination

-lancinations

-landaulet

-landes

-landfall

-landform

-landlocked

-landlordism

-landlubber

-landlubberly

-landmass

-landmasses

-landowning

-landside

-landslip

-landslips

-landsman

-landward

-landwards

-lanesmanship

-langeland

-languishment

-languorous

-languorously

-langur

-lankily

-lanolin

-lanuginous

-lanuginousness

-lanyard

-laodicean

-laparotomy

-lapboard

-lapdog

-lapful

-lapidarian

-lapper

-lappet

-lapstrake

-lapstreak

-lapwing

-larcener

-larcenist

-larcenous

-larcenously

-lardy

-lares

-largehearted

-largess

-larghetto

-largish

-largo

-largos

-larkier

-larkspur

-larky

-larvicidal

-larvicide

-larynges

-laryngitis

-laryngology

-laryngoscope

-laryngoscopic

-lasagna

-lasagne

-lascar

-lase

-lassie

-lassies

-lassitude

-lassitudes

-lassoes

-latchet

-latchkey

-latchstring

-latecomer

-latecomers

-lateen

-lateener

-lateiner

-latened

-latening

-latensification

-latensifications

-latensified

-latensifies

-latensify

-latera

-laterite

-lathery

-latices

-laticiferous

-latish

-latitudinarian

-latitudinarianism

-latten

-latticework

-lattimer

-latus

-laudability

-laudable

-laudableness

-laudation

-laudations

-laudative

-laudatorily

-laughterful

-launderability

-launderette

-launderettes

-laundress

-laundryman

-laundrywoman

-laurate

-laureateship

-lavabo

-lavage

-lavaged

-lavalava

-lavaliere

-lavalike

-lavallade

-lavalliere

-lavation

-lavational

-lavato

-lave

-laveer

-laver

-laverock

-laving

-lawmaker

-lawny

-laxation

-layabout

-layabouts

-layaway

-layerage

-layette

-layover

-layovers

-laypeople

-laywoman

-laywomen

-laze

-lazes

-lazyish

-lea

-leachable

-leadeth

-leadier

-leadless

-leadoff

-leadwork

-leady

-leafage

-leaflike

-leafstalk

-leafstalks

-leakily

-leant

-leapfrogged

-leapfrogging

-learnable

-leary

-leastways

-leastwise

-leasure

-leatherback

-leatherlike

-leatherwork

-lecherous

-lecherously

-lecherousness

-lecithin

-lecithinase

-lectern

-lectern's

-lecterns

-lectin

-lectin's

-lectins

-lection

-lectionary

-lectureship

-lederhosen

-ledgy

-leeboard

-leeds

-leftism

-legalese

-legalism

-legalist

-legalistic

-legalistically

-legateship

-legatine

-legator

-legendarily

-legendry

-legerity

-leges

-legionary

-legionnaire

-legionnaires

-legis

-legislatorial

-legislatorship

-legislatress

-legislatrix

-legist

-legit

-legitimism

-legitimist

-legless

-legman

-legroom

-legwork

-lei

-leith

-lemke

-lemony

-lemur

-lemures

-lengthways

-lenience

-lenis

-lenitive

-lenitively

-lenity

-lense

-lensless

-lenticulate

-lenticulation

-lentissimo

-lento

-leopardess

-leotard

-leotards

-lepidolite

-lepidopterist

-leprechaun

-leprechauns

-leprotic

-leprous

-leprously

-leprousness

-lepton

-lepton's

-leptons

-leptospiral

-les

-lesbianism

-lessee

-letch

-letdown

-letdowns

-lethargic

-lethargically

-letted

-letterpress

-letup

-leu

-leucine

-leucite

-leucitic

-leucoma

-leukemic

-leukemoid

-leukocyte

-leukocytic

-lev

-levanter

-levator

-levatores

-levators

-leveeing

-levelheaded

-levelheadedness

-leven

-leveret

-leviathan

-leviathan's

-levigate

-levigated

-levigates

-levigating

-levigation

-levirate

-leviratic

-levitational

-levorotation

-levorotatory

-levulose

-lewellyn

-lewisite

-lexica

-lexicality

-lexicographer

-lexicographer's

-lexicographers

-lexicography

-lexicostatistic

-lexicostatistics

-ley

-liaise

-liaised

-liaises

-liaising

-liana

-lib

-libationary

-libelist

-liber

-liberace

-liberalist

-liberalistic

-liberationist

-liberationists

-libertarianism

-libertie

-libertinage

-libertinism

-libidinal

-libidinally

-libra

-librae

-librarianship

-librate

-libration

-librational

-libratory

-libriform

-licating

-licenseless

-licenselesses

-licensure

-licentiate

-licentiateship

-lichee

-lichenous

-licht

-lichtenstein

-lichter

-lickerish

-lickerishly

-lickerishness

-lickspittle

-lictor

-lidded

-lido

-lidocaine

-lidos

-lieberman

-lief

-lierne

-lieutenancy

-lieve

-lifeful

-lifeline

-lifelines

-lifemanship

-lifesaver

-lifeway

-lifework

-liftable

-liftman

-ligamentary

-ligamentous

-ligate

-ligated

-ligates

-ligating

-ligation

-ligations

-lighterage

-lightface

-lightfaced

-lightfooted

-lightfootedly

-lightfootedness

-lightful

-lighthanded

-lighthandedness

-lightheaded

-lightish

-lightless

-lightship

-lightsome

-lightsomely

-lightsomeness

-lightyear

-lightyears

-ligneous

-lignification

-lignified

-lignifies

-lignify

-lignifying

-lignin

-lignitic

-lignocellulose

-ligulate

-ligule

-ligure

-likability

-likable

-likableness

-lilliput

-lilliputian

-limba

-limbless

-limbus

-limeade

-limekiln

-limen

-limey

-limier

-liminal

-limitable

-limitary

-limitational

-limitative

-limitrophe

-limmer

-limn

-limner

-limnetic

-limnic

-limning

-limnological

-limnologically

-limnologist

-limnology

-limo

-limo's

-limonene

-limonite

-limonitic

-limos

-limpet

-limpidity

-limpkin

-limpsy

-limulus

-limy

-linac

-linage

-linate

-linated

-lination

-linchpin

-linchpin's

-linchpins

-lindy

-lineality

-lineament

-lineamental

-lineation

-linebacking

-linebreed

-linecaster

-linecasting

-lineolate

-lineolated

-lineprinter

-lineprinter's

-lineprinters

-linerless

-linesman

-linga

-lingoes

-lingonberry

-linguae

-linguine

-linguistical

-linguistician

-lingulate

-linin

-linkboy

-linkman

-linksman

-linkup

-linoleate

-linoleic

-linolenate

-linos

-lintel

-linty

-linum

-lionhearted

-lionlike

-lipide

-lipidic

-lipless

-liplike

-lipolysis

-lipolytic

-lipped

-lippen

-lippier

-lipping

-lippy

-lipread

-lipreading

-liquate

-liquated

-liquates

-liquating

-liquation

-liquations

-liquefactive

-liquefactive's

-liquefactives

-liquefiability

-liquefiable

-liquescent

-liquidator

-liquorice

-lira

-liras

-lire

-lisle

-liss

-lissom

-lissome

-lissomely

-lissomeness

-liste

-listel

-listenable

-listeriosis

-liston

-literalist

-literalistic

-literality

-literarily

-literati

-literatim

-literator

-literatus

-litharge

-lithesome

-lithia

-lithiasis

-lithic

-lithically

-litho

-lithographic

-lithographically

-lithologic

-lithological

-lithologically

-lithophane

-lithophyte

-lithophytic

-lithopone

-lithos

-lithosol

-lithotomy

-lithuanian

-litigable

-litotes

-litterateur

-litterbag

-littermate

-littermate's

-littermates

-littery

-liturgiologist

-liturgiology

-liturgist

-litz

-liveability

-liveable

-livelily

-livelong

-liverish

-liverishness

-liveryman

-lividity

-livlihood

-lixiviate

-lixiviated

-lixiviates

-lixiviating

-lixiviation

-lizzy

-llama

-llama's

-llamas

-llano

-llanos

-lo

-loach

-loaches

-loanable

-loanword

-loanword's

-loanwords

-lobar

-lobate

-lobated

-lobately

-lobation

-lobbing

-lobbyer

-lobbyism

-lobbyist

-lobectomy

-lobelia

-lobeline

-loblolly

-lobo

-lobos

-lobscouse

-lobsterman

-lobstermen

-lobulate

-lobulated

-lobulation

-lobulose

-localism

-localite

-locatable

-loch

-lockable

-lockage

-lockbox

-locket

-lockies

-lockjaw

-lockstep

-lockstitch

-loco

-locoes

-locofoco

-locoism

-locomote

-locomoted

-locomotes

-locomoting

-locular

-loculate

-loculated

-loculation

-locule

-loculed

-loculus

-locution

-locutor

-lode

-loden

-lodestar

-lodgement

-loess

-loftily

-logbook

-loggets

-loggia

-loggie

-loggy

-logia

-logicality

-logistician

-lognormal

-lognormality

-lognormally

-logo

-logogram

-logogram's

-logogrammatic

-logograms

-logograph

-logographic

-logographically

-logogriph

-logomachy

-logorrheic

-logos

-logotype

-logroll

-logroller

-logrolling

-logwood

-logy

-lollipop

-lollop

-lollygag

-lollypop

-londonderry

-lonelily

-longanimity

-longanimous

-longboat

-longboats

-longbow

-longbowman

-longeron

-longevous

-longhair

-longhaired

-longhead

-longheaded

-longheadedness

-longhouse

-longlegs

-longline

-longshoreman

-longshoring

-longsome

-longsomely

-longsomeness

-longspur

-longstreet

-longue

-longwinded

-loo

-loobies

-looby

-looney

-loonier

-looniness

-loony

-loosestrife

-lopper

-loppier

-loppy

-lopseed

-loquat

-loran

-lorans

-lorca

-lordling

-lordosis

-lordotic

-loreal

-lorgnette

-lorgnettes

-lorgnon

-lorgnons

-loricate

-loricated

-loris

-lorn

-lornness

-lory

-los

-losable

-losableness

-losel

-loth

-lotharios

-lotos

-lotted

-lotting

-lotto

-loudmouth

-loudmouthed

-lough

-loup

-loupe

-louping

-lousily

-lout

-loutish

-loutishly

-loutishness

-louts

-loveable

-lovejoy

-lovelily

-lovelock

-lovelocks

-lovemaking

-lovesick

-lovesickness

-lovesome

-lowborn

-lowbred

-lowbrow

-lowermost

-lowery

-lowlihead

-lowlily

-lown

-lox

-loxes

-loxodrome

-loxodromic

-loxodromically

-loxodromics

-loy

-loyola

-lubber

-lubberland

-lubberlanders

-lubberliness

-lubberly

-lubbers

-lube

-lubric

-lubrical

-lubricator

-lubricous

-lubritorium

-lucency

-lucien

-luciferous

-lucubrate

-lucubrated

-lucubrates

-lucubrating

-lucubration

-lucubrations

-lucubrator

-luculent

-luculently

-ludmilla

-lues

-luetic

-luetically

-luggageless

-lugger

-lugubrious

-lugubriously

-lugubriousness

-lukemia

-lum

-lumbago

-lumberjack

-lumberjack's

-lumberjacks

-lumbian

-lumenal

-lumens

-lumina

-luminaire

-luminal

-luminance

-luminesce

-luminesced

-luminescing

-luminiferous

-luminist

-lummus

-lumpily

-luncheonette

-lune

-lunes

-lunette

-lungfish

-lunisolar

-lunitidal

-lunker

-lunkhead

-lunkheaded

-lunt

-lunule

-luny

-lupanar

-lupulin

-lupus

-lurdane

-lusion

-lustihood

-lustra

-lustral

-lustrate

-lustrated

-lustrates

-lustrating

-lustration

-lustrations

-lustrum

-luteal

-lutenist

-luteous

-lutetium

-lutihaw

-lux

-luxate

-luxated

-luxates

-luxating

-luxation

-luxations

-lycanthropic

-lycanthropy

-lycee

-lyceum

-lychee

-lychnis

-lycidas

-lymphadenitis

-lymphatic

-lymphatically

-lymphoblast

-lymphoblastic

-lymphocytic

-lymphocytosis

-lymphoid

-lymphomatoid

-lymphomatosis

-lymphomatous

-lymphopoiesis

-lyndon

-lyonnaise

-lyophile

-lyophilic

-lyophobic

-lyotropic

-lyrate

-lyrated

-lyrately

-lyrebird

-lyrebird's

-lyrebirds

-lyrism

-lyrist

-lysate

-lyse

-lysergic

-lyses

-lysimeter

-lysimeter's

-lysimeters

-lysimetric

-lysin

-lysine

-lysing

-lysis

-lysogen

-lysogenic

-lysogenicity

-lysogeny

-lysolecithin

-lysosomal

-lysosomally

-lysosome

-lysozyme

-lytically

-macadam

-macaque

-macaronic

-macaronically

-macaronies

-macaroon

-macaw

-macaw's

-macaws

-macerate

-macerated

-macerates

-macerating

-maceration

-macerations

-macerator

-macerators

-machete

-machicolate

-machicolation

-machinability

-machinate

-machinated

-machinates

-machinating

-machinator

-machineable

-mackerel

-mackerels

-mackle

-mackled

-mackles

-macklin

-mackling

-macle

-macled

-macrame

-macroaggregate

-macroaggregated

-macrobiotic

-macrobiotics

-macrocephalic

-macrocephalous

-macrocephaly

-macrocosm

-macrocosmic

-macrocosmically

-macrocyte

-macrocytic

-macrocytosis

-macroeconomic

-macroevolution

-macroevolutionary

-macrofossil

-macrogamete

-macroinstruction

-macron

-macronucleus

-macronutrient

-macropathological

-macropathology

-macrophagic

-macrophyte

-macrophytic

-macroscale

-macroscopical

-macrostructural

-macrostructure

-macrostructure's

-maculate

-maculated

-maculates

-maculating

-maculation

-maculations

-macule

-madded

-maddish

-madrigalian

-madrigalist

-madrilene

-madrona

-madrone

-madstone

-madstones

-madwoman

-madwomen

-maelstrom

-maelstrom's

-maelstroms

-maenadic

-maeterlinck

-mafia

-mafioso

-magazinism

-magazinist

-magazinists

-maggotries

-maggotry

-magicked

-magicking

-magill

-magisterium

-magistracy

-magistral

-magistrally

-magistrateship

-magistratical

-magistratically

-magistrature

-magma

-magmatic

-magna

-magnesian

-magnetitic

-magnetodynamo

-magnetoelectric

-magnetoelectrical

-magnetoelectricity

-magnetofluidmechanic

-magnetofluidmechanics

-magnetogasdynamic

-magnetogasdynamics

-magnetogram

-magnetogram's

-magnetograms

-magnetograph

-magnetohydrodynamic

-magnetohydrodynamics

-magnetometer

-magnetometer's

-magnetometers

-magnetometric

-magnetometry

-magnetomotive

-magneton

-magnetooptic

-magnetooptical

-magnetooptics

-magnetoscope

-magnetosphere

-magnetospheric

-magnetostatic

-magnetostriction

-magnetostrictive

-magnetostrictively

-magnetron

-magnetrons

-magnific

-magnifical

-magnifically

-magnifico

-magniloquence

-magniloquent

-magniloquently

-magtape

-magtapes

-maguire

-maguires

-magus

-maharaja

-maharaja's

-maharajah

-maharanee

-maharani

-maharishi

-mahatma

-mahatmaism

-mahler

-mahlstick

-mahout

-maidenhead

-maidenhood

-maidhood

-maidish

-maieutic

-maieutical

-maieutics

-mailability

-mailbag

-mailbags

-mailboat

-mailboats

-maillot

-mailplane

-mailplanes

-mailsack

-mailsacks

-mainmast

-mainsail

-mainsheet

-mainspring

-maintop

-maisonette

-maisonettes

-maitre

-maitres

-maize

-maizer

-maizers

-maizes

-majestical

-majolica

-majordomo

-majordomos

-majorette

-majorettes

-majuscular

-majuscule

-makeable

-makebate

-makefast

-makepeace

-makeshifty

-makeweight

-mako

-makos

-mal

-malachite

-malacologic

-malacological

-malacologist

-malacology

-malacostracan

-maladaptation

-maladminister

-maladministration

-malamud

-malamute

-malapert

-malapertly

-malapertness

-malapportioned

-malapportionment

-malappropriate

-malappropriated

-malappropriates

-malappropriating

-malapropian

-malapropos

-malar

-malarian

-malariated

-malariologist

-malariology

-malarkey

-malate

-malathion

-malaxate

-malaxated

-malaxates

-malaxating

-malconduct

-malconformation

-maldevelopment

-maldistribute

-maldistribution

-maledictory

-malefaction

-malefic

-maleficence

-maleficent

-malemute

-malentendu

-malfeasance

-malgovernment

-malic

-maliferous

-malignance

-malignity

-malinger

-malingered

-malingerer

-malism

-malleability

-mallemuck

-malleus

-mallow

-malmsey

-malodorous

-malodorously

-malodorousness

-malolactic

-malposition

-malpractitioner

-maltase

-maltobionic

-maltose

-maltreatment

-maltster

-malty

-malvasia

-malvasian

-malversation

-malvoisie

-mammalogist

-mammalogy

-mammary

-mammer

-mammies

-mammillar

-mammillary

-mammillate

-mammillated

-mammock

-mammography

-mammon

-mammonism

-mammonist

-mammonite

-mammy

-mana

-manacle

-manacled

-manacles

-manacling

-manageability

-manageably

-managemental

-manageress

-managership

-manchet

-mancipation

-mancipatory

-manciple

-manciples

-mandala

-mandarinate

-mandarinates

-mandarinic

-mandarinism

-mandataries

-mandatary

-mandator

-mandatorial

-mandibular

-mandibulate

-mandola

-mandolinist

-mandolinists

-mandorla

-mandragora

-mandrel

-mandril

-mandrill

-manducate

-manducated

-manducates

-manducating

-manege

-manful

-manfully

-manfulness

-manganate

-manganesian

-manganic

-manganite

-manganous

-mange

-mangel

-mangier

-mangily

-manginess

-mango

-mango's

-mangos

-mangrove

-mangy

-manhandle

-manhandled

-manhandles

-manhandling

-manhunt

-manhunts

-manically

-manicotti

-manicurist

-manifestant

-manifesto

-manifesto's

-manifestoed

-manifestoes

-manifestoing

-manifestos

-manioc

-manipular

-manitowoc

-mankowski

-manless

-manlike

-mannerist

-manneristic

-mannerless

-mannikin

-mannish

-mannishly

-mannishness

-mannitic

-mannitol

-mannopyranosyl

-mannosyl

-manometric

-manometrical

-manometrically

-manometry

-manorialism

-manque

-manrope

-manropes

-mansard

-mansarded

-manse

-manship

-manslayer

-mansuete

-mansuetude

-mantelet

-mantelpiece

-mantelshelf

-mantic

-mantis

-mantises

-mantra

-mantua

-manubrium

-manuduction

-manuductory

-manufactory

-manumission

-manumit

-manumitted

-manumitting

-manurial

-manuscriptal

-manward

-manwards

-manwise

-manyfold

-manzanita

-maplecrest

-mapmaker

-mapmakers

-mapmaking

-mapper

-mappery

-mappist

-mappists

-maquillage

-maquis

-marabou

-maraschino

-marasmic

-marasmus

-maraud

-marauder

-marauding

-marauds

-marbly

-marcelled

-marcelling

-marchesa

-marchese

-marchioness

-marchpane

-marconigram

-marconigram's

-marconigrams

-marcotte

-margarita

-marginate

-marginated

-marginates

-marginating

-margination

-marginations

-mariachi

-marimba

-marish

-marjoram

-markdown

-marketeer

-marketeer's

-marketeering

-marketeers

-marketwise

-markovitz

-marksmen

-markswoman

-markswomen

-markup

-markups

-marl

-marline

-marmoreal

-marmoreally

-marmorean

-marmoset

-marmoset's

-marmosets

-marmot

-marplot

-marque

-marquet

-marquisate

-marquise

-marquisette

-marrowfat

-marrowless

-marrowy

-marse

-marshalcy

-marshalship

-marshier

-marshiness

-marshmallowy

-marshy

-marsupial

-marsupial's

-marsupials

-marsupium

-martensite

-martensitic

-martensitically

-martinet

-martlet

-martyrologies

-martyrologist

-martyrologists

-martyrology

-martyry

-marzipam

-marzipan

-maskable

-masochism

-masochistic

-masochistically

-massbus

-masseter

-masseteric

-masseur

-masseurs

-masseuse

-massicot

-massif

-massifs

-massy

-mastectomies

-mastectomy

-mastership

-mastersinger

-mastersingers

-masterstroke

-masterstrokes

-masterwork

-masthead

-mastic

-masticate

-masticated

-masticates

-masticating

-mastication

-mastications

-masticator

-masticators

-masticatory

-mastitic

-mastodonic

-mastodont

-mastoid

-mastoidectomy

-mastoideus

-mastoiditis

-masturbational

-masturbatory

-matador

-matchboard

-matchboarding

-matchlock

-matchwood

-matelote

-materfamilias

-materialist

-materialistically

-materiality

-matey

-maths

-matinal

-matins

-matriarchate

-matriarchy

-matric

-matricidal

-matricide

-matriculant

-matrilineal

-matrilineally

-matroid

-matronymic

-matt

-matte

-mattei

-mattery

-mattie

-mattock

-matutinal

-matutinally

-matzo

-matzos

-maude

-maudlinism

-maudlinisms

-maugre

-mauricio

-maxi

-maxilla

-maxillae

-maxillary

-maxillas

-maxilliped

-maxillipede

-maximalist

-mayapple

-mayflower

-mayfly

-mayoralty

-mayoress

-maypole

-mayst

-mazy

-mazzard

-mea

-meadowlark

-meadowlark's

-meadowlarks

-meagre

-mealie

-mealymouth

-mealymouthed

-mealymouthedly

-mealymouthedness

-mealymouthednesses

-meandrous

-measurability

-measureless

-meatball

-meatballs

-meath

-meatman

-meatmen

-mech

-mechanician

-mechanistically

-mechanoreceptor

-mecholyl

-mecum

-medallic

-meddlesome

-meddlesomeness

-mediacy

-mediad

-mediae

-medial

-medially

-mediant

-mediational

-mediatorial

-mediatorship

-mediatory

-mediatress

-mediatresses

-mediatrice

-mediatrix

-medicable

-medicably

-medicaid

-medicament

-medicamented

-medicamenting

-medicamentous

-medicaments

-medicare

-medicinable

-medicolegal

-medievalise

-medievalises

-medievalism

-medievalism's

-medievalisms

-medievalistic

-medievalistics

-meditator

-mediumship

-medlar

-medlars

-medulla

-medullary

-medullated

-medusae

-medusoid

-meerschaum

-megabuck

-megacycle

-megagamete

-megagametophyte

-megakaryocyte

-megakaryocytic

-megalith

-megalithic

-megaloblast

-megaloblastic

-megalomaniacal

-megalomaniacally

-megalomanic

-megalopolis

-megalopolistic

-megalopolitan

-megalopolitanism

-megalopteran

-megalopterous

-megaparsec

-megaphone

-megaphonic

-megapolis

-megapolitan

-megarians

-megascopic

-megascopically

-megasporangium

-megaspore

-megasporic

-megasporogenesis

-megasporophyll

-megillah

-megrim

-megrims

-meiosis

-meiotic

-meiotically

-meister

-melancholia

-melancholiac

-melancholic

-melancholically

-melanic

-melanism

-melanist

-melanistic

-melanite

-melanitic

-melanoblast

-melanoblastic

-melanoblastoma

-melanochroic

-melanocyte

-melanogenesis

-melanoid

-melanophore

-melanosis

-melanotic

-melatonin

-melic

-melies

-meliorator

-meliorism

-meliorist

-melioristic

-mell

-melliferous

-mellifluent

-mellifluently

-mellifluous

-mellifluously

-mellifluousness

-mellitin

-mellophone

-melodist

-melodramatically

-melodramatist

-meltability

-meltable

-meltdown

-meltdown's

-meltwater

-meltwaters

-membranal

-membraneless

-membranous

-membranously

-meme

-memorably

-memorialist

-memoriter

-menarcheal

-mencken

-menckenese

-mendable

-mendicancies

-mendicancy

-mendicant

-mendicants

-mendicities

-mendicity

-mendoza

-menhaden

-menhir

-meningeal

-meninges

-meningitic

-meningitis

-meningococcal

-meningococcic

-meninx

-menisci

-meniscus

-meniscuses

-menominee

-menopausal

-menorah

-menorrhagia

-menorrhagic

-mensal

-mensch

-mense

-menseful

-menseless

-menservants

-menstruous

-menstruum

-mensurability

-mensural

-mensurational

-menswear

-mentalist

-mentation

-mentations

-menthol

-mentholated

-mentorship

-mentum

-meow

-meow's

-meowed

-meowing

-meows

-mephitic

-mephitis

-mercantilism

-mercantilist

-mercantilistic

-mercenarily

-mercery

-merchantable

-merchantman

-merchantmen

-mercurate

-mercurated

-mercurates

-mercurating

-mercuration

-mercurations

-mercurous

-merganser

-mergence

-mergences

-meridional

-meridionally

-merino

-meristically

-meriwether

-meroblastic

-meroblastically

-merocrine

-meromorphic

-meromyosin

-merrick

-merrimac

-merrymaker

-merryman

-merrythought

-mescal

-mesdames

-mesdemoiselles

-meseems

-mesenteric

-mesenteron

-meshwork

-meshy

-mesial

-mesially

-mesic

-mesically

-mesmerically

-mesmerism

-mesmerisms

-mesmerist

-mesmerists

-mesne

-mesoblast

-mesoblastic

-mesocarp

-mesoderm

-mesodermal

-mesodermic

-mesomerism

-mesomorph

-mesomorphic

-mesomorphism

-mesomorphy

-mesonephric

-mesonephros

-mesonic

-mesopause

-mesopelagic

-mesophase

-mesophases

-mesosome

-mesosphere

-mesospheric

-mesothoracic

-mesothorax

-mesothorium

-mesotron

-mesotronic

-mesotrophic

-messaline

-messiahship

-messianic

-messianism

-messuage

-messuages

-mestizo

-metabole

-metabolically

-metacarpal

-metacarpus

-metacentric

-metachromatic

-metaethical

-metaethics

-metagalactic

-metagalaxies

-metagalaxy

-metagenesis

-metagenetic

-metagenetically

-metalicities

-metalicity

-metalicity's

-metallically

-metallike

-metallist

-metallists

-metallographer

-metallographic

-metallographically

-metallographist

-metalloidal

-metallurgist

-metalware

-metamathematician

-metamathematics

-metamere

-metameric

-metamerically

-metamerism

-metamorphically

-metanephric

-metanephros

-metaph

-metaphase

-metaphysician

-metaplasia

-metaplasm

-metaplasmic

-metaplastic

-metaprotein

-metapsychological

-metapsychology

-metasomatic

-metasomatically

-metasomatism

-metastability

-metastable

-metastably

-metastasis

-metastatic

-metastatically

-metatarsal

-metatarsally

-metatarsus

-metate

-metathesis

-metathetic

-metathetical

-metathetically

-metathoracic

-metazoa

-metazoal

-metazoan

-metempsychosis

-metencephalic

-metencephalon

-meteorically

-meteoritical

-meteorograph

-meteorographic

-meteoroidal

-meteorol

-meteorologic

-meteorologicaly

-meteorologist

-methacrylate

-methadon

-methadone

-methamphetamine

-methanolic

-metheglin

-methinks

-methionine

-methodic

-methodistic

-methodologist

-methought

-methylal

-methylamine

-methylase

-methylate

-methylated

-methylation

-methylator

-methylcholanthrene

-methylic

-methylnaphthalene

-methylphenidate

-meticulosity

-metier

-metis

-metonym

-metonymic

-metonymical

-metonymically

-metonymy

-metope

-metopon

-metrazol

-metrication

-metrist

-metrological

-metrologically

-metrologist

-metrology

-metronomic

-metronomical

-metronomically

-mewl

-mezuza

-mezuzah

-mezzanine

-mezzanines

-mezzotint

-miasmatic

-miasmic

-micaceous

-micellar

-micelle

-micelle's

-micelles

-micra

-microampere

-microamperes

-microanalyst

-microanalytical

-microanatomical

-microanatomy

-microbarograph

-microbe

-microbe's

-microbeless

-microbes

-microbic

-microbiologic

-microbiological

-microbiologically

-microbiologist

-microbiology

-microbus

-microcalorimetric

-microcephalic

-microcephaly

-microcircuit

-microcircuitry

-microcircuits

-microcirculation

-microcirculatory

-microclimate

-microclimates

-microclimatic

-microclimatological

-microclimatologist

-microclimatology

-microcline

-microclines

-micrococcal

-micrococcus

-microconsumer

-microcontroller

-microcopier

-microcopy

-microcosmic

-microcosmically

-microcrystal

-microcrystalline

-microcrystallinity

-microcyte

-microcytic

-microdensitometer

-microdensitometer's

-microdensitometers

-microdensitometric

-microdensitometry

-microdissection

-microdomain

-microdomains

-microelectrode

-microelectronic

-microelectronically

-microelectronics

-microelectrophoresis

-microelectrophoretic

-microelectrophoretical

-microelectrophoretically

-microelement

-microencapsulate

-microencapsulation

-microenvironment

-microenvironmental

-microevolution

-microevolutionary

-microfarad

-microfarads

-microfauna

-microfaunal

-microfibril

-microfibrillar

-microfiche

-microfiches

-microfilaria

-microfilarial

-microfine

-microflash

-microflora

-microfloral

-microform

-microfossil

-microfungal

-microfungus

-microgamete

-microgametocyte

-micrograph

-micrographer

-micrographers

-microgroove

-microhabitat

-microhardness

-microinch

-microinjection

-microlith

-microlithic

-micromania

-micromanipulation

-micromanipulator

-micromere

-micrometeorite

-micrometeoroid

-micrometeorological

-micrometeorologist

-micrometeorology

-micromethod

-micrometric

-micrometry

-micromicrofarad

-micromicrofarads

-micromicron

-microminiature

-micronuclear

-micronucleate

-micronucleus

-micronutrient

-micronutrients

-microorganic

-micropaleontologic

-micropaleontological

-micropaleontologist

-micropaleontology

-microparasite

-microparasites

-microparasitic

-microphage

-microphonic

-microphonics

-microphotograph

-microphotographer

-microphotographic

-microphotography

-microphotometer

-microphotometer's

-microphotometers

-microphotometric

-microphotometrically

-microphotometry

-microphyll

-microphyllous

-microphysical

-microphysically

-microphysics

-micropipet

-micropipette

-microplankton

-micropore

-microporosity

-microporous

-microprint

-microprobe

-microprogrammable

-microprojection

-microprojector

-micropulsation

-micropump

-micropylar

-micropyle

-microradiograph

-microradiographic

-microradiography

-microreader

-microrelief

-microreproduction

-microscale

-microscopist

-microsection

-microseism

-microseismic

-microseismicity

-microsome

-microsomes

-microspectrophotometer

-microspectrophotometer's

-microspectrophotometers

-microspectrophotometric

-microspectrophotometrical

-microspectrophotometrically

-microspectrophotometry

-microsphere

-microspheric

-microsporangium

-microspore

-microsporic

-microstate

-microstructural

-microstructurally

-microstructure

-microstructures

-microsurgery

-microsurgical

-microtechnic

-microtechnique

-microtome

-microtomes

-microtonal

-microtonality

-microtonally

-microtone

-microtones

-microtubular

-microtubule

-microtubules

-micturate

-micturated

-micturates

-micturating

-micturition

-micturitions

-midafternoon

-midbrain

-midcapacity

-midcourse

-midden

-middens

-middies

-middlebrow

-middlebrowism

-middlebrows

-middorsal

-middy

-midfield

-midfielder

-midget

-midgut

-midline

-midmost

-midplane

-midportion

-midrash

-midrashic

-midrashim

-midrib

-midribbed

-midriff

-midriffs

-midsemester

-midsole

-midsummery

-midtown

-midwatch

-midwatches

-midwifery

-midwing

-midwintry

-midwived

-midwiving

-mig

-mightless

-mignonette

-migraine

-migraines

-migrainous

-migrancy

-migratetic

-migratetics

-migrational

-migrationist

-migrationists

-migrator

-migratorial

-migs

-mikado

-mikhail

-mikoyan

-mila

-milacre

-milady

-milanese

-milch

-mildewcide

-mildewproof

-mildewy

-mildhearted

-mildish

-milepost

-milesian

-milfoil

-milfoils

-milia

-miliaria

-miliarial

-miliarias

-miliary

-milieux

-milinch

-militance

-militances

-militancies

-militancy

-militaristic

-militaristically

-militaryism

-militaryisms

-militiaman

-milium

-milkily

-milkless

-milklike

-milkman

-milkmen

-milksop

-milksopping

-milksoppy

-milkstone

-millable

-millage

-millboard

-millcourse

-milldam

-millenaries

-millenary

-millenia

-millennial

-millerite

-millesimal

-millesimally

-millhouse

-milliammeter

-milliammeter's

-milliammeters

-milliard

-milliary

-millibar

-millibarn

-millicron

-millicurie

-millicycle

-millidarcy

-millieme

-milliemes

-milliequivalent

-millifarad

-milligal

-millihenry

-millihertz

-millihg

-millilambert

-millilux

-millime

-millimetric

-millimicrofarad

-millimicrofarads

-millimicron

-millimicrosecond

-millimolar

-millimolarity

-millimole

-milline

-milliner

-millionairedom

-millionairess

-millionary

-millionfold

-milliphot

-millipoise

-millirad

-milliroentgen

-millman

-millmen

-millowner

-millpond

-millponds

-millrace

-millraces

-millsite

-millstream

-millstreams

-milord

-milquetoast

-milquetoasts

-milt

-milter

-mim

-mimetism

-mimical

-mimicry

-mimosa

-min

-minable

-minaret

-minareted

-minarets

-minatory

-mincy

-mineable

-minestrone

-minesweeping

-mingy

-miniaturist

-miniaturistic

-miniaturists

-minibus

-minibuses

-minicam

-minicamera

-minicar

-minicartridge

-minikin

-minim

-minimalism

-ministrable

-ministrant

-ministration

-minitrack

-minium

-minot

-minous

-minster

-minstrelsy

-mintage

-minuscular

-minutia

-minutial

-minx

-minxes

-miocrystalline

-mioses

-miosis

-miotic

-mirabilite

-miracular

-miraculism

-miraculisms

-miraculist

-miraculists

-mirate

-mirated

-mirates

-mirating

-miration

-mirations

-mirky

-mirrorlike

-mirrory

-mirthful

-mirthfully

-mirthfulness

-mirths

-miry

-misaddress

-misaddressed

-misadjustment

-misadventure

-misadventured

-misadventures

-misadventurous

-misadvise

-misaim

-misalliance

-misally

-misandry

-misanthropically

-misanthropism

-misanthropist

-misanthropists

-misanthropy

-misappreciate

-misappreciation

-misapprehend

-misapprehended

-misapprehending

-misapprehendingly

-misapprehends

-misapprehension

-misapprehensions

-misapprehensive

-misapprehensively

-misapprehensiveness

-misappropriate

-misappropriates

-misappropriation

-misarranged

-misarrangement

-misarray

-misascription

-misassignment

-misattribution

-misbecome

-misbecoming

-misbeget

-misbehadden

-misbeholden

-misbelief

-misbelieve

-misbeliever

-misbelieving

-misbelievingly

-misbeseem

-misbestow

-misbirth

-misc

-miscalculate

-miscalculates

-miscalculating

-miscalculator

-miscall

-miscaller

-miscast

-miscasting

-miscasts

-miscegenational

-miscellanea

-miscellaneity

-miscellanist

-miscellanists

-mischance

-mischiefful

-miscibility

-miscible

-misclassifications

-misclassify

-miscomprehend

-miscomprehension

-misconceit

-misconceive

-misconceived

-misconceiver

-misconceives

-misconceiving

-misconduct

-misconducted

-misconducting

-misconducts

-miscontent

-miscontentment

-miscook

-miscopy

-miscorrect

-miscorrected

-miscounsel

-miscounseled

-miscreance

-miscreances

-miscreate

-miscreation

-miscreative

-miscreator

-misdate

-misdeal

-misdealing

-misdeem

-misdeems

-misdeliver

-misdelivered

-misdelivery

-misdemean

-misdescribe

-misdescription

-misdescriptive

-misdo

-misdoer

-misdoing

-misdoubt

-miseducated

-miseducation

-misemphasis

-misemphasization

-misemphasize

-misemphasized

-misemphasizes

-misemphasizing

-misemploy

-misemployment

-misericorde

-mises

-misesteem

-misestimate

-misestimation

-misfeasance

-misfeasor

-misfeed

-misfile

-misfiled

-misfiles

-misfiling

-misgive

-misgives

-misgovern

-misgovernment

-misguidance

-mishandle

-mishandled

-mishandles

-mishandling

-mishear

-mishmash

-misimpression

-misimprove

-misinformative

-misintelligence

-misinterpretable

-misjoinder

-misknow

-misknowledge

-misknows

-mislabel

-mislay

-mislaying

-mislays

-misleared

-mislike

-mismachine

-mismanagement

-mismarriage

-mismate

-misogamic

-misogamist

-misogamists

-misogamy

-misogynic

-misogynistic

-misologist

-misology

-misoneism

-misorder

-misperception

-misperceptions

-misplay

-mispleading

-mispoint

-mispraise

-misprint

-misprision

-misprisions

-misprize

-misprized

-misprizes

-misprizing

-mispunctuate

-mispunctuation

-misquotation

-misquote

-misquotes

-misreckon

-misrecollect

-misrecollection

-misregister

-misregistration

-misremember

-misreport

-misrepresentative

-misrule

-misruled

-misruler

-misrules

-misruling

-missend

-misshape

-misshapes

-missileer

-missileers

-missileman

-missilemen

-missilery

-missilry

-missionate

-missort

-missout

-misspeak

-misspend

-misspended

-misspender

-misspending

-misspends

-misstrike

-misterm

-mistful

-misthink

-mistily

-mistime

-mistimed

-mistrain

-mistranslate

-mistranslation

-mistreatment

-mistrustful

-mistrustfully

-mistrustfulness

-misusage

-misvalue

-misventure

-miswrite

-miswrites

-miswriting

-mitch

-miterwort

-mitigator

-mitigators

-mitigatory

-mitochondria

-mitochondrion

-mitogenesis

-mitogenetic

-mitogenic

-mitoinhibitory

-mitosis

-mitotic

-mitotically

-mitral

-mitt

-mitted

-mittimus

-mitts

-mitzvah

-mitzvah's

-mitzvahes

-mixable

-mixologist

-mixologists

-mixology

-mizzenmast

-mizzle

-mizzled

-mizzles

-mizzling

-mizzly

-mlea

-moanful

-moanfully

-mobbish

-mobbishly

-mobbishness

-mobbism

-mobocracy

-mobocrat

-mobocratic

-mocha

-mockernut

-moderationist

-moderatism

-moderato

-moderatorship

-modernist

-modicity

-modificative

-modiste

-modulability

-modulatory

-moduli

-mogul

-mohair

-mohm

-moil

-moiler

-moiling

-moilingly

-moistureless

-molality

-molarity

-moldable

-molecularity

-moleskin

-moleskins

-molestation

-molestations

-molluscan

-molluskan

-molotov

-molt

-molter

-molto

-molts

-molucca

-moly

-molybdate

-molybdic

-molybdous

-momental

-momentaneous

-monachal

-monachism

-monadism

-monandrous

-monandry

-monarchal

-monarchial

-monarchical

-monarchically

-monarchism

-monarchist

-monarchistic

-monarchists

-monasterial

-monastical

-monastically

-monatomic

-monde

-mondrian

-monel

-moner

-monestrous

-monet

-monetarily

-moneybags

-moneylender

-moneylending

-moneyless

-moneymake

-moneymaker

-moneywort

-monger

-mongered

-mongering

-mongers

-mongolism

-mongoloid

-mongrel

-mongrelism

-mongrelly

-mongrelness

-monic

-monicker

-monied

-moniker

-monilia

-monish

-monism

-monist

-monistic

-monistical

-monition

-monitions

-monitorial

-monitorially

-monitorship

-monitory

-monitress

-monkeries

-monkery

-monkeyflower

-monkeyshine

-monkhood

-monoacid

-monoacidic

-monoamine

-monochasial

-monochromat

-monochromatically

-monochromaticity

-monochromatism

-monochromic

-monochromist

-monocline

-monocoque

-monocracy

-monocrat

-monocratic

-monocultural

-monoculture

-monocycle

-monocyclic

-monocycly

-monocyte

-monocytic

-monodisperse

-monodist

-monodrama

-monodramatic

-monoecious

-monoeciously

-monoecism

-monoenergetic

-monoester

-monofilament

-monofuel

-monogamic

-monogamist

-monogamists

-monogastric

-monogenean

-monogenesis

-monogenetic

-monogenic

-monogenically

-monogerm

-monogram

-monogram's

-monogrammatic

-monograms

-monographic

-monographical

-monography

-monogynous

-monogyny

-monohybrid

-monoid

-monolayer

-monologuist

-monomania

-monomaniac

-monometallic

-monometer

-monometer's

-monometers

-monomolecular

-monomolecularly

-monomorphemic

-monomorphic

-monomorphism

-monomorphous

-monophonically

-monophony

-monophthong

-monophthongal

-monophyletic

-monophyletism

-monoplane

-monoploid

-monopodial

-monopodially

-monopolist

-monopolistically

-monopropellant

-monopsony

-monopulse

-monorail

-monorail's

-monorails

-monosaccharide

-monosaccharides

-monosomic

-monostat

-monostatic

-monosyllabically

-monosyllabicity

-monosymmetric

-monosymmetry

-monosynaptic

-monosynaptically

-monotheist

-monotheistical

-monotheistically

-monotint

-monotrematous

-monotreme

-monotrichous

-monotype

-monotypic

-monovalent

-monovular

-monoxide

-monozygotic

-monsoonal

-monstrance

-monstrances

-montaigne

-monte

-monticule

-monumentless

-mooch

-moocher

-mooches

-mooching

-moola

-moolah

-moonbeam

-moonbeam's

-moonbeams

-moonbow

-mooncalf

-mooneye

-moonish

-moonishly

-moonless

-moonlet

-moonquake

-moonrise

-moonscape

-moonseed

-moonset

-moonstone

-moonstruck

-moonward

-moony

-moorage

-mopper

-moppet

-morainal

-morainic

-moralism

-moralistically

-morassy

-moray

-mordacious

-mordaciously

-mordacity

-mordancy

-mordent

-morehouse

-morel

-moresque

-morganatic

-morganatically

-morganite

-moribundity

-moron

-moronically

-moronism

-moronity

-morosity

-morph

-morphinic

-morphinism

-morpho

-mort

-mortarboard

-mortem

-mortgagor

-mortgagors

-mortimer

-mortise

-mortising

-mortmain

-mortuaries

-mortuary

-mortuary's

-mosaically

-mosaicism

-mosaicist

-moscone

-mosey

-moseyed

-moseying

-mosquitoey

-mossback

-mossbacked

-mosslike

-mot

-mote

-motet

-mothball

-motherhouse

-motherless

-motherlessness

-mothproof

-mothproofer

-motile

-motility

-motivic

-motivity

-motoneuron

-motorbike

-motorboat

-motorboater

-motorboating

-motorcade

-motorcade's

-motorcades

-motorcyclist

-motordrome

-motoric

-motorically

-motorless

-motortruck

-motorway

-mots

-moulage

-moulin

-moulins

-moult

-mountaintop

-mountaintop's

-mountaintops

-mountainy

-mountebank

-mountebankery

-mousetrap

-mousey

-mousily

-moussaka

-mousse

-mouthier

-mouthlike

-mouthpart

-mouthy

-movability

-movably

-moveless

-movelessly

-movelessness

-moviedom

-moviegoer

-moviemaker

-mown

-moxie

-mozzarella

-mu

-muciferous

-mucilaginous

-mucilaginously

-muckrake

-muckraker

-muckraking

-mucosa

-mucous

-mudded

-muddily

-mudhole

-mudhole's

-mudholes

-mudsill

-mudstone

-mudstones

-muezzin

-mufti

-muftis

-mugged

-mugger

-muggily

-mugho

-mugwump

-muhammad

-mukluk

-muley

-muliebrity

-mullein

-mullet

-mullets

-mullion

-mullite

-multiaperture

-multicavity

-multicellularity

-multichip

-multicollector

-multicompletion

-multicoupler

-multicycle

-multideck

-multielectrode

-multiengine

-multifactorial

-multifactrially

-multifarious

-multifariously

-multifariousness

-multifold

-multiform

-multiformity

-multihued

-multilane

-multilaned

-multilayer

-multilayered

-multilayers

-multilingual

-multilingualism

-multilingualist

-multilingually

-multimeter

-multimeter's

-multimeters

-multinucleate

-multinucleated

-multipactor

-multiparous

-multipartite

-multiphase

-multiphasic

-multiphastic

-multiplicable

-multiplicate

-multiplicates

-multipolar

-multipolarity

-multipronged

-multiracial

-multiracialism

-multisectoral

-multisegment

-multistatic

-multistory

-multivalence

-multivalued

-multivolume

-multivolumed

-mummer

-mummery

-mumming

-mump

-mumper

-mumps

-mundt

-mung

-munificence

-munist

-munroe

-muonic

-muralist

-murderee

-murderess

-muriate

-murkily

-murmurous

-murmurously

-murrain

-murre

-murrey

-murrow

-muscadine

-muscatel

-muscly

-muscularity

-musculoskeletal

-musee

-musette

-musettes

-mushily

-musicale

-musicological

-musicologist

-musketeer

-musketry

-muskie

-muskier

-muskies

-muskiness

-musky

-mussier

-mussily

-mussiness

-mussy

-mustily

-mutably

-mutafacient

-mutagen

-mutagenesis

-mutagenic

-mutagenically

-mutagenicity

-mutandis

-mutase

-mutatis

-muticous

-mutilator

-mutine

-mutined

-mutining

-mutinous

-mutinously

-mutinousness

-muttonchops

-muttony

-mutualism

-mutualist

-mutualistic

-mutuel

-muumuu

-muzzier

-muzzily

-muzziness

-muzzy

-mycobacteria

-mycoplasma

-mycorrhiza

-mycosis

-mycotic

-myel

-myeline

-myeloid

-myocarditis

-myofibril

-myoglobin

-myopically

-myosin

-myosotis

-myotic

-myotome

-myotonia

-myriameter

-myriameter's

-myriameters

-myriapod

-myriopod

-myristate

-myrmecological

-myrrh

-mystagogy

-mythmaker

-mythmaking

-mythologer

-mythologic

-mythologist

-mythomania

-mythomaniac

-mythopoeic

-mythopoetic

-mythopoetical

-mythos

-nacelle

-nacreous

-nagger

-naiad

-naivety

-nakamura

-nakoma

-namable

-nannies

-nanny

-nanook

-napalm

-nape

-napery

-napes

-naphthalene

-naphthalenic

-naphthene

-naphthenic

-naphthol

-napless

-napper

-nappier

-nappies

-nappy

-narc

-narcism

-narcissi

-narcissism

-narcist

-narcolepsy

-narcoleptic

-narcos

-narcotically

-narrational

-narrowminded

-narwal

-narwhal

-narwhal's

-narwhals

-nascence

-nascency

-nastic

-natant

-natation

-natations

-natatorial

-natatorium

-natatory

-nate

-nates

-nationalistically

-nativism

-nativist

-nativistic

-nattily

-naturalistically

-naturam

-naturopath

-naughtily

-nauseant

-nauseous

-nauseously

-nauseousness

-nauseum

-naut

-navaho

-nave

-naves

-navicular

-navigability

-navigably

-navigational

-navigationally

-navona

-navtas

-naw

-nawab

-nazification

-nazifications

-nazified

-nazifies

-nazify

-nazifying

-neath

-nebbish

-nebulosity

-necessitarian

-necessitarianism

-necessitous

-necessitously

-necessitousness

-neckerchief

-necrological

-necrologist

-necrologists

-necrology

-necromantically

-necrophagia

-necrophagous

-necrophagy

-necrophilia

-necrophilic

-necrophilism

-necropolis

-necroses

-nectareous

-nectarine

-needlelike

-needlewoman

-needlewomen

-nefarious

-nefariously

-nefariousness

-negational

-negativist

-negativistic

-negativists

-negaton

-negatron

-neglectful

-neglectfully

-neglectfulness

-negligibility

-negligibly

-negotiability

-negotiator

-negotiators

-negotiatory

-negrophile

-negrophilism

-nematicidal

-nematicide

-nematocyst

-nemeses

-nemophila

-neo

-neoanthropic

-neoclassicism

-neoclassicist

-neocosmic

-neofascism

-neogenesis

-neogenetic

-neoglycolipid

-neoglycolipids

-neoliberalism

-neolith

-neological

-neologistic

-neology

-neonate

-neoorthodox

-neoorthodoxy

-neoplasia

-neoplasm

-neoplastic

-neoplasticism

-neoplasticist

-neoplasticists

-neostigmine

-neotenic

-neoteny

-neoteric

-neotype

-nepenthe

-nepenthean

-nephanalysis

-nepheline

-nephelinic

-nephelinite

-nephelinitic

-nephelite

-nephelometer

-nephelometer's

-nephelometers

-nephelometric

-nephelometry

-nephometer

-nephometer's

-nephometers

-nephoscope

-nephrectomy

-nepotism

-nepotist

-nepotistic

-nepotists

-nereid

-nervation

-nervations

-nervosity

-nescience

-nesciences

-nescient

-nethermost

-netkeeper

-netless

-netlike

-netter

-netty

-neumatic

-neuralgic

-neuritic

-neuroanatomic

-neuroanotomy

-neuroblastoma

-neurochemistry

-neurocirculatory

-neuroendocrine

-neuroepithelial

-neurofibril

-neurofibrillary

-neurogenic

-neurogenically

-neuroglia

-neuroglial

-neuronic

-neuropathic

-neuropathically

-neuropathy

-neurospora

-neurosurgeon

-neurosurgery

-neurosurgical

-neurotically

-neuroticism

-neurotoxic

-neurotoxicity

-neurotoxin

-neurotropic

-neutercane

-neutralistic

-neutronium

-neutrophil

-neutrophile

-neutrophilic

-neutrophilis

-neutrophils

-neve

-nevermore

-nevers

-nevus

-newbury

-newfangled

-newfangledness

-newish

-newsagent

-newsagents

-newsbreak

-newsier

-newsiness

-newsless

-newsmagazine

-newsmonger

-newsprint

-newsroom

-newsy

-niacin

-nib

-nibelungenlied

-nibs

-niccolo

-nickelic

-nickeliferous

-nickelodeon

-nickelous

-nicklaus

-nicknameless

-nicotinamide

-nicotinic

-nidification

-nidifugous

-nietzschean

-nigger

-nightclothes

-nightclubber

-nightglow

-nightie

-nighties

-nightlong

-nightshade

-nightside

-nightstand

-nightstick

-nighttide

-nightwalker

-nighty

-nihilianism

-nihilistically

-nihility

-nijinsky

-nill

-nilmanifold

-nimbostratus

-nimiety

-nimming

-nincompoop

-nincompoopery

-ninebark

-ninepin

-ninepins

-ninetyfold

-ninnies

-ninny

-ninnyhammer

-nipper

-nippers

-nippier

-nippily

-nippiness

-nippy

-nisei

-niseis

-nit

-nite

-nitid

-nitrator

-nitrification

-nitrifications

-nitrify

-nitrile

-nitro

-nitrobenzene

-nitrocellulose

-nitrocellulosic

-nitrofuran

-nitroglycerin

-nitroparaffin

-nitros

-nitrosamine

-nitrosoamine

-nitty

-nitwit

-nitwitted

-nobbier

-nobble

-nobbled

-nobbling

-nobby

-noblewoman

-nocent

-noces

-nociceptive

-nock

-nocking

-noctambulation

-noctambulism

-noctambulist

-nocturn

-nocuous

-nocuously

-nodality

-nodder

-noddies

-noddle

-noddy

-nodi

-nodical

-nodose

-nodosity

-nodulation

-nodus

-noes

-noetic

-nog

-noggin

-nogging

-nohow

-noisome

-noisomely

-noisomeness

-nolo

-noma

-nomad

-nomadic

-nomadism

-nomads

-nomenclator

-nomenclatorial

-nomenclatural

-nomic

-nomina

-nominalism

-nominalist

-nominalistic

-nominator

-nominators

-nomogram

-nomogram's

-nomograms

-nomograph

-nomographer

-nomographic

-nomographically

-nomographies

-nomography

-nomological

-nomology

-nomothetic

-nonage

-nonagenarian

-nonagon

-nonallelic

-nonbank

-nonbook

-noncalcareous

-nonce

-nonchalance

-noncharitable

-noncom

-nonconcurrence

-nonconcurrency

-noncondensing

-nonconducting

-nonconductor

-nonconductors

-nonconfidence

-nonconform

-nonconformable

-nonconformably

-nonconformance

-nonconformer

-nonconforming

-nonconformism

-nonconformity

-noncooperation

-noncooperationist

-noncooperative

-noncooperator

-noncrossing

-noncurrent

-nondeductibility

-nondeductible

-nondefense

-nondefense's

-nondefenses

-nondeforming

-nondegenerate

-nondemocratic

-nondestructive

-nondirectional

-nondirective

-nondisjunction

-nondisjunctional

-nondistinctive

-nondivided

-nondormant

-nondramatic

-nondrying

-noneconomist

-nonelectrolyte

-nonentities

-nonentity

-nonesuch

-noneuclidean

-nonfat

-nonfeasance

-nonfictional

-nonfigurative

-nonflammable

-nonflowering

-nonfragmenting

-nongovernment

-nongovernmental

-nonillion

-nonimpact

-nonimpinging

-noninductive

-nonintersecting

-nonintervention

-noninterventionist

-noninverting

-noninvolvement

-nonjoinder

-nonjuring

-nonjuror

-nonlinguist

-nonliterate

-nonloaded

-nonmatching

-nonmetal

-nonmoral

-nonmultiple

-nonnucleated

-nonobjective

-nonobjectivism

-nonobjectivist

-nonobjectivity

-nonobservance

-nonoccurrence

-nonparallel

-nonparametric

-nonparametrics

-nonpareil

-nonparticipant

-nonparticipating

-nonparticipation

-nonpartisanship

-nonpast

-nonpaternity

-nonpathogenic

-nonpermanent

-nonpersonal

-nonplus

-nonpluses

-nonpolar

-nonporous

-nonpositive

-nonpossession

-nonpossessor

-nonprint

-nonprinting

-nonproducer

-nonproductive

-nonproductively

-nonproductiveness

-nonprofessional

-nonprofessionally

-nonprofitable

-nonprogressive

-nonpros

-nonprossed

-nonprossing

-nonprotein

-nonreactive

-nonreader

-nonrealistic

-nonreclosing

-nonrecording

-nonregulation

-nonreimbursable

-nonrelativistic

-nonreligious

-nonremovable

-nonrenewable

-nonrepresentational

-nonrepresentationalism

-nonrepresentative

-nonresidence

-nonresidency

-nonresistant

-nonrestraint

-nonrestricted

-nonrestrictive

-nonretractable

-nonreturnable

-nonrigid

-nonscheduled

-nonscientific

-nonseasonal

-nonsecretor

-nonsectarian

-nonsegregated

-nonsegregation

-nonsignificant

-nonsignificantly

-nonskid

-nonslip

-nonsocial

-nonspecific

-nonsporting

-nonsupport

-nonsyllabic

-nonsynchronous

-nontemporal

-nontenure

-nonunion

-nonuse

-nonuser

-nonviable

-nonviolence

-nonvolatile

-nonworker

-normotensive

-northeasternmost

-northeastward

-northeastwards

-northwestward

-northwestwards

-nosebag

-nosebag's

-nosebags

-nosegay

-nosepiece

-nosey

-noseying

-nosh

-nosher

-nosily

-nosologic

-nosological

-nosologically

-nosology

-nostrum

-nota

-notability

-notarial

-notarially

-notarius

-notecase

-noteless

-notepaper

-noteworthily

-notional

-notionality

-notionally

-notocord

-nougat

-nouncing

-nous

-novaculite

-novae

-novelette

-novelettish

-novelistic

-novella

-novelle

-novemdecillion

-novena

-novocaine

-nowaday

-noway

-noways

-nowhither

-nowise

-noyes

-nu

-nub

-nubbin

-nubble

-nubbles

-nubbly

-nubility

-nucellar

-nucelli

-nucellus

-nuchal

-nucleant

-nuclease

-nucleator

-nuclein

-nucleocapsid

-nucleolar

-nucleon

-nucleon's

-nucleonic

-nucleonics

-nucleons

-nucleophile

-nucleophilic

-nucleophilically

-nucleophilicity

-nucleoplasm

-nucleoplasmatic

-nucleoplasmic

-nucleoprotein

-nucleoside

-nucleosynthesis

-nucleotidase

-nuclidic

-nudibranch

-nugent

-nullificationist

-nulliparous

-numberable

-numbskull

-numia

-numis

-numismatically

-nummular

-numskull

-nunciation

-nunciature

-nuncupate

-nuncupation

-nuncupative

-nunes

-nunnery

-nuovo

-nuptiality

-nursemaid

-nurserymaid

-nurseryman

-nursling

-nurtural

-nurturant

-nutational

-nuthatch

-nutlike

-nutria

-nutriment

-nutted

-nutting

-nux

-nymphal

-nymphalid

-nymphet

-nymphette

-nympholepsy

-nympholept

-nymphomaniacal

-nystagmic

-nystagmus

-o'er

-oafish

-oafishly

-oafishness

-oarsman

-oarsmanship

-oatcake

-oatcake's

-oatcakes

-obbligato

-obcordate

-obeah

-obeisance

-obi

-objectionably

-objectivism

-objectivist

-objectivistic

-objectless

-objectlessness

-objurgate

-objurgated

-objurgates

-objurgating

-objurgation

-objurgations

-objurgatory

-oblast

-obligator

-obligatorily

-obligee

-obligor

-obligors

-obliquity

-obliterator

-obliviated

-obliviates

-obliviating

-oblongatal

-oblongated

-oblongish

-obloquious

-obloquy

-obnubilate

-obnubilated

-obnubilates

-obnubilating

-obnubilation

-obnubilations

-obovate

-obovoid

-obscurant

-obscurantic

-obscurantism

-obscurantist

-obscuration

-obscurations

-obsessional

-obsessionally

-obsolesce

-obstetric

-obstetrical

-obstetrically

-obstetrician

-obstetrician's

-obstetricians

-obstetrics

-obstreperous

-obstreperously

-obstreperousness

-obstructionism

-obstructionistic

-obstructor

-obstruent

-obtainability

-obtainment

-obtect

-obtected

-obtest

-obtestation

-obtrusion

-obtund

-obturate

-obturated

-obturates

-obturating

-obturation

-obturator

-obvert

-occas

-occiput

-occludent

-occlusal

-occultation

-occultations

-occultism

-occultist

-occurrent

-oceana

-oceanarium

-oceanfront

-oceangoing

-oceanographer

-oceanographer's

-oceanographers

-oceanographical

-oceanographically

-oceanologic

-oceanological

-oceanologically

-oceanologist

-oceanology

-ocellar

-ocellate

-ocellated

-ocellation

-ocelli

-ocellus

-och

-ochlocracy

-ochlocrat

-ochlocratic

-ochlocratical

-oconomowoc

-ocotillo

-octadecyl

-octahedra

-octahedral

-octahedrally

-octameter

-octameter's

-octameters

-octandrious

-octant

-octant's

-octants

-octodecillion

-octodecimo

-octoploid

-octoploidy

-octopod

-octopodan

-octopodous

-octosyllabic

-octosyllable

-octroi

-oculomotor

-odalisque

-oddball

-oddball's

-oddballs

-oddment

-odea

-odeum

-odic

-odilo

-odograph

-odontologst

-odontology

-odorant

-odoriferous

-odoriferously

-odoriferousness

-oedipal

-oeillade

-oenology

-oenomel

-oersted

-oeuvre

-oeuvres

-offcast

-officialese

-officialism

-officiant

-officiary

-offish

-offishly

-offishness

-offprint

-offprints

-offsaddle

-offscour

-offscouring

-offscreen

-offside

-ofttimes

-ogeographically

-ogle

-ogler

-ogles

-ogling

-ogre

-ogreish

-ogress

-ohmage

-ohmically

-ohs

-oilcan

-oilily

-oilskin

-oilstone

-oink

-okamoto

-okapi

-okra

-olasticism

-oldfangled

-oldie

-oldish

-oleaginous

-oleaginously

-oleaginousness

-oleaster

-oleate

-olefin

-oleg

-oleophilic

-oleophobic

-olfaction

-olfactions

-olfactive

-olfactology

-olfactometer

-olfactometer's

-olfactometers

-olfactorily

-olfactory

-oligarch

-oligarchical

-oligochaete

-oligoclase

-oligomer

-oligomer's

-oligomers

-oligosaccharide

-oligosaccharide's

-oligosaccharides

-olivine

-olympiad

-om

-ombudsman

-ombudsman's

-ombudsperson

-omelette

-omental

-omentum

-omer

-omissible

-ommatidial

-ommission

-omnidirectional

-omnifarious

-omnifariously

-omnifariousness

-omnificence

-omnificences

-omnificent

-omnify

-omnipotency

-omnipresence

-omnirange

-omniscience

-omnisciency

-omnist

-omnivorous

-omnivorously

-omnivorousness

-onanistic

-oncogene

-oncogene's

-oncogenes

-oncogenic

-onefold

-oneiric

-oneirocritic

-oneirocritical

-oneirocritically

-oneiromancy

-onionskin

-onium

-onload

-onlooking

-onomastic

-onomastics

-onomatology

-onomatopoeia

-onomatopoeia's

-onomatopoeic

-onsetting

-onshore

-onside

-onstage

-ontically

-ontogenesis

-ontogenetic

-ontogenetically

-ontologist

-oocyte

-oomph

-oozier

-oozy

-op

-opalescence

-opalescences

-opaline

-openability

-openable

-openendedness

-openhanded

-openhandedly

-openhandedness

-openhearted

-openheartedly

-openheartedness

-openmouthed

-openmouthedly

-openmouthedness

-openwork

-operability

-operably

-operatically

-operationalism

-operationalist

-operationalistic

-operationism

-operationist

-opercular

-operculate

-operculated

-operculum

-operettist

-operon

-ophidian

-ophiology

-ophiophagous

-ophite

-ophitic

-ophthalmologic

-ophthalmologically

-ophthalmology

-ophthalmoscope

-ophthalmoscopic

-ophthalmoscopical

-ophthalmoscopy

-opine

-opined

-opines

-oping

-opining

-opinionate

-opinionative

-opinionatively

-opinionativeness

-opportunist

-opposability

-opposeless

-oppositional

-opprobrious

-opprobriously

-opprobriousness

-oppugn

-oppugner

-ops

-opsonic

-opsonin

-optative

-optatively

-optician

-optima

-optimistical

-optimo

-optoacoustic

-optoisolate

-optokinetic

-optometrical

-opulence

-opuntia

-opuscule

-opusculum

-ora

-orach

-orache

-oracular

-oracularity

-oracularly

-orality

-orangeade

-orangeroot

-orangery

-orangewood

-orangey

-orangish

-orangoutan

-orangy

-oratio

-oratoric

-orbicular

-orbicularity

-orbicularly

-orbiculate

-orbiculately

-orca

-orca's

-orcas

-orch

-orchardist

-orchardman

-orchesis

-orchestrational

-orchestrator

-orchestre

-orchis

-ordainment

-orderless

-ordinand

-ordines

-ordure

-organdie

-organelle

-organicism

-organicist

-organismal

-organismically

-orgasmic

-orgastic

-orgiastically

-orgulous

-orientable

-orientalism

-orientalist

-orientational

-orientationally

-orienteering

-orificial

-oriflamme

-origami

-origanum

-orismological

-orismology

-orison

-orney

-ornith

-ornithic

-ornithine

-ornithology

-ornithology's

-orogenic

-orogeny

-orographical

-orographically

-orotund

-orotundity

-ort

-orthant

-orthicon

-ortho

-orthocephalic

-orthocephalous

-orthocephaly

-orthochromatic

-orthoclase

-orthoclastic

-orthodontia

-orthoepic

-orthoepical

-orthoepically

-orthoepist

-orthoepy

-orthogenesis

-orthogenetic

-orthogenetically

-orthogenic

-orthognathism

-orthognathous

-orthognathy

-orthograde

-orthographical

-orthographically

-orthopsychiatric

-orthopsychiatrist

-orthopsychiatry

-orthopteran

-orthopterist

-orthopteroid

-orthopteron

-orthorhombic

-orthoscope

-orthoscopes

-orthoscopic

-orthotic

-orthotics

-orthotist

-orthotropic

-orthotropically

-orthotropism

-orthotropous

-ortolan

-orts

-oryx

-oryxes

-orzae

-oscillational

-oscillogram

-oscillogram's

-oscillograms

-oscillograph

-oscillographic

-oscillographically

-oscillography

-oscilloscopic

-oscilloscopically

-oscine

-osculate

-osculated

-osculates

-osculating

-osculation

-osculations

-osculatory

-osculum

-osier

-osmatic

-osmeterium

-osmic

-osmiridium

-osmolal

-osmolality

-osmolar

-osmolarity

-osmometer

-osmometer's

-osmometers

-osmometric

-osmometry

-osmoregulation

-osmoregulatory

-osmose

-osmosed

-osmosing

-osmotically

-osmous

-osmunda

-oso

-osram

-osric

-ossicle

-ossicular

-ossiculate

-ossiculated

-ossificatory

-ossifrage

-ossuary

-osteitis

-ostensive

-ostensively

-ostensorium

-ostentation

-ostentations

-osteoarthritic

-osteoarthritis

-osteoblast

-osteoblastic

-osteoclast

-osteoclastic

-osteocyte

-osteoid

-osteological

-osteologically

-osteologist

-osteoma

-osteopathically

-osteophyte

-osteophytic

-osteoplastic

-osteoplasty

-ostracod

-otherguess

-otherwhere

-otherwhile

-otherwhiles

-otiose

-ouabain

-ouan

-oubliette

-ough

-oui

-outbalance

-outbid

-outbound

-outbrave

-outbreed

-outbreeding

-outbuilding

-outby

-outbye

-outcaste

-outcrop

-outcross

-outdazzle

-outdistance

-outdoorsman

-outdoorsmanship

-outdoorsy

-outdraw

-outercoat

-outfall

-outfight

-outfighting

-outfitter

-outfitting

-outflank

-outflanker

-outfoot

-outgas

-outgeneral

-outgiving

-outgo

-outgoes

-outguess

-outgun

-outhaul

-outlier

-outmatch

-outmode

-outmoding

-outmost

-outpace

-outpaced

-outplay

-outpoint

-outport

-outporter

-outpull

-outputted

-outrace

-outrance

-outrange

-outrank

-outride

-outrider

-outrival

-outscore

-outsell

-outsert

-outshine

-outshoot

-outshout

-outsight

-outsit

-outsize

-outskirt

-outsleep

-outsmell

-outsoar

-outsole

-outspeak

-outspeed

-outspend

-outspent

-outspin

-outstand

-outstare

-outstart

-outstay

-outstretch

-outtake

-outtalk

-outthink

-outturn

-outwear

-outwork

-ouvre

-ouzel

-ovarial

-ovarian

-ovariectomy

-ovariole

-ovariotomy

-ovaritis

-ovenbird

-ovenbirds

-overabundant

-overact

-overaction

-overactivity

-overarm

-overawe

-overbalance

-overbear

-overbearance

-overbid

-overbite

-overblew

-overblow

-overblowing

-overblows

-overbought

-overbuild

-overbuy

-overcall

-overcalled

-overcalling

-overcalls

-overcapacity

-overcareful

-overcarefully

-overcautious

-overcharge

-overcompensate

-overcompensation

-overcompensatory

-overconfidence

-overcurrent

-overcurrents

-overdetermination

-overdetermined

-overdevelop

-overdevelopment

-overdo

-overdominance

-overdominant

-overdress

-overdrive

-overemphasization

-overemphasization's

-overemphasizations

-overet

-overexcite

-overexcitement

-overexposure

-overfastidious

-overfed

-overfish

-overfleshed

-overflight

-overflown

-overfly

-overgarment

-overglaze

-overgraze

-overgrow

-overgrowth

-overily

-overindulge

-overindulgence

-overindulgent

-overissue

-overissued

-overissues

-overissuing

-overleap

-overlearn

-overlie

-overlong

-overlord

-overlordship

-overman

-overmaster

-overmatch

-overmuch

-overoptimism

-overoptimist

-overoptimistic

-overoptimistically

-overpass

-overpay

-overpersuade

-overpersuasion

-overplay

-overplus

-overpopulate

-overpraise

-overprize

-overproduce

-overproduced

-overproduces

-overproducing

-overpronounce

-overproof

-overproportion

-overprotect

-overrate

-overreact

-overreaction

-overrefine

-overrefinement

-overrepresent

-overripe

-oversanguine

-oversea

-overseen

-oversell

-overselling

-oversells

-oversensitive

-oversensitiveness

-oversexed

-overshoe

-overskirt

-overslaugh

-oversleep

-overslip

-oversold

-oversoul

-overspeculate

-overspeculation

-overspeed

-overspend

-overspender

-overspending

-overspends

-overspread

-oversteepen

-oversteer

-overstep

-oversteps

-overstock

-overstory

-overstrain

-overstrew

-overstride

-overstrung

-overstuff

-overstuffed

-overstuffing

-overstuffs

-oversubscribe

-oversubscribes

-oversubscribing

-oversubscription

-oversubtle

-oversubtlety

-overtax

-overtaxation

-overthrust

-overtop

-overtrade

-overtrain

-overtrick

-overtrump

-overvalue

-overvoltage

-overvoltages

-overwatch

-overwear

-overweary

-overween

-overweening

-overweigh

-overwind

-overwinter

-overword

-overwrought

-ovicidal

-ovicide

-oviduct

-oviductal

-ovine

-oviparous

-oviparously

-oviparousness

-oviposit

-oviposition

-ovipositional

-ovipositor

-ovoid

-ovoidal

-ovonic

-ovotestis

-ovoviviparous

-ovoviviparously

-ovoviviparousness

-ovular

-ovulate

-ovulated

-ovulates

-ovulating

-ovulation

-ovulations

-ovule

-ow

-owerless

-owlet

-oxacillin

-oxalacetate

-oxalacetic

-oxalis

-oxaloacetate

-oxazine

-oxblood

-oxbow

-oxeye

-oxheart

-oxidase

-oxidasic

-oxidic

-oxonian

-oxtail

-oxygenator

-oxygenic

-oxygenicity

-oxygenless

-oxyhemoglobin

-oxyhydrogen

-oxymoron

-oxyphil

-oxyphile

-oxyphilic

-oxysome

-oxysulfide

-oystchers

-oysterman

-oystermen

-oz

-ozagen

-ozagenians

-ozocerite

-ozokerite

-ozonic

-ozonide

-ozoniferous

-ozonosphere

-ozonous

-ozzie

-pacem

-pacemaking

-pacesetter

-pachyderm

-pachydermal

-pachydermatous

-pachydermatously

-pachysandra

-pachytene

-pacifiable

-pacifically

-pacificator

-pacificators

-pacificatory

-pacificist

-pacifistically

-packability

-packable

-packboard

-packhorse

-packinghouse

-packman

-packsack

-packsaddle

-packthread

-packwood

-paddleboard

-padrone

-paella

-paeon

-paestum

-paganini

-paganish

-pageboy

-paginal

-pailful

-painfuller

-painfullest

-paisley

-paix

-paladin

-palaeoanthropic

-palaeontology

-palaeontology's

-palaestra

-palanquin

-palasts

-palatably

-palatial

-palatially

-palatialness

-palatinate

-palaver

-palavered

-palavering

-palazzo

-palazzos

-paleface

-paleoanthropology

-paleoanthropology's

-paleoecologic

-paleoecological

-paleoecologist

-paleoecology

-paleogeographic

-paleogeographical

-paleogeographically

-paleogeography

-paleographer

-paleographic

-paleographical

-paleographically

-paleography

-paleolith

-paleoliths

-paleologist

-paleologists

-paleomagnetics

-paleontologic

-paleontological

-paleontologist

-paleontology

-paleozoological

-paleozoology

-palingenesis

-palingenetic

-palinode

-palish

-palladia

-pallbearer

-pallette

-pallial

-palliasse

-palliator

-pallium

-pallor

-pallor's

-pallors

-palmar

-palmary

-palmate

-palmated

-palmately

-palmation

-palmier

-palmistry

-palmitate

-palmlike

-palmy

-palomino

-palp

-palpability

-palpal

-palpate

-palpated

-palpates

-palpating

-palpation

-palpations

-palpebral

-palpi

-palpitant

-palpitate

-palpitated

-palpitates

-palpitating

-palter

-paltered

-palterer

-paltering

-paludal

-paludism

-palynologic

-palynological

-palynologically

-palynologist

-palynology

-pampa

-pampas

-pamphleteer

-pamphleteers

-panacean

-panache

-panatela

-panchromatic

-pancratium

-pandect

-pandects

-pandied

-pandit

-panegyric

-panegyrical

-panegyrically

-panegyrist

-panetela

-panetella

-panful

-pangenesis

-pangenetic

-pangolin

-panhandle

-panhandled

-panhandler

-panhandles

-panhandling

-panhuman

-panicking

-panicle

-pannier

-panoramically

-panpipe

-panpipes

-pantalets

-pantalettes

-pantaloon

-pantaloons

-pantas

-pantheistic

-pantheistical

-pantheistically

-pantie

-pantile

-pantiled

-pantisocracies

-pantisocracy

-pantisocratic

-pantisocratical

-pantisocratist

-pantograph

-pantographic

-pantomimic

-pantomimist

-pantothenate

-pantothenic

-pantropic

-pantryman

-pantrymen

-pantsuit

-pantywaist

-panza

-panzer

-papacy

-papaw

-paperbound

-paperboy

-paperboys

-paperhanger

-paperhanging

-papermaker

-papermakers

-papermaking

-papiers

-papilla

-papillae

-papillate

-papillated

-papilloma

-papillomatous

-papillon

-papillose

-papillote

-papist

-papistry

-pappose

-para

-parabiosis

-parabiotic

-parabiotically

-parabolically

-parachutic

-parachutist

-paradigmatical

-paradisaic

-paradisaical

-paradisaically

-paradisal

-paradisiac

-paradisiacal

-paradisiacally

-paraffinic

-paragenesis

-paragenetic

-paragenetically

-paraginase

-paragonite

-paragraphic

-paralinguistic

-parallactic

-paralogism

-paralytic

-paramagnetically

-paramagnetism

-paramecium

-paramedic

-parament

-parametrical

-paramnesia

-paramountcy

-paramour

-paranormality

-paranymph

-paraoxon

-paraph

-paraphrasable

-paraphrastic

-paraphrastically

-paraphysis

-paraplegia

-parapodial

-parapodium

-paraquat

-pararosaniline

-parasang

-paraselene

-paraselenic

-parasexual

-parasexuality

-parasitical

-parasitically

-parasiticidal

-parasiticide

-parasitism

-parasympathomimetic

-parasynthesis

-parasynthetic

-paratactic

-paratactical

-paratactically

-parataxis

-parathion

-parathyroid

-parathyroidectomy

-paratyphoid

-paravane

-paraxial

-parbuckle

-parbuckled

-parbuckling

-parcenary

-parcener

-pard

-pardner

-pardners

-paregoric

-parella

-parenchyma

-parenchymal

-parenteral

-parenterally

-parfait

-parian

-paries

-parietal

-parietes

-parioli

-parisina

-parisology

-parka

-parka's

-parkas

-parkinsonism

-parlante

-parle

-parling

-parlous

-parlously

-parmigiana

-parmigiano

-parodic

-parodist

-parodistic

-parol

-paronomasia

-paronomastic

-paronym

-paronymous

-parotid

-parotitis

-parous

-paroxysm

-paroxysmal

-paroxytone

-parquetry

-parrakeet

-parricidal

-parricide

-parrillo

-parring

-parris

-partan

-parterre

-parthenocarpic

-parthenocarpically

-parthenocarpy

-parthenogenesis

-parthenogenetic

-parthenogenetically

-parti

-partible

-participator

-particularism

-particularist

-partisanship

-partite

-partitionist

-partitive

-partitively

-partizan

-parturient

-parturition

-partway

-parure

-parve

-parvenue

-parvis

-parvise

-paschal

-pasha

-passably

-passarine

-passavant

-passbook

-passbook's

-passbooks

-passel

-passementerie

-passerine

-passible

-passim

-passional

-passionless

-passivate

-passivated

-passivates

-passivating

-passivation

-passivations

-passivism

-passivist

-passivists

-passkey

-pastelist

-pastellist

-pastern

-pasternak

-pasterns

-pastil

-pastilles

-pastlle

-pastorale

-pastoralism

-pastoralist

-pastorate

-pastorium

-pastorship

-pastrami

-pasturage

-pastureland

-patagonians

-patchboard

-patchily

-patchouli

-patchouly

-pate

-patella

-patellae

-patellar

-patellas

-patelliform

-patency

-patentability

-patentor

-paterfamilias

-paternalist

-pathbreaking

-pathetical

-pathetically

-pathfinder

-pathfinding

-pathogenetic

-pathogenically

-pathogenicity

-pathognomonic

-pathol

-pathometer

-pathometer's

-pathometers

-pathomorphologic

-pathomorphological

-pathomorphology

-pathophysiologic

-pathophysiological

-pathophysiology

-patible

-patil

-patinae

-patine

-patined

-patining

-patisseries

-patois

-patresfamilias

-patriarchate

-patriciate

-patriciates

-patricidal

-patricide

-patrilineage

-patrilineal

-patriotically

-patristical

-patroller

-patronal

-patronne

-patronymic

-patroon

-patten

-pattie

-patulous

-patulously

-patulousness

-paulownia

-pauperism

-pavanne

-pavese

-pavid

-pawl

-pawnbroker

-pawnbroker's

-pawnbrokers

-pawnbroking

-pawnor

-pawpaw

-pax

-paxam

-paxton

-payee

-paygrade

-paygrades

-payola

-payor

-peaceably

-peacekeeper

-peacekeeping

-peacemake

-peacemaker

-peachier

-peachy

-peacockish

-peafowl

-peahen

-pealike

-pearlescence

-pearlescent

-pearlite

-pearlitic

-pearlstone

-peascod

-peasecod

-peashooter

-peaty

-pebbly

-peccable

-peccadillo

-peccancy

-peccant

-peccantly

-peccavi

-pecky

-pectate

-pectic

-pectin

-pectinaceous

-pectinate

-pectinated

-pectination

-pectines

-pectoralis

-peculator

-pecuniarily

-pedagog

-pedalfer

-pedalferic

-pedantically

-peddlery

-peden

-pederast

-pederastic

-pederasts

-pederasty

-pedestrianism

-pediatrist

-pedicab

-pedicel

-pedicellate

-pedicle

-pedicled

-pediculate

-pediculosis

-pediculous

-pedicure

-pedicurist

-pedimental

-pedipalp

-pedlar

-pedlary

-pedocal

-pedocalic

-pedogenesis

-pedogenetic

-pedogenic

-pedologic

-pedological

-pedologist

-pedology

-pedometer

-pedometer's

-pedometers

-pedophile

-pedophilia

-pedophiliac

-pedophilic

-pee

-peekaboo

-peelable

-peeress

-peeter

-peewee

-peignoir

-pekoe

-pelage

-pelagic

-pellagrin

-pellagrous

-pelletal

-pellitory

-pellucid

-pellucidity

-pellucidly

-pellucidness

-peloria

-peloric

-pelorus

-pelota

-pelotas

-peltate

-peltately

-peltries

-peltry

-pemberton

-pemican

-penates

-pendency

-pendent

-pendentive

-pendently

-pendleton

-pendular

-pendulous

-pendulously

-pendulousness

-penetrability

-penetrable

-penetrableness

-penetrably

-penetralia

-penetrance

-penetrances

-penetrant

-penetrants

-penetrometer

-penetrometer's

-penetrometers

-pengally

-penholder

-penicillate

-penicillately

-penicillation

-penicillium

-penile

-peninsular

-penis

-penises

-penitence

-penitences

-penitency

-penlight

-penmanship

-penna

-pennaceous

-pennae

-pennate

-pennis

-pennyroyal

-penological

-penologist

-penology

-pensile

-pensionable

-pensionary

-pensionless

-pentacle

-pentacles

-pentad

-pentadactyl

-pentadactylism

-pentagram

-pentagram's

-pentagrams

-pentagraph

-pentahedral

-pentahedron

-pentamerous

-pentameter

-pentane

-pentangle

-pentangles

-pentapeptide

-pentaploid

-pentaploidy

-pentaquin

-pentaquine

-pentarchy

-pentathlete

-pentathlon

-pentatonic

-pentavalent

-pentazocine

-pentobarbital

-pentobarbitone

-pentode

-pentodes

-pentomic

-pentosan

-penuche

-penult

-penultima

-penumbra

-penumbral

-peon

-peonage

-peones

-peoplehood

-peopleless

-pepperminty

-peppertree

-pepsico

-pepsin

-pepsinogen

-peptic

-peptone

-peradventure

-perambulate

-perambulated

-perambulates

-perambulating

-perambulation

-perambulations

-perambulator

-perambulatory

-percale

-percaline

-perceptibility

-perceptional

-perceptivity

-perchlorate

-percipience

-percipient

-percoidean

-percptibly

-percuss

-percussionist

-perdurability

-perdurable

-perdurably

-pere

-peregrinate

-peregrinated

-peregrinates

-peregrinating

-peregrination

-peregrinations

-peregrine

-peremptorily

-perennate

-perennated

-perennates

-perennating

-perennation

-perennations

-perfecta

-perfectivity

-perfecto

-perfervid

-perfoliate

-perfoliation

-perforator

-performable

-performative

-performatory

-perfuse

-perfused

-perfusing

-perfusive

-pergola

-pericardial

-pericarditis

-pericardium

-pericarp

-perichondral

-perichondrial

-perichondrium

-pericranial

-pericranium

-pericycle

-pericyclic

-pericynthion

-periderm

-peridermal

-peridermic

-peridia

-peridium

-peridot

-peridotic

-peridotite

-peridotitic

-perigean

-perigee

-perigee's

-perigynous

-perigyny

-perihelial

-perikaryal

-perikaryon

-perilune

-perilymph

-perimorph

-perimysium

-perinatal

-perineum

-periodontics

-periodontist

-perioneum

-periotic

-peripatecically

-peripatetically

-peripateticism

-peripatus

-peripety

-peripherad

-periphrasis

-periphrastically

-periphytic

-periphyton

-periplast

-periscopic

-perishability

-peritectic

-peritonitis

-peritrichous

-peritrichously

-perjurious

-perjuriously

-perkily

-perlite

-perlitic

-perlocutionary

-perm

-permafrost

-permeability

-permeably

-permeance

-permease

-permissable

-permitter

-permittivity

-permutational

-peroneal

-peroral

-perorally

-perorate

-peroration

-perorational

-peroxidase

-peroxidic

-peroxisomal

-peroxisome

-perpend

-perpendicularity

-perpetuator

-perseverant

-perseveration

-perseverations

-persistency

-persnickety

-personalism

-personalist

-personalistic

-personate

-personated

-personates

-personating

-personation

-personative

-personator

-personhood

-perspicacity

-perspiratory

-persuasible

-pertinacity

-pertinency

-perturbable

-perturbational

-perturbative

-perversity

-pervious

-perviousness

-peso

-pesos

-pessary

-pessimal

-pessimistically

-pessimum

-peste

-pestiferous

-pestiferously

-pestiferousness

-petallike

-petaloid

-petalous

-petard

-petasos

-petasus

-petiolate

-petiolated

-petiole

-petioled

-petiolule

-petit

-petitionary

-petrarchan

-petrel

-petrifaction

-petrochemistry

-petrogenesis

-petrogenetic

-petrographer

-petrographic

-petrographical

-petrographically

-petrography

-petrolatum

-petrologic

-petrological

-petrologically

-petrologist

-petronel

-petrosal

-petrous

-pettibone

-pettifog

-pettifogger

-pettifoggery

-pettily

-petulancy

-pewaukee

-pewee

-ph

-phaeton

-phage

-phagocytosis

-phalanges

-phalanstery

-phalarope

-phalli

-phallic

-phallically

-phallicism

-phallus

-phalluses

-phanerogam

-phanerogamic

-phanerogamous

-phantasm

-phantasma

-phantasmagoria

-phantasmagoric

-phantasmal

-phantasmic

-phantomlike

-pharaoh

-pharaonic

-pharisaic

-pharisaical

-pharisaically

-pharisaicalness

-pharisaism

-pharisee

-pharmacodynamic

-pharmacodynamically

-pharmacodynamics

-pharmacogenetic

-pharmacogenetics

-pharmacognostic

-pharmacognostical

-pharmacognosy

-pharmacokinetic

-pharmacokinetics

-pharmacologic

-pharmacologist

-pharmacopoeia

-pharnges

-pharos

-pharyngitis

-phasic

-phasmid

-phd

-phenetics

-phenetidine

-phenetole

-phenobarbital

-phenobarbitone

-phenocain

-phenocopy

-phenocryst

-phenolate

-phenological

-phenologically

-phenology

-phenomenalism

-phenomenalist

-phenomenalistic

-phenomenalistically

-phenomenologist

-phenothiazine

-phenotypic

-phenotypical

-phenotypically

-phenoxide

-phentolamine

-phenylalanine

-phenylene

-phenylephrine

-phenylic

-pheromone

-pheromone's

-pheromones

-phial

-philanthropical

-philanthropically

-philatelic

-philatelically

-philatelist

-philately

-philco

-philippe

-philippians

-philogyny

-philol

-philologist

-philoprogenitive

-philoprogenitiveness

-philter

-philtre

-phlebitis

-phlebotomy

-phlegmatic

-phlegmatically

-phlegmy

-phloem

-phlogistic

-phlogiston

-phobia

-phon

-phonate

-phonated

-phonates

-phonating

-phonation

-phonematic

-phonemically

-phonetical

-phonetician

-phoney

-phoneys

-phonically

-phonily

-phonocardiogram

-phonocardiogram's

-phonocardiograms

-phonocardiograph

-phonocardiographic

-phonocardiography

-phonogram

-phonogram's

-phonogramic

-phonogramically

-phonogrammic

-phonogrammically

-phonograms

-phonographic

-phonographically

-phonography

-phonolite

-phonolitic

-phonologial

-phonologist

-phonon

-phonons

-phonoreception

-phonoreceptor

-phonorecord

-phonos

-phosgene

-phosphatic

-phosphatide

-phosphatidic

-phosphatidyl

-phosphene

-phosphite

-phosphocreatine

-phospholipid

-phospholipids

-phosphore

-phosphorescence

-phosphoreted

-phosphoretted

-phosphorism

-phosphorite

-phosphoritic

-phosphorolysis

-phosphorolytic

-phosphorous

-phosphoryl

-phosphorylase

-phosphorylate

-phosphorylation

-phosphorylative

-photic

-photically

-photoautotrophic

-photoautotrophically

-photobiologic

-photobiological

-photobiologist

-photobiology

-photobiotic

-photocathode

-photocathodes

-photocell

-photochemist

-photochemistry

-photochromic

-photochromism

-photocoagulation

-photocompose

-photocomposer

-photocomposition

-photoconductive

-photoconductivity

-photocurrent

-photodecomposition

-photodetector

-photodiode

-photodiodes

-photodisintegrate

-photodisintegration

-photodissociation

-photodissociative

-photodrama

-photoduplicate

-photoduplication

-photodynamic

-photodynamically

-photodynamics

-photoelectric

-photoelectrically

-photoelectron

-photoemission

-photoemissive

-photoengrave

-photoengraver

-photoengraving

-photoflash

-photoflood

-photofluorogram

-photofluorogram's

-photofluorograms

-photofluorographic

-photofluorography

-photogene

-photogenically

-photogeologic

-photogeological

-photogeology

-photogram

-photogram's

-photogrammetric

-photogrammetrist

-photogrammetry

-photograms

-photogravure

-photoheliograph

-photoinduced

-photoinduction

-photoinductive

-photojournalism

-photojournalist

-photojournalist's

-photojournalistic

-photojournalists

-photokinesis

-photokinetic

-photolithograph

-photolithographer

-photolithographic

-photolithographically

-photolithography

-photolytically

-photomap

-photomechanical

-photomechanically

-photometer

-photometer's

-photometers

-photometrically

-photomicrgraphical

-photomicrogram

-photomicrogram's

-photomicrograms

-photomicrographic

-photomicroscope

-photomicroscopic

-photomontage

-photomorphogenesis

-photomorphogenic

-photomultiplier

-photomural

-photonegative

-photonic

-photonuclear

-photooxidation

-photooxidative

-photoperiod

-photoperiodic

-photoperiodically

-photoperiodism

-photophilic

-photophilous

-photophily

-photophobia

-photophobic

-photophore

-photopia

-photoplay

-photopositive

-photoprint

-photoproduct

-photoproduction

-photoreaction

-photoreception

-photoreceptive

-photoreceptor

-photoreconnaissance

-photorecord

-photorecorder

-photoreduction

-photoresistance

-photorespiration

-photosensitivity

-photoset

-photosetter

-photosphere

-photospheric

-photostat

-photostatic

-photosynthesis

-photosynthetic

-photosynthetically

-phototactic

-phototactically

-phototaxis

-phototelegraphy

-phototropic

-phototropically

-phototropism

-phototube

-phototypesetter

-phototypesetting

-phototypographic

-phototypography

-photovoltaic

-phrasally

-phrasemaker

-phrasemonger

-phrasemongering

-phraseogram

-phraseogram's

-phraseograms

-phraseograph

-phraseological

-phraseologically

-phraseologist

-phratries

-phratry

-phreatic

-phreatophyte

-phreatophytic

-phrenetic

-phrenic

-phrenological

-phrenologically

-phrenologist

-phrenology

-phrensy

-phthalate

-phycologist

-phycology

-phycomycete

-phycomycetes

-phylactery

-phylae

-phylar

-phyle

-phylesis

-phyletic

-phyllary

-phylloclade

-phyllode

-phyllodium

-phylloid

-phyllome

-phyllomic

-phyllophagous

-phyllopod

-phylogenetic

-physiatrics

-physiatrist

-physicalism

-physicalist

-physicalistic

-physicality

-physicked

-physicking

-physicochemically

-physiocratic

-physiognomic

-physiognomical

-physiognomically

-physiographer

-physiographic

-physiographical

-physiography

-physiol

-physiopathologic

-physiopathological

-physiopathology

-physostigmine

-phytane

-phytoalexin

-phytochemical

-phytochemically

-phytochemist

-phytochemistry

-phytochrome

-phytoflagellate

-phytogenic

-phytogeographic

-phytogeographical

-phytogeographically

-phytogeography

-phytography

-phytological

-phytologically

-phytology

-phyton

-phytonic

-phytopathogen

-phytopathogenic

-phytopathologic

-phytopathological

-phytopathology

-phytophagous

-phytophagy

-phytoplanktonic

-phytosociological

-phytosociologically

-phytosociologist

-phytosociology

-phytosterol

-phytotoxic

-phytotoxicity

-pial

-pianistically

-pianoforte

-pianoforte's

-pianofortes

-pias

-piassava

-piazze

-pibroch

-pic

-picador

-picadores

-picaninny

-picara

-picaresque

-picaro

-picaroon

-picayunish

-piccalilli

-piccoloist

-pice

-piceous

-pickaback

-pickaninny

-pickaroon

-pickax

-pickeer

-picketboat

-picklock

-pickpocket

-pickproof

-pickthank

-picnicky

-picnometer

-picnometer's

-picnometers

-picoline

-picon

-picosecond

-picoseconds

-pictograph

-pictographic

-pictography

-pictorialism

-picturegoer

-piebald

-piecework

-pieceworker

-piecrust

-piefort

-pieing

-pieta

-pietism

-pietist

-pietistic

-pietistical

-pietistically

-pietro

-piezoelectrically

-piezometer

-piezometer's

-piezometers

-piezometric

-piezometry

-piffle

-piffled

-piffles

-piffling

-pigboat

-pigeonberry

-pigeonfoot

-pigeonhearted

-pigeonwing

-pigged

-piggeries

-piggery

-piggyback

-piggybacked

-piggybacking

-pigheaded

-pigheadedness

-piglet

-piglets

-pigmentary

-pigmy

-pigstick

-pigsticker

-pigsticking

-pikeman

-pikestaff

-pilaf

-pilaff

-pilaster

-pilchard

-pilea

-pileate

-pileated

-pilei

-pileum

-pileup

-pileus

-pilewort

-pilgarlic

-pillbox

-pillboxes

-pillion

-pillions

-pillowcase

-pillowcases

-piloerection

-pilotage

-pilotages

-pilothouse

-pilotless

-pilsener

-pilsner

-pilular

-pilule

-pilus

-pinar

-pinaster

-pinata

-pinbone

-pincer

-pincer's

-pincerlike

-pincers

-pinchbeck

-pinchcock

-pindling

-pineal

-pinecone

-pinedrops

-pinene

-pinery

-pinesap

-pineta

-pinetum

-pinewood

-piney

-pinfold

-pingo

-pinkeye

-pinko

-pinkoes

-pinkos

-pinkroot

-pinky

-pinna

-pinnace

-pinnae

-pinnal

-pinnas

-pinnate

-pinnately

-pinner

-pinniped

-pinniped's

-pinnipeds

-pinnula

-pinnular

-pinnulate

-pinnulated

-pinnule

-pinprick

-pinpricks

-pinscher

-pinsetter

-pinspotter

-pinstripe

-pinta

-pintle

-pintoes

-pinup

-pinxter

-pionic

-pipage

-pipal

-pipeage

-pipefish

-pipeful

-pipeless

-pipelike

-piperazine

-piperidine

-piperine

-piperonal

-pipestone

-pipgras

-pipit

-pipkin

-pippin

-pipping

-pipsissewa

-piquancy

-piquet

-piranha

-piraro

-piratical

-piratically

-pirogue

-piroplasm

-piroplasma

-piroplasmata

-piscicultural

-pisciculture

-pisciculturist

-piscina

-piscine

-piscivorous

-pisiform

-pismire

-pisolite

-pisolitic

-pissoir

-pistillate

-pistoleer

-pita

-pitchman

-pitchout

-pitchy

-pithead

-pithily

-pitiably

-pivotable

-pivotman

-pixie

-pixieish

-pixilated

-pixilates

-pixilation

-pizazz

-pizz

-pizzazz

-pizzeria

-placability

-placable

-placably

-placatory

-placebo

-placeholder

-placeman

-placemat

-placemat's

-placemats

-placency

-placent

-placentation

-placentations

-placentia

-placidity

-placket

-plagal

-plage

-plagiaristic

-plagiary

-plagioclase

-plaguesome

-plaguey

-plaguily

-plaguy

-plaice

-plainclothesman

-plainsman

-plainspoken

-plainspokenness

-plaint

-plaintext

-plaintful

-plainview

-plaister

-planarian

-planation

-planchet

-planetoidal

-planetological

-planetologist

-planetology

-plangency

-plangent

-plangently

-planimeter

-planimeter's

-planimeters

-planimetric

-planish

-planisher

-planisphere

-planispheric

-planktonic

-planless

-planlessly

-planlessness

-planograph

-planographic

-planography

-planosol

-plantable

-plantar

-plantlike

-planula

-planular

-planuloid

-plasmagel

-plasmagene

-plasmagenic

-plasmalemma

-plasmapheresis

-plasmasol

-plasmatic

-plasmid

-plasmid's

-plasmids

-plasmin

-plasminogen

-plasmodesm

-plasmodium

-plasmogamy

-plasmolysis

-plasmolytic

-plasmolytically

-plasmon

-plasodesma

-plasterboard

-plasterwork

-plastery

-plastid

-plastidial

-plastisol

-plastisols

-plastogene

-plastral

-plastron

-plat

-plateaux

-plateful

-platelike

-platemaker

-platemaking

-plateresque

-platies

-platina

-platinic

-platinous

-platipi

-platipi's

-platitudinal

-platitudinarian

-platonically

-platterful

-platting

-platypus

-platypus's

-platypuses

-plauded

-plauding

-plaudit

-plause

-plausive

-playa

-playability

-playact

-playbill

-playbills

-playbook

-playgirl

-playgoer

-playgoers

-playland

-playmaker

-playpen

-playpen's

-playpens

-playsuit

-pleadable

-pleasantry

-pleasurability

-pleasurably

-pleasureless

-pleatless

-plebe

-plebeianism

-plebes

-plebian

-plebiscitary

-plebs

-plectrum

-plectrum's

-plectrums

-pledgee

-pledget

-pledgor

-plenipotent

-plenish

-plenitudinous

-plentitude

-plethoric

-pleurae

-pleuritic

-pleurodont

-plex

-plexiform

-plexiglass

-plexus

-pliability

-pliably

-plimsoll

-plinth

-plodder

-plosion

-plotless

-plotlessness

-plottage

-plottier

-plotty

-plowmen

-plowmen's

-pluckily

-plugboard

-plugboard's

-plugboards

-plugger

-plumbaginous

-plumbago

-plumbate

-plumbeous

-plumbic

-plumbiferous

-plumbism

-plumbous

-plumelet

-plumier

-plumlike

-plummier

-plummy

-plumose

-plumosely

-plumpish

-plumulate

-plumule

-plumulose

-plumy

-plunderable

-plunderage

-plunderous

-pluperfect

-pluralistically

-pluriaxial

-pluripotent

-plussage

-plusses

-plutocracy

-plutocrat

-plutocratic

-plutocratically

-pluton

-plutonian

-plutonic

-pluvial

-plyscore

-pneumatically

-pneumaticity

-pneumatology

-pneumatolysis

-pneumatolytic

-pneumatometer

-pneumatometer's

-pneumatometers

-pneumatophore

-pneumatophoric

-pneumectomy

-pneumococcus

-pneumonic

-pocahontas

-pockmark

-pocky

-poco

-podagra

-podagral

-podded

-podding

-podgier

-podgy

-podiatric

-podiatrist

-podiatry

-podite

-poditic

-poetaster

-poetess

-poeticism

-pogromist

-poi

-poikilotherm

-poikilothermic

-poikilothermism

-poilu

-poinciana

-pointe

-pointillism

-pointillist

-pointilliste

-pointillistic

-pointwise

-poirot

-poitrine

-pokey

-pokeys

-pokier

-pokily

-pokiness

-poky

-polarimetric

-polariscopic

-polariton

-polarographic

-polarographically

-polaron

-polder

-poleax

-poleless

-polemicist

-polemist

-polemonium

-polestar

-poleward

-policewoman

-policewoman's

-policewomen

-policyholder

-policyholders

-poliomyelitic

-poliomyelitis

-poliovirus

-politesse

-politick

-politicker

-polity

-polkadot

-polkadots

-pollee

-pollenate

-pollenated

-pollenates

-pollenating

-pollenation

-pollenosis

-pollex

-pollical

-pollices

-pollinate

-pollinated

-pollinates

-pollinating

-pollination

-pollinator

-pollinic

-polliniferous

-pollinium

-polloi

-pollster

-pollywog

-pollywog's

-pollywogs

-poloist

-poltergeist

-poltroon

-poltroonery

-poltroonish

-poltroonishly

-polyandrous

-polyandry

-polyanka

-polyantha

-polyanthus

-polybasite

-polycarbonate

-polycarpellary

-polycarpic

-polycarpous

-polycarpy

-polycentrism

-polychaete

-polychaetous

-polychasium

-polychotomous

-polychotomy

-polychromatic

-polychrome

-polychromy

-polycistronic

-polyclinic

-polycondensation

-polycot

-polycotyl

-polycotyledon

-polycotyledonous

-polycrystal

-polycyclic

-polycythemia

-polycythemic

-polydactyl

-polydactylous

-polydactyly

-polydipsi

-polygala

-polygamic

-polygamical

-polygamically

-polygamist

-polygene

-polygenesis

-polygenesist

-polygenetic

-polygenetically

-polygenic

-polyglandular

-polyglot

-polyglotism

-polyglottism

-polygonum

-polygram

-polygram's

-polygrams

-polygraph

-polygraphic

-polygynoecial

-polygyny

-polyhedrosis

-polyhistor

-polyhistoric

-polyhydroxy

-polymath

-polymathic

-polymathy

-polymerically

-polymerism

-polymorphically

-polymorphism

-polymorphonuclear

-polymorphous

-polymorphously

-polymyxin

-polyneuritis

-polynuclear

-polynucleotide

-polynya

-polyonymous

-polyp

-polypary

-polypeptide

-polypeptidic

-polypetalous

-polyphagia

-polyphagous

-polyphagy

-polyphase

-polyphasic

-polyphenol

-polyphenolic

-polyphone

-polyphonically

-polyphonous

-polyphonously

-polyphyletic

-polyphyletically

-polyphyleticism

-polypide

-polyploid

-polyploidy

-polypnea

-polypneic

-polypody

-polypoid

-polypous

-polyptych

-polyrhythm

-polyrhythmic

-polyrhythmically

-polyribonucleotide

-polyribosomal

-polyribosome

-polysaccharide

-polysaccharides

-polysaprobic

-polysemous

-polysemy

-polysepalous

-polysilicon

-polysiloxanes

-polysome

-polysomic

-polysorbate

-polystichous

-polysulfide

-polysyllabic

-polysyllabically

-polysyllable

-polysynaptic

-polysynaptically

-polysyndeton

-polytene

-polyteny

-polytheism

-polytheist

-polytheistic

-polytheistical

-polythene

-polytocous

-polytonality

-polytope

-polytrophic

-polytype

-polytypic

-polytypism

-polytypy

-polyurethane

-polyuria

-polyvalence

-polyvalent

-polyvinyl

-polywater

-polyzoan

-polyzoarium

-polyzoic

-pomace

-pomaceous

-pomade

-pomaded

-pomades

-pomander

-pomatum

-pome

-pomelo

-pomerania

-pomeranian

-pomiferous

-pommel

-pomological

-pomologically

-pomologist

-pomology

-pompey

-pompon

-pon

-ponderable

-ponderosa

-ponderosa's

-ponderosas

-pong

-pont

-pontific

-pontificaly

-pontificator

-pontifices

-pontine

-pontius

-ponton

-pontonier

-pontoon

-ponytail

-pood

-poolroom

-poop

-poorhouse

-poorish

-popery

-popgun

-popinjay

-popish

-popishly

-popliteal

-popover

-poppa

-poppet

-popple

-poppycock

-poppyhead

-populaire

-populaires

-populism

-populist

-populistic

-porcelainlike

-porcelaneous

-porcellaneous

-poriferal

-poriferan

-porkies

-porky

-pornographically

-porphyria

-porphyrin

-porphyritic

-porphyroid

-porphyropsin

-porphyry

-porrect

-porringer

-portance

-portative

-portcullis

-porterage

-porthole

-portico

-portiere

-portionless

-portraitist

-portress

-portulaca

-posable

-posada

-posey

-posies

-positivistic

-positivity

-positronium

-posseman

-possemen

-possessory

-posset

-possets

-postaxial

-postaxially

-postbag

-postbags

-postbellum

-postbox

-postboxes

-postboy

-postboys

-postbreeding

-postclassic

-postclassical

-postcolonial

-postdental

-postdiluvian

-postdoctorate

-postembryonal

-postembryonic

-postemergence

-posteriad

-posteriority

-postern

-postexilic

-postface

-postform

-postglacial

-posthaste

-posthole

-posthypnotic

-postiche

-postilion

-postillion

-postmastership

-postmenopausal

-postmillenarian

-postmillenarianism

-postmillennial

-postmillennialism

-postmillennialist

-postmistress

-postmodern

-postmultiply

-postnasal

-postnatal

-postnatally

-postnuptial

-postnuptially

-postorbital

-postpaid

-postpituitary

-postponable

-postposition

-postpositional

-postpositionally

-postpositive

-postpositively

-postprandial

-postprandially

-postprocess

-postprocessor

-postprocessors

-postschool

-postsynaptic

-postsynaptically

-posttension

-posttraumatic

-postulancy

-postulant

-postulational

-postulator

-postural

-posy

-potability

-potassic

-potation

-potboy

-poteen

-potemkin

-potence

-potentiate

-potentiation

-potentiator

-potentiometric

-potful

-pothead

-potheen

-pother

-pothered

-pothering

-pothook

-pothouse

-pothunter

-pothunting

-potpie

-potsdam

-potsherd

-potshot

-potshotting

-potstone

-pottage

-pottawatomie

-potteringly

-pottier

-potties

-pottle

-potto

-pottos

-potty

-pouchier

-pouchy

-pouf

-pouff

-pouffed

-poulard

-poularde

-poult

-poulterer

-poultryman

-poundage

-poundal

-pourable

-pourboire

-pourparler

-pourpoint

-poussette

-poussetted

-poussetting

-poussin

-poussins

-pouty

-powderman

-powdermen

-powerboat

-powerhouse

-powerhouse's

-powerhouses

-powwow

-poxvirus

-poza

-ppm

-practicum

-praecox

-praedial

-pragmatical

-pragmaticism

-pragmaticist

-pragmatistic

-praiseworthily

-praline

-prandial

-prankish

-prankishly

-prankishness

-prankster

-pranksters

-prase

-pratfall

-pratincole

-pratique

-prawn

-prawner

-prawns

-praxeological

-praxeology

-pre

-preachier

-preachifies

-preachify

-preachily

-preachiness

-preachment

-preachy

-preadapt

-preadaptation

-preadapted

-preadaptive

-preadolescence

-preadolescent

-preamplifier

-preamplifiers

-prearrange

-prearrangement

-preatomic

-preaxial

-preaxially

-prebend

-prebendal

-prebendary

-prebind

-prebiologic

-prebiological

-prebiotic

-precancel

-precancerous

-precast

-precautious

-precedency

-preceeded

-preceeding

-precensor

-precentor

-precentorial

-precentorship

-preceptor

-preceptorial

-preceptorship

-preceptory

-preceptress

-precessional

-preciosity

-precipitance

-precipitancy

-precipitant

-precipitantly

-precipitantness

-precipitator

-precipitin

-precipitinogen

-precipitinogenic

-precisian

-precisianism

-precisionist

-preclinical

-preclusion

-preclusive

-preclusively

-precoat

-precoating

-precocial

-precognition

-precognitive

-precombustion

-precompact

-precompose

-precomputation

-precomputed

-preconceptual

-preconcert

-preconcerted

-preconcertedly

-preconcertedness

-preconsonantal

-precook

-precritical

-precursory

-predaceous

-predaceousness

-predacious

-predacity

-predatorily

-predawn

-predecease

-predefense

-predefense's

-predefenses

-predesignate

-predesignation

-predestinarian

-predestinarianism

-predestinate

-predestination

-predestinator

-predestine

-predetermination

-predicable

-predicatable

-predicatory

-predigest

-predigestion

-predominancy

-preemergence

-preemergent

-preemie

-preemphasization

-preemphasization's

-preemphasize

-preemphasized

-preemphasizer

-preemphasizers

-preemphasizes

-preemphasizing

-preexchange

-preexchanged

-preexist

-preexistence

-prefatorial

-prefatorially

-prefatorily

-prefectural

-preferability

-preferrer

-prefigurative

-prefiguratively

-prefigurativeness

-prefigure

-prefigured

-prefigurement

-prefigures

-prefiguring

-prefixal

-prefixally

-prefocus

-prefocused

-prefocuses

-prefocusing

-preform

-preformation

-preformed

-preforms

-prefrontal

-pregnability

-pregnable

-pregnenolone

-preheat

-preheated

-preheater

-prehensile

-prehensility

-prehension

-prehistorian

-prehistorical

-prehistorically

-prehistory

-prehominid

-preignition

-preinduction

-prejudicious

-prejudiciously

-prelature

-prelection

-prelibation

-prelicense

-prelicensed

-prelicenser

-prelicenses

-prelicensing

-preliminarily

-prelusion

-prelusive

-prelusively

-prelusory

-premalignant

-preman

-premed

-premedial

-premedian

-premedical

-premedieval

-premedieval's

-premedievalism

-premedievalism's

-premedievalisms

-premedievals

-premeditator

-premeiotic

-premenstrual

-premenstrually

-premership

-premie

-premillenarian

-premillenarianism

-premillennial

-premillennialism

-premillennialist

-premillennially

-premiss

-premolar

-premonish

-premonitorily

-premorse

-premune

-premunition

-prename

-prenatal

-prenatally

-prenominate

-prenomination

-prenotion

-preoccupancy

-preoperative

-preoperatively

-preorbital

-preordain

-preordained

-preordaining

-preordains

-preordination

-preoviposition

-preovulatory

-prepackage

-preparator

-preparatorily

-prepausal

-prepay

-prepense

-prepensely

-preplan

-preponderancy

-prepositive

-prepositively

-prepossess

-prepossessing

-prepossessingly

-prepossessingness

-prepossession

-prepotency

-prepotent

-prepotently

-preppie

-preprandial

-preprocess

-preprocessed

-preprocesses

-preprofessional

-prepuberal

-prepuberally

-prepubertal

-prepubertally

-prepuberty

-prepubescence

-prepuce

-prepunch

-prepupal

-preputial

-prerealization

-prerealization's

-prerealizations

-prerealize

-prerealizes

-prerecord

-presageful

-presanctified

-presbyope

-presbyopia

-presbyopic

-presbyter

-presbyterate

-presbyterial

-presbyterially

-presbytery

-prescient

-prescientific

-presciently

-prescind

-prescore

-prese

-preselection

-presell

-presentability

-presentably

-presentative

-presentee

-presentient

-presentiment

-presentimental

-presentment

-preservable

-preservationist

-presettable

-presetting

-preshrunk

-presidentship

-presidial

-presidiary

-presidio

-presidium

-presignify

-presley

-presoak

-pressboard

-pressmark

-pressor

-pressroom

-pressrun

-presswork

-prest

-prester

-presternum

-prestigeful

-prestissimo

-prestress

-prestressed

-presumptive

-presumptively

-presynaptic

-presynaptically

-pretax

-preteen

-pretensionless

-preterit

-preterite

-preterition

-preteritive

-preterminal

-pretermission

-pretermit

-preternatural

-preternaturally

-preternaturalness

-pretreat

-pretreatment

-prettification

-prettify

-prettyish

-pretubercular

-pretuberculous

-pretzel

-prevaricate

-prevaricated

-prevaricates

-prevaricating

-prevarication

-prevaricator

-prevenient

-preveniently

-preventability

-preventative

-preventible

-preverbal

-previsional

-previsionary

-prevocalic

-prevocational

-prevue

-prexy

-priapic

-pricey

-pricier

-pricket

-prickier

-pricky

-pricy

-prideful

-pridefully

-pridefulness

-priesthood

-prieur

-priggery

-priggism

-prima

-primality

-primateship

-primatial

-primatological

-primatologist

-primatology

-primero

-primipara

-primiparity

-primiparous

-primitivist

-primitivistic

-primitivity

-primmer

-primmest

-primming

-primo

-primogenitor

-primogeniture

-primos

-primrdium

-primula

-primus

-princedom

-princekin

-princelet

-princeling

-princeship

-princesse

-principalship

-principial

-principium

-princox

-prink

-prinker

-printability

-printemps

-printery

-printless

-priorate

-prioress

-prioresses

-priorship

-pripet

-prise

-prisere

-prismatically

-prismatoid

-prismatoidal

-prismoid

-prismoidal

-prissily

-pristane

-prithee

-privatdocent

-privatdozent

-privatism

-privet

-privily

-privity

-prix

-prizefight

-prizefighter

-prizefighting

-prizewinner

-proa

-proach

-proaching

-proactive

-probabilism

-proband

-probang

-probational

-probationally

-probationary

-probatory

-probenecid

-probit

-probosces

-proboscidean

-proboscidian

-proboscis

-procambial

-procambium

-procaryote

-procaryotic

-procathedral

-procephalic

-procercoid

-processability

-processable

-processibility

-processible

-proclimax

-proclitic

-proconsul

-proconsular

-proconsulate

-proconsulship

-procreant

-procreator

-procryptic

-proctodaeum

-proctologic

-proctological

-proctologist

-proctology

-proctorial

-proctorship

-procumbent

-procurable

-procurance

-procuration

-procurator

-procuratorial

-procuress

-prodder

-prodigality

-prodromal

-prodromata

-prodrome

-prodromes

-prodromic

-productional

-proemial

-proenzyme

-proestrus

-profanation

-profanatory

-professeur

-professorate

-professoriat

-professoriate

-profili

-profitless

-profitted

-profitting

-profligacy

-profluent

-prog

-progamete

-progestational

-progesterone

-progestin

-progestogen

-progging

-proglottid

-proglottidean

-proglottis

-prognathic

-prognathism

-prognathous

-prognostic

-prograde

-programmatic

-programmatically

-progressional

-progressionist

-progressist

-progressivist

-progressivistic

-prohibitionist

-projectable

-projectional

-projet

-projets

-prokaryote

-prokaryotic

-prolactin

-prolamin

-prolamine

-prolan

-prolapse

-prolapsed

-prolapsing

-prole

-proleptic

-proletarian

-proliferous

-proliferously

-prolificacy

-prolificity

-proline

-prolocutor

-prolotherapy

-prolusion

-prolusions

-prolusory

-prom

-promazine

-promisee

-promisor

-promissory

-promotability

-promotable

-promptbook

-promptbooks

-promulgator

-pronatalism

-pronatalist

-pronate

-pronated

-pronating

-pronation

-pronator

-pronephric

-pronephros

-pronghorn

-pronghorns

-pronominal

-pronominally

-pronuclear

-pronucleus

-pronunciamento

-pronunciational

-prooflike

-proofread

-proofroom

-propaedeutic

-propagable

-propagandism

-propagandistically

-propagational

-propagator

-propagule

-proparoxytone

-propellent

-propellor

-propend

-propense

-properdin

-propertyless

-prophage

-prophase

-prophasic

-prophetess

-prophetical

-prophylactic

-prophylactically

-prophylaxis

-propine

-propined

-propining

-propionibacteria

-propitiable

-propitiator

-propitiatory

-proplastid

-propman

-propolis

-propone

-proponed

-proponing

-proportionable

-proportionably

-propos

-propositus

-propranolol

-proprietress

-proprioceptor

-proptosis

-propulsive

-propyl

-prorogate

-prorogation

-prorogue

-prorogued

-proroguing

-prosaically

-prosaism

-prosaist

-prosateur

-prosciutto

-proscriptive

-proscriptively

-prosector

-prosectorial

-prosecutable

-proselyte

-proselytism

-proseminar

-prosencephalic

-prosencephalon

-prosenchyma

-prosenchymas

-prosenchymata

-prosenchymatous

-prosier

-prosily

-prosiness

-prosit

-proso

-prosobranch

-prosodical

-prosodically

-prosodist

-prosoma

-prosomal

-prosopographical

-prosopography

-prosopopoeia

-prossed

-prosser

-prost

-prostaglandin

-prostatectomy

-prostatic

-prostatism

-prostatitis

-prosthesis

-prosthetically

-prosthodontics

-prosthodontist

-prostitutor

-prostomial

-prostomium

-prosy

-protamine

-protasis

-protatic

-protea

-protectant

-protectionism

-protectoral

-protectorship

-protectory

-protectress

-proteid

-proteide

-proteinaceous

-proteinase

-proteinate

-proteinuria

-proteinuric

-protend

-protensive

-protensively

-proteoclastic

-proteose

-proteranthous

-proteranthy

-protestor

-proteus

-prothalamion

-prothalamium

-prothallial

-prothallium

-prothallus

-prothesis

-prothetelic

-prothetely

-prothetic

-prothonotarial

-prothonotary

-prothoracic

-prothorax

-prothrombin

-protist

-protistan

-protitch

-protium

-proto

-protoderm

-protodermal

-protogalaxy

-protogeometric

-protohistorian

-protohistoric

-protohistory

-protohuman

-protolanguage

-protolithic

-protomartyr

-protonate

-protonated

-protonation

-protonema

-protonemal

-protonematal

-protonic

-protonotary

-protonymph

-protonymphal

-protopathic

-protophloem

-protophyta

-protoplanet

-protoplast

-protoplastic

-protoporphyrin

-protostar

-protostele

-protostelic

-prototroph

-prototrophic

-prototrophy

-prototypal

-protoxylem

-protozoal

-protozoic

-protozoological

-protozoologist

-protozoology

-protozoon

-protractile

-protraction

-protractor

-protreptic

-protrusible

-protuberatly

-proudful

-proudhearted

-provascular

-provement

-provender

-provenience

-provincialist

-provinciality

-proviral

-provirus

-provisionary

-provisons

-provisory

-provitamin

-provolone

-proxemic

-proxemics

-proximo

-proxmire

-prude

-prude's

-prudery

-prudes

-prudish

-prudishly

-prudishness

-pruinose

-prurience

-pruriency

-pruriginous

-prurigo

-pruritic

-pruritus

-prussiate

-prussic

-prutot

-pryer

-psalmbook

-psalmody

-psalter

-psalterium

-psaltery

-psaltry

-psephological

-psephologist

-psephology

-pseud

-pseudepigraph

-pseudepigraphon

-pseudepigraphy

-pseudoallele

-pseudoallelic

-pseudoallelism

-pseudoclassic

-pseudoclassicism

-pseudoenergy

-pseudomedieval

-pseudomedieval's

-pseudomedievals

-pseudonymity

-pseudonymous

-pseudonymously

-pseudonymousness

-pseudopotential

-pseudoscience

-pseudoscientific

-pseudoscientist

-pseudoscorpion

-pseudosophisticated

-pseudosophistication

-pseudotuberculosis

-psychedelia

-psychedelically

-psychiatrically

-psychoanalytical

-psychoanalytically

-psychobiographical

-psychobiography

-psychobiologic

-psychobiological

-psychobiologist

-psychochemical

-psychodrama

-psychodramatic

-psychodynamic

-psychodynamically

-psychodynamics

-psychogenesis

-psychogenetic

-psychogenic

-psychogenically

-psychognosis

-psychognosy

-psychograph

-psychokinesis

-psychokinetic

-psycholinguist

-psychologic

-psychologism

-psychometrically

-psychomotor

-psychoneurosis

-psychoneurotic

-psychopathically

-psychopathologic

-psychopathological

-psychopathologically

-psychopathologist

-psychopathology

-psychopathy

-psychopharmaceutical

-psychopharmacologic

-psychopharmacological

-psychopharmacologist

-psychopharmacology

-psychophysicist

-psychophysiologic

-psychophysiological

-psychophysiologically

-psychophysiologist

-psychopomp

-psychosexual

-psychosexuality

-psychosexually

-psychosomatically

-psychosurgery

-psychosurgical

-psychotherapeutically

-psychotherapist

-psychotically

-psychotogen

-psychotogenic

-psychotomimetic

-psychotomimetically

-psychotropic

-psychrometer

-psychrometer's

-psychrometers

-psychrometric

-psychrometry

-psychrophilic

-psyllium

-pterodactyl

-pterodactyl's

-pterodactyls

-ptolemaists

-ptomaine

-puberal

-pubertal

-puberulent

-pubes

-pubescence

-pubic

-pubis

-publican

-publicans

-publicist

-publick

-publique

-publishable

-puccoon

-puce

-pucka

-puckery

-pud

-puddingstone

-pudency

-pudendal

-pudendum

-puerperal

-puerperium

-pug

-pugaree

-puggaree

-pugging

-pugilism

-pugilist

-pugilistic

-pugmark

-pugnacious

-pugnaciously

-pugnaciousness

-pugnacity

-puisne

-puissance

-pukka

-pul

-pulchritude

-pulchritudinous

-pule

-puler

-puli

-pulicide

-pulik

-puling

-pulis

-pullback

-pullet

-pullout

-pullulate

-pullulation

-pulmonate

-pulmonic

-pulmotor

-pulpal

-pulpally

-pulpiness

-pulpwood

-pulpy

-pulque

-pulsant

-pulsator

-pulsatory

-pulsimeter

-pulsimeter's

-pulsimeters

-pulsometer

-pulsometer's

-pulsometers

-pulverulent

-pulvillus

-pulvinus

-pumiceous

-pumicite

-pumpernickel

-pumpkinseed

-pumpkinseeds

-puna

-punchball

-punchballs

-punchboard

-puncheon

-punchier

-punchinello

-punchless

-punchy

-punctate

-punctation

-punctilio

-punctilious

-punctiliously

-punctiliousness

-punctuator

-pung

-punily

-punishability

-punition

-punkah

-punkie

-punkin

-punnier

-punning

-punny

-punties

-punty

-pupae

-puparia

-puparial

-puparium

-pupfish

-pupilage

-pupilar

-pupillage

-pupillary

-pupiparous

-puppetry

-pupping

-purblind

-purblindly

-purblindness

-purdah

-purdew

-pureblood

-purebred

-puree

-puree's

-pureed

-pureeing

-purees

-purfle

-purfled

-purfling

-purgatorial

-purificator

-purificatory

-purifing

-purine

-puristic

-puritanism

-purl

-purled

-purler

-purlers

-purlieu

-purlin

-purling

-puromycin

-purplish

-purply

-purpura

-purpure

-purpuric

-purselike

-pursewarden

-pursier

-pursiness

-purslane

-pursuance

-pursuivant

-pursy

-purtenance

-purulence

-purulent

-purveyance

-purvis

-pushball

-pushcart

-pushchair

-pushchairs

-pushful

-pushfulness

-pushily

-pushout

-pushover

-pushover's

-pushovers

-pushpin

-pushpin's

-pushpins

-pusillanimity

-pusillanimous

-pusillanimously

-pussyfoot

-pussyfooter

-pussyfooting

-pussytoes

-pustulant

-pustular

-pustulate

-pustulated

-pustulation

-pustule

-pustules

-putains

-putas

-putdown

-putdown's

-putdowns

-putout

-putrefaction

-putrefactive

-putrescence

-putrescent

-putrescible

-putrescine

-putridity

-putsch

-putschist

-puttana

-puttee

-puttees

-puttyroot

-puzzleheaded

-puzzleheadedness

-pycnidium

-pycnogonid

-pycnometer

-pycnometer's

-pycnometers

-pyelitis

-pyelonephritic

-pyelonephritis

-pyemia

-pyemic

-pygidial

-pygidium

-pygmaean

-pygmean

-pygmoid

-pygmyish

-pygmyism

-pyknic

-pylon

-pylons

-pylori

-pyloric

-pylorus

-pyocanea

-pyoderma

-pyodermic

-pyogenic

-pyracanth

-pyracantha

-pyralid

-pyralidid

-pyramidical

-pyran

-pyranoid

-pyranose

-pyranoside

-pyrargyrite

-pyrene

-pyrenoid

-pyrethrin

-pyrethroid

-pyrethrum

-pyretic

-pyrexia

-pyrexial

-pyrexic

-pyrheliometer

-pyrheliometer's

-pyrheliometers

-pyrheliometric

-pyric

-pyridoxal

-pyridoxamine

-pyridoxin

-pyridoxine

-pyriform

-pyrimethamine

-pyrimidine

-pyrimidines

-pyrite

-pyrites

-pyritic

-pyrocatechol

-pyrocellulose

-pyrochemical

-pyrochemically

-pyroclastic

-pyroelectric

-pyroelectricity

-pyrogallol

-pyrogen

-pyrogenic

-pyrogenicity

-pyrogenous

-pyrola

-pyroligneous

-pyrolusite

-pyrolytic

-pyrolytically

-pyromancy

-pyromania

-pyromaniac

-pyromaniac's

-pyromaniacal

-pyromaniacs

-pyrometallurgical

-pyrometallurgy

-pyrometric

-pyrometrically

-pyromorphite

-pyronine

-pyroninophilic

-pyrope

-pyrophoric

-pyrophosphatic

-pyrophyllte

-pyrosis

-pyrotechnical

-pyrotechnically

-pyrotechnist

-pyroxenic

-pyroxenitic

-pyroxenoid

-pyroxylin

-pyrrhic

-pyrrhotite

-pyrrhuloxia

-pyrrol

-pyrrole

-pyrrolic

-pyruvate

-pyschiatrist

-pythoness

-pythonic

-pythonine

-pyuria

-pyx

-pyxides

-pyxidium

-pyxie

-pyxis

-qua

-quackish

-quadded

-quadding

-quadrantal

-quadraphonic

-quadraphonics

-quadraphony

-quadrat

-quadrate

-quadrated

-quadrates

-quadrating

-quadrennium

-quadricentennial

-quadricipital

-quadrifid

-quadripuntal

-quadrisect

-quadrisected

-quadrisecting

-quadrisects

-quadrisyllabic

-quadrivalent

-quadrivial

-quadroon

-quadroons

-quadrumvir

-quadrumvirate

-quadruped

-quadrupedal

-quadrupeds

-quadruplet

-quadruplets

-quadruplicity

-quadruply

-quadrupolar

-quadrupole

-quaestor

-quag

-quai

-quaich

-qualmish

-qualmishly

-qualmishness

-qualmy

-quant

-quantal

-quantasome

-quantic

-quantifiably

-quantificational

-quantificationally

-quantifys

-quantitate

-quantitated

-quantitates

-quantitating

-quantitation

-quantitations

-quarantinable

-quark

-quarks

-quartan

-quarterage

-quarterdeck

-quarterdecks

-quarterfinal

-quarterfinalist

-quartern

-quarternary

-quarterstaff

-quartette

-quartic

-quartics

-quarto

-quartos

-quartziferous

-quartzitic

-quartzose

-quasimodo

-quasiparticle

-quatercentenary

-quaternion

-quaternity

-quatrefoil

-quattrocento

-quattuordecillion

-quavery

-quayage

-quayside

-quean

-queasily

-queazy

-queenship

-queerish

-quenchable

-quenchless

-querilla

-querist

-quern

-querns

-questionary

-questionless

-questor

-quetzal

-quetzales

-quib

-quibs

-quickset

-quid

-quid's

-quiddity

-quids

-quiescence

-quietism

-quietist

-quietus

-quiff

-quiffed

-quiffs

-quillwort

-quince

-quinces

-quincuncial

-quincuncially

-quincunx

-quincunxes

-quincunxial

-quindecillion

-quinidine

-quiniela

-quinoa

-quinoid

-quinoidine

-quinoline

-quinquennium

-quinquevalent

-quinquivalent

-quintain

-quintal

-quintessence

-quintette

-quintic

-quintuple

-quintupled

-quintuples

-quintuplet

-quintuplet's

-quintuplets

-quintuplicate

-quintuplicated

-quintuplicates

-quintuplicating

-quintupling

-quintus

-quipped

-quipster

-quirkily

-quirkiness

-quirky

-quisling

-quislingism

-quitch

-quitclaim

-quitrent

-quittance

-quitted

-quittor

-quixotical

-quixotically

-quixotry

-quizmaster

-quizzer

-quizzicality

-quod

-quodlibet

-quoin

-quoit

-quoits

-quondam

-quot

-quotable

-quotidian

-rRNA

-rabbet

-rabbeted

-rabbeting

-rabbets

-rabbinate

-rabbinic

-rabbinism

-rabbitry

-rabbity

-rabblement

-rabic

-rabidity

-racecourse

-racecourses

-racemate

-racemic

-racemose

-rachet

-rachides

-rachiodont

-rachis

-rachises

-rachitic

-rachitis

-racialism

-racialist

-racialistic

-racily

-racine

-rackle

-racon

-raconteur

-racoon

-rad

-radarscope

-radarscopes

-raddle

-raddled

-raddles

-raddling

-radiale

-radiancy

-radiational

-radiationless

-radic

-radicand

-radicate

-radicle

-radicular

-radioautograph

-radioautographic

-radioautography

-radiobiologic

-radiobiological

-radiobiologically

-radiobiologist

-radiobiology

-radiobroadcast

-radiobroadcaster

-radiobroadcasting

-radiocast

-radiocaster

-radiochemist

-radiochlorine

-radioecological

-radioecologist

-radioecology

-radioelement

-radiogenic

-radiogram

-radiogram's

-radiograms

-radiograph

-radiographically

-radioimmunoassay

-radioisotope

-radioisotopic

-radioisotopically

-radiolarian

-radiolocation

-radiologist

-radiolucency

-radiolucent

-radiolysis

-radiolytic

-radiometeorograph

-radiometrically

-radiomimetic

-radionuclide

-radiopaque

-radiophone

-radiophoto

-radiophotograph

-radioscopic

-radioscopy

-radiosensitive

-radiosensitivity

-radiosonde

-radiostrontium

-radiosymmetrical

-radiotelegraph

-radiotelegraphic

-radiotelegraphy

-radiotelephone

-radiotelephony

-radiotherapist

-radiothorium

-radiotracer

-radome

-rads

-radula

-radular

-raff

-raffia

-raffinose

-raftsman

-raga

-ragamuffin

-ragbag

-raggedy

-raggle

-ragi

-raglan

-ragman

-ragpicker

-ragtag

-ragtime

-rah

-rainmaker

-rainmaking

-rainproof

-rainspout

-rainsquall

-rainwash

-rainwear

-raj

-raja

-rale

-rallye

-rallyist

-rallymaster

-ramate

-rambunctious

-rambunctiously

-rambunctiousness

-ramekin

-ramentum

-ramequin

-rami

-ramie

-ramiform

-ramillies

-ramirez

-rammer

-ramose

-ramosely

-ramous

-rampageous

-rampageously

-rampageousness

-rampancy

-rampion

-ramshackle

-ramus

-ranchman

-ranian

-rantry

-ranunculus

-rapacity

-rapine

-rapist

-rappee

-rappen

-rapporteur

-rapscallion

-raptor

-raptorial

-rapunzel

-rarebit

-rarefaction

-rarefactional

-rarefactive

-rarify

-rasa

-rascality

-rasing

-rasorial

-raspy

-rasure

-rata

-ratably

-ratafia

-rataplan

-ratch

-ratel

-ratemeter

-ratemeter's

-ratemeters

-ratepayer

-ratepayers

-rathe

-rathskeller

-raticide

-ratificationist

-ratiocinator

-rationalistically

-ratlike

-ratline

-raton

-ratoon

-rattan

-ratted

-ratteen

-ratter

-ratting

-rattlebrain

-rattlebrained

-rattletrap

-rattly

-rattrap

-raunchier

-raunchily

-raunchiness

-raunchy

-ravagement

-ravel

-ravelment

-ravels

-ravioli

-ravishment

-rawinsonde

-rawlings

-rawlins

-rayless

-raylessness

-rayon

-razeed

-razeeing

-razorbill

-razz

-razzmatazz

-reabsorb

-reabsorption

-reacquaint

-reacquire

-reacquisition

-reactance

-reactances

-reactional

-reactionally

-reactionaryism

-reaggregate

-reaggregation

-realpolitik

-reapportion

-rearhorse

-rearm

-rearmament

-rearming

-rearmost

-rearward

-rearwardly

-rearwards

-reasonability

-reasonless

-reasonlessly

-reassembly

-reave

-reaver

-reaving

-reb

-rebarbative

-rebarbatively

-reboant

-rebs

-rebus

-rebuttable

-rebutter

-recalcitrance

-recalcitrancy

-recalescence

-recallability

-recantation

-recap

-recatory

-receivership

-recension

-receptaculum

-recessional

-recessionary

-recharge

-rechargeable

-recharger

-recharging

-recheat

-recidivism

-recidivist

-recidivistic

-reciprocator

-recision

-recitalist

-recitativo

-reck

-reclinate

-reclosable

-recoin

-recombinant

-recommit

-recommitment

-recompence

-recompose

-reconcilability

-reconcilable

-reconcilableness

-reconcilement

-reconfirm

-reconfirmation

-reconstitute

-reconstitution

-reconstructionism

-reconstructionist

-reconstructor

-recontaminate

-reconversion

-reconvert

-reconverted

-reconvey

-reconveyance

-recordable

-recordation

-recordist

-recoupable

-recoupment

-recreant

-recreatable

-recreationist

-recriminatory

-recrudesce

-recrudescence

-recrudescent

-rectal

-rectally

-rectangularity

-recti

-rectifiability

-rectifiable

-recting

-rection

-rectitudinous

-rective

-recto

-rectorate

-rectorial

-rectorship

-rectos

-rectrices

-rectrix

-rectus

-recumbency

-recusancy

-redaction

-redactional

-redargue

-redbone

-redcap

-redded

-reddy

-rede

-redear

-redecorate

-redecorator

-redeemable

-redemptional

-redemptory

-redeploy

-redeployed

-redeployment

-redescribe

-redescription

-redetermine

-redetermined

-redetermining

-redhook

-redhorse

-redia

-rediae

-redial

-redias

-redintegrate

-redintegration

-redintegrative

-rediscount

-rediscountable

-redistributory

-redistrict

-redivivus

-redleg

-redolence

-redolent

-redolently

-redondo

-redoubt

-redoubtably

-redout

-redox

-redpoll

-redroot

-redshank

-redshift

-redshifted

-redshifting

-redshifts

-redshirt

-redskin

-redstart

-redtop

-reductant

-reductase

-reductio

-reductional

-reductionist

-reductionistic

-reduplicate

-reduplication

-reduplicative

-reduplicatively

-reduviid

-redwing

-ree

-reedbuck

-reedify

-reeducate

-reeducative

-reeky

-reelable

-reembroider

-reemphasization

-reemphasization's

-reemploy

-reemployment

-reenforce

-reenlist

-reenlisted

-reenlistment

-reentrance

-reest

-reestablishment

-ref

-reface

-refacing

-refect

-refection

-referable

-refinish

-refinisher

-refinishes

-refinishing

-refit

-reflation

-reflationary

-reflectional

-reflectometer

-reflectometer's

-reflectometers

-reflectometry

-reflexion

-reflexology

-reflorescence

-reflorescent

-reflow

-refluence

-reforest

-reforge

-reformate

-reformational

-refractile

-refractivities

-refractivity

-refractometric

-refractometry

-refractor

-refractorily

-refrainment

-refrangibility

-refrangible

-refrangibleness

-refrigerant

-refringent

-reft

-refugeeism

-refugium

-refulgence

-refulgent

-refundability

-refundable

-refurbishment

-refutably

-regality

-regardant

-regardful

-regardfully

-regardfulness

-regelation

-regenerable

-regeneracy

-regenerator

-regental

-regicidal

-regicide

-regimental

-regimentally

-regimentals

-regionalist

-regionalistic

-regisseur

-regius

-reglet

-regna

-regnal

-regnant

-regnum

-regolith

-regorge

-regorged

-regorging

-regosol

-regrant

-regreet

-regressor

-regretless

-regretter

-regrid

-regridded

-regridding

-regrow

-regurgitate

-regurgitated

-regurgitates

-regurgitating

-regurgitation

-regurgitative

-rehabilitant

-rehabilitationist

-rehabilitator

-rehear

-rehouse

-rehousing

-rehydratable

-rehydrate

-rehydration

-reichsmark

-reification

-reified

-reify

-reifying

-reimpression

-reincarnationist

-reinfection

-reinforceable

-reinhard

-reinhardt

-reinless

-reinsman

-reinsurance

-reinsure

-reinsurer

-reintegrate

-reintegration

-reintegrative

-reinvestment

-reinvigorate

-reinvigorator

-reiterator

-reive

-reiver

-reiving

-rejectee

-rejuvenate

-rejuvenated

-rejuvenates

-rejuvenating

-rejuvenation

-rejuvenator

-rejuvenescence

-rejuvenescent

-relatable

-relator

-relaxant

-relaxin

-releasability

-releasably

-relection

-reliction

-relievable

-relievo

-religionist

-religiose

-reline

-relinquishment

-reliquary

-relique

-reliquiae

-relishable

-relocatee

-relucent

-reluctancy

-reluctate

-reluctated

-reluctation

-reluctivity

-relume

-relumed

-relumine

-reluming

-remaines

-reman

-remanence

-remanent

-remanufacture

-remanufacturer

-remap

-remarque

-remediably

-remedially

-remediate

-remediation

-remediless

-remedilessly

-rememberability

-rememberable

-remigial

-remindful

-reminiscential

-remint

-remise

-remised

-remising

-remissible

-remissibly

-remitment

-remittable

-remittal

-remittent

-remittently

-remitter

-remonstrance

-remonstrant

-remonstrantly

-remonstrator

-remount

-removability

-removably

-remunerator

-remuneratory

-remus

-renascence

-renderable

-renegade

-renegades

-renege

-reneged

-reneger

-reneges

-reneging

-renewability

-renewably

-reniform

-renig

-renigged

-renigging

-renin

-renitency

-renitent

-rennet

-rennin

-renographic

-renography

-renominate

-renominating

-renomination

-renouncement

-renovator

-rentability

-rentable

-rente

-rentier

-renunciatory

-reoccupy

-reoccur

-reoccurrence

-rep

-repack

-repacker

-repacking

-repairability

-repand

-reparative

-repass

-repassage

-repatriate

-repatriated

-repatriates

-repatriating

-repatriation

-repealable

-repellant

-repellency

-repeller

-repercussive

-repetend

-repetitional

-replant

-repleviable

-replevied

-replevies

-replevin

-reportable

-reposal

-reposeful

-reposefully

-reposefulness

-reposit

-reposited

-repositing

-repossess

-repossession

-repower

-reprehend

-reprehensibility

-reprehensibly

-reprehension

-reprehensive

-representationalism

-representationalist

-repressibility

-repressible

-repressionist

-repressor

-reprieval

-repristinate

-repristination

-repro

-reproachable

-reproachful

-reproachfully

-reproachfulness

-reprobance

-reprobatory

-reprocess

-reprocessable

-reprocesses

-repros

-repudiationist

-repudiator

-repugn

-repugnancy

-reputability

-req

-requestioner

-requestor

-requiescat

-requin

-requital

-reradiate

-reradiation

-reredos

-reremouse

-rereward

-resail

-rescale

-rescindment

-rescission

-rescissory

-rescript

-researchist

-resect

-resectability

-resectable

-resection

-reseed

-resend

-resending

-reserpine

-reservist

-reservists

-resettable

-reship

-reshipment

-reshipper

-reshuffle

-residua

-resile

-resiled

-resiliency

-resiling

-resinate

-resinify

-resinoid

-resinous

-resiny

-resistable

-resistibility

-resistless

-resistlessly

-resistlessness

-resitting

-resojet

-resole

-resolvent

-resorb

-resorcinol

-resorption

-resorptive

-respell

-respirable

-respirational

-respirometer

-respirometer's

-respirometers

-respirometric

-respirometry

-resplendence

-resplendency

-responsory

-responsum

-ressentiment

-resses

-restage

-restartable

-restauranteur

-restitute

-restorable

-restoral

-restrainable

-restrictionism

-restrictionist

-restrike

-resultful

-resultfulness

-resultless

-resupinate

-resupination

-resupine

-resurgam

-resurge

-resurging

-resurrectional

-resurrectionist

-resuscitator

-resuscitators

-resvering

-ret

-retable

-retake

-retardate

-retentivity

-retenue

-retia

-retiarius

-reticency

-reticule

-reticulocyte

-reticulocytic

-reticulose

-retiform

-retinacular

-retinaculum

-retinae

-retinene

-retinitis

-retinol

-retinopathy

-retinoscopy

-retinospora

-retinula

-retinular

-retirant

-retool

-retortion

-retot

-retouch

-retoucher

-retractile

-retractility

-retrainable

-retrainee

-retral

-retrally

-retread

-retreaded

-retreading

-retreatant

-retrench

-retrial

-retributive

-retributively

-retributory

-retrievability

-retroaction

-retroactivity

-retrocede

-retrocession

-retrofire

-retrofitted

-retrogradation

-retrogress

-retrogression

-retrolental

-retrolingual

-retropack

-retroperitoneal

-retroperitoneally

-retroreflection

-retroreflective

-retroreflector

-retrorse

-retrorsely

-retroserrate

-retroversion

-rets

-retsina

-retted

-retting

-returnee

-returnee's

-returnees

-retuse

-reunification

-reunify

-reunionist

-reunionistic

-rev

-revalidate

-revalidating

-revaluate

-revalue

-revanche

-revanchist

-revealable

-revealment

-revegetate

-revegetation

-revehent

-reveille

-reveilles

-revelator

-revenant

-rever

-reverb

-reverberant

-reverberantly

-reverberatory

-reverential

-reverentially

-revers

-reversibly

-reversional

-reversionary

-revertible

-revery

-revest

-revetment

-revetted

-revictual

-revilement

-revisal

-revisionism

-revisor

-revisory

-revivable

-revivalist

-revivalistic

-revivalists

-revivification

-revivify

-reviviscence

-reviviscent

-revokable

-revoluable

-revolute

-revolutionarily

-revolutionibus

-revolutionist

-revolvable

-revs

-revulsed

-revulsive

-rew

-rewake

-rewaken

-rewardable

-rexroth

-rey

-reynard

-rezone

-rhabdom

-rhabdomancy

-rhabdome

-rhabdomere

-rhadamanthine

-rhamnaceous

-rhamnose

-rhamnus

-rhaphe

-rhapsodical

-rhapsodically

-rhapsodist

-rhatany

-rhebok

-rheims

-rheinholdt

-rheological

-rheologically

-rheologist

-rheometer

-rheometer's

-rheometers

-rheophile

-rheophilic

-rheostatic

-rhesus

-rhet

-rhetor

-rheumatically

-rheumatiz

-rheumatoid

-rheumatologist

-rheumatology

-rheumy

-rhinal

-rhinelander

-rhinencephalic

-rhinencephalon

-rhinitis

-rhinocerotic

-rhinolaryngology

-rhinopharyngitis

-rhinoscopy

-rhinosporidium

-rhinovirus

-rhizanthous

-rhizobium

-rhizocarpic

-rhizocarpous

-rhizocephalan

-rhizocephalid

-rhizoctonia

-rhizogenesis

-rhizogenetic

-rhizogenic

-rhizoid

-rhizoidal

-rhizomatous

-rhizome

-rhizomic

-rhizomorphous

-rhizoplane

-rhizopod

-rhizopodal

-rhizopodous

-rhizopus

-rhizosphere

-rhizotomy

-rhodamine

-rhodochrosite

-rhodomontade

-rhodoplast

-rhodopsin

-rhodora

-rhomb

-rhombencephalon

-rhombi

-rhombohedral

-rhombohedron

-rhomboid

-rhomboidal

-rhomboideus

-rhombs

-rhonchi

-rhonchus

-rhumb

-rhumba

-rhumbs

-rhus

-rhuses

-rhymester

-rhyolite

-rhyolitic

-rhythmicity

-rhythmist

-rhytidome

-ri

-rial

-rialto

-riant

-riantly

-riata

-ribaldry

-riband

-ribas

-ribband

-ribber

-ribbonlike

-ribby

-ribgrass

-riblet

-ribonuclease

-ribonucleoprotein

-ribonucleoside

-ribonucleotide

-ribose

-ricci

-ricebird

-ricercar

-richert

-richey

-richland

-richment

-rici

-ricin

-ricinus

-rickards

-rickenbaugh

-rickettsia

-rickey

-rickeys

-rickrack

-ricksha

-ricotta

-rictal

-rictus

-ridded

-ridder

-rideable

-riderless

-ridgeling

-ridgling

-ridgy

-ridotto

-ridpath

-riegger

-riel

-rien

-rier

-rife

-rifely

-riff

-riffle

-riffled

-riffler

-riffles

-riffling

-riffraff

-rification

-rifice

-rificer

-riflebird

-riflery

-riflescope

-rifying

-rigadoon

-rigatoni

-rigaudon

-rightism

-rigidification

-rigidify

-rigorism

-rigorism's

-rigorisms

-rigorist

-rigorist's

-rigoristic

-rigoristics

-rigorists

-rile

-riling

-rilke

-rille

-rillet

-rilly

-rimbaud

-rimier

-rimland

-rimose

-rimous

-rimrock

-rimy

-rin

-rinascimento

-rinderpest

-ringbark

-ringbolt

-ringbolts

-ringbone

-ringboned

-ringdove

-ringel

-ringent

-ringleader

-ringleaders

-ringlike

-ringmaster

-ringmasters

-ringneck

-ringolade

-ringstraked

-ringtail

-ringtaw

-ringtoss

-ringworm

-ringworms

-ripieno

-ripoff

-ripoff's

-ripoffs

-riposte

-ripper

-riprap

-ripsaw

-ripsnorter

-ripsnorting

-riptide

-risibility

-risorgimento

-risotto

-rit

-ritard

-ritualism

-ritualist

-ritualistic

-ritualistically

-ritzier

-ritziness

-ritzy

-rivalrous

-riverbed

-riverview

-riverward

-riverwards

-riverweed

-riyal

-roadability

-roadless

-roadrunner

-roadrunners

-roadstead

-roadwork

-roadworks

-roadworthiness

-roadworthy

-roan

-robalo

-roband

-robbie

-roble

-robustious

-robustiously

-robustiousness

-roc

-rocambole

-rochet

-rockabilly

-rockaway

-rockaways

-rocketeer

-rocketry

-rockettes

-rockfish

-rocklike

-rockling

-rockoon

-rockrose

-rockshaft

-rockskipper

-rococo

-rodenticide

-rodeph

-rodless

-rodlike

-roemer

-roentgenogram

-roentgenogram's

-roentgenograms

-roentgenograph

-roentgenographic

-roentgenographically

-roentgenography

-roentgenologic

-roentgenological

-roentgenologically

-roentgenologist

-roentgenology

-roentgenoscope

-roentgenoscopic

-roentgenoscopy

-roentgenotherapy

-roff

-rogation

-rogueing

-roguery

-roi

-roic

-roily

-roister

-roistered

-roisterer

-roistering

-roisterous

-rolamite

-rollick

-rollie

-rollout

-rollover

-rolnick

-romaine

-romanticist

-romanza

-romaunt

-romulo

-rondeau

-rondeaux

-rondel

-rondelet

-rondelle

-rondure

-ronnel

-ronyon

-roofhouse

-roofless

-rooflike

-roofline

-rooftree

-rookery

-rooky

-roomette

-rooney

-roorback

-roos

-roose

-rootage

-roothold

-rootlet

-rootlike

-rootstalk

-rootstock

-rooty

-ropean

-ropedancer

-ropedancing

-ropery

-ropewalk

-ropewalker

-ropeway

-ropework

-ropier

-ropiness

-ropy

-roque

-roquelaure

-rorqual

-rosabelle

-rosaceous

-rosaniline

-rosarian

-rosebay

-rosefish

-roselike

-rosella

-rosemaling

-roseola

-roseolar

-rosery

-roset

-rosewater

-rosewood

-rosie

-rosily

-rosin

-rosined

-rosining

-rosinous

-rosinweed

-roslev

-rossi

-rossoff

-rostagno

-rostagnos

-rostellar

-rostellate

-rostellum

-rostra

-rostral

-rostrate

-rosulate

-roswell

-rota

-rotaed

-rotameter

-rotameter's

-rotameters

-rotatable

-rotatory

-rote

-rotenone

-rotgut

-rothko

-rotifer

-rotisserie

-rotonda

-rotorcraft

-rotos

-rotted

-rottenstone

-rotter

-rottosei

-rottweiler

-roturier

-rou

-rouen

-roughage

-roughcast

-roughhouse

-roughhoused

-roughhousing

-roughleg

-roughrider

-roughriders

-roulade

-rouleau

-rouleaux

-roundel

-roundelay

-roundish

-roundlet

-roundsman

-roundwood

-roup

-rous

-rouseabout

-rousement

-roust

-rouster

-routeman

-routeway

-routh

-roux

-roven

-rowdily

-rowdyish

-rowdyism

-rowlock

-roxy

-royalism

-royaux

-royster

-rozella

-rozelle

-rozzer

-rpt

-rubasse

-rubato

-rubberlike

-rubberneck

-rubbernecker

-rubbishy

-rubblework

-rubefacient

-rubellite

-rubeola

-rubeolar

-rubicundity

-rubiginous

-rubious

-rubrical

-rubrically

-rubricate

-rubrication

-rubricator

-rubus

-rubythroat

-rucellai

-ruche

-ruching

-ruck

-rucksack

-ruction

-rudbeckia

-rudd

-rudderpost

-rudderstock

-ruddily

-ruddle

-ruddled

-ruddleman

-ruddling

-ruddock

-ruderal

-rudesbies

-rudesby

-rudimental

-rudimentarily

-rufescent

-ruff

-ruffe

-ruffed

-ruffianism

-ruffly

-rufous

-ruga

-rugae

-rugal

-rugate

-rugby

-rugger

-ruggiero

-rugose

-rugosely

-rugosity

-rugulose

-ruh

-ruidoso

-ruinate

-ruleless

-rulership

-rumba

-rumbly

-rumbustious

-rumdum

-rumina

-ruminal

-ruminate

-rumination

-ruminative

-ruminatively

-ruminator

-rummel

-rummer

-rummest

-rumrunner

-runagate

-runaround

-runback

-runcinate

-rundle

-rundlet

-runless

-runlet

-runnel

-runnels

-runneth

-runny

-runout

-runouts

-runover

-runtm

-rupiah

-rupiahs

-rupicoline

-rupicolous

-ruppert

-ruralist

-rurban

-rushall

-rushee

-rushlight

-rushy

-russetting

-russification

-russify

-russula

-rustical

-rustically

-rusticator

-rusticity

-rustily

-ruthenic

-ruthenious

-rutilant

-rutile

-ruttish

-ruttishly

-ruttishness

-ryegrass

-saba

-sabadilla

-sabbat

-sabbatic

-sabin

-sabol

-sabot

-saboteur

-saboteurs

-sabra

-sac

-sacahuiste

-sacaton

-saccade

-saccadic

-saccate

-saccharase

-saccharate

-saccharide

-saccharides

-saccharification

-saccharify

-saccharimeter

-saccharimeter's

-saccharimeters

-saccharimetry

-saccharin

-saccharine

-saccharinity

-saccharoidal

-saccharometer

-saccharometer's

-saccharometers

-saccharomyces

-saccharose

-saccular

-sacculate

-sacculated

-sacculates

-sacculation

-saccule

-sacculus

-sacerdotal

-sacerdotalism

-sacerdotalist

-sacerdotally

-sachem

-sachemic

-sachems

-sachet

-sacheted

-sacheverell

-sackbut

-sackcloth

-sackful

-saclike

-sacque

-sacra

-sacramental

-sacramentalism

-sacramentalist

-sacramentally

-sacrarium

-sacre

-sacrestia

-sacrilegiousnes

-sacring

-sacristan

-sacristy

-sacroiliac

-sacrosanctity

-sacrum

-saddhu

-saddlebow

-saddlecloth

-saddleless

-saddlery

-saddletree

-sadomasochism

-sadomasochist

-sadomasochistic

-safecracker

-safecracking

-safelight

-safetyman

-safflower

-safranin

-safranine

-safrole

-sagami

-saggar

-sagger

-sagittal

-sagittally

-sagittate

-sago

-sagos

-saguaro

-sahib

-sailable

-sailboard

-sailcloth

-sailon

-sailplane

-sailplaner

-sain

-sainfoin

-saintdom

-saintlike

-saintsbury

-saintship

-saith

-saithe

-saki

-sako

-salability

-salamandrine

-salariat

-saleable

-saledo

-saleratus

-saleroom

-salesclerk

-salesroom

-saleswoman

-salic

-salicin

-salicylate

-salida

-salientian

-salimeter

-salimeter's

-salimeters

-salinity

-salinometer

-salinometer's

-salinometers

-sallet

-sallowish

-salmagundi

-salmi

-salmonberries

-salmonberry

-salmonella

-salmonellosis

-salmonid

-salmonoid

-salometer

-salometer's

-salometers

-saloonkeep

-saltarello

-saltation

-saltatorial

-saltatory

-saltbox

-saltbush

-saltcellar

-saltern

-saltily

-saltine

-saltire

-saltless

-saltlike

-saltonstall

-saltshaker

-saltworks

-saltwort

-salubrity

-saluki

-salutarily

-salutaris

-salutational

-salutatorian

-salutatory

-salutiferous

-salutory

-salvable

-salvageability

-salvational

-salvationism

-salvationist

-salverform

-salvific

-salvoes

-salvor

-samar

-samara

-samarium

-samarskite

-samba

-sambar

-sambur

-samisen

-samite

-samlet

-samp

-sampan

-samphire

-samurai

-samurai's

-samurais

-sanatarium

-sanative

-sanbenito

-sancta

-sanctimony

-sanctum

-sandarac

-sandbagger

-sandbank

-sandbar

-sandbox

-sandbur

-sandglass

-sandhog

-sandling

-sandlot

-sandlotter

-sandpapery

-sandsoap

-sandstorm

-sandstorms

-sandworm

-sandworms

-sangaree

-sangfroid

-sanguinaria

-sanguinarily

-sanguineum

-sanguinity

-sanguinolent

-sanicle

-sanious

-sanipractor

-sanitaire

-sanitarian

-sanitarily

-sanitorium

-sannyasi

-sans

-sansei

-sanseis

-sanserif

-sansevieria

-sanskritic

-sansom

-sansome

-sant

-santolina

-santonica

-santonin

-santour

-saphead

-sapheaded

-saphenous

-sapid

-sapidity

-sapience

-sapiens

-sapient

-sapiently

-sapio

-sapless

-saplessness

-sapodilla

-sapogenin

-saponaceous

-saponaceousness

-saponifiable

-saponification

-saponifier

-saponify

-saponin

-saponins

-saponite

-sapor

-saporous

-sapota

-sapper

-sapphic

-sapphirine

-sapphism

-sapremia

-sapremic

-saprobe

-saprobic

-saprobically

-saprogenic

-saprogenicity

-saprolite

-sapropelic

-saprophagous

-saprophyte

-saprophytic

-saprophytically

-saprozoic

-sapsago

-saraband

-sarabande

-sarape

-sarasate

-sarcenet

-sarcoid

-sarcoidosis

-sarcolemma

-sarcolemmal

-sarcomatosis

-sarcomatous

-sarcomere

-sarcomeric

-sarcophagic

-sarcophagous

-sarcophagus

-sarcophagy

-sarcoplasm

-sarcoplasma

-sarcoplasmatic

-sarcoplasmic

-sarcosomal

-sarcosome

-sardonically

-sardonicism

-sardonyx

-sargasso

-sargassum

-sarge

-sarmi

-sarod

-sarode

-sarodist

-sarong

-sarong's

-sarongs

-sarpsis

-sarsaparilla

-sarsenet

-sarsparilla

-sarti

-sartorial

-sartorially

-sashimi

-saskatoon

-sass

-sassier

-sasswood

-sassy

-satang

-satangs

-satanically

-satchelful

-sateen

-satem

-sati

-satiety

-satinet

-satinwood

-satiny

-satori

-saturable

-saturant

-saturator

-saturnali

-saturnalian

-saturnalianly

-saturniid

-satyriasis

-satyric

-satyrid

-saucebox

-saucerlike

-sauch

-sauerbraten

-sauger

-saurel

-saurian

-sauries

-sauropod

-savable

-savagism

-savanna

-savanna's

-savannas

-savant

-savants

-savate

-saveable

-sawbelly

-sawbones

-sawboneses

-sawbuck

-sawfish

-sawfly

-sawlike

-sawtimber

-saxhorn

-saxifrage

-saxophonic

-saxton

-sayable

-scabbier

-scabbing

-scabble

-scabbled

-scabbles

-scabbling

-scabby

-scabies

-scabietic

-scabiosa

-scabious

-scad

-scad's

-scads

-scag

-scagliola

-scalade

-scalado

-scalage

-scalare

-scalariform

-scalariformly

-scalation

-scalawag

-scaleless

-scalelike

-scalene

-scalepan

-scallion

-scallopini

-scallywag

-scallywags

-scalogram

-scalogram's

-scalograms

-scammed

-scamming

-scammony

-scampi

-scampini

-scampish

-scandalmonger

-scandent

-scannable

-scansion

-scantling

-scape

-scapegoatism

-scapegrace

-scaphoid

-scapin

-scaping

-scapolite

-scapose

-scarab

-scarabaeid

-scaramouch

-scaramouche

-scarecrowish

-scarehead

-scaremonger

-scarey

-scarfpin

-scarfskin

-scarious

-scarlatinal

-scarless

-scarp

-scarped

-scarper

-scarpered

-scarpering

-scarpers

-scarph

-scarping

-scarps

-scarring

-scarry

-scatback

-scathe

-scathed

-scatheless

-scathes

-scatological

-scatology

-scatted

-scatteration

-scattershot

-scattier

-scatty

-scaup

-scauper

-scaups

-scc

-scena

-scenarist

-scenical

-scenically

-scenographic

-scenographically

-scenography

-scentless

-sceptibly

-schelling

-schematism

-scherzi

-scherzo

-schismatic

-schismatical

-schismatically

-schismatist

-schistose

-schistosity

-schistosomal

-schistosome

-schistosomiasis

-schistous

-schizo

-schizocarp

-schizogonic

-schizogonous

-schizogony

-schizomycete

-schizomycetous

-schizont

-schizophrene

-schizophrenically

-schizophyte

-schizophytic

-schizos

-schizothymic

-schlemiel

-schlepp

-schlieren

-schlieric

-schlock

-schmaltz

-schmaltzy

-schmalz

-schnauzer

-schnitzel

-scholastica

-scholasticate

-scholasticism

-scholiast

-scholiastic

-scholium

-schoolbag

-schoolchild

-schoolfellow

-schoolman

-schoolmistress

-schooltime

-schopenhauer

-schorlaceous

-schuman

-schwada

-sciaenoid

-sciatic

-sciential

-scientifique

-scientism

-scientologist

-scientology

-scilicet

-scilla

-scintigraphic

-scintigraphy

-scintilla

-scintillant

-scintillantly

-scintillator

-scintillometer

-scintillometer's

-scintillometers

-sciolism

-sciolist

-sciolistic

-sciomancy

-sciomantic

-scirocco

-scirrhi

-scirrhous

-scirrhus

-scissile

-scission

-scissortail

-sclerose

-sclerosed

-sclerotial

-sclerotin

-sclerotium

-scofflaw

-scofflaw's

-scofflaws

-scolecite

-scolex

-scolices

-scoliosis

-scoliotic

-scollop

-scolopendra

-scombroid

-sconce

-scone

-scoopful

-scopic

-scopolamine

-scopula

-scopulate

-scorbutic

-scorbutically

-scorekeeper

-scoria

-scoriaceous

-scorpaenid

-scorpioid

-scotchgard

-scotchman

-scoter

-scotoma

-scotomatous

-scotopic

-scottie

-scouse

-scouser

-scoutcraft

-scoutmaster

-scrabbly

-scrag

-scraggier

-scragging

-scraggy

-scrannel

-scrapie

-scrapper

-scrappier

-scrappiness

-scrapple

-scrappy

-scrawly

-screak

-screaky

-scree

-screenable

-screenful

-screvane

-screwbean

-screwier

-screwiness

-screwlike

-screwworm

-screwy

-scrieve

-scrimpy

-scrimshaw

-scrip

-scriptal

-scription

-scriptorium

-scriptwriter

-scriptwriter's

-scriptwriters

-scrod

-scrofula

-scrofulous

-scrollwork

-scrota

-scrotal

-scrotum

-scrotum's

-scrotums

-scrouge

-scrouging

-scrubbier

-scrubby

-scrubland

-scrubwoman

-scruff

-scruffier

-scruffiness

-scruffy

-scrum

-scrummage

-scrunch

-scrutator

-scrutin

-scrutineer

-scud

-scudded

-scudding

-scuds

-scull

-sculled

-sculler

-sculleries

-scullery

-sculling

-scullion

-scullions

-sculls

-sculpin

-sculpsit

-sculptress

-sculpturesque

-sculpturesquely

-scumble

-scumbled

-scumbles

-scumbling

-scumming

-scummy

-scunner

-scup

-scupper

-scuppered

-scuppering

-scuppernong

-scuppers

-scups

-scurf

-scurfy

-scurril

-scurrile

-scurrility

-scurvily

-scuttlebutt

-scutum

-seabag

-seabeach

-seabed

-seabed's

-seabird

-seaboot

-seaborne

-seacraft

-seadog

-seadrome

-seafloor

-seafowl

-seafront

-seagirt

-seagoing

-sealery

-sealskin

-seamanlike

-seamark

-seamlike

-seamount

-seamster

-seaplane

-seaquarium

-searchable

-searchless

-seascape

-sease

-seashell

-seashell's

-seashells

-seasick

-seasickness

-seastrand

-seatmate

-seatmate's

-seatmates

-seawall

-seaware

-seawater

-seawater's

-seaworthiness

-seaworthy

-sebaceous

-sebum

-sec

-secateur

-secateurs

-secco

-secessionism

-seclusive

-seclusively

-seclusiveness

-secobarbital

-secondo

-secretaryship

-secretin

-secretionary

-secretor

-secretory

-sectarianism

-sectary

-sectile

-sectility

-sectionalism

-sectorial

-secularistic

-secund

-securement

-seder

-sedgwick

-sedgy

-sedilia

-sedimentologic

-sedimentological

-sedimentologically

-sedimentologist

-sedimentology

-seducement

-seductress

-sedulity

-sedulous

-sedulousness

-sedum

-seeable

-seedcake

-seedcakes

-seedily

-seedlike

-seedpod

-seedsman

-seedtime

-seel

-seeley

-seepy

-seeress

-seerey

-segetal

-segmentary

-segno

-segnos

-segue

-segue's

-segued

-segueing

-segues

-seguidilla

-segur

-segura

-sei

-seicento

-seiche

-seigneur

-seigneurial

-seigneury

-seignior

-seigniorage

-seigniory

-seignorage

-seignorial

-seignory

-seine

-seiner

-seining

-seisin

-seisins

-seism

-seismicity

-seismogram

-seismogram's

-seismograms

-seismographic

-seismologist

-seismometric

-seismometry

-selachian

-selaginella

-selden

-selectee

-selectman

-selectmen

-selenic

-selenide

-seleniferous

-selenious

-selenocentric

-selenographer

-selenographic

-selenographist

-selenography

-selenological

-selenologist

-selenologist's

-selenologists

-selenology

-selenosis

-selfadjoint

-selfdom

-selfhood

-sellable

-selle

-selvage

-selvaged

-selvedge

-selvedged

-semasiological

-semasiologist

-semasiology

-sematic

-semblable

-semblably

-semeiology

-sement

-semestral

-semestrial

-semiabstract

-semiabstraction

-semiaquatic

-semiarboreal

-semiaridity

-semiautomatically

-semiautonomous

-semibasement

-semibreve

-semicentenary

-semicentennial

-semicircle

-semicircles

-semiclassic

-semiclassical

-semicolonial

-semicolonialism

-semicolony

-semicommercial

-semiconducting

-semiconscious

-semiconsciously

-semiconsciousness

-semiconservative

-semiconservatively

-semicrystalline

-semicylindrical

-semidarkness

-semidesert

-semidetached

-semidiameter

-semidiurnal

-semidivine

-semidocumentary

-semidome

-semidomed

-semidomestic

-semidomesticated

-semidomestication

-semidominant

-semidouble

-semidry

-semiellipse

-semielliptic

-semielliptical

-semiempirical

-semierect

-semievergreen

-semifinal

-semifinalist

-semifinished

-semifitted

-semiflexible

-semifluid

-semiformal

-semifossil

-semigloss

-semigovernmental

-semigroup

-semilegendary

-semilethal

-semiliquid

-semiliterate

-semilog

-semilunar

-semilustrous

-semimanufactures

-semimetal

-semimetallic

-semimicro

-semimoist

-semimonastic

-semimonthly

-semimystical

-seminarist

-seminiferous

-semiofficial

-semiofficially

-semiological

-semiology

-semiopaque

-semiosis

-semiotic

-semiotical

-semiotician

-semiotics

-semipalmated

-semiparasitic

-semipermeability

-semipermeable

-semiphore

-semipolitical

-semiporcelain

-semipostal

-semiprecious

-semiprivate

-semipro

-semiquaver

-semiramis

-semireligious

-semiretired

-semiretirement

-semirigid

-semisacred

-semisedentary

-semishrub

-semishrubby

-semiskilled

-semisoft

-semisolid

-semisweet

-semisynthetic

-semiterrestrial

-semitonal

-semitonally

-semitone

-semitonic

-semitonically

-semitrailer

-semitranslucent

-semitransparent

-semitropic

-semitropics

-semivowel

-semiweekly

-semiworks

-semiyearly

-semmes

-semolina

-semper

-sempervivum

-sempiternal

-sempiternally

-sempiternity

-semple

-semplice

-sempre

-sempstress

-semra

-sen

-senarii

-senarius

-senary

-senatorian

-senatorship

-sendable

-senecio

-senectitude

-senega

-senesac

-senescence

-senescent

-seneschal

-sengi

-senhor

-senhora

-senhores

-senhorita

-senilis

-senility

-senioritatis

-seniti

-senna

-sennet

-sennight

-sennit

-sens

-sensa

-sensationalist

-sensationalistic

-senseful

-sensibilia

-sensillum

-sensitometer

-sensitometer's

-sensitometers

-sensitometric

-sensitometry

-sensorial

-sensorially

-sensorimotor

-sensorineural

-sensorium

-sensualism

-sensualist

-sensualistic

-sensum

-sensuosity

-sententia

-sententious

-sententiously

-sententiousness

-senti

-sentience

-sentimentalism

-sentimentalist

-sepal

-separably

-separationist

-separatism

-separatist

-separatistic

-sepiolite

-sepses

-sepsis

-septa

-septal

-septenarius

-septendecillion

-septentrion

-septentrional

-septicemia

-septicemic

-septicidal

-septifragal

-sepuchral

-sepulture

-sequacious

-sequaciously

-sequacity

-sequela

-sequelae

-sequency

-sequent

-sequestrate

-sequestrum

-sequinned

-sequitur

-ser

-sera

-serac

-serafin

-seraglio

-serai

-seral

-seraphic

-seraphically

-seraphs

-serbantian

-serbian

-sere

-serfage

-sergeancy

-sergeanty

-serialism

-serialist

-seriate

-seriately

-seriatim

-sericeous

-sericin

-sericultural

-sericulture

-sericulturist

-serieuses

-serif

-serigraph

-serigrapher

-serigraphy

-serin

-serine

-seriocomic

-seriocomically

-serjeants

-serjeanty

-sermonic

-serodiagnosis

-serodiagnostic

-serologic

-serologist

-seropurulent

-serosa

-serosal

-serotinal

-serotinous

-serotonin

-serotype

-serous

-serow

-serpiginous

-serpiginously

-serra

-serranid

-serranoid

-serrate

-serrated

-serrates

-serrating

-serration

-serratus

-serried

-serriedly

-serriedness

-serry

-serrying

-serting

-sertive

-sertularian

-serval

-servanda

-servation

-servatius

-serviceably

-serviceberry

-servility

-servomotor

-servosystem

-servosystems

-sesamoid

-sesquicarbonate

-sesquicentenary

-sesquicentennial

-sesquipedalian

-sessed

-sesshu

-sessile

-sessility

-sessional

-sesterce

-sestertium

-sestet

-sestina

-seta

-setaceous

-setaceously

-setae

-setal

-setline

-setnm

-seto

-setoff

-setom

-setose

-setout

-setpoint

-setpoints

-settee

-settees

-settlor

-setz

-setzb

-setzm

-seurat

-sevec

-sevenths

-seventyfold

-severability

-severable

-severna

-sevigli

-sewickley

-sexagenarian

-sexagesimal

-sexdecillion

-sexily

-sexless

-sexlessly

-sexlessness

-sexology

-sexpot

-sext

-sextant

-sextic

-sexto

-sextodecimo

-sextos

-sextuor

-sextuplicate

-sey

-sforzando

-shacklebone

-shad

-shadberry

-shadblow

-shadbush

-shaddock

-shadeless

-shadflower

-shadoof

-shadowbox

-shadowgraph

-shadowily

-shadowless

-shadowlike

-shagbark

-shaggily

-shaggymane

-shagreen

-shahdom

-shahn

-shaitan

-shakeout

-shako

-shakoes

-shakya

-shalloon

-shallop

-shallot

-shalt

-shaman

-shamanism

-shamanist

-shamanistic

-shamefaced

-shamefacedness

-shamefast

-shammer

-shammes

-shamming

-shammosim

-shammy

-shamus

-shan

-shandies

-shandrydan

-shandy

-shandygaff

-shanghaied

-shanghaier

-shankpiece

-shansi

-shantey

-shantyman

-shantytown

-shapable

-shapeable

-shapen

-shard

-shareability

-shareable

-sharkskin

-sharpie

-sharpies

-sharpy

-shashlick

-shashlik

-shatilov

-shaveling

-shavetail

-shavie

-shawano

-shawm

-shawomet

-shay

-shayne

-shayol

-shays

-sheaflike

-sheahe

-shearn

-shearwater

-sheatfish

-sheathbill

-shebang

-shebeen

-sheboygan

-shedded

-shedder

-sheen

-sheeny

-sheepfold

-sheepherder

-sheepherding

-sheepish

-sheepishly

-sheepishness

-sheepshank

-sheepshead

-sheepshearer

-sheepshearing

-sheeran

-sheetfed

-sheetlike

-sheikdom

-sheikh

-sheikhdom

-shekel

-shelagh

-shelfful

-shelflike

-shellac

-shellacked

-shellacking

-shellback

-shellback's

-shellbacks

-shellcracker

-shellfire

-shellfish

-shellproof

-shellwork

-shelly

-shelterbelt

-shelterless

-sheltie

-shelties

-shelty

-shend

-shending

-shensi

-shep

-shepherdess

-sher

-sherbert

-sherd

-sherif

-sheriffdom

-sherris

-shevelling

-shew

-shewe

-shews

-shh

-shiel

-shieling

-shietz

-shiflett

-shiftable

-shigella

-shih

-shikar

-shikari

-shikarred

-shikarring

-shiksa

-shikse

-shilingi

-shillalah

-shillelagh

-shillong

-shimmery

-shindies

-shindy

-shingly

-shinleaf

-shinleafs

-shinnery

-shinney

-shinnied

-shinning

-shinny

-shinnying

-shinplaster

-shinsplints

-shipborne

-shipfitter

-shiplap

-shipload

-shipmaster

-shipowner

-shipside

-shipway

-shipworm

-shipwright

-shirr

-shirring

-shirtwaist

-shirtwaister

-shirty

-shish

-shitepoke

-shiv

-shivaree

-shlemiehl

-shlock

-sho

-shoat

-shockproof

-shoddily

-shoebill

-shoeblack

-shoepac

-shoepack

-shogun

-shogunate

-sholom

-shoon

-shoplift

-shoplifter

-shoplifters

-shoplifting

-shoppe

-shoptalk

-shoran

-shorebird

-shorebird's

-shorebirds

-shorefront

-shoreside

-shoreward

-shorewards

-shortbread

-shortcake

-shortchange

-shortchanger

-shorthorn

-shortie

-shorties

-shortliffe

-shorty

-shotbush

-shotline

-shotlines

-shotten

-shouldst

-shoup

-shovelful

-shovelhead

-shovelman

-shovelnose

-shovelsful

-showbread

-showery

-showily

-showstopper

-shrievalty

-shrieve

-shrike

-shrimpy

-shrive

-shrived

-shriven

-shroff

-shrubbier

-shrubby

-shtetel

-shtetl

-shtetlach

-shtg

-shtick

-shuiski

-shul

-shulde

-shunner

-shunpike

-shunpiker

-shunpiking

-shush

-shute

-shutterbug

-shutterless

-shuz

-shyer

-shyes

-shyest

-shylockian

-shyster

-si

-sialagogue

-siamang

-sib

-sibe

-sibilate

-sibilation

-sibly

-sibyl

-sibylic

-sibylla

-sibyllic

-sibylline

-sibyls

-siccative

-siccing

-siciliana

-sickbed

-sickbed's

-sickbeds

-sicklebill

-sicklemia

-sicklewort

-sicklily

-sid

-siddo

-siddur

-siddurim

-sideburned

-sidedress

-sidehill

-sidekick

-sidekicks

-sideling

-sidency

-sident

-sidepiece

-siderite

-sideritic

-siderolite

-sideslip

-sideslips

-sidespin

-sidesplitting

-sidestepped

-sidestepper

-sidestroke

-sideswipe

-sideward

-sidewards

-sie

-sieben

-siebern

-siecle

-siecles

-siepi

-sierran

-sieux

-sig

-sightless

-sightlessness

-sigmoid

-sigmoidal

-sigmoidally

-signalman

-signalmen

-signalment

-signatory

-signifiable

-significancy

-significative

-significatively

-significativeness

-significs

-signior

-signiories

-signiory

-signori

-signories

-signorina

-signorino

-signory

-sike

-siking

-silane

-sild

-silds

-silenus

-silesia

-silex

-siliceous

-silicic

-silicicolous

-silicification

-silicify

-silicious

-silicle

-silicosis

-silicothermic

-silicotic

-silique

-silkaline

-silke

-silkoline

-silkweed

-sillabub

-sillily

-sillimanite

-silone

-siloxane

-siltstone

-siltstones

-siluroid

-silva

-silvan

-silvas

-silverfish

-silvern

-silverside

-silversides

-silverweed

-silvical

-silvicolous

-silvics

-silvicultural

-silviculturally

-silviculture

-silviculturist

-simazine

-simba

-simca

-simian

-simmel

-simms

-simnel

-simoleon

-simony

-simoom

-simoon

-simp

-simpatico

-simper

-simpered

-simperer

-simpering

-simpers

-simplices

-simplicial

-simplicially

-simplifiction

-simplism

-simplistically

-simulacre

-simulacrum

-simular

-sinan

-sinapism

-sincipita

-sincipital

-sinciput

-sind

-sinecure

-sinfonia

-sinfonietta

-singeing

-singleminded

-singlestick

-singletree

-singsong

-singsongy

-singspiel

-sinh

-siniboia

-sinistrorse

-sinistrous

-sinkable

-sinkage

-sinoatrial

-sinological

-sinologist

-sinologue

-sinology

-sinopia

-sinsyne

-sinterability

-sinton

-sinuate

-sinuately

-sinuatrial

-sinuosity

-sinusitis

-sion

-sipper

-sippet

-siree

-sirenian

-sirloin

-sirocco

-sirra

-sirrah

-sirree

-sirupy

-sirvente

-sirventes

-siskin

-sissies

-sissified

-sissy

-sisterhood

-sistrum

-sith

-sitosterol

-siva

-sivas

-sixmo

-sixmos

-sixpenny

-sixteenmo

-sixths

-sixtyfold

-sizably

-sizar

-sizova

-skag

-skagen

-skald

-skaldic

-skateboard

-skateboard's

-skateboarder

-skateboarding

-skateboards

-skedaddle

-skedaddled

-skedaddler

-skedaddles

-skedaddling

-skeg

-skeigh

-skein

-skein's

-skeins

-skeleta

-skellum

-skelp

-skelping

-skelpit

-skelter

-skeltered

-skeltering

-skene

-skep

-skepsis

-skerries

-skers

-skery

-skewback

-skewbald

-skiable

-skiagram

-skiagram's

-skiagrams

-skiagraph

-skiagraphy

-skiascope

-skiascopy

-skidder

-skiddier

-skiddoo

-skiddy

-skidoo

-skiffle

-skilful

-skilfully

-skilless

-skimobile

-skimpily

-skinflint

-skinflint's

-skinflints

-skinful

-skinhead

-skink

-skinker

-skint

-skintight

-skipjack

-skirl

-skirr

-skitter

-skittery

-skittish

-skittishly

-skittishness

-skive

-skiver

-skiving

-skivvies

-skivvy

-skiway

-skiwear

-skoal

-skulduggery

-skyborne

-skycap

-skydiving

-skyey

-skylounge

-skyphoi

-skyphos

-skyros

-skysail

-skywrite

-skywriter

-skywriting

-slabber

-slabbered

-slabbering

-slabbing

-slangily

-slanginess

-slangy

-slantways

-slantwise

-slapdash

-slaphappy

-slapjack

-slatelike

-slather

-slathered

-slathering

-slathers

-slattern

-slatternliness

-slatternly

-slaty

-slaughterous

-slaughterously

-slaveholder

-slaveholders

-slaveholding

-slavey

-slaveys

-slavocracy

-sleazily

-sledded

-sledder

-sleekit

-sleeplessess

-sleeplike

-sleepyhead

-sleeveless

-sleevelet

-slesinger

-sleuth

-sleuthhound

-slidden

-slideway

-slily

-slimily

-slimmest

-slimming

-slimpsy

-slimsy

-slinkier

-slinkily

-slinkiness

-slinky

-slipcase

-slipcover

-slipform

-slipknot

-slipover

-slippier

-slippy

-slipshod

-slipslop

-slipsole

-slipstick

-slipup

-slithery

-slitless

-slivovitz

-slobber

-slobbered

-slobberer

-slobbering

-slobbers

-slobbery

-slobbish

-slogger

-slopwork

-slopworker

-slotback

-slotting

-slouchier

-slouchily

-slouchiness

-slouchy

-sloughy

-slowish

-slowpoke

-slub

-slubber

-slubbered

-slubbering

-slubbing

-sludgier

-sludgy

-slue

-sluff

-slugabed

-slugfest

-sluggard

-sluggardly

-sluggardness

-sluiceway

-sluicy

-sluing

-slumberous

-slumbery

-slumbrous

-slumgullion

-slumlord

-slummer

-slummier

-slummy

-slungshot

-slushier

-slushiness

-slushy

-slut

-sluttish

-sluttishly

-sluttishness

-slyboots

-slyer

-slyest

-smartie

-smarties

-smartweed

-smarty

-smashup

-smatter

-smatterer

-smearcase

-smeary

-smectic

-smegma

-smeltery

-smidgen

-smidgeon

-smileless

-smilelessly

-smirch

-smirky

-smithery

-smithsonite

-smoggier

-smoggy

-smogless

-smokeable

-smokechaser

-smokeless

-smokelike

-smokeproof

-smokey

-smokily

-smolt

-smoochy

-smoothbore

-smoothie

-smoothies

-smooths

-smoothy

-smorgasbord

-smothery

-smoulder

-smsa

-smsa's

-smsas

-smudgily

-smugger

-smuggest

-smutch

-smutchy

-smutted

-smuttily

-smutting

-snaffle

-snaffled

-snaffling

-snaggletooth

-snaggletoothed

-snaggy

-snaillike

-snakebite

-snakebite's

-snakebites

-snakemouth

-snakeskin

-snakestrike

-snakeweed

-snakily

-snaky

-snappe

-snapshoot

-snapshooter

-snark

-snarks

-snarly

-snash

-snatchy

-snath

-snathe

-sndmsg

-snead

-sneap

-sneck

-sneed

-sneesh

-sneezeweed

-sneezewort

-sneezy

-snell

-snelling

-snick

-snickersnee

-snickery

-sniffily

-sniffiness

-sniffish

-sniffishly

-sniffishness

-sniffy

-snigger

-sniggered

-sniggerer

-sniggering

-sniggle

-sniggled

-sniggling

-sniperscope

-snippety

-snit

-snitch

-snitcher

-snobbism

-snobby

-snodgrass

-snollygoster

-snood

-snooperscope

-snoopily

-snoot

-snootier

-snootily

-snootiness

-snooty

-snooze

-snoozer

-snoozes

-snoozing

-snoozle

-snoozled

-snoozles

-snoozling

-snopes

-snot

-snoutish

-snouty

-snowbound

-snowbrush

-snowcap

-snowcapped

-snowdrift

-snowdrop

-snowfield

-snowless

-snowmaker

-snowmaking

-snowmelt

-snowpack

-snowplow

-snowscape

-snowshed

-snowshoeing

-snowslide

-snowsuit

-snubber

-snubbiness

-snubby

-snuffbox

-snuffy

-snugger

-snuggery

-snuggest

-soakage

-soapbark

-soapbox

-soapboxes

-soapily

-soapless

-soapmaking

-soapwort

-soba

-sobe

-sobersided

-sobersides

-sobf

-sobibor

-socage

-socager

-socal

-soccage

-sochi

-sociableness

-socialistically

-socialite

-socinianism

-sociolinguistic

-sociolinguistics

-sociologic

-sociopath

-sociopathic

-sociopolitical

-sociosexual

-sociosexuality

-sockdolager

-sockdologer

-sockeye

-socle

-socola

-soconoco

-sodalist

-sodalite

-sodality

-sodbuster

-sodded

-sodic

-sodomite

-soeren

-soever

-soffit

-softback

-softbound

-softcover

-softhead

-softheaded

-softheadedly

-softheadedness

-softhearted

-softheartedly

-softheartedness

-softie

-softies

-softish

-softy

-soggily

-sohn

-soign

-soignee

-soilborne

-soilge

-soilless

-soilure

-soir

-soke

-sokeman

-sokol

-sokolev

-sokolov

-sokolsky

-sola

-solacement

-solanaceous

-solanin

-solanine

-solanum

-solarium

-solate

-solated

-solating

-solatium

-soldan

-solderability

-soldi

-soldiership

-solecistic

-solemnify

-solenoidal

-soleplate

-soleprint

-solesmes

-solfatara

-solicitant

-solicitorship

-solidago

-solidarism

-solidarist

-solidaristic

-solidus

-solifluction

-soliloquist

-solipsist

-solipsistic

-solitarily

-soliton

-solitudinarian

-solitudinem

-solleret

-soln

-solonets

-solonetz

-solonetzic

-solstitial

-solubleness

-solubly

-solus

-solute

-solvability

-solvate

-solvated

-solvation

-solventless

-solvolysis

-solvolytic

-somatically

-somatogenic

-somatological

-somatology

-somatoplasm

-somatoplastic

-somatopleure

-somatopleuric

-somatosensory

-somatotrophin

-somatotropin

-somatotype

-somatotypic

-somatotypically

-sombre

-sombrero

-sombrous

-somebodies

-somedeal

-someway

-someways

-somewhen

-somewhither

-somite

-somitic

-somnambulant

-somnambular

-somnambulate

-somnambulation

-somnambulator

-somnambulism

-somnambulist

-somnambulistic

-somnambulistically

-somnifacient

-somniferous

-somniferously

-somnolency

-sonambula

-sonance

-sonant

-sonarman

-sonatina

-sonde

-sone

-songau

-songbird

-songfest

-songless

-songlessly

-songsmith

-songster

-songtress

-songwriter

-songwriting

-sonically

-sonicate

-sonicated

-sonication

-sonicator

-sonicators

-sonless

-sonneteer

-sonnobuoy

-sonogram

-sonogram's

-sonograms

-sonorant

-sonovox

-sonship

-sonsie

-sonsy

-soomed

-soothfast

-sootier

-sootily

-sootiness

-sooty

-sophistic

-sophistical

-sophistically

-sophy

-sopite

-sopited

-sopiting

-sopor

-soporiferous

-soporiferousness

-soppier

-soppy

-sopranino

-sopsaisana

-sora

-sorb

-sorbability

-sorbable

-sorbate

-sorbed

-sorbent

-sorceress

-sorcerous

-sordino

-sorehead

-soreheaded

-sorgo

-sori

-soricine

-sorites

-sororal

-sororate

-sorption

-sorptive

-sorrentine

-sorrentino

-sorrily

-sortable

-sortilege

-sortition

-sorus

-sostenuto

-sot

-soteriological

-soteriology

-sotol

-sottish

-sottishly

-sottishness

-sotun

-sou

-soubise

-soubrette

-souchong

-sough

-soukhouma

-soule

-soulless

-soullessly

-soullessness

-soundable

-soundboard

-soundless

-soundlessly

-soupier

-soupspoon

-soupy

-sourberry

-sourceless

-sourish

-sourpuss

-soursop

-sourwood

-sousaphone

-souse

-sousing

-sout

-soutache

-soutane

-souter

-southeasternmost

-southeastward

-southeastwards

-souths

-southwesternmost

-southwestward

-southwestwards

-sovietism

-sovkhoz

-sovkhozes

-sovran

-sovranty

-sowbug

-sowbug's

-sowbugs

-soxhlet

-spa

-spaceband

-spaceflight

-spaceless

-spaceman

-spaceport

-spacetime

-spacewalker

-spacewalking

-spacial

-spackle

-spackled

-spackling

-spacs

-spacward

-spada

-spadeful

-spadework

-spadices

-spadille

-spadix

-spaeing

-spahi

-spahn

-spake

-spalding

-spall

-spallable

-spallation

-spalled

-spalling

-spandrel

-spandril

-spang

-spanworm

-spareable

-spareribs

-sparge

-sparger

-sparging

-sparkily

-sparkish

-sparkplug

-sparred

-sparrowgrass

-sparsity

-spartan

-sparteine

-spas

-spasmodic

-spasmodical

-spasmodically

-spasmolytic

-spasmolytically

-spastically

-spasticity

-spathe

-spathic

-spathulate

-spatiotemporal

-spatiotemporally

-spatlum

-spatted

-spatting

-spatulate

-spavin

-speakeasy

-spean

-spearfish

-spearman

-specialism

-specialisms

-specialistic

-speciate

-speciation

-speciational

-speciosity

-specsartine

-spect

-spectate

-spectated

-spectating

-spectatress

-spector

-spectrality

-spectrofluorimeter

-spectrofluorimeter's

-spectrofluorimeters

-spectrofluorometer

-spectrofluorometer's

-spectrofluorometers

-spectrofluorometric

-spectrofluorometry

-spectrographic

-spectroheliogram

-spectroheliogram's

-spectroheliograms

-spectroheliograph

-spectroheliography

-spectrohelioscope

-spectrophotometrical

-spectrophotometrically

-spectroscopical

-spectroscopist

-speculum

-speechify

-speedball

-speedlight

-speedster

-speedway

-speedwell

-speel

-speir

-speiss

-speleogenesis

-speleogenetic

-spellbind

-spellbinder

-spelldown

-spelt

-spelter

-spelunker

-spelunking

-spendable

-spendthrift

-spenglerian

-spermaceti

-spermagonium

-spermary

-spermatheca

-spermathecal

-spermatial

-spermatic

-spermatid

-spermatium

-spermatocidal

-spermatocide

-spermatocyte

-spermatogenesis

-spermatogenetic

-spermatogenic

-spermatogonial

-spermatogonium

-spermatophore

-spermatophytic

-spermatozoa

-spermatozoal

-spermatozoan

-spermatozoid

-spermatozoon

-spermicidal

-spermicide

-spermidine

-spermiogenesis

-spermophile

-sperrylite

-spessartite

-sphagnous

-sphagnum

-sphalerite

-sphene

-sphenodon

-sphenodont

-sphenoid

-sphenoidal

-sphenopsid

-spheral

-sphericity

-spherometer

-spherometer's

-spherometers

-spheroplast

-spherulite

-spherulitic

-sphery

-sphincter

-sphincteral

-sphinges

-sphingid

-sphingosine

-sphygmograph

-sphygmographic

-sphygmography

-sphygmomanometer

-sphygmomanometer's

-sphygmomanometers

-sphygmomanometric

-sphygmomanometrically

-sphygmomanometry

-spicae

-spicate

-spiccato

-spiceberry

-spicery

-spicily

-spicula

-spicular

-spiculate

-spiculation

-spicule

-spiculiferous

-spiculum

-spiderweb

-spiegeleisen

-spiel

-spieler

-spiffier

-spiffy

-spikelet

-spikelike

-spikenard

-spile

-spiled

-spiles

-spiling

-spillable

-spillage

-spillage's

-spillages

-spillikin

-spillikins

-spillway

-spilosite

-spilth

-spinco

-spindly

-spindrift

-spinel

-spinelle

-spinescent

-spinet

-spinifex

-spinless

-spinneret

-spinnerette

-spinney

-spinneys

-spinodal

-spinoff

-spinor

-spinosely

-spinosity

-spinous

-spinout

-spinrad

-spinse

-spinsterhood

-spinsterish

-spinthariscope

-spinule

-spinulose

-spiracle

-spiracular

-spiraea

-spirant

-spirea

-spireme

-spirillum

-spiritism

-spiritist

-spiritistic

-spiritless

-spiritlessly

-spiritlessness

-spiritoso

-spiritous

-spiritualism

-spiritualist

-spiritualistic

-spiritualty

-spirituel

-spirituelle

-spirituous

-spirograph

-spirographic

-spirography

-spirogyra

-spirometer

-spirometer's

-spirometers

-spirometric

-spirometry

-spirt

-spirula

-spiry

-spital

-spitball

-spitted

-spitter

-spittoon

-spittoons

-splashboard

-splashdown

-splashdowns

-splashily

-splatter

-splayfoot

-splayfooted

-spleenful

-spleenwort

-spleeny

-splendent

-splendiferous

-splendiferously

-splendiferousness

-splendorous

-splendrous

-splenectomy

-splenetically

-splenic

-splenius

-splenomegaly

-splent

-spleuchan

-splore

-spluttery

-spodumene

-spoilable

-spoilsman

-spoilsport

-spoilt

-spokeshave

-spokespeople

-spokesperson

-spokesperson's

-spokeswoman

-spoliate

-spoliation

-spoliator

-spondaic

-spondee

-spondylitis

-sponson

-sponsorial

-spontoon

-spookily

-spookish

-spoondrift

-spooney

-spoonier

-spoonsful

-spoony

-spoor

-sporangial

-sporangiophore

-sporangium

-sporicidal

-sporicide

-sporiferous

-sporocarp

-sporocyst

-sporocystic

-sporogenesis

-sporogenic

-sporogenous

-sporogonic

-sporogonium

-sporogonos

-sporogony

-sporophore

-sporophyll

-sporophyte

-sporophytic

-sporopollenin

-sporotrichosis

-sporozoan

-sporozoite

-sportful

-sportfully

-sportfulness

-sportily

-sportsmanlike

-sportswoman

-sportswriting

-sporulate

-sporulation

-sporulative

-spottable

-spottily

-sprat

-spreadability

-spreadable

-sprent

-sprier

-spriest

-sprigging

-sprightful

-sprightfully

-sprightfulness

-sprigtail

-springal

-springald

-springbok

-springboks

-springe

-springily

-springtail

-springtails

-springtide

-springwood

-sprit

-spritsail

-sprucier

-sprucy

-spry

-spryer

-spryest

-spryly

-spryness

-spss

-spudded

-spudding

-spumone

-spumous

-spumy

-spunkie

-spunkier

-spunkily

-spunkiness

-spunky

-spurrey

-spurreys

-spurrier

-spurry

-spurtle

-sputa

-sputum

-spuyten

-squab

-squabs

-squadded

-squadding

-squalene

-squallier

-squally

-squama

-squamae

-squamate

-squamation

-squamosal

-squamose

-squamulose

-squaresville

-squarish

-squarishly

-squarishness

-squark

-squashberry

-squashily

-squattest

-squattier

-squatty

-squawbush

-squawroot

-squeegeeing

-squeezability

-squeezable

-squelchy

-squib

-squibs

-squidded

-squidding

-squiffed

-squiffy

-squiggle

-squiggled

-squiggles

-squiggling

-squiggly

-squilgee

-squill

-squilla

-squillae

-squills

-squinch

-squinnied

-squinny

-squinnying

-squinty

-squirarchy

-squirearchy

-squirish

-squoosh

-stabat

-stabber

-stabile

-stablemate

-stablish

-stablishment

-staddle

-stade

-stadia

-stadtholder

-stadtholderate

-stadtholdership

-stagecraft

-stagehand

-stagestruck

-stagey

-staggerbush

-staggery

-stagging

-staggy

-staghound

-stagily

-stagnancy

-stainability

-stainable

-stakeholder

-stakeout

-stalactitic

-stalagmite

-stalagmite's

-stalagmites

-stalagmitic

-stalkless

-stalky

-stallard

-stalworth

-staminal

-staminodium

-staminody

-stammel

-standardbred

-standaway

-standbys

-standee

-standeth

-standoffish

-standoffishly

-standoffishness

-standout

-standpat

-standpatter

-standpattism

-standpipe

-stang

-stanite

-stannard

-stannaries

-stannary

-stanzaic

-stapedectomy

-stapedes

-stapedial

-stapelia

-stapes

-staph

-staphylinid

-staphylococcal

-staphylococcic

-starbird

-starchily

-stardust

-starets

-starless

-starlike

-starlit

-starre

-starveling

-stases

-statable

-statant

-stateable

-statecraft

-statedly

-statehouse

-stateside

-statical

-statice

-stational

-stationarily

-statism

-statist

-stato

-statoblast

-statocyst

-statolatry

-statolith

-stator

-stators

-statoscope

-statutable

-statz

-staurolite

-staurolitic

-stavesacre

-stavropoulos

-steamroll

-steamroller

-steapsin

-stearate

-stearic

-stearin

-stearine

-steatite

-steatitic

-steatolysis

-steatopygia

-steatopygic

-steelhead

-steelie

-steelwork

-steelworker

-steelworks

-steelyard

-steenbok

-steeplechase

-steeplechaser

-steeplejack

-steerable

-steerage

-steerageway

-steersman

-steeve

-steeving

-steffens

-stegosaur

-stegosaurus

-steichen

-steinbecks

-stela

-stelae

-stelar

-stele

-stellate

-stelliform

-stellify

-stemless

-stemma

-stemmata

-stemmer

-stemmier

-stemmy

-stemson

-stemware

-stenchful

-stenchy

-steno

-stenobathic

-stenograph

-stenographic

-stenographically

-stenohaline

-stenophagous

-stenos

-stenosed

-stenosis

-stenotherm

-stenothermal

-stenothermy

-stenotic

-stenotopic

-stenotypist

-stenotypy

-stentor

-stentorian

-stentorophonic

-stephan

-stephanotis

-stepladder

-steplike

-stepparent

-steprelation

-steradian

-stercoraceous

-stere

-stereobate

-stereochemical

-stereochemically

-stereochemistry

-stereogram

-stereogram's

-stereograms

-stereograph

-stereographic

-stereographically

-stereoisomer

-stereoisomeric

-stereoisomerism

-stereoisomers

-stereological

-stereologically

-stereology

-stereometric

-stereomicroscope

-stereomicroscopic

-stereomicroscopically

-stereophonically

-stereophony

-stereophotographic

-stereophotography

-stereopsis

-stereopticon

-stereoregular

-stereoregularity

-stereoscope

-stereoscopic

-stereoscopically

-stereospecific

-stereospecifically

-stereospecificity

-stereotape

-stereotaxic

-stereotaxically

-stereotropism

-stereotypy

-steric

-sterically

-sterics

-sterigma

-sterilant

-sterios

-sterlet

-sterna

-sternforemost

-sternite

-sternmost

-sternocostal

-sternpost

-sternson

-sternutation

-sternutator

-sternutatory

-sternward

-sternwards

-sternway

-steroidal

-steroidogenesis

-steroidogenic

-sterol

-stertor

-stertorous

-stertorously

-stet

-stethoscopic

-stethoscopically

-stetted

-stettin

-stetting

-stevie

-stewpan

-stibine

-stibnite

-stichomythia

-stichomythic

-stichomythy

-stickball

-stickful

-stickhandler

-stickit

-stickseed

-sticktight

-stickum

-stickup

-stickweed

-stickwork

-sticle

-sticy

-stidger

-stiffish

-stigmal

-stigmasterol

-stigmatic

-stigmatically

-stigmatism

-stigmatist

-stilbene

-stilbestrol

-stilbite

-stillman

-stillroom

-stillwater

-stillwell

-stilly

-stime

-stimulator

-stimulators

-stingaree

-stingily

-stingless

-stingray

-stingray's

-stingrays

-stinkard

-stinkbug

-stinkbug's

-stinkbugs

-stinkhorn

-stinkpotters

-stinkstone

-stinkweed

-stinkwood

-stion

-stioning

-stipe

-stiped

-stipel

-stipellate

-stipendiary

-stipes

-stipitate

-stipites

-stipular

-stipulator

-stipulatory

-stipule

-stipuled

-stirabout

-stirk

-stirp

-stirpes

-stirps

-stitchery

-stithies

-stithy

-stoat

-stoat's

-stoats

-stockbreeder

-stockbrokerage

-stockbroking

-stockcar

-stockily

-stockinet

-stockinette

-stockish

-stockist

-stockkeeper

-stockman

-stockpot

-stockproof

-stocktaking

-stockyard

-stockynges

-stodge

-stodgily

-stodging

-stogie

-stogies

-stogy

-stoical

-stoically

-stoichiometrically

-stokehold

-stokehole

-stokesia

-stolidity

-stoll

-stollen

-stollens

-stolon

-stolonate

-stoloniferous

-stoloniferously

-stolzenbach

-stoma

-stomachache

-stomachic

-stomachically

-stomachy

-stomal

-stomas

-stomata

-stomatal

-stomate

-stomatitis

-stomatologic

-stomatological

-stomatologist

-stomatology

-stomatopod

-stomodaeal

-stomodaeum

-stomodeal

-stomodeum

-stonecrop

-stonecutting

-stonemasonry

-stonework

-stoneworker

-stoney

-stonyhearted

-stonyheartedness

-stoolie

-stoopball

-stopband

-stope

-stopes

-stoplight

-stoplights

-stopple

-stoppled

-stoppling

-storable

-storax

-storefront

-storefront's

-storefronts

-storeria

-storeship

-storewide

-storksbill

-stormily

-storybook

-storybooks

-storytelling

-storywriter

-stouthearted

-stoutheartedly

-stoutheartedness

-stoutish

-stovepipe

-stovepipes

-stowaway

-stowaway's

-stowaways

-stowe

-stowey

-strabismic

-strabismus

-strafaci

-stragglier

-straggly

-straightbred

-straightedge

-straightish

-straightjacket

-straightlaced

-strainometer

-strainometer's

-strainometers

-straitjacket

-straitlaced

-straitlacedly

-straitlacedness

-strake

-stram

-stramash

-stramonium

-stranahan

-strandline

-stranglehold

-strangury

-straphang

-straphanger

-strapless

-strappado

-strapper

-strategical

-strath

-strathspey

-strathspeys

-strati

-straticulate

-stratiform

-stratocracy

-stratocumulus

-stratus

-stravage

-stravinsky

-strawboard

-strawman

-streakier

-streakiness

-streaky

-streambed

-streamlet

-streamside

-streek

-streetwalker

-streetwalking

-strengthless

-strengthlessness

-strenuosity

-strep

-streptobacillus

-streptococcal

-streptococcic

-streptokinase

-streptolysin

-streptomyces

-streptomycete

-streptothricin

-stressless

-stresslessness

-stressor

-stretchability

-stretta

-stretti

-stretto

-strettos

-strewment

-stria

-striae

-strick

-strickle

-strickled

-strickling

-stridden

-stridence

-stridor

-stridulate

-stridulation

-stridulatory

-stridulous

-stridulously

-strifeless

-strigil

-strigose

-strikebound

-strikeless

-strikeout

-strikeover

-stringboard

-stringcourse

-stringency

-stringendo

-stringhalt

-stringhalted

-stringless

-stringpiece

-stripeless

-stripfilm

-stripier

-stripling

-strippable

-stript

-stripy

-strobila

-strobilar

-strobilation

-strobile

-strobilus

-stroboscope

-stroboscopically

-strobotron

-stroma

-stromal

-stromata

-stromatal

-stromatic

-stromatolite

-stromatolitic

-stromeyerite

-strongbox

-strongheart

-strongish

-strontia

-strontianite

-strontic

-strophanthin

-strophic

-strophoid

-stroud

-strouding

-strow

-strowing

-structuralism

-structureless

-structurelessness

-strudel

-struma

-strumae

-strumas

-strummer

-strumose

-strumpet

-strunt

-struthious

-strychninism

-stubblefield

-stubblefields

-stubbly

-stuccoes

-stuccowork

-studbook

-studbooks

-studding

-studentship

-studentships

-studhorse

-stuffily

-stuffless

-stull

-stum

-stumblebum

-stumer

-stumming

-stunner

-stunsail

-stupa

-stupe

-stupefacient

-stupefaction

-stuporous

-sturch

-sturdily

-sturley

-sturt

-stye

-styes

-stying

-styka

-stylebook

-styleless

-stylelessness

-stylet

-styliform

-stylite

-stylitic

-stylobate

-stylograph

-stylographic

-stylographical

-stylographically

-stylography

-styloid

-stylolite

-stylopodium

-stymieing

-styptic

-styrax

-suability

-suably

-suasion

-suasive

-suasively

-suasiveness

-subacid

-subacidly

-subacidness

-subacute

-subacutely

-subadar

-subadult

-subaerial

-subaerially

-subagency

-subagent

-subahdar

-subalpine

-subalternate

-subalternately

-subalternation

-subantarctic

-subapical

-subaquatic

-subaqueous

-subarctic

-subarea

-subatmospheric

-subaudible

-subaudition

-subaverage

-subbase

-subbasement

-subcabinet

-subcapsular

-subcelestial

-subcellular

-subcentral

-subcentrally

-subchaser

-subchloride

-subclavian

-subclimax

-subclinical

-subclinically

-subcollegiate

-subcommunity

-subcompact

-subcontinental

-subcontractor

-subcontraoctave

-subcontrariety

-subcontrary

-subcool

-subcordate

-subcortex

-subcortical

-subcritical

-subcrustal

-subcultural

-subcutaneous

-subcutaneously

-subdeacon

-subdeb

-subdebutante

-subdepot

-subdiaconate

-subdividable

-subdominance

-subdominant

-subedit

-subeditor

-subeditorial

-subemployed

-subemployment

-subentries

-subentry

-subepidermal

-subepidermally

-suberect

-subfamilies

-subfamily

-subfix

-subfossil

-subfreezing

-subgenus

-subglacial

-subglacially

-subglottal

-subgrade

-subgrammar

-subgross

-subhead

-subheading

-subhuman

-subhumanity

-subi

-subic

-subinfeud

-subinfeudate

-subinfeudation

-subinfeudatory

-subirrigate

-subirrigation

-subito

-subj

-subjacency

-subjacent

-subjacently

-subjectivism

-subjectivistic

-subjectless

-subjoin

-subjugator

-subjunction

-subjunctive

-subkingdom

-sublate

-sublated

-sublating

-sublation

-sublet

-sublethal

-sublethally

-sublevel

-sublicense

-sublicensed

-sublicenser

-sublicenses

-sublicensing

-sublieutenant

-sublimable

-sublimity

-sublingual

-subliterature

-sublittoral

-sublunar

-subluxation

-submandibular

-submarginal

-submarginally

-submaxilla

-submaxillary

-submediant

-submergence

-submergible

-submerse

-submersed

-submersing

-submersion

-submicrogram

-submicrogram's

-submicrograms

-submicron

-submicroscopic

-submicroscopically

-subminiature

-submiss

-submitochondrial

-submitter

-submitters

-submontane

-submucosa

-submucosal

-submucosally

-submucous

-submultiple

-subnormality

-suboceanic

-subopposite

-suboptimum

-suborbicular

-suborbital

-suborder

-suborn

-subornation

-suborned

-suborner

-suborning

-suborns

-subovate

-suboxide

-suboxides

-subpar

-subparallel

-subphylum

-subplot

-subplots

-subpolar

-subpotency

-subpotent

-subprincipal

-subprofessional

-subreption

-subreptitious

-subreptitiously

-subring

-subrogate

-subsaline

-subsatellite

-subsaturated

-subsaturation

-subsectio

-subserve

-subserviency

-subshrub

-subshrubby

-subsidence

-subsidiarily

-subsonic

-subsonically

-subspecific

-substage

-substanceless

-substandard

-substantiality

-substantival

-substantivally

-substation

-substations

-substituent

-substituents

-substitutional

-substitutionally

-substratosphere

-substratospheric

-substructural

-subsumption

-subteen

-subtemperate

-subtenancy

-subtenant

-subtend

-subterminal

-subterraneous

-subtetanic

-subthreshold

-subtile

-subtilely

-subtileness

-subtiler

-subtilest

-subtilis

-subtilisin

-subtilty

-subtonic

-subtotal

-subtropic

-subtropical

-subtropics

-subulate

-subvention

-subventionary

-subversionary

-subviral

-subvocal

-subvocally

-succedaneous

-succedaneum

-succedent

-successional

-successionally

-succinate

-succinyl

-succinylcholine

-succory

-succotash

-succuba

-succubi

-succulence

-succulent

-succulently

-suchlike

-sucrase

-sucre

-sucrose

-suctional

-suctorial

-suctorian

-sudanic

-sudatorium

-sudatory

-sudoriferous

-sudorific

-sudsier

-sudsless

-sudsy

-suede

-suet

-suey

-suff

-sufferable

-sufferableness

-sufferably

-suffixation

-suffragan

-suffragist

-suffragists

-sugarcane

-sugarcoat

-sugarhouse

-sugarloaf

-sugarplum

-sugary

-suint

-sukarno

-sukiyaki

-sulamite

-sulamith

-sulcate

-sulci

-sulcus

-sulfa

-sulfadiazine

-sulfanilamide

-sulfatase

-sulfatide

-sulfatides

-sulfhydryl

-sulfinyl

-sulfitic

-sulfonate

-sulfonation

-sulfone

-sulfonic

-sulfonium

-sulfonmethane

-sulfonyl

-sulfonylurea

-sulfoxide

-sulfureous

-sulfureously

-sulfureousness

-sulfuret

-sulfuryl

-sullage

-sulphurou

-sulphurous

-sultanate

-sultaness

-sultrily

-sulzberger

-sumach

-summa

-summability

-summable

-summae

-summated

-summates

-summating

-summational

-summerhouse

-summersault

-summerwood

-summery

-sumptuary

-sunay

-sunbath

-sunbathe

-sunbather

-sunbird

-sunbow

-sunburst

-sunbursts

-sundae

-sundaes

-sundew

-sundrops

-sunfast

-sunlamp

-sunless

-sunn

-sunna

-sunnily

-sunroof

-sunscald

-sunscreen

-sunscreen's

-sunscreening

-sunscreens

-sunstroke

-sunstruck

-sunsuit

-suntanning

-sunup

-sunward

-sunwards

-sunwise

-superable

-superableness

-superably

-superabound

-superabundance

-superabundant

-superabundantly

-superadd

-superaddition

-superagency

-superaltern

-superannuate

-superannuated

-superannuation

-superblock

-supercalender

-supercargo

-supercharge

-supercharger

-superciliary

-supercity

-superconduct

-superconducting

-superconductive

-superconductivity

-superconductor

-superconductors

-supercool

-superdominant

-superelevate

-superelevation

-supereminence

-supereminent

-supereminently

-superempirical

-superencipher

-superencipherment

-supererogation

-supererogatory

-superfamily

-superfecundation

-superfetation

-superficies

-superfine

-superfix

-superfluid

-superfluidity

-supergalaxy

-supergene

-supergiant

-superheat

-superheater

-superheats

-superheterodyne

-superhighway

-superhumanity

-superieure

-superimposable

-superimposition

-superincumbent

-superincumbently

-superindividual

-superinduce

-superinduction

-superinfection

-superintendence

-superintendency

-superjacent

-superjet

-superliner

-superluminal

-superlunar

-superman

-supernal

-supernally

-supernaturalist

-supernaturalistic

-supernormality

-supernovae

-supernumerary

-superorder

-superordinate

-superorganism

-superovulation

-superparasitism

-superpatriot

-superpatriotic

-superpatriotism

-superphosphate

-superphysical

-superpower

-superpowered

-superpowers

-supersaturate

-supersaturated

-supersaturation

-superscribe

-superscription

-supersedeas

-supersedure

-supersensible

-supersensory

-superserviceable

-supersession

-supersessive

-supersonically

-superstar

-superstratum

-supersubstantial

-supersubtle

-supersubtlety

-supersystem

-supertanker

-supertax

-supertonic

-supervenience

-supervenient

-supervention

-supervisee

-supinate

-supination

-supinator

-suppl

-supplantation

-supplejack

-suppletion

-suppletive

-suppletory

-suppliance

-suppliant

-suppliantly

-supplicant

-supplicant's

-supplicantly

-supplicants

-supplicatory

-supportability

-supportableness

-supportably

-supposably

-supposal

-suppositional

-suppositionally

-suppositious

-supposititious

-supposititiously

-supposititiousness

-suppositive

-suppositively

-suppositories

-suppository

-suppressant

-suppressibility

-suppurate

-suppuration

-suppurative

-supr

-supraglottal

-supralaryngeal

-supraliminal

-supraliminally

-supramolecular

-supranationalist

-supranationality

-supraorbital

-supraprotest

-suprarational

-suprarenal

-supravital

-supravitally

-supremum

-surah

-surbase

-surbased

-surcingle

-surcliffe

-surcoat

-surcoats

-surefire

-surefooted

-surefootedly

-surefootedness

-suretyship

-surfable

-surfboard

-surfboarder

-surfboards

-surfboat

-surfboats

-surficial

-surfperch

-surg

-surjection

-surjective

-surlily

-surmountable

-surmullet

-surpassable

-surplice

-surplusage

-surprint

-surprisal

-surra

-surrealistic

-surrealistically

-surrebutter

-surrejoinder

-surroyal

-surtout

-surveil

-survivable

-survivance

-susceptance

-susceptive

-susceptiveness

-susceptivity

-suspenseful

-suspensoid

-suspensory

-suspiration

-suspire

-suspired

-suspiring

-susquehanna

-sustentacular

-sustentation

-sustentative

-sustention

-susurrant

-susurration

-susurrous

-susurrus

-sutra

-suttee

-sutural

-suturally

-suzerain

-suzerainty

-swabber

-swabbie

-swadesh

-swage

-swagging

-swagman

-swainish

-swainishness

-swale

-swallowable

-swallowtail

-swallowwort

-swang

-swanherd

-swankily

-swannery

-swanning

-swansdown

-swanskin

-swartz

-swashbuckle

-swashbuckler

-swashbuckling

-swayback

-swaybacked

-swearword

-sweatbox

-sweatily

-sweatpants

-sweatshop

-sweatshop's

-sweatsocks

-sweazey

-sweepback

-sweepier

-sweepy

-sweetbread

-sweetbread's

-sweetbreads

-sweetbrier

-sweetmeat

-sweetshop

-sweetsop

-swellhead

-swellheaded

-swellheadedness

-swelter

-sweltered

-swidden

-swigger

-swill

-swiller

-swimmable

-swimmeret

-swimmier

-swimmily

-swimminess

-swimmy

-swinburne

-swineherd

-swingably

-swinge

-swingeing

-swingletree

-swishingly

-switchable

-switchback

-switchback's

-switchbacks

-switcheroo

-switchgrass

-switchyard

-swith

-swither

-swivet

-swoosh

-swop

-swordfight

-swordfight's

-swordfights

-swordlike

-swordsman

-swordsmanship

-swot

-swots

-swotted

-swotting

-sybarite

-sybaritically

-sybert

-sycamine

-syce

-sycee

-syconium

-sycophancy

-sycophantish

-sycophantishly

-sycophantism

-sycosis

-syenite

-syenitic

-syllabarium

-syllabary

-syllabically

-syllabicate

-syllabication

-syllabub

-syllepsis

-sylleptic

-syllogist

-syllogistically

-sylph

-sylphid

-sylphlike

-sylvanite

-sylvatic

-sylviculture

-sylvie

-sylvine

-sylvite

-sym

-symbiontic

-symbiote

-symbiotically

-symbolist

-symbolistic

-symbology

-symington

-symmetallism

-symonds

-sympathin

-sympatholytic

-sympathomimetic

-sympatric

-sympatrically

-sympatry

-sympetalous

-sympetaly

-symphonically

-symphonious

-symphoniously

-symphonist

-symphyseal

-symphysial

-symphysis

-symplectic

-sympodial

-sympodially

-symposiarch

-symposiast

-symptomatically

-symptomatologic

-symptomatological

-symptomatologically

-symptomless

-synaeresis

-synaesthesis

-synagog

-synagogal

-synalepha

-synaloepha

-synapsis

-synaptically

-synaptosomal

-synaptosome

-synarthrodial

-synarthrodially

-synarthrosis

-sync

-syncarpous

-syncarpy

-synch

-synching

-synchro

-synchroflash

-synchromesh

-synchronal

-synchroneity

-synchronic

-synchronical

-synchronically

-synchronistic

-synchros

-synchroscope

-syncing

-synclinal

-syncline

-syncopal

-syncopator

-syncope

-syncretic

-syncretism

-syncretist

-syncretistic

-syncytial

-syncytium

-syndactylism

-syndactyly

-syndesis

-syndesmosis

-syndesmotic

-syndetic

-syndetically

-syndical

-syndicalism

-syndicalist

-syndicator

-syne

-synecdoche

-synecdochic

-synecdochical

-synecdochically

-synecologic

-synecological

-synecologically

-synecology

-synectic

-synectically

-synectics

-synephrine

-syneresis

-synergetic

-synergic

-synergically

-synergid

-synergist

-synergistically

-synesis

-syngamy

-syngeneic

-synizesis

-synkaryon

-synodal

-synodic

-synodical

-synonymic

-synonymical

-synonymist

-synonymity

-synoptical

-synoptically

-synostosis

-synovial

-synovitis

-synsepalous

-synthesist

-synthetase

-synthetical

-synthetically

-syntonic

-syntonically

-syphilis

-syphilologist

-syphilology

-syren

-syringa

-syringomyelia

-syringomyelic

-syrinx

-syrinxes

-syrphid

-sysgt

-syst

-systaltic

-systat

-systematical

-systematism

-systematist

-systemically

-systemless

-systemwide

-systole

-systolic

-syzygial

-syzygy

-tabac

-tabanid

-tabard

-tabbed

-tabellen

-tabernacular

-tabes

-tabetic

-tabla

-tablature

-tableaux

-tableful

-tablespoonsful

-tableware

-tabloid

-tabor

-tabored

-taborer

-taborers

-taborin

-taboring

-taborins

-tabors

-tabu

-tace

-tacet

-tach

-tachinid

-tachism

-tachist

-tachiste

-tachistoscope

-tachistoscopic

-tachistosopically

-tachs

-tachycardia

-tachygraphic

-tachygraphical

-tachygraphy

-tachylite

-tachymeter

-tachymeter's

-tachymeters

-tachyon

-tachyon's

-tachyons

-taciturn

-taciturnity

-tackboard

-tackier

-tackies

-tackifier

-tackify

-tackily

-tacky

-tacloban

-taconite

-tactician

-tactility

-taction

-tactless

-tactlessly

-tad

-tadpole

-taeniacide

-taeniasis

-tagalong

-tagboard

-tagine

-tagines

-taiga

-tailboard

-tailbone

-tailcoat

-tailcoated

-taille

-tailless

-taillight

-taillight's

-taillights

-taillike

-tailorbird

-tailoress

-tailpiece

-tailrace

-tailspin

-tailspin's

-tailspins

-tailwater

-tailwind

-tailwind's

-tailwinds

-taintless

-taipan

-taiwanese

-takedown

-takeout

-talc

-talcose

-talcum

-talebearer

-talebearing

-talentless

-talesman

-taleysim

-tali

-talipes

-talipot

-talisman

-talismanically

-talkathon

-talladega

-tallage

-tallahatchie

-tallahoosa

-tallboy

-tallchief

-talleyrand

-tallish

-tallith

-tallithim

-tallowy

-tallyman

-talmudic

-talmudical

-talus

-tam

-tamandua

-tamarau

-tamarin

-tamarisk

-tambala

-tambour

-tambourer

-tamburitza

-tameable

-tameless

-tampala

-tamperproof

-tampion

-tanager

-tanbark

-tance

-tangelo

-tangere

-tangibility

-tanglement

-tangram

-tanh

-tanka

-tankage

-tankful

-tannage

-tannate

-tannenbaum

-tannest

-tannic

-tannish

-tansies

-tansy

-tantalate

-tantalic

-tantalite

-tantara

-tantivy

-tantra

-tantric

-tapa

-tapeline

-tapeta

-tapetum

-taphole

-tapioca

-tapis

-tapley

-tappa

-taproom

-taprooms

-tapster

-tapsters

-tara

-taraday

-tarantara

-tarantism

-taras

-taraxacum

-tarboosh

-tarbush

-tardigrade

-tardo

-tare

-targe

-targo

-tarheelia

-tarlatan

-tarmac

-tarmacadam

-tarn

-tarnishable

-taro

-tarok

-taros

-tarot

-tarpaper

-tarragon

-tarrant

-tarre

-tarriance

-tarsal

-tarsi

-tarsier

-tarsus

-tartan

-tartarughe

-tartish

-tartishly

-tartlet

-tartlets

-tartrate

-tartrated

-tartrates

-tartuffe

-taruffi

-taskmistress

-taskwork

-tasse

-tassel

-tassel's

-tasso

-tastemaker

-tastily

-tat

-tatami

-tate

-tatian

-tatler

-tatras

-tatted

-tatterdemalion

-tattersall

-tattooist

-taui

-taupe

-taurine

-taurocholate

-taurocholic

-taurog

-taussig

-tautog

-tautologous

-tautologously

-tautomer

-tautomeric

-tautomerism

-tautonym

-tautonymic

-tautonymous

-tautonymy

-taverna

-taw

-tawdrily

-tawes

-tawie

-tawpie

-taws

-tawse

-taxa

-taxability

-taxeme

-taxemic

-taxidermic

-taxidermist

-taxidermist's

-taxidermists

-taxidermy

-taxies

-taximan

-taximeter

-taximeter's

-taximeters

-taxon

-taxonomist

-taxonomist's

-taxonomists

-taxons

-taxus

-taxying

-tazza

-tchaikovsky

-teachability

-teachably

-teachership

-teacupful

-teak

-teak's

-teaks

-teapoy

-teardown

-teargas

-tearier

-tearily

-tearjerker

-tearle

-tearless

-tearlessly

-tearlessnss

-tearoom

-tearooms

-tearstain

-tearstained

-teary

-teaspoonsful

-teatime

-teatro

-teazel

-teazle

-teazled

-technetronic

-technic

-technics

-technion

-technocracy

-technocrat

-technocratic

-technol

-technologic

-technostructure

-techy

-tecta

-tectal

-tectonism

-tectum

-tecum

-ted

-tedded

-tedding

-teds

-teenie

-teenier

-teentsier

-teentsy

-teeny

-teenybopper

-teepee

-teeter

-teeterboard

-teetotal

-teetotalism

-teetotalist

-teetotum

-tegmen

-tegmental

-tegmentum

-tegument

-tegumental

-tegumentary

-teiid

-tektitic

-tel

-telamon

-telamones

-telangiectasia

-telangiectasis

-telangiectatic

-tele

-telecamera

-telecast

-telecaster

-telecourse

-teledu

-telefacsimile

-telefilm

-teleg

-telegony

-telegraphese

-telegraphically

-telegraphist

-telekinetic

-telekinetically

-teleman

-telemann

-telemark

-telemetrically

-telencephalic

-telencephalon

-teleologic

-teleologist

-teleost

-teleostean

-teleostome

-telephonically

-telephonist

-telephonists

-telephoto

-telephotographic

-teleplay

-teleran

-telescopically

-telesis

-telethermoscope

-telethon

-teletypesetting

-teletypewrite

-teletypewriter

-teletypist

-teleutospore

-teleutosporic

-teleview

-televiewer

-televisionally

-televisionary

-televisual

-telia

-telial

-telic

-telically

-teliospore

-teliosporic

-telium

-telli

-tellurian

-telluric

-telluride

-tellurite

-tellurometer

-tellurometer's

-tellurometers

-tellurous

-telly

-telocentric

-teloic

-telome

-telophase

-telos

-telotaxis

-telpher

-telson

-temblor

-temerarious

-temerariously

-temerariousness

-tempeh

-tempera

-temperable

-tempi

-templeman

-templet

-temporality

-temptable

-tempura

-tenability

-tenably

-tenace

-tenaculum

-tenantable

-tenantless

-tenantry

-tench

-tenches

-tenda

-tendance

-tendencious

-tendentious

-tendentiously

-tendentiousness

-tenderhearted

-tenderheartedly

-tenderheartedness

-tenderometer

-tenderometer's

-tenderometers

-tendinous

-tendresse

-tendril

-tendrilous

-tendrils

-tenebrific

-tenebrionid

-tenebrious

-tenebrism

-tenebrist

-tenementary

-tenenbaum

-tenesmus

-tenex

-tenia

-teniacide

-teniasis

-tennist

-tenosynovitis

-tenour

-tenpenny

-tenpin

-tenpins

-tenpounder

-tenrec

-tensility

-tensimeter

-tensimeter's

-tensimeters

-tensiometer

-tensiometer's

-tensiometers

-tensiometric

-tensiometry

-tensity

-tensometer

-tensometer's

-tensometers

-tentacular

-tentage

-tenterhook

-tenterhooks

-tentie

-tentless

-tentmaker

-tenty

-tenuis

-tenuity

-tenurial

-tenurially

-tenuto

-teocalli

-teonanacatl

-teosinte

-tepa

-tepee

-tephra

-tepidity

-ter

-terai

-teraph

-teraphim

-teratogen

-teratogenesis

-teratogenicity

-teratologic

-teratological

-teratologist

-teratoma

-teratomatous

-terce

-tercentenary

-tercentennial

-tercept

-tercet

-terebene

-terebic

-terebinth

-terebinthine

-tered

-teredines

-teredo

-terephthalate

-terest

-terete

-terga

-tergal

-tergite

-tergiversate

-tergiversation

-tergiversator

-tergum

-teriyaki

-termagant

-termagantly

-terminably

-terminational

-termined

-termining

-terminism

-termitarium

-termless

-termtime

-ternate

-ternately

-terneplate

-terpene

-terpeneless

-terpenic

-terpenoid

-terpineol

-terpolymer

-terr

-terrae

-terram

-terrane

-terraqueous

-terrarium

-terrazzo

-terrene

-terreplein

-terret

-terricolous

-terrifically

-terrigenous

-territorialism

-territorialist

-territoriality

-terrorless

-tertre

-tervalent

-tery

-tessera

-tessie

-tessitura

-testa

-testacean

-testaceous

-testacy

-testae

-testatrix

-testcross

-testis

-teston

-testoon

-testosterone

-testudo

-tetanal

-tetanic

-tetanically

-tetany

-tetartohedral

-tetched

-tetchier

-tetchy

-tete

-teter

-teth

-tetherball

-tetra

-tetrabasic

-tetrabasicity

-tetracaine

-tetrachord

-tetracid

-tetrad

-tetradecyl

-tetradic

-tetradrachm

-tetradymite

-tetradynamous

-tetraethyl

-tetraethyllead

-tetragonolobus

-tetragrammaton

-tetrahedrite

-tetrahydrate

-tetrahydrated

-tetrahydrocannabinol

-tetrahydrofuran

-tetrahydroxy

-tetrahymena

-tetralogy

-tetramer

-tetramer's

-tetrameric

-tetramerous

-tetramers

-tetrameter

-tetramethyl

-tetramethyllead

-tetraploid

-tetraploidy

-tetrapod

-tetrapyrrole

-tetrarch

-tetrarchic

-tetrarchy

-tetraspore

-tetrasporic

-tetratomic

-tetrazolium

-tetrode

-tetrodes

-tetrodotoxin

-tetrxide

-tetryl

-tetter

-tewfik

-textbookish

-textuary

-thalamencephalon

-thalamic

-thalamically

-thalamus

-thalassemia

-thalassemic

-thalassic

-thalassocracy

-thalassocrat

-thaler

-thalidomide

-thalli

-thallic

-thalloid

-thallophytic

-thallous

-thallus

-thalluses

-thames

-thane

-thaneship

-thankworthy

-thar

-thaumaturge

-thaumaturgic

-thaumaturgist

-thaumaturgy

-theast

-theat

-theatricalism

-theatricality

-theca

-thecae

-thecal

-thecate

-thecodont

-thee

-theelin

-theelol

-theist

-theist's

-theistical

-theistically

-theists

-thematically

-thenar

-thenceforward

-thenceforwards

-theobromine

-theocentric

-theocentricity

-theocentrism

-theocrat

-theocratic

-theocratical

-theocratically

-theodicy

-theodolite

-theodolitic

-theodosius

-theogonic

-theogony

-theol

-theolog

-theologic

-theologue

-theonomous

-theonomously

-theonomy

-theophanic

-theophany

-theophylline

-theorematic

-theosophical

-theosophically

-theosophist

-theosophy

-therapeusis

-therapeutically

-therapeutist

-therapsid

-thereabout

-thereat

-thereinafter

-thereinto

-thereunto

-therewithal

-theriac

-theriaca

-theriacal

-theriomorphic

-therm

-thermae

-thermalization

-thermalize

-thermalized

-thermalizes

-thermalizing

-thermic

-thermically

-thermion

-thermite

-thermite's

-thermochemical

-thermochemist

-thermochemistry

-thermocline

-thermocoagulation

-thermoduric

-thermodynamical

-thermodynamicist

-thermoelectron

-thermoelement

-thermoform

-thermoformable

-thermogram

-thermogram's

-thermograms

-thermograph

-thermographic

-thermographically

-thermography

-thermohaline

-thermojunction

-thermolabile

-thermolability

-thermoluminescence

-thermoluminescent

-thermolysis

-thermolytic

-thermomagnetic

-thermomagnetically

-thermometrically

-thermoperiodicity

-thermoperiodism

-thermophile

-thermophilic

-thermophilous

-thermoplasticity

-thermopylae

-thermoreceptor

-thermoregulation

-thermoregulator

-thermoregulatory

-thermoremanence

-thermoremanent

-thermoscope

-thermoset

-thermosphere

-thermospheric

-thermostability

-thermostatically

-thermotactic

-thermotaxis

-thermotropic

-thermotropism

-theroelectricity

-thesaural

-thetic

-thetically

-theurgic

-theurgical

-theurgist

-theurgy

-thew

-thiabendazole

-thiaminase

-thiamine

-thiazide

-thiazine

-thiazole

-thickety

-thickhead

-thickheaded

-thickset

-thievery

-thievish

-thievishly

-thievishness

-thighbone

-thigmotaxis

-thigmotropism

-thill

-thills

-thimbleberry

-thimbleful

-thimbleful's

-thimblerig

-thimblerigger

-thimblesful

-thimbleweed

-thimerosal

-thinclad

-thingamabob

-thingumajig

-thingummy

-thiocarbamide

-thiocyanic

-thioguanine

-thiol

-thiolic

-thionate

-thionic

-thiopental

-thiophene

-thiophosphate

-thiosulfate

-thiosulfuric

-thiotepa

-thiouracid

-thiourea

-thir

-thiram

-thirdhand

-thirl

-thirstily

-thirtyfold

-thistly

-thitherto

-thitherward

-thixotropic

-thixotropy

-tho

-thod

-tholdy

-thole

-tholed

-tholeiite

-tholeiitic

-tholepin

-tholer

-tholes

-tholing

-thoraces

-thoracic

-thoracically

-thoracotomy

-thorax

-thoraxes

-thoria

-thorianite

-thoric

-thorite

-thornback

-thornbush

-thornless

-thornlike

-thoroughpin

-thoroughwort

-thoth

-thoughtway

-thousandfold

-thraldom

-thralldom

-thrasonical

-thrasonically

-thraw

-thrawart

-thrawn

-thrawnly

-threadfin

-threadiness

-threadless

-threadlike

-thready

-threepence

-threepences

-threepenny

-thremmatology

-threnode

-threnodic

-threnodist

-threnody

-threonine

-thriftily

-thriftless

-thriftlessly

-thriftlessness

-thrips

-thriven

-thro

-throatily

-throatlatch

-throbber

-throe

-thrombin

-thrombocyte

-thrombocytic

-thrombocytopenia

-thrombocytopenic

-thromboembolic

-thromboembolism

-thrombokinase

-thrombophlebitis

-thromboplastic

-thromboplastically

-thromboplastin

-thrombosed

-thrombospondin

-thrombotic

-throneberry

-throstle

-throttleable

-throttlehold

-throughither

-throughother

-throughway

-throve

-throwaway

-throwster

-thrustful

-thrustfulness

-thrustor

-thudded

-thumbhole

-thumbprint

-thumbprint's

-thumbprints

-thumbscrew

-thunderbird

-thundercloud

-thundercloud's

-thunderclouds

-thunderflower

-thunderhead

-thunderpeal

-thundershower

-thundershower's

-thundershowers

-thunderstone

-thunderstrike

-thunderstroke

-thurber

-thurible

-thurifer

-thurl

-thwartwise

-thwump

-thylacine

-thylakoid

-thyme

-thyme's

-thymectomy

-thymes

-thymey

-thymic

-thymidine

-thymine

-thymocyte

-thymol

-thymus

-thymy

-thyrglobulin

-thyrocalcitonin

-thyroidectomy

-thyroiditis

-thyrotoxicosis

-thyroxin

-thyrse

-thyrsi

-thyrsus

-thysanopteran

-thysanuran

-ti

-tial

-tiality

-tian

-tiara

-tiated

-tibial

-tiburon

-tical

-ticism

-tickicide

-ticklebrush

-tickseed

-ticktack

-ticktacktoe

-ticktock

-ticonderoga

-tictac

-tiddledywinks

-tiddlywinks

-tideless

-tidemark

-tideway

-tieback

-tieck

-tieing

-tieless

-tiemannite

-tien

-tiepin

-tierce

-tiercel

-tigerish

-tigerishly

-tigerishness

-tigerlike

-tightfisted

-tightrope

-tightwad

-tightwad's

-tightwads

-tightwire

-tiglon

-tigon

-tijuana

-tike

-tiki

-til

-tilapia

-tilefish

-tillandsia

-tillerman

-tillich

-tillie

-tilly

-tiltable

-tiltmeter

-tiltmeter's

-tiltmeters

-tiltyard

-timbal

-timbale

-timberhead

-timberline

-timberman

-timberwork

-timbral

-timbrel

-timbrelled

-timekeeper

-timekeeping

-timeous

-timeously

-timepleaser

-timesaving

-timeserver

-timeservers

-timeserving

-timework

-timeworker

-timmy

-timocracy

-timocratic

-timocratical

-timorous

-timorously

-timorousness

-timpani

-timpanist

-tinamou

-tinc

-tincal

-tinct

-tinctorial

-tinctorially

-tinderbox

-tinea

-tineal

-tineau

-tinful

-ting

-tingeing

-tingen

-tingly

-tinhorn

-tinkly

-tinman

-tinnitus

-tinstone

-tintinnabulary

-tintinnabulation

-tintless

-tintoretto

-tinwork

-tinworks

-tipcart

-tipi

-tippecanoe

-tippet

-tipsily

-tipstaff

-tipstaves

-tipster

-tipstock

-tirewoman

-tisane

-tissuey

-titaness

-titania

-titanically

-titaniferous

-titanism

-titanous

-titbit

-tithable

-tithonia

-titi

-titivate

-titivation

-titlark

-titleholder

-titleholders

-titlist

-titmice

-tito

-titrant

-titratable

-titrator

-titrimetric

-titrimetrically

-tittie

-tittivate

-tittle

-tittup

-toadstool

-toastmaster

-toastmaster's

-toastmasters

-toastmistress

-tobacconist

-tobacconist's

-tobacconists

-tobies

-toboggan

-toboggan's

-tobogganer

-tobogganing

-tobogganist

-toboggans

-tocher

-tocopherol

-tocsin

-tod

-toddies

-toddy

-toddy's

-todies

-tody

-toehold

-toehold's

-toeholds

-toeing

-toeless

-toepiece

-toeplate

-toff

-toffies

-toffy

-toft

-toga

-togaed

-toggery

-togue

-toile

-toiletry

-toilette

-toilful

-toilfully

-toilworn

-toke

-tokenism

-tokonoma

-tola

-toland

-tolbooth

-tolbutamide

-tole

-tolerator

-tolidine

-toling

-tollbooth

-tollbooth's

-tollbooths

-tolley

-tollman

-tollway

-tolu

-toluate

-toluic

-toluidine

-toluol

-tolyl

-tolylene

-tombac

-tombigbee

-tombless

-tombolo

-tomboy

-tomboyish

-tomboyishness

-tomcat

-tomcod

-tomentose

-tomentum

-tomfoolery

-tommyrot

-tomogram

-tomogram's

-tomograms

-tompion

-tomtit

-tonality

-tondi

-tondo

-toneme

-tonemic

-tonetic

-tonetically

-tonetics

-tonette

-tonga

-tongueless

-tonguelike

-tonically

-tonicity

-tonio

-tonn

-tonne

-tonneau

-tonneaus

-tonner

-tonnes

-tonometer

-tonometer's

-tonometers

-tonometric

-tonometry

-tonoplast

-tonsillar

-tonsillectomy

-tonsorial

-tonsure

-tonsured

-tonsuring

-tontine

-tonus

-toolbox

-toolboxes

-toolhead

-toolholder

-toolhouse

-toolroom

-toolshed

-toom

-toomey

-toon

-toothache

-toothache's

-toothaches

-toothless

-toothlike

-tooths

-toothsome

-toothsomely

-toothsomeness

-toothwort

-topcross

-topdressing

-tope

-topee

-topes

-topflight

-topful

-topfull

-topheavy

-tophi

-tophus

-topi

-topiary

-topicality

-topkick

-topknot

-topless

-toploftical

-toploftily

-toploftiness

-toplofty

-topmast

-topminnow

-topograph

-topographer

-topoi

-topologise

-topologist

-toponym

-toponymic

-toponymical

-toponymy

-topos

-topper

-topsail

-topstitch

-topwork

-toque

-tor

-torchbearer

-torchlight

-torchon

-torchwood

-toreador

-torero

-toreutic

-toreutics

-tormentil

-tormentor

-tornadic

-tornillo

-torpidity

-torquate

-torr

-torrens

-torrential

-torrentially

-torridity

-torsade

-torsi

-torte

-tortes

-torticollis

-tortilla

-tortious

-tortiously

-tortoni

-tortricid

-tortrix

-tortuosity

-torturous

-torturously

-torula

-tosh

-tosspot

-totalism

-totaquina

-totaquine

-totemically

-totemism

-totemist

-totemistic

-totemite

-tother

-totipotency

-totipotent

-toto

-tottery

-totting

-toucan

-touchback

-touchhole

-touchline

-touchmark

-touchwood

-toughie

-toughies

-toughy

-toulouse

-toupee

-touraco

-tourbillion

-tourbillon

-touristic

-touristically

-tourmaline

-tournedos

-tourney

-tourneyed

-tourneying

-tourneys

-tourniquet

-tourniquets

-touse

-tousing

-tovarich

-tovarish

-towage

-towerlike

-towhee

-towie

-towline

-towmond

-townee

-townies

-townlet

-townley

-townsfolk

-townspeople

-townswoman

-townwear

-towny

-towpath

-towrope

-towsley

-toxaphene

-toxemia

-toxemic

-toxicant

-toxicogenic

-toxicologic

-toxicological

-toxicologically

-toxicologist

-toxicology

-toxicosis

-toxigenic

-toxigenicity

-toxoid

-toxophilite

-toxophilites

-toxophily

-toxoplasma

-toxoplasmic

-toxoplasmosis

-toylike

-toynbee

-toyon

-trabeate

-trabeated

-trabeation

-trabecula

-trabecular

-trabeculate

-traceability

-traceably

-tracheae

-tracheal

-tracheary

-tracheate

-tracheated

-tracheid

-tracheidal

-tracheitis

-tracheobronchial

-tracheolar

-tracheole

-tracheophyte

-tracheotomy

-trachoma

-trachomatous

-trachyte

-trachytic

-tracklayer

-tracklaying

-trackman

-trackside

-trackwalker

-tractableness

-tractably

-tractarians

-tractate

-tractional

-tradable

-tradeable

-tradescantia

-tradespeople

-tradevman

-traditionary

-traditionless

-tradtionalist

-traduce

-traduced

-traducement

-traducer

-traducing

-trafficable

-tragacanth

-tragedienne

-tragi

-tragical

-tragicomedy

-tragicomical

-tragopan

-tragus

-trailblazer

-trailblazer's

-trailblazers

-trailblazing

-trailbreaker

-trailerable

-trailerist

-trailerite

-trailership

-trailhead

-trailhead's

-trailheads

-trailless

-trainability

-trainable

-trainband

-trainbearer

-traineeship

-trainferry

-trainful

-trainload

-trainload's

-trainloads

-trainsick

-traitoress

-traitress

-traject

-trajection

-tral

-tramcar

-tramline

-tramming

-tramontane

-trampoline

-trampoliner

-trampolining

-trampolinist

-tramroad

-trancelike

-trangam

-transactinide

-transactional

-transactor

-transamination

-transaxle

-transcendency

-transcendentalist

-transcriptional

-transcriptionally

-transcutaneous

-transduced

-transducing

-transductional

-transection

-transeptal

-transferase

-transferential

-transfiguration

-transfigure

-transfixion

-transformant

-transformants

-transformationalist

-transformative

-transfusible

-transfusional

-transglottal

-tranship

-transhumance

-transhumant

-transilluminate

-transillumination

-transilluminator

-transitio

-transitorily

-translatory

-translocate

-translocation

-transmarine

-transmembrane

-transmigrate

-transmigration

-transmigrator

-transmigratory

-transmissibility

-transmissive

-transmissivity

-transmissometer

-transmissometer's

-transmissometers

-transmontane

-transmountain

-transmutable

-transmutative

-transnational

-transnatural

-transonic

-transparence

-transpersonal

-transpicuous

-transpierce

-transplacental

-transplacentally

-transplantability

-transpolar

-transponder

-transpontine

-transportational

-transpositional

-transsexual

-transsexualism

-transshape

-transthoracic

-transthoracically

-transubstantial

-transubstantiate

-transubstantiation

-transudate

-transudation

-transude

-transuded

-transuding

-transuranic

-transuranium

-transvaluate

-transvaluation

-transvalue

-transvestism

-transylvania

-trapeze

-trapezist

-trapezius

-trapezohedron

-trapnest

-traprock

-trapshooter

-trapshooting

-trapunto

-trashman

-trass

-trattoria

-traumata

-traumatically

-traumatism

-trave

-travois

-travoises

-trawlerman

-trayal

-trayful

-treacle

-treacly

-treadless

-treadwell

-treasonably

-treasurable

-treasurership

-treatability

-treatable

-trebly

-trebuchet

-trebucket

-trecento

-tred

-tredecillion

-treece

-treehopper

-treeing

-treeless

-treenail

-trehalase

-trehalose

-treillage

-trekker

-trelliswork

-trematode

-tremolant

-tremolite

-tremolitic

-tremolo

-tremulant

-trenail

-trenchancy

-trendily

-trepan

-trepanation

-trepang

-trepanned

-trepanning

-trepans

-trephination

-trephine

-trephined

-trephining

-trepid

-trepidant

-treponema

-treponemal

-treponematosis

-treponematous

-treponeme

-tressel

-trestletree

-trestlework

-trews

-trey

-treys

-tri

-triacetate

-triacid

-triadically

-triage

-trialogue

-triangularity

-triarchy

-triaxial

-triaxiality

-triazine

-triazines

-trib

-tribalism

-tribasic

-triboelectric

-triboelectricity

-tribological

-tribologist

-tribology

-triboluminescence

-triboluminescent

-tribophysics

-tribrach

-tribrachic

-tribromide

-tribunate

-tribuneship

-tricarboxylic

-tricarpellary

-tricarpellate

-trice

-triceps

-tricepses

-triceratops

-trichiasis

-trichina

-trichinal

-trichinosis

-trichinous

-trichite

-trichlorfon

-trichloride

-trichocyst

-trichocystic

-trichogyne

-trichoid

-trichome

-trichomic

-trichomonacidal

-trichomonacide

-trichomonad

-trichomonadal

-trichomonal

-trichomoniasis

-trichopteran

-trichotomous

-trichotomously

-trichromat

-trichromatism

-trichrome

-trichuriasis

-tricing

-trickily

-trickish

-trickishly

-trickishness

-tricksier

-tricksiness

-tricksy

-triclad

-triclinic

-triclinium

-tricolette

-tricorn

-tricorne

-tricornered

-tricot

-tricotine

-tricotyledonous

-trictrac

-tricuspid

-tricycle

-tricycles

-tricyclic

-tridimensional

-tridimensionality

-triduum

-triene

-triennium

-trierarch

-trierarchy

-triethyl

-trifacial

-trifid

-trifluralin

-trifocal

-trifoliate

-trifoliolate

-trifolium

-triforium

-triform

-trifurcate

-trifurcation

-trigeminal

-triggerfish

-triggerman

-trigging

-triglyceride

-triglycerides

-triglyph

-triglyphic

-triglyphical

-trigon

-trigonometrical

-trigonometrically

-trigonous

-trigraph

-trigraphic

-trihybrid

-trihydroxy

-triiodothyronine

-trijet

-trilateral

-trilaterality

-trilaterally

-trilbies

-trilby

-trilinear

-trilingual

-trilingually

-triliteral

-triliteralism

-trillium

-trilobate

-trilobation

-trilobed

-trilocular

-triloculate

-trimaran

-trimble

-trimeric

-trimerous

-trimestral

-trimestrial

-trimeter

-trimetrogon

-trimonthly

-trimorph

-trimorphic

-trimorphism

-trimorphous

-trimotor

-trinal

-trinary

-trindle

-trindled

-trindling

-trine

-trinitrotoluene

-trinketry

-trinkums

-trinocular

-trinomial

-trinucleotide

-triol

-triolet

-triose

-tripack

-triphammer

-triphammer's

-triphammers

-triphenylmethane

-triphibian

-triphibious

-triphosphate

-triphthong

-triphthongal

-tripinnate

-tripinnately

-triplane

-tripletail

-triplicity

-triplite

-triploblastic

-triploid

-triploidy

-tripodal

-tripos

-tripper

-trippet

-triptane

-triquetrous

-triradiate

-trireme

-tris

-trisaccharide

-trisect

-trisection

-trisector

-triskele

-triskelion

-trismus

-trisoctahedron

-trisome

-trisomic

-trisomy

-triste

-tristearin

-tristeza

-tristful

-tristfully

-tristfulness

-tristimulus

-trisubstituted

-trisulfide

-trisyllabic

-trisyllabicall

-trit

-tritheism

-tritheist

-tritheistic

-tritheistical

-trithing

-tritiated

-triticale

-tritoma

-tritone

-triturable

-triturate

-trituration

-triturator

-triumvir

-triumviral

-triumvirate

-trivalve

-trivet

-triweekly

-trochaic

-trochal

-trochanter

-trochanteral

-trochanteric

-trochar

-troche

-trochee

-trochilus

-trochlea

-trochlear

-trochoid

-trochoidal

-trochophore

-troglodytic

-trogon

-trograd

-troilite

-trolleybus

-trollied

-trollies

-trolly

-trombidiasis

-trommel

-tromp

-trona

-trone

-troostite

-trop

-tropaeolum

-trope

-tropez

-trophallaxis

-trophically

-trophoblast

-trophoblastic

-trophozoite

-tropidoclonion

-tropistic

-tropologic

-tropological

-tropologically

-tropology

-tropomyosin

-tropopause

-tropophilous

-troposphere

-tropotaxis

-troth

-trothplight

-trotline

-trotsky

-trotskyism

-troubadour

-troubadour's

-troubadours

-troubleshot

-troublous

-troublously

-troublousness

-troupial

-trousseau

-trousseaus

-trousseaux

-troutier

-trouty

-trove

-trover

-trow

-truantry

-truckage

-truckee

-truckle

-truckled

-truckler

-truckline

-truckling

-truckload

-truckload's

-truckloads

-truckman

-truckmaster

-truculency

-trueborn

-truehearted

-trueheartedness

-trueing

-truelove

-truepenny

-truffle

-truffle's

-truffled

-truffles

-truistic

-trujillo

-trull

-trumpetlike

-trumpetweed

-truncheon

-truncheons

-trunkfish

-trunkful

-trunnel

-trunnion

-trunnions

-trustability

-trustable

-trustbuster

-trusteeing

-trustless

-trustworthily

-tryout

-trypanosome

-trypanosomiasis

-tryparsamide

-trypsinogen

-tryptamine

-tryptic

-tryptophan

-tryptophane

-trysail

-tryst

-trytophan

-tryworks

-tset

-tsetse

-tsetses

-tsunamic

-tsunematsu

-tubal

-tubbable

-tubbed

-tubber

-tubbier

-tubbing

-tubby

-tubeless

-tubelike

-tubercle

-tubercled

-tubercular

-tubercularly

-tuberculate

-tuberculated

-tuberculation

-tuberculin

-tuberculoid

-tuberculous

-tuberculously

-tuberose

-tuberosity

-tuberous

-tubful

-tubifex

-tubifexes

-tubificid

-tubocurarine

-tubularity

-tubulous

-tuchun

-tuckahoe

-tucket

-tuebor

-tuel

-tufa

-tufaceous

-tuff

-tuffaceous

-tuffet

-tufty

-tugboat

-tugger

-tui

-tuille

-tuitional

-tularemic

-tulation

-tulatory

-tule

-tulipwood

-tullibee

-tumblebug

-tumbledown

-tumblerful

-tumbleweed

-tumbrel

-tumbril

-tumefaciens

-tumefaction

-tumefactive

-tumescence

-tumescent

-tumidity

-tumoral

-tumorigenic

-tumorigenicity

-tumorlike

-tumorlike's

-tumorlikes

-tumorous

-tump

-tumpline

-tumultuary

-tumulus

-tunability

-tunably

-tundish

-tuneable

-tuneless

-tunesmith

-tungstic

-tungstite

-tunica

-tunicae

-tunicate

-tunicated

-tunicle

-tunnellike

-tunny

-tup

-tuppence

-tupping

-tuque

-tural

-turbanned

-turbellarian

-turbid

-turbidimeter

-turbidimeter's

-turbidimeters

-turbidimetric

-turbidimetrically

-turbidimetry

-turbidite

-turbidity

-turbidly

-turbidness

-turbinal

-turbit

-turbjet

-turbo

-turbocar

-turbocharge

-turbocharger

-turboelectric

-turboprop

-turbos

-turboshaft

-turbosupercharged

-turbosupercharger

-turbot

-turbots

-turbulency

-turd

-ture

-tured

-tureen

-turfman

-turfski

-turfskiing

-turfy

-turgescence

-turgescent

-turgidity

-turgor

-turion

-turmeric

-turnbuckle

-turncoat

-turndown

-turnery

-turnsole

-turnspit

-turnstile

-turnup

-turnverein

-turpentinic

-turpentinous

-turps

-turquois

-turtledove

-turtlehead

-turves

-tusche

-tush

-tusklike

-tussah

-tussive

-tussock

-tussocks

-tussocky

-tussore

-tutee

-tutees

-tutelar

-tutelary

-tutorage

-tutoress

-tutorship

-tutoyer

-tutti

-tux

-tuyere

-twae

-twangy

-tween

-tweet

-tweeter

-twelvefold

-twelvemonth

-twentyfold

-twerp

-twiggy

-twilit

-twinberry

-twinborn

-twinflower

-twingeing

-twinkly

-twinship

-twiny

-twirp

-twitchily

-twitted

-twittery

-twixt

-twofer

-twohandedness

-twopence

-twopences

-twopenny

-tyke

-tyke's

-tykes

-tymbal

-tympan

-tympani

-tympani's

-tympanic

-tympanis

-tympanites

-tympanitic

-tympanum

-tympanum's

-tympany

-typal

-typeable

-typecase

-typecast

-typefounder

-typefounding

-typefoundry

-typeout

-typey

-typhlosole

-typic

-typier

-typograph

-typologist

-typy

-tyramine

-tyrannosaur

-tyrannosaurus

-tyrannous

-tyrannously

-tyro

-tyrocidin

-tyrocidine

-tyros

-tyrosinase

-tyrothricin

-tzaddik

-tzaddikim

-tzar

-tzigane

-tzimmes

-tzitzis

-udall

-udder

-uglification

-uglify

-uglily

-ukulele

-ulama

-ulcerogenic

-ulcerous

-uldered

-ulema

-ulexite

-ullage

-ulna

-ulna's

-ulnar

-ulotrichous

-ulotrichy

-ultima

-ultimacy

-ultimo

-ultimogeniture

-ultrabasic

-ultracentrifugal

-ultrafashionable

-ultrafiche

-ultrafilter

-ultrafiltration

-ultrahigh

-ultraism

-ultraist

-ultraistic

-ultramafic

-ultramicro

-ultramicroscope

-ultramicroscopes

-ultramicrotome

-ultramicrotomes

-ultramicrotomy

-ultramodernist

-ultramontane

-ultramontanism

-ultranationalism

-ultranationalist

-ultrapure

-ultrapurely

-ultrasecret

-ultrasonicate

-ultrasonicated

-ultrasonicates

-ultrasonicating

-ultrastructural

-ultrastructurally

-ululant

-ululate

-ululation

-ulva

-umbel

-umbellate

-umbellifer

-umbelliferous

-umbilicate

-umbilicated

-umbilication

-umbonate

-umbones

-umbos

-umbrae

-umbrageous

-umbrageously

-umbrageousness

-umbral

-umlaut

-ump

-umpirage

-umpteen

-umpteenth

-un

-unaccountability

-unadapted

-unageing

-unalterability

-unamazed

-unamusing

-unanchor

-unanswerably

-unapologetic

-unappealable

-unappreciation

-unapproachably

-unarm

-unassailability

-unassailably

-unassertive

-unassuageable

-unattach

-unaverage

-unballasted

-unbandage

-unbar

-unbeautiful

-unbecome

-unbeknown

-unbelief

-unbeliever

-unbeseeming

-unbiblical

-unbid

-unbitted

-unblenched

-unblessed

-unbolt

-unbosom

-unbox

-unbrace

-unbraid

-unbridle

-unbroke

-unbuckle

-unbudgeable

-unbudgeably

-unbuild

-unbundle

-unburden

-uncage

-uncalculated

-uncalculatingly

-uncandid

-uncannily

-uncelebrated

-unchain

-unchallengeable

-unchancy

-unchangealeness

-uncharge

-unchaste

-unchastely

-unchasteness

-unchivalrous

-unchoke

-uncial

-uncially

-unciform

-uncil

-uncinaria

-uncinariasis

-uncinate

-uncinus

-uncircumcision

-unclamp

-unclasp

-unclassical

-unclench

-unclimbable

-unclimbableness

-unclinch

-uncloak

-unclog

-unclose

-unclothe

-unclutter

-uncock

-uncoffin

-uncoffined

-uncoil

-uncommercial

-uncompassionate

-uncompetitive

-uncompetitiveness

-uncomplicated

-uncompromisable

-unconformable

-unconformably

-uncongenial

-unconquerably

-unconscionability

-unconscionably

-unconstraint

-uncork

-uncorseted

-uncouple

-uncoupler

-uncross

-uncrown

-uncrumple

-unctuous

-unctuously

-unctuousness

-uncurl

-uncus

-uncut

-undauntable

-undebatably

-undecagon

-undeceive

-undecillion

-underact

-underactivity

-underage

-underbid

-underbidder

-underbody

-underbred

-underbrim

-undercarriage

-undercharge

-underclass

-undercoat

-undercoating

-undercook

-undercool

-underdo

-underdrawers

-underdress

-underdressed

-undereducation

-underexpose

-underexposure

-underfeed

-undergarment

-undergird

-underglaze

-underhand

-underinsurance

-underlaid

-underlayment

-underlet

-underlip

-undermanned

-undermost

-undernourished

-undernourishment

-undernutrition

-underpants

-underpart

-underpass

-underpasses

-underpin

-underplot

-underplots

-underpowered

-underproduction

-underproductive

-underproof

-underreport

-underripe

-underrun

-undersaturated

-undersecretariat

-undersell

-undersexed

-undershorts

-undershrub

-undersigned

-underskirt

-underslung

-undersong

-underspin

-understaffed

-understeer

-understory

-understrapper

-understrength

-undersupply

-undersurface

-undertenant

-undertone

-undertrick

-underused

-undervaluation

-undervalue

-undervaluing

-underwaist

-underweight

-underwing

-underwool

-undetectability

-undine

-undiplomatically

-undock

-undogmatic

-undouble

-undramatic

-undrape

-undraw

-undrunk

-undulant

-undulatory

-une

-unequivocably

-unexceptionable

-unexceptionableness

-unexceptionably

-unexceptional

-unexpressive

-unfancy

-unfasten

-unfeeling

-unfeelingly

-unfeelingness

-unfetter

-unfix

-unfixable

-unflappability

-unflappable

-unforgettability

-unforgiveable

-unforgiveably

-unfreeze

-unfriended

-unfrock

-unfussy

-ungenerosity

-ungenerous

-ungird

-unglue

-ungovernable

-ungrudging

-ungual

-unguard

-unguent

-ungulate

-unhair

-unhandiness

-unhandsome

-unhandy

-unharness

-unhitch

-unhitches

-unhitching

-unhood

-unhorse

-unhorsed

-unialgal

-uniaxial

-uniaxially

-unibuss

-unicameral

-unicamerally

-unicellular

-unicellularity

-unicycle

-unicyclist

-unifactorial

-unifiable

-unifoliate

-unifoliolate

-uniformitarian

-uniformitarianism

-unijugate

-unilinear

-unilingual

-unillusioned

-unilocular

-uninformative

-unintelligence

-uninucleate

-uninvaginated

-unionism

-unionist

-unionists

-uniparental

-uniparentally

-uniparous

-uniplanar

-uniplex

-unipolarity

-uniramous

-unisex

-unisexual

-unisexuality

-unisexually

-unitage

-unital

-unitarily

-unitarity

-universalist

-univocal

-univocally

-unkenned

-unkennel

-unlace

-unlade

-unlash

-unlatch

-unlay

-unlimber

-unlimbered

-unlimbering

-unlive

-unloose

-unloosen

-unman

-unmate

-unmating

-unmeaning

-unmeet

-unmemorable

-unmemorably

-unmitigatd

-unmoor

-unmoral

-unmorality

-unmuffle

-unmuzzle

-unmyelinated

-unnail

-uno

-unopenable

-unpackage

-unpackaging

-unpalatable

-unpeg

-unpeople

-unperfect

-unperson

-unpick

-unpile

-unpin

-unplug

-unpolitical

-unpregnant

-unprofessed

-unpronounced

-unquote

-unreel

-unreeve

-unregenerate

-unreserve

-unrestraint

-unriddle

-unrig

-unrip

-unrobe

-unroof

-unroot

-unrotate

-unround

-unrounded

-unsaddle

-unsafety

-unsaturate

-unsay

-unsayable

-unseal

-unsealing

-unseam

-unsearchable

-unsearchably

-unsel

-unselective

-unserviceable

-unset

-unsettle

-unsettlement

-unsew

-unsex

-unshackle

-unshapen

-unshell

-unshift

-unship

-unshockability

-unshockable

-unshped

-unsight

-unsighted

-unsling

-unslinged

-unslinging

-unsnarl

-unspeak

-unspeakably

-unsphere

-unsportsmanlike

-unstate

-unstep

-unstick

-unstop

-unstoppably

-unstrap

-unstring

-unstudied

-unsubstantial

-unsubstantiality

-unsuccess

-unswathe

-unswear

-unsymmetrical

-untangle

-untenability

-unter

-untether

-unthaw

-unthink

-unthinkability

-unthought

-unthread

-unthrone

-untimeous

-untouchability

-untraceability

-untread

-untruss

-untuck

-untune

-untwine

-untwist

-unutterable

-unvocal

-unvoice

-unwarrantably

-unweave

-unweeting

-unweetingly

-unweight

-unwell

-unwieldily

-unwinnable

-unwisdom

-unwish

-unwished

-unworthily

-unwreathe

-unyoke

-unzio

-unzip

-upas

-upbuild

-upbuilder

-upcast

-upchuck

-updo

-updos

-upgrowth

-upheave

-upheaver

-uphoster

-upmanship

-upmost

-upperpart

-upping

-uppish

-uppishly

-uppishness

-uppity

-uppityness

-uprear

-uprush

-upsetter

-upshift

-upspring

-upstage

-upstaged

-upstages

-upstaging

-upstart

-upstroke

-upsweep

-upswept

-upthrow

-upthrust

-uptight

-uptightness

-uptilt

-upwell

-uracil

-uraei

-uraemia

-uraeus

-uralite

-uralitic

-uranic

-uranide

-uraninite

-uranographic

-uranographical

-uranography

-uranological

-uranology

-uranometry

-uranous

-urate

-uratic

-urbanist

-urbanistic

-urbanistically

-urbanity

-urbanologist

-urbanology

-urbiculture

-urceolate

-ure

-urease

-uredinial

-uredinium

-urediospore

-uredium

-uredostage

-ureide

-uremic

-ureotelic

-ureotelism

-ureter

-ureteral

-ureteric

-urethan

-urethral

-urethritis

-urethroscope

-uric

-uricosuric

-uricotelic

-uricotelism

-uridine

-urinalysis

-urinogenital

-urinometer

-urinometer's

-urinometers

-urinous

-urochord

-urochordal

-urochordate

-urochrome

-urodele

-urogenital

-urokinase

-urol

-urolith

-urolithiasis

-urologic

-urological

-urologist

-urology

-uropod

-uropygial

-uropygium

-urostyle

-ursine

-urticaria

-urticarial

-urticate

-urtication

-urus

-urushiol

-usableness

-usance

-useably

-usernames

-useway

-usherette

-usnea

-usrio

-usufruct

-usufructuary

-ute

-uteca

-utep

-uterus

-uteruses

-utilitarianism

-utiny

-utopism

-utopist

-utopistic

-utricle

-utricular

-utricularia

-utriculus

-utterable

-uttium

-uvarovite

-uvea

-uveal

-uveitis

-uvula

-uvular

-uvularly

-uxorial

-uxoricide

-uxorious

-uxoriously

-uxoriousness

-vacationist

-vacationless

-vaccinal

-vaccinate

-vaccinated

-vaccinates

-vaccinator

-vaccinators

-vacua

-vacuolar

-vagabondage

-vagabondish

-vagabondism

-vagally

-vagarious

-vagariously

-vagile

-vagility

-vagotomy

-vagotonic

-vagotropic

-vagrancy

-vainglory

-valediction

-valerian

-valetudinarian

-valetudinarianism

-valetudinary

-valiance

-valiancy

-valine

-valise

-valises

-valle

-vallecular

-valorous

-valorously

-valuational

-valuationally

-valvular

-vamoose

-vamoosed

-vamooses

-vamoosing

-vampirism

-vampish

-vandalistic

-vanderburgh

-vandyked

-vanguardism

-vanguardist

-vanillic

-vanillin

-vanquishable

-vanquishment

-vanward

-vapid

-vapidity

-vapidly

-vapidness

-vaporous

-vaporously

-vaporousness

-vaquero

-variac

-variational

-variationally

-varices

-varicose

-varicosed

-varicosity

-variegator

-varietal

-varietally

-variform

-variocoupler

-varioloid

-variolous

-variometer

-variometer's

-variometers

-variorum

-varisized

-varix

-varlet

-varletry

-varnishy

-varsity

-varus

-varve

-varved

-vasal

-vascularity

-vasculature

-vasculum

-vaselike

-vasiform

-vasoactive

-vasoactivity

-vasoconstriction

-vasoconstrictive

-vasoconstrictor

-vasodilatation

-vasodilation

-vasodilator

-vasomotor

-vasopressin

-vasopressor

-vasospasm

-vasospastic

-vasotocin

-vassalage

-vastitude

-vastity

-vasty

-vatic

-vaticinal

-vaticinate

-vaticination

-vaticinator

-vatted

-vatting

-vaudevillian

-vaulty

-vauntful

-vauntingly

-vaunty

-vaward

-vealy

-vectograph

-vectographic

-vectorcardiogram

-vectorcardiogram's

-vectorcardiograms

-vectorcardiographic

-vectorcardiography

-vee

-veep

-veeries

-veery

-vegetably

-vegetal

-vegetarianism

-vegetational

-vegetationally

-vegete

-vegetive

-veinal

-veinlet

-veiny

-velamen

-velamentous

-velamina

-velarium

-veld

-velitation

-velleity

-veloce

-velocimeter

-velocimeter's

-velocimeters

-velocipede

-velodrome

-velopment

-velure

-velutinous

-velveteen

-venae

-venality

-venatic

-venation

-venational

-vendable

-vendace

-vendaces

-vendee

-vendibility

-vendibly

-vendition

-vendue

-veneeal

-venenate

-venenation

-venerability

-venerably

-venerator

-venereological

-venereologist

-venereology

-venerology

-venery

-venesection

-venetian

-venge

-venging

-venin

-venipuncture

-venire

-venireman

-venisection

-venography

-ventage

-ventail

-ventilatory

-ventless

-ventricose

-ventricular

-ventriculus

-ventriloquial

-ventriloquially

-ventriloquism

-ventriloquist

-ventriloquist's

-ventriloquistic

-ventriloquists

-ventriloquy

-ventrolateral

-ventrolaterally

-ventromedial

-ventura

-venturous

-venturously

-venturousness

-venule

-veratrine

-veratrum

-verbalism

-verbalist

-verbalistic

-verbena

-verbenas

-verbicide

-verbid

-verbify

-verbigeration

-verbile

-verdancy

-verderor

-verdigris

-verdin

-verdurous

-verdurousness

-vergil

-veridic

-veridicality

-verisimilar

-verisimilarly

-verisimilitudinous

-verism

-verismo

-verist

-veristic

-veritably

-verjuice

-vermeil

-vermian

-vermicelli

-vermicide

-vermicular

-vermiculate

-vermiculated

-vermiculation

-vermiform

-vermifuge

-vermillion

-verminosis

-verminous

-verminously

-vern

-vernacle

-vernacularism

-vernation

-vernicle

-vernissage

-versal

-verseman

-verset

-versicle

-versicular

-versification

-versifier

-versify

-versine

-versional

-verso

-versos

-verticality

-verticil

-verticillte

-vertiginous

-vertiginously

-vesical

-vesicant

-vesicate

-vesication

-vesicularity

-vesiculate

-vesiculation

-vesperal

-vespertinal

-vespertine

-vespiary

-vespid

-vespine

-vesta

-vestee

-vestiary

-vestibular

-vestlike

-vestment

-vestmental

-vestryman

-vesuvian

-vesuvianite

-vetchling

-vetted

-vexillary

-vexillologic

-vexillological

-vexillologist

-vexillology

-vexillum

-viand

-viands

-viaticum

-vibist

-vibraharp

-vibraharpist

-vibrance

-vibraphone

-vibraphonist

-vibratile

-vibratility

-vibrational

-vibrationless

-vibrator

-vibratory

-vibrion

-vibriosis

-vibrissa

-vibrissae

-viburnum

-vic

-vicarage

-vicarate

-vicarial

-vicariate

-vicarship

-vicegerency

-vicegerent

-vicennial

-viceregal

-viceregally

-vicereine

-viceroyalty

-viceroyship

-vichyssoise

-vicinage

-vicinal

-vicissitudinous

-vickers

-victress

-vicuna

-vidal

-vide

-videophone

-vidette

-vidicon

-viduity

-viewfinder

-viewfinder's

-viewfinders

-viewy

-vigesimal

-vigintillion

-vignettist

-vigorish

-vigorist

-vigorist's

-vigorists

-vigoroso

-vilipend

-villadom

-villagery

-villainess

-villanella

-villanelle

-villatic

-villein

-villenage

-villi

-villiform

-villosity

-villus

-vim

-vimen

-vinaceous

-vinaigrette

-vinal

-vinblastine

-vinca

-vincible

-vincristine

-vinculum

-vindicable

-vindicator

-vindicators

-vindicatory

-vineal

-vinedresser

-vinedressers

-vinegarish

-vinegarroon

-vinegary

-vinery

-vineyardist

-vinic

-viniculture

-vinier

-viniferous

-vinification

-vino

-vinosity

-vinous

-vinously

-viny

-vinylic

-vinylidene

-viol

-violability

-violable

-violableness

-violably

-violaceous

-violaceously

-violist

-viomycin

-viosterol

-viperine

-viperish

-viperous

-viperously

-viraginous

-virago

-virelay

-viremia

-viremic

-vireo

-vires

-virescence

-virescent

-virga

-virgate

-virginium

-virgulate

-viricidal

-viricide

-virid

-viridescent

-viridian

-viridity

-virilism

-virion

-virologic

-virological

-virologically

-virologist

-virology

-viroses

-virosis

-virtuality

-virtueless

-virtuosa

-virtuosic

-virucidal

-virucide

-virulency

-viruliferous

-virustatic

-viscacha

-viscerogenic

-visceromotor

-viscidity

-viscometric

-viscometry

-viscose

-viscosimeter

-viscosimeter's

-viscosimeters

-viscosimetric

-viscountcy

-viscountess

-viscounty

-viscus

-visional

-visionally

-visionless

-visitable

-visitant

-visitational

-visitatorial

-visorless

-vitalism

-vitalist

-vitalistic

-vitamer

-vitameric

-vitellin

-vitelline

-vitellogenesis

-vitellus

-vitiator

-viticultural

-viticulture

-viticulturist

-vitiligo

-vitiosity

-vitite

-vitrifiable

-vitrine

-vittae

-vittate

-vittles

-vituperate

-vituperation

-vituperator

-vituperatory

-vitus

-vivarium

-viverrid

-vivific

-viviparity

-viviparous

-viviparously

-viviparousness

-vivisect

-vivisection

-vivisectional

-vivisectionally

-vivisectionist

-vivisector

-vixenish

-vixenishly

-vixenishness

-vizard

-vizierate

-vizierial

-viziership

-vizor

-vms

-vocabular

-vocalically

-vocality

-vocationalism

-vocationalist

-vociferant

-vociferate

-vociferation

-vociferator

-voguish

-voguishness

-voicedness

-voiceful

-voicefulness

-voiceprint

-voidable

-voidableness

-voidance

-voile

-volant

-volante

-volcanically

-volcanicity

-volcanoes

-volcanologic

-volcanological

-volcanologist

-volcanology

-vole

-voles

-volitive

-volkslied

-volkslieder

-volplane

-volplaned

-volplaning

-voltameter

-voltameter's

-voltameters

-voltametric

-volubility

-volubly

-volumeter

-volumeter's

-volumeters

-voluminosity

-voluntarism

-voluntarist

-voluntaristic

-voluntaryism

-voluntaryist

-volunteerism

-voluptuary

-volute

-voluted

-volutin

-volution

-volva

-volvement

-volvox

-vomerine

-vomitory

-vomiturition

-vomitus

-von

-voodooism

-voodooist

-voodooistic

-vored

-vortical

-vortically

-vorticella

-vorticism

-vorticist

-vorticose

-vortiginous

-votaress

-votarist

-voteless

-votress

-vouchee

-vouchsafement

-voussoir

-voyageur

-voyageurs

-voyeur

-voyeurism

-voyeuristic

-voyeuristically

-voyeurs

-vroom

-vs

-vulcanian

-vulcanicity

-vulcanologist

-vulcanology

-vulgarian

-vulgarism

-vulgarity

-vulgate

-vulgus

-vulnerably

-vulnerary

-vulterine

-vulturine

-vulturous

-vulva

-vulvae

-vulval

-vulvar

-vulviform

-vulvitis

-wackily

-wadable

-wadder

-waddie

-waddied

-waddies

-wadding

-waddy

-waddying

-wadeable

-wadi

-waftage

-wafture

-wageless

-wageworker

-wagger

-waggery

-waggly

-wagoneer

-wagoneer's

-wagoneers

-wagonette

-wagonette's

-wagonettes

-wagonload

-wagonload's

-wagonloads

-wah

-wahine

-wahoo

-wahoos

-waif

-wailful

-wailfully

-wain

-wained

-wainscotting

-waistband

-wakeless

-wakerobin

-walkabout

-walkaway

-walkingstick

-walkout

-wallaroo

-wallenstein

-walleye

-walleyed

-wallflower

-wamble

-wambled

-wambling

-wampum

-wanderlust

-waney

-wanier

-wanner

-wannest

-wanning

-wansee

-wansley

-wany

-warbonnet

-wardenship

-wardership

-wardress

-wardship

-warehousemen

-wareroom

-warlock

-warlord

-warlordism

-warlords

-warpage

-warpath

-warplane

-warplane's

-warplanes

-warrantable

-warrantableness

-warrantably

-warrantee

-warrantees

-warrantless

-warrantor

-warrantors

-washability

-washable

-washcloth

-washerman

-washerwoman

-washhouse

-washoe

-washrag

-washroom

-washrooms

-washstand

-washstands

-washtub

-washtubs

-washwoman

-wasplike

-wassail

-wassailer

-wast

-wastage

-wastages

-wastepaper

-watchcase

-watcheye

-watchtower

-watchworks

-waterborne

-watercraft

-watercress

-waterflood

-waterfowl

-waterfowl's

-waterfowler

-waterhole

-waterhole's

-waterholes

-waterily

-waterish

-waterishness

-waterless

-waterlessly

-waterlessness

-waterlog

-waterlogged

-watermanship

-watermark

-waterpower

-waterscape

-waterweed

-waterwheel

-waterworks

-waterworn

-wattmeter

-wattmeter's

-wattmeters

-waught

-waukesha

-waunona

-waupaca

-waupun

-wausau

-wauwatosa

-waveland

-waveless

-wavelessly

-wavelet

-wavelets

-wavelike

-wavery

-wavily

-waxlike

-waxwing

-waxwing's

-waxwings

-waybill

-wayfarer

-wayfaring

-waygoing

-waylay

-wayless

-wayworn

-weakhearted

-weakish

-weakling

-weal

-wealthily

-weanling

-wearability

-weariful

-wearifully

-wearifulness

-weariless

-wearilessly

-weatherability

-weatherboard

-weatherboarding

-weatherglass

-weatherman

-weatherstripping

-weatherworn

-weathery

-webbed

-webber

-webby

-webfoot

-weblike

-wedder

-wedgy

-weedless

-weeknight

-weeknights

-weepy

-weet

-weever

-weevil

-weevilly

-weevily

-weft

-wefts

-weider

-weidman

-weighable

-weightily

-weightless

-weightlessly

-weimaraner

-weiner

-weir

-weirdie

-weirdies

-weldable

-weldment

-weldor

-weldwood

-welfarism

-welfarist

-welkin

-wellaway

-wellborn

-wellhead

-wellington

-wellman

-wellwisher

-wellwisher's

-wellwishers

-welmers

-weltschmerz

-wen

-wend

-wert

-weskit

-westernmost

-wetback

-wettable

-wettish

-wff

-whacky

-whaleback

-whaleboat

-whalebone

-whalebone's

-whalebones

-whang

-whangee

-whap

-wharfage

-wharfinger

-wharfmaster

-whats

-wheal

-wheatear

-wheatland

-wheaton

-wheelbarrow

-wheelbarrow's

-wheelhorse

-wheelless

-wheelman

-wheelock

-wheelsman

-wheelwork

-wheelwright

-wheen

-wheezily

-whelm

-whenas

-whencesoever

-whensoever

-whereat

-wherefrom

-whereinto

-whereness

-wheres

-wheresomever

-wherethrough

-whereto

-whereunto

-wherewithal

-wherries

-wherry

-whetstone

-whetter

-whichsoever

-whicker

-whickered

-whickering

-whidding

-whiffletree

-whigmaleerie

-whilom

-whilst

-whimsicality

-whiney

-whinstone

-whipcord

-whiplike

-whippersnapper

-whippier

-whippletree

-whippoorwill

-whippy

-whipstitch

-whipstock

-whirlybird

-whirried

-whirry

-whirrying

-whish

-whisht

-whiskery

-whispery

-whist

-whitebait

-whitebeard

-whitecap

-whitefish

-whiteleaf

-whiteley

-whiteout

-whitesmith

-whitethroat

-whitewall

-whitewater

-whitewing

-whithersoever

-whitherward

-whitish

-whity

-whizbang

-whizz

-whizzbang

-whizzer

-whomp

-whoopee

-whoopla

-whopper

-whoredom

-whorehouse

-whoremaster

-whoremonger

-whoreson

-whorish

-whort

-whortle

-whosesoever

-whoso

-whump

-whup

-whys

-wickerwork

-wickiup

-widemouthed

-widgeon

-widgeons

-widish

-widowerhood

-widthways

-wieland

-wieldy

-wienerwurst

-wienie

-wifehood

-wifeless

-wifelike

-wigan

-wigeon

-wigeons

-wigged

-wight

-wiglet

-wigwag

-wilco

-wildcatted

-wildcatting

-wildebeest

-wildebeest's

-wilderment

-wildflower

-wildflower's

-wildflowers

-wildfowl

-wildfowler

-wildfowling

-wildish

-wildling

-wildwood

-willable

-willemite

-willet

-willies

-williwaw

-willowlike

-willowware

-willpower

-willy

-willying

-wilmette

-wimble

-wimbled

-wimbles

-wimbling

-wimple

-wimpled

-wimpling

-winchell

-windage

-windblown

-windburn

-windburned

-windflaw

-windily

-windjammer

-windlass

-windlassed

-windlasses

-windlassing

-windlassly

-windpipe

-windproof

-windscreen

-windsurf

-windsurfed

-windsurfing

-windsurfs

-windswept

-windway

-wineglass

-winegrower

-winehead

-winepress

-wineshop

-winey

-wingbeat

-wingbeat's

-wingbeats

-wingding

-wingless

-winglessness

-winglet

-winglike

-wingover

-wingspread

-wingspread's

-wingspreads

-wingy

-winism

-winnable

-winnebago

-winned

-winooski

-winsett

-wintergreen

-winterkill

-wintertide

-wintery

-wintle

-wintrily

-winze

-wirable

-wiredraw

-wiredrawer

-wiredrawn

-wirehair

-wirehaired

-wirelike

-wiretapper

-wireway

-wirework

-wireworks

-wireworm

-wirily

-wisent

-wisewoman

-wisha

-wispish

-wistaria

-wisteria

-witchery

-witchlike

-witchy

-withdrawable

-withe

-witherite

-witherspoon

-withies

-withindoors

-withoutdoors

-withy

-witless

-witling

-witted

-witticism

-wittily

-wiz

-wizardry

-wolfhound

-wolflike

-wolverine

-wolverine's

-wolverines

-wolverton

-womanish

-womanishly

-womanishness

-womankind

-womanless

-womanlike

-womanpower

-wombat

-wombat's

-wombats

-womenfolk

-womenfolks

-womenkind

-wonderwork

-wonky

-wonning

-wonton

-woodberry

-woodcraft

-woodcutter

-woodcutting

-woodenhead

-woodenheaded

-woodenware

-woodlore

-woodnote

-woodpile

-woodsman

-woodsy

-woolie

-woolpack

-woolsack

-woolshed

-woolskin

-woops

-woozier

-woozily

-wooziness

-woozy

-wordage

-wordages

-wordbook

-wordless

-wordlessness

-wordmonger

-wordplay

-workability

-workbasket

-workboat

-workbox

-workfolk

-workfolks

-workforce

-workforce's

-workforces

-workhouse

-workless

-worklessness

-workpeople

-workroom

-workrooms

-workweek

-workwoman

-worldling

-wormhole

-wormlike

-worriment

-worrywart

-worshipless

-wort

-worthful

-worthily

-wotted

-wouldst

-woundless

-woundwort

-wowser

-wrack

-wracked

-wracks

-wraiths

-wrapup

-wrasse

-wrathy

-wreathy

-wriggly

-wristlet

-wristlock

-wristy

-writeup

-writeup's

-writeups

-writhen

-wrongheaded

-wrongheadedly

-wrongheadedness

-wunderkind

-wysiwyg

-xanthate

-xanthene

-xanthic

-xanthin

-xanthine

-xenia

-xenomania

-xenophile

-xenophilous

-xenophobe

-xenophobic

-xerarch

-xeric

-xerically

-xerographic

-xerographically

-xerophile

-xerophilous

-xerophily

-xylophonist

-xylose

-xylotomic

-xylotomical

-xylotomous

-xylotomy

-yack

-yacking

-yah

-yak

-yakking

-yalies

-yam

-yamen

-yardarm

-yardbird

-yardman

-yardmaster

-yare

-yarely

-yarmelke

-ycleped

-yclept

-ye

-yearling

-yearlong

-yeastily

-yellerish

-yep

-yester

-yeuk

-yew

-yoghurt

-yoghurt's

-yogic

-yogin

-yoknapatawpha

-yolky

-yond

-youngling

-yuba

-yuletide

-yuri

-zabaglione

-zagged

-zanier

-zanies

-zanily

-zaniness

-zany

-zazen

-zealotry

-zeffirelli

-zenithal

-zeolite

-zeolitic

-zephyr

-zeppelin

-ziggy

-zillion

-zincate

-zincic

-zinfandel

-zingier

-zingy

-zinnia

-zippier

-zippy

-zirconia

-zirconic

-zither

-zitherist

-zithers

-zizith

-zoantharian

-zoarial

-zoarium

-zobrist

-zombi

-zombiism

-zonate

-zonated

-zonation

-zonked

-zoogenic

-zoogenous

-zoogeographer

-zoogeographic

-zoogeography

-zooks

-zoologic

-zoomorphic

-zoonosis

-zoonotic

-zooparasite

-zooparasitic

-zoophagous

-zoophilic

-zoophilous

-zoophyte

-zoophytic

-zooplankton

-zoosporal

-zoospore

-zoosterol

-zootechnics

-zori

-zucchini

-zwitterion

-zwitterionic

-zwitterions

-zygote

-zygote's

-zygotes

diff --git a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.3 b/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.3
deleted file mode 100644
index 4ecbceb..0000000
--- a/maint-5-2/tapestry-test/src/main/resources/org/apache/tapestry5/test/english.3
+++ /dev/null
@@ -1,19708 +0,0 @@
-AAU

-AKA

-APS

-Aachen

-Aalborg

-Aalesund

-Aargau

-Aaronic

-Abba

-Abbado

-Abbevillian

-Abbeydale

-Abelard

-Abele

-Abelmosk

-Abernethy

-Aberystwyth

-Abravanel

-Abraxas

-Absalom

-Abu

-Abyssinian

-Acarus

-Accrington

-Aceldama

-Achaemenid

-Achates

-Achernar

-Achitophel

-Acis

-Actinia

-Actium

-Adamite

-Adar

-Addams

-Addington

-Adenauer

-Adige

-Adonai

-Adonic

-Adullamite

-Advowson

-Aedes

-Aegeus

-Aegina

-Aegisthus

-Aeolic

-Aeolipile

-Aeolis

-Aepyornis

-Aeschines

-Aesculapian

-Aesculapius

-Aesir

-Aetolia

-Affenpinscher

-Africanism

-Africanist

-Afrikander

-Afrikanerdom

-Agama

-Agapanthus

-Ageratum

-Agincourt

-Aglaia

-Agostini

-Agra

-Agrapha

-Agrippa

-Aguascalientes

-Ahasuerus

-Ahmednagar

-Ahriman

-Ahvenanmaa

-Ahwaz

-Aidan

-Aidin

-Aileen

-Akan

-Akhmatova

-Akkad

-Akkadian

-Akmolinsk

-Aktyubinsk

-Alamein

-Alaric

-Albi

-Albigenses

-Albinoni

-Albion

-Alboin

-Albury

-Alcman

-Alcock

-Alcoran

-Alcyone

-Aldermaston

-Alderney

-Aldine

-Aldus

-Aleksandropol

-Aleksandrovsk

-Alemanni

-Alemannic

-Aleppo

-Alexandrian

-Alexius

-Algerine

-Algonkian

-Alkoran

-Allahabad

-Allenby

-Allende

-Allhallowtide

-Almeida

-Almohade

-Almoravide

-Alsatia

-Altaic

-Altamira

-Altrincham

-Amaryllis

-Amati

-Amboina

-Ambrosian

-Ameling

-Americanist

-Amerigo

-Amerindian

-Amersfoort

-Ameslan

-Amfortas

-Amish

-Ammonites

-Amoy

-Ampelopsis

-Amphitrite

-Amphitryon

-Amritsar

-Amundsen

-Amytal

-Anabaena

-Anabas

-Anableps

-Anacreontic

-Anam

-Ananias

-Anchises

-Ancona

-Andaman

-Andhra

-Angara

-Angarsk

-Angelus

-Angevin

-Angkor

-Anglesey

-Anglian

-Anglicist

-Anglomania

-Anglophone

-Anguilla

-Anjou

-Annam

-Annamese

-Annapurna

-Anopheles

-Anouilh

-Ansermet

-Antarctic

-Anthurium

-Antigonus

-Antigua

-Anubis

-Anzac

-Aphis

-Apis

-Apollyon

-Apus

-Arabist

-Arafat

-Araiza

-Aramaic

-Araucanian

-Araucaria

-Arawakan

-Arbela

-Arcadic

-Archaeopteryx

-Archaeornis

-Archean

-Archilochian

-Arctic

-Arctogaea

-Areca

-Areopagus

-Ares

-Arethusa

-Argerich

-Argyrol

-Arian

-Ariel

-Aristides

-Aristippus

-Arius

-Arkhangelsk

-Arkhipova

-Arlberg

-Arminian

-Arrau

-Arroyo

-Arthurian

-Asarum

-Ascanius

-Ascensiontide

-Aschaffenburg

-Ascham

-Asclepiadean

-Asclepius

-Ashanti

-Ashford

-Ashkenazi

-Ashkenazy

-Ashkhabad

-Ashmore

-Ashton

-Ashur

-Asimov

-Aspasia

-Assamese

-Assisi

-Astilbe

-Aten

-Athanasian

-Atherton

-Atlantean

-Atlantov

-Attenborough

-Attila

-Aubergine

-Aubervilliers

-Aubrietia

-Aubusson

-Auger

-Augsburg

-Augustinian

-Aurignacian

-Aussie

-Auster

-Austerlitz

-Australasia

-Australiana

-Australianism

-Australoid

-Australorp

-Austrasia

-Austronesia

-Austronesian

-Autoharp

-Avar

-Averroism

-Avestan

-Axminster

-Aymara

-Ayrshire

-Azerbaijani

-Azilian

-Azotobacter

-Azov

-Azrael

-BBC

-BCPL

-BNF

-Baal

-Baalbek

-Baaskap

-Bab

-Babi

-Babism

-Bacchae

-Bacharach

-Bacquier

-Bactrian

-Baedeker

-Baganda

-Bagdad

-Bahai

-Bahaism

-Bahrain

-Bairam

-Baker

-Bala

-Balaam

-Balakirev

-Balaklava

-Balaton

-Balearic

-Balkis

-Balmacaan

-Balmoral

-Balt

-Balthazar

-Baltsa

-Baluchi

-Baluchistan

-Bambara

-Bamberg

-Banda

-Banff

-Bank

-Bannockburn

-Bantoid

-Bantustan

-Banville

-Barabbas

-Barathea

-Barbarossa

-Barbary

-Barber

-Barbirolli

-Barbuda

-Barcoo

-Bardolatry

-Barenboim

-Bari

-Barmecide

-Barotse

-Barsac

-Bart

-Bartoletti

-Bashkir

-Basilian

-Basingstoke

-Baskerville

-Bassas

-Bastianini

-Basutoland

-Bataan

-Bathonian

-Battenburg

-Battle

-Baudo

-Bauhinia

-Bax

-Bayard

-Beaconsfield

-Beaufort

-Beaune

-Bebington

-Bechuana

-Bechuanaland

-Beckenham

-Beckford

-Beckmann

-Bedfordshire

-Bedlington

-Beghard

-Beguin

-Behrens

-Belgae

-Belgravia

-Belial

-Belisarius

-Belisha

-Belleek

-Bellerophon

-Bellingshausen

-Bellmouth

-Bellona

-Belmondo

-Belorussia

-Belostok

-Belsen

-Beltane

-Bemba

-Benackova

-Benedictus

-Benedikt

-Beni

-Benin

-Benison

-Benne

-Bennet

-Berber

-Berberis

-Berbie

-Berchtesgaden

-Berdichev

-Berdyayev

-Berenson

-Berezina

-Berezniki

-Berg

-Bergama

-Bergamo

-Berganza

-Berger

-Bergonzi

-Bergsonism

-Berkeleian

-Berkeleianism

-Bernese

-Bessarabia

-Bethany

-Bethmann

-Betta

-Beulah

-Beveridge

-Bewick

-Bice

-Biedermeier

-Bielefeld

-Bihari

-Biisk

-Bilharzia

-Billingham

-Billingsgate

-Billiton

-Bim

-Birkenhead

-Bishop

-Blachut

-Blackbeard

-Blagoveshchensk

-Blanzat

-Blavatsky

-Blech

-Blegen

-Bley

-Blindheim

-Blini

-Bliss

-Blomstedt

-Bloomsbury

-Boanerges

-Boatwright

-Boche

-Bodoni

-Bogas

-Bohm

-Boildieu

-Boito

-Bokhara

-Bolshie

-Bolson

-Boltonia

-Bonapartism

-Bonynge

-Bordelaise

-Borghese

-Borodin

-Boronia

-Bosky

-Bosnia

-Bougainville

-Boughton

-Boulez

-Boult

-Bournemouth

-Bouvet

-Bozcaada

-Braata

-Brachiosaurus

-Bragi

-Brahman

-Brahmana

-Brahmani

-Brahmanism

-Brahmin

-Brahui

-Brailler

-Braillers

-Braillewriters

-Brantford

-Breconshire

-Bremerhaven

-Brendel

-Brentano

-Brentwood

-Brescia

-Breslau

-Bresson

-Bretagne

-Bretton

-Breuer

-Breughel

-Briareus

-Bridgeford

-Bridgeman

-Bright

-Brigid

-Britannia

-Briticism

-Britishism

-Brixton

-Brno

-Broadbrim

-Bromberg

-Brown

-Bruch

-Brule

-Brummagem

-Brunei

-Brunelle

-Bruson

-Brutus

-Bryansk

-Brython

-Brythonic

-Bubo

-Bucephalus

-Buchmanism

-Buckingham

-Buckinghamshire

-Buddleia

-Buenaventura

-Bueno

-Bulgar

-Bumbledom

-Buna

-Bundaberg

-Bundoora

-Bundu

-Burberry

-Burgos

-Burgoyne

-Burkina

-Burseraceous

-Bushire

-Bute

-Buttermere

-Butterworth

-Bydgoszcz

-Byelorussian

-Byelostok

-CATV

-CB

-CCNY

-CEQ

-CGS

-CO

-Caballe

-Cabinda

-Caddoan

-Cadmean

-Cadmus

-Caelian

-Caelum

-Caernarvonshire

-Caerphilly

-Caesarean

-Caesarism

-Cahokia

-Caicos

-Calabar

-Caladium

-Calciferous

-Caledonia

-Caledonian

-Caliban

-Calicut

-Callas

-Calliopsis

-Calvados

-Calvinism

-Calydonian

-Cambridgeshire

-Camelopardus

-Camenae

-Cana

-Canaanite

-Canaanitic

-Canadianism

-Candace

-Candiot

-Candlemas

-Canicula

-Canopic

-Canossa

-Cantabrian

-Canuck

-Capablanca

-Cape

-Capernaum

-Capetian

-Capone

-Cappuccilli

-Capri

-Capricornus

-Capsian

-Caravaggio

-Carbonari

-Cardiganshire

-Caribbee

-Carlist

-Carlovingian

-Carman

-Carmarthenshire

-Carmel

-Carmelite

-Carpathian

-Carreras

-Carrick

-Carteri

-Carthaginian

-Carthusian

-Cartier

-Caslon

-Caspar

-Casparian

-Caspian

-Cassegrainian

-Cassia

-Castalia

-Castilian

-Castilla

-Castleford

-Castlereagh

-Casuarina

-Catalan

-Cathay

-Cattleya

-Caucasoid

-Cavell

-Cavesson

-Cavetto

-Cavour

-Cawdrey

-Cawley

-Cawnpore

-Caxton

-Cayes

-Cayman

-Cayuse

-Ceanothus

-Cecrops

-Ceiba

-Celadon

-Celaeno

-Celeste

-Celtiberian

-Centaurus

-Central

-Cepheid

-Ceratodus

-Cercis

-Cerenkov

-Ceres

-Cete

-Chaco

-Chadderton

-Chailly

-Chalcis

-Chaldean

-Chaldee

-Cham

-Chamaeleon

-Chambertin

-Charlottenburg

-Charlottetown

-Charlton

-Charmeuse

-Charpentier

-Chartism

-Chasidim

-Chatterton

-Chaucerian

-Chechen

-Cheek

-Chellean

-Chelmsford

-Cheltenham

-Chelyabinsk

-Chelyuskin

-Chengchow

-Chengteh

-Chengtu

-Cheongsam

-Cheops

-Cherbourg

-Cheremiss

-Cheremkhovo

-Cherenkov

-Chernovtsy

-Chernozem

-Chertsey

-Cherubini

-Chessel

-Chesterfieldian

-Chetnik

-Cheval

-Chian

-Chibchan

-Chickasaw

-Chihuahua

-Childermas

-Chilean

-Chiltern

-Chilton

-China

-Chinee

-Chinookan

-Chionodoxa

-Chiron

-Chita

-Chkalov

-Chlorella

-Chloromycetin

-Chocho

-Choco

-Chrissie

-Christadelphian

-Christchurch

-Christhood

-Christmastide

-Christoff

-Christology

-Christophe

-Chukchi

-Chung

-Churrigueresque

-Chuvash

-Ciccolini

-Cicely

-Cid

-Cilician

-Cimbri

-Cimmerian

-Cinchona

-Cincinnatus

-Cinemascope

-Cineraria

-Cipango

-Circassian

-Circinus

-Cisalpine

-Cistercian

-Cistus

-City

-Clacton

-Clapham

-Clapton

-Clarabella

-Clarenceux

-Clarkia

-Claudel

-Claudius

-Clausewitz

-Claytonia

-Clematis

-Clementine

-Clemmons

-Cleome

-Cleopatra

-Cleve

-Clevenger

-Cliburn

-Clintonia

-Clipperton

-Clostridium

-Cluj

-Cluytens

-Clydesdale

-Coast

-Coatbridge

-Cobbett

-Cobham

-Cochin

-Cockaigne

-Cocos

-Cointreau

-Colchicum

-Colchis

-Colima

-Colleen

-Collier

-Collinsia

-Colloq

-Colobus

-Cologne

-Colossian

-Coltrane

-Columba

-Colwyn

-Comanchean

-Comintern

-Command

-Comoros

-Compositae

-Comptometer

-Comus

-Conferva

-Congreve

-Coniston

-Conium

-Convolvulus

-Cook

-Copland

-Coprosma

-Copt

-Coptic

-Coquille

-Coral

-Corantijn

-Cordelier

-Cordovan

-Coreopsis

-Corriedale

-Cortes

-Corvallis

-Corybant

-Corydalis

-Corydon

-Costa

-Costermansville

-Cotinga

-Cotrubas

-Couperin

-Courland

-Cousteau

-Cowell

-Cowichan

-Craal

-Cranfield

-Cressida

-Creston

-Cretic

-Crichton

-Crinum

-Croat

-Crockford

-Crompton

-Cronin

-Crookes

-Crookesmoor

-Crossley

-Crownland

-Cryptomeria

-Cuberli

-Culex

-Cumbrian

-Cundick

-Curculio

-Curcuma

-Curtana

-Curvet

-Cuscus

-Cushitic

-Cuthbert

-Cymric

-Cypripedium

-Cyrano

-Cyrenaic

-Cytherea

-Czechoslovak

-Czernowitz

-Czerny

-DMF

-DPP

-DWT

-Dagenham

-Dagestan

-Dago

-Daltonism

-Damara

-Damaraland

-Damascene

-Damien

-Damson

-Danaides

-Danegeld

-Danelaw

-Danio

-Danton

-Daphnis

-Dapsang

-Darby

-Dard

-Dardan

-Dardic

-Darien

-Darjeeling

-Darry

-Dartford

-Dartmoor

-Davidovich

-Deauville

-Deb

-Decembrist

-Deepfreeze

-Delian

-Delibes

-Delius

-Deller

-Delorme

-Delos

-Delsarte

-Demogorgon

-Demosthenes

-Denbighshire

-Dene

-Denis

-Dentalium

-Depraz

-Dernesch

-Derris

-Deuteronomist

-Deuteronomistic

-Deuteronomy

-Deutschland

-Deutzia

-Devereux

-Devonian

-Diablo

-Diamond

-Dictaphone

-Dictograph

-Didache

-Dieskau

-Dimitrovo

-Dinaric

-Dinesen

-Dingaan

-Dinka

-Dinnington

-Dinoceras

-Dione

-Dionysia

-Dionysiac

-Dioscuri

-Diplodocus

-Dirham

-Ditzel

-Djibouti

-Dneprodzerzhinsk

-Dnepropetrovsk

-Dniester

-Docetism

-Dodgson

-Dodona

-Doese

-Dohnanyi

-Dol

-Dolichosaurus

-Dominica

-Domitian

-Donar

-Donath

-Donatist

-Doncaster

-Donegal

-Donetsk

-Dongola

-Donizetti

-Dopper

-Dor

-Dorati

-Dorian

-Dorking

-Dormoy

-Doronicum

-Dowland

-Dowson

-Dracaena

-Draconic

-Drakensberg

-Drayton

-Dressen

-Dronfield

-Druse

-Duala

-Dubonnet

-Duisburg

-Dukas

-Dulcinea

-Dumbarton

-Dunbarton

-Dunker

-Dupre

-Duralumin

-Durban

-Durkheim

-Duroc

-Durufle

-Dutoit

-Duyker

-Dvandva

-Dvina

-Dvinsk

-Dvorsky

-Dyak

-Dyonisian

-Dzaudzhikau

-Dzerzhinsk

-Dzhambul

-Dziggetai

-Dzongka

-Dzungaria

-ECAD

-Eaglestone

-Eaglewood

-Eastbourne

-Eastertide

-Eastleigh

-Ebert

-Ecclesiastes

-Ecclesiasticus

-Echeveria

-Edda

-Eddington

-Edo

-Edomite

-Edwardine

-Efik

-Egbert

-Egeria

-Egham

-Egmont

-Ehrenburg

-Eichendorff

-Eiffel

-Eijkman

-Eikon

-Eilat

-Eindhoven

-Einkorn

-Eisenach

-Eisenstadt

-Eisenstein

-Eisteddfod

-Ekaterinburg

-Ekaterinodar

-Ekaterinoslav

-Elamite

-Elbert

-Eleatic

-Eleusinian

-Elfland

-Elgar

-Elia

-Elias

-Elisabethville

-Elisavetgrad

-Elisavetpol

-Ellesmere

-Ellice

-Ellington

-Elohim

-Elohist

-Elsass

-Elvira

-Emirates

-Emmenthal

-Emmet

-Emmy

-Empson

-Endamoeba

-Endrich

-Endymion

-Enesco

-Engel

-Englishism

-Englishry

-Entamoeba

-Eozoic

-Ephedra

-Ephemera

-Ephraimite

-Epigoni

-Episcopalism

-Equatorial

-Equisetum

-Erastianism

-Erechtheum

-Erechtheus

-Erenburg

-Erica

-Ericson

-Erin

-Eritrea

-Ermanaric

-Ermler

-Erse

-Erymanthian

-Escallonia

-Escherichia

-Escorial

-Esdras

-Eskilstuna

-Esperanto

-Esquiline

-Essene

-Estonian

-Eth

-Ethelbert

-Ethelred

-Ethiopian

-Eton

-Eucharis

-Euonymus

-Eupatorium

-Euphrosyne

-Euroclydon

-Eurocommunism

-Eurocrat

-Eurodollar

-Euromarket

-Eurovision

-Eurus

-Euryale

-Eurystheus

-Eustachian

-Euxine

-Everton

-Evertor

-Evesham

-Evonymus

-Ewing

-Excalibur

-Exmoor

-Exon

-FPS

-Fabianism

-Fabrikoid

-Factice

-Faisal

-Faizabad

-Falange

-Faliscan

-Falkirk

-Falkner

-Falla

-Falstaffian

-Fanti

-Fareham

-Farnborough

-Farnese

-Farnesol

-Farnham

-Faroe

-Faroes

-Farouk

-Farquhar

-Farrago

-Farthingale

-Fartlek

-Faruk

-Fassbaender

-Fassbinder

-Fathometer

-Fatimid

-Fatshan

-Faubourg

-Faure

-Fayal

-Fedoseyev

-Feigin

-Feisal

-Feme

-Fenian

-Fenice

-Fenrir

-Fergus

-Fernandi

-Ferrara

-Fescennine

-Feuchtwanger

-Feuerbach

-Feuilleton

-Fezzan

-Fianna

-Finnic

-Finsen

-Finsteraarhorn

-Firbank

-Flamig

-Flaminian

-Fleetwood

-Flensburg

-Fletcher

-Fletcherism

-Flintshire

-Flugelhorn

-Flysch

-Foism

-Foison

-Fokine

-Fokker

-Foochow

-Fornax

-Forrester

-Forsythia

-Fouquet

-Fourierism

-Fournet

-Fournier

-Francescatti

-Franck

-Franconia

-Franconian

-Francophile

-Francophobe

-Francophone

-Franglais

-Frankenstein

-Frankish

-Frauenfeld

-Fraunhofer

-Frazer

-Frazil

-Freccia

-Freda

-Fredericia

-Frederiksberg

-Fredrikstad

-Freesia

-Freiburg

-Frenchy

-Freni

-Frescobaldi

-Freytag

-Fribourg

-Fricandeau

-Friesian

-Frigg

-Frijol

-Frisch

-Frisco

-Friuli

-Friulian

-Frizette

-Frobisher

-Froment

-Ft

-Fuegian

-Fulham

-Futuna

-Fyzabad

-Gadarene

-Gael

-Gaeltacht

-Gagarin

-Gaia

-Gainsborough

-Galago

-Galenic

-Galenical

-Galenism

-Galibi

-Galician

-Galla

-Gallic

-Gallican

-Gallicanism

-Gallicism

-Galton

-Galwegian

-Gambeson

-Gambetta

-Gambier

-Gamboge

-Ganda

-Gandhiism

-Ganga

-Garamond

-Gargantua

-Garrya

-Garth

-Gascon

-Gaspar

-Gates

-Gatha

-Gaucho

-Gaulish

-Gaullism

-Gaullist

-Gaultheria

-Gaza

-Gedda

-Gehenna

-Geisel

-Geissler

-Gelderland

-Gelsemium

-Gelsenkirchen

-Gemara

-Gencer

-Gendron

-Genevan

-Genf

-Genfersee

-Genghis

-Genoese

-Genova

-Gentoo

-Geordie

-Georgette

-Germanism

-Germanophile

-Germanophobe

-Gethsemane

-Geum

-Gharial

-Gharry

-Ghaut

-Ghazi

-Ghazzah

-Gheber

-Gherao

-Ghiaurov

-Ghiberti

-Ghibli

-Ghillie

-Ghirlandaio

-Ghitalla

-Giacometti

-Gibeonite

-Gielgud

-Gierek

-Giessen

-Gigout

-Gilbertian

-Gileadite

-Gilels

-Gillingham

-Gippsland

-Gippy

-Giraud

-Giraudoux

-Gisborne

-Giscard

-Giulini

-Giulio

-Glagolitic

-Glazunov

-Glengarry

-Glickman

-Glinka

-Globigerina

-Glorioso

-Gloucestershire

-Gloxinia

-Gluck

-Gobbi

-Gobelin

-Godesberg

-Godetia

-Godiva

-Godolphin

-Godspeed

-Godthaab

-Godunov

-Goebbels

-Goidel

-Golconda

-Goldmark

-Golgi

-Golgotha

-Gomberg

-Gond

-Gondi

-Gondwanaland

-Gongorism

-Goop

-Gorcock

-Gorgonzola

-Gorki

-Gorlovka

-Goshen

-Gosplan

-Goth

-Gotha

-Gothenburg

-Gotland

-Goucher

-Gounod

-Goya

-Graafian

-Graben

-Gracchus

-Graeae

-Graffman

-Graian

-Granth

-Grecism

-Green

-Greenham

-Gregorian

-Greisen

-Grenada

-Grenadines

-Gretna

-Grieg

-Grierson

-Griffe

-Griffiths

-Griffon

-Grig

-Grigioni

-Grignard

-Grikwa

-Grindelia

-Griqua

-Griqualand

-Grison

-Grolier

-Grundheber

-Grus

-Guadeloupe

-Guarani

-Guernica

-Guernsey

-Guerrero

-Guevara

-Guido

-Guildford

-Guillaume

-Guillou

-Guinea

-Guinness

-Gurmukhi

-Gurzenich

-Gypsophila

-Habsburg

-Haddington

-Hadith

-Haematoxylon

-Hagegard

-Hagiographa

-Haida

-Hainan

-Haitink

-Hakea

-Hallamshire

-Halle

-Hallowmas

-Hallstatt

-Halpern

-Hamite

-Hamitic

-Handley

-Hansard

-Hanseatic

-Hanuman

-Hanyang

-Hardenberg

-Hardy

-Hargreaves

-Haringey

-Harl

-Harlow

-Harmsworth

-Harper

-Harrild

-Harrovian

-Hathor

-Hauptmann

-Haversian

-Hawick

-Heard

-Heaviside

-Hebraism

-Hebraist

-Hebron

-Heifetz

-Helgoland

-Helianthus

-Heligoland

-Heliogabalus

-Helios

-Helladic

-Hellas

-Helldiver

-Helleborine

-Hellenism

-Hellenist

-Hellenistic

-Helvetia

-Helvetian

-Helvetic

-Helvetii

-Hemmings

-Henie

-Henryson

-Henslowe

-Henze

-Hephaestus

-Heptateuch

-Heraclid

-Herat

-Hercynian

-Herefordshire

-Herero

-Hermaphroditus

-Hertford

-Hertfordshire

-Hertzian

-Herzegovina

-Herzl

-Herzog

-Hesione

-Hesperia

-Hesperian

-Hesperides

-Hesychast

-Het

-Heteroousian

-Hexateuch

-Heynis

-Heysham

-Hezekiah

-Hialeah

-Hibernicism

-Hickox

-Hideyoshi

-Hieland

-Hilary

-Hildesheim

-Himyarite

-Himyaritic

-Hinayana

-Hindemith

-Hindenburg

-Hippeastrum

-Hippocrene

-Hippolytus

-Hippomenes

-Hirudin

-Hispania

-Hispanicism

-Hispaniola

-Hittite

-Hobbism

-Hochheimer

-Hocktide

-Hodgson

-Hoene

-Hofmann

-Hohenzollern

-Hollandia

-Holliday

-Holliger

-Hom

-Homoiousian

-Hong

-Honiton

-Horatian

-Horatius

-Horenstein

-Horne

-Hortense

-Hosta

-Houdan

-Houstonia

-Howland

-Hoya

-Huddersfield

-Huddleston

-Hudibrastic

-Huguenot

-Humperdinck

-Hunnish

-Huntingdonshire

-Hussite

-Huybrechts

-Hyacinthus

-Hydrastis

-Hydroski

-Hydrus

-Hygeia

-Hynninen

-Hyoscyamus

-Hypnos

-Hyson

-ISSN

-Iapetus

-Ibo

-Ibrahim

-Icaria

-Icarian

-Iceni

-Ichthyornis

-Ido

-Idomeneus

-Ignatius

-Igorot

-Iguanodon

-Ijssel

-Ijsselmeer

-Ilford

-Ilkeston

-Illyrian

-Imai

-Immanuel

-Immelmann

-Immingham

-Impatiens

-Inbal

-Ind

-Indiaman

-Indic

-Indologist

-Indris

-Ingush

-Inkerman

-Innuit

-Inselberg

-Intelsat

-Interisland

-Invar

-Ionesco

-Ionia

-Ionian

-Ipomoea

-Ireton

-Irishism

-Irkutsk

-Irons

-Iroquoian

-Isbn

-Iscariot

-Ishmael

-Ishmaelite

-Ishtar

-Isidore

-Iskander

-Iskenderun

-Islington

-Ismaili

-Isocheim

-Italia

-Ivanovo

-Ivanovsky

-Ives

-Ivory

-Ixia

-Ixion

-Ixtaccihuatl

-Izhevsk

-Iztaccihuatl

-JCL

-Jabalpur

-Jabir

-Jabiru

-Jaborandi

-Jacaranda

-Jacobin

-Jacquard

-Jadotville

-Jaga

-Jahvist

-Jain

-Jainism

-Jamesian

-Janacek

-Janiculum

-Janigro

-Janowitz

-Jansenism

-Jap

-Japheth

-Japhetic

-Jarvi

-Jarvis

-Jat

-Jehovist

-Jemmy

-Jena

-Jenghis

-Jenner

-Jephthah

-Jeremiad

-Jersey

-Jervis

-Jespersen

-Jesselton

-Jesu

-Jethro

-Jetton

-Jewess

-Jewry

-Jezebel

-Jezreel

-Joab

-Jocasta

-Jochum

-Jodo

-Johnsonian

-Joinville

-Jolson

-Jonah

-Jonson

-Jotunheim

-Juantorena

-Jubbulpore

-Judaea

-Judah

-Judaic

-Juilliard

-Juliana

-Jumada

-Juneberry

-Junius

-Junoesque

-Jylland

-KWIC

-KWOC

-Kaaba

-Kabaka

-Kabyle

-Kaffir

-Kaffraria

-Kafir

-Kaiserslautern

-Kalahari

-Kalevala

-Kalmuck

-Kamu

-Kanaka

-Kanarese

-Kanawa

-Kandinsky

-Kanji

-Kapfenberg

-Karaite

-Karajan

-Karakul

-Karczykowski

-Karelian

-Karloff

-Karlovy

-Karlsbad

-Karlsruhe

-Karnak

-Karpov

-Karri

-Karst

-Kasha

-Kashmiri

-Kaspszyk

-Katrine

-Keeling

-Keewatin

-Keighley

-Keijo

-Kelson

-Kempff

-Kennelly

-Kennington

-Kentish

-Kerenski

-Kermanshah

-Kertesz

-Keswick

-Keynesianism

-Khabarovsk

-Khachaturian

-Khaddar

-Khakass

-Khakis

-Khalid

-Khalif

-Khalkha

-Khalkidiki

-Khama

-Khamsin

-Khanate

-Khanga

-Khania

-Kharif

-Kharkov

-Khat

-Khayal

-Khedive

-Khelat

-Kherson

-Khieu

-Khingan

-Khirbet

-Khiva

-Khoikhoi

-Khoisan

-Khojent

-Khotan

-Khufu

-Khulna

-Khuskhus

-Khyber

-Kiaat

-Kiang

-Kiangsi

-Kiangsu

-Kiaochow

-Kibitka

-Kiblah

-Kidderminster

-Kielce

-Kier

-Kierkegaard

-Kieselguhr

-Kif

-Kikoi

-Kikumon

-Kilauea

-Kildare

-Kilderkin

-Kilkenny

-Killarney

-Killick

-Killiecrankie

-Killifish

-Killikinick

-Kilmarnock

-King

-Kingdom

-Kingman

-Kinnock

-Kinross

-Kinshasa

-Kirchhoff

-Kirghiz

-Kiribati

-Kirigami

-Kirin

-Kirkby

-Kirkcaldy

-Kirkcudbright

-Kirkman

-Kirkuk

-Kirkwall

-Kirman

-Kirmess

-Kirovabad

-Kirovograd

-Kirshbaum

-Kiruna

-Kirundi

-Kisangani

-Kish

-Kishinev

-Kishke

-Kismayu

-Kissel

-Kissin

-Kissinger

-Kist

-Kistna

-Kisumu

-Kitts

-Kizil

-Klagenfurt

-Klangfarbe

-Klansman

-Klausenburg

-Klee

-Kleiber

-Kleist

-Klemperer

-Klimt

-Klipspringer

-Klondike

-Kneller

-Knesset

-Knighthead

-Kniplova

-Knobkerrie

-Knussen

-Koblenz

-Kodaly

-Koestler

-Koheleth

-Kohima

-Kohl

-Kohn

-Kohoutek

-Kokand

-Kokanee

-Kokobeh

-Kokoschka

-Kolhapur

-Kolinsky

-Kollo

-Kollwitz

-Kolmar

-Kolmogorov

-Kolo

-Kolomna

-Kolyma

-Komati

-Komatik

-Komi

-Kommunarsk

-Kommunizma

-Komodo

-Komsomol

-Komsomolsk

-Konakry

-Kondo

-Kondrashin

-Konstanz

-Kootenay

-Kopeisk

-Kopje

-Koppa

-Korbut

-Korchnoi

-Kordofan

-Kordofanian

-Korma

-Korngold

-Korsakov

-Kortrijk

-Koruna

-Korzybski

-Kos

-Kosciusko

-Kossuth

-Kostroma

-Kosygin

-Kota

-Kotabaru

-Koulibiaca

-Koumis

-Kovno

-Kovrov

-Koweit

-Kowhai

-Kozhikode

-Kra

-Kraal

-Kragujevac

-Krait

-Krakau

-Kramatorsk

-Krameria

-Kranj

-Krans

-Krasnodar

-Krasnoyarsk

-Krefeld

-Kreisky

-Kreisler

-Kremenchug

-Kremer

-Krems

-Kreplach

-Kreutzer

-Kriegspiel

-Kriemhild

-Krimmer

-Krio

-Krips

-Kriss

-Kristiansand

-Kristianstad

-Krivoy

-Kromesky

-Krone

-Kronig

-Kronos

-Kroon

-Kropotkin

-Krugersdorp

-Kruller

-Krummhorn

-Krupp

-Kruysen

-Krym

-Kshatriya

-Kuala

-Kuban

-Kubelik

-Kublai

-Kubrick

-Kuch

-Kuchen

-Kuching

-Kueh

-Kuenlun

-Kufic

-Kuibyshev

-Kukri

-Kuku

-Kula

-Kulturkampf

-Kulun

-Kum

-Kumamoto

-Kumasi

-Kumbaloi

-Kung

-Kungur

-Kunming

-Kunzite

-Kuomintang

-Kuopio

-Kura

-Kurgan

-Kuril

-Kurland

-Kurosawa

-Kuroshio

-Kurrajong

-Kursaal

-Kursk

-Kurzeme

-Kuskokwim

-Kutaisi

-Kutch

-Kutuzov

-Kuznetsk

-Kwa

-Kwacha

-Kwajalein

-Kwakiutl

-Kwangchow

-Kwangchowan

-Kwangju

-Kwangtung

-Kwantung

-Kwanza

-Kwara

-Kwazulu

-Kweichow

-Kweilin

-Kweisui

-Kweiyang

-Kwela

-Kynewulf

-Kyongsong

-Kyprianou

-Kyrie

-Kyushu

-LPG

-La

-Laager

-Laaland

-Laburnum

-Lacedaemonian

-Lactobacillus

-Ladin

-Ladino

-Lagting

-Lahnda

-Lahti

-Laibach

-Lakeland

-Lakes

-Laksa

-Lakshadweep

-Lalo

-Lamaism

-Lamarckian

-Lamarckism

-Lamington

-Lammas

-Lammastide

-Lancastrian

-Landau

-Langland

-Langobard

-Langobardic

-Langridge

-Langton

-Langtry

-Lantana

-Lapith

-Laplacian

-Lapland

-Lapp

-Lar

-Laski

-Lassen

-Latakia

-Latimeria

-Latina

-Latinism

-Latinist

-Latino

-Latona

-Latour

-Latvian

-Laudian

-Laughton

-Launce

-Launceston

-Lawless

-Lawrentian

-Lazar

-Leacock

-Leaf

-Leah

-Leamington

-Leatherette

-Leda

-Lefkowitz

-Leibnitz

-Leicester

-Leicestershire

-Leichhardt

-Leiden

-Leif

-Leinsdorf

-Leinster

-Leishmania

-Leitner

-Lemberg

-Lemmens

-Leninabad

-Leninakan

-Leno

-Lenya

-Leoncavallo

-Leonidas

-Leopardi

-Lepanto

-Lepidosiren

-Leptocephalus

-Lepton

-Lepus

-Lermontov

-Lerwick

-Lethbridge

-Leto

-Lett

-Lettish

-Leucippus

-Levant

-Levantine

-Leverhulme

-Leverkusen

-Levite

-Levitical

-Levko

-Lewisham

-Leyte

-Lhasa

-Liadov

-Liao

-Liaoning

-Liaotung

-Liaoyang

-Lias

-Lichfield

-Liebfraumilch

-Lilith

-Limbourg

-Limburg

-Limburger

-Limpopo

-Lincolnshire

-Linnaean

-Linsang

-Lipetsk

-Lippizaner

-Liriodendron

-Listerism

-Liszt

-Liv

-Ljubljana

-Llandaff

-Llandudno

-Llanelli

-Llangollen

-Llewellyn

-Lleyn

-Lobachevsky

-Locarno

-Loewe

-Lolland

-Lollard

-Lombrosian

-Longbenton

-Longford

-Longobard

-Lonicera

-Lorengar

-Loretta

-Lota

-Loughborough

-Louisburg

-Luba

-Lucan

-Lucania

-Lucina

-Lucknow

-Luddite

-Ludendorff

-Ludwigsburg

-Ludwigshafen

-Luffa

-Luganda

-Lugansk

-Luluabourg

-Luo

-Lupercalia

-Lur

-Lusatian

-Lusitania

-Lutetia

-Luton

-Lutoslawski

-Lutyens

-Luxemburg

-Luxon

-Lvov

-Lycian

-Lydian

-Lyme

-Lymington

-Lyonnais

-Lyonnesse

-Lysander

-Lysenkoism

-Lysimachus

-Lytham

-Lythraceous

-Lyublin

-MFD

-MIRV

-MKS

-MKSA

-MSC

-MVS

-MVT

-Ma

-Maag

-Maar

-Maarianhamina

-Maas

-Maastricht

-Maazel

-Mab

-MacKerras

-Macao

-Macaskill

-Macau

-Maccabean

-Maccabees

-Macclesfield

-Macdonnell

-Mackay

-Mackerras

-Maclean

-Macleod

-Macmahon

-Macneice

-Macpherson

-Macready

-Maddalena

-Maecenas

-Magdalen

-Magdalenian

-Magdeburg

-Magellan

-Maghreb

-Maglemosian

-Magnificat

-Magyar

-Mahdi

-Mahican

-Mahomet

-Mahonia

-Mahound

-Maia

-Maintenon

-Maitland

-Majlis

-Malacca

-Malaya

-Malinowski

-Malison

-Malpighian

-Mam

-Mameluke

-Manchu

-Mancunian

-Mandaean

-Mandalay

-Mande

-Mandeville

-Mandingo

-Manichaeism

-Mannerheim

-Mannheim

-Mantler

-Manuguerra

-Manx

-Manxman

-Marabout

-Maracaibo

-Maratha

-Marathi

-Marburg

-Marchland

-Marciano

-Marcionism

-Marconi

-Marengo

-Marenzio

-Margaux

-Margay

-Marge

-Mariana

-Mariehamn

-Marienbad

-Marinduque

-Marinetti

-Mariolatry

-Mariology

-Marist

-Mariupol

-Marius

-Marivaux

-Markevitch

-Markhor

-Markka

-Markova

-Marley

-Marlow

-Maronite

-Marquesan

-Marrakech

-Marrakesh

-Marriner

-Marsala

-Marseillaise

-Marseille

-Marshalsea

-Marston

-Martin

-Martinmas

-Martinon

-Marton

-Masai

-Mascagni

-Masefield

-Massawa

-Massenet

-Matabele

-Matabeleland

-Mathis

-Matorin

-Mattila

-Mauceri

-Maud

-Maugham

-Mauricio

-Maurist

-Mauser

-Mavourneen

-Mawson

-Maxim

-Mayakovski

-Mayan

-Mayen

-Mayotte

-Mazdaism

-Mbujimayi

-McNair

-Mccarthyism

-Mccartney

-Mccormack

-Mccullers

-Mcdiarmid

-Mcgonagall

-Mcluhan

-Mclure

-Mcmunn

-Mcmurdo

-Mcnaughten

-Mcqueen

-Meade

-Meccano

-Mechem

-Mechlin

-Mecklenburg

-Mede

-Medina

-Megaera

-Mehta

-Meissen

-Melaleuca

-Melanochroi

-Melchite

-Melchizedek

-Meleager

-Melitopol

-Melton

-Melungeon

-Memnon

-Memphian

-Mendeleyev

-Mendelism

-Menelik

-Mengelberg

-Menshevik

-Menton

-Mercian

-Mercouri

-Mercurian

-Mercurochrome

-Merionethshire

-Merovingian

-Merseburg

-Mersey

-Merseyside

-Merton

-Mesembryanthemum

-Mesple

-Messapian

-Metol

-Metternich

-Mexicali

-Meyerbeer

-Meyerhof

-Micah

-Michaelmas

-Micmac

-Microscopium

-Middelburg

-Middlesbrough

-Middlewood

-Midway

-Milashkina

-Milford

-Milhaud

-Milnes

-Milstein

-Mina

-Mindel

-Ming

-Mingrelian

-Minkowski

-Minorca

-Minorite

-Minton

-Minya

-Miquelon

-Miserere

-Mishima

-Mishnah

-Mithraism

-Mithras

-Mitropolous

-Mitropoulos

-Mittelland

-Mitterrand

-Mixtec

-Mizoguchi

-Mlle

-Mme

-Mnemosyne

-Modiolus

-Modred

-Mogilev

-Mohave

-Mohican

-Mohock

-Mojave

-Moldau

-Moldavian

-Moldavite

-Molech

-Moll

-Mollet

-Molokai

-Mommsen

-Momus

-Moncton

-Mondale

-Mondial

-Monegasque

-Mongo

-Mongol

-Mongolic

-Monmouthshire

-Monophysite

-Monteux

-Montezuma

-Montgomeryshire

-Montserrat

-Moorcock

-Moorland

-Moradabad

-Mordvin

-Mordvinian

-Moreton

-Morisco

-Moro

-Morocco

-Morpheus

-Moselle

-Mossi

-Mosul

-Mountbatten

-Mountie

-Moussorgsky

-Mousterian

-Mozambique

-Mozarab

-Mridang

-Muharram

-Mulciber

-Munch

-Munda

-Murdabad

-Murdoch

-Murillo

-Murmansk

-Musca

-Muskhogean

-Mussulman

-Muti

-Mwalimu

-Mweru

-Mycobacterium

-Myrica

-Myrmidon

-NCAR

-NGK

-NTP

-Naafi

-Nabataean

-Nabokov

-Nabonidus

-Nadia

-Naga

-Nagaland

-Nagana

-Nagano

-Nagari

-Nagpur

-Nagyszeben

-Nahuatl

-Nahum

-Nama

-Namaqualand

-Namibia

-Nana

-Nansen

-Napier

-Napierian

-Napoli

-Napravnik

-Narayanganj

-Narraganset

-Nathanael

-Nauru

-Navassa

-Nayarit

-Nazarite

-Nearctic

-Neblett

-Nederland

-Negress

-Negritic

-Negrito

-Negrophil

-Negrophobe

-Negus

-Nehemiah

-Nejd

-Nekrasov

-Nelly

-Nelson

-Nembutal

-Nemean

-Nemesia

-Neocene

-Neogaea

-Neogene

-Neotropical

-Neozoic

-Neptunian

-Nereis

-Neri

-Nestorianism

-Neubrandenburg

-Neville

-Nevis

-Nevski

-New

-Newburg

-Newcombe

-Newcomen

-Newfie

-Newgate

-Newham

-Newhaven

-Newmarket

-Newtonabbey

-Newtown

-Ngaio

-Ngaliema

-Ngoma

-Nguni

-Ngwee

-Nha

-Nicaea

-Nice

-Nicene

-Nicias

-Nicobar

-Nicol

-Nicola

-Nicolai

-Nicolesco

-Nicolson

-Nicotiana

-Niedersachsen

-Niersteiner

-Nietszche

-Niflheim

-Nijmegen

-Nikaria

-Nike

-Nikolainkaupunki

-Nikolayev

-Nilotic

-Nimitz

-Nimrod

-Nimwegen

-Ningpo

-Ninon

-Nipissing

-Nisei

-Nishapur

-Nissen

-Niue

-Nizam

-Noachian

-Noble

-Noctiluca

-Noguchi

-Noordholland

-Nordkyn

-Norland

-Normanton

-Norn

-Norseman

-Northallerton

-Northamptonshire

-Northcliffe

-Northcountryman

-Northman

-Northmen

-Northumbria

-Northumbrian

-Northumbrians

-Northwich

-Nostoc

-Notogaea

-Notornis

-Nototherium

-Notour

-Nottinghamshire

-Notus

-Novgorod

-Novokuznetsk

-Nuba

-Nucci

-Nuffield

-Nullstellensatz

-Nuneaton

-Nupe

-Nuremberg

-Nyanja

-Nyasaland

-Nynorsk

-Nyoro

-OSHA

-Oahu

-Oakham

-Oakville

-Oaxaca

-Obadiah

-Oberammergau

-Oberhausen

-Oberland

-Oberon

-Obraztsova

-Ochman

-Ockham

-Ocrea

-Octans

-Octavian

-Octobrist

-Odelsting

-Odontoglossum

-Ogham

-Oglethorpe

-Ogpu

-Ogygian

-Oidium

-Oireachtas

-Oistrakh

-Okayama

-Okeechobee

-Okefenokee

-Okhotsk

-Okie

-Olcott

-Oldcastle

-Oldham

-Oliveira

-Olynthus

-Ommiad

-Omsk

-Ophiuchus

-Oporto

-Oppens

-Orangeism

-Orangeman

-Oratorian

-Orcadian

-Ordovician

-Orenburg

-Orff

-Oriya

-Orleanist

-Ormandy

-Ormazd

-Ornithorhynchus

-Orphean

-Orphism

-Orpington

-Orsk

-Orvieto

-Osage

-Oscan

-Oshawa

-Oshogbo

-Osijek

-Osmanli

-Osnaburg

-Osset

-Ossetic

-Ossian

-Ostrogoth

-Ostyak

-Othin

-Ottley

-Ouija

-Ovambo

-Overijssel

-Oxbridge

-Oxfordshire

-Ozawa

-PABA

-PCB

-PCBS

-POBox

-PUC

-PWT

-Paal

-Pachisi

-Pachouli

-Pacific

-Paddywhack

-Paderewski

-Padus

-Pahari

-Pahlavi

-Paignton

-Paiute

-Palacio

-Palaearctic

-Palaeocene

-Palaeozoic

-Palau

-Palenque

-Pali

-Pallas

-Palmerston

-Panama

-Panathenaea

-Pandarus

-Pandean

-Panhellenic

-Panhellenism

-Panjabi

-Pantagruel

-Paphian

-Papiamento

-Papuan

-Paracel

-Paracelsus

-Parma

-Parnassian

-Parnassus

-Parsee

-Parthenopaeus

-Parthenope

-Parthenos

-Parthian

-Pasch

-Pashto

-Passamaquoddy

-Passiontide

-Pasteurism

-Pathan

-Patmos

-Pauk

-Paulinus

-Pavarotti

-Pavo

-Pawnee

-Pears

-Pecksniffian

-Pehlevi

-Pekin

-Pekingese

-Pelagian

-Pelagianism

-Pelasgian

-Peleus

-Pelew

-Pelias

-Pelmanism

-Peloponnesian

-Pelops

-Pembrokeshire

-Pentland

-Pentstemon

-Penutian

-Pepys

-Pequot

-Perceval

-Percheron

-Peritricha

-Perlman

-Persicaria

-Persis

-Persson

-Pesach

-Peterborough

-Peterlee

-Peterloo

-Peterman

-Petermann

-Petersham

-Petra

-Petrie

-Petrine

-Petronius

-Petropavlovsk

-Petrosian

-Petrov

-Petrovsk

-Petrozavodsk

-Peyer

-Pfalz

-Pforzheim

-Phaeacian

-Phaedrus

-Philadelphus

-Philippeville

-Philippic

-Philistia

-Philistinism

-Philoctetes

-Philomela

-Phlegethon

-Phoenician

-Phragmites

-Phrygian

-Phylloxera

-Pianola

-Piavko

-Picard

-Pickwickian

-Pictish

-Pierian

-Pierides

-Pierrot

-Pietermaritzburg

-Pieterson

-Pilsen

-Pilsudski

-Piltdown

-Pindaric

-Pinkerton

-Pinkster

-Pinsk

-Pisanello

-Pisano

-Piscis

-Pitcairn

-Pithecanthropus

-Pitta

-Plasson

-Plasticine

-Platonical

-Plattdeutsch

-Platte

-Platteland

-Plautus

-Podolsk

-Pogonia

-Pogorelich

-Polack

-Polanski

-Polje

-Pollack

-Pollini

-Pollyanna

-Polska

-Polycarp

-Pondo

-Pondoland

-Pons

-Pontic

-Popov

-Popp

-Porson

-Posen

-Positif

-Poulenc

-Powhatan

-Praesepe

-Praetorian

-Prakrit

-Pressburg

-Pretre

-Preussen

-Previn

-Prey

-Priapus

-Price

-Principe

-Priscian

-Procne

-Prokopyevsk

-Proterozoic

-Protophyta

-Provincetown

-Prunella

-Prussianism

-Pskov

-Psoralea

-Ptolemaist

-Puppis

-Purbeck

-Puseyism

-Pyrrhus

-Pythagoreanism

-Pythia

-Pythian

-Quadragesima

-Quassia

-Queenborough

-Queenstown

-Quimper

-Quinquagesima

-Quirites

-Quivar

-RI

-RTT

-Rabelais

-Rabelaisian

-Rabi

-Rabia

-Rackham

-Radetzky

-Radnorshire

-Rafflesia

-Raia

-Raimondi

-Rajput

-Rama

-Rambouillet

-Rameses

-Rampal

-Randova

-Ranki

-Rapallo

-Raphia

-Rastafarian

-Rattle

-Rauwolfia

-Ravel

-Rea

-Rebozo

-Recklinghausen

-Redbridge

-Redemptorist

-Redgrave

-Regensburg

-Rehoboam

-Reichsrat

-Reiner

-Remblai

-Reme

-Remex

-Renardy

-Renfrew

-Rensselaerite

-Resnik

-Respighi

-Reunion

-Rhadamanthus

-Rhaetian

-Rhaetic

-Rheinland

-Rhemish

-Rhodesian

-Rhodesoid

-Rhodian

-Rhodope

-Ricci

-Ricciarelli

-Riesling

-Rigsdaler

-Rijeka

-Rijksdaaler

-Rijn

-Rijswijk

-Riksdag

-Rimini

-Rimsky

-Ripuarian

-Riss

-Rivera

-Roanoke

-Robeson

-Robespierre

-Robson

-Rochberg

-Rochdale

-Rochelle

-Rockhampton

-Rockingham

-Rodin

-Rodrigo

-Rodzinski

-Roethke

-Rojak

-Rolf

-Rollo

-Roma

-Romagna

-Romaic

-Romains

-Romaji

-Romanes

-Romanic

-Romanies

-Romanism

-Romanist

-Romanov

-Romansch

-Romany

-Romberg

-Romero

-Romeros

-Romish

-Rommel

-Romney

-Roncesvalles

-Ronin

-Ronsard

-Rosalind

-Rosicrucian

-Rossini

-Rostov

-Rostropovich

-Rotherham

-Rothermere

-Rothesay

-Rotterdam

-Rouault

-Roubaix

-Roussillon

-Routemarch

-Rowan

-Rowbotham

-Rowicki

-Rowlandson

-Roxburgh

-Royden

-Rozhdestvensky

-Rubenstein

-Rubicon

-Rudesheimer

-Ruhr

-Rumpelstiltskin

-Rundstedt

-Rupert

-Rurik

-Ruritania

-Ruskin

-Russky

-Russophile

-Russophobe

-Ruthenian

-Rutherfordium

-Rutter

-Rybinsk

-Ryswick

-Ryukyu

-Ryurik

-Rzewski

-SNCC

-SNOBOL

-STOL

-Saadi

-Saar

-Saarinen

-Saarland

-Sabaean

-Sabaoth

-Sabbatarian

-Sabellian

-Sackville

-Sacramentarian

-Sadducee

-Saens

-Safar

-Safi

-Sahaptin

-Saharan

-Saint

-Saintpaulia

-Saiva

-Sakai

-Sakharov

-Sakyamuni

-Salford

-Salian

-Salicornia

-Sallinen

-Salminen

-Salol

-Salonen

-Salpa

-Salpiglossis

-Salvia

-Salzburg

-Samarkand

-Sambo

-Samian

-Samnite

-Samoyed

-Sanctus

-Sandhurst

-Sandringham

-Sandwich

-Sanforized

-Sanger

-Sangh

-Sangraal

-Sanjak

-Sankhya

-Santee

-Sao

-Sarajevo

-Sarangi

-Saransk

-Saratov

-Sard

-Sardinian

-Sardis

-Sardius

-Sardou

-Sargodha

-Sargon

-Sark

-Sarkis

-Sarracenia

-Sarsen

-Saschowa

-Sassanid

-Sassenach

-Satie

-Satsuma

-Saturnian

-Sauerbaum

-Sawney

-Saxe

-Scandian

-Schaerbeek

-Schaffhausen

-Schein

-Schenck

-Schiedam

-Schiff

-Schippers

-Schleiermacher

-Schlesien

-Schleswig

-Schliemann

-Schnecken

-Schnitzler

-Schwarz

-Schwarzkopf

-Sci

-Scimone

-Scleroderma

-Scofield

-Scopus

-Scorpius

-Scotism

-Scotswoman

-Scotticism

-Scotto

-Scriabin

-Scythian

-Seabee

-Sealyham

-Searle

-Seaton

-Sebastopol

-Secunderabad

-Sedgemoor

-Seebeck

-Seeger

-Seeland

-Seidlitz

-Seifert

-Selene

-Seleucid

-Selig

-Seljuk

-Semipalatinsk

-Semitics

-Senechal

-Senlac

-Sephardi

-Septembrist

-Septuagint

-Serapis

-Serb

-Serkin

-Sevastopol

-Severnaya

-Severus

-Sexagesima

-Shaban

-Shabuoth

-Shackleton

-Shaka

-Shakta

-Shakti

-Shang

-Shankar

-Shankaracharya

-Sharia

-Shavian

-Shaw

-Shawwal

-Shchedrin

-Shcheglovsk

-Shcherbakov

-Shechem

-Shekinah

-Shemite

-Shemitic

-Sheol

-Sherpa

-Sherrington

-Shetland

-Shiah

-Shiism

-Shimonoseki

-Shiraz

-Shluh

-Shoa

-Sholokhov

-Shona

-Shoshonean

-Shostakovich

-Shrewsbury

-Shropshire

-Shrovetide

-Shulamite

-Sibelius

-Sicanian

-Siddhartha

-Sierra

-Sihanouk

-Sika

-Silures

-Silurian

-Silvanus

-Simarouba

-Simbirsk

-Simeon

-Simferopol

-Sinaloa

-Sindhi

-Singhalese

-Sinhalese

-Sinicism

-Sinitic

-Sinopoli

-Sintow

-Siouan

-Siracusa

-Sisley

-Sitka

-Sivaism

-Sivan

-Siwash

-Sixtus

-Skelton

-Skijoring

-Skikda

-Skimmia

-Skipton

-Skokiaan

-Skolly

-Skrowaczewski

-Skua

-Slatkin

-Slavism

-Slavkov

-Slavonia

-Slavophile

-Slavophiles

-Slesvig

-Slovak

-Slovene

-Smeaton

-Smetana

-Smilax

-Smirnov

-Smolensk

-Smollett

-Sobranje

-Socinian

-Soderblom

-Soderstrom

-Sodom

-Soffel

-Sogdian

-Solenodon

-Solti

-Solutrean

-Solzhenitsyn

-Somaliland

-Sondheim

-Songhai

-Sorbian

-Sorbonne

-Sordello

-Sothic

-Sothis

-Sotho

-Souphanourong

-Souslik

-Sousse

-Souterrain

-Southdown

-Southern

-Southport

-Southron

-Southwark

-Sovetsk

-Soviet

-Soweto

-Soyinka

-Soyuz

-Spaak

-Spartacus

-Spassky

-Speenhamland

-Spenborough

-Spence

-Spengler

-Spenser

-Spenserian

-Spinoza

-Spinozism

-Spitsbergen

-Spivakov

-Spratly

-Springhaas

-Srbija

-Stade

-Stagirite

-Stakhanovism

-Stalinabad

-Stalingrad

-Stalinism

-Stalinogrod

-Stalinsk

-Stanislavsky

-Stanleyville

-Starker

-Stavanger

-Stavropol

-Steber

-Stefansson

-Stegodon

-Stegomyia

-Stegosaurus

-Steier

-Steiermark

-Stein

-Steinbeck

-Steinitz

-Stellite

-Stern

-Stijl

-Stillson

-Stillsons

-Stilton

-Stilwell

-Stockhausen

-Stockport

-Stockwood

-Stokowski

-Stokys

-Storting

-Stourbridge

-Stradivari

-Stradivarius

-Strafford

-Stralsund

-Stranraer

-Stratas

-Strathclyde

-Straus

-Stravaig

-Streisand

-Strelitzia

-Stretford

-Streusel

-Stroheim

-Strophanthus

-Strymon

-Stu

-Stylops

-Sudetenland

-Sudra

-Sufi

-Sufism

-Sultanabad

-Sulu

-Sumba

-Sumbawa

-Summers

-Sumo

-Sunderland

-Sunni

-Sunnite

-Suomi

-Surinam

-Suriname

-Susanna

-Susian

-Susu

-Sutcliffe

-Suvorov

-Suwannee

-Svalbard

-Sverdlovsk

-Svetlanov

-Swabia

-Swadeshi

-Swanee

-Swatow

-Swazi

-Swedenborg

-Swedenborgianism

-Sweeny

-Swithin

-Sylvan

-Symons

-Syriac

-Syrtis

-Szabadka

-Szczecin

-Szechwan

-Szeged

-Szell

-Szerying

-Szeryng

-Szewinska

-Szombathely

-Szymanowski

-TKO

-TP

-TWP

-Tabasco

-Tabriz

-Tacamahac

-Tacchino

-Tachina

-Tadzhiki

-Tagalog

-Tai

-Taichung

-Tainan

-Taino

-Taiping

-Taisho

-Tajik

-Talaing

-Talmudist

-Talvela

-Tambov

-Tamerlane

-Tamworth

-Tanagra

-Tanjungpriok

-Tannenberg

-Tardenoisian

-Targum

-Tarkington

-Tarnopol

-Tarpeia

-Tarpeian

-Tarquin

-Tartarean

-Tartaric

-Tartarus

-Tasmanian

-Tatar

-Tatary

-Tatum

-Taunton

-Tay

-Taymyr

-Tayra

-Tayside

-Tbilisi

-Tchad

-Te

-Teal

-Tear

-Tebaldi

-Technicolor

-Technion

-Tel

-Telegu

-Telescopium

-Telford

-Telstar

-Telugu

-Tema

-Temne

-Tempe

-Templar

-Tenebrae

-Tenerife

-Tennstedt

-Tenzi

-Terence

-Teresina

-Tereus

-Ternopol

-Terrani

-Tethys

-Teton

-Teucer

-Teucrian

-Teuton

-Teutonism

-Tewkesbury

-Thanatos

-Thebaid

-Themis

-Theodora

-Theodoric

-Theophilus

-Thermit

-Thersites

-Thetford

-Thomism

-Thorndike

-Thorvaldsen

-Thucydides

-Thuja

-Thurgau

-Thuringia

-Thuringian

-Thurn

-Thyestes

-Tiberius

-Tilburg

-Tilbury

-Tilsit

-Timor

-Timoshenko

-Timour

-Tintagel

-Tippett

-Tirol

-Tiruchirapalli

-Tirunelveli

-Tisa

-Tishab

-Tisiphone

-Titanesque

-Titanomachy

-Titograd

-Titoism

-Tivoli

-Tjirebon

-Tlaxcala

-Tlemcen

-Tlingit

-Tmesis

-Tobey

-Tobolsk

-Tobruk

-Tocharian

-Tocqueville

-Togliatti

-Togoland

-Tojo

-Tokay

-Tokelau

-Tokharian

-Tokoloshe

-Tokugawa

-Tolan

-Tolbert

-Tolima

-Tolkien

-Toller

-Tolly

-Toltec

-Toluca

-Tome

-Tomowa

-Tomsk

-Tonbridge

-Tonga

-Tonka

-Tonkin

-Tophet

-Torricellian

-Torsk

-Tourel

-Townsville

-Tractarianism

-Transcaucasia

-Transylvanian

-Trappist

-Treblinka

-Trent

-Trevino

-Treviso

-Tridentine

-Trinil

-Tripitaka

-Triticum

-Tromelin

-Trondheim

-Trowbridge

-Troyanos

-Truffaut

-Truro

-Tuamotu

-Tuareg

-Tucana

-Tucker

-Tuckwell

-Tunbridge

-Tungus

-Tungusic

-Tupi

-Turanian

-Turco

-Turkey

-Turki

-Turkic

-Turkism

-Turkmen

-Turkoman

-Turks

-Tuvalu

-Twelfthtide

-Twi

-Twickenham

-Tyche

-Tynwald

-Tyrannosaurus

-Tyrian

-Tyrol

-Tyrolienne

-Tyrone

-Tyrr

-Tyrrhenian

-UHF

-Ubangi

-Ubiquitarian

-Ude

-Ugrian

-Ugric

-Uhland

-Uhuru

-Uigur

-Uinta

-Uitlander

-Ujamaa

-Ujiji

-Ujjain

-Ujung

-Ukase

-Ukiyoe

-Ulbricht

-Ullswater

-Ulm

-Ulsterman

-Ulyanovsk

-Umbrian

-Umbriel

-Unalaska

-Uniat

-Union

-United

-Ural

-Uralic

-Uranian

-Uredo

-Uriah

-Uriel

-Urmston

-Urnfield

-Ustinov

-Uxbridge

-Uzbek

-VAC

-VAG

-VDU

-VLF

-VTOL

-Vaal

-Vaasa

-Vaishnava

-Valencia

-Valenciennes

-Valentinian

-Valjakka

-Vanda

-Vandyke

-Vanir

-Vanuatu

-Varady

-Varangian

-Varga

-Varuna

-Vaseline

-Vaticanism

-Veasy

-Veblen

-Vedalia

-Vedanta

-Vedda

-Veddoid

-Vedernikov

-Vedic

-Velsen

-Venda

-Veneti

-Venetia

-Venetic

-Venezia

-Venizelos

-Venora

-Venusberg

-Veracruz

-Vernoleninsk

-Veronal

-Veronese

-Verrett

-Vertumnus

-Vierne

-Vietcong

-Vietminh

-Vihuela

-Viipuri

-Vijayawada

-Vilayet

-Villach

-Villahermosa

-Villainage

-Villanovan

-Villars

-Villeneuve

-Villeurbanne

-Villiers

-Villon

-Vilnius

-Viminal

-Vincennes

-Vindhya

-Vineland

-Vinland

-Virchow

-Visakhapatnam

-Visayan

-Visby

-Visconti

-Viseu

-Vishakhapatnam

-Vishinsky

-Vitebsk

-Vizagapatam

-Vizcacha

-Vizsla

-Vlaardingen

-Vlach

-Vladikavkaz

-Vlaminck

-Vlei

-Vlissingen

-Vltava

-Voetsek

-Voetstoots

-Vogelweide

-Vogul

-Volans

-Volapuk

-Volga

-Volgograd

-Volsci

-Volscian

-Von

-Vorarlberg

-Voronezh

-Voroshilov

-Voroshilovgrad

-Voroshilovsk

-Vortumnus

-Votyak

-Vouvray

-Vries

-Vuelta

-Vulcanite

-Vulpecula

-Vyatka

-Vyshinsky

-Vyvyan

-WAAC

-WAAF

-Waart

-Waddenzee

-Waddington

-Wahhabi

-Waikato

-Waikiki

-Wajda

-Wakashan

-Wakayama

-Wakerife

-Waksman

-Walach

-Walachia

-Walbrzych

-Walcheren

-Waldemar

-Waldenburg

-Waldgrave

-Waldheim

-Waley

-Wallachia

-Walloon

-Wallsend

-Walpurgis

-Walsall

-Walsingham

-Walther

-Walvis

-Wand

-Wandsworth

-Wapentake

-Wappenshaw

-Waragi

-Warangal

-Warbeck

-Ward

-Warfarin

-Warhol

-Warison

-Warley

-Warren

-Warrington

-Wartburg

-Warwickshire

-Wasatch

-Waterford

-Watford

-Watling

-Watteau

-Wattenscheid

-Watts

-Watusi

-Waugh

-Wayland

-Webern

-Wedgwood

-Weigela

-Weikert

-Weikl

-Weill

-Weimar

-Weismannism

-Weisshorn

-Weizmann

-Wellingborough

-Wellingtonia

-Welsbach

-Welshman

-Welwitschia

-Wembley

-Wenceslaus

-Wendish

-Wenkel

-Wensleydale

-Westernism

-Westfalen

-Westmeath

-Westmorland

-Wetterhorn

-Wexford

-Weymouth

-Whikehart

-White

-Whiteboy

-Whitechapel

-Whitefield

-Whitlam

-Whitley

-Whitlow

-Whitsun

-Whitsuntide

-Whittington

-Wickersley

-Wickliffe

-Wicklow

-Widor

-Wiesbaden

-Wigner

-Wigtown

-Wijngaarden

-Wilberforce

-Willcocks

-Wilton

-Wimbledon

-Wimshurst

-Winceyette

-Winchesters

-Winckelmann

-Wiseman

-Wittenberg

-Witwatersrand

-Wixell

-Wobbegong

-Wodehouse

-Woden

-Woking

-Wokingham

-Wolds

-Wolffian

-Wolfram

-Wolfsburg

-Wollongong

-Wolof

-Wolverhampton

-Woodsia

-Woomera

-Wotton

-Woulfe

-Wraac

-Wrexham

-Wunderlich

-Wycliffite

-Wykeham

-Xeres

-Xmas

-Yablonovy

-Yahoo

-Yahweh

-Yakut

-Yakutsk

-Yalu

-Yangtze

-Yankeeism

-Yarborough

-Yarkand

-Yaroslavl

-Yashmak

-Yekaterinburg

-Yekaterinodar

-Yekaterinoslav

-Yelisavetgrad

-Yelisavetpol

-Yelizaveta

-Yenisei

-Yerba

-Yerkes

-Yevtushenko

-Yid

-Yorke

-Yorkist

-Yorkists

-Yoruba

-Yoshihito

-Youngberry

-Younker

-Ypres

-Yquem

-Yresko

-Ysaye

-Yser

-Yseult

-Yssel

-Yuga

-Yukawa

-Yuman

-Yurev

-Yurlov

-Yuzovka

-Zaandam

-Zabrze

-Zacatecas

-Zaccaria

-Zacharias

-Zaibatsu

-Zakai

-Zakuski

-Zambezi

-Zamboanga

-Zamenhof

-Zamia

-Zanasi

-Zanthoxylum

-Zapotec

-Zeebrugge

-Zeeland

-Zeeman

-Zemstvo

-Zend

-Zenobia

-Zepperitz

-Zermatt

-Zetland

-Zhdanov

-Zhitomir

-Zhivkov

-Zho

-Zhukov

-Zimbabwe

-Zindabad

-Zinman

-Zinovievsk

-Zinzendorf

-Zoa

-Zoroastrianism

-Zouave

-Zoysia

-Zuider

-Zuidholland

-Zukerman

-Zwilich

-aardwolf

-abac

-abaca

-abactinal

-abadan

-abaddon

-abakan

-abamp

-abampere

-abator

-abbasid

-abbatial

-abbess

-abcoulomb

-abdias

-abdominous

-abednego

-abeokuta

-aberdare

-abfarad

-abhenry

-abib

-abietic

-abilene

-abingdon

-abirritant

-abirritate

-abkhaz

-ablactation

-ablator

-abohm

-aboideau

-aborticide

-aboukir

-aboulia

-abranchiate

-abri

-abruzzi

-abseil

-absinthism

-absonant

-absorbefacient

-absorptivity

-absquatulate

-abstergent

-abukir

-abulia

-abvolt

-abwatt

-aby

-abydos

-abysm

-acajou

-acanthaceous

-acanthine

-acanthoid

-acanthous

-acariasis

-acarid

-acaroid

-acarology

-acarpous

-acas

-acaudal

-accad

-accentor

-accidie

-accipitrine

-accommodatory

-accouplement

-accrescent

-accutron

-acerate

-acerose

-acescent

-acetabulum

-acetanilide

-acetometer

-acetophenetidin

-acetum

-acetylcholine

-acetylide

-acetylsalicylic

-achaea

-achelous

-achene

-acheron

-acheulian

-achlamydeous

-achlorhydria

-achondrite

-achondroplasia

-achromatin

-achromatous

-achromic

-acicula

-aciculate

-aciculum

-acidometer

-acidophil

-acidophilus

-acidosis

-acierate

-acinaciform

-aciniform

-ackee

-acl

-aclinic

-acnode

-acol

-aconcagua

-aconite

-acotyledon

-acouchi

-acridine

-acriflavine

-acrilan

-acrocarpous

-acrodrome

-acrogen

-acrolein

-acrolith

-acromegaly

-acromion

-acrospire

-acroter

-acrylamide

-acrylonitrile

-acrylyl

-acta

-actin

-actinal

-actinidin

-actiniform

-actinochemistry

-actinoid

-actinomere

-actinomorphic

-actinomycete

-actinomycin

-actinomycosis

-actinon

-actinopod

-actinotherapy

-actinouranium

-actinozoan

-actomyosin

-aculeus

-acutance

-acyclical

-adactylous

-adamawa

-adamsite

-adana

-adaptably

-addax

-ademption

-adenectomy

-adenitis

-adenocarcinoma

-adenohypophysis

-adenoidectomy

-adenovirus

-adhibit

-adiaphorism

-adiaphorous

-adiathermancy

-adipocere

-adit

-adivasi

-admass

-admetus

-adminicle

-adnate

-adnominal

-adnoun

-adowa

-adrastus

-adscription

-adsorbtion

-adsuki

-adularia

-adumbral

-aduwa

-adventitia

-adversarial

-adygei

-adynamia

-adytum

-adzhar

-adzuki

-aeciospore

-aecium

-aedile

-aegospotami

-aegrotat

-aeneous

-aestheticism

-afebrile

-affettuoso

-afflatus

-affreightment

-aforemention

-aforetime

-afrit

-afrormosia

-afterbody

-afterbrain

-afterburning

-afterheat

-afterpains

-aftersensation

-aftershaft

-aga

-agadir

-agalloch

-agamogenesis

-agaric

-agartala

-agateware

-agegroup

-aggro

-agha

-agiotage

-agist

-aglet

-agley

-aglimmer

-agma

-agminate

-agnail

-agni

-agnus

-agora

-agraffe

-agram

-agranulocytosis

-agraphia

-agrestal

-agrestic

-agrigento

-agrippina

-agrose

-agrostology

-agrypnotic

-agueweed

-agulhas

-ahab

-ahimsa

-ahithophel

-ahura

-aiglet

-aiguille

-aiguillette

-aikido

-aikona

-ailurophile

-ailurophobe

-ain

-aintab

-airboat

-airbrick

-aircraftman

-airdrie

-aire

-airforce

-airgun

-airt

-aisha

-aisne

-ait

-aitchbone

-ajaccio

-ajmer

-akbar

-akela

-akene

-akhara

-akhenaten

-akihito

-akkerman

-aksum

-akure

-akvavit

-alagez

-alagoas

-alamode

-alanbrooke

-alanine

-alannah

-alap

-alar

-albacete

-albata

-albemarle

-alberti

-albertite

-albertus

-albescent

-albinus

-albite

-albuminate

-albuminuria

-albumose

-alburnum

-alcaeus

-alcahest

-alcaide

-alcalde

-alcan

-alcatraz

-alcheringa

-alcidine

-alcmene

-alcoholicity

-alcuin

-aldabra

-aldan

-aldershot

-aldis

-aldol

-aldosterone

-aldoxime

-alecost

-alecto

-alegar

-alekhine

-alembicated

-alessandria

-alethic

-aleurone

-alevin

-alexandretta

-alexipharmic

-alfieri

-alfilaria

-alforja

-algarroba

-algebraical

-algeciras

-alginic

-algoid

-algolagnia

-algology

-algometer

-algor

-algorism

-alible

-alicante

-aligarh

-aliped

-alit

-aliunde

-alkalic

-alkane

-alkene

-alkmaar

-alky

-alkyd

-alkylation

-alkyne

-allanite

-allantoid

-allantois

-allargando

-alleppey

-allethrin

-allhallows

-alloa

-allodial

-allodium

-allonym

-alloplasm

-allotts

-allyou

-almada

-almelo

-almemar

-almonry

-almucantar

-almuce

-alodium

-alopecia

-alost

-alow

-alpenhorn

-alpes

-alphatically

-alpheus

-alphonsus

-alphorn

-alphosis

-alsace

-alsike

-alt

-altdorf

-altdorfer

-alternant

-althing

-althorn

-altiplano

-altissimo

-altogther

-altona

-altostratus

-aludel

-alula

-aluminiferous

-aluminothermy

-alumroot

-alvey

-alvine

-amadavat

-amadou

-amagasaki

-amalekite

-amalthea

-amaranthaceous

-amaranthine

-amarelle

-amaryllidaceous

-amatol

-amaut

-amazonas

-ambala

-ambary

-amberjack

-amberoid

-amblygonite

-amblyopia

-ambo

-amboceptor

-amboise

-amboyna

-ambroid

-ambry

-amdahl

-ameba

-ameer

-amenhotep

-amesace

-amhara

-amharic

-amianthus

-amice

-amicus

-amidol

-amidship

-amin

-aminophenol

-aminopyridine

-aminopyrine

-amir

-ammendment

-ammendments

-ammine

-ammocoete

-ammon

-ammonal

-ammonate

-ammonic

-amoebaean

-amon

-amontillado

-amoroso

-amowt

-amphiarthrosis

-amphiaster

-amphibiotic

-amphiblastula

-amphibrach

-amphichroic

-amphicoelous

-amphictyon

-amphictyony

-amphidiploid

-amphigory

-amphimacer

-amphimixis

-amphiprostyle

-amphiprotic

-amphisbaena

-amphistylar

-amphithecium

-amphitricha

-amphora

-amphoteric

-ampulla

-amravati

-amrita

-amstrad

-amur

-amygdala

-amygdalate

-amygdale

-amygdalin

-amygdaline

-amygdaloidal

-amylaceous

-amylase

-amylene

-amyloid

-amylolysis

-amylopectin

-amylopsin

-amylose

-amyotonia

-anabantid

-anabolite

-anabranch

-anacardiaceous

-anachorism

-anaclinal

-anacoluthia

-anacoluthon

-anacoustic

-anacrusis

-anadem

-anadex

-anadromous

-anadyr

-anaglypta

-anagnorisis

-anagoge

-anak

-analcite

-analects

-anambra

-anamnesis

-anamorphism

-anamorphoscope

-anamorphosis

-anandrous

-ananthous

-anapaest

-anaphrodisiac

-anaplasty

-anaptyxis

-anapurna

-anarthria

-anarthrous

-anasarca

-anastomose

-anatase

-anatolia

-anatto

-anaxagoras

-anaximander

-anaximenes

-anbury

-anchoveta

-anchylose

-ancipital

-ancohuma

-ancon

-ancy

-ancylostomiasis

-andalusia

-anderlecht

-andizhan

-andreanof

-andreotti

-androcles

-androclinium

-androecium

-androgenous

-androgyne

-andros

-androsphinx

-androsterone

-andvari

-ane

-anear

-anelace

-anele

-anemochore

-anemography

-anemology

-anemophilous

-anemoscope

-anergy

-anestrus

-anethole

-aneto

-aneuploid

-aneurin

-angelico

-angell

-angelology

-angiology

-angioma

-angostura

-angra

-anguilliform

-anguine

-angwantibo

-anhalt

-anhinga

-anhwei

-aniakchak

-aniconic

-anil

-anilingus

-anima

-animatism

-animato

-anisodactyl

-anisogamy

-anisole

-anisometric

-anisometropia

-anking

-ankus

-ankylosaur

-ankylose

-ankylosis

-ankylostomiasis

-anlace

-anlage

-annaba

-annabergite

-annates

-annatto

-annecy

-annhilate

-anno

-annulose

-anoa

-anoestrus

-anole

-anorak

-anorthositic

-anoxaemia

-ansate

-anschluss

-anshan

-antemeridian

-antependium

-antepenultimate

-antetype

-anteversion

-antevert

-anthelmintic

-anthemion

-antheridium

-antherozoid

-anthocyanin

-anthophore

-anthotaxy

-anthozoan

-anthracene

-anthracoid

-anthraquinone

-anthropomorphosis

-anthropomorphous

-anthropopathy

-anthropophagi

-anthropophagite

-antibaryon

-antibes

-anticathode

-antichlor

-anticholinesterase

-antichrist

-anticlastic

-anticlinorium

-anticosti

-anticyclone

-anticyclones

-antidromic

-antiegalitarian

-antifebrile

-antifederalist

-antiferromagnetism

-antifluoridation

-antihalation

-antihelices

-antihelix

-antihero

-antiheros

-antilepton

-antileptons

-antilogism

-antilogy

-antimasque

-antimere

-antimilitarist

-antimilitarists

-antimissile

-antimissiles

-antimonous

-antimonyl

-antiochus

-antiparallel

-antipater

-antiperistalsis

-antipsychiatry

-antirachitic

-antiremonstrant

-antisana

-antiscorbutic

-antistatic

-antisthenes

-antitragus

-antitype

-antiworld

-antlia

-antlion

-antofagasta

-antoninus

-antonioni

-antonius

-antonomasia

-antre

-antrim

-antrum

-antung

-anu

-anuradhapura

-anuran

-anuresis

-anuria

-anurous

-anvers

-anyang

-anzio

-anzus

-aorangi

-aosta

-aoudad

-apagoge

-apanage

-aparri

-apatetic

-apeldoorn

-apelles

-apeman

-apennines

-apery

-apetalous

-aphagia

-apheliotropic

-aphesis

-aphonia

-aphtha

-apia

-apiezon

-apivorous

-aplanospore

-aplite

-apnoea

-apo

-apocarp

-apochromat

-apocopate

-apocynaceous

-apocynthion

-apoenzyme

-apogamy

-apogeotropism

-apollinaris

-apomict

-apopemptic

-apophasis

-apophthegm

-apophyge

-apophyllite

-apophysis

-apopolectic

-aposiopesis

-apospory

-apostil

-appaloosa

-apparitor

-appassionato

-appel

-appendicectomy

-appendicle

-appenzell

-applecart

-applecarts

-applesnits

-appointor

-appointors

-approximal

-approximator

-approximators

-appulse

-apriorism

-apteral

-apterygial

-apuleius

-apulia

-apure

-apurimac

-apyretic

-aqaba

-aqualung

-aquashow

-aquileia

-aquire

-aquit

-aquitaine

-aquittal

-ara

-arabica

-arabinose

-arad

-arafura

-aragats

-aragon

-aragonite

-araguaia

-arak

-arakan

-araks

-araldite

-araliaceous

-aram

-aran

-araneid

-arany

-arapaima

-ararat

-araroba

-aras

-araucania

-araxes

-arbalest

-arbil

-arbitress

-arboraceous

-arbroath

-arbuthnot

-arcature

-archaean

-archaeomagnetism

-archaeozoic

-archegonium

-archenteron

-archerfish

-archespore

-archicarp

-archidiaconal

-archidiaconate

-archiepiscopal

-archiepiscopate

-archil

-archilochus

-archimage

-archimandrite

-archine

-archipenko

-archiphoneme

-archiplasm

-archoplasm

-arcograph

-arcus

-ardeb

-ardennes

-areg

-arenicolous

-arenite

-areography

-aretino

-arezzo

-argal

-argali

-argand

-argenteuil

-argentum

-argil

-argilliferous

-argillite

-argol

-argolis

-argonon

-argovie

-arica

-arietta

-aril

-arillode

-arimathea

-ariminum

-ariose

-arioso

-ariosto

-arista

-aristaeus

-aristarchus

-aristophanes

-arjuna

-arkose

-arkwright

-arles

-arlon

-armagh

-armagnac

-armband

-armes

-armet

-armiger

-armillary

-arminius

-armipotent

-armorica

-armure

-arne

-arnhem

-arnica

-arnim

-arno

-aroid

-aroint

-arp

-arpent

-arquebus

-arran

-arrestable

-arretium

-arrivisme

-arroba

-arru

-arse

-arsenopyrite

-arsphenamine

-artaud

-artaxerxes

-arteriovenous

-arthralgia

-arthromere

-artic

-artifical

-artifically

-artistical

-artois

-arunachal

-arundel

-arundinaceous

-aruspex

-aruwimi

-arvo

-arytenoid

-asantehene

-asarabacca

-asben

-ascariasis

-ascarid

-asch

-asci

-asclepiadaceous

-ascocarp

-ascogonium

-ascoli

-ascomycete

-ascorbic

-aseity

-asepalous

-asgard

-ashcroft

-ashe

-ashet

-ashkey

-ashlar

-ashlared

-ashlaring

-ashlars

-ashplant

-ashtoreth

-ashurbanipal

-asir

-askari

-askja

-aslef

-asmara

-asmodeus

-aso

-asoka

-aspergillosis

-aspergillus

-asphyxiant

-asphyxiants

-aspinwall

-asquint

-asquith

-assad

-assentient

-asshur

-assibilate

-assiniboine

-assistents

-assiut

-associationism

-assuan

-assurbanipal

-astable

-astaire

-asternal

-asti

-astolat

-astomatous

-astraphobia

-astrict

-astrobotany

-astrocompass

-astrodynamics

-astrogeology

-astroid

-astrometry

-asturias

-astyanax

-asur

-aswan

-asyllabic

-asymptotical

-asyut

-atacama

-atactic

-ataghan

-atahualpa

-ataman

-atbara

-athabaska

-athamas

-athanasius

-athelstan

-athematic

-athermanous

-atheroma

-athodyd

-athos

-atli

-atmolysis

-atomy

-atrabilious

-attaboy

-attedance

-attemper

-attenuant

-attercliffe

-attlee

-attu

-atween

-aubade

-aube

-aude

-audiotypist

-audiphone

-auer

-auklet

-aulic

-aulis

-aurangzeb

-aurelian

-aureus

-auriferous

-auriol

-aurist

-aurum

-ausforming

-ausonius

-austen

-austenitic

-autacoid

-autarchy

-autarky

-autecious

-autecology

-auteur

-autochanger

-autochthon

-autocode

-autocue

-autocycle

-autoicous

-autokinetic

-autoload

-autoloaded

-autoloads

-autolycus

-autolyse

-automorphic

-autopista

-autoput

-autoradiographs

-autoroute

-autostability

-autostrada

-autotimer

-autotoxaemia

-autotoxin

-autotype

-autoxidation

-auvergne

-auxanometer

-auxochrome

-avadavat

-avagadro

-avalon

-avebury

-aveiro

-avellaneda

-avens

-averno

-aveyron

-avicenna

-aviemore

-avignon

-avizandum

-avlona

-avunculate

-awheel

-awlwort

-axseed

-axum

-ayacucho

-ayah

-ayahuasca

-aycliffe

-aydin

-ayesha

-ayr

-ayub

-ayurveda

-ayutthaya

-azan

-azazel

-azbine

-azikiwe

-aznavour

-azo

-azobenzene

-azoic

-azole

-azotemia

-azoth

-azotic

-baa

-baas

-baba

-babar

-babassu

-babbage

-babeuf

-babiche

-babirusa

-babu

-babul

-babur

-babylonia

-bacchius

-bacciform

-baccivorous

-baccy

-backbench

-backbencher

-backbenchers

-backblocks

-backbreaker

-backbreaking

-backchat

-backcloth

-backcomb

-backdate

-backdated

-backdates

-backdating

-backend

-backends

-backhaus

-backmost

-backscratcher

-backsheesh

-backstreet

-backus

-backwardation

-baclava

-bacolod

-bacteraemia

-bacteriological

-bacteriology

-bacteriolysis

-bacteriophage

-bacteriostasis

-bacteroid

-bactria

-baculiform

-baculum

-badajoz

-badalona

-badderlocks

-baddie

-badman

-badoglio

-baeda

-bael

-baeyer

-baez

-bagasse

-bagehot

-bagh

-baghlan

-bagie

-bagnio

-baguio

-bagwash

-bagwig

-bagworm

-bahadur

-bahasa

-bahia

-baht

-bahuvrihi

-baikal

-baile

-baines

-bairnsfather

-baja

-bajan

-bakeapple

-bakehouse

-bakewell

-bakra

-baksheesh

-bakst

-bakunin

-balaclava

-balanchine

-balas

-balata

-balbo

-balbriggan

-baldmoney

-baldric

-balibuntal

-balikpapan

-baliol

-balkh

-balkhash

-balladmonger

-ballance

-ballarat

-ballflower

-balliol

-ballocks

-ballonet

-balmain

-balmung

-balneal

-balneology

-balpa

-balsamiferous

-balsaminaceous

-banaras

-banat

-banc

-bandaranaike

-banderilla

-banderillero

-bandh

-bandicoot

-bandjarmasin

-bandobust

-bandoline

-bandore

-bandsaw

-bandspreading

-bandung

-bangalore

-bangka

-bangweulu

-banian

-banja

-banjermasin

-banjul

-banka

-banket

-banknote

-banknotes

-bannerol

-bansela

-banstead

-bant

-banting

-bap

-baranof

-baraza

-barbel

-barbellate

-barbet

-barbette

-barbican

-barbicel

-barbituric

-barbizon

-barbule

-barbusse

-barca

-barcarole

-barce

-barchart

-barcharts

-bardot

-barehanded

-bareilly

-barents

-baresark

-bargee

-bargepole

-barilla

-barite

-barkentine

-barkhan

-barletta

-barm

-barnardo

-barnaul

-barnsley

-barnum

-barocchio

-baroda

-baroja

-barong

-baroscope

-barostat

-barouche

-barozzi

-barque

-barquentine

-barquisimeto

-barracoon

-barracouta

-barranquilla

-barrault

-barrenwort

-barret

-barrie

-barros

-bartizan

-bartolommeo

-barycentre

-barye

-barysphere

-baryta

-barytes

-barytone

-basaltware

-bascinet

-baseburner

-basenji

-bashan

-bashibazouk

-basifixed

-basilan

-basildon

-basilicata

-basle

-basotho

-bassein

-bassenthwaite

-basseterre

-bastardry

-bastia

-bastinado

-bastnaesite

-bastogne

-batangas

-batata

-bateleur

-batesian

-bathetic

-batholith

-bathsheba

-bathyal

-bathymetry

-bathyscaph

-bathysphere

-batley

-battels

-battersea

-battik

-battledore

-battlepiece

-batum

-batwoman

-bauchi

-baucis

-baudouin

-bautzen

-bawbee

-bawdyhouse

-bawdyhouses

-bayern

-bayeux

-bayle

-baysian

-baywood

-bazoo

-bdellium

-beachie

-beadledom

-beanery

-beanfeast

-beano

-beanpole

-beasty

-beatles

-beatty

-beauharnais

-beaumarchais

-beaut

-beauvais

-beauvoir

-beaverbrook

-bebeerine

-bebel

-beccafico

-bechet

-becquerel

-beddable

-bedesman

-bedight

-bedivere

-bedizen

-bedrail

-bedsit

-bedsits

-bedsitter

-bedspaces

-bedwarmer

-bedwetting

-bedworth

-beeb

-beechnut

-beefburger

-beento

-beerbohm

-beersheba

-beeswing

-beetfly

-beetroot

-beetroots

-beezer

-beforeimage

-beforeimages

-begad

-beggarweed

-begird

-begorra

-begum

-behan

-behistun

-beiderbecke

-beigel

-beira

-bejabers

-bejewel

-belah

-belemnite

-belfort

-belga

-belitung

-bellarmine

-bellay

-belleau

-belletrist

-bellinzona

-belloc

-bellybutton

-belmopan

-belovo

-bemean

-benadryl

-benares

-bendel

-bendigo

-bendy

-benedicite

-benempt

-benevento

-benfleet

-bengaline

-benghazi

-benguela

-benoni

-bentinck

-bentwood

-benue

-benzaldehyde

-benzidine

-benzine

-benzoate

-benzocaine

-benzofuran

-benzoic

-benzoin

-benzol

-benzophenone

-benzoquinone

-benzoyl

-benzyl

-berar

-berbera

-berberidaceous

-berbice

-bergdama

-bergerac

-bergius

-beria

-bering

-berio

-beriosova

-berk

-berks

-berley

-berlichingen

-berlinguer

-berm

-bermejo

-bermondsey

-bernadette

-bernadotte

-bernhardt

-bernicle

-bernina

-berretta

-bersagliere

-berseem

-bertillon

-bertolucci

-berzelius

-bespangle

-bespread

-bestrode

-bethe

-bethral

-bethralled

-bethralling

-bethrals

-bethsaida

-betjeman

-betook

-betti

-betulaceous

-beuthen

-bevan

-bevanite

-bevanites

-bevatron

-bevin

-bevvy

-bexley

-beyrouth

-bezique

-bezoar

-bezonian

-bezwada

-bhagalpur

-bhai

-bhakti

-bhang

-bharal

-bharat

-bharatiya

-bhatpara

-bhavan

-bhavnagar

-bhindi

-bhishti

-bhopal

-bhubaneswar

-bhutto

-biafra

-biak

-biannulate

-biarritz

-biauriculate

-bibliomancy

-bicarb

-bicephalous

-bicester

-bicollateral

-bicorn

-bida

-bidarka

-biddle

-bidentate

-bidistill

-bidistilled

-bidistilling

-bidistills

-biel

-bield

-bienne

-bierkeller

-biestings

-bifarious

-biffin

-bifoliate

-bifoliolate

-biforate

-bifrost

-bigarreau

-bigener

-bigmouth

-bignoniaceous

-biguanide

-bihar

-bijapur

-bijugate

-bikaner

-bikie

-bikila

-bilander

-bilbao

-bilberry

-bilboes

-bilection

-bilestone

-bilirubin

-biliverdin

-billabong

-billfish

-billyo

-bilobate

-biltong

-bimah

-bimanous

-bimbo

-bimorph

-binal

-binate

-bingey

-binghi

-binh

-binodal

-binominal

-binturong

-biocellate

-biochip

-biochips

-bioclimatology

-biocycle

-biodynamics

-bioenergetics

-bioherm

-biolysis

-bioplasm

-biopoiesis

-bioscope

-bioscopy

-biosis

-biostatics

-biostrome

-biparietal

-biparous

-bipetalous

-bipyramidal

-biquadrate

-biquarterly

-birendra

-biriani

-biro

-birobidzhan

-biros

-birthweight

-birthweights

-birtwhistle

-bis

-bisayas

-biscay

-bise

-bisectrix

-biserrate

-bish

-bishopbird

-bisitun

-bisk

-biskra

-bismuthic

-bismuthinite

-bismuthous

-bissextile

-bist

-bistability

-bisulcate

-bisulphate

-bisulphide

-bisulphite

-bisutun

-bisymmetric

-bithynia

-bitolj

-bitterling

-bitterwood

-bivvy

-bizerte

-blackbuck

-blackbutt

-blackcurrant

-blackett

-blackmore

-blackpool

-blackshirt

-blackstrap

-blackwall

-blackwood

-bladdernose

-bladderwrack

-blague

-blah

-blain

-blamey

-blanquette

-blasco

-blastocoel

-blastocyst

-blastoderm

-blastoff

-blastogenesis

-blastomere

-blastopore

-blaubok

-blaydon

-bleb

-bleep

-bleeped

-bleeper

-bleeping

-blennioid

-blenny

-blent

-blepharitis

-blet

-blewits

-blida

-bligh

-blighty

-blimey

-blindage

-blindstorey

-blockboard

-bloemfontein

-blois

-bloodbaths

-bloodsport

-bloodsports

-bloomery

-blotto

-blowback

-blowie

-blowlamp

-blub

-bludge

-bluethroat

-bluetit

-blundell

-blunge

-blunger

-boabdil

-boadicea

-boarfish

-boarhound

-boarish

-boatbill

-boathook

-bobbysoxer

-bobfloat

-boblet

-bobol

-bobotie

-bobowler

-bobsleigh

-bocage

-boccaccio

-boccherini

-boccioni

-bochum

-bocklogged

-bodensee

-bodge

-bodger

-bodgie

-bodh

-bodmin

-bodybuild

-bodycheck

-boethius

-boeuf

-bofors

-bogan

-bogarde

-bogart

-bogbean

-bognor

-bogong

-bogor

-bogtrotter

-bogwood

-boh

-bohea

-bohol

-bohunk

-boiardo

-boileau

-boilover

-bokassa

-bokmakierie

-bolection

-boleyn

-bolide

-bolingbroke

-boliviano

-bollocks

-bolzano

-boma

-bombacaceous

-bombora

-bombycid

-bomu

-bonaire

-bonaventura

-bonce

-bondservant

-boneblack

-boneshaker

-bonhoeffer

-bonin

-bonism

-bonnard

-bonsela

-bontebok

-boobialla

-boobook

-boohoo

-bookeeper

-booklouse

-boole

-boomkin

-boomslang

-boong

-boothia

-boothroyd

-bootloader

-bophuthatswana

-boracic

-boracite

-boraginaceous

-borborygmus

-bordure

-borecole

-boree

-borehole

-boreholes

-borgerhout

-borges

-borgholm

-borgia

-bornholm

-bornu

-borodino

-borrowable

-bors

-borstal

-borzoi

-boschbok

-boschvark

-bosh

-bosk

-boskop

-bossa

-bossboy

-bossuet

-bosworth

-botargo

-botha

-bothnia

-bothwell

-bothy

-botryoidal

-bott

-botticelli

-bottlebrush

-bottlenose

-bottomost

-bottrop

-botvinnik

-boucicault

-boudicca

-boulanger

-bourges

-bourgogne

-bovid

-bovril

-bovver

-bowden

-bowsaw

-bowshot

-bowyangs

-boxboard

-boxfish

-boxroom

-boyla

-boyne

-boyoma

-boysenberry

-boz

-bozen

-brabant

-brach

-brachiopod

-brachycephalic

-brachydactylic

-brachylogy

-brachypterous

-brachyuran

-bracknell

-bracteate

-bracteole

-bradawl

-bradman

-bradycardia

-bradykinin

-braga

-brahe

-braillex

-braillink

-braillo

-brailtel

-brainchildren

-brakesman

-brakpan

-bramante

-bramley

-branchiopod

-brancusi

-brando

-branle

-brasenose

-brashy

-brasier

-brasil

-brasilein

-brasilin

-brassie

-bratislava

-braunite

-braunschweig

-bravais

-bravissimo

-braxy

-brazils

-breadline

-breadmaking

-breadnut

-breadnuts

-breakbone

-breakeven

-breastpin

-breathalyse

-breathalyzer

-brecht

-brecon

-breda

-brede

-bree

-breenger

-bregenz

-brekky

-brevier

-brewis

-brey

-brezhnev

-briand

-briarroot

-bricklay

-bricole

-bridie

-bridlewise

-bridoon

-brie

-brierroot

-brigalow

-brighouse

-brightside

-brinell

-brinjal

-brinny

-briony

-brittonic

-britzka

-brix

-broadbill

-broadmoor

-broca

-broch

-brocken

-broddle

-broderie

-broederbond

-brogan

-brolga

-bromal

-brome

-bromeosin

-bromoform

-bromsgrove

-bronchia

-bronchiectasis

-bronchopneumonia

-bronchoscope

-brookite

-brooklet

-brooklime

-brookweed

-broomgrove

-broomhill

-broonzy

-brose

-browband

-broz

-brubeck

-brucine

-bruges

-bruin

-brumal

-brumby

-brume

-brummell

-brummie

-brundisium

-brunel

-brunelleschi

-brunhild

-brusa

-brushless

-brutify

-brynhild

-bryology

-bryony

-bryozoan

-btu

-bub

-bubal

-bubaline

-buber

-bubonocele

-bucaramanga

-buccinator

-bucentaur

-buchan

-buchner

-buchu

-buckeen

-buckhound

-buckish

-buckjumper

-buckra

-buckram

-bucovina

-budgerigar

-budgetted

-budgetting

-budweis

-buffon

-buganda

-bugbane

-bugong

-buhl

-buibui

-buitenzorg

-bukavu

-bukhara

-bukharin

-bukovina

-bul

-bulawayo

-bulbiferous

-bulganin

-bulimia

-bulle

-bullpen

-bullroarer

-bulnbuln

-bumbailiff

-bumf

-bummaree

-bumph

-bumsucking

-bunche

-buncombe

-bundelkhand

-bundesrat

-bundh

-bundobust

-bunin

-bunraku

-buntal

-bunyip

-buonaparte

-buonarroti

-buoyage

-buprestid

-bur

-buran

-buraydah

-burbage

-burbot

-burgas

-burghley

-burgomaster

-burgomasters

-burgrave

-burhel

-burk

-burka

-burleigh

-burnet

-burney

-burnley

-buroo

-burrawang

-bursarial

-bursiform

-burstone

-buryat

-busbar

-busera

-bushbaby

-bushcraft

-bushhammer

-bushido

-bushie

-bushpig

-bushranger

-bushtit

-bushveld

-bushwheel

-busoni

-busra

-bustee

-busuuti

-butanone

-butat

-butcherbird

-butenedioic

-butskellism

-butskellite

-butterbur

-butterine

-buttonmould

-butung

-butyrin

-buzzsaw

-byelovo

-byng

-byrnie

-byssinosis

-byssus

-bytom

-cabanatuan

-cabbageworm

-cabezon

-cabimas

-cabob

-cabochon

-cabora

-cabral

-cabretta

-cabrilla

-cachexia

-cachinnate

-cachucha

-cacique

-caciquism

-cacodyl

-cacoepy

-cacoethes

-cacology

-cacomistle

-cadaster

-cadelle

-cadi

-caecilian

-caecum

-caen

-caenozoic

-caeoma

-caerleon

-caernarfon

-caesalpiniaceous

-caesaraugusta

-caesarea

-caesium

-caespitose

-caesura

-caetano

-cafard

-caff

-cagliari

-cagliostro

-cagmag

-cagney

-cagoule

-cagoules

-caiaphas

-cainogenesis

-cainozoic

-caird

-cairngorm

-caithness

-caius

-cajeput

-cajuput

-calabria

-calalu

-calamanco

-calamondin

-calandria

-calathus

-calaverite

-calcar

-calcariferous

-calceiform

-calces

-calchas

-calcicole

-calciferol

-calcitonin

-calcsinter

-calculational

-caldarium

-calefacient

-calefactory

-cali

-calices

-caliche

-calicle

-califate

-caligula

-calimere

-calipash

-calipee

-calisaya

-calix

-callais

-callao

-callicrates

-callimachus

-callipash

-callipygian

-callisthenics

-calor

-caloyer

-calpe

-caltanissetta

-calutron

-calvaria

-calvities

-calx

-calyces

-calycine

-calycle

-calyptra

-calyptrogen

-camail

-camass

-cambay

-camberwell

-cambist

-camboose

-cambrai

-cambrel

-cambria

-cambyses

-cameral

-camerlengo

-camiknickers

-camisado

-camoodi

-campagna

-campania

-campanulaceous

-campeche

-campestral

-campina

-campinas

-campo

-camus

-camwood

-canaigre

-canakin

-canaletto

-canaliculus

-canara

-canarese

-canaster

-candia

-candleberry

-candlefish

-candlelit

-candlenut

-candlewood

-candyfloss

-candytuft

-canea

-canella

-cangue

-canikin

-cannabin

-cannae

-cannelloni

-cannelure

-cannes

-cannock

-cannula

-cannulate

-canoewood

-canonicate

-canonry

-canoodle

-canova

-canso

-cantal

-cantala

-cantatrice

-cantharides

-cantilena

-cantorial

-cantoris

-cantrip

-canula

-canzona

-canzone

-canzonet

-capabilites

-caparison

-capelin

-capercaillie

-capillaceous

-caplin

-caporetto

-capote

-cappadocia

-capparidaceous

-cappie

-cappuccino

-capreolate

-capric

-capriccioso

-caprifig

-caprifoliaceous

-caproic

-capsaicin

-capsid

-capua

-capuche

-caput

-caracal

-caracalla

-caracara

-caracul

-carageen

-caramba

-carangid

-caratacus

-caravanserai

-carbamate

-carbamic

-carbamidine

-carbanion

-carbene

-carbineer

-carbonade

-carbonado

-carboxylase

-carburation

-carburetted

-carburetter

-carby

-carbylamine

-carcajou

-carcanet

-carcassonne

-carchemish

-carcinomatosis

-cardin

-cardinalate

-cardiod

-carditis

-cardoon

-carduaceous

-carducci

-caretaking

-carew

-carfax

-carfuffle

-caria

-caribbees

-cariboo

-caries

-carifta

-carillon

-carillonneur

-carina

-carinate

-carinthia

-cariocan

-cariogenic

-carline

-carlota

-carlow

-carmagnole

-carmarthen

-carminative

-carnarvon

-carnassial

-carnatic

-carnauba

-carnet

-carnify

-carniola

-carnot

-carnotite

-carny

-carolus

-carotenoid

-carotid

-carpel

-carpentaria

-carpentier

-carpogonium

-carpology

-carpometacarpus

-carpophagous

-carpophore

-carrack

-carrycot

-carryng

-carse

-carstensz

-cartagena

-carteret

-cartful

-carthorse

-cartouche

-cartulary

-cartwright

-caruncle

-carvel

-cary

-caryatid

-caryophyllaceous

-caryopsis

-carzey

-casablanca

-casals

-casaubon

-cascabel

-cascarilla

-casease

-casebound

-casefy

-caseload

-caseloads

-caseose

-caserta

-caseworm

-casimere

-cassareep

-cassata

-cassation

-cassatt

-cassel

-cassimere

-cassini

-cassiodorus

-cassirer

-cassiterite

-cassoulet

-cassowary

-castellammare

-castellan

-castellany

-castellated

-castiglione

-castile

-castries

-casuist

-catabasis

-catacaustic

-cataclasis

-cataclinal

-catalase

-catalo

-cataloguers

-catalonia

-catalyzed

-catamenia

-catamite

-catania

-catanzaro

-cataphoresis

-cataphyll

-cataplasia

-catarrhine

-catastrophism

-catchfly

-catchweight

-catechol

-catechu

-catechumen

-catenane

-catenoid

-catfall

-cathar

-cathepsin

-catholicon

-catiline

-catling

-catmint

-cato

-cattalo

-cattegat

-cattermole

-cattery

-catullus

-cauca

-caucasia

-caudad

-caudex

-caudine

-caulis

-causalgia

-cauterant

-cauvery

-cavafy

-cavalla

-cavan

-cavatina

-caveator

-cavefish

-cavicorn

-cavie

-cavite

-cavy

-cecity

-cecum

-cedi

-ceefax

-ceilidh

-celaya

-celestite

-cella

-celle

-cellini

-cellobiose

-celloidin

-cellulase

-cellulitis

-cellulous

-celom

-cembalo

-cementum

-cenacle

-cenesthesia

-cenis

-cenogenesis

-cenote

-centimetric

-centipoise

-centisecond

-centiseconds

-centrefold

-centreing

-centrobaric

-centroclinal

-centurial

-ceorl

-cep

-cephalalgia

-cephalin

-cephalochordate

-cephalometer

-cephalonia

-cephalopod

-cephalothorax

-ceram

-ceramal

-cerargyrite

-cerastes

-ceratoid

-cercaria

-cercopithecoid

-cercus

-cerebrospinal

-cerecloth

-ceresin

-ceria

-ceric

-cermet

-cero

-cerography

-ceroplastic

-ceroplastics

-cerotic

-cerotype

-cerous

-cerro

-cert

-cerussite

-cervelat

-cervicitis

-cervid

-cervin

-cesena

-cespitose

-cess

-cesser

-cessionary

-cestode

-cestoid

-cestus

-cesura

-cetane

-cetatea

-ceteris

-cetinje

-cetology

-ceuta

-chabazite

-chabrol

-chacma

-chaconne

-chadic

-chaeronea

-chaeta

-chaetognath

-chaetopod

-chaffinch

-chagall

-chagres

-chainman

-chainplate

-chairborne

-chalaza

-chalcanthite

-chalcidice

-chalcography

-chalcolithic

-chalcopyrite

-chaldea

-chaliapin

-chalicothere

-chalkpit

-chalkstone

-challah

-challis

-chalybeate

-chamade

-chamaephyte

-chambord

-chamonix

-champac

-champignon

-champollion

-chandernagore

-chandigarh

-chandragupta

-chanel

-changan

-changchiakow

-changchow

-changchun

-changsha

-changteh

-chanterelle

-chanukah

-chaoan

-chaochow

-chaparejos

-chapatti

-chappal

-chappie

-chapstick

-chapterhouse

-charas

-charcot

-chardin

-charente

-charivari

-charkha

-charladies

-charlady

-charleroi

-charlock

-charminar

-charollais

-charpoy

-charqui

-charr

-charterage

-charterhouse

-chartless

-chartography

-chasuble

-chauffer

-chaulmoogra

-chaunt

-chausses

-chavannes

-chayote

-cheb

-cheboksary

-checkbits

-checkerbloom

-checky

-cheddite

-cheekpiece

-cheerlead

-cheeseboard

-cheesemonger

-cheesewood

-chefoo

-cheiron

-cheju

-chekiang

-chela

-chelicera

-chelicerate

-cheliform

-cheloid

-chelp

-chemin

-chemisette

-chemmy

-chemnitz

-chemometrics

-chemosmosis

-chemosphere

-chemostat

-chemosynthesis

-chemotaxis

-chemotropism

-chempaduk

-chemulpo

-chemurgy

-chenab

-chenopod

-cheribon

-chersonese

-chervonets

-cheshunt

-chetah

-chevet

-chevrette

-chewa

-chewie

-chiack

-chiapas

-chiastic

-chiastolite

-chiat

-chiba

-chibouk

-chicane

-chiccory

-chichagof

-chichen

-chichester

-chichewa

-chichihaerh

-chickabiddy

-chickenpox

-chiclayo

-chiffchaff

-chifley

-chigetai

-chigwell

-chihli

-childbear

-childcare

-childminder

-childminders

-childminding

-chiliad

-chiliasm

-chilkoot

-chilli

-chillon

-chillum

-chilopod

-chilpancingo

-chilung

-chimb

-chimborazo

-chimbote

-chimkent

-chimneypot

-chinaberry

-chinagraph

-chinan

-chincapin

-chincherinchee

-chindit

-chindwin

-ching

-chinghai

-chingtao

-chinkapin

-chinkiang

-chino

-chinwag

-chios

-chipolata

-chippewa

-chippy

-chirac

-chirau

-chirico

-chirm

-chirurgeon

-chishima

-chisimaio

-chital

-chitarrone

-chittagong

-chiv

-chivaree

-chlamydate

-chlamydeous

-chlamydospore

-chlodwig

-chloracne

-chlorambucil

-chloramine

-chloramphenicol

-chlorenchyma

-chloroacetic

-chloropicrin

-chloroprene

-chloroquine

-chlorosis

-chlorothiazide

-chlorotic

-chlorous

-chlorpromazine

-chlorpropamide

-chlortetracycline

-choanocyte

-chogyal

-choiseul

-chokebore

-chokecherry

-chokedamp

-choko

-cholecalciferol

-cholecyst

-cholecystectomy

-choli

-cholic

-cholla

-chollers

-cholon

-cholula

-chon

-chondrify

-chondriosome

-chondroma

-chondrule

-choof

-chook

-choom

-chopine

-choplogic

-choragus

-chordophone

-chorea

-choreodrama

-choriamb

-chorley

-choroid

-chorology

-chorusmaster

-chota

-chott

-chough

-choux

-chrematistic

-chresard

-chrism

-chrismatory

-chrisom

-chromatology

-chromatolysis

-chromatophore

-chromogen

-chromogenic

-chromolithograph

-chromolithography

-chromomere

-chromonema

-chromophore

-chromoplast

-chromoprotein

-chromous

-chromyl

-chronaxie

-chronobiology

-chronon

-chrysalid

-chrysarobin

-chryselephantine

-chrysoberyl

-chrysoprase

-chrysostom

-chrysotile

-chthonian

-chubb

-chubbyness

-chudskoye

-chufa

-chukar

-chukka

-chukker

-chunder

-chunderous

-chunnel

-chunter

-chupatti

-chupattis

-chuppah

-chur

-churchgo

-churchwarden

-churchwardens

-churidars

-churinga

-churr

-chuttie

-chyack

-chyle

-chyme

-chymosin

-chymotrypsin

-chymotrypsinogen

-cibber

-ciborium

-cic

-cicala

-cicatricle

-cicatrix

-cicerone

-cichlid

-cichlids

-cienfuegos

-cig

-cii

-cil

-cilice

-cilicia

-ciliolate

-cilium

-cimabue

-cimex

-cimon

-cinchonidine

-cinchonine

-cinchonism

-cine

-cineaste

-cinematheque

-cinematographs

-cineol

-cinerarium

-cinereous

-cinerin

-cingulum

-cinna

-cinnamic

-cinquain

-cinque

-cinquecento

-cinzano

-cipolin

-circassia

-circlorama

-circumbendibus

-circummartian

-circumnutate

-circumsolar

-cirenaica

-cirencester

-cirrate

-cirri

-cirripede

-cirrocumulus

-cirrose

-cirrostratus

-cirsoid

-ciscaucasia

-cisco

-ciskei

-cispadane

-cissoid

-cistaceous

-cisterna

-cistron

-cithara

-cither

-citole

-citreous

-citriculture

-citrin

-citrine

-citrulline

-cittern

-citterns

-ciudad

-civ

-civism

-clachan

-clackmannan

-clactonian

-cladded

-cladoceran

-cladode

-cladophyll

-clairaudience

-clamworm

-clamworms

-clapperboard

-clapperboards

-clapperclaw

-clarino

-claro

-clarts

-clary

-classis

-clastic

-clathrate

-claudication

-clavate

-clavicembalo

-clavicorn

-claviform

-clavius

-claymore

-claypan

-claystone

-cleanskin

-cleanthes

-clearcole

-clearstory

-clearway

-clearways

-clearwing

-cleck

-cleek

-cleethorpes

-cleg

-cleidoic

-cleisthenes

-cleistogamy

-clem

-clemenceau

-cleon

-clepsydra

-cleptomania

-clerestory

-clerihew

-clerkess

-cleruchy

-cleveite

-clianthus

-clichy

-cliffhang

-clii

-clinandrium

-clingfish

-clinkstone

-clinostat

-clinquant

-clippie

-clishmaclaver

-clisthenes

-clitellum

-clitic

-cliv

-clix

-clockmaker

-clomb

-clonus

-closedown

-cloudberry

-cloudscape

-clouet

-clough

-clovis

-clubhaul

-clubland

-clubman

-clucky

-clueless

-clumber

-cluny

-clupeid

-clupeoid

-clustan

-clusterability

-clusterable

-clvi

-clvii

-clwyd

-clxi

-clxii

-clxiv

-clxix

-clxvi

-clxvii

-clydebank

-clype

-clypeus

-clyster

-cnidarian

-cnidoblast

-cnidus

-cnossus

-cnut

-coacervate

-coachwood

-coadjutant

-coagulum

-coahuila

-coalface

-coalfield

-coalfields

-coalfish

-coalmine

-coalmines

-coalport

-coaming

-coatee

-coati

-cobaltite

-cobaltous

-cobber

-cobden

-cobnut

-coburg

-coccid

-coccidioidomycosis

-cocciferous

-coccolith

-coccyx

-cochabamba

-cochleate

-cockalorum

-cockatiel

-cockayne

-cockboat

-cockchafer

-cockcroft

-cockleboat

-cockloft

-cockneyfy

-cocksfoot

-cockspur

-cockswain

-cockup

-cocopan

-cocotte

-cocoyam

-cocteau

-codasyl

-codder

-codicology

-codominate

-codominated

-codominates

-codominating

-codswallop

-coedit

-coelacanth

-coelenterate

-coelenteron

-coeliac

-coelom

-coelostat

-coenacle

-coenobite

-coenocyte

-coenurus

-coercibility

-coessential

-coetaneous

-coeur

-coexecutor

-coextend

-coff

-cofferdam

-coggan

-coglike

-cogon

-cohabitee

-cohabitees

-cohesional

-cohobate

-cohune

-coimbatore

-coimbra

-coir

-coire

-coit

-cokuloris

-colbert

-colcannon

-colchester

-colchicine

-colcothar

-colectomy

-colemanite

-coleopteran

-coleoptile

-coleorhiza

-coles

-colet

-colewort

-coley

-colicroot

-colicweed

-coligny

-collapsar

-collarette

-collectanea

-collembolan

-collenchyma

-collisionless

-collocutor

-colloid

-collop

-collotype

-colluvium

-collywobbles

-colmar

-colocynth

-colombes

-colonitis

-colonsay

-coloquintida

-colorate

-colossae

-colossians

-colotomy

-colpitis

-colporteur

-colquhoun

-colubrid

-colubrine

-colugo

-colum

-columbarium

-columbic

-columbite

-columbium

-columbous

-columella

-columnwise

-colure

-coly

-comaneci

-comate

-comatulid

-combe

-comecon

-comedo

-comenius

-comfrey

-comines

-comitia

-commeasure

-commedia

-commendam

-commines

-commis

-commo

-commodus

-commonable

-communicatie

-comnenus

-como

-comorin

-comoro

-comp

-compadre

-compander

-companders

-compilability

-complect

-compony

-compossible

-compostela

-compotation

-comprador

-comstockery

-comte

-conan

-conation

-conative

-conatus

-concelebrate

-concensus

-concent

-concertino

-concha

-conchie

-conchiferous

-conchiolin

-conchobar

-conchoid

-conchoidal

-conchology

-condillac

-condottiere

-condyle

-condyloid

-condyloma

-confessant

-configurationism

-confirmand

-confiteor

-confiture

-conformability

-congeneric

-congius

-conglobate

-conglutinant

-congou

-congrats

-congruential

-congruentially

-conidiophore

-conidium

-coniine

-coniology

-conjuction

-connacht

-connaught

-connemara

-connexions

-conodont

-conoid

-conoscenti

-conquian

-conscionably

-consentient

-conservatoire

-conservatorium

-consett

-consocies

-consolute

-constantan

-constatation

-contactor

-contango

-contemn

-continously

-conto

-contradance

-contrasuggestible

-contrate

-contravallation

-contrayerva

-contredanse

-controllee

-controllees

-conure

-convertite

-convolvulaceous

-cooee

-cookhouse

-coolabah

-coolgardie

-coom

-cooncan

-coontie

-cooperativity

-coopt

-coordinal

-cootch

-copaiba

-copal

-copalm

-copepod

-copita

-copley

-coprolalia

-coprology

-coprophagous

-coprophilia

-coprophilous

-copygraph

-copyread

-coquelicot

-coquilla

-coquito

-coraciiform

-coracle

-coracoid

-corallite

-coralloid

-coralroot

-coranto

-corban

-corbeil

-corbicula

-corbie

-corbusier

-corby

-corcyra

-corday

-cordeliers

-cordierite

-cordillera

-cordilleras

-cordoba

-cordova

-corella

-corelli

-corf

-corfam

-corfu

-corgi

-coriaceous

-corinthians

-coriolis

-corium

-corkage

-corkwood

-cormel

-cormophyte

-corncockle

-corncrake

-corneille

-cornel

-cornelian

-cornetcy

-cornett

-cornflakes

-cornflour

-cornhusk

-corniculate

-cornmonger

-corno

-cornstone

-cornu

-cornute

-corody

-corollaceous

-coromandel

-coronach

-corot

-corozo

-correggio

-corregidor

-correlator

-corrida

-corrientes

-corrival

-corrodent

-corrody

-corrugator

-corsac

-corselet

-corsetry

-corticosterone

-corticotrophin

-cortisol

-cortot

-corunna

-corves

-corvine

-corymb

-coryphaeus

-coryza

-cosa

-cosecant

-cosech

-coseismal

-cosenza

-cosgrave

-cosignatory

-cosmine

-cosmodrome

-cosmoid

-cosmopolis

-cosmotron

-cospar

-coss

-cossie

-costard

-costate

-costermonger

-costotomy

-costrel

-cotan

-cotemporary

-cotenant

-coterminosity

-coth

-cothurnus

-cotidal

-cotonou

-cotopaxi

-cotquean

-cotswold

-cotswolds

-cottbus

-cottian

-cottonade

-cottonweed

-cotyloid

-coucal

-couchant

-couchette

-coulee

-coulibiaca

-couloir

-coulometer

-coulometers

-coumarin

-coumarone

-counterattraction

-counterblast

-countercharge

-counterculture

-counterfactual

-counterglow

-counterinsurgency

-counterposition

-counterproof

-countershade

-countershaded

-countershades

-countershading

-countersubject

-countertype

-counterweigh

-counterword

-counterwork

-courante

-courantyne

-courbet

-courbevoie

-coureur

-courgette

-courlan

-coursework

-courtelle

-courtrai

-couthie

-couvade

-coverdale

-coverley

-coversed

-covin

-cowberry

-cowbind

-cowes

-cowfish

-cowherb

-cowitch

-cowk

-cowley

-cowpat

-cowper

-cowskin

-coxa

-coxalgia

-coxcombry

-coxsackie

-coxswain

-coyotillo

-coz

-crabbe

-crabmeat

-crabstick

-crackbrain

-crackbrained

-cracket

-crackjaw

-cracknel

-cracksman

-cracow

-craddock

-cradlesong

-craigie

-craiova

-crake

-crambo

-cramoisy

-cran

-cranach

-cranage

-cranesbill

-craniology

-craniometer

-craniometry

-craniotomy

-cranko

-crankpin

-cranmer

-crannog

-cranwell

-crapaud

-crapulent

-craquelure

-crashable

-crashaw

-crasis

-crassulaceous

-crassus

-cratch

-craunch

-crawley

-cray

-creamcups

-creamlaid

-creatine

-creatinine

-credendum

-creel

-creels

-creepie

-cremator

-cremona

-crenel

-creodont

-creophagous

-crepitus

-cressy

-cresylic

-creuse

-crewe

-cribellum

-cricoid

-crikey

-crim

-crimmer

-crimple

-crimplene

-cringle

-crinite

-crinkleroot

-criollo

-cripes

-crippen

-cripps

-criseyde

-crispate

-crispation

-crispbread

-crispi

-crissum

-crista

-cristate

-cristobalite

-croce

-crocein

-crocidolite

-crocoite

-croesus

-crombec

-cromlech

-cronk

-cronus

-crosier

-crossbeam

-crosscheck

-crosse

-crossfire

-crosshead

-crossjack

-crossopterygian

-crosspool

-crossruff

-crosstabulate

-crosstabulation

-crosstie

-crossties

-crotone

-crotonic

-croute

-crowboot

-crownpiece

-crownwork

-croze

-crozier

-cru

-cruces

-crucian

-cruck

-cruiserweight

-cruiseway

-crumhorn

-crummock

-crunode

-crura

-crural

-crus

-crusado

-cruse

-cruyff

-cruzado

-cruzeiro

-crwth

-cryer

-cryocable

-cryohydrate

-cryometer

-cryophyte

-cryoplankton

-cryptaesthesia

-cryptanalyze

-cryptoclastic

-cryptocrystalline

-cryptogam

-cryptozoic

-cryptozoite

-crystallographica

-ctenidium

-ctenoid

-ctenophore

-ctesiphon

-cubane

-cubeb

-cubiculum

-cubital

-cucking

-cuckooflower

-cuckoopint

-cuculiform

-cudbear

-cudgerie

-cudweed

-cuenca

-cuernavaca

-cuesta

-cufic

-cuirass

-cuirassier

-cuisse

-culch

-culebra

-culet

-culicid

-cullet

-cullis

-culloden

-cully

-culm

-culmiferous

-cultrate

-culverin

-cum

-cumae

-cumber

-cumbernauld

-cumbria

-cummerbund

-cumquat

-cumshaw

-cumulet

-cumuliform

-cumulonimbus

-cumulostratus

-cunaxa

-cuneal

-cuneo

-cunjevoi

-cupel

-cuppa

-cuprum

-curacy

-curare

-curarine

-curassow

-curch

-curiosa

-curitiba

-curlpaper

-currajong

-currawong

-currycomb

-curtin

-curzon

-cusco

-cusec

-cush

-cushat

-cusk

-cuso

-customable

-custos

-custumal

-cutcherry

-cuticula

-cutin

-cutis

-cuttack

-cuttle

-cutty

-cuvette

-cuxhaven

-cuyp

-cuzco

-cwmbran

-cyan

-cyanamide

-cyanine

-cyanite

-cyanocobalamin

-cyanogen

-cyanohydrin

-cyanosis

-cyanotype

-cybele

-cyber

-cybernate

-cyclamen

-cyclicity

-cycloalkane

-cyclograph

-cycloheptatrienyl

-cyclohexane

-cyclohexyl

-cyclonite

-cycloparaffin

-cyclopedia

-cyclopentadienyl

-cyclopentane

-cycloplegia

-cyclopropane

-cyclosis

-cyclostome

-cyclostyle

-cyclothymia

-cyclotomy

-cyder

-cydnus

-cylindroid

-cylix

-cyma

-cymar

-cymatium

-cymbalo

-cyme

-cymene

-cymogene

-cymograph

-cymoid

-cymophane

-cymose

-cymru

-cynghanedd

-cyperaceous

-cyprinid

-cyprinodont

-cyprinoid

-cypsela

-cyrenaica

-cyrene

-cystectomy

-cysticercoid

-cystine

-cystitis

-cystocarp

-cystocele

-cystoid

-cystolith

-cystoscope

-cystotomy

-cythera

-cytidine

-cytochemical

-cytochemically

-cytochrome

-cytogenesis

-cytogenetics

-cytokinesis

-cyton

-cytoplast

-cytotaxonomy

-cyzicus

-czardas

-czarevna

-dabchick

-dabster

-dace

-dacha

-dachau

-dachsund

-dacia

-dacoit

-dacoity

-dacron

-dactylogram

-dactylography

-dactylology

-dado

-dadra

-dagan

-dagga

-daggerboard

-dagoba

-dagon

-daguerre

-dahna

-daimyo

-dairen

-daisycutter

-dak

-dal

-daladier

-dalai

-dalasi

-dalesman

-dalhousie

-dallapiccola

-dalmatia

-damietta

-damodar

-dampcourse

-dampier

-damselfish

-dandie

-dandiprat

-daraf

-darbies

-dardanelles

-dardanus

-daresbury

-darfur

-darg

-dargah

-daric

-dario

-dariole

-darkend

-darlan

-darmstadt

-darnel

-darnley

-darogha

-dartboard

-dasheen

-dashiki

-dashpot

-dassie

-dasyure

-databank

-datary

-datatype

-datcha

-dato

-datolite

-datuk

-daube

-daubery

-daubigny

-daudet

-daugava

-daugavpils

-daumier

-davao

-daw

-dawes

-dayak

-dayan

-dayboy

-dayfile

-dayflower

-dayfly

-dayspring

-deaconry

-deadstarting

-deakin

-dealfish

-dearchive

-dearchived

-dearchives

-dearchiving

-deary

-deassignment

-deathtrap

-debag

-debarred

-debe

-debrecen

-debs

-debus

-debye

-decanal

-decane

-decanedioic

-decani

-decanoic

-decapolis

-decarboxylation

-decastyle

-deccan

-decelerometer

-decemvirate

-decenary

-decentralist

-decern

-decimetric

-decisionmaker

-declinometer

-declog

-declogged

-declogging

-declogs

-decluster

-declustered

-declustering

-declusters

-declutch

-declutched

-declutches

-declutching

-decoke

-decompound

-deconstruct

-decreet

-decubitus

-decurion

-decurrent

-decury

-dedal

-deek

-deemster

-deergrass

-deerhound

-deferable

-defilade

-definiendum

-definiens

-deflocculate

-degassed

-degasses

-deglutinate

-deglutition

-degression

-degust

-dehisce

-dehiscent

-dehorn

-dehra

-dehydrogenase

-dehydrogenate

-dehydroretinol

-deianira

-deicide

-deictic

-deific

-deiform

-deil

-deipnosophist

-deixis

-dejecta

-dekker

-dekko

-delacroix

-delagoa

-delaine

-delaunay

-dele

-deledda

-delegatory

-delgado

-delimeter

-delimeters

-deliquescence

-delitescence

-deltiology

-demavend

-deme

-dement

-demerara

-demesne

-demeter

-demibastion

-demicanton

-demilune

-demimondaine

-demimonde

-demirel

-demirelief

-demirep

-demisemiquaver

-demist

-demivierge

-demivolt

-demob

-democritus

-demoiselle

-demonism

-demonolater

-demonolatry

-demould

-demoulded

-demoulding

-demoulds

-dempster

-demulsify

-demy

-denarius

-denary

-dendral

-dendrochronologist

-dendrochronologists

-dendrochronology

-dendrogram

-dendrograms

-dengue

-denitrate

-deniz

-denning

-dentex

-dentilabial

-dentilingual

-dentoid

-denudate

-deodand

-deodar

-deontic

-deoxygenate

-departmentalism

-depasture

-dependant

-dependants

-depicture

-deplume

-depressomotor

-depside

-depurative

-deraign

-derailleur

-derain

-derbent

-deregister

-deregulatory

-derestrict

-derisible

-dermatitis

-dermatogen

-dermatoglyphics

-dermatome

-dermatophyte

-dermatophytosis

-dermatoplasty

-dermis

-dermoid

-dero

-derringer

-derry

-derv

-derwent

-derwentwater

-desai

-desalinate

-deschamps

-deschool

-descriptional

-descriptivism

-deselect

-deselected

-deselecting

-deselection

-deselections

-deselects

-desicate

-designational

-desinence

-deskill

-deskilled

-deskilling

-desman

-desmid

-desmoid

-desmoulins

-despenser

-despoilation

-despoliation

-despumate

-desquamate

-dessalines

-dessau

-dessertspoon

-dessiatine

-dessicator

-dessicators

-deterge

-detmold

-detrend

-detrended

-detrending

-detrends

-detrition

-detrude

-detruncate

-deurne

-deuteragonist

-deuteranope

-deuteride

-deuterogamy

-deutoplasm

-deutsch

-deva

-devanagari

-deventer

-devi

-devilfish

-dewan

-dewberry

-dewclaw

-dewsbury

-dextran

-dextrin

-dextroamphetamine

-dextroglucose

-dextrogyrate

-dextrorotation

-dextrorse

-dezhnev

-dhahran

-dhak

-dharna

-dhaulagiri

-dhobi

-dhole

-dhoti

-dhow

-diablerie

-diabolo

-diacaustic

-diacetylmorphine

-diacid

-diacidic

-diactinic

-diadelphous

-diadic

-diaeresis

-diagenesis

-diageotropism

-diaghilev

-diagraph

-diallage

-dialogism

-diamantine

-diamegnetism

-diamine

-diamondback

-diandrous

-dianetics

-dianoetic

-dianoia

-diapedesis

-diapente

-diaphoresis

-diaphoretic

-diaphototropism

-diaphysis

-diapir

-diarch

-dias

-diascope

-diastalsis

-diastase

-diastasis

-diastema

-diastyle

-diatessaron

-diathermancy

-diazine

-diazo

-diazole

-diazomethane

-diazonium

-dibasic

-dibbuk

-dibranchiate

-dibromide

-dicarbonyl

-dicast

-dicephalous

-dichasium

-dichlamydeous

-dichloroethanol

-dichromaticism

-dichromic

-dichroscope

-diclinous

-dicuss

-dicynodont

-diderot

-didgeridoo

-didymium

-didymous

-didynamous

-dieback

-diecious

-diefenbaker

-dien

-diencephalon

-dieppe

-diesis

-diestock

-diestrus

-diffusivity

-digamy

-digestant

-digged

-dight

-digitalism

-digitiform

-digitoxin

-digitron

-dihydric

-dihydrofolate

-dikkop

-diktat

-dilatancy

-dilatant

-dilly

-dimashq

-dimenhydrinate

-dimercaprol

-dimethylformamide

-dimethylpropane

-dimethylsulphoxide

-dimetric

-dimissory

-dimity

-dimorph

-dinar

-dineric

-dinge

-dinitrobenzene

-dinitrogen

-dink

-dinkum

-dinky

-dinoflagellate

-dinothere

-dio

-diodorus

-dioestrus

-diol

-diomede

-diomedes

-dionysius

-diophantus

-diopside

-dioptase

-dior

-dioxan

-dipeptide

-dipetalous

-diphenylamine

-diphenylhydantoin

-diphosgene

-diphyletic

-diphyllous

-diphyodont

-diplegia

-diploblastic

-diplocardiac

-diplococcus

-diplont

-diplopia

-diplopod

-diplosis

-diplostemonous

-dipnoan

-dippy

-diprotodont

-dipteral

-dipteran

-dipterocarpaceous

-dipterous

-diriment

-dirk

-dirndl

-disaccredit

-disafforest

-disbranch

-disbud

-discalced

-disciplinant

-disciplinarianism

-disclimax

-discobolus

-discommodity

-discommon

-disconsider

-discotheque

-discovert

-disembogue

-disembroil

-disenable

-disentail

-disentitle

-disentomb

-disentwine

-disepalous

-disforest

-dishpan

-dishtowel

-disject

-disjunctor

-disjunctors

-disoperation

-dispend

-dispermous

-dispersability

-dispersable

-dispersity

-dispersoid

-displayable

-disproven

-dissappear

-disseminule

-dissentious

-dissepiment

-distich

-distichous

-distrainee

-distringas

-distrito

-distrubuted

-disulfiram

-disulphate

-disulphide

-disulphuric

-dita

-ditheism

-dithionite

-dithionous

-dithyramb

-dithyrambic

-dittander

-dittany

-dittography

-diu

-diuresis

-diuretic

-div

-divaricator

-diversiform

-diverticulitis

-diverticulosis

-diverticulum

-divi

-divinylbenzene

-divisibly

-divulgate

-diyarbakir

-dizen

-djailolo

-djaja

-djajapura

-djambi

-djebel

-djerba

-djinni

-djokjakarta

-doab

-dobby

-dobla

-dobro

-dobruja

-dobsonfly

-dockland

-docklands

-doddle

-dodecagon

-dodecanese

-dodecanoic

-dodecaphonic

-dodecasyllable

-dodgem

-dodoma

-doek

-doenitz

-doeskin

-dogfishs

-dogger

-doggo

-dogman

-dogsbody

-dogvane

-dogy

-doh

-doha

-dojo

-dolabriform

-dolby

-dolerite

-dolichocephalic

-doline

-dollarbird

-dollarfish

-dollfuss

-dolman

-dolmas

-dolmen

-dolmetsch

-dolorimetry

-doloroso

-dom

-domett

-dominee

-dominie

-dominium

-dominoes

-donatello

-donatus

-donau

-donbass

-donga

-donjon

-donne

-donnert

-donny

-doodah

-doorframe

-doorn

-doornik

-dopa

-dordogne

-dordrecht

-dormobile

-dornbirn

-dornick

-dorp

-dorpat

-dorsad

-dorsiferous

-dorsigrade

-dorsiventral

-dorsoventral

-dorsum

-dort

-dorty

-dory

-dosshouse

-dost

-dotation

-dottle

-douai

-douala

-douay

-doublure

-doubs

-douc

-douceur

-doukhobors

-doum

-doura

-dourine

-douro

-douroucouli

-dovap

-dowable

-dowding

-dowery

-downcome

-downcomer

-downhole

-downpatrick

-downpipe

-downthrow

-downwash

-downweight

-downweighted

-downweighting

-downwell

-dowsabel

-doxastic

-doxographer

-doxology

-doxy

-doyen

-doyley

-drabbet

-draff

-draggletailed

-draghound

-dragoman

-dragonnade

-dragonroot

-dragrope

-drail

-dramatis

-drammen

-drancy

-drava

-drayhorse

-dree

-dreggy

-dreich

-dreiser

-drenthe

-dresden

-drillstock

-drin

-drinkwater

-dripstone

-drogheda

-drogue

-droit

-dromond

-drongo

-drongos

-droob

-dropsonde

-droshky

-druffen

-drunkeness

-drupelet

-dryopithecine

-drysdale

-drystone

-dubai

-dubbin

-dubrovnik

-dubuffet

-duccio

-duchamp

-dudeen

-duello

-duero

-dufy

-duhamel

-duiker

-duka

-dukhobors

-dulciana

-dulia

-dulosis

-dumas

-dumbell

-dumbells

-dumfries

-dumortierite

-dumyat

-duna

-dunaj

-dunant

-dundalk

-dundee

-dunfermline

-dungas

-dungeness

-dunite

-duniwassal

-dunkerque

-dunlin

-dunnage

-dunnakin

-dunnite

-dunno

-dunnock

-dunny

-dunois

-dunoon

-dunsany

-dunsinane

-dunstable

-dunstan

-dunt

-duntroon

-dunwoody

-duodenary

-duodenitis

-duotone

-dup

-duparc

-dupatta

-dupleix

-duplet

-dupondius

-duppy

-duque

-duramen

-durative

-durazzo

-durbar

-durex

-durgah

-durian

-durmast

-duro

-durra

-durst

-durum

-durzi

-dushanbe

-dustability

-dustable

-dustcart

-dustcarts

-dustmen

-dustsheet

-dustsheets

-duumvir

-duumvirate

-duvalier

-duvet

-dux

-dwale

-dybbuk

-dyfed

-dykes

-dynameter

-dynamicism

-dynamoelectric

-dyscrasia

-dysgraphia

-dysmenorrhoea

-dysphemism

-dyspnoea

-dysteleology

-dysthymia

-dysuria

-dytiscid

-dyula

-ealdorman

-ealing

-eanes

-earbash

-earhart

-earlap

-earless

-earom

-earthlight

-earthman

-earthmove

-earthnut

-earthrise

-eastmost

-eatage

-eblis

-ebon

-ebonite

-ebracteate

-ebullioscopy

-eburnation

-ecbatana

-ecbolic

-ecce

-ecchymosis

-ecclesall

-ecclesia

-ecclesiolatry

-eccrinology

-ecdysone

-ecevit

-echard

-echinate

-echinococcus

-echinoid

-echinus

-echoism

-echolalia

-echopraxia

-echovirus

-eck

-eckhart

-eclampsia

-eclipsis

-eclogite

-ecocide

-ecowas

-ecstacy

-ecthyma

-ectocrine

-ectoenzyme

-ectophyte

-ectopia

-ectoproct

-ectosarc

-ectype

-edale

-edam

-eddo

-eddystone

-ede

-edessa

-edgehill

-edgeworth

-edile

-edirne

-edom

-educatory

-educt

-eelpout

-eelworm

-eff

-effable

-effendi

-efficency

-effusiometer

-efta

-eftsoons

-egest

-egesta

-egis

-eigenfrequencies

-eigenfrequency

-eigenstructure

-eigensystem

-eigensystems

-eiger

-eightsome

-eirenic

-eirenicon

-eisegesis

-eisk

-elaeoptene

-elagabalus

-elam

-eland

-elasmobranch

-elasmosaur

-elastance

-elasticate

-elasticated

-elasticates

-elasticating

-elastoplast

-elat

-elaterid

-elaterin

-elaterium

-elbe

-elbrus

-elburz

-eld

-eldo

-eldritch

-elea

-elecampane

-electrochemist

-electrochemists

-electrograph

-electromerism

-electronvolt

-electrophone

-electrostriction

-electrotechnology

-electrotonus

-electrovalency

-electroviscous

-eleemosynary

-eleia

-elemi

-elenchus

-eleoptene

-eleusis

-elevon

-elflock

-elgon

-elidible

-elis

-elkhound

-eloign

-elsan

-elusion

-elyot

-embolectomy

-embolus

-embow

-embrectomy

-embryectomy

-embus

-emden

-emesis

-emetine

-emf

-emiscan

-emmen

-emmenagogue

-emmer

-emmetropia

-emotivism

-empale

-empassion

-empedocles

-emphasing

-empolder

-empyema

-empyrean

-empyreuma

-emulsoid

-enantiomorph

-enarthrosis

-enate

-encaenia

-enceladus

-encephalin

-encephalograph

-encephalography

-encephaloma

-encephalomyelitis

-enchiridion

-enchondroma

-enchorial

-encomiast

-encrinite

-enculturation

-enderby

-endo

-endocarditis

-endocardium

-endocarp

-endocentric

-endocranium

-endoneurium

-endopeptidase

-endosome

-endostosis

-endothecium

-endothelioma

-endothelium

-endover

-endplate

-endplay

-energid

-energumen

-enface

-enfeoff

-enfilade

-enforcable

-engadine

-engrail

-eniwetok

-ennage

-ennead

-enneagon

-enneahedron

-ennerdale

-ennervation

-ennis

-enniskillen

-ennius

-enosis

-enounce

-enow

-enphytotic

-enschede

-ensor

-entasis

-entebbe

-entelechy

-entellus

-enteritis

-enterogastrone

-enterokinase

-enteron

-enterostomy

-enterotomy

-enterovirus

-enthetic

-enthymeme

-entoblast

-entomic

-entomostracan

-entophyte

-entopic

-entozoic

-entozoon

-entrammel

-entrechat

-entremets

-entresol

-entryism

-entryist

-entryists

-entryname

-entrynames

-entrypoint

-entrypoints

-enugu

-enure

-enuresis

-enver

-enwomb

-enwreath

-enzed

-enzootic

-enzymolysis

-eobiont

-eogene

-eolian

-eolic

-eolipile

-eolith

-eolithic

-eonian

-eos

-eosin

-eosinophil

-epact

-epaminondas

-eparch

-eparchy

-epencephalon

-epenthesis

-epergne

-epexegesis

-ephah

-ephebe

-ephemeron

-ephesians

-ephod

-ephor

-epiblast

-epiboly

-epicalyx

-epicanthus

-epicedium

-epiclesis

-epicontinental

-epicotyl

-epicrisis

-epicritic

-epictetus

-epicycloidal

-epidaurus

-epideictic

-epidiascope

-epididymis

-epidote

-epidural

-epifocal

-epigastrium

-epigeal

-epigene

-epigenous

-epigeous

-epiglottis

-epigone

-epigynous

-epilate

-epileptoid

-epilimnion

-epimere

-epimerism

-epimorphosis

-epimysium

-epinasty

-epinephrine

-epineurium

-epiphenomenalism

-epiphenomenon

-epiphragm

-epiphytotic

-epirogeny

-epirus

-episcopacy

-episematic

-epispastic

-epistasis

-epistaxis

-episternum

-epithalamium

-epithelioma

-epizoic

-epizoon

-epizootic

-eponym

-eponymy

-epos

-epoxide

-epping

-eprom

-eproms

-epyllion

-equifrequent

-equifrequently

-equilibrant

-equimolecular

-equipartition

-equites

-equuleus

-eradiate

-erciyas

-erebus

-eremite

-erepsin

-erethism

-erevan

-erfurt

-ergastoplasm

-ergatocracy

-erhard

-ericaceous

-eridanus

-erinaceous

-eringo

-erinyes

-eris

-eristic

-erith

-erivan

-erk

-erlang

-erlangen

-erlanger

-erlking

-erne

-erotema

-erotology

-erotomania

-errhine

-errupt

-erruptive

-erst

-erubescence

-eruct

-erumpent

-erymanthus

-eryngo

-erysipelas

-erysipeloid

-erythema

-erythrism

-erythrite

-erythritol

-erythroblast

-erythroblastosis

-erythrocyte

-erythrocytometer

-erythromycin

-erythropoiesis

-erzgebirge

-erzurum

-esaki

-esau

-esbjerg

-escalope

-escaut

-eschalot

-escharotic

-eschatology

-escoffier

-escolar

-escribe

-escuage

-escudo

-escurial

-esdraelon

-eserine

-esher

-esky

-espalier

-esparto

-espoo

-esquimau

-esro

-essaouira

-essequibo

-essonite

-essonne

-estancia

-este

-esterase

-esterify

-esthonia

-estienne

-estipulate

-estival

-estivate

-estivation

-estoppel

-estovers

-estrade

-estradiol

-estragon

-estreat

-estremadura

-estrin

-estriol

-etaerio

-etalon

-etamine

-etaoin

-etchant

-eteocles

-eterne

-etesian

-ethene

-etherege

-etherify

-ethmoid

-ethnarch

-ethnobotany

-ethnogeny

-ethonone

-ethoxide

-ethoxyethane

-ethylbenzene

-ethyne

-etiolate

-etna

-etymon

-etzel

-eubacteria

-euboea

-eucaine

-eucalyptol

-euchlorine

-euchromatin

-eucken

-eudemon

-eudemonia

-eudemonics

-eudiometer

-eudoxus

-eugenol

-eulachon

-eulogia

-eupatrid

-eupen

-eupepsia

-euphausiid

-euphonic

-euphorbiaceous

-euphoriant

-euphrasy

-euphroe

-euploid

-eupnoea

-euratom

-eure

-eurhythmy

-euripus

-eurypterid

-eurythermal

-eurytropic

-eusebius

-eusporangiate

-eutectoid

-euxenite

-evacuant

-evaginate

-evanish

-evaporable

-evaporimeter

-evaporimeters

-evite

-exanthema

-exarate

-exarch

-exarchate

-excaudate

-exclaustration

-exeat

-executability

-exedra

-exemplum

-exequatur

-exequies

-exergue

-exigible

-eximious

-exine

-exitance

-exo

-exocarp

-exocentric

-exoderm

-exodontics

-exonym

-exopeptidase

-exophthalmic

-exophthalmos

-exoplasm

-exorable

-exosystem

-exosystems

-exotoxin

-expellant

-experientialism

-explicite

-explicitely

-explicity

-explictly

-exponible

-expressivity

-expresso

-exsanguine

-exsect

-exstrophy

-extention

-extentions

-extine

-extinguishant

-extracanonical

-extrados

-extraposition

-extremadura

-exuviae

-exuviate

-eyas

-eyebath

-eyeblack

-eyehook

-eyeleteer

-eyetie

-eyot

-eyots

-eyra

-eyrir

-eysenck

-fab

-fabaceous

-fabians

-fabius

-fabliau

-fabre

-facebar

-facetiae

-facia

-facilties

-faculae

-fadden

-fadge

-faecal

-faeces

-faenza

-faeroes

-faeroese

-faff

-fagaceous

-fahlband

-faial

-faille

-fairbanks

-fairweather

-fairyfloss

-faiyum

-falbala

-falchion

-falconiform

-falconine

-faldstool

-falerii

-fallal

-fallfish

-falseties

-falsety

-falsework

-falsies

-falster

-faltboat

-falun

-famagusta

-familist

-famulus

-fanagalo

-fandangle

-fanfani

-fanfaronade

-fangio

-fango

-fankle

-fanon

-fantail

-fantasm

-fantast

-fantoccini

-fantom

-faqir

-faradic

-faradism

-farandole

-farci

-farcy

-fard

-fardel

-farinaceous

-farinose

-farl

-farrier

-farriery

-farside

-fart

-fasciate

-fascine

-fash

-fashoda

-fastback

-fastigiate

-fatah

-fatidic

-faucal

-fauces

-faugh

-faunus

-fauteuil

-fauve

-faveolate

-favrile

-favus

-fayalite

-fayum

-feal

-fearnought

-featheredge

-featherstitch

-feaze

-febricity

-febrifacient

-febrifuge

-fechner

-feck

-fecula

-fedayee

-feedbag

-feeze

-feininger

-felafel

-fellmonger

-felloe

-felo

-felucca

-fencible

-fenestella

-fenestra

-fennelflower

-feoff

-feoffee

-feoffment

-ferbam

-fere

-feretory

-fergana

-feria

-fermanagh

-fernandel

-ferrari

-ferreous

-ferricyanic

-ferricyanide

-ferritin

-ferrocene

-ferrochromium

-ferroconcrete

-ferrocyanic

-ferrocyanide

-ferrofluid

-ferrol

-ferromagnesian

-ferromanganese

-ferrosilicon

-ferula

-ferule

-fesse

-festal

-festschrift

-fetial

-feticide

-fetiparous

-fetterlock

-feverfew

-feverwort

-feydeau

-fiacre

-fibrefill

-fibriform

-fibrinogen

-fibrinolysin

-fibrinolysis

-fibrinous

-fibro

-fibroblast

-fibrocement

-fibroid

-fibroin

-fibroma

-fibrositis

-fichte

-ficino

-ficticious

-fid

-fiddlewood

-fideicommissary

-fideicommissum

-fidelism

-fidge

-fidus

-fieldmouse

-fieldpiece

-fieldsman

-fieri

-fiesole

-fifa

-figuline

-figurant

-figwort

-filable

-filariasis

-filecard

-filefish

-filespace

-filestore

-filiate

-filicide

-fillagree

-fillmore

-filmset

-filmsetting

-filoplume

-filose

-filoselle

-fimble

-finable

-finalism

-finchley

-fineable

-finfoot

-fingerbreadth

-fingermark

-fingermarked

-fingermarking

-fingermarks

-fingerstall

-fingerstalls

-fingo

-finisterre

-finitary

-finnan

-finner

-finney

-finnmark

-fino

-finochio

-fiorin

-fipple

-firdausi

-fireback

-firebomb

-firebrat

-firecrest

-firedog

-firedrake

-firenze

-firepan

-firestorm

-firethorn

-firewarden

-firewater

-firkin

-firry

-fishbolt

-fishfinger

-fishgig

-fishskin

-fissipalmate

-fissiped

-fissirostral

-fistmele

-fistula

-fistulous

-fitchew

-fittipaldi

-fitzsimmons

-fiume

-fivepenny

-fivepins

-fizgig

-flabellum

-flagelliform

-flagellum

-flaggy

-flagrante

-flagstad

-flambeau

-flamborough

-flamelet

-flamelets

-flamingoes

-flamininus

-flaminius

-flamsteed

-flanch

-flannelette

-flashcube

-flashcubes

-flasket

-flatette

-flatfish

-flatfishes

-flatlet

-flatlets

-flatling

-flatmate

-flatmates

-flatways

-flaubert

-flaunch

-flavescent

-flavin

-flavine

-flavone

-flavoprotein

-flavopurpurin

-flavorous

-flaxman

-fleabite

-fleabites

-fleam

-fleapit

-fleapits

-fledgy

-flense

-fleurette

-fleury

-flexitime

-flexo

-fley

-fleysome

-flinders

-flitch

-flite

-floccose

-flocculant

-flocculants

-flocculent

-flocculus

-floccus

-flodden

-flong

-floreated

-flores

-florey

-floribunda

-florilegium

-florio

-flory

-flos

-flotow

-flowability

-flowerbed

-flowerless

-fluorene

-fluoric

-fluorometer

-fluorophore

-fluoroscope

-fluoroscopy

-fluorosis

-fluorosulphuric

-fluviomarine

-fluxmeter

-fluxmeters

-flyback

-flyblow

-flybook

-flyleaves

-flyte

-flytrap

-flytraps

-foch

-fock

-foehn

-foetal

-foetation

-foeticide

-foetor

-fogbow

-fogbows

-fogdog

-foggia

-foie

-foin

-folacin

-foliar

-folie

-foliolate

-foliose

-foliot

-foliots

-folium

-folkestone

-folketing

-folkmoot

-folliculin

-folsom

-fonda

-fondant

-fondants

-fonseca

-fontanelle

-fonteyn

-footpaths

-footplate

-footplates

-footsie

-footslogged

-footslogging

-footstalk

-footstock

-footworn

-foramen

-foraminifer

-forasmuch

-forby

-forcemeat

-fordone

-forecourse

-forecourt

-forecourts

-foredo

-foredoom

-foredoomed

-forefend

-foregut

-forehock

-foreshock

-forespent

-forestaysail

-foretooth

-foretop

-foretriangle

-forewent

-forewind

-forewing

-forfar

-forficate

-forgat

-forint

-forme

-formfeed

-formfeeds

-formicary

-formicate

-formication

-formulism

-formwork

-fornenst

-fornix

-forsee

-forseen

-forspeak

-forster

-forsterite

-fortaleza

-fortepiano

-fortis

-fortissimo

-fortuitism

-fortuna

-forwhy

-forzando

-fosbury

-fossa

-fosse

-fossette

-fossick

-fotheringhay

-foucault

-foucquet

-foulard

-fourpence

-fourpenny

-foveola

-fowey

-fowliang

-foxfire

-foyboat

-fractocumulus

-fractostratus

-frae

-fraenum

-fragonard

-fraise

-fraktur

-framboesia

-francolin

-franger

-frangipane

-frankalmoign

-frass

-fratchy

-fraxinella

-freebie

-freedomites

-freelance

-freemartin

-freemason

-freesheet

-freesheets

-freightliner

-fremantle

-fremitus

-frenulum

-frenum

-friarbird

-fricasee

-fringilline

-frippet

-frisket

-froe

-froebel

-frogfish

-frogged

-frogging

-froghopper

-frogmarch

-frogmouth

-frogspawn

-froissart

-frome

-fromenty

-fromm

-fronde

-frondescence

-frons

-frontenac

-frontlet

-frontogenesis

-frontolysis

-frontrunner

-frontwards

-frore

-froude

-frow

-frowst

-fructiferous

-frugivorous

-fruitarian

-frumentaceous

-frumenty

-frunze

-frustule

-frutescent

-fuad

-fubsy

-fuchsin

-fuckwit

-fucoid

-fugacious

-fugard

-fugato

-fugger

-fugio

-fukien

-fukuda

-fukuoka

-fukushima

-fula

-fulani

-fulgurite

-fulmar

-fulminic

-fulminous

-fulvous

-fumaric

-fumatorium

-fumatory

-fumitory

-funchal

-fundi

-fundus

-fundy

-funfair

-fungistat

-funicle

-furan

-furfur

-furfuraceous

-furfuraldehyde

-furfuran

-furioso

-furmenty

-furnivall

-furphy

-furred

-fusain

-fuscous

-fushih

-fushun

-fusionism

-fustanella

-fustic

-futtock

-futurist

-futurists

-futurology

-fuzzily

-fyke

-fylde

-fylfot

-fyn

-fyrd

-gabar

-gabelle

-gaberlunzie

-gabion

-gabionade

-gablet

-gabo

-gabor

-gaborone

-gaby

-gaddafi

-gadhelic

-gadid

-gadoid

-gadolinite

-gadroon

-gadsden

-gaea

-gaekwar

-gaffsail

-gagauzi

-gahnite

-gaikwar

-gaillard

-gaiseric

-gaitskell

-gaius

-galactagogue

-galactometer

-galactopoietic

-galah

-galangal

-galantine

-galanty

-galashiels

-galata

-galatians

-galba

-galbanum

-galbraith

-galea

-galileo

-galimatias

-galingale

-galiot

-galipot

-galle

-galleass

-gallfly

-gallia

-galliambic

-galliard

-gallice

-galligaskins

-gallimaufry

-gallinacean

-gallinaceous

-gallinas

-galliot

-gallipoli

-gallipot

-galliwasp

-gallnut

-galloglass

-galloon

-galloot

-gallous

-galoot

-galop

-galsworthy

-galvani

-galvanoscope

-galvanostat

-galvanotropism

-galvo

-galyak

-gama

-gamba

-gambado

-gambrel

-gambrinus

-gamelan

-gamesman

-gametangium

-gametocyte

-gametogenesis

-gametophore

-gametophyte

-gammadion

-gammer

-gamogenesis

-gamopetalous

-gamophyllous

-gamosepalous

-gamp

-gan

-gance

-gand

-gandalf

-gandhi

-gandy

-gandzha

-ganesa

-gangbang

-gangrel

-gangtok

-gangue

-ganister

-ganja

-ganof

-ganoid

-gansey

-gapeworm

-gapped

-garam

-garand

-garbanzo

-garbo

-garboard

-garboil

-gard

-garda

-gardant

-garderobe

-gardiner

-garfish

-garganey

-garget

-garnierite

-garonne

-garpike

-garrick

-gasconade

-gaselier

-gasiform

-gaskell

-gaskin

-gasman

-gasohol

-gasometry

-gasteropod

-gastralgia

-gastroenteric

-gastroenteritis

-gastroenterology

-gastroenterostomy

-gastrolith

-gastrology

-gastropod

-gastroscope

-gastrostomy

-gastrotomy

-gastrotrich

-gastrovascular

-gastrula

-gatehouse

-gatekeep

-gateshead

-gath

-gatling

-gatt

-gauffer

-gaugeing

-gauhati

-gaumless

-gauntry

-gaup

-gaussmeter

-gautama

-gautier

-gavage

-gavial

-gawp

-gaya

-gayomart

-gazankulu

-gazehound

-gaziantep

-gazump

-gdynia

-gean

-geanticline

-gearwheel

-geber

-gec

-gedact

-gedanken

-geelong

-gefilte

-gehlenite

-gelada

-gelatinoid

-gelibolu

-gell

-gelligaer

-gelt

-gemeinschaft

-gemmiparous

-gemmulation

-gemmule

-gemology

-gemot

-gen

-genappe

-generalism

-generalissimo

-genet

-genip

-genipap

-genitor

-genitourinary

-genizah

-genk

-genro

-gens

-genseric

-genstat

-gentianaceous

-gentianella

-genu

-geodynamics

-geognosy

-geoid

-geomechanics

-geometrid

-geophagy

-geosphere

-geostatic

-geostatics

-geosyncline

-geotaxis

-geotectonic

-gera

-gerah

-geraniaceous

-geranial

-geraniol

-geratology

-gerent

-gerenuk

-gerfalcon

-gerlachovka

-germander

-germanicus

-germanous

-germinant

-germiston

-gerona

-geronimo

-gerontological

-gers

-geryon

-gesellschaft

-gesso

-gest

-gestatorial

-gesualdo

-gey

-geyserite

-gezira

-ghat

-ghats

-gibberellic

-gibbsite

-gibeon

-gibli

-gibran

-gid

-gide

-gidgee

-gie

-giftwrap

-gifu

-gigabit

-gigabyte

-gigabytes

-gigaherz

-gigantomachy

-gigli

-gigue

-gilet

-gilgai

-gilgamesh

-gillies

-gillion

-gillray

-gillyflower

-gilolo

-gilsonite

-gilthead

-gimcrack

-gimel

-gimme

-gingiva

-gingivitis

-gink

-ginnel

-giorgione

-giotto

-gip

-gipon

-giraldus

-girandole

-girdlecake

-girgenti

-gironde

-gironny

-girosol

-gisarme

-gish

-gissing

-gittern

-giusto

-glabella

-glabrous

-glacialist

-gladbeck

-gladdon

-gladiate

-gladrags

-glaikit

-glair

-glaive

-glamorgan

-glandule

-glarus

-glaser

-glassman

-glastonbury

-glauce

-glauconite

-glebe

-gleeman

-gleet

-gleiwitz

-glencoe

-glendower

-glenoid

-glenrothes

-gley

-glia

-gliadin

-glissando

-glister

-gliwice

-globate

-globeflower

-globin

-globoid

-globose

-globuliferous

-glochidium

-glockenspiel

-glogg

-glomerate

-glomeration

-glomerule

-glomerulus

-glomma

-glossa

-glossator

-glossectomy

-glosseme

-glossitis

-glossography

-glossology

-glossopharyngeal

-glottic

-glottochronology

-gloze

-glucagon

-glucinum

-glucocorticord

-gluconeogenesis

-glucoprotein

-glucoside

-glucosuria

-glume

-gluon

-glutathione

-glutelin

-gluteus

-glyceric

-glycerophosphate

-glycogenesis

-glycolic

-glycolysis

-glyconeogenesis

-glycoside

-glycosuria

-glyoxaline

-glyphography

-glyptal

-glyptic

-glyptics

-glyptodont

-glyptography

-gnatcatcher

-gnathic

-gnathion

-gnathite

-gnathonic

-gnocchi

-gnosis

-gnotobiotics

-goalmouth

-goanna

-goatfish

-goatherd

-goatsbeard

-goatskin

-goatsucker

-gobbet

-gobi

-gobioid

-gobo

-gobstopper

-goby

-godard

-godavari

-godefroy

-goderich

-godown

-godroon

-gogga

-gogglebox

-goglet

-gogol

-gogra

-goldarn

-goldcrest

-goldeye

-goldilocks

-goldoni

-goldschmidt

-goldthread

-goliard

-goliardery

-golliwog

-gollop

-goloshes

-gombroon

-gomel

-gomorrah

-gompers

-gomphosis

-gomulka

-gomuti

-gonadotropin

-goncourt

-gondar

-gonfalon

-gonfalonier

-gongola

-gonidium

-goniometer

-gonk

-gonna

-gonococcus

-gonocyte

-gonof

-gonophore

-gonopore

-googly

-gook

-goole

-gooney

-goosander

-goosefoot

-goosegog

-goosegrass

-goosy

-gopak

-gorakhpur

-goral

-gorbals

-gorblimey

-goreng

-gorgerin

-gorgias

-gorgoneion

-gorica

-gorizia

-gormless

-gorsedd

-gosport

-gosse

-gossipmonger

-gossipmongers

-gossoon

-goster

-gotama

-gotta

-gouache

-gourami

-gourmont

-goutweed

-gowan

-gower

-gowk

-gowon

-goy

-gracile

-gracioso

-graduand

-gradus

-graecism

-graffito

-grahame

-graiae

-grainger

-grallatorial

-grama

-gramarye

-gramercy

-gramineous

-graminivorous

-grammatology

-grampian

-grampus

-granada

-granadilla

-granados

-grandaunt

-grandmaster

-grandmasters

-granduncle

-granduncles

-grangemouth

-granicus

-graniteware

-granitite

-granodiorite

-granolith

-granophyre

-granta

-granuloma

-granulose

-graphomotor

-grappa

-grappelli

-graptolite

-grasmere

-grassfinch

-grasshook

-grassquit

-grassroot

-gratian

-grattan

-gratulate

-graupel

-grav

-gravamen

-gravenhage

-gravettian

-gravimetrical

-graz

-gree

-greegree

-greeley

-greenaway

-greenbottle

-greenbrier

-greenfinch

-greenfly

-greengage

-greenhead

-greenheart

-greenock

-greenockite

-greensand

-greenshank

-greensickness

-greenstick

-greenstone

-greenstuff

-greige

-gremial

-gressorial

-greuze

-greyback

-greybeard

-greyhen

-greystones

-greywacke

-gribble

-griddlecake

-gridfile

-gridfiles

-grillparzer

-grilse

-grimalkin

-grimsby

-grindelwald

-grindery

-grisaille

-griseofulvin

-griseous

-grisette

-grishun

-griskin

-grisons

-grivation

-grivet

-grockle

-grodno

-grogram

-gromyko

-groningen

-gropius

-gros

-groschen

-grosgrain

-grosseteste

-grosswardein

-grosz

-grot

-grote

-grotius

-groundage

-groundsill

-groundsman

-groundspeed

-groundswell

-groupwork

-grouty

-grovet

-groyne

-grozing

-grozny

-grugru

-grumous

-grundy

-grysbok

-guacharo

-guaco

-guadalajara

-guadalcanal

-guadalquivir

-guadiana

-guaiacum

-guan

-guanabara

-guanaco

-guanajuato

-guanase

-guanosine

-guardafui

-guarneri

-guayaquil

-guayule

-gubbins

-gudeance

-gudrun

-guelders

-guenon

-guesthouse

-guidon

-guienne

-guilloche

-guipure

-guiscard

-guitarfish

-guizot

-gujranwala

-gulag

-gulags

-gular

-gulbenkian

-gulden

-gulfweed

-gumma

-gummite

-gummosis

-gummous

-gumshield

-gumtree

-gunge

-gunnel

-gunpaper

-gunstock

-gunter

-guntur

-gunwale

-gunyah

-gur

-gurdwara

-gurgitation

-gurglet

-gurjun

-gurkhali

-gurnard

-gustavo

-gutbucket

-guthrun

-gutta

-guv

-guyenne

-guyot

-gwalior

-gwelo

-gwent

-gwynedd

-gwyniad

-gyani

-gybe

-gymnasiarch

-gymnasiast

-gymslip

-gynaeceum

-gynaecocracy

-gynaecoid

-gynaecomastia

-gynandrous

-gynarchy

-gynecium

-gyniatrics

-gynophore

-gyronny

-gyrose

-gyrostatic

-gyrostatics

-gyve

-habu

-hachure

-hackamore

-hackbut

-hadaway

-hadhramaut

-hadj

-hadji

-hadrosaur

-hae

-haecceity

-haeckel

-haem

-haemachrome

-haemacytometer

-haemagglutinate

-haemagglutinin

-haemagogue

-haemal

-haematein

-haematemesis

-haematic

-haematin

-haematinic

-haematite

-haematoblast

-haematocele

-haematocrit

-haematocryal

-haematogenesis

-haematogenous

-haematoid

-haematological

-haematology

-haematolysis

-haematoma

-haematopoiesis

-haematosis

-haematothermal

-haematoxylin

-haematozoon

-haematuria

-haemic

-haemin

-haemochrome

-haemocoel

-haemocyanin

-haemocyte

-haemocytometer

-haemodialysis

-haemoflagellate

-haemoglobin

-haemoglobinuria

-haemoid

-haemolysin

-haemolysis

-haemophile

-haemophilia

-haemophiliac

-haemophilic

-haemopoiesis

-haemoptysis

-haemorrhage

-haemorrhagic

-haemorrhoidectomy

-haemorrhoids

-haemostasis

-haemostat

-haemostatic

-haeres

-haftarah

-hagar

-hagbut

-hagfish

-haggadah

-haggai

-hagiarchy

-hagiocracy

-hagiographer

-hagiolatry

-hagiology

-hagioscope

-hahnemann

-haidar

-haig

-haik

-haile

-hainaut

-haiphong

-hairball

-hairgrip

-hairif

-hairnet

-hairtail

-hairweaving

-hairworm

-hajj

-hake

-hakim

-hakluyt

-hakodate

-halafian

-halakah

-halal

-halation

-halberd

-halcyone

-haldane

-haleakala

-halesowen

-halfbeak

-halfwit

-halicarnassus

-hallah

-hallam

-hallel

-hallux

-halm

-halmahera

-halmstad

-halobiont

-haloid

-halophyte

-halothane

-hals

-haltemprice

-hama

-hamadryad

-hamadryas

-hamamatsu

-hamamelidaceous

-hambletonian

-hame

-hamelin

-hameln

-hamersley

-hamhung

-hamilcar

-hamm

-hammerfest

-hammersmith

-hammerstein

-hammurabi

-hampden

-hampstead

-hamshackle

-hamsun

-hamulus

-hamza

-hanaper

-hanau

-handbarrow

-handbell

-handbrake

-handfeed

-handleability

-handstroke

-hangbird

-hangchow

-hankerchief

-hankow

-hannover

-hanratty

-hapax

-haphtarah

-haplite

-haplography

-haplosis

-hapten

-hapteron

-haptic

-hapto

-haptotropism

-harakiri

-harald

-harambee

-harappa

-harar

-hardecanute

-hardhack

-hardicanute

-hardie

-hardily

-harebell

-hargeisa

-haricot

-harijan

-harikari

-harmattan

-harmonist

-harmonograph

-harmonographs

-harmotome

-harney

-harpenden

-harquebus

-harquebusier

-harrar

-harrogate

-harslet

-hartal

-harte

-hartebeest

-harthacanute

-hartlepool

-hartnell

-hartree

-hartshead

-harun

-haruspex

-harvestmen

-harwell

-harwich

-haryana

-harz

-hasa

-hasdrubal

-hashemite

-hask

-haslet

-hassan

-hasselt

-hatchback

-hatpin

-hatshepsut

-haubergeon

-hauberk

-haugh

-haulm

-hauraki

-haustellum

-haustorium

-havant

-havel

-havelock

-havildar

-havre

-hawes

-hawfinch

-hawhaw

-hawkbill

-hawksbill

-hawkweed

-haworth

-hawse

-hawsehole

-hawsepipe

-haybox

-hazelhen

-hazlitt

-headlamp

-headrace

-headrail

-headreach

-headscarf

-headsquare

-headward

-headwards

-heald

-healds

-hearths

-heartworm

-heathberry

-heathfowl

-heaume

-hebbel

-hebephrenia

-hebetate

-hebetic

-heckelphone

-hectocotylus

-hedjaz

-heehaw

-heelpost

-heenan

-heerlen

-heffer

-hegira

-hegumen

-heh

-heiduc

-heilbronn

-heilungkiang

-heirdom

-heitiki

-heitler

-hejira

-hekate

-hekla

-hel

-helichrysum

-helicline

-helicograph

-heliolithic

-heliotherapy

-heliotropin

-heliotype

-hellbent

-helle

-hellery

-helles

-helmand

-helminth

-helminthiasis

-helminthic

-helminthology

-helmont

-helpmann

-helsingborg

-helvellyn

-hemel

-hemelytron

-hemeralopia

-hemialgia

-hemianopsia

-hemicellulose

-hemichordate

-hemicycle

-hemidemisemiquaver

-hemielytron

-hemiola

-hemipode

-hemipteran

-hemipterous

-hemispheroid

-hemistich

-hemiterpene

-hemstitch

-henbit

-hencoop

-hendecagon

-hendecahedron

-henge

-hengelo

-hengist

-henhouse

-hepcat

-hepplewhite

-hepta

-heptad

-heptadecanoic

-heptahedron

-heptamerous

-heptangular

-heptarchy

-heptastich

-heptatriene

-heptavalent

-heptose

-hepworth

-heraclea

-heracles

-herakleion

-herby

-hercegovina

-herculaneum

-hereat

-heredes

-hereditable

-hereditist

-hereinto

-heresiarch

-hereward

-heriot

-herisau

-herl

-herm

-hermannstadt

-hermon

-hermosillo

-hermoupolis

-herne

-herniorrhaphy

-herod

-herodias

-herophilus

-herrick

-herriot

-herstmonceux

-hesiod

-hesperidin

-hesperidium

-hestia

-hetaera

-hetaerism

-heterocercal

-heterochromatic

-heterochromatin

-heterochromatins

-heterochromosome

-heterochromous

-heteroclite

-heterodactyl

-heterodont

-heterogenous

-heterography

-heterogynous

-heterolecithal

-heterologous

-heteromerous

-heteronym

-heteroplasty

-heterosporous

-heterostyly

-heterotaxis

-heterothallic

-heterotopia

-heth

-hevelius

-hevesy

-hexachloroethane

-hexachlorophene

-hexachord

-hexacosanoic

-hexadecane

-hexaemeron

-hexamerous

-hexangular

-hexanoic

-hexapla

-hexapody

-hexastich

-hexastyle

-hexavalent

-hexene

-hexone

-hexosan

-hexose

-hexyl

-hexylresorcinol

-heyduck

-heyerdahl

-hibernaculum

-hic

-hiddenite

-hiemal

-hieracosphinx

-hierocracy

-hierodule

-hierogram

-hierology

-hierophant

-highchair

-highjack

-highlife

-highveld

-hijaz

-hijinks

-hilla

-hillery

-hillfort

-hilliard

-hillingdon

-hilus

-hilversum

-himachal

-himalayas

-himeji

-himmler

-hin

-hinckley

-hindgut

-hindoo

-hindustan

-hinny

-hinshelwood

-hipparch

-hipparchus

-hippolyta

-hiragana

-hircine

-hiri

-hirohito

-hiroshige

-hirundine

-hispid

-histiocyte

-histogen

-histogenesis

-histoid

-histone

-historiated

-hitparade

-hmso

-hoactzin

-hoad

-hoarhound

-hoatching

-hoatzin

-hobbema

-hochhuth

-hockney

-hodden

-hodeida

-hodman

-hodometer

-hoek

-hofei

-hofmannsthal

-hofuf

-hogarth

-hogg

-hogged

-hogmanay

-hognosed

-hogtie

-hogue

-hogweed

-hohenlinden

-hohenlohe

-hohenstaufen

-hoick

-hoicks

-hoiden

-hokkaido

-hokku

-hokusai

-holarctic

-holbein

-holinshed

-holkar

-holmic

-holocaine

-holoenzyme

-holofernes

-holoplankton

-holothurian

-holp

-holpen

-hols

-holyhead

-holyoake

-holytide

-homebuild

-homecome

-homecraft

-homeopaths

-homeown

-homocentric

-homochromous

-homocyclic

-homodont

-homogenous

-homophobe

-homophobes

-homotaxis

-homothermal

-honan

-honecker

-honegger

-honewort

-honeybunch

-honeysucker

-honiara

-hoo

-hoofbound

-hoogh

-hooghly

-hooke

-hooknose

-hoopoe

-hoopoes

-hoovered

-hoovering

-hoovers

-hopeh

-hoplology

-hoppus

-hopsack

-horae

-horal

-hordein

-horeb

-horme

-hormuz

-hornbook

-hornby

-hornfels

-hornstone

-horologe

-horologium

-horoscopy

-horripilation

-horsa

-horsebox

-horseboxs

-horseleech

-horseleeches

-horseriding

-horst

-horta

-horthy

-horticulturalist

-hortus

-hosea

-hosier

-hospitalet

-hospitaller

-hospodar

-hosteller

-hostelling

-hostie

-hotien

-hotplate

-hotpot

-hotspur

-hottie

-houdon

-houmous

-hounslow

-housebuilding

-housecarl

-housel

-houseleek

-houseleeks

-houseline

-housemaster

-housemasters

-housman

-houting

-hovercraft

-hoverport

-hovertrain

-hovertrains

-howdah

-howitzer

-howlet

-howrah

-howtowdie

-hoxha

-hoylake

-hradec

-hrvatska

-hsi

-hsian

-hsiang

-hsining

-hsinking

-hua

-huambo

-huang

-hubble

-hubli

-huckel

-huckle

-hucklebone

-huelva

-huesca

-hufuf

-huggermugger

-hughie

-huhehot

-hula

-hulme

-humber

-humberside

-humblebee

-hunan

-hungnam

-huns

-huntingdon

-hunyadi

-huon

-hupeh

-huppah

-hurds

-hurstmonceux

-hus

-husain

-husein

-hushaby

-huss

-hussein

-husserl

-hutchie

-hutment

-hutu

-huygens

-huysmans

-hwang

-hwyl

-hyaluronic

-hydantoin

-hydathode

-hydatid

-hyderabad

-hydnocarpate

-hydnocarpic

-hydracid

-hydrastinine

-hydrazoic

-hydria

-hydriodic

-hydrobromic

-hydrocele

-hydrocellulose

-hydrocoral

-hydrocortisone

-hydrogenolysis

-hydrogenous

-hydrograph

-hydrolyte

-hydromedusa

-hydromel

-hydrometallurgy

-hydrometeor

-hydronaut

-hydrophilous

-hydropower

-hydroquinone

-hydrostat

-hydrosulphate

-hydrosulphide

-hydrosulphurous

-hydrotaxis

-hydrotherapeutics

-hydroxonium

-hydroxylamine

-hyetograph

-hyetography

-hygristor

-hygrophilous

-hygrostat

-hyksos

-hylomorphism

-hylophagous

-hylotheism

-hylozoism

-hymenopteran

-hymenopterous

-hymettus

-hymnist

-hyoid

-hyoscyamine

-hypabyssal

-hypaesthesia

-hypaethral

-hypallage

-hypanthium

-hyperaemia

-hyperbaton

-hypercatalectic

-hypercorrect

-hypercorrection

-hyperdulia

-hyperextension

-hyperfocal

-hyperglycaemia

-hyperinsulinism

-hyperion

-hyperkinesia

-hypermarket

-hyperpnoea

-hyperpyrexia

-hyperstability

-hyperstable

-hypersthene

-hyperterm

-hyperterms

-hypervitaminosis

-hypesthesia

-hypethral

-hyphae

-hypnology

-hypnopaedia

-hypnopompic

-hypoacidity

-hypoblast

-hypochondrium

-hypocotyl

-hypoderm

-hypoeutectic

-hypogastrium

-hypogeal

-hypogene

-hypogenous

-hypogeous

-hypogeum

-hypoglossal

-hypoglycaemia

-hypognathous

-hypogynous

-hypoid

-hypolimnion

-hypomania

-hyponasty

-hyponitrite

-hyponitrous

-hypophosphate

-hypophosphite

-hypophosphoric

-hypophosphorous

-hypophyge

-hypophysis

-hypopituitarism

-hypoplasia

-hypoploid

-hypopnoea

-hyposthenia

-hypostyle

-hyposulphite

-hyposulphurous

-hypotaxis

-hypothec

-hypoxanthine

-hyracoid

-hyrax

-hyrcania

-hyssop

-hysterogenic

-hysteroid

-hysterotomy

-hystricomorph

-iamb

-iata

-iatric

-ibadan

-ibarruri

-ibert

-ibibio

-ibiza

-ichang

-ichinomiya

-ichnography

-ichnology

-ichor

-ichthyic

-ichthyoid

-ichthyolite

-ichthyology

-ichthyophagous

-ichthyosaur

-ichthyosis

-iconium

-iconomatic

-iconostasis

-icterus

-ictinus

-ictus

-ide

-ideatum

-identifers

-identikit

-ideosyncrasies

-ideosyncrasy

-idioblast

-idiopathy

-idiophone

-idiosyncracies

-idiosyncracy

-idocrase

-idolum

-idun

-ieper

-ieyasu

-ife

-igbo

-igdrasil

-igfet

-ignis

-ignitability

-ignoratio

-ignotum

-igraine

-ihram

-ikan

-ikebana

-ikeja

-ikhnaton

-ilea

-ileac

-ileitis

-ileostomy

-ilesha

-ileus

-ilex

-ilia

-iliamna

-iligan

-ilion

-ilium

-ilkley

-illampu

-illawarra

-illich

-illimani

-illinium

-illocution

-illude

-illyria

-illyricum

-ilmen

-iloilo

-ilorin

-imagen

-imbros

-iminourea

-immersionism

-immobilism

-immortelle

-immoveables

-immunoassay

-immunoglobulin

-immunomicrosphere

-immunoreaction

-impanation

-imparipinnate

-imparisyllabic

-impaste

-impasto

-impearl

-impeccant

-impedimenta

-impennate

-imperium

-imperscriptible

-impetigo

-imphal

-impi

-implacental

-impolder

-impolicy

-imponderabilia

-imponent

-imposable

-impostume

-impower

-impresa

-imprescriptible

-impressure

-imprest

-improbity

-imroz

-inappellable

-inapprehensive

-inarch

-inartificial

-inbeing

-incaparina

-incapsulate

-incardinate

-incensory

-inchmeal

-inchon

-incipit

-incisure

-incluse

-incomprehensive

-incrementation

-incunabula

-indaba

-indeces

-indene

-indetermine

-indexation

-indigestive

-indigoid

-indiscernability

-indo

-indoleacetic

-indolebutyric

-indomethacin

-indophenol

-indore

-indorsee

-indoxyl

-indra

-indre

-induna

-induplicate

-indusium

-indy

-inearth

-inequable

-inerrable

-inescutcheon

-inessive

-inextirpable

-infallibilism

-infante

-infare

-infeudation

-infibulate

-infight

-infill

-infold

-infracostal

-infralapsarian

-infulae

-infundibuliform

-infundibulum

-infuscate

-infusionism

-inge

-ingeminate

-ingenerate

-ingesta

-ingleborough

-inglenook

-ingoing

-ingolstadt

-ingraft

-ingravescent

-ingres

-ingulf

-inhambane

-inhaul

-inhesion

-inkberry

-inkblot

-inlace

-inmesh

-inmigrant

-inniskilling

-innoxious

-innsbruck

-innumerate

-innutrition

-inoculable

-inodorous

-inofficious

-inqilab

-insalivate

-inscape

-insectarium

-inshrine

-insipience

-insnare

-insomuch

-instalation

-installant

-inswing

-intarsia

-integrant

-integratable

-intendancy

-interagency

-interbedded

-interchannel

-interconnectable

-interconsole

-interflow

-interfluent

-interfluve

-intergranal

-interjacent

-interlaken

-interlap

-interlay

-interlocation

-interlunation

-intermesh

-intermigration

-intermittency

-interosculate

-interpage

-interparticle

-interpellant

-interphone

-interpolant

-interprete

-interpretes

-interradial

-interrex

-interrobang

-interrogable

-interstratify

-intersystem

-intertexture

-intertrigo

-intracoastal

-intranational

-intranuclear

-intrasocietal

-intratelluric

-intravasation

-intuc

-intuitivism

-intwine

-inuit

-inurbane

-invercargill

-involucel

-involutory

-invultuation

-inwrap

-inyala

-iodism

-iodometry

-iolite

-iona

-ionone

-ionopause

-iontophoresis

-iphigenia

-ipoh

-ipsambul

-ipsus

-ipswich

-iqbal

-iquique

-iquitos

-iracund

-irade

-irbid

-irbil

-irenicon

-irian

-iridectomy

-irido

-iridotomy

-iritis

-ironbark

-ironfounding

-irradiant

-irrelievable

-irremissible

-irretentive

-irriguous

-irtysh

-isagoge

-isagogics

-isallobar

-isar

-isarithmic

-isatin

-isauria

-ischaemia

-ischia

-ischium

-isentropically

-isherwood

-islay

-ismailia

-iso

-isoamyl

-isobath

-isocept

-isochor

-isochroous

-isocracy

-isocrates

-isocyanic

-isocyanide

-isodiametric

-isodiaphere

-isodimorphism

-isodynamic

-isoelectric

-isoelectronic

-isoenergetic

-isogamete

-isogenous

-isogeotherm

-isogloss

-isogon

-isogonic

-isohel

-isohyet

-isolecithal

-isoleucine

-isolex

-isoline

-isologous

-isophone

-isopod

-isoprene

-isopropyl

-isorhythmic

-isosceles

-isoseismal

-isosmotic

-isospondylous

-isostasy

-isosteric

-isotactic

-isothere

-isotone

-isotron

-isotropical

-israfil

-issachar

-issus

-istana

-isthmian

-istle

-istria

-itacolumite

-itaconic

-italicity

-italicy

-ithunn

-ithyphallic

-iulus

-iviza

-ixtle

-iyar

-iyeyasu

-izmir

-izmit

-iznik

-izzard

-jacamar

-jacdaw

-jackeroo

-jackfish

-jackfruit

-jackshaft

-jacksmelt

-jacksnipe

-jackstay

-jackstraws

-jaconet

-jadeite

-jael

-jaffa

-jaffna

-jaguarondi

-jahveh

-jahweh

-jailhouse

-jaipur

-jalap

-jalapa

-jalisco

-jambeau

-jambi

-jambo

-jammu

-jammy

-jamnagar

-jampan

-jamshedpur

-jamshid

-jana

-janata

-janina

-jarl

-jarp

-jarrah

-jarrow

-jarry

-jarvey

-jassy

-jato

-javari

-jawan

-jawara

-jawbreak

-jaxartes

-jayawardena

-jaywalk

-jebel

-jedda

-jefe

-jehad

-jehol

-jehoshaphat

-jehu

-jekyll

-jellaba

-jellicoe

-jellify

-jellybean

-jemadar

-jemappes

-jembe

-jequirity

-jerba

-jerbil

-jerboa

-jerez

-jerid

-jerreed

-jevons

-jewelfish

-jewfish

-jhansi

-jhelum

-jibbons

-jibouti

-jidda

-jiggermast

-jihad

-jillaroo

-jillion

-jilolo

-jinghis

-jinja

-jinnah

-jipijapa

-jissom

-jitterbugger

-jitterbugging

-jiujitsu

-jobcentre

-jobcentres

-jobname

-jocko

-jodhpuri

-jodrell

-joffre

-jogged

-jogjakarta

-johore

-jokjakarta

-jollify

-jolo

-jongleur

-jonnock

-jook

-joppa

-jordaens

-jorum

-jos

-josquin

-jota

-jotter

-jotun

-joual

-journalled

-jowett

-joypop

-juba

-jubbah

-jube

-judezmo

-judicative

-judicator

-judogi

-judoka

-jugal

-jugfet

-juggins

-juglandaceous

-jugulate

-jugum

-jugurtha

-juiz

-jullundur

-jumbuck

-jumna

-juncaceous

-jungfrau

-junkman

-jupon

-juratory

-juryman

-jus

-justiceship

-justiciary

-justle

-juvenal

-kabalega

-kabaragoya

-kabbala

-kabob

-kachang

-kachina

-kadi

-kadiyevka

-kaduna

-kaffirs

-kafiristan

-kagera

-kagoshima

-kagu

-kaiak

-kaieteur

-kaif

-kaifeng

-kail

-kailyard

-kain

-kainogenesis

-kairouan

-kaka

-kakapo

-kakemono

-kaki

-kalat

-kalends

-kaleyard

-kalgan

-kalgoorlie

-kali

-kalian

-kalidasa

-kalif

-kalimantan

-kalinin

-kaliningrad

-kalisz

-kaliyuga

-kalmar

-kalong

-kalpa

-kalpak

-kalsomine

-kaluga

-kama

-kamakura

-kamala

-kamasutra

-kame

-kamerun

-kamet

-kami

-kampong

-kampuchea

-kamseen

-kana

-kanamycin

-kananga

-kanara

-kanazawa

-kanchenjunga

-kanchipuram

-kandahar

-kandy

-kanga

-kangwane

-kannada

-kano

-kanpur

-kansu

-kantar

-kanu

-kanzu

-kaohsiung

-kaolack

-kaoliang

-kaon

-kapellmeister

-kaph

-karabiner

-karafuto

-karaganda

-karakoram

-karakorum

-karamanlis

-karbala

-karelia

-kariba

-karnataka

-karoo

-kaross

-kart

-karyogamy

-karyokinesis

-karyolymph

-karyolysis

-karyoplasm

-karyosome

-karyotin

-karyotype

-kasai

-kasbah

-kasher

-kashgar

-kashmir

-kassa

-kassala

-kassel

-kat

-katabasis

-katabolism

-katakana

-katanga

-katar

-kathak

-katharevusa

-katharsis

-kathiawar

-katmai

-katsina

-kattegat

-katzenjammer

-kauai

-kaunas

-kaunda

-kauri

-kaveri

-kawasaki

-kayseri

-kazachok

-kazakh

-kazan

-kazantzakis

-kazbek

-kea

-kean

-kearney

-keble

-keck

-ked

-kedah

-kedge

-kedgeree

-kediri

-kedron

-keef

-keelung

-keepnet

-kef

-keffiyeh

-kegler

-keister

-keitel

-keitloa

-kekkonen

-kelantan

-keloid

-kelpie

-kelt

-kelter

-kemal

-kemble

-kemerovo

-kempe

-kempis

-kempt

-kenaf

-kendal

-kendo

-kenogenesis

-kenosis

-kenspeckle

-kente

-kentledge

-kenyatta

-keos

-kep

-kerala

-keramic

-keramics

-keratin

-keratitis

-keratogenous

-keratoid

-keratoplasty

-keratose

-keratosis

-kerb

-kerbaya

-kerbela

-kerbing

-kerbstone

-kerch

-kerf

-kerguelen

-kerkrade

-kerman

-kermes

-kermis

-kermits

-kero

-kerouac

-kersey

-kerseymere

-kesselring

-kesteven

-ketonuria

-ketoxime

-kevel

-kew

-kewpie

-kex

-keytop

-keytops

-kickdown

-kicksorter

-kicktail

-kidd

-kiddle

-kidron

-kief

-kike

-kilung

-kimberley

-kimberlite

-kina

-kinabalu

-kinase

-kincardine

-kinchinjunga

-kincob

-kinematograph

-kingbolt

-kingcraft

-kingcup

-kingwana

-kinin

-kino

-kioto

-kirtle

-kitbag

-kitbags

-kitchenless

-kitenge

-kithara

-kittiwake

-kitwe

-kiushu

-klaipeda

-klepht

-klieg

-klong

-klootchman

-klopstock

-knackwurst

-knag

-knap

-knar

-knawel

-knickpoint

-kniferest

-knop

-knossos

-knotgrass

-knotwork

-knurly

-koa

-koan

-kob

-kobarid

-kobe

-kobold

-kochi

-kodok

-koel

-kofta

-koftgar

-kofu

-kokura

-kolar

-kolding

-koniology

-konya

-koodoo

-koph

-korfball

-koto

-kurchatovium

-kyanite

-kylin

-kylix

-kyloe

-kymograph

-kymric

-kymry

-kyphosis

-kythera

-labarum

-labe

-labefaction

-labiche

-labionasal

-labiovelar

-lablab

-labret

-labroid

-labrum

-labuan

-labyrinthodont

-laccolith

-lacedaemon

-lacerant

-lacertilian

-lachlan

-lachryma

-lachrymatory

-laclos

-laconia

-lactalbumin

-lactam

-lactary

-lactescent

-lactiferous

-lactoflavin

-lactometer

-lactophenol

-lactoprotein

-lactoscope

-ladislaus

-ladoga

-ladrone

-ladyfy

-ladysmith

-ladysnow

-laertes

-laevogyrate

-laevorotatory

-laevulin

-laevulose

-laforgue

-lagan

-lagena

-lagerkvist

-lah

-laik

-lairy

-laius

-lala

-lalang

-lalapalooza

-lallans

-lallation

-lamartine

-lambdacism

-lambdoid

-lambkin

-lambrequin

-lamellicorn

-lamellirostral

-lamina

-laminitis

-lammergeier

-lampas

-lampedusa

-lampern

-lampeter

-lampholder

-lampion

-lamppost

-lampposts

-lamprophyre

-lampshade

-lampshades

-lanark

-lanate

-lancejack

-lancelot

-lancewood

-lanchow

-landammann

-landeshauptmann

-landgrave

-landgraviate

-landgravine

-landloper

-landor

-landowska

-landrace

-landscapist

-landscapists

-landseer

-landshark

-landshut

-landsknecht

-landtag

-landwaiter

-lanfranc

-langlauf

-langouste

-langrage

-langres

-langsyne

-langue

-languedoc

-languet

-laniard

-laniary

-laniferous

-lankester

-lanner

-lanneret

-lanose

-lansquenet

-lanthorn

-lanugo

-laoag

-laodicea

-laomedon

-laotze

-lapidate

-lapidify

-lapillus

-lapis

-lapsus

-laptev

-lardon

-largen

-larine

-larisa

-larmor

-larn

-larnax

-larousse

-larrigan

-larrikin

-larrup

-larum

-larwood

-laryngotomy

-lascaux

-lashio

-lashkar

-lasker

-lasket

-lassa

-lassalle

-lassus

-lat

-lateroversion

-lathi

-lathy

-latifundium

-latimer

-latium

-latria

-lattermost

-lauda

-lauraceous

-laurasia

-lauric

-laurier

-laurustinus

-lauryl

-lautrec

-lav

-laval

-lavolta

-lawbreak

-lawes

-lawgive

-lawks

-lawmake

-laxey

-layamon

-layard

-laycock

-layshaft

-lazaretto

-lazio

-lazuli

-lazulite

-lazurite

-leadbelly

-leadwort

-leafcutter

-leafletting

-leakey

-leal

-leaseback

-leat

-leatherhead

-leatherjacket

-leatherwood

-leavis

-leben

-lebkuchen

-leblanc

-lebowa

-lebrun

-lecce

-lech

-lecky

-leconte

-lector

-lecythus

-leet

-leeuwarden

-lefthand

-lefthanded

-leftwing

-leftwinger

-leftwingers

-legaspi

-legnica

-legumin

-lehmann

-lehmbruck

-lehr

-leiria

-leishmaniasis

-leister

-leitrim

-leix

-lek

-lekker

-lely

-leman

-lemniscate

-lemnos

-lempira

-lemuroid

-lenglen

-lengthman

-lentamente

-lentic

-lenticel

-lentigo

-leoben

-lepaya

-lepidopteran

-lepidote

-lepidus

-lepontine

-leporid

-leporine

-leprosarium

-leprose

-leptophyllous

-leptosome

-leptospirosis

-leptotene

-lesbos

-lesseps

-letchworth

-letterset

-leucas

-leuco

-leucocratic

-leucocyte

-leucocytosis

-leucoderma

-leucomaine

-leucopenia

-leucoplast

-leucopoiesis

-leucorrhoea

-leucotomy

-leuctra

-leukas

-leuven

-levalloisian

-leverrier

-leviable

-levkas

-lewes

-lexeme

-lexicology

-lexigraphy

-lexis

-liard

-liase

-liason

-libau

-libava

-libeccio

-liberec

-liberticide

-libia

-lichenin

-lichenology

-lichi

-liddell

-lidice

-liebig

-liebknecht

-liegeman

-liegnitz

-lienal

-lientery

-liestal

-lietuva

-liffey

-liftboy

-liftoff

-ligan

-liger

-ligeti

-ligniform

-lignocaine

-ligroin

-ligula

-liguria

-lii

-likasi

-liklihood

-likuta

-lilburne

-liliaceous

-lilienthal

-liliuokalani

-lille

-lilo

-lilongwe

-limacine

-limassol

-limbate

-limewater

-limicoline

-limicolous

-limitarian

-limoges

-limousin

-linacre

-linalool

-linares

-lincrusta

-linctus

-lindane

-lindesnes

-lindisfarne

-lindwall

-lineate

-lineations

-linefeed

-linefeeds

-linenumber

-linestyle

-linewidth

-lingam

-lingayen

-lingcod

-linguiform

-linguini

-linhay

-linkwork

-linlithgow

-linn

-linnaeus

-linnet

-linnhe

-lino

-linocut

-linolenic

-linstock

-lintwhite

-linz

-lionfish

-lipari

-lipase

-lipchitz

-lipography

-lipoid

-lipoma

-lipophilic

-lipoprotein

-lippe

-lippi

-lippie

-liquefacient

-liquesce

-liquidus

-liquorish

-liripipe

-lisieux

-literae

-lithoid

-lithomarge

-lithometeor

-lithotrity

-littoria

-liu

-livingstone

-livonia

-livorno

-livraison

-livy

-lix

-lixivium

-loadstar

-loadstone

-loanda

-lobengula

-lobito

-lobola

-lobworm

-lochia

-lockyer

-locl

-locoman

-locris

-locum

-lod

-lodi

-lodicule

-loewi

-lofoten

-loganberry

-loganiaceous

-logaoedic

-logicism

-loglog

-logoff

-logography

-logopaedics

-lohengrin

-loiret

-lollapalooza

-lomax

-lombok

-lombroso

-loment

-lomond

-londrina

-longan

-longcase

-longcloth

-longe

-longicorn

-longinus

-longlasting

-longleaf

-longship

-longshore

-longueuil

-longueur

-longus

-longways

-longyearbyen

-loofah

-lookin

-loopy

-loosebox

-lophobranch

-lophophore

-lor

-lordy

-lorentz

-lorica

-lorient

-lorikeet

-lorimer

-lorrain

-lorris

-losey

-lothair

-lothario

-lothian

-lothians

-lothringen

-lotic

-louche

-loudish

-loudspeak

-louth

-louvain

-louvar

-lovage

-lovat

-lovell

-lovey

-lowan

-lowerclassman

-lowestoft

-lowveld

-loyang

-lozengy

-lozi

-lualaba

-luanda

-luang

-luau

-lublin

-lubra

-lubumbashi

-lucarne

-lucca

-luce

-luciferin

-lucilius

-lucullus

-lud

-ludhiana

-ludo

-luff

-luffed

-luffing

-luffs

-lugo

-lugsail

-lugworm

-luichow

-luik

-lumberjacket

-lumbricalis

-lumbricoid

-lumiere

-lumisterol

-lumme

-lumpenproletariat

-lumumba

-luna

-lunarian

-lungan

-lungi

-lungki

-lungworm

-lungwort

-lunik

-luns

-lunula

-lunulate

-lupin

-lurdan

-lurex

-lusatia

-lusus

-luteolin

-lutestring

-luthern

-luthuli

-lutine

-lutist

-luxor

-luxulianite

-lvi

-lvii

-lxi

-lxii

-lxiv

-lxix

-lxvi

-lxvii

-lyallpur

-lyautey

-lycanthrope

-lycaon

-lycaonia

-lycia

-lycopod

-lycurgus

-lydda

-lyddite

-lydgate

-lyell

-lyly

-lymphangial

-lymphangitis

-lymphoadenoma

-lyncean

-lynchet

-lysias

-lysippus

-lysol

-lyssa

-lytic

-lytta

-lytton

-mabela

-mabuse

-macaco

-maccaroni

-macebearer

-macedoine

-machado

-machan

-machel

-machin

-machmeter

-machree

-machu

-macroclimate

-macroencephaly

-macrograph

-macrophysics

-macroprocessor

-macropterous

-macrosporangium

-macrospore

-macrosystem

-macruran

-macula

-macumba

-madafu

-madhya

-madina

-madre

-madrepore

-madura

-madurai

-maduro

-madwort

-maebashi

-maenad

-maestoso

-maestricht

-maewo

-mafeking

-maffick

-mag

-magallanes

-magdalena

-mage

-magen

-maggiore

-magilp

-maginot

-magistery

-magnetochemistry

-magnetopause

-magnetosheath

-magnificats

-magnoliaceous

-magnus

-magot

-magritte

-maguey

-mahabharata

-mahalla

-mahanadi

-maharashtra

-mahewu

-mahjong

-mahometan

-mahratta

-mahseer

-maidan

-maidstone

-maiduguri

-maigre

-maihem

-maikop

-mailcoach

-maillol

-maimonides

-mainbrace

-maintenence

-maintopsail

-mainz

-maiolica

-majunga

-makalu

-makarios

-makeyevka

-makhachkala

-makkah

-makurdi

-makuta

-malabo

-malachi

-malacophyllous

-malacopterygian

-maladdress

-malam

-malang

-malassimilation

-malatesta

-malatya

-maldon

-maleable

-malebranche

-maleic

-malevich

-malherbe

-malihini

-malimprinted

-malines

-malinke

-malkin

-mallam

-mallee

-mallenders

-malleolus

-mallorca

-malm

-malonic

-malonylurea

-malory

-malpighi

-malpighiaceous

-maltha

-malthus

-maltman

-maluku

-malvaceous

-malvern

-malwa

-mamaguy

-mamba

-mamelon

-mamilla

-mamillate

-mammee

-mammet

-mammiferous

-mammilla

-mampara

-manado

-managerialism

-manakin

-manassas

-manasseh

-manaus

-manche

-manchineel

-manchukuo

-manchuria

-mandatorily

-mandi

-mandir

-manet

-mangabey

-mangalore

-manganin

-mangelwurzel

-mangonel

-mangosteen

-mani

-manichaeus

-manilla

-manille

-maninke

-maniple

-manipur

-manisa

-manitoulin

-manizales

-manky

-mannar

-manolete

-manresa

-mansart

-mansholt

-manteau

-mantegna

-mantelletta

-manteltree

-mantilla

-mantinea

-mantoux

-mantova

-manufacturable

-manuka

-manukau

-manus

-manutius

-manyplies

-manzanilla

-manzoni

-maoism

-maputo

-maquette

-mara

-marabunta

-maraca

-maracanda

-maracay

-maraging

-marasca

-marat

-maravedi

-marcasite

-marcellus

-marcescent

-marche

-marcos

-marcuse

-marduk

-mardy

-maremma

-marg

-margaric

-margarite

-margate

-margravate

-margrave

-margravine

-margrethe

-marianao

-maribor

-mariculture

-mariposa

-maritage

-maritain

-maritsa

-marlite

-marmara

-marmite

-marmolada

-maroc

-marocain

-maroquin

-maros

-marprelate

-marquand

-marquesas

-marquessate

-marram

-marrano

-marriageability

-marron

-marryat

-marsilius

-marsipobranch

-martaban

-martagon

-martel

-martellato

-martello

-martineau

-marvell

-marxists

-masaccio

-masan

-masaryk

-masbate

-mascarene

-mascle

-mascon

-masharbrum

-mashhad

-mashie

-masinissa

-masjid

-maskanonge

-masqat

-massa

-massachuset

-massasauga

-massasoit

-massine

-massinissa

-massorete

-massotherapy

-mastaba

-mastigophoran

-mastitis

-masuria

-masurium

-matadi

-matamoros

-matanzas

-matapan

-matchbox

-matchmark

-matchstick

-mathura

-matlo

-matlock

-mato

-matoke

-matopo

-matozinhos

-matrass

-matriclinous

-matrilocal

-matroclinous

-matronage

-matsu

-matsuyama

-mattamore

-matterhorn

-matthias

-mattins

-mattoid

-mattrass

-matzoon

-maubeuge

-mauby

-maui

-maulana

-maulmain

-maulstick

-maumet

-mauna

-maund

-maunder

-maundy

-maungy

-maupassant

-maupertuis

-mauretania

-mauriac

-maurois

-maury

-maurya

-mawger

-mawkin

-mawsie

-maximin

-maximus

-maxint

-maxisingle

-maxixe

-mayday

-mayence

-mayon

-mazard

-mazarin

-mazuma

-mazzini

-mealworm

-meany

-meatus

-mecamylamine

-mechanotherapy

-mechelen

-meck

-meconium

-medan

-medawar

-mediastinum

-medway

-mee

-meed

-meerkat

-meerut

-mega

-megacephaly

-megadeath

-megaflop

-megaflops

-megalocardia

-megalocephaly

-megalosaur

-megapode

-megara

-megaron

-megathere

-megger

-meghalaya

-megiddo

-megilp

-mehemet

-meilhac

-meiny

-meir

-meitner

-mekka

-melanchthon

-melanous

-melaphyre

-melba

-melchior

-meliaceous

-melilla

-melilot

-melinite

-melisma

-melodeon

-meloid

-melos

-meltage

-mem

-memel

-memling

-memoire

-memorex

-memphremagog

-memsahib

-menadione

-menado

-menai

-menam

-menander

-menaquinone

-mencius

-menderes

-mendips

-menes

-mengistu

-meningocele

-menispermaceous

-meno

-menology

-menomini

-menon

-menotti

-mensa

-mentalism

-menuhin

-mepacrine

-meperidine

-meprobamate

-merano

-merbromin

-merca

-mercaptan

-mercaptide

-mercaptopurine

-merchet

-mercia

-mercians

-merengue

-mergui

-meristem

-meristic

-merkin

-merlon

-meroplankton

-merozoite

-merrymake

-merse

-mersin

-merthyr

-mesarch

-mesencephalon

-mesenchyme

-mesenteritis

-mesentery

-meshach

-meshuga

-mesitylene

-mesnalty

-mesobenthos

-mesocephalic

-mesocratic

-mesogastrium

-mesoglea

-mesognathous

-mesolithic

-mesolonghi

-mesomeric

-mesophyll

-mesophyte

-mesothelioma

-mesothelium

-messalina

-messene

-messenia

-messiaen

-messina

-messmate

-messmates

-mestee

-mester

-mestranol

-metacentres

-metacharacter

-metacharacters

-metachromatism

-metacinnabarite

-metafemale

-metagnathous

-metalline

-metallocene

-metallophone

-metamale

-metamer

-metanotion

-metanotions

-metaperiodate

-metaphosphoric

-metaphrase

-metaphrast

-metapolitics

-metaproduction

-metaproductions

-metasymbol

-metasymbols

-metasyntax

-metasyntaxes

-metatheory

-metatherian

-metathorax

-metaxylem

-metchnikoff

-metempirical

-metempirics

-metestrus

-methacrylic

-methaemoglobin

-methenamine

-metho

-methodius

-methotrexate

-methoxide

-meths

-methylcyclohexane

-methyldopa

-methylphthalate

-methylthionine

-metic

-metoestrus

-metonic

-metopic

-metricate

-metrify

-metritis

-metronidazole

-metronymic

-metrorrhagia

-metz

-meu

-meung

-meuse

-mezcal

-mezcaline

-mezereon

-mezereum

-mho

-miaou

-miaul

-micawber

-michelozzo

-mick

-mickery

-mickiewicz

-mickle

-microbalance

-microbalances

-microbarographs

-microbodies

-microbody

-microbrailler

-microchip

-microchips

-microconcrete

-microcrack

-microcracked

-microcracking

-microcracks

-microdetector

-microdont

-microdot

-microfabric

-microgel

-micrographs

-microkink

-microkinking

-micromixing

-micropalaeontology

-microphyte

-micropyrometer

-microsporophyll

-microstomatous

-microswitch

-microswitches

-microsystem

-microsystems

-microtherm

-microtomy

-microwatt

-microwatts

-microwriter

-microwriters

-micrurgy

-middlebreaker

-middlemost

-mideast

-midheaven

-midian

-midinette

-midiron

-midlothian

-mieres

-miffy

-mihrab

-milage

-milazzo

-mileometer

-miletus

-milkfish

-milkhouse

-milkwort

-millais

-millefleurs

-millepede

-millepore

-milli

-milligan

-millrun

-millwheel

-millwheels

-millwork

-milne

-milo

-milometer

-milometers

-milreis

-miltiades

-mimas

-mimetite

-mimir

-mimosaceous

-minacious

-minas

-minch

-mindoro

-mindszenty

-minelayer

-mineralocorticoid

-mineworker

-mineworkers

-minge

-mingus

-minho

-minibike

-minicab

-minicabs

-minimus

-minipill

-ministerialist

-ministerium

-minitab

-minivet

-minna

-minnesinger

-mintoff

-miombo

-mirabeau

-miracidium

-mirador

-miraflores

-mirepoix

-mirk

-mirza

-misallocate

-misallocated

-misallocates

-misallocating

-misallocation

-misapplys

-miscarrys

-misdeclared

-misdefined

-mise

-miseno

-misericord

-miskolc

-mislaid

-misplead

-misposition

-mispositioned

-mispositioning

-mispositions

-missal

-missals

-missel

-missis

-mississauga

-mississipi

-missolonghi

-misspelt

-missus

-mistal

-mistassini

-misti

-mistigris

-mistle

-mistral

-mistrals

-mither

-mithgarthr

-mithridate

-mithridates

-mithridatism

-miticide

-mitis

-mitrailleuse

-mitrewort

-mixolydian

-mizoram

-mizzen

-moa

-moab

-mobutu

-modena

-moderne

-modge

-modigliani

-modillion

-mofette

-mog

-mogador

-mogen

-moho

-mohole

-mohs

-mohur

-moidore

-moirai

-moke

-mokha

-mokpo

-molina

-molise

-mollah

-mollescent

-mollusc

-molluscoid

-molluscs

-mollweide

-molopo

-moltke

-molybdenous

-mombasa

-momism

-monacid

-monadelphous

-monadnock

-monaghan

-monal

-monanthous

-monas

-monaxial

-monazite

-monck

-monecious

-moneme

-monetarist

-moneychanger

-mong

-moniliform

-monkeypot

-monkfish

-monkshood

-monnet

-monoatomic

-monobasic

-monocarp

-monocarpellary

-monocarpic

-monocausal

-monochasium

-monochloride

-monochloroethanol

-monochord

-monoclinous

-monodispersity

-monody

-monohull

-monohydrate

-monohydric

-monohydroxy

-monoicous

-monolatry

-monoliths

-monomark

-monomerous

-mononucleosis

-monopetalous

-monophagous

-monophobia

-monophyllous

-monoplegia

-monopode

-monopodium

-monopteros

-monosemy

-monosepalous

-monosized

-monosodium

-monosome

-monospermous

-monostich

-monostichous

-monostome

-monostrophe

-monostylous

-monothetic

-monotower

-monotropism

-mons

-monsignor

-montagnard

-montagu

-montagues

-montale

-montane

-montauban

-montbretia

-montcalm

-montefiore

-montego

-monteith

-montenegro

-montero

-monterrey

-montesquieu

-montessori

-montfort

-montgolfier

-montherlant

-montmorillonite

-montparnasse

-montpellier

-montreuil

-montreux

-montrose

-monza

-monzonite

-moog

-moolvie

-moonfish

-moonflower

-moonraker

-moonshot

-moonwort

-moorfowl

-moorhen

-moorwort

-mopboard

-mopoke

-moquette

-mor

-mora

-moraceous

-morar

-morava

-morbific

-morbihan

-morbilli

-morcha

-mordecai

-mordred

-morea

-moreau

-morecambe

-moreen

-moreish

-morelia

-morello

-morelos

-morepork

-moresco

-morish

-mornay

-moroni

-morphallaxis

-morphogenesis

-morphophoneme

-morphosis

-morphotype

-morphotypes

-morphy

-morro

-mors

-morula

-morwong

-mos

-mosasaur

-moschatel

-moseley

-moshav

-moshesh

-moskva

-mosley

-mosotho

-mossbunker

-mossie

-mosso

-mosstrooper

-motherfucker

-motherwell

-motherwort

-mothy

-motmot

-motocross

-motorable

-motorbicycle

-motorbus

-motorcoach

-motown

-motte

-motu

-mouflon

-moujik

-mouldboard

-mouldy

-moulmein

-mousebird

-mousetail

-mousseline

-mouthbrooder

-mouthwash

-mouthwatering

-movietone

-moviola

-mowburnt

-moxa

-mucin

-muckamuck

-muckle

-mucksweat

-muckworm

-mucoid

-mucopolysaccharide

-mucoprotein

-mucopurulent

-mucro

-mucronate

-mudcat

-mudfish

-mudir

-mudlark

-mudpack

-mudra

-mudskipper

-mudskippers

-muenster

-muesli

-mufulira

-mugabe

-muggins

-mugwort

-muhammadan

-mujik

-muldoon

-muleta

-muleteer

-mulga

-mulhouse

-mulki

-mulley

-mulliken

-mullock

-mulloway

-multan

-multangular

-multeity

-multicide

-multidrop

-multifid

-multifile

-multiflora

-multifoil

-multifoliate

-multigravida

-multihop

-multihull

-multihulls

-multikey

-multikeys

-multilateralist

-multilateralists

-multimembered

-multinuclear

-multipacket

-multipara

-multiped

-multiplane

-multiplepoinding

-multipunch

-multipunched

-multireel

-multirole

-multiscreen

-multispectral

-multistorey

-multisubject

-multivariable

-multivibrator

-multivocal

-multiway

-multiword

-multure

-mumbo

-mumchance

-munga

-mungo

-muniment

-muniments

-munnion

-munro

-munsell

-munster

-munt

-muntin

-muntjac

-muntz

-murage

-murasaki

-murat

-murcia

-mure

-murex

-muricate

-murine

-murman

-murra

-murrelet

-murrhine

-murrumbidgee

-murther

-musaceous

-muscadel

-muscae

-muscarine

-muscid

-muscleman

-musclemen

-muscovado

-museology

-musil

-musjid

-muskeg

-muso

-musquash

-musset

-mustafa

-mustee

-musteline

-musth

-mutch

-mutchkin

-mutism

-mutsuhito

-muttonhead

-muttra

-mutule

-muzorewa

-muzz

-myalgia

-myalism

-myall

-myasthenia

-mycelium

-mycetoma

-mycetozoan

-mycin

-mycostatin

-mydriasis

-mydriatic

-myelencephalon

-myelin

-myelitis

-myeloma

-myiasis

-mylonite

-myna

-myocardiograph

-myogenic

-myograph

-myology

-myoma

-myope

-myrmecology

-myrmecophagous

-myrmecophile

-myrobalan

-myrtaceous

-mysia

-mystagogue

-mythopoeia

-mytilene

-myxoedema

-myxoma

-myxomatosis

-myxomycete

-myxovirus

-mzee

-mzungu

-nabis

-nabla

-nablas

-nablus

-nabob

-naboth

-nacre

-nae

-naevus

-nagor

-naha

-nailbrush

-nailfile

-nailhead

-nainsook

-naira

-nairn

-naissant

-naker

-nakhichevan

-nakuru

-nalchik

-nalgo

-namangan

-namas

-namelist

-namelists

-namen

-nametape

-namhoi

-namur

-nanak

-nanchang

-nanda

-nanga

-nankeen

-nanning

-nanometric

-nanoplankton

-nanterre

-nantes

-nantung

-naphtali

-naphthyl

-napiform

-nappa

-nara

-narbada

-narceine

-narcoanalysis

-narcosynthesis

-narcotism

-nardoo

-nares

-narial

-nark

-narmada

-narthex

-narva

-narvik

-naseberry

-naseby

-nashe

-nasho

-nasion

-nasofrontal

-nasopharynx

-nasser

-nastase

-natheless

-natrium

-natrolite

-natron

-natsopa

-natter

-natterjack

-naturism

-naturopathy

-nauch

-naucratis

-naumachia

-nauplius

-naur

-nautch

-nautiloid

-navar

-navarin

-navarino

-navarre

-navew

-navicert

-navratilova

-navvy

-naxalite

-naxos

-naze

-ndola

-neagh

-neap

-nearside

-neb

-nebo

-nebuchadnezzar

-neckar

-neckband

-neckcloth

-neckpiece

-neckwear

-necrobiosis

-necrolatry

-necromania

-necrophobia

-necrose

-necrotomy

-neddy

-needlecord

-needlecraft

-needlefish

-needleful

-neep

-nefertiti

-negev

-negresses

-negrillo

-negritude

-negropont

-negros

-neisse

-nek

-nekton

-neman

-nemathelminth

-nemea

-nemertean

-nemery

-nene

-neoarsphenamine

-neocolonialism

-neoconservative

-neoimpressionism

-neoplasty

-neoscholasticism

-neper

-nephogram

-nephograph

-nephology

-nephralgia

-nephridium

-nephrite

-nephritic

-nephritis

-nephron

-nephrosis

-nephrotomy

-nepos

-neral

-nereus

-neritic

-nernst

-neroli

-neruda

-nerva

-nerval

-nervate

-nervine

-nervure

-nesh

-nesselrode

-nessus

-nestorius

-netaji

-netball

-neto

-netsuke

-nett

-neume

-neurasthenia

-neurectomy

-neurilemma

-neuro

-neuroblast

-neurocoele

-neurogram

-neurohypophysis

-neurolemma

-neuroma

-neuropath

-neuropsychiatry

-neuropteran

-neuropterous

-neurotomy

-neurotransmitter

-neurotransmitters

-neurovascular

-neusatz

-neuss

-neustria

-neutretto

-newshawk

-newspeak

-ney

-nez

-niblick

-nicknack

-nickpoint

-nicotinism

-nictheroy

-nictitate

-nictitating

-nidaros

-niddering

-nide

-nidicolous

-nidify

-nidus

-niebuhr

-niello

-niemen

-nieve

-niff

-nightlife

-nightrider

-nightspot

-nightwear

-nigrescent

-nigrify

-nigritude

-nihon

-niigata

-nilgai

-nilgiri

-nim

-nimblewit

-nimonic

-ningsia

-ninus

-niobic

-niobous

-niort

-nipa

-nipigon

-nipplewort

-nippur

-nishinomiya

-nisus

-niton

-nitramine

-nitrobacteria

-nitrochloroform

-nitrohydrochloric

-nitrometer

-nitromethane

-nitroso

-nitrosyl

-nival

-nivation

-niven

-niveous

-nivernais

-nixie

-nizhni

-njord

-nkomo

-nkrumah

-nobbut

-nobiliary

-noctilucent

-noctuid

-noctule

-noesis

-nofretete

-noh

-noil

-noisette

-nolde

-nolle

-nomarch

-nomarchy

-nombles

-nombril

-nome

-nomen

-nomism

-nomocracy

-nonactive

-nonaggression

-nonaligned

-nonanalytic

-nonanoic

-nonappearance

-nonblank

-nonblanks

-noncausal

-noncomputable

-noncontributory

-noncritical

-nondirected

-nondispersive

-noneffective

-nonego

-nonet

-nonevent

-nonexecutable

-nong

-nonharmonic

-nonhierarchic

-nonhierarchical

-nonhuman

-nonidentical

-noninteger

-noninvertible

-nonnumeric

-nono

-nonowner

-nonowners

-nonparametrical

-nonparous

-nonparty

-nonproliferation

-nonrecursive

-nonrecursively

-nonredundant

-nonrelevance

-nonrelevant

-nonsequenced

-nonsmoker

-nonsmokers

-nonstarter

-nonstative

-nonstick

-nonstriated

-nonsuch

-nonsuit

-nonunionism

-nonvocal

-nonvoter

-nonvoting

-noordbrabant

-nopal

-nord

-nordau

-norepinephrine

-norge

-noria

-noricum

-norite

-nork

-norodom

-northmost

-noseband

-nosography

-nostology

-notelet

-noticeboard

-noticeboards

-notifiable

-notitia

-notochord

-notum

-noumenon

-novalis

-novara

-novation

-novaya

-novelese

-novello

-novercal

-nowel

-nowhence

-nowt

-nox

-noyade

-noyau

-noyon

-nubecula

-nubians

-nucha

-nuddy

-nudicaul

-nudum

-nuevo

-nuggar

-nuggety

-nuissance

-nuke

-nukus

-nullah

-nullarbor

-nullifidian

-nullipara

-numantia

-numbat

-numberplate

-numbfish

-numbles

-numdah

-numen

-numerary

-numidia

-nummary

-nummulite

-numnah

-nunatak

-nunc

-nuncio

-nuncle

-nunhood

-nunny

-nureyev

-nuri

-nuristan

-nurmi

-nusa

-nutant

-nutbrown

-nutcase

-nutgall

-nuthouse

-nutlet

-nutter

-nutwood

-nyala

-nyanza

-nyasa

-nyctaginaceous

-nyctalopia

-nyctinasty

-nyctitropism

-nyctophobia

-nye

-nyeman

-nyerere

-nylghau

-nympha

-nymphaeaceous

-nympho

-nystatin

-nyx

-oakum

-oarfish

-oarlock

-oast

-oates

-oba

-oban

-obasanjo

-obconic

-obedientiary

-oblanceolate

-obligato

-obmutescence

-obolus

-obote

-obreption

-obscurum

-obsecrate

-obsequent

-obstipation

-obvolute

-oca

-occasionalism

-occular

-occultate

-oceanid

-oceanus

-ochlophobia

-ochone

-ochrea

-ockeghem

-ocker

-ocode

-octachord

-octad

-octahedrite

-octamerous

-octanedioic

-octangle

-octangular

-octarchy

-octaroon

-octavalent

-octavo

-octocentenary

-octonary

-octu

-octuple

-octylphenylether

-ocularist

-oddfellow

-odense

-odoacer

-odontalgia

-odontoblast

-odontograph

-odontoid

-odontophore

-odovacar

-odra

-odyl

-oecology

-oenone

-oestrin

-oestrogen

-oestrone

-oestrous

-oestrus

-ofay

-offa

-offaly

-offcut

-offcuts

-officinal

-offline

-ogaden

-ogasawara

-ogbomosho

-ogdoad

-ogee

-ogun

-oho

-oilbird

-oilcup

-oilfield

-oilfired

-oise

-oita

-oka

-okavango

-oke

-okta

-oldwife

-oleaceous

-olecranon

-olefine

-olefinic

-oleic

-olein

-oleograph

-oleoresin

-oleum

-olibanum

-olid

-oligopsony

-oligotrophic

-oliguria

-olio

-oliphant

-olivaceous

-olivary

-olivenite

-olivier

-olla

-olm

-ology

-olomouc

-oloroso

-olszyn

-omadhaun

-omagh

-omar

-omasum

-omayyad

-ombre

-omdurman

-ommatidium

-ommatophore

-omnicompetent

-omnific

-omophagia

-omphale

-omphalos

-omuta

-onager

-onagraceous

-onassis

-ondes

-ondo

-ondograph

-ondometer

-onega

-onitsha

-onlook

-onomasiology

-onychophoran

-onymous

-oof

-oogamy

-oogenesis

-oogonium

-ooh

-oolite

-oology

-oolong

-oomiak

-oompah

-oont

-oophorectomy

-oophoritis

-oophyte

-oose

-oosperm

-oosphere

-oospore

-oostende

-ootheca

-ootid

-opah

-opalesce

-ope

-opencast

-operose

-ophicleide

-ophir

-ophthalmia

-ophthalmitis

-opisometer

-opisthobranch

-opisthognathous

-opiumism

-oppidan

-oppilate

-oppugnant

-opsimath

-optacon

-optacons

-optoelectronic

-optometer

-oracy

-oradea

-oran

-orc

-orcein

-orchestrina

-orchidaceous

-orchil

-orchitis

-orcinol

-orczy

-ordinator

-ordinators

-ordonnance

-ordzhonikidze

-oread

-orectic

-orel

-orense

-orfe

-orfray

-organogenesis

-organography

-organoleptic

-organology

-organon

-organotherapy

-organum

-organza

-organzine

-orgeat

-oribi

-oriel

-oriente

-origen

-orinasal

-orissa

-orizaba

-orjonikidze

-orkneys

-orle

-orlon

-orlop

-ormer

-ormolu

-ormuz

-orne

-ornis

-ornithischian

-ornithomancy

-ornithopod

-ornithopter

-ornithoscopy

-ornithosis

-orobanchaceous

-oroide

-orometer

-orontes

-orozco

-orpharion

-orphrey

-orpiment

-orpine

-orrery

-orris

-orsini

-ortegal

-orthohydrogen

-orthophosphoric

-orthophosphorous

-orthopter

-orthopterous

-orthoptic

-orthoptics

-orthostichy

-orthotone

-ortles

-oruro

-oryol

-oscitancy

-osculant

-oscular

-osman

-osmious

-ossa

-ossein

-ossetia

-ossie

-ossietzky

-ossiferous

-osso

-osteal

-ostend

-ostensory

-osteoclasis

-osteogenesis

-osteomalacia

-osteomyelitis

-osteotome

-osteotomy

-ostia

-ostinato

-ostiole

-ostium

-ostler

-ostmark

-ostosis

-ostracoderm

-ostracon

-ostrava

-ostwald

-otalgia

-othergates

-othman

-otho

-otic

-otitis

-otocyst

-otolaryngology

-otology

-otoscope

-otranto

-ottar

-ottava

-otterburn

-otway

-ouachita

-ouananiche

-oubangui

-oudh

-ouessant

-oujda

-oulu

-ouse

-ousel

-outasight

-outdate

-outjockey

-outlist

-outman

-outrunner

-outrush

-outswing

-outwash

-outwith

-ovenproof

-ovenproofed

-ovenproofing

-ovenproofs

-ovenware

-overachieve

-overachieved

-overachiever

-overachieves

-overachieving

-overarch

-overblouse

-overboot

-overcheck

-overcloud

-overcompetence

-overconsolidate

-overconsolidated

-overconsolidates

-overconsolidating

-overconsolidation

-overcrop

-overdetermine

-overdetermines

-overdetermining

-overdye

-overfold

-overground

-overhype

-overhyped

-overhypes

-overhyping

-overleaf

-overlive

-overmantel

-overmatter

-overnice

-overpitch

-overrunning

-overscale

-overscore

-overset

-oversew

-overside

-oversleeve

-overspent

-overstaff

-overstaffed

-overstaffing

-overstaffs

-overstepped

-overstress

-overstressed

-overstruck

-overtask

-overtype

-overtyping

-oviedo

-oviferous

-ovisac

-owelty

-owerri

-owt

-oxenstierna

-oxhide

-oxidimetry

-oxime

-oxon

-oxonium

-oxpecker

-oxter

-oxtongue

-oxus

-oxyacetylene

-oxyacid

-oxycephaly

-oxychloride

-oxyhaemoglobin

-oxysalt

-oxysulphide

-oxytetracycline

-oxytocic

-oxytocin

-oxytone

-oyer

-oyez

-oyo

-oystercatcher

-ozalid

-ozonolysis

-ozs

-pabulum

-paca

-paceway

-pacha

-pachalic

-pachuca

-pachuco

-padang

-padauk

-paddlefish

-pademelon

-paderborn

-padishah

-padma

-padouk

-padova

-padsaw

-padua

-paduasoy

-paederast

-paediatrician

-paediatrics

-paedogenesis

-paedology

-paedomorphosis

-paedophilia

-paeony

-pageful

-pagefuls

-pagurian

-pah

-pahang

-pahsien

-paigle

-paillasse

-paillette

-painkiller

-paintbox

-paisa

-paisano

-pakeha

-paki

-palaeanthropic

-palaeethnology

-palaeoanthropology

-palaeobotany

-palaeoclimatology

-palaeoecological

-palaeoecology

-palaeoethnobotany

-palaeogene

-palaeography

-palaeolith

-palaeolithic

-palaeomagnetism

-palaeontography

-palaeozoology

-palais

-palawan

-palea

-palembang

-palencia

-palestra

-palestrina

-paletot

-paley

-palikar

-palimpsest

-palindromicity

-palk

-palladic

-palladio

-palladous

-pallete

-palma

-palmaceous

-palmira

-palolo

-palooka

-palos

-palour

-palpebrate

-palsgrave

-palstave

-pamirs

-pampero

-pamphrey

-pamphylia

-pamplona

-panada

-panatella

-panatellas

-panay

-panchax

-panchayat

-panchen

-pancosmism

-pancreatin

-pandanaceous

-pandore

-pandour

-pandowdy

-pandurate

-pandy

-pandybat

-panellist

-panellists

-panettone

-panga

-panicmonger

-paniculate

-panjim

-pankhurst

-panmixia

-panmunjom

-pannage

-panne

-pannikin

-pannonia

-panocha

-panoptic

-pansophy

-pantechnicon

-pantelleria

-pantihose

-panto

-pantoum

-paoting

-paotow

-papadopoulos

-papain

-papandreou

-papaveraceous

-papaverine

-papaya

-papeete

-paperbark

-paperclip

-paperclips

-paperknife

-paperknives

-paperless

-paperthrow

-papeterie

-paphlagonia

-paphos

-papier

-papilionaceous

-pappus

-papule

-papyraceous

-papyrology

-parabasis

-parablast

-parabrake

-paracasein

-paracetamol

-parachronism

-paraclete

-paradrop

-paraesthesia

-paraformaldehyde

-paragoge

-parahydrogen

-paralanguage

-paraldehyde

-paralipomena

-paramaribo

-paramatta

-paramo

-paramorph

-paramorphine

-paramorphism

-parang

-parapraxis

-parashah

-parasitology

-parastichy

-parasyntheton

-parcae

-parcheesi

-parclose

-pardalote

-pardubice

-pareira

-parergon

-paresis

-paresthesia

-pareu

-pareve

-parfleche

-parget

-parhelic

-parhelion

-paripinnate

-parishad

-parison

-parisyllabic

-parkin

-parky

-parlando

-parleyvoo

-parliamentarianism

-parm

-parmenides

-parmentier

-parmigianino

-parnell

-paroicous

-parotic

-parotoid

-parousia

-parramatta

-parrel

-parrotfish

-parthia

-particlar

-partita

-partlet

-parturifacient

-parulis

-parzival

-pasargadae

-pasay

-pase

-pash

-pashalik

-pashka

-pashm

-pasionaria

-pasolini

-pasqueflower

-pasquinade

-passacaglia

-passade

-passant

-passepied

-passifloraceous

-passionflower

-pastis

-pasto

-patagium

-patellate

-pathfind

-pathic

-pathlength

-pathognomy

-patiala

-paticularly

-patin

-patisserie

-patmore

-patna

-paton

-patras

-patrial

-patriclinous

-patrilocal

-patroclus

-patrology

-pau

-paua

-paucal

-pauldron

-pauling

-paumotu

-pausanias

-pav

-pavage

-pavane

-pavis

-pavlodar

-pavlova

-pavonine

-pawky

-pawnees

-paxwax

-paynim

-peag

-peake

-pean

-pearlwort

-pearmain

-peart

-peary

-peasouper

-peau

-peavey

-pechora

-peckinpah

-peckish

-pectase

-pecten

-peculium

-pedalo

-pedate

-pedatifid

-pedi

-pedicular

-pediform

-pedunculate

-peebles

-peen

-peened

-peening

-peens

-peepshow

-peepul

-peetweet

-peewit

-pegmatite

-pegu

-peipus

-peiraeus

-peirce

-pejoration

-pekan

-peke

-pelagius

-pelargonic

-pelargonium

-pelerine

-pelf

-pelion

-pelisse

-pelite

-pella

-pelles

-pelletier

-pellicle

-pelmet

-peloponnese

-peltast

-peltier

-pemba

-pemphigus

-penang

-penchi

-pendente

-penderecki

-pendragon

-peneplain

-peneus

-pengpu

-penillion

-peninsulate

-penki

-pennine

-pennines

-penninite

-pennon

-pennoncel

-pennycress

-pennyweight

-pennywort

-pennyworth

-penrith

-penstemon

-penstock

-penta

-pentachlorophenol

-pentangular

-pentanoic

-pentaprism

-pentastich

-pentatomic

-pentelikon

-pentene

-penthesileia

-pentheus

-pentimento

-pentlandite

-pentose

-pentothal

-pentoxide

-pentyl

-pentylenetetrazol

-penuchle

-penza

-penzance

-pepin

-peplos

-peplum

-pepo

-pepperwort

-pepsinate

-pera

-peracid

-peraea

-perak

-perborate

-perchloric

-perchloride

-percoid

-perdido

-perdu

-pereira

-perfin

-pergamum

-pergolesi

-peri

-perianth

-periapt

-periblem

-periclase

-periclinal

-pericline

-pericope

-periglacial

-perigon

-perigordian

-perinephrium

-perineuritis

-perineurium

-periodate

-perionychium

-periosteum

-periostitis

-peripteral

-perique

-perisarc

-perisperm

-perispomenon

-perissodactyl

-peristalsis

-peristome

-peristyle

-perithecium

-peritoneum

-peritrack

-periwig

-perlis

-perlocution

-permanganate

-permanganic

-pernambuco

-pernickety

-pernik

-pernod

-perogative

-peroxysulphuric

-perpignan

-perrault

-perrin

-perron

-persalt

-perse

-persephone

-persepolis

-persiennes

-personalty

-perspectivism

-perspex

-persulphate

-persulphuric

-pertussis

-perugia

-perugino

-peruke

-perutz

-peruzzi

-perv

-pes

-pesade

-pesaro

-pescadores

-pescara

-peseta

-pesewa

-peshawar

-peshitta

-pestalozzi

-pesthole

-pesthouse

-petaliferous

-petalody

-petechia

-pethidine

-petrarch

-petrodollar

-petrograd

-petrolic

-petsamo

-pettifogging

-pettitoes

-petuntse

-pevsner

-pewit

-phagedaena

-phagomania

-phagophobia

-phalangeal

-phanerocrystalline

-phanerophyte

-phanerozoic

-pharmacophore

-pharmacophores

-pharmacophoric

-pharsalus

-pharyngology

-pharyngoscope

-pharyngotomy

-phatic

-pheidippides

-phelloderm

-phellogen

-phenacaine

-phenacetin

-phenacite

-phenanthrene

-phenazine

-phenetic

-phenformin

-phenix

-phenolphthalein

-phenomenom

-phenylamine

-phenylketonuria

-phew

-phidias

-phidippides

-philae

-philby

-philemon

-philhellene

-philibeg

-philippi

-philippics

-philippopolis

-philips

-philistines

-phillips

-phillumenist

-philomel

-phimosis

-phiz

-phlebosclerosis

-phlogopite

-phlyctena

-phnom

-phocaea

-phocine

-phocis

-phocomelia

-phoebus

-phoenicians

-phomvihane

-phonendoscope

-phonetist

-phonometer

-phonoscope

-phonotactics

-phonotype

-phonotypes

-phonotypy

-phooey

-phosgenite

-phosophoric

-phosphatase

-phosphaturia

-phosphino

-phosphonium

-phosphoprotein

-phosphorate

-phosphoroscope

-phossy

-phot

-photoactinic

-photoactive

-photochronograph

-photoconduction

-photoelastic

-photoelasticity

-photoelectrotype

-photofit

-photonasty

-photoneutron

-photophysical

-photophysics

-photopolymer

-photoselected

-photoselection

-phototherapy

-photothermic

-phototonus

-phototopography

-phototransistor

-phototype

-phototypeset

-photozincography

-phrasal

-phrenitis

-phrixus

-phrygia

-phthalein

-phthalic

-phthalocyanine

-phthiriasis

-phthisic

-phthisis

-phut

-phyfe

-phyllite

-phylloquinone

-phyllotaxis

-physicochemical

-physiocrat

-physoclistous

-physostomous

-phytogenesis

-phytohormone

-phytolith

-phytoliths

-phytotoxin

-phytotron

-piacenza

-piacular

-piaf

-piaffe

-piaget

-piave

-piaza

-picardy

-piccanin

-piccaninny

-piccard

-pichiciego

-pickerelweed

-pickin

-pico

-picong

-picot

-picotee

-picrate

-picric

-picrite

-picrotoxin

-pictogram

-pictor

-picts

-picul

-piddock

-piedmontite

-pieman

-piemonte

-pieria

-pieridine

-piero

-piezo

-piezochemistry

-pigface

-pigfaced

-pigfish

-piggin

-piggledy

-piggott

-pigmeat

-pignut

-pigswill

-pigweed

-pika

-pikelet

-pikeperch

-pilatus

-pilau

-pilch

-pilcomayo

-pileous

-pili

-piliferous

-piliform

-pilliwinks

-pillwort

-pilocarpine

-pilose

-pimiento

-pimpernel

-pinaceous

-pinchpenny

-pinckney

-pindar

-pindus

-pinero

-pinfeather

-pinfish

-pinguid

-pinite

-pinnatifid

-pinnatipartite

-pinnatiped

-pinnatisect

-pinny

-pinochet

-pinole

-pintadera

-pinturicchio

-pinwork

-pinworm

-piny

-piolet

-pipa

-pipeclay

-pipefitting

-piperaceous

-pipewort

-pipistrelle

-pipsqueak

-piragua

-pirandello

-piranesi

-pirhouette

-pirn

-pirog

-pirozhki

-piscary

-piscatorial

-pisgah

-pish

-pishogue

-pishpek

-pisistratus

-pissarro

-pistareen

-piste

-pistoia

-pitapat

-pitchometer

-pitchometers

-pithos

-pitot

-pitsaw

-pituri

-pityriasis

-piura

-pix

-pize

-pizzle

-placet

-placoderm

-placoid

-plafond

-plagioclimax

-plagiotropism

-plainchant

-plainsong

-planchette

-planform

-planimetry

-plano

-planogamete

-planometer

-plantagenet

-plantigrade

-plantocracy

-plash

-plashy

-plasmodesma

-plasmosome

-plassey

-plastometer

-plata

-plataea

-platan

-platelayer

-platelayers

-platemark

-platemarks

-plath

-platiniferous

-platiniridium

-platinocyanic

-platinocyanide

-platinoid

-platinotype

-platy

-platyhelminth

-platyrrhine

-plauen

-playgroup

-playgroups

-playlet

-playschool

-pleach

-pleasance

-pleb

-plebby

-plectognath

-pled

-pleiad

-pleiocene

-pleiotropism

-pleochroism

-pleomorphism

-pleonasm

-pleopod

-plesiosaur

-plessor

-plethysmograph

-pleurodynia

-pleuron

-pleuropneumonia

-pleurotomy

-pleuston

-pleven

-plexor

-plica

-plicate

-ploat

-plodge

-plonk

-plonko

-plotinus

-plottable

-ploughboys

-ploughmen

-ploughs

-ploughstaff

-plumate

-plumbaginaceous

-plumbicon

-plumbum

-pluriliteral

-pluripresence

-plutus

-pluviometer

-pluvious

-pma

-pneuma

-pneumobacillus

-pneumoconiosis

-pneumodynamics

-pneumogastric

-pneumograph

-pneumonectomy

-pneumonitis

-pneumothorax

-pnom

-poaceous

-pochard

-pococurante

-pocus

-poddy

-podesta

-podgorica

-podophyllin

-podsol

-poenology

-pogey

-pogge

-pogy

-pohai

-pohutukawa

-poind

-pointsman

-poitiers

-poitou

-pokeberry

-pokelogan

-pokeweed

-pokie

-pola

-polacre

-poleaxe

-polemarch

-polemoniaceous

-polenta

-poleyn

-pollaiuolo

-pollan

-pollinosis

-polliwog

-polony

-poltava

-poly

-polyadelphous

-polyamide

-polyatomic

-polybasic

-polybius

-polyconic

-polycrates

-polydemic

-polydeuces

-polydipsia

-polydisperse

-polydispersity

-polyembryony

-polygalaceous

-polygnotus

-polygonaceous

-polyhydric

-polyisoprene

-polymerous

-polynices

-polyoxyethene

-polyphosphoric

-polyphyodont

-polypod

-polyprotodont

-polypus

-polysulphide

-polysyllogism

-polythetic

-polythionic

-polyvinylidene

-polyxena

-pom

-pombal

-pombe

-pomfret

-pomiculture

-pommern

-pommy

-pomorze

-pompidou

-pondicherry

-pondokkie

-pondweed

-pone

-pongee

-pongid

-poniard

-ponta

-pontchartrain

-pontefract

-pontevedra

-pontianak

-pontifex

-pontil

-pontormo

-pontus

-pontypool

-pontypridd

-pooftah

-poon

-poona

-poonce

-poove

-popedom

-popeyed

-poppadom

-popsicle

-popsy

-porbeagle

-pori

-porirua

-porism

-porkpie

-pornocracy

-poromeric

-porosimeter

-porphyrogenite

-porsena

-portadown

-portfire

-portlaoise

-portobello

-portulacaceous

-posho

-posology

-poss

-possie

-postcava

-postcode

-postcodes

-postexilian

-posticous

-postie

-postil

-postimpressionism

-postliminy

-postmeridian

-postrider

-potamic

-potamology

-potatory

-potch

-potentiostat

-pothecary

-potherb

-potiche

-potiphar

-potman

-potoroo

-potyomkin

-pouncet

-powan

-powys

-poyang

-pozsony

-pozzuolana

-pozzuoli

-pozzy

-pracharak

-pradesh

-praemunire

-praenomen

-praetor

-praetorius

-pragmat

-pragmats

-praha

-prajna

-pralltriller

-prang

-prat

-prato

-prau

-praxiteles

-preadamite

-precall

-precatory

-precedential

-preceed

-precis

-precompile

-precompiled

-precompiles

-precompiling

-preconnected

-preconnection

-preconsolidate

-preconsolidated

-preconsolidates

-preconsolidating

-preconsolidation

-predella

-predeterminate

-predial

-predicant

-predikant

-prednisone

-predrilled

-prefill

-prefilled

-prefilling

-prefills

-preglacial

-preincubate

-preincubated

-preincubates

-preincubating

-prelacy

-prelatism

-prelect

-prelexical

-prelims

-premaxilla

-premedication

-premiership

-premultiplied

-premultiply

-premultiplying

-premultiplys

-prenomen

-prenominal

-preopened

-preoxidation

-prepositor

-prerelease

-presa

-prescan

-prescriptible

-prescriptivism

-presentationism

-pression

-prestel

-prestonpans

-prestwich

-preterhuman

-pretonic

-pretor

-pretorius

-previse

-priapism

-pribilof

-priestcraft

-prill

-primaeval

-primaquine

-primatives

-primigravida

-primine

-primordium

-primulaceous

-prisage

-proc

-procarp

-proceleusmatic

-prochronism

-proclus

-procopius

-proctoscope

-procuratory

-producable

-proem

-profiterole

-progenitive

-proleg

-prolegomenon

-prolepsis

-promethazine

-promycelium

-propanoic

-propenamide

-propene

-propertius

-propionic

-propjet

-propontis

-propylaeum

-propylite

-proserpina

-prostheses

-prostyle

-protagoras

-protandrous

-protanopia

-proters

-protestantism

-protoactinium

-protochordate

-protogynous

-protomorphic

-protosemitic

-prototherian

-protoxide

-protrusile

-protuberate

-protude

-protudes

-protuding

-protyle

-proudhon

-proustite

-prout

-proventriculus

-provo

-provocate

-provocations

-proxima

-prudentius

-prunelle

-prut

-prynne

-prytaneum

-psammite

-psephite

-pseudaxis

-pseudepigrapha

-pseudocarp

-pseudocode

-pseudomorph

-pseudomutuality

-pseudopodium

-pseudorandom

-pshaw

-psilocybin

-psilomelane

-psittacine

-psittacosis

-psoas

-psoriasis

-psst

-psychasthenia

-psychohistory

-psychomimetic

-psychotechnics

-ptah

-pteridology

-pteridophyte

-pteridosperm

-pteropod

-pterosaur

-pterygoid

-pteryla

-ptisan

-ptochocracy

-ptolemaeus

-ptosis

-ptyalin

-ptyalism

-pudsey

-puebla

-puerilism

-puffbird

-puffbirds

-puget

-puglia

-pugwash

-pula

-pullorum

-pulsatile

-pulsejet

-pulvinate

-punakha

-punce

-punchable

-punchbowl

-punchbowls

-pune

-punjab

-punka

-punnet

-punnets

-punta

-purana

-puri

-purim

-purpurin

-pushkin

-pushrod

-pushrods

-pushto

-putamen

-putto

-putumayo

-puvis

-puy

-pya

-pyaemia

-pydna

-pye

-pyelography

-pylorectomy

-pylos

-pym

-pyogenesis

-pyoid

-pyosis

-pyramus

-pyranometer

-pyrazole

-pyrenees

-pyroconductivity

-pyrogallate

-pyrognostics

-pyrographic

-pyrography

-pyrolysed

-pyrolysing

-pyromagnetic

-pyrone

-pyrophosphoric

-pyrophotometer

-pyrophyllite

-pyrostat

-pyrosulphate

-pyrosulphuric

-pyrrha

-pyrrho

-pyrrolidine

-pyrruvic

-pythias

-qaboos

-qaddafi

-qaddish

-qadi

-qairwan

-qattara

-qeshm

-qibla

-qintar

-qishm

-qoph

-quadragenarian

-quadragesimal

-quadraplegic

-quadrella

-quadriga

-quadrinomial

-quadriplegia

-quadrophonics

-quadrumanous

-quadruplex

-quaere

-quagga

-quaggy

-quaky

-quale

-quango

-quangos

-quaquaversal

-quare

-quarrian

-quarterlight

-quarterlights

-quartersaw

-quashi

-quasicontinuous

-quasiorder

-quasiperiodic

-quasistationary

-quass

-quathlamba

-quatre

-quebracho

-queencake

-queensberry

-quelpart

-quelquechose

-quemoy

-queneau

-quenelle

-quercetin

-quercine

-quesnay

-quetta

-quetzalcoatl

-quiberon

-quidnunc

-quillet

-quillon

-quilmes

-quim

-quinacrine

-quinary

-quinate

-quincentenary

-quindecagon

-quindecaplet

-quindecennial

-quinic

-quinnat

-quinol

-quinone

-quinonoid

-quinquagenarian

-quinquecentenary

-quinquefoliate

-quinquepartite

-quinquereme

-quinsy

-quintan

-quintana

-quintero

-quintilian

-quinze

-quipu

-quire

-quirinus

-quist

-quiverful

-qum

-qumran

-quokka

-quotha

-rabato

-rabaul

-rabbath

-rabbitfish

-rabbitoh

-racecard

-racecards

-racegoer

-racegoers

-raceme

-rachmanism

-rada

-radicel

-radiguet

-radioactivate

-radiocommunication

-radioligand

-radioluminescence

-radiomicrometer

-radiophonic

-radioscope

-radiotelegram

-radiotelemetry

-radioteletype

-radiothermy

-radiotoxic

-radom

-raeburn

-raf

-raffinate

-ragbolt

-ragusa

-ragworm

-ragworms

-ragwort

-rahman

-railcar

-railcars

-railwayman

-rainband

-rainbird

-raincheck

-rainforest

-rainout

-raison

-rajab

-rajahs

-rajasthan

-rajkot

-rajputana

-rajya

-rakata

-rakehell

-raki

-rallentando

-ralline

-rallycross

-ramachandra

-ramakrishna

-ramat

-ramayana

-rambert

-rambutan

-rameau

-ramjet

-ramjets

-rammish

-rampur

-ramsay

-ramsgate

-ramsons

-ramtil

-ramulose

-rancagua

-rance

-rancherie

-ranchero

-ranchi

-randan

-randers

-ranee

-rangefinder

-rani

-ranjit

-ranmoor

-ransome

-ranunculaceous

-rapacki

-rapeseed

-raphe

-raphide

-rapparee

-rara

-raree

-rareripe

-rarotonga

-rasbora

-rase

-rasht

-rask

-raspatory

-rasputin

-rasse

-ratan

-ratatouille

-ratbag

-ratbaggery

-ratbite

-rateen

-ratfink

-ratfish

-ratha

-rathenau

-ratiometer

-ratisbon

-ratite

-ratlam

-rato

-ratsbane

-rattigan

-rattish

-rattlebox

-rattoon

-ravelin

-ravenna

-ravin

-rawalpindi

-rawsthorne

-raylet

-razee

-razoo

-razzia

-razzle

-reade

-readonly

-readwrite

-realgar

-reallot

-reallotment

-reapplied

-reapplies

-reapply

-rearguard

-rearguards

-reassertion

-reassociation

-reast

-rebato

-rebec

-rebell

-rebellow

-rebid

-rebond

-rebonded

-rebonding

-rec

-recalesce

-recaption

-receiptor

-recept

-recipience

-recluster

-reclustering

-recodified

-recodifies

-recodify

-recodifying

-recognizee

-recompilation

-reconsolidate

-reconsolidating

-recrement

-rectillinear

-rectocele

-recuperator

-recurrency

-recursivity

-recurvate

-recurve

-redan

-redback

-redbrick

-redbug

-redcurrant

-redd

-redditch

-reddle

-redeye

-redfin

-rediffusion

-redingote

-redon

-redose

-redowa

-reductionalist

-redware

-reebok

-reedling

-reen

-reflate

-reflated

-reflates

-reflating

-reflet

-regelate

-reger

-reggae

-reggio

-regin

-regiomontanus

-rego

-regrate

-regulable

-reigate

-reims

-reinsertion

-reintroduction

-reinvoke

-reinvoking

-reith

-rejig

-rejuvenesce

-relatum

-relearn

-religionism

-reluct

-remainderman

-remittee

-remix

-remixes

-remixing

-remontant

-remontoir

-remora

-remould

-remoulded

-remoulding

-removalist

-remscheid

-rendzina

-renegado

-reni

-rennes

-renvoi

-reorientate

-reorientated

-reorientates

-reorientating

-repassivation

-repechage

-replevy

-replicable

-replicator

-replicators

-repoint

-repone

-repot

-reprocessor

-reprography

-reptant

-resample

-resampling

-resaturate

-resaturating

-resaturation

-rescissible

-reseat

-reseau

-reselection

-resequence

-resettle

-residentiary

-resiniferous

-resipiscence

-resistencia

-resit

-resnais

-resnatron

-respecifies

-respecify

-resrict

-restiform

-restorationism

-restransmit

-resubmission

-resurrectionism

-rete

-retene

-retension

-retensioned

-retentionist

-retiary

-retinite

-retro

-retroact

-retrochoir

-retrodiction

-retroject

-reuchlin

-reus

-reuter

-reutlingen

-reval

-revanchism

-revelationist

-reverberator

-reversi

-reverso

-revoice

-rewire

-rewiring

-rexine

-reynaud

-reynosa

-rhabdomyoma

-rhachis

-rhaetia

-rhee

-rhein

-rheobase

-rheotaxis

-rheotropism

-rhetic

-rheydt

-rhigolene

-rhinology

-rhinoplasty

-rhizomorph

-rhodic

-rhodinal

-rhodos

-rhotacism

-rhotic

-rhumbatron

-rhynchocephalian

-rhyton

-ria

-ribbentrop

-ribble

-ribbonfish

-ribbonwood

-ribera

-ribwort

-ribworts

-ricardo

-riccio

-ricercare

-richelieu

-richthofen

-ricinoleic

-rickettsial

-rident

-ridgetree

-ridgeway

-ridley

-riefenstahl

-riempie

-rienzi

-rightable

-righthand

-righthanded

-rightish

-righto

-rightwinger

-rightwingers

-rigi

-rigil

-rimester

-rimu

-rinforzando

-ringgit

-ringhals

-ringinglow

-ringster

-ripcord

-ripon

-ripplet

-rissole

-risus

-ritardando

-ritenuto

-ritornello

-rivage

-rizal

-rizzio

-roadholding

-roadroller

-roadrollers

-robben

-robbia

-roborant

-roca

-rocaille

-rockery

-rockweed

-rodomontade

-roentgenopaque

-roeselare

-rogatory

-roget

-rollaway

-rollbar

-rollmop

-rollmops

-rollneck

-rollway

-rone

-roneo

-ronggeng

-roo

-rooinek

-rootle

-ropable

-roquefort

-roquet

-roraima

-rorschach

-rort

-rosace

-rosario

-rosarium

-roscius

-roscoe

-roscommon

-roseberry

-rosehip

-rosewall

-rosh

-rosinante

-roskilde

-rospa

-rossetti

-rossiya

-rostand

-rostock

-roti

-rotorua

-roucou

-rouget

-roulers

-roumelia

-rowntree

-roxas

-rubbra

-rubby

-rubefy

-rubescent

-rubiaceous

-rubinstein

-rubrician

-rubstone

-rudderhead

-rudish

-ruisdael

-rumelia

-runcible

-runcorn

-ruthenia

-ruthful

-rutilated

-ruwenzori

-ruysdael

-ruyter

-ryazan

-rydal

-ryobu

-ryokan

-ryot

-sabadell

-sabah

-sabatier

-sabayon

-sabretache

-sabulous

-saccharic

-saccharoid

-sacco

-sadat

-saddlebill

-sade

-sadhu

-sadi

-sadiron

-sadowa

-saffian

-safid

-sagamore

-saghalien

-sagitta

-saguache

-saguenay

-saguia

-sagunto

-saharanpur

-sahitya

-saida

-saiga

-sainsbury

-saipan

-sakhalin

-saktas

-sakti

-salade

-saladin

-salado

-salamanca

-salambria

-salchow

-salduba

-salep

-salet

-salicaceous

-salicional

-salicylic

-saliferous

-salify

-salique

-sallee

-sallust

-salmanazar

-salonika

-saloop

-salop

-salopette

-salpicon

-salpingectomy

-salpingitis

-salpinx

-salta

-saltant

-saltchuck

-saltchucker

-saltfish

-saltigrade

-saltillo

-salto

-saltpan

-saltus

-salvatorian

-salween

-salyut

-salzgitter

-samarang

-samaria

-sambre

-samekh

-samfoo

-samiel

-samiti

-samizdat

-samnium

-samos

-samothrace

-samsara

-samshu

-samsun

-sanctitude

-sandakan

-sandfly

-sandgrouse

-sandhi

-sandpit

-sandwort

-sandworts

-sango

-sangre

-sangria

-sanies

-sankey

-sankt

-sanmicheli

-santalaceous

-santana

-santander

-saorstat

-sapajou

-sapanwood

-sapele

-saphena

-sapiential

-sapindaceous

-sapir

-sapotaceous

-sappanwood

-sapphira

-sapporo

-sapraemia

-sapropel

-sapwood

-saragossa

-sarawak

-sarcocarp

-sarcous

-sardar

-sardegna

-sarmatia

-sarmentose

-sarnen

-sarnia

-saronic

-saros

-sarpanch

-sarpedon

-sarraceniaceous

-sarraute

-sarre

-sarrusophone

-sarthe

-sarto

-sartor

-sarum

-sarvodaya

-sasebo

-sasin

-sassaby

-sassari

-sassoon

-sastruga

-satai

-satellitium

-satinflower

-satinpod

-satrap

-satrapy

-saturnism

-satyagraha

-satyagrahi

-saurischian

-saury

-saussure

-sav

-sava

-savaii

-savannahs

-savas

-saveloy

-savoie

-savoir

-savona

-sawbill

-sawder

-sawhorse

-sawn

-saxicolous

-saxifragaceous

-saxo

-saxons

-sayan

-sazerac

-scafell

-scaldfish

-scaleboard

-scalenus

-scaliger

-scall

-scaloppine

-scammel

-scandaroon

-scanderbeg

-scandic

-scansorial

-scapa

-scapewheel

-scaphopod

-scarabaeus

-scarcement

-scarificator

-scarlatina

-scarron

-scattergram

-scatterplot

-scatterplots

-scend

-schappe

-scheel

-scheele

-scheelite

-scheldt

-scherzando

-schiaparelli

-schickard

-schilling

-schizogenesis

-schizophyceous

-schizopod

-schizothymia

-schlegel

-schmo

-schmooze

-schnook

-schnorkle

-schnorrer

-schnozzle

-schola

-schongauer

-schoolie

-schorl

-schottische

-schouten

-schrodinger

-schul

-schwa

-schwaben

-schwann

-schwarzwald

-schweinfurt

-schweiz

-schwerin

-schwitters

-schwyz

-sciaenid

-sciamachy

-scienter

-scilly

-scincoid

-sciomachy

-scipio

-scire

-scissel

-scissure

-sciurine

-sciuroid

-sclera

-sclerenchyma

-scleritis

-sclerodermatous

-scleroid

-scleroma

-sclerometer

-sclerophyll

-scleroprotein

-sclerotomy

-sclerous

-scolopendrid

-scop

-scopas

-scorify

-scorpaenoid

-scorper

-scotopia

-scotswomen

-scotus

-scramb

-scran

-scraperboard

-scraperboards

-scrapheap

-scrapheaps

-scrimshank

-scrobiculate

-scroop

-scrophulariaceous

-scrump

-scrumpy

-scry

-scudo

-scullin

-scuncheon

-scunge

-scungy

-scunthorpe

-scut

-scuta

-scutage

-scutate

-scutch

-scutcheon

-scute

-scutellation

-scutellum

-scutiform

-scyphiform

-scyphistoma

-scyphozoan

-scyphus

-scyros

-seaborg

-seacock

-seakale

-seami

-seanad

-seasonality

-seato

-seawan

-seaworthyness

-sebacic

-sebiferous

-secam

-secern

-sech

-sectoral

-secundine

-secundines

-seddon

-seferis

-seg

-seif

-seise

-seismism

-seismometer

-seismoscope

-selah

-selangor

-selectedly

-selenodont

-selenomorphology

-seleucia

-seleucus

-selfheal

-sellotape

-selsyn

-selva

-semanteme

-semarang

-sematology

-semele

-sememe

-semeru

-semibituminous

-semibold

-semicompile

-semination

-seminumerical

-semipalmate

-semivitreous

-semivocal

-sempach

-sena

-senarmontite

-sendai

-sendal

-sendoff

-senegambia

-senghor

-sennacherib

-sennar

-senussi

-sepaloid

-seppuku

-septarium

-septavalent

-septenary

-septennium

-septet

-septicaemia

-septilateral

-septime

-septivalent

-septuagesima

-septuple

-septuplet

-septuplicate

-seq

-sequestrant

-serajevo

-seram

-serang

-sercq

-serdab

-serein

-seremban

-serenata

-sergipe

-seriema

-seringa

-seringapatam

-serjeant

-serotine

-serpigo

-serpulid

-serriform

-serrulate

-serrulation

-sertorius

-servetus

-servia

-servicewoman

-servicewomen

-servient

-sesotho

-sesquialtera

-sesquioxide

-sestos

-setiferous

-setiform

-sett

-settable

-sevan

-sewan

-sewell

-sexangular

-sexcentenary

-sexennial

-sexivalent

-sexpartite

-sextain

-sextan

-sextile

-seyfert

-seyhan

-sfax

-sforza

-sfumato

-sgraffito

-shaba

-shabbat

-shadrach

-shaduf

-shadwell

-shaef

-shaftesbury

-shaftsbury

-shahaptin

-shahjahanpur

-shakhty

-shamash

-shamba

-shameface

-shamo

-shangaan

-shango

-shanny

-shantow

-sharefarmer

-sharefarmers

-shareown

-sharksucker

-sharrow

-shavuot

-sheading

-shearlegs

-shearling

-sheba

-shechina

-sheene

-sheepcote

-sheepdog

-sheepwalk

-sheerlegs

-shellbark

-shelta

-shem

-shema

-shembe

-shenyang

-sherbrooke

-sheria

-sherwani

-shes

-shetlands

-shewbread

-shewn

-shiai

-shicker

-shickered

-shihchiachuang

-shikoku

-shillyshally

-shily

-shinar

-shinkin

-shinty

-shipka

-shiralee

-shirtsleeve

-shithead

-shittah

-shittim

-shiva

-shive

-shizuoka

-shockheaded

-shockstall

-shoeshine

-shoetree

-shofar

-sholapur

-shoogle

-shool

-shopfloor

-shopfloors

-shophar

-shopsoiled

-shopwalker

-shopwork

-shopworker

-shoreless

-shortlist

-shortlisted

-shortlisting

-shortlists

-shortlived

-shoshone

-shote

-shott

-shouse

-showd

-showerproof

-showgirl

-showjumping

-shrewdie

-shrewmouse

-shrieval

-shufty

-shufu

-shuggy

-shushan

-shuteye

-shypoo

-sialkot

-sialoid

-siang

-siangtan

-sibiu

-sicilia

-sickbay

-sickert

-sickie

-sicyon

-siddons

-sidechain

-sidechains

-sideffect

-sideffects

-sideplate

-sideplates

-siderophilin

-siderosis

-siderostat

-sidesman

-sidewheel

-sidewheeler

-sidi

-sidon

-sidra

-siegbahn

-siegler

-sieglinde

-sienkiewicz

-sifaka

-sightscreen

-sigil

-sigismund

-sigla

-siglos

-sigmate

-sigmoidoscope

-signac

-signore

-signorelli

-sigurd

-sikang

-silastic

-sile

-siliciferous

-silicium

-siliculose

-siliqua

-siloam

-silurid

-silverpoint

-silvertail

-simar

-simaroubaceous

-simchath

-simitar

-simla

-simoniac

-simonides

-simplicidentate

-simplon

-simsim

-simula

-simulant

-sinanthropus

-sinarquist

-sinatra

-singultus

-sinhailien

-sinistrodextral

-sinn

-sint

-siple

-siqueiros

-sirdar

-siret

-sisera

-sismondi

-sitar

-sitcom

-sitella

-sitfast

-sithole

-sitology

-sitsang

-situla

-sitwell

-sitz

-sitzkrieg

-sitzmark

-sixain

-sixte

-sjambok

-skagerrak

-skara

-skatepark

-skatole

-skaw

-skean

-skelf

-skelly

-skelmersdale

-sken

-skerrick

-sket

-skewwhiff

-skiamachy

-skibob

-skidlid

-skidpan

-skidproof

-skidway

-skillion

-skilly

-skiplane

-skippet

-skirret

-skite

-skydive

-skylab

-skyscape

-slade

-slaister

-slapshot

-slaughterman

-slaughtermen

-slavs

-sleave

-sleezy

-slezsko

-slickenside

-sligo

-slimmed

-slingback

-slipnoose

-slipperwort

-slipsheet

-slipway

-sloot

-sloughs

-slowcoach

-slowworm

-slubberdegullion

-slype

-smallage

-smallboy

-smallclothes

-smallholding

-smallmouth

-smallsword

-smaltite

-smalto

-smaragd

-smaragdite

-smarm

-smarmy

-smatch

-smew

-smilacaceous

-smit

-smokeho

-smokejack

-smoko

-smoodge

-smriti

-snackette

-sned

-snib

-snicket

-snipefish

-snog

-snorri

-snowberry

-snowbird

-snowblink

-snowdon

-snowdonia

-snowplough

-snuck

-snye

-soakaway

-soapberry

-soapolallie

-soares

-sobeit

-soche

-socinus

-sociobiology

-socman

-socred

-sodamide

-soddy

-soekarno

-soemba

-soembawa

-soenda

-soerabaja

-sofar

-softa

-sogat

-sogdiana

-soh

-soho

-soilage

-soissons

-sokoto

-sokotra

-solan

-solander

-solarimeter

-solarism

-soldo

-solent

-soleure

-solfeggio

-solferino

-soli

-solidary

-solifidian

-solihull

-soliman

-sollicker

-solonchak

-solothurn

-solum

-solvay

-solway

-solyman

-somewise

-somme

-somniloquy

-somnus

-sondage

-songkok

-soniferous

-sonobuoy

-soo

-soochow

-sook

-soong

-sophistocated

-sorata

-sorbefacient

-sorbic

-sorbitol

-soredium

-sorn

-sorocaba

-sororicide

-sorosis

-sorrento

-sosnowiec

-sotto

-soudan

-soult

-soundbox

-soundpost

-soupfin

-sourdine

-southmost

-soutine

-sozzled

-spacewalk

-spadefish

-spadiceous

-spagyric

-spalato

-spalpeen

-spam

-spancel

-sparable

-sparce

-sparerib

-sparid

-sparoid

-sparrowhawk

-sparry

-spatchcock

-spatterdash

-spearwort

-spectrobolometer

-speedo

-speedwriting

-speight

-spelaean

-spelk

-spellican

-speos

-spermatorrhoea

-spermic

-spermine

-spermogonium

-spermophyte

-spermous

-spey

-speyer

-sphenic

-sphenogram

-spheroidicity

-sphingomyelin

-sphragistics

-sphygmic

-sphygmoid

-spiderman

-spif

-spiffing

-spiflicate

-spignel

-spina

-spindlelegs

-spiniferous

-spinose

-spiritus

-spirketting

-spiroid

-spironolactone

-spitchcock

-spithead

-spitsticker

-spiv

-splake

-splanchnic

-splashback

-splashbacks

-splenitis

-splodge

-spock

-spode

-spoilfive

-spondulix

-spongin

-spongioblast

-sponsion

-spoonbill

-sporades

-sporocyte

-sporran

-sportscast

-sportswrite

-sporule

-sprag

-sprechgesang

-sprechstimme

-springhalt

-springhead

-springhouse

-springlet

-springvale

-spruik

-spue

-spuggy

-spumescent

-squacco

-squalane

-squarrose

-squattocracy

-squeteague

-squireen

-squirrelfish

-squit

-squiz

-srinagar

-stableboy

-stabroek

-stackframe

-stacte

-staddlestone

-stadholder

-stadiometer

-staffa

-staffman

-stagflation

-staggard

-stagira

-staines

-stairhead

-stambul

-staminode

-standalone

-standfast

-stane

-stanniferous

-stannite

-stannum

-stanovoi

-stans

-staphyloplasty

-staphylorrhaphy

-stara

-starflower

-startc

-starwort

-statius

-stauroscope

-staysail

-steakhouse

-steamie

-steamtight

-stearoptene

-steatorrhoea

-stecher

-stedfast

-stellarator

-stelliferous

-stellular

-stemhead

-stendhal

-stenopetalous

-stenophyllous

-stenotropic

-stepdame

-stercoricolous

-sterculiaceous

-stereochrome

-stereochromy

-stereometry

-stereotaxis

-stereotomy

-stereovision

-sterlitamak

-sterne

-stevenage

-stevengraph

-steyr

-sthenic

-stheno

-stibium

-stich

-stichometry

-stickybeak

-stilicho

-stillage

-stillicide

-stilliform

-stingo

-stinko

-stitchwort

-stiver

-stoa

-stob

-stockfish

-stockjobber

-stomack

-stomatic

-stomatoplasty

-stoneboat

-stonecast

-stonechat

-stonefish

-stonefly

-stoneground

-stonk

-stonkered

-stook

-stoppard

-storeyed

-storiated

-stormproof

-stornoway

-storr

-storrs

-stoss

-stot

-stotinka

-stotious

-stotter

-stound

-stoup

-stour

-stoush

-strabo

-strabotomy

-strachey

-strandloper

-strategem

-strategems

-stratificational

-stratigraphical

-stratigraphically

-stratopause

-strawworm

-streamy

-streetlight

-strepitous

-stretchy

-striction

-strigiform

-strimon

-strine

-strobic

-strobilaceous

-stroganoff

-strokefinder

-stromboli

-strongman

-strongyle

-strontian

-stroppy

-stroy

-strychnic

-stubbs

-studdingsail

-studwork

-sturmer

-sty

-stylostixis

-stypsis

-styracaceous

-styria

-suakin

-subacetate

-subah

-subangular

-subapostolic

-subaqua

-subarid

-subassemblage

-subassemblages

-subastral

-subauricular

-subaxillary

-subbass

-subcalibre

-subcartilaginous

-subception

-subchannels

-subcluster

-subclusters

-subdelirium

-subduct

-subelement

-subelements

-subepidermis

-subequatorial

-suberic

-suberin

-suberose

-subfloor

-subfusc

-subinstance

-subinstances

-subjectify

-sublanguage

-sublanguages

-sublapsarianism

-submental

-subordinary

-subordinationism

-subotica

-subpanel

-subpanels

-subparameter

-subparameters

-subprocessor

-subscan

-subscans

-subscapular

-subsocial

-subsolar

-substantialism

-substomatal

-subtangent

-subternatural

-subtorrid

-subtreasury

-subufd

-subufds

-suburbicarian

-subvene

-subzero

-succentor

-succeptibility

-successsive

-succinic

-succoth

-succursal

-succuss

-suckerfish

-sudarium

-sudbury

-sudd

-sudetes

-sudor

-suetonius

-sufferage

-suffiency

-sufflate

-suffruticose

-suffumigate

-sufu

-suggestibly

-suharto

-suisse

-sukarnapura

-sukhumi

-sukkoth

-suleiman

-sulla

-sulphadiazine

-sulphanilamide

-sulphathiazole

-sulphide

-sulphinyl

-sulphisoxazole

-sulphite

-sulphonamide

-sulphonate

-sulphonated

-sulphone

-sulphonic

-sulphonium

-sulphonmethane

-sulphonyl

-sulphurate

-sulphuret

-sulphuretted

-sulphuryl

-summerweight

-sump

-sumpter

-sumy

-sunbake

-sundog

-sundress

-sundresses

-sundsvall

-sungari

-sungkiang

-sunglow

-sungrebe

-sunhat

-sunray

-sunstar

-suntrap

-suo

-superaltar

-superbazaar

-supercede

-superceded

-supercedes

-supercolumnar

-supercomputing

-superconduction

-supercurrent

-superdense

-supererogate

-superfemale

-superfuse

-superglacial

-superhero

-superhet

-superhigh

-superhumeral

-superlanguage

-superload

-supermale

-supermodel

-supermodels

-supermundane

-supernational

-superorganic

-superoxide

-supersex

-superstruct

-suplex

-supralapsarian

-suprematism

-supremo

-suqutra

-sur

-sura

-surakarta

-sural

-surat

-surculose

-surd

-surfbird

-surfbirds

-surfcasting

-surfie

-surgeoncy

-surgeonfish

-suribachi

-suricate

-surrebuttal

-sursum

-susa

-susah

-suseptible

-suslik

-suss

-susso

-susurrate

-sutlej

-sutler

-suva

-sverige

-svizzera

-swacked

-swanage

-swaraj

-sward

-swarf

-sweelinck

-sweetiewife

-sweetman

-sweetmeal

-sweptback

-sweptwing

-sweven

-sweyn

-swiftie

-swiftlet

-swindon

-swinepox

-swingboat

-swingle

-swingometer

-swingometers

-switchgirl

-swob

-swordbill

-swordcraft

-swordsmen

-swordstick

-swordsticks

-swound

-swounds

-swy

-sybaris

-sydneysider

-syene

-syktyvkar

-syllabism

-syllabogram

-syllabography

-sylva

-sylvanus

-sympathectomy

-symphile

-sympodium

-symposiac

-synarchy

-syncarp

-synchrocyclotron

-synchrometer

-synclastic

-synclinorium

-syncom

-syncrisis

-syndactyl

-synecious

-synovia

-syntagma

-synthetism

-sypher

-syphiloma

-syr

-syssarcosis

-systematology

-sytactic

-syzran

-taata

-tabaret

-tabescent

-tachograph

-tachylyte

-tachymetry

-tachyphylaxis

-tacket

-tacmahack

-tadmor

-taegu

-taejon

-tael

-taenia

-taeniafuge

-taffrail

-tafia

-tafilelt

-taganrog

-taggers

-tagliatelle

-tagmeme

-tagmemics

-tagore

-tagus

-tahina

-tahr

-tahsil

-tahsildar

-taig

-tailpipe

-tailplane

-tailskid

-tailstock

-taimyr

-tain

-taine

-taiyuan

-taj

-tajo

-taka

-takahe

-takamatsu

-takao

-takeaway

-takin

-takoradi

-talapoin

-talaria

-talavera

-talbot

-talca

-talcahuano

-taliesin

-taligrade

-taliped

-tallinn

-tallis

-talos

-taluk

-talweg

-tamasha

-tamatave

-tamaulipas

-tambac

-tambora

-tamburlaine

-tamis

-tammerfors

-tammuz

-tammy

-tampere

-tampico

-tana

-tanana

-tancred

-tandjungpriok

-tandoori

-tanga

-tangleberry

-tangshan

-tanguy

-tanis

-tanist

-tanjore

-tanta

-tantalous

-tanto

-tantrism

-tapadera

-tapemark

-tapemarks

-taphouse

-tarabulus

-taradiddle

-taramasalata

-tarantass

-tarantella

-taranto

-tarawa

-tarbes

-tarentum

-tarim

-tarnal

-tarnation

-tarnishs

-tarpan

-tarradiddle

-tarragona

-tarrasa

-tarshish

-tarsia

-tarsometatarsus

-tartarous

-tartu

-tashi

-tashkent

-tasimeter

-tasman

-tasset

-tassie

-tassle

-tatchell

-tati

-tatouay

-tatra

-taupo

-tauranga

-tauromachy

-tav

-tavel

-tawney

-taxaceous

-taxiplane

-taxiplanes

-teacake

-teashop

-technocommercial

-technography

-tectorial

-tecumseh

-tedder

-teesside

-teet

-tef

-teg

-tegular

-tehuantepec

-teide

-teilhard

-tejo

-tela

-telanaipura

-telautograph

-telecom

-telecomunications

-telega

-telegenic

-telegnosis

-telegonus

-telemachus

-telescopy

-telescript

-telespectroscope

-telestereoscope

-telestich

-teletext

-teletranscription

-teletube

-teletypesetter

-televideo

-telewriter

-telexed

-telexes

-telexing

-telfer

-telferage

-tellurate

-tellurion

-tellus

-telpherage

-temuco

-tenaille

-tenedos

-teng

-tengri

-teniafuge

-teniers

-tenner

-tenniel

-tenno

-tenorite

-tenorrhaphy

-tenotomy

-tensible

-tentation

-tenzing

-tepal

-tepefy

-tephrite

-tepic

-teratism

-teratoid

-terbia

-terceira

-terephthalic

-tereshkova

-terminosity

-termor

-terne

-terni

-ternion

-terotechnology

-terrestial

-terrine

-territorian

-tertial

-tertium

-tertullian

-teruel

-terylene

-terza

-terzetto

-tesla

-tesseract

-tessin

-testbed

-testiculate

-testudinal

-tetrabrach

-tetrabutylammonium

-tetrachlorethylene

-tetracyclic

-tetragram

-tetraphenyl

-tetraplegia

-tetrapody

-tetrapterous

-tetrastich

-tetrastichous

-tetrasyllable

-tetrazzini

-tetroxide

-tetzel

-teutoburger

-tevere

-tevet

-textualism

-teyde

-tezel

-thackeray

-thaddeus

-thadentsonyane

-thales

-thalweg

-thammuz

-thanatopsis

-thanet

-thanjavur

-thapsus

-thatcherism

-thaumatology

-thaumatrope

-theaceous

-theanthropism

-thearchy

-thebaine

-thegn

-theine

-themistocles

-thenardite

-theocrasy

-theocritus

-theodorakis

-theomachy

-theomancy

-theomania

-theomorphic

-theopathy

-theophagy

-theophobia

-theophrastus

-theorbo

-theravada

-therezina

-therfore

-therianthropic

-thermaesthesia

-thermobarograph

-thermobarometer

-thermoelectricity

-thermogenesis

-thermomotor

-thermophysical

-thermoregularity

-thermostatical

-thermotensile

-thermotherapy

-theroid

-theropod

-thersitical

-thesauri

-thespis

-thickleaf

-thimblewit

-thingumabob

-thioalcohol

-thiofuran

-thionine

-thionyl

-thiopentone

-thiophen

-thiosinamine

-thiosulphate

-thiosulphuric

-thirdstream

-thirlage

-thirlmere

-thisbe

-tholos

-thonburi

-thoracoplasty

-thornbill

-thoron

-thoroughpaced

-thorp

-thorshavn

-thrave

-threadneedle

-threadworm

-threap

-throatlash

-thrombogen

-thrombose

-thumbnut

-thumbstall

-thummim

-thun

-thunderbox

-thundery

-thuner

-thuya

-thymelaeaceous

-thyristor

-tia

-tiberias

-tibesti

-tibiotarsus

-tibullus

-tibur

-ticino

-tiddler

-tiddly

-tidewaiter

-tiebreaker

-tiepolo

-tierra

-tiffin

-tiflis

-tightknit

-tiglic

-tigrinya

-tihwa

-tikoloshe

-tiliaceous

-tillicum

-timaru

-timberyard

-timbuktu

-timecard

-timescale

-timescales

-timeslice

-timeslices

-timestamp

-timestamped

-timestamping

-timestamps

-tindal

-tineid

-tinpot

-tintinnabulum

-tipcat

-tiptop

-tipu

-tiran

-tiresias

-tirich

-tiro

-tiros

-tirpitz

-tirso

-tisza

-titanite

-titanosaur

-titanothere

-titfer

-tithonus

-titicaca

-titman

-titubation

-tiu

-tiv

-toadeater

-toadeater's

-toadeaters

-toadfish

-toadfish's

-toadfishes

-toadflax

-toadstone

-toadstone's

-toadstones

-tobit

-tobol

-tocantins

-tocology

-toea

-toecap

-toey

-toheroa

-tolpuddle

-toluyl

-tolylphosphine

-tomalley

-toman

-tombola

-tombouctou

-tomograph

-tonle

-tonsillotomy

-toowoomba

-toparch

-topazolite

-topotype

-topspin

-torbay

-torc

-torchier

-toric

-torii

-torino

-torose

-torquay

-torquemada

-torre

-torrefy

-torres

-torricelli

-torsibility

-tortelier

-tortellini

-tortile

-tortola

-tortuga

-toscana

-toscanini

-toul

-toulon

-touraine

-tourane

-tourcoing

-touristy

-tournai

-tourneur

-toussaint

-touzle

-towbar

-towkay

-townhall

-townscape

-townshend

-toxaemia

-toxalbumin

-toyama

-trabzon

-tracasserie

-tracheostomy

-tracksuit

-tractile

-trad

-tradeability

-traditor

-traducianism

-trafalgar

-traherne

-trailblaze

-trajan

-tralee

-trammie

-tranformed

-tranmission

-tranmitted

-trannie

-transcalent

-transculturation

-transcurrent

-transformism

-transgranular

-transilient

-transkei

-transliterator

-translunar

-transmigrant

-transmittancy

-transmundane

-transpadane

-transpassive

-transpond

-transponders

-transportaion

-transput

-transputer

-transputers

-transshipped

-tranverse

-trapan

-trapani

-trapes

-trapeziform

-trappean

-trasimene

-travancore

-traymobile

-trebizond

-treen

-treename

-treenames

-treenware

-tref

-trehala

-treitschke

-trengganu

-trente

-trento

-tressure

-tret

-trevally

-trevithick

-triac

-triazole

-tribade

-triblet

-tribromoethanol

-tricarbonyl

-tricentenary

-trichinopoly

-trichloro

-trichloroethanol

-trichloroethylene

-trichology

-trichosis

-trichroism

-tricktrack

-tricostate

-tricritical

-tricriticality

-tricrotic

-tricyclohexyl

-tridactyl

-tridentate

-tridentum

-triecious

-trieste

-trifold

-trihedron

-trihydrate

-trihydric

-triiodomethane

-trike

-trilateration

-trilemma

-trilithon

-trimethadione

-trimetric

-trimolecular

-trimurti

-trinacria

-trincomalee

-trinitrobenzene

-trinitrocresol

-trinitroglycerin

-trinitrophenol

-trioecious

-triolein

-tripalmitin

-tripersonal

-triphenyl

-tripody

-tripolitania

-tripterous

-triptolemus

-triptyque

-tripura

-tripwire

-triserial

-triskaidekaphobia

-trismegistus

-tristich

-tristichous

-trisulphide

-tritanopia

-tritiate

-triunitarian

-trivandrum

-troas

-troat

-trobriand

-trocar

-trochelminth

-trode

-trog

-troilism

-troilus

-trois

-trollope

-tromba

-tropaeolin

-trophoplasm

-tropicbird

-tropine

-tropophyte

-troppo

-tropylium

-trossachs

-trotskyist

-trotyl

-troubador

-trouse

-troyes

-trucial

-truckie

-trudgen

-trug

-trugs

-truk

-trumeau

-tryma

-tryptophanyl

-tsade

-tsana

-tsarevitch

-tsarevna

-tsaritsyn

-tselinograd

-tshiluba

-tshombe

-tsinan

-tsinghai

-tsingtao

-tsingyuan

-tso

-tsonga

-tsotsi

-tsugaru

-tsukahara

-tsushima

-tsutsugamushi

-tswana

-tuart

-tuatara

-tubate

-tubman

-tubuai

-tubuliflorous

-tucotuco

-tugela

-tugrik

-tuileries

-tula

-tularaemia

-tull

-tully

-tumblehome

-tumefacient

-tumefy

-tumular

-tumulose

-tungstous

-tungting

-tunguska

-tunnage

-tupamaro

-tuppenny

-tupungato

-turaco

-turbary

-turbogenerator

-turdine

-turenne

-turgenev

-turgent

-turgite

-turgot

-turishcheva

-turkestan

-turku

-turncock

-turnround

-turpeth

-turpin

-tusculum

-tussaud

-tussis

-tutankhamen

-tutiorism

-tutsan

-tutsi

-tutty

-tutuila

-tuva

-tuxtla

-tver

-twat

-twattle

-twayblade

-twee

-tweeddale

-tweedledum

-tweedsmuir

-tweeny

-twelvemo

-twite

-tychism

-tycho

-tye

-tylopod

-tylosis

-tympanist

-tympanitis

-tyndall

-tyndareus

-tynemouth

-tyneside

-typebar

-typhlitis

-typhlology

-typhoeus

-typhogenic

-typhoidin

-typothetae

-tyr

-tyumen

-tzekung

-tzetze

-ubbelohde

-ubiety

-ucayali

-ucca

-uccello

-udaipur

-udal

-udine

-udmurt

-udo

-udometer

-uele

-ufa

-ufd

-ufo

-ufology

-ugali

-ugaritic

-ugli

-uhlan

-uintathere

-ulfilas

-ulmaceous

-ulpian

-ultramicrometer

-ultramicrometers

-ultramicroscopic

-ultramundane

-ultrared

-ultrathin

-ultravirus

-ultrawet

-umayyad

-umbellule

-umberto

-umbles

-umbo

-umbria

-umiak

-umpy

-umrcc

-umtali

-unaesthetic

-unallocateed

-unamuno

-unaneled

-unaskable

-unassign

-unban

-unbelt

-unbirthday

-unbonnet

-unchurch

-unclad

-unco

-uncodeable

-unconservative

-uncontroversial

-undated

-undefine

-underachieve

-underbuy

-undercart

-underclay

-undercroft

-undercutting

-underdevelop

-underemphasis

-underfelt

-underfilled

-underfloor

-underfur

-undergrown

-underhung

-underletting

-underlinen

-undermentioned

-undernourish

-underpainting

-underpay

-underpinned

-underpitch

-underpitched

-underpitches

-underpitching

-underprice

-underpriced

-underprices

-underpricing

-underprop

-underquote

-underseal

-underset

-undersheriff

-undersmooth

-undersmoothed

-undersmoothing

-undersmooths

-underspent

-understaff

-underthrust

-undertint

-undertrump

-undertype

-undialectical

-undirectional

-undro

-undset

-unenforcable

-unexcited

-unforced

-unforseen

-ungaretti

-ungava

-unguiculate

-unguinous

-unguis

-ungula

-unguligrade

-uni

-unibus

-unicef

-unicolour

-unicostate

-unidirection

-uniformally

-unilateralist

-unilateralists

-uniliteral

-unimak

-unimodular

-uninfluential

-uninterruptable

-unipersonal

-unipod

-uniseptate

-uniserial

-uniterm

-unlead

-unlettable

-unmodeled

-unmusical

-unpaddable

-unpolitic

-unprepossessing

-unreactive

-unreckonable

-unreligious

-unrepair

-unrwa

-unskilful

-unspecifed

-unspecify

-unsteel

-unsuggestive

-unsupportive

-unterwalden

-untravelled

-untypical

-unwarrant

-upanishad

-upcountry

-uphroe

-upolu

-upperbound

-upperbounds

-uppsala

-uprouse

-upsadaisy

-upsala

-upstand

-upstretched

-upswell

-upto

-uranalysis

-uranism

-uranite

-uredosorus

-uredospore

-uretic

-urey

-urfa

-urga

-urim

-urinant

-uriniferous

-urmia

-urogenous

-uroscopy

-urquhart

-urticaceous

-uruapan

-urumchi

-urundi

-username

-ushant

-ushas

-usnach

-uspallata

-usquebaugh

-ussher

-ussuri

-ustashi

-ustulation

-ustyurt

-usumbura

-utamaro

-utgard

-uther

-utriculitis

-utrillo

-uttar

-uvedale

-uvulitis

-uxmal

-vacherin

-vadodara

-vadose

-vagal

-vaginate

-vaginectomy

-vaginismus

-vaginitis

-vagotonia

-vagus

-vahana

-vaisya

-valais

-valdai

-valdemar

-valdivia

-valencies

-valency

-valens

-valera

-valerianaceous

-valeric

-valeta

-valetta

-valgus

-valladolid

-vallation

-vallecula

-vallombrosa

-valona

-valonia

-valuta

-valvate

-valvule

-valvulitis

-vambrace

-vanadate

-vanadic

-vanadinite

-vanadous

-vanaspati

-vanbrugh

-vang

-vansittart

-vanua

-vanzetti

-vaporescence

-vaporetto

-vaporific

-vaporimeter

-vara

-varactor

-varanasi

-vardar

-vardon

-varec

-varese

-vargas

-varia

-variablity

-varicella

-varicellate

-varicelloid

-varicocele

-varicosis

-varicotomy

-variola

-variolate

-variole

-variolite

-variscite

-varityper

-varna

-varro

-vas

-vasari

-vasco

-vashti

-vasoinhibitor

-vasoregulatory

-vaticide

-vauban

-vaucluse

-vaud

-vav

-vavasor

-vedette

-veg

-vegan

-veii

-veinstone

-veinule

-vela

-velate

-velcro

-veldskoen

-veleta

-veliger

-velites

-vellicate

-vellore

-vena

-venenose

-venepuncture

-venlo

-venose

-venosity

-ventris

-verbenaceous

-vercelli

-vercingetorix

-verderer

-verdun

-verecund

-vereeniging

-vergeboard

-verglas

-verifiably

-verkrampte

-verlaine

-verligte

-vermeer

-vermination

-vermis

-vermivorous

-verny

-verrazano

-verrocchio

-verruca

-verrucae

-verrucose

-versabraille

-versant

-versatec

-verst

-vert

-verticillaster

-verticillate

-vertu

-verulamium

-vervain

-vervet

-verwoerd

-vesalius

-vespasian

-vespertilionine

-vespucci

-vesuvius

-vetiver

-viareggio

-viator

-vibraculum

-vibronic

-vicenary

-vicenza

-vico

-vicomte

-victoriana

-videlicet

-videotex

-vidhan

-vienne

-viewport

-viewport's

-viewports

-viewscan

-vignola

-vigny

-vigo

-villous

-vimineous

-vina

-vinasse

-vinegarette

-vinificator

-vinnitsa

-violoncello

-violone

-viren

-virial

-virtu

-viscoid

-vistula

-vitaceous

-vitaphone

-vitascope

-vitoria

-vitrain

-vitrescence

-vitrescent

-vitric

-vitriform

-vitruvius

-vitta

-vittle

-vituline

-viverrine

-viyella

-vocate

-voidage

-voiotia

-voir

-voix

-vojvodina

-volitant

-vologda

-volost

-volsung

-volsunga

-voltaism

-voltammeter

-volturno

-volvulus

-vomer

-voortrekker

-vorster

-vosges

-vostok

-vouge

-vox

-vuillard

-vulgaris

-vulvovaginitis

-vyborg

-wabble

-wabbled

-wabbles

-wabbling

-wace

-wadai

-wadmal

-wadset

-wagram

-wagtail

-waistcloth

-walfish

-walhalla

-walkable

-walkley

-wallah

-wallasey

-wame

-wanderoo

-wandoo

-wanganui

-wanhsien

-wank

-wankel

-wankie

-wanna

-waratah

-wardian

-wardle

-wardmote

-warhorse

-warhorses

-warrigal

-warsle

-warta

-washaway

-washday

-washdays

-washerwomen

-washery

-washin

-washwomen

-wassermann

-wasteweir

-watap

-watchstrap

-waterage

-waterbrain

-waterbuck

-waterspout

-watertower

-wattlebird

-waul

-waveband

-wavebands

-wavefunction

-wavefunctions

-wavellite

-wavemeter

-waveoff

-waw

-wawa

-wawl

-waxberry

-waxbill

-waxplant

-wayzgoose

-waziristan

-weakfish

-weald

-weaponeer

-wearproof

-weasand

-weaverbird

-webbs

-webwheel

-weddell

-wedekind

-wedeling

-weedkiller

-weelkes

-ween

-weeny

-weighbridge

-weighbridges

-weightlifter

-weightlifting

-weihai

-weka

-welkom

-welland

-wellesz

-wellies

-welterweight

-welwyn

-wentletrap

-wernerite

-wersh

-weser

-wesker

-wessex

-westmost

-whacko

-whangarei

-whare

-wharfie

-wharve

-whatsit

-whaup

-wheatworm

-whereafter

-wherrit

-wheyface

-whidah

-whimbrel

-whin

-whinchat

-whinge

-whipstall

-whipworm

-whirlabout

-whitby

-whitebeam

-whitedamp

-whitefly

-whitethorn

-whitewood

-who've

-wholefood

-wholemeal

-wholism

-whortleberry

-whyalla

-whydah

-wicketkeeper

-wicketkeepers

-wicketkeeping

-wickthing

-wicopy

-widdershins

-widgery

-widgie

-widnes

-widukind

-wien

-wikiup

-wildcard

-wildcarded

-wildcarding

-wildcards

-wilde

-wilhelmshaven

-wilhelmstrasse

-willemstad

-willowherb

-wilmslow

-wilno

-wincey

-windbound

-windcheater

-windcheaters

-windchill

-windermere

-windflower

-windgall

-windhoek

-windhover

-windlestraw

-windrow

-windsail

-windsock

-winebibber

-winkelried

-winnipegosis

-winterfeed

-winterthur

-winterweight

-wipo

-wirepuller

-wiretapping

-wirewalker

-wirra

-wirral

-wis

-wishlist

-wishlists

-wislany

-wismar

-wist

-witan

-witchetty

-wite

-witenagemot

-withershins

-wittol

-wivern

-woad

-woaded

-woadwaxen

-woald

-wodge

-wodges

-wog

-woggle

-wolfbane

-wolfenden

-wolffish

-wolfit

-wolframite

-wolfsbane

-wollastonite

-wolly

-wolsey

-wolve

-wolver

-womera

-wonsan

-woodborer

-woodcarving

-woodchat

-woodgrouse

-woodhook

-woodlark

-woodlouse

-woodrush

-woodscrew

-woodseats

-woodwaxen

-woodworm

-woolf

-woolfell

-woolgrower

-woolley

-woollybutt

-woop

-woorali

-workaday

-workbag

-workfile

-workfiles

-workgroup

-workgroups

-workmate

-workmates

-workperson

-workshy

-worksop

-wormcast

-wormseed

-wormwood

-worsley

-wot

-wran

-wrapover

-wrapround

-wreckfish

-wreckful

-wrekin

-wroclaw

-wrongdo

-wrongdoers

-wroth

-wrybill

-wryneck

-wuchang

-wuhsien

-wuhu

-wulfenite

-wulfila

-wundt

-wuppertal

-wurley

-wurst

-wus

-wusih

-wuthering

-wutsin

-wycherley

-wycliffe

-wye

-wynd

-wyvern

-xanthein

-xanthippe

-xanthochroid

-xanthochroism

-xanthoma

-xanthophyll

-xanthous

-xanthus

-xci

-xcii

-xciv

-xcix

-xcvi

-xcvii

-xenakis

-xenocrates

-xenocryst

-xenogamy

-xenogenesis

-xenoglossia

-xenolith

-xenomorphic

-xenophanes

-xenophon

-xeroderma

-xeromorphic

-xerophthalmia

-xerophyte

-xerosere

-xerosis

-xhosa

-xiphisternum

-xiphoid

-xiphosuran

-xuthus

-xxi

-xxii

-xxiii

-xxiv

-xxix

-xxv

-xxvi

-xxvii

-xxviii

-xxx

-xxxi

-xxxii

-xxxiii

-xxxiv

-xxxix

-xxxv

-xxxvi

-xxxvii

-xxxviii

-xylan

-xylidine

-xylocarp

-xylograph

-xylography

-xyloid

-xylol

-xylophagous

-xylyl

-xyst

-xyster

-yabber

-yabby

-yaffle

-yafo

-yagi

-yahata

-yamagata

-yamani

-yamashita

-yammer

-yanina

-yapok

-yapon

-yarwood

-yataghan

-yate

-yauld

-yaunde

-yaup

-yaupon

-yautia

-yawata

-yawp

-yazd

-yean

-yeanling

-yegg

-yeld

-yelk

-yellowbark

-yellowbird

-yellowhammer

-yellowlegs

-yellowtail

-yellowweed

-yellowwood

-yenan

-yentai

-yerevan

-yestreen

-yeti

-yezd

-ygerne

-yike

-yingkow

-yippee

-yirr

-ylem

-ymir

-yob

-yod

-yodle

-yogh

-yohimbine

-yoicks

-yokefellow

-yola

-yom

-yoni

-yonne

-yonnie

-ytterbia

-ytterbite

-yttria

-yttriferous

-yuk

-yulan

-yurt

-yvelines

-ywis

-zacynthus

-zaffer

-zagazig

-zagreus

-zagros

-zama

-zamindar

-zamindari

-zamora

-zante

-zanu

-zapata

-zaporozhye

-zappa

-zapu

-zaqaziq

-zaragoza

-zarathustra

-zaratite

-zareba

-zarf

-zarga

-zaria

-zarzuela

-zastruga

-zayin

-zeami

-zebec

-zebedee

-zebrawood

-zebu

-zebulun

-zecchino

-zechariah

-zed

-zedekiah

-zedoary

-zee

-zein

-zeist

-zemindar

-zenana

-zener

-zephaniah

-zephyrus

-zeugma

-zeuxis

-zia

-ziaur

-zibeline

-zibet

-ziff

-ziggurat

-zigzagger

-zila

-zilpah

-zinciferous

-zincite

-zinckenite

-zincograph

-zincography

-zingiberaceous

-zinjanthropus

-zinkenite

-zipangu

-zircalloy

-ziska

-zlatoust

-zoaea

-zoan

-zoea

-zoffany

-zohar

-zola

-zond

-zonk

-zonking

-zonks

-zonule

-zoochemistry

-zoochore

-zoogloea

-zoography

-zooid

-zoolatry

-zoometry

-zoomorphism

-zoophile

-zoophilia

-zoophilism

-zoophobia

-zooplasty

-zoosperm

-zoosporangium

-zootomy

-zootoxin

-zootoxins

-zorilla

-zorrilla

-zoster

-zoug

-zsigmondy

-zucchetto

-zugzwang

diff --git a/maint-5-2/tapestry-test/src/site/apt/index.apt b/maint-5-2/tapestry-test/src/site/apt/index.apt
deleted file mode 100644
index 2ed141c..0000000
--- a/maint-5-2/tapestry-test/src/site/apt/index.apt
+++ /dev/null
@@ -1,76 +0,0 @@
- ----
- Tapestry Test Utilities
- ----
- 
-Tapestry Test Utilities
-
-  This library is just a couple of base classes to make it easier to build integration test suites around 
-  {{{http://www.openqa.org/selenium/}Selenium}}.
-  
-  This library is currently based on Selenium 0.8.1.
-  
-  The strategy is to start, in process, a Selenimum Server (which, in turn, starts and manages a web browser),
-  a Jetty instance (for the web browser to talk to), and a Selenium client (which talks to the server).
-  
-  The client is able to request URLs, fill in form data, click links, and make assertions about output
-  and behavior.
-  
-Usage and Configuration
-
-  The core part of this library is a base class for you to extend your tests cases from: 
-  {{{../apidocs/org/apache/tapestry5/test/AbstractIntegrationTestSuite.html}AbstractIntegrationTestSuite}}.
-  
-  This class is responsible for starting an instance of Jetty to server your web application, as well
-  as a copy of Selenium Server. It also implements the
-  {{{http://release.openqa.org/selenium-remote-control/0.9.0/doc/java/}Selenium}} interface.
-  
-  You must inform the suite about the location of your web application. The default location is 
-  <<<src/main/webapp>>> (as this is the default directory for storing a web application when building
-  using Maven).  This can be changed by provided a public constructor for your test suite.
-  
-  Here's an example from one of the Tapestry modules:
-  
-     
-----
-package org.apache.tapestry5.spring;
-
-import org.apache.tapestry5.test.AbstractIntegrationTestSuite;
-import org.testng.annotations.Test;
-
-public class TapestrySpringIntegrationTest extends AbstractIntegrationTestSuite
-{
-    public TapestrySpringIntegrationTest()
-    {
-        super("src/test/webapp");
-    }
-    
-    @Test
-    public void integration_test() throws Exception
-    {
-        open(BASE_URL);
-
-        type("input", "paris in the springtime");
-        clickAndWait("//input[@value='Convert']");
-
-        assertFieldValue("input", "PARIS IN THE SPRINGTIME");
-    }
-
-    @Test
-    public void access_to_spring_context() throws Exception
-    {
-        open(BASE_URL);
-
-        assertTextPresent("[upcase]");
-    }
-}
-----
-
-  This is a very simple example, and demonstrates a mix of Selenium methods (such as open() and type()) and
-  methods added by the AbstractIntegrationTestSuite base class (clickAndWait() and assertFieldValue()).
-  
-  Of course, a real integration test would contain many methods, and may need to single thread their execution, or
-  even specify an execution order.
-  
-  In addition, the AbstractIntegrationTestSuite base class extends the normal exception reporting provided by Selenium; when a failure occurs inside Selenium server,
-  a more detailed message, including the current page's HTML source, is reported to System.err.
-    
\ No newline at end of file
diff --git a/maint-5-2/tapestry-test/src/site/site.xml b/maint-5-2/tapestry-test/src/site/site.xml
deleted file mode 100644
index 17c6160..0000000
--- a/maint-5-2/tapestry-test/src/site/site.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2006, 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry Core">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-test/src/test/conf/testng.xml b/maint-5-2/tapestry-test/src/test/conf/testng.xml
deleted file mode 100644
index b824a45..0000000
--- a/maint-5-2/tapestry-test/src/test/conf/testng.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-  <!--
-    Copyright 2009 The Apache Software Foundation Licensed under the Apache License, Version 2.0
-    (the "License"); you may not use this file except in compliance with the License. You may obtain
-    a copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
-    applicable law or agreed to in writing, software distributed under the License is distributed on
-    an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See
-    the License for the specific language governing permissions and limitations under the License.
-  -->
-
-<suite name="Tapestry Test" annotations="1.5" verbose="2">
-  <parameter name="tapestry.web-app-folder" value="src/test/webapp"/>
-  <test name="SeleniumLauncher and SeleniumTestBase">
-    <classes>
-      <class name="org.apache.tapestry5.test.SanityCheckTestSuite"/>
-    </classes>
-
-  </test>
-</suite>
diff --git a/maint-5-2/tapestry-test/src/test/java/org/apache/tapestry5/test/SanityCheckTestSuite.java b/maint-5-2/tapestry-test/src/test/java/org/apache/tapestry5/test/SanityCheckTestSuite.java
deleted file mode 100644
index da20cb7..0000000
--- a/maint-5-2/tapestry-test/src/test/java/org/apache/tapestry5/test/SanityCheckTestSuite.java
+++ /dev/null
@@ -1,51 +0,0 @@
-// Copyright 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.test;
-
-import org.testng.ITestContext;
-import org.testng.annotations.Test;
-
-public class SanityCheckTestSuite extends SeleniumTestCase
-{
-    @Test
-    public void sanity_check()
-    {
-        openBaseURL();
-
-        assertText("//h1", "Tapestry Test");
-    }
-
-    @Test
-    public void invalid_assertion()
-    {
-        openBaseURL();
-
-        try
-        {
-            assertText("//h1", "XYZ");
-            unreachable();
-        }
-        catch (AssertionError ex)
-        {
-            assertEquals(ex.getMessage(), "//h1 was 'Tapestry Test' not 'XYZ'");
-        }
-    }
-
-    @Test
-    public void command_processor_available(ITestContext context)
-    {
-        assertNotNull(context.getAttribute(TapestryTestConstants.COMMAND_PROCESSOR_ATTRIBUTE));
-    }
-}
diff --git a/maint-5-2/tapestry-test/src/test/webapp/index.html b/maint-5-2/tapestry-test/src/test/webapp/index.html
deleted file mode 100644
index 61567f3..0000000
--- a/maint-5-2/tapestry-test/src/test/webapp/index.html
+++ /dev/null
@@ -1,11 +0,0 @@
-<html>
-  <head>
-    <title>Tapestry-Test</title>
-  </head>
-  <body>
-    <h1>Tapestry Test</h1>
-
-    <p>
-      A simple page to prove that the Selenium testing APIs are capable of starting up.</p>
-  </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-tutorial1/LICENSE-2.0.txt b/maint-5-2/tapestry-tutorial1/LICENSE-2.0.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/tapestry-tutorial1/LICENSE-2.0.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/tapestry-tutorial1/NOTICE.txt b/maint-5-2/tapestry-tutorial1/NOTICE.txt
deleted file mode 100644
index 439eb83..0000000
--- a/maint-5-2/tapestry-tutorial1/NOTICE.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/maint-5-2/tapestry-tutorial1/pom.xml b/maint-5-2/tapestry-tutorial1/pom.xml
deleted file mode 100644
index 8c17bec..0000000
--- a/maint-5-2/tapestry-tutorial1/pom.xml
+++ /dev/null
@@ -1,116 +0,0 @@
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tutorial1</artifactId>
-    <packaging>war</packaging>
-    <name>Tapestry 5 Tutorial</name>
-    <description>Introductory topics in Tapestry application development.</description>
-    <organization>
-        <name>Apache Software Foundation</name>
-        <url>http://www.apache.org</url>
-    </organization>
-
-    <scm>
-        <connection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.6/tapestry-tutorial1</connection>
-        <url>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.6/tapestry-tutorial1</url>
-      <developerConnection>scm:svn:https://svn.apache.org/repos/asf/tapestry/tapestry5/tags/releases/5.2.6/tutorial1</developerConnection>
-  </scm>
-
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-hibernate</artifactId>
-            <version>${project.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>hsqldb</groupId>
-            <artifactId>hsqldb</artifactId>
-            <version>1.8.0.7</version>
-        </dependency>
-
-
-        <!-- A dependency on either JUnit or TestNG is required, or the surefire plugin (which runs the tests)
-will fail, preventing Maven from packaging the WAR. Tapestry includes a large number
-of testing facilities designed for use with TestNG (http://testng.org/), so it's recommended. -->
-        <dependency>
-            <groupId>org.testng</groupId>
-            <artifactId>testng</artifactId>
-            <version>5.12.1</version>
-            <scope>test</scope>
-        </dependency>
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-            <version>2.4</version>
-            <scope>test</scope>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <finalName>tapestry-tutorial1</finalName>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-compiler-plugin</artifactId>
-                <configuration>
-                    <source>1.5</source>
-                    <target>1.5</target>
-                    <optimize>true</optimize>
-                </configuration>
-            </plugin>
-
-            <!-- Run the application using "mvn jetty:run" -->
-            <plugin>
-                <groupId>org.mortbay.jetty</groupId>
-                <artifactId>maven-jetty-plugin</artifactId>
-                <version>6.1.9</version>
-                <configuration>
-                    <!-- Log to the console. -->
-                    <requestLog implementation="org.mortbay.jetty.NCSARequestLog">
-                        <!-- This doesn't do anything for Jetty, but is a workaround for a Maven bug
-                 that prevents the requestLog from being set. -->
-                        <append>true</append>
-                    </requestLog>
-                </configuration>
-            </plugin>
-
-
-            <!-- This changes the WAR file packaging so that what would normally go into WEB-INF/classes
-     is instead packaged as WEB-INF/lib/tutorial1.jar.  This is necessary for Tapestry
-     to be able to search for page and component classes at startup. Only
-     certain application servers require this configuration, please see the documentation
-     at the Tapestry 5 project page (http://tapestry.apache.org/tapestry5/). -->
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-war-plugin</artifactId>
-                <configuration>
-                    <archiveClasses>true</archiveClasses>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <reporting>
-
-        <!-- Adds a report detailing the components, mixins and base classes defined by this module. -->
-        <plugins>
-            <plugin>
-                <groupId>org.apache.tapestry</groupId>
-                <artifactId>tapestry-component-report</artifactId>
-                <version>${project.version}</version>
-                <configuration>
-                    <rootPackage>org.apache.tapestry5.tutorial</rootPackage>
-                </configuration>
-            </plugin>
-        </plugins>
-    </reporting>
-
-</project>
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/data/Honorific.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/data/Honorific.java
deleted file mode 100644
index 344b595..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/data/Honorific.java
+++ /dev/null
@@ -1,20 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.data;
-
-public enum Honorific
-{
-    MR, MRS, MISS, DR
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/entities/Address.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/entities/Address.java
deleted file mode 100644
index ae35967..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/entities/Address.java
+++ /dev/null
@@ -1,168 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.entities;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.tutorial.data.Honorific;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Address
-{
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @NonVisual
-    private Long id;
-
-    private Honorific honorific;
-
-    @Validate("required")
-    private String firstName;
-
-    @Validate("required")
-    private String lastName;
-
-    private String street1;
-
-    private String street2;
-
-    @Validate("required")
-    private String city;
-
-    @Validate("required")
-    private String state;
-
-    @Validate("required,regexp")
-    private String zip;
-
-    private String email;
-
-    private String phone;
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-
-    public Honorific getHonorific()
-    {
-        return honorific;
-    }
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public String getStreet1()
-    {
-        return street1;
-    }
-
-    public String getStreet2()
-    {
-        return street2;
-    }
-
-    public String getCity()
-    {
-        return city;
-    }
-
-    public String getState()
-    {
-        return state;
-    }
-
-    public String getZip()
-    {
-        return zip;
-    }
-
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public String getPhone()
-    {
-        return phone;
-    }
-
-    public void setCity(String city)
-    {
-        this.city = city;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setHonorific(Honorific honorific)
-    {
-        this.honorific = honorific;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-
-    public void setPhone(String phone)
-    {
-        this.phone = phone;
-    }
-
-    public void setState(String state)
-    {
-        this.state = state;
-    }
-
-    public void setStreet1(String street1)
-    {
-        this.street1 = street1;
-    }
-
-    public void setStreet2(String street2)
-    {
-        this.street2 = street2;
-    }
-
-    public void setZip(String zip)
-    {
-        this.zip = zip;
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/GameOver.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/GameOver.java
deleted file mode 100644
index 535d04f..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/GameOver.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class GameOver
-{
-    @Persist
-    @Property
-    private int count;
-
-    Object initialize(int count)
-    {
-        this.count = count;
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/Guess.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/Guess.java
deleted file mode 100644
index bf4bc5a..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/Guess.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class Guess
-{
-    @Persist
-    private int target;
-
-    @Property
-    private int guess;
-
-    @Persist
-    @Property
-    private String message;
-
-    @Persist
-    private int count;
-
-    @InjectPage
-    private GameOver gameOver;
-
-    Object onActionFromLink(int guess)
-    {
-        count++;
-
-        if (guess == target) return gameOver.initialize(count);
-
-        if (guess < target)
-            message = String.format("%d is too low.", guess);
-        else
-            message = String.format("%d is too high.", guess);
-
-        return null;
-    }
-
-    Object initialize(int target)
-    {
-        this.target = target;
-        count = 0;
-
-        return this;
-    }
-
-    public int getTarget()
-    {
-        return target;
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/Index.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/Index.java
deleted file mode 100644
index ed9e4a8..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/Index.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.pages;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.tutorial.entities.Address;
-import org.hibernate.Session;
-
-import java.util.List;
-import java.util.Random;
-
-public class Index
-{
-    private final Random random = new Random();
-
-    @InjectPage
-    private Guess guess;
-
-    @Inject
-    private Session session;
-
-    Object onAction()
-    {
-        int target = random.nextInt(10) + 1;
-
-        return guess.initialize(target);
-    }
-
-    @SuppressWarnings({ "unchecked" })
-    public List<Address> getAddresses()
-    {
-        return session.createCriteria(Address.class).list();
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/address/CreateAddress.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/address/CreateAddress.java
deleted file mode 100644
index 59abace..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/pages/address/CreateAddress.java
+++ /dev/null
@@ -1,43 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.pages.address;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.tutorial.entities.Address;
-import org.apache.tapestry5.tutorial.pages.Index;
-import org.hibernate.Session;
-
-public class CreateAddress
-{
-    @Property
-    private Address address;
-
-    @Inject
-    private Session session;
-
-    @InjectPage
-    private Index index;
-
-    @CommitAfter
-    Object onSuccess()
-    {
-        session.persist(address);
-
-        return index;
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/services/AppModule.java b/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/services/AppModule.java
deleted file mode 100644
index 18ef19e..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/java/org/apache/tapestry5/tutorial/services/AppModule.java
+++ /dev/null
@@ -1,96 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.annotations.Local;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.services.RequestFilter;
-import org.apache.tapestry5.services.RequestHandler;
-import org.apache.tapestry5.services.Response;
-import org.slf4j.Logger;
-
-import java.io.IOException;
-
-/**
- * This module is automatically included as part of the Tapestry IoC Registry, it's a good place to configure and extend
- * Tapestry, or to place your own services.
- */
-public class AppModule
-{
-    public static void contributeApplicationDefaults(
-            MappedConfiguration<String, String> configuration)
-    {
-        // Contributions to ApplicationDefaults will override any contributions to
-        // FactoryDefaults (with the same key). Here we're restricting the supported
-        // locales to just "en" (English). As you add localised message catalogs and other assets,
-        // you can extend this list of locales (it's a comma seperated series of locale names;
-        // the first locale name is the default when there's no reasonable match).
-
-        configuration.add(SymbolConstants.SUPPORTED_LOCALES, "en");
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-    }
-
-    /**
-     * This is a service definition, the service will be named TimingFilter. The interface, RequestFilter, is used
-     * within the RequestHandler service pipeline, which is built from the RequestHandler service configuration.
-     * Tapestry IoC is responsible for passing in an appropriate Log instance. Requests for static resources are handled
-     * at a higher level, so this filter will only be invoked for Tapestry related requests.
-     */
-    public RequestFilter buildTimingFilter(final Logger logger)
-    {
-        return new RequestFilter()
-        {
-            public boolean service(Request request, Response response, RequestHandler handler)
-                    throws IOException
-            {
-                long startTime = System.currentTimeMillis();
-
-                try
-                {
-                    // The reponsibility of a filter is to invoke the corresponding method
-                    // in the handler. When you chain multiple filters together, each filter
-                    // received a handler that is a bridge to the next filter.
-
-                    return handler.service(request, response);
-                }
-                finally
-                {
-                    long elapsed = System.currentTimeMillis() - startTime;
-
-                    logger.info(String.format("Request time: %d ms", elapsed));
-                }
-            }
-        };
-    }
-
-    /**
-     * This is a contribution to the RequestHandler service configuration. This is how we extend Tapestry using the
-     * timing filter. A common use for this kind of filter is transaction management or security.
-     */
-    public void contributeRequestHandler(OrderedConfiguration<RequestFilter> configuration,
-
-                                         @Local
-                                         RequestFilter filter)
-    {
-        // Each contribution to an ordered configuration has a name, When necessary, you may
-        // set constraints to precisely control the invocation order of the contributed filter
-        // within the pipeline.
-
-        configuration.add("Timing", filter);
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/main/resources/hibernate.cfg.xml b/maint-5-2/tapestry-tutorial1/src/main/resources/hibernate.cfg.xml
deleted file mode 100644
index f3e5b7a..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/resources/hibernate.cfg.xml
+++ /dev/null
@@ -1,23 +0,0 @@
-<!DOCTYPE hibernate-configuration PUBLIC
-        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-<hibernate-configuration>
-    <session-factory>
-        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
-        <property name="hibernate.connection.url">jdbc:hsqldb:./target/work/t5_tutorial1;shutdown=true</property>
-        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
-
-        <!--
-
-        To create user, login a root and:
-
-            grant all on t5_tutorial1.* to 't5tutorialuser'@'localhost' identified by 'secret';
-
-        -->
-        <property name="hibernate.connection.username">sa</property>
-        <property name="hibernate.connection.password"></property>
-        <property name="hbm2ddl.auto">update</property>
-        <property name="hibernate.show_sql">true</property>
-        <property name="hibernate.format_sql">true</property>
-    </session-factory>
-</hibernate-configuration>
diff --git a/maint-5-2/tapestry-tutorial1/src/main/resources/log4j.properties b/maint-5-2/tapestry-tutorial1/src/main/resources/log4j.properties
deleted file mode 100644
index a735071..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,37 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=info, A1
-
-# A1 is set to be a ConsoleAppender. 
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry5.TapestryFilter=info
-log4j.category.org.apache.tapestry5.services.TapestryModule.ComponentClassResolver=info
-
-log4j.category.org.apache.tapestry=error
-log4j.category.tapestry=error
-
-log4j.category.org.apache.tapestry5.tutorial=error
-log4j.category.app=error
-log4j.category.app.TimingFilter=info
-
-# Turning on debug mode for a page or component will show all of the code changes that occur when the
-# class is loaded.  Turning on debug mode for a page will enable verbose output about rendering
-# the page (and its components).
-# log4j.category.org.apache.tapestry5.tutorial.pages.Index=debug
diff --git a/maint-5-2/tapestry-tutorial1/src/main/resources/org/apache/tapestry5/tutorial/pages/address/CreateAddress.properties b/maint-5-2/tapestry-tutorial1/src/main/resources/org/apache/tapestry5/tutorial/pages/address/CreateAddress.properties
deleted file mode 100644
index 93ce181..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/resources/org/apache/tapestry5/tutorial/pages/address/CreateAddress.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-# Copyright 2007 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-street1-label=Street 1
-street2-label=Street 2
-email-label=E-Mail
-zip-label=Zip Code
-phone-label=Phone Number
-
-MR=Mr.
-MRS=Mrs.
-DR=Dr.
-
-submit-label=Create Address
-
-zip-regexp=\\d{5}(-\\d{4})?
-zip-regexp-message=Zip Codes are five or nine digits.  Example: 02134 or 90125-1655.
diff --git a/maint-5-2/tapestry-tutorial1/src/main/webapp/GameOver.tml b/maint-5-2/tapestry-tutorial1/src/main/webapp/GameOver.tml
deleted file mode 100644
index adb4510..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/webapp/GameOver.tml
+++ /dev/null
@@ -1,13 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <head>
-    <title>Game Over!</title>
-  </head>
-  <body>
-
-    <h1>Game Over</h1>
-
-    <p> You guessed the secret number in ${count} guesses!  </p>
-
-
-  </body>
-</html>
diff --git a/maint-5-2/tapestry-tutorial1/src/main/webapp/Guess.tml b/maint-5-2/tapestry-tutorial1/src/main/webapp/Guess.tml
deleted file mode 100644
index 8238569..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/webapp/Guess.tml
+++ /dev/null
@@ -1,15 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Guess A Number</title>
-    </head>
-    <body>
-
-        <p>Make a guess between one and ten:</p>
-
-        <p>${message}</p>
-
-        <t:loop source="1..10" value="guess" xml:space="preserve">
-            <t:actionlink t:id="link" context="guess">${guess}</t:actionlink>
-        </t:loop>
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-tutorial1/src/main/webapp/Index.tml b/maint-5-2/tapestry-tutorial1/src/main/webapp/Index.tml
deleted file mode 100644
index 8033343..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/webapp/Index.tml
+++ /dev/null
@@ -1,26 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>tutorial1 Start Page</title>
-    </head>
-    <body>
-
-        <h1>Hi/Lo Guess</h1>
-
-        <p>I'm thinking of a number between one and ten ...</p>
-
-        <p>
-            <t:actionlink>Start guessing</t:actionlink>
-        </p>
-
-        <h1>Address Book</h1>
-
-        <t:grid source="addresses"/>
-
-        <ul>
-            <li>
-                <t:pagelink page="address/create">Create new address</t:pagelink>
-            </li>
-        </ul>
-
-    </body>
-</html>
diff --git a/maint-5-2/tapestry-tutorial1/src/main/webapp/WEB-INF/web.xml b/maint-5-2/tapestry-tutorial1/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index bc21a02..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Tapestry 5 Tutorial #1</display-name>
-    <context-param>
-        <!-- The only significant configuration for Tapestry 5, this informs Tapestry
-of where to look for pages, components and mixins. -->
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.apache.tapestry5.tutorial</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-</web-app>
-      
diff --git a/maint-5-2/tapestry-tutorial1/src/main/webapp/address/CreateAddress.tml b/maint-5-2/tapestry-tutorial1/src/main/webapp/address/CreateAddress.tml
deleted file mode 100644
index 1f1dc73..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/webapp/address/CreateAddress.tml
+++ /dev/null
@@ -1,18 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-  <head>
-    <title>Create New Address</title>
-  </head>
-  <body>
-
-    <style>
-      DIV.t-beaneditor LABEL { 
-        width: 200px;
-      }
-    </style>
-
-    <h1>Create New Address</h1>
-
-    <t:beaneditform submitlabel="message:submit-label" object="address"/>
-
-  </body>
-</html>
diff --git a/maint-5-2/tapestry-tutorial1/src/main/webapp/favicon.ico b/maint-5-2/tapestry-tutorial1/src/main/webapp/favicon.ico
deleted file mode 100644
index ffd53d6..0000000
--- a/maint-5-2/tapestry-tutorial1/src/main/webapp/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/apt/env.apt b/maint-5-2/tapestry-tutorial1/src/site/apt/env.apt
deleted file mode 100644
index 24431cc..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/apt/env.apt
+++ /dev/null
@@ -1,68 +0,0 @@
- ---
- Setting up your Environment
- ---
- 
-Chapter 1: Setting Up Your Environment
-
- As much as I would like to dive into Tapestry right now, we must first talk about your development environment. The joy and the pain of Java development is the volume of choice available. There's just a bewildering number of JDKs, IDEs and other TLA1s out there.
-
- Let's talk about a stack of tools, all open source and freely available, that you'll need to setup. Likely you have some of these, or some version of these, already on your development machine.
-
-* JDK 1.5
-
-  Tapestry 5 makes use of features of JDK 1.5.  This includes Java Annotations, and a little bit of Java Generics.
-  
-* Eclipse 3.3
-
-  Since we're emphasizing a free and open source stack, we'll concentrate on the best <free> IDE.
-  
-  Eclipse 3.3 comes in various flavors, and includes a reasonable XML editor built-in.
-  
-* Jetty 5.1
-
-  Jetty is an open source servlet container created by Greg Wilkins of Webtide (which offers commercial support for Jetty). Jetty is high performance and designed for easy embedding in other software.
-   I've chosen the 5.1 release, rather than the cutting edge Jetty 6, because it is compatible with Jetty Launcher (see below).
-   
-  You can find out more about Jetty from its home page: {{{http://mortbay.org}http://mortbay.org}}.
-  
-  You can download Jetty from {{{http://docs.codehaus.org/display/JETTY/Downloading+and+Installing}http://docs.codehaus.org/display/JETTY/Downloading+and+Installing}}.
-
-  <strong>Note about Log4J</strong>: Jetty includes an incompatible version of Log4J.  If using Jetty 5, you must get a more recent copy of Log4J, version 1.2.14 or later, and replace
-  the copy of log4j.jar in the Jetty <<<ext>>> (external libraries) directory.  Just delete the old log4j.jar and copy the new one in its place.
-  
-* Jetty Launcher
-
-  Jetty Launcher is a plugin for Eclipse that makes it easy to launch Jetty applications from within Eclipse. This is a great model, since you can run or debug directly from you workspace without wasting time packaging and deploying.
-  
-  Jetty Launcher was created by Geoff Longman, and is available from http://jettylauncher.sourceforge.net/. Installation is easy, simply point Eclipse's update manager at 
-  {{{http://jettylauncher.sourceforge.net/updates/}http://jettylauncher.sourceforge.net/updates/}}.
-
-  If you are behind a firewall, you will need to set up a manual proxy configuration in Eclipse (Window, Preferences..., General, Network Connections).
-
-  <<Caution: JettyLauncher is only compatible with Jetty 4 and Jetty 5. It does not work with Jetty 6.>>
-  
-* Maven 2.0.8
-
-  Maven is a software build tool of rather epic ambitions. It has a very sophisticated plugin system that allows it to do virtually anything, though compiling Java code, building WAR and JAR files, and creating reports and web sites are its forte.
-  
-  Perhaps the biggest advantage of Maven over, say, Ant, is that it can download project dependencies (such as the Tapestry JAR files, and the JAR files Tapestry itself depends on) automatically for you, from one of several central repositories.
-  
-  We'll be using Maven to set up our Tapestry applications.  Maven 2.0.8 is available from {{{http://maven.apache.org/download.html}http://maven.apache.org/download.html}}.
-  
-* Maven Plugin
-
-  The Maven Plugin for Eclipse integrates Maven and Eclipse. It includes some features for editing the pom.xml (the Maven project description file which identifies, among many other things, what JAR files are needed by the project). 
-  More importantly, a Maven-enabled project automatically stays synchronized with the POM, automatically linking Eclipse project classpath to files from the local Maven repository.
-  
-  The plugin is available by pointing the Eclipse update manager at {{{http://m2eclipse.codehaus.org/update/}http://m2eclipse.codehaus.org/update/}}.  Make sure to use version 0.0.10.
-  
-* Tapestry 5.0.x
-
-  You should not have to download this directly; as we'll see, Maven should take care of downloading Tapestry, and its dependencies, as needed.
-  
-  <<Caution: this book is being written in parallel with Tapestry 5. In some cases, the screenshots may not be entirely accurate and the version number for Tapestry is in flux, with snapshot releases occurring frequently, and new dot releases every few weeks. 
-  So, for example, is 5.0.5 is not available, you can use 5.0.4 instead.>>
-  
-===
-  
-  {{{first.html}Continue on to Chapter 2: Your First Tapestry Application}}
diff --git a/maint-5-2/tapestry-tutorial1/src/site/apt/first.apt b/maint-5-2/tapestry-tutorial1/src/site/apt/first.apt
deleted file mode 100644
index 89c4360..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/apt/first.apt
+++ /dev/null
@@ -1,315 +0,0 @@
- ---
- Your First Tapestry Application
- ---
- 
-Chapter 2: Your First Tapestry Application
-
-  Before we can get down to the fun, we have to create an empty application.  Tapestry uses a feature of Maven to do this: <<archetypes>> (a too-clever way of saying "project templates").
-  
-  What we'll do is create an empty shell application using Maven, then import the application into Eclipse to do the rest of the work.
-    
-  Before proceeding, we have to decide on four things:  A Maven <group id> and <artifact id> for our project, a <version>, and a <base package name>.
-  
-  Maven uses the group id and artifact id to provide a unique identity for the application, and Tapestry needs to have a base package name so it knows where to look for pages and components.
-  
-  For this example, we'll use the group id <<org.apache.tapestry>>, artifact id <<tapestry-tutorial1>>, version <<1.0-SNAPSHOT>> and we'll use <<org.apache.tapestry5.tutorial>> as the base package.
-  
-  Our final command line is:
-
-----
-mvn archetype:generate -DarchetypeCatalog=http://tapestry.apache.org
-----
-
-  It will then prompt you to pick the archetype - choose quickstart, enter the group id, artifact id, version and package when prompted.
-
-  Execute this in a temporary directory, it will create a sub-directory: tutorial1.
-    
-  The first time you execute this command, Maven will spend quite a while downloading all kinds of JARs into
-  your local repository, which can take a minute or more. Later, once all that is already available locally,
-  the whole command executes in under a second.
-
-  If you are behind a firewall, before running any "mvn" commands, you will need to configure your proxy settings in settings.xml. Here is an example:
-
-----
-<settings>
- <proxies>
-    <proxy>
-       <active>true</active>
-       <protocol>http</protocol>
-       <host>myProxyServer.com</host>
-       <port>8080</port>
-       <username>joeuser</username>
-       <password>myPassword</password>
-       <nonProxyHosts></nonProxyHosts>
-    </proxy>
- </proxies>
- <localRepository>C:/Documents and Settings/joeuser/.m2/repository</localRepository>
-</settings>
-----
-
-  Of course, adjust  the \<localRepository\> element to match the correct path for your computer.  
-
-  One of the first things you can do is use Maven to run Jetty directly.
-  
-  Change into the newly created directory, and execute the command:
-  
----
-mvn jetty:run
----
-
-  Again, the first time, there's a dizzying number of downloads, but before you know it, the Jetty servlet container
-  is up and running.
-
-  You can open a web browser to {{{http://localhost:8080/tutorial1/}http://localhost:8080/tutorial1/}}
-  to see the running application:
-  
-[startpage.png] Default Start page for Application
-
-  The date and time in the middle of the page proves that this is a live application.
-  
-  Let's look at what Maven has generated for us. To do this, we're going to load the project inside Eclipse and continue from there.
-  
-  Start by hitting Control-C in the Terminal window to close down Jetty..
-  
-  Launch Eclipse and switch over to the Java Browser Perspective.
-  
-  Right click inside the Projects view and select <<Import ...>>
-  
-  Choose the "existing projects" option:
-  
-[eclipse-import.png] Import Project into Eclipse
-
-  Now select the folder created by Maven:
-  
-[eclipse-import-folder.png] Select folder to import
-
-  When you click the Finish button, the project will be imported into the Eclipse workspace.
-  
-  <<TODO: Picture of Java Browsing Perspective>>
-  
-  Maven dictates the layout of the project:
-  
-  * Java source files under src/main/java
-  
-  * Web application files under src/main/webapp (including src/main/webapp/WEB-INF)
-  
-  * Java test sources under src/test/java
-  
-  * Non-code resources under src/main/resources and src/test/resources
-  
-  []
-  
-  (Tapestry uses a number of non-code resources, such as template files and message catalogs, which will ultimately be packaged into
-  the WAR file.)
-  
-  The Maven Plugin, inside Eclipse, has found all the referenced libraries in your local Maven repository, and compiled the two classes created by quickstart archetype.
-  
-  Let's look at what the archetype has created for us, starting with the web.xml file:
-  
-  <<src/main/webapp/WEB-INF/web.xml>>
-  
-----
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE web-app
-      PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-      "http://java.sun.com/dtd/web-app_2_3.dtd">
-      <web-app>
-          <display-name>tutorial1 Tapestry 5 Application</display-name>
-          <context-param>
-              <!-- The only significant configuration for Tapestry 5, this informs Tapestry
-                   of where to look for pages, components and mixins. -->
-              <param-name>tapestry.app-package</param-name>
-              <param-value>org.apache.tapestry5.tutorial</param-value>
-          </context-param>
-          <filter>
-              <filter-name>app</filter-name>
-              <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-          </filter>
-          <filter-mapping>
-              <filter-name>app</filter-name>
-              <url-pattern>/*</url-pattern>
-          </filter-mapping>
-      </web-app>
-----
-  
-  This is short and sweet: you can see that the package name you provided earlier shows up as the tapestry.app-package context parameter; the TapestryFilter instance will use
-  this information to locate the Java classes we'll look at next.
-  
-  Tapestry 5 operates as a <servlet filter> rather than as a traditional <servlet>. In this way, Tapestry has a chance to intercept all incoming requests, to determine
-  which ones apply to Tapestry pages (or other resources). The net effect is that you don't have to maintain any additional configuration
-  for Tapestry to operate, regardless of how many pages or components you add to your application.
-  
-  Tapestry pages minimally consist of an ordinary Java class plus a component template file.
-
-  In the root of your web application, a page named "Index" will be used for any request that specifies no additional
-  path after the context name.
-    
-  Let's start with the template, which is stored in the webapp's WEB-INF folder.  Tapestry component templates are well-formed XML documents.  This means that you can use
-  any available XML editor.  Templates may even have a DOCTYPE or an XML schema to validate the structure of the template.  <That is, your build process may use a tool to validate your
-  templates.  At runtime, when Tapestry reads the template, it does not use a validating parser.> For the most part, the template looks like
-  ordinary XHTML:
-  
-  <<src/main/webapp/Index.tml:>>
-  
-----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-    <head>
-        <title>tutorial1 Start Page</title>
-    </head>
-    <body>
-        <h1>tutorial1 Start Page</h1>
-
-        <p> This is the start page for this application, a good place to start your modifications.
-            Just to prove this is live: </p>
-
-        <p> The current time is: ${currentTime}. </p>
-
-
-        <p>
-            [<t:pagelink t:page="Index">refresh</t:pagelink>]
-        </p>
-    </body>
-</html>
-----
-
- The goal in Tapestry is for component templates, such as Index.tml, to look as much as possible like ordinary, static
- HTML files. <By static, we mean unchanging, as opposed to a dynamically generated Tapestry page.>  In fact, the expectation
- is that in many cases, the templates will start as static HTML files, created by a web developer and then be
- <instrumented> to act as live Tapestry pages.
- 
-  Tapestry hides non-standard element and attributes inside the XML namespace. By convention, the prefix "t:" is used for
-  this namespace, but that is not a requirement.
-  
-  There only two bits of Tapestry instrumentation on this page.
-  
-  First is the way we display the current date and time: <<<$\{currentTime}>>>.  This syntax is used to access a property
-  of the page object, a property named currentTime.  Tapestry calls this an <expansion>.  The value inside the braces is the name of a 
-  standard JavaBeans property supplied by the page. As we'll see in later chapters, this is just the tip of the iceberg for what is possible
-  using expansions.
-  
-  The other item is the link used to refresh the page. We're specifying a component as an XML <element> within the Tapestry namespace. The element name, "pagelink",
-  defines the type of component.  PageLink (Tapestry is case insensitive) is a component built into the framework; it is part of the
-  core component library.  The attribute, page, is a string - the name of the page to link to.  Here, we're linking back to the same page, page "Index".
-  
-  This is how Tapestry works; the Index page contains an <instance> of the PageLink component. The PageLink component is configured via its parameters, which controls what
-  it does and how it behaves.
-  
-  The URL that the PageLink component will render out is <<<http://localhost:8080/tapestry-tutorial1/>>> ."Index" pages are special and
-  are identified just by the folder name.    In later examples,
-  when we link to pages besides "Index", the page name will be part of the URL.
-  
-  Tapestry ignores case where ever it can. Inside the template, we configured the PageLink component's page parameter with the name of the page, "Index".  Here too we could be
-  inexact on case.  Feel free to use "index" if that works for you. 
-  
-  <You do have to name your component template file, Index.html, with the exact same case as the component class name, Index. If you get the case wrong, it may work on some
-  operating systems (such as Windows) and not on others (Mac OS X, Linux, and most others). This can be really vexing, as it is common to develop on Windows and deploy on Linux or
-  Solaris, so be careful about case in this one area.>
-  
-  Clicking the link in the web browser sends a request to re-render the page; the template and Java object are
-  re-used to generate the HTML sent to the browser, which results in the updated time showing up in the web browser.
-  
-  The final piece of the puzzle is the Java class for the page.  Tapestry has very specific rules for where page classes go.  Remember the package name (configured inside web.xml)?  Tapestry adds a
-  sub-package, "pages", to it and the Java class goes there. Thus the full Java class name is org.apache.tapestry5.tutorial.pages.Index.
-  
-  <<src/main/java/org/apache/tapestry5/tutorial/pages/Index.java>>
-
----
-package org.apache.tapestry5.tutorial.pages;
-
-import java.util.Date;
-
-/**
- * Start page of application tutorial1.
- */
-public class Index
-{
-  public Date getCurrentTime()
-  {
-    return new Date();
-  }
-}
----
-  
-  That's pretty darn simple: No classes to extend, no interfaces to implement, just a very pure POJO (Plain Old Java Object). You do have to meet the Tapestry framework
-  halfway:
-  
-  * You need to put the Java class in the expected package, org.apache.tapestry5.tutorial.pages
-  
-  * The class must be public
-  
-  * You need to make sure there's a public, no-arguments constructor (here, the Java compiler has silently provided one for us)
-  
-  []
-  
-  The template referenced the property currentTime and we're providing that as a property, as a <synthetic property>, a property that is computed on the fly
-  (rather than stored in an instance variable).
-  
-  This means that every time the page renders, a fresh Date instance is created, which is just what we want.
-  
-  As the page renders, it generates the HTML markup that is sent to the client web browser.  For most of the page, that markup is
-  exactly what came out of the component template: this is called the <static content> (we're using the term "static" to mean "unchanging").
-  
-  The expansion, <<<$\{currentTime}>>>, is <dynamic:> different every time.  Tapestry will read that property and convert the result
-  into a string, and that string is mixed into the stream of markup sent to the client. <We'll often talk about the "client" and we don't mean
-  the people you send your invoices to: we're talking about the client web browser. Of course, in a world of web spiders and other
-  screen scrapers, there's no guarantee that the thing on the other end of the HTTP pipe is really a web browser. You'll often see low-level HTML
-  and HTTP documentation talk about the "user agent".>  Likewise, the PageLink component is dynamic, in that it generates a URL that is
-  (potentially) different every time.
-  
-  Tapestry follows the rules defined by Sun's JavaBeans specification: a property name of currentTime maps to two methods: getCurrentTime() and setCurrentTime(). If you omit one of the other of these
-  methods, the property is either read only (as here), or write only.
-  
-  Tapestry does go one step further: it ignores case when matching properties inside the expansion to properties of the page. In the template we could say
-  <<<$\{currenttime}>>> or <<<$\{CurrentTime}>>> or any variation, and Tapestry will <still> invoke the getCurrentTime() method.
-  
-  In the next chapter, we'll start to build a simple hi-lo guessing game, but we've got one more task before then, plus a magic trick.
-  
-  The task is to set up Jetty to run our application directly out of our Eclipse workspace. This is a great way to develop web applications,
-  since we don't want to have to use Maven to compile and run the application ... or worse yet, use Maven to package and deploy the application. That's for later, when
-  we want to put the application into production.  For development, we want a fast, agile environment that can keep up with our changes, and that means we can't wait for redeploys
-  and restarts.
-  
-  Choose the <<Run ...>> item from the Eclipse <<Run>> menu to get the launch configuration dialog:
-  
-[eclipse-run.png] Eclipse Run Dialog
-
-  Select Jetty Web and click the <New> button:
-  
-[eclipse-launch.png] Eclipse Launch Configuration  
-  
-  We've filled in a name for our launch configuration, and identified the project.  We've also told Jetty Launcher where our Jetty installation is.  We've identified
-  the web context as src/main/webapp, and we've turned on NCSA logging for good measure.
-  
-  In addition, we've set up the context as "/tutorial1", which matches what our eventual WAR file, tutorial1.war, would be deployed as inside an application server.
-  
-  Once you click Run, Jetty will start up and launch (it should take about two seconds).
-  
-  You may now start the application with the URL {{{http://localhost:8080/tutorial1/}http://localhost:8080/tutorial1/}}.
-  
-  Now it's time for the magic trick. Edit Index.java and change the getCurrentTime() method to:
-  
----
-  public String getCurrentTime()
-  {
-    return "A great day to learn Tapestry";
-  }
----  
-
-  Make sure you save changes; then click the refresh link in the web browser:
-  
-[app-live-reload.png] Application after live class reloading
-
-  This is one of Tapestry's early <wow factor> features: changes to your component classes are picked up immediately. No restart. No re-deploy.  Make the changes and see them <now>.
-  Nothing should slow you down or get in the way of you getting your job done.
-  
-  Now that we have our basic application set up, and ready to run (or debug) directly inside Eclipse, we can start working on implementing our
-  Hi/Lo game in earnest.
-  
-===
-  
-  {{{hilo.html}Continue on to chapter 3: Implementing The Hi/Lo Game}}
- 
-
-  
-  
-  
diff --git a/maint-5-2/tapestry-tutorial1/src/site/apt/forms.apt b/maint-5-2/tapestry-tutorial1/src/site/apt/forms.apt
deleted file mode 100644
index 9f5ead6..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/apt/forms.apt
+++ /dev/null
@@ -1,485 +0,0 @@
- ---
- Forms in Tapestry
- ---
- 
-Chapter 4: Forms in Tapestry
-
-  In the previous chapters, we saw how Tapestry can handle simple links, even links that pass information in the URL. In this chapter,
-  we'll see how Tapestry can do the same, and quite a bit more, for HTML forms.  
-  
-  Form support in Tapestry is deep and rich, more than can be covered in a single chapter. However, we can show the basics, including
-  some very common development patterns. To get started, let's create a simple address book application.
-  
-  We'll start with the entity data, a simple object to store the information we'll need. These classes go in an <<<entities>>> sub-package.  Unlike
-  the use of the <<<pages>>> sub-package (for page component classes), this is not enforced by Tapestry; it's just a convention (but
-  as we'll see shortly, a handy one).
-  
-  
-  <<src/main/java/org/apache/tapestry5/tutorial/entities/Address.java:>>
-  
-----
-package org.apache.tapestry5.tutorial.entities;
-
-import org.apache.tapestry5.tutorial.data.Honorific;
-
-public class Address
-{
-  private Honorific honorific;
-
-  private String firstName;
-
-  private String lastName;
-
-  private String street1;
-
-  private String street2;
-
-  private String city;
-
-  private String state;
-
-  private String zip;
-
-  private String email;
-
-  private String phone;
-
-  public String getCity()
-  {
-    return city;
-  }
-
-  public String getEmail()
-  {
-    return email;
-  }
-
-  public String getFirstName()
-  {
-    return firstName;
-  }
-
-  public Honorific getHonorific()
-  {
-    return honorific;
-  }
-
-  public String getLastName()
-  {
-    return lastName;
-  }
-
-  public String getPhone()
-  {
-    return phone;
-  }
-
-  public String getState()
-  {
-    return state;
-  }
-
-  public String getStreet1()
-  {
-    return street1;
-  }
-
-  public String getStreet2()
-  {
-    return street2;
-  }
-
-  public String getZip()
-  {
-    return zip;
-  }
-
-  public void setCity(String city)
-  {
-    this.city = city;
-  }
-
-  public void setEmail(String email)
-  {
-    this.email = email;
-  }
-
-  public void setFirstName(String firstName)
-  {
-    this.firstName = firstName;
-  }
-
-  public void setHonorific(Honorific honorific)
-  {
-    this.honorific = honorific;
-  }
-
-  public void setLastName(String lastName)
-  {
-    this.lastName = lastName;
-  }
-
-  public void setPhone(String phone)
-  {
-    this.phone = phone;
-  }
-
-  public void setState(String state)
-  {
-    this.state = state;
-  }
-
-  public void setStreet1(String street1)
-  {
-    this.street1 = street1;
-  }
-
-  public void setStreet2(String street2)
-  {
-    this.street2 = street2;
-  }
-
-  public void setZip(String zip)
-  {
-    this.zip = zip;
-  }
-}
-----
-
-  It's just a collection of getter and setter methods.  We also need to define the enum type, Honorific:
-  
-  <<src/main/java/org/apache/tapestry5/tutorial/data/Honorific.java:>>
-  
----
-package org.apache.tapestry5.tutorial.data;
-
-public enum Honorific
-{
-  MR, MRS, MISS, DR
-}
----
-
-* Address Pages
-
-  We're probably going to create a few pages related to addresses: pages for creating them, for editing them, for searching and listing them.
-  We'll create a sub-folder, address, to hold them.  Let's get started on the first of these pages, "address/Create"  (that's the real name, including
-  the slash --- we'll see in a minute how that maps to classes and templates).
-  
-  First, we'll update the Index.tml template, to create a link for creating a new page:
-  
-  <<src/main/webapp/Index.tml:>>
-
-----
-    <h1>Address Book</h1>
-
-    <ul>
-      <li><t:pagelink page="address/create">Create new address</t:pagelink></li>
-    </ul>
-----
-
-   Now we need the page, let's start with an empty shell, just to test our navigation.
-  
-  <<src/main/webapp/address/CreateAddress.tml:>>
-  
----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-  <head>
-    <title>Create New Address</title>
-  </head>
-  <body>
-
-    <h1>Create New Address</h1>
-
-    <em>coming soon ...</em>
-
-  </body>
-</html>
----
-
-  And the corresponding class:
-  
-  <<src/main/java/org/apache/tapestry5/tutorial1/pages/address/CreateAddress.java:>>
-  
-----
-package org.apache.tapestry5.tutorial.pages.address;
-
-public class CreateAddress
-{
-
-}
-----
-   
-   So ... why is the class named "CreateAddress" and not simply "Create"?  Actually, we could have named it "Create", and 
-   the application would still work, but the longer <class> name is equally valid.  Tapestry noticed the redundancy in the
-   class name:  <<<org.apache.tapestry5.tutorial.pages.>>><address><<<.Create>>><Address> and just stripped it out.
-   
-   Eventually, your application will probably have more entities:  perhaps you'll have a "user/Create" page and a "payment/Create" page and an "account/Create" page.
-   Now, you <could> have a bunch of different classes named <<<Create>>> spread across a number of different packages.  That's legal Java, but it isn't ideal.  You may find yourself
-   accidentally editing the Java code for creating an Account when your really want to be editting the code for creating a Payment.
-   
-   Tapestry is encouraging you to use a more descriptive name: <<<Create>>><Address> not just <<<Create>>>, but it isn't making you pay the cost (in terms of longer,
-   uglier URLs).  The URL to access the page will still be http://localhost:8080/tutorial1/address/create.
-
-   Another note:  Index pages work in folders as well.  A class named org.apache.tapestry5.tutorial.pages.address.AddressIndex would be given the name
-   "address/Index".  However, Tapestry has special rules for pages named "Index" and the render URL would be
-   http://localhost:8080/tutorial1/address/ .  In other words, you can place Index pages in any folder and Tapestry will
-   build a short URL for that page ... and you <don't> have to keep naming the classes Index (it's confusing to have many classes with the same
-   name, even across multiple packages); instead, you can name each index page after the package
-   that contains it.  Tapestry users a smart <convention> to keep it all straight and generate short, to the point URLs.
-   
-* Using the BeanEditForm component
-
-  Time to start putting together the logic for this form.  In fact, let's use a magic trick ... the BeanEditForm component.  This component can analyze a class and create an editor UI for it all in one go.
-  Let's give it a try.
-  
-  Add the following to the CreateAddress template (replacing the "coming soon ..." message):
-  
----
-  <t:beaneditform object="address"/>
----
-
-  And match that up with a property in the CreateAddress class:
-  
-----
-  @Property
-  private Address address
-----
-   
-   When you refresh the page, you'll see the following:
-   
-[address-v1.png] Initial version of the create address form
-
-  <There have been minor changes to the default CSS since this screenshot was taken; for example, the labels are a bit
-   wider now.  In addition, the Honorific field (being optional) would include a blank option, rather than the first real selection, "Mr".>
-
-  Tapestry's done quite a bit of work here.  It has created a form that includes a field for each property.  Further, its seen that the
-  honorific property is an enumerated type, and presented that as a drop-down list.
-  
-  In addition, Tapestry has converted the property names ("city", "email", "firstName") to user presentable labels ("City", "Email", "First Name").
-  In fact, these are \<label\> elements, so clicking a label will move the cursor into the corresponding field.
-  
-  This is an awesome start; it's a presentable interface, quite nice in fact for a few  minute's work.  But it's far from perfect; let's get started
-  with some customizations.
-  
-* Changing field order
-
-  It looks like the fields are being displayed in alphabetical order, ("city" first, "zip" last).  That's not quite the reality, however:  If you check the listing
-  for the Address class, you'll see that the getter and setter methods are in alphabetical order (care of Eclipse, which generated all those methods from the fields).
-     
-  The BeanEditForm works in the order in which the <getter methods> are defined in the class.  Let's reorder them into a more reasonable order:
-  
-  * honorific
-  
-  * firstName
-  
-  * lastName
-  
-  * street1
-  
-  * street2
-  
-  * city
-  
-  * state
-  
-  * zip
-  
-  * email
-  
-  * phone
-  
-  []
-  
-  (This is also the order of in which the fields are defined.)
-  
-  Because Address is not a component class, it is necessary to restart Jetty to see the effects of these changes.
-  
-  Once Jetty is restarted, hit the browser's refresh button to see the fields in the correct order:
-  
-[address-v2.png] Create address form with fields in proper order
-
-* Customizing labels
-
-  Tapestry makes it pretty easy to customize the labels used on the fields.  It's just a matter of creating a <message catalog> for the page.
-  
-  In Tapestry, every page and component may have its own message catalog.  This is a standard Java properties file, and it is named the same
-  as the page or component class, with a ".properties" extension.  A message catalog consists of a series of lines, each line is a message key and a message value
-  separated with an equals sign.
-  
-  All it takes is to create a message entry with a particular name:  the name of the property suffixed with "-label". As elsewhere, Tapestry is forgiving of case.
-  
-  <<src/main/resources/org/apache/tapestry5/tutorial/pages/address/CreateAddress.properties:>>
-  
-----
-street1-label=Street 1
-street2-label=Street 2
-email-label=E-Mail
-zip-label=Zip Code
-phone-label=Phone Number
-----
-
-  Since this is a <new> file (and not a change to an existing file), you may have to restart Jetty to force Tapestry to pick up the change.
-  
-[address-v3.png] Create Address form with field labels corrected
-  
-   We can also customize the options in the drop down list.  All we have to do is add some more entries to the message catalog matching the enum names to the desired labels.
-   Update CreateAddress.properties and add:
-   
-----
-MR=Mr.
-MRS=Mrs.
-DR=Dr.
-----
-
-  Notice that we don't have to include an option for MISS, because that is converted to "Miss" anyway.  You might just want to include it for
-  sake of consistency ... the point is, each option label is searched for seperately.
-
-  Lastly, the default label on the submit button is "Create/Update" (BeanEditForm doesn't know how it is being used). Let's change that to "Create Address".
-  
-  That button is a component within the BeanEditForm component. It's not a property, so we can't just put a message into the 
-  message catalog, the way we can with the fields.  Fortunately, the BeanEditForm component includes a parameter expressly for
-  re-labelling the button. Simply change the CreateAddress component template:
-  
-----
-  <t:beaneditform submitlabel="Create Address" object="address"/>
-----
-
-  The default for the submitlabel parameter is "Create/Update", but here we're overriding that default to a specific value.
-
-  The final result shows the reformatting and relabeling:
-  
-[address-v5.png] Create Address form with proper labels
-
-  Before continuing on to validation, a side note about message catalogs. 
-  Message catalogs are not just for re-labeling fields and options; we'll see in later chapters how message catalogs are used in the context of
-  localization and internationalization. 
-  
-  Instead of putting the label for the submit button directly inside the template, we're going to provide a reference to the label; the actual
-  label will go in the message catalog. 
-  
-  In Tapestry, when binding a parameter, the value you provide may include a prefix.  The prefix guides Tapestry in how to interpret the rest of the
-  the parameter value ... is it the name of a property?  The id of a component? A message key?  Most fields have a default prefix, usually "prop:", that
-  is used when you fail to provide one (this helps to make the templates as terse as possible).
-  
-  Here we want to reference a message from the catalog, so we use the "message:" prefix:
-  
-----
-  <t:beaneditform submitlabel="message:submit-label" object="address"/>
-----
-
-  And then define the submit-label key in the message catalog:
-  
----
-submit-label=Create Address
-----
-
-  At then end of the day, the exact same HTML is sent to the client, regardless of whether you include the label text directly in the template,
-  or indirectly in the message catalog. In the long term, the latter approach will work better if you later chose to internationalize your application.
-   
-*  Adding Validation
-
-  Before we worry about storing the Address object, we should make sure that the user provides reasonable values. For example,several of the fields should be required,
-  and phone numbers and email address have specific formats.
-  
-  The BeanEditForm checks for a Tapestry-specific annotation, @org.apache.tapestry5.beaneditor.Validate, on the getter <or> setter method of each property.
-
-  Update the getter methods for the lastName, firstName, street1, city, state and zip fields, 
-  adding a @Validate annotation to each:
-  
-----
-  @Validate("required")
-  public String getFirstName()
-  {
-    return firstName;
-  }
-----
-
-  What is that string, "required"?  That's how you specify the desired validation.  It is a series of names that identify what type of validation is desired.
-  A number of validators are built in, such as "required", "minLength" and "maxLength".  As elsewhere, Tapestry is case insensitive.  
-  
-  You can apply multiple validations, by seperating the validator names with commas.  Some validators can be configured (with an equals sign). Thus you might say "required,minLength=5" for
-  a field that must be specified, and must be at least five characters long.
-  
-  Restart the application, and refresh your browser, then hit the submit button.
-    
-[address-v6.png] Form with client side validations visible
-
-  This is a shot just after hitting the submit button; all the fields have been validated and pop-up error bubbles are displayed.  This looks a bit cluttered, but all the bubbles, except for the one
-  for the focus field (the field the user is actively typing into), will fade out after a moment.  As you tab from field to field, Tapestry will validate your input and briefly display the error bubble.  And <all> of this
-  is taking place on the client side, without any communication with the application.
-
-  Each field in error has been highlighted (it's a bit subtle) and marked with a red "X".  Further, the label
-  for each of the fields has also been highlighted in red, to even more clearly identify what's in error.  The cursor has also been moved to the first field
-  that's in error.
-  
-  Once all the errors are corrected, and the form does submit,
-  all validations are performed on the server side as well (just in
-  case the client has JavaScript disabled).
-
-  So ... how about some more interesting validation than just "required or not".  Tapestry has built in support for validating based on field length and several variations
-  of field value, including regular expressons.  Zip codes are pretty easy to express as a regular expression.
-  
-----
-  @Validate("required,regexp=\\d{5}(-\\d{4})?")
-  public String getZip()
-  {
-    return zip;
-  }    
-----
-
-  Let's give it a try; restart the application and enter an "abc" for the zip code.
-  
-[address-v7.png] Regexp validation
-
-  This is what you'll see after typing "abc" and tabbing out of the field, then tabbing back in. It's a little hard to capture all the animation
-  effects in a still photo.
-
-  In any case, that's the right validation behavior, but it's the wrong message. Your users are not going to know or care about regular expressions.
-
-  Fortunately, it's easy to customize validation messages.  All we need to know is the name of the
-  property ("zip") and the name of the validator ("regexp").  We can then put an entry into the CreateAddress message catalog:
-  
-----
-zip-regexp-message=Zip Codes are five or nine digits.  Example: 02134 or 90125-1655.
-----
-
-  Refresh the page and submit again:
-  
-[address-v8.png] Regexp validation with corrected message
-
-  This trick isn't limited to just the regexp validator, it works equally well with <any> validator.
-  
-  Let's go one step further.  Turns out, we can move the
-  regexp pattern to the message catalog as well.  If you only provide the name of the validator in the @Validate annotation, Tapestry will search the containing
-  page's message catalog of the constraint value, as well as the validation message.  The constraint value for the regexp validator is the regular expression to match against.
-  
-----
-  @Validate("required,regexp")
-  public String getZip()
-  {
-    return zip;
-  }
-----
-
-  Now, just put the regular expression  into the CreateAddress message catalog:
-  
-----
-zip-regexp=\\d{5}(-\\d{4})?
-zip-regexp-message=Zip Codes are five or nine digits.  Example: 02134 or 90125-1655.
-----
-
-  After a restart you'll see the ... the same behavior.  But when we start creating more complicated regular expressions, it'll be much, much nicer
-  to put them in the message catalog rather than inside the annotation value.  And inside the message catalog, you can change and tweak the regular expressions
-  without having to restart the application each time.
- 
-  We could go a bit further here, adding more regular expression validation for
-  phone numbers and e-mail addresses. We're also far from done in terms of 
-  further customizations of the BeanEditForm component.
-  
-  By now you are likely curious about what happens <after> the form submits
-  successfully (without validation errors), so that's what we'll focus on next.
-  
-====
-
-  {{{forms2.html}Continue on to Chapter 5: Forms in Tapestry, Part Two}}
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-tutorial1/src/site/apt/forms2.apt b/maint-5-2/tapestry-tutorial1/src/site/apt/forms2.apt
deleted file mode 100644
index 5acb799..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/apt/forms2.apt
+++ /dev/null
@@ -1,418 +0,0 @@
- ---
- Forms in Tapestry
- ---
- 
-Chapter 5: Forms in Tapestry (Part Two)
-
-  So, you fill in all the fields, submit the form (without validation errors) and voila:  you get back the same
-  form, blanked out.  What happened, and where did the data go?
-
-  What happened is that we haven't told Tapestry what to do after the form is succesfully submitted (by succesful, we mean,
-  with no validation errors).  Tapestry's default behavior is to redisplay the active page, and that occurs in a new
-  request, with a new instance of the Address object (because the address field is not a peristent field).
-
-  Well, since we're creating objects, we might as well store them somewhere ... in a database.  We're going to
-  quickly integrate Tapestry with {{{http://hibernate.org}Hibernate}} as the object/relational mapping layer,
-  and ultimately store our data inside a {{{http://www.hsqldb.org/}HSQLDB}} database.  HSQLDB is an embedded database
-  engine and requires no installation -- it will be pulled down as a dependency via maven.
-
-Re-configuring the Project
-
-  We're going to bootstrap this project from a simple Tapestry project to one that uses Hibernate and HSQLDB.
-
-
-* Updating the Dependencies
-
-  First, we must update the POM to list a new set of dependencies, that includes Hibernate,
-  the Tapestry/Hibernate integration library, and the HSQLDB JDBC driver:
-
-  <<src/pom.xml (partial):>>
-
-----
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-hibernate</artifactId>
-            <version>${tapestry-release-version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>hsqldb</groupId>
-            <artifactId>hsqldb</artifactId>
-            <version>1.8.0.7</version>
-        </dependency>
-
-    </dependencies>
-----
-
-  The tapestry-hibernate library includes, as transitive dependencies, Hibernate and tapestry-core.  This means
-  that you can simply replace "tapestry-core" with "tapestry-hibernate" inside the \<artifactId\> element.
-
-  Since Hibernate can work with so many different databases, we must explicitly add in the correct driver.
-
-* Hibernate Configuration
-
-  Hibernate has a master configuration file used to store connection and other data.
-
-  <<src/main/resources/hibernate.cfg.xml:>>
-
-----
-<!DOCTYPE hibernate-configuration PUBLIC
-        "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
-        "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
-<hibernate-configuration>
-    <session-factory>
-        <property name="hibernate.connection.driver_class">org.hsqldb.jdbcDriver</property>
-        <property name="hibernate.connection.url">jdbc:hsqldb:./target/work/t5_tutorial1;shutdown=true</property>
-        <property name="hibernate.dialect">org.hibernate.dialect.HSQLDialect</property>
-        <property name="hibernate.connection.username">sa</property>
-        <property name="hibernate.connection.password"></property>
-        <property name="hbm2ddl.auto">update</property>
-        <property name="hibernate.show_sql">true</property>
-        <property name="hibernate.format_sql">true</property>
-    </session-factory>
-</hibernate-configuration>
-----
-
-
-  Most of the configuration is to identify the JDBC driver and connection URL.
-
-  Note the connection URL.  We are instructing HSQLDB to store its database files within our project's
-  target directory.  We are also instructing HSQLDB to flush any data to these files at shutdown.  This means
-  that data will persist across different invocations of this project, but if the target directory is destroyed
-  (e.g., via "mvn clean"), then all the database contents will be lost.
-
-  In addition, we are configuring Hibernate to <update> the database schema; when Hibernate initializes
-  it will create or even modify tables to match the entities.  Finally, we are configuring Hibernate
-  to output any SQL it executes, which is very useful when initially building an application.
-
-  But what entities?  Normally, the available entities are listed inside hibernate.cfg.xml, but that's not necessary
-  with Tapestry; in another example of convention over configuration, Tapestry locates all entity classes
-  inside the entities package and adds them to the configuration. Currently, that is just the Address entity.
-
-Adding Hibernate Annotations
-
-  For an entity class to be used with Hibernate, some Hibernate annotations must be added to the class.
-
-  Below is the updated Address class, with the Hibernate annotations (as well as the Tapestry ones).  
-
-  <<src/main/java/org/apache/tapestry5/tutorial/entities/Address.java:>>
-
-----
-package org.apache.tapestry5.tutorial.entities;
-
-import org.apache.tapestry5.beaneditor.NonVisual;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.tutorial.data.Honorific;
-
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-
-@Entity
-public class Address
-{
-    @Id
-    @GeneratedValue(strategy = GenerationType.IDENTITY)
-    @NonVisual
-    private Long id;
-
-    private Honorific honorific;
-
-    @Validate("required")
-    private String firstName;
-
-    @Validate("required")
-    private String lastName;
-
-    private String street1;
-
-    private String street2;
-
-    @Validate("required")
-    private String city;
-
-    @Validate("required")
-    private String state;
-
-    @Validate("required,regexp")
-    private String zip;
-
-    private String email;
-
-    private String phone;
-
-    public Long getId()
-    {
-        return id;
-    }
-
-    public void setId(Long id)
-    {
-        this.id = id;
-    }
-
-    public Honorific getHonorific()
-    {
-        return honorific;
-    }
-
-    public String getFirstName()
-    {
-        return firstName;
-    }
-
-    public String getLastName()
-    {
-        return lastName;
-    }
-
-    public String getStreet1()
-    {
-        return street1;
-    }
-
-    public String getStreet2()
-    {
-        return street2;
-    }
-
-    public String getCity()
-    {
-        return city;
-    }
-
-    public String getState()
-    {
-        return state;
-    }
-
-    public String getZip()
-    {
-        return zip;
-    }
-
-    public String getEmail()
-    {
-        return email;
-    }
-
-    public String getPhone()
-    {
-        return phone;
-    }
-
-    public void setCity(String city)
-    {
-        this.city = city;
-    }
-
-    public void setEmail(String email)
-    {
-        this.email = email;
-    }
-
-    public void setFirstName(String firstName)
-    {
-        this.firstName = firstName;
-    }
-
-    public void setHonorific(Honorific honorific)
-    {
-        this.honorific = honorific;
-    }
-
-    public void setLastName(String lastName)
-    {
-        this.lastName = lastName;
-    }
-
-    public void setPhone(String phone)
-    {
-        this.phone = phone;
-    }
-
-    public void setState(String state)
-    {
-        this.state = state;
-    }
-
-    public void setStreet1(String street1)
-    {
-        this.street1 = street1;
-    }
-
-    public void setStreet2(String street2)
-    {
-        this.street2 = street2;
-    }
-
-    public void setZip(String zip)
-    {
-        this.zip = zip;
-    }
-}
-----
-
-  The Tapestry annotations, @NonVisual and @Validate, may be placed on the setter or getter method or on
-  the field (as we have done here).  As with the Hibernate annotations, putting the annotation on the field
-  requires that the field name match the corresponding property name.
-
-  [@NonVisual]
-    This annotation indicates a field, such as a primary key, that should not be made visible to the user.
-
-  [@Validate]
-    This annotations identifies the validations associated with a field.
-
-Updating the Database
-
-  So we have a database up and running, and Hibernate is configured to connect to it.  Let's make use of that
-  to store our Address object in the database.
-
-  What we need is to provide some code to be executed when the form is submitted.  When a Tapestry form
-   is submitted, there is a whole series of events that get fired.  The event we are interested in is the "success"
-   event, which comes late in the process, after all the values have been pulled out of the request and
-   applied to the page properties, and after all server-side validations have occured.
-
-   The success event is only fired if there are no validation errors.
-
-  Our event handler must do two things:
-
-  * Use the Hibernate Session object to persist the new Address object.
-
-  * Commit the transaction to force the data to be written to the database.
-
-  []
-
-  <<src/main/java/org/apache/tapestry5/tutorial/pages/address/CreateAddress.java:>>
-
-----
-package org.apache.tapestry5.tutorial.pages.address;
-
-import org.apache.tapestry5.annotations.InjectPage;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.hibernate.annotations.CommitAfter;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.tutorial.entities.Address;
-import org.apache.tapestry5.tutorial.pages.Index;
-import org.hibernate.Session;
-
-public class CreateAddress
-{
-    @Property
-    private Address address;
-
-    @Inject
-    private Session session;
-
-    @InjectPage
-    private Index index;
-
-    @CommitAfter
-    Object onSuccess()
-    {
-        session.persist(address);
-
-        return index;
-    }
-}
-----
-
-  The {{{../apidocs/org/apache/tapestry5/ioc/annotations/Inject.html}Inject}} annotation tells Tapestry to inject a service into the
-  annotated field; 
-  Tapestry includes a sophisticated
-  Inversion of Control container (similar in many ways to Spring) that is very good at locating available services
-  by type, rather than by a string id.  In any case, the Hibernate Session object is exposed as a Tapestry IoC service,
-  ready to be injected (this is one of the things provided by the tapestry-hibernate module).
-
-  Tapestry automatically starts a transaction as necessary; however that transaction will be <aborted> at the end
-  of the request.  If we make changes to persistent objects, such as adding a new Address object,
-  then it is necessary to commit the transaction.
-
-  The {{{../apidocs/org/apache/tapestry5/hibernate/annotations/CommitAfter.html}CommitAfter}} annotation can be applied to any component method; if the method completes normally, the transaction
-  will be committed (and a new transaction started to replace the committed transaction).
-
-  After persisting the new address, we return to the main Index page of the application.
-
-  <Note: In real applications, it is rare to have pages and components directly use the Hibernate Session. It
-  is generally a better approach to define your own Data Access Object layer to perform common update operations
-  and queries.>
-
-Showing Addresses
-
-  As a little preview of what's next, let's display all the Addresses entered by the user on the Index page
-  of the application.  After you enter a few names, it will look something like:
-
-[index-grid-v1.png] Adding the Grid to the Index page
-
-  So, how is this implemented?  Primarily, its accomplished by the
-  {{{../tapestry-core/ref/org/apache/tapestry5/corelib/components/Grid.html}Grid}} component.
-
-  The Grid component is based on the same concepts as the BeanEditForm component; it can pull apart
-  a bean into columns. The columns are sortable, and when there are more entries than will fit on a single
-  page, page navigation is automatically added.
-
-  A minimal Grid is very easy to add to the template:
-
-  <<src/main/webapp/Index.tml (partial):>>
-
-----
-  <t:grid source="addresses"/>
-----
-
-  And all we have to do is supply the addresses property in the Java code:
-
-  <<src/main/java/org/apache/tapestry5/tutorial/pages/Index.java (partial):>>
-
-----
-    @Inject
-    private Session session;
-
-    public List<Address> getAddresses()
-    {
-        return session.createCriteria(Address.class).list();
-    }
-----
-
-  Here, we're using the Hibernate Session object to find all Address objects in the database.
-  Any sorting that takes place will be done in memory.  This is fine for now (with only
-  a handful of Address objects in the database). Later we'll
-  see how to optimize this for very large result sets.
-  
-What's Next?
-
-  We have lots more to talk about: more components, more customizations, built-in Ajax support,
-  more common design and implementation patterns,
-  and even writing your own components (which is easy!).
-
-  ... but Tapestry and this tutorial are a work in progress, so stay patient, and check out
-  the other Tapestry tutorials and resources available on the
-  {{{../index.html}Tapestry 5 home page}}.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/maint-5-2/tapestry-tutorial1/src/site/apt/hilo.apt b/maint-5-2/tapestry-tutorial1/src/site/apt/hilo.apt
deleted file mode 100644
index 995faa8..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/apt/hilo.apt
+++ /dev/null
@@ -1,541 +0,0 @@
- ---
- Implementing the Hi/Lo Guessing Game
- ---
- 
-Chapter 3: Implementing the Hi/Lo Guessing Game
-
-  Let's start building the Hi/Lo Guessing game. 
-  
-  In the game, the computer selects a number between 1 and 10.  You try and guess the number, clicking links.
-  At the end, the computer tells you how many guesses you required.
-  
-  We'll build it in small pieces, using the kind of iterative development
-  that Tapestry makes so easy.
-  
-[hilo-flow.png] Page flow for Hi/Lo Game
-
-  Our page flow is very simple, consisting of three pages: Start, Guess and GameOver.  The Start page introduces the application and includes
-  a link to start guessing.  The Guess page presents the user with ten links, plus feedback such as "too low" or "too high".  
-  The GameOver page tells the user how many guesses they took.
-  
-  Let's get to work on the Index page and template.
-  
-  <<src/main/webapp/Index.tml:>>
-  
-----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-  <head>
-    <title>tutorial1 Start Page</title>
-  </head>
-  <body>
-
-    <h1>Hi/Lo Guess</h1>
-
-    <p>I'm thinking of a number between one and ten ... </p>
-
-    <p>
-      <t:actionlink>Start guessing</t:actionlink>
-    </p>
-
-  </body>
-</html>
-----
-
-  Here we've taken the template created by the quickstart archetype and changed it around to fit our needs. The ActionLink
-  component will create a link that will trigger a method inside our Java class.  You can launch the application to try it out:
-  
-[hilo-start.png] Start page with Hi/Lo Game link
-
-  However, clicking the link doesn't do anything yet.  We haven't told Tapestry what to do when the link gets clicked.
-  
-  Let's fix that. We'll change the Start class so that it will react when the link is clicked ... but what should it do?
-  Well, to start the guessing process, we need to come up with a random number (between one and ten).  We need to tell
-  the Guess page about that number, and we need to make sure the Guess page is started up to display the response.
-  
-  First, the Guess page.  Just to get started, we'll create a Guess page without much guessing: it'll just show us the 
-  target number, the number we're supposed to be guessing.
-  
-  <<src/main/webapp/Guess.tml:>>
-  
-----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-  <head>
-    <title>Guess A Number</title>
-  </head>
-  <body>
-
-    <h1>The target number is ${target}.</h1>
-
-  </body>
-</html>
-----
-
-  On the Java side, the Guess page needs to have a target property:
-  
-----
-package org.apache.tapestry5.tutorial.pages;
-
-public class Guess
-{
-  private int target;
-
-  Object initialize(int target)
-  {
-    this.target = target;
-
-    return this;
-  }
-}
-----
-
-  The key method here is initialize():  It is invoked to tell the Guess page what the target number is.  Notice that the
-   method is package private, not public;
-  it is only expected to be invoked from the Index page (as we'll see in a moment), so there's no need to make it public.  Later we'll see that
-  there's more initialization to be done
-  than just storing a value into the target instance variable (which is why we don't simply name the method setTarget() ).
-
-  Now we can move back to the Index page.  What we want is to have the ActionLink component invoke a method on the Index page. We can then generate
-  a random target number. We'll tell the Guess page what the target number is and then make sure that it is  the Guess page, and not the
-  Index page,
-  that renders the response into the user's web browser.  That's actually quite a few concepts to take in all at once.
-  
-  Let's start with the code, and break it down:
-  
-  <<src/main/java/org/apache/tapestry5/tutorial/pages/Index.java>>
-
-----
-package org.apache.tapestry5.tutorial.pages;
-
-import java.util.Random;
-
-import org.apache.tapestry5.annotations.InjectPage;
-
-public class Start
-{
-  private final Random random = new Random();
-
-  @InjectPage
-  private Guess guess;
-
-  Object onAction()
-  {
-    int target = random.nextInt(10) + 1;
-
-    return guess.initialize(target);
-  }
-}
-----
-  
-  What we're talking about here is <communication> of information from the Index page to the Guess page.  In traditional servlet development, this is done
-  in a bizarre way ... storing attributes into the shared HttpSession object.  Of course, for that to work, both (or all) parties have to agree on the type
-  of object stored, and the well-known name used to access the attribute.  That's the source of a large number of bugs.  It's also not very object oriented ... state
-  is something that should be <inside> objects (and private), not <outside> objects (and public).
-  
-  The Tapestry way is very object oriented: everything is done in terms of objects and methods and properties of those objects.
-  
-  This communication starts with the connection between the two pages:  in this case, the
-  {{{../apidocs/org/apache/tapestry5/annotations/InjectPage.html}InjectPage}} annotation allows another page in the application
-  to be injected into the Index page.
-
-  Injection can be a somewhat nebulous concept.  In terms of Tapestry, it means that some cooperating object needed by one class is provided to it.  The other
-  object is often referred to as a "dependency"; in this case, the Index page <depends on> the Guess page to be fully functional, and an instance of the Guess
-  page is made available as the guess instance variable.  The Index page doesn't, and can't, <create> the Guess page, it can only
-  advertise, to Tapestry, that it needs the Guess page.  Tapestry will take care of the rest.
-    
-  Let's see what we do with this injected page.  It's used inside onAction().  You might guess that this method is invoked when the link ("Start guessing") is clicked.  But
-  why?
-  
-  This is a strong example of <convention over configuration>. Tapestry has a naming convention for certain methods:  "on<EventType>[From<ComponentId>]".  Here, the event type 
-  is "action" and the component id is not even specified. This translates to "when the action event is fired from any component, invoke this method".
-  
-  "The action event?"  This underlines a bit about how Tapestry processes requests. When you click a link generated by the ActionLink component, Tapestry is able
-  to identify the underlying component inside the request: it knows that the component is on the Index page, and it knows the component within the page.  Here we didn't give
-  the ActionLink component a specific id, so Tapestry supplied one.  An "action" event is triggered inside the ActionLink component, and that event bubbles
-  up to the page, where the onAction() method acts as an <event handler method>.
-  
-  So ... ActionLink component --> action request --> onAction() event handler method.
-  
-  Event handler methods don't have to be public; they are usually package private (as in this example).  Also, it isn't an error if a request never matches
-  an event handler. Before we added the onAction() event handler, that's exactly what happened; the request passed through without any event handler
-  match, and Tapestry simply re-rendered the Start page.
-  
-  What can you do inside an event handler method?  Any kind of business logic you like; Tapestry doesn't care.  Here we're using a random number generator
-  to set the target number to guess.
-  
-  We also use the injected Guess page; we invoke the initialize() method to tell it about the number the user is trying to guess.
-  
-  The <return value> of an event handler method is very important; the value returned informs Tapestry about what page will render the response to the client.
-  By returning the injected Guess page, we're telling Tapestry that the Guess page should be the one to render the response.
-
-  This idiom: having the Guess page provide an initialize() method and return itself, is very common in Tapestry. It allows the event handler method to be
-  very succinct; it's as if the event handler method says "initialize the Guess page and render it to the client".
-  
-  Again, this is a big difference between Tapestry and servlets (or Struts). Tapestry tightly binds the controller (the Java class) to the template.
-  Using JSPs, you would have extra configuration to select a view (usually by a logical name, such as "success") to a "view" (a JSP).  Tapestry cuts through
-  all that cruft for you. Objects communicate with, and defer to, other objects and all the templates and rendering machinery comes along for free.
-  
-  In later chapters, we'll see other possibilities besides returning a page instance from an event handler method.
-  
-  For the moment, make sure all the changes are saved, and click the "Start guessing" link.
-  
-[hilo-exception.png] Exception on the Guess page
-
-  This may not quite be what you were expecting ... but it is a useful digression into one of Tapestry's most important features: <<feedback>>.
-  
-  Something was wrong with the Guess page, and Tapestry has reported the error to you so that you can make a correction.
-  
-  Here, the root problem was that we didn't define a getTarget() method in the Guess class.  Ooops.  Deep inside Tapestry, a RuntmeException was thrown to explain this.
-  
-  As often happens in frameworks, that RuntimeException was caught and rethrown wrapped inside a new exception, the TapestryException. This added a bit more detail to the exception
-  message, and linked the exception to a <location>.  Since the error occurred inside a component template, Tapestry is able to display that portion of the
-  template, highlighting the line in error.
-  
-  If you scroll down, you'll see that after the stack trace, Tapestry provides a wealth of information about the current request, including headers and query parameters.
-  It also displays information stored in the HttpSession (if the session exists), and other information that may be of use.  
-  
-  Of course, in a production application,
-  this information can be hidden!
-  
-  Let's fix this problem, by adding the following to the Guess class:
-  
----
-  public int getTarget()
-  {
-    return target;
-  }
----
-
-* Persisting data between requests
-
-  That fixes the problem, but introduces another:
-  
-[hilo-guess-v1.png] Hi/Lo Guess Page
-
-  Why is the target number zero?  Didn't we set it to a random value between 1 and 10?
-  
-  At issue here is the how Tapestry organizes requests. Tapestry has two main types
-  of requests: <<action>> requests and <<render>> requests. Render requests
-  are easy, the URL includes just the page name, and that page is rendered out.
-  
-  Action requests are more complicated; the URL will include the name of the page
-  and the id of the component within the page, and perhaps the type of event.
-  
-  After your event handler method is executed, Tapestry determine what page will
-  render the response; as we've seen, that is based on the return value of
-  the event handler method.
-  
-  Tapestry doesn't, however, render the response directly, the way most servlet
-  applications would; instead it sends a <redirect URL> to the client web browser.
-  The URL is a render request URL for the page that will render the response.
-  
-  You may have seen this before.  It is commonly called the <redirect after post pattern>. Most often,
-  it is associated with form submissions (and as we'll see in later chapters, a form submission <is>
-  another type of action request). 
-  
-  So why does that affect the target value?  At the end of any request (action or render), Tapestry
-  will "clean house", resetting any instance variables back to their initial, default values (usually, null 
-  or zero). 
-  
-  This cleaning is very necessary to the basic way Tapestry operates: pages are expensive entities to
-  create; too expensive to create fresh each request, and too large and complicated to store in the HttpSession.
-  Tapestry <pools> pages, using and reusing them in request after request.  
-  
-  For the duration of a single request from a single user, a <page instance> is <bound> to the request.
-  It is only accessible to the one request. Other requests may be bound to other instances of the same page.
-  The same page instance will be used for request after request. 
-  
-  So, inside the action request, the code inside the onAction() event handler method <did> call the
-  initialize() method, and a value between 1 and 10 was stored in the target instance variable. But
-  at the end of that request, the value was lost, and in the subsequent render request for the Guess page,
-  the value was zero.
-  
-  Fortunately, it is very easy to transcend this behavior.  We'll use an annotation, {{{../apidocs/org/apache/tapestry5/annotations/Persist.html}Persist}},
-  on the instance variable:
-  
-----
-  @Persist
-  private int target;
-----
-
-  Now we can use the browser back button to return to the Start page, and click the link again.
- 
-[hilo-number.png] The target number
-  
-  One of the nice things about this approach, the use of redirects, is that hitting the refresh button
-  does <not> choose a new target number.  It simply redraws the Guess page with the 
-  target number previously selected. In many servlet applications, the URL would be for the action "choose a random number"
-  and refreshing would re-execute that action.
-  
-* Creating guessable links
-
-  Now it's time to start the game in earnest.  We don't want to just tell the user what the target number is,
-  we want to make them guess, and we want to track how many attempts they take.
-  
-  What we want is to create 10 links, and combine those links with logic on the server side, an event handler method,
-  that can interpret what value the user selected.
-  
-  Let's start with those links.  We're going to use a new component, Loop, to loop
-  over a set of values:
-  
-  <<src/main/webapp/Guess.tml:>>
-  
----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-  <head>
-    <title>Guess A Number</title>
-  </head>
-  <body>
-
-  <p>Make a guess between one and ten:</p>
-  
-    <t:loop source="1..10" value="guess" xml:space="preserve">
-      <t:actionlink t:id="link" context="guess">${guess}</t:actionlink>
-    </t:loop>
-
-  </body>
-</html>
----
-
-  The Loop component's source attribute identifies the values to loop over.
-  Often this is a list or array, but here the special
-  special syntax, "1..10" means iterate over the numbers between 1 and 10, inclusive.
-
-  What about the <<<xml:space="preserve">>> attribute?  Normally, Tapestry is pretty draconian
-  about stripping out unnecessary whitespace from the template.  Most whitespace (spaces, tabs,
-  newlines, etc.) is reduced to a single space.  This can help a lot with reducing the size
-  of the output and with making complex nested layouts easier to read ... but occasionally, as here,
-  the whitespace is needed to keep the numbers from running together.  <<<xml:space="preserve">>>
-  turns on full whitespace retention for the element.
-
-  The value attribute gets assigned the current item from the loop.  We'll use
-  a property of the Guess page as a kind of scratchpad for this purpose.  We could manually
-  write a getter and a setter method as we did before, or we can let Tapestry generate those
-  accessors:
-  
----
-  @Property
-  private int guess;
----
-
-  Tapestry will automatically create the methods needed so that the guess property (it's smart
-  about stripping off leading underscores) is accessible in the template.
-
-  The context parameter of the ActionLink is how we get extra information into
-  the action request URL. The context can be a single value, or an array or
-  list of values.  The values are converted to strings and tacked onto the action
-  request URL.  The end result is <<<http://localhost:8080/tutorial1/guess.link/4>>>.  
-  
-  What is "guess.link"?  That's the name of the page, "guess", and the id of the component 
-  ("link", as explicitly set with the t:id attribute).        Remember this is an action link:
-  as soon as the user clicks the click, it is replaced with a render link such
-  as <<<http://localhost:8080/tutorial1/guess>>>.
-  
-  Now, to handle those guesses. We're going to add an event handler method that gets
-  invoked when a link is clicked.  We're also going to add a new property, message, to
-  store the message that says "too high" or "too low".
-  
----
-  @Persist
-  @Property
-  private String message;
-
-  String onActionFromLink(int guess)
-  {
-    if (guess == target) return "GameOver";
-
-    if (guess < target)
-      message = String.format("%d is too low.", guess);
-    else
-      message = String.format("%d is too high.", guess);
-
-    return null;
-  }
----  
-
-
-  Here's the big news: Tapestry will convert the number from the URL back into
-  an integer automatically, so that it can pass it in to the onActionFromLink() event handler method as a
-  method parameter.
-  We can then compare the guess from the user to the secret target number.
-
-  Notice how Tapestry adapts to the return value.  Here it may be null ... Tapestry interprets that
-  as "stay on the same page".  You may also return a string ("GameOver"); Tapestry interprets <that>
-  as the name of the page to render the response.
-  
-
-  We need to update the Guess page to actually display the message; this is done by adding the following:
-  
----
-  <p>${message}</p>
----
-
-  This is truly bare bones and, when message is null, will output an empty \<p\> element.  A real application
-  would dress this up a bit more (using CSS and the like to make it prettier).
-  
-  
-  We do need a basic GameOver page.
-  
-  <<src/main/webapp/GameOver.tml:>>
-
----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-  <head>
-    <title>Game Over!</title>
-  </head>
-  <body>
-
-    <h1>Game Over</h1>
-
-    <p> You guessed the secret number!  </p>
-
-
-  </body>
-</html>
----
-
-  <<src/main/java/org/apache/tapestry5/tutorial/pages/GameOver.java:>>
-
----
-package org.apache.tapestry5.tutorial.pages;
-
-public class GameOver
-{
-
-}
----
-
-  With this in place, we can make guesses, and get feedback from the application:
-  
-[hilo-feedback.png] Feedback from the game
-
-* Counting the number of guesses
-
- It would be nice to provide some feedback about how many guesses the
- user took to find the number.  That's easy enough to do.
- 
- First we update Guess to store the number of guesses:
- 
----
-  @Persist
-  @Property
-  private int count;
----
-
-  Next we modified initialize() to ensure that count is set to 0.  This is a safety
-  precaution in case we add logic to play the game again.
-  
----
-  Object initialize(int target)
-  {
-    this.target = target;
-    this.count = 0;
-
-    return this;
-  }
---- 
-
-  We have a couple of changes to make to the event handler method.  We want
-  to communicate to the GameOver page the guess count; so we'll inject the
-  GameOver page so we can initialize it.
-  
----
-  Object onActionFromLink(int guess)
-  {
-    count++;
-
-    if (guess == target) return gameOver.initialize(count);
-
-    if (guess < target)
-      message = String.format("%d is too low.", guess);
-    else
-      message = String.format("%d is too high.", guess);
-
-    return null;
-  }
----
-
-  So, we update the count before comparing and, instead of returning the
-  name of the GameOver page, we return the configured instance.
-  
-  Lastly, we need to make some changes to the GameOver class.
-  
-  <<src/main/java/org/apache/tapestry5/tutorial/GameOver.java:>>
-  
----
-package org.apache.tapestry5.tutorial.pages;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-
-public class GameOver
-{
-  @Persist
-  @Property
-  private int count;
-
-  Object initialize(int count)
-  {
-    this.count = count;
-
-    return this;
-  }
-}
----
-  
-  <<src/main/webapp/GameOver.tml:>>
-  
----
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_1_0.xsd">
-  <head>
-    <title>Game Over!</title>
-  </head>
-  <body>
-
-    <h1>Game Over</h1>
-
-    <p> You guessed the secret number in ${count} guesses!  </p>
-
-
-  </body>
-</html>
----
-
-* Parting thoughts
-
-  What we've gone after here is the Tapestry way: pages as classes that store
-  internal state and communicate with each other. We've also seen the Tapestry
-  development pattern: lots of simple small steps that leverage Tapestry's ability to
-  reload templates and classes on the fly.
-  
-  We've also seen how Tapestry stores data for us, sometimes in the session
-  (via the @Persist annotation) and sometimes in the URL.
-  
-  Our code is wonderfully free of anything related to HTTP or the Java Servlet API.
-  We're coding using real objects, with their own instance variables and internal state.
-  
-  Our application is still pretty simple; here's a few challenges:
-  
-  * Add a restart link to the GameOver page to allow a new game to start. Can you refactor the application
-  so that the code for the random number selection occurs in only one place?
-  
-  * As we guess, we're identifying ranges of valid and invalid numbers.  Can you only show valid
-   guesses to the user?
-   
-  * What would it take to change the the game to choose a number between 1 and 20? Between 1 and 100?
-  
-  * What about setting an upper-limit on the number of guesses allowed?
-  
-  [] 
-
-===
-  
-  {{{forms.html}Continue on to Chapter 4: Tapestry and Forms}}
- 
-
-  
-  
-    
-  
-  
-  
-  
\ No newline at end of file
diff --git a/maint-5-2/tapestry-tutorial1/src/site/apt/index.apt b/maint-5-2/tapestry-tutorial1/src/site/apt/index.apt
deleted file mode 100644
index f5eebe4..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/apt/index.apt
+++ /dev/null
@@ -1,65 +0,0 @@
- ---
- Tutorial: Introduction
- ---
-
-Tapestry Tutorial: Introduction
-
-* What is Tapestry?
-
-  Welcome to Tapestry! 
-
-  This is a tutorial for people who will be creating Tapestry 5 applications.  It doesn't matter whether you have experience with Tapestry 4 (or Tapestry 3, for that matter) or whether you are completely new to Tapestry.  
-  In fact, in some ways, the less you know about web development in general, and Tapestry in particular, the better off you may be ... that much less to unlearn!
-
-  You do need to have a reasonable understanding of HTML, a smattering of XML, and a good understanding of basic Java language features, and a few newer things such as Java Annotations.
-  
-  If you're used to developing web applications using servlets and JSPs, or with Struts, you are simply used to a lot of pain. So much pain, you may not even understand the dire situation you are in! 
-  These are environments with no safety net; Struts and the Servlet API has no idea how your application is structured, or how the different pieces fit together.  
-  Any URL can be an action and any action can forward to any view (usually a JSP) to provide an HTML response to the web browser.  
-  The pain is the unending series of small, yet important, decisions you have to make as a developer (and communicate to the rest of your team).  
-  What are the naming conventions for actions, for pages, for attributes stored in the HttpSession or HttpServletRequest? 
-
-  The traditional approaches thrust something most unwanted in your face: multithreaded coding. Remember back to Object Oriented Programming 101 where an object was defined as a bundle of data and operations on that data?
-  You have to unlearn that lesson as soon as you build a web application, because web applications are multi-threaded. 
-  An application server could be handling dozens or hundreds of requests from individual users, each in their own thread, and each sharing the exact same objects.  
-  Suddenly, you can't store data inside an object (a servlet or a Struts Action) because whatever data you store for one user will be instantly overwritten by some other user.
-
-  Worse, your objects each have one operation: doGet() or doPost().
-
-  Meanwhile, most of your day-to-day work involves deciding how to package up some data already inside a particular Java object and squeeze that data into a URL's query parameters,
-  so that you can write more code to convert it back if the user clicks that particular link.  And don't forget editing a bunch of XML files to keep the servlet container, or the Struts framework, aware of these decisions.  
-
-  Just for laughs, remember that you have to rebuild, redeploy and restart your application after virtually any change.  Is any of this familiar?  Then perhaps you'd appreciate something a little <less> familiar: Tapestry.
-
-  Tapestry uses a very different model: a structured, organized world of pages, and components within pages. Everything has a very specific name (that you provide). 
-  Once you know the name of a page, you know the location of the Java class for that page, the location of the template for that page, and the total structure of the page. 
-  Tapestry knows all this as well, and can make things <<just work>>.
-
-  As well see in the following chapters, Tapestry lets you code in terms of your objects. You'll barely see any Tapestry classes, outside of a few Java annotations. 
-  If you have information to store, store it as fields of your classes, not inside the HttpServletRequest or HttpSession. 
-  If you need some code to execute, its just a simple annotation or method naming convention to get Tapestry to invoke that method, at the right time, 
-  with the right data. The methods don't even have to be public!
-
-  Tapestry also shields you from the multi-threaded aspects of web application development. 
-  Tapestry manages the life-cycles of your page and components objects, reserving particular objects to particular threads so 
-  that you never have to think twice about threading issues.
-
-  Tapestry began in January 2000, and now represents over seven years of experience: not just my experience, or that of the other 
-  Tapestry committers, but the experience of the entire Tapestry community. Tapestry brings to the table all that experience about the best ways to 
-  build scalable, maintainable, robust, internationalized (and more recently) Ajax-enabled applications. Tapestry 5 represents a completely new 
-  code base designed to simplify  the Tapestry coding model while at the same time, extending the power of Tapestry and improving performance.
-
-* About Releases and Documentation
-
-  If you are reading this documentation online, be aware that the online documentation generally represents the very latest version of the code, termed "the snapshot". The documentation is <written> as if the 
-  next release is available, but may reference version numbers, or even features, that are only available by building the latest Tapestry source.
-
-*  About the Author
-
-  Howard Lewis Ship is the creator of Tapestry, and the Chair of the  Tapestry Project Management Committee at Apache. 
-  Howard is the Director of Open Source Technology at {{{http://formos.com}Formos Software Development}}.
-  Howard lives in Portland, Oregon with his wife Suzanne, a novelist.
-
-====
-  
-  {{{env.html}Continue on to Chapter 1: Setting Up Your Environment}}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v1.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v1.png
deleted file mode 100644
index 9bd23fa..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v2.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v2.png
deleted file mode 100644
index debeadf..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v2.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v3.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v3.png
deleted file mode 100644
index 0a12a6c..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v3.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v5.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v5.png
deleted file mode 100644
index d681906..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v5.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v6.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v6.png
deleted file mode 100644
index c751268..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v6.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v7.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v7.png
deleted file mode 100644
index 349c359..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v7.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v8.png b/maint-5-2/tapestry-tutorial1/src/site/resources/address-v8.png
deleted file mode 100644
index 324429e..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/address-v8.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/app-live-reload.png b/maint-5-2/tapestry-tutorial1/src/site/resources/app-live-reload.png
deleted file mode 100644
index 9a2c2c5..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/app-live-reload.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-import-folder.png b/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-import-folder.png
deleted file mode 100644
index 73da010..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-import-folder.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-import.png b/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-import.png
deleted file mode 100644
index 581fbf9..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-import.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-launch.png b/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-launch.png
deleted file mode 100644
index b1f903c..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-launch.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-run.png b/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-run.png
deleted file mode 100644
index de9b22b..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/eclipse-run.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-exception.png b/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-exception.png
deleted file mode 100644
index 4bf1e46..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-exception.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-feedback.png b/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-feedback.png
deleted file mode 100644
index c4e820d..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-feedback.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-flow.png b/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-flow.png
deleted file mode 100644
index ca98005..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-flow.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-guess-v1.png b/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-guess-v1.png
deleted file mode 100644
index 0ba2df8..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-guess-v1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-number.png b/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-number.png
deleted file mode 100644
index 71fcc9a..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-number.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-start.png b/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-start.png
deleted file mode 100644
index 39adcfc..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/hilo-start.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/index-grid-v1.png b/maint-5-2/tapestry-tutorial1/src/site/resources/index-grid-v1.png
deleted file mode 100644
index fb35f7d..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/index-grid-v1.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/resources/startpage.png b/maint-5-2/tapestry-tutorial1/src/site/resources/startpage.png
deleted file mode 100644
index 5424924..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/resources/startpage.png
+++ /dev/null
Binary files differ
diff --git a/maint-5-2/tapestry-tutorial1/src/site/site.xml b/maint-5-2/tapestry-tutorial1/src/site/site.xml
deleted file mode 100644
index 44f5230..0000000
--- a/maint-5-2/tapestry-tutorial1/src/site/site.xml
+++ /dev/null
@@ -1,59 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry 5 Tutorial #1">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-        <menu name="Tutorial">
-            <item name="Introduction" href="index.html"/>
-            <item name="Environment" href="env.html"/>
-            <item name="Your First Application" href="first.html"/>
-            <item name="Hi/Lo Game" href="hilo.html"/>
-            <item name="Forms" href="forms.html"/>
-            <item name="Forms, pt 2" href="forms2.html"/>
-        </menu>
-
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-tutorial1/src/t5-chap-3-figures.graffle b/maint-5-2/tapestry-tutorial1/src/t5-chap-3-figures.graffle
deleted file mode 100644
index 7011c66..0000000
--- a/maint-5-2/tapestry-tutorial1/src/t5-chap-3-figures.graffle
+++ /dev/null
@@ -1,931 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActiveLayerIndex</key>
-	<integer>0</integer>
-	<key>AutoAdjust</key>
-	<true/>
-	<key>CanvasColor</key>
-	<dict>
-		<key>w</key>
-		<string>1</string>
-	</dict>
-	<key>CanvasOrigin</key>
-	<string>{0, 0}</string>
-	<key>CanvasScale</key>
-	<real>1</real>
-	<key>ColumnAlign</key>
-	<integer>1</integer>
-	<key>ColumnSpacing</key>
-	<real>36</real>
-	<key>CreationDate</key>
-	<string>2007-02-24 11:43:21 -0800</string>
-	<key>Creator</key>
-	<string>Howard Lewis Ship</string>
-	<key>DisplayScale</key>
-	<string>1 in = 1 in</string>
-	<key>GraphDocumentVersion</key>
-	<integer>5</integer>
-	<key>GraphicsList</key>
-	<array>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>52</integer>
-			</dict>
-			<key>ID</key>
-			<integer>53</integer>
-			<key>Points</key>
-			<array>
-				<string>{328.1, 611}</string>
-				<string>{383.7, 611}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>50</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{384.2, 593}, {63, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>52</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 GameOver}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>50</integer>
-			</dict>
-			<key>ID</key>
-			<integer>22</integer>
-			<key>Points</key>
-			<array>
-				<string>{325.943, 622.545}</string>
-				<string>{347.8, 631}</string>
-				<string>{342, 655}</string>
-				<string>{315.8, 662}</string>
-				<string>{303.233, 629.466}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>LineType</key>
-					<integer>1</integer>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>50</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>50</integer>
-			</dict>
-			<key>ID</key>
-			<integer>51</integer>
-			<key>Points</key>
-			<array>
-				<string>{208.5, 611}</string>
-				<string>{264.1, 611}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>49</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{264.6, 593}, {63, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>50</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Guess}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{154, 593}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>49</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Start}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>32</integer>
-			</dict>
-			<key>ID</key>
-			<integer>35</integer>
-			<key>Points</key>
-			<array>
-				<string>{316.8, 395.4}</string>
-				<string>{411.1, 395.4}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>0</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>33</integer>
-			</dict>
-			<key>ID</key>
-			<integer>23</integer>
-			<key>Points</key>
-			<array>
-				<string>{231, 395.4}</string>
-				<string>{315.8, 395.4}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>0</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>34</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>ID</key>
-			<integer>34</integer>
-			<key>Points</key>
-			<array>
-				<string>{231, 395.4}</string>
-				<string>{231, 431.4}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>ID</key>
-			<integer>33</integer>
-			<key>Points</key>
-			<array>
-				<string>{315.8, 395.4}</string>
-				<string>{315.8, 431.4}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>ID</key>
-			<integer>32</integer>
-			<key>Points</key>
-			<array>
-				<string>{411.1, 395.4}</string>
-				<string>{411.1, 431.4}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>ID</key>
-			<integer>31</integer>
-			<key>Points</key>
-			<array>
-				<string>{315.8, 363.8}</string>
-				<string>{315.8, 399.8}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>0</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{369.6, 431.4}, {84, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>30</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 ActionLink}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{284.8, 431.4}, {63, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>29</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Loop}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{200, 431.4}, {63, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>28</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 If}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{284.8, 327.8}, {63, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>27</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Guess}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{35, 159}, {99, 28}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>Flow</key>
-			<string>Resize</string>
-			<key>FontInfo</key>
-			<dict>
-				<key>Color</key>
-				<dict>
-					<key>w</key>
-					<string>0</string>
-				</dict>
-				<key>Font</key>
-				<string>Monaco</string>
-				<key>Size</key>
-				<real>9</real>
-			</dict>
-			<key>ID</key>
-			<integer>26</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.0941176</string>
-						<key>g</key>
-						<string>0.686275</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Embedded\
-Component}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{152, 116}, {79.4531, 14}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>FitText</key>
-			<string>Vertical</string>
-			<key>Flow</key>
-			<string>Resize</string>
-			<key>ID</key>
-			<integer>25</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0.0941176</string>
-						<key>g</key>
-						<string>0.686275</string>
-						<key>r</key>
-						<string>1</string>
-					</dict>
-				</dict>
-				<key>shadow</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-				<key>stroke</key>
-				<dict>
-					<key>Draws</key>
-					<string>NO</string>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf0 Container}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Class</key>
-			<string>LineGraphic</string>
-			<key>Head</key>
-			<dict>
-				<key>ID</key>
-				<integer>5</integer>
-			</dict>
-			<key>ID</key>
-			<integer>24</integer>
-			<key>Points</key>
-			<array>
-				<string>{146, 109.5}</string>
-				<string>{146, 192.5}</string>
-			</array>
-			<key>Style</key>
-			<dict>
-				<key>stroke</key>
-				<dict>
-					<key>HeadArrow</key>
-					<string>FilledArrow</string>
-					<key>TailArrow</key>
-					<string>0</string>
-					<key>Width</key>
-					<real>2</real>
-				</dict>
-			</dict>
-			<key>Tail</key>
-			<dict>
-				<key>ID</key>
-				<integer>4</integer>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{104, 193}, {84, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>5</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 ActionLink}</string>
-			</dict>
-		</dict>
-		<dict>
-			<key>Bounds</key>
-			<string>{{119, 73}, {54, 36}}</string>
-			<key>Class</key>
-			<string>ShapedGraphic</string>
-			<key>ID</key>
-			<integer>4</integer>
-			<key>Shape</key>
-			<string>RoundRect</string>
-			<key>Style</key>
-			<dict>
-				<key>fill</key>
-				<dict>
-					<key>Color</key>
-					<dict>
-						<key>b</key>
-						<string>0</string>
-						<key>g</key>
-						<string>0.501961</string>
-						<key>r</key>
-						<string>0</string>
-					</dict>
-				</dict>
-			</dict>
-			<key>Text</key>
-			<dict>
-				<key>Text</key>
-				<string>{\rtf1\mac\ansicpg10000\cocoartf824\cocoasubrtf420
-{\fonttbl\f0\fswiss\fcharset77 Helvetica;}
-{\colortbl;\red255\green255\blue255;}
-\pard\tx560\tx1120\tx1680\tx2240\tx2800\tx3360\tx3920\tx4480\tx5040\tx5600\tx6160\tx6720\qc\pardirnatural
-
-\f0\fs24 \cf1 Start}</string>
-			</dict>
-		</dict>
-	</array>
-	<key>GridInfo</key>
-	<dict/>
-	<key>GuidesLocked</key>
-	<string>NO</string>
-	<key>GuidesVisible</key>
-	<string>YES</string>
-	<key>HPages</key>
-	<integer>1</integer>
-	<key>ImageCounter</key>
-	<integer>1</integer>
-	<key>IsPalette</key>
-	<string>NO</string>
-	<key>KeepToScale</key>
-	<false/>
-	<key>Layers</key>
-	<array>
-		<dict>
-			<key>Lock</key>
-			<string>NO</string>
-			<key>Name</key>
-			<string>Layer 1</string>
-			<key>Print</key>
-			<string>YES</string>
-			<key>View</key>
-			<string>YES</string>
-		</dict>
-	</array>
-	<key>LayoutInfo</key>
-	<dict/>
-	<key>LinksVisible</key>
-	<string>NO</string>
-	<key>MagnetsVisible</key>
-	<string>NO</string>
-	<key>MasterSheet</key>
-	<string>Master 1</string>
-	<key>MasterSheets</key>
-	<array>
-		<dict>
-			<key>ActiveLayerIndex</key>
-			<integer>0</integer>
-			<key>AutoAdjust</key>
-			<true/>
-			<key>CanvasColor</key>
-			<dict>
-				<key>w</key>
-				<string>1</string>
-			</dict>
-			<key>CanvasOrigin</key>
-			<string>{0, 0}</string>
-			<key>CanvasScale</key>
-			<real>1</real>
-			<key>ColumnAlign</key>
-			<integer>1</integer>
-			<key>ColumnSpacing</key>
-			<real>36</real>
-			<key>DisplayScale</key>
-			<string>1 in = 1 in</string>
-			<key>GraphicsList</key>
-			<array/>
-			<key>GridInfo</key>
-			<dict/>
-			<key>HPages</key>
-			<integer>1</integer>
-			<key>IsPalette</key>
-			<string>NO</string>
-			<key>KeepToScale</key>
-			<false/>
-			<key>Layers</key>
-			<array>
-				<dict>
-					<key>Lock</key>
-					<string>NO</string>
-					<key>Name</key>
-					<string>Layer 1</string>
-					<key>Print</key>
-					<string>YES</string>
-					<key>View</key>
-					<string>YES</string>
-				</dict>
-			</array>
-			<key>LayoutInfo</key>
-			<dict/>
-			<key>Orientation</key>
-			<integer>2</integer>
-			<key>OutlineStyle</key>
-			<string>Basic</string>
-			<key>RowAlign</key>
-			<integer>1</integer>
-			<key>RowSpacing</key>
-			<real>36</real>
-			<key>SheetTitle</key>
-			<string>Master 1</string>
-			<key>UniqueID</key>
-			<integer>1</integer>
-			<key>VPages</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>ModificationDate</key>
-	<string>2007-06-10 09:45:31 -0700</string>
-	<key>Modifier</key>
-	<string>Howard Lewis Ship</string>
-	<key>NotesVisible</key>
-	<string>NO</string>
-	<key>Orientation</key>
-	<integer>2</integer>
-	<key>OriginVisible</key>
-	<string>NO</string>
-	<key>OutlineStyle</key>
-	<string>Basic</string>
-	<key>PageBreaks</key>
-	<string>YES</string>
-	<key>PrintInfo</key>
-	<dict>
-		<key>NSBottomMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSLeftMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSPaperSize</key>
-		<array>
-			<string>size</string>
-			<string>{612, 792}</string>
-		</array>
-		<key>NSRightMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-		<key>NSTopMargin</key>
-		<array>
-			<string>float</string>
-			<string>0</string>
-		</array>
-	</dict>
-	<key>ReadOnly</key>
-	<string>NO</string>
-	<key>RowAlign</key>
-	<integer>1</integer>
-	<key>RowSpacing</key>
-	<real>36</real>
-	<key>SheetTitle</key>
-	<string>Canvas 1</string>
-	<key>SmartAlignmentGuidesActive</key>
-	<string>YES</string>
-	<key>SmartDistanceGuidesActive</key>
-	<string>YES</string>
-	<key>UniqueID</key>
-	<integer>1</integer>
-	<key>UseEntirePage</key>
-	<true/>
-	<key>VPages</key>
-	<integer>1</integer>
-	<key>WindowInfo</key>
-	<dict>
-		<key>CurrentSheet</key>
-		<string>0</string>
-		<key>DrawerOpen</key>
-		<false/>
-		<key>DrawerTab</key>
-		<string>Outline</string>
-		<key>DrawerWidth</key>
-		<real>209</real>
-		<key>FitInWindow</key>
-		<false/>
-		<key>Frame</key>
-		<string>{{517, 481}, {594, 870}}</string>
-		<key>ShowRuler</key>
-		<false/>
-		<key>ShowStatusBar</key>
-		<true/>
-		<key>VisibleRegion</key>
-		<string>{{-1, 0}, {579, 756}}</string>
-		<key>Zoom</key>
-		<string>1</string>
-	</dict>
-</dict>
-</plist>
diff --git a/maint-5-2/tapestry-tutorial1/src/test/conf/testng.xml b/maint-5-2/tapestry-tutorial1/src/test/conf/testng.xml
deleted file mode 100644
index 20aba12..0000000
--- a/maint-5-2/tapestry-tutorial1/src/test/conf/testng.xml
+++ /dev/null
@@ -1,24 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapestry Tutorial #1" annotations="1.5" verbose="2">
-    <test name="Services">
-        <packages>
-            <package name="org.apache.tapestry5.tutorial.services"/>
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-tutorial1/src/test/java/PLACEHOLDER b/maint-5-2/tapestry-tutorial1/src/test/java/PLACEHOLDER
deleted file mode 100644
index 62c163c..0000000
--- a/maint-5-2/tapestry-tutorial1/src/test/java/PLACEHOLDER
+++ /dev/null
@@ -1 +0,0 @@
-This placeholder exists to ensure the directory is created. It may be deleted when real files are placed under src/test/java.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-tutorial1/src/test/java/org/apache/tapestry5/tutorial/services/AppSuite.java b/maint-5-2/tapestry-tutorial1/src/test/java/org/apache/tapestry5/tutorial/services/AppSuite.java
deleted file mode 100644
index b8dd41b..0000000
--- a/maint-5-2/tapestry-tutorial1/src/test/java/org/apache/tapestry5/tutorial/services/AppSuite.java
+++ /dev/null
@@ -1,27 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.tutorial.services;
-
-import org.apache.tapestry5.ioc.test.TestBase;
-import org.testng.annotations.Test;
-
-public class AppSuite extends TestBase
-{
-    @Test
-    public void alway_pass()
-    {
-        assertEquals(true, true);
-    }
-}
diff --git a/maint-5-2/tapestry-tutorial1/src/test/resources/PLACEHOLDER b/maint-5-2/tapestry-tutorial1/src/test/resources/PLACEHOLDER
deleted file mode 100644
index 05ace36..0000000
--- a/maint-5-2/tapestry-tutorial1/src/test/resources/PLACEHOLDER
+++ /dev/null
@@ -1 +0,0 @@
-This placeholder exists to ensure the directory is created. It may be deleted when real files are placed under src/test/resources.
\ No newline at end of file
diff --git a/maint-5-2/tapestry-upload/LICENSE.txt b/maint-5-2/tapestry-upload/LICENSE.txt
deleted file mode 100644
index d645695..0000000
--- a/maint-5-2/tapestry-upload/LICENSE.txt
+++ /dev/null
@@ -1,202 +0,0 @@
-
-                                 Apache License
-                           Version 2.0, January 2004
-                        http://www.apache.org/licenses/
-
-   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
-
-   1. Definitions.
-
-      "License" shall mean the terms and conditions for use, reproduction,
-      and distribution as defined by Sections 1 through 9 of this document.
-
-      "Licensor" shall mean the copyright owner or entity authorized by
-      the copyright owner that is granting the License.
-
-      "Legal Entity" shall mean the union of the acting entity and all
-      other entities that control, are controlled by, or are under common
-      control with that entity. For the purposes of this definition,
-      "control" means (i) the power, direct or indirect, to cause the
-      direction or management of such entity, whether by contract or
-      otherwise, or (ii) ownership of fifty percent (50%) or more of the
-      outstanding shares, or (iii) beneficial ownership of such entity.
-
-      "You" (or "Your") shall mean an individual or Legal Entity
-      exercising permissions granted by this License.
-
-      "Source" form shall mean the preferred form for making modifications,
-      including but not limited to software source code, documentation
-      source, and configuration files.
-
-      "Object" form shall mean any form resulting from mechanical
-      transformation or translation of a Source form, including but
-      not limited to compiled object code, generated documentation,
-      and conversions to other media types.
-
-      "Work" shall mean the work of authorship, whether in Source or
-      Object form, made available under the License, as indicated by a
-      copyright notice that is included in or attached to the work
-      (an example is provided in the Appendix below).
-
-      "Derivative Works" shall mean any work, whether in Source or Object
-      form, that is based on (or derived from) the Work and for which the
-      editorial revisions, annotations, elaborations, or other modifications
-      represent, as a whole, an original work of authorship. For the purposes
-      of this License, Derivative Works shall not include works that remain
-      separable from, or merely link (or bind by name) to the interfaces of,
-      the Work and Derivative Works thereof.
-
-      "Contribution" shall mean any work of authorship, including
-      the original version of the Work and any modifications or additions
-      to that Work or Derivative Works thereof, that is intentionally
-      submitted to Licensor for inclusion in the Work by the copyright owner
-      or by an individual or Legal Entity authorized to submit on behalf of
-      the copyright owner. For the purposes of this definition, "submitted"
-      means any form of electronic, verbal, or written communication sent
-      to the Licensor or its representatives, including but not limited to
-      communication on electronic mailing lists, source code control systems,
-      and issue tracking systems that are managed by, or on behalf of, the
-      Licensor for the purpose of discussing and improving the Work, but
-      excluding communication that is conspicuously marked or otherwise
-      designated in writing by the copyright owner as "Not a Contribution."
-
-      "Contributor" shall mean Licensor and any individual or Legal Entity
-      on behalf of whom a Contribution has been received by Licensor and
-      subsequently incorporated within the Work.
-
-   2. Grant of Copyright License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      copyright license to reproduce, prepare Derivative Works of,
-      publicly display, publicly perform, sublicense, and distribute the
-      Work and such Derivative Works in Source or Object form.
-
-   3. Grant of Patent License. Subject to the terms and conditions of
-      this License, each Contributor hereby grants to You a perpetual,
-      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
-      (except as stated in this section) patent license to make, have made,
-      use, offer to sell, sell, import, and otherwise transfer the Work,
-      where such license applies only to those patent claims licensable
-      by such Contributor that are necessarily infringed by their
-      Contribution(s) alone or by combination of their Contribution(s)
-      with the Work to which such Contribution(s) was submitted. If You
-      institute patent litigation against any entity (including a
-      cross-claim or counterclaim in a lawsuit) alleging that the Work
-      or a Contribution incorporated within the Work constitutes direct
-      or contributory patent infringement, then any patent licenses
-      granted to You under this License for that Work shall terminate
-      as of the date such litigation is filed.
-
-   4. Redistribution. You may reproduce and distribute copies of the
-      Work or Derivative Works thereof in any medium, with or without
-      modifications, and in Source or Object form, provided that You
-      meet the following conditions:
-
-      (a) You must give any other recipients of the Work or
-          Derivative Works a copy of this License; and
-
-      (b) You must cause any modified files to carry prominent notices
-          stating that You changed the files; and
-
-      (c) You must retain, in the Source form of any Derivative Works
-          that You distribute, all copyright, patent, trademark, and
-          attribution notices from the Source form of the Work,
-          excluding those notices that do not pertain to any part of
-          the Derivative Works; and
-
-      (d) If the Work includes a "NOTICE" text file as part of its
-          distribution, then any Derivative Works that You distribute must
-          include a readable copy of the attribution notices contained
-          within such NOTICE file, excluding those notices that do not
-          pertain to any part of the Derivative Works, in at least one
-          of the following places: within a NOTICE text file distributed
-          as part of the Derivative Works; within the Source form or
-          documentation, if provided along with the Derivative Works; or,
-          within a display generated by the Derivative Works, if and
-          wherever such third-party notices normally appear. The contents
-          of the NOTICE file are for informational purposes only and
-          do not modify the License. You may add Your own attribution
-          notices within Derivative Works that You distribute, alongside
-          or as an addendum to the NOTICE text from the Work, provided
-          that such additional attribution notices cannot be construed
-          as modifying the License.
-
-      You may add Your own copyright statement to Your modifications and
-      may provide additional or different license terms and conditions
-      for use, reproduction, or distribution of Your modifications, or
-      for any such Derivative Works as a whole, provided Your use,
-      reproduction, and distribution of the Work otherwise complies with
-      the conditions stated in this License.
-
-   5. Submission of Contributions. Unless You explicitly state otherwise,
-      any Contribution intentionally submitted for inclusion in the Work
-      by You to the Licensor shall be under the terms and conditions of
-      this License, without any additional terms or conditions.
-      Notwithstanding the above, nothing herein shall supersede or modify
-      the terms of any separate license agreement you may have executed
-      with Licensor regarding such Contributions.
-
-   6. Trademarks. This License does not grant permission to use the trade
-      names, trademarks, service marks, or product names of the Licensor,
-      except as required for reasonable and customary use in describing the
-      origin of the Work and reproducing the content of the NOTICE file.
-
-   7. Disclaimer of Warranty. Unless required by applicable law or
-      agreed to in writing, Licensor provides the Work (and each
-      Contributor provides its Contributions) on an "AS IS" 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. You are solely responsible for determining the
-      appropriateness of using or redistributing the Work and assume any
-      risks associated with Your exercise of permissions under this License.
-
-   8. Limitation of Liability. In no event and under no legal theory,
-      whether in tort (including negligence), contract, or otherwise,
-      unless required by applicable law (such as deliberate and grossly
-      negligent acts) or agreed to in writing, shall any Contributor be
-      liable to You for damages, including any direct, indirect, special,
-      incidental, or consequential damages of any character arising as a
-      result of this License or out of the use or inability to use the
-      Work (including but not limited to damages for loss of goodwill,
-      work stoppage, computer failure or malfunction, or any and all
-      other commercial damages or losses), even if such Contributor
-      has been advised of the possibility of such damages.
-
-   9. Accepting Warranty or Additional Liability. While redistributing
-      the Work or Derivative Works thereof, You may choose to offer,
-      and charge a fee for, acceptance of support, warranty, indemnity,
-      or other liability obligations and/or rights consistent with this
-      License. However, in accepting such obligations, You may act only
-      on Your own behalf and on Your sole responsibility, not on behalf
-      of any other Contributor, and only if You agree to indemnify,
-      defend, and hold each Contributor harmless for any liability
-      incurred by, or claims asserted against, such Contributor by reason
-      of your accepting any such warranty or additional liability.
-
-   END OF TERMS AND CONDITIONS
-
-   APPENDIX: How to apply the Apache License to your work.
-
-      To apply the Apache License to your work, attach the following
-      boilerplate notice, with the fields enclosed by brackets "[]"
-      replaced with your own identifying information. (Don't include
-      the brackets!)  The text should be enclosed in the appropriate
-      comment syntax for the file format. We also recommend that a
-      file or class name and description of purpose be included on the
-      same "printed page" as the copyright notice for easier
-      identification within third-party archives.
-
-   Copyright [yyyy] [name of copyright owner]
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
diff --git a/maint-5-2/tapestry-upload/NOTICE.txt b/maint-5-2/tapestry-upload/NOTICE.txt
deleted file mode 100644
index 439eb83..0000000
--- a/maint-5-2/tapestry-upload/NOTICE.txt
+++ /dev/null
@@ -1,3 +0,0 @@
-This product includes software developed by
-The Apache Software Foundation (http://www.apache.org/).
-
diff --git a/maint-5-2/tapestry-upload/pom.xml b/maint-5-2/tapestry-upload/pom.xml
deleted file mode 100644
index 9833ec9..0000000
--- a/maint-5-2/tapestry-upload/pom.xml
+++ /dev/null
@@ -1,127 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-    <modelVersion>4.0.0</modelVersion>
-    <groupId>org.apache.tapestry</groupId>
-    <artifactId>tapestry-upload</artifactId>
-    <name>Tapestry File Upload Component Library</name>
-    <packaging>jar</packaging>
-    <description>
-        Provides a file upload component for Tapestry, based on Jakarta
-        commons-fileupload.
-    </description>
-    <parent>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>tapestry-project</artifactId>
-        <version>5.2.6</version>
-    </parent>
-    <inceptionYear>2007</inceptionYear>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-core</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.tapestry</groupId>
-            <artifactId>tapestry-test</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>commons-fileupload</groupId>
-            <artifactId>commons-fileupload</artifactId>
-            <version>1.2</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>1.3</version>
-        </dependency>
-
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>servlet-api</artifactId>
-        </dependency>
-
-
-        <dependency>
-            <groupId>org.easymock</groupId>
-            <artifactId>easymock</artifactId>
-        </dependency>
-
-    </dependencies>
-    <build>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-surefire-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-source-plugin</artifactId>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-assembly-plugin</artifactId>
-            </plugin>
-            <!-- This gets the plugin to clean up the cobertura.ser file left
-        in the root directory. -->
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-                <executions>
-                    <execution>
-                        <id>clean</id>
-                        <goals>
-                            <goal>clean</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-jar-plugin</artifactId>
-                <configuration>
-                    <archive>
-                        <manifestEntries>
-                            <Tapestry-Module-Classes>
-                                org.apache.tapestry5.upload.services.UploadModule
-                            </Tapestry-Module-Classes>
-                        </manifestEntries>
-                    </archive>
-                </configuration>
-            </plugin>
-        </plugins>
-    </build>
-    <reporting>
-        <plugins>
-            <plugin>
-                <groupId>org.apache.maven.plugins</groupId>
-                <artifactId>maven-project-info-reports-plugin</artifactId>
-                <reportSets>
-                    <reportSet>
-                        <reports>
-                            <report>summary</report>
-                            <report>dependencies</report>
-                        </reports>
-                    </reportSet>
-                </reportSets>
-            </plugin>
-            <plugin>
-                <groupId>org.codehaus.mojo</groupId>
-                <artifactId>cobertura-maven-plugin</artifactId>
-                <version>${cobertura-plugin-version}</version>
-            </plugin>
-            <plugin>
-                <groupId>org.apache.tapestry</groupId>
-                <artifactId>tapestry-component-report</artifactId>
-                <version>${project.version}</version>
-                <configuration>
-                    <rootPackage>org.apache.tapestry5.upload</rootPackage>
-                    <apidocs>../apidocs</apidocs>
-                    <tapestryJavadoc>../apidocs</tapestryJavadoc>
-                </configuration>
-            </plugin>
-        </plugins>
-    </reporting>
-</project>
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
deleted file mode 100755
index 8273d2c..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/components/Upload.java
+++ /dev/null
@@ -1,203 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.annotations.*;
-import org.apache.tapestry5.corelib.base.AbstractField;
-import org.apache.tapestry5.corelib.mixins.RenderDisabled;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.apache.tapestry5.services.ComponentDefaultProvider;
-import org.apache.tapestry5.services.FieldValidatorDefaultSource;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.upload.services.MultipartDecoder;
-import org.apache.tapestry5.upload.services.UploadedFile;
-
-import java.util.Locale;
-
-/**
- * A component to upload a file.
- */
-@SuppressWarnings({ "UnusedDeclaration" })
-@Events(EventConstants.VALIDATE)
-public class Upload extends AbstractField
-{
-    public static final String MULTIPART_ENCTYPE = "multipart/form-data";
-
-    /**
-     * The uploaded file. Note: This is only guaranteed to be valid while processing the form submission. Subsequently
-     * the content may have been cleaned up.
-     */
-    @Parameter(required = true, principal = true, autoconnect = true)
-    private UploadedFile value;
-
-    /**
-     * The object that will perform input validation. The "validate:" binding prefix is generally used to provide this
-     * object in a declarative fashion.
-     */
-    @Parameter(defaultPrefix = BindingConstants.VALIDATE)
-    @SuppressWarnings("unchecked")
-    private FieldValidator<Object> validate;
-
-    @Environmental
-    private ValidationTracker tracker;
-
-    @Inject
-    private MultipartDecoder decoder;
-
-    @Environmental
-    private FormSupport formSupport;
-
-    @Inject
-    private ComponentDefaultProvider defaultProvider;
-
-    @Inject
-    private ComponentResources resources;
-
-    @Inject
-    private Locale locale;
-
-    @Inject
-    private FieldValidationSupport fieldValidationSupport;
-
-    @SuppressWarnings("unused")
-    @Mixin
-    private RenderDisabled renderDisabled;
-
-    @Inject
-    @Path("upload.js")
-    private Asset uploadScript;
-
-    @Inject
-    private Request request;
-
-    @Environmental
-    private RenderSupport renderSupport;
-
-    /**
-     * Computes a default value for the "validate" parameter using {@link FieldValidatorDefaultSource}.
-     */
-    final Binding defaultValidate()
-    {
-        return defaultProvider.defaultValidatorBinding("value", resources);
-    }
-
-    public Upload()
-    {
-    }
-
-    // For testing
-    Upload(UploadedFile value, FieldValidator<Object> validate, MultipartDecoder decoder, ValidationTracker tracker,
-           ComponentResources resources, FieldValidationSupport fieldValidationSupport)
-    {
-        this.value = value;
-        if (validate != null) this.validate = validate;
-        this.decoder = decoder;
-        this.tracker = tracker;
-        this.resources = resources;
-        this.fieldValidationSupport = fieldValidationSupport;
-    }
-
-    @SuppressWarnings({ "unchecked" })
-    @Override
-    protected void processSubmission(String elementName)
-    {
-        UploadedFile uploaded = decoder.getFileUpload(elementName);
-
-        if (uploaded != null)
-        {
-            if (uploaded.getFileName() == null || uploaded.getFileName().length() == 0) uploaded = null;
-        }
-
-        try
-        {
-            fieldValidationSupport.validate(uploaded, resources, validate);
-        }
-        catch (ValidationException ex)
-        {
-            tracker.recordError(this, ex.getMessage());
-        }
-
-        value = uploaded;
-    }
-
-    /**
-     * Render the upload tags.
-     *
-     * @param writer Writer to output markup
-     */
-    protected void beginRender(MarkupWriter writer)
-    {
-        formSupport.setEncodingType(MULTIPART_ENCTYPE);
-
-        writer.element("input", "type", "file", "name", getControlName(), "id", getClientId());
-
-        validate.render(writer);
-
-        resources.renderInformalParameters(writer);
-
-        decorateInsideField();
-
-        // TAPESTRY-2453
-        if (request.isXHR())
-        {
-            renderSupport.addScriptLink(uploadScript);
-            renderSupport.addInit("injectedUpload", getClientId());
-        }
-    }
-
-    public void afterRender(MarkupWriter writer)
-    {
-        writer.end();
-    }
-
-    public UploadedFile getValue()
-    {
-        return value;
-    }
-
-    Upload injectDecorator(ValidationDecorator decorator)
-    {
-        setDecorator(decorator);
-
-        return this;
-    }
-
-    Upload injectRequest(Request request)
-    {
-        this.request = request;
-
-        return this;
-    }
-
-    Upload injectFormSupport(FormSupport formSupport)
-    {
-        // We have our copy ...
-        this.formSupport = formSupport;
-
-        // As does AbstractField
-        setFormSupport(formSupport);
-
-        return this;
-    }
-
-    Upload injectFieldValidator(FieldValidator validator)
-    {
-        this.validate = validator;
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/MultipartDecoderImpl.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/MultipartDecoderImpl.java
deleted file mode 100755
index 6a559d1..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/MultipartDecoderImpl.java
+++ /dev/null
@@ -1,170 +0,0 @@
-// Copyright 2007, 2008, 2010 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import java.io.UnsupportedEncodingException;
-import java.util.Collections;
-import java.util.List;
-import java.util.Map;
-
-import javax.servlet.http.HttpServletRequest;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.internal.util.CollectionFactory;
-import org.apache.tapestry5.ioc.services.ThreadCleanupListener;
-import org.apache.tapestry5.upload.services.MultipartDecoder;
-import org.apache.tapestry5.upload.services.UploadSymbols;
-import org.apache.tapestry5.upload.services.UploadedFile;
-
-/**
- * Implementation of multipart decoder for servlets. This implementation is perthread scope.
- */
-public class MultipartDecoderImpl implements MultipartDecoder, ThreadCleanupListener
-{
-    private final Map<String, UploadedFileItem> uploads = CollectionFactory.newMap();
-
-    private final FileItemFactory fileItemFactory;
-
-    private final long maxRequestSize;
-
-    private final long maxFileSize;
-
-    private final String requestEncoding;
-
-    private FileUploadException uploadException;
-
-    public MultipartDecoderImpl(
-
-    FileItemFactory fileItemFactory,
-
-    @Symbol(UploadSymbols.REQUESTSIZE_MAX)
-    long maxRequestSize,
-
-    @Symbol(UploadSymbols.FILESIZE_MAX)
-    long maxFileSize,
-
-    @Symbol(SymbolConstants.CHARSET)
-    String requestEncoding)
-    {
-        this.fileItemFactory = fileItemFactory;
-        this.maxRequestSize = maxRequestSize;
-        this.maxFileSize = maxFileSize;
-        this.requestEncoding = requestEncoding;
-    }
-
-    public UploadedFile getFileUpload(String parameterName)
-    {
-        return uploads.get(parameterName);
-    }
-
-    public HttpServletRequest decode(HttpServletRequest request)
-    {
-        try
-        {
-            request.setCharacterEncoding(requestEncoding);
-        }
-        catch (UnsupportedEncodingException ex)
-        {
-            throw new RuntimeException(ex);
-        }
-
-        List<FileItem> fileItems = parseRequest(request);
-
-        return processFileItems(request, fileItems);
-    }
-
-    public void threadDidCleanup()
-    {
-        for (UploadedFileItem uploaded : uploads.values())
-        {
-            uploaded.cleanup();
-        }
-    }
-
-    @SuppressWarnings("unchecked")
-    protected List<FileItem> parseRequest(HttpServletRequest request)
-    {
-        try
-        {
-            return createFileUpload().parseRequest(request);
-        }
-        catch (FileUploadException ex)
-        {
-            uploadException = ex;
-
-            return Collections.emptyList();
-        }
-    }
-
-    protected ServletFileUpload createFileUpload()
-    {
-        ServletFileUpload upload = new ServletFileUpload(fileItemFactory);
-
-        // set maximum file upload size
-        upload.setSizeMax(maxRequestSize);
-        upload.setFileSizeMax(maxFileSize);
-
-        return upload;
-    }
-
-    protected HttpServletRequest processFileItems(HttpServletRequest request, List<FileItem> fileItems)
-    {
-        if (uploadException == null && fileItems.isEmpty()) { return request; }
-
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-
-        for (FileItem item : fileItems)
-        {
-            if (item.isFormField())
-            {
-                String fieldValue;
-
-                try
-                {
-
-                    fieldValue = item.getString(requestEncoding);
-                }
-                catch (UnsupportedEncodingException ex)
-                {
-                    throw new RuntimeException(ex);
-                }
-
-                wrapper.addParameter(item.getFieldName(), fieldValue);
-            }
-            else
-            {
-                wrapper.addParameter(item.getFieldName(), item.getName());
-                addUploadedFile(item.getFieldName(), new UploadedFileItem(item));
-            }
-        }
-
-        return wrapper;
-    }
-
-    protected void addUploadedFile(String name, UploadedFileItem file)
-    {
-        uploads.put(name, file);
-    }
-
-    public FileUploadException getUploadException()
-    {
-        return uploadException;
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/MultipartServletRequestFilter.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/MultipartServletRequestFilter.java
deleted file mode 100755
index 3b3e402..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/MultipartServletRequestFilter.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.tapestry5.services.HttpServletRequestFilter;
-import org.apache.tapestry5.services.HttpServletRequestHandler;
-import org.apache.tapestry5.upload.services.MultipartDecoder;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import java.io.IOException;
-
-/**
- * Filter that decodes an incoming multipart request.
- */
-public class MultipartServletRequestFilter implements HttpServletRequestFilter
-{
-    private final MultipartDecoder decoder;
-
-    public MultipartServletRequestFilter(MultipartDecoder multipartDecoder)
-    {
-        decoder = multipartDecoder;
-    }
-
-    public boolean service(HttpServletRequest request, HttpServletResponse response, HttpServletRequestHandler handler)
-            throws IOException
-    {
-        HttpServletRequest newRequest = ServletFileUpload.isMultipartContent(request) ? decoder.decode(
-                request) : request;
-
-        return handler.service(newRequest, response);
-    }
-
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/ParameterValue.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/ParameterValue.java
deleted file mode 100755
index 6834e86..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/ParameterValue.java
+++ /dev/null
@@ -1,81 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newList;
-
-import java.util.List;
-
-/**
- * Holds single or multivalued values.
- */
-public class ParameterValue
-{
-    private final List<String> values = newList();
-
-    public static final ParameterValue NULL = new ParameterValue()
-    {
-        @Override
-        public String single()
-        {
-            return null;
-        }
-
-        @Override
-        public String[] multi()
-        {
-            return null;
-        }
-    };
-
-    public ParameterValue(String value)
-    {
-        values.add(value);
-    }
-
-    public ParameterValue(String... values)
-    {
-        for (String v : values)
-        {
-            add(v);
-        }
-    }
-
-    /**
-     * @return Single value of parameter (or first value if there are multiple values)
-     */
-    public String single()
-    {
-        return values.get(0);
-    }
-
-    /**
-     * @return All values of parameter
-     */
-    public String[] multi()
-    {
-        return values.toArray(new String[values.size()]);
-    }
-
-    public void add(String value)
-    {
-        values.add(value);
-    }
-
-    public boolean isMulti()
-    {
-        return values.size() > 1;
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/ParametersServletRequestWrapper.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/ParametersServletRequestWrapper.java
deleted file mode 100755
index 7ed5c6e..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/ParametersServletRequestWrapper.java
+++ /dev/null
@@ -1,104 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import static org.apache.tapestry5.ioc.internal.util.CollectionFactory.newMap;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
-import java.io.UnsupportedEncodingException;
-import java.util.Collections;
-import java.util.Enumeration;
-import java.util.Map;
-
-/**
- * Wrapper for HttpServletRequest that overrides the parameter methods of the wrapped request. i.e. parameters are
- * retrieved from the wrapper rather than the real request.
- */
-public class ParametersServletRequestWrapper extends HttpServletRequestWrapper
-{
-    private final Map<String, ParameterValue> parameters = newMap();
-
-    public ParametersServletRequestWrapper(HttpServletRequest httpServletRequest)
-    {
-        super(httpServletRequest);
-    }
-
-    @Override
-    public String getParameter(String name)
-    {
-        return getValueFor(name).single();
-    }
-
-    @Override
-    public Map<String, Object> getParameterMap()
-    {
-        Map<String, Object> paramMap = newMap();
-
-        for (Map.Entry<String, ParameterValue> e : parameters.entrySet())
-        {
-            ParameterValue value = e.getValue();
-
-            paramMap.put(e.getKey(), value.isMulti() ? value.multi() : value.single());
-        }
-
-        return paramMap;
-    }
-
-    @Override
-    public Enumeration getParameterNames()
-    {
-        return Collections.enumeration(parameters.keySet());
-    }
-
-    @Override
-    public String[] getParameterValues(String name)
-    {
-        return getValueFor(name).multi();
-    }
-
-    public void addParameter(String name, String value)
-    {
-        ParameterValue pv = parameters.get(name);
-        if (pv == null)
-        {
-            pv = new ParameterValue(value);
-            parameters.put(name, pv);
-        }
-        else
-        {
-            pv.add(value);
-        }
-    }
-
-    ParameterValue getValueFor(String name)
-    {
-        ParameterValue value = parameters.get(name);
-
-        return value == null ? ParameterValue.NULL : value;
-    }
-
-    /**
-     * Ignores any attempt to set the character encoding, as it already has been set before the request content was
-     * parsed.
-     *
-     * @see org.apache.tapestry5.SymbolConstants#CHARSET
-     */
-    @Override
-    public void setCharacterEncoding(String enc) throws UnsupportedEncodingException
-    {
-
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
deleted file mode 100644
index 33a6a28..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadExceptionFilter.java
+++ /dev/null
@@ -1,77 +0,0 @@
-//  Copyright 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.tapestry5.annotations.Events;
-import org.apache.tapestry5.internal.services.ComponentResultProcessorWrapper;
-import org.apache.tapestry5.ioc.annotations.Primary;
-import org.apache.tapestry5.runtime.Component;
-import org.apache.tapestry5.services.*;
-import org.apache.tapestry5.upload.services.MultipartDecoder;
-import org.apache.tapestry5.upload.services.UploadEvents;
-
-import java.io.IOException;
-
-/**
- * Determines if there was an {@link org.apache.commons.fileupload.FileUploadException} processing the request and, if
- * so, triggers an exception event on the page. If the page fails to respond to the event, then
- */
-@Events(UploadEvents.UPLOAD_EXCEPTION + " when a exception occur processing the upload")
-public class UploadExceptionFilter implements ComponentEventRequestFilter
-{
-    private final MultipartDecoder decoder;
-
-    private final ComponentEventResultProcessor resultProcessor;
-
-    private ComponentSource componentSource;
-
-    public UploadExceptionFilter(MultipartDecoder decoder,
-                                 @Traditional @Primary ComponentEventResultProcessor resultProcessor,
-                                 ComponentSource componentSource)
-    {
-        this.decoder = decoder;
-        this.resultProcessor = resultProcessor;
-        this.componentSource = componentSource;
-    }
-
-    public void handle(ComponentEventRequestParameters parameters, ComponentEventRequestHandler handler)
-            throws IOException
-    {
-        FileUploadException uploadException = decoder.getUploadException();
-
-        if (uploadException != null)
-        {
-            Component page = componentSource.getPage(parameters.getActivePageName());
-
-            ComponentResultProcessorWrapper callback = new ComponentResultProcessorWrapper(resultProcessor);
-
-            page.getComponentResources().triggerEvent(UploadEvents.UPLOAD_EXCEPTION, new Object[] { uploadException },
-                                                      callback);
-
-            // If an event handler exists and returns a value, then the callback will be aborted and a response
-            // (typically a redirect) will already have been sent to the client.
-
-            if (callback.isAborted()) return;
-
-            // If the page does not properly handle the exception, then we throw it now.
-
-            throw new RuntimeException(UploadMessages.unableToDecode(), uploadException);
-        }
-
-
-        handler.handle(parameters);
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadMessages.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadMessages.java
deleted file mode 100755
index dd5abc4..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadMessages.java
+++ /dev/null
@@ -1,61 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.tapestry5.ioc.Messages;
-import org.apache.tapestry5.ioc.internal.util.MessagesImpl;
-import org.apache.tapestry5.upload.services.UploadedFile;
-
-import java.io.File;
-
-class UploadMessages
-{
-    private static final Messages MESSAGES = MessagesImpl.forClass(UploadMessages.class);
-
-    static String unableToDecode()
-    {
-        return MESSAGES.format("unable-to-decode");
-    }
-
-    static String unsupportedEncoding(String encoding)
-    {
-        return MESSAGES.format("unsupported-encoding", encoding);
-    }
-
-    static String unableToOpenContentFile(UploadedFile item)
-    {
-        return MESSAGES.format("unable-to-open-content-file", item.getFilePath());
-    }
-
-    static String writeFailure(File file)
-    {
-        return MESSAGES.format("write-failure", file);
-    }
-
-    static String unableToCreateTempFile()
-    {
-        return MESSAGES.get("unable-to-create-temp-file");
-    }
-
-    static String encloseUploadInForm()
-    {
-        return MESSAGES.get("enclose-upload-in-form");
-    }
-
-    static String encodingTypeAlreadySet(String formId, String requiredEncType, String existingEncType)
-    {
-        return MESSAGES.format("enctype-already-set", formId, requiredEncType, existingEncType);
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadedFileItem.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadedFileItem.java
deleted file mode 100755
index d4d4e0c..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/internal/services/UploadedFileItem.java
+++ /dev/null
@@ -1,90 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.tapestry5.upload.services.UploadedFile;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-
-/**
- * Implentation of {@link org.apache.tapestry5.upload.services.UploadedFile} for FileItems.
- */
-public class UploadedFileItem implements UploadedFile
-{
-    private final FileItem item;
-
-    public UploadedFileItem(FileItem item)
-    {
-        this.item = item;
-    }
-
-    public String getContentType()
-    {
-        return item.getContentType();
-    }
-
-    public String getFileName()
-    {
-        return FilenameUtils.getName(getFilePath());
-    }
-
-    public String getFilePath()
-    {
-        return item.getName();
-    }
-
-    public long getSize()
-    {
-        return item.getSize();
-    }
-
-    public InputStream getStream()
-    {
-        try
-        {
-            return item.getInputStream();
-        }
-        catch (IOException e)
-        {
-            throw new RuntimeException(UploadMessages.unableToOpenContentFile(this), e);
-        }
-    }
-
-    public boolean isInMemory()
-    {
-        return item.isInMemory();
-    }
-
-    public void write(File file)
-    {
-        try
-        {
-            item.write(file);
-        }
-        catch (Exception e)
-        {
-            throw new RuntimeException(UploadMessages.writeFailure(file), e);
-        }
-    }
-
-    public void cleanup()
-    {
-        item.delete();
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/MultipartDecoder.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/MultipartDecoder.java
deleted file mode 100755
index b26bf42..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/MultipartDecoder.java
+++ /dev/null
@@ -1,48 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.services;
-
-import org.apache.commons.fileupload.FileUploadException;
-
-import javax.servlet.http.HttpServletRequest;
-
-/**
- * Responsible for detecting and processing file upload requests, using Jakarta Commons FileUpload. Implementations of
- * this service typically use the threaded service lifecycle model.
- */
-public interface MultipartDecoder
-{
-
-    /**
-     * @param parameterName Name of the query parameter associated with the uploaded file
-     * @return a file upload with the given name, or null if no such file upload was in the request.
-     */
-    UploadedFile getFileUpload(String parameterName);
-
-    /**
-     * Decodes the request, returning a new {@link javax.servlet.http.HttpServletRequest} implementation that will allow
-     * access to the form fields submitted in the request (but omits uploaded files).
-     *
-     * @param request The incoming servlet request
-     * @return decoded http request
-     */
-    HttpServletRequest decode(HttpServletRequest request);
-
-    /**
-     * Returns the exception the occured during the file upload, or null if the processing of the multipart upload
-     * stream was succesful.
-     */
-    FileUploadException getUploadException();
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadEvents.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadEvents.java
deleted file mode 100644
index 9e93498..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadEvents.java
+++ /dev/null
@@ -1,27 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.services;
-
-/**
- * Names of events that may be triggered on components due to file uploads.
- */
-public class UploadEvents
-{
-    /**
-     * Name of event fired on a page when an upload form associated with that page encounters a {@link
-     * org.apache.commons.fileupload.FileUploadException} while processing the multipart form submission.
-     */
-    public static final String UPLOAD_EXCEPTION = "uploadException";
-}                       
\ No newline at end of file
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java
deleted file mode 100755
index 31225a4..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadModule.java
+++ /dev/null
@@ -1,120 +0,0 @@
-// Copyright 2007, 2008, 2009 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.services;
-
-import java.io.File;
-import java.util.concurrent.atomic.AtomicBoolean;
-
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.io.FileCleaner;
-import org.apache.tapestry5.ioc.Configuration;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.OrderedConfiguration;
-import org.apache.tapestry5.ioc.ScopeConstants;
-import org.apache.tapestry5.ioc.annotations.Autobuild;
-import org.apache.tapestry5.ioc.annotations.Scope;
-import org.apache.tapestry5.ioc.annotations.Symbol;
-import org.apache.tapestry5.ioc.services.PerthreadManager;
-import org.apache.tapestry5.ioc.services.RegistryShutdownHub;
-import org.apache.tapestry5.ioc.services.RegistryShutdownListener;
-import org.apache.tapestry5.services.ComponentEventRequestFilter;
-import org.apache.tapestry5.services.HttpServletRequestFilter;
-import org.apache.tapestry5.services.LibraryMapping;
-import org.apache.tapestry5.upload.internal.services.MultipartDecoderImpl;
-import org.apache.tapestry5.upload.internal.services.MultipartServletRequestFilter;
-import org.apache.tapestry5.upload.internal.services.UploadExceptionFilter;
-
-public class UploadModule
-{
-    private static final String NO_LIMIT = "-1";
-
-    private static final AtomicBoolean needToAddShutdownListener = new AtomicBoolean(true);
-
-    public static void contributeComponentClassResolver(Configuration<LibraryMapping> configuration)
-    {
-        // Add the component to the "core" library.
-
-        configuration.add(new LibraryMapping("core", "org.apache.tapestry5.upload"));
-    }
-
-    @Scope(ScopeConstants.PERTHREAD)
-    public static MultipartDecoder buildMultipartDecoder(PerthreadManager perthreadManager,
-
-    RegistryShutdownHub shutdownHub,
-
-    @Autobuild
-    MultipartDecoderImpl multipartDecoder)
-    {
-        // This is proabably overkill since the FileCleaner should catch temporary files, but lets
-        // be safe.
-        perthreadManager.addThreadCleanupListener(multipartDecoder);
-
-        if (needToAddShutdownListener.getAndSet(false))
-        {
-            shutdownHub.addRegistryShutdownListener(new RegistryShutdownListener()
-            {
-                public void registryDidShutdown()
-                {
-                    FileCleaner.exitWhenFinished();
-                }
-            });
-        }
-
-        return multipartDecoder;
-    }
-
-    /**
-     * Contributes a filter, "MultipartFilter" after "IgnoredPaths".
-     */
-    public static void contributeHttpServletRequestHandler(
-            OrderedConfiguration<HttpServletRequestFilter> configuration, MultipartDecoder multipartDecoder)
-    {
-        configuration.add("MultipartFilter", new MultipartServletRequestFilter(multipartDecoder), "after:IgnoredPaths");
-    }
-
-    /**
-     * Adds UploadException to the pipeline, between Secure and Ajax (both provided by TapestryModule). UploadException
-     * is responsible for triggering the {@linkplain org.apache.tapestry5.upload.services.UploadEvents#UPLOAD_EXCEPTION
-     * upload exception event}.
-     */
-    public static void contributeComponentEventRequestHandler(
-            OrderedConfiguration<ComponentEventRequestFilter> configuration)
-    {
-        configuration.addInstance("UploadException", UploadExceptionFilter.class, "after:Secure", "before:Ajax");
-    }
-
-    /**
-     * The default FileItemFactory used by the MultipartDecoder is
-     * {@link org.apache.commons.fileupload.disk.DiskFileItemFactory}.
-     */
-    public static FileItemFactory buildDefaultFileItemFactory(@Symbol(UploadSymbols.REPOSITORY_THRESHOLD)
-    int repositoryThreshold,
-
-    @Symbol(UploadSymbols.REPOSITORY_LOCATION)
-    String repositoryLocation)
-    {
-        return new DiskFileItemFactory(repositoryThreshold, new File(repositoryLocation));
-    }
-
-    public static void contributeFactoryDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(UploadSymbols.REPOSITORY_THRESHOLD, Integer
-                .toString(DiskFileItemFactory.DEFAULT_SIZE_THRESHOLD));
-        configuration.add(UploadSymbols.REPOSITORY_LOCATION, System.getProperty("java.io.tmpdir"));
-        configuration.add(UploadSymbols.REQUESTSIZE_MAX, NO_LIMIT);
-        configuration.add(UploadSymbols.FILESIZE_MAX, NO_LIMIT);
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadSymbols.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadSymbols.java
deleted file mode 100755
index 0435122..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadSymbols.java
+++ /dev/null
@@ -1,45 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.services;
-
-/**
- * Configuration symbols.
- */
-public final class UploadSymbols
-{
-    /**
-     * Location where temporary files will be written. Defaults to java.io.tmpdir property.
-     */
-    public static final String REPOSITORY_LOCATION = "upload.repository-location";
-
-    /**
-     * Threshold (in bytes) that determines when an uploaded file will be written to the repository.
-     */
-    public static final String REPOSITORY_THRESHOLD = "upload.repository-threshold";
-
-    /**
-     * Maximum size (in bytes) of a single upload request Defaults to -1 (no limit).
-     */
-    public static final String REQUESTSIZE_MAX = "upload.requestsize-max";
-
-    /**
-     * Maximum size (in bytes) of a single file within an upload request Defaults to -1 (no limit).
-     */
-    public static final String FILESIZE_MAX = "upload.filesize-max";
-
-    private UploadSymbols()
-    {
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadedFile.java b/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadedFile.java
deleted file mode 100755
index 7d43155..0000000
--- a/maint-5-2/tapestry-upload/src/main/java/org/apache/tapestry5/upload/services/UploadedFile.java
+++ /dev/null
@@ -1,65 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.services;
-
-import org.apache.tapestry5.upload.components.Upload;
-
-import java.io.File;
-import java.io.InputStream;
-
-/**
- * Represents an uploaded file.
- *
- * @see Upload
- */
-public interface UploadedFile
-{
-    /**
-     * @return the MIME type specified when the file was uploaded.
-     */
-    String getContentType();
-
-    /**
-     * @return the name of the file that was uploaded.
-     */
-    String getFileName();
-
-    /**
-     * @return the complete path, as reported by the client browser.
-     */
-    String getFilePath();
-
-    /**
-     * @return the size, in bytes, of the uploaded content.
-     */
-    long getSize();
-
-    /**
-     * @return an input stream of the content of the file.
-     */
-    InputStream getStream();
-
-    /**
-     * @return true if the uploaded content is in memory.
-     */
-    boolean isInMemory();
-
-    /**
-     * Writes the content of the file to a known location.
-     *
-     * @param file Location to write file to
-     */
-    void write(File file);
-}
diff --git a/maint-5-2/tapestry-upload/src/main/resources/org/apache/tapestry5/upload/components/upload.js b/maint-5-2/tapestry-upload/src/main/resources/org/apache/tapestry5/upload/components/upload.js
deleted file mode 100644
index 274e35d..0000000
--- a/maint-5-2/tapestry-upload/src/main/resources/org/apache/tapestry5/upload/components/upload.js
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-/**
- * Ensures that the encoding type of the containing form is multipart/form-data when an Upload
- * component is dynamically added to the form via Ajax.
- */
-Tapestry.Initializer.injectedUpload = function(element)
-{
-	var form = $(element).form;
-	  
-    form.enctype = "multipart/form-data";
-    form.encoding = "multipart/form-data"; 
-}
\ No newline at end of file
diff --git a/maint-5-2/tapestry-upload/src/main/resources/org/apache/tapestry5/upload/internal/services/UploadStrings.properties b/maint-5-2/tapestry-upload/src/main/resources/org/apache/tapestry5/upload/internal/services/UploadStrings.properties
deleted file mode 100755
index 0fc31ee..0000000
--- a/maint-5-2/tapestry-upload/src/main/resources/org/apache/tapestry5/upload/internal/services/UploadStrings.properties
+++ /dev/null
@@ -1,21 +0,0 @@
-# Copyright 2007, 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-unable-to-decode=Unable to decode multipart encoded request.
-unsupported-encoding=Unsupported character encoding '%s' when decoding multipart encoded request
-write-failure=Unable to write uploaded file content to %s
-unable-to-open-content-file=Unable to open uploaded file '%s'
-unable-to-create-temp-file=Unable to create a temporary file to write upload to.
-enclose-upload-in-form=Upload component must be enclosed by a Form component.
-enctype-already-set=Unable to set encoding type on form '%s' to '%s'.  Already has encoding type of '%s'.
diff --git a/maint-5-2/tapestry-upload/src/site/apt/index.apt b/maint-5-2/tapestry-upload/src/site/apt/index.apt
deleted file mode 100755
index d7e8d16..0000000
--- a/maint-5-2/tapestry-upload/src/site/apt/index.apt
+++ /dev/null
@@ -1,113 +0,0 @@
- ----
- Tapestry Upload Component
- ----
- 
-Tapestry Upload Component
-
-  Provides a file upload component for Tapestry based on
-  {{{http://jakarta.apache.org/commons/fileupload/}Jakarata Commons FileUpload}}.
-  
-  This is packaged as an add-on to Tapestry because of the number of additional dependencies
-  it adds.  However, Maven takes care of that for you!
-  
-  
-Usage
-
-  The upload component supports default value binding (based on id) and validation.
-
-* Component Template
-  
-+---+
-    <t:form>
-        <t:errors/>
-        <input t:type="upload" t:id="file" validate="required"/>
-        <br/>
-        <input type="submit" value="Upload"/>
-    </t:form>
-+---+
-
-  Here, because the value parameter was not bound, the component used the file property of its container (because the
-  component's id is 'file').  If you want to upload as a different property, either bind the value parameter or
-  change the component's id.
-
-* Page class
-
-+---+
-    public class UploadExample
-    {
-        @Property
-        private UploadedFile file;
-
-        public void onSuccess()
-        {
-            File copied = new File("/my/file/location/" + file.getFileName());
-            
-            file.write(copied);
-        }
-    }
-+---+
-
-
-Upload Exceptions
-
-  In some cases, file uploads may fail.  This can be because of a simple communication exception, or more likely,
-  because the configured  maximum upload size was exceeded.
-
-  When a file upload exception occurs, Tapestry will trigger a "uploadException" event on the page to notify it of
-  the error. All other normal processing is skipped (no "activate" event, no form submission, etc.).
-
-  The event handler should return a non-null object, which will be handled as a navigational result.  Example:
-
-----
-
-   @Persist(PersistenceConstants.FLASH)
-    @Property
-    private String message;
-
-
-    Object onUploadException(FileUploadException ex)
-    {
-        message = "Upload exception: " + ex.getMessage();
-
-        return this;
-    }
-----
-
-  Note the importance of <<<return this;>>>.  A void event handler method, or one that returns null, will result
-  in the FileUploadException being reported to the user as an uncaught runtime exception.
-
-Configuration
-
-  Four values may be configured as {{{../tapestry-ioc/symbols.html}symbols}}:
-
-  [upload.repository-location]
-  The directory to which files that are too large to keep in memory will be written to.
-  The default is from the java.io.tmpdir system property.
-
-  [upload.repository-threshold]
-  Upload size, in bytes, at which point the uploaded file is written to disk rather than kept in memory.
-  The default is 10 kilobytes.
-
-  [upload.requestsize-max]
-  Maximim size, in bytes, for the overall request.  If exceeed, a FileUploadException will occur.
-  The default is no maximum.
-
-  [upload.filesize-max]
-  Maximum size, in bytes, for any individual uploaded file.  Again, a FileUploadException will occur
-  if exceeded.              The default is no maximum.
-
-  The class {{{../apidocs/org/apache/tapestry5/upload/services/UploadSymbols.html}UploadSymbols}}
-  defines constants for all four of these.
-
-Potential Issues
-
-   The Commons FileUpload library uses the CommonsIO file cleaner service to remove temporary files when
-   they are no longer needed.  This service creates a thread to carry out its work. If the commons-io library
-   is shared amongst multiple applications (e.g. added to server classpath) it is possible for an application
-   to terminate this thread prematurely and cause errors for the other applications.
-   (see the {{{http://jakarta.apache.org/commons/fileupload/using.html}Resource Cleanup}} section in  for more discussion)
-
-   Technically the file cleanup service is not needed by Tapestry Upload (which deletes temporary files at the end
-   of request processing).  However it is currently not possible to disable it (enhancement request has been filed
-    as {{{https://issues.apache.org/jira/browse/FILEUPLOAD-133}FILEUPLOAD-133}}).
-
diff --git a/maint-5-2/tapestry-upload/src/site/site.xml b/maint-5-2/tapestry-upload/src/site/site.xml
deleted file mode 100755
index fba18f2..0000000
--- a/maint-5-2/tapestry-upload/src/site/site.xml
+++ /dev/null
@@ -1,53 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!-- 
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<project name="Tapestry File Upload">
-    <bannerLeft>
-        <name>Tapestry 5</name>
-        <href>http://tapestry.apache.org/tapestry5/</href>
-        <src>images/tapestry_banner.gif</src>
-    </bannerLeft>
-    <bannerRight>
-        <name>Apache</name>
-        <href>http://www.apache.org</href>
-        <src>images/asf_logo_wide.gif</src>
-    </bannerRight>
-    <skin>
-        <groupId>org.apache.tapestry</groupId>
-        <artifactId>maven-skin</artifactId>
-        <version>1.1</version>
-    </skin>
-
-    <publishDate format="dd MMM yyyy"/>
-    <version/>
-
-    <body>
-
-        <menu ref="parent"/>
-
-        <menu name="Quick Links">
-            <item name="Download" href="http://tapestry.apache.org/download.html"/>
-        </menu>
-
-        <menu name="Documentation">
-            <item name="Reference" href="ref/index.html"/>
-        </menu>
-
-        <menu ref="reports"/>
-
-    </body>
-</project>
diff --git a/maint-5-2/tapestry-upload/src/test/conf/testng.xml b/maint-5-2/tapestry-upload/src/test/conf/testng.xml
deleted file mode 100755
index 6e63873..0000000
--- a/maint-5-2/tapestry-upload/src/test/conf/testng.xml
+++ /dev/null
@@ -1,28 +0,0 @@
-<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
-<!-- 
-   Copyright 2007, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<suite name="Tapesty Upload Component" parallel="false" annotations="1.5" verbose="2">
-    <test name="Tapesty Upload Component">
-        <parameter name="tapestry.integration-webapp" value="src/test/webapp"/>
-        <packages>
-            <package name="org.apache.tapestry5.upload.components"/>
-            <package name="org.apache.tapestry5.upload.internal.services"/>
-            <!-- One day might be able to run this too -->
-            <!--package name="org.apache.tapestry5.upload.integration"/-->
-        </packages>
-    </test>
-</suite>
diff --git a/maint-5-2/tapestry-upload/src/test/conf/webdefault.xml b/maint-5-2/tapestry-upload/src/test/conf/webdefault.xml
deleted file mode 100755
index b9cac09..0000000
--- a/maint-5-2/tapestry-upload/src/test/conf/webdefault.xml
+++ /dev/null
@@ -1,294 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
-   Copyright 2007 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<web-app
-        xmlns="http://java.sun.com/xml/ns/j2ee"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
-        version="2.4">
-
-    <description>
-        Default web.xml file.
-        This file is applied to a Web application before it's own WEB_INF/web.xml file
-    </description>
-
-
-    <!-- ==================================================================== -->
-    <!-- Context params to control Session Cookies                            -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <!-- UNCOMMENT TO ACTIVATE
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionDomain</param-name>
-      <param-value>127.0.0.1</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.SessionPath</param-name>
-      <param-value>/</param-value>
-    </context-param>
-
-    <context-param>
-      <param-name>org.mortbay.jetty.servlet.MaxAge</param-name>
-      <param-value>-1</param-value>
-    </context-param>
-    -->
-
-
-    <!-- ==================================================================== -->
-    <!-- The default servlet.                                                 -->
-    <!-- This servlet, normally mapped to /, provides the handling for static -->
-    <!-- content, OPTIONS and TRACE methods for the context.                  -->
-    <!-- The following initParameters are supported:                          -->
-    <!--                                                                      -->
-    <!--   acceptRanges     If true, range requests and responses are         -->
-    <!--                    supported                                         -->
-    <!--                                                                      -->
-    <!--   dirAllowed       If true, directory listings are returned if no    -->
-    <!--                    welcome file is found. Else 403 Forbidden.        -->
-    <!--                                                                      -->
-    <!--   putAllowed       If true, the PUT method is allowed                -->
-    <!--                                                                      -->
-    <!--   delAllowed       If true, the DELETE method is allowed             -->
-    <!--                                                                      -->
-    <!--   redirectWelcome  If true, redirect welcome file requests           -->
-    <!--                    else use request dispatcher forwards              -->
-    <!--                                                                      -->
-    <!--   minGzipLength    If set to a positive integer, then static content -->
-    <!--                    larger than this will be served as gzip content   -->
-    <!--                    encoded if a matching resource is found ending    -->
-    <!--                    with ".gz"                                        -->
-    <!--                                                                      -->
-    <!--   resoureBase      Can be set to replace the context resource base   -->
-    <!--                                                                      -->
-    <!--   relativeResourceBase                                               -->
-    <!--                    Set with a pathname relative to the base of the   -->
-    <!--                    servlet context root. Useful for only serving     -->
-    <!--                    static content from only specific subdirectories. -->
-    <!--                                                                      -->
-    <!-- The MOVE method is allowed if PUT and DELETE are allowed             -->
-    <!-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -  -->
-    <servlet>
-        <servlet-name>default</servlet-name>
-        <servlet-class>org.mortbay.jetty.servlet.Default</servlet-class>
-        <init-param>
-            <param-name>acceptRanges</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>dirAllowed</param-name>
-            <param-value>true</param-value>
-        </init-param>
-        <init-param>
-            <param-name>putAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>delAllowed</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>redirectWelcome</param-name>
-            <param-value>false</param-value>
-        </init-param>
-        <init-param>
-            <param-name>minGzipLength</param-name>
-            <param-value>8192</param-value>
-        </init-param>
-        <load-on-startup>0</load-on-startup>
-    </servlet>
-
-
-    <servlet-mapping>
-        <servlet-name>default</servlet-name>
-        <url-pattern>/</url-pattern>
-    </servlet-mapping>
-
-    <!-- ==================================================================== -->
-    <session-config>
-        <session-timeout>30</session-timeout>
-    </session-config>
-
-
-    <!-- ==================================================================== -->
-    <welcome-file-list>
-        <welcome-file>index.html</welcome-file>
-        <welcome-file>index.htm</welcome-file>
-    </welcome-file-list>
-
-    <!-- ==================================================================== -->
-    <locale-encoding-mapping-list>
-        <locale-encoding-mapping>
-            <locale>ar</locale>
-            <encoding>ISO-8859-6</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>be</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>bg</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ca</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>cs</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>da</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>de</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>el</locale>
-            <encoding>ISO-8859-7</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>en</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>es</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>et</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fi</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>fr</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hr</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>hu</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>is</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>it</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>iw</locale>
-            <encoding>ISO-8859-8</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ja</locale>
-            <encoding>Shift_JIS</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ko</locale>
-            <encoding>EUC-KR</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lt</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>lv</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>mk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>nl</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>no</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>pt</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ro</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>ru</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sh</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sk</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sl</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sq</locale>
-            <encoding>ISO-8859-2</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sr</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>sv</locale>
-            <encoding>ISO-8859-1</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>tr</locale>
-            <encoding>ISO-8859-9</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>uk</locale>
-            <encoding>ISO-8859-5</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh</locale>
-            <encoding>GB2312</encoding>
-        </locale-encoding-mapping>
-        <locale-encoding-mapping>
-            <locale>zh_TW</locale>
-            <encoding>Big5</encoding>
-        </locale-encoding-mapping>
-    </locale-encoding-mapping-list>
-
-
-</web-app>
-
diff --git a/maint-5-2/tapestry-upload/src/test/data/upload.txt b/maint-5-2/tapestry-upload/src/test/data/upload.txt
deleted file mode 100755
index 83e0ddb..0000000
--- a/maint-5-2/tapestry-upload/src/test/data/upload.txt
+++ /dev/null
@@ -1,99 +0,0 @@
-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Cras at nisi. Nullam lobortis mi at dolor. Maecenas sit amet eros eu purus rhoncus suscipit. Quisque ipsum dolor, placerat eu, sagittis sed, viverra tristique, lectus. Nunc ultricies libero laoreet elit pharetra sodales. Praesent bibendum auctor odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Nulla rhoncus facilisis diam. Mauris tincidunt consectetuer lectus. Curabitur fermentum sem sagittis magna. Suspendisse aliquet euismod sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Ut pede nibh, congue non, laoreet fermentum, rutrum condimentum, ligula. Nulla lorem magna, semper vitae, pharetra vel, tempus ac, lacus. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Aliquam semper ipsum non justo. Fusce placerat risus. Quisque nisi lectus, bibendum vel, tempus ac, hendrerit in, nunc. Integer sed nunc.

-

-Donec ac est. Vivamus egestas consequat eros. Praesent vehicula quam nec est. Aenean id ante ac quam sodales molestie. Duis hendrerit tellus vitae nulla. Sed nulla lectus, faucibus eu, eleifend vel, consectetuer vel, nulla. Vestibulum gravida ornare magna. Duis nunc dolor, iaculis ut, dapibus in, tincidunt eu, felis. Nam et libero. Donec aliquam magna id mi. Duis congue ligula non tortor. Vivamus luctus turpis. Pellentesque tristique aliquam tortor. Pellentesque auctor ullamcorper metus. Integer convallis pharetra quam. Duis bibendum ornare purus. Vivamus condimentum justo at orci.

-

-Pellentesque in dolor id elit suscipit pulvinar. Duis venenatis elementum lorem. Cras fermentum tellus vel justo. Aliquam molestie nunc a dui. Curabitur enim lorem, sollicitudin ut, euismod ac, gravida sit amet, diam. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Nulla tortor. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Fusce porttitor, elit nec mattis fringilla, ligula risus faucibus urna, non lobortis risus ipsum eu urna. Ut risus nisl, consectetuer non, ullamcorper eu, euismod in, metus. Sed sem. Nulla lectus. Donec dolor arcu, tincidunt aliquam, sollicitudin eu, dapibus vel, tortor. Aenean arcu orci, tempor et, dictum ut, cursus ullamcorper, justo. Nulla molestie, nunc vitae facilisis laoreet, diam libero adipiscing nulla, sagittis dapibus lacus tortor non lacus. Etiam nonummy, est quis vulputate semper, mauris mauris scelerisque urna, eget venenatis enim risus a quam. Etiam vehicula lectus nec augue rutrum adipiscing. Donec suscipit quam commodo augue. Quisque scelerisque lorem ac turpis.

-

-Praesent ultricies, ipsum venenatis auctor gravida, enim nulla tempus urna, ac accumsan lacus diam id felis. Praesent vel nunc tincidunt pede placerat scelerisque. Donec justo. Sed nonummy. Donec rhoncus. Maecenas congue iaculis lorem. Morbi molestie risus vitae lacus. Nulla condimentum gravida dui. Nunc vestibulum, libero eget ultricies sagittis, dolor sem sollicitudin pede, vitae lobortis quam justo eget diam. Pellentesque neque ligula, interdum ut, cursus et, faucibus sit amet, nisi. Duis fermentum. Quisque odio. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Cras eget enim in ipsum facilisis sagittis. Donec pellentesque, orci vel pharetra luctus, neque orci laoreet sem, a pellentesque risus nibh vel velit. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Donec nulla. Nulla luctus nonummy metus. Nam in arcu. Praesent ut augue at tellus scelerisque aliquam.

-

-Vivamus imperdiet molestie urna. Ut condimentum mauris vel risus. Donec dui leo, consequat in, luctus vitae, tristique sit amet, libero. Nunc pede. Nam et libero non erat laoreet tempus. Curabitur rhoncus pellentesque velit. Etiam condimentum ligula semper urna. Sed ipsum risus, ultrices vel, mattis nec, laoreet tristique, libero. Curabitur pretium venenatis pede. In vestibulum. Nunc in nulla nec elit laoreet iaculis. Proin scelerisque, eros eu auctor accumsan, ligula pede porttitor lorem, sed adipiscing mi nisl et lorem. Proin at erat.

-

-Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Duis varius. Duis vitae sem. Duis eu pede. Nulla vitae risus. Mauris molestie tellus quis ipsum. Cras facilisis vestibulum arcu. Cras at turpis eu odio lacinia cursus. Nulla a dolor. Cras vulputate urna eu mauris sodales porta. Quisque non metus. Suspendisse odio mi, ullamcorper vitae, lobortis in, lacinia eget, pede. Integer cursus leo nec ligula. Etiam ultricies massa eget lorem. Sed eget quam at eros gravida imperdiet. Phasellus libero. Aenean eros magna, luctus at, fringilla id, ultricies a, mauris. Sed non neque ac libero cursus luctus.

-

-Pellentesque dui ante, scelerisque vitae, luctus molestie, blandit sit amet, eros. Curabitur condimentum. Mauris eget leo a massa eleifend egestas. Proin neque quam, pellentesque eget, tempor at, rutrum sed, nunc. Vivamus hendrerit volutpat ipsum. Sed imperdiet pulvinar ligula. Aliquam mattis. Praesent aliquam molestie orci. Suspendisse nec lacus non mi consequat volutpat. Fusce felis. Phasellus ac elit. Aliquam erat volutpat. Vivamus tristique.

-

-Phasellus blandit. Integer tortor est, auctor non, hendrerit sit amet, aliquam dignissim, nibh. Aenean eleifend pede in metus pulvinar euismod. Morbi vitae nibh. Morbi sit amet sem et sapien condimentum adipiscing. Sed ligula nunc, molestie quis, elementum non, dapibus non, nulla. Suspendisse ultrices. Proin sed eros sit amet nisi auctor ornare. Nullam mattis. Sed vulputate. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Proin justo massa, dapibus non, rutrum at, eleifend vitae, metus. Maecenas porta varius mauris. Mauris mollis congue mi. Nunc sit amet ligula. Donec at est.

-

-Cras luctus sapien et arcu. Aenean purus erat, accumsan ac, placerat id, congue nec, urna. Proin lobortis tincidunt purus. Praesent tincidunt dui quis neque. Donec urna. Sed euismod, ligula ut sollicitudin faucibus, lorem neque suscipit enim, at dictum purus pede quis nisi. Aliquam vitae turpis. Sed pede nunc, commodo a, congue eget, lobortis quis, justo. Proin elementum ante sit amet purus. Nulla facilisi. Sed vel massa. Nam ornare.

-

-Aliquam erat volutpat. Vivamus non nulla a mi interdum interdum. Proin rutrum vestibulum odio. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Donec adipiscing, dolor eu faucibus iaculis, odio lorem condimentum lorem, feugiat rutrum enim urna vitae nisl. Vestibulum vehicula vehicula quam. Proin vehicula ante nec magna. Curabitur elementum odio in mi. Aenean ac urna vel turpis cursus tempor. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Praesent tempor consectetuer sem. In aliquam metus sed nunc. Fusce libero felis, iaculis at, convallis nec, sagittis nec, mauris. Curabitur pharetra facilisis ligula. Proin sollicitudin velit id erat.

-

-Fusce nec ipsum in nunc cursus pellentesque. Cras bibendum tellus non magna. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam viverra lacinia est. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Morbi facilisis dignissim pede. Sed odio arcu, ullamcorper vel, malesuada non, condimentum a, risus. Proin sed lacus quis ante convallis imperdiet. Nulla elementum, augue non ornare accumsan, felis purus imperdiet ipsum, a vulputate mauris turpis et nisl. Nunc mattis gravida enim. Donec nisl quam, ornare quis, congue vitae, fermentum a, massa. Duis sollicitudin sapien. Cras laoreet, nunc sed condimentum tristique, est orci egestas odio, eu feugiat risus metus facilisis dui. Nam faucibus. Sed lectus libero, nonummy nec, auctor in, tempor eleifend, massa. Duis orci. Quisque justo odio, dictum id, imperdiet quis, semper a, risus.

-

-Nam ut diam eget felis fermentum accumsan. Praesent congue auctor arcu. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Nullam pede. Maecenas dictum dignissim arcu. Nulla tristique, ante nec nonummy tincidunt, ipsum tortor lobortis nisl, ac fringilla magna ipsum a ipsum. Sed justo. Nunc ante. Quisque lectus sapien, bibendum a, varius consequat, congue sit amet, nisi. Sed pharetra. Vivamus dignissim convallis tellus. Fusce lobortis. Nulla lacinia suscipit velit. Duis tristique diam tristique tellus. Cras eget dui. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.

-

-Nullam scelerisque pede sit amet lacus. Aliquam pulvinar, magna sed tincidunt sagittis, justo neque mollis lectus, nec aliquet sem neque egestas enim. Aenean velit. Sed facilisis lectus in magna. Aliquam rutrum hendrerit odio. Vivamus consectetuer risus in justo. Sed lobortis augue nec nisi. Pellentesque adipiscing sapien vitae dolor. Integer libero massa, aliquam eu, pharetra ac, posuere in, mi. Fusce faucibus. Aliquam erat volutpat. Donec massa. Phasellus condimentum pede a nisl gravida aliquam. Praesent nisl felis, pretium a, egestas et, faucibus nec, arcu. Suspendisse condimentum odio quis nunc. Nullam auctor. Nulla facilisi. Integer orci diam, tristique sed, condimentum ac, fermentum vitae, nunc. Suspendisse dapibus eros. Nam cursus lectus vitae eros.

-

-Nullam auctor arcu sollicitudin ligula. Morbi rhoncus quam sit amet nulla ullamcorper vulputate. Integer vel mauris. Duis iaculis consectetuer massa. Praesent mollis, sapien eu facilisis dapibus, elit mi vestibulum justo, eget rhoncus dolor orci vel augue. Mauris rhoncus. Nulla facilisi. Etiam ullamcorper molestie justo. Aliquam aliquam, diam quis iaculis tincidunt, nulla orci ultrices nisl, ac elementum nisi lorem at magna. Aenean vel lorem. Proin sapien libero, congue ac, placerat vel, luctus id, lectus. Donec eu tortor vitae urna faucibus sodales. Phasellus at nulla. Mauris laoreet rutrum risus. Vestibulum dictum semper justo. Mauris lobortis, pede sed luctus molestie, nibh sem imperdiet mauris, ac tempus lacus lacus dapibus sapien. Vestibulum semper pellentesque sapien. Cras condimentum nibh quis odio. Donec eget mauris. Proin at dolor.

-

-Curabitur sodales commodo justo. Mauris congue. In in velit vitae lorem mollis semper. Curabitur lectus urna, pulvinar ac, rhoncus at, porttitor eget, pede. Praesent consectetuer. Pellentesque ut libero. Quisque laoreet. Nam rutrum. Suspendisse viverra laoreet est. Nam eu nisi nec mauris viverra adipiscing. Sed quis massa tincidunt metus dictum porttitor. Proin id est. Ut hendrerit, ipsum quis molestie viverra, tellus nibh scelerisque orci, eu dictum arcu augue eget neque.

-

-Ut ut erat. Suspendisse dapibus. Aenean pretium, dolor eget ullamcorper faucibus, massa magna mollis nibh, in sagittis turpis neque porttitor neque. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nullam leo orci, fringilla nec, aliquam consequat, rutrum eu, pede. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Fusce sem. Maecenas in leo non mauris tincidunt suscipit. Fusce euismod metus sit amet diam. Donec pulvinar interdum lectus.

-

-Mauris feugiat, ante non tincidunt euismod, purus nisi tincidunt diam, quis rhoncus augue justo id lorem. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. In mattis, dolor vitae tempor gravida, sem erat sollicitudin arcu, vitae placerat ante quam nec tortor. Donec in nisi. Quisque a nisl. Proin venenatis. Mauris nec erat id odio rutrum bibendum. In feugiat faucibus quam. Donec venenatis, pede quis lobortis tincidunt, sapien turpis eleifend eros, eu tincidunt ligula metus non tellus. Nunc a mauris ut leo vestibulum egestas. Fusce laoreet feugiat est. Curabitur dignissim risus sit amet leo. Nulla sit amet est. Cras ipsum. Aliquam a augue. Morbi a nisl. Sed vel ligula sit amet tortor congue tincidunt. Mauris commodo, dui sit amet pharetra eleifend, odio mi posuere felis, ut lobortis leo felis et metus.

-

-Vestibulum interdum faucibus ante. Morbi posuere iaculis risus. Proin ac ante vel eros mattis pharetra. Nullam nulla enim, imperdiet nec, condimentum nec, consequat in, mi. Quisque imperdiet quam malesuada metus euismod elementum. Aliquam vestibulum massa in arcu. Suspendisse aliquet gravida arcu. Maecenas quam. Integer porta. Proin sed erat. Suspendisse mauris. Pellentesque eleifend mauris ut dui. Donec vitae augue. Cras congue, urna ut blandit laoreet, magna nisl vehicula nunc, non eleifend nisl turpis non sapien. Aenean eget enim. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Pellentesque et sapien eget elit tincidunt semper. Nam placerat aliquam massa. Donec at nisl eget odio fermentum semper. Fusce ante enim, fringilla eget, bibendum id, posuere et, massa.

-

-Donec in ligula vitae turpis suscipit suscipit. Vestibulum ultrices. Duis nulla orci, aliquam in, pellentesque eget, condimentum in, mauris. Quisque vulputate vulputate tellus. Sed magna. Nulla sit amet massa et pede pretium sollicitudin. Duis sed mauris tincidunt tellus adipiscing scelerisque. Suspendisse bibendum nunc a nibh. Aliquam tincidunt pulvinar purus. Nam eget libero. Proin molestie.

-

-Curabitur semper orci at mi. Vestibulum tincidunt pede vitae nibh. Nunc metus. Ut mattis placerat nibh. Nulla facilisi. Maecenas tempor metus eget augue. Quisque a dolor porttitor erat placerat volutpat. In tellus. Phasellus pretium. Donec viverra, tellus sit amet sollicitudin consectetuer, orci leo consequat ipsum, in blandit augue leo ut ligula. In hac habitasse platea dictumst. Cras nibh ante, suscipit eu, fermentum non, eleifend vitae, purus. Aliquam ac massa eu mi lacinia porta. Suspendisse ultrices scelerisque ante. Praesent eget tortor. Nunc justo. Duis venenatis, justo eget sollicitudin malesuada, pede risus tempus ante, et sollicitudin nisl ligula at quam. In mauris eros, egestas vel, fringilla ut, interdum vitae, orci. Cras vitae tellus eu sem ornare facilisis.

-

-Nulla non nisl eget urna interdum suscipit. Aliquam eget libero. Duis ac metus. Vestibulum iaculis nisi in est. In sem tellus, ultricies in, hendrerit quis, ultrices ut, justo. Aliquam erat volutpat. Sed gravida, turpis vitae consequat viverra, risus ante dignissim pede, vel tristique dolor pede non urna. Duis a elit. Aliquam accumsan condimentum tellus. Quisque dui. Nullam nibh. Cras accumsan dignissim tortor. Morbi ac magna vitae est feugiat congue. Proin in felis.

-

-Nam ut purus. Donec interdum, quam nec blandit volutpat, enim velit vulputate mauris, sit amet tristique lorem erat non orci. Vivamus at enim. Morbi in odio. Aenean quam. Suspendisse commodo erat vitae lectus. Vestibulum rhoncus. Nam ullamcorper auctor metus. Quisque auctor, mauris non tincidunt sollicitudin, libero nisl venenatis libero, a adipiscing ipsum erat nec metus. Sed turpis. Aenean sem quam, tempor at, ultricies in, facilisis et, nisl. Cras laoreet.

-

-Mauris ut pede et velit egestas venenatis. Mauris tincidunt tortor sit amet erat. Phasellus imperdiet consequat lorem. Donec luctus odio ut felis. Curabitur non nunc id pede porta malesuada. Nunc nunc tortor, tempor sit amet, porttitor eu, fermentum ut, urna. Nulla vulputate. Pellentesque congue rhoncus risus. Phasellus semper convallis nisl. Ut accumsan interdum dolor. Nulla metus quam, porta non, fringilla quis, fringilla at, leo. Cras laoreet vestibulum diam. Donec et nisl et nulla ornare ultrices. Nullam fringilla. Vivamus erat. Morbi vehicula suscipit ipsum. Vestibulum sodales lectus quis nunc. Maecenas fringilla consectetuer neque.

-

-Nullam interdum vulputate orci. Etiam fringilla lacus. Suspendisse eu nisl sit amet libero dignissim aliquet. Ut nonummy malesuada lorem. Praesent cursus posuere urna. Nulla pharetra adipiscing nisl. Cras euismod pretium risus. Sed accumsan nisl ut diam. Maecenas et odio vel neque congue dictum. Nam varius pharetra dui. Pellentesque ligula. Curabitur sollicitudin pede at lorem. Quisque massa sapien, accumsan sed, condimentum a, ullamcorper ut, leo. Sed lectus. Nulla sem tortor, ornare sed, ultrices at, euismod non, purus. Maecenas ultricies nibh in mauris pulvinar suscipit. Fusce in eros id nulla hendrerit egestas. Morbi pellentesque. Quisque dolor tortor, faucibus ac, vehicula elementum, commodo dignissim, sem. Vivamus auctor ornare nunc.

-

-In consequat. Integer lectus turpis, ullamcorper et, scelerisque ac, lobortis quis, nisi. Nullam venenatis. Aliquam et leo. Vivamus felis. Pellentesque vestibulum suscipit lacus. Vivamus placerat rhoncus tellus. Integer sodales erat nec lectus. Integer et dolor. In hac habitasse platea dictumst. Suspendisse suscipit rhoncus arcu. Nullam sit amet erat. Nam elementum gravida magna.

-

-In a risus vitae ante rhoncus fermentum. Nulla facilisi. Maecenas suscipit venenatis sapien. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam nulla. Etiam lectus nisl, dignissim a, nonummy nec, bibendum vel, erat. Aenean volutpat diam eu sem. Fusce lobortis, velit id lacinia ultricies, velit purus ullamcorper ligula, sit amet imperdiet mi lacus vitae erat. Phasellus ultricies ligula a nulla tincidunt aliquam. In hac habitasse platea dictumst. Cras congue porttitor diam. Mauris vel lacus eu lorem eleifend porta. Duis aliquam libero id tortor.

-

-Vivamus vel nibh eu lectus volutpat congue. Cras volutpat tristique sem. Nullam facilisis adipiscing enim. Quisque quam justo, feugiat ut, mattis vel, aliquam laoreet, dolor. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Maecenas interdum neque ac sapien. In odio nulla, posuere ut, porta ut, commodo sit amet, mi. Integer nisi. Nunc sagittis interdum tortor. Etiam tristique adipiscing massa. Nullam pede. Quisque nisl. Cras ac tortor. Phasellus pulvinar, massa id vestibulum varius, eros quam ornare urna, sit amet lacinia nisl urna a elit. Donec luctus. In hac habitasse platea dictumst. Aenean eu odio at metus consectetuer adipiscing. Sed laoreet nisl in urna. Donec vel justo sed arcu interdum vestibulum.

-

-Vivamus nec urna a mauris dictum nonummy. Maecenas ultrices cursus urna. Suspendisse potenti. Aliquam erat volutpat. Proin quam. Sed euismod orci auctor lacus. Vivamus ornare tellus et elit. Nunc volutpat sagittis nisi. Suspendisse dui massa, volutpat id, tincidunt eget, ullamcorper id, magna. Sed sapien nisi, tristique ac, tempor non, hendrerit non, libero. Integer justo quam, vestibulum vehicula, aliquet nec, interdum in, elit. Ut ac enim eu ipsum lacinia scelerisque. Donec vitae eros non nisi blandit euismod. Fusce eget orci. Proin vitae dolor ut nulla rutrum viverra.

-

-Aliquam fringilla aliquam sapien. Donec elementum adipiscing mi. Nulla facilisi. Nullam commodo interdum justo. Vestibulum vulputate sem a nulla. Donec leo metus, rhoncus sit amet, scelerisque mattis, placerat et, odio. Donec hendrerit urna sed eros. In condimentum adipiscing mi. Suspendisse eleifend, velit eget vehicula semper, nunc urna adipiscing diam, sed egestas tortor velit eu lectus. Ut sed mi. Morbi est mi, mollis nec, faucibus a, sodales non, eros. Nullam enim nunc, dapibus sed, semper cursus, aliquam vel, lacus. Quisque ultricies magna quis ligula.

-

-Pellentesque non urna. Nam vel ante. Donec nonummy, elit blandit imperdiet vehicula, ligula nisl pharetra erat, nec varius arcu felis at augue. Maecenas laoreet posuere mi. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Suspendisse iaculis dignissim ante. Ut et est. Phasellus interdum. Aliquam varius odio eget lorem. Nunc dapibus justo non dolor. Vivamus posuere, ante vitae lacinia condimentum, libero tortor viverra magna, nec placerat ipsum sem condimentum orci. Sed augue ligula, tempus sed, vulputate ac, bibendum a, lacus. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed a mauris. Integer ante. Fusce et orci sit amet mi lacinia posuere. Proin non tellus quis mauris facilisis volutpat. Nullam tincidunt. Pellentesque accumsan.

-

-Aliquam erat volutpat. Vestibulum a tortor quis felis sagittis pharetra. Sed aliquam sapien vel metus. Maecenas dapibus, lorem sed vestibulum pharetra, nisi justo faucibus justo, id congue nisi felis at nulla. Maecenas est ante, placerat consequat, ultricies tempor, vulputate quis, ligula. Praesent sollicitudin, nulla ut vulputate tempor, diam nunc mattis nisi, eget rutrum nisi diam sed tellus. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos. Morbi ultrices sapien non metus pretium lacinia. Suspendisse ligula. Suspendisse fermentum dapibus enim. Mauris tincidunt magna eu lorem. Praesent nunc dui, tempor nec, pulvinar pharetra, semper ac, libero. Morbi placerat interdum ante. Proin molestie, lorem ac elementum luctus, ligula enim venenatis risus, eget mattis ante pede vitae pede. In fermentum. Donec lobortis, magna eu rutrum accumsan, augue pede eleifend tortor, in posuere velit magna ut velit. Suspendisse ac metus in nisl commodo interdum. Duis ornare elit in pede.

-

-Duis ut elit ut velit tempus bibendum. Nulla pretium vulputate tortor. Vestibulum interdum. Integer id pede. Vivamus sem augue, elementum vel, commodo a, fringilla elementum, sapien. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Curabitur nec enim. Vivamus facilisis, metus eget pharetra tincidunt, augue lacus elementum diam, in placerat tortor tortor ut risus. Aenean elementum eleifend magna. Nullam nibh tortor, elementum vitae, vestibulum quis, mattis nec, augue. Phasellus a diam at orci porta molestie. Quisque quis purus. Fusce sed dui. Donec tempus. Etiam tincidunt, risus non aliquam tincidunt, ligula est bibendum mauris, sed dapibus libero magna vitae massa. In hac habitasse platea dictumst. Cras ultrices risus ac justo. Fusce pellentesque, justo quis suscipit vestibulum, sapien libero viverra risus, ut condimentum eros purus sed lectus. Nullam id pede. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos hymenaeos.

-

-Quisque blandit luctus diam. Sed posuere. Donec mattis. Etiam bibendum rutrum sapien. Aliquam nec leo vitae mi porttitor aliquet. Nulla metus justo, semper vel, vehicula et, placerat eu, mi. Etiam neque ante, gravida eu, posuere eu, posuere sed, dolor. Nunc et nunc. Suspendisse enim eros, interdum nec, porta at, gravida in, velit. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Sed quis ligula eget massa gravida dignissim. Suspendisse nonummy.

-

-Proin pellentesque aliquet neque. Sed porta urna ornare ligula. In hac habitasse platea dictumst. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Suspendisse a nisl. Curabitur in eros sit amet nisi blandit vehicula. Aliquam rutrum pulvinar augue. Vestibulum tellus sem, convallis eu, eleifend vitae, sagittis nec, nisl. Pellentesque leo. Nam pulvinar tristique est. Praesent volutpat iaculis ligula. Suspendisse potenti.

-

-Etiam ut arcu eget libero rutrum mollis. Cras egestas, ipsum at mattis euismod, purus lectus ultrices nulla, et malesuada urna felis eget sem. Aenean id massa vitae elit commodo cursus. Nam odio massa, nonummy ut, pellentesque suscipit, sollicitudin eget, mi. Nam sagittis. Proin iaculis justo sit amet risus. Nunc eu odio. Suspendisse eget nulla. Donec ut lorem vel risus lacinia tristique. Ut egestas leo bibendum dolor. Duis enim mi, lobortis id, varius id, mollis in, eros. Etiam sapien diam, commodo at, porta sit amet, aliquam id, enim. Sed vel orci eget sapien rhoncus gravida. Nunc nibh. Maecenas facilisis. In hac habitasse platea dictumst. Aenean interdum, tellus a placerat pellentesque, arcu magna lacinia massa, id pulvinar turpis turpis non nisi. Pellentesque elementum. Nunc ut nunc.

-

-Maecenas tincidunt sagittis neque. Maecenas ac magna. Donec lobortis, tellus quis nonummy semper, odio massa accumsan ipsum, vel tincidunt nibh magna eu mi. In quis tortor non tellus consequat accumsan. Quisque molestie ligula et tortor. Fusce porttitor sodales odio. Maecenas at justo id lacus mollis semper. Proin tincidunt volutpat felis. Sed nec nibh a nibh convallis molestie. Sed porta magna eget odio. Aliquam ipsum arcu, commodo in, imperdiet ut, ultrices commodo, velit. Etiam tincidunt congue sem. Proin convallis lacus.

-

-Donec urna. Quisque aliquet suscipit arcu. Donec sit amet leo quis elit convallis venenatis. Pellentesque auctor tellus vel tellus. Suspendisse consectetuer, purus ut fringilla placerat, felis metus rutrum justo, non blandit arcu libero at odio. Mauris euismod, enim vitae tempor accumsan, dui lacus placerat dolor, nec rhoncus est augue non tortor. Sed quis urna in dolor dignissim hendrerit. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Vivamus convallis lacus commodo libero. Phasellus ornare erat. Donec quis est eget augue posuere varius. Phasellus auctor. Maecenas vitae lectus. Aliquam pulvinar. Maecenas vitae magna eget mauris nonummy nonummy. Fusce libero nisl, nonummy non, dignissim ac, blandit non, dui.

-

-Pellentesque nec ligula vel lorem vehicula dictum. Cras vitae risus id diam congue congue. Nam dapibus ultrices nisi. In diam. Nullam velit. Maecenas risus. Nullam in sem. Fusce tincidunt ornare felis. In laoreet massa sed urna. Vestibulum lobortis ullamcorper arcu. Sed feugiat varius justo. Fusce scelerisque. Donec sit amet eros. Curabitur ullamcorper diam ac odio. Duis pharetra ultrices urna.

-

-Maecenas mauris. Integer fermentum, pede at laoreet interdum, lectus dolor laoreet erat, in egestas est lacus mollis erat. Duis hendrerit mauris ac nunc. Maecenas condimentum sem a odio. Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Sed ac nisi et leo malesuada auctor. Cras vestibulum. Quisque dui metus, viverra at, sodales vitae, tincidunt quis, massa. Nunc mauris. Suspendisse enim lorem, tincidunt suscipit, pharetra eget, egestas ac, lectus. Maecenas scelerisque. Nulla dapibus, massa sit amet tempor facilisis, quam sem semper quam, vitae euismod turpis enim in diam.

-

-Donec dignissim. Ut feugiat tincidunt orci. Praesent bibendum venenatis elit. Curabitur accumsan. Quisque ultrices magna. Nam in nisl. Aliquam ac ipsum. Aliquam enim orci, iaculis ut, ultrices id, ultrices ut, massa. Phasellus hendrerit mauris. Praesent feugiat, leo quis molestie luctus, erat massa egestas enim, non posuere velit dui eu felis. Praesent varius fringilla risus.

-

-Sed lacus sem, tempus dictum, convallis sit amet, placerat a, velit. Vestibulum sit amet lacus. Curabitur molestie. Suspendisse nec mauris. Praesent in diam vitae quam iaculis condimentum. Nam fringilla. Sed sollicitudin eros a enim. Curabitur dictum nunc sit amet lorem. Mauris odio purus, adipiscing vitae, porta ut, euismod rhoncus, risus. Pellentesque sit amet diam id urna rutrum nonummy. Morbi velit est, aliquet hendrerit, aliquet in, vestibulum quis, orci. Integer sed felis vitae quam venenatis malesuada. Curabitur scelerisque, massa sed eleifend sagittis, enim magna condimentum eros, a lacinia nisi ante ut nibh. Proin suscipit consectetuer nisl. Donec interdum, nisl eget vestibulum ultricies, massa purus elementum mi, in egestas lacus est at risus. Nunc a nibh vehicula lorem vulputate tincidunt. Cras est ligula, ullamcorper a, pulvinar et, ullamcorper eu, libero. Praesent et tortor id augue pretium condimentum. Pellentesque viverra, orci at placerat sodales, dolor risus dictum velit, sit amet ultrices nisl sapien id felis.

-

-Morbi vel turpis. Cras ut enim eget nisi volutpat nonummy. Sed iaculis. Maecenas metus mauris, fermentum eget, nonummy id, vulputate id, purus. Phasellus egestas lacus ac erat. Nullam sed metus. Morbi nunc pede, lobortis ut, pulvinar lacinia, accumsan quis, pede. Donec posuere rutrum mauris. Mauris cursus, nisl a venenatis congue, sapien tellus commodo magna, id fermentum sapien massa quis dui. Proin dignissim dui in odio.

-

-Mauris sit amet augue. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Cum sociis natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Cras eget eros sed augue faucibus malesuada. Pellentesque adipiscing iaculis orci. Integer id augue in neque convallis condimentum. Donec tristique, dolor id facilisis fermentum, tortor est vehicula turpis, et convallis sapien turpis vel est. Cras et lectus. Nam iaculis. Suspendisse eleifend nibh a nulla. Donec sit amet diam. Fusce porttitor lorem in velit. Maecenas egestas ante nec elit. Suspendisse dui nulla, consequat nec, feugiat sit amet, porta sed, urna. Nullam pellentesque purus non elit.

-

-Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Mauris orci massa, imperdiet nec, pulvinar feugiat, varius at, leo. Pellentesque nec velit ac velit consectetuer iaculis. Etiam nonummy. Quisque et ligula. In ac dui. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Phasellus porta sagittis nulla. Suspendisse et risus.

-

-In in mauris nec libero egestas vehicula. Cras tincidunt blandit lorem. Phasellus facilisis urna vitae nisi. Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vivamus gravida sem nec nisi. Nam magna est, tempor sed, venenatis eget, dictum sit amet, diam. Fusce elementum tincidunt enim. Integer tortor orci, lobortis nec, vehicula vitae, laoreet vitae, augue. Nullam fringilla aliquet ligula. Suspendisse vehicula nisi non dolor. Quisque nonummy urna et velit. Integer egestas commodo libero. Phasellus in sapien ac mi ornare pretium. In quis lorem vel dolor commodo ultricies.

-

-Mauris dolor. Nunc venenatis. Donec ullamcorper sapien ac est. Integer laoreet, magna nec scelerisque egestas, enim velit cursus dolor, nec pulvinar ligula odio non odio. Proin sit amet nisi eu erat rutrum viverra. Nullam tempus quam quis mi. Quisque tincidunt odio nec tortor. Nulla orci. Mauris sapien sapien, malesuada placerat, elementum bibendum, rhoncus eu, risus. Integer lectus. Curabitur velit magna, congue id, imperdiet id, lobortis in, nisl. Integer ultricies est quis sapien. Suspendisse vitae est.

-

-Quisque lacinia sapien ac diam. Morbi ornare ante ac elit. Quisque viverra. Aliquam erat volutpat. Quisque erat turpis, hendrerit vel, aliquam vel, vulputate tincidunt, ligula. Ut molestie molestie nulla. Vestibulum vitae dui. Etiam tellus. Suspendisse ligula. Maecenas cursus ornare tortor. In placerat consectetuer sem. Mauris quis risus et odio nonummy scelerisque. Aliquam venenatis. Etiam tempor. Sed arcu.

-

-Duis justo. Proin porta mattis nunc. Etiam posuere, arcu nec porta imperdiet, magna lorem interdum purus, vitae congue nisi lacus a est. Duis eu leo quis tortor congue lobortis. Vestibulum eu lorem. Integer bibendum. Integer et mi. Fusce venenatis. Aliquam erat volutpat. Nullam mi massa, dictum vel, ultricies ac, tempus non, leo. Aenean vitae ante. Suspendisse velit lacus, volutpat in, lacinia a, malesuada id, sapien. Duis blandit.

-

-In commodo lorem in leo. Curabitur turpis. Fusce nec odio. Nunc ac augue vel eros faucibus consectetuer. Pellentesque porta. Etiam blandit. Aliquam eget dolor. Curabitur ac elit eget arcu luctus pulvinar. Quisque molestie. Donec fermentum. Aenean pharetra eros a eros. Nam sagittis urna ut libero. Aliquam faucibus tellus. Vestibulum ante ipsum primis in faucibus orci luctus et ultrices posuere cubilia Curae; Etiam justo mauris, posuere vel, vestibulum vel, laoreet at, dolor. Maecenas neque tellus, faucibus a, aliquet sed, varius vel, nisi. Sed commodo, purus quis hendrerit pulvinar, risus lectus ultrices pede, in rhoncus neque libero eu purus. Praesent vel risus. Nulla pharetra nibh a urna imperdiet congue. Sed suscipit laoreet magna.

-

-Phasellus pharetra leo. Vivamus sit amet dui sit amet urna convallis sollicitudin. Duis tempor placerat massa. Nulla dapibus. Nullam rutrum nulla non mi. Curabitur at sapien in risus pretium aliquam. Mauris vel erat sed enim porttitor dapibus. Nulla tincidunt. Etiam non nisl. Pellentesque in dolor. Praesent placerat quam et orci. Donec euismod orci ut ipsum. Quisque mollis porta velit. Suspendisse potenti. Duis accumsan lacus at ante. Etiam tortor justo, dictum ac, viverra quis, ultrices in, odio. In sit amet libero.

diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/RunJettyUpload.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/RunJettyUpload.java
deleted file mode 100644
index 2b7798d..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/RunJettyUpload.java
+++ /dev/null
@@ -1,31 +0,0 @@
-// Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload;
-
-import org.apache.tapestry5.test.JettyRunner;
-
-import java.io.File;
-
-public class RunJettyUpload
-{
-    public static void main(String[] args) throws Exception
-    {
-        File workingDir = new File(System.getProperty("user.dir"));
-
-        new File(workingDir, "target/tmp").mkdirs();
-
-        new JettyRunner(workingDir, "/", 8080, "src/test/webapp");
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/components/UploadTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/components/UploadTest.java
deleted file mode 100755
index 7dd1eeb..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/components/UploadTest.java
+++ /dev/null
@@ -1,273 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.components;
-
-import org.apache.tapestry5.*;
-import org.apache.tapestry5.dom.Element;
-import org.apache.tapestry5.services.FormSupport;
-import org.apache.tapestry5.services.Request;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.apache.tapestry5.upload.services.MultipartDecoder;
-import org.apache.tapestry5.upload.services.UploadedFile;
-import static org.easymock.EasyMock.expectLastCall;
-import org.testng.annotations.Test;
-
-public class UploadTest extends TapestryTestCase
-{
-
-    @Test
-    public void upload_is_field() throws Exception
-    {
-        assertTrue(Field.class.isAssignableFrom(Upload.class));
-    }
-
-    @Test
-    public void begin_render_writes_input_tag() throws Exception
-    {
-        MarkupWriter writer = createMarkupWriter();
-        writer.element("form");
-        FormSupport formSupport = mockFormSupport();
-        ComponentResources resources = mockComponentResources();
-        FieldValidator validator = mockFieldValidator();
-        Request request = mockRequest();
-
-        train_isXHR(request, false);
-
-        formSupport.setEncodingType(Upload.MULTIPART_ENCTYPE);
-
-        validator.render(writer);
-
-        resources.renderInformalParameters(writer);
-
-        replay();
-
-        Upload component = new Upload(null, null, null, null, resources, null);
-
-        component.injectDecorator(new BaseValidationDecorator()).injectFormSupport(formSupport).injectFieldValidator(
-                validator).injectRequest(request);
-
-        component.beginRender(writer);
-
-
-        Element element = writer.getElement();
-        assertNotNull(element);
-        assertEquals(element.getName(), "input");
-        assertEquals(element.getAttribute("type"), "file");
-        // assertEquals(element.getAttribute("name"),null);
-        // assertEquals(element.getAttribute("id"),null);
-
-        verify();
-    }
-
-    @Test
-    public void validation_decorator_invoked_inside_begin_render() throws Exception
-    {
-        getMocksControl().checkOrder(true);
-
-        ComponentResources resources = mockComponentResources();
-        Upload component = new Upload(null, null, null, null, resources, null);
-        MarkupWriter writer = createMarkupWriter();
-        writer.element("form");
-        FieldValidator validator = mockFieldValidator();
-        Request request = mockRequest();
-
-        FormSupport formSupport = mockFormSupport();
-        formSupport.setEncodingType(Upload.MULTIPART_ENCTYPE);
-
-        component.injectFormSupport(formSupport).injectRequest(request);
-
-        ValidationDecorator decorator = mockValidationDecorator();
-
-        component.injectDecorator(decorator).injectFieldValidator(validator);
-
-        validator.render(writer);
-
-        resources.renderInformalParameters(writer);
-        decorator.insideField(component);
-
-        train_isXHR(request, false);
-
-        replay();
-
-        component.beginRender(writer);
-
-        verify();
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void begin_render_invokes_field_validator() throws Exception
-    {
-        getMocksControl().checkOrder(true);
-
-        FieldValidator<Object> validate = mockFieldValidator();
-        ComponentResources resources = mockComponentResources();
-        Upload component = new Upload(null, validate, null, null, resources, null);
-        MarkupWriter writer = createMarkupWriter();
-        writer.element("form");
-        Request request = mockRequest();
-
-        FormSupport formSupport = mockFormSupport();
-        formSupport.setEncodingType(Upload.MULTIPART_ENCTYPE);
-
-
-        ValidationDecorator decorator = mockValidationDecorator();
-
-        component.injectDecorator(decorator).injectRequest(request).injectFormSupport(formSupport);
-
-        validate.render(writer);
-
-        resources.renderInformalParameters(writer);
-
-        decorator.insideField(component);
-
-        train_isXHR(request, false);
-
-        replay();
-
-        component.beginRender(writer);
-
-        verify();
-    }
-
-    @Test
-    public void after_render_closes_element() throws Exception
-    {
-        Upload component = new Upload();
-        MarkupWriter writer = mockMarkupWriter();
-
-        expect(writer.end()).andReturn(null);
-
-        replay();
-
-        component.afterRender(writer);
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void process_submission_extracts_value_from_decoder() throws Exception
-    {
-        MultipartDecoder decoder = mockMultipartDecoder();
-        UploadedFile uploadedFile = mockUploadedFile();
-        ComponentResources resources = mockComponentResources();
-        FieldValidationSupport support = mockFieldValidationSupport();
-        FieldValidator validate = mockFieldValidator();
-
-        Upload component = new Upload(null, validate, decoder, null, resources, support);
-
-        expect(decoder.getFileUpload("test")).andReturn(uploadedFile);
-        expect(uploadedFile.getFileName()).andReturn("foo").anyTimes();
-
-        support.validate(uploadedFile, resources, validate);
-
-        replay();
-
-        component.processSubmission("test");
-
-        verify();
-
-        assertSame(component.getValue(), uploadedFile);
-    }
-
-    @SuppressWarnings({"unchecked"})
-    @Test
-    public void process_submission_ignores_null_value() throws Exception
-    {
-        MultipartDecoder decoder = mockMultipartDecoder();
-        UploadedFile uploadedFile = mockUploadedFile();
-        ComponentResources resources = mockComponentResources();
-        FieldValidationSupport support = mockFieldValidationSupport();
-        FieldValidator validate = mockFieldValidator();
-
-        Upload component = new Upload(null, validate, decoder, null, resources, support);
-
-        expect(decoder.getFileUpload("test")).andReturn(uploadedFile);
-        expect(uploadedFile.getFileName()).andReturn("").atLeastOnce();
-
-        support.validate(null, resources, validate);
-
-
-        replay();
-
-        component.processSubmission("test");
-
-        verify();
-
-        assertNull(component.getValue());
-    }
-
-    @SuppressWarnings("unchecked")
-    @Test
-    public void process_submission_calls_validator() throws Exception
-    {
-        MultipartDecoder decoder = mockMultipartDecoder();
-        UploadedFile uploadedFile = mockUploadedFile();
-        FieldValidator<Object> validate = mockFieldValidator();
-        ComponentResources resources = mockComponentResources();
-        FieldValidationSupport support = mockFieldValidationSupport();
-
-        Upload component = new Upload(null, validate, decoder, null, resources, support);
-
-        expect(decoder.getFileUpload("test")).andReturn(uploadedFile);
-        expect(uploadedFile.getFileName()).andReturn("test").atLeastOnce();
-
-        support.validate(uploadedFile, resources, validate);
-
-        replay();
-
-        component.processSubmission("test");
-
-        verify();
-    }
-
-    @SuppressWarnings({"unchecked", "ThrowableInstanceNeverThrown"})
-    @Test
-    public void process_submission_tracks_validator_errors() throws Exception
-    {
-        MultipartDecoder decoder = mockMultipartDecoder();
-        UploadedFile uploadedFile = mockUploadedFile();
-        FieldValidator<Object> validate = mockFieldValidator();
-        ValidationTracker tracker = mockValidationTracker();
-        ComponentResources resources = mockComponentResources();
-        FieldValidationSupport support = mockFieldValidationSupport();
-
-        Upload component = new Upload(null, validate, decoder, tracker, resources, support);
-
-        expect(decoder.getFileUpload("test")).andReturn(uploadedFile);
-        expect(uploadedFile.getFileName()).andReturn("test").atLeastOnce();
-
-        support.validate(uploadedFile, resources, validate);
-        expectLastCall().andThrow(new ValidationException("an error"));
-
-        tracker.recordError(component, "an error");
-        replay();
-
-        component.processSubmission("test");
-
-        verify();
-    }
-
-    protected final UploadedFile mockUploadedFile()
-    {
-        return newMock(UploadedFile.class);
-    }
-
-    protected final MultipartDecoder mockMultipartDecoder()
-    {
-        return newMock(MultipartDecoder.class);
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/integration/UploadIntegrationTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/integration/UploadIntegrationTest.java
deleted file mode 100755
index 8ed9a5c..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/integration/UploadIntegrationTest.java
+++ /dev/null
@@ -1,60 +0,0 @@
-// Copyright 2007 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.integration;
-
-import org.apache.tapestry5.test.AbstractIntegrationTestSuite;
-import org.example.upload.pages.Start;
-import org.testng.annotations.BeforeTest;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.io.IOException;
-
-/**
- * . TODO: These tests wont work because Selenium cannot enter values for input type="file'
- */
-public class UploadIntegrationTest extends AbstractIntegrationTestSuite
-{
-
-    @BeforeTest
-    public void setupTargetFolder() throws IOException
-    {
-        File target = new File(Start.TARGET_DIR);
-        if (!target.exists())
-        {
-            target.mkdirs();
-        }
-        else
-        {
-            for (File file : target.listFiles())
-            {
-                file.delete();
-            }
-        }
-    }
-
-    @Test(enabled = false)
-    public void integration_test() throws Exception
-    {
-
-        open(BASE_URL);
-
-        File source = new File("test/data/upload.txt");
-
-        type("file", source.getCanonicalPath());
-        clickAndWait("//input[@value='Upload']");
-
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/MultipartDecoderImplTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/MultipartDecoderImplTest.java
deleted file mode 100755
index 50dbbd1..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/MultipartDecoderImplTest.java
+++ /dev/null
@@ -1,213 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.fileupload.FileItemFactory;
-import org.apache.commons.fileupload.disk.DiskFileItemFactory;
-import org.apache.commons.fileupload.servlet.ServletFileUpload;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletRequest;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-public class MultipartDecoderImplTest extends TapestryTestCase
-{
-    private final FileItemFactory fileItemFactory = new DiskFileItemFactory(888, new File("/tmp"));
-
-    private static final String CHARSET = "UTF-8";
-
-    @Test
-    public void create_file_upload_gets_configuration_from_symbols() throws Exception
-    {
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, 7777, 6666, CHARSET);
-
-        replay();
-
-        ServletFileUpload servletFileUpload = decoder.createFileUpload();
-        assertNotNull(servletFileUpload);
-
-        verify();
-
-        assertEquals(servletFileUpload.getFileSizeMax(), 6666);
-        assertEquals(servletFileUpload.getSizeMax(), 7777);
-    }
-
-    @Test
-    public void process_file_items_does_nothing_when_null_file_items() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-        List<FileItem> items = Collections.emptyList();
-
-        replay();
-
-        HttpServletRequest decodedRequest = decoder.processFileItems(request, items);
-
-        verify();
-
-        assertSame(request, decodedRequest);
-    }
-
-    @Test
-    public void process_file_items_does_nothing_when_empty_file_items() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-        List<FileItem> fileItems = Collections.emptyList();
-
-        replay();
-
-        HttpServletRequest decodedRequest = decoder.processFileItems(request, fileItems);
-
-        verify();
-
-        assertSame(request, decodedRequest);
-    }
-
-    @Test
-    public void process_file_items_creates_wrapped_request_and_sets_non_file_parameters() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-        List<FileItem> fileItems = Arrays.asList(createValueItem("one", "first"), createValueItem("two", "second"));
-
-        replay();
-
-        HttpServletRequest decodedRequest = decoder.processFileItems(request, fileItems);
-
-        assertNotSame(decodedRequest, request);
-
-        assertEquals(decodedRequest.getParameter("one"), "first");
-        assertEquals(decodedRequest.getParameter("two"), "second");
-
-        verify();
-    }
-
-    @Test
-    public void non_file_items_with_null_request_encoding() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-
-        List<FileItem> fileItems = Arrays.asList(createValueItem("one", "first"), createValueItem("two", "second"));
-
-        replay();
-
-        HttpServletRequest decodedRequest = decoder.processFileItems(request, fileItems);
-
-        assertNotSame(decodedRequest, request);
-
-        assertEquals(decodedRequest.getParameter("one"), "first");
-        assertEquals(decodedRequest.getParameter("two"), "second");
-
-        verify();
-    }
-
-    @Test
-    public void process_file_items_set_file_parameters_with_file_name() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-        List<FileItem> fileItems = Arrays.asList(createFileItem("one", "first.txt"),
-                                                 createFileItem("two", "second.txt"));
-
-        replay();
-
-        HttpServletRequest decodedRequest = decoder.processFileItems(request, fileItems);
-
-        assertNotSame(decodedRequest, request);
-
-        assertEquals(decodedRequest.getParameter("one"), "first.txt");
-        assertEquals(decodedRequest.getParameter("two"), "second.txt");
-
-        verify();
-    }
-
-    @Test
-    public void uploaded_file_stored() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-        List<FileItem> fileItems = Arrays.asList(createFileItem("one", "first.txt"),
-                                                 createFileItem("two", "second.txt"));
-
-        replay();
-
-        decoder.processFileItems(request, fileItems);
-
-        verify();
-
-        assertNotNull(decoder.getFileUpload("one"));
-        assertEquals(decoder.getFileUpload("one").getFileName(), "first.txt");
-        assertNotNull(decoder.getFileUpload("two"));
-        assertEquals(decoder.getFileUpload("two").getFileName(), "second.txt");
-    }
-
-    @Test
-    public void file_items_cleaned_up() throws Exception
-    {
-        HttpServletRequest request = mockHttpServletRequest();
-        MultipartDecoderImpl decoder = new MultipartDecoderImpl(fileItemFactory, -1, -1, CHARSET);
-        StubFileItem firstItem = new StubFileItem("one");
-        firstItem.setFormField(false);
-        StubFileItem secondItem = new StubFileItem("two");
-        secondItem.setFormField(false);
-
-        List<FileItem> fileItems = new ArrayList<FileItem>();
-        fileItems.add(firstItem);
-        fileItems.add(secondItem);
-
-
-        replay();
-
-        decoder.processFileItems(request, fileItems);
-
-        assertFalse(firstItem.isDeleted());
-        assertFalse(secondItem.isDeleted());
-        decoder.threadDidCleanup();
-        assertTrue(firstItem.isDeleted());
-        assertTrue(secondItem.isDeleted());
-
-        verify();
-    }
-
-    private FileItem createValueItem(String name, String value)
-    {
-        StubFileItem item = new StubFileItem();
-        item.setFieldName(name);
-        item.setValue(value);
-        item.setFormField(true);
-
-        return item;
-    }
-
-    private FileItem createFileItem(String name, String fileName)
-    {
-        StubFileItem item = new StubFileItem();
-        item.setFieldName(name);
-        item.setFileName(fileName);
-        item.setFormField(false);
-
-        return item;
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/MultipartServletRequestFilterTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/MultipartServletRequestFilterTest.java
deleted file mode 100755
index 6497e5e..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/MultipartServletRequestFilterTest.java
+++ /dev/null
@@ -1,72 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.tapestry5.services.HttpServletRequestHandler;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.apache.tapestry5.upload.services.MultipartDecoder;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-public class MultipartServletRequestFilterTest extends TapestryTestCase
-{
-
-    @Test
-    public void normalRequestDoesNothing() throws Exception
-    {
-        MultipartDecoder decoder = newMock(MultipartDecoder.class);
-        HttpServletRequest request = mockHttpServletRequest();
-        HttpServletResponse response = mockHttpServletResponse();
-        HttpServletRequestHandler handler = newMock(HttpServletRequestHandler.class);
-
-        MultipartServletRequestFilter filter = new MultipartServletRequestFilter(decoder);
-
-        expect(request.getMethod()).andReturn("get");
-
-        expect(handler.service(request, response)).andReturn(true);
-
-        replay();
-
-        boolean isHandled = filter.service(request, response, handler);
-        assertTrue(isHandled);
-        verify();
-    }
-
-    @Test
-    public void multipartRequestIsDecoded() throws Exception
-    {
-        MultipartDecoder decoder = newMock(MultipartDecoder.class);
-        HttpServletRequest request = mockHttpServletRequest();
-        HttpServletRequest decodedRequest = mockHttpServletRequest();
-        HttpServletResponse response = mockHttpServletResponse();
-        HttpServletRequestHandler handler = newMock(HttpServletRequestHandler.class);
-
-        MultipartServletRequestFilter filter = new MultipartServletRequestFilter(decoder);
-
-        expect(request.getMethod()).andReturn("post");
-        expect(request.getContentType()).andReturn("multipart/form");
-        expect(decoder.decode(request)).andReturn(decodedRequest);
-
-        expect(handler.service(decodedRequest, response)).andReturn(true);
-
-        replay();
-
-        boolean isHandled = filter.service(request, response, handler);
-        assertTrue(isHandled);
-        verify();
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/ParameterValueTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/ParameterValueTest.java
deleted file mode 100755
index 2a77262..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/ParameterValueTest.java
+++ /dev/null
@@ -1,76 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-
-public class ParameterValueTest
-{
-
-    @Test
-    public void singleGivesConstructedParameterByDefault() throws Exception
-    {
-        ParameterValue value = new ParameterValue("foo");
-        assertEquals(value.single(), "foo");
-    }
-
-    @Test
-    public void multiReturnsArrayWithConstructedParameterByDefault() throws Exception
-    {
-        ParameterValue value = new ParameterValue("foo");
-        assertEquals(value.multi(), new String[] { "foo" });
-    }
-
-    @Test
-    public void singleGivesFirstValueOfMultiValue() throws Exception
-    {
-        ParameterValue value = new ParameterValue("foo", "blah");
-        assertEquals(value.single(), "foo");
-    }
-
-    @Test
-    public void multiGivesAllValuesOfMultiValue() throws Exception
-    {
-        ParameterValue value = new ParameterValue("foo");
-        value.add("blah");
-        assertEquals(value.multi(), new String[] { "foo", "blah" });
-    }
-
-    @Test
-    public void isMultiIsFalseForSingleValue() throws Exception
-    {
-        ParameterValue value = new ParameterValue("foo");
-        assertFalse(value.isMulti());
-    }
-
-    @Test
-    public void isMultiIsTrueForMultiValue() throws Exception
-    {
-        ParameterValue value = new ParameterValue("foo");
-        value.add("blah");
-        assertTrue(value.isMulti());
-    }
-
-    @Test
-    public void nullObjectGivesNullForSingleAndMulti() throws Exception
-    {
-        ParameterValue value = ParameterValue.NULL;
-        assertNull(value.single());
-        assertNull(value.multi());
-        assertFalse(value.isMulti());
-    }
-
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/ParametersServletRequestWrapperTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/ParametersServletRequestWrapperTest.java
deleted file mode 100755
index 97040be..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/ParametersServletRequestWrapperTest.java
+++ /dev/null
@@ -1,173 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import static org.easymock.EasyMock.*;
-import static org.testng.Assert.*;
-import org.testng.annotations.Test;
-
-import javax.servlet.http.HttpServletRequest;
-import java.util.Enumeration;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-public class ParametersServletRequestWrapperTest
-{
-    @Test
-    public void getParameterNamesIsNotDelegated() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-
-        replay(request);
-
-        Enumeration names = wrapper.getParameterNames();
-
-        verify(request);
-
-        assertNotNull(names);
-        assertFalse(names.hasMoreElements());
-    }
-
-    @Test
-    public void getParameterMapIsNotDelegated() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-
-        replay(request);
-
-        Map parameters = wrapper.getParameterMap();
-
-        verify(request);
-        assertNotNull(parameters);
-        assertTrue(parameters.isEmpty());
-    }
-
-    @Test
-    public void getParameterIsNotDelegated() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-
-        replay(request);
-
-        String value = wrapper.getParameter("foo");
-
-        verify(request);
-        assertNull(value);
-    }
-
-    @Test
-    public void getParameterValuesIsNotDelegated() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-
-        replay(request);
-
-        String[] values = wrapper.getParameterValues("foo");
-
-        verify(request);
-        assertNull(values);
-    }
-
-    @Test
-    public void getParameterForSingleValue() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-        replay(request);
-
-        wrapper.addParameter("foo", "blah");
-
-        assertEquals(wrapper.getParameter("foo"), "blah");
-        verify(request);
-    }
-
-    @Test
-    public void getParameterForMultiValueGivesFirstValue() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-        replay(request);
-
-        wrapper.addParameter("foo", "blah");
-        wrapper.addParameter("foo", "another");
-
-        assertEquals(wrapper.getParameter("foo"), "blah");
-        verify(request);
-    }
-
-    @Test
-    public void getParameterValuesForMultiValueGivesAll() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-        replay(request);
-
-        wrapper.addParameter("foo", "blah");
-        wrapper.addParameter("foo", "another");
-
-        assertEquals(wrapper.getParameterValues("foo"), new String[] { "blah", "another" });
-        verify(request);
-    }
-
-    @Test
-    public void getParameterNamesHasAllNames() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-        replay(request);
-
-        wrapper.addParameter("one", "blah");
-        wrapper.addParameter("two", "another");
-
-        Enumeration nameEnumerator = wrapper.getParameterNames();
-        Set<String> names = new HashSet<String>();
-        assertTrue(nameEnumerator.hasMoreElements());
-        names.add((String) nameEnumerator.nextElement());
-        assertTrue(nameEnumerator.hasMoreElements());
-        names.add((String) nameEnumerator.nextElement());
-
-        assertTrue(names.contains("one"));
-        assertTrue(names.contains("two"));
-        verify(request);
-    }
-
-    @Test
-    public void getParameterMapHasAllValues() throws Exception
-    {
-        HttpServletRequest request = createMock(HttpServletRequest.class);
-        ParametersServletRequestWrapper wrapper = new ParametersServletRequestWrapper(request);
-        replay(request);
-
-        wrapper.addParameter("single", "blah");
-        wrapper.addParameter("multi", "one");
-        wrapper.addParameter("multi", "two");
-
-        Map parameters = wrapper.getParameterMap();
-        assertEquals(parameters.size(), 2);
-        assertEquals(parameters.get("single"), "blah");
-        assertEquals((String[]) parameters.get("multi"), new String[] { "one", "two" });
-
-        verify(request);
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/StubFileItem.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/StubFileItem.java
deleted file mode 100755
index 6ad93a6..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/StubFileItem.java
+++ /dev/null
@@ -1,134 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.commons.fileupload.FileItem;
-
-import java.io.*;
-
-public class StubFileItem implements FileItem
-{
-    private static final long serialVersionUID = -7041417646464173208L;
-
-    private String fileName;
-
-    private String value;
-
-    private String fieldName;
-
-    private boolean formField;
-
-    private boolean isDeleted;
-
-    public StubFileItem()
-    {
-    }
-
-    public StubFileItem(String fieldName)
-    {
-        this.fieldName = fieldName;
-    }
-
-    public InputStream getInputStream() throws IOException
-    {
-        return null;
-    }
-
-    public String getContentType()
-    {
-        return null;
-    }
-
-    public String getName()
-    {
-        return fileName;
-    }
-
-    public boolean isInMemory()
-    {
-        return true;
-    }
-
-    public long getSize()
-    {
-        return 10;
-    }
-
-    public byte[] get()
-    {
-        return new byte[0]; // To change body of implemented methods use File | Settings | File
-        // Templates.
-    }
-
-    public String getString(String string) throws UnsupportedEncodingException
-    {
-        return getString();
-    }
-
-    public String getString()
-    {
-        return value;
-    }
-
-    public void write(File file) throws Exception
-    {
-    }
-
-    public void delete()
-    {
-        isDeleted = true;
-    }
-
-    public String getFieldName()
-    {
-        return fieldName; // To change body of implemented methods use File | Settings | File
-        // Templates.
-    }
-
-    public void setFieldName(String fieldName)
-    {
-        this.fieldName = fieldName;
-    }
-
-    public boolean isFormField()
-    {
-        return formField;
-    }
-
-    public void setFormField(boolean formField)
-    {
-        this.formField = formField;
-    }
-
-    public OutputStream getOutputStream() throws IOException
-    {
-        return null;
-    }
-
-    public void setFileName(String fileName)
-    {
-        this.fileName = fileName;
-    }
-
-    public void setValue(String value)
-    {
-        this.value = value;
-    }
-
-    public boolean isDeleted()
-    {
-        return isDeleted;
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/UploadedFileItemTest.java b/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/UploadedFileItemTest.java
deleted file mode 100755
index 8786f37..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/apache/tapestry5/upload/internal/services/UploadedFileItemTest.java
+++ /dev/null
@@ -1,147 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.apache.tapestry5.upload.internal.services;
-
-import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.io.input.NullInputStream;
-import org.apache.tapestry5.test.TapestryTestCase;
-import org.testng.annotations.Test;
-
-import java.io.File;
-import java.io.InputStream;
-
-public class UploadedFileItemTest extends TapestryTestCase
-{
-    @Test
-    public void contentTypeIsFileItemContentType() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        expect(item.getContentType()).andReturn("foo");
-
-        replay();
-
-        assertEquals(uploadedFile.getContentType(), "foo");
-
-        verify();
-    }
-
-    @Test
-    public void fileNameExtractedFromFileItemName() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        expect(item.getName()).andReturn("foo/blah.txt");
-
-        replay();
-
-        assertEquals(uploadedFile.getFileName(), "blah.txt");
-
-        verify();
-    }
-
-    @Test
-    public void filePathIsFileItemName() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        expect(item.getName()).andReturn("foo/blah.txt");
-
-        replay();
-
-        assertEquals(uploadedFile.getFilePath(), "foo/blah.txt");
-
-        verify();
-    }
-
-    @Test
-    public void sizeIsFileItemSize() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        expect(item.getSize()).andReturn(66l);
-
-        replay();
-
-        assertEquals(uploadedFile.getSize(), 66);
-
-        verify();
-    }
-
-    @Test
-    public void inMemoryIsFileItemInMemory() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        expect(item.isInMemory()).andReturn(true);
-
-        replay();
-
-        assertTrue(uploadedFile.isInMemory());
-
-        verify();
-    }
-
-    @Test
-    public void streamIsFileItemStream() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        InputStream stream = new NullInputStream(3);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        expect(item.getInputStream()).andReturn(stream);
-
-        replay();
-
-        assertSame(uploadedFile.getStream(), stream);
-
-        verify();
-    }
-
-    @Test
-    public void writeUsesFileItemWrite() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        File out = new File("");
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-
-        item.write(out);
-
-        replay();
-
-        uploadedFile.write(out);
-
-        verify();
-
-    }
-
-    @Test
-    public void cleanupCallsFileItemDelete() throws Exception
-    {
-        FileItem item = newMock(FileItem.class);
-        UploadedFileItem uploadedFile = new UploadedFileItem(item);
-        item.delete();
-
-        replay();
-        uploadedFile.cleanup();
-        verify();
-    }
-
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/base/UploadBasePage.java b/maint-5-2/tapestry-upload/src/test/java/org/example/upload/base/UploadBasePage.java
deleted file mode 100644
index e81a247..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/base/UploadBasePage.java
+++ /dev/null
@@ -1,39 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.upload.base;
-
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.upload.services.UploadedFile;
-
-import java.io.File;
-
-public class UploadBasePage
-{
-    public static final String TARGET_DIR = "target/tmp/";
-
-    @Persist
-    @Property
-    @Validate("required")
-    private UploadedFile file;
-
-    public void onSuccess()
-    {
-        File copied = new File(TARGET_DIR + file.getFileName());
-
-        file.write(copied);
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/pages/Ajaxified.java b/maint-5-2/tapestry-upload/src/test/java/org/example/upload/pages/Ajaxified.java
deleted file mode 100644
index 26557f0..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/pages/Ajaxified.java
+++ /dev/null
@@ -1,47 +0,0 @@
-//  Copyright 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.upload.pages;
-
-import org.apache.tapestry5.Block;
-import org.apache.tapestry5.RenderSupport;
-import org.apache.tapestry5.annotations.Environmental;
-import org.apache.tapestry5.annotations.InjectComponent;
-import org.apache.tapestry5.corelib.components.FormInjector;
-import org.apache.tapestry5.ioc.annotations.Inject;
-import org.example.upload.base.UploadBasePage;
-
-public class Ajaxified extends UploadBasePage
-{
-    @Inject
-    private Block content;
-
-    @InjectComponent
-    private FormInjector injector;
-
-    @Environmental
-    private RenderSupport renderSupport;
-
-    Object onActionFromInjector()
-    {
-        return content;
-    }
-
-    void afterRender()
-    {
-        renderSupport.addScript(
-                "$('trigger').observe('click', function(event) { $('%s').trigger(); Event.stop(event); });",
-                injector.getClientId());
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/pages/Start.java b/maint-5-2/tapestry-upload/src/test/java/org/example/upload/pages/Start.java
deleted file mode 100755
index 6de3c3b..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/pages/Start.java
+++ /dev/null
@@ -1,44 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.upload.pages;
-
-import org.apache.commons.fileupload.FileUploadException;
-import org.apache.tapestry5.PersistenceConstants;
-import org.apache.tapestry5.annotations.Persist;
-import org.apache.tapestry5.annotations.Property;
-import org.apache.tapestry5.beaneditor.Validate;
-import org.apache.tapestry5.beaneditor.Width;
-import org.example.upload.base.UploadBasePage;
-
-public class Start extends UploadBasePage
-{
-
-    @Persist(PersistenceConstants.FLASH)
-    @Property
-    private String message;
-
-    @Property
-    @Validate("required")
-    @Width(50)
-    private String name;
-
-
-    Object onUploadException(FileUploadException ex)
-    {
-        message = "Upload exception: " + ex.getMessage();
-
-        return this;
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/services/AppModule.java b/maint-5-2/tapestry-upload/src/test/java/org/example/upload/services/AppModule.java
deleted file mode 100755
index 6a3e9cc..0000000
--- a/maint-5-2/tapestry-upload/src/test/java/org/example/upload/services/AppModule.java
+++ /dev/null
@@ -1,36 +0,0 @@
-// Copyright 2007, 2008 The Apache Software Foundation
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-//     http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-
-package org.example.upload.services;
-
-import org.apache.tapestry5.SymbolConstants;
-import org.apache.tapestry5.ioc.MappedConfiguration;
-import org.apache.tapestry5.ioc.annotations.SubModule;
-import org.apache.tapestry5.upload.services.UploadModule;
-import org.apache.tapestry5.upload.services.UploadSymbols;
-
-/**
- * The SubModule is not normally needed, except that during tests of tapestry-upload, the necessary JAR Manifest does
- * not yet exist, so we force the tapestry-upload module into the registry explicitly.
- */
-@SubModule(UploadModule.class)
-public class AppModule
-{
-    public static void contributeApplicationDefaults(MappedConfiguration<String, String> configuration)
-    {
-        configuration.add(SymbolConstants.PRODUCTION_MODE, "false");
-
-        configuration.add(UploadSymbols.FILESIZE_MAX, "5000");
-    }
-}
diff --git a/maint-5-2/tapestry-upload/src/test/resources/log4j.properties b/maint-5-2/tapestry-upload/src/test/resources/log4j.properties
deleted file mode 100644
index a5ee8e3..0000000
--- a/maint-5-2/tapestry-upload/src/test/resources/log4j.properties
+++ /dev/null
@@ -1,27 +0,0 @@
-# Copyright 2008 The Apache Software Foundation
-#
-# Licensed under the Apache License, Version 2.0 (the "License");
-# you may not use this file except in compliance with the License.
-# You may obtain a copy of the License at
-#
-#     http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-log4j.rootCategory=INFO, A1
-
-# A1 is set to be a ConsoleAppender.
-log4j.appender.A1=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.A1.layout=org.apache.log4j.PatternLayout
-log4j.appender.A1.layout.ConversionPattern=[%p] %c{1} %m%n
-
-log4j.category.org.apache.tapestry5.services.TapestryModule.ComponentEventRequestHandler=debug
-
-# log4j.category.org.apache.tapestry5.corelib.components=debug
-
diff --git a/maint-5-2/tapestry-upload/src/test/webapp/Ajaxified.tml b/maint-5-2/tapestry-upload/src/test/webapp/Ajaxified.tml
deleted file mode 100644
index 9383306..0000000
--- a/maint-5-2/tapestry-upload/src/test/webapp/Ajaxified.tml
+++ /dev/null
@@ -1,28 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Ajaxified</title>
-    </head>
-    <body>
-        <p>
-            This test of the upload component checks Ajax related behavior.
-        </p>
-        <t:form>
-            <t:errors/>
-            <t:forminjector t:id="injector">
-                <a href="#" id="trigger">add row</a>
-            </t:forminjector>
-
-            <br/>
-            <input type="submit" value="Upload"/>
-        </t:form>
-        <t:if test="file">
-            <t:beandisplay object="file"/>
-        </t:if>
-
-        <t:block id="content">
-            <t:label for="file"/>
-            <input t:type="upload" t:id="file" validate="required"/>
-
-        </t:block>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-upload/src/test/webapp/Start.tml b/maint-5-2/tapestry-upload/src/test/webapp/Start.tml
deleted file mode 100755
index 6aa54c0..0000000
--- a/maint-5-2/tapestry-upload/src/test/webapp/Start.tml
+++ /dev/null
@@ -1,30 +0,0 @@
-<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
-    <head>
-        <title>Start Page</title>
-    </head>
-    <body>
-        <p>
-            This test of the upload component
-        </p>
-
-        <t:if test="message">
-            <p>
-                <strong>${message}</strong>
-            </p>
-        </t:if>
-
-        <t:form>
-            <t:errors/>
-            <t:label for="name"/>
-            <t:textfield t:id="name"/>
-            <br/>
-            <t:label for="file"/>
-            <input t:type="upload" t:id="file" validate="required"/>
-            <br/>
-            <input type="submit" value="Upload"/>
-        </t:form>
-        <t:if test="file">
-            <t:beandisplay object="file"/>
-        </t:if>
-    </body>
-</html>
\ No newline at end of file
diff --git a/maint-5-2/tapestry-upload/src/test/webapp/WEB-INF/web.xml b/maint-5-2/tapestry-upload/src/test/webapp/WEB-INF/web.xml
deleted file mode 100755
index d2f1c4e..0000000
--- a/maint-5-2/tapestry-upload/src/test/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,36 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Copyright 2006, 2008 The Apache Software Foundation
-
-   Licensed under the Apache License, Version 2.0 (the "License");
-   you may not use this file except in compliance with the License.
-   You may obtain a copy of the License at
-
-       http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing, software
-   distributed under the License is distributed on an "AS IS" BASIS,
-   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-   See the License for the specific language governing permissions and
-   limitations under the License.
--->
-
-<!DOCTYPE web-app
-        PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
-        "http://java.sun.com/dtd/web-app_2_3.dtd">
-<web-app>
-    <display-name>Tapestry-Upload Integration Test Application</display-name>
-    <context-param>
-        <param-name>tapestry.app-package</param-name>
-        <param-value>org.example.upload</param-value>
-    </context-param>
-    <filter>
-        <filter-name>app</filter-name>
-        <filter-class>org.apache.tapestry5.TapestryFilter</filter-class>
-    </filter>
-    <filter-mapping>
-        <filter-name>app</filter-name>
-        <url-pattern>/*</url-pattern>
-    </filter-mapping>
-
-</web-app>